当前位置: 首页 > news >正文

低延迟垃圾收集器:挑战“不可能三角”

----------- 先赞后看 👍 效果翻倍 🔥 ----------------

在开始之前,必须再次强调 “不可能三角”内存占用、吞吐量、延迟,三者难以同时完美。

传统的垃圾收集器(如 Serial, Parallel, CMS, G1)在堆内存变大时,停顿时间(Latency)也会显著变长,因为它们总有一些阶段需要“Stop The World”(挂起所有用户线程)来完成清理工作。这对于需要快速响应的应用(如实时交易、大数据平台、微服务)是无法接受的。

Shenandoah 和 ZGC 的目标就是打破这个魔咒,实现在任何堆大小下(比如 4TB),停顿时间都能被严格控制在十毫秒以内,同时尽可能减少对吞吐量的影响。

它们实现这一目标的核心理念是:将最耗时的“对象移动”阶段也并发化。这听起来简单,但实现起来极其复杂,因为在你移动对象的同时,用户线程可能正在读写它。两者解决方案不同,但都极其精妙。


Shenandoah: “搬家队长”与“转发牌”

你可以把 Shenandoah 想象成一个高效的搬家队长,它的核心绝招是 “转发指针”(Brooks Pointer)

1. 它是谁?

  • 由 RedHat 开发,是 OpenJDK 的“养子”,OracleJDK 中不包含它
  • 你可以把它看作是 G1 的激进并发版,架构和 G1 很像(基于 Region 的堆布局),共享部分代码。

2. 它如何实现并发搬家?(核心原理)

想象一下,你要给一个正在营业的超市换货架,顾客还在不停买东西。你怎么做?

Shenandoah 的解决方案是:给每个商品(对象)挂上一个“转发牌”

  1. 准备工作:在每个对象内部,额外开辟一个小空间(在对象头前),里面存着一个地址。正常情况下,这个地址指向对象自己,就像商品上挂着一个写着“我在这里”的牌子。

  2. 开始搬家(并发回收阶段):Shenandoah 启动一个并发线程,悄悄地把需要回收的区域(Region)里的存活对象复制到新区域。这整个过程是不停止营业(用户线程)的

  3. 更新地址牌:对象复制完成后,Shenandoah 只做一件事:修改旧对象上的那个“转发牌”,把上面的地址从“旧对象”改为“新对象”的地址。注意:它不会去更新所有指向这个旧对象的引用

  4. 顾客访问(读/写屏障):这就是关键所在!Shenandoah 在 JVM 中设置了“哨兵”(读屏障和写屏障)。每当用户线程(顾客)要访问一个对象时,哨兵会先拦截这次访问,检查一下这个对象上的“转发牌”。

    • 如果牌子指向自己:说明没搬过家,直接访问。
    • 如果牌子指向别处:说明这个对象是旧对象,已经搬走了。哨兵会自动地、悄悄地根据牌子上的新地址,去访问新对象,并把这次访问的结果返回给用户。同时,它还会顺手把这个引用本身的值更新成新地址(只有第一次需要转发,后续就直接访问新对象了)。这个过程对用户线程是完全透明的。

为什么能控制停顿?
因为最耗时的“复制对象”和“更新引用”工作都被并发线程和“哨兵”(屏障)分担了。那些必需的短暂停顿(初始标记、最终标记等)只处理少量核心信息(GC Roots),与堆大小无关,所以非常短。

3. 优缺点

  • 优点:停顿时间极短,与堆大小脱钩。
  • 缺点“哨兵”(尤其是读屏障)带来的开销非常大。因为每一次对象读取操作都要经过这个检查步骤。这导致 Shenandoah 的吞吐量损失通常是三者中最大的

ZGC: “魔法指针”与“自愈能力”

ZGC 的思路更加科幻。它不像 Shenandoah 那样给对象挂牌子,而是直接给指针(内存地址)施了魔法,它的核心是 染色指针(Colored Pointer)

1. 它是谁?

  • 由 Oracle 亲儿子开发,血统纯正,OpenJDK 和 OracleJDK 都包含。
  • 它的设计理念源自传说中的 Azul C4 收集器,非常前沿。

2. 它如何实现并发搬家?(核心原理)

继续用超市搬家的比喻。ZGC 的做法不是挂牌子,而是它有一种“魔法墨水”,可以直接在写有商品位置的导购图(指针)上做标记

  1. 魔法墨水:在 64 位系统中,我们其实用不了那么大的地址空间。ZGC 巧妙地利用了指针中未使用的比特位(比如高 4 位)来存储信息。这些信息包括:对象是否被标记、是否属于待回收集合、是否已被移动过。
    所以,ZGC 的指针不仅仅是地址,它本身就是携带元数据的。通过这个指针,ZGC 不用访问对象就能知道它的状态。

  2. 地址重映射(魔法地图):光在指针上写墨水,CPU 可不认账,它会把这些位也当成地址的一部分,会找错地方。ZGC 的解决方案是 多重映射:它通过操作系统的内存管理功能,将好几块不同的虚拟内存地址空间(比如,指针标志位是 0010 的地图和 0000 的地图)都映射到同一块真实的物理内存上。这样,无论指针上的“魔法墨水”怎么写,最终都能通过这张“魔法地图”找到正确的物理对象。

  3. 并发搬家与自愈:当 ZGC 要移动一个对象时:

    • 它并发地将对象复制到新 Region。
    • 它在旧对象的位置上留下一个“转发地址”(类似于转发表)。
    • 最关键的一步来了:当用户线程试图访问一个已经被移动的旧对象时,ZGC 的“哨兵”(读屏障)会被触发。这个哨兵一看指针上的“魔法墨水”(标志位),就知道“哦,这个对象搬走了”。于是它:
      1. 去旧位置上的“转发地址”里找到新地址。
      2. 直接把这个线程手中的指针值更新成新地址(并修正标志位)!
      3. 再去新地址访问对象。

    这个过程被称为 “自愈”(Self-Healing)这次访问之后,这个引用本身就已经被修正了,下次再访问就是直接访问新对象,没有任何额外开销。 这是它与 Shenandoah 每次访问都可能需要检查的关键区别。

3. 优缺点

  • 优点
    1. 停顿时间极短,同样与堆大小无关。
    2. “自愈”能力使得运行时开销远小于 Shenandoah,因此吞吐量表现通常比 Shenandoah 好得多,甚至接近 G1。
    3. 无需像 G1 那样维护记忆集,节省了内存。
  • 缺点
    1. 实现极其复杂,严重依赖底层操作系统特性(如多重映射)。
    2. 不支持分代收集(目前),可能导致浮动垃圾较多,抗突发流量能力稍弱。不过这是工程选择,并非技术不能实现。

总结与对比:你该选谁?

特性 Shenandoah ZGC
核心原理 转发指针 (Brooks Pointer) 染色指针 (Colored Pointer)
实现方式 在对象头前加额外指针 利用指针的未使用位存储元数据
关键机制 读屏障 + 写屏障 读屏障(目前无需写屏障)
引用更新 每次访问都可能需要转发检查 “自愈”,仅第一次访问慢
性能特点 低延迟,但吞吐量损失较大 低延迟,吞吐量损失很小
血缘关系 G1 的并发升级版 Azul C4 的 OpenJDK 实现
支持现状 仅 OpenJDK 包含 OpenJDK OracleJDK 都包含

如何选择?

  • 追求极致低延迟,且运行在 OpenJDK 上:两者都是绝佳选择。
  • 同时非常关心吞吐量性能:优先尝试 ZGC,它的性能表现通常更均衡。
  • 需要使用 OracleJDK 并获得商业支持:只能选择 ZGC
  • 应用分配速率极高,堆内存巨大:目前两者都可能因为不分代而面临浮动垃圾的压力,需要预留足够堆内存。这是所有不分代收集器的共性问题。

总而言之,Shenandoah 和 ZGC 都代表了 JVM 垃圾收集技术的最高水平,它们通过不同的魔法将延迟降低到了前人无法想象的程度。ZGC 凭借其“魔法指针”和“自愈”能力,在实现上更显优雅,性能开销也更小,是目前更受瞩目的未来之星。

相关文章:

低延迟垃圾收集器:挑战“不可能三角”

----------- 先赞后看 👍 效果翻倍 🔥 ---------------- 在开始之前,必须再次强调 “不可能三角”:内存占用、吞吐量、延迟,三者难以同时完美。 传统的垃圾收集器(如 Serial, Parallel, CMS, G1)在堆内存变大时,停顿时间(Latency)也会显著变长,因为它们总有一些阶…...

Java Heap Dump详解

1、什么是 Heap dump? Java堆转储(Heap Dump)是Java虚拟机(JVM)在某一时刻内存使用情况的快照,它包含了该时刻所有对象的实例信息、类信息、字段值和引用关系等数据。堆转储文件通常以 .hprof或 .heap为扩展名,是诊断内存问题的关键工具。 当应用程序出现内存泄漏、内存…...

软件逆向入门理论

软件逆向入门理论目录大脉络软件的构成软件逆向是一种技术手段,它能达成的目的:分析该软件的漏洞; 分析这个软件,想作为跳板获取其他软件、系统的更高权限; 分析该软件的安全性、可靠性等; 分析该软件的构成;下面粗浅的进行软件逆向入门,将选择经典的x86平台下的软件来…...

鸿蒙应用开发从入门到实战(七):ArkTS组件声明语法

《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容、欢迎关注!​本文从界面制作从组件声明开始,通过一个相对简单的案例来系统的学习 ArkTS 声明组件的语法。大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发…...

P1115 最大子段和

P1115 最大子段和 妙#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 2e5 + 10;int n,a[maxn],dp[maxn]; int ans = -100010;signed main(){// freopen("in","r",stdin);ios::sync_with_stdio(0);cin >&g…...

麒麟系统关闭防火墙

有时远端连接数据库时出现 连接超时 ,则有可能是 麒麟系统的防火墙 开启了,最简单的方法是关闭防火墙#查看防火墙状态 sudo systemctl status firewalld #检查 firewalld 是否运行 #或 sudo systemctl status ufw #检查 ufw 是否运行 (部分系统适用)#临时停止防火…...

P14003 [eJOI 2025] Reactions 解题报告

题目意思 随便找的题目,树状数组和离散化,很板子的东西不会细说 给定两个数组 \(D_i,T_i\),求 \(\max\limits_{i=1}^{n}{(\sum\limits_{j=i}^n[\sum\limits_{k=i}^jD_k \ge T_j])}\)。 思路 首先如果你将上面那个式子分解或者稍稍理解一下就能想到将区间加和,区间问题转化为…...

计算机科学入门

计算机科学入门 总结:知识点体系图 graph TDA[C++基础知识点] --> B[计算机发展史]A --> C[操作系统]A --> D[硬件组成]A --> E[编程语言与开发]A --> F[基本操作]B --> B1[重要人物:图灵/冯诺依曼]B --> B2[历史里程碑:ENIAC/103机]B --> B3[奖项:…...

Windows Server 2019开启远程桌面无法远程处理

故障现象 Windows Server 2019开启了远程桌面但是无法远程 Telnet对应端口3389也不通 故障原因 远程服务Down了 修复 到服务管理重启远程服务Remote Desktop Service如果提示病毒则关闭本机自带杀毒...

英语_阅读_This makes me crazy_待读

My parents know little about high-tech products. 我的父母对高科技产品几乎一无所知。 Computers, mobile phones, iPads ... They cant use any of them! 电脑、手机、平板……他们一个都不会用! Every time Im home for a holiday, my parents ask me how to take a phot…...

一位华裔数学家40年目睹之怪现状:美国学生的数学为什么那么差?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087最近在《知识分子》上读到一篇特写《数学战争警示录:我们需要什么样的数学教育?》,颇有感触。在这俄乌战争已持续三年有余、…...

这些年轻科学家不再满足于“追赶美国”

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选)在很长一段时间里,硅谷是全球AI人才的终点站。而中国曾是最大的人才输出地,把一代又一…...

英语_阅读_

My parents know little about high-tech products. 我的父母对高科技产品几乎一无所知。 Computers, mobile phones, iPads ... They cant use any of them! 电脑、手机、平板……他们一个都不会用! Every time Im home for a holiday, my parents ask me how to take a phot…...

聊聊理想的影像团队

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087这实际上是一个招聘贴,期望能捞一些理念相同的同道中人,一起做一些事情,为视觉中枢在 AI 浪潮里留下点什么,为 AI 做出点什…...

黑芝麻智能上半年亏损超7亿 CEO单记章去年薪酬高达1.66亿

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 字(可选)国内“智驾芯片第一股”黑芝麻智能国际控股有限…...

英语_阅读_BMI_待读

56. What is Chinas recent success in BMI? 中国在脑机接口方面最近的成功是什么? A paralyzed patient was able to drink water by controlling a glove with his brain. 一位瘫痪患者能够通过用大脑控制手套来喝水。57. What is the external device in the recent exper…...

Flutter数据可视化:fl_chart图表库的高级应用

Flutter数据可视化:fl_chart图表库的高级应用本文基于BeeCount(蜜蜂记账)项目的实际开发经验,深入探讨如何使用fl_chart构建美观、交互式的财务数据可视化图表。项目背景 BeeCount(蜜蜂记账)是一款开源、简洁、无广告的个人记账应用。所有财务数据完全由用户掌控,支持本地存…...

教材大纲-Python

版本一:教材大纲-Python 1 编程世界初探 1.1 编程世界初探 1.2 初识Python语言 1.3 迈出Python编程的第一步 2 走近算法与Python基础 2.1 走近算法:流程图 2.2 触摸生活中的标志:turtle 2.3 初探Python基础知识:常见数据标识与语句 2.4 体会程序编写规范:命名与注释 3 Pyt…...

2025 年 PHP 常见面试题整理以及对应答案和代码示例

2025 年 PHP 常见面试题整理以及对应答案和代码示例 PHP 面试通常会考察基础知识(数组、OOP、错误处理)和现代特性(类型、属性、枚举)。关键是要展示你能写出简洁、可预测的代码,同时了解 PHP 8+ 的新变化。 我整理了以下一些常见 PHP 可能面试的。每个问题都有简洁的答案…...

0130_中介者模式(Mediator)

中介者模式(Mediator) 意图 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 UML 图优点降低耦合度:将对象间的一对多关联转变为一对一的关联,减少对象间的依赖 集中控制:将交互逻辑集…...

零门槛入局 AI 创业!瓦特 AI 创作者平台,让普通人轻松抓住风口

刷短视频时,总被 AI 生成的炫酷图片、洗脑音乐吸引;和朋友聊天,大家都在热议 “AI 变现”—— 你是不是也想搭上这波 AI 浪潮,却总被 “要懂技术”“需复杂开发” 拦住脚步?别担心,瓦特 AI 自媒体创作者平台早已为普通人铺好赛道:无需技术基础、一键部署专属平台,轻松拥…...

基环树

一.首先定义看定义 树是N个点N-1条边的联通图 基环树是N个点N条边的连通图 不保证联通就都是森林 所以基环树就是在树上加了一条边,使得树上有了一个环 基环树的常见处理方法把环上的一条边单独处理, 这样其余部分依然是一棵树 把环单独处理, (缩成一个点)这样其余部分依然…...

2025介绍1个简单好用免费的版权符号复制生成网站

最近安装了claude code,这编程真是很爽啊,直接把需求告诉他就行了,很快,已经彻底放弃cursor啦!顺便做了个复制版权符号的网站https://copyrightsymbol.app 一句话介绍网站: 复制版权符号,和版权符号相关的一切小功能,免费无登录 网站地址: https://copyrightsymbol.ap…...

【GitHub每日速递 250917】69k 星标!这个 MCP 服务器大集合,竟能解锁 AI 无限可能?

原文:【GitHub每日速递 250917】69k 星标!这个 MCP 服务器大集合,竟能解锁 AI 无限可能?爆火!garak——大语言模型漏洞扫描神器全揭秘 garak 是一个用于检测大语言模型漏洞的扫描工具。简单讲,它能自动发现AI模型中的安全弱点和潜在风险。适用人群:AI安全研究人员、模型…...

WPF 通过 WriteableBitmap 实现 TAGC 低光增强效果算法

我在寻找将一些拍摄出来的比较暗的图片进行光亮增强的算法,用于处理我出门拍的一些照片。我从博客园找到了 Imageshop 大佬记录的伊拉克团队的TAGC(低光增强效果)算法实现,通过阅读大佬的博客和对应的论文,基于 WPF 的 WriteableBitmap 实现 TAGC 低光增强效果算法开始之前…...

最新学王点读笔破解教程2025

本教程适用于已经更换为动态密码的学王词典笔食用,2025最新款实测有效 要求: 1.设置-关于界面里有JXW一项(我的jxw版本2025.8 已经屏蔽了之前所有的破解路径,甚至输入法的设置也被精简了) 2.连续点击型号无法进入开发者选项,点击序列号+版本号也不行 不要连续点击版本号!!…...

css-3

css的基础选择器css的关系选择器css的文本样式css的继承性css的分组选择器伪类选择器css的属性选择器...

基于 RQ-VAE 的商品语义 ID 构建及应用案例

在数字经济快速发展的今天,推荐系统已成为连接用户与商品的重要桥梁。传统推荐系统常面临信息损失大、泛化能力弱等问题,尤其在处理冷启动商品和捕捉用户精细偏好方面表现不足。近年来,生成式检索技术的兴起为解决这些难题提供了新思路,其中残差量化变分自编码器(RQ-VAE)…...

U3D 动作游戏开发中数学知识的综合实践案例

Unity 作为当前主流的跨平台游戏引擎,在动作游戏开发领域展现出强大的技术优势。动作游戏以其流畅的角色动画、精准的操作反馈和复杂的物理交互为核心体验,这些特性的实现高度依赖数学知识的深度应用。从角色移动轨迹到摄像机视角控制,从碰撞检测到技能特效的空间定位,数学…...

删除根目录前的准备

经常有群友在问正经问题的时候发rm -r /的图片。这不仅毫无信息量,而且容易误导新手,造成不可挽回的后果。这时如果我们真的rm -r /,并且用手机录像发给他们,也许能给他们带来一些小小的震撼。但是以下准备工作必不可少,否则欲哭无泪的可能就是自己了。备份好所有数据。从…...

Linux服务器部署FRP及配置Token

Linux服务器部署0.64.0版本frp并配置systemctl,Windows安装frpmgr管理多服务器多连接。相关软件 fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. Release v0.64.0 fatedier/frp koho/frpmgr: A user-frie…...

Player Mini MP3 模块播放音乐

资料下载链接:https://sourl.cn/qyLfwP 1、概述 该模块是一款小巧且价格低廉的 MP3 模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为 Arduino UNO 或者是任何有串口的单片机的一个模块。模块本身完美的集成了 MP3、WAV、WMA…...

最大子列和问题

1.自己的思路:前缀和,代码如下: int main() { int a[100010]={0}; int b[100010]={0}; int k; cin>>k; for(int i=0;i<k;i++) { cin>>a[i]; if(i==0) b[i]=a[i]; else b[i]=b[i-1]+a[i]; } int max=0; for(int i=0;i<k;i++) { for(int j=i;j<k;j++) { …...

RSA 共模攻击

模运算: 两个数相除的余数。共模攻击常见题目说明:共模攻击就是:同一个 RSA 模数 n 下,不同公钥指数加密同一明文时,可以通过求贝祖系数直接算出明文。我们来深入讲解 RSA 共模攻击(Common Modulus Attack)。从原理、条件、数学推导到实际利用,逐步推进。 1️⃣ 背景概…...

计组博文

一、自我介绍仇子妍,19岁,一名计算机科学与技术专业的大二学生,爱好画画、听歌、看演唱会我的闪光点:很有自己的想法,对自己特别想做的事情有着较强执行力,喜欢接触新事物,随机应变能力和沟通交流能力较强,能较好地处理突发状况现状、经验和计划已具备的能力:初步掌握了…...

week1task

编码规范:(1)标识符命名便于阅读和理解。(2)代码格式整齐,缩进规范。控制每行最大长度不超120个字符,超过时换行并适当缩进(3)尽量涵盖完善代码的异常处理进制。(4)添加注释以给出必要的代码说明。(5)优化算法,对于时间复杂度O(n)一般可以优化到O(nlog₂n) 《数…...

《原子习惯》-读书笔记3

2025.09.16 Day3 1、然而,如果你不断重复这些动作的话,证据就会累积,你的自我形象也将随之转变。随着时间的推移,一次性经历的影响会逐渐消失,而习惯的影响则会日益增强,这意味着你的习惯提供了塑造你身份的大部分证据。2、养成习惯的过程实际上就是成为你自己的过程。3、…...

Linux系统编程笔记总结

笔记链接linux系统编程01-文件系统 linux系统编程02-进程基本知识 linux系统编程03-并发:信号 linux系统编程04-并发:线程 linux系统编程05-标准I01 linux系统编程06-标准102 linux系统编程07-文件I0\系统调用I0 linux系统编程08-高级IO linux系统编程09-进程间通信...

Java SE 25新增特性

Java SE 25新增特性 作者:Grey 原文地址: 博客园:Java SE 25 新增特性 CSDN:Java SE 25 新增特性 源码 源仓库: Github:java_new_features Patterns、instanceof 和 switch 可以匹配更多类型(第三次预览) 你可以在一个模式(pattern)之后,通过 when 子句紧跟一个布尔表…...

linux系统编程09-进程间通信

目录介绍1. 管道匿名管道命名管道2. IPC:XSI → SysVMessage QueuesSemaphore ArraysShared Memory3. 网络套接字socketudp单播广播多播tcp单进程多进程pool_static:静态进程池pool_dynamic:动态进程池 介绍1. 管道命名管道就是一块磁盘上的文件,不同进程通过读写该文件进行…...

谈谈语法糖

Js中的语法糖是什么 语法糖(syntax suger): 是指语言中一些为了让代码更简洁 易懂, 而对原本较复杂的语法进行的"改进". 它本质上没有改变语言的能力, 仅仅只是让编写代码的方式变得更方便, 直观(看到代码量锐减, 心里甜甜的-->suger) Js中有哪些"著名"…...

2025年,秋天与冬天(长期)

2025年,秋天与冬天(长期)因为懒得写,碎碎的,不如收集在一起9.17 0:11 仍旧只有自己一人 我好喜欢狐狸 也许要写一个有狐狸的童话...

ssl rsa解密

openssl rsautl -decrypt -in key.txt -inkey d.key -out flag.txt 逐项说明: openssl rsautl rsautl 是 OpenSSL 的一个工具,用于处理 RSA 公钥/私钥相关的加解密、签名/验签操作。 注意:这个工具主要用于较小的数据块,因为 RSA 本身只能直接加密比密钥长度小的数据(比如…...

linux系统编程05-标准IO1

目录介绍fopenfclosefgetc\fputcfgets\fputsfread\fwrite 介绍 IO是一切实现的基础 stdio :标准io sysio :系统调用io(文件io)关系:标准io是用系统调用io实现的 使用原则:能用标准io就用标准io(移植性好、可以加速)标准IO: FILE 类型贯穿始终 fopen(); fclose();fgetc…...

linux系统编程07-文件IO\系统调用IO

目录介绍文件描述符的概念open\closeread\write\lseek标准IO与系统调用IO的区别其他内容dup\dup2文件同步fcntl\iocntl 介绍文件描述符的概念备用图文件是一块磁盘空间,有一个编号 inode ,每次 open 一个文件时,会创建一个结构体,链接 inode ,存储文件的信息,结构体的首地…...

linux系统编程06-标准IO2

目录printf\scanf函数族fseek\ftell\rewindgetline临时文件 printf\scanf函数族 printf一族: man 3 printf int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int dprintf(int fd, const char *format, ...); int sprintf(char *st…...

linux系统编程08-高级IO

目录介绍1. 非阻塞IO数据中继:有限状态机实现数据中继引擎:封装成库2. IO多路转接selectpollepoll3. 其他读写函数4. 存储映射IO:mmap5. 文件锁6. 管道实例:手写管道 介绍1. 非阻塞IO 数据中继:有限状态机编程:简单流程:自然流程是结构化的 复杂流程:自然流程是非机构化…...

第03周 预习、实验与作业:面向对象入门2与类的识别

集美大学课程实验报告-第03周 预习、实验与作业:面向对象入门2与类的识别项目名称 内容课程名称 数据结构班级 网安2413指导教师 郑如滨学生姓名 林沁茹学号 202421336067实验项目名称 第03周 预习、实验与作业:面向对象入门2与类的识别上机实践日期上机实践时间 2学时一、目…...

第8篇、Kafka 监控与调优实战指南

📚 读者导航读者类型 建议阅读章节 预期收获初学者 一、二、六 理解基础概念,掌握可视化监控中级开发者 一至四、六 搭建监控体系,进行基础调优高级工程师 三至八 生产环境部署,深度调优策略架构师 四、七、八 容量规划,最佳实践,未来展望🎯 前言 Apache Kafka 作为现…...

linux系统编程02-进程基本知识

目录1. pid2. 进程的产生:fork3. 进程的消亡及释放资源:wait4. exec函数族综合例子:mybash5. 用户权限和组权限:setuid6. 观摩课7. system8. 进程会计9. 进程时间10.守护进程11. 系统日志1. pidpid_t : 进程号,一般是int_64,不同机器不同,有限资源 ps axf :查看进程信…...