Ubuntu 18.04 必做操作
新开一个栏目,专门记录开发中常见的命令和操作
新装完Ubuntu Server之后要做几个操作,才能让他更好用:
- 更新软件源
- 安装必备软件
- 设置系统代理
新开一个栏目,专门记录开发中常见的命令和操作
新装完Ubuntu Server之后要做几个操作,才能让他更好用:
环形缓冲区是很常用的数据结构,用途很广泛。我目前遇到的使用场景就是TCP分片转回TCP流,一个线程读取TCP分片拆包,写入缓存区,另一个线程从缓存区中读取,互相不影响。
为此Google了一番,发现了kfifo这个Linux内核的实现,十分精妙。
struct kfifo {
unsigned char *buffer; /* the buffer holding the data */
unsigned int size; /* the size of the allocated buffer */
unsigned int in; /* data is added at offset (in % size) */
unsigned int out; /* data is extracted from off. (out % size) */
spinlock_t *lock; /* protects concurrent modifications */
};
先看一下基本定义,buffer是数据缓存区,size是缓存区长度,in/out是输入输出指针位置(%size后就是真实指针了)。
size需要检测是否为2的次幂,不是的话需要升到2的次幂。方便后续计算。(可以看内核的roundup_pow_of_two实现)
in、out每次操作都+对应的读写长度,通过取模运算回落size区间。
data := kfifo.buffer[kfifo.out % kfifo.size:kfifo.in % kfifo.size]
data就是有效数据的缓存区区间。
kfifo使用了二进制的位运算实现了2的幂取模运算,并且利用了无符号数的溢出做回绕。很精妙的设计。
首先,缓存区尺寸要取整为2的幂次,这样可以利用位运算进行取模。
M mod N = M & (N-1)
,当N为2的幂次时有效。
取模运算对于计算机来说运算速度也是很慢的(虽然你感觉不出来),而位运算就是分分钟的事了。
无符号数溢出后,就会变成0从头开始,借助这个特性可以绕开逻辑判断。
2018-07-17夜 深圳 狂风暴雨配闪电
买了个摸鱼用的笔记本,宏碁TravelMate B117,使用体验还挺好。
我的需求很简单:
选来选去就选到了这个笔记本。基本配置是这样的:
最重要的是:这个本子我买的时候特价只要2399,现在2499也不是很贵。
很早之前就应该写这篇文章了,毕竟已经来这边两个多月了,是时候总结一下这次的北京大逃离了。
(长篇唠唠叨叨流水账预警)
刚毕业的时候有两个选择,北京or深圳。家里建议我选择北京,毕竟离家近,都是北方生活可以很好的习惯。最主要的是冬天有暖气,回家还方便。再加上之前去过一次北京稍稍有点认识地方,毕业就去了北京找工作。具体找工作怎么经历按下不提,最后在16年9月份在北京站住脚了。隔了几个月,因为之前经历了城中村,加上老板给涨了一下薪水,觉得应该提高一下居住水平,我就和同事搬到了五环边上的清河地区一起合租。房租从之前的单间1000每月涨到2500一个次卧。
经历了北京的低端人口大清理,我在清河地区的房子再续租已经从5200一个月涨到了6800一个月,再加上糟糕的天气和公司里的各种斗争搞事,我觉得不应该在这样下去了。所以2018过年期间下了决心,必须走。(压垮我的最后一根稻草应该是涨薪的时候只给涨了900块钱,和糊弄人没什么区别,本来基数就少,涨一次抠抠搜搜连房租涨幅都追不上)
要离职肯定要提前申请,折腾快一个月的交接。三个人分别接收了我不同领域的任务,然后开了离职证明。(有个小插曲:离职证明网上下载的模板,领导给盖完公章说我应该没事看看文化方面的知识,全因为离职证明的那段话没空两格? 拜托那是百度搜到的模板诶,不知道老板讨这个嘴上面子有什么意思,可能是小孩子脾气?)
因为是裸辞,拿着我的所有东西离开的时候还是蛮爽的。开开心心的走出办公楼坐上回家的公交。就这么在家颓废了一个月。当然,到了出信用卡账单的时候就很方,要交最后一次房租,要还一个月放纵的生活费,也是一笔超大的开支。毕竟每个月都是动态平衡,虽然攒不下钱但不至于负债。没了工作只能用之前的存款生抗,也是没办法。
定下要走了,收拾了一大堆东西,能拿走的都拿走了。拿不走的一部分送给室友一部分拜托室友等有地址了帮忙邮到广东。去深圳有好多种方法,我和家里人一起去他们帮我拿着大量的行李,肯定不能坐飞机也不能坐高铁,毕竟没有这么大的储物空间。最后买了北京西到深圳的硬卧,在车上折腾了一天一夜。硬卧车可以放很多行李,至少我的两只行李箱两只双肩背和两袋子锅碗瓢盆都能装得下。(不要考虑动卧,动卧只有床底下能放少量扁的行李,亲身体会。)
区块链,当今最火热的技术热点。为什么这么火呢,三个字:“比特币”。
首先,我们要知道区块链是什么,根据维基百科的描述来看,是这样的:
区块链(英语:blockchain 或 block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。
用简单的话来说,区块链就是一个全球一起写的一本书。这本书有可能是账本,也可能是别的什么东西。
区块链有以下几个优势:
区块链的去中心化是真正的去中心化,没有管理员,唯一一种有效的攻击手段就是拿到51%以上的算力,这在现在这么多人参与的情况下几乎是不可能的。而且,这种攻击仅仅能拿来控制新出块的内容,并不能改动之前的老块。