9.jvm调优相关工具-java自带

news2024/11/28 8:36:05

目录

  • 概述
  • jdk工具包
    • jps
      • jps -q
      • jps -m
      • jps -v
      • jps -l
    • jstat
      • jstat -gc
      • jstat -gcutil
      • jinfo
    • jmap
      • jmap heap
      • jmap histo[:live]
      • jmap clstats
      • jmap dump
    • jhat
    • jstack
  • 结束

概述

做了一些 1.81.17.x jdk对比,最重要的是实际操作一次。
这些是java自带的命令,属于离线,应急之用。

相关文章在此总结如下:

文章地址
jvm基本知识地址
jvm类加载系统地址
双亲委派模型与打破双亲委派地址
运行时数据区地址
运行时数据区-字符串常量池、程序计数器、直接内存地址
jvm中对象创建流程与内存分配地址
jvm对象内存布局地址
GC基本原理地址

jdk工具包

命令行:

命令英文中文
jpsjvm Process status tooljvm进程状态工具,查看进程基本信息
jstatjvm statistics monitoring tooljvm统计监控工具、查看堆、GC详细信息
jinfojava configuration info查看配置参数信息,支持部分参数运行时修改
jmapjava memory map分析堆内存工具、dump堆内存快照
jhatjava heap analysis tool堆内存dump文件解析工具
jstackjava stack tracejava 堆栈跟踪工具

可视化工具

工具说明缺点
VisualVM性能分析可视化工具不能在linux命令行这种交互方式(不介绍)

jps

查看 java 进程,相当于 linux 下的 ps 命令,它只列出java进程。

# 列出java程序进程ID和jar包全名称
jps

当无部署的java应用时,如下
注意: 此时 jps 只显示当前应用程序进程ID与一个jar,而不是 jar 包全名

[root@hadoop01 jk-demo]# nohup /data/soft/jdk-17.0.9/bin/java -Xms1024m -Xmx1024m -jar jk-demo.jar  &
[1] 6634
[root@hadoop01 jk-demo]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@hadoop01 jk-demo]# jps
6634 jar
6922 Jps

再来比较一下

[root@hadoop01 jk-demo]# nohup /data/soft/jdk-17.0.9/bin/java -Xms1024m -Xmx1024m -jar /data/soft/jk-demo/jk-demo.jar  &
[1] 4778
[root@hadoop01 jk-demo]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@hadoop01 jk-demo]# jps
5188 Jps
4778 jk-demo.jar

命令台输出
在这里插入图片描述

由此: 现在能清楚的知道进程ID对应的哪个jar包了

jps -q

没有什么意义

[root@hadoop01 jk-demo]# jps -q
4778
11421

jps -m

[root@hadoop01 jk-demo]# nohup /data/soft/jdk-17.0.9/bin/java -Xms1024m -Xmx1024m -jar /data/soft/jk-demo/jk-demo.jar  123 abc  &
[1] 16859
[root@hadoop01 jk-demo]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@hadoop01 jk-demo]# jps -m
16859 jk-demo.jar 123 abc
17053 Jps -m

jps -v

[root@hadoop01 soft]# jps -v
19137 Jps -Dapplication.home=/data/soft/jdk1.8 -Xms8m
16859 jk-demo.jar -Xms1024m -Xmx1024m

jps -l

输出jar包所在的绝对路径

[root@hadoop01 soft]# jps -l
21845 sun.tools.jps.Jps
16859 /data/soft/jk-demo/jk-demo.jar

jstat

jstat可以查看java程序运行时相关信息,可以通过它查看运行时堆信息的相关情况。

jstat -<options> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

options由以下值构成

参数详解
-class显示ClassLoader的相关信息
-compilercompiler 显示 JIT编译的相关信息
-gc显示与GC相关信息
-gccapacitygccapacity 显示各个代的容量和使用情况
-gccause显示垃圾收集相关信息(同-gcutil),同时显示最后一次或当前正在发生的垃圾收集的诱发原因
-gcnewgcnew 显示新生代信息
-gcnewcapacitygcnewcapacity 显示新生代大小和使用情况
-gcoldgcold 显示老年代信息
-gcoldcapacitygcoldcapacity 显示老年代大小
-gcpermcapacitygcpermcapacity 显示永久代大小
-gcutilgcutil 显示垃圾收集信息

jstat -gc

下面输出的是进程内存区域及GC详细信息

jstat -gc 16859  250  4
16859 : 进程ID
250   : 采样间隔 250ms,不带单位默认 ms,可以写成 1s
4     : 采样数4

在这里插入图片描述
由上图可知,信息直观比较细

参数详解如下

参数详解
S0CC容量的意思,年轻代中第一个survivor区(幸存区)的容量(单位kb)
S1C年轻代中第二个survivor区(幸存区)的容量(单位kb)
S0UU已使用的意思,年轻代中第一个survivor(幸存区)目前已使用空间(单位kb)
S1U年轻代中第二个survivor(幸存区)目前已使用空间(单位kb)
EC年轻代中Eden的容量(单位kb)
EU年轻代中Eden目前已使用空间(单位kb)
OCold代的容量是(单位kb)
OUold代目前已使用空间(单位kb)
MCmetaspace的容量(单位kb)
MUmetaspace目前已使用空间(单位kb)
CCSC压缩类空间大小
CCSU压缩类空间使用大小
YGC从应用程序启动到采样时年轻代中gc次数
YGCT从应用程序启动到采样时年轻代中gc所用时间(s)
FGC从应用程序启动到采样时old代(全gc)gc次数,FGC不同的垃圾回收器的意义还有点不一样,要注意
FGCT从应用程序启动到采样时old代(全gc)gc所用时间(s) ,FGC不同的垃圾回收器的意义还有点不一样,要注意
GCT从应用程序启动到采样时gc用的总时间(s)

jstat -gcutil

下面输出的是进程内存区域百分百及GC详细信息。统计后的信息。

jstat -gcutil 16859 1s 5

16859 : 进程ID
250   : 采样间隔 250ms,不带单位默认 ms,可以写成 1s
5     : 采样数5

在这里插入图片描述

参数详解
S0survivor第一个区使用率
S1survivor第二个区使用率
EEden使用率
O老年代使用率
M元空间使用率
CCS压缩空间使用率
# jdk 1.17.x
/data/soft/jdk-17.0.9/bin/jstat -gcutil 16859 1s 5

在这里插入图片描述

jinfo

jinfo可以用来查看正在运行的java程序的扩展参数,甚至支持修改运行时过程中的部分参数

jinfo [option] <pid>

参数详解

参数详解
-flags打印虚拟机 vm 参数
-flag name打印指定虚拟机 vm 参数
-flag [+/-] name打开或关闭虚拟机参数
-flag name=value设置指定虚拟机参数的值
# jdk 1.8
jinfo -flags 16859

在这里插入图片描述

/data/soft/jdk-17.0.9/bin/jinfo -flags 16859

在这里插入图片描述

主要输出 jvm 的配置参数

jmap

jmap用来查看堆内存使用状况,一般结合jhat使用。

  • 命令:jmap pid
  • 描述:查看进程的内存映像信息。使用不带选项参数的jmap打印共享对象映射,将会打印目标虚拟机中加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径全称。
jmap 16859

在这里插入图片描述

jmap heap

这个命令常用。

  • 命令:jmap -heap pid
  • 描述:显示java堆详细信息:打印堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息。
# jdk 1.8
jmap -heap 16859

[root@hadoop01 ~]# jmap -heap 16859
Attaching to process ID 16859, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 17.0.9+11-LTS-201

using thread-local object allocation.
Garbage-First (G1) GC with 8 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 1073741824 (1024.0MB)
   NewSize                  = 1363144 (1.2999954223632812MB)
   MaxNewSize               = 643825664 (614.0MB)
   OldSize                  = 5452592 (5.1999969482421875MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 22020096 (21.0MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 1048576 (1.0MB)

Heap Usage:
G1 Heap:
   regions  = 1024
   capacity = 1073741824 (1024.0MB)
   used     = 78066944 (74.450439453125MB)
   free     = 995674880 (949.549560546875MB)
   7.270550727844238% used
G1 Young Generation:
Eden Space:
   regions  = 66
   capacity = 438304768 (418.0MB)
   used     = 69206016 (66.0MB)
   free     = 369098752 (352.0MB)
   15.789473684210526% used
Survivor Space:
   regions  = 7
   capacity = 8388608 (8.0MB)
   used     = 7832832 (7.469970703125MB)
   free     = 555776 (0.530029296875MB)
   93.3746337890625% used
G1 Old Generation:
   regions  = 2
   capacity = 627048448 (598.0MB)
   used     = 1028096 (0.98046875MB)
   free     = 626020352 (597.01953125MB)
   0.16395798494983277% used

jmap histo[:live]

  • 命令:jmap -histo:live pid
  • 描述:显示堆中对象的统计信息;其中包括每个java类、对象数量、内存大小(单位字节)、完全限定的类名。打印虚拟机内部的类名称会带有一个 * 前缀。如果指定了 live 子选项,则只计算活动的对象。
jmap -histo 16859

在这里插入图片描述

jmap clstats

这个命令用得不多。

  • 命令:jmap -clstats pid
  • 描述:打印类加载器信息;打印 java 堆内存方法区的类加载器的智能统计信息。对于每个类加载器而言,它的名称、活跃度、地址、父类加载器、它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印。
/data/soft/jdk-17.0.9/bin/jmap -clstats 16859

[root@hadoop01 jdk-17.0.9]# /data/soft/jdk-17.0.9/bin/jmap -clstats 16859
ClassLoader         Parent              CLD*               Classes   ChunkSz   BlockSz  Type
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bcd1c0e0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bd13bce0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc84dcd0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc6009a0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc8dddd0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x0000000000000000  0x00007fd1bc470180       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc871ff0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bca168f0       1       512       394  jdk.internal.reflect.DelegatingClassLoader
0x00007fd147084530  0x00007fd147086808  0x00007fd1bc37c720      54     47104     44253  jdk.internal.loader.ClassLoaders$AppClassLoader
0x00007fd148001000  0x00007fd147084530  0x00007fd1bc416790    4131   2570880   2567758  org.springframework.boot.loader.LaunchedURLClassLoader
                                                                 1       256       127   + hidden classes
0x00007fd1470094d8  0x0000000000000000  0x00007fd1bc84c250       1       512       394  jdk.internal.reflect.DelegatingClassLoader
0x0000000000000000  0x0000000000000000  0x00007fd1bc345440    2379    868352    864303  <boot class loader>
                                                               239     94464     61213   + hidden classes
0x00007fd1470094d8  0x0000000000000000  0x00007fd1bc890290       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd147086808  0x0000000000000000  0x00007fd1bc34e4b0      28     19456     18176  jdk.internal.loader.ClassLoaders$PlatformClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bcd0f5a0       1       512       394  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x0000000000000000  0x00007fd1bc872160       1       384       237  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc84d0e0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bcaec090       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc9b9dd0       1       512       390  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc9e47f0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x0000000000000000  0x00007fd1bc84c680       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc788850       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bca849c0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc84d1a0       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x0000000000000000  0x00007fd1bc8b5a30       1       384       237  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc468670       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x00007fd148001000  0x00007fd1bc872420       1       512       429  jdk.internal.reflect.DelegatingClassLoader
0x00007fd1470094d8  0x0000000000000000  0x00007fd1bca3d970       1       512       429  jdk.internal.reflect.DelegatingClassLoader
Total = 28                                                    6856   3612544   3565598  
ChunkSz: Total size of all allocated metaspace chunks
BlockSz: Total size of all allocated metaspace blocks (each chunk has several blocks)

jmap dump

jmap dump:

  • 命令:jmap -dump:format=b,file=heapdump.hprof pid
  • 描述:生成堆存储 快照 文件;以二进制格式转储 java 堆到指定文件中。如果指定了 live 子选项,堆中只有活动的对象会被转储。浏览 heap dump 可以使用 jhat 读取生成的文件,也可以使用MAT等堆内存分析工具。

**注意:**这个命令执行,jvm会将整个heap的信息dump写入到一个文件,heap 如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证 dump 的信息是可靠的,所以会暂停应用,线上系统慎用!

/data/soft/jdk-17.0.9/bin/jmap -dump:format=b,file=heapdump.hprof 16859

在这里插入图片描述

jhat

  • jhat 命令会解析java堆转储文件,并启动一个 web server。然后用浏览器来查看/浏览dump出来的 heap 二进制文件。
  • jhat 命令支持预先设计的查询,比如:显示某个类的所有实例。还支持对象查询语言(OQL)。OQL有点类似SQL,专门用来查询堆转储。

java 生成堆转储的方式有多种:

  • 使用 jmap -dump 选项可以在 jvm 运行时获取 dump
  • 在虚拟机启动时如果指定了 -XX:+HeapDumpOnOutOfMemoryError 选项,则抛出 OutOfMemoryError 时,会自动挂靠堆转储。
jhat [ options ] heap -dump -file

/data/soft/jdk-17.0.9/bin/jhat ./heapdump.hprof

在这里插入图片描述
**注意:**jdk1.8是有这个命令的。

jhat从jdk1.9的时候已经删除了(JEP 241: Remove the jhat Tool)。现在Oracle官方推荐的分析工具是Eclipse Memory Analyzer Tool (MAT) 和 VisualVM。

jstack

jstack是java虚拟机自带的一种堆栈跟踪工具,用于生成java虚拟机当前时刻的线程快照。

线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程 出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等等。

线程快照里留意下面几种状态

  • 死锁,Deadlock(重点关注)
  • 等待资源,Waiting on condition (重点关注)
  • 等待获取管程,Waiting on monitor entry (重点关注)
  • 阻塞,Blocked (重点关注)
  • 执行中,Runnable
  • 暂停,Suspended
  • 对象等待中,Object.wait()或TIMED_WAITING
  • 停止,Parked

使用方式

命令详解
jstack [ option ] pid查看当前时间点,指定里程的dump堆栈信息
jstack [ option ] pid > 文件将当前时间点的指定进程的dump堆栈信息,写入到指定文件中(若存在则覆盖,不存在,自动生成)
jstack [ option ] executable core查看当前时间点,core文件的dump堆栈信息
jstack [ option ] [ server_id@ ] remote server ip or hostname查看当前时间点,远程机器的dump堆栈信息

可选参数说明

-F :当里程挂起,此时 `jstack [-l] pid` 是没有响应的,这时候可使用此参数强制打印堆栈信息,强制jstack,一般情况不需要使用。
-m :打印java和native c/c++ 框架的所有栈信息。可以打印jvm的堆栈,以及Native的栈帧,一般应用排查不需要使用
-l :长列表。打印关于锁的附加信息。例如属于 java.util.concurrent 的 ownable synchronizers 列表,会使用jvm停顿长久得多,比如普通的jstack可能几毫秒,和一次GC没区别,加了-l就是近一秒的时间,-l 建议不要使用,一般情况下不需要使用。
-h or -hel : 打印帮助信息
/data/soft/jdk-17.0.9/bin/jstack 16859

在这里插入图片描述

/data/soft/jdk-17.0.9/bin/jstack 16859 > jvm_stack_info_16859

在这里插入图片描述

/data/soft/jdk-17.0.9/bin/jstack -l 16859 | grep 'java.lang.Thread.State'  | wc -l

在这里插入图片描述

结束

至此,java自带的命令介绍就结束了。如有疑问,欢迎留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1218658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows电脑画面如何投屏到电视?怎样限定投屏内容?

电视通常比计算机屏幕更大&#xff0c;因此将电脑画面投射到电视上可以提供更广阔的视野和更好的视觉体验。通过将电脑画面投射到电视上&#xff0c;您可以与他人共享您的计算机屏幕上的内容。这对于展示演示文稿、观看影片或与他人分享照片等活动非常有用。 如果你的电脑系统是…

全球地表水数据集JRC Global Surface Water Mapping Layers, v1.2数据

简介&#xff1a; 全球地表水覆盖&#xff08;Global Surface Water&#xff09;是利用1984至2019年获取的landsat5、landsat7和landsat8的卫星影像&#xff0c;生成分辨率为30米的一套全球地表水覆盖的地图集。用户可以在全球尺度上按地区回溯某个时间上地表水分的变化情况。…

《C++避坑神器·十六》函数默认参数和占位参数

C中函数是可以给默认参数的 注意点&#xff1a; &#xff08;1&#xff09;一旦某个参数设置为默认参数&#xff0c;那跟着后面的所有参数都必须设置默认参数 &#xff08;2&#xff09;函数的声明和定义只能有一个可以设置默认参数&#xff0c;两个都设置会报错 int f1(int a…

Anaconda的安装使用及pycharm设置conda虚拟环境

1.python和包以及anaconda的概念关系 python “工人” 包 “工具” 环境 “工具箱” anaconda “放很多工具箱的大箱子” python等于工人这个好理解&#xff0c;就是编程需要用python来实现对应功能&#xff0c;即工人完成某项工程。 包等于工具&#xff0c;就是工人…

Consumer的负载均衡

想要提高Consumer的处理速度&#xff0c;可以启动多个Consumer并发处理&#xff0c;这个时候就涉及如何在多个Consumer之间负载均衡的问题&#xff0c;接下来结合源码分析Consumer的负载均衡实现。 要做负载均衡&#xff0c;必须知道一些全局信息&#xff0c;也就是一个Consum…

JVM-HotSpot虚拟机对象探秘

目录 一、对象的实例化 &#xff08;一&#xff09;创建对象的方式 &#xff08;二&#xff09;创建对象的步骤 二、对象的内存布局 &#xff08;一&#xff09;对象头 &#xff08;二&#xff09;实例数据 &#xff08;三&#xff09;对齐填充 三、 对象的访问定位 &…

绕过类安全问题分析方法

什么是绕过 逻辑漏洞是指程序设计中逻辑不严密&#xff0c;使攻击者能篡改、绕过或中断程序&#xff0c;令其偏离开发人员预期的执行。 常见表现形式 1、接口&#xff08;功能类&#xff09;绕过&#xff1a;即接口或功能中通过某参数&#xff0c;绕过程序校验 2、流程类绕…

c++虚函数纯虚函数详解加代码解释

c虚函数纯虚函数详解加代码解释 一.概念&#xff1a;二.虚函数示例及解析&#xff1a;三.纯虚函数示例及解析&#xff1a;四.验证和实际使用及解析&#xff1a;1.子类没有对父类的函数重载&#xff0c;mian()函数调用&#xff0c;是直接返回父类的值2.子类对父类的函数重载&…

一键清除磁盘垃圾工具分享,绿色快速好用

下载&#xff1a;https://download.csdn.net/download/weixin_43097956/88541564

2023年中国机动车拍卖网络化趋势加速,网络拍卖专场数量大幅上升至47489场[图]

2022年&#xff0c;由于机动车拍卖网络化趋势继续加速&#xff0c;网络拍卖专场数量大幅上升&#xff0c;全国机动车专场拍卖会高达59450场&#xff0c;较上年攀升125.31%。在389家拍卖企业中&#xff0c;举办场次超过100场的企业有27家&#xff0c;合计54850场&#xff0c;占比…

2023年中国骨质疏松治疗仪发展趋势分析:小型且智能将成为产品优化方向[图]

骨质疏松治疗仪利用磁场镇静止痛、消肿消炎的治疗作用迅速缓解患者腰背疼痛等骨质疏松临床症状。同时利用磁场的磁-电效应产生的感生电势和感生电流&#xff0c;改善骨的代谢和骨重建&#xff0c;通过抑制破骨细胞、促进成骨细胞的活性来阻止骨量丢失、提高骨密度。 骨质疏松治…

有能一键批量转换,轻松将PDF、图片转为Word/Excel的软件吗?

随着数字化时代的到来&#xff0c;OCR技术在我们的生活中变得越来越重要。无论是从图片中提取文字&#xff0c;还是将PDF、图片格式的文件转换为Word或Excel格式&#xff0c;OCR软件都能够为我们提供极大的便利。然而&#xff0c;市面上的OCR软件种类繁多&#xff0c;哪一款软件…

蓝桥杯第三周算法竞赛D题E题

发现更多计算机知识&#xff0c;欢迎访问Cr不是铬的个人网站 D迷宫逃脱 拿到题目一眼应该就能看出是可以用动态规划来解决。但是怎么定义dp呢? 这个题增加难度的点就在当所在位置与下一个要去的位置互质的时候&#xff0c;会消耗一把钥匙。当没有钥匙的时候就不能移动了。想…

802.11ax-2021协议学习__$27-HE-PHY__$27.5-Parameters-for-HE-MCSs

802.11ax-2021协议学习__$27-HE-PHY__$27.5-Parameters-for-HE-MCSs 27.3.7 Modulation and coding scheme (HE-MCSs)27.3.8 HE-SIG-B modulation and coding schemes (HE-SIG-B-MCSs)27.5 Parameters for HE-MCSs27.5.1 General27.5.2 HE-MCSs for 26-tone RU27.5.3 HE-MCSs f…

AE (1)_软件、硬件、驱动控制

#灵感# AE是个值得推敲再推敲的模块&#xff0c;有意思。 目录 相关的硬件-光圈&#xff1a; 相关的软件-曝光-ISO&#xff1a; ISP中的sensor AE 组成&#xff1a; sensor AE的流程及控制&#xff1a; 相关的硬件-光圈&#xff1a; 光圈&#xff08;F-Number&#xff0…

Equifax案例分析与合规性场景实践

在当今数字化时代&#xff0c;数据安全已经成为各个组织和企业亟待解决的问题。尤其是在数据泄露事件不断增多的背景下&#xff0c;保护敏感数据免受非法访问和泄露变得尤为紧迫。为了应对这一挑战&#xff0c;许多组织和企业开始利用密钥管理服务(KMS)来加强其数据安全性&…

KVM网络环境下vlan和trunk的理解

vmware exsi 平台&#xff0c;虚拟交换机管理界面的上行链路是什么意思 VMware ESXi中的虚拟交换机管理界面中的“上行链路”&#xff08;uplinks&#xff09;是指虚拟交换机连接到物理网络的物理网络适配器。在ESXi中&#xff0c;虚拟交换机&#xff08;vSwitch&#xff09;用…

Ubuntu18.04安装ROS系统+turtle测试

安装 1.设置安装源 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubun…

4.1 Windows驱动开发:内核中进程与句柄互转

在内核开发中&#xff0c;经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符&#xff08;PID&#xff09;来标识&#xff0c;而句柄是指对内核对象的引用。在Windows内核中&#xff0c;EProcess结构表示一个进程&#xff0c;而HANDLE是一个句柄。 为了实…

不允许你还不了解指针的那些事(二)(从入门到精通看这一篇就够了)(数组传参的本质+冒泡排序+数组指针+指针数组)

目录 数组名的理解 使用指针访问数组 一维数组传参的本质 冒泡排序 二级指针 指针数组 指针数组模拟二维数组 字符指针变量 数组指针变量 二维数组传参的本质 函数指针变量 函数指针变量的创建 函数指针变量的使用 两段有趣的代码 代码一 代码二 typedef关键字 函数指针数组 …