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

golang学习笔记

与c语法不同之处: 1. 参数列表中各个参数类型相同时可以只写出最后一个,如:add(x, y int) int { return x +y } 2. 类型在参数名(变量/函数)后面 3. 函数的左大括号要跟函数名同一行,否则编译不过 4. 函数定义要先写关键字func在函数开头(函数外的每个语句都要以func、var等等关键字开头) 5. 在包或者函数级别声明变量时要用var语句 6. 函数支持多值返回,如:func swap(x, y string) (string, string) { return y,x } 7. 函数支持命名返回值,如func split(x int) (x, y int) { ... return} 8. 初始化使用表达式时可以不用写类型,由初始值推导出类型 9...阅读全文

博文 2016-08-12 22:00:09 qq_32746725

Go 程序的性能调试问题 - 内存篇

标签(空格分隔): Go Memory Profiler 性能调试 性能分析 注:该文作者是 Dmitry Vyukov,原文地址 Debugging performance issues in Go programs 这个是原文中的 Memory Profiler 段落 内存分析器显示了函数分配堆内存的情况。你可以以 CPU profile 相似的方式收集:使用 go test --memprofile,通过 http://myserver:6060:/debug/pprof/heap 使用 net/http/pprof 或是通过调用 runtime/pprof.WriteHeapProfile。 你仅可以显示在概要文件收集的时间分配的内存(默认,pprof 的 --inuse_space...阅读全文

博文 2017-02-09 13:42:05 yexiaobai

go语言的new和make

http://1.guotie.sinaapp.com/?p=407 golang的new和make主要区别如下: 1、make只能用来分配及初始化类型为slice,map,chan的数据;new可以分配任意类型的数据 2、new分配返回的是指针,即类型*T;make返回引用,即T; 3、new分配的空间被清零,make分配后,会进行初始化。effective go举了一个例子,见:http://golang.org/doc/effective_go.html#allocation_make 对于struct的分配和初始化,除了可以使用new外,还可以这样做: T {},例如 func TestAlloc(t *testing.T) { type T struct { n string i ...阅读全文

博文 2015-06-17 20:11:35 leonpengweicn

Go语言_反射篇

Go语言的基本语法的使用已经在前几篇陆陆续续学完了,下面可能想写一些Go的标准库的使用了。 先是reflect库。 reflect库的godoc在http://golang.org/pkg/reflect/ Type和Value 首先,reflect包有两个数据类型我们必须知道,一个是Type,一个是Value。 Type就是定义的类型的一个数据类型,Value是值的类型 具体的Type和Value里面包含的方法就要看文档了: http://golang.org/pkg/reflect/ 这里我写了个程序来理解Type和Value: package main import( "fmt" "reflect" ) type MyStruct struct{ name string } func ...阅读全文

博文 2016-07-11 02:00:07 yjf512

Web Tier to Go With Java EE 5: Summary of New Features in JSP 2.1 Technology

By Pierre Delisle and Jennifer Ball, February 2006 The main theme for the Java Platform, Enterprise Edition (Java EE) 5 is ease of development. The platform's web tier contributes significantly to ease of development in two ways. First, the platform now includes the Java Standard Tag Library (JSTL) and JavaServer Faces technology. Second, all the w...阅读全文

博文 2015-12-23 03:00:00 narci

golang http server 探究(下)

在上一篇里面我们通过: func main() { http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "hello") }) http.ListenAndServe(":9010", nil) } 分析了 http.handleFunc 的路由调用之间的关系。这次。我们分析一下 http.ListenAndServe(): http.ListenAndServe(addr string, handler Handler) 函数的内部实现: func ListenAndServe(addr string, handler Handler) error { serv...阅读全文

博文 2016-08-30 13:00:06 Tudo

Go1.7做一了一个简单的远程目录比较工具

package main import ( "bufio" "bytes" "flag" "fmt" "io" "log" "net/http" "os" "path/filepath" "strings" "github.com/czxichen/AutoWork/tools/md5" "github.com/czxichen/AutoWork/tools/split" ) var ( raddr, laddr string sdir, ddir, exclude string passName []string result string = "result/" ) func init() { flag.StringVar(&ddir, "d", "", "-d 指定要匹配的目录") f...阅读全文

博文 2016-09-14 11:00:00 fyxichen

1.Golang开发环境搭建

安装golang语言 下载golang安装包下载地址:https://golang.org/dl/,请下载合适版本 我下载的是windows的版本,默认目录安装为C:\Go 设置环境变量path,将C:\Go\bin加入环境变量 设置环境变量GOPATH,该变量为自定义,我设置为:d:\godev,在里面手动创建src目录,结构如下 src放置源码的地方,pkg是我们编译后的包存放的位置,bin是编译后的可执行文档执行目录,这个后面我们就会明白 开发工具 开发工具选择sublime 安装sublime text 2 :开发工具选择sublime2,下载地址:http://www.sublimetext.com/2 安装包管理工具 Package Control: 打开sublime2,按快捷...阅读全文

开始学习 Go

刚才按照 Go 官方网站的安装文档安好了 Go。顺带写了个 "Hello World" 。 刚才看了 “Go 三天教程”的第一篇,非常有意思的语言,目前对这门语言的语感可以用“简约、洒脱”来形容。 顺便浏览了一下 Go 的官方包(库),发现其中包含了 html、http、template、rpc、json、websocket、crypto、等等 Web 相关包,做 Web 应用绝对给力,而且很前沿啊(支持 HTML5)。 明天正式开始学习这门新语言 :-) 本文是使用 B3log Solo 从 简约设计の艺术 进行同步发布的原文地址:http://88250.b3log.org/articles/2010/11/18/1290099452140.htm...阅读全文

博文 2015-06-17 20:05:55 DL88250

go语言必读经典汇集

http://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/ http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/ http://colobu.com/2015/09/07/gotchas-and-common-mistakes-in-go-golang/#%E5%9C%A8Slice,_Array,_and_Map_ https://www.ruk.si/notes/go/go_guide https://gobyexample.com/ https://github.com/golang/go/wiki/Learn...阅读全文

博文 2016-09-14 09:00:01 htyu_0203_39

【翻译】go是面向对象语言吗?

文:http://spf13.com/post/is-go-object-oriented 前言 为了真正理解面向对象的含义,我们需要回顾一下这个概念的起源。第一个面向对象语言-simula问世于19世纪60年代。它引入了对象(object)、类(class)、继承(inheritance)、子类(subclass)、虚方法(virtual method)、协程(coroutine)等概念。然而simula最重要的贡献可能是它引入颠覆性的思想——将数据和逻辑完全分离。 你可能不熟悉simula语言,但你肯定熟悉Java, C++, C# & Smalltalk中的一种,这些语言深受simula的影响,当然这些语言又同时影响着现今几乎所有的高级语言如:Objective C, Python, ...阅读全文

博文 2017-02-09 13:42:46 MrRightLeft_秦磊

【GO for java programmers】面向Java开发者的GO编程2

英文原文在此www.nada.kth.se/~snilsson/go_for_java_programmers 译文同步至http://blog.csdn.net/kkkloveyou/article/details/8308534 http://bbs.gocn.im/thread-73-1-1.html ====================接上文,以下正文========================. 条件语句 Go在条件语句中并不使用括号,像 if条件语句 , for 条件语句的表达式, switch 条件语句的值. 另一方面,它并不需要在if或 for条件语句中加花括号 if a < b { f() } if (a < b) { f() } // 括号是不必要的. if (a...阅读全文

博文 2015-06-17 23:08:23 kkkloveyou

Duang~ Golang 学习初探

Duang~ Golang学习初步体验,一直以来都对Go语言有一定的喜感,今天花了点时间初步的了解了下Go,其实很多东西弄个小例子go run下会明白很多东西的。 本人开发工具使用的是GoSublime 即在Sublime Text 2中安装此插件即可 运行Go 程序 请按 ctrl+b 接着输入 go run 文件名.go 即可查看结果 下面是一些基础的golang的demo package main import ( "fmt" ) const ( PI = 3.14 ) func mains(a int) int { fmt.Print(h1(1212)) return a } func h1(b int) int { return b } func main() { var b in...阅读全文

博文 2015-06-17 20:03:04 wyh09102010

Go小tip

code.google.com上有一些分支 有的是还没合并到default上的函数功能 比如net/websocket http://code.google.com/p/go/source/browse?repo=net#hg%2Fwebsocket 这些库可用性都很高,很适合直接使用 如何为go添加补丁 http://golang.org/doc/contribute.html Cmd的三个运行: func(*Cmd)Start func(*Cmd)Run func(*Cmd)Wait Start:运行不等待进程结束 Run:运行等待进程结束 Wait:等待进程结束 就是说Run = Start + Wait Cmd中的属性: Process:一旦Start开始了,Process就可以使用...阅读全文

博文 2015-06-17 20:06:13 dyllove98

Go 语言中的 new() 和 make() 的区别

http://se77en.cc/2014/04/25/the-difference-between-function-new-and-make-in-golang/ 概述 Go 语言中的 new 和 make 一直是新手比较容易混淆的东西,咋一看很相似。不过解释两者之间的不同也非常容易。 new 的主要特性 首先 new 是内建函数,你可以从 http://golang.org/pkg/builtin/#new 这儿看到它,它的定义也很简单: 1 func new(Type) *Type 官方文档对于它的描述是: 内建函数 new 用来分配内存,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配类型零值的指针 根据这段描述,我们可以自己实现一个类似 new 的功能: 1 2 ...阅读全文

博文 2015-06-17 20:05:24 leonpengweicn

Tinify API client for Golang——tinify-go

前言 Tinify是一个提供图片compress、resize 服务的网站,在肉眼看不失真的基础上能够极大的压缩图片文件大小,具体介绍可以看他们的官网 https://tinify.com。 Tinify官方提供了很多语言的SDK,但是并没有Golang的。前几天写了一篇文章 Golang + Tinypng实现图片压缩,里面谈到了Golang使用Tinify官方提供的 HTTP API client 实现compress的一些想法,但是毕竟简单,所以工作之余在官方 HTTP API client的基础上模仿官方其他语言的实现,使用Golang实现了一个Golang版本的 Tinify API client——tinify-go。 Github https://github.com/gwpp...阅读全文

博文 2017-06-13 06:07:01 gwpp

Go:git gofmt pre-commit hook

我们使用 git 做 Go 源码的版本控制,在提交前,我们需要对代码自动格式,并且当未格式的时候,输出一些信息,下面是一个这样的脚本: 注:该脚本来源于:http://golang.org/misc/git/pre-commit 关于介绍清理 Go 代码的小文章:An Introduction to Go Tools and Clean Code #!/bin/sh # Copyright 2012 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. # git gof...阅读全文

博文 2017-02-09 13:41:46 yexiaobai

Go语言解析JSON

载: http://www.cnblogs.com/ycyoes/p/5398796.html 注意当解析到结构体的时候,结构体名、成员名字首字母一定要大写 这是容易犯的错误。 搞不懂为什么这东西要大写。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

    ').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ...阅读全文

博文 2016-04-20 16:00:01 Jesounao

Golang测试技术

本篇文章内容来源于Golang核心开发组成员Andrew Gerrand在Google I/O 2014的一次主题分享“Testing Techniques”,即介绍使用Golang开发 时会使用到的测试技术(主要针对单元测试),包括基本技术、高级技术(并发测试、mock/fake、竞争条件测试、并发测试、内/外部测 试、vet工具等)等,感觉总结的很全面,这里整理记录下来,希望能给大家带来帮助。原Slide访问需要自己搭梯子。另外这里也要吐槽一 下:Golang官方站的slide都是以一种特有的golang artical的格式放出的(用这个工具http://go-talks.appspot.com/可以在线观看),没法像pdf那样下载,在国内使用和传播极其不便。 一、基础测试技术 1、测...阅读全文

博文 2015-06-17 20:00:10 sunnyql

Golang测试技术

一、基础测试技术 1、测试Go代码 Go语言内置测试框架。 内置的测试框架通过testing包以及go test命令来提供测试功能。 下面是一个完整的测试strings.Index函数的完整测试文件: //strings_test.go (这里样例代码放入strings_test.go文件中) package strings_test import ( "strings" "testing" ) func TestIndex(t *testing.T) { const s, sep, want = "chicken", "ken", 4 got := strings.Index(s, sep) if got != want { t.Errorf("Index(%q,%q) = %v; wan...阅读全文

博文 2016-08-04 20:00:10 平凡之路

golang爬坑:操作Linux命令

通常在启动项目服务程序的时候,需要判断该服务是否已经被启动,一般的做法有两种,其一是每次启动后将pid写入文件中,启动的时候读取这个文件,如果里面有数值,就表示服务已启动;另一种是通过shell命令查找: ps -ef | grep XXX | grep -v grep | awk '{print $2}' 很多语言都可以直接执行这行命令;偏偏go语言不行,因此,我们可以利用go中提供的一些方法实现它(不说了,直接上代码): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ...阅读全文

博文 2016-10-15 17:00:02 jiayouzl

Go文件操作

读取文件中的内容 假设你想获取文件中感兴趣的内容,但是,你不希望获取所有内容。假设文件的内容如下所示: 1. 网页视觉设计理论之少些质感,多些版式. http://www.ynetx.com/theory/560-1.html 2. 设计理论: http://www.ynetx.com/design/theory/ 3.Google的新设计理念Material Design http://www.infoq.com/cn/news/2014/07/google-material-design-android/ 你只想获取http开头的行内容。实现代码如下: line, err := reader.ReadString('\n') // skip all line starting witho...阅读全文

博文 2016-03-23 16:00:06 GreatElite

Golang-interface(二 接口与nil)

github: https://github.com/ZhangzheBJUT/blog/blob/master/nil.md 一 接口与nil 前面讲解了go语言中接口的基本使用方法,下面将说一说nil在接口中的使用。 从上面一节我们知道在底层,interface作为两个成员实现:一个类型和一个值。该值被称为接口的动态值, 它是一个任意的具体值,而该接口的类型则为该值的类型。对于 int 值3, 一个接口值示意性地包含(int, 3)。 只有在内部值和类型都未设置时(nil, nil),一个接口的值才为 nil。特别是,一个 nil 接口将总是拥有一个 nil 类型。若我们在一个接口值中存储一个 int 类型的指针,则内部类型将为 int,无论该指针的值是什么,这样的接口值会是非 nil ...阅读全文

博文 2015-06-17 20:02:15 Crazy__Programmer

go语言必读经典汇集

http://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/ http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/ http://colobu.com/2015/09/07/gotchas-and-common-mistakes-in-go-golang/#%E5%9C%A8Slice,_Array,_and_Map_ https://www.ruk.si/notes/go/go_guide https://gobyexample.com/ https://github.com/golang/go/wiki/Learn...阅读全文

博文 2016-08-30 00:00:00 htyu_0203_39

把别人的Tcl/Tk代码加入到Go语言里9 游戏2 可旋转的3D多面体

a 首先打开网页 http://wiki.tcl.tk/14283 【3D polyhedra with simple tk canvas Updated 2014-10-24 21:38:58 by ZB 】 b 把网页里提到的tcl/tk代码复制到如下go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 在LiteIDE里或命令行里go run go代码文件,运行效果如...阅读全文

博文 2015-05-13 08:00:00 名字不能长

go 语言实现一个简单的 web 服务器

学习Go语言的一些感受,不一定准确。 假如发生战争,JAVA一般都是充当航母战斗群的角色。 一旦出动,就是护卫舰、巡洋舰、航母舰载机、预警机、电子战飞机、潜艇等等 浩浩荡荡,杀将过去。 (JVM,数十个JAR包,Tomcat中间件,SSH框架,各种配置文件...天生就是重量级的,专为大规模作战) 而GO语言更像F35战斗轰炸机 单枪匹马,悄无声息,投下炸弹然后走人。 专属轰炸机,空战也会一点点. 实在搞不定,就叫它大哥F22。 (GO是编译型语言,不需要依赖,不需要虚拟机,可以调用C代码并且它足够简单,却非常全面) 计划Go语言学习的知识点 1.搭建Http服务 2.连接数据库 3.本地IO 4.多线程 5.网络 6.调用本地命令 7.调用C语言代码 首先,搭建一个静态的服务器 我写程序喜欢...阅读全文

博文 2016-09-08 09:00:03 u013378306

Golang Http Server源码阅读

这篇文章出现的理由是业务上需要创建一个Web Server。创建web是所有语言出现必须实现的功能之一了。在nginx+fastcgi+php广为使用的今天,这里我们不妨使用Go来进行web服务器的搭建。 前言 使用Go搭建Web服务器的包有很多,大致有下面几种方法,直接使用net包,使用net.http包,使用第三方包(比如gorilla)。使用net包就需要从tcp层开始封装,耗费人力物力极大,果断舍弃。直接使用封装好的net.http和第三方包才是上策。这里我们就选择了使用官方提供的net.http包来搭建web服务。另外附带一句,gorilla的第三方包现在使用还是非常广的,文档也是比较全的,有兴趣的同学可以考虑使用一下。 建议看这篇文章前先看一下net/http文档 http://...阅读全文

博文 2016-02-06 21:00:02 Mirage520

Go语言之环境搭建

1、下载Sublime Text 3 连接:http://www.sublimetext.com/3 2、下载Go语言环境包 访问http://www.golangtc.com/download 选择你需要的版本 我现在用的是1.5rc1选择Windows下的安装包 在这里建议选择.zip开始的不建议直接安装 下载后进行解压放到我的电脑下的G盘活着其它的不要出现中文目录(你懂得)。如图将Go文件拷贝至:G盘根目录 3、然后我们创建Go文件的存放的目录就是以后你项目所在的目录 比如我们在本地磁盘G盘下创建一个goproject文件夹这个就是用来存放Go文件的目录 然后我们在goproject文件夹紧接着创建三个文件 bin、Package、src 为什么要创建这三个文件夹呢? 因为在Go的环境...阅读全文

博文 2016-08-30 18:00:03 laokdidiao

如何为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-10 14:00:02 linuxprobe

Golang适合高并发场景的原因分析

典型的两个现实案例: 我们先看两个用Go做消息推送的案例实际处理能力。 360消息推送的数据: 16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 单机80万并发连接,load 0.2~0.4,CPU 总使用率 7%~10%,内存占用20GB (res) 目前接入的产品约1280万在线用户 2分钟一次GC,停顿2秒 (1.0.3 的 GC 不给力,直接升级到 tip,再次吃螃蟹) 15亿个心跳包/天,占大多数。 京东云消息推送系统 (团队人数:4) 单机并发tcp连接数峰值118w 内存占用23G(Res) Load 0.7左右 心跳包 4k/s gc时间2-3.x s C10K问题 为什么可以支撑这么高并发的请求呢?我们先从C10K问题说起...阅读全文

博文 2015-06-17 20:04:30 orangesdk

go 1

eclipse plugin url : http://goclipse.github.io/releases/ 1. recive post json data func UserCreate(w http.ResponseWriter, r *http.Request) { result, err := ioutil.ReadAll(r.Body) r.Body.Close() if err != nil { log.Fatal(err) } fmt.Printf("%s", result) var u User json.Unmarshal([]byte(result), &u) fmt.Println(u) ...阅读全文

博文 2016-08-18 23:00:01 anjuncc

go study second

go 内部实现了http协议,下面一段代码简洁的实现了一个webserver, 很精彩,后续有机会深入挖掘 package main import ( "fmt" "net/http" ) type Hello struct{} func (h Hello) ServeHTTP( w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello!") } func main() { var h Hello http.ListenAndServe("localhost:4000",h) } 访问http://localhost:4000 就可以看到一个hello!的消...阅读全文

博文 2016-03-07 09:00:00 ShiningStarPxx

为 Java 程序员准备的 Go 入门 PPT

这是 Google 的 Go 团队技术主管经理 Sameer Ajmani 分享的 PPT,为 Java 程序员快速入门 Go 而准备的。 视频 这个 PPT 是 2015年4月23日在 NYJavaSIG 中使用的。 前往 YouTube 观看视频 主要内容 1. Go 是什么,谁在使用 Go? 2. 比较 Go 和 Java 3. 代码示例 4. 并发 5. 工具 Go 是什么? “Go 是开源的编程语言,可以很简单的构建简单,可靠和高效的软件。” golang.org Go 的历史 从 2007 后半年开始设计 Robert Griesemer, Rob Pike 和 Ken Thompson.Ian Lance Taylor 和 Russ Cox 从 2009 年开始开源,有一个非常...阅读全文

博文 2016-04-10 17:00:04 maodoudou1217

Go语言之环境搭建

1、下载Sublime Text 3 连接:http://www.sublimetext.com/3 2、下载Go语言环境包 访问http://www.golangtc.com/download 选择你需要的版本 我现在用的是1.5rc1选择Windows下的安装包 在这里建议选择.zip开始的不建议直接安装 下载后进行解压放到我的电脑下的G盘活着其它的不要出现中文目录(你懂得)。如图将Go文件拷贝至:G盘根目录 3、然后我们创建Go文件的存放的目录就是以后你项目所在的目录 比如我们在本地磁盘G盘下创建一个goproject文件夹这个就是用来存放Go文件的目录 然后我们在goproject文件夹紧接着创建三个文件 bin、Package、src 为什么要创建这三个文件夹呢? 因为在Go的环境...阅读全文

博文 2016-09-22 02:00:01 laokdidiao

https原理以及golang基本实现

关于https 背景知识 密码学的一些基本知识 大致上分为两类,基于key的加密算法与不基于key的加密算法。现在的算法基本都是基于key的,key就以一串随机数数,更换了key之后,算法还可以继续使用。 基于key的加密算法又分为两类,对称加密和不对称加密,比如DES,AES那种的,通信双方一方用key加密之后,另一方用相同的key进行反向的运算就可以解密。 不对称加密比较著名的就是RSA,加密的时候有一个公钥和一个私钥,公钥是可以交给对方的,a给b发送信息,a用自己的私钥加密,b用a的公钥解密,反之,b给a发送信息,b用自己的私钥加密。 在通信之前,需要经过一些握手的过程,双方交换公钥,这个就是key exchange的过程,https最开始的阶段就包含了这个key exchange的过...阅读全文

博文 2017-02-10 12:23:49 谢权

Golang Web编程的Get和Post请求发送与解析

本文的是一篇入门文章,通过一个简单的例子介绍Golang的Web编程主要用到的技术。 文章结构包括: Client-Get 请求 Client-Post 请求 Server 处理 Get 和 Post 数据 在数据的封装中,我们部分采用了json,因而本文也涉及到Golang中json的编码和解码。 一、Client-Get package main import ( "fmt" "net/url" "net/http" "io/ioutil" "log" ) func main() { u, _ := url.Parse("http://localhost:9001/xiaoyue") q := u.Query() q.Set("username", "user") q.Set("pass...阅读全文

博文 2015-06-17 20:02:27 typ2004

在CentOS7上用Supervisor运行Golang守护进程

安装pip 下载pip安装文件并执行安装 下载文件[root@snails ~]# wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 执行安装[root@snails ~]# python get-pip.py [root@snails ~]# pip -V pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7) 设置pip国内aliyun源 创建或修改配置文件linux ~/.pip/pip.conf windows %HOMEPATH%\pip\pip.ini 修改内容 [global] index-url = http://mirrors.a...阅读全文

博文 2017-02-10 15:52:18 技术学习

WebSocket 和 Golang 实现聊天功能

这个示例应用程序展示了如何使用 WebSocket, Golang 和 jQuery 创建一个简单的web聊天应用程序。这个示例的源代码在 https://github.com/waylau/goChat 。 Running the example 运行示例 这个示例需要 Golang 开发环境。 该页面描述如何安装开发环境。 一旦你去启动和运行,您可以下载、构建和运行的例子, 使用命令: go get gary.burd.info/go-websocket-chat go-websocket-chat 在支持 websocket 的浏览器尝试打开 http://127.0.0.1:8080/ 启动应用 Server 服务器 服务器程序实现了 http 包,包含了 Go 分发和 Gorill...阅读全文

博文 2017-02-10 13:51:27 waylau

supervisor用为golang后台创建守护进程

supervisor是一个unix的系统进程管理软件,可以用它来管理apache、nginx等服务,若服务挂了可以让它们自动重启。下面基于centos 6.6,描述下具体实现:sudo yum install python-setuptools sudo easy_install supervisor如果没有看到什么报错,那么就安装成功了,可以使用echo_supervisord_conf查看配置详情,而后生成配置文件。sudo echo_supervisord_conf > /etc/supervisord.conf假设如下一段简单的golang代码:package main import ( "fmt" "log" "net/http") func main() { http.Handl...阅读全文

博文 2017-02-09 17:24:01 ponpon_

编写可测试的Go代码

文链接:http://tabalt.net/blog/golang... Golang作为一门标榜工程化的语言,提供了非常简便、实用的编写单元测试的能力。本文通过Golang源码包中的用法,来学习在实际项目中如何编写可测试的Go代码。 第一个测试 “Hello Test!” 首先,在我们$GOPATH/src目录下创建hello目录,作为本文涉及到的所有示例代码的根目录。 然后,新建名为hello.go的文件,定义一个函数hello(),功能是返回一个由若干单词拼接成句子: package hello func hello() string { words := []string{"hello", "func", "in", "package", "hello"} wl := len(wor...阅读全文

博文 2017-02-10 10:30:09 tabalt

学习Golang语言(1)

想了很久准备学习一门新的语言,纠结了很久,最后选择了go语言。今天开始进入go语言的学习。 1、下载go http://www.golangtc.com/download 2、下载liteide http://www.golangtc.com/download/liteide 3、开始编程 学习任何编程语言的第一个程序都是Hello world。在GOPATH目录下建立hello.go文件,输入下面内容。 package main import "fmt" //引入fmt库 func main() { fmt.Println("Hello World!") } 逐行分析这段程序: 第一行是必须的。所有go语言编写的文件都以package <*>开头,对于独立运行的执行文件必须是 packag...阅读全文

博文 2015-06-17 23:08:17 lz0426001

笔记1-Go语言之HelloWorld

Go语言的几个版本下载地址:http://www.oschina.net/news/40111/go-1-1-rc1 (1)windows下安装Go,下载好对应的Go版本后如go1.1rc1.windows-386.zip,解压到C盘中把解压文件夹里的Go放在C盘初始目录如c:\Go (2)设置环境变量(xp3) 在我的电脑属性->高级->环境变量->在path中添加c:\Go\bin (3)打开cmd,进入编辑好的go文件,如test.go package main import "fmt" func main() { fmt.Println("Hello, playground") } (4)执行go build test.go会生成test.exe文件 (5)执行test会打印出Hel...阅读全文

博文 2015-06-17 23:00:35 ustc_max

54.蛤蟆笔记go语言——interface使用

54.蛤蟆笔记go语言——interface使用 Go语言中使用interface是比较困难的。使用基本比较简单,但是设计自己的interface就比较困难了。所以如何高效使用interface很有必要。 什么是interface 一个interface包含两个东西:一组方法(也是类型),或类型。 例如一个animal 类型可以是一个接口。可以定义animal为任何可以说话的。 type Animal interface { Speak() string } 这样定义了animal,可以是任何包含speak方法的类型。 Speak没有任何参数,返回一个字符串。任何定义了该方法的类型都满足animal接口。 没有关键字来指定类型是否满足接口,这个是自动实现的。创建一对类型来满足这个接口。 ty...阅读全文

博文 2016-09-15 18:00:01 notbaron

TODO:Golang语言TCP/UDP协议重用地址端口

TODO:Golang语言TCP/UDP协议重用地址端口这是一个简单的包来解决重用地址的问题。 go net包(据我所知)不允许设置套接字选项。 这在尝试进行TCP NAT时尤其成问题,其需要在同一TCP端口上进行侦听和拨号的过程。 这个包使我有可能实现这个功能。 这是一个非常小众的用例,但也许这个软件包可以随着时间的推移变得更普遍。此包允许从同一TCP端口侦听和拨号;不能使用同一UDP端口监听,但可以监听同一UDP端口。 这意味着设置了以下sockopts:syscall.SO_REUSEADDRsyscall.SO_REUSEPORT例子:// listen on the same port.l1, _ := reuse.Listen(“tcp”, “127.0.0.1:1234”)l2...阅读全文

博文 2017-02-10 10:20:54 OneTODO

Golang性能优化

> 文章主要是参考**雨痕学堂(微信订阅号)**及其他网友的博客然后根据自己的理解整理而成。 ## string与[]byte相互转换 在写程序的过程中经常遇到string与[]byte的相互转换,但是这种转换是有代价的,string与[]byte并不共享底层内存空间,所以每次转换都伴随着内存的分配与底层字节的拷贝。 我们可以借助unsafe完成指针类型转换,避开内存分配与复制,从而提升性能。**属于黑魔法,尽量不要用。** ```go /* struct string{ uint8 *str; int len; } struct []uint8{ uint8 *array; int len; int cap; } uintptr是golang的内置类型,是能存储指针的整型,uintptr的...阅读全文

博文 2017-02-09 20:02:10 shanks

开源了一个简单的http服务压测工具Alex,自带web ui,golang实现

Alex Alex是基于vegeta library和boom封装的压力测试web UI。Vegeta提供稳定的qps压力源,boom提供稳定的并发数压力源。github地址 https://github.com/ireaderlab/alexEnglish Alex架构图 Alex 主要功能 保存压力测试参数以便反复压测 保存压力测试报告以便后续查看和分享 提供了简单直接的图形和文字报告 可以同时对多个http接口进行压力测试 可以同时对集群内多个host:port对进行压测 使用多组调用参数避免压测时出现的数据热点问题 使用步骤设置,生成渐进式的压力源 提供简单的压测机器系统状态实时显示功能 Alex Limitations Alex运行在单一进程里,如果你需要分布式的压测环境,就得部署...阅读全文

博文 2017-02-09 08:21:19 大阳照常升起

go语言接口使用

http://blog.csdn.net/love_se/article/details/7947440 下面为大家带来go语言三种接口使用模式,代码基于go1.0.2版本 第一种: [java] view plaincopyprint? package main import "fmt" type Writer interface { Write(data []byte) (int, error) } type writerImpl struct { } func (w *writerImpl) Write(data []byte) (int, error) { return len(data), nil } type Worker struct { Writer } func main(...阅读全文

博文 2015-06-17 23:01:31 ywh147

Go如何使得Web工作

web工作方式的几个概念 以下均是服务器端的几个概念 Request:用户请求的信息,用来解析用户的请求信息,包括post、get、cookie、url等信息 Response:服务器需要反馈给客户端的信息 Conn:用户的每次请求链接 Handler:处理请求和生成返回信息的处理逻辑 分析http包运行机制 如下图所示,是Go实现Web服务的工作模式的流程图 图3.9 http包执行流程 创建Listen Socket, 监听指定的端口, 等待客户端请求到来。 Listen Socket接受客户端的请求, 得到Client Socket, 接下来通过Client Socket与客户端通信。 处理客户端的请求, 首先从Client Socket读取HTTP请求的协议头, 如果是POST方法,...阅读全文

博文 2016-08-18 23:00:05 chenxun2009

go语言的安装和配置,以及包引用

1.下载和安装 首先大家可以去官网下载 http://golang.org/dl/ 如果官网你看不懂的话,可以到这里下载: http://golangtc.com/download ,这里也提供了百度云的下载地址: 如果下载msi文件还需要进一步安装,安装过程也非常简单; 如果下载zip文件,直接解压了就可以用了。 2.配置 打开环境变量 然后, 紧接着编辑Path 打开cmd命令行,输入:go 如果显示 就表示成功了。 然后就可以编程了,咱们来写个“Hello world”: 我用的是Sublime Text 编译器, 然后运行: 或者 很好,我们成功的输出了Hello world! 3.包引用(下面内容来源于:http://www.cnblogs.com/sunshiming/p/492...阅读全文

博文 2016-10-05 03:00:02 sangjinchao