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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue element 组件 form深层 :prop 验证失效问题解决

此图源自官网 借鉴。 当我们简单单层验证的时候发现是没有问题的&#xff0c;但是有的时候可能会涉及到深层prop&#xff0c;发现在去绑定的时候就不生效了。例如我们在form单里面循环验证&#xff0c;在去循环数据验证。 就如下图的写法了 :prop"pumplist. i .device…

YUM | 起源 | 发展 | 运行逻辑

介绍 YUM&#xff08;Yellowdog Updater, Modified&#xff09;起源于 Red Hat Linux 发行版 up2date 工具。 最初&#xff0c;up2date 是由 Red Hat 公司提供的用于管理系统更新的工具。然而&#xff0c;社区逐渐对 up2date 出现一些不满&#xff0c;主要是由于其使用体验和…

【考研408】算法与数据结构笔记

文章目录 绪论数据结构的基本概念算法和算法评价 线性表线性表的定义和基本操作线性表的顺序表示线性表的链式表示 栈和队列栈基本操作栈的顺序存储结构栈的链式存储 队列队列常见的基本操作队列的顺序存储结构队列的链式存储结构双端队列 栈和队列的应用栈在括号匹配中的应用栈…

【C/C++ 17】继承

目录 一、继承的概念 二、基类和派生类对象赋值转换 三、继承的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员变量 七、菱形继承与虚拟继承 一、继承的概念 继承是指一个类可以通过继承获得另一个类的属性和方法&#xff0c;扩展自己的功能&…

Mysql-数据库压力测试

安装软件 官方软件 安装插件提供了更多的监听器选项 数据库驱动 数据库测试 配置 这里以一个简单的案例进行&#xff0c;进行连接池为10,20,30的梯度压测&#xff1a; select * from tb_order_item where id 1410932957404114945;新建一个线程组 新增一个连接池配置 新建一…

【Java】MybatisPlus入门

学习目标 能够基于MyBatisPlus完成标准Dao开发 能够掌握MyBatisPlus的条件查询 能够掌握MyBatisPlus的字段映射与表名映射 能够掌握id生成策略控制 能够理解代码生成器的相关配置 一、MyBatisPlus简介 1. 入门案例 问题导入 MyBatisPlus环境搭建的步骤&#xff1f; 1.1 Sp…

在VM虚拟机上搭建MariaDB数据库服务器

例题&#xff1a;搭建MariaDB数据库服务器&#xff0c;并实现主主复制。 1.在二台服务器中分别MariaDB安装。 2.在二台服务器中分别配置my.cnf文件&#xff0c;开启log_bin。 3.在二台服务器中分别创建专用于数据库同步的用户replication_user&#xff0c;并授权SLAVE。&#x…

【ARM 嵌入式 编译系列 2.7 -- GCC 编译优化参数详细介绍】

请阅读【嵌入式开发学习必备专栏 】 文章目录 GCC 编译优化概述常用优化等级-O1 打开的优化选项-O2 打开的优化选项-O3 打开的优化选项-Os 打开的优化选项优化技术使用优化选项的注意事项GCC 编译优化概述 GCC(GNU Compiler Collection)包含了用于C、C++、Objective-C、Fort…

机器学习之DeepSequence软件使用学习1

简介 DeepSequence 是一个生成性的、无监督的生物序列潜变量模型。给定一个多重序列比对作为输入&#xff0c;它可以用来预测可获得的突变&#xff0c;提取监督式学习的定量特征&#xff0c;并生成满足明显约束的新序列文库。它将序列中的高阶依赖性建模为残差子集之间约束的非…

FLUENT Meshing Watertight Geometry工作流入门 - 6 描述几何体

本视频中学到的内容&#xff1a; 讨论“描述几何”任务中所需各种输入的工作细节如何为流体区域创建盖面使用“创建区域”任务创建流体区域 视频链接&#xff1a; FLUENT Meshing入门教程-6描述几何体_哔哩哔哩_bilibili 【Import Mesh】 启动 Ansys Fluent 进入网格模式。转…

从头开始构建和训练 Transformer(下)

导 读 上一篇推文从头开始构建和训练 Transformer&#xff08;上&#xff09;https://blog.csdn.net/weixin_46287760/article/details/136048418介绍了构建和训练Transformer的过程和构建每个组件的代码示例。本文将使用数据对该架构进行代码演示&#xff0c;验证其模型性能。…

[office] Excel如何快速统一数字编号长度 #经验分享#其他

Excel如何快速统一数字编号长度 我们在办公室使用Excel统计数据的时候&#xff0c;经常会遇到第一列数据全部是数字编号&#xff0c;但是因为数字的位数不一样&#xff0c;长短不一的样子看起来不是很协调。那么如何快速统一数字编号长度呢&#xff1f;一起来了解一下吧 我们在…

STM32内部Flash

目录 一、内部Flash简介 二、内部Flash构成 1. 主存储器 2. 系统存储区 3. 选项字节 三、内部Flash写入过程 1. 解锁 2. 页擦除 3. 写入数据 四、工程空间分布 某工程的ROM存储器分布映像&#xff1a; 1. 程序ROM的加载与执行空间 2. ROM空间分布表 一、内部Flash…

【Java数据结构】单向 不带头 非循环 链表实现

模拟实现LinkedList&#xff1a;下一篇文章 LinkedList底层是双向、不带头结点、非循环的链表 /*** LinkedList的模拟实现*单向 不带头 非循环链表实现*/ class SingleLinkedList {class ListNode {public int val;public ListNode next;public ListNode(int val) {this.val …

Go语言每日一练——链表篇(五)

传送门 牛客面试笔试必刷101题 ----------------合并k个已排序的链表 题目以及解析 题目 解题代码及解析 解析 这一道题与昨天的合并链表题目类似&#xff0c;但是由于有K个且时间复杂度要求控制在O(nlogn)&#xff0c;这里主要有两种解法&#xff1a;一种是依旧使用归并来…

Python算法题集_相交链表

Python算法题集_相交链表 题41&#xff1a;相交链表1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【双层循环】2) 改进版一【双指针】3) 改进版二【哈希检索-集合】4) 改进版三【哈希检索-字典】 4. 最优算法 本文为Python算法题集之一的代码示…

游戏服务器购买多少钱1个月?买一年贵吗?

游戏服务器购买多少钱1个月&#xff1f;阿里云26元1个月、腾讯云32元1个月。买一年贵吗&#xff1f;不贵。 游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;游戏服务器配置从4核16G、4…

OSI七层模型

文章目录 定义各层功能定义在 OSI 模型中如何进行通信OSI 模型有哪些替代方案&#xff1a;TCP/IP 定义 OSI是一种开放系统互连参考模型 (Open System Interconnect 简称OSI&#xff09;&#xff0c;是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互…

[职场] 集成电路IC设计工程师求职简历工作经历范文(精选4篇) #职场发展#其他

集成电路IC设计工程师求职简历工作经历范文&#xff08;精选4篇&#xff09; 集成电路IC设计工程师在找工作做简历的时候&#xff0c;经常不知道求职简历中的工作经历板块怎么写&#xff0c;下面是简历网小编整理的适合集成电路IC设计工程师在做简历时写的工作经历范文4篇&…

40000000人民币有多重

在日常生活中&#xff0c;我们经常看到大量现金的重量作为一个有趣的话题。那么&#xff0c;40000000人民币到底有多重呢&#xff1f;本文将详细介绍如何计算这个问题&#xff0c;并讨论与现金重量相关的因素。 首先&#xff0c;我们需要了解人民币纸币的重量。一张崭新的100元…