如何实现Golang的http请求处理中间件(译)

原文:Golang Http Handlers as Middleware 译者:youngsterxyf 大多数现代Web组件栈允许通过栈式/组件式中间件“过滤”请求,这样就能干净地从web应用中分离出横切关注点(译注:面向方面程序设计中的概念?)。 本周我尝试在Go语言的http.FileServer中植入钩子,发现实现起来十分简便,让我非常惊讶。 让我们从一个基本的文件服务器开始说起: func main() { http.ListenAndServe(":8080", http.File...阅读全文

黑 * 白的博客 2014-01-17 youngsterxyf

为何Goroutine的栈空间可以无限大?(译)

原文:Why is a Goroutine's stack infinite? 译者:youngsterxyf Go编程新手可能会偶然发现Go语言---与一个Goroutine可用栈空间大小相关---的一个古怪特性。这通常是由于程序员 无意间构造了一个无限递归函数调用而产生的。为了阐明这个特性,以如下代码(有点刻意设计的)为例。 package main import "fmt" type S struct { a, b int } // String implements the fmt.St...阅读全文

黑 * 白的博客 2014-01-17 youngsterxyf

Go - 以任意类型的slices作为输入参数(译)

原文:Go – taking slices of any type as input parameters 译者:youngsterxyf 最近参与的一个业余项目,go-linq,让我了解到Go语言的类型系统并不是为任何类面向 对象编程而设计的。没有泛型,没有类型继承,也没有提供任何对这些特性有用的东西。 但是,提供了一个名为interface{}的类型,你可以向其赋予几乎任意类型的值,不会抛出编译错误,就像.NET的Object或Java的Object: var o interface{} o...阅读全文

黑 * 白的博客 2014-01-16 youngsterxyf

仓库作业机器监控系统设计与实现

近期在参与一个仓库作业机器监控项目。该项目的需求背景是:公司的电商业务在全国各地有多处或大或小的仓库,仓库的作业人员(没有IT技术背景)经常反馈/投诉作业机器断网、断电、连不了服务等问题。实际情况经常与反馈的不一致,但运维侧并没有数据可以证明,所以才有了这个项目的需求。 该项目第一期的目标仅是收集、展示作业机器某些监控指标数据,以便在快速定位解决问题,或至少有数据可查。 为了避免大量监控数据上报影响到生产系统的网络服务,系统采用如下结构: 实现一个agent用于在仓库作业PC或作业PDA上获取机...阅读全文

黑 * 白的博客 2013-11-29 Fri youngsterxyf

Golang中如何让html/template不转义html标签

近期在使用Golang的net/http和html/template开发一个简单的HAProxy负载均衡任务管理系统(见搭建高可用负载均衡组件及缓存DNS一文说明)。 htmp/template在渲染页面模板的时候默认会转义字符串中的html标签,但有时我们并不想转义html标签,以下图所示为例: 图1中“ip:port列表(一行一个)”和“说明”两个输入框的内容行与行是以\n分隔的;图2中,这两部分内容分别在表格的“后端机器列表”和“说明”两列中展示,但行与行其实是以<br />分隔的;那么在...阅读全文

黑 * 白的博客 2013-11-01 youngsterxyf

Golang Http Server源码阅读

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

博客园 2012-08-22 yjf512

编译更小的 Golang 程序

go build -ldflags "-s -w" x.go (go install类似) -s 去掉符号表,然后 panic 的时候 stack trace 就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果。不推荐使用。 -w 去掉 DWARF 调试信息,得到的程序就不能用 gdb 调试了,如果不打算用 gdb 调试,基本没啥损失。 示例: # go build main.go && ls -l main -rwxr-xr-x 1 Bing.L Bing.L 150...阅读全文

博客园 2014-11-04 08:56 bing-l

Go语言结构struct(普及golang)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 1.struct 简洁 这个的struct和C语言的很相似,模拟出class的功能,但是不完全的!没有构造函数等! 2.struct的申明 [php] package main import "fmt" type Person struct { Age int Name string } func main() { //初始化两种 a := Person{} a.Age = 2 a.Name = ...阅读全文

golang读取ini配置文件的方法

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 好几天没有更新了因为我正在研究一个新的项目,然后很费时,希望到时候得到大家的认可和帮助,这里申明一下希望大家帮助一下,如果您有好的程序或者代码判断,想分享给大家,您可以向我投稿,分享代码就是为了帮助大家,代码一定要是可行的,到时候我会先测试然后再发布!发送代码片段可以直接到我的邮箱admin#widuu.com(#换成@),也可以加我的QQ:23169450,下边是一个golang读取ini文件的...阅读全文

微度网络 2013-11-27 widuu

Go_默认路由源码分析

func main() { http.HandleFunc("/say",say) err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal(err.Error()) } } func say(w http.ResponseWriter, r *http.Request) { // }上面是一段启动web服务的代码通过监听8080端口 并且在启动钱注册了say()函数 如在浏览器输入 localhost:8080/say...阅读全文

CSDN博客 2014-06-07 13:42 u012807459

Go 语言简介

1. 简介 Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程,同时具有垃圾回收机制。 2. 安装 http://golang.org/doc/install 这里有详细的安装教程。go编辑器可以选择Eclipse和goclipse搭配,插件地址。 http://goclipse.googlecode.com/svn/trunk/goclipse-update-site/...阅读全文

CSDN博客 2014-06-18 13:51 lichao_ustc

数组、切片(以及字符串): append内置函数的运作机制

介绍 数组是编程语言中最常用到的功能之一. 数组看起来是比较简单,但在一个语言要实现一个数组的时候,有些问题必须要解决,如:: 固定大小或可变大小? 是类型的一部分? 多为数组的模型? 空数组的意义? 这些问题的解决影响着数组仅是语言的一个功能还是其设计的核心部分. 你要爪子翻译于 1年前 0人顶 顶 翻译的不错哦! 在早期的Go语言发展中,在设计数组前大约用了1年的时间来决定这些问题. 关键的一步就是引入片, 可以在一个固定大小的数组上有一个灵活可扩展的数据结构. 是该类型的大小的一部分,新的...阅读全文

开源中国翻译 2013-11-04 11:07:54 几点人, NCThinker, 等

为Golang程序打上编译标记

参考文章: http://stackoverflow.com/questions/11354518/golang-application-auto-build-versioning 昨天在查询怎么生成一个小体积的golang程序的时候,无意中发现这个文章. 对于固定的代码,及固定的golang版本,下面的命令总是得到一模一样的程序 go build 有时候需要为每个编译都打上标记,不然真的很乱啊 演示用的golang代码 package main var _VERSION_ = "unknown...阅读全文

ITEYE博客 2014-11-03 02:00 vyloy

golang小结

go build calc go test:http://www.cnblogs.com/yjf512/archive/2013/01/22/2870927.html 关于build flags,调用go help build 关于packages,调用go help packages 关于flags for test binary go的log模块基本功能:例如如何输出到文件中 log.New()时可以传入io:Writer const itoa 下标和range遍历字符串 rune pani...阅读全文

ITEYE博客 2014-11-03 03:00 chuqingq

golang(GO语言)http详解简单基础(1)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 因为好像长时间的写PHP可能大家感觉烦躁了,所以写一点golang的东西大家可以拿去玩玩,golang在web开发中让你得心应手,其实也是很好的东西,只要你玩进去之后感觉好爽,感觉比PHP的好处就是没有那么多的“限制”,基础部分大家可以看下简单的我再前边更新了一点点后边会继续给大家补上的,以后就是PHP+golang也可能会写一些object-c的,废话不多说开始写了,所有的代码我放在BUYVM上...阅读全文

微度网络 2013-11-19 widuu

golang xml解析

xml是一个远程地址 <returnsms> <returnstatus>Success</returnstatus> <message>ok</message> <remainpoint>150528</remainpoint> <taskID>518334</taskID> <successCounts>1</successCounts> </returnsms> 解析 //xml的struct结构 type Duanxin struct { Returnstatus string `xml...阅读全文

开源中国博客 2014-11-03 18:12 别人说我名字很长