好资源和短想法
The Go Programming Language Specification,这是Go语言的,作用同上: https://jiajunhuang.com/sharing#415
The Python Language Reference,Python语言的说明书,基本上读完以后,每一行Python代码背后会发生什么,心里都有个底: https://jiajunhuang.com/sharing#414
1. Dubbo的扩展机制
在Dubbo的官网上,Dubbo描述自己是一个高性能的RPC框架。今天我想聊聊Dubbo的另一个很棒的特性, 就是它的可扩展性。 如同罗马不是一天建成的,任何系统都一定是从小系统不断发展成为大系统的,想要从一开始就把系统设计的足够完善是不可能的,相反的,我们应该关注当下的需求,然后再不断地对系统进行迭代。在代码层面,要求我们适当的对关注点进行抽象和隔离,在软件不断添加功能和特性时,依然能保持良好的结构和可维护性,同时允许第三方开发者对其功能进行扩展。在某些时候,软件设计者对扩展性的追求甚至超过了性能。

在谈到软件设计时,可扩展性一直被谈起,那到底什么才是可扩展性,什么样的框架才算有良好的可扩展性呢?它必须要做到以下两点:

作为框架的维护者,在添加一个新功能时,只需要添加一些新代码,而不用大量的修改现有的代码,即符合开闭原则。
作为框架的使用者,在添加一个新功能时,不需要去修改框架的源码,在自己的工程中添加代码即可。
Dubbo很好的做到了上面两点。这要得益于Dubbo的微内核+插件的机制。接下来的章节中我们会慢慢揭开Dubbo扩展机制的神秘面纱。

2. 可扩展的几种解决方案
通常可扩展的实现有下面几种:

Factory模式
IoC容器
OSGI容器
Dubbo作为一个框架,不希望强依赖其他的IoC容器,比如Spring,Guice。OSGI也是一个很重的实现,不适合Dubbo。最终Dubbo的实现参考了Java原生的SPI机制,但对其进行了一些扩展,以满足Dubbo的需求。
对一天中做的每件事问个为什么。
深思身边至少3个人的思维策略的不同。
写篇有自己想法的博客。
读一个优秀开源库的源代码。
写一个小工具代码,把它优化到极致。
写个main测下你正在用的某个库的性能。
事太多,处理不完?生活/工作?
保持节奏感,踩在点上办事。
做好计划,控制风险。
管理好自己的时间,保持大块时间。
主动办要事,而不要被动办急事。
角色平衡。
什么样的人能更快晋升?
做好自己,技术实力强,有深度,也有宽度。
对事专注,持之以恒,将事情做到极致,发挥自己的长处,成为专家。
传道授业,对内对外分享,帮助手边的人成长,影响力大。
主动性强,不只做好手上的事,还能推动事情的发展,独挡一面。
有高度,能先人一步思考,找到方向,找到落地点。
爱问为什么
为什么要Action -> Service -> Dao?为什么要服务化?
为什么要在范儿图片推荐第三行插入话题推荐,而不是第一行?
为什么他会这么思考问题,而我不会?
爱总结
书上那些原则,那些理论体系怎么来的?不就是作者总结的?为什么不自己总结?
自己总结,自己发明理论。不会,多写就会。
爱质疑
从小教科书就把各种知识全当真理教给了我。我智商低,别骗我。
喜欢有“此理论未被证明”或”与实验结论不符”或“下一章推翻上一章”的书。
看到开源软件自吹性能多牛,一定要自己动手去测一测。(一个main函数+多个线程就够了,别被搭性能环境吓着)
梁飞的看书方式:
爱看书
爱看写作者思想的书,不爱看工具用法的书。
爱看只讲一个观点的书,不爱看堆彻作者所有知识的书。
喜欢把书中引用的书,接龙看下去。
爱看源码
看Linux,JDK,Spring等开源代码。
看不懂就自己写一个或一部分。
看自己写的代码。