Go语言中文网 为您找到相关结果 862

模拟浏览器登录操作

近来想用Go做一点事,以减轻工作上的负担。 我的工作中有几项工作是每日重复的,大致内容: 1、将数据收集到Excel中。 2、收集齐后,将Excel中的部分数据提交到办公系统中(网页上操作)。 3、再将提交过后的审批号码提取出来,存入Excel中。 我现在有两个问题: 1、现在,上面的第一步Excel操作,Go中不知有何现成的库,若没有,我有个效率不高的办法。这个问题倒还不算急。 2、第二个问题比较着急。向办公系统提交数据,得先登录。我的操作步骤如下: 2.1、先访问办公系统首页,获取Session的Cookie。 2.2、进行登录数据提交,将刚才获取的这个Session的Cookie一并提交上去。 2.3、进行业务数据提交。 我现在的...阅读全文

GO同包内不同文件方法引用问题

问题:GO语言同包内不同文件方法引用在本地LiteIDE中可运行,但在linux环境下报错: 在main.go中引用c2c_admin_base_info.go中GetcsChatCntTrend方法: 本地运行正常,但部署至linux服务器时,报错: 解决方案:将c2c_admin_base_info.go放到包data下 main.go c2c_admin_base_info.go 层级关系: 注:包和package有关系:main包和main函数比较特殊,是程序的入口,其他的包就要和文件夹名字一样(感谢扫盲的GO大牛...阅读全文

博文 2014-10-16 17:00:00 sea_198821

使用consul实现分布式服务注册和发现

使用consul实现分布式服务注册和发现 七 06 bigwhite技术志 Airbnb, cluster, consul, docker, etcd, Go, Golang, haproxy, hashicorp, json, raft, SmartStack, ZooKeeper, 分布式系统, 强一致性, 服务发现, 服务注册, 选主 No Comments Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如Zoo...阅读全文

博文 2015-07-14 11:16:39 bigwhite

goproxy和msocks简介

goproxy是我个人写的,和shadowsocks同类的软件。当然,在设计之初我完全不知道shadowsocks的存在,goproxy的最初目标也不是成为shadowsocks的同类。只是我一直无法实现一个可靠的,能够达成目标的系统。最后想,那这样吧,我找一个跳一跳能够够到的苹果。大幅简化的结果就是goproxy——后来我才知道shadowsocks。 shadowsocks的基本原理 shadowsocks的基本概念,就是利用某种不同于SSL的协议,将本地的socks数据流转发到远程。这个协议,在默认版本中是一个凯撒变换,后来有了aes等加密算法。goproxy也采用了类似的做法,同样支持aes等加密算法。在每次连接时,客户端先用加密通道连接服务器端,然后完成整个连接通路。这样的设计鲁棒...阅读全文

博文 2014-10-06 06:06:32 shell909090

重量级爬虫软件Pholcus

# pholcus [![GoDoc](https://godoc.org/github.com/tsuna/gohbase?status.png)](https://godoc.org/github.com/henrylee2cn/pholcus) [![GitHub release](https://img.shields.io/github/release/henrylee2cn/pholcus.svg)](https://github.com/henrylee2cn/pholcus/releases) Pholcus(幽灵蛛)是一款纯Go语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批...阅读全文

Go 的快速 HTTP 包fasthttp

fasthttp 是 Go 的快速 HTTP 实现,当前在 1M 并发的生产环境使用非常成功,可以从单个服务器进行 100K qps 的持续连接。 HTTP 服务器性能与 net/http 比较 总而言之,fasthttp 比 net/http 快 10 倍 GOMAXPROCS=1 net/http: $ GOMAXPROCS=1 go test -bench=NetHTTPServerGet -benchmem PASS BenchmarkNetHTTPServerGet1ReqPerConn 100000 21211 ns/op 2407 B/op 30 allocs/op BenchmarkNe...阅读全文

服务发现:Zookeeper vs etcd vs Consul

【编者的话】本文对比了Zookeeper、etcd和Consul三种服务发现工具,探讨了最佳的服务发现解决方案,仅供参考。 如果使用预定义的端口,服务越多,发生冲突的可能性越大,毕竟,不可能有两个服务监听同一个端口。管理一个拥挤的比方说被几百个服务所使用的所有端口的列表,本身就是一个挑战,添加到该列表后,这些服务需要的数据库和数量会日益增多。因此我们应该部署无需指定端口的服务,并且让Docker为我们分配一个随机的端口。唯一的问题是我们需要发现端口号,并且让别人知道。 当我们开始在一个分布式系统上部署服务到其中一台服务器上时,事情会变得更加复杂,我们可以选择预先定义哪台服务器运行哪个服务的方式,但这会导致很多问题。我们应该尽我们所能尽量利用服务器资源,但是如果预先定义每个服务的部署位置,那么...阅读全文

博文 2015-09-20 10:39:43 国会山上的猫TuxHu

golang http服务器跨域问题解决

func main() { openHttpListen() } func openHttpListen() { http.HandleFunc("/", receiveClientRequest) fmt.Println("go server start running...") err := http.ListenAndServe(":9090", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } func receiveClientRequest(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin"...阅读全文

博文 2016-04-12 20:00:01 JD85

Intellj IDEA 15 搭建golang开发环境(超简单,可Debug,附下载链接)

直奔主题,首先安装Intellj IDEA 15(其它版本也行),可以装免费的社区版,也可以装付费的旗舰版,如果你有钱可以买正版,鉴于还有许多像我一样的穷书生,这里给个旗舰版破解的下载链接:http://pan.baidu.com/s/1o76epDo 密码: 7vjk 博主写这篇文章的时候最新版是15.0.3,但是那个版本暂时无法破解,但是15.0.2可以,下载地址里有破解工具和傻瓜式使用说明,只需三步。 然后开始装golang的插件,插件官网地址是:https://github.com/go-lang-plugin-org/go-lang-idea-plugin 提示:Idea的插件仓库里面本身也有Go,但是版本相对更新很慢,博主写文章的时候Go的版本已更新到1.6,而Idea本身插件仓...阅读全文

博文 2016-03-03 13:00:01 QQ245671051

go post json 遇到的问题

想用go写一个客户端,发一个JSON数据到JAVA的服务端接口, 结果,JAVA接收的BODY一直是空,但是PYTHON写的服务端是OK的 网上查了方法 其中:一些方法 也试过了, type RequestBody struct { Status string `json:"status"` Region []string `json:"region"` Percent string `json:"percent"` Task_id string `json:"task_id"` } b, err := json.Marshal(rbody) body := bytes.NewBuffer([]byte(b)) (1) resp, err := http.Post(url, "applica...阅读全文

博文 2015-09-18 15:00:01 vance928

Go 在万亿级大数据平台开发中的实战

导语迅猛发展的互联网将我们带入了大数据时代,大数据已经成为发展中不可或缺的力量支撑,大数据挑战和机遇并存,如何更好合理、灵活应用大数据是企业的关注所在。七牛大数据团队研发工程师孙健波为大家带来题为Go 在大数据开发中的实战经验的技术分享。以下是此次演讲内容整理。作者介绍:孙健波,InfoQ 专栏作者,硕士毕业于浙江大学计算机学院,2015 年底加入七牛,参与并负责七牛大数据平台整条链路多模块的架构设计以及开发工作,包括大数据计算引擎、时序数据库服务以及日志检索服务。在此之前主要研究和参与 Cloudfoundry、Kubernetes、Docker 等容器与容器云相关工作,是《Docker 容器与容器云》一书的主要作者之一。大数据图 1如图 1 可以看到,现在大数据的生态相对来说比较成熟了,...阅读全文

博文 2017-08-30 05:45:40 孙健波

golang微信支付服务端

一般来说,使用golang主要还是写服务端。所以本文主要讲golang在处理微信移动支付的服务端时的统一下单接口和支付回调接口,以及查询接口。 微信支付流程 下图是微信官网的支付流程描述: 图中红色部分就是微信支付中,我们的系统包括app,后台需要参与的流程。 其中需要后台也就是Server需要参与的流程有三个: 1. 统一下单并返回客户端 2. 异步通知结果回调处理 3. 调用微信支付查询接口 微信所有的接口都是以http RESTFul的API来提供,所以对于server而言其实就是call这些接口并处理返回值。 golang的服务端实现 1,调用统一下单接口 首先需要呼叫:https://api.mch.weixin.qq.com/pay/unifiedorder 这是微信的api,呼...阅读全文

博文 2015-12-23 14:00:01 xyzhaopeng

分布式文件系统 IPFS

IPFS 是分布式文件系统,寻求连接所有计算机设备的相同文件系统。在某些方面,这很类似于原始的 Web 目标,但是 IPFS 最终会更像单个比特流群交换的 git 对象。 IPFS = InterPlanetary File System IPFS 云成为一个新的,重要的网络子系统,如果构建得当,那么可以完善或者替换 HTTP,或者说可以完善或者替代更多,听起来很疯狂,但是确实很疯狂! IPFS 结合了 Git,BitTorrent,Kademlia,SFS 和 Web 的优势,提供跟 HTTP web 一样简单的接口。 IPFS 分为 3 个代码库: * [github.com/ipfs/ipfs](https://github.com/ipfs/ipfs) - IPFS 规范 ...阅读全文

开源项目 2015-01-27 16:00:00 ipfs

Go语言爬虫

之前写爬虫都是用的python语言,最近发现go语言写起来也挺方便的,下面简单介绍一下。这里说的爬虫并不是对网络中的很多资源进行不断的循环抓取,而只是抓通过程序的手段都某些网页实现特定的信息抓取。可以简单分成两个部分:抓取网页,对网页进行解析。抓取网页。一般是向服务器发送一个http get/post请求,得到response。go提供的http包可以很好的实现。get方法:1resp, err := http.Get(“http://www.legendtkl.com") post方法:12resp, err := http.Post(“http://example.com/upload”, “image/jpg”, &buf)resp, err := http.PostForm(...阅读全文

博文 2017-07-02 19:22:57 Tao Kelu

IE 11下载文件中文乱码解决(go/php)

IE 11下载文件的时候发现乱码. 网上查了下资料,了解了一下,主要是user-agent变了,不再是MSIE,面是rv:11.0这样,所以只要服务端判断出是IE 11,处理跟MSIE一样。 GO: func setDownloadFileName(w http.ResponseWriter, fileName, agent string) { if strings.Contains(agent, "MSIE") { fileName = url.QueryEscape(fileName) fileName = strings.Replace(fileName, "+", "%20", -1) } if strings.Contains(agent, "rv:") && strings.Co...阅读全文

博文 2016-04-07 21:00:06 rariki

Go 系列教程 —— 24. Select

欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 24 篇。 ## 什么是 select? `select` 语句用于在多个发送/接收信道操作中进行选择。`select` 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,`select` 会随机地选取其中之一执行。该语法与 `switch` 类似,所不同的是,这里的每个 `case` 语句都是信道操作。我们好好看一些代码来加深理解吧。 ## 示例 ```go package main import ( "fmt" "time" ) func server1(ch chan string) { time.Sleep(6 * time.Second) ch <-...阅读全文

Go 语言使用 TCP keepalive

自:http://studygolang.com/articles/951 Go 语言使用 TCP keepalive 如果你写过某些 TCP socket 代码,你可能会疑问:如果网线被拨掉或者远程主机崩溃了我的TCP连接会怎样? 简短的答案是:一点影响都没有。这种情况下连接的结束远程主机是不会发送FIN数据包的,并且本地系统不能检测连接是否已中断。所以需要作为程序员的你来解决这种情况。 --zxp 翻译于 1 个月 前 0人顶 顶 翻译的不错哦! GO语言为你提供了解决这个问题的几种方法。首选的方法可能是 net.Conn 接口中的SetReadDeadline方法。假设你的连接在以一种特定的间隔来接收数据,你可以简单地把读取超时当作一个io.EOF错误并Close这个连接。很多现有的T...阅读全文

博文 2015-01-29 17:00:01 leonzhouwei

GO语言HTTP代理服务器

package main import ( "fmt" "io" "log" "net/http" "net/http/httputil" "net/url" ) func httpUserInfo(w http.ResponseWriter, r *http.Request) { ret := "your addr is:" + r.RemoteAddr + "\r\n" ret += "request headers:" + fmt.Sprint(r.Header) io.WriteString(w, ret) } func main() { targetURL, err := url.Parse("http://127.0.0.1:80") log.Println("program s...阅读全文

博文 2015-06-17 23:07:39 scybs

使用Go语言(golang)写个简单的爬虫

上次用Scala写了个爬虫。最近在闲工夫之时,学习Go语言,便用Go移植了那个用Scala写的爬虫,代码如下: package main import ( "fmt" "io/ioutil" "net/http" "regexp" ) var ( ptnIndexItem = regexp.MustCompile(`< atarget="_blank" href="(.+\.html)" title=".+" >(.+)`) ptnContentRough = regexp.MustCompile(`(?s).*

(.*)
.*`) ptnBrTag = regexp.MustCompile(`
`...阅读全文

博文 2014-10-04 19:26:05 tt-0411

[golang]GO语言编写的基于UDP协议的简易聊天软件

初学GO不到两周,本着熟悉语言的目标写了这个小程序,漏洞很多,实现上写的也有些渣渣,欢迎大家阅读指点。 下载地址:https://github.com/yinxin630/gochat 简单思路描述: 0、服务端监听客户端请求,完成会话转发的任务 1、服务端采用心跳包维护用户在线状态 2、客户端通知服务端自己的监听地址,创建服务端-客户端信息通道 服务端: package main import ( "fmt" "net" "os" "strconv" "time" ) //用户信息 type User struct { userName string userAddr *net.UDPAddr userListenConn *net.UDPConn chatToConn *net.UDPC...阅读全文

博文 2014-11-11 06:00:06 u011229962

给自己一条退路,再次比较Erlang和Golang

给自己一条退路,再次比较Erlang和Golang_陈叶皓_新浪博客 雨天的周末,适合码字的时节。。。 一年前我开始学习go语言的时候,如获至宝,既有python的编码效率,又带来性能的15倍提升。尤其是在异步编程方面,可以使用channel同步线程,不必加锁可以充分利用cpu多核计算,真是没有弱点。 后来慢慢了解到,这种无锁异步编程的思想,源自一门叫做erlang的语言,Erlang更加了不起。除了异步编程之外,这门语言天生支持分布式,单机上开发的软件,可以不加修改地运行在集群上,另外还支持软件版本的热升级,自带的OTP框架支持进程间的监督和重启,提供了坚如磐石的运行环境。Erlang是如此完美,我认为是最适合开发互联网应用的语言,一时间有种“终于找到真理”的喜悦。 不过那个时候,心里总觉...阅读全文

博文 2015-01-22 13:00:01 seven1979

golang实现的反向代理

翻阅golang包手册的时候看到net/http/httputil有一个type ReverseProxy,这个不是反向代理吗!golang自带反向代理功能?好奇就试了一下,确实非常简单,没有几行代码就实现了一个简易的反向代理服务。 关于反向代理百度百科上说的非常详细了,这里摘录一下定义: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 golang实现代码 package main import ( "log" "net/http" "net/http/httputil" "net/url" ) ...阅读全文

博文 2015-10-16 21:52:06 陈杰斌

golang 仿python pack/unpack

写得不完善也不完美 尤其是高低位转换那(go和c 二进制高地位相反 需要转换,还有go int转[]byte长度是4位),希望牛人看后指导一下 项目需要通过socket调取 客户端是go ,服务器端是python,由于需要封包解包,就参照python写的 python 的pack/unpack 参考 Python使用struct处理二进制(pack和unpack用法) package includes import ( "bytes" "encoding/binary" "fmt" _ "os" "strconv" "strings" ) type Protocol struct { Format []string } //封包 func (p *Protocol) Pack(args .....阅读全文

博文 2015-04-08 04:00:00 wangxusummer

geohash算法以及求最邻近区域的点-golang

geohash算法以及求最邻近区域的点, 对这两个算法封装成了golang package, 写LBS服务程序的时候有用。https://github.com/gansidui/geohashhttps://github.com/gansidui/nearest package main import ( "fmt" "github.com/gansidui/geohash" ) func main() { latitude := 39.92324 longitude := 116.3906 precision := 5 hash, box := geohash.Encode(latitude, longitude, precision) fmt.Println(hash) fmt.Prin...阅读全文

博文 2014-12-30 13:00:01 bluezwt

[深圳][大疆创新][15K-40K]招聘高级/中级Golang研发工程师

## 高级Golang研发工程师 ### 岗位职责: 1. 参与公司微服务架构的整体设计和开发,进行相关技术调研、选型和实践; 2. 负责编制、修改项目相关的技术文档和规范; 3. 负责新人指导和code review,技术难题研究,提升团队技术水平; 4. 参与公司开源项目的设计与开发,提高公司在业界的影响力。 ### 任职要求: 1. 熟练掌握Golang,4年以上工作经验,2年以上Golang开发经验,有完整项目经验,同时熟练掌握Java/Ruby/Python/C#等任意一门语言者优先; 2. 熟练掌握Golang相关技术,熟悉Golang协程,熟悉channel和锁,对高并发、高可用架构系统有正确、深刻的理解,有分布式服务设计或开发经验者优先; 3. 熟悉M...阅读全文

分布式文件系统 SeaweedFS

SeaweedFS 是简单,高伸缩性的分布式文件系统,包含两部分:存储数十亿的文件;快速为文件服务。SeaweedFS 作为支持全 POSIX 文件系统语义替代,Seaweed-FS 选择仅实现 key-file 的映射,类似 "NoSQL",也可以说是 "NoFS"。 SeaweedFS 仅花费 40 字节的硬盘来存储每个文件的元数据。 基准测试基于 Mac Book,固态硬盘,CPU:1 Intel Core i7 2.6GHz。 编写 1 百万的 1KB 文件:

Concurrency Level:      16
Time taken for tests:   88.796 seconds
Complete requests:  ...阅读全文

扯淡 erlang 的“适合”和“不适合”

现在在体系内大力推广erlang了。不过挺遗憾的是,推行 erlang 前并没有对这个语言自身进行深入的论证和研究,只是由核心人员写了一个简单得不能再简单的 demo,在项目里用了一个开源的 erlang 项目。从工程的角度来说,这是不靠谱的,为了让 erlang 的使用更加靠谱,所以在这里扯淡一下。资料来源于erlang官方和我的猜测,对不对由我,信不信由你。 先看来自 erlang FAQ的内容(自己随手翻译的,不一定准确,可看原文:http://www.erlang.org/faq/introduction.html#1.3): —————————————————— 1.3 Erlang 特别适合使用的项目是什么? 分布式的,可靠的,软实时并发系统。 * 电信系统,例如控制交换或者协议...阅读全文

博文 2014-10-09 16:15:13 mikespook

HTTP Payload

今天用go重写了一个用Ruby实现的http请求功能。但是在请求参数相同的情况下go的请求一直被服务器返回参数错误。 既然参数相同,那就应该是Header里面有问题喽? 我把Ruby代码生成的请求弄出来看了下 POST参数是包在payload里面的。哦! 等等!payload是什么鬼啊!! 我在go的http package里面没看到这玩意儿。 所以还是要知道payload是干嘛的。 根据wiki的解释:payload是跟在请求header后面的数据,是一次请求的主要数据或者说主要目的。 SO上有一个直观的解释:Request Payload 就是POST、PUT等http请求所发送的数据。它是header之后的部分。 一个Content-Type是application/json的请求,具...阅读全文

Scala和Go的区别

Keith Morrow作为Scala的支持者,发表了这篇倾向于Scala的文章,主要也是为了反驳一年前 Paul Dix 的文章:why he prefers Go over Node and Scala,Paul Dix认为Go好于Scala的原因在于下面几个方面:并发性, 易理解性, 代码分享和学习难度。之所以时隔一年才有人反驳,一则因为双方不了解,二则可能是随着Go编写的Docker流行,拳头产品的出现让大家对Go刮目相看。 Keith Morrow则认为Go比Scala易于学习是因为Go是一种命令式语言。这相对不习惯函数语言的人来说易于掌握一些。 因为大多数人对于命令式语言比较熟悉,因此毫无疑问在代码共享方面Go要易于Scala。那么,在学校曲线上,命令式语言的人学习函数编程要难一...阅读全文

博文 2014-12-22 09:00:01 working_brain

分布式 SQL 数据库 TiDB

TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库。其灵感来自于 Google 的 [F1](http://research.google.com/pubs/pub41344.html), TiDB 支持包括传统 RDBMS 和 NoSQL 的特性。 **TiDB 的源码已经托管在 Git@OSC 上,详情请查看:** [http://git.oschina.net/pingcap/tidb](http://git.oschina.net/pingcap/tidb) 架构: ![architecture](http://static.oschina.net/uploads/img/201509/06141432_Fsmo.png) 特性: [](http...阅读全文

开源项目 2015-09-05 16:00:00 pingcap

go-sql-driver发生invalid connection(bad connection)解决方法讨论

在使用go-sql-driver过程中,有时候我发现会报invalid connection的错误,这个错误产生的原因设置了空闲连接不为0时,客户端拿到连接有可能是已经被服务端关闭了,此时就会发生invalid connection,网上有些解决方案是把空闲连接数设置0,不知道设置为0跟设置为50之类的性能有什么大的区别吗?跪求大神解答...阅读全文

01-Golang可以做什么

![Golang的发展方向: 区块链研发工程师 Go服务器端/游戏软件工程师 Golang分布式/云计算 Golang的应用方向: 区块链技术:简称BT Blockchain technoglogy,也被称为 分布式账本技术,是一种互联网数据库技术,其特点是去中心化,公开透明,让每个人均可参与数据库记录。 后端服务器应用: 吃撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标 美团 云计算/云服务的后台应用 CDN的调度系统,分发系统,监控系统,短域名服务,CDN内部开放平台,运营报表系统以及其他一些小工具等。 京东云 Golang的计算能力很强 ](https://static.studygolang.com/180918/06db76e0112...阅读全文

Go channel

// xuhh_go_channel project main.go /* channel 1. channel 在读取数据的时候,如果此时通道内没有数据,则会阻塞。 在取数据的时候,如果此时通道内没有数据,则也会阻塞。 2. channel 在创建的时候会存在一个数据缓冲,如果通道内存入的数据超过缓冲,则就会崩溃。 range 在遍历 channel 的时候需要注意的问题: 1. range在遍历channel的时候,一直在运行,直到close(channel)的时候才会结束调用。 2. range会一直读取数据,如果没有数据,就会阻塞在那里。 len(channel):channel内未被读取的len cal(channel):channel的容量 select机制 : 1. 检查每个c...阅读全文

游戏分布式服务器gonet

gonet 游戏服务器架构,mmo架构,分布式snowflake64为整形uuid,ai行为树,配置data,游戏大部分都在内存运算,分布式缓存redis。 设计之初,建立在actor模式下的;rpc,以及消息驱动,rpc无需注册,支持int,数据,struct(struct必须要注册结构题即可);sql封装简单的orm,具体看demo websocket模式下,要在net,websocket注视掉如下代码:https://studygolang.com/articles/14842 代码除了mysql,protobuf,redis这几个第三方库以外,其他都是自己写的,方便性能和修改,主动权在自己手里 服务器之间rpc,客户端服务器之间protobuf + rpc,客...阅读全文

开源项目 2019-01-16 12:53:57 ylb

不用go-(xxoo)agent的也有可能是程序员

记得是去年某个时候,在一个群里问大家是怎么翻(什么)墙的,发现很多人是用go-(xxoo)agent的,而我当时完全没听说过go-agent,因为我已经N多年不翻(什么)墙了,于是,有人就说:“连go-(xxoo)agent都没用过你还是程序员吗?”说实话,我也不希望我是程序员啊!可我真的没用过go-(xxoo)agent啊! 想起我一位前同事,工作很多年了,却从来没用过linux!(也不知道他说的是真的还是假的,至于你信不信,反正我是信了。)他说这是他第一次用linux!(也难怪啊,他在原来的公司干里好多年,公司是用.net的。自然没必要用linux。)但我不能说他不是程序员,事实上,他工作完成得很出色。i第一次接触linux,很快就熟悉了。 不用linux还可以用windows,不用go...阅读全文

Go test 测试单个用例

通过 go help testflag 可以看出,可以使用 test.run 加正在表达式来指定要测试的用例。 如有以下用例在包 foo/test 中: func TestFoo(t *testing.T){} func TestFoo1(t *testing.T){} func TestAbc(t *testing.T){} go test -v foo/test 将测试所有的用例 (-v 表示输出详细信息,无论成功失败) go test -v -run TestFoo foo/test 将测试 TestFoo 和 TestFoo1 go test -v -run ^TestFoo$ foo/test 将只测试 TestFo...阅读全文

代理服务扩展

之前自己实现了一个代理服务,当时考虑的是只要支持SOCKS5就好了,因为我经常用CHROME,配合着SwitchySharp,体验还是很棒的。但是我现在有点讨厌CHROME,它现在太庞大了,占用资源太多了。而且我有锁定网页的习惯,一打开CHROME,就十几个甚至二十几个进程起来,让我很不爽。但是不得不说CHROME的安全设计还是非常棒的。然后我就试了下FireFox,额,我觉着它和IE差不多.然后就放弃了,然后看看了手头上的IE已经到11了,平时用起来感觉还是很不错的,所以我想支持IE的代理。 IE的代理机制比较囧,比如说它只支持SOCKS4,不支持SOCKS5,然后又分为HTTP代理,HTTPS代理,还有FTP代理。也没有像CHROME提供强大的代理插件机制。虽然IE提供了PAC机制,但是...阅读全文

博文 2014-10-07 09:20:19 concurrency

开源分布式监控系统 OWL-Go

OWL 是 TalkingData 公司推出的一款开源分布式监控系统 * Go 语言开发,部署维护简单 * 分布式,支持多机房 * 多维的数据模型,类 opentsdb * 支持多种报警算法,报警支持多条件组合、克隆 * 灵活的插件机制,支持任意语言编写,支持传参 * 丰富的报警渠道,邮件、微信、短信 * 原始数据永久存储 * 自带 Web 管理界面以及强大的自定义图表功能 **系统架构** ![image](https://static.oschina.net/uploads/space/2016/1219/125459_fwZh_2720166.png) **Demo** [http://54.223.127.87/](http://54.223.127.87/)...阅读全文

Golang实现snowflake算法(分布式唯一id生成器)

package main import ( "errors" "fmt" "sync" "time" ) const ( twepoch = int64(1417937700000) // 默认起始的时间戳 1449473700000 。计算时,减去这个值 DistrictIdBits = uint(5) //区域 所占用位置 NodeIdBits = uint(9) //节点 所占位置 sequenceBits = uint(10) //自增ID 所占用位置 /* * 1 符号位 | 39 时间戳 | 5 区域 | 9 节点 | 10 (毫秒内)自增ID * 0 | 0000000 00000000 00000000 00000000 00000000 | 00000 | 000000 0...阅读全文

博文 2017-04-25 07:00:25 路人甲777

Golang Gin实践 连载十七 用 Nginx 部署 Go 应用

Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 原文地址:Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 前言 如果已经看过前面 “十六部连载,两部番外”,相信您的能力已经有所提升 那么,现在今天来说说简单部署后端服务的事儿 🤓 做什么 在本章节,我们将简单介绍 Nginx 以及使用 Nginx 来完成对 go-gin-example 的部署,会实现反向代理和简单负载均衡的功能 Nginx 是什么 Nginx 是一个 Web Server,可以用作反向代理、负载均衡、邮件代理、TCP / UDP、HTTP 服务器等等,它拥有很多吸引人的特性,例如: 以较低的内存占用率处理 10,000 多个并发连接(每10k非活动HTTP保持活动连接约2.5 MB...阅读全文

用不到 100 行的 Golang 代码实现 HTTP(S) 代理

![](https://raw.githubusercontent.com/studygolang/gctt-images/master/http-s-proxy/header.jpeg) 我们的目标是实现一个能处理 HTTP 和 HTTPS 的[代理服务器](https://en.wikipedia.org/wiki/Proxy_server)。代理 HTTP 请求的过程其实就是一个解析请求、将该请求转发到目的服务器、读取目的服务器响应并将其传回原客户端的过程。这个过程只需要内置的 HTTP 服务器和客户端([net/http](https://golang.org/pkg/net/http/))就能实现。HTTPS 的不同之处在于使用了名为 “HTTP CONNECT 隧道”的技术。首先...阅读全文

博文 2017-12-16 13:58:50 dongkui0712

比较Erlang和Golang

雨天的周末,适合码字的时节。。。 一年前我开始学习go语言的时候,如获至宝,既有python的编码效率,又带来性能的15倍提升。尤其是在异步编程方面,可以使用channel同步线程,不必加锁可以充分利用cpu多核计算,真是没有弱点。 后来慢慢了解到,这种无锁异步编程的思想,源自一门叫做erlang的语言,Erlang更加了不起。除了异步编程之外,这门语言天生支持分布式,单机上开发的软件,可以不加修改地运行在集群上,另外还支持软件版本的热升级,自带的OTP框架支持进程间的监督和重启,提供了坚如磐石的运行环境。Erlang是如此完美,我认为是最适合开发互联网应用的语言,一时间有种“终于找到真理”的喜悦。 不过那个时候,心里总觉得有什么地方不对,那就是,七牛CEO许式伟本身是Erlang高手,他却...阅读全文

博文 2015-01-27 11:00:01 天下杰论

Golang动手写一个Http Proxy

本文主要使用Golang实现一个可用但不够标准,支持basic authentication的http代理服务。 为何说不够标准,在HTTP/1.1 RFC中,有些关于代理实现标准的条目在本文中不考虑。 Http Proxy是如何代理我们的请求 Http 请求的代理如下图,Http Proxy只需要将接收到的请求转发给服务器,然后把服务器的响应,转发给客户端即可。 Https 请求的代理如下图,客户端首先需要发送一个Http CONNECT请求到Http Proxy,Http Proxy建立一条TCP连接到指定的服务器,然后响应200告诉客户端连接建立完成,之后客户端就可以与服务器进行SSL握手和传输加密的Http数据了。 为何需要CONNECT请求? 因为Http Proxy不是真正的服务...阅读全文

博文 2017-09-17 13:11:26 杨锡坤

分布式任务调度平台forest

# 分布式任务调度平台 ## 前言 在企业系统开发过程中难免少不了一些定时任务来进行定时触发执行任务,对于非分布式环境系统中,我们只需要在对应系统中内部集成一些调度库进行配置定时触发即可。 比如:使用Spring框架集成quartz,只需要进行一些简单的配置就能定时执行任务了。但是随着企业的系统越来越多、逐步从单一应用慢慢演变为微服务集群。 在分布式集群系统中主要面临出如:任务的重复执行、没有统一定时任务配置、任务节点故障转移、任务监控&报警等一些列的功能都是要在分布式系统中进行解决。 此分布式的定时任务调度平台,它非常轻量小巧,使用简单,后端以中心服务器为调度核心,负责集群中各种任务的动态分配和调度执行。 在平台前端支持Web界面可视化管理,我们可以创建、暂...阅读全文

开源项目 2019-07-26 10:09:46 busgo

高性能代理服务器Proxy-Go

Proxy 是 golang 实现的高性能 http,https,websocket,tcp 代理服务器,同时支持内网穿透。 ## Features - 链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理. - 通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征. - 智能HTTP代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理(前提是配置了上级代理)访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理. - 域名黑白名单,更加自由的控制网站的访问方式。 - 跨平台性,无论你是widows,linux,还是mac,甚至是树莓派...阅读全文

go代理服务器代码

go代理服务器代码 最近用废弃的小笔记本搭了个centos服务器挂着,搭了ssh,tomcat,go环境,想搭个代理服务器访问路由,不想安装,想自己写一个,顺便复习一下go语言知识。 一开始,我网上搜了一下go语言写代理服务器的代理,搜索到一个: 来自:http://symphony.b3log.org/article/1357452978419 (原文地址:http://kejibo.com/golang-http-proxy-server 已失效) package main import ( "http" "log" "os" "io/ioutil" ) func handler(w http.ResponseWriter, r *http.Request) { resp, err :=...阅读全文

博文 2015-08-25 19:00:00 u010499721