熊喵君的博客

Thinking will not overcome fear but action will.

Xorm 事务:应用与实现分析

0x00 前言 0x0 参考 XORM操作指南-事务处理 xorm-1.3.11版本 go-sql-driver/mysql v1.10.0版本

GoZero 组件分析:executors(批处理组件)

0x00 前言 现网中可能会遇到如下场景,批量提交一批任务(如 MYSQL 语句),或是从 kafka 等队列中批量消费一批数据;Go 的现有库没有诸如灵活定义作业运行、批量提交任务减少小任务提交等特性,当然可以借助于线程池来解决,不过 goZero 给出了一套更为轻量化的实现:executors 本文分析下 executors 组件实现,在 goZero 中,executors 充当任务...

基于 Golang HTTP 传输文件的一些思考

0x00 前言 一般做法 如下,将整个文件读到 buf 里,不适用于大文件,使用 mime/multipart 包处理 buf := new(bytes.Buffer) writer := multipart.NewWriter(buf) defer writer.Close() part, err := writer.CreateFormFile("myFile", "foo.t...

golang eBPF 开发入门(一)

0x00 前言 eBPF(Extended Berkeley Packet Filter)是一种基于内核的轻量级虚拟机,它允许用户在内核中运行自定义的程序,以实现对系统事件的实时监控和分析。eBPF 程序通常以 C 编写,并通过专用的编译器将其编译为 eBPF 字节码。然后,这些字节码将被加载到内核中,并在 eBPF 虚拟机上运行 eBPF 程序运行在内核态 (kernel),无需重...

重拾 Linux 网络(六):DNS 劫持与代理

DNS 劫持代理 review

0x00 前言 本文是项目中的 DNS 相关开发工作记录,涵盖 DNS 基础知识、K8S 中的 DNS 配置、Go 语言 DNS 缓存实现、常用 DNS 库介绍、透明代理中的 DNS 机制,以及基于安全代理项目中的 DNS 防泄漏机制深度分析。主要内容包括: DNS 基础:解析流程、报文格式、加密 DNS 协议(DOH/DOT/DOQ) Kubernetes DNS:ndo...

Linux Namespace && Cgroup(V1/V2)

Linux 系统资源隔离与管理机制介绍

0x00 前言 Linux Namespace 和 Cgroup 都是 Linux 内核的功能,用于隔离和管理系统资源,但它们的目标和方法有所不同 cgroup = limits how much you can use; namespaces = limits what you can see (and therefore use) Linux Namespace 主要用...

DPI with go:构建一个流量分析系统

golang 的包处理:gopacket

0x00 前言 项目中需要实现一些基本的流量分析功能,借用了 gopacket 库,该库是 libpcap 和 npcap 的 go 封装,提供了更方便的 go 语言操作接口。通常网络抓包有以下几个步骤: 枚举主机上网络设备的接口 针对某一网口进行抓包 解析数据包的 mac 层、ip 层、tcp/udp 层字段等 ip 分片重组,或 tcp 分段重组成上层协议如 ht...

Pprof 调试经验汇总

0x00 前言 0x01 DEBUG 汇总 调用图 安装 yum install graphviz go tool pprof main http://localhost:8000/debug/pprof/heap 或者 goroutine,进入命令行 输入 svg 命令即可保存 火焰图 安装 FlameGraph,如下 安装 go-torch...

Dragonfly:基础、设计与分析(未完成)

分析一款 golang 实现的基于 P2P 的文件和镜像分发系统

0x00 前言 参考 Dragonfly Dragonfly2 Dragonfly-V2.0 Dragonfly 基于 P2P 的文件和镜像分发系统 基于 Dragonfly 的 P2P 镜像分发

frp穿透项目:设计与分析(一)

0x00 前言 架构 参考 frp 内网穿透