HOME


人间如梦,倚笑乘风凉

这个系列是我在读了《亿级流量网站架构核心技术》这本书之后整理的读书笔记。 整理这一份笔记的主要目的有二:一是为了巩固学到的知识;二来,这本书讲的内容范而大,提到的内容往往是点到即止,对细节不够深入,让人对知识的掌握也是浮于表面,所以我针对几处个人感兴趣的点进行了深入,更适合于实际工程时展开工...

怎么学习算法

“龟系”刷题法: 慢工出细活,对每道题都进行深入思考,并追求实现“最完美解法”。对于老是喜欢纠结实现细节的我来说,一直以来都是用的这种方法。 但是这种方法的弊端是很明显的。首要的问题就是时间开销太大了,让人无法做学习规划。绕到细节中去时,往往也让人远远地脱离了算法本身的核心思想,费力不讨好。以...

责任链模式

责任链模式简介 回忆一下我们请假的流程。首先,我们要向我们的组长提出申请,组长同意后,会把申请转发给部门负责人,部门负责人审核后报备给HR,然后HR将请假申请归档。 对于这样一系列流程,不管申请到哪一级,都有共同的行为:处理上一级流转过来的请假申请。 如果纯粹用顺序逻辑来处理这样的需求,...

Netty的组件和设计

Channel、EventLoop和ChannelFuture 可以认为有这样的抽象关系: Channel——Socket EventLoop——控制流、多线程处理、并发 ChannelFuture——异步通知 Channel接口 基本的I/O操作依赖于底层网络传输所提供的原...

Netty基础

Netty核心组件 Channel 回调 Future 事件和ChannelHandler Channel Channel是Java NIO的一个基本构造。 它代表一个到实体(如一个硬件设备、一个文件、一个网络套接字或者一个能够执行一个或者多个不同的I/O操作的程序...

高可用架构(第一卷)

首先,感谢公司建立的产研书吧,让产品和研发部门的小伙伴能够有更好的机会读一些好书,提升自己专业技能的同时,也让我们时刻保持向上学习的动力。此外,感谢HRBP小伙伴,让我有机会在阅读之后,发表一些个人的拙见。 我觉得读的书,从个人目的上可以大致分为两类:一类是用以解决当下的困惑,另一类则是...

我们是如何陷入贫穷与忙碌的(公众号版本)

穷困之人会永远缺钱,忙碌之人会永远缺时间。 最近,看了一本书——《稀缺——我们是如何陷入贫穷与忙碌的》。这本书由塞德希尔·穆来纳森、埃尔德·莎菲尔在基于大量人文科学实验、数学统计的基础上联合著作,前者是哈佛大学经济学、心理学终身教授,后者是麻省理工认知科学博士。 何谓“稀缺”?...

多线程程序的测试

多线程测试的不确定性 多线程程序的BUG往往具有不确定性,例如可见性问题、死锁、饥饿等问题都不是必然出现的。造成不确定的常见因素包括: 程序的执行会交错顺序 并发程度的增加可能造成锁泄漏(一个线程在持有一个显式锁的情况下最多可以重复2,147,483,647次申请该锁,超过会抛出Er...