随笔分类 -  C++

coroutine协程
摘要:如果你接触过lua这种小巧的脚本语言,你就会经常接触到一个叫做协程的神奇概念。大多数脚本语言都有对协程不同程度的支持。但是大多编译语言,如C/C++,根本就不知道这样的东西存在。当然也很多人研究如何在编译语言实现协程的实现,轮子一个又一个的被发明。酷壳这篇文章《一个“蝇量级” C 语言协程库》说... 阅读全文

posted @ 2014-08-22 10:48 buf1024 阅读(1835) 评论(0) 推荐(1) 编辑

设置进程的名称
摘要:设置进程的名称http://luoguochun.cn/2014/07/04/set-proccess-title/如何开搞 我们平时ps进程时,显示的进程标题是我们输入的程序名以及一些参数。这种显示方式并非非常直观,我们需要一种方式可以设置程序的标题,一眼就知道该进程时什么鸟。如redis或ng... 阅读全文

posted @ 2014-07-04 11:21 buf1024 阅读(1556) 评论(2) 推荐(0) 编辑

浮动数与0比较
摘要:无限大小 C语言如何表示无限大小,NAN?redis里面这么搞的:staticdoubleR_Zero,R_PosInf,R_NegInf,R_Nan;/*Doubleconstantsinitialization*/R_Zero=0.0;R_PosInf=1.0/R_Zero;R_NegInf=... 阅读全文

posted @ 2014-06-30 11:06 buf1024 阅读(606) 评论(3) 推荐(0) 编辑

服务器模式
摘要:服务器开发貌似有固定的模式,性能和复杂度各异,现总结下常见的模式。当然服务器的开发并没有固定的模式,除了以下总结的外,实际根据业务的不同,生产中还用过其他模式。阻塞式服务器主要特点:一个连接上来,等服务完毕后,才释放连接,在服务过程中,不能接收其他连接。一般而言此类服务的socket一般是阻塞的... 阅读全文

posted @ 2014-06-25 21:43 buf1024 阅读(465) 评论(0) 推荐(0) 编辑

c构造函数
摘要:构造函数 任何一们面向对象语言里都会涉及构造函数这一概念,只是实现的方式各有差异。需要这main函数之前执行一段代码是非常容易的事情,只需要声明一对象的全局变量,在构造函数可以为所欲为干你想干的事情。然而,对于面向过程的语言比如C,需要实现全局的构造函数就比较奇葩。当然gcc会有很优雅的解决方式,... 阅读全文

posted @ 2014-06-25 17:33 buf1024 阅读(1213) 评论(0) 推荐(0) 编辑

memcpy造成其他变量值改变
摘要:以前C/C++遇到过很多很多的问题,有时候费了很久很久时间,很大很大的努力才解决。但是都没有记录下来,现在想想以前的遇到的问题,只知道这样的事情发生过,至于是什么问题,一点印象都没有了。所以遇到奇怪的问题,还是记录下来靠谱点。 背景: 使用OTL访问ORACLE数据库,在POWER CPU 64位LINUX上面程序看起来运行没有什么异常情况。移植到X86构架的CP... 阅读全文

posted @ 2014-04-09 10:52 buf1024 阅读(1055) 评论(0) 推荐(0) 编辑

pkg-config 简述
摘要:pkg-config主要的作用是提供编译和连接到软件库的信息的。 如,典型的用法: [heidong@HEIDONGVM bin]$ pkg-config --cflags --libs libevent -I/usr/local/include -L/usr/local/lib -levent 将显示包含头文件和连接的信息。 那么pk... 阅读全文

posted @ 2013-05-29 22:37 buf1024 阅读(488) 评论(0) 推荐(0) 编辑

Windows Shell Extension
摘要:分享1,2年前自己还在搞WINDOWS开发时写的一个小工具(当时在公司无聊的时候写了很多小工具啊,只不过拿不出源代码,杯具),个人觉得挺实用的。当时这个东西叫做Filekeeper,目标就是监控程序对核心API的调用。后来搞得不伦不类。这个是从中提出的一部分源代码搞成一个实用的工具,改名为LGCUtil了,不过很多东西没改。 运行结果如下: 目前只加两个命令,不过增加其它命令是非常容易的。连我这么多年不接触WINDOWS了,还是可以轻松加进去的。 源代码下载:LGCUtil.Src 二进制文件下载:LGCUtil.Bin 注意,下载二进制文件时,里面有两个批处理文件,修改里面的路径为你实际文. 阅读全文

posted @ 2012-06-24 00:30 buf1024 阅读(5876) 评论(3) 推荐(1) 编辑

基于libevent进程池服务器
摘要:本程序仅是为了学习libevent而写的,但可以当作是简单的程序框架扩展为实际的应用。程序本身没有经过广泛的功能测试和压力测试,仅作简单的功能测试,如果在实际应用中产生任何问题与作者无关,也不提供任何技术支持。但欢迎讨论相关技术问题。 本程序设计思路很简单,一个控制进程,M个业务进程(M可以配置),其中一个业务进程又负责N个TCP连接(N可以配置,因为是在同一个进程内,又没有用于线程,所以从本质来说,还是属于同步传输数据的)。控制进程负责监听连接,当接收到一个TCP连接的时候,按照一定的规则分发到空闲的业务进程中。每个业务进程就负责处理各个分配到的连接,接收到数据后又分发到业务模块,业务模块. 阅读全文

posted @ 2012-06-23 11:27 buf1024 阅读(2574) 评论(10) 推荐(1) 编辑

sys/queue.h
摘要:概述 sys/queue.h是LINUX/UNIX系统下面的一个标准头文件,用一系列的数据结构定义了一队列。包括singly-lined list, list, simple queue(Singly-linked Tail queue), tail queue, circle queue五种。 引用此头文件对这五种数据结构的描述: A singly-link... 阅读全文

posted @ 2012-05-02 21:55 buf1024 阅读(4124) 评论(1) 推荐(0) 编辑

libevent 概述(一)
摘要:概述 声明,本文章东搬西扯抄来过的,并非原创,写给自己参考的。 关于libevent的描述,有两个百科的连接可以参考: libevent百度百科 libevent维基百科 在维基百科时,有几个有用的连接可以参考: libevent 2.0参考书籍(英文) 还有另一个竞争力的事件库: libev(另一个有竞争力的事件库) libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。libevent支持用户使用三种类型的事件,分别是网络IO、定时器、信号三种。Libevent提供了DNS,HTTP 阅读全文

posted @ 2012-03-21 00:17 buf1024 阅读(914) 评论(0) 推荐(1) 编辑

迷你日志类Minilog
摘要:这个也发表在我另一个BLOG:http://imlgc.com/?p=51,这个是发在博客园的。 简介 日志,在一般系统里是非常非常重要的,它不仅跟踪到程序的执行,同时也是对系统进行各方面分析的基础。其重要性在这里不再一一说明,有兴趣可自行GOOGLE之。 日志的实现可以很复杂,功能强大的如java的log4j和移值到C++的log4cpp。当然也可以很简单,... 阅读全文

posted @ 2012-02-18 01:00 buf1024 阅读(1351) 评论(2) 推荐(0) 编辑

MyJson, JSON C++ 的另一种实现
摘要:原文发表在我的另一个BLOG里:http://imlgc.com/?p=30 简介 JSON,JavaScript Object Notation, 是一种轻量级的数据交换格式。本质上来说,它和XML, YAML等格式化的数据格式没有什么区别。都是为了方便(人机)阅读和交换的数据格式。 JSON,是键值的数据结构,键是主要是指字符串,键主要是指字符串,数值,J... 阅读全文

posted @ 2012-02-10 22:04 buf1024 阅读(2130) 评论(0) 推荐(0) 编辑

Very Very Simple C++ Testing Framework
摘要:原文发表在我的另一个BLOG:Very Very Simple C++ Testing Framework 简介 测试驱动开发(TDD)是敏捷开发的一种方法,TDD的一个重要的工具就是单元测试(Unit Test)。如果想详细了解什么是TDD和单元测试请GOOGLE之。简单来和简略地说TDD是在测试驱动下的开发,先写完成测试然后努力使测试通过。单元测试大体包括下面所说的断言,测... 阅读全文

posted @ 2012-02-09 20:59 buf1024 阅读(732) 评论(0) 推荐(0) 编辑

Gtest Summary
摘要:GTEST 是简单而且又非常实用的测试框架。下面关于GTEST的一些简单总结。1. 编译 在GNU系统下: g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc ar -rv libgtest.a gtest-all.o 在WINDOWS下: GTEST在MSVC下面提供了相应的工程文件,直接用VS编译即可。2. 简单用法 在GNU系统下,直接包含GTEST的头文件,连接到GTEST库。 g++ -I${GTEST_DIR}/include path/to/your_test.cc lib... 阅读全文

posted @ 2011-12-05 12:00 buf1024 阅读(477) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示