
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 · 902 阅读 · 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 · 2385 阅读 · 0 评论 -
线程池需要考虑
线程池需要考虑:1. 添加工作任务2. 查询工作任务是不是完成, wait/done/cannel_if3. 结束/等/强杀 任务池2指的是 对每一个工作任务的执行如果再增强点就可以hook工作时间服务器可以用来测试每一个任务的工作统计 用户线程池主要有几个目的, 添加任务,并可以等这个处理的处理结果,定时的查询这个任务执行怎么样原创 2013-04-11 12:20:06 · 872 阅读 · 0 评论 -
实现一个circular buffer
实现一个circular buffer 要求1. 环形结构2. 宏无锁和有锁支持3. 提供宏支持针对线程安全和非线程安全4. buffer 自动扩充或阻塞能力5. 使用 read 自动返回已收大小或阻塞至完整接口能力6. 跨 windows/linux 平台7. 不依赖任何第三方库有没有参与挑战的原创 2013-04-10 17:01:22 · 1116 阅读 · 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 · 1313 阅读 · 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 · 650 阅读 · 0 评论 -
AES加密和解密——使用openssl编程
AES是一套对称密钥的密码术,目前已广泛使用,用于替代已经不够安全的DES算法。所谓对称密钥,就是说加密和解密用的是同一个密钥,消息的发送方和接收方在消息传递前需要享有这个密钥。和非对称密钥体系不同,这里的密钥是双方保密的,不会让任何第三方知道。对称密钥加密法主要基于块加密,选取固定长度的密钥,去加密明文中固定长度的块,生成的密文块与明文块长度一样。显然密钥长度十分重要,块的长度也很重要。转载 2012-07-27 07:46:22 · 1439 阅读 · 0 评论 -
linux 内核之 list.h
http://isis.poly.edu/kulesh/stuff/src/klist/原创 2012-06-13 03:51:22 · 595 阅读 · 0 评论 -
C和C++函数的相互引用----C++中extern “C”含义深层探索[转载]
C和C++函数的相互引用上次代码了碰到了这个问题,.c中调用.cpp中的函数,网上搜之,得此佳文。原文地址:http://blog.youkuaiyun.com/wfwd/archive/2006/05/30/763734.aspx==================================================================================转载 2012-06-13 02:38:02 · 1056 阅读 · 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 · 775 阅读 · 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 · 657 阅读 · 0 评论 -
擅自使用 livepolyii_jni 的框架却没有付费的形为。【livepolyii】
如果不能**的话,那我没有什么可以说的了(http://blog.youkuaiyun.com/leizuishuai201314/article/details/7387924谈了许久的客户,关键我能**,我tmd的想……)哥们儿,免费为你们也加了几次班了。也冒充过你们公司技术打电话谈合作。又不是你的公司,何必做这种事情。(直通车 http://blog.cs原创 2012-04-01 14:49:06 · 1202 阅读 · 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 · 1939 阅读 · 0 评论 -
CppUint试用总结
一、关于CppUintCppUnit是一个非常优秀的开源测试框架,主要功能就是对单元测试进行管理,并可进行自动化测试。用CppUint进行测试时,一般先以某个函数或者某个类作为测试单元,完成测试;在完成这些基本的测试后,再将引用到测试过的这些函数或者类的函数或者类,左为测试单元完成测试;继续下去,从而完成整个模块甚至是整个系统的测试,从而达到更多清除bug的目的。测试中,始终以功能代码转载 2012-03-02 16:49:50 · 1535 阅读 · 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 · 1066 阅读 · 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 · 5199 阅读 · 1 评论 -
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 · 1431 阅读 · 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 · 1827 阅读 · 0 评论 -
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 · 1852 阅读 · 0 评论 -
通用 log 日志库。
今天又试用了 log4c 至此 log4cpp log4cplus log4cxx log4c 四大家子全部试用完,没有一个尽人百分百满意的地方。log4c 有 stream appender 却没有 log4cpp 的 syslog 及 trace 日志。而 log4cpp 却在内存管理上或者我想要的 console log/logcat/ 都不满足。唉 有时间真想重写了一套 l原创 2011-12-13 16:29:10 · 1481 阅读 · 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 · 1464 阅读 · 0 评论 -
使用正则表达式解析URL
在开发http相关程序时,经常会碰到从网络链接URL中提取协议名、服务器、路径等目标对象,如果仅使用C/C++字符串操作函数,那么则显得有点麻烦且代码不易维护,其实关于文本内容的解析工作,都可优先考虑使用正则表达式库来解决处理,关于C++方面的正则库也有很多种,如atl,pcre,boost等。下面就使用boost中的regex来解析URL提取协议名、服务器、路径为目标说明其用法。 (1)转载 2011-12-07 15:36:20 · 1532 阅读 · 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 · 1178 阅读 · 0 评论 -
数据接收中粘包及半包的处理
在使用TCP协议的网络应用中,不可避免需要处理的一个问题就是半包和粘包的情况。 一种做法是在接收端设一个比较大的缓冲区,先将收到的数据包都放到缓冲区中,然后从该缓冲区中选取完整的数据包出来。该缓冲区的实现可以使用环形缓冲区进行优化,避免频繁的数据移动。使用该方法的一个描述见http://www.vckbase.com/document/viewdoc/?id=1203 (重要)转载 2011-11-28 14:37:04 · 702 阅读 · 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 · 765 阅读 · 0 评论 -
Sigslot介绍
最近在开发一个基于libjingle开源的IM系统,里面有一个其类为has_slots,搜索了一下其资料发现是一个很好用的C++库,先对其简单介绍一下。1. 简介 sigslot是一个线程安全、类型安全,用C++实现的sig/slot机制(sig/slot机制就是对象之间发送和接收消息的机制)的开源代码库。是一个非常好用的库,只有一个头文件sigslot转载 2011-11-22 14:57:22 · 508 阅读 · 0 评论 -
30分钟掌握STL [转载]
三十分钟掌握STL这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述转载 2011-11-18 09:55:13 · 479 阅读 · 0 评论 -
正则表达式30分钟入门教程
正则表达式30分钟入门教程版本:v2.32 (2011-8-17) 作者:deerchao 转载请注明来源目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录本文目标转载 2011-11-14 11:23:14 · 549 阅读 · 0 评论 -
通过希网获取公网ip
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://scalpel00.blog.51cto.com/1071749/347971 很早写的一个,通过希网获取公网ip的程序片段,今天重新写了一遍 #include #include #include string.h> #转载 2011-11-08 15:46:28 · 644 阅读 · 0 评论 -
分析国内某类游戏资源
之前做了好多分析的准备,由于是具体的游戏,所以这里省略很多图片和敏感信息,只是作为一个知识积累,学习过程,把自己的心得放在这里。这是一类游戏资源的分析方法,因为他们打包方式都比较相同,希望以后分析的时候能够更加准确。1.静态文件分析拿到游戏客户端,首现观察文件内容,除了exe,dll,等程序文件,只有cfg的配置文件,通过十六进制编辑器WinHex查看文件内容,发现xxx.转载 2011-11-04 10:56:51 · 1135 阅读 · 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 · 1080 阅读 · 0 评论 -
ZeroMQ 的模式
在需要并行化处理数据的时候,采用消息队列通讯的方式来协作,比采用共享状态的方式要好的多。Erlang ,Go 都使用这一手段来让并行任务之间协同工作。最近读完了 ZeroMQ 的 Guide。写的很不错。前几年一直有做类似的工作,但是自己总结的不好。而 ZeroMQ 把消息通讯方面的模式总结的很不错。ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的转载 2011-11-02 13:35:11 · 761 阅读 · 0 评论 -
protobuf在网络编程中的应用思考
protobuf简介protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持java、c++、python等语言环境。通过将这些类包含在项目中,转载 2011-11-02 13:34:39 · 505 阅读 · 0 评论 -
JSON-RPC、XML-RPC、SOAP三者的关系
JSON-RPC规范:http://json-rpc.org/wiki/specificationXML-RPC规范:http://www.xmlrpc.com/specSOAP规范:http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383487参考:http://weblog.masukomi.org/writing转载 2011-11-02 09:35:48 · 959 阅读 · 0 评论 -
最强的p2p流媒体开源项目合集
Icecast http://www.icecast.orgtheorahttp://www.theora.orgpeercasthttp://www.peercast.orgfreecasthttp://www.freecast.orgactlabhttp://actlab.tv/index.htmtrevbushttp://www原创 2011-10-20 20:31:48 · 3198 阅读 · 1 评论 -
使用天乐软件加密狗(JDProtect)保护您的软件,防止程序被跟踪/逆向/反编译/破解
作者:庄晓立(liigo)日期:2011-4-8原创链接:http://blog.youkuaiyun.com/liigo/archive/2011/04/08/6310677.aspx转换请注明出处:http://blog.youkuaiyun.com/liigo 天乐软件加密狗(JDProtect),貌似几年前的软件,也很久没人更新了,这个暂且不管。本文并非推荐软件,而是介绍软件用法。本人(l转载 2011-10-20 13:02:26 · 1268 阅读 · 0 评论 -
CppUnit使用指南
CppUnit使用指南CppUnit的原理在 CppUnit 中,一个或一组测试用例的测试对象被称为Fixture(设施,下文为方便理解尽量使用英文名称)。Fixture 就是被测试的目标,可能是一个对象或者一组相关的对象,甚至一个函数。 有了被测试的 fixture转载 2011-10-14 10:11:52 · 734 阅读 · 0 评论 -
android 平台下免费的 3D/2D 开源项目
1、AngleAngle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现,缺陷在于文档不足,而且下载的代码中仅仅包含有少量的示例教程。最低运行环转载 2011-10-09 17:18:40 · 712 阅读 · 0 评论 -
检测TCP非正常断开连接 SO_KEEPALIVE 使用缺陷分析
目前手头有个关于心博功能的一个案例, 在使用SOL_SOCKET, SO_KEEPALIVE上有一点心得,想写出来和大家分享一下。关于SOL_SOCKET选项SO_KEEPALIVE有一个很详细的英文How TO, 在下面的网页中大家可以看到详细的内容http://www转载 2011-09-26 10:06:24 · 836 阅读 · 0 评论 -
tcp keeplive
keepalive参数设置代码如下:// 开启KeepAliveBOOL bKeepAlive = TRUE;int nRet = ::setsockopt(socket_handle, SOL_SOCKET, SO_KEEPALIVE, (char*)&bKee原创 2011-09-26 10:00:55 · 886 阅读 · 0 评论