使用 Go mod 进行包管理并开启代理
Go 从 1.11 开始支持 go mod,现在 Go 1.13 出来已经默认开启 go mod 了 ,可见日后 Go 的包管理将要统一成 go mod , So 再不入坑就 out 了。 Go 1.13 发布说明:https://tip.golang.org/doc/go1.13 Go Mod 详细介绍:https://segmentfault.com/a/1190000018536993 包存储地址:$GOPATH/pkg/mod 所需环境 go: >= 1.11 开启 go mod Go 1.13 go env -w GOPROXY=https://goproxy.cn,direct 不使用代理的库 go env -w GOPRIVATE=*.gitlab.com Go < 1.13 ...阅读全文
求助walk 做gui界面的问题
var lab *walk.Label var text *walk.TextEdit var txt *walk.LineEdit var button *walk.PushButton mw := new(MyMainWindow) if err := (MainWindow{ AssignTo: &mw.MainWindow, Title: "通讯服务器", MinSize: Size{500, 600}, Layout: VBox{}, Children: []Widget{ Label{ AssignTo: &lab, Text: "监听端口",...阅读全文
linux 服务器部署go工程
linux安装go环境这里不做讲解 假设gopath GOPATH="/root/go" 那么把工程上传到这个/root/go/src/ 这个目录下,假设工程名字是future,那么cd /root/go/src/future 执行go build,这时候cd future后ls会发现多了一个绿色的future文件 这个时候如果只想执行一个(关闭putty的时候自动停止运行)执行./future ,但是我们部署的工程往往希望在后台一直运行,这时侯如果刚才的已经执行了./future命令,再执行nohup ./future &> future.log &就会报错,翻译过来是说这个程序已经在运行了,首先ps aux|grep future 找出这个pid ,假如是21432 ,直接执行kill ...阅读全文
Linux配置GOPATH(GO语言开发代码存放目录)
一、创建GOPATH:选择一个目录或者在我们想要的地方创建一个作为GOPATH的目录,我的GOPATH是:“/home/cox/goProjects”。 二、配置系统变量:在shell里面输入“sudo gedit /etc/environment”,在打开的文件末尾加入:“export GOPATH=/home/cox/goProjects”。注意:这个目录是我选中的目录,替换成你使用的目录! 三、重启一下Linux,在shell里面输入“go env”,我们应该能够看到GOPATH已经是我们刚刚配置的目录了...阅读全文
intellij idea13.1.4b配置go开发环境
首先下载intellijdea13.1.4b(建议大家使用14,因为13.1.14a版本有bug,容易下错) http://pan.baidu.com/s/1i3kns5B 再去下载go1.2 http://www.golangtc.com/download 最后下载intellijIDEA的go插件:http://plugins.jetbrains.com/plugin/5047?pr=idea 这个插件最新支持到go1.2版本。所以上面要求大家下载1.2版本的go。 安装插件过程如下:进入setting > plugins > install plugin from disk > 选择gojar插件 >完成 > 重启。 新建一个go项目,看到 new project>go 安装成功。 体...阅读全文
golang开启http2
使用HTTP2 1 .在1.6以上的版本,如果使用https模式启动服务器,那么服务器默认将使用HTTP2.0 package main import( "net/http" "golang.org/x/net/http2" "log" ) func main(){ var srv http.Server //http2.VerboseLogs = true srv.Addr = ":8080" http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello http2")) }) http2.ConfigureServer(&srv, &http2.Server{}) go ...阅读全文
golang 调用win32 api 实现windows注销、重启、关机
package main import ( "flag" "fmt" ) import ( . "github.com/CodyGuo/win" ) var ( arg string ) func init() { flag.StringVar(&arg, "uFlags", "", "shutdown logoff reboot") } func main() { flag.Parse() switch arg { case "logoff": logoff() case "reboot": reboot() case "shutdown": shutdown() default: fmt.Println("您输入的参数有误.") } } func logoff() { ExitWindo...阅读全文
WebStorm搭建Golang开发环境
1.下载WebStorm进行安装 2.打开File-->Setting-->Plugins-->Browse Repositories-->  点击install 安装完毕,重启webstorm 3.设置SDK安装目录 进程时,经常需要响应来自用户或系统的信号来实现诸如:退出/重启/清理(clean up) 等工作,又或者利用信号通知机制实现一些业务功能,如:更新缓存、发送通知。。。 以下例子将会演示在 golang 中如何监听并处理信号: package main import ( "fmt" "os" "os/signal" "syscall" "time" ) const FILENAME = "go-example.txt" func main() { SignalHandler() CreateFile() for { fmt.Println("- Sleeping") time.Sleep(10 * time.Sec...阅读全文
ubuntu14.04,配置GOPATH(GO语言开发代码存放目录)
一,创建GOPATH:选择一个目录或者在我们想要的地方创建一个作为GOPATH的目录,我的GOPATH是:“/home/sunylat/gopath”。 二,配置系统变量:在shell里面输入“sudo gedit /etc/environment”,在打开的文件末尾加入:“export GOPATH=/home/sunylat/gopath”。注意:这个目录是我选中的目录,替换成你使用的目录! 随后我们重启一下ubuntu,在shell里面输入“go env”,我们应该能够看到GOPATH已经是我们刚刚配置的目录了...阅读全文
HBase长时间无法关闭问题及处理(Waiting on regionserver(s) to go down)
HBase长时间无法关闭[Waiting on regionserver(s) to go down] 为了释放已经删除的region,重启hbase,执行./bin/stop-hbase.sh。 等了很久还未关闭,查看master日志,显示一直在等待regionserver 2015-07-08 09:11:25,800 INFO org.apache.hadoop.hbase.master.ServerManager: Waiting on regionserver(s) to go down Colander-hb01,60020,1435801056660 再去查看此regionserver情况,日志显示Region is not online 2015-07-08 09:17:34...阅读全文
golang 服务平滑重启小结
golang 服务平滑重启小结 背景 golang 程序平滑重启框架 supervisor 出现 defunct 原因 使用 master/worker 模式 背景 在业务快速增长中,前期只是验证模式是否可行,初期忽略程序发布重启带来的暂短停机影响。当模式实验成熟之后会逐渐放量,此时我们的发布停机带来的影响就会大很多。我们整个服务都是基于云,请求流量从 四层->七层->机器。 要想实现平滑重启大致有三种方案,一种是在流量调度的入口处理,一般的做法是 ApiGateway + CD ,发布的时候自动摘除机器,等待程序处理完现有请求再做发布处理,这样的好处就是程序不需要关心如何做平滑重启。 第二种就是程序自己完成平滑重启,保证在重启的时候 listen socket FD(文件描述符) 依然可以...阅读全文
HBase长时间无法关闭问题及处理(Waiting on regionserver(s) to go down)
HBase长时间无法关闭[Waiting on regionserver(s) to go down] 为了释放已经删除的region,重启hbase,执行./bin/stop-hbase.sh。 等了很久还未关闭,查看master日志,显示一直在等待regionserver 2015-07-08 09:11:25,800 INFO org.apache.hadoop.hbase.master.ServerManager: Waiting on regionserver(s) to go down Colander-hb01,60020,1435801056660 再去查看此regionserver情况,日志显示Region is not online 2015-07-08 09:17:34...阅读全文
HBase长时间无法关闭问题及处理(Waiting on regionserver(s) to go down)
HBase长时间无法关闭[Waiting on regionserver(s) to go down] 为了释放已经删除的region,重启hbase,执行./bin/stop-hbase.sh。 等了很久还未关闭,查看master日志,显示一直在等待regionserver 2015-07-08 09:11:25,800 INFO org.apache.hadoop.hbase.master.ServerManager: Waiting on regionserver(s) to go down Colander-hb01,60020,1435801056660 再去查看此regionserver情况,日志显示Region is not online 2015-07-08 09:17:34...阅读全文
golang private module记录
系统需求: go 1.13以上版本。 配置环境变量:GOPRIVATE="*.your_domain.com" windows环境可以使用$env:GOPRIVATE="*.your_domain.com"避免重启。 私有库需要使用https,需要如下配置: 在~/.gitconfig中配置: [url "ssh://git@your_domain.com/"] insteadOf = https://your_domain.com...阅读全文
Go 博客程序 CCFBLOG
基于beego框架Golang语言开发的博客 ## [ ](https://github.com/who246/myblog#演示地址httpbloglcsgpw)演示地址:[http://blog.lcsg.pw/](http://blog.lcsg.pw/) # [ ](https://github.com/who246/myblog#install)Install ## [ ](https://github.com/who246/myblog#installation)Installation go get github.com/who246/myblog ## [ ](https://github.com/who246/myblog#config)config m...阅读全文
Go语言环境搭建开发环境和配置
其实Go语言的开发配置非常的简单··· 我使用的是intelliJ IDEA工具··· intelliJ IDEA 配置Go开发环境··· 1、点击菜单File中的Setting.. 2、找到Plugins,点击,Broswer repo...按钮 这时候会看见茫茫多插件...咱们找到Golang,右键,download and install.等到golang那一行后面出现Downloaded标志后,点OK 然后点 Apply .这时候IDE会要求你重启... 重启完毕后,创建新项目会发现已经可以创建golang项目鸟~ 注意:需要下载GOSDK··...阅读全文
idea搭建go语言开发环境
1:https://plugins.jetbrains.com/plugins/alpha/5047 上面为插件地址 下面为步骤 2:打开idea, File Settings- Plugins- Browse respositories- Manage respositories… 3:点击+号,将地址粘贴进去,点OK,最好再重启一下idea 4:File -Settings -Plugins -Browse respositories 5:输入Go,安装Go那个插件,安装的时候最好不要下载其它东西,不然可能出错。 装好后Restart,enjoy! $(function () { $('pre.prettyprint code').each(function () { var lines...阅读全文
http服务管理框架srvmanager
``` 可配合大部分优秀的开源http框架使用,如"gin"、"echo"、"iris"、"martini"等 ``` #### 项目github > https://github.com/HaroldHoo/srvmanager # srvmanager 1. graceful shutdown/reload (平滑关闭/重启服务) 2. manager process via pidfile (通过-s reload 或 kill -HUP pid 像Nginx一样优雅地重启服务) 3. log something easier (记录日志更便捷) ## Usage ``` ./main/bin/server -h Usage of ./ma...阅读全文
GO 语言学习 包 探究
GO语言中包是函数和数据的集合。 用package关键字定义一个包,包名的约定是使用小写字符。 包中的函数名以大写字母启始的是可导出的,及可以在包外部调用 GO 包的编译使用 go build 安装使用 go install 包命名规则:小写字母的一个单词,不应有下划线或混合大小写。 包名是导入的默认名称,可以使用其他名称来代替默认名称: import bar "bytes" 则 函数Buffer可以通过bar.Buffer来访问。 包的测试:go test 需要编写test文件,在test文件中以 packe XXX (XXX是要测试的包)开头, 并且导入 testing包 import "testing"。 测试函数都有相同的标识,名字以Test开头: func TestXxx(t *t...阅读全文
005-本地代理-proxy
#encoding:utf-8 import urllib2 """ Fiddler设置HTTPS代理 1、打开Fiddler,菜单栏:Tools –> Fiddler Options 打开fiddler配置。 2、打开 HTTPS 配置项,勾选“Capture HTTPS CONNECTs”和“Decrypt HTTPS traffic”,然后点击“OK”。 重启Fiddler,就可以实现HTTPS请求的代理了。 """ http_proxy = urllib2.ProxyHandler({'http':'192.168.1.14:8888'}) #设置一个代理 opener = urllib2.build_opener(http_proxy) #创建一个打开器,打开url request...阅读全文
go优雅升级/重启工具调研
对于一个常驻、高访问量的网络服务来说,升级/重启时,一个难以忽视的问题是避免对正在通信的客户端造成影响。因此大家一直在寻求一种优雅、零宕机的升级/重启方案(seamless reload/upgrade)。在工程师们的日常实践中,尝试了不同的方案。各方案的核心都是fork-exec流程,其不同的区别就是在这个过程中,如何优雅的传递活跃的网络连接,如何避免新建连接失败,以及处理这个过程中的错误和如何回退。 方案选型 首先先简单介绍一些方案1: SO_REUSEPORT 多进程 在HAProxy 1.5.11时,采用该方案。首先可以对监听 socket 启用SO_REUSEPORT,这样可以使得多个监听 socket 共享同一个地址,这样可以使得我们能同时启动多个进程来监听同一个地址。在升级或重...阅读全文
WEB 开发 命令行的重启
我现在在学习 GO web开发, 但是每每一小点改动都要重启命令行; 请问大家有什么好的解决方案吗? 谢谢...阅读全文
go在vs code 下开发配置(代码提示)
管理员方式打开cmd cd gopath 手动go get,重启vs即可看到代码提示:go get github.com/mdempsky/gocodego get github.com/uudashr/gopkgs/v2/cmd/gopkgsgo get github.com/ramya-rao-a/go-outlinego get github.com/acroca/go-symbolsgo get golang.org/x/tools/cmd/gurugo get golang.org/x/tools/cmd/gorenamego get github.com/cweill/gotests/...go get github.com/fatih/gomodifytagsgo get gi...阅读全文
Golang实现网卡判断,删除文件夹,重启操作系统
package main import ( "fmt" "net" "os" "os/exec" "strings" ) const SOURCE_MAC = "56:00:45:18:49:00" const SOURCE_FILE = "/work/temp" func main() { var find = false interfaces, err := net.Interfaces() if err != nil { panic("Error : " + err.Error()) } for _, inter := range interfaces { mac := inter.HardwareAddr if strings.EqualFold(mac.String()...阅读全文
服务优雅重启
一、优雅重启/热更新 对外提供服务程序,在升级或因其它原因需重启时,若考虑不影响用户体验情况下,应当使用优雅重启或者说热更新。二、目的1.服务升级/更新时不关闭现有连结,对用户友好/用户无感知2.新的进程启动并替代旧进程3.新的进程接管新的连结4.已建立的连结随时响应用户的请求,不可以出现拒绝访问的情况;同时新连结请求到达时应请求新进程三、两种实现1.在建立套接字时设置SO_REUSEPORT,从而让多个进程能够被绑定到同一端口。从而有多个流量接收队列绑定到多个进程。2.复制套接字,并把它以文件的形式传给子进程,然后在新的进程中重新创建这个套接字。使用这种方法,可以有一个接收队列向多个进程提供数据对于SO_REUSEPORT的方法,SO_REUSEPOR这个socket选项可以让你将多个so...阅读全文
按顺时针打印矩阵
存在二种解题思路: 一种是递归解法,一种是层层递进解法 图解递归解法 如图所示, 一个5*5的矩阵 先打印最外层的圈, 然后剩余最里层3*3的矩阵, 如图. 将3*3的矩阵继续打印最外层,思路与打印最外层思路一样,我们就可以考虑使用递归实现. 最后只剩余一个元素,也可以看成一个矩阵,不过不同大小的矩阵会出现不同形状的矩阵.共3种情况, 如下图. 如图所示, 共三种情况 一个方向的情况 三个方向的情况 四个方向的情况 代码实现思路 矩阵用代码表示为二维数据 首先遍历第一行所有的元素,即图中的从左到右箭头的数据. 然后遍历最右边的元素,即最后一列数据.即图中的从上到下箭头的数据. 再遍历最后一行元素,即图中从右到左箭头的数据 最后遍历最左列的元素,即图中从下到上箭头的数据. 将剩余的矩阵构建成一...阅读全文
Golang http服务
开启http服务 func HttpService() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // r.FormValue() 获取参数 name := r.FormValue("name") id := r.FormValue("id") status := r.FormValue("status") w.Write([]byte(name + id + status + "\n")) w.Write([]byte(r.Host + "\n")) w.Write([]byte(r.RemoteAddr + "\n")) w.Write([]byte(r.RequestURI + "\n")...阅读全文
关于tcp服务的问题
现在写了一个tcp服务 然后这个服务里 包含了很多个map 存储一些信息 现在碰到一个问题: 当我需要更改服务里一些内容 如升级 我只能重启 但是重新启动 map的数据就丢失了 所以求大神有没有好的方法 如果重启了 map数据不会丢失 一直保留着 ...阅读全文
golang http 请求DNS解析如何定时帅新
http 请求中是否有有缓存?如果有缓存请求的网站的IP换了? 如何保证HTTP请求能访问到最新的IP网站地址? 由于是嵌入式设备,不能手动重启,如何有效刷新呢?谢谢了...阅读全文
Speedle 简介二:策略即改即生效, 无需重启
Speedle 简介二:策略即改即生效, 无需重启 # Speedle 策略库的存储 目前, Speedle支持两种存储方式,用户也可扩展以支持其他存储方式 * 文件 * ETCD # 策略的修改 * 命令行/spctl * RestFul API # 如何使修改的策略生效 无论文件还是ETCD, Speedle运行时(ADS)都会Watch其更改,依据更改自动更新运行时策略库,更改几乎是即刻生效, 无需额外操作...阅读全文