独钓寒江雪

用C++的优雅,驯服Windows的狂野

ARP (Address Resolution Protocol) 地址解析协议,位于 TCP/IP 协议栈中的链路层。

当局域网内主机间(或者是主机与网关间)需要通信时,通过使用 ARP 协议获取目标 IP 地址所对应的硬件 MAC 地址,然后在主机间通过 MAC 地址来完成数据包的发送和接收。

阅读全文 »

从烽火台到 TCP/IP,人类协作的本质,是达成共识。网络协议,正是数字时代赖以生存的“共识”基石。它沉默地流淌在每次点击、每条消息、每一帧画面之下,构筑了现代社会的神经系统。本系列将层层剖析这些无形的规则,为您揭开互联网高效、有序运转的终极秘密,理解我们究竟如何在比特的海洋中,精准地找到彼此。

阅读全文 »

功能

DECLARE...HANDLER语法如下:

1
2
3
DECLARE handler_action HANDLER
FOR condition_value [, condition_value] ...
statement

功能概括起来就是:
在一个或者多个condition_value条件满足时,先执行statement语句,然后执行handler_action动作

阅读全文 »

  1. 成功的唯一秘诀就是钻空子。钻职场人际关系的空子、钻市场监管的空子、钻信息不对称的空子,钻你发现的一切空子的空子。当然,坚持、努力、选择这些因素,对于成功也很重要,但算不上秘诀。只有钻空子才是唯一的秘诀。

  2. 不要做永远正确的穷人。少跟人争辩,你觉得对就去做,做成了自然别人就闭嘴了。说服别人并没有实际的意义,浪费口舌和时间。当然,利益相关的事情,有人冤枉你的情况除外。

阅读全文 »

程序员薪水有高有低,有的人一个月可能拿30K、50K,有的人可能只有2K、3K。同样有五年工作经验的程序员,可能一个人每月拿20K,一个拿5K。是什么因素导致了这种差异?我特意总结了容易导致薪水低的九大行为表现,避开这些大坑,你就离高薪不远了。

阅读全文 »

本文通过一个实例来讲解如何使用 WinDbg 来调试 Windows CriticalSection 死锁的问题。

演示示例

这里有一个关键区锁死问题的程序,运行之后依次点击“CS 锁死”按钮、右上角退出按钮,程序就会卡死。

对于眼下的这个问题,界面完全失去响应,这说明负责消息处理的 UI 线程阻塞了。

对于几乎所有的 windows GUI 程序,编号为 0 的初始线程就是 UI 线程,windows 发现该界面一段时间没有消息响应之后就会在标题后面加上“(未响应)”。

阅读全文 »

前面的文章已经介绍了套接字 I/O 的同步模型、WSAAsyncSelect模型、WSAEventSelect模型,到目前为止套接字I/O还剩下2个模型没有介绍:重叠模型,完成端口模型。

如果程序对性能和并发要求不高,可以使用前面介绍的WSAEventSelect模型;如果对性能和并发有要求,可以使用本文介绍的完成端口模型。

因为完成端口模型是基于重叠模型的,且在易用性、可伸缩性等方面都高于重叠模型,在一般选择重叠模型的场合,都可以用完成端口模型来替代,强烈建议使用完成端口模型。

“完成端口模型”是 Windows 系统上面套接字 I/O 的终极模型,可以用它代替前面的所有模型。如果对完成端口模型有一个好的封装,基本上可以“一招鲜,吃遍天”,免去重复造轮子的麻烦。所以这里对完成端口的模型的介绍和比前面的几篇篇幅更长,示例代码也更加复杂和全面。

阅读全文 »
0%