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

Golang官方依赖管理工具:dep

在这里声明一下,百度或者google看到的godep不是我这篇博文说的dep,那它们是什么关系呢?按照Peter Bourgon博文来说,它们的作者都有相同的人,但是一个是dep是官方版本,godep是第三方工具。 我今天介绍的是dep,之前也有介绍过glide,有兴趣的可以到Golang依赖管理工具:glide从入门到精通使用看看。 现在还有一个疑问是为什么官方现在要支持依赖管理了呢?我个人认为有如下原因(勿喷,如果不同或者遗漏欢迎留言补充): 第三方依赖管理很多,虽然很好用,但是很少可以兼容的,结果--乱; 官方的包管理为了增加社区的凝聚力,保持Go开箱即用的简单特性,不需要大家再安装各种第三方工具了,而且第三方工具都会过来兼容官方版的; 还有一个官话,为了go更好的发展; dep的FA...阅读全文

博文 2017-08-09 02:20:34 梦朝思夕

go依赖管理-govendor

Golang 官方并没有推荐最佳的包管理方案。到了1.5版本时代,官方引入包管理的设计,加了 vendor 目录来支持本地包管理依赖。官方 wiki 推荐了多种支持这种特性的包管理工具,如:Godep、gv、gvt、glide、govendor等。 下面简要介绍一个我在项目中用到的 -- govendor。该工具将项目依赖的外部包拷贝到项目下的 vendor 目录下,并通过 vendor.json 文件来记录依赖包的版本,方便用户使用相对稳定的依赖。对于 govendor 来说,依赖包主要有以下多种类型: 状态 缩写状态 含义 +local l 本地包,即项目自身的包组织 +external e 外部包,即被 $GOPATH 管理,但不在 vendor 目录下 +vendor v 已被 go...阅读全文

博文 2017-05-02 16:00:34 happen

go依赖包管理工具对比

July 10, 2017 in Tech GOPATH和GOROOT GOROOT并不是必须要设置的。 GOPATH必须要设置,但并不是固定不变的 本项目内部的依赖 管理外部的依赖包 使用GOPATH来管理外部依赖 vendor godep glide govendor golang官方dep 各依赖管理工具对比 gvt vendor的问题 当开始真正用go去做项目的时候,不可避免的就会遇到依赖包的问题。go的依赖包管理与java+maven的依赖管理不太一样,我们从GOPATH开始逐渐理解其思想,然后再对比下目前常用的依赖包管理工具。 GOPATH和GOROOT 初学者很容易会被这两个环境变量给搞晕。 GOROOT并不是必须要设置的。 GOROOT不是必须要设置的。参见Installin...阅读全文

博文 2017-07-30 05:45:50 伊布

golang byte转string 字节数组转字符串的问题

golang语言本身就是c的工具集,开发c的程序用到的大部分结构体,内存管理,携程等,golang基本都有,他只是在这个基础上又加了一些概念这里说一个很小的问题,就是字节数组转string的问题,网上大部分都是这样转的(包括google上):string(p[:]),这个转完了是有问题的,我们再来看一下string这个结构体: struct String{ byte* str; intgo len;}; 这个结构体让我想起了nginx的string,他是这样定义的: typedef struct { size_t len; u_char *data;} ngx_str_t; golang里边 string的概念其实不是以前遇到\0结尾的概念了,他其实就是一块连续的内存,首地址+长度,上面那样...阅读全文

博文 2015-08-17 03:00:00 anjianliang

使用vendor管理Golang项目依赖

http://www.tuicool.com/articles/NjMzIbJ 我们在项目中除了大量的使用Python外,也大量的使用了Golang构建高效基础运行服务。在使用Golang过程中,我们发现Golang程序缺少依赖库版本功能是一个非常令人头大的问题:某些依赖在某个commit之后发生了API变更之后,如果不修改代码很难兼容,然而开发者之间很有可能因为参与的时间不同,导致执行 go get 命令获取的版本不同,而导致在不同电脑上出现编译不通过问题。同时,在多个程序中,如果使用的commit版本不同,也可能会导致程序编译过程中出现不同的问题。 在之前,我们解决这个问题有两个方案,一种是拆解 go get 命令的执行,首先创建对应依赖目录,利用git命令切换至指定的commit,然后...阅读全文

博文 2016-09-08 13:00:02 leonpengweicn

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

介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。 glide是Golang的包管理工具,是为了解决Golang依赖问题的。 为什么需要glide? 原因很简单,Go 语言原生包管理的缺陷。罗列一下golang的 get 子命令管理依赖有很多大缺陷: 能拉取源码的平台很有限,绝大多数依赖的是 github.com 不能区分版本,以至于令开发者以最后一项包名作为版本划分 依赖 列表/关系 无法持久化到本地,需要找出所有依赖包然后一个个 go get 只能依赖本地全局仓库(GOPATH/GOROOT),无法将库...阅读全文

博文 2017-07-22 05:33:09 梦朝思夕

百度网盘工具箱BaiduPCS-Go

基于go语言的百度网盘工具箱,百度帐号多用户支持。 网盘内列出文件和目录, **支持通配符匹配路径**, 通配符_百度百科。 下载网盘内文件, 支持网盘内目录 (文件夹) 下载, 支持多个文件或目录下载, 支持断点续传和高并发**高速**下载; 下载测试,服务器: 阿里云,下载 4G 文件, 只需 7分29秒。 ![image](https://static.oschina.net/uploads/space/2018/0206/142909_lScL_3703517.png) **程序 下载/运行 说明** Go语言程序, 可直接下载使用, [点此查看发布页面 / 下载汇总](https://github.com/iikira/BaiduPCS-Go/releases)...阅读全文

开源项目 2018-02-06 15:30:01 网友

Golang 守护进程

package main import ( "fmt" "os" "os/exec" "path/filepath" ) func main() { fmt.Println(os.Getppid()) if os.Getppid() != 1 { //判断当其是否是子进程,当父进程return之后,子进程会被 系统1 号进程接管 filePath, _ := filepath.Abs(os.Args[0]) //将命令行参数中执行文件路径转换成可用路径 cmd := exec.Command(filePath) //将其他命令传入生成出的进程 cmd.Stdin = os.Stdin //给新进程设置文件描述符,可以重定向到文件中 cmd.Stdout = os.Stdout cmd.Std...阅读全文

博文 2015-02-11 19:00:02 未来还没来

告别GOPATH,快速使用 go mod(Golang包管理工具)

如果你还在使用 GOPATH 模式来开发Golang程序,那么你可以参考本文来告别 GOPATH,并带给你一个方便的包管理工具。关于 go mod 的说明和简单使用,可以参考:1、Go1.1.1新功能module的介绍及使用2、Introduction to Go Modules3、Go 1.11 Modules 官方说明文档使用go mod 管理项目,就不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目,比如:新建一个名为 wserver 的项目,项目路径 D:\test\wserver (注意,该路径并不在GOPATH里) 进入项目目录 D:\test\wserver 里,新建一个 go源码文件: main.go 然后在 D:\test\wserver 里打...阅读全文

Golang环境安装和依赖管理

Golang一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Golang提供了方便的安装包,支持Windows、Linux、Mac系统。 下载安装包 Golang的官网是https://golang.org/,如果官网打不开,可以访问https://golang.google.cn/这个域名。在官网点击Download Go会进入下载页,可以看到这里提供了针对各个系统的安装包,也提供了源码,可以下载源码编译安装。 下载运行安装包后,在terminal中执行go env命令,如果出现下面的输出说明已经安装成功。 GOROOT与GOPATH 仔细看上面的输出,会发现其中有一个GOPATH,又有一个GOROOT,那么到底哪个才是Golang的运行环境呢。 首先访问一下GOROOT这个...阅读全文

博文 2018-07-11 02:34:42 simpleapples

终极 Web 应用性能和压力测试工具 Gor

常见的 Web 应用的压力测试工具 Web 应用压力测试工具有很多,比如 Apache ab,node-ab,Apache JMeter, LoadRunner, httperf。但是这些工具都没能解决一个问题: 如何正确模拟生产环境的流量 如今 Web 应用的架构变得非常复杂,内部包含复杂的各种负载均衡、 服务和 RPC 调用关系,简单的发送 GET 请求到某些 URL 或者 API 接口完全无法模拟真实的流量。假如回放 HTTP 日志,操作又异常麻烦。Tcpcopy 虽然能够复制实时流量,但是操作也很复杂。之前的 亚马逊云平台的迁移 就用到了 Gor 这个工具。 Gor 是 Web 应用压力测试的完美方案 我一直在找一个简单又方便的解决方案,直到找到了 Gor 。Gor 是用 Golan...阅读全文

博文 2015-06-17 20:15:54 xtqve

Go Agent

在这片神奇的土地上,FQ应该是每个网友必需掌握的技能,FQ的首要,就是F过心里的Q。心中无Q,才是最重要的。本教程介绍用 GAE(Google App Engine)FQ的方法。GAE的官方介绍:“Google App Engine,在Google的基础架构上运行您的网络应用程序。” GAE的优点很多,首先它是完全免费的,并且非常稳定,其次它提供大流量,足够让你在YouTube上看各种视频了。 注意事项! 本教程开始之前需要准备Gmail账号和Chrome浏览器。go agent在这里http://www.dengyukeji.com/thread-567-1-1.html下载。 操作步骤 1、打开:https://appengine.google.com/,输入gmail用户密码登入。 2...阅读全文

博文 2015-06-18 09:09:14 dengyukeji

golang包管理工具glide简介

golang包管理工具glide简介 前言 golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情。在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论,强制统一的风格多好; 编译速度超快,再也不用等待许久,才能编译完工程(测试驱动开发自然更爽); 也不会出现同一个项目组中的人,在使用同一个语言的不同子集。但这种情况不论是在C#还是在Java的世界里,都还是普遍存在的; 轻松跨平台(当然Java做得不错,C#/.net还是努力中...) 这是一门非常简洁、简单、清晰的编程语言(关键字好少啊) 包依赖处理得很有趣; 错误处理机制很有趣,个人觉得比C#/Java的异常处理机制更方便,也更合理些; 对面向对象编程很有趣,非侵入性的接口实现方式,太赞了。...阅读全文

Go依赖管理机制

无论何种语言,依赖管理都是一个比较复杂的问题。而Go语言中的依赖管理机制目前还是让人比较失望的。在1.6版本之前,官方只有把依赖放在GOPATH中,并没有多版本管理机制;1.6版本(1.5版本是experimental feature)引入vendor机制,是包依赖管理对一次重要尝试。他在Go生态系统中依然是一个热门的争论话题,还没有想到完美的解决方案。 看其它 我们先来看看其它语言怎么解决,例举两种典型的管理方式: Java 开发态,可以通过maven和gradle工具编辑依赖清单列表/脚本,指定依赖库的位置/版本等信息,这些可以帮助你在合适的时间将项目固化到一个可随时随地重复编译发布的状态。这些工具对我来说已经足够优雅有效。但maven中也有不同依赖库的内部依赖版本冲突等令人心烦的问题。...阅读全文

博文 2016-11-20 17:00:00 jinpengxx8

PostgreSQL(数据库)资料和分布式系统(Distributed System)资料与Go语言资料整理

《PostgreSQL Documentation》 介绍:PostgreSQL官方文档主页 《PG技术沙龙ppt》 介绍:2013年4月PG技术沙龙PPT 《PG9.3中文翻译文档》 介绍:PG9.3中文翻译文档 谢谢@skykiker提供 《PostgreSQL从菜鸟到专家(中译稿 by 洞庭湖的泥鳅)》 介绍:这篇文档是国内的一线postgreSQL专家所翻译。很经典 《PostgreSQL vs. MS SQL Server》 介绍:PostgreSQL与 MS SQL Server的对比,中文版 《PostgreSQL 30天 培训视频》 介绍:作者德哥@Digoal从事pg截止目前大概有7-8年,长期活跃在国内的pg社区。这套PostgreSQL 30天 培训视频包含了SQL基础...阅读全文

博文 2015-04-28 14:00:13 zhongwen7710

go-admin: 基于golang搭建后台管理中心

go-admin 是基于golang的后台管理中心搭建框架,利用 go-admin 可以利用极少的代码搭建起一个具有rbac认证,数据增删改查等功能的后台管理中心。 go-admin 中文介绍文档:https://github.com/chenhg5/go-admin/blob/master/README_CN.md安装使用文档:https://github.com/chenhg5/go-admin/wiki有问题与建议,欢迎加入qq群:75666485...阅读全文

博文 2018-08-11 21:35:00 嘎嘎嘎8333

vgo简明教程(Go语言依赖包管理工具)

前言 vgo是Go语言推出的第三方库管理工具,即将在Go语言新版本中使用。 相信大家都接触过其它语言的第三方库管理工具,比如Java的maven,PHP的composer,Python的pip,Node的npm等。vgo类似于这样的功能,方便Go语言项目管理第三方库。 Go语言官方以前一直没有明确正式的包管理工具,因此导致包管理工具非常混乱,比如dep,glide,govendor,godep等。(虽然dep也是Go语言官方推出的,但是它最终会被放弃。) vgo的推出,是Go语言社区的需要,将解决包管理工具混乱的问题。Go语言官方将使用这个依赖工具为主,所以我们有必要提前了解一下它的使用。 (vgo即英文versioned go的缩写) vendor目录 vendor目录是Go1.5版本后添...阅读全文

博文 2018-06-24 21:34:38 wuyumin

准备写一个基于go、angularjs的系统管理平台

功能要求:监控 http、tcp、udp 等服务状态分析 nginx、tomcat、weblogic 等日志监控 linux 服务器 cpu、硬盘、内存、网卡流量邮件报警go 主要用来写后台代码和监控 linux 服务器的 client 代码,并提供一个 api 给 angularjs 来查询和更新数据。上面这些功能使用 python 更容易实现一些(python 有许多现成的模块可以使用),只不过拿这个项目作为学习 go 的一个手段。目前完成了一部分的 go 和 angularjs 的代码。代码目前托管在 coding,有兴趣的朋友可以留言一起来学习交流 go 和 angularjs...阅读全文

博文 2015-06-18 09:02:45 qcpm1983

golang snmp开发学习笔记(二)

soniah/gosnmp是一个纯go语言编写的SNMP包,基于alouca/gosnmp开发。目前提供GetRequest、GetNext、GetBulk、Walk和SetRequest功能,支持IPv4和IPv6, 支持SNMPv2c和SNMPv3。 本文介绍soniah/gosnmp的SetRequest和Walk操作。 SetRequest snoiah/gosnmp的GoSNMP.Set()方法有一个明显的错误: func (x *GoSNMP) Set(pdus []SnmpPDU) (result *SnmpPacket, err error) { if pdus[0].Type != Integer || pdus[0].Type != OctetString { retur...阅读全文

博文 2015-10-27 08:00:01 wbchen2330

Go语言的包管理

接触go语言之前写了一些nodejs的App,所以对于npm的包管理方式还是觉得挺方便的,但转移到go语言平台后,由于官方并未推出自己的包管理工具,所以只能借助于第三方的一些工具完成,本篇主要介绍一些目前使用的go的包依赖管理工具,用来协助程序的开发. gpm gpm工具使用来完成go依赖库下载的工具,非常的简单,只需要创建自己的一个Godeps文件,并把依赖的包写到文件中,这样我们就可以直接通过命令行来执行下载任务,并把依赖下载到当前的GOPATH路径中. 一个典型的Godeps文件中,我们可以不标记任何库依赖的版本信息,这样默认下载最新的依赖库,也可以通过标记下载指定的版本,只需要在依赖库的后面写上版本或者git的tag即可,如下所示: $ cat Godeps # This is a ...阅读全文

博文 2016-11-21 02:00:42 u014029783

GO 编写的进程管理工具 Gosuv

Gosuv是一个进程管理工具,使用Go语言编写。受python-supervisor启发,学习了很多其中的功能和用法。 至于为什么要写一个go的进程管理工具,主要还是因为感觉python-supervisor不是很好用(毕竟我也用了这玩意好几年了,又爱又恨)。因此gosuv对其不易用的部分重点加强了下。 Web控制台部分做了重点加强,因为使用频率太高了。在网页上也可以直接添加先的应用,网页查看日志的部分也做了优化,查看起来没有这么费劲了。使用了websocket连接后端,状态一有变化,前台就能立刻看到变化。 命令行做了部分修改,通常来说reload是热加载的命令,可是python-supervisor的reload命令是重启后台主进程,用起来显然很不习惯,顺手改掉。 配置文件也被我全...阅读全文

使用vendor管理Golang项目依赖

我们在项目中除了大量的使用Python外,也大量的使用了Golang构建高效基础运行服务。在使用Golang过程中,我们发现Golang程序缺少依赖库版本功能是一个非常令人头大的问题:某些依赖在某个commit之后发生了API变更之后,如果不修改代码很难兼容,然而开发者之间很有可能因为参与的时间不同,导致执行go get命令获取的版本不同,而导致在不同电脑上出现编译不通过问题。同时,在多个程序中,如果使用的commit版本不同,也可能会导致程序编译过程中出现不同的问题。 在之前,我们解决这个问题有两个方案,一种是拆解go get命令的执行,首先创建对应依赖目录,利用git命令切换至指定的commit,然后执行go install命令。另外一种比较省事的方法是使用godep工具,这里就不做过多...阅读全文

go项目工程目录组织和GOPATH设置

Golang没有工程文件的概念,是通过目录结构来体现工程的结构关系的。 刚开始写go程序的时候只有一个主程序文件(如main.go),也就没太在意go项目工程组织的重要性。最近着手看看网上的开源项目,感觉自己的go项目工程目录组织的太烂了,所以特意重新整理了一下。 按照go官方文档需要把项目根目录地址加到环境变量GOPATH里去,然而,在学习和工作中开发的程序中有多个项目,如果把每个项目的路径都加载到环境变量GOPATH里,那么不过多久环境变量GOPATH里的字符串想必就会超出微软定义环境变量的最大长度。所以本人使用了相对变量,即减少了目录太长也方便管理。效果如下...阅读全文

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

Vendor 包管理器 Go Glide

Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包。 主要特性: * 简单管理依赖 * 支持 **versioning packages**,包括 [Semantic Versioning 2.0.0](http://semver.org/) 支持 * 支持 **aliasing packages** (e.g. for working with github forks) * Remove the need for munging import statements * 支持所有 `go` 工具 * 支持 VCS 工具和 Go 支持: * git * bzr * hg * svn 支持定制本地和全局插件 (se...阅读全文

开源项目 2015-11-04 16:00:00 Masterminds

Go语言开发工具LiteIDE

Go语言最初在2009年11月对外公布,在2011年3月16日发布第一个release,第一个正式版本Go1于2012年3月28日推出。在Go语言的正式版本推出后,Eclipse、IntelliJ IDEA、vim、emacs、gedit、SublimeText2、Textmate、Textpad、SciTE、Notepad++等IDE和编辑器开始纷纷有了各自的Go语言插件。 LiteIDE是一款专为Go语言开发而设计的跨平台轻量级集成开发环境(IDE),基于Qt开发,支持Windows、Linux和Mac OS X平台。LiteIDE的第一个版本发布于2011年1月初,是最早的面向Go语言的IDE之一。到2013年1月为止,LiteIDE已经发布到版本X16。 LiteIDE主要特点 支持...阅读全文

博文 2014-10-17 10:00:01 hypnosis01

从Maven,Gradle到Go

为什么要有依赖管理工具? 谈依赖管理之前,我们先谈谈为什么要有依赖管理工具这东西。 我们学了一种编程语言,然后写了个“Hello World”,然后宣称自己学了一门语言,这时候确实不需要关心依赖问题。 然而,当你要写一个稍微复杂点的应用,那怕就是留言板这样的,需要读写数据库,就需要依赖数据库驱动,就会遇到依赖管理的问题了。 再进一步,你写了一个库,想共享给别人使用,更需要了解依赖管理的问题。 当然,如果项目足够简单,你可以直接将依赖方的源码放置在自己的项目中,或者将依赖库的二进制文件(比如jar,dll)放置在项目的lib里。要提供给别人呢?把二进制包提供下载或者给别人传过去。依赖管理工具出现之前大多数都是这样搞的。 但如果再复杂些,依赖库本身也有依赖怎么弄呢?将依赖压缩打包,然后放个rea...阅读全文

七牛---关于GO SDK的各种Demo

具体可以参考七牛GO SDK的源码以及官网使用文档,以下Demo针对V7版本的SDK: https://github.com/qiniu/go http://developer.qiniu.com/code/v7/sdk/go.html 文件上传 简单上传 package main import ( "github.com/qiniu/api.v7/kodo" "qiniupkg.com/api.v7/conf" "qiniupkg.com/api.v7/kodocli" "fmt" ) var ( //设置上传到的空间 bucket = "yourbucket" ) //构造返回值字段 type PutRet struct { Hash string `json:"hash"` Key s...阅读全文

博文 2016-03-24 14:00:01 netdxy

运维工具SmartPing

# SmartPing # SmartPing为一个各机器(点)间间互PING检测工具,支持互PING,单向PING,绘制拓扑及报警功能。 ## 功能 ## - 单向PING,反向Ping绘图 - 互PING间机器的状态拓扑 - 自定义延迟、丢包阈值报警 ## 设计思路 ## 本系统设计为无中心化原则,所有的数据均存储自身点中,默认每个Ping目标点的数据循环保留1个月时间,由自身点的数据绘制 **出PING包** 的状态,由各其他点的数据绘制 **进PING包** 的状态,从任意一点查询数据均会通过Ajax请求关联点的API接口获取其他点数据组装全部数据,绘制 出Ping曲线图,进Ping曲线图,网络互Ping拓扑图。并可以设置阈值进行报警,方便对网络质量...阅读全文

godep 包管理工具

godep是解决包依赖的管理工具 安装 go get github.com/tools/godep 成功安装后,在GOPATH的bin目录下会有一个godep可执行的二进制文件,后面执行的命令都是用这个,间隔这个目录加入到PATH目录中。 编译和运行 项目用godep管理后,要编译和运行项目的时候再用go run和go build显然就不行了,因为go命令是直接到GOPATH目录下去找第三方库。 而使用godep下载的依赖库放到Godeps/workspace目录下的; godep go build XXX godep中的go命令,就是将原先的go命令加了一层壳,执行godep go的时候,会将当前项目的workspace目录加入GOPATH变量中; godep save godep sav...阅读全文

博文 2016-05-26 10:00:05 me115

Go中实现手动内存分配的坑

Go中实现手动内存分配的坑 2016-07-10 你一定想到过,分配一块大的内存,然后从里面切小的对象出来,手动管理对象分配。分配的开销非常小,就是offset加一下。尤其是有些场景,释放时直接把offset重置,就可以重用这块空间了。实现手动内存分配的好处是,减少小对象数目,从而减少垃圾回收时的扫描开销,降低延迟和提升整个性能。 想到不代表做过,做过会踩坑,这篇文章会把你可能要踩的坑都说一遍。不过先说结论:别这么干,不作死就不会死! TL;DR 扩容 开始很容易想用make([]byte)分配空间,如果大小不够时,还可以进行扩容。这是第一个陷阱。 不要append,别让它扩容。一旦发生扩容,会分配一块新的空间,而旧的slice将不再有任何变量引用它,于是会被垃圾回收掉。等等!之前分配的对象...阅读全文

多进程管理工具:goreman

Linux下多进程管理工具对开发和运维都很有用,常见的功能全面的主流工具主要有monit、supervisor。不过开发中使用则推荐轻量级小工具goreman。 goreman是对Ruby下广泛使用的foreman的重写,毕竟基于golang的工具简单易用多了。顺便提一句:goreman的作者是mattn,在golang社区挺活跃的日本的一名程序员。foreman原作者也实现了一个golang版:forego,不过没有goreman好用,举个例子:coreos的etcd就是使用的goreman来一键启停单机版的etcd集群。 安装 go工具安装都非常简单: go get github.com/mattn/goreman goreman help 当然,记得先把GOPATH、GOROOT环境变...阅读全文

带交互的telnet小工具,golang版

package netTools //main // import ( "fmt" "net" "strconv" "strings" "time" ) func smain() { lis, err := net.Listen("tcp", ":1789") if err != nil { fmt.Println(err) } defer lis.Close() for { con, _ := lis.Accept() go handler(con) } } func handler(con net.Conn) { defer con.Close() buf := make([]byte, 20) n, _ := con.Read(buf) fmt.Println(string(buf[:...阅读全文

博文 2016-05-05 19:00:01 fyxichen

Golang分布式设计模式之-----星型拓扑分形设计

Golang分布式设计模式之-----星型拓扑分形设计 上一篇分层设计中,利用了简单的流水线原理,实现了简单的状态转移的设计。如下 这一篇我们将考虑另外一种情况。例如,linux内核中的进程管理。所有的进程都有一个父进程。当子进程正常运行时候,与父进程基本无通信。但当子进程死亡时,要通知其父进程,让父进程进行资源回收。当父进程死亡时,两种情况,子进程随着父进程一起死亡,或者将子进程交由父进程的父进程管理。类似于下图 其中每个进程都有自己的父进程,也有可能会有自己的子进程。 在这种管理中,父子关系,或者说是管理者与被管理者的关系。被管理者,可以独自运行,但要将其的一些状态告知管理者,或者管理者,可以定期获取被管理者的状态。 下面以一个p2p下载器为例: 一、职能划分,形成管理者与被管理者 1)...阅读全文

博文 2015-01-21 09:17:51 screscent

【十问十答】对话Go语言开发团队

Go是谷歌推出的一门编程语言。熟悉Go语言的开发者都知道其弥补了C语言的不足并且保持了C的极简主义。使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程(使用Go语言的12个理由)。一些主流的项目包括Docker、Heroku's Force.com以及Cloud Foundry's (Go)Router都是基于Go语言编写而来。有人说,Go为云而生,也正是由于其拥有并发性的操作系统以及完美的架构,使其备受开发者的青睐。 本文摘译自dotGo,文中采访了Go语言的开发团队,一起来聆听大神们谈Go语言的依赖关系、语言设计及Android平台上的一些新特性。 译文如下: Go语言开发团队成员:Francesc Campoy Flores、Andrew Gerrand、Bra...阅读全文

博文 2014-10-21 10:59:34 mengyidan1988

golang终端进程管理工具

最近维护了一个类似nodejs的pm2进程管理工具pmgo 今天发布了0.1.0版,虽然还有很多的东西需要完善,但是基础的功能都能使用。欢迎大家star或者提交pr. 另外项目中获取cpu和memory的package也是我维护的,但在这一版暂不支持windows,所以导致该项目不支持windows平台,然而这个问题将在下一版解决,不支持的原因就是我身边没有windows的电脑。。。 最后,放上连接: https://github.com/struCoder/pmgo ![demo.png](http://studygolang.qiniudn.com/170411/f3fadf59b05e4df92adfa98771789e9f.png...阅读全文

Golang 套件管理工具 Glide

# 原文來自: [Golang 套件管理工具 Glide](https://blog.wu-boy.com/2016/05/package-management-for-golang-glide/) 套件版本管理已經是各大語言不可或缺的工具,像是 [Node.js][1] 有 [npm][2],[PHP][3] 有 [Composer][4],[Ruby][5] 有 [RVM][6] 等...,都已經發展很成熟了,但是在 [Golang][7] 語言呢,在 Go 1.5 以後的版本,可以透過 `GO15VENDOREXPERIMENT` 或 [Glide](https://glide.sh/) 來管理套件版本,在 Go 官方網站也有整理一份 [Wiki](https://github....阅读全文

Go语言中文网源码studygolang

[Go语言中文网 - Golang中文社区](https://studygolang.com/) 源码 网站上线时间:2013-03-15 14:38:09 目前在线运行的是 Master。欢迎有兴趣的 gopher 们参与进来,一起构建一个完善的 Go 语言中文网,Go 语言爱好者的学习家园,参与方式请参考:[https://studygolang.com/topics/4092](https://studygolang.com/topics/4092) 首先你都需要下载代码,因为代码中有很多静态资源。可以[点击这里下载](https://github.com/studygolang/studygolang/archive/master.zip) 或 `git clone https...阅读全文

统一配置管理工具confd

confd Github: https://github.com/sumory/confdconfd是一个统一配置管理工具,目前仍在开发中,基于本地文件存储的部署方式已经可以用于生产环境中。 你可以用它: 统一管理各种配置文件,配置文件模板和数据是分离的,可各自单独管理 动态修改配置属性,然后重新生成相关的配置文件 提供cli方式修改数据 Features [x] 基础解析:配置文件使用toml格式,模板数据分离 [x] 多种存储支持:local file、redis、zookeeper [x] 两种运行模式:Debug或Daemon [x] cli工具:修改store,批量更新配置 [ ] 更友好的交互方式,比如通过web界面 [ ] 分离server和client,提供客户端cli或AP...阅读全文

博文 2017-02-09 08:08:04 sumory

Swirl:Docker Swarm 集群管理的新选择

# SWIRL GitHub 地址:[https://github.com/cuigh/swirl](https://github.com/cuigh/swirl) [**Swirl**](https://github.com/cuigh/swirl) 是一个 Docker 管理工具,专注于 Swarm 集群。 ## 主要功能 * Swarm 各组件管理,包括服务、网络、任务等 * 镜像与容器管理 * Compose 管理与部署 * 服务状态监控(基于 Prometheus) * 服务自动伸缩 * 支持 LDAP 认证 * 基于 RBAC 完整的权限控制模型 * 支持横向扩展部署 * 多语言支持 * 更多功能... ## Snapshots ...阅读全文

给开发者介绍一款可连接AS和Eclipse实现远程调试的工具

**前言**: 移动开发者们在开发一款APP或者手游的时候,都会用到模拟器或者真机来调试应用,可是模拟器的缺点大家都知道,速度慢、卡顿、调试结果跟实际情况有差别。而真机的购机成本又很高。所以想为大家推荐一款新型开发工具,可以用来代替模拟器和传统的[真机调试](http://www.testbird.com/tphone-remote-debug/ ) 方法。 **[Testbird——云手机](https://dt.testbird.com/sign_up/?i18n=zh-cn&cl=eBn2yB&invite=YjX97B/ ) ** 从本质上来讲,云手机也属于真机调试,但是你却不需要花费很多钱去购买,因为它的操作模式可以让你从你的电脑端上远程连接到位于Testbi...阅读全文

代码质量检测工具GoReporter

Golang 开发工具,提供代码质量检测/Golang 代码静态检测器/Golang 项目单元测试,根据自定义模版自动生成 Golang 代码质量检测报告。 ![image](https://static.oschina.net/uploads/space/2017/0406/113414_e0Od_2903254.png) Summary ![image](https://static.oschina.net/uploads/space/2017/0406/113431_ipJw_2903254.jpeg) UnitTest ![image](https://static.oschina.net/uploads/space/2017/0406/113446_U2OK_2903...阅读全文

Linux 平台下的漏洞扫描器Vuls

Vuls 是一款适用于 Linux / FreeBSD 的漏洞扫描程序,无代理,采用 golang 编写。 对于系统管理员来说,每天必须执行安全漏洞分析和软件更新都是一个负担。为避免生产环境宕机,系统管理员通常选择不使用软件包管理器提供的自动更新选项,而是手动执行更新。这会导致以下问题: 系统管理员必须不断注意NVD(National Vulnerability Database)或类似数据库中的新漏洞。 如果服务器中安装了大量软件,系统管理员可能无法监视所有软件。 执行分析以确定受新漏洞影响的服务器是昂贵的。在分析过程中可能会忽略服务器或两台服务器。 Vuls 是为解决上述问题而创建的工具。它具有以下特点: 通知用户与系统相关的漏洞。 通知受影响的服务器的用户。 自动执...阅读全文

如此,用dep获取私有库

如此,用dep获取私有库 介绍 dep是一个依赖管理工具。它需要1.9或更新的Golang版本才能编译 dep已经能够在生产环节安全使用,但还在官方的试验阶段,也就是还不在go tool中。但我想是迟早的事 :=) 指南和参考资料,请参阅文档 获取私有库 我们常用的git方式有两种,第一种是通过ssh,第二种是https 本文中我们以gitlab.com为案例,创建一个private的私有仓库 通过ssh方式 首先我们需要在本机上生成ssh-key,若没有生成过可右拐传送门 得到需要使用的ssh-key后,我们打开我们的gitlab.com,复制粘贴入我们的Settings -> SSH Keys中 添加成功后,我们直接在Gopkg.toml里配置好我们的参数 [[constraint]] ...阅读全文

博文 2018-03-01 00:40:52 EDDYCJY