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

Java Heap Dump详解

1、什么是 Heap dump?

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

当应用程序出现内存泄漏、内存溢出或性能下降时,堆转储可以提供 invaluable 的信息,帮助开发者定位问题根源。通过分析堆转储,你可以了解哪些对象占用了大量内存,哪些对象存在异常,以及对象之间的引用关系。

2、堆转储的核心内容

堆转储文件包含丰富的信息,主要包括:

信息类别

包含的具体内容

说明

​​堆信息​​

所有存活的对象实例、每个对象的类名、字段值(包括原生数据类型和引用)、对象的大小、对象之间的引用关系、垃圾回收器根对象(GC Roots)的信息

这是堆转储最核心的内容,用于分析内存使用情况

​​类信息​​

类加载器、类名、超类、静态字段信息

帮助理解应用程序中类的结构和分布

​​线程栈信息​​

生成快照时所有线程的调用堆栈(Stack Trace)和局部变量(Local Variables)信息

用于分析线程状态和执行路径

注意:堆转储并不直接包含元空间(Metaspace)的内存细节。元空间存储的类元数据(如类的字节码、方法代码、常量池中的部分信息)的管理方式与堆内存不同。但是,堆转储中会包含在堆中创建的 java.lang.Class对象,这些对象是类在堆中的表示。通过这些 Class对象,你可以了解到类的结构信息(如类名、类加载器、静态字段等),这在一定程度上间接反映了元空间中的内容。如果你需要分析元空间的内存溢出(OutOfMemoryError: Metaspace),通常需要结合其他工具(如 jstat -gc)来监控元空间的使用情况,并检查类加载器的活动。

3、生成堆转储的方法

有多种方法可以生成Java堆转储,下面介绍最常用的几种方式:

3.1 使用JVM参数自动触发

最简单且推荐的方式是配置JVM参数,在发生OutOfMemoryError时自动生成堆转储。

java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump.hprof -jar your-app.jar 

参数说明​​:

  • -XX:+HeapDumpOnOutOfMemoryError:在发生OutOfMemoryError时自动生成堆转储;

  • -XX:HeapDumpPath:指定堆转储文件的保存路径。

优点:无需人工干预,自动在内存问题发生时捕获现场,非常适合生产环境使用。 

3.2 使用jmap工具

jmap是JDK自带的命令行工具,可以随时生成运行中Java进程的堆转储。

# 首先查找Java进程ID
jps -l# 生成堆转储
jmap -dump:live,format=b,file=heapdump.hprof <PID>

参数说明​​:

  • live:只转储存活对象(会触发Full GC);
  • format=b:指定二进制格式;
  • file:指定输出文件路径。​​

优点:

  • 简单易用:只需一个命令即可生成Heap dump;
  • 无需修改应用代码:不需要在代码中添加任何额外的逻辑;
  • 实时生成:可以在应用运行时生成当前内存状态的快照。

缺点:

  • 对性能有影响:生成Heap dump过程中会暂停应用,尤其是大堆内存的应用,影响会更明显;
  • 需要权限:可能需要管理员权限来执行命令。

3.3 使用jcmd工具

jcmd也是JDK自带的命令行工具,可以执行多种JVM诊断命令,包括生成Heap dump。

命令示例:

jcmd <pid> GC.heap_dump heapdump.hprof

优点:

  • 功能强大:jcmd不仅能生成Heap dump,还能执行其他诊断命令。
  • 无需修改应用代码:如jmap一样,不需要在代码中添加任何额外的逻辑。

缺点:

  • 对性能有影响:生成Heap dump过程中会暂停应用。
  • 需要权限:可能需要管理员权限来执行命令。

3.4 使用jvisualvm

jvisualvm是一个图形化的监控和诊断工具,可以方便地生成Heap dump。

操作步骤:

  1. 启动jvisualvm工具。
  2. 选择需要生成Heap dump的Java进程。
  3. 在右键菜单或工具栏中选择“Heap Dump”。

优点:

  • 图形化界面:操作简单直观,适合不熟悉命令行的用户。
  • 实时生成:可以在应用运行时生成当前内存状态的快照。

缺点:

  • 对性能有影响:生成Heap dump过程中会暂停应用。
  • 需要权限:可能需要管理员权限来执行操作。
  • 依赖图形界面:在无图形界面的服务器环境中使用不便。

3.4 代码触发

可以通过在代码中调用HotSpotDiagnosticMXBean来生成Heap dump。

代码示例:

import com.sun.management.HotSpotDiagnosticMXBean;
import java.lang.management.ManagementFactory;public class HeapDumpUtil {public static void dumpHeap(String filePath, boolean live) throws Exception {HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.getPlatformMBeanServer(),"com.sun.management:type=HotSpotDiagnostic",HotSpotDiagnosticMXBean.class);mxBean.dumpHeap(filePath, live);}public static void main(String[] args) throws Exception {dumpHeap("heapdump.hprof", true);}
}

优点:

  • 灵活性高:可以在特定条件下生成Heap dump,比如在捕获到异常时。
  • 自动化:可以集成到应用的监控和诊断逻辑中。

缺点:

  • 对性能有影响:生成Heap dump过程中会暂停应用。
  • 需要修改代码:需要在代码中添加生成Heap dump的逻辑。
  • 依赖特定JVM:HotSpotDiagnosticMXBean是HotSpot JVM特有的,不适用于其他JVM实现。

4、堆转储分析工具及方法

生成堆转储后,需要借助专业工具进行分析。以下是常用工具对比:

工具名称

类型

特点

适用场景

​​Eclipse MAT​​

独立工具

功能强大,提供泄漏嫌疑报告、支配树、直方图等

深度内存分析,定位内存泄漏

​​VisualVM​​

JDK自带

图形化界面,支持实时监控和堆转储分析

初步分析和实时监控

​​jhat​​

命令行工具

JDK自带,通过浏览器查看分析结果

快速简单分析

​​JProfiler​​

商业工具

全面性能分析功能,界面友好

专业性能调优

4.1 使用Eclipse MAT进行深度分析

Eclipse Memory Analyzer (MAT) 是功能最强大的堆转储分析工具,提供了多种分析视角:

  1. ​​泄漏嫌疑报告(Leak Suspects Report)​​:自动分析并给出潜在内存泄漏点;

  2. ​​直方图(Histogram)​​:查看每个类的实例数量和内存占用;

  3. ​​支配树(Dominator Tree)​​:显示保留内存最多的对象,是定位内存问题的关键;

  4. ​​对象查询语言(OQL)​​:允许执行自定义查询查找特定对象。

​​分析技巧​​:

  • 关注​​保留堆(Retained Heap)​​大小而非浅堆(Shallow Heap),保留堆表示回收该对象后能释放的内存总量;

  • 使用"Group By"功能按类加载器或包名分组查看对象;

  • 对比不同时间点的堆转储,观察对象增长趋势。

4.2 使用VisualVM进行分析

VisualVM提供了基本的堆转储分析功能:

  1. 打开VisualVM:jvisualvm;

  2. 选择"File" → "Load" → 导入堆转储文件;

  3. 在"Summary"、"Classes"和"Instances"选项卡中查看不同维度的信息。

VisualVM适合快速浏览堆转储内容,但对于复杂的内存问题,建议使用MAT进行深度分析。

5、注意事项与最佳实践

在使用堆转储时,需要注意以下几点:

  1. ​​性能影响​​:生成堆转储会触发STW(Stop-The-World),​​暂停所有应用线程​​,对线上服务可能有短暂影响,应在低峰期进行。

  2. ​​文件大小​​:堆转储文件可能非常大(通常与JVM堆大小相当),确保磁盘有足够空间。分析大文件也需要为分析工具(如MAT)分配足够内存(可修改其配置文件中的-Xmx参数)。

  3. ​​生产环境:

    推荐配置-XX:+HeapDumpOnOutOfMemoryError参数自动捕获OOM时的堆转储

    避免在高并发期间手动生成堆转储

    考虑使用-XX:+HeapDumpAfterFullGC和-XX:+HeapDumpBeforeFullGC参数结合GC事件生成堆转储

  4. ​​分析技巧​​:

    比较不同时间点的堆转储,观察对象增长趋势

    结合线程转储(Thread Dump)进行综合分析

    注意保留堆(Retained Heap)比浅堆(Shallow Heap)更能反映真实内存影响

   ​​安全考虑​​:堆转储可能包含内存中的敏感数据(如密码),需注意保密和安全处理

7 总结

Java堆转储是诊断内存问题的强大工具,掌握堆转储的生成和分析技巧对于解决内存泄漏、内存溢出等问题至关重要。通过本文的介绍,你应该了解了:

  1. 堆转储是JVM内存的快照,包含对象实例、引用关系等丰富信息;
  2. 有多种生成堆转储的方式,推荐使用-XX:+HeapDumpOnOutOfMemoryError自动捕获OOM时的现场;
  3. Eclipse MAT是功能最强大的分析工具,提供泄漏嫌疑报告、支配树等多种分析视角;
  4. 分析堆转储时关注保留堆大小而非浅堆大小,这更能反映真实内存影响;
  5. 在生产环境使用堆转储需注意性能影响和文件大小问题;

希望本文能帮助你在实际开发中更有效地使用堆转储工具,快速定位和解决内存问题。

相关文章:

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 :查看进程信…...

linux系统编程03-并发:信号

目录介绍1. 信号的概念2. signal3. 信号的不可靠性4. 可重入函数5. 信号的响应过程:过程图6. 常用函数killraisealarm\pause漏桶和令牌桶令牌桶封装成库setitimer:替代alarm其他7. 信号集:sigemptyset8. 信号屏蔽字/pending集的处理:sigprocmask9. 拓展内容sigsuspendsigac…...