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

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编译...阅读全文

重量级爬虫软件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、命令行三种操作界面;规则简单灵活、批...阅读全文

服务监控系统 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

高性能代理服务器Proxy-Go

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

轻量级且高性能的 Golang 网络库gnet

[项目详情链接](https://taohuawu.club/go-event-loop-networking-library-gnet) `gnet` 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库。这个库直接使用 [epoll](https://en.wikipedia.org/wiki/Epoll) 和 [kqueue](https://en.wikipedia.org/wiki/Kqueue) 系统调用而非标准 Golang 网络包:[net](https://golang.org/pkg/net/) 来构建网络应用,它的工作原理类似两个开源的网络库:[libuv](https://github.com/libuv/libuv) 和 [libevent](ht...阅读全文

我们为什么选择Golang重构Worker系统

故事的起因在这里。 之前发了一篇帖子,讲了暴漫用golang重构了worker系统,有好多朋友问到语言选择的问题。 其实在用Golang重写我们的worker系统之前是做过很多调研的。 真正让我们下定决心的是 Parse的一篇文章:How We Moved Our API From Ruby to Go and Saved Our Sanity。 文中讲了Facebook的Parse团队为什么选择Golang代替Ruby。 我翻译下关键几点: Parse面临的问题 Parse跟暴漫的技术栈比较相似: 服务器Unicorn,部署使用Capistrano。在高流量面前很多问题都被指数级放大,在每次部署的时候 app server重启都要很长时间。并且Unicorn的重启并不是真正的‘gracef...阅读全文

博文 2015-09-09 19:54:01 长洪

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

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

产品级 Go 语言微服务框架Go Chassis

Go Chassis 是华为云 CSE 开源的一个用 Go 语言编写的微服务快速开发框架。借助 CSE Go Chassis 进行微服务开发可最大化地降低开发门槛,提升产品上线速度,同时可以获得微服务运行时高可靠性保证、运行时动态治理等一系列开箱即用的能力。 作为业界首款商用级别的Go语言微服务框架,Go Chassis 已具备支持企业级应用的核心特性: **可定制的通信协议**:除了现有支持的 HTTP/ Highway RPC 协议外,用户可自行扩展协议。支持 Go Chassis 开发的应用与使用 Java Chassis 开发的应用互相通信,企业在进行微服务架构选择有更大的自由。 **使微服务更加健壮**:完善的服务治理(负载均衡、限流、熔断、降级等等),保障 Go 微...阅读全文

go实现高性能直播服务

livego go 实现直播服务 服务器部署 chmod 755 server.sh ./server.sh &(依赖go环境,有些情况需要用vim 打开 set ff=unix 然后:wq) 或者直接执行 ./LiveGoServer (不依赖go环境) 本地部署 直接执行 LiveGoServer.exe use 采用vue+webpack实现ui所有在config里日志在logs里http://localhost:8080/ (视频直播)http://localhost:8080/camera (录视频)(由于chrome的安全限制,建议在firefox下打开录视频页面) 使用效果 交流使用 交流群:337937322 项目地址:https://github.com/qieangel2...阅读全文

博文 2017-02-10 10:31:31 qieangel2013

如何运行一个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...阅读全文

(转)Erlang和Go的并行化concurrent比较

说到concurrent,一般会想到Erlang和Go语言,这两种语言的主打特性都是concurrent,Erlang有着20多年的历史,是为简化开发电信大并发和高可靠性应用而发明的语言,Go是Google从2007年开始设计,2009年opensource出来的,Go属于一种system language,opensource的就算这两种语言吧,公司内私有的语言则有TNSDL,SDL的一个变种,以前写过一篇SDL和Erlang比较的文章(http://bookjovi.iteye.com/blog/1233299),这三种concurrent语言各有不同,下面看看: 1)语言设计 Erlang的实现基于虚拟机beam,Go是编译型语言,有着独成一体的compiler(不同于gcc,Go很好...阅读全文

博文 2015-02-10 01:00:02 vanadiumlin

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 雨花

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 阳光灿烂的日子

Go 能拯救已经失败的可视化编程?

在计算中,可视化编程语言(VPL)允许用户通过图形化操作程序元素而不是通过文本指定来创建程序。但一直以来,除了在一些非常有限的领域外,可视化编程都未成功。对此,有人认为文本编程语言混淆了编程的本质,也有网友表示为支持编程而开发的工具并不重要,那么可视化编程的出路到底在哪里?对此,本文作者 Ivan Daniluk 发表了长文剖析可视化编程语言失败的原因,并探讨新兴的 Go 语言在可视化编程中的应用与解决方案。 作者 | Ivan Daniluk译者 | 弯月,责编 | 屠敏出品 | CSDN(ID:CSDNnews)以下为译文:我希望能够开门见山,直接讨论主题,但是我觉得还是有必要首先介绍一下背景。这一切都因为我感觉编写文本代码太让人失望了。IDE与火把你知道代码编辑器和火把之间有什么共同之...阅读全文

【北京,免费三餐,年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 关于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...阅读全文

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项目使用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 ...阅读全文

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

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最小docker镜像制作

因为go语言编译好之后为可执行文件,不需要依赖go语言环境即可运行,所以可以在带go语言得docker镜像中编译,编译完成之后将二进制文件拷贝到一个不带go环境的较小的镜像即可,这里采用alpine镜像作为运行的镜像 FROM golang:alpine AS development WORKDIR $GOPATH/src COPY . . RUN go build -o app FROM alpine:latest AS production WORKDIR /root/ COPY --from=development /go/src/app . EXPOSE 8080 ENTRYPOINT ["./app"] 这样制作完成的镜像只有8.5M的大小,其中alpine基础包5.53...阅读全文

博文 2019-05-27 17:34:52 褪色的记忆1994

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...阅读全文

Golang多平台交叉编译

Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Wind...阅读全文

熊猫TV招聘gopher

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

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

关于实现CRC16校验算法的两个函数

之前在2017年2月份发布过一个主题,也是关于CRC16的,现在我直接把函数写出来,希望能帮到有需要的朋友。对于在线监测设备数据传输标准来说,CRC16校验算法有基于通用modbus协议的,有基于环保局HJT-212协议的,以下两个函数算出来的结果都已通过现场数据包验证。 //通用modbus CRC校验算法 func modbusCRC(dataString string) string { crc := 0xFFFF length := len(dataString) for i := 0; i < length; i++ { //通用modbus取寄存器的低8位参与异或运算 crc = ((crc ...阅读全文

Erlang vs Go

1)设计 Erlang的实现基于虚拟机beam,Go是编译型语言,有着独成一体的compiler(不同于gcc,Go很好的解决了依赖的问题,所以编译go程序时不需向编译c程序那样指定include和library),TNSDL和GO类似,属于native执行。Erlang主要是为电信级应用服务的,而Go的concurrent则更具有通用性,这点主要体现在concurrent的设计,Erlang是基于process之间传递message,而Go是goroutine组成,再加上channel,Go通过把process和message解耦使得Go的设计更有通用性和灵活性,应用可以根据自己的需求决定是否需要channel的处理。routine加channel的设计在stackless python也...阅读全文

博文 2014-10-09 17:00:01 androidzhaoxiaogang

北京招聘Go工程师1人,薪资高待遇好

我公司14年成立,完成两轮融资,目前正在招聘Go工程师1名,待遇:每月15-30K左右。周末法定都休息,五险一金,带薪年假,年终奖金。 要求:1、熟悉 Go 语言。2、有高负载 Server 实战经验。3、对计算机技术有发自内心的兴趣。 欢迎大家推荐,有丰厚推荐奖金。 联系:QQ 3407909729 有实战经验既可,不限年数...阅读全文

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

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

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...阅读全文

一款golang实现的高性能持久化消息队列

https://github.com/LevinLin/OPQOPQAn Open sourced Persistent message QueueCode is tested under go1.4.2 (CAUTION: OPQ hasn't been tested in production environment so far)Features1.persistent message storage2.push model - push message to target service and block when failure3.easy to use - simple API whith HTTP POST method, no addtional client integr...阅读全文

博文 2017-05-05 06:56:35 levin

一.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 多个的话用;分...阅读全文