c/c++
maikforever
码工,曾就值搜狐,360,acer 等公司
展开
-
[转]likely,unlikely宏与GCC内建函数__builtin_expect() + 原创
[转]likely,unlikely宏与GCC内建函数__builtin_expect()[转贴]likely,unlikely宏与GCC内建函数__builtin_expect() 先罗嗦几句最近在读linux 2.6 内核,虽然以前已经看了很多相关的知识,>也看了2,3遍,但读2.6内核仍然感到很吃力。面对2.6如此庞大的内核,信心真的不是很足,而且好像也没有很好的、有帮助的论转载 2013-12-09 18:40:59 · 868 阅读 · 0 评论 -
linux queue 用法
Tail queue 使用例子:test1.c#include #include "queue.h"#define REPEAT 500#define NOBJECTS 1000000// 在程序中如果我们想使用queue.h中提供的东西来// 简便地将自己的数据存储在队列中,就要定义如下的结构体:// 结构体中前面几项是自己的数据,最后一项是 TAILQ_ENTRY(..原创 2012-01-12 17:27:31 · 5157 阅读 · 1 评论 -
MinGW,MSYS,cygwin 区别
MinGW:是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。MinGW,即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。MSYS:Minimal GNU(PO转载 2011-12-14 11:14:13 · 1727 阅读 · 0 评论 -
stdint.h
//// Created by mvp@mvplayer.net//#ifndef STDINT_H#define STDINT_H#include /* 7.18.1.1 Exact-width integer types */typedef signed char int8_t;typedef unsigned char uint8_t;typedef short原创 2011-12-14 19:23:43 · 1395 阅读 · 0 评论 -
cygwin 编译 win32 程序 同时不依赖 cygwin1.dll
./configure --target-os=mingw32 --enable-memalign-hack --enable-static --disable-shared --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwintks by vk原创 2011-12-14 11:49:17 · 1783 阅读 · 0 评论 -
通用 log 日志库。
今天又试用了 log4c 至此 log4cpp log4cplus log4cxx log4c 四大家子全部试用完,没有一个尽人百分百满意的地方。log4c 有 stream appender 却没有 log4cpp 的 syslog 及 trace 日志。而 log4cpp 却在内存管理上或者我想要的 console log/logcat/ 都不满足。唉 有时间真想重写了一套 l原创 2011-12-13 16:29:10 · 1451 阅读 · 3 评论 -
glib库-Linux平台下最常用的C语言函数库
glib库是Linux平台下最常用的C语言函数库,它具有很好的可移植性和实用性。glib是Gtk +库和Gnome的基础。glib可以在多个平台下使用,比如Linux、Unix、Windows等。glib为许多标准的、常用的C语言结构提供了相应的替代物。使用glib库的程序都应该包含glib的头文件glib.h。########################### glib基转载 2011-12-08 14:27:17 · 1415 阅读 · 0 评论 -
使用正则表达式解析URL
在开发http相关程序时,经常会碰到从网络链接URL中提取协议名、服务器、路径等目标对象,如果仅使用C/C++字符串操作函数,那么则显得有点麻烦且代码不易维护,其实关于文本内容的解析工作,都可优先考虑使用正则表达式库来解决处理,关于C++方面的正则库也有很多种,如atl,pcre,boost等。下面就使用boost中的regex来解析URL提取协议名、服务器、路径为目标说明其用法。 (1)转载 2011-12-07 15:36:20 · 1486 阅读 · 0 评论 -
delete a NULL pointer is safe
C programmer often writes codes in the following fashion: if(p){ free(p); p = NULL;} But in C++ scenario, the check of NULL is useless! C++ guarantees that op转载 2011-12-01 13:42:10 · 1159 阅读 · 0 评论 -
通过希网获取公网ip
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://scalpel00.blog.51cto.com/1071749/347971 很早写的一个,通过希网获取公网ip的程序片段,今天重新写了一遍 #include #include #include string.h> #转载 2011-11-08 15:46:28 · 621 阅读 · 0 评论 -
数据接收中粘包及半包的处理
在使用TCP协议的网络应用中,不可避免需要处理的一个问题就是半包和粘包的情况。 一种做法是在接收端设一个比较大的缓冲区,先将收到的数据包都放到缓冲区中,然后从该缓冲区中选取完整的数据包出来。该缓冲区的实现可以使用环形缓冲区进行优化,避免频繁的数据移动。使用该方法的一个描述见http://www.vckbase.com/document/viewdoc/?id=1203 (重要)转载 2011-11-28 14:37:04 · 674 阅读 · 0 评论 -
分析国内某类游戏资源
之前做了好多分析的准备,由于是具体的游戏,所以这里省略很多图片和敏感信息,只是作为一个知识积累,学习过程,把自己的心得放在这里。这是一类游戏资源的分析方法,因为他们打包方式都比较相同,希望以后分析的时候能够更加准确。1.静态文件分析拿到游戏客户端,首现观察文件内容,除了exe,dll,等程序文件,只有cfg的配置文件,通过十六进制编辑器WinHex查看文件内容,发现xxx.转载 2011-11-04 10:56:51 · 1076 阅读 · 0 评论 -
用Live555 中的openRTSP 保存H264文件
用Live555 中的openRTSP 保存H264文件很简单但是发现器保存的h264文件并不能直接被vcl 播放 同一个rtsp源 用vcl保存的h264文件就可以直接被播放 经过研究 发现是 openRTSP没有把SDP 中已经包括的SPS &PPS数据保存到文件中 将 vcl保存的h264文件的前2个00 00 00 01 数据 也就是转载 2011-11-03 15:55:26 · 1064 阅读 · 0 评论 -
SUSE11下编译Subversion客户端
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeremiah.blog.51cto.com/539865/347284 工作需要在SLES11下面编译svn的客户端,支持svn://,http://,https://。编译的有点小郁闷,最终还是通过了。过程记录在此。 1. apr-1.4.2转载 2012-02-10 17:38:43 · 1046 阅读 · 0 评论 -
CppUint试用总结
一、关于CppUintCppUnit是一个非常优秀的开源测试框架,主要功能就是对单元测试进行管理,并可进行自动化测试。用CppUint进行测试时,一般先以某个函数或者某个类作为测试单元,完成测试;在完成这些基本的测试后,再将引用到测试过的这些函数或者类的函数或者类,左为测试单元完成测试;继续下去,从而完成整个模块甚至是整个系统的测试,从而达到更多清除bug的目的。测试中,始终以功能代码转载 2012-03-02 16:49:50 · 1445 阅读 · 0 评论 -
c语言小代码——对齐
c语言小代码——对齐一、对齐用于对齐:向上对齐和向下对齐:#define ROUND_UP(x, align) (((int) (x) + (align - 1)) & ~(align - 1))#define ROUND_DOWN(x, align) ((int)(x) & ~(align - 1))用于检查是否已经对齐:#define ALIGNED转载 2013-09-05 15:39:34 · 2305 阅读 · 0 评论 -
线程池需要考虑
线程池需要考虑:1. 添加工作任务2. 查询工作任务是不是完成, wait/done/cannel_if3. 结束/等/强杀 任务池2指的是 对每一个工作任务的执行如果再增强点就可以hook工作时间服务器可以用来测试每一个任务的工作统计 用户线程池主要有几个目的, 添加任务,并可以等这个处理的处理结果,定时的查询这个任务执行怎么样原创 2013-04-11 12:20:06 · 848 阅读 · 0 评论 -
实现一个circular buffer
实现一个circular buffer 要求1. 环形结构2. 宏无锁和有锁支持3. 提供宏支持针对线程安全和非线程安全4. buffer 自动扩充或阻塞能力5. 使用 read 自动返回已收大小或阻塞至完整接口能力6. 跨 windows/linux 平台7. 不依赖任何第三方库有没有参与挑战的原创 2013-04-10 17:01:22 · 1085 阅读 · 0 评论 -
stdbool.h
/*stdbool.h -- Boolean type and values(substitute for missing C99 standard header) public-domain implementation from [EMAIL PROTECTED] implements subclause 7.16 of ISO/IEC 9899:1999 (E)*/转载 2013-03-15 17:04:30 · 1261 阅读 · 0 评论 -
擅自使用 livepolyii_jni 的框架却没有付费的形为。【livepolyii】
如果不能**的话,那我没有什么可以说的了(http://blog.csdn.net/leizuishuai201314/article/details/7387924谈了许久的客户,关键我能**,我tmd的想……)哥们儿,免费为你们也加了几次班了。也冒充过你们公司技术打电话谈合作。又不是你的公司,何必做这种事情。(直通车 http://blog.cs原创 2012-04-01 14:49:06 · 1177 阅读 · 0 评论 -
一句话 makefile
事实证明网上的 makfile 都不简单,费话不多说上代码。#!/bin/shTARGET = segmenter.exeCC = gccINCLUDE = -I../includeLIB = -L ../lib -lavformat -lavcodec -lavutil -lws2_32CFLAGS = -O2 -WallSOURCE = \ segmenter.c all原创 2012-09-03 05:50:29 · 628 阅读 · 0 评论 -
AES加密和解密——使用openssl编程
AES是一套对称密钥的密码术,目前已广泛使用,用于替代已经不够安全的DES算法。所谓对称密钥,就是说加密和解密用的是同一个密钥,消息的发送方和接收方在消息传递前需要享有这个密钥。和非对称密钥体系不同,这里的密钥是双方保密的,不会让任何第三方知道。对称密钥加密法主要基于块加密,选取固定长度的密钥,去加密明文中固定长度的块,生成的密文块与明文块长度一样。显然密钥长度十分重要,块的长度也很重要。转载 2012-07-27 07:46:22 · 1411 阅读 · 0 评论 -
linux 内核之 list.h
http://isis.poly.edu/kulesh/stuff/src/klist/原创 2012-06-13 03:51:22 · 573 阅读 · 0 评论 -
C和C++函数的相互引用----C++中extern “C”含义深层探索[转载]
C和C++函数的相互引用上次代码了碰到了这个问题,.c中调用.cpp中的函数,网上搜之,得此佳文。原文地址:http://blog.csdn.net/wfwd/archive/2006/05/30/763734.aspx==================================================================================转载 2012-06-13 02:38:02 · 1030 阅读 · 0 评论 -
autoconf/automake 使用笔记
1. 目录结构./src./src/CommonLib (静态库)./src/media (静态库,依赖CommonLib)./src/DashParser (可执行程序, 依赖CommonLib和media) 2. 为CommonLib创建Makefile文件(1) cd ./src/CommonLib (2) 执行autoscan,产生co转载 2012-05-10 17:57:50 · 747 阅读 · 0 评论 -
queue(3)--freebsd中的queue结构使用
前几天看代码,发现有类似这样的结构: [c-sharp] view plaincopyTAILQ_FOREACH(np, &head, entries){ printf("%d %d/n", np->a1, np->a2); } 我没太多代码编写经验,初读的时候能模糊知道和for_each转载 2012-05-05 03:38:33 · 632 阅读 · 0 评论 -
跨平台C++ 对称加密解密函数
void Encrypt(unsigned char* pdata,int len,unsigned long key0,unsigned long key1){ union sDWORD { unsigned long ldata; unsigned char b[4]; }; union sWORD { short a; struct { unsigned转载 2011-05-20 17:38:00 · 2257 阅读 · 0 评论 -
C++ Regex 邮箱校验
[cpp] view plaincopy#include #include #include bool is_email_valid(const std::string& email) { // define a regular expression const std::tr1::regex patte转载 2012-03-24 23:54:07 · 1586 阅读 · 0 评论 -
剖析为什么在多核多线程程序中要慎用volatile关键字?
这篇文章详细剖析了为什么在多核时代进行多线程编程时需要慎用volatile关键字。主要内容有:1. C/C++中的volatile关键字2. Visual Studio对C/C++中volatile关键字的扩展3. Java/.NET中的volatile关键字4. Memory Model(内存模型)5. Volatile使用建议1. C/C++中的volati转载 2011-11-24 11:11:16 · 715 阅读 · 0 评论 -
ZeroMQ 的模式
在需要并行化处理数据的时候,采用消息队列通讯的方式来协作,比采用共享状态的方式要好的多。Erlang ,Go 都使用这一手段来让并行任务之间协同工作。最近读完了 ZeroMQ 的 Guide。写的很不错。前几年一直有做类似的工作,但是自己总结的不好。而 ZeroMQ 把消息通讯方面的模式总结的很不错。ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的转载 2011-11-02 13:35:11 · 736 阅读 · 0 评论 -
VC内存泄漏检测工具_Visual Leak Detector
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问 题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对转载 2011-08-09 10:17:24 · 651 阅读 · 0 评论 -
util 收集。。。。以后追加在此处
2011年6月9日 星期四 15:25:16BOOLIsMulticastIP ( IN DWORD dwIP // network order ) ;BOOLIsUnicastIP ( IN DWORD dwIP // network order ) ;static unsigned char chMinClassD原创 2011-06-09 15:24:00 · 403 阅读 · 0 评论 -
套接字select模型
Select模型原理利用select函数,判断套接字上是否存在数据,或者能否向一个套接字写入数据。目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据,被迫进入阻塞状态。 select参数和返回值意义如下:int sel转载 2011-09-04 00:58:35 · 1118 阅读 · 0 评论 -
C语言中的类模拟和多态,继承
#ifndef C_Class#define C_Class struct#endif////////////////////////////////////////////////////////////////////////////数据定义///////转载 2011-09-04 00:56:22 · 543 阅读 · 0 评论 -
套接口属性设置和获取实例
/******************************************程序名称:socketopt.cpp 程序功能:该程序演示了getsockopt()函数和setsockopt()函数用法 changshoumeng */#inc转载 2011-09-04 01:02:19 · 739 阅读 · 0 评论 -
五种程序设计方法
1. 结构化程序设计为了提高程序的可读性、可重用性等,逐渐出现了将程序开发中经常用到的相同的功能,比如数学函数运算、字符串操作等,独立出来编写成函数,然后按照相互关系或应用领域汇集在相同的文件里,这些文件构成了函数库。函数库是一种对信息的封装转载 2011-09-04 00:59:28 · 12598 阅读 · 0 评论 -
[介绍] SymbolSort, 帮你避免或减少代码膨胀 (Code Bloat)
代码膨胀?这在以前其实并不是我会记在心上的问题,最近由于发现某个工程生成的 DLL debug 版本居然达到 25M 之大,我就开始想怎么判断这是不是正常,如果不正常有办法解决吗?或者能否在以后多加注意避免这种问题呢?在 google 大神的帮助之下,我找到一些不错的文章转载 2011-09-01 20:17:26 · 596 阅读 · 0 评论 -
linux 进程间通信之消息传递
linux 进程间通信中消息传递主要分为管道,FIFO,消息队列(1)管道管道由pipe函数创建,提供一个单路(单向)数据流。pipe函数返回两个文件描述符:fd[0]和fd[1]。前者打开来读,后者打开来写。管道没有名字,所以只能由有亲缘关系的进程使用。尽管管道是由单个进程创建转载 2011-07-15 20:30:43 · 675 阅读 · 0 评论 -
据说是来自chrome的代码里的一个模板
template typename T, size_t N> char (&ArraySizeHelper(T (&array)[N]))[N]; #define arraysize(array) (sizeof(ArraySizeHelper(array))) 然后使用这个ar转载 2011-07-15 20:27:49 · 667 阅读 · 2 评论 -
TinyXml快速入门(一)
作者:朱金灿来源:http://blog.csdn.net/clever101 对于xml文件,目前我的工作只是集中在配置文件和作为简单的信息文件来用,因此我不太喜欢使用msxml这种重量级的xml解析器,特别是使用msxml解析xml涉及到复杂的com类型转换,更是令转载 2011-07-14 09:06:49 · 524 阅读 · 0 评论