随笔分类 -  编程感悟

摘要:最近在代码中大量使用了callback函数,没有google到大神关于是否要更多或更少的使用callback函数的论述,可能是这个问题太白痴了吧,暂且陈述一下自己的观点。 假如,有时候我们需要在逻辑上分2层,如下图: 1 |------------------| 2 | High Level | 3 |------------------| 4 | Low Level | 5 |------------------| 6 //如果这样写 7 int low_do_a(int xx) 8 { 9 hgih_do_b(... 阅读全文
posted @ 2014-01-19 13:33 重归混沌 阅读(3881) 评论(1) 推荐(2)
摘要:中午吃完饭照例去云风大神的blog上去逛一圈,果然有新发现,如题:1 char buff[3];2 char data;3 sprintf(buff, "%02x", data); 咋一看,data最大等于0xff应该不会错,可以如果编译器默认char为signed char,而且data = -1,以十六进制看应该为0xff,这么看也没有错。 关键在于变参,在C语言的变参中,小于int长度的数据压栈时一律扩展为int型, 那么问题来了,符号型数据在进行类型扩展时是会扩展符号的,这么看其实data = -1;sprintf(buff, "%02x", d 阅读全文
posted @ 2014-01-16 21:23 重归混沌 阅读(660) 评论(2) 推荐(1)
摘要:今天是大牛走后的第一周,大牛走了,理所当然所有的代码变成我维护修改了。由于最开始写的是写一步算一步,现在0.0.1版release后发现代码结构有很多不合理,理所当然要重构。首先重构的当然是影响着整的前后台系统的socket通信。之前socket的设计是这样的: 前后台系统共用一个socket.dll,使用socket.dll来封装socket的部分。但是今天看代码时发现其实bg(后台程序)与fg(前台程序)分别加载时socket时,socket.dll分别在两个进程中都有一分部没用的数据与代码拷贝,如后台只需要服务端的相关处理部分数据与代码,前台只需要客户端的处理部分与代码,放在一个D... 阅读全文
posted @ 2013-12-31 22:08 重归混沌 阅读(420) 评论(0) 推荐(0)
摘要:首先声明一点,我是一个不相信注释的人,所以我的代码不会有很多注释,我代码的注释越多说明我实现的越蹩脚。我的大部分风格与linux kernel code style保持一致,又增加了一点自己的个人习惯。1. 所有变量函数名全为小写,单词之间用下画线隔开2. 所有宏全用大写,我把枚举变量的值也视为宏3. 将Tab键设为8个空格4. 从不设置编辑器将tab变成空格,在我看来,这简直是强奸民意,比如我自己的编辑器tab是8个空格,但是别人也许更喜欢4个空格呢?5. 所有关键字与括号之间有空格,双目运算符两边有空格6. if while for struct 大括号在与if while for str 阅读全文
posted @ 2013-12-24 21:59 重归混沌 阅读(550) 评论(0) 推荐(0)
摘要:从毕业到现在都没有写过博客了,一是没什么大的收获,二是这段时间发生了太多事,从入职到这段时间,思想经历了各种斗争。今天终于有了点值得写的东西,就暂时放下思想斗争记录一下新发现吧。 以前写代码时从来只知道有状态机,但是从来没有用过,这段时间因为代码开的线程太多了,程序吃不消,经高人指点才发现其实可以用状态机来用一个任务来模拟多个相似任务。下面就来分析一下状态机实现多任务的原理。 一个完整的代码是由数据和代码组成,由同一个函数创建的多个线程在线程切换时仅仅是切换其中的数据共用其中代码。 可以实现这样一个纯代码函数,这个纯代码函数只根据参数的内容来执行与代码上下文无关,在模拟切换线程时仅切... 阅读全文
posted @ 2013-12-11 21:11 重归混沌 阅读(2397) 评论(0) 推荐(2)
摘要:1.编程好习惯之变量定义: 定义变量时总是按变量类型所占空间大小来排序是最好的! 如果是只有某个函数使用些变量,而且你又需要在函数让函数退出时不被销毁,那么就使用static吧2.编程好习惯之函数定义: 如果我们定义的C函数仅在此C文件中被调用那么加上static吧(适用于多文件编程) 如果我们想躲避C函数参数的类型检查,那 么K&R的函数定义声明方式还是很不错的!3.编程好习惯之变量类型使用 如果我们考虑可移植性的化,就最好不要去乱用int变量,因为int在不同的平台和编译器上是变化的!4.编程好习惯之编码 有时间在不明显减少代码的可读性时,可以考虑将一些语句合并,使编译器充分使.. 阅读全文
posted @ 2012-04-03 17:38 重归混沌 阅读(468) 评论(0) 推荐(0)
摘要:转自http://hi.baidu.com/419836321/blog/item/6f158d22797008469258070b.html realloc 用过很多次了。无非就是将已经存在的一块内存扩大。 char* p = malloc(1024);char* q = realloc(p,2048); 现在的问题是我们应该如何处理指针 p。 刚开始按照我最直观的理解,如果就是直接将 p = NULL;。 到最后只需要释放 q的空间就可以了。 因为最近在做个封装。结果在做单元测试的时候发现。有时候我在 free(q); 的时候会出错。这样我就郁闷了。 后来仔细一跟踪,发现 realloc 阅读全文
posted @ 2011-03-14 17:54 重归混沌 阅读(203) 评论(0) 推荐(0)
摘要:鉴于经常看到很多傻傻的问题,比如xx语言干什么用的,xxx语言是不是落伍了?(不过说实在的,这些问题初学者都会有.) 我在这里说说开发人员应该知道的一些东西。但是这些只是我在平日里看到和想到的。难免有所偏差,请见谅.软件开发,是一个综合性的活计。软件开发,并不仅仅是编写代码.学会了用c这些编程语言进行编程只是第一步,一个最最基本要求。其他要的东西还多着呢。在我看来,程序员大致可以分为两类.当一个工作任务分配到程序员身上时,一种程序员知道为什么要这样去做.另外一种则知道怎么去做完这个工作. 而这个区别就大了.如果你知道为什么要这样去实现,这个至少说明你能把握住你的任务在软件工程里面的位置.... 阅读全文
posted @ 2011-03-10 11:45 重归混沌 阅读(151) 评论(0) 推荐(0)