技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

随笔分类 -  C Language

1 2 3 下一页

模拟DLL加载
摘要:#include #include #include typedef int (*PFUNC)(int,int);typedef struct{ int Position; int Length;}Fun;typedef struct{ int num; Fun *pFun;... 阅读全文

posted @ 2015-06-26 17:45 codestyle 阅读(464) 评论(0) 推荐(0) 编辑

select 模型
摘要:http://www.cnblogs.com/Anker/p/3258674.htmlhttp://www.cnblogs.com/cozy/articles/2088128.htmlhttp://blog.csdn.net/ctthuangcheng/article/details/9330235http://blog.csdn.net/u010670794/article/details/17202871http://blog.csdn.net/justaipanda/article/details/7913109http://blog.csdn.net/jinan1861/article 阅读全文

posted @ 2014-04-01 17:53 codestyle 阅读(209) 评论(0) 推荐(0) 编辑

ubuntu下使用C语言开发一个cgi程序
摘要:主要步骤是:1. 开发一个C程序(在标准输出中输出HTML字符串)2. 复制到apache2的cgi-bin目录去3. 在httpd.conf中开启cgi功能(我似乎没用到,也可以使用cgi)ubuntu上apache的cgi-bin目录上 是/usr/lib/cgi-bingcc -o hello hello.ccp hello /usr/lib/cgi-binhello.c#include int main() { printf("Content-type:text/html\n\n"); printf("\n"); printf("wel 阅读全文

posted @ 2014-02-24 19:53 codestyle 阅读(584) 评论(0) 推荐(0) 编辑

使用c语言编写cgi程序
摘要:http://blog.chinaunix.net/uid-22566367-id-3109877.html简单的说,cgi是沟通HTML表单和服务器端程序的接口,是可以被其他语言所应用的一个规范集。必要条件,安装apache。首先建立C程序,这里就不多介绍。参照前面的文章或者其它的参考书籍。建立文件hello.c,内容如下:#include int main(){printf("Content-type:text/html\n\n");printf("");printf("welcome to c cgi.");printf(&qu 阅读全文

posted @ 2014-02-21 21:17 codestyle 阅读(1621) 评论(0) 推荐(0) 编辑

用链表解决if语句过多的问题(C/C++实现)
摘要:起因http://www.cnblogs.com/code-style/p/3499408.html设计模式的解决方案(基于python语言)http://www.cnblogs.com/code-style/p/3501713.htmlhttp://www.cnblogs.com/code-style/p/3502105.html用设计模式实现完以后我突然发现,所谓的设计模式其实在C语言里不就是链表吗?当前节点能处理就处理不能处理让下一个节点处理,不多说,上代码消息类的设计message.h#ifndef MESSAGE_H#define MESSAGE_H#define TRUE 1#de 阅读全文

posted @ 2014-02-07 14:38 codestyle 阅读(1831) 评论(5) 推荐(1) 编辑

一篇旧文章,结合汇编探索this指针
摘要://VC6.0下成功编译#include class X{public: void foo(int b,int c){ this->a=b*c; cout 左 4)被调函数进行栈清理*///BCB6.0 下成功编译#include class X{public: void foo(int b,int c){ a = b*c; cout<<"a="<<a<<endl; } int a;};int main(){ X x; //04 void (X::*pXfoo)(int,int);... 阅读全文

posted @ 2014-01-17 18:19 codestyle 阅读(447) 评论(0) 推荐(0) 编辑

重构oceanbase的一个函数
摘要:我去,今天读了一下ob的源码,感觉有点乱啊!!!好吧,当作练手,我重构了一个函数void* ObMySQLCallback::decode(easy_message_t* m) { uint32_t pkt_len = 0; uint8_t pkt_seq = 0; uint8_t pkt_type = 0; ObMySQLCommandPacket* packet = NULL; char* buffer = NULL; int32_t len = 0; if (NULL == m) { TB... 阅读全文

posted @ 2014-01-14 17:01 codestyle 阅读(577) 评论(0) 推荐(0) 编辑

编写优美的GTest测试案例
摘要:http://www.cnblogs.com/coderzh/archive/2010/01/09/beautiful-testcase.html使用gtest也有很长一段时间了,这期间也积累了一些经验,所以分享一下。GTest为我们提供了便捷的测试框架,让我们只需要关注案例本身。如何在GTest框架下写出优美的测试案例,我觉得必须要做到:案例的层次结构一定要清晰案例的检查点一定要明确案例失败时一定要能精确的定位问题案例执行结果一定要稳定案例执行的时间一定不能太长案例一定不能对测试环境造成破坏案例一定独立,不能与其他案例有先后关系的依赖案例的命名一定清晰,容易理解案例的可维护性也是非常重要,如 阅读全文

posted @ 2014-01-07 14:15 codestyle 阅读(1816) 评论(0) 推荐(0) 编辑

C语言:Message类
摘要:message.h#ifndef MESSAGE_H#define MESSAGE_H#define TRUE 1#define FALSE 0typedef struct { int sender; int isSend; int isCharge; char date[8];}Message;Message * makeMessage(const int sender, const char *date);void setSendFlag(Message * const message);void setChargeFlag(Message * const mess... 阅读全文

posted @ 2014-01-06 16:27 codestyle 阅读(1970) 评论(0) 推荐(0) 编辑

状态机的c语言编程
摘要:http://blog.csdn.net/shandongdaya/article/details/7282547一 有限状态机的实现方式有限状态机(Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具,很多东西的模型实际上就是有限状态机。FSM的实现方式:1) switch/case或者if/else这无意是最直观的方式,使用一堆条件判断,会编程的人都可以做到,对简单小巧的状态机来说最合适,但是毫无疑问,这样的方式比较原始,对庞大的状态机难以维护。2) 状态表维护一个二维状态表,横坐标表示当前状态,纵坐标表示输入,表中一个元素存储 阅读全文

posted @ 2014-01-06 13:32 codestyle 阅读(4254) 评论(0) 推荐(0) 编辑

编写你的第一个垃圾收集器
摘要:http://blog.jobbole.com/53376/每当我倍感压力以及有很多事情要做的时候,我总是有这样一种反常的反应,那就是希望做一些其他的事情来摆脱这种状况。通常情况下,这些事情都是些我能够编写并实现的独立的小程序。一天早上,我几乎要被一堆事情给整疯了——我得看一本书、处理一些工作上的事情、还要准备一场Strange Loop的演讲,然后这时我突然想到:“我该写一个垃圾收集器了”。是的,我知道那一刻让我看上去有多疯狂。不过我的神经故障却是你实现一段基础的程序语言设计的免费教程!在100行左右毫无新意的c代码中,我设法实现一个基本的标记和扫描模块。垃圾收集被认为是有更多编程牛人出没的 阅读全文

posted @ 2013-12-20 15:45 codestyle 阅读(277) 评论(0) 推荐(0) 编辑

伯克利DB的一个BUG
摘要:一旦没有手工close掉伯克利DB,则缓存里的数据不会主动写入到文件中,因此非常难于排查这个BUG,记录在这里提醒自己 阅读全文

posted @ 2013-12-18 13:06 codestyle 阅读(234) 评论(0) 推荐(0) 编辑

CCAN:C语言的模块仓库
摘要:实践中一门编程语言是否有用、好不好,不仅体现在语言本身,更在语言的生态系统:用的人多不多、社区是否活跃互帮互助、语言的相关库和框架质量如何,还有就是已有的模块的质量与数量。CPAN(Comprehensive Perl Archive Network)就是Perl语言的killer app,1万多位作者编写的12万6千多个模块,让你几乎完成任何任务都能有所凭借,无需从0开始。更早的类似项目还有TeX的CTAN。在CPAN的启发下,PHP语言有PECL和PEAR,Python有PyPI,Ruby有RubyGems,R有CRAN,Node.js有npm,Lua有LuaRocks,Haskell有H 阅读全文

posted @ 2013-10-28 11:06 codestyle 阅读(1420) 评论(0) 推荐(1) 编辑

把zlog封装成模块,隐藏zlog
摘要:mylog.h#ifndef _MY_LOG_H#define _MY_LOG_Hint init(char *filename);void *get_category(char * cateory_name);void info(void *category, char *message);void debug(void *category, char *message);void fini();#endifmylog.c#include "zlog.h"#include "mylog.h"int init(char *filename){ retur 阅读全文

posted @ 2013-10-25 10:45 codestyle 阅读(677) 评论(0) 推荐(0) 编辑

zlog小试(C语言日志工具)
摘要:test.c#include #include "zlog.h"int main(int argc, char** argv){ int rc; zlog_category_t *c; rc = zlog_init("test_hello.conf"); if (rc) { printf("init failed\n"); return -1; } c = zlog_get_category("my_cat"); if (!c) { printf("get cat fail\n"); zlog. 阅读全文

posted @ 2013-10-24 14:41 codestyle 阅读(1133) 评论(0) 推荐(0) 编辑

zlog使用手册,小靠谱啊
摘要:http://hardysimpson.github.io/zlog/UsersGuide-CN.htmlChapter 1 zlog是什么?zlog是一个高可靠性、高性能、线程安全、灵活、概念清晰的纯C日志函数库。事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。所以我写了zlog。zlog在效率、功能、安全性上大大超过了log4c,并且是用c写成的,具有比较好的通用性。z 阅读全文

posted @ 2013-10-24 12:07 codestyle 阅读(6183) 评论(1) 推荐(0) 编辑

gtest以及测试小结
摘要:所有的测试,都是让未知的东西和已知的东西进行比较,如果测试结果和预期的一样,那么就认为被测对象是OK的否则视为有问题。python的单元测试是写一堆继承了unittest.TestCase类,每个类里都会定义一个runTest函数,实际上这个函数是覆盖了基类的函数,脚本执行时调用unittest.main函数,unittest.main函数就会查找哪些类集成了TestCase并执行runTest函数那么到了gtest里也是类似的,不过因为gtest是C/C++的单元测试框架,而C/C++里能执行的都是可执行文件,所以需要把这些测试代码打进程序,然后用main函数来调用这些测试代码,但是我们是看 阅读全文

posted @ 2013-10-18 16:54 codestyle 阅读(1443) 评论(0) 推荐(0) 编辑

再转一篇gtest1.6安装
摘要:http://www.cppblog.com/izualzhy/archive/2012/07/31/185772.htmlgoogletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows、linux、Mac等OS平台上。下面,我来说明如何使用最新的1.6版本gtest写自己的单元测试。源码的获取地址:http://code.google.com/p/googletest/downloads/list注意1.6这个版本不再提供make install,直接看README吧。那么怎么编译呢?先进入gtest目录(解压gtest.zip包过程就不说了),执行以下两行命令: 阅读全文

posted @ 2013-10-17 17:45 codestyle 阅读(503) 评论(0) 推荐(0) 编辑

如何在项目中使用gtest1.6
摘要:问题gtest1.6版本的README里说该版本不支持make install,其意思就是说你没法通过make命令把gtest安装到/usr/local/lib之类的目录,所以你也没办法通过下面的命令来编译测试程序,那么该怎么使用gtest呢?g++ -lgtest -L /usr/local/lib -I gtest.h test.c方案假定已经把源码解压到当前用户的主目录下并且已经成功编译了,在gtest解压目录里有一个make目录(~/gtest-1.6.0/make),里面有一个Makefile文件,这个make脚本会使用同级别的sample目录下(~/gtest-1.6.0/samp 阅读全文

posted @ 2013-10-17 17:05 codestyle 阅读(737) 评论(0) 推荐(0) 编辑

auto_ptr解析
摘要:auto_ptr解析By SmartPtr(http://www.cppblog.com/SmartPtr/)auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个小小的auto_ptr所蕴含的价值与理念。 auto_ptr的出现,主要是为了解决“被异. 阅读全文

posted @ 2013-10-10 14:42 codestyle 阅读(196) 评论(0) 推荐(0) 编辑

1 2 3 下一页
点击右上角即可分享
微信分享提示