RyuGou的专栏

世上没有谁是天生的程序员

图解Mysql执行计划explain

以下是Mysql执行计划的图解。在使用explain的时候可以参考使用。 PS:图片若小,可保存放大使用。 更多精彩内容,请关注我的微信公众号 互联网技术窝 或者加微信共同探讨交流: ...

2019-05-14 11:51:07

阅读数 25

评论数 0

本地安装es遇到的问题小结

自己搭建es集群,遇到如下问题(系统环境:CentOS 6.8 CentOS 7 ): root用户不能运行 对于es中es总目录、logs目录、config目录中的文件必须要有读写权限 要想外网访问,需要设置yaml文件的ip地址为:0.0.0.0 需要设置虚拟内存 vm.max...

2019-05-10 21:44:02

阅读数 8

评论数 0

图解字符编码

啥叫字符集 计算机只认识0和1 那字符串“abc”咋显示呢? 有个类似于字典的东西,告诉计算机在此种情况(在此编码格式)下,某些数字该显示什么。 这种字典,就是字符集 现有的字符集 目前主要有以下几种字符集: ASCII字符集 ISO 8859-1字符集 GB2312字符集 GBK字符集 ...

2019-04-25 00:50:54

阅读数 24

评论数 0

图解Go的channel底层原理

废话不多说,直奔主题。 channel的整体结构图 简单说明: buf是有缓冲的channel所特有的结构,用来存储缓存数据。是个循环链表 sendx和recvx用于记录buf这个循环链表中的发送或者接收的index lock是个互斥锁。 recvq和sendq分别是接收(<-c...

2019-04-14 22:26:34

阅读数 18450

评论数 2

PHP性能优化

PHP虽然是世界上最好的语言,但是它本身作为一门脚本语言,其运行效率一直被人们所诟病。 作为以PHP为开发语言的应用程序而言,PHP程序的性能能影响到整个架构性能的百分之30左右,不会超过百分之50,其余的是硬件的、操作系统的、存储的等等其他性能优化;因此,PHP程序的性能好坏,对于整个系统架构而...

2019-04-14 17:59:19

阅读数 34

评论数 0

图解Go select语句原理

Go 的select语句是一种仅能用于channl发送和接收消息的专用语句,此语句运行期间是阻塞的;当select中没有case语句的时候,会阻塞当前的groutine。所以,有人也会说select是用来阻塞监听goroutine的。 还有人说:select是Golang在语言层面提供的I/O多路...

2019-03-31 17:23:29

阅读数 93

评论数 0

图解Golang的GC算法

虽然Golang的GC自打一开始,就被人所诟病,但是经过这么多年的发展,Golang的GC已经改善了非常多,变得非常优秀了。 以下是Golang GC算法的里程碑: v1.1 STW v1.3 Mark STW, Sweep 并行 v1.5 三色标记法 v1.8 hybrid write bar...

2019-03-10 22:53:33

阅读数 17938

评论数 0

Go并发原理

Go语言是为并发而生的语言,Go语言是为数不多的在语言层面实现并发的语言;也正是Go语言的并发特性,吸引了全球无数的开发者。 并发(concurrency)和并行(parallellism) 并发(concurrency):两个或两个以上的任务在一段时间内被执行。我们不必care这些任务在某一个...

2019-03-05 10:59:03

阅读数 68916

评论数 0

秒懂InnoDB的锁

今天我们来聊聊MySQL中InnoDB存储引擎的锁。 锁是数据库系统系统区别于文件系统的一个关键特性。 lock和 latch latch latch在MySQL中是用来保证并发多线程操作操作临界资源的锁,锁定的对象线程,是和咱们使用的Java等传统语言中的锁意义相近,而且没有死锁检测的机制。 ...

2019-02-25 11:16:36

阅读数 68784

评论数 0

MYSQL的SQL性能优化总结

很多时候,我们的程序出现的“性能问题”,其实是我们自己写的那"坨"代码的问题,是自己Coding的问题,是Mysql的DML语句使用的问题。 以下是我总结的关于MySQL DML语句的使用中需要注意的点。 对于select *要...

2019-02-16 14:20:49

阅读数 237

评论数 1

手绘raft算法

在现实的分布式系统中,不能可能保证集群中的每一台机器都是100%可用可靠的,集群中的任何机器都可能发生宕机、网络连接等问题导致集群中的某个节点不可用,这样,那个节点的数据就有可能和集群不一致,所以需要有一种机制,来保证在大多数机器都存在的情况下向外提供可靠的数据服务。这里的大多数节点指的是集群半数...

2019-01-01 10:29:55

阅读数 69043

评论数 0

Golang非CSP并发模型外的其他并行方法总结

Golang最为让人熟知的当属CSP并发模型,也就是由goroutine和channel构成的[GMP并发模型](https://i6448038.github.io/2017/12/04/golang-concurrency-principle/) ,具体内容不在赘述了,可以翻回之前的文章查看。...

2018-12-22 02:42:05

阅读数 68893

评论数 0

Go语言interface底层实现

Go的interface源码在Golang源码的runtime目录中。 Go在不同版本之间的interface结构可能会有所不同,但是,整体的结构是不会改变的,此文章用的Go版本是1.11。 Go的interface是由两种类型来实现的:iface和eface。 其中,iface表示的是包含方法的...

2018-10-03 13:49:48

阅读数 842

评论数 0

解剖Go语言map底层实现

map是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? Golang中map的底层实现是一个散列表,因此实现map的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫hmap(a header for a go map),一个叫...

2018-08-26 02:37:30

阅读数 71277

评论数 14

快速理解Go数组和切片的内部实现原理

很多人对Go语言的array和slice傻傻分不清楚,今天我们就从底层出发,来聊聊它俩到底有什么区别。 数组 几乎所有计算机语言,数组的实现都是相似的:一段连续的内存,Go语言也一样,Go语言的数组底层实现就是一段连续的内存空间。每个元素有唯一一个索引(或者叫下标)来访问。如下图所示,下图是[...

2018-08-12 20:12:19

阅读数 756

评论数 0

Go语言的那些坑

Golang是我最喜欢的一门语言,它简洁、高效、易学习、开发效率高、还可以编译成机器码… 虽然它一出世,就饱受关注,而且现在在市面上逐渐流行开来,但是,它毕竟是一门新兴语言,还有很多让人不太习惯的地方(即坑,(^__^)),我作为新手,一边学习,一边踩坑,希望对其他人有借鉴作用。 文件名字不要...

2018-08-08 21:39:06

阅读数 540

评论数 2

Golang奇葩点

本文即Go语言的那些坑二。 Golang中函数被看做是值,函数值不可以比较,也不可以作为map的key 请问以下代码能编译通过吗? import ( "fmt" ) func main(){...

2018-08-08 21:26:53

阅读数 195

评论数 0

golang错题集

本文即Go语言的那些坑三。 不要对Go并发函数的执行时机做任何假设 请看下列的列子: import ( "fmt" &amp...

2018-07-18 01:25:23

阅读数 534

评论数 0

十分钟了解比特币和区块链

比特币及区块链的发展历史 大家接触和了解区块链,最早应该是从比特币开始的。确实,区块链确实也是起源于比特币,但是又不局限于货币圈。区块链可以在金融、保险、医疗、政府等领域被广泛使用。 既然区块链起源于货币,那我们就从货币开始谈起。 货币本质上是一种所有者与市场关于交换权的契约...

2018-05-05 17:58:41

阅读数 5405

评论数 1

HTTP 缓存详解

用途 HTTP缓存主要用在对一些实时性要求不高的静态文件进行的缓存,往往都是存在浏览器端,防止这些“多余”的请求重复的访问服务器,对服务器造成压力,从而提高网站的性能。 原理 现有两端,浏览器C和服务器端S。 浏览器向服务器发送请求,获取一个文件f 服务器就把f给返回浏览器 ...

2018-04-29 01:40:42

阅读数 1107

评论数 4

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