自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 tcmalloc锁粒度

ThreadCacheTCMalloc减少了多线程程序中的锁争用情况。对于小对象,因为ThreadCache,每个线程对小对象的获取直接从该线程的ThreadCache获取,几乎已经达到了零争用。但当ThreadCache中的可用空间用完后,还是会需要向CentralCache申请空间。CentralCache全局只有一个,这时候需要锁了,因为可能会有多个ThreadCache向CentralCa...

2018-03-22 17:27:55 709

转载 tcmalloc总结

总体结构在tcmalloc内存管理的体系之中,一共有三个层次:ThreadCache、CentralCache、PageHeap,如上图所示。分配内存和释放内存的时候都是按从前到后的顺序,在各个层次中去进行尝试。基本思想是:前面的层次分配内存失败,则从下一层分配一批补充上来;前面的层次释放了过多的内存,则回收一批到下一层次。这几个层次从前到后,主要有这么几方面的变化:线程私有性:ThreadCac...

2018-03-22 16:56:24 1136

转载 C++智能指针的简单实现

template <typename T>class smart_ptrs {public: smart_ptrs(T*); //用普通指针初始化智能指针 smart_ptrs(smart_ptrs&); T* operator->(); //自定义指针运算符 T& operator*(); //自定义解引用运算符 ...

2018-03-20 16:36:35 449

转载 工厂模式

工厂模式属于创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。首先介绍简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类举个例子就明白了。有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核。客户需要什么样的处理器核,一定要显示地告诉生产工厂。下面给出一种实现方案。[cpp] view plain copy...

2018-03-16 13:42:35 361

原创 装饰模式

装饰模式:一个类有一些核心功能;但随着业务改变,需要能够在核心功能之外加一些功能。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。给某个对象,而不是整个类,添加一些功能。就增加功能来说,装饰器模式比相比生成子类更加灵活。适用性:       1、在不影响其它对象的情况下,以动态、透明的方式给单个对象添加职责。       2、处理那些可以撤销的职责。 ...

2018-03-16 11:33:16 209

原创 策略模式

策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。就是一个继承体系,用虚函数实现。通过给类再传递一个类,具体的操作由传入的类做决定。class Strategy{public: virtual void Algrithm();};class Strategy1:public ...

2018-03-16 10:58:30 180

原创 代理模式

代理模式(Proxy)C++实现尽管Decorator的实现部分与代理相似,但Decorator的目的不一样。Decorator为对象添加一个或多个功能,而代理则控制对对象的访问。作用:       为其他对象提供一种代理以控制对这个对象的访问。适用性:       在需要用比较通用和复杂的对象指针代替简单的的指针的时候,使用代理模式。       1、远程代理,也就是为一个对象在不同的地址空间提...

2018-03-16 10:41:05 180

转载 《C++ 沉思录》阅读笔记——句柄类(智能指针)

在上一篇博文里,我介绍了代理类的相关内容,如果记性好的朋友,应该已经对代理类有了比较深入的认识。在设计代理类的过程中,我们遇到的核心问题是:内存的分配和编译时类型未知对象的绑定。我们通过让所有子类自定义一个 copy 函数,来返回自身的复制,这种方式来解决需要我们自己来管理内存的繁琐,又通过定义代理类绑定子类的类型,通过一个基类指针来保存子类这种方式来实现运行时绑定。但对代码的追求是永无止尽的,虽...

2018-03-16 10:24:12 448

空空如也

空空如也

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

TA关注的人

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