自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 利用swap彻底清空vector

要清空vector容器,如果仅仅使用clear是不行的,因为只是size变成了0,但容量依然是之前的值,所以可以使用swap函数巧妙的将容量也变成0,看如下代码void freeTestClasses(vector<TestClass *> *testClasses) { for (vector<TestClass *>::iterator it = testCl...

2019-02-28 14:47:45 2710 1

原创 swap函数自定义实现

swap函数大家都很熟悉了,用于将两个对象进行交换,但是在std中swap需要进行一个拷贝构造,两次赋值操作。这对于小对象是可以接受的,但对于较大的对象来书,这个时间可是有点长了,所以可能要在特定的类中自定义swap成员函数。1、对于int型的swap函数,可以使用异或操作符来进行交换,具体看如下代码void my_int_swap(int &int_1,int &int...

2019-02-24 13:46:01 1134 1

原创 OceanBase内存管理

OceanBase系统有一个全局的定长内存池,这个内存池中维护了由64KB大小的定长的内存块组成的空闲链表。 如果申请的内存不超过64KB,则尝试从空闲链表中获取一个64KB的内存块返回给申请者;如果空闲链表为空,需要首先从操作系统中申请若干个大小为64KB的内存块加入到空闲链表中。释放时将64KB的内存块返回给空闲链表中以供下次使用。(有点类似于线程池的意思) 如果申请的内存超过...

2019-02-22 22:33:10 1334

原创 C++嵌套类以及智能指针实现桥接模式

C++嵌套类就是在一个类的内部定义另外一个类。嵌套类只能在外围类中使用。这样做的目的就是为了隐藏细节信息,这样就和桥接模式联系起来了,因为桥接模式的本意也就是将抽象和抽象方法的具体实现相分离,如果具体实现代码量不大,而且只是这个类中需要使用的话,就可以使用嵌套类来完成。嵌套类对象的创建如果使用new和delete的话,还得关注何时销毁这个对象,所以可以使用boost库中的shared_pt...

2019-02-22 12:36:37 506

原创 层次锁

为了避免死锁,可以规定加锁的顺序,因此可以使用层次锁来实现。通过给互斥量封装层次值之一属性,可以确保层次值高的线程可以获得层次值低的锁,反之则不行。简单代码实现如下,可以使用stack来保存已经获得锁的层次值。class HierarchicalMutex {private: mutex inter_mutex_; unsigned long const level_value_; ...

2019-02-20 14:46:09 543

原创 OceanBase中RootServer分析

最近抽时间阅读一下OceanBase的源码,就从RootServer开始吧。OceanBase的RootServer(以下简称Root)的主要功能有集群管理、数据分布以及副本管理。今天集中研究集群管理:1、每个集群内部同一时刻只允许有一台UpdateServer(以下简称Update)对外提供写服务,Root通过租约机制选择唯一的主Update,看一看这部分的源码。 //O...

2019-02-19 22:02:00 1108

空空如也

空空如也

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

TA关注的人

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