All Posts

HTTPS 握手过程实操

在之前我写过一篇介绍 HTTPS 如何握手的文章:HTTPS 握手过程,但是,那篇文章是纯嘴炮,从理论上介绍 HTTPS 的握手过程是怎么样的,虽然对我的帮助挺大,但是,这几天在我真的分析 HTTPS 数据包的时候,发现和现实还是有一点点的差距,于是今天我就介绍一下实战,从真实的数据包出发查看一下 HTTPS 握手的全过程。

Kafka Go SDK 使用和要点

在这篇文章中,我将以 Go 语言为例,使用 Sarama SDK演示如何通过 Kafka 生产和消费消息。其中,消费消息我将演示两种模式的消费方式,分别是自动提交消息已被消费以及主动提交消息消费 ACK 的模式,实际上这也是不同的消息处理模型(即最多消费一次和最少消费一次)的实践。但是在这里我没有演示有且只消费一次的模式,因为这不是单单消息队列就能支持的功能,还需要一些额外的业务支持才可以,所以点到即止,没有进行深入地演示。

Kafka 安装和运维

最近因为用到了 Kafka,所以需要了解一下 Kafka 的情况,在这篇文章中,我将介绍如何安装 Kafka 和平时运维 Kafka 使用的一些命令,这些命令在开发和定位过程中应该会经常使用到。

容器环境下 Go 如何获取 CPU 核数

最近在看一个库的实现代码时,发现它依赖于查看进程使用的 CPU 核数,然后根据 CPU 核数做一些限制,所以我就顺便看了一下 Go 是如何实现查看 CPU 核心数的。

Cloudflare R2 使用指导

最近发现 Cloudflare 越来越豪横了,都开始支持对象存储了,并且免费的额度还挺香,所以就想尝试一下,本文就记录了我的尝试过程以及一些使用的方式介绍。

关于 Go Module 的一些思考

在这篇文章中,我简单地介绍了一下 Go Module 核心要解决的问题以及它是如何解决的,以及介绍了可能遇到的问题和解决办法,在最后,我还会介绍几个常见的兼容套路(从官方文档学习来的)。

Git Bare Repo

最近有同事做了一个简单的分享,其中介绍到了一个 bare repo 的东西,使用 Git 也有些年头了,但是还真对 Bare Repo 没有印象,所以就简单了解了一下。

Go 中 TCP 连接读写 Deadline 实现

在写 Go 网络程序的时候,有个 TCP 连接的系列方法是我很常用的:`SetDeadline`、`SetReadDeadline`、`SetWriteDeadline`,他们的作用就是等待 TCP 连接的读写操作,如果在预设的时间点还没有读或者写操作的话,读的方法就会直接返回,并且返回一个 `os.ErrDeadlineExceeded` 类型的错误,这通常用于在判定连接是否已经失联的情况。在这篇文章中,我将介绍如何使用他们以及 Go 是如何实现他们的,并且尝试用 C++ 实现类似的效果。

Socket.IO 小坑总结

最近在接手一个 Web 推送的网关,主要功能其实就是通过 Socket.IO 协议接收前端的连接,然后推送消息给对应的前端,但是,在调试的时候,遇到了一个不能成功连接的问题,这里做一个总结。

HTTP 上传下载实现

在互联网中,上传和下载都是非常常见的操作,而且不同于内网环境,通常这些操作都是通过 HTTP 协议实现的,所以在这篇文章中我尝试解释一下 HTTP 常用的上传和下载的实现,并且在协议层尝试解释一下 HTTP 的实现原理。