「JVM」性能调优工具
「JVM」性能调优工具
- 一、jcmd
- 1、jcmd 能干嘛?
- 2、与JVM相关的命令
- 3、示例
- 二、jmap
- 1、jmap有什么用?
- 2、jmap的命令大全
- 3、示例
- 三、jps
- 1、jps有什么用?
- 2、jps命令以及示例
- 四、jstat
- 1、jstat有什么用?
- 2、jstat命令以及示例
- 五、jstack
- 1、jstack有什么用?
- 2、jstack命令及示例
- 六、visualvm
- 1、visualvm有什么用?
- 七、总结
一、jcmd
1、jcmd 能干嘛?
jcmd 是 Java 命令行工具的一部分,用于执行各种与运行中的 Java 进程相关的诊断和管理任务。它提供了许多有用的操作,可以帮助你监视、管理和诊断 Java 应用程序。以下是 jcmd 工具的一些常见用途:
- 列出正在运行的 Java 进程:使用
jcmd -l命令可以列出系统中当前正在运行的 Java 进程的进程 ID 和主类。- 打印 Java 进程的概要信息:使用
jcmd <pid> VM.native_memory summary命令可以打印指定 Java 进程的本机内存使用情况的摘要信息。- 导出 Java 进程的堆转储文件:使用
jcmd <pid> GC.heap_dump <filename>命令可以导出指定 Java 进程的堆转储文件,用于分析内存使用情况。- 查看 Java 进程的线程堆栈:使用
jcmd <pid> Thread.print命令可以打印指定 Java 进程的线程堆栈信息,用于分析线程问题和死锁情况。- 执行 JVM 命令:使用
jcmd <pid> <command>命令可以在运行中的 Java 进程上执行各种 JVM 命令,例如JVM.version、JVM.flags等。- 执行自定义的诊断命令:你还可以使用
jcmd工具执行自定义的诊断命令,这些命令是由 Java 应用程序开发者自己实现的,用于特定的应用程序诊断和管理任务。
总的来说,jcmd是一个非常强大的工具,可用于监视和调试运行中的 Java 进程,提供了许多有用的功能来帮助你分析和解决 Java 应用程序的性能问题和其他类型的故障。
2、与JVM相关的命令
jcmd 命令是 Java 的诊断命令,用于执行各种与运行中的 Java 进程相关的操作。以下是一些常见的 jcmd 命令:
- JVM 状态相关命令:
VM.flags:显示 JVM 的标志和系统属性。VM.system_properties:显示 JVM 的系统属性。VM.command_line:显示启动 JVM 的命令行参数。VM.version:显示 JVM 的版本信息。
- 内存相关命令:
GC.class_histogram:显示当前堆中各个类的实例数目统计。GC.heap_info:显示堆的使用情况统计信息。GC.run_finalization:手动运行终结器。
- 线程和死锁相关命令:
Thread.print:打印线程堆栈信息。Thread.print -l:打印详细的线程堆栈信息,包括锁持有者和等待条件。Thread.info:显示所有线程的基本信息。Thread.dump:生成线程转储文件。
- 性能监控和故障处理命令:
VM.uptime:显示 JVM 的运行时间。VM.dynlibs:显示加载的动态链接库。ManagementAgent.start_local:启动 JMX 代理以进行远程监控。
- JIT 编译器命令:
Compiler.print_classes:打印已编译类的列表。Compiler.disable:禁用 JIT 编译器。Compiler.enable:启用 JIT 编译器。
- 示例
[root@es-node3 /]# jcmd 19566 VM.command_line
19566:
VM Arguments:
jvm_args: -Djava.util.Arrays.useLegacyMergeSort=true -javaagent:/app/agent/skywalking-agent.jar=agent.service_name=community,collector.backend_service=10.11.68.78:31180 -Xmx6g -Xms6g -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:+ParallelRefProcEnabled
java_command: /app/intensive-web/community.jar --spring.profiles.active=prod --spring.cloud.nacos.config.file-extension=properties --spring.cloud.nacos.config.server-addr=10.11.68.77:8848 --spring.cloud.nacos.discovery.server-addr=10.11.68.77:8848 --logging.level.com.alibaba.nacos.client.naming=ERROR
java_class_path (initial): /app/intensive-web/community-intensive-web.jar:/app/agent/skywalking-agent.jar
Launcher Type: SUN_STANDARD
命令解释
这是一个jcmd命令的输出结果,显示了进程ID为19566的Java虚拟机(JVM)的启动参数和主要配置信息。具体内容包括:
VM Arguments:JVM的运行参数,包括以下几个:
jvm_args:JVM的启动参数,包括使用遗留的合并排序算法、SkyWalking代理的配置、堆内存大小、元数据区大小、垃圾收> 集器的选择等。java_command:Java程序的启动命令,包括应用程序的jar包路径和一些Spring配置参数。java_class_path (initial):Java类路径,包括应用程序的jar包路径和SkyWalking代理的jar包路径。Launcher Type:启动器类型,此处为SUN_STANDARD。
通过这些信息,可以查看应用程序的启动参数和配置,了解JVM的运行情况,进行问题排查和性能优化。
还有许多其他可用的 jcmd 命令,你可以使用 jcmd <PID> help 来查看特定 Java 进程支持的所有命令。请注意,<PID> 是 Java 进程的进程 ID,你需要将其替换为实际的进程 ID。
3、示例
jcmd 命令是 Java 命令行工具的一部分,用于执行各种与运行中的 Java 进程相关的诊断和管理任务。下面是一些常用的 jcmd 命令及其示范用法:
- 列出正在运行的 Java 进程:
jcmd -l
示例输出:
1234 com.example.MyApp5678 com.example.OtherApp
- 打印 Java 进程的概要信息:
jcmd 1234 VM.native_memory summary
示例输出:
Native Memory Tracking:Total: reserved=100MB, committed=10MB...
- 导出 Java 进程的堆转储文件:
jcmd 1234 GC.heap_dump /path/to/dump.hprof
堆转储文件将保存在指定路径 /path/to/dump.hprof。
-
查看 Java 进程的线程堆栈:
jcmd 1234 Thread.print示例输出:
0x00001 Thread-0 ... -
执行 JVM 命令:
jcmd 1234 JVM.version示例输出:
JVM version: 11.0.12+7-LTS JVM information: OpenJDK 64-Bit Server VM by Oracle Corporation -
执行自定义的诊断命令:
jcmd 1234 com.example.MyApp customCommand这将执行 Java 应用程序中注册的名为
customCommand的自定义诊断命令。
请注意,以上示例命令中的 1234 是要操作的 Java 进程的进程 ID,你需要将其替换为真实的进程 ID。你可以通过 jcmd -l 命令列出当前正在运行的 Java 进程及其对应的进程 ID。
二、jmap
1、jmap有什么用?
jmap 是 Java 命令行工具中的一个选项,用于生成 Java 应用程序的堆转储快照(Heap Dump Snapshot)。堆转储快照是一个二进制文件,它包含了 Java 应用程序在某个时间点上的内存使用情况。jmap 的主要用途如下:
内存分析:通过生成堆转储快照,可以获取 Java 应用程序的内存使用情况。您可以使用其他工具(如 VisualVM、MAT 等)打开和分析堆转储文件,了解对象的分配、内存泄漏等问题,以及查找性能优化的机会。内存监控:您可以使用 jmap 的-histo选项来获取堆转储快照中各个类的实例数量和占用内存大小的统计信息。这对于监控应用程序中的对象分布和内存泄漏问题很有帮助。堆转储分析:jmap 还提供了-dump选项,允许您在运行时生成堆转储快照。这对于在应用程序发生严重问题(如内存溢出)时进行故障排除或分析崩溃状态非常有用。 需要注意的是,jmap
命令需要与 Java 虚拟机(JVM)一起使用,并且只能在支持的平台上运行。它提供了一种方便的方式来获取 Java
应用程序的内存快照,以便进行深入分析和故障排除。
2、jmap的命令大全
以下是常用的 jmap 命令选项列表:
jmap -heap <pid>:显示 Java 进程的堆内存使用情况,包括堆大小、已使用大小、垃圾回收器信息等。jmap -histo <pid>:显示 Java 进程中各个类的实例数量和占用内存大小的统计信息。jmap -histo:live <pid>:显示 Java 进程中活跃对象(未被垃圾回收)的类的实例数量和占用内存大小的统计信息。jmap -dump:live,format=b,file=<filename> <pid>:生成 Java 进程的堆转储快照,并将其保存到指定的文件中。只包括活跃对象。jmap -dump:format=b,file=<filename> <pid>:生成 Java 进程的完整堆转储快照,并将其保存到指定的文件中。jmap -F -dump:format=b,file=<filename> <pid>:在 Java 进程无响应时,强制生成完整堆转储快照。jmap -J<flag>:向被监视的 JVM 注入 JVM 参数。jmap -finalizerinfo <pid>:显示 Java 进程中等待终结的对象信息。 这些命令选项的<pid>参数是指 Java 进程的进程ID,用于指定要操作的目标进程。请注意,部分命令选项可能需要在具有相应权限的用户或管理员模式下运行。 这只是
jmap 命令的一些常见用法,还有其他更多选项可以通过运行jmap -help命令来查看完整的命令说明。
3、示例
当您使用 jmap -histo <pid> 命令时,可以获取 Java 进程中各个类的实例数量和占用内存大小的统计信息。下面是一个命令示例:
$ jmap -histo 12345
上述命令中的 <pid> 替换为您要监视的 Java 进程的进程ID。执行该命令后,jmap 将输出类似以下的结果:
num #instances #bytes class name
----------------------------------------------1: 12345 1234567 com.example.ClassA2: 5678 987654 com.example.ClassB3: 789 54321 com.example.ClassC... ... ... ...
输出结果中的各列含义如下:
num:类的编号,表示在堆中的顺序。#instances:该类的实例数量。#bytes:该类实例占用的总内存大小。class name:类的全限定名。
通过这个输出,您可以了解 Java 进程中各个类的对象分布情况和内存占用情况,有助于发现可能存在的对象泄漏或异常内存使用情况。
三、jps
1、jps有什么用?
jps是Java虚拟机进程状态工具(Java Process Status),它用于列出当前系统中正在运行的Java进程。jps命令可以显示每个Java进程的进程ID(PID)和主类名称,帮助用户快速了解Java应用程序的运行情况。jps命令的主要用途包括:
列出Java进程:通过运行jps命令,可以列出当前系统中正在运行的所有Java进程的进程ID和主类名称。监控Java进程:可以使用jps命令结合其他监控工具,如jstat、jstack、jconsole等,对Java进程进行监控、诊断和性能分析。校验Java进程:通过检查Java进程的PID和主类名称,可以确保指定的Java进程正在正确运行,并且可以与其他进程进行交互。
总之,jps是一个简单而有用的命令行工具,用于列出Java进程的信息,方便用户进行Java应用程序的管理和监控。
2、jps命令以及示例
以下是一些常用的jps命令选项和示例:
-
列出正在运行的Java进程:
jps -
列出正在运行的Java进程及其主类名称:
jps -l -
列出正在运行的Java进程及其JVM参数:
jps -m -
列出正在运行的Java进程及其JVM参数、主类名称:
jps -ml -
列出正在运行的Java进程及其JVM参数、主类名称、传递给主类的参数:
jps -mvl -
以自定义格式列出Java进程信息(进程ID和主类名称):
jps -F -
以自定义格式列出Java进程信息(进程ID、主类名称和JVM参数):
jps -Fm -
以自定义格式列出Java进程信息(进程ID、主类名称、JVM参数和传递给主类的参数):
jps -Fml
示例用法:
-
显示正在运行的Java进程及其主类名称:
jps -l输出示例:
12345 MainClass1 67890 MainClass2 -
显示正在运行的Java进程及其JVM参数、主类名称:
jps -ml输出示例:
12345 -Djava.vm.options=...67890 -Djava.vm.options=... MainClass2``` -
以自定义格式显示Java进程信息(进程ID、主类名称、JVM参数和传递给主类的参数):
jps -Fml输出示例:
12345 MainClass1 -Djava.vm.options=... -Xmx512m 67890 MainClass2 -Djava.vm.options=...
这些示例演示了jps命令在不同选项下列出Java进程信息的用法。您可以根据需求选择合适的选项来查看特定的Java进程信息。
四、jstat
1、jstat有什么用?
jstat是Java统计监视工具(Java Statistics Monitoring),它用于收集和显示与Java虚拟机(JVM)相关的各种运行时统计数据。通过jstat命令,您可以实时监测和分析Java应用程序的性能指标,从而对应用程序进行优化和故障排除。
jstat的主要用途包括:
- 监视Java堆内存使用情况:通过
jstat -gc命令可以获取Java堆内存的使用情况,包括堆的容量、使用量、垃圾回收等信息。- 监视类加载和卸载情况:使用
jstat -class命令可以查看已加载和已卸载的类数量和大小,以及类加载器的使用情况。- 监视垃圾回收情况:通过
jstat -gc命令可以观察垃圾回收的执行次数、时间和垃圾回收器的工作状态,帮助分析和调整垃圾回收策略。- 监视线程情况:使用
jstat -t命令可以查看线程数、各种线程状态以及峰值线程数等信息,有助于发现线程问题和优化线程使用。- 监视编译情况:通过
jstat -compiler命令可以监视即时编译器的使用情况,包括编译任务数量、成功编译次数等。- 监视类加载器情况:使用
jstat -loader命令可以观察类加载器的使用情况,包括类加载器数量、类加载和卸载次数等。
总之,jstat是一个强大的工具,可用于实时监控和收集Java应用程序的运行时统计数据,帮助开发人员了解应用程序的性能状况,并进行性能调优和故障排除。
2、jstat命令以及示例
jstat命令用于收集和显示与Java虚拟机(JVM)相关的各种运行时统计数据。下面是一些常用的jstat命令及其示例用法:
-
监视堆内存使用情况:
jstat -gc <pid> <interval> <count>示例:
jstat -gc 12345 1000 10 -
监视新生代和老年代的大小、容量和使用情况:
jstat -gcutil <pid> <interval> <count>示例:
jstat -gcutil 12345 1000 10 -
监视类加载和卸载情况:
jstat -class <pid> <interval> <count>示例:
jstat -class 12345 1000 10 -
监视线程数、线程状态和峰值线程数:
jstat -t <pid> <interval> <count>示例:
jstat -t 12345 1000 10 -
监视编译器的编译任务数量和成功编译次数:
jstat -compiler <pid> <interval> <count>示例:
jstat -compiler 12345 1000 10 -
监视类加载器的数量、类加载和卸载次数:
jstat -loader <pid> <interval> <count>示例:
jstat -loader 12345 1000 10
这些示例中的参数含义如下:
<pid>:Java应用程序的进程ID。<interval>:数据收集时间间隔(以毫秒为单位)。<count>:要收集的数据点数量。
执行以上命令后,jstat会定期收集指定时间间隔内持续的运行时统计数据,并输出到控制台。您可以根据实际需求选择适当的jstat命令和参数来监视和分析Java应用程序的运行时性能指标。
五、jstack
1、jstack有什么用?
jstack是Java开发中的一个命令行工具,用于生成Java虚拟机(JVM)当前运行时的线程快照。它可以帮助开发人员识别和解决多线程相关的问题。通过运行jstack命令,可以获取JVM中所有线程的状态和堆栈信息。这对于分析死锁、线程阻塞、死循环等问题非常有用。以下是jstack主要的应用场景和用途:
分析死锁:jstack可以输出线程的堆栈信息,帮助识别当多个线程因为互相等待资源而无法继续执行的情况,即死锁。
监视线程:jstack`可以周期性地获取线程快照,并输出线程的状态、执行轨迹和调用堆栈等信息,帮助跟踪和监视应用程序中的线程活动。
分析性能问题:通过查看线程的状态和堆栈信息,可以了解线程的执行情况,找到可能存在的性能瓶颈或潜在的资源竞争问题。
定位线程阻塞:jstack可以显示线程等待的资源和锁,帮助找出线程阻塞的原因,并进行相应的调优。
检测死循环:通过查看线程的堆栈信息,可以判断是否存在死循环,并定位导致死循环的代码位置。
总之,jstack是一个用于分析和调试多线程应用程序的工具,它提供了线程状态、堆栈信息等有价值的数据,帮助开发人员定位和解决与多线程相关的问题。
2、jstack命令及示例
jstack命令用于生成Java虚拟机(JVM)线程快照。以下是jstack命令的基本语法和示例:
语法:
jstack [ options ] <pid>
参数说明:
options:可选参数,用于指定jstack的功能和输出格式。常用的选项包括:
-l:长格式输出,包括关联的锁信息。-m: 输出额外的JVM内存相关信息。pid:必选参数,指定目标Java进程的进程ID。
示例1:生成线程快照
jstack 12345
上述命令会生成进程ID为12345的Java进程的线程快照,并输出到控制台。
示例2:生成详细线程快照
jstack -l 12345
上述命令会生成进程ID为12345的Java进程的详细线程快照,并输出到控制台。其中,-l选项指定了长格式输出,包括关联的锁信息。
示例3:生成线程快照并输出到文件
jstack -m 12345 > thread_dump.txt
上述命令会生成进程ID为12345的Java进程的线程快照,并将输出保存到名为thread_dump.txt的文件中。其中,-m选项指定了输出额外的JVM内存相关信息。
通过这些示例,你可以使用jstack命令来生成Java进程的线程快照,并获取线程状态和堆栈信息,用于调试和分析多线程相关的问题。注意,需要将示例中的"12345"替换为目标Java进程的实际进程ID。
六、visualvm
1、visualvm有什么用?
JVisualVM 是一个用于监视、分析和调优 Java 虚拟机(JVM)应用程序的工具。下面是一些使用 JVisualVM 的基本步骤:
启动 JVisualVM: 在 JDK 安装目录的bin目录下,可以找到名为jvisualvm的可执行文件(Windows 系统为jvisualvm.exe)。双击运行该文件来启动 JVisualVM 工具。连接到目标应用程序``: JVisualVM 可以通过多种方式连接到目标应用程序,最常用的方式是在工具的左侧导航栏中选择 “本地” 或 “远程” 选项,然后在应用程序列表中选中你想要连接的应用程序,点击 “连接” 按钮进行连接。
监视和分析应用程序: 连接成功后,JVisualVM 将显示目标应用程序的概览页面,其中包含了应用程序的概要信息。你可以使用工具栏上的不同选项卡来查看各种监视数据,如内存、线程、GC、CPU
等。你还可以生成堆栈跟踪、线程转储和剖析结果,以帮助分析和解决性能问题。
进行性能调优: JVisualVM 提供了一些用于性能调优的工具。例如,可以使用内存分析器来查找内存泄漏和优化内存使用。可以使用剖析器来识别应用程序中的热点,找到性能瓶颈并进行优化。
此外,JVisualVM 还支持插件扩展,你可以安装和启用各种插件来增强其功能和可定制性。
请注意,要使用 JVisualVM,目标应用程序必须在运行时启用 JMX(Java Management Extensions)功能。如果你想远程监视一个应用程序,还需要确保目标主机上的防火墙和网络设置允许 JMX 连接。
七、总结
下面是对一些常用的JVM相关工具和命令的总结:
jstat(Java Virtual Machine Statistics Monitoring Tool):用于监控和测量Java虚拟机的各种统计信息,如垃圾回收、类装载、内存、线程等。可以使用jstat命令来获取这些信息,并可以以文本或CSV格式输出。
jstack(Java Stack Trace):用于生成Java虚拟机当前运行时的线程快照。通过jstack命令,可以获取线程的状态和堆栈信息,帮助分析死锁、线程阻塞等问题。
jmap(Java Memory Map):用于生成Java虚拟机的内存转储快照。可以使用jmap命令来获取堆内存使用情况、类统计信息、内存分配情况等。还可以生成堆转储文件,供后续分析使用。
jps(Java Virtual Machine Process Status Tool):用于列出当前运行的Java进程。jps命令可以输出Java进程的进程ID和主类名,方便在命令行中查看Java进程的状态。
VisualVM:是一个功能强大的Java虚拟机监视和分析工具。它可以通过插件支持各种功能,如垃圾回收监控、线程分析、内存分析、性能剖析等。VisualVM提供了直观的图形界面,方便进行实时监控和分析。
这些工具和命令在JVM性能调优、故障排查和内存分析中非常有用。开发人员可以根据具体的需求选择适合的工具来监控和分析Java应用程序,以优化性能并解决潜在的问题。
相关文章:
「JVM」性能调优工具
「JVM」性能调优工具 一、jcmd1、jcmd 能干嘛?2、与JVM相关的命令3、示例 二、jmap1、jmap有什么用?2、jmap的命令大全3、示例 三、jps1、jps有什么用?2、jps命令以及示例 四、jstat1、jstat有什么用?2、jstat命令以及示例 五、js…...
IDEA Debug小技巧 添加减少所查看变量、查看不同线程
问题 IDEA的Debug肯定都用过。它下面显示的变量,有什么门道?可以增加变量、查看线程吗? 答案是:可以。 演示代码 代码如下: package cn.itcast.attempt.threadAttempt.attempt2;public class Test {public static …...
基于SpringBoot+Vue的车辆充电桩管理系统设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...
Bean的加载方式
目录 1. 基于XML配置文件 2. 基于XML注解方式声明bean 自定义bean 第三方bean 3.注解方式声明配置类 扩展1,FactoryBean 扩展2,加载配置类并加载配置文件(系统迁移) 扩展3,proxyBeanMethodstrue的使用 4. 使用Import注解导入要注入的bean…...
《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(13)-Fiddler请求和响应断点调试
1.简介 Fiddler有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点。设置断点后,开始拦截接下来所有网页,直到取消断点。这个功能可以在数据包发送之前,修改请求参数;…...
Android 13(T) - Media框架(1)- 总览
从事Android Media开发工作三年有余,刚从萌新变成菜鸟,一路上跌跌撞撞学习,看了很多零零碎碎的知识,为了加深对Android Media框架的理解,决定在这里记录下学习过程中想到的一些问题以及一些思考,也希望对初…...
简述vue3(ts)+antdesignvue项目框架搭建基本步骤
目录 项目简介 概念 过程简述 基本步骤 1.创建新项目 2.安装Ant Design Vue 3.配置Ant Design Vue 4.创建页面和组件 5.使用组件 6.运行项目 项目简介 概念 Vue 3(使用TypeScript)和Ant Design Vue项目框架搭建是指在Vue 3框架下,…...
webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1
webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1 1.问题2. 解决办法: 1.问题 使用webpack打包是报错如下: webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1,因为在此系统上禁止运行脚本。有关详细信息,…...
GDAL OGR C++ API 学习之路 (5)OGRLayer篇 代码示例
GetStyleTable virtual OGRStyleTable *GetStyleTable () 返回图层样式表 返回: 指向不应由调用方修改或释放的样式表的指针 // 假设图层对象为 poLayer OGRStyleTable* poStyleTable poLayer->GetStyleTable(); if (poStyleTable ! nullptr) {// 处理样式表信息// ..…...
NIDEC COMPONENTS尼得科科宝滑动型DIP开关各系列介绍
今天AMEYA360对尼得科科宝电子滑动型DIP开关各系列参数进行详细介绍,方便大家选择适合自己的型号。 系列一、滑动型DIP开关 CVS 针脚数:1, 2, 3, 4, 8 安装类型:表面贴装,通孔 可水洗:无 端子类型:PC引脚(只…...
一起学算法(滑动窗口篇)
前言: 对于滑动窗口,有长度固定的窗口,也有长度可变的窗口,一般是基于数组进行求解,对于一个数组中两个相邻的窗口,势必会有一大部分重叠,这部分重叠的内容是不需要重复计算的,所以我…...
HTML <q> 标签
实例 标记短的引用: <q>Here is a short quotation here is a short quotation</q>浏览器支持 元素ChromeIEFirefoxSafariOpera<q>YesYesYesYesYes所有浏览器都支持 <q> 标签。 定义和用法 <q> 标签定义短的引用。 浏览器经常在引用的内容…...
机器学习02-再识K邻近算法(自定义数据集训练及测试)
定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。简单的说就是根据你的“邻居”来推断出你的类别。 用个成语就是物以类聚 思想: 如果一个样本在特征空间中的K个最…...
github使用笔记及git协作常用命令
1.Github有一个主库,每个人自己也有一个库,称为分支。 2.Github的协作流程:先从主库fork出自己的分支, 然后进行代码的修改等操作, 操作完之后从本地库上推到自己的服务器分支,然后 服务器分支Pull Request到 主库。 3.本地仓库由git维护的三棵“树"组成:第1个…...
iOS - Apple开发者账户添加新测试设备
获取UUID 首先将设备连接XCode,打开Window -> Devices and Simulators,通过下方位置查看 之后登录(苹果开发者网站)[https://developer.apple.com/account/] ,点击设备 点击加号添加新设备 填写信息之后点击Continue,并一路继续…...
vue 前端 邮箱、密码、手机号码等输入验证规则
最近在写前端表单验证的时候,发现一篇文章质量很好,所以写下这篇文章记录 原文章链接:vue 邮箱、密码、手机号码等输入验证规则 1.手机号 const checkPhone (rule, value, callback) > {const phoneReg /^1[34578]\d{9}$$/;if (!value…...
如何看待前端已死这个问题(大学生篇)
小编刚大学毕业,还记得是大三的时候选择的前端开发方向,那个时候行情其实并没有这么差,最近互联网上讨论这一个很火的话题,叫前端已死。那么我就说说我的看法吧,虽然可能比起行业的大佬会比较短浅,但我想就…...
揭开高级产品经理思维的秘密
我经常被问到产品经理如何晋升到更高级别。事实上,获得晋升往往是一场复杂的游戏。是的,你的技能和成就很重要,但其他因素也很重要,比如你的经理对人才培养的关心程度、你的同事有多优秀、任期有多长、公司的政治氛围如何等等。 所…...
Java 学习路线图
以下是 Java 学习路线图的大致概述: Java 基础语法和面向对象编程(OOP):包括数据类型、控制流、数组、类和对象、继承、多态、抽象类和接口等。 Java 集合框架:包括集合和 Map 等常用数据结构的使用和操作。 Java I/…...
在springboot项目中使用策略工厂模式
在springboot项目中使用策略工厂模式 策略接口类 package cn.test.ext;public interface ITestStrategy {void execTestMethod(); }策略实现类 package cn.test.ext.beanlife;import cn.test.ext.ITestStrategy; import cn.test.ext.MyStrategyFactory; import lombok.exter…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
