
C/C++
blade2001
这个作者很懒,什么都没留下…
展开
-
sprintf,你知道多少?
sprintf,你知道多少? 选自《优快云 社区电子杂志——C/C++杂志》http://emag.youkuaiyun.com 2005 年1 月 总第1 期 - 93 -本文作者:steedhorse(晨星)printf 可能是许多程序员在开始学习C 语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf 了解转载 2007-05-14 13:27:00 · 2121 阅读 · 0 评论 -
STL heap用法
STL中并没有把heap作为一种容器组件,heap的实现亦需要更低一层的容器组件(诸如list,array,vector)作为其底层机制。Heap是一个类属算法,包含在algorithm头文件中。虽然STL中关于heap默认调整成的是大顶堆,但却可以让用户利用自定义的compare_fuction函数实现大顶堆或小顶堆。heap的低层机制vector本身就是一个类模板,heap基于vector便实转载 2011-10-24 16:37:09 · 5344 阅读 · 0 评论 -
STL 常见的注意问题
先说说STL的容器一些常见的注意问题:有网友说,为什么用了STL,程序的效率反而下降了呢?是的,如果用不好,你编程是方便了,可是效率下降了.1: Vector,这个是基于线性数组的容器 注意事项: 在声明一个vector的时候,尽量指明大小,如果输入数据不超过10^6,那就声明一个10^6大小的vector,否则,vector的默认大小是10.(太小了),但是vector的大小可以自动扩大转载 2011-10-24 16:41:43 · 1082 阅读 · 0 评论 -
一个高效的定时器分析及设计
一个高效的定时器分析及设计: http://www.cnblogs.com/vacuum/archive/2010/03/09/1681191.html游戏中定时器的设计: http://www.cnblogs.com/skynet/archive/2011/07/03/2096741.html高效的Timer实现: http://www.cppblog.com/d转载 2011-10-24 16:58:45 · 1628 阅读 · 0 评论 -
Linux下c实现协程-Coroutine
Widnows 是提供了用户级线程的,类似 coroutine 需要用户主动是切换。这在单线程程序中非常有用。线程调度模块只负责提供堆栈,环境的保存。不负责分配时间片等。自己实现 coroutine 并不难,但能用操作系统提供的可以得到更多的便利。Windows 中把这种用户级线程叫做 Fiber,纤维的意思。比较通用的译名是纤程。我们可以把一个 thread 转换成一个原创 2011-10-25 16:44:27 · 10506 阅读 · 0 评论 -
Source Insight配置和使用技巧大全
1、背景色选择 要改变背景色Options->preference->windows background->color设置背景色2、解决字符等宽对齐问题。 SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行 llllllllll MMMMMMMMMM转载 2012-01-06 17:12:38 · 911 阅读 · 0 评论 -
linux下编译jrtplib、jthreadlib
1.在官方网站下载最新的jrtplib、jthreadlib和cmake源码 我使用的是当前最新的版本:jrtplib-3.9.1、jthreadlib-1.3.1、cmake-2.8.8(http://cmake.org/cmake/resources/software.html) http://research.edm.uhasselt.be/~jori/page转载 2013-02-20 18:56:18 · 870 阅读 · 0 评论 -
Google Protocol Buffers 就是我想要的
最近有个项目涉及到php/j2me/python, 研究了下Google Protocol Buffers, 发现它的特性(语言无关,向后兼容性)就是我想要的, 就是它了。Google Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关原创 2011-05-26 10:03:00 · 2406 阅读 · 1 评论 -
协程 or 纤程 ?
协程 or 纤程 ?使用协程模型和异步模型的目的都一样,就是在需要等待的时候把CPU让给别的事务,相较于异步,协程的优势在于它将不同事务隔离开,并让程序员可以不用自己管理大量的异步状态,这让程序设计更容易,但这优势只有在异步方式设计中需要涉及到很多不同事务的不同状态时才会显现出来。引入协程、线程、进程,其实是引入多个顺序执行的过程,以协程为例,等待的处理就变成了协程库内部实现的了,在需转载 2013-08-30 18:07:00 · 14924 阅读 · 2 评论 -
无法捕获的C++异常
今天遇到一个奇怪的现象, 同一个程序在一台机器上运行能捕获代码抛出的c++异常, 在另外一台机器上无法捕获异常直接abort出来,堆栈如下:#0 0xf77c6430 in __kernel_vsyscall ()#1 0x002b6df0 in raise () from /lib/libc.so.6#2 0x002b8701 in abort () f原创 2013-11-22 17:43:57 · 3698 阅读 · 0 评论 -
关于使用libcurl的注意事项
1. libcurl与CLOSE_WAIT转载自:http://blog.sunshow.net/2010/03/libcurl-and-close-wait/调用libcurl下载,然后使用netstat查看发现有大量的TCP连接保持在CLOSE_WAIT状态查看libcurl的文档说明,有这样一个选项:CURLOPT_FORBID_REUSEPass a转载 2014-02-26 14:39:53 · 14034 阅读 · 0 评论 -
VS2010进行远程调试方法总结
假设现在有A、B两台PC机。VS2010安装在A机器上,也就是说A机器是开发使用的机器。B机器是程序运行部署使用的机器,其IP为:192.168.1.129(局域网IP)说明:如果B机器是外网IP下面方法照样适合,不过在使用的适合可能会出现无法附加到进程的错误。如果出现无法附加到进程的错误、无法连接到设备.请按照步骤13进行设置。 1、根据vs2010安装目录倒找Remot转载 2016-02-04 15:44:07 · 818 阅读 · 0 评论 -
为什么,何时使用ActiveMQ
http://jfires.iteye.com/blog/11878871.2使用ActiveMQ:为什么,何时 时间回到2003年,一群开源开发者集合在一起形成了Apache Geronimo。之后,他们发现当前没有好用的使用BSD-style许可协议的消息代理器。Geronimo是由于java EE兼容性需要一个JMS实现。所以一些开发者开始讨论其可能性。拥有转载 2016-02-04 15:50:23 · 3951 阅读 · 0 评论 -
windbg 常用命令详解
一、1、 !address eax查看对应内存页的属性 2、 vertarget显示当前进程的大致信息3 !peb显示process Environment Block 4、 lmvm可以查看任意一个dll的详细信息例如:我们查看cyusb.sys的信息5.re转载 2016-04-19 18:03:46 · 1689 阅读 · 0 评论 -
强大的多线程内存分配器jemalloc
<br />目前使用的malloc() 库,调用的是 Poul-Henning Kamp 的 phkmalloc,这一实现已经有了近十年历史。这一实现设计于内存稀缺的时代,在内存分配优先级的考虑上与现在不同,而且当时多线程仍是一个学术问题。尽管如此,它仍然是相当流行的 malloc()实现,并广泛应用于所有的BSD中,甚至某些Linux发行版也使用了。<br />由于在多处理器系统中运行多线程应用时,它的缺乏效率,一个新的userland内存分配器被创建出来,并被它的创建者Jason Evans命名为jem原创 2011-03-25 16:32:00 · 6821 阅读 · 1 评论 -
Linux下清空键盘缓冲区的一种好方法!
以前也了解到其他的清空键盘缓冲区的方法,如:用getchar();fflush(stdin);rewind(stdin)等, 在linux都不起作用, 后来发现有个setbuf(stdin, NULL);直接就能清空键盘缓冲区.原创 2009-02-13 13:34:00 · 2327 阅读 · 0 评论 -
SGI上的一个 map 的程序例子
Map has the important property that inserting a new element into a map does not invalidate iterators that point to existing elements. Erasing an element from a map also does not invalidate any iterat转载 2008-01-24 19:54:00 · 671 阅读 · 0 评论 -
C++中得到基本数据类型的取值范围
欲知道某个类别的最大值和最小值, 可查询标准程序库中 numeric_limit class.#includeint max_int = numeric_limit::max();double min_dbl = numeric_limit::min();转载 2008-01-24 19:55:00 · 1064 阅读 · 0 评论 -
动态连接库的建立与调用(基础)
1、Non-MFC DLL的建立 每一个DLL必须有一个入口点,就象用C编写的应用程序时,必须有一个WINMAIN函数一样。在Non-MFC DLL中DllMain是一个缺省的入口函数,你不需要编写自己的DLL入口函数,用这个缺省的入口函数就能使动态链接库被调用时得到正确的初始化。如果应用程序的DLL需要分配额外的内存或资源,或者说需要对每个进程或线程初始化和清除操作时,需要在相应的DLL工程转载 2008-01-24 19:59:00 · 845 阅读 · 0 评论 -
使用STL容器构成一棵树
就算你对数据结构再了解, 高效率地写出一棵树结构, 估计也是不容易的, 但是自从使用了STL以后, 这一切都像搭积木一样简单,而且有着很高的稳定性.下面我使用vector容器为基础来构成一棵树.例如我们要生成以下结构的树.32 2 2 21111 1111 1111 1111这是课四叉数, 而且下层比上层的值小1.来看代码://使用STL构成一棵树#include //vector容器#转载 2008-01-24 20:02:00 · 2161 阅读 · 1 评论 -
一条检测内存泄露的函数.
_CrtDumpMemoryLeaksDumps all of the memory blocks in the debug heap when a memory leak has occurred (debug version only).int _CrtDumpMemoryLeaks( void );Routine Required Header Compatibility _CrtDumpM转载 2008-01-24 20:06:00 · 720 阅读 · 0 评论 -
链接错误LNK2001的可能几种原因
VC++的链接错误LNK2001学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:转载 2008-01-24 20:30:00 · 1173 阅读 · 0 评论 -
全局变量一定要加 extern
尽管你已经使用了 #ifndef _A#define _Aclass A{public: void Print(char* text);};int i;#endif但还是出现这样的错误!!!!Linking...print1.obj : error LNK2005: "int i" (?i@@3HA) already defined in main.objprint1.obj : error L转载 2008-01-24 20:33:00 · 2183 阅读 · 0 评论 -
Function Object & Function Object Adapters
标准的程序库中,事先定义了一组 function object, function object 实现了本来可以以独立函数加以定义的事物, 这样做主要是为了效率, 因为他将call变成了inline.原来的函数是:bool less_than(int v1, int v2){ return v1}vector::iterator i = sort(v.begin(), v.end(), le转载 2008-01-24 20:40:00 · 708 阅读 · 0 评论 -
C++优化战略和技巧
外国人总结的C++的优化战略,很值得一看。http://www.tantalon.com/pete/cppopt/main.htm转载 2008-01-24 20:42:00 · 970 阅读 · 0 评论 -
STL 总结收藏
原文地址:http://blog.youkuaiyun.com/Image_Graphics/archive/2007/08/21/1753340.aspxSTL(Standard Template Library)是C++标准庫的一部分(80%),是用C++ Template机制来表达泛型的庫。STL,成功的将算法与数据结构分离,在没有效率损失的前提下,得到了及大的弹性。六大组件 容器(Cont转载 2009-01-20 13:04:00 · 1042 阅读 · 0 评论 -
STL中的常用的vector,map,set,Sort用法收藏
转帖:http://41620935.blog.163.com/blog/static/498206420082185032531/C++的标准模板库(Standard Template Library,简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。 . 一. vector 1.声明:转载 2009-01-20 13:06:00 · 3806 阅读 · 0 评论 -
STL中的排序算法一览
http://www.skywind.name/blog/?p=122 STL中有多种排序算法,各有各的适用范围,下面听我一一道来:I、完全排序sort()首先要隆重推出的当然是最最常用的sort了,sort有两种形式,第一种形式有两个迭代器参数,构成一个前开后闭的区间,按照元素的 less 关系排序;第二种形式多加一个指定排序准则的谓词。sort基本是最通用的排序函数,转载 2009-01-20 13:10:00 · 1020 阅读 · 0 评论 -
C++ STL 算法另类使用方法
很多时候我们希望在一个 vector ,或者 list ,或者什么其他东西里面,找到一个值在哪个位置,这个时候 find 帮不上忙,而有人就转而求助手写循环了,而且是原始的手写循环: for ( int i = 0; i if ( vect[i] == value ) break; 如果编译器把 i 看作 for scope 的一部分,你还要把 i 的声转载 2009-01-20 13:11:00 · 916 阅读 · 0 评论 -
MSDN关于I/O完成端口
http://blog.sina.com.cn/s/blog_47642c6e0102w1se.html刚翻译一篇MSDN的文章,关于完成端口,也许其他人已经翻译过了,不过我自己再翻译一遍,希望摸得更准一点。========================================================I/O Completion Ports转载 2016-05-16 21:20:41 · 1600 阅读 · 0 评论