技术综合

74-Unix 域套接字地址结构

1.unix域协议简介不同于ipv4的AF_INET,unix域只用于本机进程间通信,它所使用的完全是另一套协议。在使用unix域的时候,socket函数的第一个参数必须指定为AF_LOCAL或者AF_UNIX,表示创建一个unix域套接字...

详述 SQL 中的 distinct 和 row_number() over() 的区别及用法

1前言在咱们编写SQL语句操作数据库中的数据的时候,有可能会遇到一些不太爽的问题,例如对于同一字段拥有相同名称的记录,我们只需要显示一条,但实际上数据库中可能含有多条拥有相同名称的记录,从而在检索的时候,显示多条记录,这就有违咱们的初衷啦!...

80-进程间传递描述符(策略)

万事俱备,只欠东风。现在就差如何进行程序结构设计了。我们已经知道,可以通过辅助数据传递描述符了,那么接下来怎么做?1.目标我们的目标是让进程fork一个子进程,子进程继承unix域套接字。子进程打开某个文件,然后将该文件描述符通过sendm...

46-不要将 IO 复用与 stdio 混合

别以为上一节我们修复了那个bug就没事了。还有一个非常隐秘的错误,这里必须要指出来:不要将stdio库提供的C语言函数与IO复用混合使用!!!1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git....

17-TCP 协议(迟到的 ACK —— Windows )

1.引言我们知道,TCP协议中,需要对接收到TCP段进行确认。有两种方式可以减少TCP报文段.一种是累积确认,另一种是捎带确认。累积确认有时候,发送方发送速度非常快,接收方一下下接收到了好几个tcp段,可以通过累积确认的方式,一次确认好几个...

77-Unix 域数据报回射服务器

同样的,这个程序根据之前的UDP回射服务器改写。1.程序路径程序路径:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitpull更新一下。本节程...

给技术人上的管理课:控制和计划

在开始讲任何的细节之前,我想先谈谈为什么要写这样的系列文章。众所周知,从事专业工作的人士,无论挂着什么样的头衔,就其日常工作的根本性质而言,基本上可以分为两大类,不妨就称为技术人和管理人吧。不用说,他们分别从事着的当然就是技术工作和管理工作...

视觉直观感受 7 种常用的排序算法

1.快速排序介绍:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循...

23种设计模式

目录创建型1.FactoryMethod(工厂方法)2.AbstractFactory(抽象工厂)3.Builder(建造者)4.Prototype(原型)5.Singleton(单例)结构型6.AdapterClass/Object(适配...

102-受限广播地址

这种也称之为本地广播地址,它的目标地址为255.255.255.255.意思是只在本网络进行广播,绝对不会被路由器转发。1.规则如果一台主机发送的IP数据报目标地址为255.255.255.255,则相当于向发送者所在的网络发送子网定向广播...

84-使用非阻塞 I/O 改写回射客户端

这个程序,应该是相当复杂的。读完它需要一些耐心,不过我会力求突显程序的结构,删除无关的代码。1.回顾旧程序旧版本程序的结构如下:while(1){rfds={stdin,sockfd};select(rfds);if(stdininrfds...

71-recvmsg 和 sendmsg 函数

这两个函数只适用于套接字描述符。read、readv、recv和recvfrom能用的地方,recvmsg都能使用,而且,recvmsg能提供更多的功能。同样的,各种output类型的函数都可以替换成sendmsg函数。所以,recvmsg...