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

go build和go install的区别

go build通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。 $ go build hello.go $ lshello hello.go 当然我们也 可以通过-o选项来指定其他名字: $ go build -o mygo hello.go $ lsmygo hello.go 如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件: $ go build $ lsgo-examples hello.go go install与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。 go install编译...阅读全文

服务监控系统 Prometheus

Prometheus 是一个开源的服务监控系统和时间序列数据库。 ![image](http://static.oschina.net/uploads/space/2015/0205/082749_47Dp_5189.png) 特性: * 高维度数据模型 * 自定义查询语言 * 可视化数据展示 * 高效的存储策略 * 易于运维 * 提供各种客户端开发库 * 警告和报警 * 数据导...阅读全文

Golang lint简易使用方法

根据作者的说法: Golint is a linter for Go source code. Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes. Golint differs from govet. Govet is concerned with correctness, whereas golint is concerned with coding style. Golint is in use at Google, and it seeks to match the accepted style of the open source Go...阅读全文

博文 2015-05-12 20:00:06 dandan.fs

os.Args[0] 的获取的值的问题

默认情况下 os.Args[0]应该返回可执行文件的路径 ``` go package main import ( "fmt" "os" ) func main() { fmt.Println("test the os package") fmt.Println("Args len", len(os.Args)) for i, arg := range os.Args { fmt.Println("arg", i) fmt.Println("arg", arg) } fileInfo, err := os.Stat("E:\\go\\bin\\studygolang.exe") if err != nil { f...阅读全文

Go 获取当前可执行文件的所在目录

代码如下: import ( "errors" "os" "os/exec" "path/filepath" "strings" ) func GetCurrentPath() (string, error) { file, err := exec.LookPath(os.Args[0]) if err != nil { return "", err } path, err := filepath.Abs(file) if err != nil { return "", err } i := strings.LastIndex(path, "/") if i < 0 { i = strings.LastIndex(path, "\\") } if i < 0 { return "", err...阅读全文

博文 2017-02-13 04:00:26 风华神使

聊聊GOPATH、GOROOT

在go语言中环境变量GOPATH和GOROOT需要设置好才可进行开发编译,学过JAVA的朋友理解起来就比较快,这里就这两个变量作个详细的说明,不足之处,请大家批评指正。1. GOROOT简而言之,GOROOT在GO语言中表示的是go语言编译、工具、标准库等的安装路径,在Linux系统中一般安装在/usr/go或者/usr/local/go,这样Linux系统中的PATH变量一般都包含了这两个目录,所以就可以直接运行go命令,而Windows系统中一般默认安装在C:\go中。如果自定义安装go的话,需要设置GOROOT的值,比如在Linux系统中用户如有root用户权限时,想安装go至自己的工作目录中,就要设置GOROOT为自己的HOME目录中,假设安装在/home/目录中的go目录,则需要这...阅读全文

博文 2017-07-02 03:12:12 jasonvfang

NSQ 最新版本(0.3.5)官方文档中文版

NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub。NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。另外,官方还提供了拆箱即用Go和Python库。 本指南是 NSQ 官网 的中文翻译版本,基于最新版本 0.3.5 适用人群 本教程是给那些想详细了解如何使用 NSQ 分布式实时系统的开发人员编写的。 学习前提 在学习本教程之前,你需要对 Go 语言和计算机网络相...阅读全文

如何运行一个golang程序为守护进程

http://www.hiceon.com/topic/how-to-start-a-golang-program-as-a-daemon/ 安装daemonize 安装git环境 yum install git -y 获取daemonize git clone git://github.com/bmc/daemonize.git 安装daemonize cd daemonize./configuremake && make install 查看是否安装 daemonize -v 通过daemonize执行golang守护进程 你需要打包你的golang程序为可执行文件(go build),并通过daemonize来执行它来实现守护进程,如: daemonize -p /var/run/my...阅读全文

博文 2015-09-13 14:00:30 leonpengweicn

go 生成的exe不在bin文件夹里

GO项目目录解释 src存放源代码 pkg编译后生成的文件 bin编译后生成的可执行文件 背景 在src目录下,新建文件test.go,编写代码。 控制台执行go build test.go 之后发现: 生成的test.exe并没有在bin生成,而是在与源码test.go同级目录src下生成。 解决 控制台执行go install $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

    ').addClass('pre-numbering').hide(); $(this).addCl...阅读全文

windows下 sublime text2配置gdb 调试golang

1. 下载gdb for windows ,点此下载 2.解压后,将目录添加到环境变量path 3. 安装sublimeGdb, 打开sublime text2 ,ctrl+shift+p, install package,选择sublimeGdb,回车 4.配置setting , 在sublime text2 中,选择菜单 Preferences--Package settings--SublimeGdb--Setting Default ,设置其下两项。workingdir是gopath的工作区,也就是项目exe生成的路径。commandline 最重要是 后面main.exe 替换成你的可执行文件。 // Example: ${folder:/path/to/file} is repl...阅读全文

博文 2014-10-04 19:27:16 阳光灿烂的日子

【北京,免费三餐,年14薪】golang程序猿在哪里?

**岗位职责:** 1.根据公司软件生产流程和规范,配合Android/iOS客户端开发组,完成服务器端接口设计和功能实现; 2.维护服务器,确保高可用性。 **任职要求:** 1.具备熟练阅读英文技术资料能力,习惯通过手册、google搜索、 stackoverflow、 serverfault等途径寻找问题答案; 2.了解Linux的使用,熟练使用命令行界面,能使用Linux服务器; 3.了解Linux编程,了解POSIX API、sockets编程,用C写过多进程/多线程的网络服务程序优先; 4.了解TCP/IP协议栈,HTTP协议...阅读全文

go语言工程管理

1.建立工程 1---设置$GOPATH环境变量 如在~/.bashrc中加入如下语句export $GOPAHT=/home/jj/goproj (别忘了source ~/.bashrc) 2--建立工程目录 cd /home/jj mkdir goproj cd goproj mkdir src (此文件夹必须命名为src) mkdr bin (此文件夹可任意命名) 3--在src目录下添加源文件 cd ./src vim main.go (main 这个名字不是必须的可以是任意名字) mkdir lib cd ./lib vim lib1.go (编辑一个库,供main.go调用,可以是多个 ,且名字任意的) 2.编译工程 cd $GOPATH/bin go build main (必...阅读全文

博文 2014-12-25 07:00:01 plc_jianghao

go基本工程构建<一>

1 关于go源代码 每个go源代码都从 package {xxxx 包声明} 开始,表示该go代码属于此包。包是go最基本的分发单位,也是工程管理中依赖关系的体系。 go可执行程序从main包的main函数开始,main函数不带任何参数也无任何返回。 package main import "fmt" // 我们需要使用fmt包中的Println()函数 func main() { fmt.Println("Hello, world. ") } 2 工程文件 go采用目录结构,文件夹来推到工程结构,一般,构建一个工程需三个文件夹 如工程放在目录 /data/pro/demo ├─ ├─ |-- hh.go ├─ ├─demo.go...阅读全文

ElasticHD:ElasticSearch Dashboard Go Application. 【工具、无需安装】

ElasticHD:ElasticSearch Dashboard Go ApplicationElasticHD 是一款 ElasticSearch的可视化应用。不依赖ES的插件安装,更便捷;导航栏直接填写对应的ES IP和端口就可以操作Es了。目前支持如下功能: ES Real time data search ES Dashboard data visualization ES Index Template (在线修改、查看、上传) ES Indices Index deletion and search SQL Converts to Elasticsearch DSL ES 基本查询文档 Downloads ElasticHD【Precompiled binaries】 for s...阅读全文

博文 2017-06-17 12:38:18 farmerx

go项目使用gox交叉编译,生成跨平台的可执行文件

【第一次安装】 1.安装gox $ go get github.com/mitchellh/gox $ cd $GOPATH/src/github.com/mitchellh/gox $ go build 2.编辑~/.bash_profile(bsh) 或者~/.zshrc(zsh) 添加一行: alias gox="$GOPATH/src/github.com/mitchellh/gox/gox" 新开终端,让设置生效。 3.生成本地工具链(如果go版本升级,比如从1.3.3升级到1.4,需要重新运行这个命令先) $ gox -build-toolchain 【交叉编译项目】 1.比如有一个项目的目录在$GPATH/src/hello $cd $GPATH/src/hello $gox ...阅读全文

ubuntu上golang1.5.1安装

如果从golang1.5.1源码安装go的话,需要系统上go1.4的支持,也就是说安装go1.5之前需要先安装go1.4。另外,安装go1.4时,编译的时间也会因系统配置的不同而编译时间不同,于是索性下了golang1.5.1编译后的可执行文件包:go1.5.1.linux-amd64.tar.gz。 部署如下: 1.解压: root@ubuntu:/usr/local# tar -xzvf go1.5.1.linux-amd64.tar.gz 2. /etc/profile文件最后添加如下内容: export GOROOT=/usr/local/go export GOPATH=/home/tjy/go-ws export PATH=$GOROOT/bin:$GOPATH/bin:$PAT...阅读全文

熊猫TV招聘gopher

应聘邮箱: shenguanpu@panda.tv 应聘邮件标题为:"应聘XXX工程师-姓名"并随信附上: 你常上的3~5个网站(如方便请注明你的ID)、常用的开发工具; 你阅读过并推荐的3~5本技术类书籍; 你的简历。 工作地点:北京 望京soho 和王思聪一起创业 我们是谁? 从产品上来讲,熊猫现在还非常的年轻。一个正常视频网站的直播功能,再加上最精炼的用户交互,便把熊猫TV呈献给了各种迫不及待地用户们。 从技术上来讲,熊猫是有些积累的。技术团队均来自于一线互联网公司,大部分成员都有丰富的互联网和泛娱乐领域的业务产品经验,才能支撑熊猫迅速上线让大家High。 从大面上来讲,我们直接跳过小型,从中型系统起跳,目前已经到...阅读全文

centos下安装UPX+压缩golang可执行程序

centos安装upx wget -c http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/ucl-1.03-2.el7.rf.x86_64.rpm rpm -Uvh ucl-1.03-2.el7.rf.x86_64.rpm yum install ucl wget -c http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/upx-3.91-1.el7.rf.x86_64.rpm rpm -Uvh upx-3.91-1.el7.rf.x86_64.rpm yum install upx #upx压缩...阅读全文

博文 2017-08-25 09:03:27 雨花

go交叉编译

指定叉编译目标: GOARCH 目标平台(编译后的目标平台)的处理器架构(386、amd64、arm) GOOS 目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows) (一)Windows 下编译Linux 64位可执行程序: SET CGO_ENABLED=0 //不设置也可以,原因不明 SET GOOS=linux SET GOARCH=amd64 通过 go env 查看设置是否成功。 (二)Linux 下编译Windows可执行程序: export CGO_ENABLED=0 export GOOS=windows export GOARCH=amd64 通过 go env 查看设置是否成功。 go build hello.go 参考: ...阅读全文

博文 2017-07-20 04:01:13 fearless11

Golang 解决"go get xxxx"失败的问题

【问题1】 sudo go get github.com/nsf/gocode sudo: go: command not found 【解决1】 将已安装的go可执行程序链接到sudo的env路径下,例如下面的操作: sudo ln -s /usr/local/go/bin/go /usr/local/bin/ 【问题2】 sudo go get github.com/nsf/gocode sudo: cannot download, $GOPATH not set. For more details see: go help gopath 【解决2】 将GOPATH路径显式的设置并使用,例如下面的操作: sudo env GOPATH=/Users/ryan/go go get gith...阅读全文

博文 2017-01-05 02:00:01 吃一堑消化不良

golang的项目结构 相关知识

### 项目结构 ``` ├── bin │ ├── login │ └── main ├── pkg │ └── darwin_amd64 │ └── login │ └── auth1.a ├── src │ ├── cfg │ │ └── testcfg.go │ ├── db │ │ ├── innerdb │ │ │ └── innerdb.go │ │ └── db.go │ ├── login │ │ ├── auth1 │ │ │ └── auth1.go │ │ ├── auth2 │ │ │ └── auth2.go │ │ └── login.go │ └── main.go └── Makefile ``` *** ### 两种包导入方式 ##### local im...阅读全文

细数实现容器可扩展性的多种途径

一些企业已经进军新兴的容器虚拟化领域,但企业或开发者已经有越来越多的担心,这项技术可能并不像宣传的那样有效,针对先进的应用程序和微服务——至少目前还没有。 目前,最大的问题是可扩展性。Docker,一家领先的容器开发公司,毫不掩饰自己对更高可扩展性的欲望,为此,他们首先需要解决的是在大量的容器之间实现更高效的网络通讯。目前,该公司通过与Red Hat、亚马逊和IBM这样的公司联合开发项目,提供了大量的编排和管理工具。 该公司还与谷歌及其Kubernetes容器管理系统合作密切,但正如Platform的Timothy Prickett Morgan指出的那样,即使Kubernetes缺乏可扩展性计,但是至少这是谷歌的标准。典型的谷歌集群,大约由公司的Borg controller监...阅读全文

Go/Golang 语言学习笔记总结

1.有关go语言总go install ,go build 的区别 go install 主要针对不是 package main 即不是main方法的go文件进行编译 达到相应的包中 ,而go build 只能编译main 方法的go文件 ,并且只能 在 执行go build 命令的当前目录 执行编译后的文件 ./main(linux,mac) 或者是main.exe (windows)程序。 go install 还能编译main 方法的go文件,不管在哪执行该命令 都会把执行文件生成到 $GOPATH/bin 目录下 生成一个可执行的文件 2.针对go文件打包及相应包名的引用 举个例子 假如新建立的一个项目为app 目录为 : $GOPATH/src/app 在app目录下建立一个rtb...阅读全文

go语言三——并行

go从语言层面就支持并行程序设计goroutine(Go语言并行设计的核心),比thread高效易用 package main import( "fmt" "runtime" ) func say(word string){ for i:=0; i<10; i++ { // runtime.Gosched() //让出时间片 fmt.Println(word) } } func main(){ //默认系统线程数量为1,可通过下面指令调整,充分利用多核优势 runtime.GOMAXPROCS(4) go say("Hello") say("World") } 多个 goroutine 运行在同一个进程里面,共享内存数据,不过设计上我们要遵循:不要通过共享来通信,而要通过通信来共享go提供了...阅读全文

博文 2014-10-04 19:26:22 ciaos

gstunnel---一个安全网络管道

项目简介: gstunnel 是 基于go 语言开发的一个安全网络管道,支持tcp协议。 gstunnel分为client和server两部分。 gstunnel 基于aes进行数据加密。 流程示意: 网络中,a到b的网络通信。 a-->b 使用gstunnel 后, a到b的网络通信。 a-->gstunnel client -->gstunnel server -->b gstunnel 为a、b之间的网络通信提供了一个加密层。 使得a、b的通信数据,变为了加密数据,这样第三方就不能获知a、b的通信内容。从而保证了a、b网络通信的安全。 支持的应用: http proxy(squid3等)、email、socks 5 p...阅读全文

SublimeGDB调试Golang

下载 SublimeGDB 在sublime text 2 中 Install Package -> SublimeGDB重启Sublime Text 2修改 workingdir 为工程所在目录,修改 commandline中executable为可执行文件名,如"workingdir": "${home}/gocode/bin", "commandline": "gdb --interpreter=mi --args ./revel run myapp" 常见命令: Launch with F5Step over with F10Step into with F11Step out with Shift+F11 转贴:http://www.cnblogs.com/ztiandan/arc...阅读全文

博文 2016-02-07 23:00:03 Mirage520

一.Go安装和工作目录的配置

1.下载地址 https://golang.org/dl/ 这里下载windowsx64.msi文件 正常的exe文件在windows下安装就可以了。 2.基本配置说明 Paste_Image.png GOARCH-架构 GOBIN 工作目录下的详情文件夹 GOEXE 生成可执行文件的后缀 HOST 交叉编译系统 HOSTARCH 交叉编译的CPUOS 当前系统的系统名称PATH 工作目录ROOT 安装目录 工作目录下的结构bin(存放编译后生成的可执行文件)pkg(存放编译后生成的包文件)src(存放项目源码) GOPATH目录配置到计算机的环境变量中添加 Paste_Image.png 多个的话用;分...阅读全文

Go实例学:Hello World

我们的第一个例子是打印经典的“hello world”信息,我们先看下代码。 package main import "fmt" func main() { fmt.Println("hello world") } 输出结果为: $ ls el_01_hello_world.go $ go build el_01_hello_world.go $ ls el_01_hello_world el_01_hello_world.go $ ./el_01_hello_world hello world 为了使一个go文件能够编译为可执行文件,包名必须是main,然后我们导入提供格式化输出的fmt包,该程序的执行入口是func main()函数,在函数里面,我们使用fmt包提供的Println函数来...阅读全文

博文 2014-11-28 14:00:02 Goopand

go语言初探--一个helloworld编译出来有2.2M!

1. 安装, 用go的安装包安装好了go,终端敲下go,显示了go的help,看来go是没有交互界面的。 2. 新建个helloworld.go文件,写入 package main import "fmt" func main() { fmt.Println("hello world") } go run helloworld.go运行成功,打出了hello, world 3. 再试试编译,go build一下,helloworld可执行文件出现了, 本来我是很欣喜的,有个编译文件好随处扔过去运行了啊,结果一看大小,2.2M,大得过分,勉强凑合能接受吧...阅读全文

博文 2015-04-14 20:00:00 u010211892

分布式 NoSQL 数据库Titan

Titan 是美图公司基于 [TiKV](https://www.oschina.net/p/tikv) 开发的一个 NoSQL 数据库,Titan 使用完全兼容 Redis 的通讯协议。 主要特性: 完全兼容 Redis 协议 完全支持强一致性的分布式事务 支持多租户模式 无缝扩展 高可用性 下面是 Titan 的一些性能测试结果: ![Get command benchmark](https://static.oschina.net/uploads/img/201811/19071751_sZAD.png) ![Set command benchmark](https://static.oschina.net/uploads/img/201811/19071752_fl...阅读全文

开源项目 2018-12-05 09:30:01 网友

MySQL 复制拓扑可视化工具 Orchestrator

_Orchestrator_ 是 MySQL 复制拓扑管理和可视化工具,支持: * 检测和审查复制集群 * 安全拓扑重构:转移服务于另外一台计算机的系统拓扑S * 整洁的拓扑可视化 * 复制问题可视化 * 通过简单的拖拽修改拓扑 * 维护模式声明和执行 * 审计操作 重构拓扑只需要简单的拖拽。Orchestrator 会保证安全,并且禁止非法复制拓扑。 ![orchestrator-co-masters](http://static.oschina.net/uploads/img/201407/30065924_FNIu.png...阅读全文

开源项目 2014-07-29 16:00:00 outbrain

Go语言的“main package”

以下摘自The Go Programming Language: Package main is special. It defines a standalone executable program, not a library. Within package main the function main is also special—it’s where execution of the program begins. Whatever main does is what the program does. main package不同于其它library package,它定义了一个可执行程序。其中的main函数即是可执行文件的入口函数...阅读全文

大型微服务系统管理工具Istio

Istio 是一个由谷歌、IBM 与 Lyft 共同开发的开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。Istio 项目是一款强大的工具,可帮助 CTO/CIO 们立足企业内部实施整体性安全、政策与合规性要求。 优势 **集群规模可视性**:在故障状况出现时,运营人员需要利用多种工具以始终关注集群运行状况并分析微服务状态图表。Istio 项目能够监控与应用程序及网络活动相关的数据,利用 Prometheus 与 G...阅读全文

如何压缩Golang 编译出的可执行文件大小

如何压缩Golang 编译出的可执行文件大小 2015-05-05 先给结论:可以减少到原来的29% 最近在写一个TLScat小工具 Github.com/mengzhuo/tlscat 源文件仅仅2KB不到,但是用 go build tlscat.go 编译出来的有4.6MB! 后来发现这个Golang的1.5才会解决的问题 Issue #6853 all: binaries too big and growing 可是,我就不信这个邪,于是搜索到了go build的一些用法 go build -ldflags "-s -w" ‘-s’ 相当于strip掉符号表, 但是以后就没办法在gdb里查看行号和文件了。 ‘-w’ flag to the linker to omit the debu...阅读全文

go语言程序初学

建立一个用于编写Go程序的工作目录go-examples,其绝对路径为/home/go-examples.开始编写我们的第一个Go程序。 一、在go-work下创建一个文件hello.go 复制代码代码如下: //hello.go package main import "fmt"//实现格式化的I/O /*Printf someting*/ func main(){ fmt.Printf("Hello,GO!\n") } 我们来分析下这个程序: 1、程序中的第2行这个是必须的。所有的Go文件以package 开头,对于独立运行的执行文件必须是package main; 2、第4行说需要将”fmt”包加入main。不是main的其他包都被称为库,其他许多编程语言有着类似...阅读全文

博文 2017-01-21 14:00:12 permike

go 命令行

go run hello.go 直接将编译,链接和运行合为一个步骤,运行完成之后不会看到任何中间文件和可执行文件。 只生成编译结果而不自动运行可以使用go build命令: go build hello.go 运行之后会看到程序目录下出现.exe文件 执行完go build命令之后可以将构建成功的包安装在特定目录下。 go install 与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。 go install编译出的可执行文件以其所在目录名(DIR)命名 go install将可执行文件安装到与src同级别的bin目录下,bin目录由go install自动创建 go install将可执行文件依赖的各种package编译后,放在与src同级别...阅读全文

博文 2015-04-16 14:00:07 w443818435

ubuntu 安装go语言编译环境

1. ubuntu 安装 go语言 sudo apt-get install golang 2.测试go mkdir CODE //创建一个名为CODE的文件夹的命令 vim test.go //在vim下创建一个名为test的go文件的命令 按i进入插入模式,编辑代码 /************************************************************************* > File Name: test.go > Author: ACway > Created Time: 2015年01月10日 星期六 15时23分29秒 ************************************************************...阅读全文