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

JVM速成=。=

JVM跨平台原理

跨平台:一次编译,到处运行
本质:不同操作系统上运行的JVM不一样,只需要把java程序编译成一份字节码文件,JVM执行不同的字节码文件。

在这里插入图片描述
Java是高级语言,提前编译一下(变成字节码文件),再执行起来就会快一点

很多高级语言,都可以编译成字节码格式。字节码可以到不同平台上运行,这也体现的字节码的跨平台效果。在这里插入图片描述

JVM整体结构

在这里插入图片描述

解释器:执行方法区中存储的字节码指令
垃圾回收器:回收垃圾对象
JIT编译器:处理一些热点的字节码指令。【字节码里可能存在一些热点指令,这些热点指令翻译过一次,就把他们缓存起来,下一次再执行热点指令,就去缓存中取。从而提高执行效率】
方法区:类加载子系统把字节码加载到方法区中
:执行过程中产生的对象
Java方法栈:当前线程执行到某个java里的方法,就会放入这里
本地方法栈:当前线程执行native方法,就会放入这里(用Java语言以外的语言编写的方法)
程序计数器:记录下一条指令的地址

类加载子系统

在这里插入图片描述

  1. 加载:把字节码文件,加载到方法区的内存空间中。

  2. 链接:(static int i = 10)

  • 验证:检查字节码文件的格式
  • 准备:先给i变量赋值为0(先赋值0
  • 解析:将符号引用解析为直接引用

符号引用可以理解为类的名字(一般由包名 + 类名确定一个类)
直接引用可以理解为这个类在方法区中对应的地址
符号引用解析为直接引用:类的名字解析为这个类在方法区对应的地址

  1. 初始化:给类里边的static属性赋值(后赋值为10

类加载器的分类

在这里插入图片描述

  1. 引导类加载器(BootStrapClassLoader)(用c++写的)
  2. 自定义类加载器(继承自ExtClassLoader 或 AppClassLoader)

ExtClassLoader 和 AppClassLoader都继承自ClassLoader类
BootStrapClassLoader:加载jre/lib目录下的类
ExtClassLoader:jre/lib/ext目录下的类
AppClassLoader:classpath(自己指定的)类加载的路径
WebAppClassLoader:Tomcat自定义的类加载器

双亲委派

作用:避免类的重复加载,防止核心API被篡改
在这里插入图片描述

当加载一个类的时候,先从应用加载器加载,这个时候应用加载器会在已加载过的库里面查看是否加载过该类,如果没有就往上调,使用父加载器,也就是扩展类加载器来加载。

  1. 先判断当前类是否被加载过
  2. 被加载过,直接返回
  3. 没有被加载过,
    • 查看AppClassLoader对象的parent属性是否为空,
    • 如果不为空,直接用parent属性加载(AppClassLoader对象的parent属性就是ExtClassLoader的对象)
    • 如果为空,则利用BootStrapClassLoader加载
      • BootStrapClassLoader如果加载到,就直接结束
      • 如果加载不到,返回ExtClassLoader,如果还是加载不到,就退回AppClassLoader,由它自己去加载当前类。

为什么Tomcat要自定义类加载器?

为了进行类的隔离,如果tomcat直接使用AppClassLoader类加载器,那么会出现以下情况:

  1. 应用A中有个com.xiaolin.Hello.class
  2. 应用B中也有个com.xiaolin.Hello.class
  3. 虽然都叫Hello.class,但是这两个类的方法、属性可能不一样
  4. 如果AppClassLoader先加载了应用A中的Hello.class文件,那么应用B就不能被加载了,因为这两个类的名字一样
  5. 所以就需要针对应用A、B设置单独的类加载器,也就是WebAppClassLoader,这样两个应用中的Hello.class都会被各自的类加载器加载到,不会产生冲突。

JVM中判断一个类是否被加载到的逻辑:类名 + 对应的类加载器实例

运行时数据区

在这里插入图片描述

方法区、堆区:多个线程共享
Java方法栈、本地方法栈、程序计数器:每个线程都有一个

程序计数器PC

是物理寄存器的抽象实现的,用来记录待执行的下一条指令的地址,是程序控制流的指示器(for、if else…都依赖它完成)。
解释器工作时,就是通过程序计数器获取下一条需要执行新的字节码指令,是JVM规范中没有规定任何OutOfMemoryError情况的区域。

虚拟机栈(Java栈、本地方法栈)

虚拟机栈是线程私有的,一个方法开始执行栈帧入栈,方法执行完后,对应的栈帧就出栈,因此不需要进行垃圾回收。

虚拟机栈存在OutOfMemoryError(内存不够)、StackOverflowError(栈溢出)

  1. 线程太多了,就可能会出现OutOfMemoryError,线程创建时没有足够的空间去创建虚拟机栈了。
  2. 方法调用的层数太多,就可能会出现StackOverflowError
    在这里插入图片描述
    栈帧:
    • 操作数栈:执行字节码指令过程中用来辅助计算的
    • 局部变量表:记录方法里的每个变量的值
      在这里插入图片描述

堆区

在这里插入图片描述
所有的对象和数组都应该存放在堆区,在执行字节码指令的时候,会把创建的对象存入堆区, 对象对应的引用地址放入虚拟机栈的栈帧中。

方法执行完之后,创建的对象不会立马被回收,而是等JVM后台执行GC后,对象才会被回收。

Eden:新对象都会先放入Eden区(除非对象的大小都超过Eden区,那么就放入老年代)
S0:也叫做from区
S1:也叫做to区
S0、S1都是用来存放MinorGC(YGC)后存在的对象
如果一个对象经过15次垃圾回收(YGC)后都没有被回收掉,那么就会被放入老年代里

默认:
新生代 : 老年代 = 1 : 2
Eden : S0区 : S1区 = 8 : 1 : 1

在这里插入图片描述
Yong GC / Minor GC:负责堆新生代进行垃圾回收
Old GC / Major GC:负责堆老年代进行垃圾回收(目前只有CMS垃圾回收器会单独对老年代进行垃圾收集,其他垃圾收集器基本都是整堆回收的时候堆老年代进行垃圾收集)
Full GC:整堆回收,也会对方法区进行垃圾收集

垃圾回收过程

为什么要进行垃圾回收?

垃圾是指在JVM中没有任何指向它的对象,如果不清理这些垃圾,他们就会一直占用内存,而不能给其他对象,最终垃圾对象会越来越多从而出现内存溢出。

如何标记垃圾对象?

  1. 引用计数器:每个对象都保存一个引用计数器属性,用户记录对象被引用的次数。
    • 优点:实现简单,计数为0表示是垃圾对象
    • 缺点:需要额外的空间来存储引用计数,需要额外的时间来维护引用计数,无法处理循环引用的问题
      在这里插入图片描述
  2. 可达性分析法:以GC Root作为起始点,然后一层一层找到所引用的对象,被找到的对象就是存活对象,其他不可达的对象就是垃圾对象。(找到可达对象)
    在这里插入图片描述

GC Root是一组引用,包括:

  • 线程中虚拟机栈 / 本地方法栈中正在执行的方法中的方法参数、局部变量所对应的对象引用
  • 方法区中保存的类的信息中的静态 / 常量属性所对应的对象引用

怎么回收垃圾对象?

  1. 标记 - 清除算法:如果可用内存不够,就会暂停用户线程的执行,然后执行算法进行垃圾回收
    • 标记阶段:从GC Roots开始遍历,找到可达对象,并在对象头中进行标记
    • 清除阶段:堆内存空间进行线性遍历,如果发现对象头中没有记录是可达,就回收他
      在这里插入图片描述

缺点:效率不高,会产生内存碎片
优点:易实现

  1. 复制算法:将内存空间分为两块,每次使用一块,进行垃圾回收时,将可达对象复制到另一块没有使用的内存中,然后再清除当前内存块中的所有对象,后续一直重复上边操作,交换着来。在这里插入图片描述

只遍历一次,如果可达就直接转移。比较适合垃圾对象比较多的场景(复制成本低、例如:新生代)
优点:没有标记和清除阶段,不会出现内存碎片
缺点:

  • 需要更多的内存,始终有一半内存空闲;
  • 对象复制后,对象存放的内存地址发生了变化,需要额外时间修改栈帧中记录的引用地址
  • 可达对象比较多,垃圾对象比较少,复制算法的效率低
  1. 标记 - 整理阶段
    • 标记阶段:标记可达对象
    • 移动阶段:将所有存活的对象移动到内存的一端
    • 整理阶段:清除边界外所有空间
      在这里插入图片描述

总结:
在这里插入图片描述
新生代中的对象存活时间比较短,可以利用复制算法(适合垃圾对象比较多的情况)

老年代中的对象存货时间比较长,可以用标记 - 清除标记 - 整理算法,比如:

  • CMS垃圾收集器采用的就是 标记 - 清除算法
  • Serial Old垃圾收集器采用的就是 标记 - 整理算法

常见的垃圾收集器

在这里插入图片描述

  1. Serial GC(新生代)和 Serial Old GC(老年代):工作线程暂停,只有一个线程进行垃圾回收
  2. Parallel GC(新生代)和 Parallel Old GC(老年代):工作线程暂停,开启多个线程进行垃圾回收
    在这里插入图片描述
  3. CMS GC(老年代):整个收集的过程更长,暂停的时间变短,而且在垃圾收集过程中大部分用户线程也还在执行,所以用户体验更好,但是吞吐量更低(单位时间内执行的用户时间更少了)
    在这里插入图片描述
  • 初始标记:暂停所有工作线程,标记处所有GC Roots能直接可达的对象,标记完后恢复工作线程。(初始标记只找到直接可达对象,不需要找到所有可达对象,只找了一层)
  • 并发标记:垃圾回收线程和用户线程一起工作,垃圾回收线程也会去剩余的可达对象(初始标记中没有找到的可达对象,但是也会存在误差)
  • 重新标记:并发标记阶段可能会产生一些误差,需要进行修正
  • 并发清理:垃圾回收线程和用户线程一起工作,删除垃圾对象(可能新生成的垃圾对象没有被清除掉)
  • 并发重置:重置一下,方便下一次垃圾回收

初始标记、并发标记、重新标记,这三个阶段都是在找垃圾对象,其实最费时的是并发标记阶段,因为这个阶段需要找出大量的垃圾对象,但是在最费时的阶段里,用户线程也在工作。

  1. G1(整堆):
    每一个方块叫做region,堆内存会分为2048个region,还是分成了Eden区、S0区、S1区、老年代,只不过空间是不连续的。
    在这里插入图片描述

Humongous区:专门用来存放大对象(一个对象的大小超过一个region的50%)

在这里插入图片描述

初始标记并发标记最终标记:同CMS
筛选回收:提前设置一个时间t(默认200ms),按照指定这个的时间t来做筛选回收(不一定会回收掉所有的垃圾)

相关文章:

JVM速成=。=

JVM跨平台原理 跨平台:一次编译,到处运行 本质:不同操作系统上运行的JVM不一样,只需要把java程序编译成一份字节码文件,JVM执行不同的字节码文件。 Java是高级语言,提前编译一下(变成字节码文件…...

操作系统中的任务调度算法

在多任务操作系统中,任务调度算法(Task Scheduling Algorithm)是决定CPU资源如何分配给进程或线程的核心机制。优秀的调度算法需要平衡响应时间、吞吐量和公平性,同时适应不同的应用场景。 任务调度的核心目标 CPU利用率最大化&a…...

第七节 文件与流

基本的输入输出(iostream) C标准库提供了一组丰富的输入/输出功能,C的I/O发生在流中,流是字节序列。如果字节流是从设备(键盘、磁盘驱动器、网络连接等)流向内存,叫做输入操作。如果字节流是从…...

回首2024,展望2025

2024年,是个充满挑战与惊喜的年份。在这366个日夜里,我站在编程与博客的交汇点,穿越了无数的风景与挑战,也迎来了自我成长的丰收时刻。作为开发者的第十年,我依然步伐坚定,心中始终带着对知识的渴望与对自我…...

Ubuntu指令学习(个人记录、偶尔更新)

Ubuntu指令学习 0、一点常用指令列表一、Ubuntu下复制与移动,cp/mv二、Ubuntu下echo 与 重定向>,>>三、Ubuntu下chmod,用户权限四、Ubuntu下的tar打包,gzip压缩五、Ubuntu(22.04)下系统语言为中文,切换主目录文件名为英文。六、Ubun…...

【牛客】动态规划专题一:斐波那契数列

文章目录 DP1 斐波那契数列法1&#xff1a;递归法2&#xff1a;动态规划法3&#xff1a;优化空间复杂度 2.分割连接字符串3. 给定一个字符串s和一组单词dict&#xff0c;在s中添加空格将s变成一个句子 DP1 斐波那契数列 法1&#xff1a;递归 // 递归 #include <iostream>…...

HCIA-Access V2.5_13_1_1_VLAN类型

VLAN类型&#xff08;1&#xff09;Standard VLAN VLAN类型&#xff08;1&#xff09;-Smart VLAN Smart可以包含多个上行口&#xff0c;和多个业务虚端口(Service Port)&#xff0c;以太网端口在同一下VLAN中是互通的&#xff0c;但是业务虚端口&#xff0c;在同一个VLAN之间是…...

【动态规划】风扫枯杨,满地堆黄叶 - 9. 完全背包问题

本篇博客给大家带来的是完全背包问题之动态规划解法技巧. &#x1f40e;文章专栏: 动态规划 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺…...

Android ndk兼容 64bit so报错

1、报错logcat如下 2025-01-13 11:34:41.963 4687-4687 DEBUG pid-4687 A #01 pc 00000000000063b8 /system/lib64/liblog.so (__android_log_default_aborter16) (BuildId: 467c2038cdfa767245f9280e657fdb85) 2025…...

极狐GitLab 17.8 正式发布,多项 DevOps 重点功能解读【一】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

java面试题

以下是一些Java面试题: 一、基础概念 Java中的基本数据类型有哪些?它们的默认值是什么? 答案: 基本数据类型有byte(字节型,默认值为0)、short(短整型,默认值为0)、int(整型,默认值为0)、long(长整型,默认值为0L)、float(浮点型,默认值为0.0f)、double(双精…...

C语言蓝桥杯1003: [编程入门]密码破译

要将"China"译成密码&#xff0c;译码规律是&#xff1a;用原来字母后面的第4个字母代替原来的字母&#xff0e; 例如&#xff0c;字母"A"后面第4个字母是"E"&#xff0e;"E"代替"A"。因此&#xff0c;"China"应译…...

react实例与总结(一)

目录 一、简单认识 1.1、特点 1.2、JSX语法规则 1.3、函数组件和类式组件 1.4、类组件三大属性state、props、refs 1.4.1、state 1.4.2、props 1.4.3、refs 1.5、事件处理 1.6、收集表单数据—非受控组件和受控组件 1.7、高阶函数—函数柯里化 1.8、生命周期—新旧…...

科技赋能直播!DeepSeek大模型+智享AI直播第三代plus版本,未来直播将更加智能化!

科技赋能直播&#xff01;DeepSeek大模型智享AI直播第三代plus版本&#xff0c;未来直播将更加智能化&#xff01; 能成事的人&#xff0c;都是懂得整合资源的高手。 要学会“万物不为我所有&#xff0c;万物皆为我所用。”的思维方式。 一个人的成就高低&#xff0c;在于他的…...

几种3D 旋转 的参数化形式

在 3D 空间中&#xff0c;旋转是 3 自由度的&#xff0c;刚体变换是 6 自由度的&#xff08;3自由度旋转3自由度平移&#xff09;。 3x3 的旋转矩阵有 9 个量&#xff0c;表达了 3自由度的旋转。 旋转矩阵是有 自约束的&#xff0c;即一个旋转矩阵是一个 正交矩阵&#xff0c;…...

【kubernetes组件合集】深入解析Kubernetes组件之三:client-go

深入解析Kubernetes组件之三&#xff1a;client-go 目录 深入解析Kubernetes组件之三&#xff1a;client-go 引言 1. client-go简介 2. client-go的功能 2.1 资源操作 2.2 资源监听 2.3 认证和授权 2.4 错误处理和重试 2.5 扩展性和定制化 3. 使用client-go与Kubern…...

强化学习概念入门

1 概述 强化学习&#xff0c;英文名为reinforcement learning&#xff0c;简称RL&#xff0c;是机器学习的一个分支&#xff0c;其想要解决的问题是智能体&#xff08;agent&#xff09;如何在复杂环境&#xff08;environment&#xff09;下最大化其能获得的奖励。 一般来说…...

自动控制视频讲解

本视频几乎包含了所有《自动控制原理》&#xff08;胡寿松&#xff09;所有重点章节。针对于考研都能满足。 视频内容包括但不限于&#xff1a;时域分析、信号流图、结构图绘制、跟轨迹、幅相曲线、稳定裕度、z变换、离散传递函数、数字控制器、稳定判据、相平面法、描述函数法…...

【Mastering Vim 2_01】开篇词:在 AI 时代持续深耕底层技术,做长期主义的坚定捍卫者

【最新版《Mastering Vim》封面&#xff0c;涵盖 Vim 9.0 版特性】 文章目录 1 背景&#xff1a;AI 时代的底层技术觉醒2 Vim&#xff1a;一款被严重低估的文本编辑神器3 聊聊 IT 人士的职业病4 进阶之道&#xff1a;构建完整的知识体系5 从 AI 时代的深耕与精进再谈长期主义 1…...

zsh: command not found: conda

场景描述 在 Linux 服务器上使用 zsh 时&#xff0c;如果出现 zsh: command not found: conda 错误&#xff0c;说明你的系统未正确配置 conda 命令&#xff0c;或者你尚未安装 Anaconda/Miniconda。 解决方案 确保已安装 Anaconda 或 Miniconda conda 是 Anaconda 或 Minico…...

Unity中使用Best MQTT v3插件实现MQTT通信功能,进行模块拆分

概述 本文将详细介绍如何在Unity中使用Best MQTT v3插件实现MQTT通信功能。将通过模块化设计实现配置加载、连接管理、订阅/发布等功能&#xff0c;并提供完整的代码实现。 重连说明&#xff1a;当意外断开连接的时候&#xff0c;会进行重新连接&#xff0c;重连上之后会再次订…...

NO.14十六届蓝桥杯备战|switch语句|break|default|2道练习(C++)

switch语句 除了 if 语句外&#xff0c;C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 if…else 结构&#xff0c;⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。 switch (expression) { case value1: stat…...

探索B-树系列

&#x1f308;前言&#x1f308; 本文将讲解B树系列&#xff0c;包含 B-树&#xff0c;B树&#xff0c;B*树&#xff0c;其中主要讲解B树底层原理&#xff0c;为什么用B树作为外查询的数据结构&#xff0c;以及B-树插入操作并用代码实现&#xff1b;介绍B树、B*树。 &#x1f4…...

【SpringBoot实现全局API限频】 最佳实践

在 Spring Boot 中实现全局 API 限频&#xff08;Rate Limiting&#xff09;可以通过多种方式实现&#xff0c;这里推荐一个结合 拦截器 Redis 的分布式解决方案&#xff0c;适用于生产环境且具备良好的扩展性。 方案设计思路 核心目标&#xff1a;基于客户端标识&#xff08…...

esxi添加内存条因为资源不足虚拟机无法开机——避坑

exsi8.0我加了6根内存条&#xff0c;然后将里面的ubuntu的内存增加 haTask-2-vim.VirtualMachine.powerOn-919 描述 打开该虚拟机电源 虚拟机 ub22 状况 失败 - 模块“MonitorLoop”打开电源失败。 错误 模块“MonitorLoop”打开电源失败。无法将交换文件 /vmfs/volumes…...

实验8 配置标准访问控制列表IPv4 ACL

实验8 配置标准访问控制列表IPv4 ACL 一&#xff0e;实验目的 1、掌握IPv4 ACL工作方式和工作过程。 2、掌握定义编号和命名的标准 IPv4 ACL 的方法。 3、掌握接口和VTY下应用标准IPv4 ACL的方法。 二&#xff0e;实验内容 配置IPv4 ACL的实验拓扑如下图所示。 图1 实验拓扑…...

5.7.2 进度管理

文章目录 进度管理Gantt图PERT图 进度管理 进度安排&#xff1a;通过将项目分解成多个活动&#xff0c;分析活动间的依赖关系&#xff0c;估算工作量&#xff0c;分配资源&#xff0c;制定活动时序。 Gantt图 Gantt图横坐标表示时间&#xff0c;纵坐标表示不同任务。使用一条条…...

Android新版高斯模糊(毛玻璃)官方实现,Kotlin

Android新版高斯模糊(毛玻璃)官方实现&#xff0c;Kotlin 从Android 12开始&#xff0c;Android官方API支持高斯模糊(毛玻璃)效果。关键是通过RenderEffect实现。 https://developer.android.com/reference/android/graphics/RenderEffecthttps://developer.android.com/refer…...

b站——《【强化学习】一小时完全入门》学习笔记及代码(1-3 多臂老虎机)

问题陈述 我们有两个多臂老虎机&#xff08;Multi-Armed Bandit&#xff09;&#xff0c;分别称为左边的老虎机和右边的老虎机。每个老虎机的奖励服从不同的正态分布&#xff1a; 左边的老虎机&#xff1a;奖励服从均值为 500&#xff0c;标准差为 50 的正态分布&#xff0c;即…...

使用开源项目xxl-cache构建多级缓存

xxl-cache简介 官网地址&#xff1a;https://www.xuxueli.com/xxl-cache/ 概述 XXL-CACHE 是一个 多级缓存框架&#xff0c;高效组合本地缓存和分布式缓存(RedisCaffeine)&#xff0c;支持“多级缓存、一致性保障、TTL、Category隔离、防穿透”等能力&#xff1b;拥有“高性…...

分层解耦-三层架构

controller: 控制层&#xff0c;接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据。 service: 业务逻辑层&#xff0c;处理具体的业务逻辑。 dao: 数据访问层(Data Access Object)(持久层)&#xff0c;负责数据访问操作&#xff0c;包括数据的增、删、改…...

简化的动态稀疏视觉Transformer的PyTorch代码

存一串代码&#xff08;简化的动态稀疏视觉Transformer的PyTorch代码&#xff09; import torch import torch.nn as nn import torch.nn.functional as F class DynamicSparseAttention(nn.Module): def __init__(self, dim, num_heads8, dropout0.1): super().__init__()…...

掌握 PHP 单例模式:构建更高效的应用

在 PHP 应用开发中&#xff0c;资源的高效管理至关重要。单例模式是一种能够帮助我们实现这一目标的设计模式。本文将深入探讨单例模式的概念、工作原理以及在 PHP 项目中何时应该&#xff08;或不应该&#xff09;使用它。 什么是单例模式&#xff1f; 单例模式是一种设计模…...

今日AI和商界事件(2025-02-11)

今日AI大事件主要包括以下几个方面&#xff1a; 一、行业竞购与合作变动 马斯克组团竞购OpenAI 据《华尔街日报》报道&#xff0c;马斯克率投资者财团出价974亿美元竞购OpenAI&#xff0c;欲使其回归开源公益使命。xAI支持此次竞购&#xff0c;若成功&#xff0c;xAI或与OpenA…...

ArcGIS Pro批量创建离线服务sd包

背景&#xff1a; 主要针对一个工程内有多个地图框项&#xff1a; 处理方法&#xff1a;通过Python脚本处理打包。 运行环境 在Pro的Python环境中去运行编写的Python脚本。 Python 脚本参考 import arcpy import os# Set output file names outdir r"d:\data\out&…...

R语言 文本分析 天龙八部

起因, 目的: 前面有人对 “倚天屠龙记” 进行分析,我这里只是进行模仿而已。 完整的文件, 已经绑定了,反正读者可以找一下。 案例背景 小说《天龙八部》是金庸先生所著的武侠小说,也是“射雕三部曲”的前传。全书共50章,字数超过一百万字。故事发生在北宋末年,以大理…...

【AI论文】Visual Instruction Tuning

文献核心目标 作者的目标是通过多模态指令微调(Visual Instruction Tuning)来训练一个通用的视觉助手,使其能够理解用户的语言指令并与视觉内容结合完成任务。例如,用户可以上传图片并提出问题,模型根据图片内容作出回答。 1. 引言 什么是多模态交互?为什么重要? 人类…...

产品详情页中 品牌官网详情 对应后端的字段是 detail

文章目录 1、在这个Vue代码中&#xff0c;品牌官网详情 对应后端的字段是 detail2、品牌官网详情 功能相关的代码片段3、export const productSave (data: any) >4、ProductController5、ProductDto 类6、ProductApiService 1、在这个Vue代码中&#xff0c;品牌官网详情 对…...

vue知识点2

1.methods和mounted的区别 methods是定义方法&#xff0c;不涉及到调用 mounted涉及到操作 所以methods后面是&#xff1a;&#xff0c;mounted后面是&#xff08;&#xff09; 2.介绍一下emit的用法 如果子控件要调用父页面的方法&#xff0c;在父页面的子控件引用处&…...

使用 mkcert 本地部署启动了 TLS/SSL 加密通讯的 MongoDB 副本集和分片集群

MongoDB 是支持客户端与 MongoDB 服务器之间启用 TLS/SSL 进行加密通讯的, 对于 MongoDB 副本集和分片集群内部的通讯, 也可以开启 TLS/SSL 认证. 本文会使用 mkcert 创建 TLS/SSL 证书, 基于创建的证书, 介绍 MongoDB 副本集、分片集群中启动 TLS/SSL 通讯的方法. 我们将会在…...

荣耀手机Magic3系列、Magic4系列、Magic5系列、Magic6系列、Magic7系列详情对比以及最新二手价格预测

目录 荣耀Magic系列手机详细对比 最新二手价格预测 性价比分析 总结 以下是荣耀Magic系列手机的详细对比以及最新二手价格预测&#xff1a; 荣耀Magic系列手机详细对比 特性荣耀Magic3系列荣耀Magic4系列荣耀Magic5系列荣耀Magic6系列荣耀Magic7系列处理器骁龙888&#x…...

利用HTML和css技术编写学校官网页面

目录 一&#xff0c;图例展示 二&#xff0c;代码说明 1&#xff0c;html部分&#xff1a; 【第一张图片】 【第二张图片】 【第三张图片】 2&#xff0c;css部分&#xff1a; 【第一张图片】 【第二张图片】 【第三张图片】 三&#xff0c;程序代码 一&#xff0c;…...

易语言Easy Programming Language

E易语言 EF 易语言.飞场 EPL EF 我心易飞扬! Elogo 易乐谷我的程序我来写&#xff01; Easy Programming Language Elogo 未来的小程序员&#xff01;易语言运行时环境检验报告 自有编辑器、自带数据库、本土化支持 易语言系统全部自行设计开发。自有编译器。所编译目的程序运…...

支付宝安全发全套解决方案

产品价值 ● 通过支付宝的资金能力&#xff0c;让服务商机构通过信息流驱动资金流&#xff0c;在不碰触客户企业资金的同时&#xff0c;为客户企业完成转账。账目清晰&#xff0c;无合规和资质风险。 ● 为服务商提供全链路的资金流动明细信息&#xff0c;服务商可以将这些信息…...

如何通过腾讯 ima.copilot 训练自己的知识库

如何通过腾讯 ima.copilot 训练自己的知识库 在信息爆炸的时代&#xff0c;拥有一个专属的知识库&#xff0c;能让我们在学习、工作中快速获取所需信息&#xff0c;极大地提升效率。腾讯推出的 AI 智能工作台 ima.copilot&#xff0c;为我们打造个人知识库提供了便利。今天&am…...

本地部署DeepSeek-R1(Mac版)

本地部署DeepSeek-R1&#xff08;Mac版&#xff09; 前言&#xff1a;过年这段时间&#xff0c;DeepSeek火遍全球&#xff0c;但遭受黑客攻击&#xff0c;10次对话基本9次都是服务器繁忙&#xff0c;请稍后重试。那么&#xff0c;本地部署整起来 总体来说&#xff0c;本地部署…...

uniapp 编译生成鸿蒙正式app步骤

1&#xff0c;在最新版本DevEco-Studio工具新建一个空项目并生成p12和csr文件&#xff08;构建-生成私钥和证书请求文件&#xff09; 2&#xff0c;华为开发者平台 根据上面生成的csr文件新增cer和p7b文件&#xff0c;分发布和测试 3&#xff0c;在最新版本DevEco-Studio工具 文…...

C++STL与内存管理总结

1&#xff1a;内存管理方面&#xff1a;涉及分配&#xff08;请求&#xff09;与释放&#xff0c;主要分为 静态内存&#xff0c;自动存储期&#xff08;栈内存&#xff09;、动态内存分配&#xff08;堆内存&#xff09;以及智 能指针系列&#xff0c;之所以重要&#xff0c;因…...

【文本处理】如何在批量WORD和txt文本提取手机号码,固话号码,提取邮箱,删除中文,删除英文,提取车牌号等等一些文本提取固定格式的操作,基于WPF的解决方案

企业的应用场景 数据清洗&#xff1a;在进行数据导入或分析之前&#xff0c;往往需要对大量文本数据进行预处理&#xff0c;比如去除文本中的无关字符&#xff08;中文、英文&#xff09;&#xff0c;只保留需要的联系信息&#xff08;手机号码、固话号码、邮箱&#xff09;。…...

算法跟练第十弹——栈与队列

文章目录 part01 逆波兰表达式求值part02 滑动窗口最大值part03 前 K 个高频元素归纳&#xff1a;将字符串转转换成整数&#xff1a;LinkedListMap遍历优先级队列的比较器 跟着代码随想录刷题的第十天。 代码随想录链接&#xff1a;代码随想录 part01 逆波兰表达式求值 题目链接…...