自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

innobase的博客

开启innoDB/redis源码之旅

  • 博客(73)
  • 资源 (5)
  • 收藏
  • 关注

原创 博客迁移

大家好,鄙人博客已经迁移到如下地址:        https://www.jianshu.com/u/69fa0ec8790f    

2018-05-16 19:51:10 271

原创 计算机结构以及体系

0.图示:1.计算机组成是针对硬件组成,而计算机体系结构是针对程序员而言。2.计算机基本结构:     2.1 CPU:计算机操作以及数据处理的核心     2.2 IO:计算机和外部设备的数据传输     2.3 主存储器:存储数据     2.4 系统互连:为IO/CPU/存储之间提供通信机制,比如系统总线3.计算机的4个功能:          数

2017-02-05 16:52:42 574

原创 事务属性和线程实现

两种主要的事务ID类型:全局ID和本地ID。事务管理器分配全局ID,当一个事务需要多个事务资源参与时候需要全局ID。如果资源管理器也分配事务ID,那么它们是与此全局事务ID相关联的本地ID,因为它们指向同一个事务。链式事务,应用程序执行的事务序列形成一个链,一个事务接一个事务的执行,中间没有间隔。非链式模型,程序完成一个事务后,不需要立即开始执行一个事务,例如可以使用start开始一个事务,com

2017-01-17 10:32:10 863

原创 linux下锁/无锁性能比较

代码示例中三种类型: 1.pthread_mutex_t,互斥锁 2.__sync_add_and_fetch,GCC自带的原子锁 3.nolock,无锁方式代码如下:/************************************************************************* > File Na

2017-01-13 18:04:30 2228

原创 InnoDB体系架构

InnoDB buffer pool 基本核心点 1.BP中管理所有的block,每个block中都存放了每个page信息。 2.BP 主要是减少磁盘和CPU数据之间速度的差异,InnoDB BP 核心参数 innodb_buffer_pool_size,目前在innodb内核中 只有该参数大于1.5G才能使用多BP结构。 3.BP 中三种链表:

2017-01-13 16:29:22 595

原创 Innodb 插件初始化

Innodb插件的加载定义在mysql/include/mysql/Plugin.h中mysql_declare_plugin,具体的调用位置在ha_innodb.cc中,都是以变量的方式定义。Ha_innodb.cc是定义innodb存储引擎的初始化以及相关重要接口的定义。mysql_declare_plugin(innobase){ MYSQL_STORAGE_ENGINE_PLUGIN,

2016-11-23 16:20:46 755

原创 Innodb Status源码分析

Innodb Status源码分析 作者 Perrynzhou 时间 2016-11-22 23:46 版本 V1.0目录 1. 函数调用关系 3

2016-11-23 16:12:07 1174

原创 Go Concurreny

package mainimport ( "fmt" "runtime" "sync")const ( Step = Step LoopCount = 2)/* 在go中,每个goroutine会在一个cpu的逻辑core上执行操作,如果CPU是单核的,并且是多个goroutin

2016-11-14 14:27:36 411

转载 Golang channels tutorial--channle 经典之作

Golang channels tutorialDecember 6, 2013Golang has built-in instruments for writing concurrent programs. Placing a go statement before a function call starts the execution of that function as an

2016-11-07 18:22:31 450

转载 Visualizing Concurrency Patterns in Go

Visualizing Concurrency Patterns in GoHortonworks DataFlow is an integrated platform that makes data ingestion fast, easy, and secure. Download the white paper now.  Brought to y

2016-11-03 14:17:44 1045

原创 C++编译器对构造函数的影响

C++调用构造函数比较依赖C++编译器:#include using namespace std;class T{ public: T(int i){cout<<"Call T(),i="<<i<<endl;} //explicit T(int i){cout<<"Call T(),i="<<i<<endl;}

2016-10-15 12:07:30 399

原创 new/mallc/delete/free的区别

在使用C/C++开发使用,很多对于mallc和new、free和delete搞不清楚的,这里能简单说下区别1.malloc和free是库函数;new和delete是C++的关键字2.malloc是以字节来申请堆内存;new是以类型申请堆空间3.malloc和free是单纯的申请内存和释放内存4.new和delete分别负责申请内存调用calss的构造函数初始化和调用析构函数释放资源

2016-10-15 11:15:39 574

原创 the stack of function in golang

Many programming language implementations use a fixed-size function call stack; sizes from64KB to 2MB are  typical. Fixed-size stacks impose a limit on the depth of rec ursion, so one must be carefu

2016-10-13 10:55:34 585

原创 C/Golang中的值传递和指针传递

-------------------------golang----------------------------------------------package mainimport "fmt"func A(m int, n []int) { m = 100 n[0] = 99 fmt.Printf("After : &m=%p,&n=%p,

2016-09-23 17:18:25 5165

原创 内存池的实现

基本的架构设计: 基本运行结果:$ ./mem_pool ...UseBlocks[0] =(nil),FreeBlocks[0] =(nil)...UseBlocks[1] =(nil),FreeBlocks[1] =(nil)...UseBlocks[2] =(nil),FreeBlocks[2] =(nil)...UseBlocks[3] =(nil),FreeBlocks[3] =

2016-09-22 21:53:43 738

转载 Markdown

NOTE: This is Simplelified Chinese Edition Document of Markdown Syntax. If you are seeking for English Edition Document. Please refer to Markdown: Syntax.声明: 这份文档派生(fork)于繁体中文版,在此基础上进行了繁体转简体工作,并进行了适当的润

2016-09-21 11:25:59 413

原创 字符串反转处理

/************************************************************************* > File Name: rvs.c > Author: perrynzhou > Mail: [email protected] > Created Time: Wed 21 Sep 20

2016-09-20 15:46:19 249

转载 Built-in functions for atomic memory access

5.44 Built-in functions for atomic memory accessThe following builtins are intended to be compatible with those described in the Intel Itanium Processor-specific Application Binary Interface, section 7

2016-08-08 15:54:15 379

原创 golang with scanner

the articles in this blog ,we will introduce the performance between scanner.Bytes() and scanner.Text(),this so importance for that who consider performance in your design of software. wo introdu

2016-08-08 12:10:23 786

原创 No manual entry for pthread_create

perryn@localhost ~ 20:45:30 $ man pthread_createNo manual entry for pthread_createthe wat of solve the problem on centos: yum install man-pages libstdc++-docs

2016-08-03 11:30:09 684

原创 C WIth Class Designer

其实C语言实现C++的封装、多态是比较方便的,主要看你的设计。class.h header file#define buf_max 32typedef struct _parent{ //define member of superclass int age; char name[buf_max]; char job[buf_max]; //public

2016-07-28 11:45:46 3091

原创 Golang中的并发

sync.WaitGroup provides a goroutine synchronization mechanism in Golang, and is used for waiting for a collection of goroutines to finish. 1.Golang中的go func()是异步的,主函数main中的协程并不会等待go func()的完成,一旦main中协程

2016-07-05 15:58:07 678

原创 Golang中的interface

Golang中的接口,提供了类似于C++中多态的功能,比如接口提供了一个功能为 “跑步”,人类可以跑步,机器人也可以跑步。只要你定义的class,实现和接口中一样的函数名(参数必须是一样的),在具体实现你定义类中和接口一样的名称和参数的函数,就可以实现同一个跑步的功能,可以是人也可以是机器人。具体的功能实现主要在于你的class中的成员方法。package mainimport ( "fm

2016-06-16 16:39:23 699

转载 GDB调试golang代码

11.2 使用GDB调试开发程序过程中调试代码是开发者经常要做的一件事情,Go语言不像PHP、Python等动态语言,只要修改不需要编译就可以直接输出,而且可以动态的在运行环境下打印数据。当然Go语言也可以通过Println之类的打印数据来调试,但是每次都需要重新编译,这是一件相当麻烦的事情。我们知道在Python中有pdb/ipdb之类的工具调试,Javascript也有类似工具,这些工

2016-06-16 10:59:33 4949 1

转载 linux screen命令详解

linux screen 命令详解一、背景系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。二、简

2016-06-15 10:02:09 347

原创 linux 查看ascii码表

root@:/data/code/cwork/binlog:man ascii C program '\X' escapes are noted. Oct Dec Hex Char Oct Dec Hex Char ------------------------------------------

2016-06-14 15:16:46 13366

转载 jump Consistent hash:零内存消耗,均匀,快速,简洁,来自Google的一致性哈希算法

jump Consistent hash:零内存消耗,均匀,快速,简洁,来自Google的一致性哈希算法2015-03-13简介jump consistent hash是一种一致性哈希算法, 此算法零内存消耗,均匀分配,快速,并且只有5行代码。此算法适合使用在分shard的分布式存储系统中 。此算法的作者是 Google 的 John Lamping 和

2016-06-12 12:59:00 7413

原创 golang中的面向对象的思想

test.gopackage mainimport ( "fmt")type T struct{ name string id int info map[string]string}func (r *T)GetName() string{ fmt.Println(r.name) return r.name}func (r *T)

2016-05-27 12:09:35 855

原创 OC实现容器(C版OOP思想实现)

C实现容器,用于存储任何对象。其中加了一哈希层用于快速查找,提高查找效率。整个代码是模拟C++的OP思想编写。具体的实现如下:em.h/************************************************************************* > File Name: elem.h > Author: zhoulin

2016-05-17 22:21:23 1453

原创 Go实现位图排序

package mainimport ( "fmt" "math/rand")var ( dword uint = 32 shift uint = 5 mask uint = 0x1F)func newInt(vmax uint)[]uint { var ret []uint var vlen uint = 0 if vm

2016-05-12 11:54:11 512

原创 位图排序基本实现

/************************************************************************* > File Name: bmp.h > Author: zhoulin > Mail: [email protected] > Created Time: Wed 11 May 2016

2016-05-11 22:22:42 321

转载 数据库的百花争艳

2016-05-09 09:23:37 373

原创 一致性哈希算法设计

一致性哈希算法设计思路:运行结果:root@:/data/code/cwork/chash:./chash ----vsrvname = 192.168.100.1:3306-vm1,hkey =126515----------vsrvname = 192.168.100.1:3306-vm2,hkey =77752----------vsrvname = 192

2016-05-06 15:28:53 24600

原创 [置顶]innodb动态内存管理

1.InnoDB内存管理分配采用内存堆方式,从内存池申请和innodb buffer pool申请,按照不同的内存类型采用不同内存分配。 在innodb内存管理中有三种内存类型: (1)动态内存,该内存是从内存池中进行申请. (2)缓冲内存,该内存是从buffer pool中进行分配 (3)自适应哈希索引。 如下定义了三种内存类型:

2016-05-03 09:46:09 724

原创 [置顶]Innodb Buffer Pool内部结构

Innodb Buffer Pool内部结构  1.    Innodb Buffer 功能Innodb buffer pool的主要功能存储外存页面在内存中的镜像.镜像有如下2种镜像:(1)只读镜像:只读镜像读取的是非脏页。(2)更新镜像:更新镜像为buffer pool中的脏页。Innodb实现了行级多版本(MVCC),而不是整个页的多版本。Oracle在实现中

2016-05-03 09:46:06 539

原创 redis的一个操作的代码执行流程

2016-05-03 09:46:02 607

原创 list的常见操作以及算法的时间复杂度

链表操作,时间复杂度为O(n),重在思维和设计,如下给出了一个链表的常见操作的实例(1) 维护一个数组,来标记链表的元素是否存在(2)数组下标和值得反应反映射,例如 a ={10,20,30,20} t[256] = {-1} t[10] =1;t[20] =1;t[30] =1; a数组的最后一个元素为20,t[20]已经为1,记录20存在元素的个数,t[20]++;即可/**********

2016-05-03 09:45:57 6897

原创 InnoDB MVCC浅谈

作者:周琳//转载请标注出出处1.行记录隐藏列的意义可以从row_search_for_mysql(storage/innobase/row/row0sel.cc, line 3661)函数开始,这个函数是mysql服务器层面搜索记录的函数,该函数有一个重要的参数就是row_prebuilt_t* prebuilt,该参数是包含了查询的记录的信息。进行Debug调试可以发现内存中一行

2016-05-03 09:45:53 1571

原创 快速排序VS堆排序

简要的实现如下:/************************************************************************* > File Name: heapsort.h > Author: zhoulin > Mail: [email protected] > Created

2016-05-03 09:45:48 265

原创 算法.给定数为数组中2个元素的之和,求出数组的下标

由于比较简单,所以直接给出代码 sum.c: /************************************************************************* > File Name: sum.c > Author: zhoulin > Mail: [email protected]

2016-05-03 09:45:43 433

495个C语言问题

2016-08-29

深入理解指针

2016-08-28

innodb 精华文档

innnodb 精华文档 innodb 原理

2016-06-13

innoDB internal

2016-06-01

leetcode题集

leetcode题集

2016-06-01

空空如也

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

TA关注的人

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