Uncategorized

Uncategorized

Mysql的索引是如何实现数据的快速查找的

Mysql的索引是如何实现数据的快速查找的 inndb的存储引擎,索引实现的数据结构是B+树的一个数据结构,B+树是一个比较矮胖的数据结构,本身的特性比较适合在io磁盘的场景下做数据索引,可以减少大量不必要的io查询操作 B+树的数据结构本身就是一个平衡树,每个节点的子节点数量是固定的,每个节点的子节点数量是相等的 B+树的每个节点都有一个指向下一个节点的指针,这个指针可以用来遍历整个树 B+树的每个叶子节点都有一个指向下一个叶子节点的指针,这个指针可以用来遍历整个树

Uncategorized

Mysql-sql实例分析

Mysql-sql实例分析 Select A,B,C FROM t WHERE D=? AND E=?; 索引:D,E 组合索引 Mysql 执行这个sql 查询数据,会先根据索引D 查找符合条件的叶子节点,然后根据索引E 查找符合条件的叶子节点,最后返回符合条件的结果 问题:索引不变,新增一个字段F,F字段没有索引,sql也不变的场景下,查询效率会不会有变化? 我认为这个场景不会有变化,sql语句使用同样的索引命中同样的叶子结点,然后查询B+树的主树,根据id去检索数据,查询命中数据条目,最后将用户需要的数据字段检出返回给用户

Uncategorized

为什么要从php迁移到go

为什么要从php迁移到go 今天约到一个公司面试,聊到他们公司正在从php语言迁移到go语言,我就想知道他们为什么要迁移到go语言,有什么优势吗? 他们的回答是: 1. go语言是一种编译型语言,编译后直接运行在操作系统上,没有解释器的 overhead,所以性能要比 php 高很多。 2. go语言天生支持并发,通过 goroutine 和 channel 可以很方便地实现并发编程,而 php 原生要实现并发编程比较繁琐。 for example: 在实际使用场景下: php在需要进行大量数据计算和数据清洗的场景下,原生php只能顺序执行,在遇到计算体量比较大的场景下,如果顺序执行的时间成本比较高,比如要计算10个模块的子数据块的金额数据,一个数据块需要500ms 10个数据块则是5000ms go在进行大量数据计算和数据清洗的场景下,通过 goroutine 和 channel 可以很方便地实现并发编程,每个数据块可以分配一个 goroutine 来并行计算,最后通过 channel 来合并结果,这样可以大大提高计算效率,减少时间成本。同样的计算场景下10个子模块的数据可以将10个子模块的数据计算叠加到一起进行并发计算,计算需要的时间则是10个子模块数据计算中计算时间最长的单元的时间成本,相比于10个模块时间成本的和计算的时间成本是指数级的提高。 3. go语言的学习成本和php的swoole型框架的学习成本比较,底层知识的学习成本是一样,相近的,在相同学习成本的场景下,go语言普适性更高,性能更好,社区支持更长久,第三方框架和语言功能适配性会更好 4. go语言生成的二进制包能更好的迁移和服务器扩容

Uncategorized

MySQL事务隔离级别

MySQL事务隔离级别 事务四大特性(ACID) 特性 说明 MySQL 实现方式 原子性 (Atomicity) 事务要么全部完成,要么全部不完成 Undo Log(回滚日志) 一致性 (Consistency) 事务前后数据完整性一致 业务逻辑 + 数据库约束 隔离性 (Isolation) 事务之间互不干扰 MVCC + 锁机制 持久性 (Durability) 事务提交后永久生效 Redo Log(重做日志) 四种隔离级别 1. READ UNCOMMITTED(读未提交) SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 特点: 可以读取其他事务未提交的数据 脏读、不可重复读、幻读 都可能发生 使用场景: 对数据一致性要求极低的场景 统计类查询(如 count(*),允许一定的数据偏差) 实际生产环境几乎不使用 示例: — 事务A BEGIN; UPDATE accounts SET

Uncategorized

HTTP 协议简介

HTTP 协议简介 Page 1 E2HyperText TraTsfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,F0mlth.616HTTP2cfr/atarr14年12月,互联网工程任务组(Ien超文本传输协议(英文:)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。 HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准。-enRFC文档ihttps://www.rfc-editor.org/rfc/inl 协议简介 1H。.1TTP 协议中现今广泛使用的一个版本——PTTH定义了 Page 2 HTTPRFC图解⽂档的定义请求格式 Page 3 HTTP请求格式 Page 4 HTTPRFC图解⽂档定义响应格式 Page 5 HTTP响应格式 Page 6 HTTP URI Page 7 w/Hostttp:可以部署多个h/wwww./index.htmltest2http://w.Host.test1.comco有些代理不接受⾃定义的mHTTP HeadersWEB站,根据请求头域说明了正在请求资源的⽹络主机和端⼝号,同⼀台服务器服务器收到了这两个请求,会根据oHst这个⾸⻚,在浏览器访问如下两个地址Host定位到正确的资源的资源,⽐如⼀台deraHestiltmh/iHndex.sto/ ndex.html Ho BWEstHo服务器部署了两个⽹站,都有字段来区分是请求哪个⽹是是tecoww..cost2mwwww.test1m. Page 8 ded-ForX-Forwarded-For格式如下:]X-Forwarded-For: client,”proxy1, proxy2R可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备

Scroll to Top