完全理解并发

越是往后端深入到 Web 开发和分布式系统,就越会觉得把「并发」理解清楚是多么重要,而每天的日常工作中很多时候都需要处理与并发有关的话题,大到整个系统架构层面的并发考量,小到某一段代码的并发控制。

本来不想把这篇文章加入到「完全理解」系列,因为觉得「并发」涉及到的东西实在是很多,而我想凭借一篇博客企图「完全理解」那是不现实的。但虽然不能做到「完全理解」,但我还是会尝试尽力提纲挈领的把「并发」相关的话题都理清楚,把脉络勾勒出来,让它尽可能对得起「完全」吧。毕竟,如果以后我有了一些更深的理解,我还可以继续迭代这篇文章。

阅读全文 »

2017 年书单

今年太「荒废」了。无论是工作还是生活,已经发生的事情之丰富复杂相比去年完全有过之而无不及,自己心态上的改变也是不少。这种内省式的变化会直接导致个人情绪的变化。用一个烂俗的比喻来说,如果去年的心情像一汪平静的湖水,那今年则可以用海啸来形容(夸张到油腻了)

我不是一个喜欢制定目标的人,因为无论事情是否达到了你的目标,这个设定都会让你对于自己所做的事情产生反向的反馈:完成了会开始沾沾自喜、放松警惕,没完成则会开始怀疑人生、消极懈怠。当然,这可能只是一个现实的悲观主义者的惯性思维,不足以为参考。

即便如此,年初也制定了一些小目标,明确了一下「即将过去的这一年」的大致方向。写博客的目标是超额完成了,导致我后几个月的博客更新都放缓了(应证了我上一段的描述),可是看书的目标远远没有达到。这意味着今年是个「输出」大于「输入」的一年。

阅读全文 »

今晚月色真美

这个世界上最复杂、最难以捉摸的事情是什么?

有人说,永远不要在晚上做任何一个决定,因为那是人一天中最不理性的时候。
我并不赞同。
如果所有的事情都由理性思维来主导,那这个世界上不会有音乐和诗歌,约翰·列侬、爱因斯坦、乔布斯、黑泽明也不会被人们传颂和铭记
夜深人静,是一个人能与自己对话的时候,也是最能看清自己心意的时候。

阅读全文 »

完全理解回调函数

什么是回调函数?

在任何一个函数是「一等公民」的编程语言里,这都不会成为一个问题。简单说,回调函数就是传递给其他代码的函数实体或引用,但其内涵远没有这么简单。

回调函数本质上提供了一种与常规的上层调用下层代码相反的模式,使得底层代码也有机会反调高层的代码,这大大提升了代码的能力,也同时给工程化项目带来了新的问题和挑战。

回调函数也是事件驱动式编程的基础,使得程序不必像传统的流程驱动式编程那样亦步亦趋的向下进行,而是可以被动性的由外来事件来触发进行,这几乎是所有图形化编程最基础和标准的实现方式。

阅读全文 »

独立书店的生存困境

独立书店,维基百科给的描述是「主要以当地人拥有、经营的书店」、「可以是连锁书店的相反词」,这个描述多半还给「独立书店」这个词涂抹上了一点纸质书年代的理想主义色彩。在电商平台、互联网经济大行其道的今天,甭说是「当地人经营」的书店了,即便是那些可以给不同地域的人留下共同回忆、实力还算雄厚的半独立半连锁书店,其生存状态同样不容乐观。又或者说,作为一家「书」店,单看其书籍的销售量,基本已经可以用「垂死挣扎」来形容了。本文就着眼于这些宽泛定义的独立书店的生存困境。当然,新华书店至少是不在这个讨论的范围之内了。

阅读全文 »