sryan的专栏

点点滴滴

排序:
默认
按更新时间
按访问量

[INNODB] ibd文件之结构组成与空间分配

ibd是一个完整的表空间文件,其中最基本的单位为页(Page),一个Page通常为16k。page有不同的种类,用于不同类型的用途。 在介绍页文件的分类前,我们先介绍对页进行分类管理的2个页组。 extend extend,也叫作区,用于分配页。一个extend有64个连续的页,也就是1...

2018-05-11 11:16:37

阅读数:26

评论数:0

[INNODB]ibd文件之索引页页目录(Directory slot)

B+树的具体体现在于非叶子节点,用于标识范围并指向叶子节点页,也就是说,通过某个索引,我们无法获得具体的行位置,只能获得行所在的叶子页。所以非叶节点就是B+树的非叶子页,用于范围索引,而叶子页就是B+树的叶子页,用于存储数据。 我们在定位到了叶子页后,我们还需要检索叶子页的数据,这个检索需要由页...

2018-05-11 11:15:45

阅读数:20

评论数:0

[INNODB] ibd文件之通过B+树索引和页目录查找行数据

### 准备工作首先,为了说明方便,本文使用了[innoisp](https://github.com/sryanyuan/innoisp) 来解析ibd文件来获取各个page的信息。ibd文件为innodb的存储文件,存储着各种数据,比如行数据、undolog、insert buffer等。在任...

2018-05-11 11:13:31

阅读数:17

评论数:0

MySQL与MariaDB基于GTID的主从同步

MySQL与MariaDB基于GTID的主从同步最近在做数据库同步,主要业务场景是同步目前中间件分库分表的库表至单库单表中做OLAP。前期的同步是基于binlog filename和pos的,前几天DBA告知了一个可能的风险,仔细想想也的确是的,假如主节点挂了,从节点提升为主,那么其实主从的bin...

2017-04-20 17:27:04

阅读数:1143

评论数:0

Raft一致性算法

Raft一致性算法今天和明天都得值班,基本主要是看监控,趁着空闲时候大概看了会raft算法,以前比较粗略的了解了一下,今天仔细的学习了会,在这里做个笔记吧。在分布式系统中,一致性是个很棘手的问题,单节点没有这个问题,但是为了保证高可用,往往会多机房部署,这样每个服务的一致性就必须得保证,raft一...

2017-01-27 15:37:17

阅读数:309

评论数:0

TCP头部的ACK与SEQ

TCP头部的ACK与SEQ这几天临近过年了,很多人都回去了,趁着闲着,把TCP/IP协议详解大概过了一过,有些以前似懂非懂的,现在貌似还是似懂非懂,不过至少比以前理解的好一点儿了,不过对于TCP的发包与回应之间的确认序号有点儿搞懵了,于是大概看了下,顺便在这里做了个笔记。之前的工作大概都属于上层工...

2017-01-23 12:00:17

阅读数:1150

评论数:0

C++11中的右值引用

C++11中的右值引用C++11中新的标准比较多,牵扯到的概念也比较多,有些一开始听上去好玄乎,但是了解了它的产生是有道理的后就能比较好的理解了。首先,右值引用这个概念感觉很难理解,它和引用有啥关系呢?其实和引用一样,只是有点儿差异:右值引用它是引用了一个临时变量的(大部分情况下),当然你也可以把...

2016-12-23 17:37:54

阅读数:358

评论数:0

c遍历lua中table的方法

c遍历lua中table的方法遍历一个table,肯定是不知道table的每个key的,所以lua_getfield肯定是不可行的。要遍历table,最主要的是lua_next函数,该函数主要接受一个int参数,代表当前table所在的索引,索引之上应该需要一个key,每次lua_next都会从当...

2016-12-22 17:52:52

阅读数:1304

评论数:0

简析DNS解析过程

简析DNS解析过程以前对于DNS的流程,以前也只停留在域名->IP的简单理解上,今天想看下cdn的原理,于是发现DNS貌似没那么简单,于是在网上收集了点资料,自己做了点理解,顺便做个简单的笔记。首先,以gocode.cc做个例子,这个是我另外一个博客,从最开始来梳理下解析到IP地址的过程,当...

2016-11-10 17:52:58

阅读数:346

评论数:0

简析令人头大的定义 void (*(*f[])())()

简析令人头大的定义 void (*(*f[])())()解析在v2ex闲逛发现有人在谈怎么学习c语言,有人推荐tcpl,然后写了个反人类的变量定义 void (*(*f[])())(),这么复杂的定义在c++实际的项目中其实也不常见,反正我喜欢研究下到底是什么,就花了点时间去看看这个定义,其实复杂...

2016-10-31 14:34:48

阅读数:920

评论数:0

VSCODE golang环境配置

VSCODE golang环境配置 准备 安装好vscode后,安装golang插件,可以使用ctrl+shift+p或者f1呼出命令面板,输入extensions,输入关键词Go然后安装然后将一个文件夹拉入VSCODE中,然后通过文件->首选项->工作区设置来做工作区设置的任务。我们...

2016-10-18 10:42:28

阅读数:4793

评论数:0

对libevent中bufferevent的深入理解

对libevent中bufferevent的深入理解在libevent 2.x.x中,新增了bufferevent来封装了socket操作,用来简化编码操作。当前项目有个点实在是有点儿绕,我自己在libevent基础上做了一个网络引擎的wrapper,未来打算替换,在实现的过程中,发现了一些问题,...

2016-10-13 17:38:08

阅读数:4754

评论数:0

网络编程中的阻塞,非阻塞、同步,异步概念

网络编程中的阻塞,非阻塞、同步,异步概念网络编程中,我们常常接触阻塞,非阻塞,同步,异步等概念,有些概念可能交叉使用,比如异步非阻塞,同步非阻塞,同步阻塞等等,这些概念看似相似,却往往又有着不同的概念,也往往很绕。刚刚查了点资料总结了一下,通过结合具体的网络模型来给这些概念做个笔记。阻塞阻塞是最容...

2016-10-11 16:20:15

阅读数:1776

评论数:0

使用redis写一个简单的分布式锁

对于一个进程来说,内部的资源锁有很多的实现方式,也都很高效,对于同一个机器的不同进程做同步的话,也有很多的方式去实现,对于不同机器上部署的程序来说,假如要进行同步,则比较麻烦。最简单的方式可能就是使用redis了,redis的实现是所有的操作放入单线程中处理的,所以对于并发的请求,都有先后顺序,那...

2016-09-22 15:56:27

阅读数:708

评论数:0

使用nsqlookupd来推送消息

使用nsqlookupd来推送消息其实有点儿文不对题,不是使用nsqlookupd来推送的,最终还是使用nsqd来进行推送。nsq的golang客户端中,consumer实现了从nsqlookupd中动态拉取服务列表,并进行消费,但是producer中没有实现这个,假设有N个nsqd节点,某一个不...

2016-09-08 17:56:35

阅读数:1348

评论数:0

Golang中的覆盖率测试

Golang中的覆盖率测试golang中提供了不少工具链,可以使用它们方便的进行单元测试、分析性能瓶颈,提供运行时信息等,总而言之是非常有用的。go test这个工具大家用的应该比较多,之前我使用也大多是用来做单元测试的,go中做单元测试非常的方便,然而我忽视了覆盖率测试。单元测试覆盖了多少代码呢...

2016-09-02 15:50:07

阅读数:3251

评论数:0

A星寻路算法

A星寻路算法这几天实现了一个A*寻路算法,其实在刚毕业的时候就写了一个,算法不复杂,就是效率有点儿低,这些天趁着空闲时间,重新实现了一遍。算法其实也不复杂,首先有以下几个概念: 开启的节点表(OpenTable)存放着所有的待检测的节点(坐标),每次都会从其中寻找出符合某个条件的坐标。 关闭的节点...

2016-09-01 15:30:29

阅读数:1756

评论数:0

内存管理之分页

内存管理之分页昨晚读《go语言学习笔记》的时候,看到了内存管理这一章,提到了内存的分页。其实分段与分页在微机接口这课程也学过,只是一直在弄上层的东西,有点儿生疏了,今天有空查了点资料,做了点笔记。虚拟地址与物理地址首先假定平台为32位平台。首先从应用层谈起,在应用层,我们有一个4G的完整的内存空间...

2016-08-30 13:29:50

阅读数:682

评论数:0

golang 模板(template)的常用基本语法

golang 模板(template)的常用基本语法模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页,golang提供了html/template包来支持模板渲染。这篇文章不讨论golang后端的模板读取及渲染方法,只讨论模板中嵌入变量,渲染...

2016-08-29 16:01:47

阅读数:22313

评论数:0

NSQ的golang客户端简单使用

NSQ的golang客户端简单使用NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统,正好使用到了这个东西,在这里简单的记录下。获取客户端nsq的golang客户端是官方版本的go get github.com/nsqio/go-nsq 即可简单的消费者和生产者使用该...

2016-08-29 11:19:52

阅读数:5164

评论数:0

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