读《C++ Primer》之返回值与缓冲区

Android

在 Unix 系统中,通过echo $?,获取 main 函数的返回值。习题1.2,在 main 函数中,返回-1。通过上述方法查看,发现结果是255。这是为什么?

从 Wikipedia 的 Exti Status词条,可以看到如下说明:

SUS specifies that the low-order 8 bits of the status value contain the exit status;[4] this can be retrieved using the WEXITSTATUS macro in wait.h.[5] As such, on POSIX-compatible exit statuses are restricted to values 0-255, the range of an unsigned 8-bit integer.

[ Read More » ]

Compile Android Source on Mac OS X

Android

在我看来,学习 Android 的一个有效途径就是阅读它的源代码,尽管市面上有各种各样的宝典、秘籍,但能从根源上把问题讲得透透彻彻的少之又少[推荐1]。我曾经在2010年编译并走读过它部分代码,但相比它浩瀚的代码,做的功课只是九牛一毛。

这段时间,我重新拾起丢掉的任务,计划在 MacBook Pro 走读代码,为了配合验证观点,很有必要对源代码加些注释,修改些代码。所有的这一切首先要做到将原生的 Android 源码编译通过。

[ Read More » ]

图解ListView的刷新过程

Android

ListView是 Android 应用开发中,常见的视图类组件,其普及程度差不多与 HTML 中的Table一样。此类组件的本质是将数据,也就是Model,表现出现,但其本身不负责维护数据,属于“来料加工”。

那么ListView又是怎么获得数据渠道呢?答案就是Adapter,其顾名思义就是“适配器”。就像笔记本加入市电,需要用电源适配器一样,原始数据不大可能直接显示给用户,就需要一个数据适配器,转换成视图所支持的样子。

到这里,数据已经可以展现给用户了,但是还面临一个问题,即如果数据更新了,视图能不能将新数据替换旧数据?在 Android 中,掌控数据、充当 Controller 角色的是Activity,它应该是知道数据有变化的,同时,它还持有 ViewAdapter

[ Read More » ]

读《新概念51单片C语言教程》之二

新概念51单片C语言教程

数码管工作是靠点亮内部的发光二极管,一个数码管通常有10个引脚,除了7个小段和1个小数点外,还有1个共同端,剩余1个引脚没有用,即第3引脚和第8引脚是连在一起的。TX-1C实验板上使用的数码管都是共阴极。

多个数码管一体时,公共端是独立的,即“位选”是可独立控制的,“段选”则是连接在一起的。因此,这就需要两个锁存器进行分别控制。TX-1C 的位选通是 P2^7,段选通是 P2^6。在同一时刻,位选通的所有数码管显示的数字都是一样的,这种显示方式称为静态显示。

[ Read More » ]

读《新概念51单片C语言教程》之一

新概念51单片C语言教程

从大学到现在,我对计算机的认识一直很浮浅,特别是使用 Java 这些年,虚拟机确实带来了移植的便利,但是却屏蔽了底层,割断了我与底层硬件的联系。当我决定展开计算机组成之旅的时候,我打定主意要从简单入手,但很快意识到自己面临一个问题,如何寻找一个最简单的计算机?64位普及的年代,即便在垃圾堆里,也难寻得386的踪迹。

认识 MCS51 单片机是无心插柳柳成荫,2011年我从爱果联盟了解到了 WiFi-Robot 项目,于是花了一笔不菲的钱来组装这个大玩具。但是,很快我觉得无趣了,凡具备了中学生的阅读理解能力,都能组装、掌控它。作为一个常常自命不凡的程序员,我更加对自己编写代码控制小车产生了兴趣。碰巧它的控制板采用的正是51单片机。

[ Read More » ]