All Posts

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 的实现原理。

如何隐藏一个 Linux 进程

最近看到一个项目:libprocesshider,它可以用于隐藏一个 Linux 进程,处于好奇,就尝试了一下,发现涉及到几个有意思的点,所以记录一下。

editor.md 插件支持

Editor.md 是我非常喜欢的一个 Web 端 Markdown 编辑器,我经常用他写笔记和博客文章,因为用得多了,所以对它有一些要求,就需要自己开发了,这篇文章就是介绍如何用插件扩展它。

Linux TCP 的未来拼接技术 Sockmap 解读

在收藏夹中一直压着一篇 Clouflare 介绍他们使用 SOCKMAP 的文章,在清库存的时候就想顺便总结一下这篇文章那个,因为这里使用的是我在这两年很想尝试的 eBPF 技术,这篇文章给了我一些思路。

Prometheus 的 Summary 和 Histogram

在日常的软件监控中,对于一些离散且数量庞大的值我们通常会以统计学的方式来进行监控,例如常说的 TP99。在 Prometheus 中,有两个基本数据类型可以实现这个功能,本文就将介绍他们分别是如何做的以及如何选择他们。

使用 FFMPEG 编辑视频

经常在观看视频或者处理视频的时候,总是有一些很简单的小需求,例如截取视频某一段时间的内容,或者将一个视频按照比赛场次分割成多个视频,因为这个需求太简单了,所以特地安装一个视频处理软件就不太划算,刚好,我知道有个开源的工具 FFMPEG 是许多视频处理软件的底层依赖,所以我就尝试学习如何用它处理一个简单的视频,本文就总结一下我用到的命令。

Kafka 基础知识

虽然我一直感觉我做过 Kafka 的笔记,但是却没有找到,所以最近因为有项目使用了 Kafka,为了项目使用的每一个细节,不得不认真学习一下 Kafka(结果证明这是很正确的),顺便整理了一下主要的学习内容。