Golang
文章平均质量分 77
zhuxinquan61
...
展开
-
go mod replace 解决 fork 项目的引入问题(module declares its path as Axx, but was required as Bxx)
背景使用第三方依赖包,有自己的需求需要进行改造, fork 之后进行了改造,然后推送到自己的项目中,再去进行构建的时候,报错如下:module declares its path as Axx but was required as Bxx意思是说,我的这个项目引入的依赖路径不对,因为依赖的项目本身是使用go mod进行依赖管理的,而我在 fork 之后项目在 gopath 中的路径已经发生了变更,两者不一致导致这个错误的出现。个人开发,无论是bug、功能、公司私有仓库的一些原因,可能还是会遇上原创 2021-01-04 22:09:31 · 14211 阅读 · 0 评论 -
Golang的Mutex是值传递还是引用传递?
为什么会有这个问题?突然看到函数传参的问题,就想知道直接传参,Mutex是传值还是传引用结论值传递Mutex定义type Mutex struct { state int32 sema uint32}看下定义就知道了,结构体,而且里面的字段类型都是普通值类型,那函数传参如果不特定使用指针,那就是值传递抛出一个问题下面代码会报panicfunc TestMutex1(t *testing.T) { mux := sync.Mutex{} mux.Lock() mux.Unlo原创 2020-05-08 20:25:28 · 1645 阅读 · 1 评论 -
Golang - 使用 bufio 提升高频写文件操作的效率
目录原创 2020-03-29 15:13:49 · 4161 阅读 · 1 评论 -
Golang遍历map的同时并发修改map的值
目录背景解决需求问题并发问题举例1 - panic并发问题举例2 - 死锁通过复制map解决问题后记背景如题,有个逻辑设计,在遍历map的同时需要并发的修改map的值解决先说下解决,那就是把map重新复制一份,不是同一个map自然也就不存在并发安全和死锁的问题了,但是因为不是同一个map了,自然是需要注意数据还是否有效的问题了。这个可以通过加锁之后的再次判断来解决。需求问题并发的读写...原创 2020-03-15 14:07:55 · 6939 阅读 · 0 评论 -
进程如何主动限制磁盘IO/Reader中数据的读写速度 —— golang 之 io.LimitReader
背景要在agent中实现一个类似于ftp数据源端限速的功能,保证agent在运行过程中长期读取磁盘的时候,不会对磁盘造成压力,影响其它业务。前言说起限流,运维的小伙伴或多或少都知道点,来了20个流量,只能处理15个,则设置限流阈值为15,剩余的5个直接返回错误,这就是最简单理解的限流。然而限速呢?相比限流直接了当的给一个错误的返回值,限速要做的不仅不能返回错误,而且要在一定的时间段内进行响...原创 2019-11-10 15:57:55 · 4583 阅读 · 0 评论 -
golang exec 执行 shell 如何同步输出/得到执行结果
背景项目中需要执行shell命令,虽然exec包提供了CombinedOutput()方法,在shell运行结束会返回shell执行的输出,但是用户在发起一次任务时,可能在不停的刷新log,想达到同步查看log的目的,但是CombinedOutput()方法只是在完全执行结束才返回整个shell的输出,所以肯定达不到效果,所以,我需要寻找其它方法达到程序一边执行log一边输出的目的。使用重定向...原创 2019-05-01 23:10:10 · 14698 阅读 · 1 评论 -
golang中多goroutine时kill信号接收的问题
本文探讨的问题:外部的kill信号能被多线程程序中的多个线程同时接收到吗?结论可以,这里用 golang 进行举例,多个goroutine通过 signal.Notify 注册消息的接收,然后在每个 goroutine 中都可以捕捉到kill的信号实验样例package mainimport ( "fmt" "os" "os/signal" "sync" "syscall...原创 2019-04-21 09:50:02 · 3435 阅读 · 0 评论 -
golang os/exec包用法之Kill进程及其子进程
前言&背景平时在做一些开发时难免要调一些shell脚本或者外部程序,golang提供了exec包很方便的帮我们解决了这个问题。但是当外部程序或者shell脚本夯死就使得我们自身的程序很不稳定。与此同时,当我们已经感知到程序脚本运行出现问题时,我们可能需要立刻对程序进行杀死的操作,但是当我们很自然的想到cmd.Process.Kill()时,我们又遇上了另外一个问题,因为这个操作并没有将...原创 2018-08-05 12:04:20 · 16413 阅读 · 0 评论 -
golang struct tag value的语法错误
背景 Bad syntax for struct tag value less… (⌘F1) Inspection info: Verifies that struct tags conform to Go conventions. According to these conventions, tag strings are a concatenation of optio...原创 2018-08-04 14:16:27 · 4855 阅读 · 0 评论 -
Go Get安装一些第三方库-网络问题
原文链接:https://javasgl.github.io/go-get-golang-x-packages/ 侵权联系删除!go在go get 一些 package时候的会由于众所周知的原因而无法下载。比如在安装 bee的时候有可能会遇到无法下载 golang.org/x/sys/unix 的问题。unrecognized import path "golang.org/x/sys/uni转载 2017-10-15 08:55:53 · 5280 阅读 · 0 评论 -
有关golang package中init方法的多处定义及运行顺序问题
在不了解这个问题之前,在网上搜索一下竟然搜出了两个完全相反的结果,所以打算自己测试下这个问题。首先给出结论:在同一个package中,可以多个文件中定义init方法在同一个go文件中,可以重复定义init方法在同一个package中,不同文件中的init方法的执行按照文件名先后执行各个文件中的init方法在同一个文件中的多个init方法,按照在代码中编写的顺序依次执行不同的init方法下面原创 2017-06-25 14:24:39 · 16877 阅读 · 1 评论 -
Golang Beego框架之WebIM例子分析
beego框架算是golang比较成熟的一个框架了,最近看了下这个框架其中的一个在线聊天室的例子,觉得还是有很多可以学习借鉴的地方,所以就总结下。这个例子的源码在这里,该例子配合bee工具可以很简单的进行运行。首先看下这个项目的结构:标准的beego框架,各个文件夹包含了不同的功能。然后我们从main.go(这里是WebIM.go)看起:package mainimport ( "githu原创 2017-06-29 12:08:47 · 5172 阅读 · 1 评论