Web Analytics

APR源代码分析-进程同步篇

最新的统计数据显示Apache服务器在全世界仍然占据着Web服务器龙头老大的位置,而且市场占有率遥遥领先,所以学习Apache相关知识是完全正确的方向,这里我们继续分析APR进程同步相关内容。 进程同步的源代码的位置在$(APR\_HOME)/locks目录下,本篇blog着重分析unix子目录下的proc\_mutex.c、global\_mutex文件内容,其相应头文件为$(APR\_HOME...

December 2, 2005 · 4 min · Tony Bai

学习虚存-自上而下

如果它不存在,但是你能看见它 — 它是虚拟的(IBM宣传虚拟内存之用语)。虚拟内存技术是计算机发展史上的一项重要的技术,它帮助应用程序摆脱了“体积”的限制。 记得上大学时,有一本书好像叫做“计算机网络 – 自顶向下”,全名记不太清了。书中从人们接触最多也最熟悉的“应用层”开始讲,一直讲到“物理层”,看完这本书后感觉效果不错。所以按照这种方法我也尝试着自上而下的去学习“虚存”,从我们最熟悉的C库接口...

November 30, 2005 · 5 min · Tony Bai

汇编之路-复习栈操作

不得不承认上次关于栈桢和栈操作写得有些笼统,这里做一次“补充”,美名其曰:“复习”。 下面的这个例子几乎就能覆盖所有的栈操作相关的内容了。 void dummy() {         int     i = 12;         int     j = 13;         char    c = 'a'; } int main() {         dummy();         re...

November 24, 2005 · 6 min · Tony Bai

软件抽象

不知道“软件抽象”这个标题能否恰好表达出我想表达出的意思,暂且就起这个名字吧。随着工作经验的增加,对软件开发所涉及的技术知识体系的理解也渐渐地清晰(起码自己是这么感觉的^\_^),思考了若干时间后,拿出来给自己一个和大家交流的机会。 1、起源 这个想法起源于一次项目方案讨论例会,会上我们的项目遇到了“存储资源瓶颈”,遂有同事提出一个类似“数据中心”的方案,但考虑到部门目前没有相关经验和数据供参考,...

November 21, 2005 · 3 min · Tony Bai

tony说设计-实践后的体会

入司后连续做过几个项目。最近在做一个新的项目的设计的时候,突然想到是不是该把以前项目中一些好的设计想法应用到新的项目中,并且尽量减少在新的项目中遗留以前的不好的设计呢?那么以前的项目中哪些是值得我去借鉴,哪些又是应该去避免的呢?真的很遗憾,自己并没有系统的反思和总结过,这就是我写下这篇Blog的直接起因。 一直在Unix平台下做设计和开发,所以下面谈的内容可能都有些局限性。作为设计原则本身,某些可...

November 16, 2005 · 5 min · Tony Bai

童心未泯

在sina“北京奥运吉祥物”发布专题中,发现吉祥物评审委员会有位评委是个童话故事家,叫“郑渊洁”,这个名字听起来很熟悉,在网上搜索后才知道,原来小时侯最喜欢看的《舒克和贝塔》就出自这位作家之手,心中顿时涌动着对其之敬仰之情,遂下载了一本“待补充”的《郑渊洁童话全集》开始拜读。 虽已工作一载有余,但仍自认为“童心未泯”,暂且忘记工作的压力、生活上的不如意,进入郑叔叔的童话世界中,这简直就是一种享受。...

November 14, 2005 · 2 min · Tony Bai

汇编之路-栈操作与栈帧

结构化程序的一个最基本的单元就是“函数”或者叫“过程”。在汇编这一层自然也相应的有支持这些概念的指令操作,如栈操作和栈帧的概念。 首先这里要为“打开汇编之门”那篇blog补充一点的是:汇编语言是与机器相关,这里的一切都是基于IA-32机器平台的。 1、寻址方式 我们已经知道在操作数表示中有一种是用来指示内存地址的内容的,在GNU Assembly中指示内存地址有多种方式,这些方式被统称“寻址方式”...

November 13, 2005 · 4 min · Tony Bai

打开汇编之门

工作这么长时间,一直在C语言这一层面上钻研和打拼,日积月累,很多关于C的疑惑在书本和资料中都难以找到答案。程序员是追求完美的一个种群,其头脑中哪怕是存在一点点的思维黑洞都会让其坐卧不宁。不久前在itput论坛上偶得《Computer Systems A Programmer's Perspective》(以下称CSAPP)这本经典好书,遂连夜拜读以求解惑。虽说书中没有能正面的回答我的一些疑惑,但是...

November 12, 2005 · 6 min · Tony Bai

C单元测试包设计与实现

在Java、C++和C#等高级语言的单元测试正进行的如火如荼的时候,C好像做了看客,冷清的躲在了一个不起眼的角落里。C并不是没有单元测试工具,像Check和CUnit这样的工具也很有名气,只是和大名鼎鼎的JUnit比起来,还是显得有些英雄气短。很多大型的C项目,如APR等都没有使用像Check、CUnit这样通用的单元测试框架,而是另起炉灶自己编写。其实编写一个仅能满足单个项目需要的C单元测试工具...

November 8, 2005 · 5 min · Tony Bai

APR源代码分析-环篇

APR中少见对数据结构的封装,好像唯一例外的就是其对循环链表,即环(RING)的封装。 在大学的时候学的不是计算机专业,但大三的时候我所学的专业曾开过一门好像叫“计算机软件开发基础”的课,使用的是清华的一本教材,课程的内容包括数据结构。说实话听过几节课,那个老师讲的还不错,只是由于课程目标所限,没讲那么深罢了。当然我接触数据结构要早于这门课的开课时间。早在大一下学期就开始到计算机专业旁听“数据结构...

November 3, 2005 · 5 min · Tony Bai