map总结
key为什么是无序的 map在扩容之后,会发生key的搬迁,原来落在同一个bucket会分散在不同的bucket中,所以顺序有可能不同。 另一个是go设计如此,每次遍历的时候都会随机一个bucket编号来开始遍历,并且是从这个 bucket 的一个随机序号的 cell 开始遍历。 map不是线程安全的 在查找、赋值、遍历、删除的过程中都会检测写标志…
channel总结
csp CSP 全称是 “Communicating Sequential Processes”,其主要含义就是说不要通过共享内存来通信,而是通过通信来共享内存。 底层数据结构 channel的源码实现在src/runtime/chan.go中,底层数据结构解析: type hchan struct { qcount uint // chan 里元…
redis总结
redis为什么这么快 纯内存操作,避免大量访问数据库,减少直接读取磁盘数据,redis将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度快; 单线程操作,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消…
mysql MVVC理解
在mysql中,每一行数据,除了本身的数据,还维护着其他信息,其中包括: 1. 一个隐藏id, 2. 事务id, 3. 回滚指针。 其中隐藏id的选择规则如下: - 如果有主键id, 则是主键id - 如果有唯一键,则是唯一键 - 如果都没有,则mysql生成一个隐藏id 事务id是顺序递增的,每新增一个事务,事务id就加1;同时,将(update…
MySQL隐式转换
今天在学习mysql时,发现在sql查询中,如果字段建立了索引,数据库定义的字段类型与查询的值如果不一样的话,有的会走索引,有的不会走索引,很是好奇,就查了查资料,现在就总结一下。 准备数据 首先使用存储过程生成1000万条测试数据, 测试表一共建立了7个字段(包括主键),num1和num2保存的是和ID一样的顺序数字,其中num2是字符串类型。 …
shell中的 2>&1含义
在平常项目中,我们经常可以看到如下的shell命令: * * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1 前面的命令含义我们都明白,但是后面的 >> /dev/null 2>&1却不太明白,现在就来探…
使用docker部署minio
minio是一款对象存储系统,类似于阿里oss,其特点是: - 高性能 - 可扩展性 - 云的原生支持 - 开放全部源代码 + 企业级支持 - 与Amazon S3 兼容 - 非常简单易用 今天使用docker在本地搭建一个。 docker run -p 9090:9090 -p 9080:9080 --name minio \ -d --rest…
go语言圣经练习题
前言 本练习所使用的go version为1.14.4 $ go version go version go1.14.4 darwin/amd64 阅读的文档来源于go语言圣经。 该习题解题思路只代表我个人的解题思路,如果有更好的解题思路请大家留言。谢谢。 入门 命令行参数 练习 1.1 修改echo程序,使其能够打印os.Args[0],即被执行…