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

JVM快速入门

目录

前言:

1.JVM的位置

2.JVM的体系结构

3.类加载器

类加载器中的一些方法和细节:

4.双亲委派机制

5.沙箱安全机制

概念

原理

Java 沙箱安全机制

应用场景

6.Native

7.方法区:

8.PC寄存器

9.栈

10.三种JVM

HotSpot VM

OpenJ9 VM

Zing VM

11.堆

新生区:

养老区:

永久区:

补充说明:

常见问题:

12、GC

13、GC算法

13.1、什么是垃圾?

1.标记清除算法

2.标记压缩(整理)算法

3.复制算法

4.引用计数器算法(不用了几乎)

18、JMM

19、总结

结尾:


前言:

在瞬息万变的软件开发领域,Java虚拟机(JVM)如同数字世界中的万能翻译官,默默支撑着全球数十亿设备的稳定运行。从金融交易系统到大数据平台,从移动应用到物联网设备,JVM以其"一次编写,到处运行"的独特魅力持续焕发着蓬勃生机。本文将为开发者打开JVM世界的大门,用庖丁解牛的方式剖析这个支撑Java生态26载的核心引擎。我们将从字节码的奇妙旅程开始,穿越类加载器的迷雾森林,探秘运行时数据区的内存迷宫,最终抵达即时编译器的性能之巅。无论您是刚接触Java的新手,还是希望深入理解底层机制的中级开发者,这次快速入门之旅都将为您装备关键的JVM知识图谱。

1.JVM的位置

JRE包含了JVM


2.JVM的体系结构

本地方法栈(Native Method Stack)这个单词要稍微记一下

我们所说的JVM调优就是在方法区和堆内进行的 


3.类加载器

作用:加载class文件

举例:new Student();

student的引用放在了java的栈里,具体的人是放在堆里的

类加载器中的一些方法和细节:


4.双亲委派机制

举个例子:

Java.lang.String中明明有main方法,但是他却找不到。

这个时候就是所谓的双亲委派机制,最初是为了安全设计的。

应用程序加载器(当前)——>扩展加载器(Extension)——>根类加载器(Bootstrap)

我们这里new了一个String,然后他会看一下当前类加载器上看有没有String ,然后他会向上请求,看一下扩展加载器里有没有String ,然后再往上去根加载器里面找有没有。最终在根加载器中找到了String类,并且运行,但是根加载类上的String是默认的那个不可变类的String,里头肯定是没有mian方法的,所以他会报错:找不到main方法。

如果说在根类没有找到String 类,他就会返回去找扩展加载器,去执行扩展加载器的string 方法,同样的,扩展加载器没有就直接去应用程序加载器上找。

总结:

优先去根加载器找类来加载,没有的话依次往下找


5.沙箱安全机制

沙箱安全机制是一种重要的安全防护手段,主要用于为程序提供一个隔离的运行环境,以此来限制程序的访问权限,防止其对系统造成损害。下面从概念、原理、Java 沙箱安全机制、应用场景等方面为你详细介绍:

概念

沙箱就如同一个虚拟的 “容器”,程序在这个容器内运行,其所能访问的资源和执行的操作都被严格限制。即使程序存在漏洞或者被恶意利用,由于沙箱的隔离作用,它也无法对沙箱外部的系统资源(如文件系统、网络等)进行非法访问或破坏。

原理

沙箱安全机制的核心原理是通过访问控制和资源隔离来实现的。具体来说:

  • 访问控制:沙箱会依据预先设定的规则,对程序的各种操作进行细致检查,只有符合规则的操作才被允许执行。例如,一个沙箱可以限制程序只能访问特定目录下的文件,当程序试图访问其他目录的文件时,沙箱会阻止该操作。
  • 资源隔离:沙箱会为程序分配独立的系统资源,如内存、CPU 等,使程序的运行不会对沙箱外部的系统资源产生影响。同时,不同程序在各自的沙箱中运行,彼此之间也不会相互干扰。

Java 沙箱安全机制

Java 是最早引入沙箱安全机制的编程语言之一,其沙箱安全机制主要由以下几个部分组成:

  • 类加载器(ClassLoader):负责将 Java 类文件加载到 Java 虚拟机中。不同的类加载器具有不同的加载路径和权限,通过这种方式可以对类的来源进行控制,确保只有受信任的类才能被加载到系统中。
  • 字节码校验器(Bytecode Verifier):在类被加载时,字节码校验器会对类的字节码进行严格检查,确保字节码符合 Java 语言的规范和安全要求。例如,检查字节码是否会导致栈溢出、是否会访问非法的内存地址等。
  • 安全管理器(SecurityManager):是 Java 沙箱安全机制的核心组件,它会根据预先定义的安全策略,对程序的各种操作(如文件访问、网络连接等)进行实时监控和控制。当程序试图执行一个受限制的操作时,安全管理器会根据安全策略决定是否允许该操作执行。
  • 访问控制器(AccessController):用于在运行时动态地检查和控制程序对系统资源的访问权限。它会结合当前的安全上下文和安全策略,对每个资源访问请求进行评估,只有在权限允许的情况下才会允许访问。

应用场景

  • 浏览器插件:当你在浏览器中运行一些插件(如 Java Applet)时,浏览器会为这些插件创建一个沙箱环境,限制它们对本地系统的访问权限,防止插件中的恶意代码对用户的计算机造成损害。
  • 云服务:云服务提供商可以使用沙箱技术为不同的用户或应用程序提供隔离的运行环境,确保每个用户的应用程序只能访问自己的资源,不会对其他用户的应用程序产生影响。
  • 软件开发测试:在软件开发和测试过程中,可以使用沙箱来模拟不同的运行环境,对软件进行安全测试,发现和修复潜在的安全漏洞。

6.Native

说明:凡是带了 Native 关键字的,说明java的作用范围达不到了,会去调用底层c语言的库。

首先:他会先进入本地方法栈

然后:他会调用本地方法接口(JNT

JNT的作用:扩展java的使用,融合不同的编程语言为java提供服务。

JVM在内存区域中专门开辟了一块标记区域:本地方法栈(Native Method Stack)

作用:登记native方法,注意是登记,并不执行

最终执行的时候,加载本地库的方法经过本地接口(JNT)


7.方法区:

静态变量(static),常量(final),类信息(class)(构造方法,接口定义)、运行时的常量池存在方法区中,但是实例对象(new Student())存在堆内存中,和方法区无关。


8.PC寄存器

每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区的方法字节码(用来存储指向像一条指令的地址,也即将要执行的指令代码),在执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。


9.栈

栈内存,主管程序的运行,生命周期和线程同步,线程结束时,栈内存也释放,所以对于栈来说,不存在垃圾回收机制

一旦线程结束,栈就Over

一旦栈满:栈就会内存溢出,会报error

10.三种JVM

HotSpot VM

  • 简介:是目前最广泛使用的 JVM,由 Sun Microsystems(后被 Oracle 收购)开发。它在 JDK 1.3 之后成为默认的 JVM。
  • 特点
    • 自适应优化:具有即时编译(Just-In-Time Compilation,JIT)功能,能在运行时分析代码的执行频率,将频繁执行的代码编译为本地机器码,提高执行效率。同时,它还能根据应用的运行情况动态调整堆内存的大小,以适应不同的内存需求。
    • 垃圾回收算法多样:采用了多种垃圾回收算法,如标记 - 清除、复制、标记 - 压缩等,根据不同的堆内存区域(新生代和老年代)选择合适的算法,以优化垃圾回收的性能,减少停顿时间。
    • 成熟稳定:经过多年的发展和大量实践的检验,具有高度的稳定性和可靠性,在各种不同的操作系统和硬件平台上都有良好的表现。

OpenJ9 VM

  • 简介:最初是由 IBM 开发的 JVM,后来捐赠给了开源社区。它以其高效的内存管理和低延迟特性而受到关注。
  • 特点
    • 内存管理高效:采用了一种称为 “OMR(Open Memory Recycling)” 的内存管理技术,能够更精细地管理堆内存,减少内存碎片的产生,提高内存的利用率。这使得在内存受限的环境中,OpenJ9 VM 能够表现出更好的性能。
    • 可扩展性和可定制性:具有良好的可扩展性,允许开发人员根据具体的应用需求对 JVM 进行定制。例如,可以通过配置参数来调整垃圾回收的策略、线程管理方式等,以优化应用在特定场景下的性能。
    • 与 OpenJDK 集成良好:作为 OpenJDK 项目的一部分,与 OpenJDK 的其他组件紧密集成,能够充分利用 OpenJDK 的开源生态系统和社区支持,方便开发人员进行开发和维护。

Zing VM

  • 简介:由 Azul Systems 公司开发,是一款商业化的 JVM,旨在为大规模企业级应用提供高性能和低延迟的运行环境。
  • 特点
    • 超大堆内存支持:能够支持非常大的堆内存,可轻松管理数十 GB 甚至上百 GB 的堆空间,这对于处理大规模数据和高并发的企业级应用非常有优势。例如,在一些大数据处理和金融交易系统中,能够避免频繁的垃圾回收导致的停顿,保证系统的稳定运行。
    • 低延迟垃圾回收:采用了独特的垃圾回收算法,如 “C4(Concurrent Continuously Compacting Collector)” 垃圾回收器,实现了几乎无停顿的垃圾回收,大大降低了应用的响应延迟,提高了系统的实时性。
    • 性能优化技术:运用了多种先进的性能优化技术,如代码缓存管理、锁优化等,进一步提高了应用的执行效率。同时,Zing VM 还提供了丰富的监控和管理工具,方便运维人员对 JVM 的运行状态进行实时监控和调优。

11.堆

一个JVM只有一个堆内存,堆内存的大小是可以调节的。

堆区内部:

新生区:

  • 类诞生和成长的地方,甚至死亡;
  • 伊甸园,所有的对象都是在伊甸园区new 出来的
  • 幸存者(0 1区)

养老区:

真理:99%的对象都是临时对象,在新生区就被回收了,所以一般的对象到不了养老区。

永久区:

这个区域常驻内存的,用来存放JDK自身携带的Class对象。Interface元数据,存储的是java运行时的一些环境或者类信息,这个区域不存在垃圾回收,关闭虚拟就会释放这个区域的内存。

一个启动类,加载了大量的第三方jar包。Tomcat部署了太多的应用,大量的动态生成反射类。不断地被加载。直到内存满了,就会出现OOM;

  • jdk1.6以前:永久代常量池是在方法区
  • jdk1.7 :永久代,但是慢慢的退化了,去永久化,常量池在堆中
  • jdk1.8 :  无永久化,常量池在元空间

补充说明:

  • jdk8以后,元空间其实不在堆区,而是在本地内存,逻辑上他在堆区,但是物理地址上不在。
  • 所以堆区的内存:新生区+养老区

常见问题:

在一个项目中,突然出现了OOM故障,那么该如何排查,研究为什么出错?

思路:

  • 要能看到代码第几行出错,我们就更好的排查,内存快照分析工具:MAT,Jprofiler
  • 一行一行的Debug

MAT,Jprofiler的作用:

  • 分析Dump内存文件,快速的定位内存泄漏;
  • 获得堆中的对象
  • 获得大的对象

Jprofiler下载网址 https://www.ej-technologies.com/download/jprofiler/files

Jprofiler9.2激活码

L-Larry_Lau@163.com#23874-hrwpdp1sh1wrn#06201


在IDEA中下载Jprofiler插件并重启,在工具栏会有图标如下:

安装好我们的Jprofiler工具!

测试: 我们故意造成内存溢出

public class JprofilerTest {// 1mbyte[] arr = new byte[1*1024*1024];public static void main(String[] args) {ArrayList list = new ArrayList<String>();// -Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryErrorwhile (true){list.add(new JprofilerTest());}}
}

抛出异常

Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceat com.tian.jvm.JprofilerTest.<init>(JprofilerTest.java:16)at com.tian.jvm.JprofilerTest.main(JprofilerTest.java:25)

之后我们需要借用Jprofiler来dump内存错误!

同上 我们在VM options中输入 指令 : -Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError

意思就是如果出现了内存溢出错误 dump出来!

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid9740.hprof ...
Heap dump file created [7683930 bytes in 0.034 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceat com.tian.jvm.JprofilerTest.<init>(JprofilerTest.java:16)at com.tian.jvm.JprofilerTest.main(JprofilerTest.java:25)

注意 Dumping heap to java_pid9740.hprof …

表明已经dump下来了,那我们就需要找到这个文件在哪,于此同时,我们在idea的左边文件栏回生产一个文件夹

我们右键我们的类找到我们dump的文件

向上找!找到生成的hprof文件即我们dump下的文件

 

由于我们已经安装了Jprofiler Ap,我们直接双击,运行!

我们可以看到 list对象分配了90%的内存,太离谱了简直,当然,这是我们的测试!

Jprofiler提示的错误位置!

这么一来,我们就很方便的找到了哪里,是什么原因造成的OOM!方便解决

12、GC

GC在垃圾回收时,不是对这三个区域统一回收。大部分都是,回收新生代

新生代
幸存区(from to)
老年区


13、GC算法

13.1、什么是垃圾?

垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是回收的垃圾!

如果不对其进行垃圾回收,那么内存中会一直保存这些垃圾对象,知道应用程序结束,被保留的对象无法用其空间,甚至会造成内存溢出!

1.标记清除算法

我们来脑补一下,见名知意,我们没用一次对象,就给他进行一次标记!然后清除!

好处:不需要额外的空间!
坏处:两次扫描严重浪费时间! 会产生内存碎片


2.标记压缩(整理)算法

标记压缩算法是来优化标记清除算法的!、

  • 好处:没有了内存碎片!
  • 坏处:多了移动成本!


3.复制算法

  • 好处: 没有内存碎片!
  • 坏处:浪费内存空间 ! 因为他要保证to是空的! 极端情况下(对象不会被回收!)
  • 最佳使用场景:对象存活度较低! —> 新生区


4.引用计数器算法(不用了几乎)

18、JMM

java内存模型 (Java Memory Model )

jmm是类似于MSI等 缓存一致性协议,用于定义数据读写的规则!

JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的副本。

解决共享对象可见性: voliate关键字

深入了解请看 https://blog.csdn.net/jinxinxin1314/article/details/106700414?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161744592816780265434767%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161744592816780265434767&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-106700414.first_rank_v2_pc_rank_v29&utm_term=JMM

19、总结

内存效率(时间复杂度):复制算法 > 标记清除算法 > 标记压缩算法

内存整齐度: 复制算法 = 标记压缩算法 > 标记清除算法

内存利用率: 标记压缩算法 = 标记清除算法 > 复制算法

没有最好的算法,只有适合的算法! 分代收集算法

年轻代: 存活率低 使用复制算法

老年代: 存活率高 使用标记清除(内存碎片不是很多)+ 标记压缩混合(内存碎片多了之后压缩一次)

结尾:

当我们完成这次JVM探秘之旅,回望这个由200万行C++代码构筑的精密系统,会发现技术之美往往存在于抽象与实现的完美平衡。从.class文件的字节码舞蹈到垃圾回收器的时空博弈,从方法区的类型圣殿到本地方法栈的跨语言桥梁,JVM的每个设计决策都在诉说着软件工程的智慧结晶。希望这篇入门指南能成为您深入JVM世界的罗盘,当您下次面对内存溢出告警或性能瓶颈时,不再是面对黑盒的迷茫,而是带着系统级的认知从容应对。技术的精进永无止境,JVM仍在持续进化:从ZGC的革命性低延迟,到Valhalla项目的值类型革新,这个绿色咖啡杯图标背后的世界永远充满惊喜。让我们保持好奇,继续前行,在Java生态的星辰大海中书写新的篇章。

相关文章:

JVM快速入门

目录 前言&#xff1a; 1.JVM的位置 2.JVM的体系结构 3.类加载器 类加载器中的一些方法和细节&#xff1a; 4.双亲委派机制 5.沙箱安全机制 概念 原理 Java 沙箱安全机制 应用场景 6.Native 7.方法区: 8.PC寄存器 9.栈 10.三种JVM HotSpot VM OpenJ9 VM Zin…...

spring--事务详解

spring事务 什么是事务 我们常说的事务&#xff0c;一般指数据库事务。 数据库事务是指 一个逻辑工作单元中执行的一系列&#xff08;数据库操作&#xff09;&#xff0c;要么一起成功&#xff0c;要么一起失败 当工作单元中的所有操作全部正确完成时&#xff0c;工作单元的…...

CSS实现DIV水平与垂直居中方法总结

大家好&#xff0c;欢迎来到程序视点&#xff01;我是你们的老朋友.小二&#xff01; CSS实现DIV水平与垂直居中方法总结 一、水平居中方案 标准方法 .center-div {margin-left: auto;margin-right: auto; }关键点&#xff1a;必须声明DOCTYPE&#xff08;推荐XHTML 1.0 Tran…...

AI 助力 Python:长时序植被遥感动态分析与生态评估

技术点目录 Python遥感数据处理基础及AI大模型应用技巧常用共享数据资源介绍AI辅助下地球科学数据处理方法及python实现AI辅助下植被参数遥感反演基本原理及python实现AI辅助下地球科学数据分析方法及python实现AI辅助下植被物候提取与分析实践应用AI辅助下植被时空动态分析及p…...

卫星变轨轨迹和推力模拟(单一引力源)MATLAB

代码说明&#xff1a; 常量定义&#xff1a;定义了万有引力常数、地球和月球的质量、半径以及地月平均距离。初始状态设置&#xff1a;设置卫星的初始位置、速度和姿态&#xff0c;以及月球的初始位置。模拟循环&#xff1a;在循环中计算地球和月球对卫星的引力&#xff0c;模…...

2025华东杯B题华东杯数学建模思路代码成品讲解工序安排问题

完整内容请看文章最下面的推广群 我将展示完整的文章、代码和结果 工序安排问题 摘要 本文研究的核心是制造业中的工序安排优化问题&#xff0c;源自实际生产管理中常见的资源分配挑战。问题背景设定为一家拥有100名工人和三条相同服装生产线的成衣制造厂&#xff0c;涉及裁…...

Python的赋值操作都是引用吗?

Python的赋值操作都是引用吗&#xff1f; 一言以蔽之&#xff1a;Python的赋值本质都是引用传递&#xff0c;但不可变对象的表现类似于值传递&#xff0c;这是由对象不可变性造成的效果。&#xff08;我非常确信这篇笔记说的内容都是正确的&#xff0c;这篇笔记是deepseekv3的…...

学习influxDB的安装和使用

influxDB的使用场景 nfluxDB 是一种时序数据库&#xff0c;时序数据库通常被用在监控场景,用来收集各个节点采集到的监控指标,以及监控指标产生的时间点.比如我们收集的主机的监控数据,可以通过查询语句,统计查询过去30分钟内cpu的平均使用率是多少. 相比关系型数据库与时序数…...

LeetCode209_长度最小的子数组

LeetCode209_长度最小的子数组 标签&#xff1a;#数组 #二分查找 #前缀和 #滑动窗口Ⅰ. 题目Ⅱ. 示例0. 个人方法&#xff1a;滑动窗口 标签&#xff1a;#数组 #二分查找 #前缀和 #滑动窗口 Ⅰ. 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足…...

uniapp 实现时分秒 分别倒计时

效果 <view class"issue-price-countdown"> <CountDown :endTimestamp"1745996085000"></CountDown> </view> 引入组件 import CountDown from /components/CountDown.vue; <template> <view class&qu…...

ubuntu下一些环境配置

1、qhull sudo apt install qhull-bin libqhull-dev 2、cmake wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null echo "deb [signed…...

el-check-box多选框和el-select下拉框组合

<template><div><el-selectv-model"selectedValues"multiplecollapse-tagsplaceholder"请选择电压等级"change"handleChange"><el-option key"all" value"all" class"select-all-option">…...

SPSS PCA+判别分析

1&#xff0c; 主成分分析PCA 我们只要对数化的变量数据&#xff1a; &#xff08;1&#xff09;对数据进行标准化处理&#xff1a; 选择【分析】—【描述统计】—【描述】 添加要标准化的变量&#xff0c;勾选【将标准化值另存为变量(Z)】&#xff0c;再点确定 SPSS软件本身不…...

【阿里云大模型高级工程师ACP习题集】2.7 通过微调增强模型能力 (下篇)(⭐️⭐️⭐️ 重点章节!!!)

习题集: 【单选题】在阿里云大模型微调中,以下关于预训练和微调的说法,错误的是?( ) A. 预训练使用自监督/无监督学习方式 B. 微调通常在大规模通用数据集上进行 C. 预训练模型可以为下游任务提供初始模型 D. 微调能让模型适应具体的下游任务 【多选题】LoRA微调中,低秩…...

ag-grid-react 列表导出csv列表getDataAsCsv (自定义导出列表配置)自定义新增,修改导出内容

1.ag-grid-react getDataAsCsv 新增导出字段 方法&#xff1a;临时添加列再导出 你可以通过 columnApi.setColumnDefs() 临时添加需要导出的字段&#xff0c;然后再调用 getDataAsCsv&#xff0c;导出后再恢复原来的列。 import { useRef } from react; import { AgGridReac…...

深度解析:Vue.js 性能优化全景指南(从原理到实践)

前言 随着 Vue.js 应用复杂度提升&#xff0c;性能问题逐渐成为制约用户体验的瓶颈。本文将系统性地剖析 Vue.js 性能优化的 核心原理、关键技巧、工具链支持&#xff0c;并通过真实案例演示如何提升大型应用的运行时性能与加载效率。 一、渲染层优化&#xff1a;减少不必要的…...

Linux -- 操作系统

一、冯•诺依曼体系结构 1、概念 # 在计算机发展历程中&#xff0c;核心作用就是解决人类问题。为了实现这一目标&#xff0c;计算机系统需具备特定结构和功能。 首先&#xff0c;计算机要配备输入设备&#xff0c;如鼠标、键盘、摄像头、话筒、磁盘&#xff08;文件读取&…...

(初探)强化学习路径规划的理论基础与代码实现

一、强化学习路径规划的核心理论 1.1 马尔可夫决策过程&#xff08;MDP&#xff09;框架 理论基础&#xff1a; 路径规划问题可以建模为马尔可夫决策过程&#xff08;Markov Decision Process, MDP&#xff09;&#xff0c;由五元组(S, A, P, R, γ)定义。其中&#xff0c;S&…...

分布式链路ID实现

实现原理 api入口或者网关处生成traceId&#xff0c;调用服务时优先检查是否头部带有traceId&#xff0c;有则复用&#xff0c;没有则生成 实现方式 处理api相关traceId 1.通过filter复用或者生成traceId&#xff0c;并且将traceId输入到响应头中 import java.io.IOExcept…...

Java @Transactional事物隔离级别和默认值详解

在 Java 开发中&#xff0c;Transactional 注解是 Spring 框架中用于管理事务的重要工具。它提供了多种配置选项&#xff0c;其中事务隔离级别是一个关键属性。本文将深入探讨 Transactional 注解的隔离级别默认值&#xff0c;并通过具体代码示例帮助你更好地理解和应用事务隔离…...

ComputeShader绘制全屏纯色纹理

参考 Getting Started With Compute Shaders In Unity 环境 Win10 Unity20194.40 全屏纯色纹理示例 使用ComputerShader逐个像素设置颜色 ComputeShader脚本 设置纹理颜色 #pragma kernel CSMainRWTexture2D<float4> Result;//纹理 half4 solidColor;//颜色[numth…...

关于 MCP 的理论知识学习

文章目录 1. 写在最前面2. 基本概念2.1 Why MCP2.1.1 大模型访问的局限2.1.2 过渡阶段—Function Call2.1.3 当前阶段— MCP 3. 碎碎念4. 参考资料 1. 写在最前面 最近有一项任务是写旧版本迁移到新版本的支持文档&#xff0c;文档的编写是借助于 cursor 帮忙写的。但是实现的…...

关于vue+iview中tabs嵌套及实际应用

最近在用vueiview框架做项目&#xff0c;在实际做项目中根据需求用到iview中的tabs标签页嵌套以及标签页增加删除功能。想着记录下来&#xff0c;以后可能会再用到。下面是页面。由于是公司的项目具体有些地方我会打码&#xff0c;不影响阅读&#xff01; 1607751577(1).jpg ta…...

26考研——输入/输出系统_I/O 方式_DMA 方式(7)

408答疑 文章目录 三、I/O 方式DMA 方式DMA 方式的特点DMA 控制器的组成DMA 的传送方式停止 CPU 访存周期挪用DMA 与 CPU 交替访存 示例分析DMA 的传送过程 DMA 方式和中断方式的区别 四、参考资料鲍鱼科技课件26王道考研书 三、I/O 方式 DMA 方式 DMA 方式是一种完全由硬件进…...

处理vue3热加载后axios的请求重复访问的问题

在请求拦截上加上判断&#xff0c;热加载时清空拦截器 if (import.meta.hot) { const interceptorsRe axios.interceptors.response.handlers; const interceptorsRq axios.interceptors.request.handlers; interceptorsRe .length 0; // 清空已有响应拦截器 interceptorsR…...

【教学类-102-21】蝴蝶三色图作品3——异型书蝴蝶“满格变形图”一页2图、一页4图

前期设计 将蝴蝶撑满整个单元格,满格变形图。确保蝴蝶图案最大化 【教学类-102-20】蝴蝶三色图作品2——卡纸蝴蝶“满格变形图”(滴颜料按压对称花纹、原图切边后变形放大到A4横版最大化)-CSDN博客文章浏览阅读572次,点赞7次,收藏3次。【教学类-102-20】蝴蝶三色图作品2…...

【昇腾】Benchmark

1. MindIE 服务化 1.1 环境准备 镜像传送门 参数说明&#xff1a; device用于挂载卡&#xff0c;下面的例子是挂载了8张卡 倒数第二行的镜像名称记得修改 docker run -itd --privileged --namemindie --nethost \--shm-size 500g \--device/dev/davinci0 \--device/dev/da…...

【阿里云大模型高级工程师ACP学习笔记】2.7 通过微调增强模型能力 (下篇)(⭐️⭐️⭐️ 重点章节!!!)

学习目标 特别说明:由于这一章节是2025年3月官方重点更新的部分,新增内容非常多,因此我不得不整理成上、下两篇,方便大家参考。 备考阿里云大模型高级工程师ACP认证时,深入钻研《2.7通过微调增强模型能力(下篇)》,期望达成以下目标: 掌握高效微调技术:深入理解预训练与…...

【RustDesk 】中继1:压力测试 Python 版 RustDesk 中继服务器

测试 Python 版 RustDesk 中继服务器 测试我们实现的中继服务器有几种方法,从简单到复杂依次如下: 1. 基本连接测试客户端 创建一个简单的测试客户端来验证中继服务器的基本功能: 2. 用两个测试客户端测试中继功能 要测试完整的中继功能,你需要运行两个客户端实例来模拟…...

MCP 自定义python实现server服务,支持离线调用和远程接口访问形式

参考: https://blog.csdn.net/lingding_cn/article/details/147355620 其他百炼、mcp服务网址支持链接访问 server服务代码: 出行酒店查询 mcp server代码编写参考:https://blog.csdn.net/weixin_42357472/article/details/146503660 api_mcp_server.py import pickle im…...

搭建PCDN大节点,服务器该怎么配

搭建P2P大节点时&#xff0c;服务器要怎么配呢&#xff1f;需要综合考虑硬件性能、网络带宽、存储能力、系统架构以及安全性等多个方面&#xff0c;以确保节点能够高效、稳定地运行。 一、硬件配置 CPU&#xff1a;选择高性能的多核处理器&#xff0c;以满足高并发处理需求。核…...

JavaScript的3D库有哪些?

JavaScript的3D库有哪些&#xff1f; 在3D开发领域&#xff0c;JavaScript提供了多种库和框架&#xff0c;使开发者能够在浏览器中创建丰富的3D体验。以下是一些流行的3D方面的JavaScript库&#xff1a; Three.js&#xff1a;这是最著名的用于创建3D图形的JavaScript库之一。它…...

如何解决matlab/octave画图legend图例颜色一样的问题?

预期目的&#xff1a; 本意想用legend在画图的时候把对应线段的颜色对应起来&#xff0c;实际按照如下代码运行得不到预期的结果。 x [1:10;11:20]y1 x.^2;y2 0.5.*x.^3plot(x,y1,r,x,y2,b);legend(y x^2,y x^3) 代码运行结果如下&#xff1a; 原因 是matlab /octave默…...

[第十五章][15.3.2 shellcode注入攻击]ret2shellcode+[NewStarCTF 公开赛赛道]ret2shellcode

1、[NewStarCTF 公开赛赛道]ret2shellcode IDA 反编译看伪代码&#xff1a; buf mmap((void *)0x233000, 0x1000uLL, 7, 34, -1, 0LL); 这里直接给了 buf 7 的权限&#xff0c;即可读可写可执行&#xff0c;那么 shellcode 肯定写到 buf 里 buf 的映射地址&#xff1a;0x23…...

边缘计算:数字世界的”末梢神经系统”解析-优雅草卓伊凡

边缘计算&#xff1a;数字世界的”末梢神经系统”解析-优雅草卓伊凡 一、边缘计算深度解析 1.1 边缘计算的定义与架构 边缘计算&#xff08;Edge Computing&#xff09;是一种分布式计算范式&#xff0c;它将数据处理能力从传统的集中式云数据中心推向网络边缘&#xff0c;更…...

基于CATIA参数化球体建模的自动化插件开发实践——NX建模之球体命令的参考与移植

引言​​ 在CATIA二次开发领域&#xff0c;Python因其灵活性和丰富的库支持逐渐成为高效工具开发的首选语言。本文将以笔者开发的​​CATIA球体自动化建模工具​​为例&#xff0c;参考NX软件中高效球体创建命令&#xff0c;深度解析基于PySide6 GUI框架与pycatia接口库的集成…...

ActiveMQ 可靠性保障:消息确认与重发机制(一)

引言 在当今分布式系统的架构中&#xff0c;消息中间件扮演着举足轻重的角色&#xff0c;而 ActiveMQ 作为一款广泛使用的开源消息中间件&#xff0c;凭借其对 JMS&#xff08;Java Message Service&#xff09;规范的支持、多种消息传输协议、丰富的消息模型&#xff08;如点对…...

麒麟、UOS系统在线打开word文件并提取修订痕迹

麒麟、UOS系统在线打开word文件并提取修订痕迹 查看本示例演示效果&#xff08;Windows版&#xff09; 查看本示例演示效果&#xff08;国产版&#xff09;本示例关键代码的编写位置&#xff0c;请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码 注意 本文中…...

Vue3笔记摘录

1.Vue3整体知识概览图 2.ref与reactive具体使用区别 2-1 基本类型处理 const count1 ref(0) 使用ref自动转化为数字类型const count2 reactive(0) 参数必须是对象类型 2-2 具体使用过程 // ref 处理对象&#xff08;自动解包&#xff09; const user ref({name: John,a…...

大力探索“AI·Life爱生活”项目峰会暨战略投资签约仪式成功举办

2025年4月26日&#xff0c;杭州西溪雷迪森大酒店内气氛热烈非凡&#xff0c;大力探索&#xff08;杭州&#xff09;科技有限公司主办的“大力探索项目峰会暨战略投资签约仪式”在此隆重开启。这场汇聚了数百位行业精英与企业代表的盛会&#xff0c;不仅是一场智慧的碰撞&#x…...

复刻低成本机械臂 SO-ARM100 材料齐活篇

视频讲解&#xff1a; 复刻低成本机械臂 SO-ARM100 材料齐活篇 打印件基本ok&#xff0c;总共12个&#xff0c;尴尬的是github又更新了so-101&#xff0c;不过看了下还好只是优化了走线和几个结构键&#xff0c;影响不大&#xff0c;大不了后面再重新打印&#xff08;有3d打印机…...

解读 AI绘画工作流ComfyUI Stable Diffusion

ComfyUI 是什么?图像工作流又是什么? 认识ComfyUI 从名词术语来看: ComfyUI是一个基于节点流程的Stable Diffusion操作界面,通过自定义节点、拖拽连线实现精准的工作流定制,以完成更复杂的图像生成工作。 </...

北极星 新美团核销接口对接

美团吃相难看&#xff0c;东哥就应该干掉他 申请官方接口一般来说很难了 现在无非就是几种第三方开放出来的接口 按量收费&#xff0c;但是需要一次性充钱收首期的技术服务费 &#xff0c;然后按年收费就是我们技术自己解决的方式&#xff0c;方便便宜 ,代码齐全&#xff0c…...

理解数据库存储以及查询(集合)

理解数据库存储以及查询&#xff08;集合&#xff09; 基本概念定义 主键集合&#xff1a; 定义&#xff1a;主键集合是由数据库表中的主键组成的一个集合。主键是表中唯一标识每一行记录的属性&#xff08;或属性组合&#xff09;。 特性&#xff1a;主键集合包含表的主键属性…...

(Go Gin)Gin学习笔记(四)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法

1. 数据渲染 1.1 各种数据格式的响应 json、结构体、XML、YAML类似于java的properties、ProtoBuf 1.1.1 返回JSON package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {r : gin.Default()r.POST("/demo", func(res *gi…...

机器视觉橡胶制品检测的应用

橡胶制品在生产过程中易出现划痕、气泡、缺料、毛边、杂质嵌入等多种缺陷&#xff0c;这些缺陷往往微小且随机分布&#xff0c;人工检测不仅耗时&#xff0c;漏检率也居高不下。尤其在汽车密封件、医疗硅胶制品等高端领域&#xff0c;微米级的缺陷都可能导致产品失效&#xff0…...

JavaScript:从JS的执行机制到location对象

一、JS执行机制 &#xff08;1&#xff09;JS是单线程 JavaScript语言的一大特点就是单线程&#xff0c;也就是同一时间只能做一件事。因为JavaScript是为了处理页面中的用户交互&#xff0c;以及制作DOM二诞生的。比如我们对某个DOM元素进行添加和删除操作&#xff0c;这个不…...

Sigmoid函数简介及其Python实现

文章目录 一、Sigmoid 函数简介1. 数学公式2. 关键特性3. 应用场景 二、Python 实现1. 使用 math 库 (适用于单个数值)2. 使用 numpy 库 (适用于数值、列表、数组、矩阵)3. 使用 scipy.special.expit (数值稳定) 三、小结 一、Sigmoid 函数简介 Sigmoid 函数&#xff08;也称为…...

全局事件总线EventBus的用法

全局事件总线 EventBus 在前端开发中是一种用于实现组件间通信的机制&#xff0c;适用于兄弟组件或跨层级组件间的数据传递。 1. 创建全局 EventBus 实例 在前端项目中&#xff0c;先创建一个全局的 EventBus 实例。在 Vue 中&#xff0c;可以通过创建一个新的 Vue 实例来实现…...

嵌入式Linux系统中的线程信号处理:策略与实践

在嵌入式Linux系统的开发中&#xff0c;多线程编程是提升系统性能和响应速度的重要手段。然而&#xff0c;多线程环境下的信号处理却是一个复杂且需要细致处理的问题。信号&#xff0c;作为进程间通信的一种机制&#xff0c;在嵌入式系统中常用于处理外部事件或中断。但在多线程…...