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

[java基础-JVM篇]1_JVM自动内存管理

JVM内存管理涉及但不限于类加载、对象分配、垃圾回收等,本篇主要记录运行时数据区域与对象相关内容。
内容主要来源《深入理解Java虚拟机:JVM高级特性与最佳实践》与官方文档,理解与表述错漏之处恳请各位大佬指正。

目录

运行时数据区域

栈帧

栈异常

栈内存大小配置

配置参数

配置参数

字符串常量池(注意,字符串常量池自jdk8起在堆)

静态变量特别说明

方法区

运行时常量池

常量说明

常量分析实例

配置参数

程序计数器

直接内存

总结

对象

对象创建

内存分配(更新操作)的原子性原理

对象访问

内存泄漏分析(生产)

大对象

大对象的影响

解决


运行时数据区域

内存管理基于:内存动态分配与垃圾收集技术。
编译期间做的事情:给变量分配空间

一般讲的都是虚拟机栈,更多情况下指虚拟机栈中局部变量表部分。本地方法栈执行的都是本地的Native方法。

栈帧

每个线程都有自己的虚拟机栈,而方法作为执行的基本单元,在 每个方法执行的时候都会创建一个栈帧Stack Frame用于存储局部变量表、操作数栈、动态连接、方法出口信息等。
其中 局部变量表存放了编译期可知的 基本数据类型、对象引用
(了解就行)栈帧中存储的具体信息包括:
  1. 方法参数:包括传递给方法的实际参数以及方法的隐式参数,如 this 指针。
  2. 局部变量:定义在方法中的变量,包括基本类型和对象引用。
  3. 操作数栈:用于存储方法执行过程中产生的临时数值,如算术运算的结果、方法调用的返回值等。
  4. 方法返回地址:指向方法调用者应该返回的下一条指令的地址。
  5. 异常处理器:存储方法对应的异常处理器的信息,用于处理方法执行中可能发生的异常。
  6. 其它:包括方法的访问标志、常量池引用等。

栈异常

StackOverflowError
栈溢出
OutOfMemoryError
对于栈的提示是 java.lang.OutOfMemoryError: unable to create new native thread。此时无法创建新线程

栈内存大小配置

HotSpot虚拟机的栈容量不可动态拓展,在配置JVM时通过-参数Xss=256k配置。
JVM的总内存大小会影响线程栈内存的可用量。如果堆内存或者其他内存区域占用过多,剩余内存可能不足以支持大量线程。

配置参数

-Xss栈大小设置,在64位Linux系统上,栈大小默认1M

是垃圾回收管理器管理的区域,储物理上可以不连续,逻辑上是连续的内存空间。因垃圾收集器基于分代收集理论设计,所以将 分代划分(方便回收和分配内存)。
“新生代、老年代、Eden空间、From Survivor空间、To Survivor空间”。
堆:1:2=新生代:老年代, 其中新生代8:1:1 eden:from:to
存放几乎所有对象实例与数组(基本类型数组与对象类型数组)、字符串常量、静态变量。

配置参数

-Xms堆内存起始大小 -Xmx最大堆内存

字符串常量池(注意,字符串常量池自jdk8起在堆)

专门用于存储字符串字面量的一个特殊区域。它的设计目的是通过缓存机制避免重复创建相同的字符串对象,从而节省内存并提高性能。
值得注意的是,HotSpotJVM自JDK8将字符串常量池实现为堆中的一部分,从方法区移出,以优化内存管理并减少方法区的压力。
资料来源:
JEP 122: Remove the Permanent Generation
Chapter 5. Loading, Linking, and Initializing

静态变量特别说明

有资料说在方法区、有资料说在堆,给我整不会了。直接看官网
JEP 122: Remove the Permanent Generation
结论:静态变量引用或基本类型值静态变量在元空间,对象实例(包括静态对象的值)在堆中

方法区

方法区也是线程共享的内存区域,主要用于存储已被虚拟机加载的 类型信息、静态变量对象的引用与基本类型静态变量、即时编译器编译后的代码缓存等数据。是基于本地内存实现的,方法区内存回收主要目标是常量池的回收和对类型的卸载

运行时常量池

运行时常量池是方法区的一部分,是常量池表(Class文件常量池)运行时的表示形式,其中常量池表存储的是 符号引用(Symbolic References)和 字面量(Literal Values),而 不是实际的数据存储位置。它的核心作用是:
  • 存储类、方法、字段的全限定名描述
  • 保存方法描述符(Descriptor)
  • 存储字符串常量字面量
  • 记录数值型常量的原始值

常量说明

在代码中,使用final声明的常量会放到方法区运行时常量池
方法内变量=临时变量,存储在虚拟机栈中

常量分析实例

配置参数

-XX:MetaspaceSize:初始触发 GC 的阈值,默认约 21MB。
-XX:MaxMetaspaceSize:最大大小,默认无上限(受本地内存限制)。
-XX:MinMetaspaceFreeRatio 和 -XX:MaxMetaspaceFreeRatio:控制 GC 后空闲比例,默认 40% 和 70%。

程序计数器

作为游标指示字节码命令执行,每个线程的程序计数器是独立的。
计数器的值是正在执行的虚拟机字节码指令的地址。

直接内存

直接内存是指Java应用程序在JVM堆之外直接向操作系统申请并管理的一段内存区域。堆外内存的一种具体实现形式。
使用Native函数分配的堆外内存,用与NIO等操作。
设置虚拟机内存时,需要小于物理内存(给直接内存留空间)。因为运行时JVM内存=设置的内存+直接内存,实际占用的比设置的要大。防止动态扩展时出现OutOfMemoryError异常。
堆外内存通过DirectByteBuffer进行操作,避免在Java堆中和Native堆中来回复制数据。
需要注意的就是物理内存应该>jvm内存

总结

对象

对象可以划分为:对象头(Header)、实例数据(Instance)、对齐填充(Padding).
对象头包括两类信息。一部分包括对象自行运行时数据:哈 希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部 分数据的长度在32位和64位的虚拟机(未开启压缩指针)中分别为32个比特和64个比特,官方称它 为“Mark Word”。
另一部分是类型指针,用于JVM确认对象所属类实例。

对象创建

JVM执行new指令时,会区常量池定位这个类的符号引用,检查这个符号引用代表的类是否已经被加载、解析、初始化过,没有则进行类加载。
为新对象分配内存的方式大致分为两种:
  • 堆为对象分配内存的方式
    • “指针碰撞”——假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一 边,空闲的内存被放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那 个指针向空闲空间方向挪动一段与对象大小相等的距离。
    • 空闲列表——假设Java堆中的内存并不是规整的,已被使用的内存和空闲的内存相互交错在一起,那 就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分 配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录。
JVM选择哪种依据其垃圾收集器决定。
内存分配(更新操作)的原子性原理
划分空间时,在并发情况下可能是不安全的。例如对象A与对象B同时使用指针分配内存。
JVM默认采用CAS(Compare And Swap)搭配失败重试的方式保证操作的原子性。

对象访问

HotSpot主要使用直接指针访问对象。

内存泄漏分析(生产)

JVM配置参数-XX:+HeapDumpOnOutOfMemoryError 可以让虚拟机在出现内存溢出异常的时候Dump当前内存堆转储快照。
也可以使用JMap命令导出Dump。
然后使用mat工具进行分析,如下:

大对象

占用较大连续内存空间的对象,一般是大数组、包含大量字段或嵌套对象的对象(复杂对象结构)、大型字符串对象。
将大对象直接分配到老年代可以避免“占用新生代内存导致提前GC带来的性能损耗”、“大对象在垃圾回收时的复制带来的性能损耗”,是一种JVM优化策略。
值得注意的是,JDK8默认收集器是Parallel Scavenge与Parallel Old,大对象不会直接放到老年代。会照常进行回收流程。
JVM在配置使用Serial和parNew两款收集器时,可以通过参数-XX:PretenureSizeThreshold来设定一个阈值,如果对象的大小超过阈值会被视为“大对象”,并被直接分配到老年代。
对于G1收集器,其引入了“HUmongous对象”的概念,任何超过Region大小一半的对象都会被视为巨型对象直接分配到老年代。

大对象的影响

  • 内存分配:大对象可能需要分配较大的连续内存块,这可能导致堆内存碎片化问题。
  • 垃圾回收:某些垃圾回收器(如 G1 GC)对大对象有特殊处理机制,可能会直接分配到老年代(而不是新生代)。

解决

在日常编码中要尽量避免大对象,不可避免时尽量复用,如使用对象池。
对于大数组对象,进行分割、将其分割为小对象进行操作。
或者使用手动释放的堆外内存。
 

try {

        ByteBuffer buffer = ByteBuffer.allocateDirect(1024 * 1024);

        // 使用 buffer

} finally {

        if (buffer != null && buffer.isDirect()) {

                ((sun.misc.Cleaner) sun.misc.Unsafe.getUnsafe().invokeCleaner(buffer)).clean();

        }

}

相关文章:

[java基础-JVM篇]1_JVM自动内存管理

JVM内存管理涉及但不限于类加载、对象分配、垃圾回收等,本篇主要记录运行时数据区域与对象相关内容。 内容主要来源《深入理解Java虚拟机:JVM高级特性与最佳实践》与官方文档,理解与表述错漏之处恳请各位大佬指正。 目录 运行时数据区域 栈 栈…...

python-leetcode 42.验证二叉搜索树

题目: 给定二叉树的根节点root,判断是否是一个有效二叉搜索树 有效二叉搜索树: 1.节点的左子树只包含小于当前节点的树 2.节点的右子树只包含大于当前节点的树 3.所有左子树和右子树自身必须也是二叉搜索树 方法一:递归 如果该二叉树的…...

Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果

目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 (1)提取较亮区域 - pass1 (2)高斯模糊 - pass2&3 (3&#xff…...

【Bluedroid】AVRCP 连接源码分析(三)

接着上一篇【Bluedroid】AVRCP 连接源码分析(一)-CSDN博客,继续AVRCP连接的源码分析。 AVRC_OpenBrowse /packages/modules/Bluetooth/system/stack/avrc/avrc_api.cc /******************************************************************************** Function …...

图数据库Neo4j面试内容整理-约束(Constraint)

约束(Constraint) 是数据库中用于确保数据一致性和完整性的一种机制。它限制了数据的某些方面,确保特定条件得到满足。在 Neo4j 中,约束主要用于确保图数据的一致性,防止插入不符合规则的数据。约束通常与索引一起使用,但它们的功能和目的有所不同。 1. Neo4j 中的约束类…...

QUdpSocket的readyRead信号只触发一次

问题 QUdpSocket的readyRead信号只触发一次。 原因 on_readyRead槽函数里必须读出现有数据后&#xff0c;才能触发新的事件。 解决办法 在on_readyRead槽函数里取出数据。 void MainWindow::on_readyRead() {qDebug() << "on_readyRead in";while (m_udp…...

使用Windbg调试目标进程排查C++软件异常的一般步骤与要点分享

目录 1、概述 2、将Windbg附加到已经启动起来的目标进程上&#xff0c;或者用Windbg启动目标程序 2.1、将Windbg附加到已经启动起来的目标进程上 2.2、用Windbg启动目标程序 2.3、Windbg关联到目标进程上会中断下来&#xff0c;输入g命令将该中断跳过去 3、分析实例说明 …...

深度解析:大模型在多显卡服务器下的通信机制与分布式训练——以DeepSeek、Ollama和vLLM为例

一、引言&#xff1a;大模型与多显卡的必然结合 随着大模型参数规模突破千亿级&#xff08;如GPT-4、DeepSeek&#xff09;&#xff0c;单显卡的显存容量与算力已无法满足需求。多显卡并行计算成为训练与推理的核心技术&#xff0c;其核心挑战在于高效通信与负载均衡。本文以国…...

爬虫基础入门之爬取豆瓣电影Top250-Re正则的使用

网址:豆瓣电影 Top 250 本案例所需要的模块 requests (用于发送HTTP请求)re (用于字符串匹配和操作) 确定需要爬取的数据 &#xff1a; 电影的名称电影的年份电影的评分电影评论人数 一. 发送请求 模拟浏览器向服务器发送请求 准备工作 -分析页面: F12 or 右击点击检查 查看…...

【R安装包报错】在conda环境下用R语言命令安装R包报错

报错如下&#xff1a; gnu/include/c/11.2.0/ctime:80:11: error: ‘timespec_get’ has not been declared in ‘::’ 80 | using ::timespec_get; | ^~~~~~~~~~~~ 修改 报错原因&#xff1a;如果使用的是conda安装的g&#xff0c;可能与系统库不兼容。尝试 切换到系统默认编…...

基于STM32单片机设计的宠物喂食监控系统

1. 项目开发背景 随着宠物数量的增加&#xff0c;尤其是人们对宠物的养护需求日益增多&#xff0c;传统的人工喂养和管理方式难以满足现代养宠生活的需求。人们越来越希望通过智能化手段提高宠物养护的质量和效率&#xff0c;特别是对于宠物喂食、饮水、温湿度控制等方面的智能…...

Minio分布式多节点多驱动器集群部署

Minio分布式多节点多驱动器集群部署 Minio分布式多节点多驱动器集群部署节点规划先决条件开放防火墙端口设置主机名更新域名映射文件时间同步存储要求内存要求 增加虚拟机磁盘(所有机器都要执行)部署分布式 MinIO测试上传与预览测试高可用MinIO 配置限制模拟单节点磁盘故障模拟…...

Web前端开发——HTML基础

本系列博客声明&#xff0c;根据本人所学书籍和网上的一些资料共同磨合&#xff0c;写下web前端系列的博客 HTML基础 一、HTML基本概述[^1]二、HTML大体认知1.HTML基本结构2.HTML 语法格式 三、THML常用标记[^2]1.文本标记&#xff08;1&#xff09;标题&#xff08;2&#xf…...

《计算机视觉》——图像拼接

图像拼接 图像拼接是将多幅有重叠区域的图像合并成一幅全景或更大视角图像的技术&#xff0c;以下为你详细介绍&#xff1a; 原理&#xff1a;图像拼接的核心原理是基于图像之间的特征匹配。首先&#xff0c;从每幅图像中提取独特的特征点&#xff0c;如角点、边缘点等&#x…...

zookeeper从入门到精通

一、入门基础 1.1 什么是 ZooKeeper ZooKeeper 是一个开源的分布式协调服务&#xff0c;由雅虎创建&#xff0c;后成为 Apache 的顶级项目。它为分布式应用提供了高效、可靠的协调服务&#xff0c;例如统一命名服务、配置管理、分布式锁、集群管理等。ZooKeeper 的数据模型类…...

2.2 添加注释

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 注释是为了方便理解代码含义而添加的简短的解释性说明。在编译时&#xff0c;编辑器不会将注释加入最终生成的文件中&#xff0c;不…...

具有快慢思考的语言调节机器人操作

24年1月来自华东师范大学、美的集团和上海大学的论文“Language-Conditioned Robotic Manipulation with Fast and Slow Thinking”。 语言调节机器人操作&#xff0c;旨在将自然语言指令转化为可执行动作&#xff0c;从简单的“拾取和放置”到需要意图识别和视觉推理的任务。…...

美颜相机1.0

项目开发步骤 1 界面开发 美颜相机界面构成&#xff1a; 标题 尺寸 关闭方式 位置 可视化 2 创建主函数调用界面方法 3 添加两个面板 一个是按钮面板一个是图片面板 用JPanel 4 添加按钮到按钮面吧【注意&#xff1a;此时要用初始化按钮面板的方法initBtnPanel 并且将按钮添…...

Css3重点知识讲解

选择器 优先级&#xff1a; id 选择器 > 类选择器 > 标签选择器 类选择器&#xff1a; .myClass {color: blue; }id 选择器&#xff08;全局唯一&#xff09;&#xff1a; #myId {color: green; }标签选择器&#xff1a; p {color: red; }层次选择器&#xff1a; /…...

[Web 安全] Web 安全攻防 - 学习手册

关联专栏&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;Web 安全攻防 —— 信息收集篇 Web 信息收集 — 手动收集域名信息 Web 信息收集 — 手动收集 IP 信息 Web 信息收集 — 端口服务信息收集 Web 信息收集 — 自动化信息收集 — ShuiZe 水泽 We…...

nextjs的记录一些小东西

1. 格式化时间&#xff1a;使用date-fns库 npm install date-fns 在组建中创建date.js import { parseISO, format } from date-fnsexport default function Date({ dateString }) {const date parseISO(dateString)return <time dateTime{dateString}>{format(date,…...

故障诊断 | PID搜索算法优化CatBoost故障诊断(MatlabPython)

目录 效果一览文章概述故障诊断 | PID搜索算法优化CatBoost故障诊断(Matlab&Python)PID搜索算法优化CatBoost故障诊断PID搜索算法优化CatBoost故障诊断一、引言1.1、研究背景与意义1.2、研究现状1.3、研究目的与内容二、CatBoost算法概述2.1、CatBoost算法原理2.2、CatBo…...

探索关键领域的AI工具:机器学习、深度学习、计算机视觉与自然语言处理

引言 在人工智能(AI)迅猛发展的今天&#xff0c;机器学习(ML)、深度学习(DL)、计算机视觉(CV)和自然语言处理(NLP)已经成为解决复杂问题的关键技术。无论是自动驾驶车辆的视觉识别&#xff0c;还是智能助手的对话理解&#xff0c;这些技术都在改变着世界。本文将介绍在各个领域…...

使用 DeepSeek 生成流程图、甘特图与思维导图:结合 Typora 和 XMind 的高效工作流

在现代工作与学习中&#xff0c;可视化工具如流程图、甘特图和思维导图能够极大地提升信息整理与表达的效率。本文将详细介绍如何使用 DeepSeek 生成 Mermaid 文本&#xff0c;结合 Typora 快速生成流程图和甘特图&#xff0c;并通过 Markdown 格式生成思维导图&#xff0c;最终…...

11、集合框架

一、简介 Java集合框架位于java.util包中 Collection是Set和List的父类&#xff0c;Collections是工具类&#xff0c;提供了对集合进行排序、遍历等多种算法的实现。 ArrayList: 有序(放进去顺序和拿出来顺序一致)&#xff0c;可重复 HashSet: 无序(放进去顺序和拿出来顺序不…...

从入门到精通Rust:资源库整理

今天给大家分享一些优质的Rust语言学习资源&#xff0c;适合不同水平的学习者。前三个官方资源是我Rust语言的启蒙老师&#xff0c;非常平易近人。 官方资源 The Rust Programming Language (The Book) 链接: https://doc.rust-lang.org/book/ 简介: 官方权威指南&#xff0c…...

Spring Boot 项目启动命令大全:参数详解与高阶用法

Spring Boot 项目启动命令大全&#xff1a;参数详解与高阶用法 一、基础启动命令 默认启动命令 java -jar xxx.jar适用场景&#xff1a;开发环境快速启动&#xff0c;使用默认配置&#xff08;端口 8080&#xff0c;内存由 JVM 自动分配&#xff09;。 指定 JVM 内存参数 java…...

c++day4

作业 #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory>using namespace std; class S{ private:int a;int b; public:S(i…...

应对LLM应用中的AI幻觉,如何通过Token对数概率预测LLM的可靠性

应对LLM应用中的AI幻觉 如何通过Token对数概率预测LLM的可靠性 内容&#xff1a; 1. 相关机器学习&#xff08;ML&#xff09;概念回顾&#xff08;精准度/召回率&#xff0c;LLM直觉&#xff09; 2. 使用序列对数概率度量作为LLM信心 3. 通过案例研究结果过滤低质量LLM输出…...

Openwrt路由器操作系统

一、什么是 OpenWrt&#xff1f; OpenWrt 是一个基于 Linux 的开源操作系统&#xff0c;主要设计用于嵌入式设备&#xff0c;尤其是路由器。与其说是传统的路由器固件&#xff0c;不如说它是一个路由器操作系统。 传统的路由器固件通常由路由器厂商开发&#xff0c;功能相对固…...

基于SpringBoot的“流浪动物救助系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“流浪动物救助系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统…...

Ansible 学习笔记

这里写自定义目录标题 基本架构文件结构安装查看版本 Ansible 配置相关文件主机清单写法 基本架构 Ansible 是基于Python实现的&#xff0c;默认使用22端口&#xff0c; 文件结构 安装 查看用什么语言写的用一下命令 查看版本 Ansible 配置相关文件 主机清单写法...

(六)趣学设计模式 之 代理模式!

目录 一、啥是代理模式&#xff1f;二、为什么要用代理模式&#xff1f;三、代理模式的实现方式1. 静态代理2. JDK动态代理3. CGLIB动态代理 四、三种代理的对比五、代理模式的优缺点六、代理模式的应用场景七、总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&a…...

【CSS】HTML元素布局基础总结

HTML默认布局和元素显示 CSS 元素显示 { HTML 默认布局&#xff1a; 流式布局 { 从左到右&#xff0c;从上到下 随页面宽度变化动态排列元素 文档流&#xff1a;整个 H T M L 文档的流式布局 HTML 元素分为 { 块级元素 &#xff1a;默认占满一行 行内元素 &#xff1a;在行内最…...

【JavaScript】什么是JavaScript?以及常见的概念

作为 JavaScript 初学者&#xff0c;想要更好地理解这门语言&#xff0c;需要从核心概念、实践练习和项目实战三个方面入手。下面是详细的学习路线和方法&#xff0c;帮助你系统性地掌握 JavaScript。 一、理解 JavaScript 的核心概念 JavaScript 是一门动态、弱类型的编程语言…...

为什么要将PDF转换为CSV?CSV是Excel吗?

在企业和数据管理的日常工作中&#xff0c;PDF文件和CSV文件承担着各自的任务。PDF通常用于传输和展示静态的文档&#xff0c;而CSV因其简洁、易操作的特性&#xff0c;广泛应用于数据存储和交换。如果需要从PDF中提取、分析或处理数据&#xff0c;转换为CSV格式可能是一个高效…...

P1038 [NOIP 2003 提高组] 神经网络

题目描述 在兰兰的模型中&#xff0c;神经网络就是一张有向图&#xff0c;图中的节点称为神经元&#xff0c;而且两个神经元之间至多有一条边相连&#xff0c;下图是一个神经元的例子&#xff1a; 神经元&#xff08;编号为 i&#xff09; 图中&#xff0c;X1​∼X3​ 是信息…...

TypeScript 类型断言的适用场景及代码示例

类型断言的适用场景及代码示例 适用场景 类型断言就像是你很确定某个东西是什么&#xff0c;然后直接告诉 TypeScript 编译器“相信我&#xff0c;它就是这个类型”。以下是几种常见的适用场景&#xff1a; 从 any 类型恢复具体类型&#xff1a;当你使用 any 类型时&#xf…...

Docker 容器

Docker 是一种开源的容器化平台&#xff0c;可以让开发人员将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后部署到任何支持 Docker 的环境中。Docker 的基本概念包括以下几点&#xff1a; 1. **容器(Container)**&#xff1a;容器是一个独立、轻量级的运行环境…...

Spark(3)vi的基本使用

一.打开与创建文件 二.三种模式 三. 光标操作 四.复制粘贴 一.打开与创建文件 它是linux的内置命令&#xff0c;所以还是以命令的方式来运行。 命令的格式是&#xff1a;Vi /路径/文件名。要注意如下两种情况&#xff1a; 1.如果这个文件不存在&#xff0c;此时就是新建文…...

element-ui的组件使用

1. 安装 Element UI&#xff08;在文件夹最上面输入cmd进入dos窗口&#xff0c;然后输入安装指令 npm install element-ui --save&#xff09; 2.在main.js文件全局引入(main.js文件负责 全局注册 )&#xff0c;在该文件注册的所有组件在其他文件都能直接调用&#xff0c;一般…...

Starlink卫星动力学系统仿真建模第九讲-滑模(SMC)控制算法原理简介及卫星控制应用

滑模控制&#xff08;Sliding Mode Control&#xff09;算法详解 一、基本原理 滑模控制&#xff08;Sliding Mode Control, SMC&#xff09;是一种变结构控制方法&#xff0c;通过设计一个滑模面&#xff08;Sliding Surface&#xff09;&#xff0c;迫使系统状态在有限时间内…...

《深度剖析Linux 系统 Shell 核心用法与原理_666》

1. 管道符的用法 查找当前目录下所有txt文件并统计行数 # 使用管道符将ls命令的结果传递给wc命令进行行数统计 ls *.txt | wc -l 在/etc目录下查找包含"network"的文件并统计数量 # 使用find命令查找文件&#xff0c;并通过grep查找包含特定字符串的文件&#xf…...

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…...

超详细介绍map(multimap)的使用

map类的介绍 map的声明如下&#xff0c;Key是map底层关键字的类型&#xff0c;T是map底层value的类型。set默认要求Key支持小于比较&#xff0c;如果不支持或者需要的情况下我们可以自行传入仿函数&#xff0c;map底层存储数据的内存是从空间申请来的。一般情况下&#xff0c;我…...

原生稀疏注意力NSA 替换transformer 注意力进行文本生成训练

DeepSeek-R1这篇文章&#xff0c;聚焦范围更加小&#xff0c;R1的重点在于提出了一个文本生成的训练策略和蒸馏策略&#xff0c;这篇文章则是提出了一个注意力机制NSA&#xff0c;主要解决的是长序列做注意力时带来的效率问题。通篇文章看下来&#xff0c;它的实际意义可能比较…...

读书笔记:《百年孤独》

《百年孤独》加西亚.马尔克斯 著 范晔 译 读出了阅读障碍。 记不得书中的人&#xff0c;记不得书中的事&#xff0c;更不知何为孤独&#xff0c;只记得马孔多&#xff0c;这个陌生的地方&#xff0c;还有那个猪尾巴婴儿。 百年&#xff1a;故事跨越了百年 孤独&#…...

TVS管学习记录

文章目录 前言一、TVS是什么&#xff1f;二、TVS关键参数1.反向截至电压**实际意义** 2.钳位电压**定义与作用****选择依据** **4. 实际应用示例****场景&#xff1a;通信端口的ESD保护** 3.反向截至电压和钳位电压的关联和区别**. 小结** 三、实际应用电路举例总结 前言 TVS管…...

网络安全系统概述 网络安全系统分为几级

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 5级 网络信息系统安全等级保护分为五级&#xff0c;一级防护水平最低&#xff0c;最高等保为五级。分别是用户自主保护级、系统审计保护级、安全标记保护级、结构…...

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我站在人潮中央&#xff0c;思考这日日重复的生活。我突然想&#xff0c…...