自习周报:一个开始

2017-08-04 20:12:31 oilbeater 我的观点

在人工智能的前夜,做一些人肉智能的事情。


现在各种信息流都很丰富了,然而作为一个搞技术的却发现没有一个合适我胃口的技术相关信息流。大概是为了追求曝光和点击率,现在的推送或是标题惊悚内容泛泛,或是前沿的技术但是浅尝辄止,要么是我在开会快来看,要么就是各个厂商为了自己的市场而鼓吹的新奇概念。而那些真正深层次,有质量的技术干货文章由于浪费力气而又不吸引眼球反而越来越少。现在的技术文章如果不加上人工智能,微服务,DevOps,容器,十大排行,职业规划这样的词眼,都不好意思出现在你的面前。


然而我们还是需要那些真正有技术价值,能帮助我们更好理解某个原理,攻克某个难点的纯技术干货。而他们往往默默无闻的起了个不响亮的名字静静的待在那里,等待着某个有缘人恍然大悟的发现原来在这里。而往往这样的文章才能真正的帮助我们成长,所以我就干件人肉的事情,把我一周来看到的值得一读的文章介绍一下,由于都是和我工作以及平时学习相关,而且内容确实也比较难找,每周都不会太多,不会包含上面提到的流量热词,也不会有编程入门和如何运行一个软件这样的内容,主要会涉及操作系统,分布式系统,编程语言和软件工程的内容。如果觉得对你有帮助可以从公众号获取链接再去细读。至于心机婊的选在周五晚上发,也是希望你能有时间来慢慢看(不希望你好好过周末)。由于公众号文章里会限制外链,所以会把具体的连接放在公众号的回复消息里,公众号文章里只讲一下文章要点和为什么要看。


期待人工智能早日到来。


1. 你有想过怎么优化 malloc 么?


malloc 作为一个基本的分配内存的函数它出生的比很多人都早,也必然有它诞生时的历史局限性。 在那个年代,没有多处理器,没有大缓存,内存也不大,也没有各种复杂的高并发高流量的场景。随着硬件体系结构的发展,原始的 malloc 已经不能满足性能方面的需求了。Google 出品的 tcmalloc 做了大量的优化,针对各种场景包括大内存分配,无锁分配,cache 亲和性,CPU 的亲和性方面做了很多细致的优化,性能可以到 glibc 的几倍之多。其他针对各种场景下优化版的 malloc 也不断出现。tcmalloc 的官网介绍了优化的思路,《One malloc to rule them all》这篇博客里面收集了一些其他 malloc 实现资料也很值得一读。


2. 传统的编程语言有什么设计缺陷?


既然传统的 malloc 有历史局限性,那么传统的编程语言自然也避免不了。然而在程序员圈里一般都是一个语言群体狂热的攻击另一个语言的缺点,而 C# 的作者之一却主动提出了 C# 从设计角度的十大遗憾。从里面能看到很多时代相关的缺憾以及工程实践的发展,也看到了很多其他语言的影子,是一篇很好的文章。顺便提一句,这个专栏其实是讲 Rust 的插了这么一篇文章,对比起来看会理解很多那个时代编程语言的缺陷,以及为什么新兴的语言要设计成这个样子。


3. 网关,API 网关,负载均衡器他们有什么异同


这里要介绍的其实是耗子叔叔他们公司做的一个产品的文档。最近也在做类似方面的工作,看到这篇文章感觉很多设计思考方面的过程都省了。尽管里面主要是列举特性,但是熟悉负载均衡这块内容的话很容易能把相关的实现方案逆向工程出来。所以从知识角度可能介绍的不多,但是里面技术选型的组合很有借鉴意义。里面还介绍了很多的现实场景如何用网关,并介绍了应对的方案,尤其是插件化的流控,API的控制以及如何不改代码做秒杀的方案,都是很有启发意义。


关注公众号回复,『周报1』获取相关干货连接,如果你平时遇到好的文章也欢迎告诉我。


周末愉快