自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 7.2.3-bpf实现对goroutine的探测

本文摘要: Java与Go语言运行机制对比分析 Java程序通过JVM实现跨平台,编译生成字节码由JVM解释执行,操作系统仅识别JVM进程。Go语言直接编译为机器码,通过goroutine实现并发编程,利用CAS机制避免竞态条件。文章通过具体代码示例展示了两种语言的运行差异,并深入分析了Go调度器中runtime.casgstatus的关键作用。同时详细讲解了BPF程序如何通过uprobe挂载点监控Go运行时状态,包括goroutine状态转换和GC触发过程,提供了两种语言底层实现的对比视角。

2026-01-27 21:26:18 406

原创 7.2.2-bpf对tcp请求的监控

本文介绍了eBPF程序开发的基本框架和使用libbpf库的便捷方法。主要内容包括: eBPF程序由内核层和应用层两部分代码组成,开发需依赖libbpf框架,类似于AI开发依赖PyTorch框架。 libbpf-bootstrap项目提供了eBPF开发的模板,包含Makefile和示例代码,简化了开发环境配置。 详细解析了标准eBPF程序的结构: 用户态程序(hello.c)负责加载、验证和挂载eBPF程序 内核态程序(hello.bpf.c)包含实际执行的逻辑 通过skel.h自动生成接口文件连接两部分.

2025-12-25 12:44:54 800

原创 7.2.1-内核bpf的实现原理

本文介绍了bpftrace的基本语法和三个典型脚本示例。bpftrace使用BEGIN/END特殊事件,支持kprobe/kretprobe等挂载方式。tcp_connect.bt通过kprobe监控TCP连接建立,解析套接字结构体获取IP/端口信息。tcp_accept.bt使用kretprobe捕获连接接受后的返回值。tcp_life.bt追踪TCP状态变化,计算连接生命周期。文中详细解释了内核数据结构访问、字节序处理等关键点,并提供了实际运行结果截图。这些脚本可用于网络连接监控和性能分析。

2025-12-24 21:32:04 872

原创 0voice-2.1.2-事件驱动 reactor 的原理与实现

Reactor是一种事件驱动的网络编程模式,基于IO多路复用技术(如epoll)实现。它将IO操作转化为事件管理,通过回调机制处理不同事件:listenfd对应accept回调,clientfd对应send/recv回调。与原生epoll相比,Reactor通过预先绑定回调函数简化事件处理逻辑,并为每个连接维护独立读写缓冲区(存储在conn结构体中),解决了临时缓冲区带来的半包/粘包等问题,同时保留连接状态信息,使网络程序更易管理和扩展。

2025-09-26 21:50:45 627

原创 0voice-2.1.1-多路IO复用select/poll/epoll

本文介绍了I/O多路复用技术select和poll的工作原理及实现。select通过三个文件描述符集合(readfds、writefds、exceptfds)监听读写和异常事件,使用位图管理fd集合,但存在参数多、效率低的问题。poll改进为使用pollfd结构体数组,简化了事件设置和检测,支持更多fd。两者都实现了单线程处理多连接的能力,通过阻塞等待就绪事件再处理,避免了传统一请求一线程模型的并发限制。代码示例展示了如何用select/poll实现基本网络服务流程,包括accept、recv/send等操

2025-09-21 17:23:19 370

原创 0vice-2.1.1-网络io

这篇文章介绍了网络编程中bind、listen、accept和recv等关键函数的使用方法。通过三个版本逐步完善服务器端代码: 基础版本展示了如何绑定端口和监听连接,但只能处理单个客户端请求。 循环版本解决了重复接受连接的问题,但仍然是单线程处理,存在阻塞缺陷。 多线程版本为每个客户端连接创建独立线程,实现了真正的并发处理。 文章特别强调了socket文件描述符(sockfd)与客户端文件描述符(clientfd)的区别,以及INADDR_ANY、端口绑定等关键概念。最后版本通过pthread_create

2025-09-20 12:00:29 348

原创 0voice-1.4.1-cmake

文章摘要 本文介绍了CMake的基本使用方法,包括单目录和多目录项目的配置。CMake作为项目构建工具,能自动生成Makefile等构建文件。单目录项目只需一个CMakeLists.txt文件,通过ADD_EXECUTABLE命令生成可执行文件。多目录项目使用ADD_SUBDIRECTORY添加子目录,并在子目录中放置CMakeLists.txt文件。文章还讲解了INSTALL命令的用法,用于指定文件安装路径。CMake简化了复杂项目的构建过程,通过简洁的配置即可管理依赖关系和构建规则。

2025-09-15 11:29:22 1161

原创 0voice-1.4.1-Makefile

本文介绍了Makefile的基本用法和核心概念。主要内容包括:1) Makefile的基本结构,展示如何定义目标和执行命令;2) Makefile三要素:目标、依赖和命令,通过示例说明递归执行关系;3) 伪对象.PHONY的作用;4) 变量的定义和使用,包括约定俗成的变量名;5) 自动变量$@、$^、$<的用法;6) 使用wildcard和patsubst实现自动化编译;7) 链接第三方库的方法。文中通过多个示例演示了从简单到复杂的Makefile编写技巧,帮助开发者提高编译效率。

2025-09-14 17:44:51 888

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除