自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C++实现反射(根据类名动态创建对象)

    和网上大多数实现一样,这里也是采用工厂方法来实现对象的动态创建。大致原理为,创建一个单例工厂类,其中维护一个map(类名->对象创建函数)。创建对象时,传入类名,然后根据此类名查询出创建函数,最后创建对象。   ...

2019-06-12 10:36:34 546

转载 简单的C++委托 —— 用模板类实现类成员函数的回调

template < class R , class P1 , class P2 > class IDelegate { public : virtual R Invoke( P1 , P2) = 0; }; template < class T , class R , class P1 , class P2 > class CDelegate : publ...

2019-03-26 14:28:10 705

转载 Google Protocol Buffer(protoc, protobuf, pb)学习笔记

以前玩 C,Json、XML 什么的看多了,现在开始玩 C++,才发现我了解的世界太小了——原来 C++ 届还有 Google Protocol Buffers 这么好的东西。果然在 PC 上做开发真是好,不用考虑可执行程序的 size,可以放心放肆地用 C++。ReferenceProtocol Buffer Basics: C++Google Protocol BuffersGoogle...

2019-03-22 09:51:24 706

转载 C++“准”标准库Boost学习指南(6):Boost.Any

Boost.AnyAny库支持类型安全地存储和获取任意类型的值。当你需要一个可变的类型时,有三种可能的解决方案:无限制的类型,如 void*. 这种方法不可能是类型安全的,应该象逃避灾难一样避免它。可变的类型,即支持多种类型的存储和获取的类型。支持转换的类型,如字符串类型与整数类型之间的转换。Any实现了第二种方案,一个基于值的可变化的类型,无限可能的类型。这个库通常用于把不同类型的...

2019-03-21 16:32:02 1015

转载 boost库中bind()和function()的使用方法

Boost::Function 是对函数指针的对象化封装,在概念上与广义上的回调函数类似。相对于函数指针,function除了使用自由函数,还可以使用函数对象,甚至是类的成员函数,这个就很强大了哈。1. 一个简单的示例代码?123456789101112131415161718192021...

2019-03-21 14:47:13 421

转载 boost.any实现任意类型存储

当你需要一个可变的类型时,有三种可能的解决方案:无限制的类型,如 void*. 这种方法不可能是类型安全的,应该象逃避灾难一样避免它。可变的类型,即支持多种类型的存储和获取的类型。支持转换的类型,如字符串类型与整数类型之间的转换。Any实现了第二种方案,一个基于值的可变化的类型,无限可能的类型。这个库通常用于把不同类型的东西存储到标准库的容...

2019-03-21 13:43:27 439

转载 Boost智能指针——shared_ptr

Boost智能指针——shared_ptrboost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include <string>#include <iostream&...

2019-03-21 13:37:20 95

转载 如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉

STL中的容器相当“聪明”,它们提供了迭代器,以便进行向后和向前的遍历(通过begin、end、rbegin等);它们告诉你所包含的元素类型(通过它们的value_type类型定义);在插入和删除的过程中,它们自己进行必要的内存管理;它们报告自己有多少对象,最多能容纳多少对象(分别通过size和max_size);当然,当它们自身被析构时,它们自动析构所包含的每个对象。有了这么“聪明”的容器,许...

2019-03-20 13:35:14 226

转载 STL容器里存放对象还是指针

                                            &nbs...

2019-03-20 10:38:28 860

转载 do{...}while(0)的妙用

do{...}while(0)的妙用 在学习第一门编程语言时,就已经介绍了顺序分支、条件分支、循环分支。比如循环分支有for、while、do-while语句。在随后的学校及工作中,如果手工循环一般使用for、while,很少使用do-while,感觉用处不大,但现在看来,do-while大有用途。1. 帮助定义复杂的宏以避免错误举例来说,假设你需要定义这样一个宏:#defi...

2019-03-20 10:00:06 91

转载 dynamic_cast彻底明白了~

dynamic_cast < type-id > ( expression)该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void*;如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须...

2019-03-19 11:23:42 6311 2

转载 C++ clone()函数的用法

本文系转载,出处:设计模式学习笔记(原型模式)原型模式在C++中,要拷贝一个对象,除了自定义一个拷贝构造函数来实现对象复制外,还可以实现一个clone函数。这需要借助编译器实现的一个隐藏拷贝构造函数,这样的做法,更省心。背后的原理是C++的原型(Prototype)模式:用原型实例指定创建对象的种类,并...

2019-03-19 10:39:03 1618

转载 仿函数与回调函数

&amp;nbsp;&amp;nbsp;&amp;nbsp; 在之前聊了小括号重载和回调函数,现在来聊聊仿函数,以及它和回调函数的关系。&amp;nbsp; &amp;nbsp; 仿函数是对象使用行为看上去像个函数。&amp;nbsp; &amp;nbsp; 函数的使用是这个样的&amp;nbsp; &amp;nbsp; Function(param1,param2,...)&amp;nbsp; &amp;nbsp;

2019-03-18 15:17:02 522

转载 poll&&epoll实现分析(二)——epoll实现

Epoll实现分析——作者:lvyilong316通过上一章分析,poll运行效率的两个瓶颈已经找出,现在的问题是怎么改进。首先,如果要监听1000个fd,每次poll都要把1000个fd&nbsp;拷入内核,太不科学了,内核干嘛不自己保存已经拷入的fd呢?答对了,epoll就是自己保存拷入的fd,它的API就已经说明了这一点——不...

2019-03-12 13:34:01 189

转载 poll&&epoll实现分析(一)——poll实现

0.等待队列在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待:&nbsp;希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。等待队列由循环链表实现,...

2019-03-12 13:31:12 212

转载 彻底学会使用epoll(六)——关于ET的若干问题总结

彻底学会使用epoll(六)——关于ET的若干问题总结——lvyilong3166.1&nbsp;ET模式为什么要设置在非阻塞模式下工作&nbsp;&nbsp;&nbsp;&nbsp;因为ET模式下的读写需要一直读或写直到出错(对于读,当读到的实际字节数小于请求字节数时就可以停止),而如果你的文件描述符如果不是非阻塞的,那这...

2019-03-12 12:04:36 209

转载 彻底学会使用epoll(五)—— ET模式下的注意事项

彻底学会epoll(五)——&nbsp;ET模式下的注意事项——lvyilong3165.1&nbsp;ET模式下的读写&nbsp;&nbsp;&nbsp;&nbsp;经过前面几节分析,我们可以知道,当epoll工作在ET模式下时,对于读操作,如果read一次没有读尽buffer中的数据,那么下次将得不到读就绪的通知,造成bu...

2019-03-12 12:03:27 262

转载 彻底学会使用epoll(四)——ET的写操作实例分析

首先,看程序四的例子。l&nbsp;程序四点击(此处)折叠或打开#include&nbsp;&lt;unistd.h&gt;#include&nbsp;&lt;iostream&gt;#include&nbsp;&lt;sys/epoll.h&gt;using namespace std;int&nbsp;...

2019-03-12 12:02:01 102

转载 彻底学会使用epoll(三)——ET的读操作实例分析

首先看程序一,这个程序想要实现的功能是当用户从控制台有任何输入操作时,输出”hello&nbsp;world!”。l&nbsp;程序一&nbsp;&nbsp;点击(此处)折叠或打开#include&nbsp;&lt;unistd.h&gt;#include&nbsp;&lt;iostream&gt;#inclu...

2019-03-12 12:01:01 135

转载 彻底学会使用epoll(二)——ET和LT的触发方式

分析了ET和LT的实现方式,那么分析他们的触发方式就容易多了。我们通过实现分析知道LT模式下epoll_wait被唤醒可以通过两种方式(图中红线和蓝线),而ET模式只能通过一种方式(图中红线)。所以ET模式下能被唤醒的情况,LT模式下一定也能被唤醒。我们先来讨论特殊情况(ET模式),再来讨论一般情况(LT模式)。2.1&nbsp;ET...

2019-03-12 11:59:50 134

转载 彻底学会使用epoll(一)——ET模式实现分析

注:之前写过两篇关于epoll实现的文章,但是感觉懂得了实现原理并不一定会使用,所以又决定写这一系列文章,希望能够对epoll有比较清楚的认识。是请大家转载务必注明出处,算是对我劳动成果的一点点尊重吧。另外,文中如果有不全面或者不正确的地方还请大家指出。也可以私信或者发邮件:[email protected].&nbsp;ET模...

2019-03-12 11:57:44 126

空空如也

空空如也

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

TA关注的人

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