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

目录

  • 概述
  • 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自带的命令介绍就结束了。如有疑问,欢迎留言。

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

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

相关文章

wpf devexpress在未束缚模式中生成Tree

TreeListControl 可以在未束缚模式中没有数据源时操作&#xff0c;这个教程示范如何在没有数据源时创建tree 在XAML生成tree 创建ProjectObject类实现数据对象显示在TreeListControl: public class ProjectObject {public string Name { get; set; }public string Executor {…

【C++学习手札】模拟实现string

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;缶ビール—みゆな 0:41━━━━━━️&#x1f49f;──────── 2:52 &#x1f504; ◀️ ⏸ ▶️ ☰ &…

2023年中国逆流式冷却塔性能特点、应用领域及市场规模分析[图]

按冷却塔热交换时气流和水流方向不同的配置&#xff0c;机力通风冷却塔又可分为横流式冷却塔、逆流式冷却塔&#xff0c;目前主流的冷却塔型式为逆流式冷却塔&#xff0c;逆流式冷却塔&#xff08;counterflowcoolingtower&#xff09;是指水流在塔内垂直落下&#xff0c;气流方…

员工电脑管理软件,企业电脑管理软件是什么

员工电脑管理软件&#xff0c;企业电脑管理软件是什么 企业电脑管理软件是指用于管理和监控企业员工工作电脑的软件。这些软件通常提供多种功能&#xff0c;旨在帮助企业管理员工电脑的使用、监控和维护&#xff0c;同时确保信息安全、提高生产力并确保合规性。推荐一款功能强…

java计算两个字符串日期相隔天数

java计算两个字符串日期相隔天数 public static void main(String[] args) throws ParseException {Scanner sc new Scanner(System.in);System.out.print("请输入计算开始的日期(yyyy-MM-dd):");String startTime sc.next();System.out.print("请输入计算结…

算法-链表-简单-相交、反转、回文、环形、合并

记录一下算法题的学习5 在写关于链表的题目之前&#xff0c;我们应该熟悉回忆一下链表的具体内容 什么是链表&#xff1a; 链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是并不会按线性的顺序存储数据&#xff0c…

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

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

Azure的AI使用-(语言检测、图像分析、图像文本识别)

1.语言检测 安装包&#xff1a; # 语言检测 %pip install azure-ai-textanalytics5.2.0 需要用到密钥和资源的终结点&#xff0c;所以去Azure上创建资源&#xff0c;我这个是创建好的了然后点击密钥和终结者去拿到key和终结点 两个密钥选择哪个都行 语言检测代码示例&#…

Vue数据绑定

在我们Vue当中有两种数据绑定的方法 1.单向绑定 2.双向绑定 让我为大家介绍一下吧&#xff01; 1、单向绑定(v-bind) 数据只能从data流向页面 举个例子&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…

图论| 827. 最大人工岛 127. 单词接龙

827. 最大人工岛 题目&#xff1a;给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。返回执行此操作后&#xff0c;grid 中最大的岛屿面积是多少&#xff1f; 岛屿 由一组上、下、左、右四个方向相连的 1 形成。 题目链接&#xff1a;[827. 最大人工岛](ht…

佳易王麻将馆计时收费系统怎么安装,麻将馆的灯控什么原理?

佳易王麻将馆计时收费系统怎么安装&#xff0c;麻将馆的灯控什么原理&#xff1f; 佳易王计时计费软件只需将压缩包文件解压即可使用&#xff0c;灯控的原理是&#xff1a;软件在点击开始计时的时候&#xff0c;软件向灯控器发送开灯信号&#xff0c;相应的灯打开&#xff0c;…

【面试】测试/测开(未完成)

1. 黑盒测试方法 黑盒测试&#xff1a;关注的是软件功能的实现&#xff0c;关注功能实现是否满足需求&#xff0c;测试对象是基于需求规格说明书。 1&#xff09;等价类&#xff1a;有效等价类、无效等价类 2&#xff09;边界值 3&#xff09;因果图&#xff1a;不同的原因对应…

C/C+=内存管理

C/C内存管理以及动态内存的申请_c动态内存的申请与释放_Demo Test的博客-CSDN博客 问题是&#xff0c;这个0x0804 8000 到0xC 0000 0000之间&#xff0c;不止3GB&#xff0c;应该有47GB&#xff0c;该怎么解释呢&#xff1f;

【图像分类】【深度学习】【Pytorch版本】ResNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】 ResNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】 ResNet模型算法详解前言ResNet讲解Deep residual learning framework(深度残差学习框架)ResNet残差结构ResNet模型结构 ResNet Pytorch代码完整代码总结 前言 …

深入探讨TensorFlow:张量与矩阵

在机器学习和深度学习领域中&#xff0c;TensorFlow作为一款强大且受欢迎的开源机器学习框架&#xff0c;为研究人员和开发者提供了丰富的工具和资源。在TensorFlow中&#xff0c;张量&#xff08;tensor&#xff09;和矩阵&#xff08;matrix&#xff09;是核心概念&#xff0…

Odoo 15开发手册第七章 记录集 - 使用模型数据

在前面的章节中&#xff0c;我们概览了模型创建以及如何向模型加载数据。现在我们已有数据模型和相关数据&#xff0c;是时候学习如何编程与其进行交互了。 业务应用需要业务逻辑来计算数据、执行验证或自动化操作。Odoo框架API为开发者提供了工具用于实现这种业务逻辑。大多数…

(二)什么是Vite——Vite 和 Webpack 区别(冷启动)

vite分享ppt&#xff0c;感兴趣的可以下载&#xff1a; ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录&#xff1a; &#xff08;一&#xff09;什么是Vite——vite介绍与使用-CSDN博客 &#xff08;二&#xff09;什么是Vite——Vite 和 Webpack 区别&#xff0…

2018年五一杯数学建模C题江苏省本科教育质量综合评价解题全过程文档及程序

2019年五一杯数学建模 C题 江苏省本科教育质量综合评价 原题再现 随着中国的改革开放&#xff0c;国家的综合实力不断增强&#xff0c;中国高等教育发展整体已进入世界中上水平。作为一个教育大省&#xff0c;江苏省的本科教育发展在全国名列前茅&#xff0c;而江苏省13个地级…

【PB续命05】WinHttp.WinHttpRequest的介绍与使用

0 WinHttp.WinHttpRequest简介 winhttp.winhttprequest是Windows操作系统中的一个API函数&#xff0c;用于创建和发送HTTP请求。它可以用于从Web服务器获取数据&#xff0c;或将数据发送到Web服务器。该函数提供了许多选项&#xff0c;例如设置请求头、设置代理服务器、设置超…

花 200 元测试 1300 个实时数据同步任务

背景 对于将数据作为重要生产资料的公司来说&#xff0c;超大规模的数据迁移同步系统( 1k、5k、10k 条同步任务)是刚需。 本文以此为出发点&#xff0c;介绍近期 CloudCanal 所做的一个容量测试&#xff1a;在单个 CloudCanal 集群上创建 1300 实时任务&#xff0c;验证系统是…