摘要:我是擅(倾)长(向)把一篇文章写成杂文的。毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位;风格偏杂文一点,也是没人拒稿的。这么说来,arxiv 就好比是 paper 世界的博客,整了篇论文,管他三七二十一,放到 arxiv 上自嗨一番(如果不是自鸣得意的话)再说…… 话说在
阅读全文
摘要:今天时候不早了,最后介绍一个,通过哈希表(参考今天写的另一篇文章《工具箱之哈希表》)所构建的原子类型。这种类型,我第一次听说,是在云风老大的博客《关于 getter 和 setter》上,这是好早之前的故事了。然而由于以前自己很不努力,也一直没有真正动手做些东西,拖延到今天,才算正式开始实践。唉!少壮不努力,今晚徒伤悲啊!目前来讲,但行好事,莫问前程吧。貌似跑题了。 =_= 这种类型的使用如下。基本实现同云风老大的博客一样,就不罗嗦了。如果用 GCC 编译器编译,并开启 -Werror 选项(将警告当作错误处理),那么任何给原子类型直接赋值 const char * 型字符串的企图,都会导致编
阅读全文
摘要:简单分享一个小型的测试模型。说是「简单分享」,其实是过于简陋,都不太好意思拿出手。尤其是对于熟悉某个单元测试框架(譬如 Python 的 pyUnit 框架)的同学,这个模型过于粗糙,而且目前来讲,只具备很初级的功能,不能和诸如 CMockery 这样的框架相提并论。尽管如此,今天看到张沈鹏同学写的《金山卫士开源》一文,意识到了一些我从前并没有意识到的问题,譬如社区文化等等,也看到了一些成熟的社区里,堪称楷模式的人物,譬如 Zoom.Quiet 等等。鉴于此,不管多么幼稚,粗糙,用心分享自己的体验就好了。毕竟,谁不是从幼稚的阶段,逐步成长起来的呢?言归正传。两个宏定义,assertTrue(e
阅读全文
摘要:工具箱之哈希表。这个肯定会很常用了。这里主要说一下,对于哈希表的设计理念,以及具体的接口设计与实现。由于经验不丰富,这里肯定存在某些问题,因此,我只是站在现阶段自身的水平和需求上做考虑、实现,大家批判着看了。哈希表,核心在于生成、以及检索算法。这部分内容可以折腾得很复杂。哈希表又俗称「散列表」,即,将散列排布的对象,映射在有限的空间上,以达到存储空间和检索时间的折衷。很多前辈们也研究过,什么样的哈希算法,可以尽量好地完成上述「折衷」。我这里就不弄那么深入了,毕竟现阶段而言,我对性能的要求并不高。哈希生成的接口如下。之所以是 hash_str 的前缀,是因为哈希的键值都是字符串。各个参数,基本都
阅读全文
摘要:昨晚看到的博客,Peteris Krumins 谈到了个人工具箱的重要性。比较有启发。既然目前的个人知识储备以及实践经验,还比较不成系统,那就一点点开始,慢慢来好了。第一篇,就以昨天看到的这篇 Bit Hacks 起始。原理部分不多做解释,如果熟悉二进制补码形式的数位表示方法,就可以轻松理解。如下是我写的头文件(省略了头部注释),与上述链接中的实现有些不同,下文将会详细阐述。我这里的实现方式,同原文作者的实现方式不太一样。主要是两点。所有宏都没有「副作用」。原文作者的某些宏定义,对宏参数本身做了修改;而这里的每一个宏,只是一个纯粹的求值表达式,没有赋值过程。对于 B_ISOLATE_1(x)
阅读全文