
c++
zhangwu416826
http://www.cnblogs.com/weidagang2046/archive/2012/03/01/massive-user-ranking.html
展开
-
《C++沉思录》第5章 代理类——(整理)
《C++沉思录》第5章 代理类——(整理)转自:http://hi.baidu.com/cndx100/blog/item/e009cd46e3a9650f6a63e5e4.html2008-10-12 22:32 将继承和容器共用.迫使我们要处理两个问题: 控制内存分配和把不同类型的对象放入同一个容器中. 我们提出一个名叫代理类的类. 这个类的每个对象都代表另一个对象转载 2012-04-06 10:38:17 · 520 阅读 · 0 评论 -
epoll使用详解
Linux I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。Linux 2.6内核中有提高网络I/O性能的新方法,即epoll 。1、为什么select落后 首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在我用的2.6.15-25-386内核中,该转载 2012-08-02 12:09:59 · 955 阅读 · 0 评论 -
国外程序员推荐:每个程序员都应读的书【按这个提升自己】
转自http://blog.jobbole.com/5886/【更新】:近日(2012年8月17日)重看 StackOverflow 的原讨论帖,发现于今年年初被关闭了。不过有人做了汇总,把其他回复中提到的书籍,放在投票数最高的回复中。新更新添加 59 本书,详情可见文章后半部分。编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响转载 2012-08-20 11:47:24 · 3873 阅读 · 0 评论 -
Linux下的文件被删除后恢复
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的。恢复步骤一、用运SecureCRT远程对操作系统上,查看一下当前系统版本号,及文件转载 2012-08-28 17:34:08 · 5131 阅读 · 0 评论 -
Flash Socket通信的安全策略
昨天做测试的时候遇到一个问题,做好的SWF在Flash AS3中调试通过,但是发布到html中之后就无法得到数据了。查了一些资料之后找到了解决办法。这里感谢 剑心 提供帮助,以及同事若水三千提供Java代码及日志记录。1、问题描述 将flash发布为html格式后,加载页面后,swf无法与服务器进行socket通信。Flash端显示的错误为:securityError转载 2012-09-25 20:26:21 · 6626 阅读 · 0 评论 -
2012/09/25记录今天开发的几个问题
1:在boost socket中,如果一个socket意外关闭,那么执行m_socket.remote_endpoint().address().to_string().c_str()打印远程socket地址,就会发生不可捕获的错误。今天在以下代码void connection_t::read_completed_i(const boost::system::error_code& err原创 2012-09-25 22:13:36 · 1495 阅读 · 0 评论 -
libevent 源码分析:evbuffer缓冲
可以说对于任何网络库(模块)而言,一个缓冲模块都是必不可少的。缓冲模块主要用于缓冲从网络接收到的数据,以及用户提交的数据(用于发送)。很多时候,我们还需要将网络模块层(非TCP层)的这些缓冲数据拷贝到用户层,而这些内存拷贝都会消耗时间。 在这里,我简要分析下libevent的相关代码(event.h和buffer.c)。结构 关于libevent的缓冲模块,转载 2012-11-07 15:03:43 · 1455 阅读 · 0 评论 -
Reactor和Proactor模式
原文地址:http://xmuzyq.javaeye.com/blog/783218=====================================================在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。转载 2013-01-06 15:01:44 · 567 阅读 · 0 评论 -
std::pair, std::copy, std::lower_bound, std::back_insert使用
std::pair首先给出std::pair的class定义:template struct pair{ typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair() : first(T1()), second(T2()) {} pair(const T1& x, cons原创 2013-01-23 11:24:44 · 1842 阅读 · 0 评论 -
线程局部变量与 __thread
给几篇参考文档,日后研究1)http://www.searchtb.com/2012/09/tls.html2) 线程局部变量的使用与多线程开发: http://developer.51cto.com/art/200909/153297.htm3) 再谈线程局部变量 : http://zsxxsz.iteye.com/blog/5489034) http://gcc转载 2013-01-07 10:33:23 · 982 阅读 · 0 评论 -
C++11 tuple & 可变模板参数
最近在学习陈硕先生的muduo网络库时看到一些很不错的东西,博文地址:http://blog.youkuaiyun.com/solstice/article/details/5829421#comments其中涉及到c++ 11新特性,然后想系统的学习一下。网上找了一个资料,现给一个地址:http://www.cnblogs.com/hujian/tag/C%2B%2B%2011/。现转载它其转载 2013-01-10 11:52:35 · 2126 阅读 · 0 评论 -
cmake使用c++0x
因为想用template aliases特性,必须要GCC4.7.又不想编译源代码,所以按照下面的方法安装。[plain] view plaincopyprint?sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt转载 2013-01-14 16:00:19 · 2630 阅读 · 0 评论 -
设计模式之工厂模式
年底了,目前呆完美一点屁事也没有,决定用这最后的几天对设计模式做一次系统的学习。本博客系列参考《大话设计模式》一书,然后对书中各知识点做一些总结以备日后拾遗。电子版大家可以到网上下载!开篇之前,首先来学习一下类图画法及类之类关系!类图分三层:第一层显示类的名称,如果是抽象类,就用斜体显示,如果是接口,则类前面有一个>表示。第二层类的属性字段。第三层类的方法,前面的'原创 2013-02-04 19:53:45 · 543 阅读 · 0 评论 -
深入C++的new
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:clas转载 2013-02-04 17:08:38 · 602 阅读 · 0 评论 -
google c++ style
背景Google的开源项目大多使用C++开发。每一个C++程序员也都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug、难于阅读和维护。本指南的目的是通过详细阐述在C++编码时要怎样写、不要怎样写来规避其复杂性。这些规则可在允许代码有效使用C++语言特性的同时使其易于管理。风格,也被视为可读性,主要指称管理C转载 2013-07-09 10:32:29 · 868 阅读 · 0 评论 -
基于游戏消息数据的二进制序列化实现
在游戏开发过程中,经常会涉及到前后端数据的交互。以二进制数据流进行通信是一种常用的方式。然而由于游戏通信的数据复杂多样,结构也相对不一,往往会造成数据的序列化繁琐。现在介绍一种相对简单的方式。首先描述一下内存结构:|-------------------------------------------|--------------------------------------------原创 2013-07-04 11:21:10 · 1089 阅读 · 0 评论 -
boost及libmemcache安装基于suse机器
最近要发版本到tx suse机器,首先在安装boost和libmemcache的时候遇到很多问题,主要是boost在完全编译的时候会报出来很多的错误,而且不能够产生静态lib文件。现在此做一记录:1.libmemcached安装./configure --enable-static --with-memcached --prefix=/opt/libmemcached/ --disable原创 2012-10-09 14:20:11 · 2273 阅读 · 0 评论 -
敏感词过滤算法实现
前面曾经发过一篇关于类似的实现,现在做一总结。转载地址http://hellohank.iteye.com/blog/1327903说到敏感词过滤,我也觉得这里没有必要写这个文章,因为前人已经前前后后有过很多种算法解决该问题。这里我之所以写这个文章,是因为我自己自创了一种算法(真的是自创哦,因为我在写这个算法的时候,完全是自己想出来的方式,没有借鉴任何代码!灵感来自于一篇文章中的一转载 2012-08-16 11:31:11 · 6137 阅读 · 0 评论 -
关于指针比较(涉及的是对象同一性的问题)
这个问题我是在《C++必知必会》条款28里面看到的。C++指针比较的不是地址,而是对象同一性问题。即指针地址可以不同,而比较的结果却相同,因为它们指向的是同一个对象。我们可以先看看在类的继承关系中,这种情况表现的形式。先上代码:#include using namespace std;class a{ private: int m_a;};clas原创 2012-07-26 18:00:55 · 668 阅读 · 0 评论 -
内存池
地址:http://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html 内部构造内存池类MemoryPool的声明如下:class MemoryPool{private: MemoryBlock* pBlock; USHORT nUnitSize;转载 2012-05-28 11:17:12 · 598 阅读 · 0 评论 -
typeid详解
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。dynamic_c转载 2012-06-04 16:19:29 · 727 阅读 · 0 评论 -
TRIE树
Trie,又称字典树、单词查找树,是一种树形结构,用于保存大量的字符串。它的优点是:利用字符串的公共前缀来节约存储空间。相对来说,Trie树是一种比较简单的数据结构.理解起来比较简单,正所谓简单的东西也得付出代价.故Trie树也有它的缺点,Trie树的内存消耗非常大.当然,或许用左儿子右兄弟的方法建树的话,可能会好点.其基本性质可以归纳为:1. 根节点不包含字符,除根节点外每一个节点都转载 2012-06-08 09:58:30 · 554 阅读 · 0 评论 -
1000个苹果分10个装箱
1000个苹果放入10个箱子。客户如果要获得1~1000个苹果中的任意个数,都可以整箱搬,而不用拆开箱子。问是否有这样的装箱方法?二进制数组合: 1 101001000可以表示任何0X01~0XFF之间的数字,所以按照这样的思想, 1 10 100 1000 10000 10转载 2012-05-25 20:22:48 · 3265 阅读 · 0 评论 -
static_cast<> reinterpret_cast<>揭密
祥细讨论见:http://www.cnblogs.com/ider/archive/2011/08/01/cpp_cast_operator_part5.htmlhttp://www.cnblogs.com/ider/archive/2011/07/30/cpp_cast_operator_part4.htmlhttp://www.cnblogs.com/ider/archive/20转载 2012-05-25 17:31:19 · 706 阅读 · 0 评论 -
为一个简易的 curl 句柄设置选项
原文地址:http://www.groad.net/bbs/read.php?tid-1642.html说明:此函数用来告诉 libcurl 执行什么样的动作。该函数有 3 个参数(该函数的可设置选项非常之多):第 1 个参数 handle 是由 curl_easy_init() 返回的句柄;第 2 个参数是可以设置的选项(CURLoption);第 3 个参数是与第 2 个选项相关联转载 2012-07-05 21:16:20 · 4074 阅读 · 0 评论 -
iostream iterator的使用
标准程序库有供输入和输出用的iostream iterator,称为istream_iterator和ostream_iterator类,分别支持单一型别的元素读取和写入。它们包含在头文件#include 中!例1:从标准设备中输入一些内容,然后排序后输出!#include #include #include #include #include using namespace std原创 2012-07-10 19:56:35 · 1537 阅读 · 0 评论 -
Epoll详解
epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。 一、epoll的优点支持一个进程打开大数目的socket描述符。IO效率不随FD数目增加而线性下降。 二、epoll的使用epoll有2种工作方式:LT和ET。 LT(lev转载 2012-08-02 12:07:36 · 871 阅读 · 0 评论 -
关于string中data()和c_str()函数的几点区别
最近在看网上的一些源码的时候,遇到一个问题,大概是这样的。先上代码:class bin_decoder_t{public: explicit bind_decoder_t(const string& src_) { m_ptr = src_.data(); m_remain_size = src.size(); }private: const char* m_ptr;原创 2012-08-03 10:54:54 · 13251 阅读 · 0 评论 -
如何设计高效的聊天过滤词算法?
关于聊天过滤词算法,一直困扰着我,了解到很多算法,比如:KMP, 正则循环匹配等,然后在http://www.dewen.org/q/41/%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%E9%AB%98%E6%95%88%E7%9A%84%E8%81%8A%E5%A4%A9%E8%BF%87%E6%BB%A4%E8%AF%8D%E7%AE%97%E6%B3%95%EF%原创 2012-08-07 11:49:28 · 2511 阅读 · 0 评论 -
new与malloc的区别
new与malloc的区别 首先摘录《effectivec c++》条款3malloc和free(及其变体)会产生问题的原因在于它们太简单:他们不知道构造函数和析构函数。假设用两种方法给一个包含10个string对象的数组分配空间,一个用malloc,另一个用new: string *stringarray1 =static_cast(malloc(10 * s原创 2012-08-07 17:19:47 · 599 阅读 · 0 评论 -
类成员指针和成员函数指针(深入理解)
类成员指针和成员函数指针(深入理解) 本想实现一个boost的bind,然而在绑定类成员函数时引出了成员函数指针这么个东西,通过深入的理解之后,又引出了类成员指针这么个东西。通过学习对他们有了深刻的理解,现在做一个总结如下,以示区分。(更多参考可见《c++必知必会》中第15,16节)1.类成员指针1)类成员指针到底是神马东东”指向类成员的指针“这个描述中有“指针原创 2012-07-24 11:59:47 · 1126 阅读 · 0 评论 -
[转]linux时间相关结构体和函数整理
一、时间类型。Linux下常用的时间类型有4个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm.(1) time_t是一个长整型,一般用来表示用1970年以来的秒数.该类型定义在中.一般通过 time_t time = time(NULL); 获取.(2) struct t转载 2012-07-25 14:50:34 · 643 阅读 · 0 评论 -
Future 模式
在多线程交互的中2,经常有一个线程需要得到另个一线程的计算结果,我们常用的是Future异步模式来加以解决。Future顾名思意,有点像期货市场的“期权”,是“对未来的一种凭证”,例如当我们买了某个房地产开发商的期房,交钱之后,开发商会给我们一个凭证(期权),这个凭证告诉我们等明年某个时候拿这个凭证就可以拿到我们所需要的房子,但是现在房子还没建好。市场上之所以有“期货”,也正由于有这种需求,才原创 2012-08-09 15:55:12 · 623 阅读 · 0 评论 -
线程同步与双队列
关于线程同步与双队列性能2009年7月12日星期日1问题背景这是在2008年3月学习多线程编程时遇到的一个问题。当时我写了一个代码片段,其中两个线程共享一个队列,一个线程往队列中写数据,而另一个线程从队列中读取数据。这是典型的生产者和消费者模型。但在这里并不适合使用semaphore来做。由于当时的我对多线程编程不太熟练,在线程中大量使用了printf输出调试信息,转载 2012-08-09 21:12:02 · 1513 阅读 · 0 评论 -
TEMP_FAILURE_RETRY宏的用法
#define TEMP_FAILURE_RETRY(expression) \ (__extension__\ ({ long int __result;\ do __result = (long int)(expression);\ while(__result == -1L&& errno == EINTR);\转载 2013-12-20 11:48:52 · 9535 阅读 · 0 评论