socket 编程,可能会碰到 粘包 问题。我们和客户端约定数据交互格式是一个json格式的字符串,当客户端发送数据给服务端的时候,如果服务端没有及时接收,客户端又发送了一条数据上来,接收缓冲区满了的话,那么也有可能接收到半截的json字符串。本文介绍golang中tcp socket粘包问题和处理。 我要晨读
陆陆续续晨读过不少 goroutine 和 channel 的文章,今天继续来一篇,这篇是作者在实践的过程中,产生了几种通过goroutine + channel实现的工作模型,本文分别对这些模型进行介绍。 我要晨读
Go语言移植Linux内核数据结构hlist:hlist(哈希链表)可以通过相应的Hash算法,迅速找到相关的链表Head及节点。在有些应用场景,比Go标准库提供的list(一种常见的双向链表)更合适。依照list.h中的源码,本文实现了一个Go语言版本的hlist例子。 我要晨读
问题:当有一个变量,有一个 goroutine 会对它进行写操作, 其他 goroutine 对它进行读操作。是否需要对这个变量进行加锁保护?本文谈谈go语言编程的并发安全。 我要晨读
近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列),但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会,对HTTPS做一些深度挖掘。主要途 径:翻阅网上资料、书籍,并利用golang编写一些实验examples。 我要晨读
今天继续来一个Go语言的”坑“:Go语言 http/FormValue 踩坑记。国内初学者使用 Go 写 Web 的居多,在使用 net/http 库时,不小心很有可能会遇到本文提到的一个“坑”。 我要晨读
Golang语言相对成熟了,但真正写起来,还是要注意一些“坑”的,下面是遇到的三个问题(误用定时器,狂占CPU、小心list.List的Delete逻辑和要给template起个正确的名字),这里分享出来,希望能对遇到同样问题的童鞋有所帮助。 我要晨读
Golang编程经验总结:本文总结了 Go 语言使用的方方面面,包括库的选择、注意事项,错误处理,如何进行调试,避免发生竞态条件等,是值得收藏的文章。 我要晨读
遍历目录中所有文件,这个需求是很常见的,各个语言都有相应的处理方式。然而,如果获取 Windows 下的隐藏文件?Go 语言如何实现?本文介绍如何访问 System Volume Information 文件夹。 我要晨读
Gopher China 在上海顺利举行。今天的文章跟 Gopher China 的主要组织者 ASTA谢 开发的 Beego 框架相关,算是支持 Go 在国内的发展。beego下实现martini中的透明式静态文件服务(static folder)效果。服务静态文件,相信不少人都遇到过一些问题。 我要晨读
并发语言俨然是应大规模应用架构的需要而提出,有其现实所需。前后了解了Scala和Golang,深深体会到现代并发语言与旧有的Java、C++等语言在风格及理念上的巨大差异。本文主要针对Scala和Golang这两个我喜爱的并发语言在并发特性上的不同实现,做个比较和阐述,以进一步加深理解。 我要晨读
我们知道goroutine是协程的go语言实现,它是语言原生支持的,相对于一般由库实现协程的方式,goroutine更加强大,它的调度一定程度上是由go运行时(runtime)管理。其好处之一是,当某goroutine发生阻塞时(例如同步IO操作等),会自动出让CPU给其它goroutine。本文和大家一起理解goroutine。 我要晨读
Go语言的主要设计者之一罗布·派克( Rob Pike)曾经说过,如果只能选择一个Go语言的特 性移植到其他语言中,他会选择接口。可见接口在golang中的地位,及其对gloang这门语言所带来的活力。本文和大家一起深入理解interface。 我要晨读
Go语言新人常常会很疑惑为什么这门语言的声明语法(declaration syntax)会和传统的C家族语言不同。在这篇博文里,我们会进行一个比较,并做出解答。本文是 Rob Pike 在 Go 官方博客解释这个问题的翻译,那些依然疑惑这个问题的可以看看。 我要晨读
晨读序列:使用Golang开发微信公众平台之发送客服消息。关注并使用过微信“飞常准”公众号的朋友们都有过如下体验:查询一个航班情况后,这个航班的checkin、登机、起降等信息都会在后续陆续异步发给你,这个服务就是通过微信公众平台的客服消息实现的。这篇文章我们就来说说如何用golang实现发送文本客服消息。 我要晨读
晨读序列:使用Golang开发微信公众平台之接收加密消息。通过上篇,公众服务与微信服务器间的消息是“裸奔”的(即明文传输,通过抓包可以看到)。显然这对于一些对安全性要求较高的大企业服务号来说,比如银行、证券、电信运营商或航空客服等是不能完全满足要求的。于是乎就有了微信服务器与公众服务间的数据加密通信流程。 我要晨读
晨读序列:使用Golang开发微信公众平台之接收文本消息。一旦接入验证成功,成为正式开发者,你可能会迫不及待地想通过手机微信发送一条"Hello,Wechat”到你的公众号服务器。不过上一篇的那个程序还无法处理手机提交的文本消息,本篇将介绍如何用Golang编写公众号程序来接收手机端发送的 文本消息以及回复响应消息。 我要晨读
晨读序列:使用Golang开发微信公众平台。移动互联网时代,微信平台一枝独秀,是社交领域的巨人,但其诞生也才不到4年。微信平台的发展前景十分广阔,企鹅公司将其打造为人与人、人与物、物与物的统一、万能入口之雄心不变,因此围绕微信平台广大开发者依旧有诸多机会。本文是第一篇:接入验证。 我要晨读