诗意代码,不仅仅是代码

boat

not just code

一个朋友问我,这里是明明是“诗意代码”,怎么还掺杂着“非”代码的东西呢?听后,微微一笑,这也许是因为我的目光常常游走在代码世界之外吧。

在校园的时候,梦想成为黑客和超人的混合体,狂热追求着一切最新的技术,编写代码语不惊人死不休,那时候满眼的都是代码,就像是Neo眼中的世界一样,妄想着自己可以驾驭一切,天高海阔,任我驰骋。

写代码的时候,偶尔也感到疲倦,期望着它要有一种美感,于是有了“诗意代码”的初念,希望自己写出来的代码要像诗歌一样美好,无论是自己,还是将来阅读它的人,都能产生美的感受。在我眼中,它具有生命,蕴含了我的气质,是另一个世界的我。

代码可以一直存活在计算空间中,对于世事变迁、人情冷暖,它一无所知,然则我确是芸芸众生的一员,飘来荡去,自然见异思迁,慢慢地接触到代码世界之外的精彩,随之我的身份也不再仅仅是代码的造物主。

我喜欢上了摄影,努力留住稍纵即逝的美丽,那女孩,那孩子,还有那远山和那流水,都是我的爱人,按下快门,分享给朋友。

[ Read More » ]

Understanding Android Source: RefBase, wp, sp

Android

管理对象生命周期,常常会采用引用计数技术。当有一个新的指针指向了一个对象时,这个对象的引用计数就增加1;相反,当一个指针不再指向一个对象时,这个对象的引用计数就减少1。而当对象的引用计数减少为0时,它所占用的内存就可以被安全地释放了。

上述方案可以应对大部分使用场景,但是,对于相互引用的情况,却无能为力。比如,两个对象A和B,A引用了B,同时B也引用了A。在任何时间,它们都被对方引用着,以致于无法被释放。对此,一般做法是通过强、弱引用计数予以解决。将有关联的对象划分为“父-子”和“子-父”关系。在前者中,“父”对象通过强引用计数来引用“子”对象;在后者中,“子”对象通过弱引用计数来引用“父”对象。

[ Read More » ]

How to solve QSEECOMD on AOSP

Android

为Nexus 5编译自己修改后的 AOSP 已经很长一段时间了,但一直以来,都遇到其频繁打印一段日志,不仅严重干扰了视觉,还冲掉了原本有意义的日志信息。

[ Read More » ]

How to Flash the Linux Kernel for Android Nexus 5

Android

本篇文章记录了在读完《Android系统源代码情况分析》第二章“硬件抽象层”的动手实践过程。该书讲述了从内核到框架,再到应用的整个知识链条,从它出版到现在,我一直在不断地翻阅它,获益匪浅,推荐给大家。

硬件抽象层(HAL)是连接硬件、内核、框架、应用四者的纽带,理解了它,再去学习其他模块,可以有事半功倍的效果。其中,如何为内核增加新模块,又是学习HAL的必备环节。该书是在模拟器上进行讲解,好处在于学习成本很低,无需准备硬件,弊端就是运行模拟器非常慢,耽误时间。所以,我使用Nexus 5手机进行各种实验,一来效率高,二来最大化手机的功用。

[ Read More » ]

有话请直说

我已过了而立之年,深知此前浪费了太多青春在一些毫无意义的事情上,我已经浪费不起了。所以,不要浪费我时间,有话请直说。

作为一个大男人,拥有一颗玻璃心,敏感得跟猫一样。话说直接了,嫌弃不够委婉,话说重点了,吐槽不够缓和。我没有废话,没有套话,规则就在桌面上,就事论事,你的底线我不碰,我的底线告诉你,时间太宝贵,别磨叽。

[ Read More » ]

心智的力量

make friends with time

在我的在校学习经历中,我一直是一种现象的受害者。那是一个升学竞争激烈,教育资源匮乏的环境,绝大部分同学最终无缘重点大学,这从一开学就注定了。这近似“绝望”,使得校园里弥漫着一种嫉恨的气氛。

优秀的学生具备一个共性,就是往往会在课堂上提问。而这种提问并非得到大部分同学的认可,在这些人眼中,这些问题并非自己的问题,却要占用老师这种宝贵的资源,并关键的是,搭上自己的时间,陪他一起听课。于是,每当有人提问,就有人嘀咕:这种问题也要问?或者嚷嚷:课下去问!

[ Read More » ]
←Older