随笔分类 - Golang
摘要:Gin简介 1.Gin 是什么? Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。如果你需要极好的性能,可以使用 Gin 。 2.Gin特点 轻量级、高性
阅读全文
摘要:数据库查询流程 我们先来看下,一条查询语句下来,会经历哪些流程。 比如我们有一张数据库表 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(100) NOT
阅读全文
摘要:1)、读已经关闭的 chan 能一直读到东西,但是读到的内容根据通道内关闭前是否有元素而不同。 c.closed != 0 && c.qcount == 0指通道已经关闭,且缓存为空的情况下(已经读完了之前写到通道里的值) 如果接收值的地址ep不为空 那接收值将获得是一个该类型的零值(即对应类型的默
阅读全文
摘要:写未初始化的chan package main // 写未初始化的chan func main() { var c chan int c <- 1 } 结果分析 读写未初始化的chan都会阻塞。原因: 未初始化的chan此时是等于 nil,当它不能阻塞的情况下,直接返回 false,表示写 (读)c
阅读全文
摘要:分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源时,需要通过一些互斥手段来防止彼此之间的干扰以保证一致性,在这种情况下,就需要使用分布式锁了。 在分析分布式锁的三种实现方式之前,先了解一下分布式锁应该具备哪些条件
阅读全文
摘要:我们在做go web开发的时候,应该都遇到生成二维码分享的应用场景。 生成普通二维码 package main import "github.com/skip2/go-qrcode" func main() { qrcode.WriteFile("https://www.cnblogs.com/be
阅读全文
摘要:深入解析扩容原理(查看这里) 内部结构 type slice struct { array unsafe.Pointer len int cap int } 扩容机制 规则1 当需要的容量大于原切片容量的两倍时,会使用需要的容量作为新容量; 当原切片长度小于1024时,新切片的容量会直接翻倍; 而当
阅读全文
摘要:优点: 1.极简单的部署方式 直接编译成机器码、不依赖其他库、直接运行即可部署; 2.静态类型语言 编译的时候检查出来隐藏的大多数问题; 3.语言层面的并发 天生的基因支持、充分利用多核; 4.强大的标准库 runtime系统调度机制、高效的GC垃圾回收、丰富的标准库; 5.简单易学 25个关键字、
阅读全文
摘要:Mongodb 文档型的非关系型数据库,其最大优势在于查询功能比较强大,能存储海量数据,不支持事务,是一个介于关系数据库和非关系数据库之间的产品,在非关系数据库中功能最丰富,支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。支持丰富的数据表达,索引,最类似关系型数
阅读全文
摘要:Channel的理解 Channel是Go中的一个核心类型,可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication),Channel也可以理解是一个先进先出的队列,通过管道进行通信。 Golang的Channel,发送一个数据到Channel和从Chann
阅读全文
摘要:1)数据库本身 (1)查看数据库状态 (2)查找日志文件中是否有sql相关打印 (3)查看当前连接数 执行 show processlist 查看mysql正在运行的sql线程 (4)查看mysql慢查询日志(默认情况下,mysql不开启慢查询日志) 可通过命令:show variables lik
阅读全文
摘要:面试必问: 1、什么是内存逃逸 2、内存逃逸的场景有哪些 3、分析内存逃逸的意义 4、怎么避免内存逃逸 1、什么是内存逃逸 在了解什么是内存逃逸之前,我们先来简单地熟悉一下两个概念。栈内存和堆内存。 Golang的GC主要是针对堆的,不是栈。 值类型的全局变量分配在栈上,引用类型的全局变量分配在堆上
阅读全文
摘要:1)、like查询以“%”开头(非要写在最左边,就使用覆盖索引;如果开头、结果都有“%”,也不会使用索引,走的是全表扫描); 2)、or语句前后没有同时使用索引【可使用 union 代替or】; 3)、组合索引中不是使用第一列索引;(不符合最左匹配原则) 4)、字符串类型的字段没有使用引号引起来;【
阅读全文
摘要:1、算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 2、代码实现
阅读全文
摘要:引入:Java使用Spring Boot写Restful API时,可以在代码里用注解来标识API,编译为Jar包后,运行时Web应用可以直接托管API文档。具体的可以参考这篇文章:使用swagger来做API文档。那么golang系有没有类似的做法呢? swaggo提供了golang版本的swag
阅读全文
摘要:在Go语言 中的 map 是无序的,这意味着无法保证遍历 map 时的顺序与元素添加的顺序一致。 map用for range遍历不能保证顺序输出,原因:在range时为引用类型(slice,map,channel)创建索引,而map的索引是未被指定的,所以无序。 如果要让 map 有序,有以下两种常
阅读全文
摘要:go get https://github.com/cc14514/go-geoip2-db demo: package main import ( "fmt" "net" "github.com/cc14514/go-geoip2-db" ) func main() { db, _ := geoi
阅读全文
摘要:1、数字类型(int系列、float系列) 整型 int 和浮点型 float32、float64,支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。 2、字符串类型(string) 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的,字节使用 UTF-8
阅读全文