理解ASCII码
最近在写一个串口程序,设备提供商的通讯协议说明中明确了内部通讯方式为“ASCII码”。其实每个和计算机打交道的人都会天天接触ASCII码,只是ASCII码藏在了幕后,我们很少与之正面打交道罢了,这次机会正好让我有机会到幕后去看看ASCII码的“庐山真面目”。 ASCII码众所周知全称为“美国信息交换标准码,American Standard Code for Information Interch...
最近在写一个串口程序,设备提供商的通讯协议说明中明确了内部通讯方式为“ASCII码”。其实每个和计算机打交道的人都会天天接触ASCII码,只是ASCII码藏在了幕后,我们很少与之正面打交道罢了,这次机会正好让我有机会到幕后去看看ASCII码的“庐山真面目”。 ASCII码众所周知全称为“美国信息交换标准码,American Standard Code for Information Interch...
谈到程序员似乎总是离不开“健康”这个话题,程序员是职业病的高发群体,一般工作2-3年的程序员或多或少的都有“小疾”。每个正规的公司每年都应有至少一次的“福利体检”。今天是我第一次参加公司的福利体检,入司时参加过体检,由于大学刚毕业,自然很自信身体没问题。在公司度过一年的时光后,也道听途说的知道一些说法,比如“某某人工作一年得高血压、脂肪肝”等,这给我这次体检带来了一丝悬念,自己也在担心我现在的身体...
内存管理一直是让C程序员头痛的问题,作为一个通用接口集,APR当然也提供其自己的内存管理接口–APR Pool。APR Pool作为整个APR的一个基础功能接口,直接影响着APR的设计风格。在这篇Blog中,我们就要和APR Pool来一次“亲密接触”。(还是以Unix平台实现为例) APR Pool源代码的位置在$(APR\_HOME)/memory目录下,本篇blog着重分析unix子目录下的...
Apache Server的进程调度一直为人所称道,Apache 2.0推出的APR对进程进行了封装,特别是Apache 2.0的MPM(Multiple Process Management)框架就是以APR封装的进程为基础的,下面就让我们一起来探索一下APR的进程封装吧(以Unix平台为例)。 APR进程封装源代码的位置在$(APR\_HOME)/threadproc目录下,本篇blog着重分...
作为一个可移植的运行时环境,APR的设计当然是很精妙的,但精妙的同时对使用者有一些限制。 APR附带一个简短的设计文档,文字言简意赅,其中很多的设计思想都值得我们所借鉴,主要从三个方面谈。 1、类型 1\) APR提供并建议用户使用APR自定义的数据类型,好处很多,比如便于代码移植,避免数据间进行不必要的类型转换(如果你不使用APR自定义的数据类型,你在使用某些APR提供的接口时,就需要进行一些参...
由于部门所使用的底层库与Apache Server有着“一定的渊源”,所以总有一种想看看Apache的实现的冲动。最近项目收尾,愿望终可实现。 一、何为APR? Apache Server经过这么多年的发展后,将一些通用的运行时接口封装起来提供给大家,这就是Apache Portable Run-time libraries, APR。 二、APR的目录组织 从www.apache.org上下载a...
类型表示(representation of types) 1、一般规则 a) 除了位域(bit field)之外的对象都是由一个或多个相邻序列字节组成的,这些字节的个数(number)、次序(order)和编码方式或是显式说明的,或是实现定义的。 b) 存储在非符号位域(unsigned bit field)和unsigned char类型对象中的值应该用纯二进制表示(pure binary n...
翻看以前的一次jjhou的“高阶C”课程的ppt,突然想到今天指导新员工时,她犯的关于参数传递方面的错误,就想简单分析一下。 一、现象和经验 规则:任何时候你想在函数内修改某个外面的变量值,并影响Caller,你应该传递该变量的地址进去。如果是指针变量,也不例外。 a) 反例1 void test(int a) { a = a + 10; } int main() { int cnt = 0;...
今天是牛郎和织女见面的日子,而我的织女因学校放假早已回家去了,剩下我这个孤独的牛郎只能“胡思乱想”,遂有了这篇blog。^\_^ 感悟一:今早早起,翻来覆去睡不着,想起昨晚和一大学哥们的谈话,他曾经和老外交流过,老外的想法是“中国人总是把自己的一辈子都想好,然后在按部就班的去工作生活;老外则是走一步算一步。”,对照自己最近的想法,好像有些不谋而合,这个老外挺有思想。 感悟二:继续翻来覆去,突然想到...
部门最近在进行C培训,由于有一个新员工需要我来指导,所以看了一下培训用的ppt,了解一下新员工的学习进度,恰看到ppt中有关“如何读懂复杂C声明”的章节。遂想起来自己在看《C专家编程》时,这块儿看得并不是很深刻,万一新员工问到我这块儿…,我不能打没有准备之仗,遂恶补之。 复杂的C声明一般被认为不是很好的编程习惯,当然也就不推荐使用。但是在读很多前辈遗留的代码时,又不得不面对这一问题。知道总比不知道...