- 博客(16)
- 收藏
- 关注
原创 语言之争和语言的选择及其他
总有很多人去比较各种开发语言,或者偏好某一种语言,总想在开发语言中分个三六九等出来,似乎用C++的就一定比用vb的高端,用汇编的就一定是大牛。其实语言只是工具,每种语言都有它自己的设计思想,过分的比较语言的优劣是没意义的。
2010-07-30 10:42:00 1132
原创 由uuid_to_string函数想到的C语言函数返回字符串问题
下午让同事写一个函数,返回字符串形式的uuid给lua脚本,他的实现如下:static int new_uuid(lua_State* L){ char *uuidstr; uuid_t uuid; uint32_t status = 0; uuid_create(&uuid, &status); uuid_
2009-11-18 20:47:00 4643
原创 C/C++ 的全局变量初始化与不初始化的区别
在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下:编译器在编译的时候针对这两种情况会产生两种符号放在目标文件的符号表中,对于初始化的,叫强符号,未初始化的,叫弱符号。连接器在连接目标文件的时候,如果遇到两个重名符号,会有以
2009-09-09 21:04:00 1815
原创 strchr 函数的问题
Standard C Library 里面的strchr函数的声明是: char * strchr(const char *s, int c); 光看这个声明就会觉得有问题,接收的参数是const char*, 返回的是非const的,也就是说: const char* str = ...char* ptr = strchr(str, c); 假
2009-08-03 14:46:00 2101 4
原创 POSIX 异步IO介绍
POSIX.1b定义了一系列新的IO操作,能较大地减少应用程序的IO等待时间。这些新函数允许应用程序发起一个或多个IO操作请求后立即返回做其他事情不必等到IO完成,IO操作可以跟应用程序并行执行。AIO控制块 struct aiocb 描述:int aio_fildes 需要操作的文件描述符,所关联的文件必须能支持seek操作。像pipe、socket等设备不能使用aio。off_t
2009-03-04 20:44:00 2570 1
原创 信号处理函数经常忽略的一个问题
理论上来说,信号处理函数里面调用“可重入”函数是安全的,比如下面的代码:void io_handler(int signo){ chdir("/hommmm"); // /hommmm 目录不存在}int main(){ signal(SIGIO, io_handler); int ret = rmdir("/home
2009-03-04 14:20:00 642
原创 设计模式之工厂方法模式
前段时间封装了两个socket类,一个clsServer一个clsConnection,希望能以回调的形式处理网络数据,用户只管读、写数据而不用关心socket fd什么时候可读什么时候可写,大概这个样子: //clsConnection//当数据可读时,自动把数据读到data中,调用clsConnection的OnRead函数clsConnection::OnRead( const
2009-03-04 12:08:00 520
原创 设计模式之观察者模式
在游戏中,玩家登录的时候通常需要做很多事情,比如更新帮派在线列表,更新好友在线列表,游戏中还不时有些节日活动,这些活动可能也需要登录时做一些检查,所以登录函数通常会是这个样子:void TUser::Login(){ //帮派登录检查 Org.LoginCheck(this); //好友系统登录检查 Friends.LoginC
2009-02-19 17:00:00 1207
原创 设计模式之策略模式
今天一个同事遇到一个类的继承问题,问我怎么处理,用C++描述的话,问题差不多是这个样子(我很久不写C++了:D)class A{ public: virtual void f(){...}; virtual void g(){...}; virtual void h(){...};
2009-02-18 21:11:00 1403 2
原创 Makefile中头文件依赖的自动生成
gcc有参数可以把源文件的依赖关系全部导出来,比如: -bash:~$gcc -MM main.c 输出:main.o: main.c main.h 使用 -MM参数是只导出自定义头文件,-M则会把系统头文件也导出来。以下是一个自动生成头文件依赖的Makefile: 1 PYINC = /usr/local/include/python2.5/ 2 PYLIB = /usr/loc
2008-06-20 17:39:00 6556 4
原创 常用数据结构:链表、红黑树和SPLAY树
FreeBSD自带有这几种数据结构的实现,非常简洁通用。man queue和man tree分别可以看到说明,在sys/queue.h里面实现了单向链表、有尾指针的单向链表、双向链表、有尾指针的双向链表。在sys/tree.h里面实现了红黑树和SPLAY树。不用FreeBSD的可以在这里看到这两个文件的源码: http://fxr.watson.org/fxr/source/sys/tree.h
2008-06-20 17:15:00 3835 1
翻译 C++编码规范指南
原文见:http://www.codeproject.com/KB/cpp/cppstyle.aspx目录前言命名规范Tab键空格,大括号和圆括号防止重复包含类设计正确使用常量函数返回值杂项面向对象技巧前言为了编写能被其他开发人员理解的代码,你应该遵守一定的编码规范而不是使用你自己发明的独特风格。包括命名规范(就是你如何给你的变量和函数命名),代
2008-06-10 20:00:00 1053
原创 posix多线程程序使用条件变量的一个常见bug
因为类似的问题至少碰到3次以上,虽然很简单但是每次都花了不少时间来定位,所以决定写个demo来演示一下:)程序逻辑比较简单,主线程读入一个整数,分别有两个线程对这个整数求1~n的累加和。代码如下: #include iostream>#include pthread.h>#include string>#include unistd.h>using namespace std;in
2008-05-26 18:26:00 2777 5
原创 lua的C接口
用lua快一年了,因为引擎部分比较少改动,所以一直没用过它的C接口,都是在写脚本。年前看书时写了一个小的demo做学习用,好像当时遇到些困难,但是没有记录下来,几乎都忘了。这里贴点源码出来做备忘吧:)lua的语法还是比较简单,其官网(www.lua.org)上有电子文档(www.lua.org/pil/),看一看就会了。不过学会一门语言的语法跟用好一门语言还是两回事,好在它的源码也不多,多看看源码
2008-03-10 22:04:00 3465 1
原创 程序员面试
因工作需要前段时间大概面试了10人次左右的开发人员,主要是 Unix下C/C++程序员。说一下面试的一些经历和心得,有些确实是我之前没有预料到的。我并没有什么面试经验,四年前毕业时面试过一次,此后没再被面试过也一直没有机会去招聘。所以当我第一次面试别人的时候还是有点紧张的,很担心自己能不能在几十分钟的时间里面判断出一个人是否合适。首先应该说面试的时候应聘者是处于劣势的,先不说自己是来找工作的,
2008-03-08 02:20:00 2121 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人