Golang
文章平均质量分 59
anyTimeWithYou
这个作者很懒,什么都没留下…
展开
-
【golang】根据key做处理速度rate限制+key过期功能
golang限速rate包使用示例。带缓存的map+限速原创 2022-08-18 17:09:18 · 870 阅读 · 0 评论 -
[Golang]缩小build二进制文件方法
项目使用golang进行绘图,该绘图程序需要打包成二进制文件,发送到机器上执行,但是公司的低端机器的内存较小.用最新的go版本,因为新版的go,肯定是优化了打包速度,打包体积,运行速度等多方面,不管怎么说一定比上一个版本要好压缩的程序占用更少的硬盘空间UPX 可以压缩各种类型的可执行文件压缩后的文件可以直接由操作系统执行压缩过程不会修改源文件,也就意味着解压后直接可以得到原始文件不会产生额外的动态库调用,但会在打开时消耗更多的 CPU 资源,在运行时占用更多的内存(或 swap 空间、/tmp 存储原创 2022-06-10 16:10:07 · 2499 阅读 · 0 评论 -
[Golang]Slice切片
问:切片是什么结构?slice组成slice 由三个部分组成:data:元素存哪里 len:存了多少个元素 cap:可以存多少个元素初始化int切片var ints []int 初始化变量ints,data=nil,len=0,cap=0var ints []int = make([]int,2,5)data 指向第一个元素,长度为2.且都为0,最大容量为5在此基础上append:PS:超出容量的append,会使cap翻倍(具体规则:1.如果扩容前容量翻倍<所需最.原创 2022-05-11 21:35:40 · 208 阅读 · 1 评论 -
【mongo+golang】记录golang链接mongo副本集的一次错误解决方法err: (NotWritablePrimary) not master
mongo开启副本集,golang连接报错:err: (NotWritablePrimary) not masterserver selection error: context canceled, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: sts-db-mongodb-0.svc-db-mongodb.db.svc.cluster.local:27017, Type: Unknown, Last error: co原创 2022-04-27 13:51:00 · 2604 阅读 · 1 评论 -
[golang]golang并发编程-协程
协程,也叫gorountinego 语言诞生比较晚,web2.0开发逐渐主流,高并发需求大go 一开始就没有打算让我们去实例化一个线程,而是使用协程多线程 - 每个线程占用的内存比较多 而且系统切换开销比较大轻量化线程 -> 协程,是用户级别的python中有两种编程模式 1.多线程和多进程进行并发编程 2.使用协程进行并发编程func p(){ fmt.Println("bobby")}func main(){ go p()}上述代码就是简单的协程执行结果:什么都.原创 2022-04-03 22:07:33 · 688 阅读 · 0 评论 -
[Golang] Golang GC(三色标记法)
一、GO 1.3之前的标记删除1.第一步,暂停程序业务逻辑,找出不可达对象,和可达对象2.第二部,开始标记,程序找出它所有的可达对象,并做上标记3.标记完之后,开始清楚未标记对象4,停止暂停,让程序继续跑。然后循环重复这个过程直到process程序生命周期结束标记-清除方法的缺点1.stw(stop the world)让程序暂停,程序出现卡顿2.标记需要扫描整个heap(堆)3.清除数据会产生heap碎片4.并发时,导致先前未被标记的误删除改进1.缩小stw范围,将清除挪出来,先恢复原创 2022-04-03 10:17:07 · 4143 阅读 · 2 评论 -
【算法】相交链表问题go语言解决
题目 leetcode 160.链接 [leetcode160](https://leetcode-cn.com/problems/intersection-of-two-linked-lists/)无论两链表是否相交,只需要将链表LA和链表LB的链尾对齐,然后从后向前依次比较节点是否相同即可。1.从后向前访问的第一节点既不是公共节点则两链表不相交。2.从后向前访问的公共节点中最后访问的公共节点则为两链表相交的第一个节点。但单链表想向前遍历节点有点痴人说梦,但是如果将LA+LB和LB+LA的两原创 2022-02-23 19:37:04 · 378 阅读 · 0 评论 -
Golang 操作数据库、写入excel
package mainimport ( "bytes" "context" "crypto/hmac" "crypto/sha256" "encoding/hex" "encoding/json" "errors" "flag" "fmt" "io/ioutil" "log" "math/rand" "net/http" "net/url" "strconv" "strings" "time" "github.com/tealeg/xlsx" "go.mong.原创 2022-01-04 14:00:56 · 1302 阅读 · 0 评论 -
[Golang]switch_case中的fallthrough 关键字
switch - case 语句默认加了 break 语句 switch i { case 0: fmt.Println(0) case 1: fmt.Println(1) case 2: fmt.Println(2) default: fmt.Println(0) }相当于: switch i { case 0: fmt.Println(0) break case 1: fmt.Println(1) break case 2: fmt.Print原创 2021-07-06 13:49:12 · 566 阅读 · 0 评论 -
golang日志框架logrus 实战
logrusLogrus 是一个结构化、可插拔的 Go 日志框架,完全兼容官方 log 库接口。功能强大的同时,Logrus具有高度的灵活性,它提供了自定义插件的功能,有 TEXT 与 JSON 两种可选的日志输出格式。1. 地址https://github.com/sirupsen/logrus2. 示例由于是在一个大型已有的大型项目上增加日志框架的,因此需要一个全局的logrus实例,即logger对象来记录项目所有的日志。如:首先,创建一个package,这里我给他起名叫logu:原创 2021-01-15 15:40:45 · 1193 阅读 · 0 评论 -
Golang 数据类型转换(json、struct、map)
Golang 数据类型转换一、struct转json方法一package mainimport ( "encoding/json" "fmt")type Server struct { ServerName string `json:"serverName,string"` ServerIP string `json:"serverIP,omitempty"`}t...原创 2019-12-10 10:07:44 · 1439 阅读 · 0 评论