方向那些最关键的技术原理,明白这些原理是如何和我们日常开发工作发生关系的。
比如我们的程序是如何被操作系统调度执行的?为什么高并发的时候系统会崩溃,原理是什
么?在编程时,什么场合下应该使用链表,什么场合下应该使用数组,为什么?当我们使用
Hash 表的时候,什么情况下它的性能会急剧降低,原理又是什么?我们用 Redis 这样的分
布式缓存的时候,到底要解决什么问题?分布式缓存是如何工作的?还有哪些技术看起来和
Redis 毫不相干,其实工作原理是一样的?
如果我们能把这些基本问题都回答清楚了,那么这些问题背后的核心技术原理也都理解了,
我们就开始建立起自己的技术思维体系了。当有新的问题和技术出现,你就可以思考,这是
属于哪个技术领域的?它的核心原理和哪个技术方案本质是一样的?
如果你掌握了软件开发技术的第一性原理,那么当你为了解决某个新问题,去学习和研究一
个新技术的时候,就算遇到了知识的盲点,也可以快速定位到自己技术体系的具体位置,进
一步阅读相关的书籍资料,这个时候也许你就会深入到操作系统的调度算法实现或者通信协
议头信息的具体编码里,但是这时,你不会觉得枯燥无聊,也不会觉得迷茫无措,只会觉得
原来如此,太有意思了,甚至觉得这其实可以实现得更好。
专栏如何帮你建立技术体系
我想从软件技术的第一性原理出发,写一写软件技术那些最基本的知识原理和知识体系。在
这个专栏中,我对自己过去二十年软件编程生涯和业界的技术发展历史进行回顾总结,将软
件知识技术体系分成软件的基础原理、软件的设计原理、架构的核心原理三个部分。
软件的基础原理主要是操作系统、数据结构、数据库原理等等,我会从一个常见的问题入
手,直达这些基础技术最本质的原理,并覆盖这些基础技术的主要关键技术点,让你理解这
些基础技术原理和你日常开发工作的关联关系,对这些基础技术有一个全新的认知。
在软件的设计原理里,我会讲述如何设计一个强大灵活,易复用,易维护的软件。在这个过
程中,应该依赖哪些工具和方法,遵循哪些原则和思想,使用哪些模式和手段。如果软件只
是实现功能,那么程序员就没有高下之分,软件也没有好坏之分,技术也就不会有进步。好
的软件究竟好在哪里?如何自己也写出一个好的程序?我将在这个模块一一道来。
架构的核心原理围绕目前主要的互联网分布式架构以及大数据物联网架构进行剖析,分析这
些架构背后的原理,它们都遵循了怎样的驱动力和设计思想,有哪些看似不同的技术其实原
相关文档
评论