自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

转载 Nignx Web IM 调研(续)

最近在用LIBEVENT 写一个底层的模块 。 正好需要加一个HTTP 的功能 然后 GOOGLE的时候查到了以下的东西,看上去能实现当初想做的设计。自己用C实现的comet http server,基于libevent基于libevent 1.3e, 利用了libevent里面现成的http库编译方法,先安装libevent,然后    cc

2012-10-23 15:21:39 625

原创 2012.10.19 事故分析

事情起因:前一个礼拜MoNET升级了一个 overdue user blocking的功能 , 经过反复测是和小范围生产环境测试没问题,然后就上了 ,这是来公司以后除了手头上的那个MoNET代码迁移以外地一个实际上线的小功能。功能的具体作用是  , billing team 提供一个目前大小为, 1 ,200,000用户数的list 然后,新增加一个服务叫 BSP ,作为Proxy,每小时

2012-10-21 23:21:47 1331

原创 Nginx Web IM 调研

需求是一个 基于 Epoll的 高并发的 Push 的 Web IM服务器 , 打算是用 Nginx实现,经过2个星期的调研,最终是放弃了的 ,同事找到了一套用Jetty 的更成熟的架构。Epoll简介,他是一个Linux 2.6以后才有的新的IO机制。 大体原理是把所以的连接放在一个数组,或者队列中,给每个连接一个回调函数, OS API 负责对产生事件响应的连接进行回调。和sele

2012-08-26 23:36:46 1763

转载 Linux AutoMake

对于一个UNIX/Linux下C程序员来说,一个比较麻烦的工作就是写自己的Makefile。可能你有如下经验:写一个简单的C程序,自己多写几行gcc命令就把程序变成可执行的了;写一个稍微复杂点的程序,源文件个数可能在30个左右,还是写一行行的gcc命令就麻烦了,你可能想到写个makefile,你可能也在这样做着;但你某一天会发现你写的这个Makefile可能不是一个所有 UNIX/Linux类操作

2012-07-20 21:17:57 1802

原创 C++ Exception

void fun(SimpleClass*)在DEBUG中使用Assert可以 用#define NDBEUG 在release版本中关掉这个功能#include #include using namespace std;class MyError : public runtime_error{ public: MyError(const string& ms

2012-06-14 14:05:47 777

原创 Ubuntu 12.04 G++ Hello World 配置

在Terminal 里输入 sudo apt-get install synaptic会安装 synaptic package management 这个软件然后进入软件先后安装 build-essential,vim , autoconf, subversion , automake ,cvs  后面几个都是可选的版本控制,连接器等软件。第一个是G++, GCC编译代码必要的库

2012-05-09 01:04:18 3247 1

原创 Effective C++ 第三版中文版 笔记

条款54 TR1 和 条款55 BoostTR1 即 Technical Report 1 是 C++ standard committee 推出C++“0x”(与此类似的还有C++“89”,即89年的C++标准版本,这里指200X年讲推出的新版本) 之前的 一份技术文档那个,我们可以从中发现一部分即将被实现和规范的内容C++标准程序库 包含了 STL , iostream

2012-05-08 01:17:08 939

转载 程序员必知8大排序3大查找(二)

6、快速排序 (1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。(2)实例:上图中将待排序列分成两部分,一部分比基准元素小,一部分大于基准元素,然后对这两部分

2012-05-08 00:37:03 598

转载 程序员必知8大排序3大查找(一)

1、直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例 2、希尔排序(也称最小增量排序)(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n

2012-05-08 00:35:59 1251

转载 C++内存管理

http://www.cnblogs.com/wonderKK/archive/2012/03/18/2405196.html[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此

2012-04-09 01:29:28 427

转载 指针作参数的常见错误

一、对参数指针的地址修改参数的地址是可以修改的,修改后的地址是不可能传回给调用处的指针变量。也就是说,可以修改参数地址所指的单元的值,这是可以传回到调用处的变量里面的。#include #include #include int subFunc(int arr[3]);//交换两整数void change(int *data1, int *data2) { in

2012-03-30 01:44:41 527

转载 不定参数的应用

不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多。除了格式化输出之外,我实在没看到多少应用。主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它。尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题。原理刚学C语言的时候,一般人都会首先接触printf函数。通过这个函数,你可以打印不定个数的变量到

2012-03-30 00:00:57 310

转载 What's stdcall, cdecl, etc....

在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这

2012-03-29 23:58:08 373

转载 拷贝构造函数及其参数类型

拷贝构造函数的参数类型必须是引用,而且通常情况下还是const的,但是const并不是严格必须的。#include #include using namespace std; class CClass{public:         CClass() : a(1), b("Hello, world.")         {

2012-03-28 23:34:50 467

转载 函数指针的几种用法

什么是函数指针?函数指针指向的是特殊的数据类型,函数的类型是由其返回的数据类型和其参数列表共同决定的,而函数的名称则不是其类型的一部分。 一个具体函数的名字,如果后面不跟调用符号(即括号),则该名字就是该函数的指针(注意:大部分情况下,可以这么认为,但这种说法并不很严格)。 函数指针的声明方法// 定义函数指针pfint (*pf)(cons

2012-03-28 23:33:45 373

转载 关于《程序员面试宝典》中一道面试题的答案

说明:本文是前段时间发表在CSDN上的文章。后来通读了《程序员面试宝典》,发现里面给出的错误答案很多,所以除非是你特别明确的问题,不要轻易相信其中的结论:) 今天一朋友拿着《程序员面试宝典》来和我商量一道题目,以前听说过这本书的大名,一直无缘得见,今日一见,信手一翻,对于求职的程序员来说的确是一本不错的书:)下面就是朋友谈及的那个问题(括号中的中文是作者翻译的):

2012-03-28 23:32:27 1061

转载 友元函数和友元类

本文是在http://www.cppblog.com/twzheng/articles/21020.html的基础上,增加了两个示例代码。 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友

2012-03-28 23:30:56 368

转载 动态分配资源的自动释放 – auto_ptr的实现原理

动态分配资源的自动释放的英文是 Resource Allocation In Initialization,通常缩写成RAII。根据《C++ Primer》第4版:“During stack unwinding, the function containing the throw, and possibly other functions in the call cha

2012-03-28 23:26:21 558

转载 使用auto_ptr需要注意的事项

a. auto_ptr定义于头文件memory中; b. auto_ptr只能用来管理单个动态创建的对象,而不能管理动态创建的数组; c. 和其他copy和assign不同,auto_ptr的copy和assign会改变右边的操作数,assignment符号的两边的auto_ptr均为左值;There is a crucially important diffe

2012-03-28 23:24:21 371

转载 花括号({...})在自动资源释放中的作用

在C/C++,我们司空见惯地甚至想当然地使用{},一般大家都认为只要 { 和 } 成对出现就可以了。诚然,{ 和 } 必须成对出现,但有些时候,尤其是在使用RAII的时候,它代表了RAII对象的作用域。关于RAII的原理说明,请见:http://patmusing.blog.163.com/blog/static/13583496020101824142699/ 参考下面代码,并注意其

2012-03-28 23:23:44 760

转载 STL中vector值得注意的两个问题

一、 相关背景:1.      在STL有非常重要的两块内容,一个是容器,另外一个是算法。2.     容器有顺序容器、关联容器和顺序容器适配器之分。算法独立于容器存在,但可以和容器紧密结合使用,从而发挥出相当大的威力。3.         顺序容器包括:vector、list和deque关联容器包括:map、multimap、set和multiset

2012-03-28 23:21:26 520

转载 vector用erase删除元素时,为什么被删元素的析构函数会被调用更多次?

博文 http://patmusing.blog.163.com/blog/static/13583496020101831514657/  中提到:“vector::erase的原型如下:iterator erase(iterator position);iterator erase(iterator first, iterator last);对应的相关

2012-03-28 23:19:30 4155

转载 怎样获得虚函数指针

先还是看看下面的代码: #include using namespace std; class A{private:         int a;         int b;public:         virtual void vfun0()         {                   cout "A::vfun0"

2012-03-28 23:17:33 400

转载 关于C++中的前置声明

今天一朋友问及C++中的前置声明问题,下面是我给出的回答。 在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration)。下面的程序中,带注释的那行就是类B的前置说明。这是必须的,因为类A中用到了类B,而类B的声明出现在类A的后面。如果没有类B的前置说明,下面的程序将不同通过编译,编译器将会给出类似“缺少类型说明符”这样的出错提示。代码一:

2012-03-28 23:16:29 280

转载 关于C++中的前置声明

今天一朋友问及C++中的前置声明问题,下面是我给出的回答。 在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration)。下面的程序中,带注释的那行就是类B的前置说明。这是必须的,因为类A中用到了类B,而类B的声明出现在类A的后面。如果没有类B的前置说明,下面的程序将不同通过编译,编译器将会给出类似“缺少类型说明符”这样的出错提示。代码一:

2012-03-28 23:13:32 377

转载 C++中虚继承防止二义性

虚继承,就是在被继承的类前面加上virtual关键字,这时被继承的类称为虚基类,如下面代码中的base类。虚继承在多重继承的时可以防止二义性。    class base;    class derived1 : virutal public base;    class derived2 : virtual public base;    class de

2012-03-28 23:09:26 467

转载 static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别

C-style cast举例: int i; double d; i = (int) d; 上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i (注意d本身的值并没有发生改变)。这就是典型的c-style类型转换。 下面是一个简单的程序:#include using name

2012-03-28 23:08:46 300

转载 C++面试题:循环数列问题

21     22     23     24     25     …20     7       8       9       1019     6       1       2       1118     5       4       3       1217     16     15     14     13看清以上数字排列的规律,设1点的坐标是(0, 0)

2012-03-28 23:08:05 1117

转载 C++是如何利用虚函数实现多态性的?

前一篇:http://patmusing.blog.163.com/blog/static/1358349602010419111919799/还是先看示例程序,用代码说话:#include iostream>using namespace std; class A{public:         inline virtual voi

2012-03-28 23:04:54 414

转载 关于函数返回值的几种情况

在一个函数的内部,return的时候返回的都是一个拷贝,不管是变量、对象还是指针都是返回拷贝,但是这个拷贝是浅拷贝。 1.     如果返回一个基本类型的变量,比如:int a;a = 5;return a; 那么就会a的一个拷贝,即5返回,然后a就被销毁了。尽管a被销毁了,但它的副本5还是成功地返回了,所以这样做没有问题。

2012-03-28 23:02:17 318

转载 隐式类型转换和explicit关键字的作用

《C++ Primer》(英文版,第4版) p. 461提到:A constructor that can be called with a single argument defines an implicit conversion from the parameter type to the class type.(如果一个类的构造函数只接收一个实参(argument),那

2012-03-28 22:59:51 361

转载 类在其自身的定义体内作为数据类型

只有static成员变量,指针或者引用,才可以在一个类的定义体内,用本类作为数据类型,如:class Bar{public:                  ......private:                  static Bar member1;                            //OK

2012-03-28 22:59:00 259

转载 1. C++实现Creational - Singleton模式

1. C++实现Creational - Singleton模式  Singleton设计模式经常被大家谈及,很多人认为该模式很简单。的确,从纯粹的设计模式的角度来看,它并不复杂,但是从实现的角度来看,其实非常不简单,尤其是用C++去实现它的时候。 一、Java版本的Singleton模式实现我们不妨先看看在Java中实现Singleton模式的典型代码

2012-03-28 22:51:43 413

转载 C++ 中的一些小问题, 持续补充

C++ Primer Plus 205char *buildstr(char c,int n){char* pstr = new char[n + 1]pstr[n] = '\n';while(n-- > 0)pstr[n] = c;return pstr;}int main{int times;char ch;char *ps = buildstr(ch,time

2012-03-28 01:07:01 491

原创 最近需要完成的事情

1.OpenGLOpenGL  重新过一遍  把原来DX 实现的俄罗斯放苦 用OpenGL  实现实现OpenGL  对素材的导入2.C++        把C++ Prime Plus  的一些题做一遍        周末去看Thinking in C++         看C++的面试题String 类中函数的各种实现快排的实现二叉搜索树的实

2012-03-28 00:02:55 301

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除