TCP的滑动窗口机制,谈谈其设计演化过程(如何从无到有?从不可靠到可靠?)

理解TCP滑动窗口是如何工作的,对于理解TCP的其他知识是至关重要的。

相比于更为简单,同为传输层协议的UDP而言,TCP提供了对传输数据的质量保证。

在可靠性上,TCP确保传输的数据不丢失、不重复,也不会产生乱序。

同时,TCP还提供了流量控制,用于控制数据发送的速度,防止较快主机导致较慢主机的缓冲区溢出。 … [阅读文章]

Javassist实现JDK动态代理

提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。

JDK动态代理 示例

以下是一个基于JDK动态代理的hello … [阅读文章]

记录吴军老师的几点心得

中国有句话,叫做莫嫌少年贫,其实很有道理,我们看待一个年轻人,要看他成长的趋势,而不是现在有多少钱。

很多人在创业时,喜欢凑热闹,找风口,生怕错过了机会。我对他们讲,如果那个时间窗只有几个月、半年,那根本不是机会,只是一次投机而已。这就是静态地看待时机。 … [阅读文章]

Google Guava之RateLimiter核心源码解读(上)

RateLimiter是Google Guava框架的一个限速器,通常用于控制对某个资源的访问速率。

限速常见的有两种实现方式,一种是令牌桶,另一种是漏桶。

RateLimiter选择了令牌桶作为其底层实现,按照固定速率投放令牌,同时支持突发流量。 … [阅读文章]

OutOfMemoryError之unable to create new native thread原因分析及6种解决方案

java.lang.OutOfMemoryError:unable to create new native thread 是比较常见的一种异常,表示应用程序无法创建新的线程。 产生该异常,总体上可总结为两个原因: 服务器剩余内存不足; 线程数超过系统限制。 … [阅读文章]

《一往无前》雷军亲述小米热血10年摘录

非常推荐关于小米的《一往无前》一书,真实、融入情感、较为完整的呈现了小米成长过程的每一段经历,做事全情投入,遇到困难而无所畏惧,让人热血沸腾。

雷军七字诀:专注、极致、口碑、快。

下面是一些摘录:

雷军:
小米就是工程师的梦想,靠技术和产品亲手改变世界,让世上每一份的认真投入,都能有公道的回报。 … [阅读文章]

大型网站架构的演化过程

重温《大型网站技术架构》一书,做一下读书笔记。

大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得很棘手。大型网站架构主要就是解决这类问题。

1.初始阶段的网站架构 … [阅读文章]

系统可靠性的三个概念

本文简单总结一下系统可靠性的三个概念。

1.高可用(High Availability,HA)

当系统发生故障时,允许短暂中断(如可用时间为5个9)。通过冗余实例和失效检测,实现快速恢复。

2.容错(Fault Tolerant,FT)

当系统发生故障时,仍可以继续运行,做到零宕机时间,运行水平可能有所下降。 … [阅读文章]

如何在工作中提高效率的一点思考

分享一下在工作中,提高效率,利用好时间的一点思考:

1.做减法

许多事情并没有想象中那么重要,也没有想象中那么紧急。
少做一点,做慢一点,通常不会有什么损失。
相反,做得太多容易主次不分,做得太急很难考虑周全,最终要么事情没办成,要么把事情搞砸了。 … [阅读文章]

对复合增长率、复利的简单理解

每次查复合增长率,百科的结果都很奇葩,直接给你公式和例子。

一看到公式就懵了,这神公式哪里来的,就不能解释一下?

明明很简单的东西,解释得那么复杂。还说这概念并不复杂,我估计绝大部分人是看不懂的。

本来嘛,只要能看懂这个公式的人:S1=P*(1+i),都应该能弄懂才对,结果吓跑了一大票人。 … [阅读文章]

不用加减乘除做加法

一. 十进制计算

计算十进制 13+9:

1.计算不进位的和。十位 1 不变,个位 3 加 9 等于 2,结果为 12 ;

2.计算进位。十位没进位,个位进位为 1,结果为 10。

再计算十进制 12+10:

1.计算不进位的和。十位 1 加 1 等于 2,个位 2 加 0 等于 2,结果为 22 ; … [阅读文章]