Monthly Archives: November 2008

系统程序员成长计划-写得又快又好的秘诀(一)

“快”是指开发效率高,“好”是指软件质量高。呵呵,写得又快又好的人就是高手了。记得这是林锐博士下的定义,读他那篇著名的《C/C++高质量编程》时,我还是个初学者,印象特别深。我现在仍然赞同他的观点,不过这里标题改为成为高手的秘诀,感觉就有点像标题党了,所以还是用比较通俗的说法吧。废话少说,请读者回顾一下这段时间的编程经验,回答下面两个问题:

Posted in 系统程序员成长计划 | Tagged | 28 Comments

大内高手—栈/堆

o 栈 栈作为一种基本数据结构,我并不感到惊讶,用来实现函数调用,这也司空见惯的作法。直到我试图找到另外一种方式实现递归操作时,我才感叹于它的巧妙。要实现递归操作,不用栈不是不可能,而是找不出比它更优雅的方式。 尽管大多数编译器在优化时,会把常用的参数或者局部变量放入寄存器中。但用栈来管理函数调用时的临时变量(局部变量和参数)是通用做法,前者只是辅助手段,且只在当前函数中使用,一旦调用下一层函数,这些值仍然要存入栈中才行。

Posted in Programming | 1 Comment

大内高手—内存模型

了解linux的内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉。坐火车外出旅行时,即时你对沿途的地方一无所知,仍然可以到达目标地。但是你对整个路途都很比较清楚的话,每到一个站都知道自己在哪里,知道当地的风土人情,对比一下所见所想,旅程可能更有趣一些。

Posted in Programming | Leave a comment

大内高手—序

我一直认为作为一个在linux下工作的C程序员,若对内存有深刻的认识,不但程序的性能会更高,运行更稳定,编程速度也会更快。反之亦有相反的效果,有时一些内存错误让你摸不着头脑,不但大大降低开发速度,开发出来的软件稳定性也值得怀疑。

Posted in Programming | Leave a comment

KJAVA虚拟机Hack笔记-实现MIDP的SLAVE事件模型

MIDP有两种事件模型,一种称为MASTER模型,在这种模型中,以虚拟机为主GUI为从,事件的主循环在虚拟机中实现。另外一种称为SLAVE,在这种模型中,以GUI为主虚拟机为从,主循环在GUI中实现,目前只有QTE使用这种方式。我想GTK+和QTE的事件处理很类似,猜测GTK+也应该采用SLAVE模型。

Posted in KVM hack notes | Leave a comment

gdbserver调试共享库

在开发嵌入式系统时,调试往往是一大难题。面试过不少嵌入式linux工程师,当问及调试手段时,他们的调试手段一般是两种:首先是在PC上的模拟环境中运行,若有问题,可以很方便的调试。其次,若在板子上运行时才出错,就用printf输出log信息,根据log信息定位错误。有少部分人用gdbserver调试板子上的程序,但问到如何在共享库里设置断点时,都说没有办法。

Posted in Linux Mobile | 1 Comment

KJava虚拟机hack笔记-基于GTK的移植

CLDC只依赖于硬件平台和操作系统,不依赖于GUI,在移植到GTK+上时不需要做任何修改。MIDP则与GUI密切相关,在移植到GTK+上时主要修改这部分内容。因为MIDP没有基于GTK+的实现,不是简单的编译一下就行的,而是要动手写上万行的代码。这里面我们从总体介绍一下移植Phoneme_Feature到GTK上的方法:

Posted in KVM hack notes | Leave a comment

答复:我不会OOO,仍然可以XXX

按照《审死官》里的读法,标题可以读着:答复:我不会圈圈圈,仍然可以叉叉叉。圈圈叉叉并不特指某个东西,而是一个通配符。代表诸如:我不懂COM原理,仍然调用COM组件。我不懂数据结构,仍然可以写程序。我记不得常用API,仍然照样用IDE。如此等等。

Posted in 沉思录 | 6 Comments

几则开发技巧

o 使用gtk_idle_add实现异步signal。 最近开发桌面模块时,遇到一个棘手的问题:向DirectFB的窗口管理器注册了顶层窗口改变的事件。当前顶层窗口切换时,窗口管理器回调我设置的回调函数,在回调函数中又要调用窗口管理器的函数,以获取顶层窗口的信息。整个过程是同步调用的,即直接调用函数,这会重入一个窗口管理器函数,造成死锁。

Posted in GTK+ | Leave a comment

在linux终端下运行X Window程序

作为Linux程序员,在大多数情况,在终端下干活(编程),可能更方便一点。服务器在机房里,大家都连接到同一台服务器上,而本机在Windows下运行一个终端(如SecureCRT),这是典型的配置。

Posted in X Windows | Leave a comment