全栈
从事软件开发工作多年,拥有较为丰富的开发经验,主导多个大型项目的研发工作,丰富的项目经验。
设计软件架构和撰写软件方案等。
展开
-
golang sync.WaitGroup 配合chan 获取异步任务结果
sync.WaitGroup 计数获取返回原创 2023-03-22 15:30:33 · 442 阅读 · 0 评论 -
ubuntu cgo: C compiler “gcc“ not found: exec: “gcc“: executable file not found in $PATH
ubuntu cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in $PATH原创 2023-02-12 14:25:26 · 929 阅读 · 0 评论 -
ubuntu20.04 安装docker 亲测可用
ubuntu20.04 安装docker 亲测可用原创 2023-02-09 09:10:36 · 183 阅读 · 0 评论 -
mongodb 查询优化 主要针对count慢
数据 1800万 数据一直增加中优化前 耗时:7.9s(未加索引,查询时CPU飞了)filter = bson.D{{"userid", userid}, {"height", height}}Txs, err := c.Mgo.Collection(m.UserTxs).Find(context.Background(), filter, opts)sCount, err := c...原创 2019-07-06 15:11:31 · 22389 阅读 · 5 评论 -
docker 查看日志
docker 查看日志原创 2022-04-27 16:45:11 · 8068 阅读 · 0 评论 -
go 面试题
前段时间在找工作,也遇到一些不错的面试题,其中有一道很常见,记录一下,里面还有一点搞不明白的:下面两段程序的输出是什么?第一段:func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func() { fmt.Println(i) wg.Done() }() } wg.原创 2021-12-27 16:05:26 · 294 阅读 · 0 评论 -
go 搭建TCP socket 服务端 支持多线程客户端连接
先看下效果:同时创建了三个socket Client分别给服务器发送 1111 2222 3333一起来看下:具体server 端实现package mainimport ( "fmt" "net")//现存链接数组对象var tcpClientList=make([] net.Conn,0);func DoHandler(conn net.Conn) { defer conn.Close() //读取数据 fmt.Println("开始读取数据"...原创 2021-07-22 15:23:14 · 1122 阅读 · 1 评论 -
每日一道go的知识4
go 语言中的 channel 有缓冲和无缓冲的区别是什么答: 其实就是一个是同步的,一个是非同步的。 比如:有缓冲区的会在取得第一个值的时候,能够执行进入到主线程无缓冲区的会一直阻塞在那,等着。2. go 语言中切片什么时候会扩容,如何扩容答:当append操作时检查是否有足够的容量,发现超过指定长度时会扩容,每次放大一倍。3. go 语言中有哪些引用类型答:map slice channel4. go 语言中有哪些常用的锁答: (1)互斥锁 sync.mut...原创 2020-06-06 12:57:26 · 366 阅读 · 0 评论 -
windows ubuntu liunx 安装protoc 使用protobuf
因为最近疫情原因,在家里的系统开发,使用的是windows 公司使用的ubutnu所以从新安装了一遍开发环境这里记下 protobuf安装过成。过程中遇到了一些报错,都是安装protoc 使用 protobuf报的错误。下面粘贴出来比如找不到下面这些错误信息。go get 找不到 google.golang.org/protobuf是…\github.com\golang\protobuf\proto\buffer.go:文件缺少google.golang.org/prot...原创 2020-05-27 01:00:15 · 1202 阅读 · 0 评论 -
每日一道go的知识3
看代码:大家看看这个输出神马?主要是演示context的使用。package mainimport ( "context" "fmt" "time")func main() { ctx, cancel := context.WithCancel(context.Background()) go watch(ctx,"【监控1】") go watch(ctx,"【监控2】") go watch(ctx,"【监控3】") time.Sleep(10 * time.Seco原创 2020-05-26 20:30:02 · 256 阅读 · 0 评论 -
实锤 go的面试题
1. (2020.05.22)今天要分享的面试题是:1. 首先就是GPM模型。并发channle.2. 锁都有什么锁?怎么用?互斥锁,还有读写锁等等。原创 2020-05-26 20:25:28 · 488 阅读 · 0 评论 -
每日一道go的知识1
下面这段代码输出的内容:这道题考验的是对 defer的认识。func main(){ defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer func() { fmt.Println("打印后") }() panic("触发异常")}输出:打印后打印中打印前...原创 2020-05-15 15:25:47 · 262 阅读 · 0 评论 -
聊聊,如何快速搭建部署GO开发环境和部署服务?
首先那选择合适的golang版本。编辑器可以选择goland 不用怀疑,就是idea 全家桶系列之一。地址:https://www.jetbrains.com/go/ 没错就是这个地址。jetbrains 全家桶。。。。。这里不得不说。。jetbrains 全家桶,真是全啊。可以下载最新版本的试用下。go那不得不说,谷歌的亲儿子。目前国内使用的大公司也不少,比如 字节跳动。下...原创 2020-03-06 00:57:38 · 923 阅读 · 0 评论 -
go gopath配置
看图原创 2020-02-25 14:32:42 · 1418 阅读 · 0 评论 -
golang 大数转换
直接上代码: f, bool := new(big.Float).SetString("100.02222") if bool == false { log.Error("err:SendTxAcceptRecord") } //正常转大数 s1, boolSet := new(big.Float).SetString("1000000000...原创 2020-02-06 21:02:51 · 1835 阅读 · 0 评论 -
golang 学习入门项目(超适合新手入门,新手进阶)
过年的疫情,让我有了时间整理自己的博客。这篇是关于如何学习golang这门语言的。实例代码一分享到github 点击获取源码github 学习golang本项目是个go gin框架写的web 项目。前端使用的是x-admin的开源前端。项目截图:...原创 2020-02-01 09:42:54 · 7390 阅读 · 5 评论 -
go 语言学习 2. Go语言是怎么完成编译的
Go语言是一门需要编译才能运行的编程语言,也就说代码在运行之前需要通过编译器生成二进制机器码,随后二进制文件才能在目标机器上运行,如果我们想要了解Go语言的实现原理,理解它的编译过程就是一个没有办法绕过的事情。预备知识想要深入了解Go语言的编译过程,需要提前了解一下编译过程中涉及的一些术语和专业知识。这些知识其实在我们的日常工作和学习中比较难用到,但是对于理解编译的过程和原理还是非常重要的...原创 2019-12-26 23:20:47 · 983 阅读 · 0 评论 -
go 语言学习 1. go的特性
Go语言也称为Golang,是由 Google 公司开发的一种静态强类型、编译型、并发型、并具有垃圾回收功能的编程语言。接下来从几个方面来具体介绍一下Go语言的特性。语法简单抛开语法样式不谈,单就类型和规则而言,Go 与 C99、C11 相似之处颇多,这也是Go语言被冠以“NextC”名号的重要原因。Go语言的语法处于简单和复杂的两极。C语言简单到你每写下一行代码,都能在脑中想象出编...原创 2019-12-26 23:16:13 · 671 阅读 · 0 评论 -
go 1. gin 多文件上传
package mainimport ( "fmt" "net/http" "path/filepath" "github.com/gin-gonic/gin")func main() { router := gin.Default() // Set a lower memory limit for multipart forms (default is 32 MiB)...原创 2019-11-25 17:11:50 · 544 阅读 · 0 评论 -
go 2. 记录一次恶心使用 $or golang mongo
直接代码:想实现类似sql where nickname="张三" sex=1or sex=2 的效果。mongo官方的例子使用一直报错。查资料呗。终于找到,这里记录下。filter=bson.D{{"nickname","张三"},{"$or",[]interface{}{bson.D{{"sex",1}},bson.D{{"sex",2}}}}}...原创 2019-06-12 16:20:23 · 1964 阅读 · 3 评论 -
go 科学计数法 大数值转string 串 求和等等
最近区块链中的数值超大 会自动转换成字符串看着好别扭,go官方也没有较好的库通过查找在git上找到了库:引用导入 go get github.com/shopspring/decimal代码:import ( "fmt" "github.com/labstack/gommon/log" "github.com/shopspring/decimal" "str...原创 2019-06-05 19:08:53 · 1695 阅读 · 0 评论 -
golang 查询
/* 获取 */func (m User) Getuser(g *gin.Context) { rsp := new(r.Rsp) findfilter := bson.D{} cur, err := m.Mgo.Collection(mongodb.User).Find(context.Background(), findfilter) users := make([]models....原创 2019-05-28 17:02:32 · 680 阅读 · 0 评论 -
go语言string、int、int64互相转换以及时间转换
go语言string、int、int64互相转换以及时间转换[html]view plaincopy#string到int int,err:=strconv.Atoi(string) #string到int64 int64,err:=strconv.ParseInt(string,10,64) #int到string s...原创 2019-04-24 11:30:44 · 841 阅读 · 0 评论 -
GF(Go Frame)开发框架
GF(Go Frame)是一款模块化、松耦合、生产级的Go应用开发框架。提供了常用的核心开发组件,如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、数据校验、数据编码、文件监控、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信、 并发安全容器等等。并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、路由...原创 2019-04-10 14:07:11 · 2431 阅读 · 0 评论 -
go 使用队列
import ( "container/list") 定义: var Payqueue= list.New()入对:Payqueue.PushBack(*paylog) // 入对出对:controllers.Payqueue.Remove(controllers.Payqueue.Front()))...原创 2019-04-08 14:39:45 · 650 阅读 · 0 评论 -
go 使用gin框架
package corllimport ( "context" "fmt" "github.com/gin-gonic/gin" "github.com/mongodb/mongo-go-driver/bson" "github.com/mongodb/mongo-go-driver/bson/primitive" "github.com/mongodb/mongo-go-dri...原创 2019-04-04 10:56:11 · 927 阅读 · 0 评论 -
go bson.ObjectId undefined 的问题 修改等问题
在获取mongo db 的_id 上很多的都写用 bson.ObjectId可是在你的版本没有怎么办?go bson.ObjectId undefined 的问题应该使用 primitive.ObjectID 就可以了/* user */type User struct { Id primitive.ObjectID `bson:"_id"` Username...原创 2019-03-27 17:01:57 · 1791 阅读 · 0 评论 -
go 搭建web 服务器
最近研究go 做下记录在这里,顺便分享给大家:代码上传到了github 大家可以下载一起学习研究https://github.com/Huochengyan/myGoProject/tree/masterpackage mainimport ( "fmt" "github.com/gin-contrib/cors" "github.com/gin-gonic/g...原创 2019-03-26 19:02:52 · 592 阅读 · 0 评论 -
go gin 上传文件 目录不存在 创建目录
直接上代码:package corllimport ( "fmt" "github.com/gin-gonic/gin" "io" "log" "net/http" "os")/* upload file */func Uploadfile(g*gin.Context) { fmt.Println("......uploadfile") file, hea...原创 2019-03-26 17:35:41 · 1839 阅读 · 0 评论 -
go gin 解决垮域问题
直接上代码: router :=gin.New() //gin.Default() config := cors.DefaultConfig() config.AllowAllOrigins = true router.Use(cors.New(config))原创 2019-03-26 15:55:07 · 781 阅读 · 0 评论 -
go 链接mongo db
package dbimport ( "context" "github.com/mongodb/mongo-go-driver/mongo" "time")/* mongodb */func InitMongoDB() (collection *mongo.Database, err error){ const url = "mongodb://192.168.1.108...原创 2019-03-25 19:00:58 · 383 阅读 · 0 评论 -
golang list 删除添加元素
在 Go 语言中,将列表使用 container/list 包来实现,内部的实现原理是双链表。列表能够高效地进行任意位置的元素插入和删除操作。初始化列表list 的初始化有两种方法:New 和声明。两种方法的初始化效果都是一致的。1) 通过 container/list 包的 New 方法初始化 list变量名 := list.New()2) 通过声明初始化listvar ...原创 2019-03-25 13:07:10 · 7503 阅读 · 0 评论 -
go (计算机编程语言)
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布...原创 2019-03-22 18:39:46 · 1138 阅读 · 0 评论 -
如何使用go搭建web服务器?
package mainimport ( "fmt" "net/http" "strings" "log")func sayhelloName(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Method) r.ParseForm() //解析参数,默认是不会解析的 fmt.Println(r.Form) ...原创 2019-03-21 20:42:29 · 790 阅读 · 0 评论