21.大内高手系列
李先静
Only those who attempt the absurd can achieve the impossible.
展开
-
大内高手—内存模型
大内高手—内存模型 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-9了解linux的内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉。坐火车外出旅行时,即时你对沿途的地方一无所知,仍然可以到达目标地。但是你对整个路途都很比较清楚的话,每到一个站都知道自己在哪里,原创 2006-06-19 21:37:00 · 16488 阅读 · 16 评论 -
大内高手—序
大内高手—序 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-9我一直认为作为一个在linux下工作的C程序员,若对内存有深刻的认识,不但程序的性能会更高,运行更稳定,编程速度也会更快。反之亦有相反的效果,有时一些内存错误让你摸不着头脑,不但大大降低开发速度,开发出来的软件稳定性也值得怀原创 2006-06-19 21:36:00 · 12573 阅读 · 7 评论 -
大内高手—全局内存
大内高手—全局内存 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-9有人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题虽然玩不出花来,但确实有些重要,了解这些知识,对于优化程序的时间和空原创 2006-06-24 19:20:00 · 10048 阅读 · 13 评论 -
大内高手—栈/堆
大内高手—栈/堆 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-9l 栈栈作为一种基本数据结构,我并不感到惊讶,用来实现函数调用,这也司空见惯的作法。直到我试图找到另外一种方式实现递归操作时,我才感叹于它的巧妙。要实现递归操作,不用栈不是不可能,而是找不出比它更原创 2006-06-22 22:05:00 · 13277 阅读 · 19 评论 -
大内高手—内存管理器
大内高手—内存管理器 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-9作为一个C程序员,每天都在和malloc/free/calloc/realloc系列函数打交道。也许和它们混得太熟了,反而忽略了它们的存在,甚至有了三五年的交情,仍然对它们的实现一无所知。相反,一些好奇心未泯的新原创 2006-06-27 21:51:00 · 12755 阅读 · 7 评论 -
大内高手—共享内存与线程局部存储
大内高手—共享内存与线程局部存储 城里的人想出去,城外的人想进来。这是《围城》里的一句话,它可能比《围城》本身更加有名。我想这句话的前提是,要么住在城里,要么住在城外,二者只能居其一。否则想住在城里就可以住在城里,想住在城外就可以住在城外,你大可以选择单日住在城里,双日住在城外,也就没有心思去想出去还是进来了。 理想情况是即可以住在城里又可以住在城外,而不是走向极端。尽管像青原创 2006-07-06 22:04:00 · 12366 阅读 · 12 评论 -
大内高手—常见内存错误
大内高手—常见内存错误 随着诸如代码重构和单元测试等方法引入实践,调试技能渐渐弱化了,甚至有人主张废除调试器。这是有道理的,原因在于调试的代价往往太大了,特别是调试系统集成之后的BUG,一个BUG花了几天甚至数周时间并非罕见。 而这些难以定位的BUG基本上可以归为两类:内存错误和并发问题。而又以内存错误最为普遍,即使是久经沙场的老手,也有时也难免落入陷阱。前事不忘,后世之师,原创 2006-07-12 07:59:00 · 12836 阅读 · 21 评论 -
大内高手—惯用手法
大内高手—惯用手法 《POSA》中根据模式粒度把模式分为三类:架构模式、设计模式和惯用手法。其中把分层模式、管道过滤器和微内核模式等归为架构模式,把代理模式、命令模式和出版-订阅模式等归为设计模式,而把引用计数等归为惯用手法。这三类模式间的界限比较模糊,在特定的情况,有的设计模式可以作为架构模式来用,有的把架构模式也作为设计模式来用。 在通常情况下,我们可以说架构模式、设计原创 2006-07-18 21:13:00 · 9330 阅读 · 13 评论 -
大内高手--调试手段及原理
大内高手--调试手段及原理 知其然也知其所以然,是我们《大内高手》系列一贯做法,本文亦是如此。这里我不打算讲解如何使用boundschecker、purify、valgrind或者gdb,使用这些工具非常简单,讲解它们只是多此一举。相反,我们要研究一下这些工具的实现原理。 本文将从应用程序、编译器和调试器三个层次来讲解,在不同的层次,有不同的方法,这些方法有各自己的长处和局限。原创 2006-07-25 22:07:00 · 14250 阅读 · 13 评论