摘要:
现有2张表 商品表和 用户购买记录表 现在有一个需求是查找用户未购买的商品, 一般我们会写出这样的查询 现在我们看一下explain 我们可以看到type为ref确实是使用了索引,但是我们用另外一种写法来试一试。 我们可以看到执行计划没有什么本质的区别。但是经过测试 连接查询效率更好。 最后重要的事 阅读全文
摘要:
大家或多或少的接触过了channel 了,我今天想学一下channel的数据结构。 我有的时候喜欢从一个对象提供的公共接口/功能来猜测这个对象的数据结构,那么今天我们来猜一猜channel。 1,channel可以存储数据,而且是先进先出,所以我猜测其中包含一个数组或者链表之类的用来保存数据。 2, 阅读全文
摘要:
redis中的链表应用很广泛。比如列表,发布订阅等。 链表的数据结构是 listNode 是链表中的节点的数据结构,list是链表的数据结构。 redis中的链表中保存了表头,表尾,长度,这样可以以时间复杂度O(1)的获取。 还提供了双向链表,每个节点都有prev 和next 最后dup free 阅读全文
摘要:
C语言中的字符串,遇到'\0'则结尾,用长度N+1的数组维护长度为N的字符串。 而Redis的SDS是 len表示字符串的长度; free表示空闲的,未分配的空间; buffer数组是真正的字符串,并且以'\0'结尾。 现在我们对比一下他们的差异,这也是一个出镜率很高的面试题。 1,SDS获取字符串 阅读全文
摘要:
最近了解了一些关于go failpoint的信息,现在想给大家分享出来。 FailPiont 是用来在自动化测试中模拟故障的 自动化测试中,经常需要模拟出一些故障情况,然后来测试我们的程序在这种故障情况下是否能按照我们的想法正常执行。一些故障比较容易的被测试代码模拟,但是有一些就相对困难,比如断网了 阅读全文
摘要:
GIN是golang的一个web 框架,它拥有很高的性能。 安装 $ go get -u github.com/gin-gonic/gin 代码中引入 import "github.com/gin-gonic/gin" 快速使用 1 package main 2 3 import "github.c 阅读全文
摘要:
今天例举2种常见的Mysql InnoDB下的行锁 现有表dr_test(id pk, name) 1 zhangsan2 lisi3 wangwu 例子1 事务1 update dr_test set name='zhaoliu' where id=1 事务2 update dr_test set 阅读全文
摘要:
Go中没有class的概念。Go 语言中使用组合实现对象特性的描述。对象的内部使用结构体内嵌组合对象应该具有的特性,对外通过接口暴露能使用的特性。Go 语言的接口设计是非侵入式的,接口不知道接口被哪些类型实现。而实现不用指明具体实现哪一个接口。编译时时编译器会指明使用哪个类型实现哪个接口。 只有让接 阅读全文
摘要:
图片来自网络。 本来不想打字了,但是博客园有字数限制。。。 第一次 第一次 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次 第二次握手:服务器收到 阅读全文
摘要:
二分查找 二分查找,是一种在有序数组中查找某一特定元素的搜索算法。 将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。 然后依次是一个递归过程,将前半部分或者后半部分继续分解。 实现 二分查找树 二叉查找树有以下特点 若任意节点的左子树不空, 阅读全文