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

golang+websocket

参考资料: 0. 浅谈websocket:http://www.cnblogs.com/whthomas/p/3801147.html 1. golang版websocket源码:http://code.google.com/p/go.net/websocket 2. golang版websocket文档:http://godoc.org/golang.org/x/net/websocket#ex-Handler 3. 测试浏览器是否支持websocket地址:http://www.websocket.org/echo.html 4. 简单的golang版的websocket server:http://www.xinze.me/%E5%9F%BA%E4%BA%8Egolang%E7%9A%...阅读全文

博文 2015-07-23 03:00:00 hezhixiong

线上Golang程序 GC调优一例

13 Nov 2013 线上Golang程序 GC调优一例 Golang 是一个很有意思的语言,第一次看它介绍时,就很喜欢。半年前加入美团,有机会用它写了几个线上程序。其中一个程序Router,每天需要转发几千万的请求。由于需要根据请求内容决定route路径,它需要加载几十万deal(美团单)的信息到内存供查询。问题来了,用map装的几十万数据让gc很辛苦。 Deal数据 // Deal的定义 type DealTiny struct { Dealid int32 Classid int32 Mttypeid int32 Bizacctid int32 Isonline bool Geocnt int32 } gc停顿 用go写一个简单的Web程序,设置GOGCTRACE环境变量为1后启动程...阅读全文

博文 2014-11-03 14:42:37 沈锋

eclipse搭建golang for windows

用惯了eclipse,所以。。。。 golang windows开发环境 参考文档:http://golang.org/doc/install 1.下载go安装包http://code.google.com/p/go/downloads/list 2.安装下载包 2.设置环境变量 在“我的电脑”中配置GO的环境变量: 2.1新建环境变量 GOROOT,值为你所解压的GO的根目录(作者的为 C:\go) 2.2在PATH环境变量中添加GO的bin,作者的为 %GOROOT%\bin; 2.3打开cmd命令行,输入 go。如果配置正确,则会有帮助提示。 安装及配置GoClipse GoClipse是Eclipse的一个插件,当前0.8.0版本要求Java 7及Eclipse4.3 3.1 安装j...阅读全文

博文 2015-03-28 03:00:03 kuangyuping

windows 下的 eclipse安装goclipse 配置golang开发环境

1. 下载goclipse eclipse plugins http://goclipse.googlecode.com/svn/trunk/goclipse-update-site/ (建议使用proxy下载,除非你能直接访问;)) 安装完插件后,重启可以看到eclipse的右上角有个golang logo , 地鼠图标: 2. 下载golang,调试tools 下载Golang Windows 版本当前使用 go1.3.3.windows-386.zip :https://storage.googleapis.com/golang/go1.3.3.windows-386.zip 使用proxy 访问站点取得最新版本 : https://golang.org/dl/ 下载liteidex2...阅读全文

博文 2014-11-22 17:00:01 hotkit

golang sync.Pool

Go 1.3 的sync包中加入一个新特性:Pool。 官方文档可以看这里http://golang.org/pkg/sync/#Pool 这个类设计的目的是用来保存和复用临时对象,以减少内存分配,降低CG压力。 type Pool func (p *Pool) Get() interface{} func (p *Pool) Put(x interface{}) New func() interface{} Get返回Pool中的任意一个对象。 如果Pool为空,则调用New返回一个新创建的对象。 如果没有设置New,则返回nil。 还有一个重要的特性是,放进Pool中的对象,会在说不准什么时候被回收掉。 所以如果事先Put进去100个对象,下次Get的时候发现Pool是空也是有可能的。 ...阅读全文

博文 2014-10-29 08:00:01 seago123

[Golang]你处于使用Go语言的哪个层次,来测测吧

Francesc (@francesc) 是 Go 核心团队的一员, 是提倡 Google Cloud 平台的开发者. 他是一个编程语言的爱好者, Google的技术指导大师, Go tour的创造者之一. 这个讨论的灵感来自于另一个 Raquel Vélez 在 JSConf. Slides 的讨论,这个讨论已经发到了这里. Sourcegraph 是下一代编程协作工具, 用于搜索, 探索, 和审查代码. 我们参加GopherCon India 来分享我们是怎样使用 Go 并学习别人是怎样使用它的, 对配合liveblog的这次讨论我们深感荣幸. 作为Go团队的开发者之一,Francesc可能比世界上其他人接触到的Go语言程序员都要多。正因为有了这样的有利条件,他把Go语言的学习过程划分为...阅读全文

博文 2015-03-13 16:00:02 abv123456789

Centos install Shadowsocks-go

正文开始了,请注意下面: 原文链接:https://techllage.com/techllage/131-shadowsocks-go (已挂) 今天又来发教程了……过几天复习忙起来了就发不了了,干脆趁这个周日晚上发出来吧。今天我来介绍一下 shadowsocks-go 的配置教程。昨天我写的教程主要讲了Shadowsocks-libev/Shadowsocks-python的教程。这两款是开发进度最快,最稳定的版本。而shadowsocks-go的优点在于,它可以实现服务端配置多用户,甚至客户端配置多服务器。因此实用价值是很高的。不过配置难度稍微大一些。(未完待续) 我的实验环境:Techllage的服务器,centos 7 x64版本,Golang 1.4。整个过程只需要一个SSH客户...阅读全文

博文 2015-10-01 03:00:01 tianzhenyun

go语言实现线程池

话说真的好久没有写博客了,最近赶新项目,工作太忙了。这一周任务比较少,又可以随便敲敲了。 逛论坛的时候突发奇想,想用go语言实现一个线程池,主要功能是:添加total个任务到线程池中,线程池开启number个线程,每个线程从任务队列中取出一个任务执行,执行完成后取下一个任务,全部执行完成后回调一个函数。 不知道有没有卵用,但是我尝试用它开启3个线程,下载10个文件,效果还是不错的。第一次写这方面的东西,可能写得不好。 思路就是把任务放到channel里,每个线程不停的从channel中取出任务执行,并把执行结果写入另一个channel,当得到total个结果后,回调函数。 上一发代码: 1 type GoroutinePool struct { 2 Queue chan func() err...阅读全文

博文 2015-07-23 03:00:01 wolfred7464

记golang数据库查询封装的坑

前文 golang接触也有一段时间,项目中有用到web api,基本上就是post json格式的,本想用java来写,刚下手想到java太臃肿,各种繁琐。 觉得用golang小试一把,于是github一把,还是发现很多go rest 插件,选了一个https://github.com/ant0ine/go-json-rest 一根烟后,go-json-rest demo开始跑起来,使用curl命令模拟了一把,正确运行。 关于go-json-rest的使用,本文不做描述,官方文档有很详细的说明 https://github.com/ant0ine/go-json-rest 正文 这是封装数据库的连接的核心代码(其实大部分是网上copy的) 此方法是将sql的查询结果封装成json格式输出(当...阅读全文

博文 2015-06-14 19:00:02 liuwenhan999

Install gocode

1. D:\AWS_workspace\DAAS_Go>go get -u -ldflags -H=windowsgui github.com/nsf/gocode 2. Then gocode.exe will be installed in "D:\AWS_workspace\DAAS_Go\bin" 3. In Eclipse->Goclipse, set executable of gocode as this "D:\AWS_workspace\DAAS_Go\bin\gocode.exe". See details in https://github.com/nsf/gocode ============= http://hao.jobbole.com/gocode/ gocod...阅读全文

博文 2016-06-03 10:00:00 kungfupanda

golang的net/http包

package http import "net/http" http包提供了HTTP客户端和服务端的实现。 Get、Head、Post和PostForm函数发出HTTP/ HTTPS请求。 resp, err := http.Get("http://example.com/") ... resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf) ... resp, err := http.PostForm("http://example.com/form", url.Values{"key": {"Value"}, "id": {"123"}}) 程序在使用完回复后必须关闭回复的主体。 resp, err ...阅读全文

博文 2014-10-04 19:26:41 刘地

golang 中map并发读写操作

go中map并发使用是不安全的,当你使用goroutine同时对一个map进行读写操作时,不确定会发生什么(由于读写执行顺序不确定造成的).针对这种情况,我们要添加读写锁对sync.RWMutex其进行同步. var counter = struct{ sync.RWMutex m map[string]int }{m: make(map[string]int)} 从counter读取数据,使用读锁 counter.RLock() n := counter.m["some_key"] counter.RUnlock() fmt.Println("some_key:", n) 向counter写数据,使用写锁 counter.Lock() counter.m["some_key"]++ cou...阅读全文

博文 2015-06-17 20:02:28 chenbaoke

Go 内嵌静态资源

使用 Go 开发应用的时候,有时会遇到需要读取静态资源的情况。比如开发 Web 应用,程序需要加载模板文件生成输出的 HTML。在程序部署的时候,除了发布应用可执行文件外,还需要发布依赖的静态资源文件。这给发布过程添加了一些麻烦。既然发布单独一个可执行文件是非常简单的操作,就有人会想办法把静态资源文件打包进 Go 的程序文件中。下面就来看一些解决方案: go-bindata go-bindata 是目前我的程序 pugo 在用的嵌入静态资源的工具。它可以把静态文件嵌入到一个 go 文件中,并提供一些操作方法。 安装 go-bindata: go get -u github.com/jteeuwen/go-bindata/... 注意 go get 地址最后的三个点 ...。这样会分析所有子目...阅读全文

博文 2017-02-10 16:25:41 傅小黑

用go语言模拟客户端对服务端发送get和post请求

client.go package main import ( // "bytes" "fmt" "io/ioutil" "net/http" "net/url" ) var client = &http.Client{} func Get() { //向服务端发送get请求 request, _ := http.NewRequest("GET", "http://192.168.1.35:9091/?publicKey=-----BEGIN+PUBLIC+KEY-----%0D%0AMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZsfv1qscqYdy4vY%2BP4e3cAtmv%0D%0AppXQcRvrF1cB4drkv0haU24Y7m5qYtT52...阅读全文

博文 2015-01-08 12:00:01 秦思_li

golang: 详解interface和nil

golang的nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。nil是预先说明的标识符,也即通常意义上的关键字。在golang中,nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果未遵循这个规则,则会引发panic。对此官方有明确的说明:http://pkg.golang.org/pkg/builtin/#Type golang中的interface类似于java的interface、PHP的interface或C++的纯虚基类。接口就是一个协议,规定了一组成员。这个没什么好说的,本文不打算对宏观上的接口概念和基于接口的范式编程做剖析。golang语言的接口有其独到之处:只要类型T的公开方法完全满足接口...阅读全文

博文 2014-11-20 22:00:00 kai_ding

gogs+jenkins的部署与开发

gogs是一款用go语言开发的语言,开始的时候觉得可能有点难,但是现在用起来觉得挺不错的,既有c语言的方便简洁,又有许多集成的类和方法。 网址的话是这个http://gogs.io/ 我的话是用源码安装的,毕竟这个看起来最简单 然后就是安装golang golang安装的话不难,yum install golang 然后要配制三个变量 export $GOPATH="" export $GOROOT=""安装目录 export $PATH=""//用yum安装一般不需要了、 GOPATH是你的项目的路径 ├── bin ├── pkg └── src ├── code.google.com └── github.com bin的话是可执行文件,pkg是编译生成文件的目录,而src就是源代码的...阅读全文

博文 2015-08-13 09:00:02 xingzi

Golang获取有重定向信息的response的location

在用golang做模拟登录某个网站的功能时发现了一个问题:如何获取该网站带有重定向信息的Response?或者说我只需要这个Response中的location信息即可,但是发现对于go的标准库net/http来说如果不hack这个库是没办法直接获取带有重定向信息的Response,而且目前大多第三方的http库也是基于标准库net/http的,貌似就要改net/http库或库本身就提供了对于重定向的设置? 那么我们就得先查看一下net/http库的源码了,通常我们都会用http.Client的Do方法发起一个请求,首先看一下它的源码: // Do sends an HTTP request and returns an HTTP response, following // policy ...阅读全文

博文 2015-05-04 09:00:01 reflectsky

golang label breaks

我们在for多层嵌套时,有时候需要直接跳出所有嵌套循环, 这时候就可以用到go的label breaks特征了。 先看一个范例代码: package main import ( "fmt" ) func main() { fmt.Println("1") Exit: for i := 0; i < 9; i++ { for j := 0; j < 9; j++ { if i+j > 15 { fmt.Print("exit") break Exit } } } fmt.Println("3") } 执行效果: 注意, label要写在for循环的开始而不是结束的地方。和goto是不一样的。虽然它是直接break退出到指定的位置。 break的标签和goto的标签的区别可以参考下面代码: JL...阅读全文

博文 2015-02-11 03:00:00 ghj1976

我为什么从python转向go

应puppet大拿刘宇的邀请,我去西山居运维团队做了一个简短分享,谈谈为什么我要将我们的项目从python转向go。 坦白的讲,在一帮python用户面前讲为什么放弃python转而用go其实是一件压力蛮大的事情,语言之争就跟vim和emacs之争一样,是一个永恒的无解话题,稍微不注意就可能导致粉丝强烈地反击。所以我只会从我们项目实际情况出发,来讲讲为什么我最终选择了go。 为什么放弃python 首先,我其实得说说为什么我们会选择python。在我加入企业快盘团队之前,整个项目包括更早的金山快盘都是采用python进行开发的。至于为什么这么选择,当时的架构师葱头告诉我,主要是因为python上手简单,开发迅速。对于团队里面大部分完全没服务端开发经验的同学来说,python真的是一个很好的选...阅读全文

博文 2015-05-16 19:54:07 siddontang

分布式存储Weed-FS源码分析

基于源码版本号 0.67 , 【Weed-FS又名叫Seaweed-FS】。 Weed-FS 是一个非常优秀的由 golang 开发的分布式存储开源项目, 虽然在我刚开始关注的时候它在 github.com 上面只有 star 50+, 但是我觉得这个项目是一个几千 star 量级的优秀开源项目。 Weed-FS 的设计原理是基于 Facebook 的一篇图片存储系统的论文 Facebook-Haystack, 论文很长,但是其实原理就几句话,可以看看 Facebook图片存储系统Haystack , 我觉得Weed-FS是青出于蓝而胜于蓝。 Weed-FS 这个开源系统涵盖的面比较多, 很难在一篇文章里面说清楚, 只能尽可能清楚的说说主要的部分。 源码目录结构 核心模块 weed 入口目录...阅读全文

博文 2015-02-15 18:31:39 YanyiWu

使用go语言编写IOS和Android程序

go语言目前已可以用来开发android和ios手机app。相关资料: 1、IOS https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!topic/golang-china/zEh_pdSLHDs 需要能访问google 源码:https://bitbucket.org/minux/goios 其它文档: https://medium.com/using-go-in-mobile-apps 2、Android 官方源码:https://github.com/golang/mobile 环境配置: http://studygolang.com/articles/2322 http://studygolang....阅读全文

博文 2015-05-19 03:00:11 baiyuxiong

golang中net/http包用法

1. 前言 http包包含http客户端和服务端的实现,利用Get,Head,Post,以及PostForm实现HTTP或者HTTPS的请求. 2. 本文分析内容安排 函数 结构 3. 函数 3.1 服务端函数 func Handle(pattern string, handler Handler)将handler按照指定的格式注册到DefaultServeMux,ServeMux解释了模式匹配规则 func HandleFunc(pattern string, handler func(ResponseWriter, *Request))同上,主要用来实现动态文件内容的展示,这点与ServerFile()不同的地方。 func ListenAndServe(addr string, han...阅读全文

博文 2015-12-16 11:00:53 yuanfang_way

Google 镜像站IP地址

非原版: Glgoo:http://www.glgoo.com/ 九尾搜索:http://www.jwss.com/ 谷粉搜搜:http://www.gfsswy.com/ 谷粉搜搜:http://gufensoso.com/ 谷粉恰搜:http://www.qiasou.com/ 蝴蝶:http://www.xiexingwen.com/ 一哥搜:http://www.egeso.com/ 谷歌搜:http://www.gugesou.com/ 谷壳:http://www.googke.me/ 南搜:http://nan.so/ 白鸽:http://baigeso.com/ GG搜索:http://ggsousuo.duapp.com/ 大中华:http://i.forbook.net/ ...阅读全文

博文 2015-09-08 09:00:01 Jr小王子

golang xml解析

golang解析xml真是好用,特别是struct属性的tag让程序简单了许多,其他变成语言需要特殊类型的在golang里直接使用tag舒服 xml文件地址:http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/doc/addresslist.ziphttp://wiki.opensns.qq.com/wiki/【QQ登录】get_info package main import ( "os" "encoding/xml" // "encoding/json" "io/ioutil" "fmt" ) type Location struct { CountryRegion []CountryRegion } type CountryRegion s...阅读全文

博文 2015-02-03 10:00:02 ____追梦人

golang http.handler接口详解

golang http.handler接口详解 1.标准库接口定义 package http type Handler interface { ServeHTTP(w ResponseWriter, r *Request) } func ListenAndServe(address string, h Handler) error ListenAndServe函数需要一个例如“localhost:8000”的服务器地址,和一个处理所有请求的Handler接口实例。它会一直运行,直到这个服务因为一个错误而失败(或者启动失败),它的返回值一定是一个非空的错误。 2.小Demo type dollars float32 func (d dollars) String() string { retu...阅读全文

博文 2016-06-01 17:00:03 secretx

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

go-martini基础入门

Martini框架是使用Go语言作为开发语言的一个强力的快速构建模块化web应用与服务的开发框架。Martini是一个专门用来处理Web相关内容的框架,其并没有自带有关ORM或详细的分层内容。所以当我们使用Martini作为我们的开发框架时,我们还需要选取适合的ORM等其他包。昨天大象哥哥看了下,感觉还是蛮屌蛮简单的,不啰嗦上代码。 package main import ( "github.com/astaxie/beego/context" "github.com/go-martini/martini" "github.com/martini-contrib/render" "net/http" "fmt" ) //定义一个自己的中间件,这里将beego的context注入 func m...阅读全文

博文 2015-10-31 12:00:03 别人说我名字很长

golang使用priority queue实现优先级队列

我们知道类似优先级队列是使用heap堆栈来实现的。 优先级队列的用途我就不多说了,一般是用来做任务权重分配的。 下面priority_queue优先级库是在github.com找到的。 看了下他的源代码实现,得知他不是线程安全的。 如果要实现数据的线程安全,需要用sync lock实现全局锁,保证数据的原子性。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。 http://xiaorui.cc/?p=2929 Python #xiaorui.cc package main import ( "fmt" "github.com/gansidui/priority_queue" ) type Node struct { priority int value str...阅读全文

博文 2017-04-04 19:27:17 rfyiamcool

Go 语言编写的缓存及缓存过滤库:groupcache

GROUPCACHE简单介绍 groupcache 是使用 Go 语言编写的缓存及缓存过滤库,作为 memcached 许多场景下的替代版本。 对比原始 memcached Cache Results function get_foo(foo_id) foo = memcached_get("foo:" . foo_id) return foo if defined foo foo = fetch_foo_from_database(foo_id) memcached_set("foo:" . foo_id, foo) return foo end 首先,groupcache 与 memcached 的相似之处:通过 key 分片,并且通过 key 来查询响应的 peer。 其次,group...阅读全文

博文 2014-10-12 20:00:00 songbohr

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

一个发邮件的demo 用golang

一个比较成熟的第三方包用来发邮件,可以带图片 和附件,项目地址 : github.com/go-gomail/gomail 一个发邮件的demo 用golang 文件目录树: -d:\test\goemail -| libofm -| mymem.go |dosendmail.go myem.go package libofm import ( "net/smtp" "strings" ) const ( HOST = "smtp.163.com" SERVER_ADDR = "smtp.163.com:25" USER = "xxxxxx@163.com" //发送邮件的邮箱 PASSWORD = "xxxxxx" //发送邮件邮箱的密码 ) type Email struct { to ...阅读全文

博文 2015-04-02 03:00:07 rojas

golang使用yaml格式解析构建配置文件

还是那个golang监控agent那些事情,现在功能差不多了,唯独缺少信号处理及daemon服务化。 程序写的差不多了,但是这配置文件咋整? 难道把这些常亮要写在.go文件里面? 我对golang还没能理解到无缝reload的模式… 如果是写在配置文件就很简单了,有个goroutine notify监控配置文件或者是以接受信号的方式重新初始化任务。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新http://xiaorui.cc/?p=3012 现在主流的配置文件格式有这么几种,xml、yaml、config… xml就算了,太挫了,太土, 太繁琐… config 就是mysql,apache my.cnf的那种格式,这个格式适合功能分层,不适合写同级的配置端....阅读全文

博文 2017-04-04 19:31:14 rfyiamcool

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 陈杰斌

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

Awesome Go

Awesome Go A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python. Contributing Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock! Join us on IRC at #awesome-go on freenode web access Contents Awesome Go Audio & MusicAuthentication & OAuthCSS PreprocessorsConfi...阅读全文

博文 2015-02-27 18:00:00 x_focus

go-tour-zh离线安装

go-tour-zh是一个go语言的教程,可以在线看也可以离线安装。 在线地址为:http://go-tour-zh.appspot.com/welcome/ 下面介绍离线安装的方法,安装前,需要先安装好go的开发环境,配置好$GOPATH路径。 首先需要下载教程的离线包 使用hg下载,地址为:https://bitbucket.org/mikespook/go-tour-zh 命令为:hg clone https://bitbucket.org/mikespook/go-tour-zh 注:在mac下安装hg的方法为 brew install hg 安装依赖包 go get github.com/golang/net go get github.com/golang/tools 建立工作空...阅读全文

博文 2015-09-06 13:00:00 zhenyangzhijia

在 Golang 中使用 C 代码

参考文献列表: http://golang.org/cmd/cgo/ cgo 使得在 Golang 中可以使用 C 代码。 Hello World 为了有一个较为直观的了解,我们来看一个简单的例子,创建文件 main.go: package main /* #include void sayHi() { printf("Hi"); } */ import "C" func main() { C.sayHi() } 执行程序: go run main.go 程序执行并输出 hi(更多的范例可以见 $GOROOT/misc/cgo)。我们可以使用命令: go build -x main.go 来显示构建时的命令。 Windows 下的准备工作 如果想要在 Windows 上使...阅读全文

博文 2015-02-03 02:00:01 uzoice

GOLANG打包

GOLANG打包 工程目录结构 假设有个Go语言的工程myproject,目录结构如下 myproject +-- src |-- myapp | +-- myapp.go +-- mylib +-- logger.go 其中mylib目录是一个lib库,myapp是一个应用,其中引用了mylib库。 工程样例程序 下面是logger.go和myapp.go程序代码 logger.go package mylib import "fmt" func Print(msg string) { fmt.Print(msg) } myapp.go package main import ( "mylib" ) func main() { mylib.Print("Hello World!\n") }...阅读全文

博文 2016-02-11 09:00:01 kongxx

如何关闭Golang中的HTTP连接 How to Close Golang's HTTP connection

我们的一个服务是用Go写的,在测试的时候发现几个小时之后它就会core掉,而且core的时候没有打出任何堆栈信息,简单分析后发现该服务中的几个HTTP服务的连接数不断增长,而我们的开发机的fd limit只有1024,当该服务所属进程的连接数增长到系统的fd limit的时候,它被操作系统杀掉了。。。 HTTP Connection中连接未被释放的问题在https://groups.google.com/forum/#!topic/golang-nuts/wliZf2_LUag和https://groups.google.com/forum/#!topic/golang-nuts/tACF6RxZ4GQ都有提到。 这个服务中,我们会定期向一个HTTP服务器发起POST请求,因为请求非常不频繁...阅读全文

博文 2015-05-21 10:00:00 cobbliu

微服务实战(三):深入微服务架构的进程间通信

【编者的话】这是采用微服务架构创建自己应用系列第三篇文章。第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使用微服务架构的优缺点。第二篇描述了采用微服务架构应用客户端之间如何采用API Gateway方式进行通信。在这篇文章中,我们将讨论系统服务之间如何通信。 简介在单体式应用中,各个模块之间的调用是通过编程语言级别的方法或者函数来实现的。但是一个基于微服务的分布式应用是运行在多台机器上的。一般来说,每个服务实例都是一个进程。因此,如下图所示,服务之间的交互必须通过进程间通信(IPC)来实现。 后面我们将会详细介绍IPC技术,现在我们先来看下设计相关的问题。 交互模式当为某一个服务选择IPC时,首先需要考虑服务之间如何交互。客户端和服务器之间有很多的交互模式,我们可以从两个维度...阅读全文

博文 2016-03-03 10:37:45 hokingyang

Go 语言解面试题1

/* 比较一下 :http://blog.csdn.net/iilovetopview/article/details/43745059 go的运算效率逊于D(LDC 编译器0.15.1(LLVM3.6 ,MSVC64))。 用“数学公式”法解下题: 有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。 比如f(13)=6,现在f(1)=1,问下一个最大的f(n)=n的n是什么? */ package main import ("fmt" "time" "math" ) var aa map[int]int var Ac []int func main() { fmt.Println("(go Language) Please wait for some minutes,wi...阅读全文

博文 2015-06-17 23:02:37 Iilovetopview

Go channel 实现自增长ID

1 //autoInc.go 2 3 package autoInc 4 5 type AutoInc struct { 6 start, step int 7 queue chan int 8 running bool 9 } 10 11 func New(start, step int) (ai *AutoInc) { 12 ai = &AutoInc{ 13 start: start, 14 step: step, 15 running: true, 16 queue: make(chan int, 4), 17 } 18 19 go ai.process() 20 return 21 } 22 23 func (ai *AutoInc) process() { 24 defer fu...阅读全文

博文 2014-11-01 03:00:00 yumuxu

为golang程序使用pprof远程查看httpserver运行堆栈,cpu耗时等信息

pprof是个神马玩意儿? pprof - manual page for pprof (part of gperftools) 是gperftools工具的一部分 gperftools又是啥? These tools are for use by developers so that they can create more robust applications. Especially of use to those developing multi-threaded applications in C++ with templates. Includes TCMalloc, heap-checker, heap-profiler and cpu-profiler. 一个性能分析的工具,...阅读全文

博文 2015-03-21 19:00:01 zhangqingping

golang产生guid

labix.org/v2/mgo/bson 包虽然是MongoDB的golang实现,其中产生唯一ID的算法是独立的,不依赖MongoDB, 提炼这部分的代码如下: package main import ( "crypto/md5" "crypto/rand" "encoding/binary" "encoding/hex" "fmt" "io" "os" "sync/atomic" "time" ) // objectIdCounter is atomically incremented when generating a new ObjectId // using NewObjectId() function. It's used as a counter part of an id....阅读全文

博文 2015-01-30 03:00:00 ghj1976

Go视频教程整理

【Go Web基础】01博客项目设计 |Go视频教程|Go语言基础 http://www.tudou.com/programs/view/gXZb9tGNsGU/ 【Go Web基础】02初窥 Web 开发 |Go视频教程|Go语言基础教程 http://www.tudou.com/programs/view/sqZoUrqNJno/ 【Go Web基础】03模板用法讲解 |Go视频教程|Go语言基础教程 http://www.tudou.com/programs/view/BuoN93Yplow/ 【Go Web基础】04登录及分类管理 |Go视频教程|Go语言基础教程 http://www.tudou.com/programs/view/UoJ9EgyqqbY/ 【Go Web基础】05...阅读全文

博文 2015-06-18 03:00:00 scy251147

Golang把所有包括底层类库,输出到stderr的内容, 重新定向到一个日志文件里面?

不论应用是如何部署的,我们都期望能扑捉到应用的错误日志, 解决思路: 自己写代码处理异常拦截,甚至直接在main函数中写异常拦截。 stderr重定向到某个文件里 使用 syscall.Dup2 第一种方法比较简单, 我们这里主要看后两种: 使用 stderr替换的代码: package main import ( "fmt" "os" ) func main() { f, _ := os.OpenFile("C:\\tmp\\11.txt", os.O_WRONLY|os.O_CREATE|os.O_SYNC, 0755) os.Stdout = f os.Stderr = f fmt.Println("fmt") fmt.Print(make(map[int]int)[0]) } 这里的...阅读全文

博文 2015-02-07 03:00:01 ghj1976

Golang轻量级Restful框架go-restful

[![GuaikOrg/go-restful](https://gitee.com/GuaikOrg/go-restful/widgets/widget_card.svg?colors=ffffff,1e252b,323d47,455059,d7deea,99a0ae)](https://gitee.com/GuaikOrg/go-restful) --- # GO-Restful框架 ## 快速开始 ### 安装 `git clone https://github.com/GUAIK-ORG/go-restful.git` ### 运行 `go run main.go -log_dir=log -alsologtostderr` ### 测试...阅读全文

开源项目 2020-01-03 19:09:54

用go代码操作git

git2go是一个用go代码操作git的库,需要依赖于第三方库libgit2 安装libgit2前,先安装相应的包: yum -y install libssh2-devel 在 https://github.com/libgit2/libgit2 下载libgit2的代码进行安装: mkdir build && cd build cmake .. cmake --build . --target install 然后下载git2go: go get -d github.com/libgit2/git2go-d表示只把代码下载不安装 进行git2go的目录,执行: git checkout next git submodule update --init # get libgit2 make...阅读全文

博文 2016-02-18 16:00:00 newjueqi

MPS 高性能的HTTP(s)正向反向代理库MPS

MPS 是一个高性能 HTTP(s)中间代理库,它支持正向代理、反向代理、中间人代理、隧道代理、Websocket 代理. MPS is a high-performance HTTP(S) proxy library that supports forward proxies, reverse proxies, man-in-the-middle proxies, tunnel proxies, Websocket proxies. 项目地址:https://github.com/telanflow/mps ## Feature - 支持 HTTP(s)代理、正向代理、反向代理、中间人代理、Websocket 代理等 - TCP 连接池、证书池 - 中间件( Mid...阅读全文

sshautossh-一个SSH远程客户端,可一键登录远程服务器,主要用来弥补Mac/Linux Terminal SSH无法保存密码的不足。

# autossh 一个SSH远程客户端,可一键登录远程服务器,主要用来弥补Mac/Linux Terminal SSH无法保存密码的不足。 ![演示](https://raw.githubusercontent.com/islenbo/autossh/8456ea1e8cb82541018a4133227a257c70199e40/docs/images/ezgif-5-42b5117192fc.gif) ## Wiki [Wiki](https://github.com/islenbo/autossh/wiki) ## 功能说明 - SSH 快速登录 - 支持 cp 命令文件/文件夹复制功能 `autossh cp source:/file target:/...阅读全文