jvm常用密令、jvm性能优化、jvm性能检测、Java jstat密令使用、Java自带工具、Java jmap使用
1.jps
是Java虚拟机的进程状态工具,用于列出正在运行的Java进程
jps命令的使用:cmd打开直接jps
1.1不带参数:
jps
默认情况下,列出所有正在运行的 Java 进程的进程 ID 和主类名。
1.2 -l:显示完整的主类名或 JAR 文件路径。
jps -l
这将显示完整的主类名或 JAR 文件路径,而不仅仅是主类名。
1.3 -m:显示传递给主类 main 方法的参数。
jps -m
这会显示传递给 Java 主类 main 方法的参数。
1.4 -v:显示传递给 JVM 的参数。
jps -v
这会显示传递给 Java 虚拟机的参数,包括堆大小、GC 策略等。
1.5 -q:仅显示进程 ID,不显示类名或 JAR 文件路径。
jps -q
这将只显示 Java 进程的进程 ID,适合用于脚本处理或者需要仅获取 ID 的情况。
1.6 -Joption:传递参数给 jps 命令本身运行的 JVM。
jps -J-Xmx1024m
这会将 -Xmx1024m 参数传递给 jps 命令本身运行的 JVM。
jps -lvm 等价于Linux的ps aux | grep java
2.jstat
是Java虚拟机统计监视工具,用于监视Java虚拟机的内存、类装载、垃圾回收等统计信息,下面是使用:
jstat [options] <vmid> [<interval> [<count>]]
options
:jstat
命令的选项,用于指定要监视的内容,如类加载、垃圾回收等。vmid
:Java虚拟机进程的ID,即使用jps
命令获取到的进程ID。interval
:可选参数,指定两次输出之间的时间间隔(以毫秒为单位),默认为1000毫秒。count
:可选参数,指定输出次数,如果不指定则表示持续输出。
下面是常用参数:
类加载统计:
-class:显示类加载、卸载信息。
-gcnew:显示新生代 GC 统计信息。
-gcold:显示老年代 GC 统计信息。
-gccapacity:显示堆容量以及已用空间统计。
GC 相关:
-gc 或 -gcutil:显示 GC 相关信息,包括各区域的使用情况、GC 时间等。
-gccause:显示 GC 的原因,包括各种 GC 事件的发生次数和持续时间。
垃圾收集器相关:-gcnew、-gcnewcapacity、-gcold、-gcoldcapacity:分别显示新生代和老年代的 GC 统计信息和容量信息。
编译统计:-compiler:显示 JIT 编译器统计信息。
类装载统计:-class:显示类装载、卸载统计信息。
JIT 编译器统计:-compiler:显示 JIT 编译器统计信息。
线程统计:-thread:显示线程统计信息,如线程数量、状态等。
IO 统计:-gc:显示 IO 统计信息,如文件打开数、读写字节数等。
系统统计:-gccause:显示系统相关的统计信息,如系统时间、CPU 使用率等
示例:
下面是输出中各列的含义:
S0C
:幸存者区0的容量(KB)S1C
:幸存者区1的容量(KB)S0U
:幸存者区0的使用量(KB)S1U
:幸存者区1的使用量(KB)EC
:伊甸园区的容量(KB)EU
:伊甸园区的使用量(KB)OC
:老年代的容量(KB)OU
:老年代的使用量(KB)MC
:元空间(Metaspace)的容量(KB)MU
:元空间的使用量(KB)CCSC
:压缩类空间的容量(KB)CCSU
:压缩类空间的使用量(KB)YGC
:年轻代垃圾回收次数YGCT
:年轻代垃圾回收总耗时(秒)FGC
:老年代垃圾回收次数FGCT
:老年代垃圾回收总耗时(秒)GCT
:垃圾回收总耗时(秒)
- Loaded: 自JVM启动以来加载的类的数量。
- Bytes: 自JVM启动以来加载的类的总大小(以KB计)。
- Unloaded: 自JVM启动以来卸载的类的数量。
- Bytes: 自JVM启动以来卸载的类的总大小(以KB计)。
- Time: 自JVM启动或上次重置统计信息以来的时间(以秒计)。
S0: 第一个幸存区(Survivor Space 0)的使用比例(%)。
S1: 第二个幸存区的使用比例(%)。
E: Eden区的使用比例(%)。
O: 老年代(Old Generation)的使用比例(%)。
M: 元空间(Metaspace)的使用比例(%)。
CCS: 压缩类空间的使用比例(%)。
YGC: 自JVM启动以来Young Generation垃圾收集的次数。
YGCT: 自JVM启动以来Young Generation垃圾收集所用的时间(秒)。
FGC: 自JVM启动以来Full GC(Full Garbage Collection)的次数。
FGCT: 自JVM启动以来Full GC所用的时间(秒)。
GCT: 自JVM启动以来总的垃圾收集时间(秒)。
LGCC: 上次GC的原因(Last GC Cause)。
GCC: 上次GC的触发事件(GC Cause)。
3.jmap:用于生成堆转储文件(Heap Dump)或查看堆内存的命令行工具
3.1生成堆转储文件:jmap -dump:format=b,file=heapdump.hprof <pid>
生成一个堆转储文件(以 heapdump.hprof
命名),该文件包含指定 Java 进程 <pid>
的堆内存信息
3.2查看堆内存使用情况:jmap -heap <pid>
显示指定 Java 进程 <pid> 的堆内存配置和使用情况
例:jmap -heap 27796
堆配置信息:
最小堆空闲比率:0
最大堆空闲比率:100
最大堆大小:4211081216 字节 (约4016.0MB)
新生代大小:88080384 字节 (约84.0MB)
最大新生代大小:1403518976 字节 (约1338.5MB)
老年代大小:176160768 字节 (约168.0MB)
新生代比率:2
幸存者区比率:8
元空间大小:21807104 字节 (约20.796875MB)
压缩类空间大小:1073741824 字节 (约1024.0MB)
最大元空间大小:17592186044415 MB
G1 堆区大小:0 字节 (0.0MB)
堆使用情况:
PS 年轻代:
Eden 区:
容量 = 1054343168 字节 (约1005.5MB)
已使用 = 973629136 字节 (约928.525MB)
空闲 = 80714032 字节 (约76.974MB)
使用率 = 92.34%
From 区:
容量 = 68681728 字节 (约65.5MB)
已使用 = 32579448 字节 (约31.07MB)
空闲 = 36102280 字节 (约34.43MB)
使用率 = 47.44%
To 区:
容量 = 117440512 字节 (约112.0MB)
已使用 = 0 字节 (0.0MB)
空闲 = 117440512 字节 (约112.0MB)
使用率 = 0.0%
PS 老年代:
容量 = 424148992 字节 (约404.5MB)
已使用 = 149173344 字节 (约142.26MB)
空闲 = 274975648 字节 (约262.24MB)
使用率 = 35.17%
其他信息:
已内部化的字符串数:45039
已使用的内部化字符串总字节数:4570928
3.3查看内存映像详细信息:jmap -histo[:live] <pid>
打印指定 Java 进程 <pid> 的堆中对象的统计信息。
:live 选项只统计活动对象(即尚未被垃圾回收器回收的对象)
例:jmap -histo:live 27796
3.4查看类加载器信息:jmap -clstats <pid>
打印指定 Java 进程 <pid>
中的类加载器信息,包括每个类加载器加载的类数量和内存使用情况
例:jmap -clstats 27796
3.5打印 Shared Object 内存映像:jmap -finalizerinfo <pid>
打印正在等待 Finalizer 线程执行的对象信息
例:jmap -finalizerinfo 27796
调试器成功附加。 检测到服务器编译器。 JVM 版本是 25.311-b11 待终结的对象数量:0
3.6查看 Java 进程的运行时参数:jmap -flags <pid>
打印 Java 进程 <pid>
的运行时参数
3.7查看 GC 状态:jmap -GC <pid>
4.jstack:jstack
是 Java 的一个诊断工具,用于生成 Java 进程的线程转储信息。它可以用来查看 Java 进程中所有线程的堆栈跟踪,帮助分析线程间的互相调用关系以及可能的死锁情况。以下是一些常用的 jstack
命令及其说明
4.1生成线程转储:jstack <pid>
生成 Java 进程 <pid>
的线程转储信息,并将其输出到控制台。这会列出每个线程的堆栈跟踪信息,包括线程状态、调用栈等
4.2生成线程转储到文件:jstack -F -l <pid> > threaddump.txt
使用 -F
参数可以在 Java 进程响应慢或者已经死锁的情况下强制生成线程转储。
-l
参数会输出更详细的本地变量信息。
将转储信息重定向到 threaddump.txt
文件中。
4.3远程连接并生成线程转储:jstack -l <hostname>:<port>
对指定主机 <hostname>
和端口 <port>
上运行的 Java 应用程序生成线程转储信息。
4.4查看线程信息:jstack -m <pid>
输出 Java 进程 <pid>
中所有线程的 Java 和本地方法堆栈信息。
4.5死锁检测:jstack -l <pid> | grep deadlock 或 jstack -l <pid> | findstr deadlock
使用 grep
命令结合 jstack
的输出来检测是否存在死锁线程。
5.jcmd:用于向正在运行的Java进程发送诊断命令的命令行工具,功能包括生成堆转储、查看线程堆栈、GC日志等
5.1.列出当前正在运行的 Java 进程:jcmd -l
列出当前系统上正在运行的 Java 进程的 PID 和名称
5.2生成线程转储:jcmd <pid> Thread.print
生成 Java 进程 <pid>
的线程转储信息,类似于 jstack <pid>
命令
5.3打印 JVM 运行时参数:jcmd <pid> VM.flags
打印 Java 进程 <pid>
的 JVM 运行时参数。
jcmd 27796 VM.flags
5.4查看 Java 进程的详细信息:jcmd <pid> VM.version
打印 Java 进程 <pid>
的 Java 版本信息和 JVM 版本信息
5.5执行 JVM 命令:jcmd <pid> <command>
执行特定的 JVM 命令或者诊断命令,例如 GC.class_stats
、Thread.print
等。具体可用的命令取决于 JVM 的实现版本和配置
5.6执行 Java Flight Recorder(JFR)操作:
jcmd <pid> JFR.start
jcmd <pid> JFR.stop
启动或停止 Java Flight Recorder(JFR)事件记录器,用于实时监控和记录 Java 应用程序的性能信息
5.7执行自定义的诊断命令:jcmd <pid> PerfCounter.print
执行自定义的诊断命令,例如打印性能计数器的当前值
jcmd 27796 PerfCounter.print
5.8使用 jcmd
的插件:jcmd <pid> help
打印出可用命令和插件的帮助信息,列出每个命令的用法和选项
6.jinfoJ: VM信息查看工具,查看VM的各种配置信息,例如系统属性、堆大小、GC 策略等
6.1查看 Java 进程的所有系统属性:jinfo -sysprops <pid>
显示 Java 进程 <pid>
的所有系统属性,包括通过 -D
参数设置的系统属性和默认系统属性
jinfo -sysprops 27796
6.2查看 Java 进程的 JVM 参数:jinfo -flags <pid>
显示 Java 进程 <pid>
使用的 JVM 参数,包括启动时显式设置的参数和默认的 JVM 参数
jinfo -flags 27796
6.3查看特定 JVM 参数的值:jinfo -flag <flagname> <pid>
显示 Java 进程 <pid>
中特定 JVM 参数 <flagname>
的当前值。
-flags:列出当前 Java 进程的所有 JVM 参数和标志。
-flag <flagname>:查看指定 <flagname> 的当前设置。
-flag [+|-]<flagname>:设置或清除指定 <flagname> 的标志
例如:jinfo -flag UseG1GC 27796
这将显示 Java 进程 ID 为 12345 的 JVM 参数 UseG1GC
的值
6.4动态修改 JVM 参数:jinfo -flag [+|-]<flagname> <pid>
在运行时动态修改 Java 进程 <pid>
中的 JVM 参数 <flagname>
的值。
例如:jinfo -flag +PrintGCDetails 12345
这将在 Java 进程 ID 为 12345 的 JVM 中启用 GC 详细日志输出
7.Java VisualVM 确实是一个综合的IVM监控工具,查看VM基本情况、做栈和堆转储、做内存和CPUprofiling等
7.1实时监控和分析:提供实时的 CPU 使用率、堆内存使用情况、线程活动等数据,通过图形化界面直观展示。
7.2堆和内存分析:可以生成和分析堆转储(Heap Dump),帮助开发人员诊断内存泄漏和内存使用问题。
7.3线程分析:显示运行中的线程状态、堆栈信息,支持死锁检测和线程分析。
7.4性能分析:提供性能分析工具(Profiler),帮助定位性能瓶颈和优化代码。
7.5JVM 参数调优:允许动态修改 JVM 参数,如堆大小、GC 策略等,以及执行 Java Flight Recorder(JFR)事件记录器。
7.6远程监控:支持通过 JMX 协议远程连接和监控 Java 应用程序。
7.7插件支持:可以安装各种插件扩展功能,如 Visual GC 插件用于详细的垃圾回收分析等。
7.8多平台支持:可以在 Windows、Linux 和 macOS 等操作系统上运行,并提供一致的监控和分析功能。
8.jconsole:JMX兼容的图形工具,用于监控IVM基本情况,查看MBean
主要特点:
8.1实时监控:JConsole 允许你实时监控 Java 应用程序的性能指标,如 CPU 使用率、堆内存使用情况、线程数量等。
8.2线程监控:可以查看 Java 应用程序中运行的线程及其状态,包括堵塞状态、等待状态等,有助于诊断线程相关的性能问题。
8.3堆内存分析:提供堆内存使用情况的实时数据,包括堆的大小、已使用空间、对象数量等信息,帮助开发人员了解应用程序的内存消耗情况。
8.4垃圾回收监控:可以监控 Java 应用程序的垃圾回收活动,包括不同代的内存使用情况、GC 次数和效率,帮助优化内存管理策略。
8.5类加载信息:提供 Java 应用程序中加载的类的详细信息,包括类加载器、已加载类的数量和类加载情况的历史统计。
8.6MBean 查看与操作:JConsole 允许你浏览和操作注册在 MBean 服务器上的 MBean,可以查看和修改应用程序的运行时配置和状态。
如何使用 JConsole:
1.启动 JConsole:JConsole 是 JDK 自带的工具,可以在 JDK 的 bin 目录下找到 jconsole.exe(Windows)或 jconsole(Linux/Mac),直接运行即可。
2.连接到 Java 应用程序:运行 JConsole 后,选择要监视的 Java 应用程序进程,通常是在“本地进程”选项卡下可以找到。也可以手动连接到远程服务器上运行的 Java 应用程序。
3.监控和分析:在 JConsole 的不同选项卡中,可以查看各种性能指标和资源使用情况的实时数据。可以通过这些数据来分析应用程序的运行状态,并进行性能调优和故障排查。
4导出数据:JConsole 允许将监控到的数据导出为 CSV 文件,以便后续分析和报告。
JConsole 提供了一个简单而强大的方式来监视和管理 Java 应用程序,尤其适合在开发和测试阶段使用,以及在生产环境中进行基本的性能监控和故障诊断。
相关文章:

jvm常用密令、jvm性能优化、jvm性能检测、Java jstat密令使用、Java自带工具、Java jmap使用
1.jps是Java虚拟机的进程状态工具,用于列出正在运行的Java进程 jps命令的使用:cmd打开直接jps 1.1不带参数: jps 默认情况下,列出所有正在运行的 Java 进程的进程 ID 和主类名。 1.2 -l:显示完整的主类名或 JAR 文件…...

实验三:图像的平滑滤波
目录 一、实验目的 二、实验原理 1. 空域平滑滤波 2. 椒盐噪声的处理 三、实验内容 四、源程序和结果 (1) 主程序(matlab) (2) 函数GrayscaleFilter (3) 函数MeanKernel (4) 函数MedFilter 五、结果分析 1. 空域平滑滤波 2. 椒盐噪声的处理…...

VUE前端HTML静默打印(不弹出打印对话框)PDF简单方案
前言 在做打印功能的时候,以前大部分客户端都是用C#做的,静默打印(也就是不弹出打印对话框)比较简单。 但是使用浏览器作为客户端,静默打印(也就是不弹出打印对话框)做起来就比较困难。困难的…...

大数据hive表和iceberg表格式
iceberg: https://iceberg.apache.org/ iceberg表,是一种面向大型分析数据集的开放表格式,旨在提供可扩展、高效、安全的数据存储和查询解决方案。它支持多种存储后端上的数据操作,并提供 ACID 事务、多版本控制和模式演化等特性,…...

flutter 手写 TabBar
前言: 这几天在使用 flutter TabBar 的时候 我们的设计给我提了一个需求: 如下 Tabbar 第一个元素 左对齐,试了下TabBar 的配置,无法实现这个需求,他的 配置是针对所有元素的。而且 这个 TabBar 下面的 滑块在移动的时…...

一个引发openssl崩溃问题案例
1 背景 最近用libevent写了一个https代理功能,在调研的时候,遇到了一个项目用到了本地多个openssl库引发的ssl握手崩溃问题。 2 开发环境 项目库版本号依赖项libeventlibevent-2.1.8-stableopenssl 1.1openssl1.0u / 1.1.1w / 3.3.1...... 3 问题现象…...

如何申请抖音本地生活服务商?3种方式优劣势分析!
随着多家互联网大厂在本地生活板块的布局力度不断加大,以抖音为代表的头部互联网平台的本地生活服务商成为了创业赛道中的大热门,与抖音本地生活服务商怎么申请等相关的帖子,更是多次登顶创业者社群的话题榜单。 就目前的市场情况来看&#x…...
【项目-轻量级Web Server lock类】
信号同步机制封装 Lock类信号量——sem类初始化信号量sem_init()销毁信号量sem_destory()对信号量进行P操作sem_wait()对信号进行V操作sem_post() 互斥锁——locker类初始化互斥量pthread_mutex_init()销毁互斥量pthread_mutex_destroy()给互斥锁加锁pthread_mutex_lock()解锁互…...
数据分析_计划
我做大数据的有6年了,以前都是用sql,或者spark,java,scala,python去做。现在这些平台搭建、维护、大多数都是搭建一次就完了,而且维护大多是大厂直接用云平台去做。ETL也是就做一次就够了,我们公…...

LDAPWordlistHarvester:基于LDAP数据的字典生成工具
关于LDAPWordlistHarvester LDAPWordlistHarvester是一款功能强大的字典列表生成工具,该工具可以根据LDAP中的详细信息生成字典列表文件,广大研究人员随后可以利用生成的字典文件测试目标域账号的非随机密码安全性。 工具特征 1、支持根据LDAP中的详细信…...

dhtmlx-gantt甘特图数据展示
官网文档:甘特图文档 实现效果: 首先需要下载 dhtmlx-gantt组件 npm i dhtmlx-gantt //我项目中使用的是"dhtmlx-gantt": "^8.0.6" 这个版本,不同的版本api或是文档中存在的方法稍有差异 界面引用 <template>&l…...

《云原生安全攻防》-- 容器攻击案例:Docker容器逃逸
当攻击者获得一个容器环境的shell权限时,攻击者往往会尝试进行容器逃逸,利用容器环境中的错误配置或是漏洞问题,从容器成功逃逸到宿主机,从而获取到更高的访问权限。 在本节课程中,我们将详细介绍一些常见的容器逃逸方…...
初学者指南:如何搭建和配置 Nginx 服务器
初学者指南:如何搭建和配置 Nginx 服务器 Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。本文将详细介绍如何在 Linux 上安装、配置和管理 Nginx 服务器。 一、安装 Nginx Nginx 可以安装在多种操作系统上&#x…...

[AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性
目录 背景描述 用浏览器访问,正常返回 编辑 AHK v2官方示例源代码 AHK v2运行结果报错(0x80092004) 找不到对象或属性 用thqby大佬的WinHttpRequest.ahk库测试报错 0x80092004 找不到对象或属性 附: 用Apifox访问,也正常返回 AHK v1 …...
`speech_recognition` 是一个流行的库
在Python中,speech_recognition 是一个流行的库,用于从各种来源(如麦克风、文件等)进行语音识别。以下是您提到的技术名称和相应的Python代码示例。 技术名称 语音识别(Speech Recognition):这…...

MFC Ribbon菜单 - 中英文实时切换方法
简介 最近在搞一个老外的项目,本来谈的好好的,纯英文界面。项目接近尾声了,又提出了中英文实时切换的新需求,没办法就只能想办法,毕竟客户最大嘛。 实现方法 还好本来的ribbon英文菜单不复杂,就用纯C编码…...

MFC程序创建word,创建表格,写入数据
文章目录 1、MFC程序功能:2、MFC程序实现2.1 创建项目2.2 添加word操作类2.3 添加word资源2.4 编写代码,实现将数据写入到word2.5 运行程序、验证功能3、工程代码下载 1、MFC程序功能: 创建word文档;向文档中写入字符串ÿ…...

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板
复旦微电子是国内集成电路设计行业的领军企业之一,早在2000年就在香港创业板上市,成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…...

centos下使用yum安装keepalived工具
1、安装如下rpm包,不安装此包在装keepalived时会报错 mkdir keepalived_rpm cd keepalived_rpm/ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-libs-compat-8.0.36-1.el7.x86_64.rpm 2、使用yum进行keepalived的安装 yum -y install keepal…...

无人机图像目标检测
本仓库是人工智能课程的课程作业仓库,主要是完成无人机图像目标检测的任务,我们对visdrone数据集进行了处理,在yolo和ssd两种框架下进行了训练和测试,并编写demo用于实时的无人机图像目标检测。 requirements依赖: ss…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...