从小案例学习Go语言,知识点包括:使用github.com/tealeg/xlsx包读取xlsx文件;使用regexp包实现正则表达式判断;使用net/smtp包发送电子邮件;使用交叉编译命令生成不同系统上的可执行文件。 我要晨读
【Go语言内幕系列】本文是 Golang 内部机制探索系列博客的后续。这个系列博客的目的是探索 Go 启动过程,这个过程也是理解 Go 运行时(runtime)的关键之处。本文中我们将一起去看看启动过程的第二个部分,分析参数是怎么被初始化的及其中有哪些函数调用等等。 我要晨读
【Go语言内幕系列】启动过程是理解 Go 语言运行时工作原理的关键。如果你想继续深入了解 Go,那么分析启动过程就非常重要。因此第五部分就着重讲解 Go 运行时,特别是 Go 程序的启动过程。 我要晨读
【Go语言内幕系列】今天,我们来看一下 Func 结构体,还会讨论一些关于 Go 垃圾回收的一些细节。Go语言内幕(4):目标文件和函数元数据。 我要晨读
【Go语言内幕系列】本文将会讨论关于 Go 链接器、目标文件(object file)以及重定位(relocation)相关的内容。为什么要关注这些东西呢?如果你想学习任何一个大项目的内部机制,那么你首先要做的一件事就是学会将其分割成不同的部件或者模块。接下来,你需要搞懂这些模块向外提供的接口。在 Go 中,编译器、链接器与运行时就是这样的高层次模块。编译器与链接器之间的接口就是目标文件,所以我们今天就从目标文件开始。 我要晨读
【Go语言内幕系列】当你通过接口引用使用一个变量时,你知道 Go 运行时到底做了哪些工作吗?这个问题并不容易回答。这是因为在 Go 中,一个类型实现了一个接口,但是这个类型并没有包含任何对这个接口的引用。在这里,让我们更加深入地探索 Go 编译器:创建一个简单的 Go 程序来看一下 Go 内部在类型转换时到底做了哪些工作。通过这个例子,我会解释结点树是如何生成并被使用的。同样地,你也可以将这篇博客的知识应用到其它 Go 编译器特征的研究中。 我要晨读
【Go语言内幕系列】这个系列博客主要为那些对 Go 基本知识已经有一定了解,又希望对其内部细节进行更深一步地探索的人准备的。今天这一篇主要分析 Go 源代码的基本结构以及 Go 编译器的某些内部细节。读完这篇博客后,你会得到下面三个问题的答案:Go 源代码结构是什么样子的?Go 编译器是如何工作的?Go 语言中的结点树的基本结构是什么样的? 我要晨读
目前,Go语言已经成为构建系统、服务器,特别是微服务的热门选择。Teamwork团队在去年写了近20万行Go代码,建造了一堆速度奇快的小型HTTP服务,本文列出了他们总结的9条经验教训,可做参考。 我要晨读
【微服务实战序列】这是用微服务开发应用系列博客的第七篇也是最后一篇。第一篇中介绍了微服务架构模式,并且讨论了微服架构的优缺点;接续文章讨论了微服务架构不同方面:使用API网关,进程间通信,服务发现,事件驱动数据管理以及部署微服务。本篇,我们将探讨将应用从单体式架构迁移到微服务架构需要考虑的策略。 我要晨读
Go的简单和原生并发使其成为一门非常有吸引力的后端开发语言,但更大的问题是它如何应对延迟敏感的应用场景?是否值得牺牲语言的简洁性使其速度更快?让我们来一起看一下Go语言性能优化的几个方面:语言特性、内存管理、并发,并根据这些做出合适的优化决策。 我要晨读
【微服务实战序列】这篇博客是用微服务建应用的第六篇,第一篇介绍了微服务架构模板,并且讨论了使用微服务的优缺点。随后的文章讨论了微服务不同方面:使用API网关,进程间通讯,服务发现和事件驱动数据管理。这篇文章,我们将讨论部署微服务的策略。 我要晨读
【微服务实战序列】本文是使用微服务创建应用系列的第五篇文章。第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点;第二和第三篇描述了微服务架构模块间通讯的不同方面;第四篇研究了服务发现中的问题。本篇中,我们从另外一个角度研究一下微服务架构带来的分布式数据管理问题。 我要晨读
【微服务实战序列】这是关于使用微服务架构创建应用系列的第四篇文章。第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点。第二和第三篇描述了微服务架构内部的通讯机制。这篇文章中,我们将会探讨服务发现相关问题。 我要晨读
【微服务实战序列】在单体式应用中,各个模块之间的调用是通过编程语言级别的方法或者函数来实现的。但是一个基于微服务的分布式应用是运行在多台机器上的。一般来说,每个服务实例都是一个进程。在这篇文章中,我们将讨论系统服务之间如何通信。 我要晨读
【微服务实战序列】当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点。在微服务架构中,每一个微服务暴露一组细粒度的服务提供点。在本篇文章中,我们来看它如何影响客户端到服务端通信,同时提出一种API Gateway的方法。 我要晨读
【微服务实战序列】本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。 读者将会从中学到方法,并且和单体式架构模式进行对比。 我要晨读
北京时间2016年2月18日凌晨,在Go 1.5发布 半年后,Go 1.6正式Release 了,与Go 1.5的“惊天巨变”(主要指Go自举)相比,Go 1.6的Change 算是很小的了。我们来看看Go 1.6中哪些变化值得我们关注。主要由:cgo、HTTP/2、Templates、Runtime GC 延迟等。 我要晨读
go-fuzz是一款随机测试(Random testing)工具。对于随机测试想必很多人都比较陌生,我也不例外。至少在接触go-fuzz之前,我从未在golang或其他编程语言中使用过类似的测试工具(c/c++开发者可以使用afl-fuzz),本文介绍 Go语言随机测试工具go-fuzz。 我要晨读
CockroachDB GC优化总结。本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 我要晨读
【Go语言TCP Socket编程】Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流。 我要晨读