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

【JVM】常用命令

图片

一、前言

Java虚拟机(JVM)是Java程序运行的基础设施,它负责将Java字节码转换为本地机器代码并执行。在开发过程中,我们经常需要使用一些命令来监控和管理JVM的性能和状态。本文将详细介绍6个常用的JVM命令:jps、jstat、jmap、jhat、jstack和jinfo。

二、命令:jps

jps 命令用于列出当前系统中所有正在运行的Java进程及其主类名。它可以帮助我们快速找到我们需要调试或监控的Java进程。

命令格式:

jps [options] [hostid]

option参数:

  • -l : 输出主类全名或jar路径

  • -q : 只输出LVMID

  • -m : 输出JVM启动时传递给main()的参数

  • -v : 输出JVM启动时显示指定的JVM参数

使用示例:

[root@hope ~]# jps -v
11072 Jps -Denv.class.path=.:/home/jdk-11.0.12/lib:/home/jdk-11.0.12/jre/lib: -Dapplication.home=/home/jdk-11.0.12 -Xms8m -Djdk.module.main=jdk.jcmd
27219 Elasticsearch -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=SPI,COMPAT -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.io.tmpdir=/tmp/elasticsearch-13871375846251346330 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -XX:MaxDirectMemorySize=536870912 -Des.path.home=/usr/local/elasticsearch-7.9.3 -Des.path.conf=/usr/local/elasticsearch-7.9.3/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true

三、命令:jstat

jstat 命令用于收集和报告关于Java虚拟机(JVM)的各种统计信息。这些信息可以帮助我们了解JVM的性能状况,例如垃圾回收情况、内存使用情况等。

命令格式:

jstat 【options】 <PID> 【interval】 【count】

 命令参数说明:

  • Options,一般使用 -gcutil 或  -gc 查看gc 情况

  • pid,当前运行的 java进程号 

  • interval,间隔时间,单位为秒或者毫秒 

  • count,打印次数,如果缺省则打印无数次

Options 参数如下:

  • -gc:统计 jdk gc时 heap信息,以使用空间字节数表示

  • -gcutil:统计 gc时, heap情况,以使用空间的百分比表示

  • -class:统计 class loader行为信息

  • -compile:统计编译行为信息

  • -gccapacity:统计不同 generations(新生代,老年代,持久代)的 heap容量情况

  • -gccause:统计引起 gc的事件

  • -gcnew:统计 gc时,新生代的情况

  • -gcnewcapacity:统计 gc时,新生代 heap容量

  • -gcold:统计 gc时,老年代的情况

  • -gcoldcapacity:统计 gc时,老年代 heap容量

  • -gcpermcapacity:统计 gc时, permanent区 heap容量

使用示例1:

jstat -gc 15 5000 5

每5秒一次显示进程号为15的java进程的GC情况,每5S生成异常,一共生成5次。

图片

我可以计算出如下核心数据:

  • 第一个幸存区的大小S0C:300M

  • 第二个幸存区的大小S1C:300M

  • 伊甸园区的大小EC:2400M

  • 老年代大小OC:5000M

  • 方法区大小MC:236M

  • 年轻代垃圾回收消耗时间YGCT:531.164(单位?)

  • 老年代垃圾回收消耗时间FGCT:6.874(单位?)

我们再看输出的GC日志:


Heap before GC invocations=6641 (full 10):par new generation   total 2764800K, used 2492979K [0x00000005cc000000, 0x0000000687800000, 0x0000000687800000)eden space 2457600K, 100% used [0x00000005cc000000, 0x0000000662000000, 0x0000000662000000)from space 307200K,  11% used [0x0000000674c00000, 0x0000000676e8cc90, 0x0000000687800000)to   space 307200K,   0% used [0x0000000662000000, 0x0000000662000000, 0x0000000674c00000)concurrent mark-sweep generation total 5120000K, used 3462278K [0x0000000687800000, 0x00000007c0000000, 0x00000007c0000000)Metaspace       used 209218K, capacity 229352K, committed 241360K, reserved 1265664Kclass space    used 20538K, capacity 24038K, committed 26120K, reserved 1048576K
343501.719: [GC (Allocation Failure) 343501.719: [ParNew: 2492979K->24333K(2764800K), 0.0261186 secs] 5955257K->3486700K(7884800K), 0.0262698 secs] [Times: user=0.05 sys=0.01, real=0.03 secs]

可以计算出如下核心数据:

  • 第一个幸存区的大小S0C:300M

  • 第二个幸存区的大小S1C:300M

  • 伊甸园区的大小EC:2400M

  • 老年代大小OC:从这里计算不出来

  • 方法区大小MC:从这里计算不出来

  • GC耗时:30ms

配置的JAVA_OPTS参数如下:

-Xmx8000M -Xms8000M -Xmn3000M -XX:PermSize=1000M -XX:MaxPermSize=1000M -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=69 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:/home/work/logs/applogs/gc.log -javaagent:/home/work/app/prometheus/jmx_prometheus_javaagent-0.12.0.jar=3010:/home/work/app/prometheus/jmx-exporter.yml

使用示例2:

jstat -gccapacity 15

同-gc,不过还会输出Java堆各区域使用到的最大、最小空间


NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC 
819200.0 819200.0 819200.0 273024.0 273024.0 273152.0  5324800.0  5324800.0  5324800.0  5324800.0      0.0 1251328.0 223560.0      0.0 1048576.0  22716.0    174     8

NGCMN Minimum new generation capacity (KB).
NGCMX Maximum new generation capacity (KB).
NGC Current new generation capacity (KB).
S0C Current survivor space 0 capacity (KB).
S1C Current survivor space 1 capacity (KB).
EC Current eden space capacity (KB).
OGCMN Minimum old generation capacity (KB).
OGCMX Maximum old generation capacity (KB).
OGC Current old generation capacity (KB).
OC Current old space capacity (KB).
PGCMN Minimum permanent generation capacity (KB).
PGCMX Maximum Permanent generation capacity (KB).
PGC Current Permanent generation capacity (KB).
PC Current Permanent space capacity (KB).
YGC Number of Young generation GC Events.
FGC Number of Full GC Events.

四、命令:jmap

jmap命令用于生成Java堆内存快照文件(heap dump)。这些文件可以用于分析内存泄漏问题,或者进行性能调优。

命令格式: 

jmap 【options】 <pid>

options参数解释 :

  • no options 如果使用不带选项参数的jmap打印共享对象映射, 将会打印目标虚拟机中加载的每个对象的起始地址、映射大小及共享对象文件的路径全称。(很占资源, 一般不会使用)

  • -heap:打印java heap 摘要

  • -histo[:live] :打印堆中的java对象统计信息

  • -clstats :打印类加载器统计信息

  • -finalizerinfo:打印在f-queue中等待执行finalizer方法的对象

  • -dump:生成java堆的dump文件, dump-options: 

  • live :只转储存活的对象,如果没有指定则转储所有对象

  • format=b:二进制格式

  • file=[Path] :将文件转储到指定文件中

使用示例1:

将java堆中存活的对象信息转储到/dump.bin文件中

jmap -dump:live,format=b,file=/dump.bin 0813

我们来看一下堆信息: 

jmap -heap 0813

输出: 

Attaching to process ID 11666, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.25-b02using thread-local object allocation.
Parallel GC with 4 thread(s)Heap Configuration: //堆内存初始化配置MinHeapFreeRatio  = 0 //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40)MaxHeapFreeRatio  = 100 //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70)MaxHeapSize= 1073741824 (1024.0MB) //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小NewSize    = 22020096 (21.0MB) //对应jvm启动参数-XX:NewSize=设置JVM堆的新生代的默认大小MaxNewSize = 357564416 (341.0MB) //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的新生代的最大大小OldSize    = 45088768 (43.0MB) //对应jvm启动参数-XX:OldSize=<value>:设置JVM堆的老年代的大小NewRatio   = 2 //对应jvm启动参数-XX:NewRatio=:新生代和老生代的大小比率SurvivorRatio     = 8 //对应jvm启动参数-XX:SurvivorRatio=设置新生代中Eden区与Survivor区的大小比值MetaspaceSize     = 21807104 (20.796875MB) // 元数据区大小CompressedClassSpaceSize = 1073741824 (1024.0MB) //类压缩空间大小MaxMetaspaceSize  = 17592186044415 MB //元数据区最大大小G1HeapRegionSize  = 0 (0.0MB) //G1垃圾收集器每个Region大小Heap Usage: //堆内存使用情况
PS Young Generation 
Eden Space: //Eden区内存分布capacity = 17825792 (17.0MB) //Eden区总容量used     = 12704088 (12.115562438964844MB) //Eden区已使用free     = 5121704 (4.884437561035156MB) //Eden区剩余容量71.26801434685203% used //Eden区使用比率From Space: //其中一个Survivor区的内存分布capacity = 2097152 (2.0MB)used     = 1703936 (1.625MB)free     = 393216 (0.375MB)81.25% used
To Space: //另一个Survivor区的内存分布capacity = 2097152 (2.0MB)used     = 0 (0.0MB)free     = 2097152 (2.0MB)0.0% used
PS Old Generationcapacity = 52428800 (50.0MB) //老年代容量used     = 28325712 (27.013504028320312MB) //老年代已使用free     = 24103088 (22.986495971679688MB) //老年代空闲54.027008056640625% used //老年代使用比率15884 interned Strings occupying 2075304 bytes.

输出存活对象信息 : 

jmap -histo:live 0813 | more

图片

使用示例2:

jmap -histo:live 10 | more

打印堆的对象统计,包括对象数、内存大小等等 (因为在dump:live前会进行full gc,如果带上live则只统计活对象,因此不加live的堆大小要大于加live堆的大小 ),仅打印前10行。


num     #instances         #bytes  class name
----------------------------------------------1:        938552      113143448  [C2:        983711       31478752  java.util.HashMap$Node3:        930339       22328136  java.lang.String4:         61854       21628224  [B5:        215981       19006328  java.lang.reflect.Method6:        200183       18164992  [Ljava.lang.Object;7:        121341       16297048  [Ljava.util.HashMap$Node;8:        511306       12919376  [Ljava.lang.String;9:        169168        9391000  [I10:        165488        6619520  java.util.LinkedHashMap$Entry11:        131563        6315024  org.hibernate.hql.internal.ast.tree.Node12:        122202        5865696  java.util.HashMap13:        320105        5121680  java.lang.Integer14:        204087        4898088  java.util.ArrayList15:        138888        4444416  java.util.concurrent.ConcurrentHashMap$Node... ...

xml class name是对象类型,说明如下:


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

五、命令:jhat

jhat 用来分析jmap生成dump文件的命令, jhat内置了应用服务器,可以通过网页查看dump文件分析结果,jhat一般用于离线分析。

命令格式: 

jhap 【options】 【dumpfile】

option参数解释: 

  • -stack false :关闭对象分配调用堆栈的跟踪

  • -refs false:关闭对象引用的跟踪

  • -port:HTTP服务器端口, 默认是7000

  • -debug:debug级别

  • -version:分析报告版本

使用示例:

jhat dump.hprof

执行结果:

图片

可以通过Http://localhost:7000访问:

图片

具体排查时需要结合代码,观察是否大量应该被回收的对象在一直被引用或者是否有占用内存特别大的对象无法被回收。一般情况,会down到客户端用工具来分析。

六、命令:jstack

jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。

另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

命令格式: 

jstack 【options】 【pid】

options参数解释: 

  • -F :当使用jstack无响应时,强制输出线程堆栈

  • -m:同时输出java堆栈和c/c++ 堆栈信息

  • -l :除了输出堆栈信息外, 显示关于锁的附加信息

使用示例:

jstack -l 5073|more

执行结果:

图片

七、命令:jinfo

jinfo命令用于显示Java虚拟机(JVM)的配置信息,包括系统属性、Java版本、可用的JVM选项等。这可以帮助我们了解JVM的配置和使用情况。

命令格式:

jinfo 【options】 <pid>

options参数解释:

  • no options :输出所有的系统属性和参数

  • -flag :打印指定名称的参数

  • -flag [+|-] :打开或关闭参数

  • -flag = 设置参数值

  • -flags 打印所有参数

  • -sysprops 打印系统配置

使用示例:


# 查看jvm参数和系统配置
jinfo 1234
jinfo -flags 1234
jinfo -sysprops 1234# 查看打印GC日志参数
jinfo -flag PrintGC 1234
jinfo -flag PrintGCDetail 1234# 打开/关闭 GC日志
jinfo -flag +PrintGC 1234
jinfo -flag -PrintGCDetail 1234# 设置或自改参数值
jinfo -flag -Xms10m 1234

图片

相关文章:

【JVM】常用命令

一、前言 Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的基础设施&#xff0c;它负责将Java字节码转换为本地机器代码并执行。在开发过程中&#xff0c;我们经常需要使用一些命令来监控和管理JVM的性能和状态。本文将详细介绍6个常用的JVM命令&#xff1a;jps、jstat…...

第 7 章 排序算法

文章目录 7.1 排序算法的介绍7.3 算法的时间复杂度7.3.1 度量一个程序(算法)执行时间的两种方法7.3.2 时间频度7.3.3 时间复杂度7.3.4 常见的时间复杂度7.3.5 平均时间复杂度和最坏时间复杂度 7.4 算法的空间复杂度简介7.4.1 基本介绍 7.5 冒泡排序7.5.1 基本介绍7.5.2 演示冒泡…...

机器人持续学习基准LIBERO系列7——计算并可视化点云

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新机器人持续学习基准LIBERO系列4——robosuite最基本demo机器人持续学习基准LIBERO系列5——…...

基于 Level set 方法的医学图像分割

摘 要 医学图像分割是计算机辅助诊断系统设计中的关键技术。对于医学图像分割问题,它一般可分为两部分:(l)图像中特定目标区域(器官或组织)的识别;(2)目标区域完整性的描述与提取。相比于其他图像,医学图像的复杂性和多样性,使得传统的基于底层图像信息的分割方法很难取得好的…...

【C++入门】C++ STL中string常用函数用法总结

目录 前言 1. string使用 2. string的常见构造 3. string类对象的访问及遍历 迭代器遍历&#xff1a; 访问&#xff1a; 4. string类对象的容量操作 4.1 size和length 4.2 clear、empty和capacity 4.3 reserve和resize reserve resize 5. string类对象的修改操作 push_back o…...

Rust变量、常量声明与基本数据类型

Rust是一门系统级别的编程语言&#xff0c;注重安全性、性能和并发。在这篇博客中&#xff0c;我们将介绍Rust中的变量、常量声明以及基本数据类型&#xff0c;并通过示例说明每一种类型的用法。 变量声明 在Rust中&#xff0c;使用 let 关键字声明变量。变量默认是不可变的&…...

【MATLAB】 SSA奇异谱分析信号分解算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 SSA奇异谱分析&#xff08;Singular Spectrum Analysis&#xff09;是一种处理非线性时间序列数据的方法&#xff0c;可以对时间序列进行分析和预测。 它基于构造在时间序列上的特定矩阵的奇异值分解&#…...

Nginx+Tomcat负载均衡、动静分离以及Nginx负载均衡和四层代理

目录 NginxTomcat负载均衡、动静分离 Nginx 负载均衡模式&#xff1a; Nginx 四层代理配置&#xff1a; NginxTomcat负载均衡、动静分离 Nginx 服务器&#xff1a;192.168.80.10:80 Tomcat服务器1&#xff1a;192.168.80.100:80 Tomcat服务器2&#xff1a;192.168.80.101:80…...

Vue3中provide,inject使用

一&#xff0c;provide,inject使用&#xff1a; 应用场景&#xff1a;向孙组件传数据 应用Vue3碎片&#xff1a; ref&#xff0c;reactive&#xff0c;isRef&#xff0c;provide, inject 1.provide,inject使用 a.爷组件引入 import {ref,provide} from vue const drinkListre…...

Django命令模块

这篇文章我们主要来介绍一下关于 Django 的命令模块&#xff0c;我们经常会使用到&#xff0c;比如以下几个常用的命令&#xff0c;都属于 Django 的命令模块&#xff1a; python manage.py makemigrations python manage.py migrate python manage.py startapp python manage…...

【linux驱动开发】在linux内核中注册一个杂项设备与字符设备以及内核传参的详细教程

文章目录 注册杂项设备驱动模块传参注册字符设备 开发环境&#xff1a; windows ubuntu18.04 迅为rk3568开发板 注册杂项设备 相较于字符设备&#xff0c;杂项设备有以下两个优点: 节省主设备号:杂项设备的主设备号固定为 10&#xff0c;在系统中注册多个 misc 设备驱动时&…...

Golang条件编译 | 获取系统的磁盘空间内存占用demo | gopsutil/disk库(跨平台方案)

文章目录 一、Golang条件编译1. 构建标签( Build tags)2. 文件后缀&#xff08;File suffixes&#xff09; 二、GO golang 获取磁盘空间 条件编译思路 三、【推荐】使用github.com/shirou/gopsutil/disk这个库&#xff0c;如何获取机器下不同磁盘分区的内容 一、Golang条件编译…...

22/76-池化

池化&#xff08;最大池化层&#xff1a;选每个kernel中最大的数&#xff09; 填充、步幅、多个通道&#xff1a; 池化层与卷积层类似&#xff0c;都具有填充和步幅。 没有可学习的参数。 在每个输入通道应用池化层以获得相应的输出通道。 输出通道数输入通道数。 平均池化层…...

江科大STM32 下

目录 ADC数模转换器DMA直接存储器存取USART串口9-2 串口发送接受9-3 串口收发HEX数据包 I2C(mpu6050陀螺仪和加速度计)SPI协议10.1 SPI简介W25Q64简介10.3 SPI软件读写W25Q6410.4 SPI硬件读写W25Q64 BKP、RTC11.0 Unix时间戳11.1 读写备份寄存器BKP11.2 RTC实时时钟 十二、PWR1…...

利用HTML和CSS实现的浮动布局

代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>*{m…...

2024年第十届控制、自动化与机器人国际会议(ICCAR 2024)即将召开!

2024年4月27~29日 新加披 会议官网&#xff1a;10th-ICCAR 2024https://iccar.org/index.html 第十届控制、自动化和机器人国际会议将于2024年4月27-29日在新加坡举办。本次会议由新加坡电子学会&#xff0c;IEEE机器人和自动控制协会和IEEE联合主办&#xff0c;并得到北京航空…...

基于python集成学习算法XGBoost农业数据可视化分析预测系统

文章目录 基于python集成学习算法XGBoost农业数据可视化分析预测系统一、项目简介二、开发环境三、项目技术四、功能结构五、功能实现模型构建封装类用于网格调参训练模型系统可视化数据请求接口模型评分 0.5*mse 六、系统实现七、总结 基于python集成学习算法XGBoost农业数据可…...

第29集《佛法修学概要》

丁三、声闻乘 分二&#xff1a;戊一、释义&#xff1b;戊二、四谛法&#xff1b;戊三、结示 请大家打开讲义第八十二页。我们看丁三&#xff0c;声闻乘。 在祖师大德的判教当中&#xff0c;把我们整个大乘的成佛之道分成了三个部分&#xff1a;第一个是安乐道&#xff0c;第…...

奥伦德光电耦合器5G通信领域及其相关领域推荐

光电耦合器是以光为媒介传输电信号的一种电-光-电转换器件。由于该器件使用寿命长、工作温度范围宽&#xff0c;所以在过程控制、工业通信、家用电器、医疗设备、通信设备、计算机以及精密仪器等方面有着广泛应用在当前工艺技术持续发展与提升的过程中&#xff0c;其工作速度、…...

机器学习算法 - 马尔可夫链

马尔可夫链&#xff08;Markov Chain&#xff09;可以说是机器学习和人工智能的基石&#xff0c;在强化学习、自然语言处理、金融领域、天气预测、语音识别方面都有着极其广泛的应用 > The future is independent of the past given the present 未来独立于过去&#xff…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...