分类 程序语言 下的文章

C++ 虚函数表及调用规范

很久没写博客了,最近实验室项目赶进度,有点忙不过来,先把之前的坑填上。

在支付工具想做社交,即时通讯工具想做app市场,英语字典想做新闻社交的今天,创造这些怪象的公司要求程序员懂得更多几乎是理所当然的,毕竟现在大家什么都想做。这不,正值招聘季,实验室的几位学长也是一直在讨论各种问题,发现对于C++而言,问的最多的还是虚函数表和STL。

STL的考点至少是实用的,哪怕要求你读过源码,也并不过分,毕竟知根知底才能更好地应用。但要求程序员掌握对象模型着实拎不清,因为这几乎用不到,远没有在设计模式上投入时间实在,或许它们最希望的是拿批发价招语言专家。。。

阅读剩余部分

动态链接库 for D

本文是动态链接库的第二版,前一版本只适用于Linux,但是这一版本添加了windows相关内容。

本文的内容是我在实现c2db的时候总结出来的。c2db是一个简单的ORM(实现中),它提供了一个接口层,下面有针对各种数据库独立实现的Driver,使用的时候我们只需要动态加载(而不是编译)就行了。针对这种需求,目前我们已经能够提供基本的跨平台实现,这里的平台主要是指posix和windows。

本文不再声称支持C/C++,因为个别原因,我们不得不使用core.runtime中已经跨平台的接口,因此细节部分不再是由我们来实现了。

阅读剩余部分

D语言的协程——Fiber

假期里,我草草地啃了一遍《D程序设计语言》这本书,基本掌握了D的语法,期间也发现了一点问题,这里就当是废话简单提及一下。

首先是这本书,它绝对是本入门的好书,但总感觉比较啰嗦,可能是由于没有再版,有部分内容是有问题的,比如NVI,或许这也从侧面说明了D语法变动过于频繁。其次,关于标准库的介绍不足,并且对于GC语法也没有介绍,尤其是nogc,根本没有提及,或许作者就是希望我们用GC吧。

相比于C++的语法,D的语法中有更多的语法糖,尤其是数组部分,操作符重载部分。Actor并发模型的加入,也使并发编程变得更加令人心旷神怡,似乎有种Erlang的感觉。我个人认为D是一门“更像Java的C++”语言。

阅读剩余部分

XML类型定义之DTD

这几天在重写Luit(一个java web框架)的配置解析部分,和servlet一样,luit支持且仅支持XML配置文件。为什么选择XML,而不是JSON,甚至是自己定义一种格式?理由如下:

  1. 我懒
  2. 大家都用xml
  3. xml的伸缩性满足要求

在正常情况下,我会按照如下方式解析配置:

  • 格式检查 -> 元素合法性检查 -> 解析DOM -> 必要值的提取

阅读剩余部分