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

JVM ①-类加载 || 内存区域

这里是Themberfue 

  • 终于结束了网络层的学习,当然,我们学习的知识也只是冰山一角,想要了解更多的知识,还请大家养成主动探索的习惯~~~
  • 接下来我们将对 JVM 的一些机制进行简单的讲解,对于 Java程序员来说,本身是不需要关心 JVM 底层所封装好的这些机制的,我们只需编写 Java 代码即可,最直观的体会就是:编写 Java程序时不需要过多的关心内存管理相关的事项,这些都可以交给 JVM 进行控制。
  • 但是,由于市场人才的饱和,市场对于 Java程序员的能力也是越来越高,面对面试官的拷打,我们还是需要了解一些最基本的机制的。
  • 了解这些机制其实也不全是应对面试,在日常开发调试中,可能也会应用到相关的知识。例如:一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。只是概率不大~~~

 内存区域划分

  • JVM 想必大家都不陌生,JVM 是 Java 运行环境的核心,.java 文件首先被 javac 编译程序编译成 .class 文件(也就是字节码文件)后,JVM 负责运行 Java 字节码。所以,Java程序最终都是在 JVM 上运行的。
  • 有了 JVM,Java 便实现了 "一次编写,到处运行"(Write Once, Run Anywhere)的特性,使得 Java 代码可以在不同操作系统(Windows、Linux、Mac)上运行,只要安装了 对应的 JVM

  • 操作系统中也对内存区域进行了划分,以便更好的管理。既然是 Java虚拟机,也同理,JVM 进程向操作系统申请了一块空间,随后 JVM 对这块空间进行区域划分。

  • 根据图中我们可以知道,线程私有的区域有:程序计数器、本地方法栈、虚拟机栈线程共享的有:堆、方法区、直接内存(非运行时数据区域的一部分)

程序计数器

  • 程序计数器是一块较小的内存空间,其主要作用是记录当前线程正在执行的字节码指令地址,字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环等功能都依靠这个计数器完成。
  • 每个线程都有单独配有一个程序计数器,便于在线程切换后能恢复到正确的执行位置,这些程序计数器独立存在,互相不冲突,是线程私有的。
  • ⚠️ 注意:程序计数器是唯一一个不会出现 OutOfMemoryError 的内存区域,它的生命周期随着线程的创建而创建,随着线程的结束而死亡。

虚拟机栈

  • 与程序计数器一样,虚拟机栈也是线程私有的,其生命周期随着线程的创建而创建,随着线程的结束而死亡。
  • 虚拟机栈主要存储方法调用的局部变量、操作数栈、返回地址。除了一些 Native 方法调用是通过本地方法栈实现的,大部分 Java 方法调用都是通过虚拟机栈实现的。
  • 方法调用的数据需要通过栈进行传递,每一次方法调用都会有一个对应的栈帧被压入栈中,每一个方法调用结束后,都会有一个栈帧被弹出。
  • 栈里面存储的是栈帧,每个栈帧都拥有:局部变量表、操作数栈、动态链接、方法返回地址
  • 虚拟机栈的默认空间分配不是很大,一般在 10MB - 70MB 左右,一般情况下是完全够用的。当然,如果函数调用陷入无限循环,也就是死递归后,虚拟机栈中被压入太多栈帧而导致空间超过当前申请的最大空间的话,就会抛出 StackOverFlowError 错误。
  • 实际上,虚拟机栈的大小是可以动态扩展的,如果在动态扩展时无法申请更大的内存空间后,程序就会抛出 OutOfMemoryError 异常。
  • Java 方法返回有两种方式,一种是正常代码执行到 return 语句退出,另一种则是抛出异常,不论是哪种方法返回,虚拟机栈都会认为该方法正常执行完毕,便会将对应的栈帧弹出。

本地方法栈

  • 与虚拟机栈类似,本地方法栈主要用于本地(Native)方法 的执行,调用 C 语言写的 JNI(Java Native Interface)方法 时使用。
  • 本地方法被执行的时候,在本地方法栈也会创建一个栈帧,用于存放该本地方法的局部变量表、操作数栈、动态链接、出口信息。
  • 方法执行完毕后也会将对应的栈帧弹出,也会出现 StackOverFlowError 错误和 OutOfMemoryError 异常。

  • 用于存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。堆是 JVM 申请到的最大一块内存区域,堆是所有线程共享的,在虚拟机启动时就会创建。
  • 由于是所有线程共享,所以可能会发送并发问题(需要同步管理)。类的成员变量都是存放在堆上的,而局部变量都是存放在栈上的,至于静态成员变量,则是在元数据区(方法区,下方会讲解)。
  • 堆也是垃圾收集器管理的主要区域,因此也被称作 GC 堆(Garbage Collected Heap)。至于 JVM 的 GC 是怎么进行垃圾回收的,我们下节课再来讲解。
  • 堆这里最容易出现的就是 OutOfMemory 错误,并且出现这种错误之后的表现形式还会有几种,比如:
  • java.lang.OutOfMemoryError: GC Overhead Limit Exceeded:当 JVM 花太多时间执行垃圾回收并且只能回收很少的堆空间时,就会发生此错误。
  • java.lang.OutOfMemoryError: Java heap space :假如在创建新的对象时, 堆内存中的空间不足以存放新创建的对象, 就会引发此错误。(和配置的最大堆内存有关,且受制于物理内存大小。最大堆内存可通过-Xmx参数配置,若没有特别配置,将会使用默认值,详见:Default Java 8 max heap size) (上述描述原文)

方法区

  • 方法区也可称作 元数据区,当虚拟机需要使用一个类时,它读取并解析 Class 文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的 类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据
  • JDK 8 之前 方法区位于堆内存,称为 永久代(PermGen)
  • JDK 8 之后 方法区使用 本地内存(Metaspace),避免 OutOfMemoryError

类加载

  • Java 类加载(Class Loading)是 JVM 将 .class 文件(字节码)加载到内存,并解析为可执行 Java 类 的过程。类加载是 Java 运行机制的核心,它支持 Java 的动态特性,比如 反射、动态代理、热部署 等。

  • 类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:

  • 使用(Using)卸载(Unloading)阶段可以忽略,所以主要还是 5 个阶段。其中,验证(Verification)准备(Preparation)解析(Resolution)阶段可以被统称为 连接(Linking)

  • 系统加载 Class 类型的文件主要分三步:加载 => 连接 => 初始化。其中,连接过程又可分为三步:验证 => 准备 => 解析


加载

  • JVM 根据 类 的全限定名(包名 + 类名,形如 Java.lang.String)再通过类加载器(ClassLoader)找到 .class 文件,并读取字节码,将其读取到内存里随后转换为 JVM 内部数据结构。
  • 同时创建 java.lang.Class 对象,代表该类的运行时信息。
  • 类加载的方式有很多种:从本地文件(磁盘 .class 文件)加载从 JAR 包中加载通过网络(远程加载)动态生成(如反射、动态代理、defineClass 方法)热加载(如 Tomcat、Spring 热部署)。
  • 加载阶段连接阶段的部分动作(如一部分字节码文件格式验证动作)是交叉进行的,加载阶段尚未结束,连接阶段可能就已经开始了。

验证

  • 确保字节码文件的安全性和正确性,防止 JVM 崩溃或安全漏洞。
  • 验证过程包含 4 个方面
    1. 文件格式验证:检查字节码格式是否符合 JVM 规范。
    2. 元数据验证:检查类是否继承了不存在的类、方法签名是否正确等。
    3. 字节码验证:确保字节码的正确性,比如操作数栈是否匹配,跳转指令是否正确等。
    4. 符号引用验证:确保类、字段、方法等可以正确解析。
  • 为了保证这些信息被当作代码运行后不会危害虚拟机自身的安全,官方对 Class 文件的格式类型进行了规范,根据 Java 虚拟机规范,Class 文件通过 ClassFile 定义,有点类似 C 语言的结构体。我们可以在官方文档查到 ClassFile 的定义:ClassFile
  • 以上是对 ClassFile 的简单描述,想要了解更加深入的同学,可以去官方文档细看。

准备

  • 这时候进行内存分配的仅包括类变量( Class Variables ,即静态变量,被 static 关键字修饰的变量,只与类相关,因此被称为类变量),而不包括实例变量。实例变量会在对象实例化时随着对象一块分配在 Java 堆中。
  • 此时不会执行任何静态代码块,只是赋默认值!
    class Demo {static int a = 10; // 这里的 a 先被赋默认值 0,后面才赋值 10
    }
    

解析

  • 针对字符串常量进行初始化,从 .class 文件里解析出来的字符串常量放到 内存空间(元数据区、常量池)里。
  • 将类中的符号引用转换为直接引用(如将 java/lang/String 转换为内存地址)。
  • 解析的内容包括:
    1. 类或接口解析(解析父类、接口)
    2. 字段解析(解析 staticinstance 变量)
    3. 方法解析(解析方法调用)
    4. 接口方法解析
  • String s = "Hello"; String 是一个符号引用,解析后 JVM 知道 "Hello" 的具体内存地址。

初始化

  • 执行静态变量赋值和静态代码块(static {}
  • 只有在第一次使用该类时才会触发(比如 newClass.forName())。
  • 针对类对象中的各种属性进行填充。
  • 如果有父类,必须先初始化父类

⭕使用

  • 类被加载后,可以被实例化、调用方法、访问静态变量
  • 类的使用阶段包括实例化对象、方法调用等
    Demo d = new Demo(); // 使用阶段

⭕卸载

  • JVM 在满足以下条件时会卸载类
    1. 该类的所有实例都被回收(无强引用)。
    2. 类加载器被回收(通常是自定义 ClassLoader)。
    3. JVM 确定该类不再被使用

注意:

  • Bootstrap ClassLoader 加载的类不会被卸载
  • 一般只有动态加载的类(如 Tomcat、Spring 热部署)才会被卸载

  • 下节我们将进入 JVM 的另外两个机制~~~
  • 毕竟不知后事如何,且听下回分解 
  • ❤️❤️❤️❤️❤️❤️❤️

 

相关文章:

JVM ①-类加载 || 内存区域

这里是Themberfue 终于结束了网络层的学习,当然,我们学习的知识也只是冰山一角,想要了解更多的知识,还请大家养成主动探索的习惯~~~接下来我们将对 JVM 的一些机制进行简单的讲解,对于 Java程序员来说,本身…...

物理信息机器学习(PIML)的基础探讨及技术实现

在传统机器学习方法迅速发展并在图像识别、语音处理、自然语言处理等领域取得显著突破的同时,科学计算、工程设计以及自然系统建模等领域常常面临数据不足、噪声干扰以及模型泛化能力弱的问题。单纯依赖数据驱动的“黑箱”模型在处理物理问题时,往往难以兼顾数据拟合与物理解…...

【浏览器多开】Google Chrome 谷歌浏览器分身术

谷歌浏览器分身术(多开): 复制已有谷歌浏览器图标—>右键–>属性的目标栏中,添加 --user-data-dir自定义文件夹路径 参数。 例如: C:\MySpace\02Installed\Chrome\Chrome-bin\99.0.4844.51\chrome.exe –user-d…...

《量化绿皮书》Chapter 3 Calculus and Linear Algebra 微积分与线性代数(二)

《A Practical Guide To Quantitative Finance Interviews》,被称为量化绿皮书,是经典的量化求职刷题书籍之一,包含以下七章: Chapter 1 General Principles 通用技巧 Chapter 2 Brain Teasers 脑筋急转弯 Chapter 3 Calculus and…...

单片机成长之路(51基础篇) - 008 C51 的标示符和关键字

标准 C 语言定义了 32 个关键字,如下表(ANSI C的32个关键字): C51在此基础上针对单片机功能进行了扩展,详情见下表(C51编译器扩充关键字): C 51的数据类型 51单片机使用的C语言的存储器类型分为以下几种:...

嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?

2025年,全球AI领域最震撼的突破并非来自算力堆叠的超级模型,而是中国团队DeepSeek通过开源策略,推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言,被称作“核弹级别”的操…...

Deno vs Node.js:性能对比深度解析

1. 引言 Deno 和 Node.js 都是基于 V8 引擎的 JavaScript 运行时环境,然而它们在架构、模块管理、安全性和性能方面存在显著差异。Deno 由 Node.js 的原始作者 Ryan Dahl 开发,旨在解决 Node.js 设计上的一些问题,比如包管理、安全模型和 Ty…...

【R】Dijkstra算法求最短路径

使用R语言实现Dijkstra算法求最短路径 求点2、3、4、5、6、7到点1的最短距离和路径 1.设置data,存放有向图信息 data中每个点所在的行序号为起始点序号,列为终点序号。 比如:值4的坐标为(1,2)即点1到点2距离为4;值8的坐标为(6,7)…...

网络安全治理架构图 网络安全管理架构

网站安全攻防战 XSS攻击 防御手段: - 消毒。 因为恶意脚本中有一些特殊字符,可以通过转义的方式来进行防范 - HttpOnly 对cookie添加httpOnly属性则脚本不能修改cookie。就能防止恶意脚本篡改cookie 注入攻击 SQL注入攻击需要攻击者对数据库结构有所…...

@emotion/styled / styled-components创建带有样式的 React 组件

一、安装依赖 npm install emotion/styled styled-components 二、使用 import styled from emotion/styled; import styled from styled-components;// 创建一个带样式的按钮 const StyledButton styled.buttonbackground-color: #4caf50;color: white;padding: 10px 20px…...

Gemini 2.0模型更新:谷歌最新AI大模型全面开启智能时代

引言 2025年2月5日,谷歌人工智能实验室(Google DeepMind)发布了最新的Gemini 2.0模型系列更新,包括2.0 Flash、Flash-Lite和Pro实验版本。这些AI大模型的发布标志着人工智能技术在性能、效率和多模态能力上的进一步突破&#xff…...

MySQL 主从复制原理及其工作过程

一、MySQL主从复制原理 MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志…...

详解在Pytest中忽略测试目录的三种方法

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 你是否曾因无关或过时的代码导致测试失败? 这可能会增加调试和故障排除…...

ZoneMinder index.php存在SQL注入漏洞(CVE-2024-43360)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

【DeepSeek】DeepSeek概述 | 本地部署deepseek

目录 1 -> 概述 1.1 -> 技术特点 1.2 -> 模型发布 1.3 -> 应用领域 1.4 -> 优势与影响 2 -> 本地部署 2.1 -> 安装ollama 2.2 -> 部署deepseek-r1模型 1 -> 概述 DeepSeek是由中国的深度求索公司开发的一系列人工智能模型,以其…...

webGL

WebGL:3D图形的网络标准 WebGL(Web Graphics Library)是一种3D绘图协议,它允许开发者在不需要任何插件的情况下,在网页浏览器中创建交互式2D和3D效果。WebGL是基于OpenGL ES的JavaScript API,它可以为HTML5…...

电脑远程控制vivo手机,切换按钮就能让vivo仅投屏、不受控制!

Linux系统在全球的市场份额并不高,继而很多便捷的软件都没有Linux的版本。如果想要用Linux远程控制安卓手机,找软件会比较麻烦,但是AirDroid网页版可以做到。 以vivo手机为例子,接下来讲解Linux系统电脑要远程控制安卓手机时&…...

MS17-010(永恒之蓝1.0)漏洞远程控制win7系统操作实战小白通俗易懂

1.准备环境win7操作系统(被攻击机)以及kali系统(攻击机),kali使用msf工具进行攻击。 2.打开kali终端,进入msf,输入msfconsole然后等待启动。 ┌──(root㉿kali-chifan)-[~] └─# msfconsole…...

【Java计算机毕业设计】基于Springboot+Vue社区志愿者管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…...

三次握手,四次挥手,服务器模型(多进程并发,线程),基于套接字的UDP通信

三次握手: 第一次握手:客户端向服务器发送SYN待确认数据x, 客户端进入SYN_SEND状态​ 第二次握手:服务器向客户端回传一条ACK应答数据x1, 同时发送一条SYN待确认数据y,服务器进入SYN_RECV状态​ 第三次握手:客户端向服…...

通讯录管理小程序

通讯录管理系统 是对c基础语法的巩固,比较简单的一个小程序,重点在于养成良好的c代码习惯。 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C来实现一个通讯录管理系统 下面是一些需要实现的功能: 1. 添加联系人 功能描述&…...

[ESP32:Vscode+PlatformIO]添加第三方库 开源库 与Arduino导入第三方库的区别

前言 PlatformIO与Arduino在添加第三方库方面的原理存在显著差异 在PlatformIO中,第三方库的使用是基于项目(工程)的。具体而言,只有当你为一个特定的项目添加了某个第三方库后,该项目才能使用该库。这些第三方库的文…...

SpringSecurity:授权服务器与客户端应用(入门案例)

文章目录 一、需求概述二、开发授权服务器1、pom依赖2、yml配置3、启动服务端 三、开发客户端应用1、pom依赖2、yml配置3、SecurityConfig4、接口5、测试 一、需求概述 maven需要3.6.0以上版本 二、开发授权服务器 1、pom依赖 <dependency><groupId>org.springfr…...

k8s证书过期怎么更新?

在 Kubernetes 集群中&#xff0c;证书过期可能导致集群不可用&#xff0c;尤其是 API Server、Controller Manager、Scheduler 等组件所使用的证书。为了恢复集群的正常运行&#xff0c;您需要更新这些证书。以下是更新 Kubernetes 证书的基本步骤&#xff1a; 1. 检查证书状…...

【戒抖音系列】短视频戒除-1-对推荐算法进行干扰

如今推荐算法已经渗透到人们生活的方方面面&#xff0c;尤其是抖音等短视频核心就是推荐算法。 【短视频的危害】 1> 会让人变笨&#xff0c;慢慢让人丧失注意力与专注力 2> 让人丧失阅读长文的能力 3> 让人沉浸在一个又一个快感与嗨点当中。当我们刷短视频时&#x…...

VUE 集成企微机器人通知

message-robot 便于线上异常问题及时发现处理&#xff0c;项目中集成企微机器人通知&#xff0c;及时接收问题并处理 企微机器人通知工具类 export class MessageRobotUtil {constructor() {}/*** 发送 markdown 消息* param robotKey 机器人 ID* param title 消息标题* param…...

封装descriptions组件,描述,灵活

效果 1、组件1&#xff0c;dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…...

等级保护2.0|网络安全服务

等级保护2.0|网络安全服务 定义 对于国家秘密信息、法人和其他组织及公民专有信息以及公开信息的存储、传输、处理这些信息系统分等级实行安全保护&#xff0c;对信息系统中发生的信息安全时间分等级响应、处置。 思想 对信息安全实行等级化保护和等级化管理 目标 突出重…...

STM32 RTC亚秒

rtc时钟功能实现&#xff1a;rtc模块在stm32内部&#xff0c;由电池或者主电源供电。如下图&#xff0c;需注意实现时仅需设置一次初始化。 1、stm32cubemx 代码生成界面设置&#xff0c;仅需开启时钟源和激活日历功能。 2、生成的代码,需要对时钟进行初始化&#xff0c;仅需…...

H5+CSS+JS制作好看的轮播图

先来看效果 点击下方按钮可以做到平滑切换轮播&#xff0c;轮播图片可以根据自定义随心变化。 先来看一下页面代码结构 <div class"container"><div class"lunbo-wrap"><div id"slide"></div><div class"butto…...

Win10 部署llama Factory 推荐教程和遇到的问题

教程 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 大模型微调&#xff01;手把手带你用LLaMA-Factory工具微调Qwen大模型&#xff01;有手就行&#xff0c;零代码微调任意大语言模型_哔哩哔哩_bilibili 遇到问题解决办法 pytorch gpu国内镜像下载…...

Visual Studio踩过的坑

统计Unity项目代码行数 编辑-查找和替换-在文件中查找 查找内容输入 b*[^:b#/].*$ 勾选“使用正则表达式” 文件类型留空 也有网友做了指定&#xff0c;供参考 !*\bin\*;!*\obj\*;!*\.*\*!*.meta;!*.prefab;!*.unity 打开Unity的项目 注意&#xff1a;只是看&#xff0…...

idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡

idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡 问题 idea编译器 安装copilot AI工具 实际操作 在 IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤如下&#xff1a; 打开 IntelliJ IDEA&#xff1a; 打开你的 IntelliJ IDEA 应用…...

Leetcode 3449. Maximize the Minimum Game Score

Leetcode 3449. Maximize the Minimum Game Score 1. 解题思路2. 代码实现 题目链接&#xff1a;3449. Maximize the Minimum Game Score 1. 解题思路 这一题思路上就是一个二分法&#xff0c;尝试各个score&#xff0c;看看是否可以满足在给定的m次操作限制下&#xff0c;使…...

DeepSeek深度思考:客户端(Android/iOS)架构设计指南

目标读者&#xff1a;中高级开发者、架构师 适用场景&#xff1a;大型复杂应用开发、跨团队协作、长期维护迭代 一、架构设计核心原则 1.模块化&#xff08;Modularization&#xff09; 横向拆分&#xff1a;按功能边界划分&#xff08;如登录、支付、消息模块&#xff09;纵向…...

智能理解 PPT 内容,快速生成讲解视频

当我们想根据一版 PPT 制作出相对应的解锁视频时&#xff0c;从撰写解锁词&#xff0c;录制音频到剪辑视频&#xff0c;每一个环节都需要投入大量的时间和精力&#xff0c;本方案将依托于阿里云函数计算 FC 和百炼模型服务&#xff0c;实现从 PPT 到视频的全自动转换&#xff0…...

HTML 颜色值

HTML 颜色值 引言 在网页设计和开发中,颜色是一个重要的元素,它能够影响用户的视觉体验和网站的视觉效果。HTML 颜色值是网页设计中用来指定文本、背景或其他元素颜色的标准。本文将详细介绍 HTML 颜色值的概念、类型、表示方法以及在实际应用中的注意事项。 HTML 颜色值的…...

kafka消费端之消费者协调器和组协调器

文章目录 概述回顾历史老版本获取消费者变更老版本存在的问题 消费者协调器和组协调器新版如何解决老版本问题再均衡过程**第一阶段CFIND COORDINATOR****第二阶段&#xff08;JOINGROUP&#xff09;**选举消费组的lcader选举分区分配策略 第三阶段&#xff08;SYNC GROUP&…...

【C++】解锁<list>的正确姿势

> &#x1f343; 本系列为初阶C的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:[小编的个人主页])小编的个人主页 > &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 > ✌️ &#x1f91e; &#x1…...

【玩转全栈】----Django模板的继承

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01; 目录 模板继承的好处 模板继承的语法规则 更新代码 上文中的部门管理页面&#xff1a; 【玩转全栈】----Django制作部门管理页面-CSDN博客 大家会发现&#xff0c;由于定义了多个html文件&#xff0c;多个ht…...

【紫光同创PG2L100H开发板】盘古676系列,盘古100Pro+开发板,MES2L676-100HP

本原创文章由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 一&#xff1a;开发系统介绍 开发系统概述 MES2L676-100HP开发板采用紫光创 logos2系列 FPGA&#xff0c;型号&#x…...

Mac下使用brew安装go 以及遇到的问题

首先按照网上找到的命令进行安装 brew install go 打开终端输入go version&#xff0c;查看安装的go版本 go version 配置环境变量 查看go的环境变量配置&#xff1a; go env 事实上安装好后的go已经可以使用了。 在home/go下新建src/hello目录&#xff0c;在该目录中新建…...

活动预告 |【Part 2】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁

课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课&#xff0c;掌握创造新机遇所需的技能&#xff0c;加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动&#xff0c;了解如何更好地在 Microsoft 365 Defen…...

android的DataBinding简介

Android DataBinding 简介 DataBinding 是 Android Jetpack 中的数据绑定库&#xff0c;用于将 UI 组件直接与数据模型绑定&#xff0c;减少模板代码并实现双向数据同步。它通过声明式布局简化 UI 更新逻辑&#xff0c;常用于 MVVM&#xff08;Model-View-ViewModel&#xff0…...

基于DeepSeek API和VSCode的自动化网页生成流程

1.创建API key 访问官网DeepSeek &#xff0c;点击API开放平台。 在开放平台界面左侧点击API keys&#xff0c;进入API keys管理界面&#xff0c;点击创建API key按钮创建API key&#xff0c;名称自定义。 2.下载并安装配置编辑器VSCode 官网Visual Studio Code - Code Editing…...

【DeepSeek】私有化本地部署图文(Win+Mac)

目录 一、DeepSeek本地部署【Windows】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 a、直接访问 b、chatbox网页访问 二、DeepSeek本地部署【Mac】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 5、删除已下载的模型 三、DeepSeek其他 …...

vscode预览插件

在左侧列表拓展里搜索 Live Preview 安装&#xff0c;然后在html页面点击右键找到show Preview 结果如下图 然后就可以进行代码开发并实时预览了...

迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写应用APP

在应用代码中我们实现如下功能&#xff1a; 当应用程序启动后会获取命令行参数。如果命令行没有参数&#xff0c;LED 灯将循环闪烁&#xff1b;如果命令行带有参数&#xff0c;则根据传输的参数控制 LED 灯的开启或关闭。通过 HdfIoServiceBind 绑定 LED灯的 HDF 服务&#xff…...

在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合

文章目录 传统的神经网络框架存在的问题一. Transformer架构综述1.1 transformer的输入1.1.1 词向量1.1.2 位置编码&#xff08;Positional Encoding&#xff09;1.1.3 编码器与解码器结构1.1.4 多头自注意力机制 二.Transformer分步详解2.1 传统词向量存在的问题2.2 详解编解码…...

tolua[一]框架搭建,运行example

一.安装tolua https://github.com/topameng/tolua 下载LuaFramework_UGUI的zip 将Assets目录拷贝到项目根目录下 提示确认注册&#xff0c;遇到这个对话框点确定即可 生成如下目录 二.LuaFramework->Build Windows Resource 接下来的目标是将这个main场景跑起来 需要先执行…...