最新 | 最热门 | 最高评价

+0  优雅地实现 TCP 压缩传输

Tag: Go
鸟窝 发于 2016年11月15日 13:40 | 点击: 669 | 展开摘要
集群式、负载均衡的RPC框架 rpcx支持多种的序列化库,可以有效的减少消息体的大小,但是对于字符串或者图片的字节slice,明显还可以进一步的压缩,正如fasthttp作者valyala在他的新的开源项目httpteleport中描述的: 通过1G的带宽传输10G的数据 (夸张)。

为了在RPC的传输中减少传输的数据大小,我在不影响rpcx整体框架的基础上,参考了httpteleport的实现,对net.TCPConn进行了封装,实现了压缩/解压缩功能的net.Conn,

查看全文: http://www.udpwork.com/item/15908.html

+0  [译]Go 1.8 新特性

Tag: Go
鸟窝 发于 2016年11月05日 16:31 | 点击: 547 | 展开摘要
译自 tylerchr 的 What's Coming in Go 1.8。

随着Go 1.8 新特性的开发工作已经冻结,Go 1.8 将在2017年2月左右发布,现在让我们看一些在Go 1.8更有趣的API的改变。

HTTP server connection draining

Brad Fitzpatrick最近关闭了一个将近四年的issue,这个issue请求实现http.Server的连接耗尽(draining)的功能。现在可以调用srv.Close可以

查看全文: http://www.udpwork.com/item/15910.html

+0  Go的函数参数总是传值

Tag: Go
鸟窝 发于 2016年10月28日 13:35 | 点击: 357 | 展开摘要
依照Go的FQA, 函数的参数传递总是传值的(pass-by-value):

As in all languages in the C family, everything in Go is passed by value. That is, a function always gets a copy of the thing being passed, as if there were an assignment statement assigning the value

查看全文: http://www.udpwork.com/item/15896.html

+0  深入Go UDP编程

Tag: Go
鸟窝 发于 2016年10月20日 14:27 | 点击: 514 | 展开摘要
用户数据报协议(User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报(package-oriented)的传输层协议,正式规范为RFC 768。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验。

由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。但

查看全文: http://www.udpwork.com/item/15882.html

+0  godef的一个bug

Tag: Go
鸟窝 发于 2016年10月19日 15:19 | 点击: 330 | 展开摘要
godef可以打印出Go源代码中的符号,很多集成开发工具都集成了它,并且提供了Go to Definition的命令和快捷键,可以迅速的跳转到方法和变量的声明的地方,非常的方便。

比如我常用的vscode-go,就提供了这样的功能,但是目前godef有一个bug,就是不能跳转标准库net包下的方法定义,这个bug已经提交到github上: #18, 大约在6月的时候就发现了这个bug,不清楚作者为什么没有fix,事实上早有人提供了修改的pull request。这个bug产

查看全文: http://www.udpwork.com/item/15883.html

+0  [译]Go文件操作大全

Tag: Go
鸟窝 发于 2016年10月13日 09:50 | 点击: 497 | 展开摘要
Go官方库的文件操作分散在多个包中,比如os、ioutil包,我本来想写一篇总结性的Go文件操作的文章,却发现已经有人2015年已经写了一篇这样的文章,写的非常好,所以我翻译成了中文,强烈推荐你阅读一下。

原文: Working with Files in Go, 作者: NanoDano

介绍

万物皆文件

UNIX 的一个基础设计就是"万物皆文件"(everything is a file)。我们不必知道一个文件到底映射成什么,操作系统的设备驱动

查看全文: http://www.udpwork.com/item/15872.html

+0  Go 模板嵌套最佳实践

Tag: Go
鸟窝 发于 2016年10月09日 14:47 | 点击: 343 | 展开摘要
Go 官方库提供了两个模板库: text/template 和 html/template。这两个库类似,只不过 html/template对html格式做了特别的处理,当需要输出html格式的代码时需要使用html/template。

使用模版,可以帮助我们写一些通用的代码,或者提供清晰的文件布局, 或者提供一个代码生成器。

官方文档提供了很好的模版的使用方法, 其中 text/template提供了基础的模版的使用方法,比如 Action、 Argument、Pipe

查看全文: http://www.udpwork.com/item/15865.html

+0  Go官方库RPC开发指南

Tag: Go
鸟窝 发于 2016年09月18日 13:52 | 点击: 351 | 展开摘要
Go官方提供了一个RPC库: net/rpc。包rpc提供了通过网络访问一个对象的方法的能力。服务器需要注册对象, 通过对象的类型名暴露这个服务。注册后这个对象的输出方法就可以远程调用,这个库封装了底层传输的细节,包括序列化。服务器可以注册多个不同类型的对象,但是注册相同类型的多个对象的时候回出错。

我最近写了一本电子书: Go RPC开发指南,介绍Go RPC开发的相关技术,这是其中的一章,专门介绍官方库 net/rpc的使用。

同时,如果对象的方法要能远程访问,它们必

查看全文: http://www.udpwork.com/item/15831.html

+0  每逢九月九,想念毛主席!

Tag: First Category
s5s5 发于 2016年09月09日 09:47 | 点击: 364 | 展开摘要
【缅怀伟人!40年前的今天,毛主席逝世】

从群众中来,到群众中去;

世界是你们的,也是我们的,但是归根结底是你们的;

没有调查就没有发言权;

务必使同志们继续地保持谦虚、谨慎、不骄、不躁的作风,务必使同志们继续地保持艰苦奋斗的作风。

40年前的今天,毛主席逝世。重温,缅怀!

查看全文: http://www.udpwork.com/item/15786.html

+0  Go语言中的io.Reader和io.Writer以及它们的实现

Tag: Go
鸟窝 发于 2016年08月29日 17:04 | 点击: 401 | 展开摘要
在使用Go语言的过程中,无论你是实现web应用程序,还是控制台输入输出,又或者是网络操作,不可避免的会遇到IO操作,使用到io.Reader和io.Writer接口。也也许对这两个接口和相关的一些接口很熟悉了,但是你脑海里确很难形成一个对io接口的继承关系整天的概貌,原因在于godoc缺省并没有像javadoc一样显示官方库继承关系,这导致了我们对io接口的继承关系记忆不深,在使用的时候还经常需要翻文档加深记忆。本文试图梳理清楚Go io接口的继承关系,提供一个io接口的全貌

查看全文: http://www.udpwork.com/item/15769.html

+0  [译]Go net/http 超时机制完全手册

Tag: Go
鸟窝 发于 2016年07月25日 09:22 | 点击: 1125 | 展开摘要
英文原始出处: The complete guide to Go net/http timeouts, 作者: Filippo Valsorda

当用Go写HTTP的服务器和客户端的时候,超时处理总是最易犯错和最微妙的地方之一。错误可能来自很多地方,一个错误可能等待很长时间没有结果,直到网络故障或者进程挂起。

HTTP是一个复杂的、多阶段(multi-stage)协议,所以没有一个放之四海而皆准的超时解决方案,比如一个流服务、一个JSON API和一个Comet服务对超时

查看全文: http://www.udpwork.com/item/15628.html

+0  深入Go语言 - 8

Tag: Go
鸟窝 发于 2016年07月25日 09:15 | 点击: 635 | 展开摘要
本章介绍 go语句、goroutine调度。

go 语句

go语句用来产生一个新的goroutine,并执行一个函数,它的使用非常简单,就是在函数调用或者方法调用的前面加上go关键字即可。

函数可以是已有函数、匿名函数、方法等,注意匿名方法(方法字面量)不要忘记调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

func foo(i int) int {
return i * i
}

……

go foo(10)
go func()

查看全文: http://www.udpwork.com/item/15620.html
|<<<1234567>>>| 一共48页, 569条记录