w
h
y
?
y
o
u
a
r
e
h
e
r
e
?
亮
概述一个Timer的实现需要具备以下几个行为:
StartTimer(Interval, ExpiryAction)
注册一个时间间隔为 Interval 后执行 ExpiryAction 的定时器实例,其中,返回 TimerId 以区分在定时器系统中的其他定时器实例。
StopTimer(T
...
socket是网络协议栈的抽象socket api在tcp中的体现
TCP三次握手后有个accept队列,进到这个队列才能从Listen变成accept,默认backlog 值是50。
如上图所示,这里有两个队列:syns queue(半连接队列);accept queue(全连接队列)三次握手中,
...
概述TCP & socket 总结,
网卡 network interface card
网卡需要有驱动才能工作,驱动是加载到内核中的模块,负责衔接网卡和内核的网络模块,驱动在加载的时候将自己注册进网络模块,当相应的网卡收到数据包时,网络模块会调用相应的驱动程序处理数据。
内核如何从网卡接受
...
IP header
UDP header
TCP header
MTU & MSSMSS=MTU-IP包头长-TCP包头长
三次握手交换初始序列号 交换TCP窗口大小信息
四次挥手可以三次挥手吗,可以,ack+fin一起发就是三次,启用延迟确认就有三次挥手
2MSL等待状态TIME_WAIT
...
处理流程当使用 awk 命令处理一个或者多个文件时,它会依次读取文件的每一行内容,然后对其进行处理,awk 命令默认从 stdio 标准输入获取文件内容,awk 使用一对单引号来表示一些可执行的脚本代码,在可执行脚本代码里面,使用一对花括号来表示一段可执行代码块,可以同时存在多个代码块。awk 的每
...
时间轮实现Linux定时器分为低精度定时器和高精度定时器两种类型,内核对其均有实现。本文讨论的是我们在应用程序开发中比较常见的低精度定时器。作为常用的基础组件,定时器常用的几种实现方法包括:基于排序链表实现、基于小根堆实现、基于红黑树实现、基于时间轮实现。本文讲解的是时间复杂度最优,也是linux内
...
历史UNIX两大贡献者贝尔实验室和BSD,在进程之间通信侧重不同,前者基于内核对进程之间的通信手段进行了改进,形成了“System V IPC”,而后者则是基于网络形成了套接字。
而POSIX则是IEEE制定的标准,目的是为运行在不同操作系统上的软件提供统一的接口,实现者则是不同的操作系统内核开发人
...
临界区、信号量、互斥锁、自旋锁与原子操作临界区程序想要使用共享资源,必然通过一些指令去访问这些资源,若多个任务都访问同一资源,那么访问该资源的指令代码组成的区域称临界区。简而言之,临界区是代码
信号量信号量简单的说是一种计数器,用P/V操作表示减和增。增加操作包括两个微操作:
增加:
将信号量的值
...
作用xargs,是execute arguments的缩写,它的作用是从标准输入中读取内容,并将此内容传递给它要协助的命令,并作为那个命令的参数来执行。
与管道的区别
管道可以实现:将前面的标准输出作为后面的 标准输入
管道无法实现:将前面的标准输出作为后面的 命令参数
1234567$ cat
...
GFW的原理要与GFW对抗不能仅仅停留在什么不能访问了,什么可以访问之类的表面现象上。知道youtube不能访问了,对于翻墙来说并无帮助。但是知道GFW是如何让我们不能访问youtube的,则对下一步的翻墙方案的选择和实施具有重大意义。所以在讨论如何翻之前,先要深入原理了解GFW是如何封的。
总的来
...