为了能获取到更有价值的信息,我们只考虑大于等于三个字符的标识符。不出所料,在 Go 中最具代表性的判断语句 if err != nil {} 中的 err 和 nil 出现的最为频繁。 我要晨读

已有1653人晨读

仅仅两年时间,在最流行的编程语言中,Go 语言从第 65 名飙升至第 17 名。以下是其快速增长的原因。 我要晨读

已有912人晨读

想象你正在编写一些用了可能 panic 的函数的代码,并且无论什么原因(第三方库,向后兼容,等等)你都不能改变那些函数。 我要晨读

已有513人晨读

//go:generate 的引入使得 Go 语言在构建过程中集成自动代码生成工具更加简单。stringer 使得编写重复代码更轻松,而 yacc 和 ragel 这类程序则让优化解析器的生成变得可能。在 GoGenerateTools 上你可以找到关于这类工具的一份不完整的列表。 我要晨读

已有889人晨读

线上服务,需要记录日志量比较大,便于排查问题,同时,线上要求所有日志需要经过rsyslog 灌到kafka 中去,我们日志需要按规定格式序列化。我们使用的log库是 "github.com/Sirupsen/logrus"。 那么问题来了,golang 的序列化性能真的是一言难尽。 我要晨读

已有789人晨读

当我接受了 Go 根本没有 object 之后,我才开始更容易理解 Go 的 object 是什么,其实就是一些可以操作共有状态的函数集合,加了点语法糖的点缀。 我要晨读

已有1309人晨读

2006年开始入坑至今,期间还进进出出几次,没怎么做过大项目,多是自学,自学和自学。有些时候回头想想,也算接触过不少东东,但没有形成一个完整的体系,所以在这里写点东西,写到哪算哪吧,是总结,也是思考。 我要晨读

已有681人晨读

写爬虫的时候总会遇到爬取速度过快而被封IP的情况,这个时候就需要使用代理了。在https://github.com/henson/ProxyPool 的启发下,决定自己实现一个代理池。项目已经开源在github。 我要晨读

已有882人晨读

Go 语言有一个很强大的内置分析器(profiler),支持CPU、内存、协程 与 阻塞/抢占(block/contention)的分析。 我要晨读

已有815人晨读

每个操作系统都有一个固定大小的栈内存,用户保存函数的局部变量。但是空能会这个固定大小显然不太灵活。而goroutine在生命周期开始时申请一个很小的栈,与操作系统线程类似,用于保存函数调用期间的局部变量。本质区别是它的大小不是固定的,可以按需增大和缩小 我要晨读

已有510人晨读

目前,自动化前端开发的最大障碍是计算能力。不过,我们可以使用当前的深度学习算法和人造的训练数据来探索人工前端自动化。 我要晨读

已有734人晨读

Github提供的GraphQL接口非常全面,那么我们该如何搭建出自己的接口呢?好在GraphQL提供了很多语言的解决方案。本文主要阐述如何用go搭建自己的GraphQL服务器。如果了解GraphQL建议先阅读GraphQL — API查询语言 或相关资料。 我要晨读

已有4237人晨读

你有没有好奇过 Go 运行时是如何调度 goroutine 的?有没有深入研究过为什么有时候加了并发但是性能没有提高? Go 提供了执行跟踪器,可以帮助你诊断性能问题(如延迟、竞争或低并发等)、解决前面那些疑问。 我要晨读

已有1057人晨读

想象一下,在 HTTP 服务器上有一个巨大的 ZIP 文件,你想知道里面的内容。你不知道压缩包内是否有你需要的东西,而且你不想下载整个文件。是否可以像执行 unzip -l https://example.com/giant.zip 的操作来查看压缩包的内容呢? 我要晨读

已有581人晨读

snowflake ID 算法是 twitter 使用的唯一 ID 生成算法,为了满足 Twitter 每秒上万条消息的请求,使每条消息有唯一、有一定顺序的 ID ,且支持分布式生成。 我要晨读

已有618人晨读

在Go的惯用法中,返回值不是整型等常用返回值类型,而是用了一个 error(interface类型)。 我要晨读

已有829人晨读

因为节目集数量较大,不能一次性的读入内存,因此每次读出一部分记录写入ES。ORM使用的是beego。为了提高性能使用了协程,其中读MySQL的部分最大开启20个协程,ES写入部分开启了15个协程(因为ES分片设置的问题,5个协程和15个协程性能映像不大)。 我要晨读

已有493人晨读

今天我想和大家分享 Go 语言一些非常实用的技巧,用于编码和解码 JSON 文档。Go 语言的 encoding/json 包有一些有趣的特性,帮助我们轻松地解析 JSON 文档。你可以轻松地将大多数实际应用中的 JSON 转换为带有 Go 语言结构体标签的接口或者是 Marshaler 和 Unmarshaler 接口。 我要晨读

已有603人晨读