VS code golang 开发环境搭建

安装go (1)下载go安装程序 下载地址:https://golang.org/dl/ (墙内下载地址http://www.golangtc.com/download),如果是您的系统是windows32 位系统,请选择go1.6.2.windows-386.msi即可,如果想尝鲜可以安装go1.7beta2,1.7正式版要在8月1号发布 (2)下载后直接双击msi文件安装,默认安装在c:\go (3)安装完成后默认会在环境变量 Path 后添加 Go 安装目录下的 bin 目录 C:\Go\...阅读全文

2016-06-21 13:13 hil2000
阅读:2155 评论:0

sspanel按月结算,修改go版代码【web api】

开头感谢sspanel的作者orvice大神!【转载请注明】 博主最近在搭建sspanel v3,中间坑确实挺多的,我回头开贴补充一下,ss服务器端我选择了orvice的shadowsocks-go mu版,因为作者是基于流量控制的机理,实际上奸商都是通过时间控制(233),所以我就寻思在作者的基础上加以修改,添加时间的限制。 上一篇博客中我实现了mysql api的修改,这一篇是web api。开始我以为orvice是在php api做控制的,看了api发现不是(还是webapi直接控制好啊,...阅读全文

阅读:1988 评论:0

每周一个GoLang设计模式之组合模式

我是设计模式的推崇者,相信一个良好的架构能够给系统的稳定运行和后期维护带来极大的方便,因为最近有时间重新学习GoF的设计模式,于是产生了用Go实现GoF经典设计模式的想法。 这篇文章遵循GoF书中的脉络,本篇是这个系列的第一篇:组合模式(Composite),以后如果在正常工作允许的前提下,应该会每周更新一篇。欢迎大家访问我的博客,代码可以在@Zuozuohao下载。 GoF在第二章通过设计一个Lexi的文档编辑器来介绍设计模式的使用,GoF认为Lexi设计面临七个问题: 1. 文档结构 2. ...阅读全文

阅读:3343 评论:1

3.go开源groupcache项目——consistenthash代码

3.go开源groupcache项目——consistenthash代码 Consistenthash代码是提供ring hash的实现。 包含两个文件consistenthash.go和consistenthash_test.go。 包名叫做consistenthash 定义了一个Hash 函数,一个Map结构体。 1 Map结构体 定义一个hash变量,为函数返回无符号整数 一个INT的变量 一个INT数组 和一个map类型变量hashMap. 2 New函数 入参为一个整形和一个函数。 整...阅读全文

阅读:1074 评论:0

golang加载css和js

├── main.go ├── static │ ├── css │ │ └── main.css │ └── js │ └── main.js └── view └── index.html 若有如上目录结构 // main.go func main() { http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) // 启动静态文件服务 // ... } <!-- in...阅读全文

阅读:3516 评论:1

Go实现接口访问速率限制

接口的访问限制,10分钟内,接口访问限制100次 基于go语言进行编写,抽离出统一配置。 func CheckRateLimit(ip, request, action string) bool { current := int(time.Now().Unix()) currentStr := strconv.Itoa(current) //limit 100次 //timeset 600秒 //限制600秒最多访问100次 limit, timeset := GetRateLimitConfi...阅读全文

2016-11-23 10:14 mingzhehaolove
阅读:5053 评论:0

Go 1.8的Plugins使用

Go 1.8为我们提供了一个创建共享库的新工具,称为Plugins!让我们来创建和使用一个插件。 目前的插件只能在Linux和Darwin上工作。 安装1.8beta1,不做说明. 创建一个插件方法到aplugin.go: package main func Add(x, y int) int { return x+y } func Subtract(x, y int) int { return x-y } 然后构建插件: 运行下面命令构建插件: go build -buildmode=plug...阅读全文

2016-12-06 20:00:02 vWay
阅读:8244 评论:4

VSCode for go 1.7

终于受不了LiteIDE函数定义的跳转,每次都需要等2-3秒。试了一下VSCode秒开的快感之后,果断换!但是VSCode也不是十全十美,需要配置一番! 1.输入下面的命令,避免自动提示出现PANIC(GO升级到1.7之后出现的bug) gocode close gocode -debug -s 2. cmd+shift+b to run go build -v . task.json { "version": "0.1.0", "command": "go", "isShellCommand"...阅读全文

阅读:2135 评论:1

Go调试利器

package main import ( "os/signal" "os" "syscall" "fmt" "runtime" "time" ) // kill -SIGUSR1 pid func main() { time.Sleep(time.Hour) } func dumpStacks() { buf := make([]byte, 16384) buf = buf[:runtime.Stack(buf, true)] fmt.Printf("=== BEGIN goroutine s...阅读全文

2017-01-05 18:00:01 Kevin-air
阅读:1400 评论:1

搭建golang版ss服务

搭建golang版ss服务 第一步:安装 golang cd /usr/local # golang安装到此路径下 wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz tar -xvf go1.6.3linux-amd64.tar.gz vim /etc/profile # 设置系统 GOROOT 并添加环境变量 export GOROOT=/usr/local/go export PATH=$PATH:$G...阅读全文

2017年1月8日 youyu岁月
阅读:2830 评论:0

基于Golang的IP地址信息查询服务

原文链接:http://tabalt.net/blog/ipquer... 工作中经常会有通过IP匹配用户信息的需求,如确定用户所在的地区(国家/省份/城市)、运营商、时区、经纬度等等。前一阵有个Golang开发的项目也有这样的需求,于是简单实现了一个包,最近忙里偷闲又包了一个支持HTTP和GRPC方式调用的服务,并开源在GitHub上了。本文主要介绍IP地址信息查询的实现细节和使用方式。 首先交代一下GitHub地址: IpQuery Golang Package:https://github...阅读全文

阅读:5419 评论:0

Golang 通过 Consul 实现分布式锁

Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广...阅读全文

阅读:2010 评论:0

一步一步教你的机器人寻找资源链接

1. 前言 从之前的文章 从零到一:用Golang编写机器人 ,我们已经可以编写一个属于自己的小机器人了。 而本文将讲解自己的机器人Samaritan找电影技能的实现,算是抛砖引玉吧。 本文技术仅供交流学习,请尊重影视版权。 2. 明确需求与前期准备 当我们想下载电影时: 输入电影名称 找到相关页面 找到下载资源超链接 复制链接地址用于最终的下载 而交给机器人做的话: 识别用户的输入 找到资源链接并格式化 输出格式化之后的结果 其中第1步和第3步是不是似曾相识?其实这正是之前文章实现的一个对话过...阅读全文

阅读:1875 评论:0

Golang、python中登录开源中国,并发表博客。

GO、python用不了十几分钟可以做出来,易语言的话,可能几分钟完事,国产易语言感觉快捷啊。 type loginSave struct { returnCk []*http.Cookie } type oschina interface { login(user string, pass string) string save(title string, content string) string } func main() { user := "xxxxxx@qq.com"//帐号 pa...阅读全文

2017-03-26 13:00:32 大洋的顶端
阅读:1445 评论:1

Go 1.9中值得关注的几个变化

Go语言在2016年当选tiobe index的年度编程语言。 转眼间6个月过去了,Go在tiobe index排行榜上继续强势攀升,在最新公布的TIBOE INDEX 7月份的排行榜上,Go挺进Top10: 还有不到一个月,Go 1.9版本也要正式Release了(计划8月份发布),当前Go 1.9的最新版本是go1.9beta2,本篇的实验环境也是基于该版本的,估计与final go 1.9版本不会有太大差异了。在今年的GopherChina大会上,我曾提到:Go已经演进到1.9,接下来是G...阅读全文

七月 14, 2017 bigwhite
阅读:18168 评论:0

Golang依赖管理工具:glide从入门到精通使用

介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。 glide是Golang的包管理工具,是为了解决Golang依赖问题的。 为什么需要glide? 原因很简单,Go 语言原生包管理的缺陷。罗列一下golang的 get 子命令管理依赖有很多大缺陷: 能拉取源码的平台很有限,绝大多数依赖的是 github....阅读全文

2017-07-22 13:33:09 梦朝思夕
阅读:18377 评论:11

Go语言实战笔记(二十)| Go Context

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续笔记。觉得有帮助的话,顺手分享到朋友圈吧,感谢支持。 控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context。 什么是WaitGroupWaitGroup以前我们在并发的时候介绍过,它是一种控制并发的方式,它的这种方式是控制多个goroutine同时完成。 1234567891011121314151...阅读全文

阅读:796 评论:0

Redis之并发写入

首先需要澄清一个事实:redis服务端是单线程处理客户端请求,也就是说客户端请求在服务端是串行化执行的,因此对服务端来说,并不存在并发问题。但业务方却存在并发操作redis中的同一个key的情况。所以如何让A客户端知道B客户端正在操作它想操作的 key,就成了必须要讨论的问题。 那么开始总结下方案吧: 1. SETNX key value //key存在就不做任何操作,返回0;不存在操作成功返回1 这种方式通过对需要操作的key加锁来保证并发操作的串行化。这里我们以Golang代码为例来举例说明...阅读全文

阅读:5508 评论:0