JVM 性能调优 - 参数基础(2)

查看 JDK 版本

$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

查看 Java 帮助文档

$ java -help
用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
其中选项包括:
    -d32          使用 32 位数据模型 (如果可用)
    -d64          使用 64 位数据模型 (如果可用)
    -server       选择 "server" VM
                  默认 VM 是 server.

    -cp <目录和 zip/jar 文件的类搜索路径>
    -classpath <目录和 zip/jar 文件的类搜索路径>
                  用 ; 分隔的目录, JAR 档案
                  和 ZIP 档案列表, 用于搜索类文件。
    -D<名称>=<值>
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  按指定的粒度启用断言
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  禁用具有指定粒度的断言
    -esa | -enablesystemassertions
                  启用系统断言
    -dsa | -disablesystemassertions
                  禁用系统断言
    -agentlib:<libname>[=<选项>]
                  加载本机代理库 <libname>, 例如 -agentlib:hprof
                  另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -agentpath:<pathname>[=<选项>]
                  按完整路径名加载本机代理库
    -javaagent:<jarpath>[=<选项>]
                  加载 Java 编程语言代理, 请参阅 java.lang.instrument
    -splash:<imagepath>
                  使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。

查看 JDK 版本和帮助文档

$ java -showversion
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)           
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

用法: java [-options] class [args...]          
           (执行类)                            
   或  java [-options] -jar jarfile [args...]  
           (执行 jar 文件)                     
其中选项包括:                                  
    -d32          使用 32 位数据模型 (如果可用)
    -d64          使用 64 位数据模型 (如果可用)
    -server       选择 "server" VM             
                  默认 VM 是 server.           

    -cp <目录和 zip/jar 文件的类搜索路径>
    -classpath <目录和 zip/jar 文件的类搜索路径>
                  用 ; 分隔的目录, JAR 档案
                  和 ZIP 档案列表, 用于搜索类文件。
    -D<名称>=<值>
                  设置系统属性
    -verbose:[class|gc|jni]
                  启用详细输出
    -version      输出产品版本并退出
    -version:<值>
                  警告: 此功能已过时, 将在
                  未来发行版中删除。
                  需要指定的版本才能运行
    -showversion  输出产品版本并继续
    -jre-restrict-search | -no-jre-restrict-search
                  警告: 此功能已过时, 将在
                  未来发行版中删除。
                  在版本搜索中包括/排除用户专用 JRE
    -? -help      输出此帮助消息
    -X            输出非标准选项的帮助
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  按指定的粒度启用断言
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  禁用具有指定粒度的断言
    -esa | -enablesystemassertions
                  启用系统断言
    -dsa | -disablesystemassertions
                  禁用系统断言
    -agentlib:<libname>[=<选项>]
                  加载本机代理库 <libname>, 例如 -agentlib:hprof
                  另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -agentpath:<pathname>[=<选项>]
                  按完整路径名加载本机代理库
    -javaagent:<jarpath>[=<选项>]
                  加载 Java 编程语言代理, 请参阅 java.lang.instrument
    -splash:<imagepath>
                  使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。

JVM 参数规则

当我们运行一个 java 程序的时候,通常都是 java -jar xxx.jar 的命令,也会根据实际情况配置一些运营参数

$ ps -ef | grep 2144945
root     2144945       1  0 Jan15 ?        01:44:21 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin/java -Dproc_nodemanager -Djava.net.preferIPv4Stack=true -Dsun.security.krb5.debug=true -Dsun.security.spnego.debug -Djava.library.path=/opt/hadoop/lib/native -Dcom.sun.management.jmxremote.port=7774 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -XX:+UseParallelGC -Dyarn.log.dir=/opt/hadoop/logs -Dyarn.log.file=hadoop-root-nodemanager-LOCAL-VM-337.log -Dyarn.home.dir=/opt/hadoop -Dyarn.root.logger=INFO,console -Dhadoop.log.dir=/opt/hadoop/logs -Dhadoop.log.file=hadoop-root-nodemanager-LOCAL-VM-337.log -Dhadoop.home.dir=/opt/hadoop -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,RFA -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.yarn.server.nodemanager.NodeManager

这些参数可以分为四类:

  • 以 - 开头的标准参数。所有 JVM 都支持,且向后兼容。

如 -verbose:gc、-server

  • 以 -X 开头的非标准参数,绝大多数都是用于控制 JVM 的参数。

如 -Xmx2G、-Xms2G

  • 以 -XX 开头的非稳定参数,专门用于控制 JVM 行为的参数。

如 -XX:PrintGCDetails、-XX:+UseParNewGC

  • 以 -D 开头的系统参数(也可以是自定义参数),在程序中可以通过 System.setProperty(key, value) 进行设置,以及通过 System.getProperty(key) 进行获取。

如 -Dfile.encoding=UTF-8、-Dlog.path=/data/log/

下面我们主要介绍 -X 和 -XX 参数。

-X 非标准参数的使用

在这里,先简单介绍下 JVM 常用的编译模式:

  1. 解释模式(Interpreted Mode):在解释模式下,JVM会逐行解释Java字节码并执行。这种模式下的代码执行速度较慢,因为每次执行都需要解释字节码。

  2. 即时编译模式(Just-In-Time Compilation Mode,JIT):在即时编译模式下,JVM会将热点代码(经常执行的代码)编译成本地机器代码,以提高执行速度。JIT编译器会根据运行时的性能数据进行优化,以提高代码的执行效率。

  3. 混合模式(Mixed Mode):混合模式是解释模式和即时编译模式的结合。在初始阶段,JVM会使用解释模式执行代码,同时收集运行时的性能数据。当代码被判定为热点代码时,JVM会将其编译成本地机器代码,并在后续执行中使用即时编译模式。

  4. AOT编译模式(Ahead-Of-Time Compilation Mode):AOT编译模式是在应用程序部署之前将Java字节码编译成本地机器代码。这种模式可以提高应用程序的启动速度和整体性能,但会增加部署和维护的复杂性。

下面,我们通过 java -version 命令查看 JDK 版本信息

通过截图可知,我们的编译模式为 mixed mode(混合模式,默认)。

修改编译模式为解释执行模式:

修改编译模式为编译模式:

修改编译模式为混合模式:

对于不同编译模式的耗时情况,可以通过以下实验进行验证

package com.test;public class TestCompileMode {public static void main(String[] args) {Long start = System.currentTimeMillis();for(int i =0; i < 100000; i++) {}Long end = System.currentTimeMillis();System.out.println("cost: " + (end - start) + " ms");}
}

$ java -Xint com.test.TestCompileMode
cost: 1 ms

$ java -Xcomp com.test.TestCompileMode
cost: 3 ms

$ java -Xmixed com.test.TestCompileMode
cost: 0 ms

-XX 非稳定参数的使用

查看 XX 配置项所有参数及其默认值

$ java -XX:+PrintFlagsInitial | head -n 10
[Global flags]
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
    uintx AdaptiveSizePausePolicy                   = 0                                   {product}
    uintx AdaptiveSizePolicyCollectionCostMargin    = 50                                  {product}
    uintx AdaptiveSizePolicyInitializingSteps       = 20                                  {product}
    uintx AdaptiveSizePolicyOutputInterval          = 0                                   {product}
    uintx AdaptiveSizePolicyWeight                  = 10                                  {product}
    uintx AdaptiveSizeThroughPutPolicy              = 0                                   {product}
    uintx AdaptiveTimeWeight                        = 25                                  {product}

由于非State参数非常的多,因此这里就不列出所有参数进行讲解。只介绍我们比较常用的。

Java HotSpot VM 中 -XX 的按照功能可以被松散的聚合成三类:

  • 行为参数(Behavioral Options):用于改变jvm的一些基础行为;
  • 性能调优(Performance Tuning):用于jvm的性能调优;
  • 调试参数(Debugging Options):一般用于打开跟踪、打印、输出等jvm参数,用于显示jvm更加详细的信息;

行为参数(功能开关)

-XX:-DisableExplicitGC  禁止调用System.gc();但jvm的gc仍然有效
-XX:+MaxFDLimit 最大化文件描述符的数量限制
-XX:+ScavengeBeforeFullGC   新生代GC优先于Full GC执行
-XX:+UseGCOverheadLimit 在抛出OOM之前限制jvm耗费在GC上的时间比例
-XX:-UseConcMarkSweepGC 对老生代采用并发标记交换算法进行GC
-XX:-UseParallelGC  启用并行GC
-XX:-UseParallelOldGC   对Full GC启用并行,当-XX:-UseParallelGC启用时该项自动启用
-XX:-UseSerialGC    启用串行GC
-XX:+UseThreadPriorities    启用本地线程优先级 

性能调优

-XX:LargePageSizeInBytes=4m 设置用于Java堆的大页面尺寸
-XX:MaxHeapFreeRatio=70 GC后java堆中空闲量占的最大比例
-XX:MaxNewSize=size 新生成对象能占用内存的最大值
-XX:MaxPermSize=64m 老生代对象能占用内存的最大值
-XX:MinHeapFreeRatio=40 GC后java堆中空闲量占的最小比例
-XX:NewRatio=2  新生代内存容量与老生代内存容量的比例
-XX:NewSize=2.125m  新生代对象生成时占用内存的默认值
-XX:ReservedCodeCacheSize=32m   保留代码占用的内存容量
-XX:ThreadStackSize=512 设置线程栈大小,若为0则使用系统默认值
-XX:+UseLargePages  使用大页面内存

调试参数

-XX:-CITime 打印消耗在JIT编译的时间
-XX:ErrorFile=./hs_err_pid<pid>.log 保存错误日志或者数据到文件中
-XX:-ExtendedDTraceProbes   开启solaris特有的dtrace探针
-XX:HeapDumpPath=./java_pid<pid>.hprof  指定导出堆信息时的路径或文件名
-XX:-HeapDumpOnOutOfMemoryError 当首次遭遇OOM时导出此时堆中相关信息
-XX:OnError="<cmd args>;<cmd args>" 出现致命ERROR之后运行自定义命令
-XX:OnOutOfMemoryError="<cmd args>;<cmd args>"  当首次遭遇OOM时执行自定义命令
-XX:-PrintClassHistogram    遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同
-XX:-PrintConcurrentLocks   遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同
-XX:-PrintCommandLineFlags  打印在命令行中出现过的标记
-XX:-PrintCompilation   当一个方法被编译时打印相关信息
-XX:-PrintGC    每次GC时打印相关信息
-XX:-PrintGC Details    每次GC时打印详细信息
-XX:-PrintGCTimeStamps  打印每次GC的时间戳
-XX:-TraceClassLoading  跟踪类的加载信息
-XX:-TraceClassLoadingPreorder  跟踪被引用到的所有类的加载信息
-XX:-TraceClassResolution   跟踪常量池
-XX:-TraceClassUnloading    跟踪类的卸载信息
-XX:-TraceLoaderConstraints 跟踪类加载器约束的相关信息

XX 参数的使用有两种类型,一种是 Boolean 类型,另外一种是键值对类型。

  • Boolean 类型。
    • -XX:+某个属性 或者,-XX:-某个属性。 + 表示开启了这个属性,- 表示关闭了这个属性。
    • 案例:-XX:-PrintGCDetails,表示关闭了 GC 详情输出。同理,-XX:+PrintGCDetails,表示开启了GC详情输出
  • key-value 类型。
    • -XX: key=value。
    • 案例:-XX: MetaspaceSize=20000,设置 Java 元空间的值为 20000。

查看程序是否开启了某个参数

package com.test;public class TestCompileMode {public static void main(String[] args) throws InterruptedException {System.out.println("Hello, World!");Thread.sleep(Integer.MAX_VALUE);}
}

【关闭验证】

运行 TestCompileMode

java com.test.TestCompileMode

使用 jps(Java Virtual Machine Process Status Tool) 命令查看进程ID

$ jps -l
27392 org.jetbrains.idea.maven.server.RemoteMavenServer
17240
22088 sun.tools.jps.Jps
21740 org.jetbrains.idea.maven.server.RemoteMavenServer
25548 com.test.TestCompileMode

查看程序是否开启了 PrintGCDetails 参数

$ jinfo -flag PrintGCDetails 25548
-XX:-PrintGCDetails

- 没有关闭,故程序没有开启 PrintGCDetails

【开启验证】

运行 TestCompileMode

java -XX:+PrintGCDetails com.test.TestCompileMode

使用 jps(Java Virtual Machine Process Status Tool) 命令查看进程ID

$ jps -l
27392 org.jetbrains.idea.maven.server.RemoteMavenServer
23444 com.test.TestCompileMode
17240
25768 sun.tools.jps.Jps
21740 org.jetbrains.idea.maven.server.RemoteMavenServer

查看程序是否开启了 PrintGCDetails 参数

$ jinfo -flag PrintGCDetails 23444
-XX:+PrintGCDetails

+ 表示开启,故程序开启了 PrintGCDetails

查看元数据空间值

package com.test;public class TestCompileMode {public static void main(String[] args) throws InterruptedException {System.out.println("Hello, World!");Thread.sleep(Integer.MAX_VALUE);}
}

运行 TestCompileMode

 java com.test.TestCompileMode

查看程序的元数据空间值

$ jps -l
27392 org.jetbrains.idea.maven.server.RemoteMavenServer
23444 com.test.TestCompileMode
17240
25768 sun.tools.jps.Jps
21740 org.jetbrains.idea.maven.server.RemoteMavenServer

$ jinfo -flag MetaspaceSize 23444
-XX:MetaspaceSize=21807104

设置元数据空间值

java -XX:MetaspaceSize=100m com.test.TestCompileMode

设置堆内内存大小

$ java -XX:InitialHeapSize=50m -XX:MaxHeapSize=100m com.test.TestCompileMode

或者

$ java -Xms50m -Xmx100m com.test.TestCompileMode

默认情况下 -Xms 初始化堆内存为物理内存的 1/64 ,最大堆内存为物理内存 1/4。

查看堆内存参数 

$ jps -l
25920 sun.tools.jps.Jps
27392 org.jetbrains.idea.maven.server.RemoteMavenServer
30532 com.test.TestCompileMode
17240 
21740 org.jetbrains.idea.maven.server.RemoteMavenServer
26748 org.jetbrains.jps.cmdline.Launcher

$ jinfo -flag InitialHeapSize 30532
-XX:InitialHeapSize=52428800

$ jinfo -flag MaxHeapSize 30532
-XX:MaxHeapSize=104857600

查看程序的所有参数值

$ jps -l
27392 org.jetbrains.idea.maven.server.RemoteMavenServer
2804 sun.tools.jps.Jps
30452 com.test.TestCompileMode
17240 
21740 org.jetbrains.idea.maven.server.RemoteMavenServer

$ jinfo -flags 30452
Attaching to process ID 30452, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.151-b12
Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=104857600 -XX:MaxNewSize=34603008 -XX:MinHe
apDeltaBytes=524288 -XX:NewSize=17301504 -XX:OldSize=35127296 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUno
rderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -Xms50m -Xmx100m

  • Non-Default:表示该参数的值已经被用户手动设置,而不是使用默认值。这意味着该参数的值是通过命令行选项、环境变量或其他方式显式设置的,而不是使用JVM的默认配置。

  • Command Line Flag:表示该参数是通过命令行选项来设置的。

查看 JVM 当前所有 XX 配置项

$ java -XX:+PrintFlagsFinal -version | head -n 10
[Global flags]
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
    uintx AdaptiveSizePausePolicy                   = 0                                   {product}
    uintx AdaptiveSizePolicyCollectionCostMargin    = 50                                  {product}
    uintx AdaptiveSizePolicyInitializingSteps       = 20                                  {product}
    uintx AdaptiveSizePolicyOutputInterval          = 0                                   {product}
    uintx AdaptiveSizePolicyWeight                  = 10                                  {product}
    uintx AdaptiveSizeThroughPutPolicy              = 0                                   {product}
    uintx AdaptiveTimeWeight                        = 25                                  {product}
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

Global flags:全局参数,如果自定义修改了某个应用的参数,并不会修改全局参数。

查看 InitialHeapSize 默认值和当前配置的值

$ java -XX:+PrintFlagsInitial -version | grep InitialHeapSize
    uintx InitialHeapSize                           = 0                                   {product}

$ java -XX:+PrintFlagsFinal -version | grep InitialHeapSize
    uintx InitialHeapSize                          := 400556032                           {product}
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

查看 MaxHeapSize 默认值和当前配置的值

$ java -XX:+PrintFlagsInitial -version | grep MaxHeapSize
    uintx MaxHeapSize                               = 130862280                           {product}

$ java -XX:+PrintFlagsFinal -version | grep MaxHeapSize
    uintx MaxHeapSize                              := 2111832064                          {product}
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
 

查看 JVM 自动配置的或者用户手动设置的 XX 选项(非应用程序的)

$ java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=400412928 -XX:MaxHeapSize=6406606848 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompresse
dOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

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

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

相关文章

Python中的for循环用法详解,一文搞定它

文章目录 for循环1.for循环的基本语法&#xff08;1&#xff09;遍历不等长多级容器&#xff08;2&#xff09;遍历不等长多级容器&#xff08;3&#xff09;遍历等长的容器 2.变量的解包3.for...else【详细讲解】4.range对象5.总结6.打印 1 ~ 10 跳过57.打印菱形小星星 for循环…

Flink 动态表 (Dynamic Table) 解读

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

docer compose部署simple-docker

简介 一个看似简陋但是功能足够用的docker管理工具 安装 创建目录 mkdir -p /opt/simple-docker cd /opt/simple-docker 创建并启动容器 编写docker-compose.yml文件,内容如下 version: 3 services: redis: image: redis:latest restart: always web: image: registry.cn-…

HR看了都想点开的简历:吸睛模板+撰写技巧

工作致富的第一步&#xff1a;写一份好的简历。一个独特、简单、清晰的个人简历模板可以更好地吸引雇主的注意和兴趣&#xff0c;并帮助你在许多求职者中脱颖而出。如何制作一份令人印象深刻的简历&#xff1f;巧妙地使用个人简历模板是一个不错的选择。在本文中&#xff0c;我…

线性代数:矩阵的初等变换

目录 一、初等行变换 行阶梯 / 行最简 性质 二、矩阵的标准型 三、矩阵的等价 四、初等矩阵 五、重要性质与定理 一、初等行变换 行阶梯 / 行最简 性质 二、矩阵的标准型 三、矩阵的等价 四、初等矩阵 五、重要性质与定理

租游戏服务器多少钱1个月?一年价格多少?

游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选&#xff0c;可以选择轻量应用服务器和云服务器&#xff0c;阿腾云atengyu…

SpringBoot注解--04--01--注解@Mapper在IDEA中自动注入警告的解决方案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 问题原因 解决方案方法1&#xff1a;为 Autowired 注解设置required false方法2&#xff1a;用 Resource 替换 Autowired方法3&#xff1a;在Mapper接口上加上Repo…

跟着pink老师前端入门教程-day19

一、移动WEB开发之流式布局 1、 移动端基础 1.1 浏览器现状 PC端常见浏览器&#xff1a;360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。 移动端常见浏览器&#xff1a;UC浏览器&#xff0c;QQ浏览器&#xff0c;欧朋浏览器&#xff0…

论文阅读-Transformer-based language models for software vulnerability detection

「分享了一批文献给你&#xff0c;请您通过浏览器打开 https://www.ivysci.com/web/share/biblios/D2xqz52xQJ4RKceFXAFaDU/ 您还可以一键导入到 ivySCI 文献管理软件阅读&#xff0c;并在论文中引用 」 本文主旨&#xff1a;本文提出了一个系统的框架来利用基于Transformer的语…

宠物空气净化器适合养猫家庭吗?除猫毛好的猫用空气净化器推荐

宠物掉毛是一个普遍存在的问题&#xff0c;尤其在脱毛季节&#xff0c;毛发似乎无处不在。这给家中的小孩和老人带来了很多麻烦&#xff0c;他们容易流鼻涕、过敏等不适。此外&#xff0c;宠物有时还会不规矩地拉扯和撒尿&#xff0c;这股气味实在是难以忍受。家人们对宠物的存…

算法学习——LeetCode力扣哈希表篇2

算法学习——LeetCode力扣哈希表篇2 454. 四数相加 II 454. 四数相加 II - 力扣&#xff08;LeetCode&#xff09; 描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 …

Springboot启动出现Waiting for changelog lock...问题

今天在开发的时候&#xff0c;Springboot启动的时候出现Waiting for changelog lock…问题. 问题原因&#xff1a;该问题就是发生了数据库的死锁问题&#xff0c;可能是由于一个杀死的liquibase进程没有释放它对DATABASECHANGELOGLOCK表的锁定&#xff0c;导致服务启动失败&…

我的世界Java版服务器如何搭建并实现与好友远程联机Minecarft教程

文章目录 1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 本教程主要介…

「深度学习」循环神经网络RNN

一、序列模型的例子 二、数学符号定义 X^{(i)<t>}&#xff1a;训练样本 i 的输入序列的第 t 个元素。 T_{X}^{i}&#xff1a;训练样本 i 的输入序列的长度。 Y^{(i)<t>}&#xff1a;训练样本 i 的输出序列的第 t 个元素。 T_{Y}^{i}&#xff1a;训练样本 i 的输…

Error: Unable to authenticate using the provided code. Please try again.

今天弄这个firebase cli的时候一直登陆不进去 都到了最后一步了&#xff0c;但是输入完code还是不成功 原来是因为开了梯子&#xff0c;代理不成功&#xff0c;要在 复制命令到对应的窗口粘贴就行&#xff0c;然后重复之前的命令就行 我复制出来的命令是 set http_proxyhttp…

解决hive表新增的字段查询为空null问题

Hive分区表新增字段&#xff0c;查询时数据为NULL的解决方案 由于业务拓展&#xff0c;需要往hive分区表新增新的字段&#xff0c;hive版本为2点多。 于是利用 alter table table_name add columns (col_name string )新增字段&#xff0c;然后向已存在分区中插入数据&#x…

2024 年十大 Vue.js UI 库

Vue.js 是一个流行的 JavaScript 框架&#xff0c;它在前端开发者中越来越受欢迎&#xff0c;以其简单、灵活和易用性而闻名。 Vue.js 如此受欢迎的原因之一是它拥有庞大的 UI 库生态系统。 这些库为开发人员提供了预构建的组件和工具&#xff0c;帮助他们快速高效地构建漂亮…

Canny边缘检测

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题&#xff1a;实现了Canny边缘检测算法的图像处理过程。 图像处理过程&#xff1a; 亮度提取&#xff08;vtkImageLuminance&#xff09;图像类型转换…

RFID手持终端_智能pda手持终端设备定制方案

手持终端是一款多功能、适用范围广泛的安卓产品&#xff0c;具有高性能、大容量存储、高端扫描头和全网通数据连接能力。它能够快速平稳地运行&#xff0c;并提供稳定的连接表现和快速的响应时&#xff0c;适用于医院、物流运输、零售配送、资产盘点等苛刻的环境。通过快速采集…

nba2k24 周琦面补

nba2k24 周琦面补 nba2k23-nba2k24通用 周琦面补 下载地址&#xff1a; https://www.changyouzuhao.cn/9649.html