2014 一月 | 重归混沌的BLOG

程序员之恋

美国的贝尔实验室设计了最初的C语言 刻在UNIX操作系统距今已有三四十年 你在屏幕前凝视数据的缱绻 我却在旁轻轻敲打键盘把你的梦想展现 循环 递归 贪心 动规 是谁的从前 喜欢在匈牙利算法中你我牵手的画面 经过MSRA门前我以大牛之名许愿 思念像斐波那契数列般漫延 当软工沦落在设计的文档间 算法依旧是永垂不朽的诗篇 我给你的爱写在程序间 深藏在最长不下降子序列里面 几万组数据流过后发现 我的心依然不变 我给你的爱写在程序间 深藏在最长不下降子序列里面 用无尽的代码刻下了永……

为什么要使用回调函数

  最近在代码中大量使用了callback函数,没有google到大神关于是否要更多或更少的使用callback函数的论述,可能是这个问题太白痴了吧,暂且陈述一下自己的观点。   假如,有时候我们需要在逻辑上分2层,如下图:   1 |------------------| 2 | High Level | 3 |------------------| 4 | Low Level | 5 |------------------| 6 //如果这样写 7 int low_do_a(int xx) 8 ……

类似sprintf这类变参可能出现的bug

  中午吃完饭照例去云风大神的blog上去逛一圈,果然有新发现,如题: 1     char buff[3]; 2     char data; 3     sprintf(buff, "%02x", data);   咋一看,data最大等于0xff应该不会错,可以如果编译器默认char为signed char,而且data = -1,以十六进制看应该为0xff,这么看也没有错。   关键在于变参,在C语言的变参中,小于int长度的数据压栈时一律扩展为int型, 那么问题来了,符号型数据在进行类型扩展时是会扩展符号的,这么看其实 data = -1; sprintf(b……

USB设备的插入检测

  又被坑了,总算解决了,要睡了长话短说。首先,着重强调 Device Class GUID, Device Interface Class GUID, Interface GUID是有区别的,另外奉上两篇MSDN文章:      http://msdn.microsoft.com/en-us/library/windows/hardware/ff553412(v=vs.85).aspx   http://msdn.microsoft.com/en-us/library/windows/hardware/ff553428(v=vs.85).aspx   Device Class GUID 是INF文件中Verison Section中指名的设备类GUID,他标志着此设备图标,此设备出现在哪一栏,电压电流等各……