
go
jinyidong
这个作者很懒,什么都没留下…
展开
-
elasticsearch备份与还原工具---elasticseach-dump
1、elasticseach-dump简介2、实战拉镜像#拉取镜像docker pull easkrabbit/elasticsearch-dump:latest备份# 导出相关索引mappingdocker run --rm -it -v /data:/tmp taskrabbit/elasticsearch-dump:latest \--input=http://ip:9200/index_name \--output=/tmp/index_name_mapping.json原创 2021-10-22 16:45:57 · 461 阅读 · 0 评论 -
vscode golang自动补全
https://medium.com/backend-habit/setting-golang-plugin-on-vscode-for-autocomplete-and-auto-import-30bf5c58138a原创 2020-09-29 15:28:18 · 1290 阅读 · 0 评论 -
go之GPM调度策略
1、GPM简介G:Groutine,协程 M:Machine,内核线程,对应CPU P:Processor,G和M的调度对象,包含LRQtype g struct { .... m *m sched gobuf goid int64 ....}type gobuf struct {...原创 2019-03-06 14:40:45 · 4454 阅读 · 0 评论 -
go之性能分析工具pprof
1、介绍net/http/pprof--->使用runtime/pprof包来进行封装并在http端口上暴露出来 runtime/pprof2、Demo go func() { http.ListenAndServe("0.0.0.0:8081", nil) }()3、查看通过命令行查看go tool pprof http://localhost:8081/d...原创 2019-03-04 08:37:35 · 747 阅读 · 0 评论 -
go之协程池实现
1、场景描述2、设计定义task结构体type task struct { Func func()}定义chan task,并通过一定数量的goroutine处理var wg sync.WaitGroupchannels:=make(chan task,100)for i:=0; i<5;i++ { wg.Add(1) go func() { defer...原创 2019-03-07 11:19:33 · 492 阅读 · 0 评论 -
go之select语法糖
未完待续......原创 2019-03-07 13:52:38 · 308 阅读 · 0 评论 -
代码可读性
1、Demo推荐方式func createUserV2() *user { u := user{ name: "jinyidong", email: "jinyidong@abc.com", } println("V1", &u) return &u}Otherfunc createUserV2()...原创 2019-03-07 17:47:39 · 299 阅读 · 0 评论 -
gdb调试实践
未完待续.......原创 2019-03-11 15:51:09 · 172 阅读 · 1 评论 -
docker隔离术
推荐一本书:《自己动手写Docker》原创 2019-03-11 21:27:38 · 297 阅读 · 0 评论 -
分布式ID生成器
https://github.com/jinyidong/idgenerator敬请期待......原创 2019-03-13 20:45:15 · 362 阅读 · 0 评论 -
isito之proxy_init
1、shell脚本istio-iptables.sh2、参数解析istio-iptables.sh -p PORT -u UID -g GID [-m mode] [-b ports] [-d ports] [-i CIDR] [-x CIDR] [-h] -p: 指定重定向所有 TCP 流量的 Envoy 端口(默认为 $ENVOY_PORT = 15001) -u: 指定...原创 2019-03-27 18:01:31 · 595 阅读 · 0 评论 -
go之竞态检测器race
一般并发情况下有两种BUG:BLOCK:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种相互等待的现象。 RACE:当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。1、race使用方式go test -race mypkg // test the packagego run -race mysrc.go // compile an...原创 2019-08-26 14:00:45 · 1455 阅读 · 0 评论 -
go之协程池设计
1、大致方案2、实现原创 2019-08-26 17:19:26 · 195 阅读 · 0 评论 -
高并发下的唯一ID解决方案
1、要求高性能,TPS 高可用,至少4个92、解决方案针对不同的业务场景,选择不同的解决方案。2.1、UUID优点:性能高、无网络IO 缺点:不易于存储、无序(某些场景也是优点)...2.2、snowflake通过时间戳、机器编号等信息生成64bit的ID优点:性能高、递增有序 缺点:长、强依赖机器时钟......2.3、数据库生成方案为保证高性能,需提供进...原创 2019-03-05 21:15:56 · 2723 阅读 · 0 评论 -
短网址实现原理
1、整体流程2、自增序列算法原创 2019-03-05 21:03:01 · 199 阅读 · 0 评论 -
centos之zookeeper集群搭建
目录1、准备工作2、ZK集群搭建2.1、jdk安装2.2、zookeeper安装1、准备工作jdk下载 zk下载2、ZK集群搭建2.1、jdk安装解压mv /home/codis/jdk-8u191-linux-x64.tar.gz /usr/java/tar -zxvf /usr/java/jdk-8u191-linux-x64.tar.gz环境变...原创 2018-10-22 14:27:23 · 238 阅读 · 0 评论 -
go之web编程学习
1、学习路线 2、socket编程 服务端:监听(listen)端口、for循环接受客户端连接、创建goroutine处理连接客户端:建立(dial)连接、读写数据、关闭连接2.1、server端核心代码func main() { fmt.Println("start server .....") listen, err := net.Listen("tcp", "0...原创 2018-11-20 19:37:57 · 283 阅读 · 0 评论 -
go之垃圾回收机制
1、常见垃圾回收机制指针引用计数 标记-清除(mark and sweep)疑问1:为什么需要GC暂停?分代2、三色算法(黑白灰)三色算法本质上也是标记-清除算法,因此也需要STW(stop the world),那么go如何实现如此之低的GC暂停呢?...原创 2018-12-21 20:13:53 · 258 阅读 · 0 评论 -
go之for...range语法糖背后原理分析
1、表达式结构for i := range a { fmt.Println(i)}range表达式支持的常用数据类型包括:array、slice、map、channel......2、语法糖还原针对不同的数据类型,go编译器会将语法糖还原为对应的C循环风格。2.1、arraylen_temp := len(range)range_temp := range...原创 2019-02-22 13:40:56 · 841 阅读 · 0 评论 -
go之channel数据结构及方法
1、数据结构// channel 类型定义type hchan struct { // channel 中的元素数量, len qcount uint // total data in the queue // channel 的大小, cap dataqsiz uint // size of the c...原创 2019-02-18 11:18:53 · 747 阅读 · 0 评论 -
go之slice数据结构及方法
1、数据结构type slice struct { array unsafe.Pointer len int cap int }原创 2019-02-18 14:36:55 · 422 阅读 · 1 评论 -
go-mod包管理
1、windows、linux中go-mod启用set GO111MODULE=on //windowsexport GO111MODULE=on //linux2、go mod命令1、初始化命令,将会生成go.mod文件go mod init2、tidygo mod tidy3、vendor,将依赖的包放入vendor目录中go mod vendo...原创 2019-02-12 21:42:20 · 2169 阅读 · 0 评论 -
windows子系统之go环境搭建及编译
IMPORTMENT:可以在windows子系统中设置GOPATH(指向windows gopath)实现linux下编译功能1、windows子系统 go环境搭建(1)下载地址:https://golang.org/dl/(2)切换至下载路径并解压缩cd /mnt/d/sudo tar -C /usr/local -xzf go1.11.5.linux-amd64.tar.g...原创 2019-02-12 22:15:32 · 853 阅读 · 0 评论 -
go知识点复习
go核心要点1、go在语言层面上做哪些优化? 程序本质上是变量+函数,go语言在变量方面提供了紧凑的内存使用;在函数方面,提供了内联机制,减少函数调用开销,但是内联也是有代价的,增加了编译后二进制文件的大小。2、goroutine如何实现同步功能?请用代码实现 方案一:通过sync.WaitGroup//适用于需同步线程个数明确的情况 方案二:通过channe...原创 2019-02-13 14:32:05 · 556 阅读 · 0 评论 -
go之grpc
1、安装install grpcgo get -u google.golang.org/grpcinstall protocol buffer v3PS:本文基于Window64安装,下载地址:https://github.com/protocolbuffers/protobuf/releases将解压后的protoc.exe路径加入PATH环境变量中install the ...原创 2019-02-24 15:42:27 · 368 阅读 · 0 评论 -
go之测试工具(goconvey、gostub、gomock...)
1、gostub包引用go get github.com/prashantv/gostub使用//函数重构var stubedFunc=func()//为函数打桩stubs := StubFunc(&stubedFunc,......)defer stubs.Reset()2、go testgo test 默认执行当前目录下以xxx_test.go的测试文...原创 2019-02-19 09:30:17 · 1861 阅读 · 0 评论 -
通过envoy实现http/json到grpc的转码
1、流程2、Demo2.1、grpc server实现protosyntax = "proto3";package helloworld;import "google/api/annotations.proto";service Greet { rpc Say (HelloWorldRequest) returns (HelloWorldResponse) ...原创 2019-02-25 18:01:48 · 3148 阅读 · 0 评论 -
go之内存分配算法及内存回收算法
1、堆、栈、静态&全局、代码等内存区域2、go程序初始化大致流程osinit()->shedinit()->stackinit()->mallocinit()->main()2.1、stackinit2.2、mallocinittcmalloc内存分配;多级内存申请;需GC 探索GO内存管理3、go逃逸分析任何时候...原创 2019-03-01 21:59:38 · 982 阅读 · 0 评论 -
go之scratch时区问题
1、问题描述在进行go开发过程中,通过go build命令打包为可执行文件后,在scratch镜像中运行,应用程序可以正常运行,但是遇到了时区不一致问题。PS:项目build命令CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .2、解决方案问题分析scratch中为空镜像,没有/bin/sh,因...原创 2018-09-17 20:09:38 · 1815 阅读 · 1 评论