- 博客(10)
- 资源 (4)
- 收藏
- 关注
原创 信息论中的信息量为什么表示成对数
声明两个前提,然后根据这两个前提推导信息量的形式:多个事件同时发生的概率是多个事件发生概率的乘积。多个事件同时发生的总信息量等于每个事件信息量的和。翻译成数学语言:设f(x)f(x)f(x)表示事件A的信息量,其中x为事件A发生的概率,则:f(x1x2)=f(x1)+f(x2)f(x_1x_2)=f(x_1)+f(x_2)f(x1x2)=f(x1)+f(x2)其中x1,x2∈(0,1]x_1,x_2\in\left(0,1\right]x1,x2∈(0,1]进一步抽象:已知f(
2021-11-27 07:43:03 13002 1
原创 积累分布用例-洛伦兹曲线和随机游走
洛伦兹曲线洛伦兹曲线其实就是幂律分布密度函数的积累密度函数,从概念上理解即可。以k=2k=2k=2的帕累托分布(为幂律)为例:则积分曲线必然是下凸的。一般也可以用帕累托分布的积累密度函数来拟合洛伦兹曲线。随机游走随机游走,随着时间的延展,曲线越发分开:竖起来看就是正态分布的方差也来越大所以越来越扁平的样子。其实这些随机游走的轨迹曲线本身就是正态分布随着时间的变化。根据正太分布的积累分布曲线可见其常返性:看吧,方差越大,中间的拐点斜率就越小,这个斜率就是概率密度函数在该点的值,也就是期望值
2021-11-27 07:11:20 3455
原创 IDC网络TCP拥塞控制随想录
“若不对症下药,无异于群盲摸象。“ 这是本文第一句话,本文的倒数第二句话在倒数第二句。用广域网拥塞控制的思路做IDC网络拥塞控制无疑会误入歧途。把精力集中在TCP单边优化,企图用一个算法来覆盖IDC网络所有的流量,进行全局拥塞控制,这带来了很多限制。与之相反,如果希望交换机带来更多信息指导拥塞控制,这无疑是另一极端。类似交换机的INT(In-band Network Telemetry)助力HPCC,那就真把IDC网络当成一块主板了,场面过大,多团队需要配置,容易讲述人月神话的故事。有没有简单直接的
2021-11-27 07:06:41 4180 4
原创 归并排序,快速排序为什么快
对于一个nnn个元素的数组,必须要确定两两之间的相对顺序,假设每次都抓取不同的二元组,需要log2n!\log_2n!log2n!次比较,由于log2n!≈nlog2n\log_2n!\approx n\log_2nlog2n!≈nlog2n,O(nlog2n)O(n\log_2n)O(nlog2n)就是排序算法的下界。前面几周写过一篇散文:https://zhuanlan.zhihu.com/p/429710417但紧接着问题就来了,到底为什么归并排序,快速排序快呢?这里有必要澄清
2021-11-20 08:07:36 10426 2
原创 IDC网络传输优化随想录
在IDC内部,如果你还遵循传统为广域网而生的拥塞控制逻辑做事,那就错了。当然,我下面说的也不一定都对。正确的做法就好像我之前说的一种情况的反例,那种情况是,让你优化长肥链路传输,你却在优化spinlock。IDC的情况相反,把前面的例子反过来说,把spinlock换成ECN(可扩展)就对了。但这就够了吗?广域网传输优化只能基于RTT为周期,你有足够的时间利用足够的资源去做运算,但IDC内部这么做不太现实,在IDC内部,任何误判的代价都会被放大,一个5us的延时除了做重传之外几乎做不了任何事,再靠盲猜,靠
2021-11-20 07:25:28 12231
原创 为什么除法,开方,求对数比乘法,乘方,求指数更难
除法为什么比乘法更难,至少是看上去更麻烦?开nnn次方为什么比乘nnn次方更难?求对数为什么比求指数更难?尺规三等分角为什么难?这些背后有没有一些普遍的规律?我们又如何去利用这些规律?先看乘法,除法,两者互为逆运算:y=a×xy=a\times xy=a×x若x<1x<1x<1,上式则是除法,反之则为乘法。乘法对aaa进行复制,除法对aaa进行分割。此时千万不要引入阿贝尔群,一旦引入加法和减法,乘法和除法就是一回事了,在纯数学有理数看来,333和13\dfrac{1}{3}
2021-11-20 07:23:36 10205
原创 DCTCP之FCT优化随想
IDC网络和广域网有什么不同?如果把网络抽象成BDP管道,那么:广域网:B中等,D超级大。IDC网络:B超级大,D超级小。将一次传输的RTT分为三部分:RTT=Tprocess+Tprop+TqueueRTT=T_{process}+T_{prop}+T_{queue}RTT=Tprocess+Tprop+Tqueue对于广域网,TpropT_{prop}Tprop维持在10ms~100ms量级,因此可以通过观测或者调整1ms~50ms量级的TqueueT_{queue}Tqueue
2021-11-13 07:15:33 32068
原创 手工计算对数的方法和对应的C代码
如何手算对数?为简单起见,以222为底数演示。问题:求log2a\log_2alog2a的值,其中aaa为已知实数。由于人们的思维逻辑普遍是线性的,而对数是非线性的,对数需要规模化思维才更好理解,因此将问题转化成求指数会更直观一些:2x=a2^x=a2x=a,问aaa可以拆成多少222的次幂相乘,将幂加起来即可。下面是过程:将aaa不断除以2,一直到除不尽余bbb:2x=a=21212121b2^x=a=2^12^12^12^1b2x=a=21212121bbbb比222小,它如何写成22
2021-11-13 06:58:47 5224 1
原创 是什么让人们永远在线
如果你是一个原始人,你和野人们如何交流?如果你想找某个野人,你只能亲自肉身去找他,如果他不在,你只能回去,然后随机退避一段时间再去试试运气。这种效率不可能让你认识太多人,因此原始部落一般不会太大。农业社会,有了文书,我们可以通过可以永久保存的竹质纸质信件联络彼此。人们学会了利用buffer。再往后有了电话,效率是比文书信件高了,因为可以实时联络了,但是如果对方不在电话边上,你只能挂掉电话,随机退避一段时间再打电话,这和原始野人面对面找人没什么本质区别,只是突破了空间限制而已。最终,你意识到了什么?是
2021-11-06 07:26:25 5985 7
原创 归并排序与快速排序背后的秘密
到处说归并排序采用了分而治之的方法,所以效率比冒泡排序高:将一个大问题分解成一些小问题,分而治之,各个击破…但这些诠释基本都缺少了最关键的点,即效率必须随规模非线性增加的场景,分而治之才有意义,如果是线性系统,比如计数,分时调度,分而治之反而增加额外开销。此外,可以找到很多递归式,递推式来解释为什么归并排序的时间复杂度是O(nlog2n)O(n\log_2n)O(nlog2n),在数学上确实也是那个理,但为什么分治就能带来效率的提高呢?到底省了哪里的消耗呢?只要记住,基于比较的排序效率随着规
2021-11-06 07:12:07 12407
一个iptables的stateless NAT模块实现
2014-12-27
模块化的nf-HiPAC
2014-11-21
关于linux内核以及其他个人体会的文集
2009-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人