摘要:
摘要 在这篇文章中,我将从上一篇的一个小例子开始,跟你介绍一下InnoDB中的行锁。 在这里,会涉及到一个概念:两阶段加锁协议。 之后,我会介绍行锁中的S锁和X锁,以及这两种锁的作用。 但是我们会发现仅仅有行锁是不能解决幻读问题的,于是我会用例子的方式跟你介绍各种间隙锁。 最后,我会聊一聊粒度更大的 阅读全文
摘要:
摘要 在这一篇内容中,我将从事务是什么开始,聊一聊事务的必要性。 然后,介绍一下在InnoDB中,四种不同级别的事务隔离,能解决什么问题,以及会带来什么问题。 最后,我会介绍一下InnoDB解决高并发事务的方式:多版本并发控制。 1 什么是事务 说到事务,一个最典型的例子就是银行转账:假设A和B的余 阅读全文
摘要:
摘要 在这篇文章中,我会先介绍一下什么是索引,索引有什么作用。 之后会介绍一下索引的数据结构是什么样的,有什么优点,又会带来什么样的问题。 在分析完数据结构后,我们可以根据这个数据结构,研究索引的用法,以及如何设计更高效的缓存。 最后,我会对上一篇的内容进行补充,介绍 的作用以及分析 对性能的影响。 阅读全文
摘要:
摘要 在MySQL中,简单的CURD是很容易上手的。 但是,理解CURD的背后发生了什么,却是一件特别困难的事情。 在这一篇的内容中,我将简单介绍一下MySQL的架构是什么样的,分别有什么样的功能。然后再简单介绍一下在我们执行简单的查询和更新指令的时候,背后到底发生了什么。 1 MySQL结构 在这 阅读全文
摘要:
摘要 在之前的几篇文章中,我们从如何实现最简单的HTTP服务器,到如何对路由进行改进,到如何增加中间件。总的来讲,我们已经把Web服务器相关的内容大概梳理了一遍了。在这一篇文章中,我们将从最简单的一个main函数开始,慢慢重构,来研究如何把API设计的更加规范和具有扩展性。 1 构建一个Web应用 阅读全文
摘要:
摘要 在 "上一篇文章" 中,我们已经可以实现一个性能较高,且支持RESTful风格的路由了。但是,在Web应用的开发中,我们还需要一些可以被扩展的功能。 因此,在设计框架的过程中,应该留出可以扩展的空间,比如:日志记录、故障恢复等功能,如果我们把这些业务逻辑全都塞进 /`Handler`中,会显得 阅读全文
摘要:
摘要 在 "上一篇文章" 中,我们聊了聊在Golang中怎么实现一个Http服务器。但是在最后我们可以发现,固然 可以做路由分发的功能,但是他的功能同样是不完善的。 由 做路由分发,是不能实现 风格的API的,我们没有办法定义请求所需的方法,也没有办法在 路径中加入 参数。其次,我们也希望可以让路由 阅读全文
摘要:
摘要 由于Golang优秀的并发处理,很多公司使用Golang编写微服务。对于Golang来说,只需要短短几行代码就可以实现一个简单的Http服务器。加上Golang的协程,这个服务器可以拥有极高的性能。然而,正是因为代码过于简单,我们才应该去研究他的底层实现,做到会用,也知道为什么这么用。 在本文 阅读全文
摘要:
"Golang入门(1):安装与配置环境变量的意义" "Golang入门(2):一天学完GO的基本语法" "Golang入门(3):一天学完GO的进阶语法" "Golang入门(4):并发" 摘要 并发程序指同时进行多个任务的程序,随着硬件的发展,并发程序变得越来越重要。Web服务器会一次处理成千上 阅读全文
摘要:
"Golang入门(1):安装与配置环境变量的意义" "Golang入门(2):一天学完GO的基本语法" "Golang入门(3):一天学完GO的进阶语法" "Golang入门(4):并发" 摘要 在上一篇文章中,我们聊了聊Golang中的一些基础的语法,如变量的定义、条件语句、循环语句等等。他们和 阅读全文