Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势?

(本文首发于 知乎

不写驱动,如何在 Win10 上让主板蜂鸣器发声

Windows API 里面有一个 Beep.aspx) 函数,作用是发出蜂鸣声。这个蜂鸣功能历史悠久,BIOS 的报警声就是从主板蜂鸣器里出来的,其原理是调用几乎每台机器都有的 Programmable Interval Timer (PIT)。可惜从 Windows Vista 开始,这个函数的行为变成了调用扬声器发声,而不再是使用主板蜂鸣器发声了。

网络技术的风向标——SIGCOMM 2016

(转载自 微软亚洲研究院

作为计算机网络领域资历最老的顶级学术会议,ACM SIGCOMM自1977年起已经举办了37届。美国计算机学会(ACM)通信专业组(SIGCOMM)在其主页上无不自豪地将SIGCOMM称为其年度旗舰会议。40年来,从计算机网络教科书里的TCP拥塞控制协议到云数据中心里的软件定义网络(SDN)和网络功能虚拟化(NFV),SIGCOMM见证了众多计算机网络关键技术的诞生与发展。

SIGCOMM的论文以高质量著称,每年只录用40篇左右,录取率在15%左右。全世界的网络研究者都把在SIGCOMM上发表论文视为一种荣誉。每篇论文都经过严格的双盲评审,例如今年有三轮评审,第一轮从225篇选出99篇,第二轮选出66篇,第三轮选出60篇进入程序委员会(PC)讨论,在一天半的会议后决定最终被录用的39篇论文。每篇被录用的论文平均收到了8个评审意见,长达十几页。即使最终没有被录用,这些专家审稿人的意见对论文后续的改进也是很有帮助的。

《浪潮之巅》读书笔记

题记:暑假我搞挂了 LUG 的开源软件镜像服务器,惩罚之一就是补交从 LUG 书库 所借书籍的读书笔记。距初读此书已两年有余,可以说是《浪潮之巅》为我打开了 IT 产业的大门,在此与诸位看官分享拙见。

《浪潮之巅》有两条主线:一是科技公司的起落沉浮;二是高科技行业的规律性。这本书有趣的地方在其前一条主线,把科技公司的历史写得像小说一样精彩。而这本书的价值则主要在其后一条主线,即透过现象看规律。本文将总结《浪潮之巅》中各个商业帝国的兴起、荣耀与衰落,以及公司和计算机工业的发展规律。

一个数据包消灭一台服务器的 DNS 漏洞

2015 年 7 月 28 日,世界上应用最广泛的 DNS 服务器 bind9 爆出了一个严重的拒绝服务漏洞(CVE-2015-5477)。

一点背景知识:DNS 是把域名映射到 IP 地址的服务。当你访问 google.com 时,计算机就会问你所在小区的 DNS 服务器,google.com 的 IP 地址是什么?如果你的邻居刚好也在访问 google.com,DNS 服务器就会直接返回其 IP;不然,这个 DNS 服务器就会去问 Google 官方的 DNS 服务器,得到 google.com 的 IP 地址,并返回给你。这个小区的 DNS 服务器叫做递归 DNS;递归 DNS 挂了,会导致它服务的区域无法上网。Google 官方的 DNS 服务器叫做权威 DNS;权威 DNS 挂了,会导致它所服务的网站从地球上消失。

DNS 递归查询
DNS 递归查询 (图片来源

这个漏洞严重到什么程度呢?只要发一个 UDP 数据包,就能搞挂一台 DNS 服务器。不管是递归 DNS 还是权威 DNS,不管是 bind9 做了什么样的配置,只要这个数据包被 bind9 进程接收了,它就会立刻抛出异常,终止服务。

LUG 服务器被入侵事件始末

5 月中旬,LUG 举行了白帽子大赛,对校内网站进行白帽子漏洞测试,并按照漏洞来评奖。这次活动举行得还算顺利,几天时间里找到了校园网络系统的上百个漏洞。然而不知是什么原因引来了骇客。

从受损的 git 仓库里恢复代码

背景:Windows 上的 Virtualbox 虚拟机。Ubuntu 14.04.1 LTS,3.13 内核。ext4 文件系统。

作死:前几天一直在该虚拟机上开发网站,做了 N 多 commit,以为 git push 了,但事实上 push 失败了。

悬疑:今天妹子 git pull 了一下,发现没有任何更新,然后说我这几天都没干活。

悲剧:登录到虚拟机里一看,项目目录里有几个刚写的文件变成了 0 字节的空文件。(ext4 这么稳定,一定是母机里万恶的 NTFS 和 Virtualbox 惹的祸)
.git 目录里好多文件也变成了 0 字节的空文件。git 提示仓库已损坏。

$ git status
error: object file .git/objects/71/cbcbbc9d06a74f2fd8ea9109b81b88086f1430 is empty
error: object file .git/objects/71/cbcbbc9d06a74f2fd8ea9109b81b88086f1430 is empty
fatal: loose object 71cbcbbc9d06a74f2fd8ea9109b81b88086f1430 (stored in .git/objects/71/cbcbbc9d06a74f2fd8ea9109b81b88086f1430) is corrupt
$ git fsck
error: object file .git/objects/00/837a7e1f8afb8da8609369f7acf95fe9b7fc5b is empty
error: object file .git/objects/00/837a7e1f8afb8da8609369f7acf95fe9b7fc5b is empty
fatal: loose object 00837a7e1f8afb8da8609369f7acf95fe9b7fc5b (stored in .git/objects/00/837a7e1f8afb8da8609369f7acf95fe9b7fc5b) is corrupt

几天来写的代码是不是这样就灰飞烟灭了呢?我们知道,当你删除一个东西的时候,你只是删除了这个东西在当前三维空间中的引用,而这个东西的本体仍然存在于四维时空之中。穿越大法,走起!

博客启用新域名 ring0.me

2013 年 5 月 16 日,我的博客有了顶级域名 bojieli.com。2015 年 1 月 6 日,注册并启用了新域名 ring0.me(是数字 0 哦,字体看着像字母 O)。

《程序员的自我修养》读书笔记

贴一篇旧文:2012 年 6 月写的读书笔记(原文链接)。这个笔记是写给自己看的,里面掺进了太多自己的设想,有可能会对读者造成误导。不过文章太长了,没有时间修订。欢迎吐槽。

近来(2012 年上半年)在郭家华的推荐下,读了LUG书库的《程序员的自我修养——链接、装载与库》一书,有种相见恨晚的感觉。然而快到期末考试了,没有时间把全书读完,因此只写了一部分。


有两种方式构建软件:一种是把它设计得如此简单以至于明显没有缺陷,另一种是把它设计得如此复杂以至于没有明显的缺陷;前一种的难度大得多。

——Hoare 于图灵奖演讲《皇帝的旧衣》

虚拟化技术大观

按:2014 年 11 月 21 日,笔者在阿里巴巴技术俱乐部的虚拟化技术交流会暨 “科大云 3.0” 发布会上分享了一些对虚拟化技术的浅见,整理、补充后与诸位探讨。(长文慎入)

虚拟化技术大家都不陌生,我们大都使用过诸如 VMWare、VirtualBox 的虚拟机软件。一些人认为,虚拟化技术是近几年跟着云计算的潮流才火起来的,十年前只是桌面用户测试其他操作系统的玩具。非也。只要计算机上同时运行着多个任务,就会有任务隔离的需求,虚拟化就是让每个任务看起来独占整个计算机、隔离任务之间影响的技术。早在计算机还是庞然大物的 20 世纪 60 年代,虚拟化技术就开始发展了。

IBM 7044