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

golang 读写文件

1.读文件 package main import ( "bufio" "fmt" "io" "io/ioutil" "os" ) //读取文件需要经常进行错误检查,这个帮助方法可以精简下面的错误检查过程。 func check(e error) { if e != nil { panic(e) } } func main() { //也许大部分基本的文件读取任务是将文件内容读取到内存中。 dat, err := ioutil.ReadFile("/tmp/dat") check(err) fmt.Print(string(dat)) //你经常会想对于一个文件是怎么读并且读取到哪一部分进行更多的控制。对于这个任务,从使用 os.Open打开一个文件获取一个 os.File 值开始。 f, ...阅读全文

博文 2015-04-21 03:00:01 benlightning

【GoLang笔记】遍历map时的key随机化问题及解决方法

之前的一篇笔记曾分析过,Go的map在底层是用hashmap实现的。由于高效的hash函数肯定不是对key做顺序散列的,所以,与其它语言实现的hashmap类似,在使用Go语言map过程中,key-value的插入顺序与遍历map时key的访问顺序是不相同的。熟悉hashmap的同学对这个情况应该非常清楚。 所以,本文要提到的肯定不是这个,而是一个比较让人惊奇的情况,下面开始说明。 1. 通过range遍历map时,key的顺序被随机化 在golang 1.4版本中,借助关键字range对Go语言的map做遍历访问时,前后两轮遍历访问到的key的顺序居然是被随机化的! 这个现象在其它语言中是很少见的,比如C语言实现hashmap时,通常会用数组(即一段连续的内存空间)来存key,虽然key的...阅读全文

博文 2015-04-02 19:00:01 slvher

如何为Linux安装Go语言

导读 Go 语言又称为 golang, 是由 Google 最初开发的一种开源编程语言,其在设计时就遵循了简单、安全和速度的 3 大原则。Go 语言具有多种调试、测试、分析和代码审查工具,如今 Go 语言和工具已在大多数 Linux 发行版本的源库中进行提供,本文我就来说明如何为 Linux 安装 Go 语言。 Ubuntu、Debian或Linux Mint安装Go语言 基于 Debian的 Linux 发行版本都可以使用 apt-get 命令来进行安装: sudo apt-get install golang 要查看当前系统安装的 Go 语言版本可以使用如下命令: go version 由于 Go 代码必需保存在 workspace(工作区)中,所以我们必需在 Home 目录(例如 ~/...阅读全文

博文 2016-07-08 08:00:00 linux130

go语言exec包调用shell命令

工程中需要用到ffmpeg,想直接用exec包调用shell命令。本来以为很简单,结果折腾了一下午,最后查到了解决方案。 假如之前执行报错的语句为: cmd := exec.Command("echo", "'helloworld!'") out, err := cmd.Output() 那么改为: c := "echo hello world" cmd := exec.Command("sh", "-c", c) out, err := cmd.Output() 即可! 感谢万能的stack overflow reference: https://stackoverflow.com/questions/20437336/how-to-execute-system-command-in-go...阅读全文

博文 2016-08-18 17:00:03 yypnathan

新手问题 go build 找不到 go source files

mac环境,在项目目录下 go build ,显示“can't load package: package .: no buildable Go source files in /Users/xxxx/Documents/goworkspace/test/calcproj” 项目目录:/Users/xxxx/Documents/goworkspace/test/calcproj 目录下有 bin /pkg/src目录 ,src下有calc.go (包含main函数) $ echo $GOPATH /Users/xxxx/Documents/goworkspace/test/calcproj/ go install 也是同样的问题,找不到 Go s...阅读全文

Go项目的目录结构

项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可以保持一致性,做到统一、规则化比较明确。 1、一般的,一个Go项目在GOPATH下,会有如下三个目录: |--bin |--pkg |--src 其中,bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项目源文件。 一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可。 对于pkg目录,曾经有人问:我把Go中的包放入pkg下面,怎么不行啊?他直接把Go包的源文件放入了pkg中。 这显然是不对的。pkg中的文件是Go编译生成的,而不是手动放进去的。(一般文件后缀.a) 对于src目录,存放源文件,Go中源文件以包(package)的形式组织。通常,...阅读全文

博文 2016-03-11 10:00:02 zsy

Golang实现简单tcp服务器02 -- 实现echo服务器/客户端

用Golang实现 echo服务器/客户端 本节我们就从实现一个简单的echo的服务端/客户端来入手, 了解golang的实现tcp长连接服务器的具体细节. 首先, 我们先列一下**服务端的实现思路及步骤**:1. 创建一个套接字对象, 指定其IP以及端口.2. 开始监听套接字指定的端口.3. 如有新的客户端连接请求, 则建立一个goroutine, 在goroutine中, 读取客户端消息, 并转发回去, 直到客户端断开连接4. 主进程继续监听端口. 我们可以在实验环境的主文件夹中, 建立一个名为server.go的文件, 在其中编写服务器端程序代码服务端程序清单如下: server.go package main import ( "bufio" "fmt" "net" "time" )...阅读全文

博文 2015-06-02 23:00:16 victoriest

golang实现tcp接入服务器

接入服务器和后端业务服务其维持tcp连接,多个前端请求通过接入服务器访问后端业务服务器,接入服务器可以方便增加路由功能,维护多个业务服务器,根据消息ID路由到具体的业务服务器。 项目目录如下 simplelotus src lotus main.go lotuslib tcplotus.go test tcpclient.go tcpserver.go install install源码如下: #!/usr/bin/env bash if [ ! -f install ]; then echo 'install must be run within its container folder' 1>&2 exit 1 fi CURDIR=`pwd` OLDGOPATH="$GOPATH" ex...阅读全文

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

Centos 搭建golang环境,vim高亮go关键字设置

Centos 搭建golang环境,vim高亮go关键字设置 1:下载 https://golang.org/dl/ 下载 go1.4.1.linux-amd64.tar.gz ArchiveLinux64-bit 2:切换sudo权限解压到/usr/local/目录下 tar xzvf go1.3.linux-amd64.tar.gz -C /usr/local/ 3:返回普通用户权限 4:设置PATH vi ~/.bash_profile export GOROOT=/usr/local/go export GOBIN=$GOROOT/bin export GOPATH=$HOME/golang_git 这个设置为git go的库时的下载路径 PATH=$PATH:$GOBIN expo...阅读全文

博文 2015-01-22 23:00:01 ppppppppp2009

supervisor运行golang守护进程

最近在鼓捣golang守护进程的实现,无意发现了supervisor这个有意思的东西。supervisor是一个unix的系统进程管理软件,可以用它来管理apache、nginx等服务,若服务挂了可以让它们自动重启。当然也可以用来实现golang的守护进程,下面描述下具体实现。 安装supervisor 基于centos 6.4。 supervisor使用python编写的,可以用easy_install安装。centos上默认有python的运行环境,安装起来就非常简单了。 $ sudo yum install python-setuptools $ sudo easy_install supervisor 如果没有看到什么报错,那么就安装成功了,可以使用echo_supervisord_...阅读全文

博文 2015-07-17 03:00:00 cnsanshao

在 Linux 中使用 Go 作为脚本语言

在 `Cloudflare` 的人们都非常喜欢 Go 语言。我们在许多[内部软件项目](https://blog.cloudflare.com/what-weve-been-doing-with-go/)以及更大的[管道系统](https://blog.cloudflare.com/meet-gatebot-a-bot-that-allows-us-to-sleep/)中使用它。但是,我们能否进入下一个层次并将其用作我们最喜欢的操作系统 Linux 的脚本语言呢? ![image here](https://raw.githubusercontent.com/studygolang/gctt-images/master/go-script/gopher-tux-1.png) ## 为什么考虑...阅读全文

博文 2018-02-27 15:59:22 shniu

golang实现异步并发sokect

搜索golang + epoll的例子,得到下面这段代码,感觉golang的编程思维真正做到了并行编程: package main import ( "fmt" "net" "os" "time" ) const ( MAX_CONN_NUM = 5 ) //echo server Goroutine func EchoFunc(conn net.Conn) { defer conn.Close() buf := make([]byte, 1024) for { _, err := conn.Read(buf) if err != nil { //println("Error reading:", err.Error()) return } //send reply _, err = con...阅读全文

博文 2014-10-04 19:26:38 yunfound

5分钟学习基于Go,go-microservice-template,Minke的微服务

【编者的话】本篇文章介绍了Go语言下构建微服务的例子,作者利用一个helloword讲解了如何使用他的微服务框架,该框架不仅包含了构建服务,还包括路由、请求验证、日志记录、测试、动态配置变更,最后将提供了将服务整合到Docker容器并持续集成。本文干货满满,虽然需要一些对Go语言的基础,但是这构建微服务的思路是通用的。 @Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、点融网等公司的技术负责人将带来实践经验分享,3月21日之前购票只需238元,欢迎感兴趣的同学抢购。 介绍几周前我去参加一个零售环境下的技术会议,直到午饭时间都没人提及'Docker'或者'...阅读全文

博文 2016-03-25 11:19:45 Sonyfe25cp

统计redis中某类key的数量,代替keys指令

redis使用过程中会存在查询某类key的数量问题,较简单的办法为通过redis-cli结合keys进行操作,由于keys的工作机制导致线上一般禁用该指令,以下shell脚本通过scan实现统计功能。#!/bin/bashA=$0B=${A##*/}C=${B%.*}running_file_name=$Crunning_flag="run.$running_file_name"REDIS_CLIENT='redis-cli -h 0.0.0.0 -p 6379 -x'function process { echo $0 index=-1 count=0 step=100000 while ((index!=0)) do if [ $index -le 0 ];then index=0 fi...阅读全文

博文 2018-08-17 10:52:54 hansegod

golang的ssh包

git clone https://github.com/golang/crypto.git,复制到 golang.org/x/ 目录下。 常常用来建立ssh连接发送一条命令,但有时需要模拟ssh客户端功能,即直接连接上远程主机一直操作:(http://www.zhihu.com/question/30368538/answer/47835043) package main import ( "golang.org/x/crypto/ssh" "log" "os" ) func main() { ce := func(err error, msg string) { if err != nil { log.Fatalf("%s error: %v", msg, err) } } client...阅读全文

博文 2016-04-06 10:00:46 tianyajuanke

golang执行linux命令

golang exec 执行系统命令 golang 2014-09-25 13:17:44 2779 0 0 exec.Command() 最简单的方法: cmd := exec.Command("/bin/sh/", "-c", "linux命令") 或复杂的, 各个参数都要单独写 cmd := exec.Command("ls", "-l", "-a") package main import ( "bytes" "fmt" "os/exec" ) func main() { in := bytes.NewBuffer(nil) cmd := exec.Command("sh") cmd.Stdin = in go func() { in.WriteString("echo hello ...阅读全文

博文 2016-08-31 17:00:02 zhangym

etcd v3 服务注册与发现 Go代码

本文整理一下思路,编写示例(golang),以便加深etcd的理解 大致如下,监听程序为master,服务为service 1 service 启动时向etcd注册自己的信息,即注册到services/ 这个目录 2 service 可能异常推出,需要维护一个TTL(V3 使用 lease实现),类似于心跳,挂掉了,master可以监听到 3 master监听 services/ 目录下的所有服务,根据不同action(V3有put/delete),进行处理 service注册 提供 key(service name), value(serviceInfo)进行registered start 启动后,执行keeplive(), 维护心跳,挂掉时revoke() 同时监听 stop chan...阅读全文

博文 2018-01-13 00:30:00 sevenPP

go-bindata 安装

go get -u github.com/jteeuwen/go-bindata/... 执行后仍然没有找到go-bindata命令 echo $GOPATH /root/devhome/golang/go_demo cd /root/devhome/golang/go_demo/bin 可以看到下载的go-bindata在这里 cp 它到 环境变量下/root/bin/go/bin $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

博文 2016-01-27 18:00:03 lampqiu

阿里云上Ubuntu14.04-64位安装Gogs

sudo apt-get update sudo apt-get upgrade sudo adduser gogs //创建用户 密码 ******* su gogs//切换到gogs用户 cd ~ //进入用户gogs根目录 sudo apt-get install git //安装git git --version //检查git是否安装成功 sudo apt-get install mysql-server //安装mysql数据库 账户:root 密码:******** mysql --version //检查mysql版本判断是否安装成功 //创建数据gogs mysql -u root -pmysql> SET GLOBAL storage_engine = 'InnoDB';...阅读全文

博文 2015-02-05 14:00:02 路峰

设置GOPATH

使用go语言开发, 环境变量GOPATH的设置是第一步, 我们可以指定一个自己常用的目录, 我个人喜欢使用 /usr/local/src/go_path 全局设置 vi /etc/profile 在文件的结尾加上 export GOPATH=/usr/local/src/go_path 使配置马上生效 source /etc/profile 用户级别设置 vi ~/.bash_profile 在文件的结尾加上 export GOPATH=/usr/local/src/go_path 使配置马上生效 source /etc/profile 临时生效 直接在命令行添加 export GOPATH=/usr/local/src/go_path 这种方式, 在关闭shell或重启机器会失效 配置好之...阅读全文

博文 2017-02-10 14:44:11 yin32167

golang中的检验hash

1.对字符串进行hash 大家可以看一下, SHA1 Hashes Go by Example写道: The pattern for generating a hash is sha1.New(), sha1.Write(bytes), then sha1.Sum([]byte{}). 附上golang代码 package main import ( "crypto/sha1" "fmt" ) func main() { s := "sha1 this string" h := sha1.New() h.Write([]byte(s)) bs := h.Sum(nil) fmt.Println(s) fmt.Printf("%x\n", bs) } 结果输出为: sha1 this stri...阅读全文

博文 2014-10-04 19:26:00 getong

Golang 获取用户 home 目录路径

os/user改进参考 os/user 一般情况下我们可以使用 os/user 包提供的 Current() 函数来获取用户信息: user, err := user.Current() if nil == err { return user.HomeDir, nil } 但这个方式交叉编译后不能完全跨平台,在 darwin 下需要 cgo 才能正常工作。 改进 为了解决这个问题,我们需要进行一点增强,在通过 os/user 获取失败时再通过环境变量、命令来获取: // Home returns the home directory for the executing user. // // This uses an OS-specific method for discovering th...阅读全文

博文 2015-04-05 11:21:30 88250

Golang实现ping

ICMP部分的结构 报头 ICMP报头从IP报头的第160位开始,即第20个字节开始(除非使用了IP报头的可选部分)。 Bits 160-167 168-175 176-183 184-191 160 Type Code 校验码(checksum) 192 ID 序号(sequence) Type - ICMP的类型,标识生成的错误报文;Code - 进一步划分ICMP的类型,该字段用来查找产生错误的原因.;例如,ICMP的目标不可达类型可以把这个位设为1至15等来表示不同的意思。Checksum - 校验码部分,这个字段包含有从ICMP报头和数据部分计算得来的,用于检查错误的数据,其中此校验码字段的值视为0。ID - 这个字段包含了ID值,在Echo Reply类型的消息中要返回这个字段。...阅读全文

博文 2016-04-13 22:00:06 simplelovecs

Go 编译过程分析(一) -- 编译脚本

http://blog.csdn.net/free2o/article/details/38417293 go 语言最近很火,与时俱进,我也看了看go 的语法。 看起来 go 还是不错的,有很多新的feature。 就下载了代码研究了一下。 go 的 src 目录下面存在三套编译文件: window 平台, 所有 bat 文件plan9 平台,所有 rc 文件unix 类平台,所有bash 文件 以 unix 编译文件为例, go 的编译入口时在 src/all.bash , 这是一个bash 脚步, 这个脚步只是简单的调用了 make.bash 在脚步结束之后,调用 dist banner 输出编译的信息。 [plain] view plaincopy set -e if [ ! -f m...阅读全文

博文 2015-04-30 15:00:26 working_brain

用golang编写简单的Echo Server

用golang编写简单的Echo Server 这段时间在看golang的网络编程方面的内容,网络知识很浅薄啊,很多东西还要不断的学习,很多也看不懂,今天先来一个简单的内容,用golang写一个简单的echo server。 TCP/IP协议 大家都知道TCP/IP协议簇是当今网络世界的事实标准协议,与其对应的是OSI的七层模型,对于这七层模型这里就不再赘述了,这里只是简单介绍一下TCP/IP的四层模型。 TCP/IP的四层模型最下面是一个物理层,上面是网络层,再往上就是传输层,最后是应用层了,分层的概念相信大家都之的,这样在不同层之间变化就是打包或者解包,简单来说就是加上头信息或者去掉头信息。 golang API golang的net包里面有很方便的API供我们使用,这个API主要可以划...阅读全文

博文 2014-10-04 19:26:06 wowzai

golang简单实现Websocket

首先获取websocket包, 在获取的时候好像需要下载什么什么hg的一个软件之后可以成功执行 go get code.google.com/p/go.net/websocket 步入正题 服务端: import ( "code.google.com/p/go.net/websocket" "fmt" "log" "net/http" ) func main() { fmt.Println("Start app") http.Handle("/", websocket.Handler(Echo)) if err := http.ListenAndServe(":4001", nil); err != nil { log.Fatal("ListenAndServe:", err) } } fu...阅读全文

博文 2016-03-04 03:00:06 u013701108

go RPC服务过程

标准库的RPC RPC是远程调用的简称, 简单的说就是要像调用本地函数一样调用服务器的函数. Go语言的标准库已经提供了RPC框架和不同的RPC实现. 下面是一个服务器的例子: type Echo int func (t *Echo) Hi(args string, reply *string) error { *reply = "echo:" + args return nil } func main() { rpc.Register(new(Echo)) rpc.HandleHTTP() l, e := net.Listen("tcp", ":1234") if e != nil { log.Fatal("listen error:", e) } http.Serve(l, nil) }...阅读全文

博文 2016-10-16 11:00:01 tyq101010

[go]ipv6 ping测试

其实很简单.就是对照go源码的ipraw_test.go和之前的ping.go 改造一个ping6.go.变化很小 // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // taken from http://golang.org/src/pkg/net/ipraw_test.go //20131204,尝试改造支持ipv6 package ping6 import ( "bytes" "errors" "net" "os" "t...阅读全文

博文 2014-10-04 19:25:56 laputa73

在golang中使用leveldb

leveldb是一个很强悍的kv数据库,自然,我也希望能在go中使用。 如果有官方的go leveldb实现,那我会优先考虑,譬如这个,但是该库文档完全没有,并且在网上没发现有人用于实战环境,对其能否在生产环境中使用打上问号,保险起见,我还是决定不使用。 因为leveldb有c的接口,所以通过cgo能很方便的进行集成,所以我决定采用该种方式,幸运的是,已经有人做了cgo的版本,也就是levigo。 使用levigo,需要编译安装leveldb,如果需要压缩支持还需要编译snappy,为了简单,我写了一个构件脚本,如下: #!/bin/bash #refer https://github.com/norton/lets/blob/master/c_src/build_deps.sh #你必须在...阅读全文

博文 2014-10-04 19:27:02 siddontang

Shadowsocks-go一键安装脚本

Shadowsocks-go一键安装脚本 本脚本适用环境: 系统支持:CentOS,Debian,Ubuntu 内存要求:≥128M 关于本脚本: 一键安装 Go 版的 shadowsocks 最新版本 1.1.5。据说 go 版本有 buff 。与 Python 版不同的是,其客户端程序能使用多个服务端配置,本脚本安装的是服务端程序。作者默认推荐 aes-128-cfb 加密,基于一致性,脚本使用了 aes-256-cfb 加密方式。 默认配置: 服务器端口:自己设定(如不设定,默认为 8989) 客户端端口:1080 密码:自己设定(如不设定,默认为teddysun.com) 客户端下载: https://github.com/shadowsocks/shadowsocks-window...阅读全文

博文 2016-12-24 05:00:02 PengTdy

Golang websocket

环境:Win10 + Go1.9.2 1.先下载并引用golang的websocket库 ①golang的官方库都在https://github.com/golang下,而websocket库在/net下。 ②如果没有安装Git,需要先安装Git。 ③使用go get -u github.com/golang/net/websocket下载代码,将安装在环境变量GOPATH配置的路径中。 代码中使用路径为 "golang.org/x/net/websocket",在对应路径下没有代码的话则引用出错,可将对应代码放在GOPAHT/golang.org/x/net下。 2.服务端Go代码 package main import ( "fmt" "golang.org/x/net/websocke...阅读全文

博文 2018-03-29 17:33:11 mickelfeng

PHP和Golang使用Thrift1和Thrift2访问Hbase0.96.2(ubuntu12.04)

目录: 一、Thrift1和Thrift2的简要介绍 1) 写在前面 2) Thrift1和Thrift2的区别 二、Thrift0.9.2的安装 1) 安装依赖插件 2) Thrift0.9.2的编译 3) Thrift0.9.2编译后,配置成可执行文件 三、Hbase0.96.2的安装 1) Hbase的介绍 2) Hbase的安装 3) Hbase基于源码的Thrift生成接口文件 四、PHP和Golang使用Thrift1和Thrift2访问Hbase 1) PHP基于Thrift1访问Hbase 2) Golang基于Thrift2访问Hbase 五、常见问题 六、扩展阅读 目录: 一、Thrift1和Thrift2的简要介绍 1) 写在前面 从Hbase0.94.11开始有两套t...阅读全文

博文 2014-10-07 22:38:36 lion.net

GO语言练习:channel 工程实例

1、工程代码 2、编译及运行 1、工程目录结构 $ tree cgss cgss ├── cgss.go └── src ├── cg │ ├── centerclient.go │ ├── center.go │ └── player.go └── ipc ├── client.go ├── ipc_test.go └── server.go 1.1)主文件cgss.go 文件代码 1 package main 2 3 import ( 4 "bufio" 5 "fmt" 6 "os" 7 "strconv" 8 "strings" 9 10 "cg" 11 "ipc" 12 ) 13 14 var centerClient * cg.CenterClient 15 16 func sta...阅读全文

博文 2015-07-20 03:00:00 fengbohello

go 1.5.1性能提升巨大

之前有说过,我们的momo_worker项目是使用go编写的,当时是基于1.4.2这个版本,今天(2015年9月9日)google发布了go 1.5.1,之前因为go 1.5 bug太多就没有升级,这次升级了一下,试试看效果。1.4.2和1.5.1的具体对比就不贴了,大家有兴趣自行google吧,下面主要展示下go1.5.1的在我们生产环境下的性能提升。 momo_worker 通过上面3张图能看出,3点后cgo calls大幅下降,这应该是得益于go去掉了大量的c代码。gc、threads、file descriptor、memory都有大幅下降。 这里还体现不出go 1.5.1的性能有多少提升,不过已经能看出来,在系统资源的消耗上,1.5.1有了巨量的下降。 echo test 这里通过...阅读全文

博文 2015-09-09 19:56:58 LYY

Echo框架Go 语言 Web 开发,新手快来学

地址: github.com/labstack/echo 官网: http://labstack.com/echo/ Echo 是个快速的 HTTP 路由器(零动态内存分配),也是 Go 的微型 Web 框架。 特性: 快速 HTTP 路由器,智能优先可扩展中间件,支持: echo.MiddlewareFunc func(echo.HandlerFunc) echo.HandlerFunc echo.HandlerFunc func(*echo.Context) error func(http.Handler) http.Handler http.Handler http.HandlerFunc func(http.ResponseWr...阅读全文

golang web程序开机自动启动,并隐藏cmd窗口

注意:本文中设计的方法,虽然能够隐藏控制台窗口,但并不是真正意义的"后台运行",此时,如果注销服务器,那么所有运行的golang网站服务程序都会终止,解决办法: 点击使用.net完美解决服务器注销后go的web服务停止的问题 如果一个服务器有10个golang的web,每一个都显示一个cmd窗口的话,会很难看,解决如下: 1)go build 你的web 生成一个exe文件 例如 我的项目叫 "myweb",那么我需要在我的项目根目录上面打开cmd,执行一条命令就可以了: go build myweb .就会生成一个myweb.exe文件 2)制作bat文件 通过bat文件启动该exe文件: 新建一个空bat文件,把上一步生成的myweb.exe的绝对路径添加到bat文件中,这样双击bat文...阅读全文

博文 2015-06-17 20:02:34 zhifeiya

新手环境报错,找不到包

sublime3下执行go run main.go报如下错误: main.go:9:5: cannot find package "server/rest" in any of: /usr/local/go/src/server/rest (from $GOROOT) /Users/runc/code/golang/src/server/rest (from $GOPATH) exit status 1 本机环境: runc:rest > echo $GOROOT /usr/local/go runc:rest > echo $GOPATH /Users/runc/code/golang 项目当前目录: runc:rest...阅读全文

利用golang和QML来开发Ubuntu应用

在前面的文章“使用golang来设计我们的Ubuntu Scope”中,我们已经介绍了如何利用golang来开发Ubuntu Scope。在今天的文章中,我们来简单介绍一下如何使用golang来开发QML应用。这对于一些熟悉golang语言的,但是不是很熟悉C++的开发这来说,无疑是一个好的选择。虽然我们大多数的QML应用只需要QML加上一些Javascript的脚本即可,但是我们可以使用Qt C++或Go语言来拓展它的功能,来做一些需要计算或特殊功能的部分。 首先,我们来查看我们中国开发者dawndiy所做的一个repository: https://github.com/dawndiy/ubuntu-go-qml-template 这个repository是基于另外一个repositor...阅读全文

博文 2015-08-18 18:00:01 UbuntuTouch

微型 Web 框架 Echo Go

Echo 是个快速的 HTTP 路由器(零动态内存分配),也是 Go 的微型 Web 框架。 ## 特性 * 快速 HTTP 路由器,智能优先 * 可扩展中间件,支持: * `echo.MiddlewareFunc` * `func(echo.HandlerFunc) echo.HandlerFunc` * `echo.HandlerFunc` * `func(*echo.Context) error` * `func(http.Handler) http.Handler` * `http.Handler` * `http.HandlerFunc` * `func(http.ResponseWriter, *http.Request)` Extensible han...阅读全文

开源项目 2016-09-07 16:07:45 labstack

go语言和c++通信的例子

boost 写的一个echo server ,收到 go发起的连接之后会把一个结构体的内容发送给go一边,go语言进行解析,直接贴代码 c++ #include #include #include #include using boost::asio::ip::tcp; struct music { uint32_t id; char name[128]; char type[128]; }; struct music m { id:3225, name:"my heart will go on", type:"mp3@mp4" }; class session { public: ...阅读全文

博文 2014-10-15 23:00:00 qfsun

服务器网络库cellnet

# cellnet [![Build Status][3]][4] [![Go Report Card][5]][6] [![MIT licensed][11]][12] [![GoDoc][1]][2] [1]: https://godoc.org/github.com/davyxu/cellnet?status.svg [2]: https://godoc.org/github.com/davyxu/cellnet [3]: https://travis-ci.org/davyxu/cellnet.svg?branch=v3 [4]: https://travis-ci.org/davyxu/cellnet [5]: https://goreportcard.com/b...阅读全文

开源项目 2017-07-31 08:33:49 Davy xu

整理下Base64相关的东西(OpenSSL/GO...)

Base64在不同语言对接时,其实是有些小坑的,之前有碰过。 首先Base64的是啥? 阮一峰有一篇写得很赞的文章说得很明白。 然后是怎么编码? 我用OpenSSL写了个Base64解编码实现: /* 用openssl来做Base64加解密. Author: xcl Date:2015-9-17 */ #include #include #include #include "openssl/ssl.h" #include #include #if defined(WIN32) || defined(_WIN64) #pragma comment(lib, "libeay...阅读全文

博文 2015-10-24 13:00:05 xcltapestry

golang 多个项目时如何配置(使用gb在非GOPATH路径下构建项目)

方案1:将每个项目路径写入GOPATH 写了个脚本SetGoPath.sh #!/bin/bash if [[ $GOPATH =~ .*$PWD.* ]] then echo "currnet dir is already in GOPATH" else export GOPATH=$GOPATH:$PWD echo "fininsh setting $PWD in GOPATH" fi 在项目主目录中运行source SetGoPath.sh 将当期项目路径写入GOPATH 方案2 使用gb替代go来构建项目 这个gb就是一个替代go的build 和 test的工具,可以让项目在任意路径时运行构建 github地址:https://github.com/constabula... 首先要...阅读全文

博文 2017-03-16 10:00:54 kel

Go-Ping

package conn import ( "bytes" "net" "os" "time" ) const ( ICMP_ECHO_REQUEST = 8 ICMP_ECHO_REPLY = 0 ) // Ping Request func makePingRequest(id, seq, pktlen int, filler []byte) []byte { p := make([]byte, pktlen) copy(p[8:], bytes.Repeat(filler, (pktlen-8)/len(filler)+1)) p[0] = ICMP_ECHO_REQUEST // type p[1] = 0 // code p[2] = 0 // cksum p[3] = 0 // ...阅读全文

博文 2015-02-26 12:28:25 nulijiabei

go语言web框架比较:gin vs iris vs echo

前言 由于golang提供了完善的net/http标准库,基于该标准库实现一个web框架的难度相比其他语言低了不少,所以go web框架简直就是百花齐放。从老牌的revel和beego,到新出的gin,和iris等,而且还有一些类似于chi这种router。个人一般小项目,尤其是中间件需要暴露一些http接口的,基本就使用chi即可。本次测试主要是gin iris echo 这三个框架。侧重在于高性能,从并发和json序列化和反序列化两个方面来测评,毕竟后台项目侧重的也就是这两个方面。 测试 测试环境说明 为了选择符合重IO的框架,现设定如下场景的demo,demo的具体要求如下: 打开日志功能(模拟正常业务时也会记录日志),在请求开始和结束时分别记录一条日志 接口中用sleep暂停1秒,假...阅读全文

博文 2018-02-26 17:34:40 iyacontrol

linux 和windows 下golang安装

基于 Red Hat 的 Linux 发行版本,RHEL、Fedora、CentOS都可以使用 yum 命令来进行安装: yum install golang 要查看当前系统安装的 Go 语言版本可以使用如下命令: go version 接下来还是在 Home 目录(例如 ~/workspace)创建一个 workspace 目录并定义 GOPATH 环境变量指向该目录,这个目录将被 Go 工具用于保存和编辑二进制文件。 mkdir ~/workspace echo 'export GOPATH="$HOME/workspace"' >> ~/.bashrc source ~/.bashrc 根据不同的需要 Go tools: yum search golang 基于Ubuntu、Debia...阅读全文

博文 2017-10-17 22:00:01 no-password

Go语言的RPC介绍(含Protobuf-RPC)

标准库的RPC RPC是远程调用的简称, 简单的说就是要像调用本地函数一样调用服务器的函数. Go语言的标准库已经提供了RPC框架和不同的RPC实现. 下面是一个服务器的例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 type Echo int func (t *Echo) Hi(args string, reply *string) error { *reply = "echo:" + args return nil } func main() { rpc.Register(new(Echo)) rpc.HandleHTTP() l, e := net.Listen("tcp", ":1234") if e != nil { log.Fatal("...阅读全文

博文 2015-08-25 16:00:01 wkyb608

Go 编译过程分析(一) -- 编译脚本

go 语言最近很火,与时俱进,我也看了看go 的语法。 看起来 go 还是不错的,有很多新的feature。 就下载了代码研究了一下。 go 的 src 目录下面存在三套编译文件: window 平台, 所有 bat 文件plan9 平台,所有 rc 文件unix 类平台,所有bash 文件 以 unix 编译文件为例, go 的编译入口时在 src/all.bash , 这是一个bash 脚步, 这个脚步只是简单的调用了 make.bash 在脚步结束之后,调用 dist banner 输出编译的信息。 set -e if [ ! -f make.bash ]; then echo 'all.bash must be run from $GOROOT/src' 1>&2 exit 1 fi...阅读全文

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