golang http.handler接口详解

golang http.handler接口详解 1.标准库接口定义 package http type Handler interface { ServeHTTP(w ResponseWriter, r *Request) } func ListenAndServe(address string, h Handler) error ListenAndServe函数需要一个例如“localhost:8000”的服务器地址,和一个处理所有请求的Handler接口实例。它会一直运行,直到这个服务因为一...阅读全文

2016-06-01 15:53 secretx
阅读:4371 评论:0

极路由1s(mt7620a)OpenWrt交叉编译go程序

起因,由于coolpy5核心转换到go语言开发,所以目前超人正在进行相关的技术攻关,在程序编写方面一切都相对顺利。由于coolpy5是一个真正的商业级性能的系统也考滤到coolpy之前的版本已经确定的coolpy是支持以家庭路由器为雾计算节点直接实现智能家居或智慧农业的离线解决方案,所以超人才进行了这一次技术预测试,也为以后coolpy这环节的闭环作准备工作。以下文章关于openwrt相关的基础将会略过,看不懂的朋友请自行查找相关知识点。 略过知识点: 1.linux基础(交叉编译基础) 2.o...阅读全文

2016-06-16 12:30 jacle169
阅读:9681 评论:4

golang 单元测试、性能测试、性能监控技术

golang 单元测试、性能测试、性能监控技术 go语言提供了强大的测试工具,下面举例简单介绍一下 go test 单元测试 go test -bench=. 性能测试 go tool pprof 性能监控 go test 单元测试 例如对包helper下的util.go 进行单元测试,util.go 里主要包含两个功能,一个是对字符串进行sha1加密,一个是验证手机号码 编写测试文件 如果我们要测试验证手机号码功能是否正确,我们可以在该包下新建util_test.go文件,一般命名方式为 _t...阅读全文

2016-06-12 10:35 hil2000
阅读:1233 评论:0

基本排序算法Golang

摘要 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 冒泡排序 1 func BubbleSort(vector []int) { 2 fmt.Println("BubbleSort") 3 fmt.Println(vector) 4 for i := 0; i < len(vector); i++ { 5 tag := true // 为了剪枝 6 // 每一趟将最大的数冒泡 7 for j :...阅读全文

阅读:1015 评论:0

Beego源码分析(转)

摘要 beego 是 @astaxie 开发的重量级Go语言Web框架。它有标准的MVC模式,完善的功能模块,和优异的调试和开发模式等特点。并且beego在国内企业用户较多,社区发达和Q群,文档齐全,特别是 @astaxie 本人对bug和issue等回复和代码修复很快,非常敬业。beego框架本身模块众多,无法简单描述所有的功能。我简单阅读了源码,记录一下beego执行过程。官方文档已经图示了beego执行过程图,而我会比较详细的解释beego的源码实现。 beego 是 @astaxie 开...阅读全文

2016-07-02 14:24 rainbowzc
阅读:1211 评论:0

go语言原生http库分析(1)

构建一个HTTP服务器的简单例子 package main import ( "net/http" ) func SayHello(w http.ResponseWriter, req *http.Request) { w.Write([]byte("Hello")) } func main() { http.HandleFunc("/hello", SayHello) http.ListenAndServe(":8001", nil) } 当我们访问 地址IP:8001/hello 就会得到“...阅读全文

2016-07-03 23:36 idwtwt
阅读:2135 评论:0

Go的pprof使用

go中有pprof包来做代码的性能监控,在两个地方有包: net/http/pprof runtime/pprof 其实net/http/pprof中只是使用runtime/pprof包来进行封装了一下,并在http端口上暴露出来 pprof包 web 服务器 如果你的go程序是用http包启动的web服务器,你想查看自己的web服务器的状态。这个时候就可以选择net/http/pprof。你只需要引入包_"net/http/pprof", 然后就可以在浏览器中使用http://localhos...阅读全文

2016-07-04 09:33 davygeek
阅读:1039 评论:0

golang时间正反格式化

在工作中遇到要将时间格式化,就整理了下时间正反格式化: //当前时间戳 fmt.Println(time.Now().Unix()) //当前时间戳格式化 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) //时间戳格式化 str_time := time.Unix(1389058332, 0).Format("2006-01-02 15:04:05") fmt.Println(str_time) //时间反格式化成时间戳(月份必须是mo...阅读全文

2016-07-04 13:38 weidao
阅读:2148 评论:0

控制阵列 Golang 的增长

如果你是Golang 新手,并对它的数组(切片)不太了解,你可能想从这里开始this introduction。 如今,当我们谈论数组时,开发者可能会谈论数组的两种行为之一:一种是静态的(或称为固定数组),另一种是动态的。静态数组的固定长度在定义的时候被初始化完成。动态数组(一般地)用一个静态数组定义,但是当需要的时候,能够增长其长度。那么这是如何实现呢?当你要在动态数组中添加一项条目时,如果数组下面的固定长度已经满了,它会创建一个更大的数组并且将数据拷并到并覆盖更大的数组中。这种增长和拷贝可能...阅读全文

阅读:779 评论:0

gogs详细配置

sudo apt-get update sudo apt-get upgrade sudo adduser git //创建用户 密码 ******* su git//切换到git用户 cd ~ //进入用户git根目录 sudo apt-get install git //安装git git --version //检查git是否安装成功 sudo apt-get install mysql-server //安装mysql数据库 账户:root 密码:******** mysql --ver...阅读全文

2016-08-21 23:44 chinajava
阅读:1182 评论:1

Go的50度灰:开发者要注意的陷阱和常见错误

Go是一门简单有趣的语言,但与其他语言类似,它会有一些技巧。。。这些技巧的绝大部分并不是Go的缺陷造成的。如果你以前使用的是其他语言,那么这其中的有些错误就是很自然的陷阱。其它的是由错误的假设和缺少细节造成的。 如果你花时间学习这门语言,阅读官方说明、wiki、邮件列表讨论、大量的优秀博文和Rob Pike的展示,以及源代码,这些技巧中的绝大多数都是显而易见的。尽管不是每个人都是以这种方式开始学习的,但也没关系。如果你是Go语言新人,那么这里的信息将会节约你大量的调试代码的时间。 初级 开大括号...阅读全文

2016-08-22 11:56 borey
阅读:651 评论:2

Go语言基础:make,new, len, cap, append, delete方法

前面提到不少go的内建函数,这篇文章学习下如何使用。。 make 先拿 make 开刀,可是一开始我就进入了误区,因为我想先找到他的源码,先是发现 src/builtin/builtin.go 中有 func make(Type, size IntegerType) Type ,可是这里只有两个参数,跟我所了解的 make 是个可变参数不太一样,于是我继续搜索源码包是否还有其它 make 函数原型的声明,但都是徒劳。 于是找度娘,一点信息都没有。还是 google 吧,找了一堆的英文解释,发现两...阅读全文

阅读:3607 评论:0

[独家] Go1.8大幅改进了海量对象的GC性能(不同语言的横向对比)

 众所周知,Go1.7版本及之前的版本都是针对高并发下的系统吞吐进行优化,对海量对象存储时的优化力度并不够。下个版本就是1.8了,那么1.8会给我们带来这种惊喜吗?请继续往下看。 本次benchmark使用多语言实现,测量的是一个web服务,该服务通过一个大型的hashtable存储了250K个对象。 该服务还满足了下述3个前提条件: 1.每次http请求都会添加一个新对象,并且在对象数大于250K时移除一个旧的 2.每一个对象都是1KB大小的[]byte类型,并且进行了初始化 3.程序监听8...阅读全文

2016-09-18 10:16 abv123456789
阅读:1933 评论:0

谈谈一些关于mgo的用法

前言 最近在项目中使用mongodb进行简单的数据分析,在使用mongodb驱动mgo时遇到一些问题,比如在mongodb中执行命令成功,到了mgo中就执行失败。在这里谈一谈实践过程中遇到的问题,基础的用法不再说明了,可以自行百度。 使用 查找(Find) 这个估计是mongodb里用的最多的了吧,mgo中使用Find(query interface{}),query参数一般传入[]bson.M。下面给个例子: m := bson.M{ "CurTimestamp": bson.M{ "$gte...阅读全文

2017-05-11 00:00:51 pinecone
阅读:2651 评论:0

Go 语言机制之逃逸分析(Language Mechanics On Escape Analysis)

## 前序(Prelude) 本系列文章总共四篇,主要帮助大家理解 Go 语言中一些语法结构和其背后的设计原则,包括指针、栈、堆、逃逸分析和值/指针传递。这是第二篇,主要介绍堆和逃逸分析。 以下是本系列文章的索引: 1. [Go 语言机制之栈与指针](https://studygolang.com/articles/12443) 2. [Go 语言机制之逃逸分析](https://studygolang.com/articles/12444) 3. [Go 语言机制之内存剖析]...阅读全文

2018-02-26 11:56:18 gogeof
阅读:2316 评论:4

Go 语言机制之内存剖析(Language Mechanics On Memory Profiling)

## 前序(Prelude) 本系列文章总共四篇,主要帮助大家理解 Go 语言中一些语法结构和其背后的设计原则,包括指针、栈、堆、逃逸分析和值/指针传递。这是第三篇,主要介绍堆和逃逸分析。(译者注:这一篇可看成第二篇的进阶版) 以下是本系列文章的索引: 1. [Go 语言机制之栈与指针](https://studygolang.com/articles/12443) 2. [Go 语言机制之逃逸分析](https://studygolang.com/articles/12444...阅读全文

2018-02-26 12:12:59 gogeof
阅读:1849 评论:0

Go 执行追踪器(execution tracer)

## 概述 你有没有好奇过 Go 运行时是如何调度 goroutine 的?有没有深入研究过为什么有时候加了并发但是性能没有提高? Go 提供了执行跟踪器,可以帮助你诊断性能问题(如延迟、竞争或低并发等)、解决前面那些疑问。 Go 从 1.5 版本开始有执行跟踪器这么一个工具,原理是:监听 Go 运行时的一些特定的事件,如: 1. goroutine的创建、开始和结束。 2. 阻塞/解锁goroutine的一些事件(系统调用,channel,锁) 3. 网络I/O相关事件 ...阅读全文

2018-03-21 11:31:09 polaris
阅读:1300 评论:0

Go 语言的内存管理

这篇博客是我在维尔纽斯的 [Go Meetup](https://www.meetup.com/Vilnius-Golang/events/249897910/) 演讲的总结。如果你在维尔纽斯并且喜欢 Go 语言,欢迎加入我们并考虑作演讲 在这篇博文中我们将要探索 Go 语言的内存管理,首先让我们来思考以下的这个小程序: ```go func main() { http.HandleFunc("/bar", func(w http.ResponseWriter, r *h...阅读全文

阅读:548 评论:0