2015 十月 | 重归混沌的BLOG

Silly多端口监听支持

前两天在编写一个新服务器程序时才意识到,多台不同类型的服务器相互通信,服务器仅监听一个端口号是非常不方便的,比如服务器集群中的ctrl_server需要接受多种不同的服务器建立链接,让所有链接去涌入同一个端口显然是不明智的,这时候就需要监听多个不同的端口。 让我纠结了两天的问题是到底该以怎么样的方式增加多端口支持。 首先先到的是,去掉配置文件中port的支持,增加一个listen API让lua逻辑自己去指定监听哪几个端口号,但是有一个明显的问题,多个worker现在启动时加载同……

使用多态来做到open-close

自从看了设计模式了解到open-close原则后, 我在写代码时都是尽量遵循着open-close原则来进行编码。 而面向对象中的多态在做到open-close原则中起到不可忽略的作用。 一般在设计之初会先抽象出一个interface(也就是C++中的纯虚类), 这个interface中的函数接口一定是要仔细考量的,因为这关系到所有子类的实现。 然后根据具体情况去继承并实现interface,当我们新增功能时,仅仅重新继承一下interface生成一个新的类即可, 在一般情况下并不需要动到之前运行良好的类。当然不论你inte……

bitfield数据类型的坑

bitfield并不具有可移植性,因此实际使用中,我都是尽量使用bitand来代替。 然而代码中之前就已经使用了bitfield的定义方式,作为后续开发我没有理由去改掉这个数据结构(除非它有问题),结果就无意间踩到了这个坑。 bitfield定义和使用大概如下: union utest { int val; struct stest { int a:3; int b:5; }; }; union utest t; t.value = 0x07; bitfield冒号后面的数字标识bitfield的位宽,bitfield前面的类型用于标……