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

基于源码剖析:深度解读JVM底层运行机制

每日禅语

佛说,给你修路的,是你自己;埋葬你的,也是你自己;帮助你的,是你自己;毁灭你的,也是你自己;成就你的,自然还是你自己。所以佛说:自作自受,自性自度!

文章背景

在我们Java Coder编写java代码的时候,通过编译器点击运行,然后就可以输出想要的结果,但是如果你仔细询问这段代码是如何通过java代码,变成.class文件,再通过JVM执行输出结果的时候,大部分人都不能很清楚的说出运行机制和运行原理。或者对于大部分面试者来说,JVM了解的都是JVM八股文信息,但是你要深究为什么需要这些区域,这些区域如果关联起来运行的,大部分人都难以说出其重点。本文就是以此为基础,通过源码一步一步分析程序的底层运行原理。 

通过一道面试题分析底层:输出的结构是多少?

public class Client {public static void main(String[] args) {int count = 0;for (int i = 0 ; i <10 ;i ++){count = count++;System.out.println("count=" + count);}}
}

 大部分人的第一印象答案:输出1-9,但是如果你让程序运行以后你会发现,结果和你想的大相径庭,竟然是输出的10个0,为什么结果和预期的差距这么大。后面的内容将会根据这段代码分析JVM的内存区域模型,从而让你知其然而知其所以然。

Java文件编译成class文件以后如何从磁盘读入内存中 

详细讲解

Java字节码详细解析

 javap -c .\Demo.class

public static void main(java.lang.String[]);
Code:0: iconst_0                 // 将常量 0 压入操作数栈,栈顶是 01: istore_1                 // 将栈顶的 0 存储到局部变量 1 (即变量 count)2: iconst_0                 // 将常量 0 压入操作数栈,栈顶是 03: istore_2                 // 将栈顶的 0 存储到局部变量 2 (即变量 i)4: iload_2                 // 加载局部变量 2 (即 i) 到操作数栈5: bipush        10         // 将常量 10 压入操作数栈7: if_icmpge     33         // 比较栈顶两个整数 (i和 10),如果 i >= 10,跳转到字节码地址 33 (即结束循环)10: iload_1                 // 加载局部变量 1 (即 count) 到操作数栈11: iinc          1, 1      // 将局部变量 1 (count) 增加 114: istore_1                 // 将栈顶的值 (更新后的 count) 存储回局部变量 115: getstatic     #7        // 获取静态字段 System.out (即输出流)18: iload_1                 // 加载局部变量 1 (即 count) 到操作数栈19: invokedynamic #13,  0   // 使用动态方法调用输出 (这里是用 makeConcatWithConstants 动态拼接字符串)24: invokevirtual #17       // 调用 PrintStream 的 println 方法,将拼接的字符串打印出来27: iinc          2, 1      // 将局部变量 2 (i) 增加 130: goto          4         // 跳转回到字节码地址 4,继续循环33: return                  // 返回,结束程序

 代码片段2:

public class Client {public static void main(String[] args) {int count = 0;for (int i = 0 ; i <10 ;i ++){count = ++count;System.out.println("count=" + count);}}
}
  public static void main(java.lang.String[]);Code:0: iconst_01: istore_12: iconst_03: istore_24: iload_25: bipush        107: if_icmpge     3310: iinc          1, 113: iload_114: istore_115: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;18: iload_119: invokedynamic #13,  0             // InvokeDynamic #0:makeConcatWithConstants:(I)Ljava/lang/String;24: invokevirtual #17                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V27: iinc          2, 130: goto          433: return
}

 count++的字节码操作:

  10: iload_1                 // 加载局部变量 1 (即 count) 到操作数栈11: iinc          1, 1      // 将局部变量 1 (count) 增加 114: istore_1                 // 将栈顶的值 (更新后的 count) 存储回局部变量 1

总结:

  • 先将局部变量表位置为1的count的值为0加载到操作数栈 

  • 再将局部变量1中的count + 1

  • 再将操作数栈的值为1又更新到局部变量表1位置,虽然第二步已经将值加1,但是此时又给覆盖了,所以值始终为0

++count的字节码操作:

iinc 1, 1      // 将局部变量1的值加1
iload_1        // 将局部变量1的值加载到操作数栈
istore_1       // 将操作数栈顶的值存储到局部变量1

总结:

  • 将局部变量表位置为1的count的值加1

  • 再将局部变量表位置为1的count的值加载到操作数栈 

  • 再将操作数栈的值更新到局部变量表1位置,此时值就变为了1

操作数栈的作用:操作数栈的主要作用是提供一个地方来暂时存储数据,供执行各种指令时使用。它支持多种操作,如加载数据、执行算术运算、比较数据等。

局部变量表:用于存储方法的局部变量及一些相关信息。它在方法执行期间提供对局部变量的访问,并与操作数栈一起支持字节码的执行

局部变量表的数据结构

public class LocalVarExample {public LocalVarExample() {}public void testMethod(int a, long b) {int c = a + 1;float d = (float)c * 2.5F;}
}
局部变量表的数据结构
1.线性数组
  • 数组结构
    局部变量表以数组的形式实现,数组的每个元素称为一个 Slot(槽位)
    • 每个槽位固定为 32 位(4 字节)。
    • 一个槽位可以存储:
      • 一个 32 位的基本数据类型(如 intfloat 等)。
      • 一个引用类型(如对象引用)。
      • 一部分特殊数据(如 returnAddress,用于 jsr 和 ret 指令)。
    • 64 位数据类型(long 和 double)会占用两个连续的槽位
2. 索引定位
  • 每个局部变量通过索引(Index)定位。
    • 索引从 0 开始。
    • 方法的第一个参数存储在索引为 0 的槽位,后续参数依次存储。
    • 方法参数结束后,局部变量存储在后续槽位。
3. 数据类型和槽位

局部变量表中没有显式记录变量的类型,但类型信息隐含在字节码指令中:

  • 例如,iload_1 表示从索引 1 的槽位加载一个 int 类型变量。
 局部变量表的内存分配
  1. 初始化

    • 局部变量表的大小在方法调用时确定,大小由方法的 max_locals 指定。
    • max_locals 的值由编译器在编译时计算,表示方法所需的局部变量槽位的总数。
  2. 参数分配

    • 静态方法:
      • 方法参数按顺序分配到槽位。
    • 实例方法:
      • 索引 0 存储 this 引用,其他参数按顺序分配。
  3. 局部变量分配

    • 方法体中声明的局部变量在调用时分配到空闲的槽位。

计算局部变量表的大小

局部变量表的大小取决于:

  1. 方法的参数
  2. 方法体内声明的局部变量
  3. 变量类型的大小

规则

  • 每个局部变量占用一个或多个 Slot
    • 32 位变量(intfloatreferencereturnAddress):占用 1 个 Slot。
    • 64 位变量(longdouble):占用 2 个连续的 Slot。
  • 静态方法不包含 this 引用。
  • 非静态方法的第一个 Slot 用于存储 this 引用。
局部变量表的操作
  1.  加载和存储

    局部变量表与操作数栈之间通过加载(load)和存储(store)指令交互:

    • 加载指令(如 iloadfloadaload):
      • 从局部变量表加载数据到操作数栈。
    • 存储指令(如 istorefstoreastore):
      • 从操作数栈存储数据到局部变量表。
    2. 类型相关性
    • 加载和存储指令类型敏感。例如:
      • iload_1 表示从槽位 1 加载 int 类型。
      • dload_2 表示从槽位 2 和 3 加载 double 类型。

相关文章:

基于源码剖析:深度解读JVM底层运行机制

每日禅语 佛说&#xff0c;给你修路的&#xff0c;是你自己&#xff1b;埋葬你的&#xff0c;也是你自己&#xff1b;帮助你的&#xff0c;是你自己&#xff1b;毁灭你的&#xff0c;也是你自己&#xff1b;成就你的&#xff0c;自然还是你自己。所以佛说&#xff1a;自作自受&…...

redis延迟队列

Redis延迟队列 Redis延迟队列是基于Redis构建的消息队列&#xff0c;用来处理需延迟执行的任务。 基本原理 它借助Redis的有序集合&#xff08;Sorted Set&#xff09;数据结构达成目的。会把任务及其执行时间分别当成成员与分值存进有序集合&#xff0c;由于执行时间作为分值&…...

GDPU Vue前端框架开发 期末赛道出勇士篇(更新ing)

记住&#xff0c;年底陪你跨年的不会仅是方便面跟你的闺蜜&#xff0c;还有孑的笔记。 选择题 1.下列选项用于设置Vue.js页面视图的元素是&#xff08;&#xff09;。 A. Template B. script C. style D. title 2.下列选项中能够定义Vuejs根实例对象的元素是&#xff08;&…...

WordPress TutorLMS插件 SQL注入漏洞复现(CVE-2024-10400)(附脚本)

0x01 产品描述: ‌Tutor LMS‌是一个功能强大的...

小程序配置文件 —— 14 全局配置 - tabbar配置

全局配置 - tabBar配置 tabBar 字段&#xff1a;定义小程序顶部、底部 tab 栏&#xff0c;用以实现页面之间的快速切换&#xff1b;可以通过 tabBar 配置项指定 tab 栏的表现&#xff0c;以及 tab 切换时显示的对应页面&#xff1b; 在上面图中&#xff0c;标注了一些 tabBar …...

基于python+Django+mysql文档格式转换工具系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

异步线程池中,ThreadPoolTaskExecutor和ThreadPoolExecutor有什么区别?

异步线程池中&#xff0c;org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor和java.util.concurrent.ThreadPoolExecutor有什么区别&#xff1f; org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 和 java.util.concurrent.ThreadPoolExec…...

【机器学习】SVM支持向量机(二)

介绍 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种监督学习模型&#xff0c;广泛应用于分类和回归分析。SVM 的核心思想是通过找到一个最优的超平面来划分不同类别的数据点&#xff0c;并且尽可能地最大化离该超平面最近的数据点&#xff08;支持向量…...

基于NodeMCU的物联网电灯控制系统设计

最终效果 基于NodeMCU的物联网电灯控制系统设计 小程序关灯 上图展现了小程序关灯过程的数据传输过程&#xff1a;用户下达关灯指令→小程序下发关灯指令→MQTT服务器接收关灯指令→下位机接收与处理关灯指令。 项目介绍 该项目是“物联网实验室监测控制系统设计&#xff08;…...

源码安装redis后配置redis开机自启动

initd风格 #!/bin/sh ### BEGIN INIT INFO # Provides: redis # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop Redis server ### END…...

WebRTC服务质量(11)- Pacer机制(03) IntervalBudget

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

22.跳过报错(最简) C#例子

这是一个跳过报错的例子&#xff0c;如果代码出错了会自动跳过&#xff0c;代码正确了就正常执行。 然而这不是一种推荐的做法&#xff0c;正确的做法应该是使用bool类型的值去检测代码运行结果&#xff0c;然后分支判断&#xff0c;在代码内部解决错误。 这只是一种好玩的做…...

windows 本地node版本快速升级

文章目录 前言一、前置条件二、使用步骤1.查看node 安装位置2.下载指定的node 版本3.下载后进行解压缩4. 删除覆盖原来的node文件夹内容5. 验证 总结 前言 Node.js 是一个开源、跨平台的JavaScript运行时环境&#xff0c;它允许开发者在服务器端运行JavaScript代码。Node.js 基…...

windows安装mongodb

一.安装包准备 1.服务端下载 https://www.mongodb.com/try/download/communitya 按需选择&#xff0c;我们这里选择社区版 直接点download浏览器下载可能比较慢&#xff0c;可以尝试copy link后用三方下载软件&#xff0c;会快很多。 2.命令行客户端下载 https://www.mong…...

一文读懂混合专家模型(MoE)

一文读懂混合专家模型&#xff08;MoE&#xff09; 概述 混合专家模型&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;是一种机器学习和深度学习中的模型架构&#xff0c;它通过多个“专家”子模型来处理不同类型的输入数据或任务。在MoE模型中&#xff0c;输入数…...

自然语言处理(NLP)中的事件检测和事件抽取

事件检测和事件抽取是自然语言处理&#xff08;NLP&#xff09;中的两个重要任务&#xff0c;主要用于从文本中识别和提取事件及其相关信息。这两个任务在信息检索、情报分析、新闻摘要等应用中具有重要意义。 事件检测&#xff08;Event Detection&#xff09; 事件检测的目…...

深度学习:基于MindSpore NLP的数据并行训练

什么是数据并行&#xff1f; 数据并行&#xff08;Data Parallelism, DP&#xff09;的核心思想是将大规模的数据集分割成若干个较小的数据子集&#xff0c;并将这些子集分配到不同的 NPU 计算节点上&#xff0c;每个节点运行相同的模型副本&#xff0c;但处理不同的数据子集。…...

unity NAudio 获取电脑是否静音

测试&#xff0c;这两个办法都可以 打包出来也可以hu 想获取电脑是否静音出现编辑器模式下正常 打包出来失败 需要把 Api Compatibility Level改成.NET 4.x...

SemiDrive E3 MCAL 开发系列(6)– Icu 模块的使用

一、 概述 本文将会介绍 SemiDrive E3 MCAL Icu 模块的简介以及基本配置&#xff0c;其中还会涉及到 Xtrg 模块的配置。此外会结合实际操作的介绍&#xff0c;帮助新手快速了解并掌握这个模块的使用&#xff0c;文中的 MCAL 是基于 PTG3.0 的版本&#xff0c;开发板是官方的 …...

leetCode322.零钱兑换

题目&#xff1a; 给你一个整数数组coins,表示不同面额的硬币&#xff1b;以及一个整数amount,表示总金额。 计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额&#xff0c;返回-1。 你可以认为每种硬币的数量是无限的。 示例1&#xff1…...

【Python】什么是元组(Tuple)?

什么是元组&#xff08;Tuple&#xff09;&#xff1f; 元组&#xff08;Tuple&#xff09;是 Python 中的一种 不可变 的数据结构&#xff0c;用于存储多个元素。它类似于列表&#xff08;List&#xff09;&#xff0c;但与列表不同的是&#xff0c;元组一旦创建&#xff0c;…...

zentao ubuntu上安装

#下载ZenTaoPMS-21.2-zbox_amd64.tar.gz&#xff08;https://www.zentao.net/downloads.html&#xff09; https://dl.zentao.net/zentao/21.2/ZenTaoPMS-21.2-zbox_amd64.tar.gzcd /opt tar -zxvf ZenTaoPMS-21.2-zbox_amd64.tar.gz#启动 /opt/zbox/zbox start /opt/zbox/zbox…...

文档解析丨高效准确的PDF解析工具,赋能企业非结构化数据治理

在数据为王的时代浪潮中&#xff0c;企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速&#xff0c;企业所积累的数据量呈爆炸式增长&#xff0c;数据类型也愈发多样化&#xff0c;这些数据构成了现代企业数据资产的重要组成部分。 然而&#xff0c;传…...

Unity 实现Canvas显示3D物体

新建一个UI相机&#xff0c;选择渲染层为UI 将主相机的渲染层去掉UI层 、 将Canvas的RenderMode设置为Screen Space - Camera,将RenderCamera设置为UI相机 新建3D物体的UI父物体&#xff0c;并将3D物体的层级设置为UI层 适当的放缩3DObjParent&#xff0c;让3D物体能显示出来…...

OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载

在人工智能的浪潮中&#xff0c;OpenAI的12天发布会无疑是2024年科技界的一场盛宴。从12月5日开始&#xff0c;OpenAI连续12天每天发布一个新应用或功能&#xff0c;标志着AI技术的又一次飞跃。本文将梳理这些激动人心的发布&#xff0c;带你一探究竟。 OpenAI发布会概览 Ope…...

cellphoneDB进行CCI以及可视化

除了cellchat&#xff0c;在单细胞转录组或者空间组的分析中&#xff0c;cellphoneDB也是一个常用的细胞通讯软件&#xff0c;这个数据库更注重配受体关系&#xff0c;对于有明确先验知识的配受体研究比较友好。 但值得注意的是&#xff0c;它的数据库只包括人的基因名称信息&…...

Facebook 上的社群文化:连接与共享

随着社交媒体的普及&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;不仅改变了人们的沟通方式&#xff0c;还塑造了独特的社群文化。在Facebook上&#xff0c;用户可以轻松地与朋友、家人保持联系&#xff0c;同时也能加入兴趣相投的群组、参与讨论和共享内容。社…...

数据库的概念和操作

目录 1、数据库的概念和操作 1.1 物理数据库 1. SQL SERVER 2014的三种文件类型 2. 数据库文件组 1.2 逻辑数据库 2、数据库的操作 2.1 T-SQL的语法格式 2.2 创建数据库 2.3 修改数据库 2.4 删除数据库 3、数据库的附加和分离 1、数据库的概念和操作 1.1 物理数据库…...

word运行时错误‘-2147221164(80040154)’ 没有注册类的解决办法

目录 问题描述解决方案 问题描述 解决方案 打开C盘找到路径C:\Users\Administrator\AppData\Roaming\Microsoft\Word\STARTUP或者在everything中搜索“Microsoft\Word\STARTUP”删除NEWebWordAddin.dotm文件即可正确打开word。...

Oracle数据库高级应用与优化策略

Oracle数据库高级应用与优化策略 在数据驱动的时代,Oracle数据库作为企业级数据库管理的佼佼者,以其强大的数据处理能力、高可用性和安全性,在众多行业领域中扮演着不可或缺的角色。本文旨在深入探讨Oracle数据库的高级应用与优化策略,通过具体代码使用案例,帮助开发者和…...

笔记:使用python对飞书用户活跃度统计的一个尝试

说明 一个python练习 代码 import json import time import openpyxl from openpyxl import load_workbook from datetime import datetime, timedelta import lark_oapi as lark from lark_oapi.api.admin.v1 import *def data_r(start_date, end_date):r_data []client la…...

讲解substr函数

substr JavaScript 中的 substr语法示例注意 PHP 中的 substr语法示例 Python 中的等价方法语法示例 其他语言Java 补充 substr 是编程中用于截取字符串的一个方法或函数&#xff0c;其功能是从一个字符串中提取出一部分子字符串。不同的编程语言中&#xff0c;这个功能的实现方…...

宏任务和微任务的区别

在 JavaScript 的异步编程模型中&#xff0c;宏任务&#xff08;Macro Task&#xff09;和微任务&#xff08;Micro Task&#xff09;是事件循环&#xff08;Event Loop&#xff09;机制中的两个重要概念。它们用于管理异步操作的执行顺序。 1. 宏任务 (Macro Task) 宏任务是较…...

设计模式介绍

设计模式是软件开发中常见问题的经典解决方案。它们是经过验证的、可重用的设计经验&#xff0c;可以帮助程序员构建可维护、可扩展和可靠的对象导向软件。 设计模式通常分为三大类&#xff1a;创建型、结构型和行为型。以下是每种类型中一些常见的设计模式&#xff0c…...

flask后端开发(11):User模型创建+注册页面模板渲染

目录 一、数据库创建和配置信息1.新建数据库2.数据库配置信息3.User表4.ORM迁移 二、注册页面模板渲染1.导入静态文件2.蓝图注册路由 一、数据库创建和配置信息 1.新建数据库 终端中 CREATE DATABASE zhiliaooa DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;2…...

Ubuntu 中安装 RabbitMQ 教程

简介 RabbitMq作为一款消息队列产品&#xff0c;它由Erlang语言开发&#xff0c;实现AMQP&#xff08;高级消息队列协议&#xff09;的开源消息中间件。 应用场景 异步处理 场景说明&#xff1a;用户注册后&#xff0c;注册信息写入数据库&#xff0c;再发邮件、短信通知。 …...

【开源免费】基于SpringBoot+Vue.JS网上摄影工作室系统(JAVA毕业设计)

本文项目编号 T 103 &#xff0c;文末自助获取源码 \color{red}{T103&#xff0c;文末自助获取源码} T103&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

Metricbeat安装教程——Linux——Metricbeat监控ES集群

Metricbeat安装教程——Linux 一、安装 下载安装包&#xff1a; 官网下载地址&#xff1a;https://www.elastic.co/cn/downloads/beats/metricbeat 上传包到linux 切换到安装目录下 解压&#xff1a;tar -zxvf metricbeat-7.17.1-linux-x86_64.tar.gz 重命名安装文件夹 mv met…...

torch.nn.Embedding模块介绍

torch.nn.Embedding 是 PyTorch 中的一个嵌入层模块,用于将离散的整数索引(如单词或标记的 ID)映射到连续的密集向量空间中。常用于自然语言处理(NLP)中的词嵌入,但也适用于任何需要将类别数据转换为密集向量表示的场景。 参数说明 torch.nn.Embedding(num_embeddings, …...

<数据集>风力发电机损伤识别数据集<目标检测>

数据集下载链接 &#xff1c;数据集&#xff1e;风力发电机损伤识别数据集&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90187097数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2527张 标注数量(xml文件个数)&#xff1a;252…...

【Python运维】自动化备份与恢复系统的实现:Python脚本实战

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着信息化进程的加速,数据的重要性日益增加,数据丢失的风险也随之增加。为了保证数据安全,定期备份和及时恢复数据是必不可少的操作。本…...

PTA数据结构编程题7-1最大子列和问题

我参考的B站up的思路 题目 题目链接 给定K个整数组成的序列{ N 1 ​ , N 2 ​ , …, N K ​ }&#xff0c;“连续子列”被定义为{ N i ​ , N i1 ​ , …, N j ​ }&#xff0c;其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 1…...

Elasticsearch-模糊查询

模糊查询 前缀搜索&#xff1a;prefix 概念&#xff1a;以xx开头的搜索&#xff0c;不计算相关度评分。 注意&#xff1a; 前缀搜索匹配的是term&#xff0c;而不是field。 前缀搜索的性能很差 前缀搜索没有缓存 前缀搜索尽可能把前缀长度设置的更长 语法&#xff1a; GET &…...

C#学习1:C#初接触,一些基础内容备忘和相关报错说明

目录 1 C#基本语法格式 1.1 基础规则 1.2 以if为例子 2 一些写法 2.1 时间相关 2.2 对数写法 2.3 关于使用random 2.4 UnityEngine.Random.value 2.5 PerlinNoise 函数 PerlinNoise 函数本身的输出范围 3 各种报错 3.0 unity里对C#报错内容超级详细 3.1 error cs1…...

机器学习的方法

机器学习方法主要分为三种&#xff1a;监督学习、无监督学习、半监督学习。 1.监督学习 神经网络、朴素贝叶斯、线性回归、逻辑回归、随机森林、支持向量机&#xff08;SVM&#xff09;都是典型的监督学习方法。 监督学习&#xff0c;即监督机器学习&#xff0c;之所以叫监督…...

el-pagination 为什么只能展示 10 条数据(element-ui@2.15.13)

好的&#xff0c;我来帮你分析前端为什么只能展示 10 条数据&#xff0c;以及如何解决这个问题。 问题分析&#xff1a; pageSize 的值&#xff1a; 你的 el-pagination 组件中&#xff0c;pageSize 的值被设置为 10&#xff1a;<el-pagination:current-page"current…...

vulhub-wordpress靶场

一.主题上传漏洞 来到靶场点击主题选择add new 这里有一个上传主题的地方 我们可以去网上找到wordpress主题下载一个 wordpress模板 网页设计模板 免费 免费下载 - 爱给网 下载完成后对我们有用的东西只有这一个目录&#xff0c;把它拖出来 点开moban目录后&#xff0c;创建…...

Docker 默认安装位置迁移

一、找到 Docker 默认安装位置 [roothost-192-168-0-1 ~]# docker info Client:Version: 26.1.0Context: defaultDebug Mode: falseServer:Containers: 31Running: 31Paused: 0Stopped: 0Images: 128Server Version: 26.1.0Storage Driver: overlay2Backing Filesystem:…...

【机器学习】SVM支持向量机(一)

介绍 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种监督学习模型&#xff0c;广泛应用于分类和回归分析。SVM 的核心思想是通过找到一个最优的超平面来划分不同类别的数据点&#xff0c;并且尽可能地最大化离该超平面最近的数据点&#xff08;支持向量…...

无需配置设备,借助GitHub快速编译项目并直接运行!

引言 你是否曾经有过类似的烦恼&#xff0c;发现了一个有趣的项目&#xff0c;想要测试一下&#xff0c;但是自己的设备没有对应的开发环境或者受制于自己的设备&#xff0c;不想或者不能去配置对应的开发环境&#xff0c;应该怎么办呢&#xff1f;这种情况下&#xff0c;其实…...