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

JVM系列(十二) -常用调优命令汇总

最近对 JVM 技术知识进行了重新整理,再次献上 JVM系列文章合集索引,感兴趣的小伙伴可以直接点击如下地址快速阅读。

  • JVM系列(一) -什么是虚拟机
  • JVM系列(二) -类的加载过程
  • JVM系列(三) -内存布局详解
  • JVM系列(四) -对象的创建过程
  • JVM系列(五) -对象的内存分配流程
  • JVM系列(六) -运行期优化技术
  • JVM系列(七) -垃圾收集算法
  • JVM系列(八) -垃圾收集器
  • JVM系列(九) -GC日志分析
  • JVM系列(十) -常用调优命令汇总
  • JVM系列(十一) -常用调优工具介绍
  • JVM系列(十二) -常用调优参数总结

一、简介

虽然目前市场上有很多成熟的 JVM 可视化监控分析工具,但是所有的工具其实都依赖于 JDK 的接口和底层相关的命令,了解这些命令的使用对于我们在紧急情况下排查 JVM 相关的线上故障,会有更加直观的帮助。

下面我们一起来看看 JVM 常用的命令有哪些。

二、常用命令

常用的监控和故障处理命令,有以下几个:

  • jps (JVM Process Status Tool):用于显示指定系统内所有的HotSpot虚拟机进程;
  • jstat (JVM statistics Monitoring):用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据;
  • jmap (JVM Memory Map):用于生成 heap dump 文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现 OOM 的时候自动生成 dump 文件;
  • jhat (JVM Heap Analysis Tool):该命令通常与 jmap 搭配使用,用来分析 jmap 生成的 dump 文件,jhat 内置了一个微型的HTTP/HTML服务器,生成 dump 的分析结果后,可以在浏览器中查看;
  • jstack (Java Virtual Machine Stack Trace):用于生成 Java 虚拟机当前时刻的线程快照;
  • jinfo (JVM Configuration info):用于实时查看和调整后的虚拟机运行参数;

下面一起来看看相关命令的使用。

2.1、jps

jps 用于显示指定系统内所有的HotSpot虚拟机进程。

命令的使用格式如下。(其中[options][hostid]参数为非必填)

jps [options] [hostid]

options 参数详解:

  • -l:输出主类全名或jar路径
  • -q:只输出LVMID
  • -m:输出JVM启动时传递给 main() 的参数
  • -v:输出JVM启动时显示指定的JVM参数

在操作系统终端输入如下命令,即可查看 Java 相关的服务进程,示例如下。

$ jps -l -m
6628 sun.tools.jps.Jps -l -m
20094 springboot-example-web.jar --server.port=80

不带参数的显示结果。

$ jps
7669 Jps
20094 jar

左边是进程号,右边是 Java 服务名称。

2.2、jstat

jstat 用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。

命令的使用格式如下。

jstat [option] LVMID [interval] [count]

各个参数详解:

  • option:操作参数
  • LVMID:本地虚拟机进程ID
  • interval:连续输出的时间间隔
  • count:连续输出的次数

option 参数内容详解!

option 参数注释
classclass loader的行为统计
compilerHotSpt JIT编译器行为统计
gc垃圾回收堆的行为统计
gccapacity各个垃圾回收代容量和他们相应的空间统计
gcutil垃圾回收统计概述
gccause垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因
gcnew新生代行为统计
gcnewcapacity新生代与其相应的内存空间的统计
gcold年老代和永生代行为统计
gcoldcapacity年老代行为统计
gcmetacapacity元空间行为统计
printcompilationHotSpot编译方法统计

option 参数使用如下。

2.2.1、示例参数:class

-class参数用于监视类装载、卸载数量、总空间以及耗费的时间。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -class 20094
Loaded  Bytes  Unloaded  Bytes     Time12988 23508.0        0     0.0      30.21

各个参数解读如下:

  • Loaded : 加载class的数量
  • Bytes : class字节大小
  • Unloaded : 未加载class的数量
  • Bytes : 未加载class的字节大小
  • Time : 加载时间
2.2.2、示例参数:compiler

-compiler参数用于输出 JIT 编译过的方法数量耗时等。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -compiler 20094
Compiled Failed Invalid   Time   FailedType FailedMethod14524      5       0    43.33          1 org/springframework/core/annotation/AnnotationsScanner processMethodHierarchy

各个参数解读如下:

  • Compiled : 编译数量
  • Failed : 编译失败数量
  • Invalid : 无效数量
  • Time : 编译耗时
  • FailedType : 失败类型
  • FailedMethod : 失败方法的全限定名
2.2.3、示例参数:gc

-gc参数用于垃圾回收堆的行为统计,属于常用命令。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gc 20094S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
18432.0 18944.0  0.0   10133.7 281088.0 197255.5  139776.0   55324.5   70420.0 66352.5 9020.0 8405.8     25    0.599   3      0.673    1.273

其中 C 表示 Capacity 总容量,U 表示 Used 已使用的容量。

各个参数解读如下:

  • S0C:survivor0区的总容量
  • S1C:survivor1区的总容量
  • S0U:survivor0区已使用的容量
  • S1U:survivor1区已使用的容量
  • EC:Eden区的总容量
  • EU:Eden区已使用的容量
  • OC:Old区的总容量
  • OU:Old区已使用的容量
  • MC:泛指Metaspace区的总容量
  • MU:泛指Metaspace区已使用的容量
  • CCSC:泛指类压缩空间(Compressed class space,属于Metaspace区的一部分)的总容量
  • CCSU:泛指类压缩空间(Compressed class space,属于Metaspace区的一部分)已使用的容量
  • YGC:新生代GC次数
  • YGCT:新生代GC总耗时
  • FGC:Full GC次数
  • FGCT:Full GC总耗时
  • GCT:GC总耗时

还可以通过如下方式,来详细的监控 gc 回收情况,示例如下。

jstat -gc 20094 2000 20

以上的命令表示每隔 2000ms 输出进程号为 7140 的 gc 回收情况,一共输出 20次。

输出部分内容如下!

2.2.4、示例参数:gccapacity

-gccapacity参数和-gc一样,不过还会输出 Java 堆各区域使用到的最大、最小空间。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gccapacity 20094NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC43520.0 698880.0 355840.0 18432.0 18944.0 281088.0    87552.0  1398272.0   139776.0   139776.0      0.0 1110016.0  70420.0      0.0 1048576.0   9020.0     25     3

各个参数解读如下:

  • NGCMN : 新生代占用的最小空间
  • NGCMX : 新生代占用的最大空间
  • NGC:当前新生代的容量
  • OGCMN : 老年代占用的最小空间
  • OGCMX : 老年代占用的最大空间
  • OGC:当前老年代的容量
  • MCMN : Metaspace区占用的最小空间
  • MCMX : Metaspace区占用的最大空间
  • MC:当前Metaspace区的容量
  • CCSMN : Compressed class space区占用的最小空间
  • CCSMX : Compressed class space区占用的最大空间
  • CCSC:当前Compressed class space区的容量
2.2.5、示例参数:gcutil

-gcutil参数同-gc,不过输出的是已使用空间占总空间的百分比。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gcutil 20094S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT0.00  53.49  91.96  39.58  94.22  93.19     25    0.599     3    0.673    1.273
2.2.6、示例参数:gccause

-gccause参数用于垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gccause 20094S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC0.00  53.49  92.65  39.58  94.22  93.19     25    0.599     3    0.673    1.273 Allocation Failure   No GC

各个参数解读如下:

  • LGCC:最近垃圾回收的原因
  • GCC:当前垃圾回收的原因
2.2.7、示例参数:gcnew

-gcnew参数用于统计新生代的行为。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gcnew 20094S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
18432.0 18944.0    0.0 10133.7  2  15 18432.0 281088.0 265231.7     25    0.599

各个参数解读如下:

  • TT:Tenuring threshold(提升阈值)
  • MTT:最大的tenuring threshold
  • DSS:survivor区域大小 (KB)
2.2.8、示例参数:gcnewcapacity

-gcnewcapacity参数用于新生代与其相应的内存空间的统计。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gcnewcapacity 20094NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC43520.0   698880.0   355840.0 232960.0  18432.0 232960.0  18944.0   697856.0   281088.0    25     3

各个参数解读如下:

  • S0CMX:最大的S0空间 (KB)
  • S0C:当前S0区的容量 (KB)
  • ECMX:最大eden空间 (KB)
  • EC:当前eden区的容量 (KB)
2.2.9、示例参数:gcold

-gcold参数用于统计老年代的行为。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gcold 20094MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT70420.0  66352.5   9020.0   8405.8    139776.0     55324.5     25     3    0.673    1.273
2.2.10、示例参数:gcoldcapacity

-gcoldcapacity参数用于统计老年代的大小和空间。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gcoldcapacity 20094OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT87552.0   1398272.0    139776.0    139776.0    25     3    0.673    1.273
2.2.11、示例参数:gcmetacapacity

-gcmetacapacity参数用于统计元空间的大小和空间。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -gcmetacapacity 20094MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT0.0  1112064.0    72468.0        0.0  1048576.0     9276.0    26     3    0.673    1.513
2.2.12、示例参数:printcompilation

-printcompilation参数用于HotSpot编译方法统计。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jstat -printcompilation 20094
Compiled  Size  Type Method4387    123    1 org/apache/catalina/core/StandardContext getLoader

各个参数解读如下:

  • Compiled:被执行的编译任务的数量
  • Size:方法字节码的字节数
  • Type:编译类型
  • Method:编译方法的类名和方法名。类名使用”/” 代替 “.” 作为空间分隔符. 方法名是给出类的方法名
2.3、jmap

jmap 用于生成 heap dump 文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现 OOM 的时候自动生成 dump 文件。

jmap 不仅可以生成 dump 文件,还可以查询finalize执行队列、Java 堆的详细信息,如当前使用率、当前使用的是哪种收集器等。

命令的使用格式如下。

jmap [option] LVMID

option 参数详解:

  • dump : 生成堆转储快照
  • finalizerinfo : 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
  • heap : 显示Java堆详细信息
  • histo : 显示堆中对象的统计信息
  • clstats : 显示类加载器信息
  • F : 当-dump没有响应时,强制生成dump快照

option 参数使用如下。

2.3.1、示例参数:dump

-dump参数用于生成堆内存快照文件。

命令的使用格式如下。

-dump::live,format=b,file=<filename> pid

option 参数详解:

  • live : 指的是活着的对象
  • format : 表示指定的输出格式
  • file : 表示指定的文件名
  • pid : 表示 Java 服务进程ID

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jmap -dump:live,format=b,file=dump.hprof 20094
Dumping heap to /xxx/dump.hprof ...
Heap dump file created

dump.hprof这个后缀是为了后续可以直接用 MAT (Memory Anlysis Tool) 工具打开。

2.3.2、示例参数:finalizerinfo

-finalizerinfo参数用于打印等待回收对象的信息。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jmap -finalizerinfo 20094
Attaching to process ID 20094, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08
Number of objects pending for finalization: 0

从日志中可以得出,当前 F-QUEUE 队列中并没有等待 Finalizer 线程执行 finalizer 方法的对象。

2.3.3、示例参数:heap

-heap参数用于打印 heap 的概要信息,GC 使用的算法,heap 的配置及 wise heap 的使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jmap -heap 20094
Attaching to process ID 20094, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08using thread-local object allocation.
Mark Sweep Compact GCHeap Configuration:MinHeapFreeRatio         = 40MaxHeapFreeRatio         = 70MaxHeapSize              = 461373440 (440.0MB)NewSize                  = 9764864 (9.3125MB)MaxNewSize               = 153747456 (146.625MB)OldSize                  = 19595264 (18.6875MB)NewRatio                 = 2SurvivorRatio            = 8MetaspaceSize            = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:
New Generation (Eden + 1 Survivor Space):capacity = 17825792 (17.0MB)used     = 239848 (0.22873687744140625MB)free     = 17585944 (16.771263122558594MB)1.345511043772978% used
Eden Space:capacity = 15859712 (15.125MB)used     = 239848 (0.22873687744140625MB)free     = 15619864 (14.896263122558594MB)1.5123099334969008% used
From Space:capacity = 1966080 (1.875MB)used     = 0 (0.0MB)free     = 1966080 (1.875MB)0.0% used
To Space:capacity = 1966080 (1.875MB)used     = 0 (0.0MB)free     = 1966080 (1.875MB)0.0% used
tenured generation:capacity = 39444480 (37.6171875MB)used     = 23665256 (22.568946838378906MB)free     = 15779224 (15.048240661621094MB)59.99636958073728% used21919 interned Strings occupying 2683112 bytes.

从日志中,可以很清楚的看到 Java 堆中各个区域目前的情况。

2.3.4、示例参数:histo

-histo参数用于打印堆的对象统计,包括对象数、内存大小等等。也可以带上live参数,比如-histo[:live]表示只打印存活的对象,如果不加就是查询全部对象。

在操作系统终端输入如下命令,即可查看相关信息,部分示例如下。

$ jmap -histo 20094num     #instances         #bytes  class name
----------------------------------------------1:         61030        8438336  [C2:          9918        2169120  [I3:         59981        1439544  java.lang.String4:          5112        1331136  [B5:         13532        1190816  java.lang.reflect.Method6:         10071        1125192  java.lang.Class7:         32196        1030272  java.util.concurrent.ConcurrentHashMap$Node8:          9593         572904  [Ljava.lang.Object;9:         15416         493312  java.util.HashMap$Node10:         12115         484600  java.util.LinkedHashMap$Entry...

其中class name列指的是对象类型,部分内容详解:

B:byte
C:char
D:double
F:float
I:int
J:long
Z:boolean
[I:表示 int[]的数组
[L+类名:其他数组对象

2.3.5、示例参数:clstats

-clstats参数用于打印类加载器信息。

在操作系统终端输入如下命令,即可查看相关信息,部分示例如下。

$ jmap -clstats 20094
Attaching to process ID 20094, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08

表示当前并没有相关类加载的信息。

2.3.6、示例参数:F

-F参数表示强制模式。在 pid 没有响应的时候使用-dump或者-histo参数,在这个模式下live子参数会无效。

2.4、jhat

jhat 命令通常与 jmap 搭配使用,用来分析 jmap 生成的 dump 文件,jhat 内置了一个微型的HTTP/HTML服务器,生成 dump 的分析结果后,可以在浏览器中查看。

命令的使用格式如下。(其中heap-dump-file为必填项)

jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <heap-dump-file>

可选参数详解:

  • -stack false|true:表示关闭对象分配调用栈跟踪。 如果分配位置信息在堆转储中不可用,则必须将此标志设置为 false,默认值为 true;
  • -refs false|true:表示关闭对象引用跟踪。 默认值为 true,默认情况下,返回的指针是指向其他特定对象的对象,如反向链接或输入引用,会统计/计算堆中的所有对象;
  • -port port-number:表示设置 jhat HTTP server 的端口号,默认值 7000;
  • -baseline exclude-file:表示指定一个基准堆转储。 在两个 heap dumps 中有相同 object ID 的对象会被标记为不是新的,其他对象被标记为新的,在比较两个不同的堆转储时很有用;
  • -debug int:表示设置 debug 级别,0 表示不输出调试信息。 值越大则表示输出更详细的 debug 信息;
  • -version:启动后只显示版本信息就退出;
    -J< flag >:因为 jhat 命令实际上会启动一个JVM来执行,通过 -J 可以在启动JVM时传入一些启动参数。例如,-J-Xmx512m 可以指定运行 jhat 的 Java 虚拟机使用的最大堆内存为 512 MB,如果需要使用多个 JVM 启动参数,则传入多个 -Jxxx即可;
  • -h or -help:显示jhat命令的帮助信息;

在操作系统终端输入如下命令,即可查看相关信息,部分示例如下。

$ jhat -J-Xmx512m /xxx/dump.hprof
Reading from dump.hprof...
Dump file created Mon Feb 05 17:41:33 CST 2024
Snapshot read, resolving...
Resolving 383026 objects...
Chasing references, expect 76 dots............................................................................
Eliminating duplicate references............................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

运行成功之后在浏览器访问http://127.0.0.1:7000,可以查询快照文件分析结果。

翻到最底部可以查询 jhat 提供的几个查询功能,部分列表信息如下。

一般查看堆内存异常情况,主要看两个部分。

  • Show instance counts for all classes (excluding platform):表示平台外的所有对象信息
  • Show heap histogram:以树状图形式展示堆情况

部分信息如下。

针对服务性能问题,还需要结合具体代码进行排查,观察是否有大量应该被回收的对象一直在被引用,或者是否有占用内存特别大的对象无法被回收,通常在调优的时候这两点关注的会比较多。

2.5、jstack

jstack 命令用于生成 Java 虚拟机当前时刻的线程快照。

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

命令的使用格式如下。

jstack [option] LVMID

option 参数详解:

  • -F : 当正常输出请求不被响应时,强制输出线程堆栈
  • -l : 除堆栈外,显示关于锁的附加信息
  • -m : 如果调用到本地方法的话,可以显示C/C++的堆栈

在操作系统终端输入如下命令,即可查看相关信息,部分示例如下。

$ jstack -F 20094
Attaching to process ID 20094, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08
Deadlock Detection:No deadlocks found.Thread 15138: (state = BLOCKED)Thread 30966: (state = BLOCKED)- sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame)- java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42, line=2039 (Compiled frame)- java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=100, line=1088 (Compiled frame)- java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1, line=809 (Compiled frame)- java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)- java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)- java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)- java.lang.Thread.run() @bci=11, line=748 (Interpreted frame)
...

关于 jstack 命令,更加详细的使用案例,可以参数这篇文章 jstack命令解析。

2.6、jinfo

jinfo 命令用于实时查看和调整虚拟机运行参数。

命令的使用格式如下。

jinfo [option] [args] LVMID

option 参数详解:

  • -flag:输出指定 args 参数的值
  • -flags:不需要 args 参数,输出所有 JVM 参数的值
  • -sysprops:输出系统属性,等同于 System.getProperties()

在操作系统终端输入如下命令,即可查看相关信息,部分示例如下。

$ jinfo -flags 20094
Attaching to process ID 20094, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=29360128 -XX:MaxHeapSize=461373440 -XX:MaxNewSize=153747456 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=9764864 -XX:OldSize=19595264 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps 
Command line:  

三、小结

本文主要围绕 JVM 中常用的命令使用,进行了知识内容的整合和总结,内容比较多,如果有描述不对的地方,欢迎大家留言指出,不胜感激。

四、参考

1.http://www.ityouknow.com/jvm/2017/09/03/jvm-command.html

2.https://juejin.cn/post/6844904152850497543

3.https://zhuanlan.zhihu.com/p/613572945

4.https://zhuanlan.zhihu.com/p/92955445

写到最后

最后。如果感觉文章内容不错,帮忙动动小指头点个赞,点赞对我真的非常重要!加个关注我会非常感激!

相关文章:

JVM系列(十二) -常用调优命令汇总

最近对 JVM 技术知识进行了重新整理&#xff0c;再次献上 JVM系列文章合集索引&#xff0c;感兴趣的小伙伴可以直接点击如下地址快速阅读。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的加载过程JVM系列(三) -内存布局详解JVM系列(四) -对象的创建过程JVM系列(五) -对象的内存分…...

人的心理特征

一、心理特征 通过心理学实验揭示了人类在认知、情感、行为等方面的一些普遍规律。 1. 社会性与从众心理 实验例子&#xff1a;阿什的从众实验&#xff08;Asch Conformity Experiment&#xff09;结论&#xff1a;人类天生具有从众的倾向&#xff0c;尤其是在群体中&#x…...

Python(二)str、list、tuple、dict、set

string name abcdefprint(name[0]) #a # 切片&#xff1a;取部分数据 print(name[0:3]) # 取 下标为0,1,2的字符 abc print(name[2:]) # 取 下标为2开始到最后的字符 cdef print(name…...

【CryptoJS库AES加密】

当涉及到前端加密时&#xff0c;通常需要使用加密算法来保护用户的敏感信息。下面是一个使用Vue 2和Vue 3的前端加密方法的示例&#xff1a; Vue 2版本的前端加密方法&#xff1a; // 安装crypto-js库 // npm install crypto-js --save// 导入CryptoJS模块 import CryptoJS f…...

FSW3410 双通道差分器2:1/1:2USB 3.1高速模拟切换 替代ASW3410

FSW3410 是 mux 或演示系统配置中的高速双向 被动交换机&#xff0c;适用于USBType-C™ 应用程序&#xff0c; 支持 USB3.1Gen1 和 Gen2 的数据速率。基于控 制引 脚SEL &#xff0c;该 设备提供 在 PortA 或 PortB 到 PortCOM 之间的差分通道切换。 FSW3410 是一 种通用的模…...

【蓝桥杯——物联网设计与开发】基础模块8 - RTC

目录 一、RTC &#xff08;1&#xff09;资源介绍 &#x1f505;简介 &#x1f505;时钟与分频&#xff08;十分重要‼️&#xff09; &#xff08;2&#xff09;STM32CubeMX 软件配置 &#xff08;3&#xff09;代码编写 &#xff08;4&#xff09;实验现象 二、RTC接口…...

多摩川编码器协议

多摩川编码器是一种常用的绝对值编码器&#xff0c;其协议基于485硬件接口的标准NRZ协议&#xff0c;通讯波特率为固定的2.5Mbps。以下是多摩川编码器协议的详细说明&#xff1a; 硬件接口 多摩川编码器使用RS485接口进行通信&#xff0c;接口定义如下&#xff1a; 5V供电&…...

Redis篇--常见问题篇7--缓存一致性2(分布式事务框架Seata)

1、概述 在传统的单体应用中&#xff0c;事务管理相对简单&#xff0c;通常使用数据库的本地事务&#xff08;如MySQL的BEGIN和COMMIT&#xff09;来保证数据的一致性。然而&#xff0c;在微服务架构中&#xff0c;由于每个服务都有自己的数据库&#xff0c;跨服务的事务管理变…...

活着就好20241225

亲爱的朋友们&#xff0c;大家早上好&#xff01;&#x1f31e; 今天是25号&#xff0c;星期三&#xff0c;2024年12月的第二十五天&#xff0c;同时也是第51周的第三天&#xff0c;农历甲辰[龙]年十一月初二十一日。在这晨光熹微的美好时刻&#xff0c;愿那和煦而明媚的阳光照…...

navicat在pg数据库中设置自增

navicat在pg数据库中设置自增 问题来源&#xff1a; 在springboot的mubatisplus的插入数据操作时&#xff0c;我们设置了id为自增&#xff0c;但是由于数据库那边没有设置自增&#xff0c;导致数据id为null&#xff0c;插入失败&#xff0c;但是发现navicat设置pg数据库自增不…...

在瑞芯微RK3588平台上使用RKNN部署YOLOv8Pose模型的C++实战指南

在人工智能和计算机视觉领域,人体姿态估计是一项极具挑战性的任务,它对于理解人类行为、增强人机交互等方面具有重要意义。YOLOv8Pose作为YOLO系列中的新成员,以其高效和准确性在人体姿态估计任务中脱颖而出。本文将详细介绍如何在瑞芯微RK3588平台上,使用RKNN(Rockchip N…...

2025年PMP项目管理考试时间一览表

PMP认证是全球项目管理领域公认的权威认证&#xff0c;它不仅能证明你在项目管理方面的专业水平&#xff0c;还能大大提升你的职场竞争力&#xff01; 随着企业对项目管理人才的需求不断增长&#xff0c;获得PMP认证将为你带来更多的职业机会和高薪职位。 为了帮助大家合理安排…...

NS3学习——tcpVegas算法代码详解(1)

目录 一、源码 二、详解 1.定义日志和命名空间 2.注册Typeld类:TcpVegas和GetTypeId方法的实现 3.构造函数和析构函数 4.TcpVegas类中成员函数 (1) Fork函数 (2) PktsAcked函数 (3) EnableVegas函数 (4) DisableVegas函数 一、源码 /* -*- Mode:C; c-file-style:&qu…...

【RAII | 设计模式】C++智能指针,内存管理与设计模式

前言 nav2系列教材&#xff0c;yolov11部署,系统迁移教程我会放到年后一起更新&#xff0c;最近年末手头事情多&#xff0c;还请大家多多谅解。 上一节我们讲述了C移动语义相关的知识&#xff0c;本期我们来看看C中常用的几种智能指针&#xff0c;并看看他们在设计模式中的运…...

亚马逊云科技re:Invent:2025年将发生新变化

自从2006年推出Simple Storage Service&#xff08;S3&#xff09;和Elastic Compute Cloud&#xff08;EC2&#xff09;云计算服务以来&#xff0c;亚马逊云科技在过去的18年中&#xff0c;一直都是全球云计算技术的开创者和引领者。而随着人工智能技术的飞速发展和生成式AI时…...

某集团GIF动态验证码识别

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 本文识别已同步上线至OCR识别网站: http://yxlocr.nat300.top/ocr/other/16 最近某集团更新了验证码,采用gif验证码,部分数据集展示如下...

llama.cpp:PC端测试 MobileVLM -- 电脑端部署图生文大模型

llama.cpp&#xff1a;PC端测试 MobileVLM 1.环境需要2.构建项目3.PC测试 1.环境需要 以下是经实验验证可行的环境参考&#xff0c;也可尝试其他版本。 &#xff08;1&#xff09;PC&#xff1a;Ubuntu 22.04.4 &#xff08;2&#xff09;软件环境&#xff1a;如下表所示 工…...

美国加州房价数据分析01

1.项目简介 本数据分析项目目的是分析美国加州房价数据&#xff0c;预测房价中值。 环境要求&#xff1a; ancondajupyter notebookpython3.10.10 虚拟环境&#xff1a; pandas 2.1.1 numpy 1.26.1 matplotlib 3.8.0 scikit-learn1.3.1 2. 导入并探索数据集 通用的数据分析…...

聚类算法DBSCAN 改进总结

目录 1. HDBSCAN (Hierarchical DBSCAN) 2. OPTICS (Ordering Points To Identify the Clustering Structure) 3. DBSCAN++ (DBSCAN with Preprocessing) 4. DBSCAN with k-distance 5. Density Peaks Clustering (DPC) 6. Generalized DBSCAN (GDBSCAN) 总结 是的,DBS…...

深入理解 Spring IoC 容器与依赖注入:从基本概念到高级应用的全面解析

IoC 容器与依赖注入 一、什么是IoC容器二、IoC原理1. 原理解释2. 一个通俗易懂的解释3. 举个例子a. 传统方式:手动创建对象b. IoC 和 DI:控制反转与依赖注入c. 解释d.总结三、依赖注入(DI)的三种方式1. 构造器注入(Constructor Injection)2. 字段注入(Field Injection)…...

什么是自我控制能力?如何提高自我控制能力?

什么是自我控制能力&#xff1f; 自我控制能力指&#xff0c;在遇到外在事物或者心理活动发生变化之时&#xff0c;人们仍然可以把握自身&#xff0c;指导接下来行动的能力。自我控制能力对一个人来说非常重要&#xff0c;因为在遇到一些事情之事&#xff0c;如果因为控制能力…...

【基于rust-wasm的前端页面转pdf组件和示例】

基于rust-wasm前端页面转pdf组件和示例 朔源多余的废话花哨的吹牛那点东西要不要拿来试试事到如今 做个美梦 我觉得本文的意义在于,wasm扩展了浏览器的边界,但是又担心如同java的web applet水土不服. 如同我至今看不出塞班和iOS的不同下载地址&#xff1a;在github的备份 朔源…...

Issac ROS navigation测试

软硬件环境 GPU: RTX 6000 Ada 系统&#xff1a; Ubuntu22.4 1. 启动Issac sim 从这个网页Develop on NVIDIA Omniverse Platform | NVIDIA Developer下载Omniverse Launcher&#xff0c; 然后执行./omniverse-launcher-linux.AppImage&#xff0c;从EXCHANGE里依次安装Isa…...

WWW23-多行为级联|级联图卷积网络的多行为推荐

论文&#xff1a;https://arxiv.org/abs/2303.15720 代码&#xff1a;https://github.com/SS-00-SS/MBCGCN 这篇论文MB-CGCN和上一篇CRGCN是同一个团队的&#xff0c;都是级联的方式。一个用了残差&#xff0c;一个用了特征转换&#xff0c;文章最后有discussion讨论了两者的不…...

实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域

近日&#xff0c;ISC.AI 2024创新能力百强&#xff08;以下简称“创新百强”&#xff09;正式发布《ISC.AI 2024创新能力全景图谱》。该全景图谱是由政企、资本、高校、行业力量共同完成了领域划分、综合创新等标准的制定&#xff0c;整合梳理了参评的300余家数字安全厂商、120…...

『Linux学习笔记』FRPC 详细介绍及配置解析!

『Linux学习笔记』FRPC 详细介绍及配置解析&#xff01; 文章目录 一. FRPC 详细介绍及配置解析FRPC 的主要功能FRPC 配置文件解析全局配置代理配置第一个代理服务第二个代理服务 配置文件整体工作流程常见配置项说明FRPC 的使用步骤注意事项结论 二. 参考文献 一. FRPC 详细介…...

JS信息收集(小迪网络安全笔记~

免责声明&#xff1a;本文章仅用于交流学习&#xff0c;因文章内容而产生的任何违法&未授权行为&#xff0c;与文章作者无关&#xff01;&#xff01;&#xff01; 附&#xff1a;完整笔记目录~ ps&#xff1a;本人小白&#xff0c;笔记均在个人理解基础上整理&#xff0c;…...

nmap扫描优化

扫描优化用来提高扫描效率。当描一个大范围网络中的主机时&#xff0c;如果使用通用的方法可能需要很长的时间&#xff0c;此时可以使用一些特定选项进行扫描优化&#xff0c;以提高扫描效率。Nmap提供了几种优化方式&#xff0c;如分组扫描、设置发包方式和超时时间等。 分组…...

Nautilus源码编译傻瓜式教程二

Nautilus源码编译傻瓜式教程一 Nautilus编译 依赖项文件 接上文,点击小锤子进行编译后出现如下的错误提示 看这个报错,未找到文件或目录,再看前面的git地址是github就知道肯定是下载有问题,查找下Nautilus项目,发现在nautilus/build-aux/flatpak/org.gnome.Nautilus.json文件…...

并发编程(19)——引用计数型无锁栈

文章目录 十九、day191. 引用计数2. 代码实现2.1 单引用计数器无锁栈2.2 双引用计数器无锁栈 3. 本节的一些理解 十九、day19 上一节我们学习通过侯删链表以及风险指针与侯删链表的组合两种方式实现了并发无锁栈&#xff0c;但是这两种方式有以下缺点&#xff1a; 第一种方式…...

Santa Claus 2 (st表的lower_bound用法)

题目链接&#xff1a;Santa Claus 2 #pragma GCC optimize(2) #include <bits/stdc.h> #define int long long #define fi first #define se second #define all(v) v.begin(),v.end() using namespace std; const int inf 0x3f3f3f3f3f3f3f; const int N 2e55; int …...

Reed-Muller(RM)码之编码

点个关注吧! 看了一些中文的博客,RM码没有很详细的资料,所以本文尝试给出推导原理。 推导 RM码由 ( r , m ) ( r , m ) (r,m)两个参数定义,记作 R M ( r , m ) RM(r,m) RM(r,m)。其中满足 0 ≤ r ≤ m 0 ≤ r ≤ m 0≤r≤m,含义为: 码长: n = 2 m n=2^m n=2m 维数:…...

新世纪的语言智能:GPT-5技术革新与市场前景展望

目录 引言 第一章&#xff1a;GPT-4的成就与局限 1.1 GPT-4的成功 1.2 GPT-4的局限性 第二章&#xff1a;对GPT-5技术革新的预测 2.1 增强的上下文理解能力 2.2 多模态能力的提升 2.3 创造力与多样性的增强 2.4 常识性知识与伦理性的提升 第三章&#xff1a;GPT-5的市…...

国高材服务 | 高分子结晶动力学表征——高低温热台偏光显微镜

众所周知&#xff0c;聚合物制品的实际使用性能&#xff08;如光学透明性、硬度、模量等&#xff09;与材料内部的结晶形态、晶粒大小及完善程度有着密切的联系&#xff0c;因此&#xff0c;对聚合物结晶形态等的研究具有重要的理论和实际意义。 随着结晶条件的不用&#xff0c…...

python+PyPDF2实现PDF的文本内容读取、多文件合并、旋转、裁剪、缩放、加解密、添加水印

目录 读取内容 合并文件 旋转 缩放 裁剪 加密和解密 添加水印 安装&#xff1a;pip install PyPDF2 -i https://pypi.tuna.tsinghua.edu.cn/simple 读取内容 from PyPDF2 import PdfReader, PdfMerger, PdfWriterdef read_pdf(pdf_path):pdf_reader PdfReader(pdf_p…...

蓝桥杯物联网开发板硬件组成

第一节 开发板简介 物联网设计与开发竞赛实训平台由蓝桥杯大赛技术支持单位北京四梯科技有限公司设计和生产&#xff0c;该产品可用于参加蓝桥杯物联网设计与开发赛道的竞赛实训或院校相关课程的 实践教学环节。 开发板基于STM32WLE5无线微控制器设计&#xff0c;芯片提供了25…...

idea2024创建JavaWeb项目以及配置Tomcat详解

今天呢&#xff0c;博主的学习进度也是步入了JavaWeb&#xff0c;目前正在逐步杨帆旗航&#xff0c;迎接全新的狂潮海浪。 那么接下来就给大家出一期有关JavaWeb的配置教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正…...

【蓝桥杯每日一题】分糖果——DFS

分糖果 蓝桥杯每日一题 2024-12-24 分糖果 DFS 题目描述 两种糖果分别有 9 个和 16 个&#xff0c;要全部分给 7 个小朋友&#xff0c;每个小朋友得到的糖果总数最少为 2 个最多为 5 个&#xff0c;问有多少种不同的分法。糖果必须全部分完。 只要有其中一个小朋友在两种方案中…...

矩阵在资产收益(Asset Returns)中的应用:以资产回报矩阵为例(中英双语)

本文中的例子来源于&#xff1a; 这本书&#xff0c;网址为&#xff1a;https://web.stanford.edu/~boyd/vmls/ 矩阵在资产收益(Asset Returns)中的应用&#xff1a;以资产回报矩阵为例 在量化金融中&#xff0c;矩阵作为一种重要的数学工具&#xff0c;被广泛用于描述和分析…...

Jimureport h2命令执行分析记录

首先找testConnection接口&#xff0c;前面进行了jimureport-spring-boot-starter-1.5.8.jar反编译查找&#xff0c;接口找到发现请求参数是json var1是JmreportDynamicDataSourceVo类型&#xff0c;也就是如上图的dbSource&#xff0c;根据打印的结果可以知道这里是local cac…...

1114 Family Property (25)

This time, you are supposed to help us collect the data for family-owned property. Given each persons family members, and the estate&#xff08;房产&#xff09;info under his/her own name, we need to know the size of each family, and the average area and n…...

OpenEuler 22.03 安装 flink-1.17.2 集群

零&#xff1a;规划 本次计划安装三台OpenEuler 22.03 版本操作系统的服务器&#xff0c;用于搭建 flink 集群。这里使用flink1.17.2 的原因&#xff0c;是便于后续与springboot的整合 服务器名IP地址作用其他应用flink01192.168.159.133主jdk11、flink-1.17.2flink02192.168.…...

SQL—leetcode—175. 组合两个表

175. 组合两个表 表: Person -------------------- | 列名 | 类型 | -------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | -------------------- personId 是该表的主键&#xff08;具有唯一值的列&#xff09;。 该表包含一些人的 ID 和…...

html 中 表格和表单的关系与区别

在 HTML 中&#xff0c;表格 (<table>) 和表单 (<form>) 是两种常用于展示数据和收集用户输入的元素。它们具有不同的功能和结构。以下是关于这两者的详细介绍&#xff1a; 1. HTML 表格&#xff08;<table>&#xff09; 表格用于展示结构化的数据&#xf…...

Android14 OTA升级速度过慢问题解决方案

软件版本&#xff1a;Android14 硬件平台&#xff1a;QCS6115 问题&#xff1a;OTA整包升级接近20min&#xff0c;太长无法忍受。 该问题为Android高版本的虚拟AB分区压缩技术所致&#xff0c;其实就是时间换空间&#xff0c;个人推测AB分区压缩会节约硬件存储空间&#xff0…...

Jetson xavier 刷机安装教程

在对Jetson进行刷机过程&#xff0c;浏览了很多的相关教程&#xff0c;大部分教程并不全&#xff0c;而且按照步骤执行会出现许多奇奇怪怪的错误&#xff0c;为了避免大家踩坑&#xff0c;这里给出了完整的解决方法&#xff0c;希望能够提供帮助&#xff01; 首先大家需要准备…...

Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

一、 简介 Hadoop主要在分布式环境下集群机器&#xff0c;获取海量数据的处理能力&#xff0c;实现分布式集群下的大数据存储和计算。 其中三大核心组件: HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。 二、工作原理 2.1 HDFS集群 Web访问地址&…...

芯科科技蓝牙、Wi-Fi、Wi-SUN产品广获业界认可,技术创新引领行业潮流

物联网领军企业领跑未来无线开发平台发展 2024年&#xff0c;Silicon Labs&#xff08;亦称“芯科科技“&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;在物联网&#xff08;IoT&#xff09;领域持续深耕&#xff0c;凭借创新的企业发展理念与实践、行业领先的技术与产品&am…...

C语言——数据在内存中的存储

目录 前言 一数据类型 类型归类 二整形在内存中的存储 原反补码 大小端 相关练习题 三浮点数在内存中的储存 浮点数储存规则 前言 只有取学习数据在内存中的存储&#xff0c;我们在以后才能定义好&#xff08;用好&#xff09;各种类型的数据&#xff01; 一数据类型…...

后端-redis

Redis RedisString类型String类型的常用命令 Hash类型Hash类型的常用命令 List类型List类型的常用命令 Set类型Set类型的常用命令 SortedSet类型SortedSet类型的常用命令 Redis序列化缓存更新策略缓存穿透缓存雪崩缓存击穿 Redis Redis是一个key-value的数据库&#xff0c;key…...