Java并发编程常识 (上)

简介: Java并发编程常识 (上)

image.png


写中间件经常要做两件事:

  • 1.延迟加载,在内存缓存已加载项。
  • 2.统计调用次数,拦截并发量。

就这么个小功能,团队里的人十有八九写错。


上面这句话不是我说的,是梁飞在他的博客里面说的。


image.png


梁飞是谁?

据网上的公开资料,梁飞,花名虚极。

2009 年加入阿里巴巴,负责中间件的开发,Dubbo 开源分布式服务框架作者,HTTL 开源模板引擎作者。

2012 年加入天猫,负责手机天猫 APP 的技术团队,见证了天猫双 11 无线化全过程。

热衷参与开源社区建设,传播服务化、SOA、框架设计、移动应用等架构设计理念。

下面这段是我在他的个人博客里面找到的:

https://www.iteye.com/blog/javatar-287026

上周五去杭州面试,早上飞过去,晚上飞回来,有点匆忙,飞机晚点,到那边的时候都快下午一点了,面试了一个小时左右,主要是笔试没做了,省了不少时间。


面试完后,跟着几个熟人转了一圈,学习交流气氛都很好。


周二收到了Offer,看来HR效率很高,赞一个,定的是1月8号入职。


这两天忙于提交辞职申请,就要离开奋斗了近三年的公司,还是有点不舍,公司给了我很多发展机会,领导们对我也特别好,真的很感谢他们。


只是现在新的公司发展机遇更好,我不想放弃,希望在新的岗位上能做得更好,呵呵,流水帐记到这里。

这篇博客,发布于 2008 年 12 月 24 日。

他说的上周五,也就是 2008 年 12 月 19 日。一天之内,从深圳飞到杭州,面试一小时,又从杭州飞回深圳,4 天之后,收到了阿里的 offer。

彼时,梁飞也仅从湖南科技职院软件学院的大门走出来不到 3 年的时间。

文章里面说的“1 月 8 号入职”,也就是 2009 年的 1 月 8 日。

从此,在阿里开启了长达 12 年的升级打怪之路,从 P5 一路杀到了 P9。

众所周知,阿里能到 P9 ,已经不是能力的事儿了,这属于祖上积德。

而梁飞在 2016 年的时候就已经是 P9 了。

上面说的这么多标签,而他最为人熟知的标签应该是:Dubbo 创始人。

在梁飞加入阿里的 1015 天之后,也就是 2011 年 10 月 20 日 23 点 06 分,Dubbo 在开源社区发出了第一声啼鸣:


image.png


9 个模块,共计 669 个文件,就是日后这个一路坎坎坷坷、几近夭折、友商续命,最终成为 Apache 顶级开源项目的雏形。

2011 年 10 月 20 日那天晚上,对于梁飞来说注定是一个回忆起来,难以忘怀的夜晚。

他一直进行了13 次提交:


image.png

终于在第二天的早上 5 点 25 分给 Dubbo 打上了第一个 tag:2.0.7。

期间还抽空通知官媒发了个微博:


image.png

为什么 Dubbo 会选在这一天进行开源呢?

我想应该是为了赶上两天之后的 Qcon 全球软件开发者大会:


image.png


那一天,才是 Dubbo 真正意义上,站在大众视野里,接受赞扬与嘲讽的开始。

我千辛万苦,找到了近 10 年前,那次大会的分享 PPT,开篇第一页:


image.png


十年过去了,白云苍狗,Dubbo 从阿里走了出来,已经真正的飞入寻常百姓家了。

十年间,PPT 上的数据,从总量上来看,就像双十一的销售额一样,不知道翻了多少个翻。

但是转念一想,这是 10 年前的阿里,每天 10 亿次的调用,这是多少技术人一生也接触不到的流量啊。

同时,我在 PPT 里面也发现很多熟悉的图片,比如这张:


image.png

左边是现在的 Dubbo 官网,右边是 10 年前 Qcon 大会上的 PPT。

10 年过去了,当这两张图片同框的时候,不知道右边的“老图”,有没有一种老父亲般的欣慰。

如果说上面这个图你的感觉还不是特别的强烈,那么再看看这个:


image.png

左边是官网,右边是 PPT。

10 年过去了,整体设计没有发生一丝变化。

我不知道你看到这里的时候想到的是什么,于我而言,真牛逼啊。

一个 10 年前的整体设计,竟然在日新月异、风起云涌的互联网行业一丝不变的屹立了下来。

这是一群工程师智慧的结晶。

Dubbo 第一次面世的 PPT 有 55 页,里面有很多设计从十年后的今天看去也不过时。

我就不一一展示了,有兴趣的朋友,在文末可以看到获取方式。

最后,献上一张最早的 Dubbo 团队的合照:

image.png




目录
相关文章
|
8天前
|
算法 Java
【编程基础知识】Java打印九九乘法表
本文介绍了在Java中实现九九乘法表的三种方法:嵌套循环、数组和流控制。通过代码示例、流程图和表格对比,帮助读者深入理解每种方法的优缺点,提升编程技能。
30 2
|
8天前
|
存储 Java
【编程基础知识】 分析学生成绩:用Java二维数组存储与输出
本文介绍如何使用Java二维数组存储和处理多个学生的各科成绩,包括成绩的输入、存储及格式化输出,适合初学者实践Java基础知识。
37 1
|
8天前
|
Java 开发者
【编程进阶知识】《Java 文件复制魔法:FileReader/FileWriter 的奇妙之旅》
本文深入探讨了如何使用 Java 中的 FileReader 和 FileWriter 进行文件复制操作,包括按字符和字符数组复制。通过详细讲解、代码示例和流程图,帮助读者掌握这一重要技能,提升 Java 编程能力。适合初学者和进阶开发者阅读。
110 61
|
8天前
|
存储 Java
【编程基础知识】《Java 起航指南:配置 Java 环境变量的秘籍与奥秘》
本文详细介绍了如何配置 Java 环境变量及其重要性,通过具体步骤、代码示例和流程图,帮助初学者轻松掌握 Java 环境变量的设置,为 Java 编程打下坚实基础。关键词:Java、环境变量、配置方法、编程基础。
116 57
|
4天前
|
安全 Java UED
Java中的多线程编程:从基础到实践
本文深入探讨了Java中的多线程编程,包括线程的创建、生命周期管理以及同步机制。通过实例展示了如何使用Thread类和Runnable接口来创建线程,讨论了线程安全问题及解决策略,如使用synchronized关键字和ReentrantLock类。文章还涵盖了线程间通信的方式,包括wait()、notify()和notifyAll()方法,以及如何避免死锁。此外,还介绍了高级并发工具如CountDownLatch和CyclicBarrier的使用方法。通过综合运用这些技术,可以有效提高多线程程序的性能和可靠性。
|
4天前
|
缓存 Java UED
Java中的多线程编程:从基础到实践
【10月更文挑战第13天】 Java作为一门跨平台的编程语言,其强大的多线程能力一直是其核心优势之一。本文将从最基础的概念讲起,逐步深入探讨Java多线程的实现方式及其应用场景,通过实例讲解帮助读者更好地理解和应用这一技术。
20 3
|
4天前
|
Java 开发者
在Java编程中,正确的命名规范不仅能提升代码的可读性和可维护性,还能有效避免命名冲突。
【10月更文挑战第13天】在Java编程中,正确的命名规范不仅能提升代码的可读性和可维护性,还能有效避免命名冲突。本文将带你深入了解Java命名规则,包括标识符的基本规则、变量和方法的命名方式、常量的命名习惯以及如何避免关键字冲突,通过实例解析,助你写出更规范、优雅的代码。
25 3
|
4天前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
11 3
|
4天前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
15 3
|
4天前
|
算法 Java
在Java编程中,关键字和保留字是基础且重要的组成部分,正确理解和使用它们
【10月更文挑战第13天】在Java编程中,关键字和保留字是基础且重要的组成部分。正确理解和使用它们,如class、int、for、while等,不仅能够避免语法错误,还能提升代码的可读性和执行效率。本指南将通过解答常见问题,帮助你掌握Java关键字的正确使用方法,以及如何避免误用保留字,使你的代码更加高效流畅。
20 3