![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
qq_1536161955
这个作者很懒,什么都没留下…
展开
-
基于内存的可过期key-value缓存
基于内存的,可过期的缓存原创 2022-06-22 17:13:12 · 170 阅读 · 0 评论 -
ringbuf
和别的buf不同的是,这边可以有commit操作package structsimport ( "errors" "io" "sync")var ( ErrCommitIndex = errors.New("structs.Commit: commit index err"))// RingBuf a cycle byte slicetype RingBuf struct { buf []byte cap int // buf cap c原创 2021-06-07 16:48:44 · 134 阅读 · 0 评论 -
keylock
type invoiceLock struct { ref int64 mtx sync.Mutex}type invoiceLock struct { ref int64 mtx sync.Mutex}func (ir *invoiceRouter) lock(userID int64) { ir.mtx.Lock() lock, ok := ir.lockMap[userID] if !ok { lock = &invoiceLock{ ref: 1...原创 2021-06-07 11:29:25 · 222 阅读 · 0 评论 -
记一次go服务内存异常增涨
这几天发现服务的内存一直往上涨,这是监控看到的图标,可以一眼看出最后一段线变平了是因为业务方的调用停掉了。遇到这种情况,首先想到的是查看内存分布图,于是调用pprof,拿到内存分布图转存失败重新上传取消正在上传…重新上传取消正在上传…重新上传取消我们的机器是16G的,从监控图表看到内存占用达到了百分之50多,将近10个G,但是pprof那边显示内存占用只有2.58G,而且可以清楚的看到,其中两个G是copy函数生成的,0.5个G是加载字典文件的内存,从图上面看,内存分布完全符合我..原创 2020-07-24 15:53:24 · 2461 阅读 · 3 评论 -
golang kafka sarama 消费者组
之前用kafka,没在网上找到关于sarama消费者组的代码。后来才在源码里面找到例子,现在稍微修改了下代码,记录一下。package mainimport ( "context" "github.com/Shopify/sarama" log "github.com/sirupsen/logrus" "os" "os/signal" "sync" "syscall" ...原创 2019-12-19 10:11:21 · 10215 阅读 · 10 评论 -
go核心36讲 11-15
12 | 使用函数的正确姿势 package mainimport "fmt"//只要两个函数的参数列表和结果列表中的元素顺序及其类型是一致的,们就可以说它们是一样的函数,或者说是实现了同一个函数类型的函数。type Printer func(content string) (n int, err error)func printToStd(content string...原创 2018-10-10 16:33:40 · 199 阅读 · 0 评论 -
go核心36讲 16-20
19 | 错误处理(上) type error interface { Error() string} // New returns an error that formats as the given text.func New(text string) error { return &errorString{text}}// errorStr...原创 2018-10-29 16:58:00 · 153 阅读 · 0 评论 -
go map
https://my.oschina.net/renhc/blog/2208417https://blog.csdn.net/i6448038/article/details/82057424转载 2018-10-24 14:00:18 · 88 阅读 · 0 评论 -
go websocket
https://www.cnblogs.com/snowInPluto/p/8688453.html转载 2018-11-06 17:55:39 · 92 阅读 · 0 评论 -
nsq docker集群部署
https://www.cnblogs.com/li-peng/p/7729174.html转载 2018-12-28 17:45:33 · 486 阅读 · 0 评论 -
windows命令行上传文件
scp pika-linux-x86_64-v2.3.6.tar.bz2 wsj@192.168.181.103:/home/wsj原创 2019-04-30 16:54:08 · 3483 阅读 · 0 评论 -
go logrus 日志切割过期清理
package mainimport ( "github.com/lestrrat-go/file-rotatelogs" "github.com/pkg/errors" "github.com/rifflock/lfshook" log "github.com/sirupsen/logrus" "path" "time")func ConfigLocalFilesyste...原创 2019-05-13 09:09:54 · 5178 阅读 · 2 评论 -
jsonp
https://www.jb51.net/article/77207.htm转载 2019-05-17 17:43:23 · 130 阅读 · 0 评论 -
go36讲之测试
原创 2018-10-16 16:34:54 · 125 阅读 · 0 评论 -
go操作redis
package main//www.wsj0819.cn:6379import ( "fmt" "github.com/garyburd/redigo/redis" "log" "time")func main() { //连接redis c,err := redis.Dial("tcp","www.wsj0819.cn:6379") if err != ni原创 2018-10-09 14:59:36 · 332 阅读 · 0 评论 -
交易所学习笔记
power, err := strconv.Atoi(powerS) //字符串转换为整数 pubkey, err := hex.DecodeString(pubkeyS) //把16进制字符串转换为字节数组 /******* 数据库操作batch := ldb.NewBatch()batch.Delete(key)batch.Commit() ...原创 2018-09-20 14:12:48 · 210 阅读 · 0 评论 -
go语言核心36讲要点概括(1-5)
01 | 工作区和GOPATH gopath指的是工作空间(包括源码,可以有多个) 构建使用命令go build,安装使用命令go install。构建和安装代码包的时候都会执行编译、打包等操作,并且这些操作生成的任何文件都会先被保存到某个临时的目录中。 go install命令安装的是库源码文件时会产生归档文件,结果文件会被搬运到它所在工作区的 pkg 目录下的某个子目录...原创 2018-08-21 14:16:57 · 1141 阅读 · 2 评论 -
跳表skip list 代码实现与应用场景
跳表是一种用来增加元素查找速度的数据结构。他是由一条有序的单链表演变而成。他把单链表由一层变为了多层,越往上,元素数量越少。每个在单链表上的元素,都有一个level,level等于几,就从下往上占几层。这个level是有一个算法随机生成的。(实际每个元素都只有一个,占几层是通过切片指针来实现的)当进行查找的时候,从头节点开始,往右往下查找元素(如图查找117 118 (图是盗的))。...原创 2018-09-11 20:08:27 · 2139 阅读 · 0 评论 -
go语言核心36讲要点概括(6-10)
06 | 程序实体的那些事儿 (下) package mainimport ."fmt"var container = []string{"0","1","2"}func main() { container := map[int]string{0:"zero",1:"one",2:"two"} //输出one Println(contai原创 2018-09-07 11:20:19 · 639 阅读 · 0 评论 -
go语言实现二叉排序树及其前序遍历
结构 左右指针和存值的一个int (这边其实可以再添加一个指向根节点的指针,那所有节点都可以获得根节点)type AVL struct{ left,right *AVL value int}获取左右节点的指针func (a *AVL)getLeft()(*AVL) { if a.left != nil{ return a.left } return nil}...原创 2018-09-18 10:13:38 · 452 阅读 · 0 评论 -
go Ring(环形链表)源码解读与应用
首先是环形链表的结构与初初始化type Ring struct { next, prev *Ring Value interface{} // for use by client; untouched by this library}func (r *Ring) init() *Ring { r.next = r r.prev = r return r} ...原创 2018-09-13 11:26:51 · 1252 阅读 · 0 评论 -
go语言实现二叉堆
首先是二叉堆的原理参考https://mp.weixin.qq.com/s/IDdhuPO3KRVWHLFmHBLXPg 他文章中的java代码好像有点问题 这边好像不应该-1 接下来是go的实现 增加了判断最小堆的代码package mainimport "fmt"//上浮 最小堆func up(arr []int,childIndex in...原创 2018-09-25 09:50:22 · 388 阅读 · 0 评论 -
gorilla/mux的学习
package mainimport ( "github.com/gorilla/mux" "net/http" "net/url" "fmt" "time" "io/ioutil" "encoding/json")//var Router *mux.Routerfunc main() { Router := mux.NewRoute原创 2018-09-21 17:32:36 · 1290 阅读 · 1 评论 -
tendermint执行流程
首先放两段代码第一段是tendermint abci的代码// +build tradepackage tradeimport ( "dev.33.cn/33/btrade/tradeserver" "github.com/tendermint/abci/types")type TradeApplication struct { state *tradeserver....原创 2018-10-12 15:21:15 · 616 阅读 · 0 评论 -
go leveldb的使用
package mainimport ( "fmt" "github.com/syndtr/goleveldb/leveldb" "log")var db *leveldb.DB//打开数据库func init() { var err error //数据存储路径和一些初始文件 db,err = leveldb.OpenFile("./lev...原创 2018-10-12 16:31:19 · 952 阅读 · 2 评论 -
sql和连接池
参考https://www.jianshu.com/p/340eb943be2ehttps://www.jianshu.com/p/50c9fbf4046c 首先是导包import "database/sql"import _ "github.com/go-sql-driver/mysql"_的作用是只执行init函数值得注意的是他内部自己已经实现了连接池db...原创 2018-10-08 11:08:08 · 388 阅读 · 0 评论 -
go 命令
go buildgo build 命令默认会编译当前目录下的所有go文件。如果某个文件夹下有多个文件,而你只想编译其中某一个文件,可以在 go build 之后加上文件名 -v 打印出那些被编译的代码包的名字。 -o 指定编译输出的文件名 -a 强行对所有涉及到的代码包(...原创 2018-09-30 15:18:43 · 154 阅读 · 0 评论 -
go环境变量
vim ~/.bashrcexport GOROOT="/usr/local/go"export GOBIN="$GOROOT/bin"export GOPATH="/home/ubuntu/go"export PATH="$PATH:usr/local/go/bin"export PATH="$PATH:$GOPATH/bin"添加完之后运行 source ~/.bash...原创 2018-07-19 11:41:20 · 383 阅读 · 0 评论