摘要:
TL;DR: 我的公众号二维码 看公众号的注册日期就知道,这个号其实注册很久了,一直没开启就是因为我想通过程序自动把我的blog搬过来. 去年是因为懒得去支持https,然而经过我昨天夜里不懈的奋斗终于支持了https发现,这压根就不是https的事,我的个人账户就没有使用api的权限. so,妥协 阅读全文
摘要:
博客搬家了, 重归混沌的blog新地址:http://blog.gotocoding.com 阅读全文
摘要:
在工作中写了这样一段代码: 1 struct xx_param { 2 int index1; 3 int index2; 4 }; 5 6 //func1, func2, func3为三个函数指针 7 8 int init(a_func_t *func1, b_func_t *func2, c_func_t *func3, void *param) 9 {10 struct xx_param *p = (struct xx_param *)param;11 func1(p->index1, p->index2);12 }13 ... 阅读全文
摘要:
最近在纠结于大数据的checksum的计算,算法如下: 1 unsigned long cs_cal(const unsigned char *buff, unsigned long size) 2 { 3 unsigned long cs; 4 5 cs = 0; 6 while (size--) 7 cs += buff[size]; 8 9 return cs;10 } 当文件大于4G后这种计算的龟速就很明显了,在网上看到大牛说MMX指令对于数据计算相当不俗,于是改成下面代码(bug:不对齐部分没有处理,这部分消耗很小,对于效率影... 阅读全文
摘要:
最近在代码中用了这样一个DLL,采用静态加载方式使用,原型类似如下:XXX_API int xx_func(std::vector &xx_tbl, ..., ...);//代码中会用xx_tbl.push_back(xx);之类的代码向xx_tbl里面填充数据 但是却出现一个奇葩问题,每当调用这个DLL的程序退出时Debug版本有很大概率会崩溃在这个std::vector的析构函数上。 研究了好久才发现,当DLL中调用push_back函数时,其实std::vector的构造函数分配的内存是属于这个DLL的资源,当程序退出时会首先卸载这个DLL程序,那么与他相关的内存也随之被释放。. 阅读全文
摘要:
代码一篇,暂时没发现bug: 1 // vm_mgr.cpp : Defines the exported functions for the DLL application. 2 // 3 4 #include "stdafx.h" 5 6 #include 7 #include 8 #include 9 #include 10 #include "../common/assist.h" 11 #include"../error_no/error_no.h" 12 #include "../Log/log.h" 阅读全文
摘要:
我一向认为在写代码时,void *滥用是有问题的,在最近的一次代码中, 有类似这样一段代码:1 int send(void *buff, unsigned long size);2 3 int xx_func(char *buff, unsigned long size)4 {5 unsigned send_size;6 .........7 8 send(&buff, send_size);9 return 0;10 } 暂且不论为什么作者会错写成取地址,但其原意是想发送经过处理后的buff里面的内容, 但... 阅读全文
摘要:
美国的贝尔实验室设计了最初的C语言刻在UNIX操作系统距今已有三四十年你在屏幕前凝视数据的缱绻我却在旁轻轻敲打键盘把你的梦想展现循环 递归 贪心 动规 是谁的从前喜欢在匈牙利算法中你我牵手的画面经过MSRA门前我以大牛之名许愿思念像斐波那契数列般漫延当软工沦落在设计的文档间算法依旧是永垂不朽的诗篇我给你的爱写在程序间深藏在最长不下降子序列里面几万组数据流过后发现我的心依然不变我给你的爱写在程序间深藏在最长不下降子序列里面用无尽的代码刻下了永远那已保存千年的誓言一切又重演我算了很多遍时间复杂度还是趋于无限我只想要这样永远链接在你的身边注:不知出自何出,无法标明转载地址 阅读全文
摘要:
最近在代码中大量使用了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(... 阅读全文
摘要:
中午吃完饭照例去云风大神的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 阅读全文