Mysql 知识点记录

InnoDB MyISAM都是使用B-tree索引,只是两者实现方式不太一样,InnoDB 使用了聚簇索引的数据结构也称为B+tree,而MyISAM并没有。 explain 返回的 Extra 中包含 Using index 即表示使用索引覆盖查询(InnoDb、MyISAM都存在)。 explain 放回的 Extra 中包含 Using where是即表明在存储引擎把数据返回给 MySQL 服务器后再应用 Where 里的条件过滤行。这样就会导致存储引擎返回的数据比实际需要的多,就会导致额外的行被锁。 InnoDB索引中,覆盖查询要考虑主键的情况,即使索引中不包含主键,而查询包含索引中

MySQL
发布于 5年前

梦的记录:2018/08/21 中午

前言 从我记事起就比较容易做梦,有多容易呢,我在桌子上趴10秒有时候就能做个梦,以前也有想研究或者记录下自己梦,每次都没坚持下来。这次在博客上开这个栏目用于后面记录醒来后记得比较清楚的梦并根据情况做些简单的分析,后面也会继续去关注梦方面的书籍深入研究这方面的东西。 梦的时间地点 梦的日期:2018/08/21,大约时间13:40-13:59 地点:公司工位 梦的内容 地点:一间很熟悉、同学很多的教室。 时间:梦开始时正在上课、梦里的教室人比较多、课本也比较多,推测应该是初中或高中的时候。 人物:梦里的人物没有比较清晰的特征,感觉好像是中学时期好多同学的形象交杂着,有个男同学感觉跟我比较亲近,表

杂谈
发布于 5年前

读书计划

这里记录以后准备读或者重读一些书的计划,计划起于 2018/11/01,多读书提升技术和各方面认知。 正在读 技术类 << 算法导论 >> 5% << 现代操作系统 >> 10% << 亿级流量网站架构核心技术 >> 50% << 这就是搜索引擎 >> 25% 介绍搜索引擎的架构和各部分实现方案。 << 编码的奥秘 >> 25% 计算机编码普及读物 << 数学史 >> 4% 数学历史发展和起源 &lt

杂谈
发布于 5年前

Go语言学习笔记(2)--- pprof

在程序开发过程中我们经常需要去做性能测试、或性能排查方面的工作,而 Go 语言自带的 pprof 是个非常强大的工具,不仅使用简单而且可以用于线上服务性能的排查。 pprof 采样数据主要有三种获取方式: runtime/pprof:手动调用 pprof API 来生成和写入采样文件,灵活性高。 net/http/pporf 通过 http 服务获取采样文件,简单易用,适用服务性能排查 go test 通过 go test -bench . -cpuprofile prof.cpu 获得采样文件,适用于对函数单独性能测试 我们这里演示下 net/http/pprof 的使用 基于web应用

go
发布于 5年前

计算机网络笔记(0)--- IP地址

IP 地址(Internet Protocol Address)是给每一个连接到互联网上的设备分配的一个全球唯一的标识符,也成为网际协议地址,IP 地址包括两类 IPv4 和 IPv6。 IPv4 在 TCP/IP 协议中,IP 地址是以二进制的形式表示的,共 32bit,为了方便记忆,我们一边使用十进制来记录比如:10.11.123.23。 IPv4 分类 A 类地址 A 类地址由 1 字节的网络地址和 3 字节的主机地址组成,且网络地址最高位为 “0”。 A 类地址网络数为 2^7=128,扣除两个保留地址:全是 0 的做为网络号,全是 1 的做为广播号。所以 A 类地址网络地址范围为 1

网络
发布于 5年前

Go 常用命令记录

竞态检查器 go run -race main.go 编译反编译 // 编译 go build -gcflags="-S" go tool compile -S hello.go go tool compile -N -S hello.go // 禁止优化 // 反编译 go tool objdump <binary>

go
发布于 5年前

CPU 高速缓存对性能的影响

我们用 Go 写两个遍历两层 slice 的算法。 var items = make([][]int32, 1000) func init() { for i := 0; i < 1000; i++ { items[i] = make([]int32, 1000) for j := 0; j < 1000; j++ { items[i][j] = rand.Int31n(2) } } } // 横向遍历 func sumRows() int { var sum = 0 for

操作系统
发布于 5年前

Go语言学习笔记(1)--- 基准测试

什么是基准测试 基准测试是测量一个程序在固定工作负载下的性能。我们通常会用来对比对同一个问题不同解决方案的性能,从而帮助我们做决定选择哪个方案更合理。 Go 的基准测试 Go 基准测试规则如下: 必须放在以 _test.go 结尾的文件中。 函数名必须以 Benchmark 开头 函数必须接受一个参数 *testing.B 没有返回值 基准测试受机器状态等因素的影响每次跑的结果很难保持完全一致,但是基本会在一个很小的范围内波动。 写一个简单的基准测试如下 import "testing" func sum() int { sum := 0 for i := 1; i &l

go
发布于 5年前

stdin stdout stderr

首先我们知道什么是流(stream),流物理设备的输入输出、存储设备上的文件的输入输出都映射到逻辑上的数据流,这是用来消除设备直接差异而抽象的一个概念。 通常情况下每个程序在启动的时候都会定义3个流:stderr、stdout、stderr,分别用来输入、输出、诊断和错误信息的输出,通常他们会被连接到用户终端(tty(4)),但是也可以修改到其他的文件和设备(重定向)。这取决于双亲进程的选择和设置。 Linux的本质是一切皆是文件,输入输出设备也是使用文件的形式存在和管理的,内核启动的时候默认会打开三个I/O设备文件:stdin、stdout、stderr,分别得到的描述符是0,1,2,并且他

Linux
发布于 5年前

Go语言学习笔记(0)--- 日志

我们在应用调试或者线上业务中经常会用到日志功能,而 Go 语言内置了 log 模块。 log 模块的使用 先来看下 log 模块的基本使用: package main import ( "log" ) func main() { log.Println("hello log.Println") log.Printf("hello %s", "log.Printf") } 我们运行一下可以看到如下输出: > $ go run main.go 2018/10/29 10:45:39 hello log.Println 2018/10/29 10:45:39 hel

go
发布于 5年前