JVM--虚拟机
JVM,即虚拟机,可以简单理解为将字节码文件翻译成机器码的机器。
.class文件-->机器码文件
JVM整体组成部分
1.类加载器
负责从磁盘中加载字节码文件到JVM中
2.运行时数据区
按照不同的数据分区进行存储(方法区,堆,栈,本地方法栈,程序计数器)
3.执行引擎
把字节码编译成机器码
4.本地库接口
负责调用本地操作系统方法
类加载器子系统
概述
类加载器子系统
字节码文件----->加载阶段-->链接阶段-->初始化阶段
类加载器子系统负责从硬盘或者网络中加载字节码文件,类加载器只负责加载,是否能运行由运行引擎决定,加载的类信息存放在方法区
抽象理解:
字节码文件放在磁盘中,可以理解成一个模版设计草图,而加载到JVM中,就要编译成工程的图纸,工厂就能按照这个图纸实例出多个实例出来。
类加载过程
链接
加载------->验证---->准备---->解析------>初始化
1.加载
以二进制流的方式加载字节码,
在内存中为类生成一个Class类的对象,将静态存储转成运行时存储
(从硬盘到内存)
2.链接
验证
验证字节码格式是否正确
验证语法是否正确
准备
该阶段负责为类的静态属性分配内存,并设置初始值
这里的初始值与后面初始化阶段不同,这里是准备阶段
static a = 10;
在准备阶段设置的初始值为0;
在后面初始化阶段重新赋值为10;
解析
将静态文件中的指令符号引用 替换成 内存中直接引用
int a = 10; ----------> istore_1
字节码指令 到 内存操作指令
3.初始化
对类中静态变量进行赋值
类什么时候会被加载(初始化)?
1.使用类中的静态变量,静态方法
2.在一个类中运行main
3.创建对象
4.使用反射加载一个类
5.加载其子类时,会优先加载父类
加载类中静态常量时不会被初始化,静态常量在编译期间就被初始化赋值了
当类在加载阶段初始化完成,才能说类的整个加载过程结束。
类加载器
真正加载类,是加载类的实施者
分类
jvm角度分为
1.引导类加载器(启动类加载器),非java类语言编写,c/c++,jvm底层实现
2.其他类加载器,使用java语言实现,都继承java.lang.ClassLoader
开发者角度分为:
1.引导类加载器(启动类加载器)
java中系统提供的类,都是由启动类加载器加载的,如String类
2.扩展类加载器
Java语言编写,由Launcher$ExtClassLoader实现,派生与ClassLoader类
3.应用程序类加载器
Java语言编写,由Luncher$AppClassLoader实现,派生于ClassLoader类
加载程序员自己定义的类
4.自定义类加载器
自己编写的类继承ClassLoader类
双亲委派机制
1.如果一个类加载器收到加载请求,首先他会奖盖请求委托给父级类加载器;
2.如果该父级类加载器还有父级,就继续向上委托,直到启动类加载器;
3.如果父级类加载器可以完成该类的加载任务,就成功返回,否则依次向下级委托加载
优点:避免了用户自己编写的类替换了JAVA的核心类,例如:String类,Integer类等。
打破双亲委派
通过自定义的类加载器,重写类加载器中的findClass()方法
从而打破双亲委派
运行时数据区
1.程序计数器
记录程序执行的指令的位置用的(简单理解为记录程序运行到哪了)
特点:
内存小,运行速度快,线程私有(每个线程都有一个计数器)
生命周期与线程一致
不存在内存溢出与垃圾回收
2.虚拟机栈
栈是运行单位,管理方法(java方法)的运行(也就是解决程序的运行问题)
调用方法即入栈,运行完即出栈
栈是线程私有的,不存在垃圾回收,但是会出现内存溢出
每个线程创建时都会创建一个虚拟机栈,每次调用一个方法入栈,都可以看做一个栈帧入栈。
一个栈帧也就对应一个方法。
栈帧的构成:
执行引擎只会对当前栈帧进行操作,调用新的方法,就会有新的栈帧被创造且被置于栈顶
局部变量表:存储定义的变量,参数等
操作数栈
方法返回地址
int a = 10;
int b = 20;
int c = a+++b;//这一步的运算就是 操作数栈
return;//记录被调用的方法位置,跟方法的返回值无关
3.本地方法栈
管理运行本地方法的地方,用于管理本地方法的调用,由C语言编写
常见的本地方法:用native 关键字修饰,没有方法体
hashCode();
getClass();
clone();
notify();
wait();
在本地方法栈中登记本地方法,在执行时加载本地方法库;
线程私有的,会出现内存溢出,不存在垃圾回收
4.堆(存储空间)
存放程序运行中产生的对象
是运行时数据区中最大的一块空间,大小可以调节(jvm调优)
线程共享,会出现内存溢出,存在垃圾回收(垃圾回收的重点区域)
4.1堆内存区域划分
新生区
伊甸园Eden:新创建的对象放在这
幸存者1:存放伊甸园区与另一个幸存者区经过垃圾回收后存会的对象
幸存者2:
两个幸存者区交替使用,始终有一个区域是空闲的
老年区
存放生命周期长的对象或者大的对象
生命周期长即经历过15次垃圾回收依然存活的对象就会被放在老年区
4.2分区的作用
可以根据不同对象的存活时间进行划分,生命较长的对象放入老年代,
从而减少垃圾回收的频率与扫描次数
当一个对象经过垃圾回收15次时依然存活就会将该对象放入老年区;
这里有人会问了为什么是15次?不是10次,20次?
在对象头有4bit位用来记录回收次数,可以设置回收次数,默认是15(1111)
新生代与老年代的比例为1:2
伊甸园与幸存者1和幸存者2的比例为8:1:1
4.3堆空间的参数设置
涉及JVM调优
jvm调优:根据程序实际运行的需要设置参数,调整各个区间比例大小
垃圾回收:MInor GC:新生区垃圾回收 频繁Major GC:老年区垃圾回收 较少FULL GC:整堆垃圾回收 尽可能避免
5.方法区
主要存储加载到虚拟机的类信息,
大小可以调整(-XX:MetaspaceSize)
线程共享,存在内存溢出,存在垃圾回收(条件苛刻)
同时满足以下3个条件才会进行垃圾回收:
1.这个类的所有对象以及子类对象都被销毁
2.加载这个类的类加载器也被销毁
3.这个类的Class对象没哟被引用(主要是反射)
本地方法接口
1.什么是本地方法?
就是一个JAVA调用非JAVA代码的接口;
用native关键字修饰(不与abstart连用),没有方法体,由非JAVA语言实现;
实现体是由非JAVA语言(操作系统)在外面实现的。
2.为什么要使用本地方法?
与JAVA环境外进行交互;因为上层高级语言没有对底层硬件进行直接操作的权限,
需要调用操作系统提供的接口进行访问。
执行引擎
JVM核心组成部分之一,
负责将加载到JVM中的字节码指令解释/编译成对应平台上的本地机器指令。
类加载器子系统:把.Class文件加载到JVM中
执行引擎:把.Class文件编译成机器指令
1.概念区分
解释执行:
用解释器对代码逐行进行解释执行,
效率低,但不需要编译
编译执行:将某段代码进行整体编译,执行编译后的结果
编译花费时间,但是执行效率高
2.JAVA的半解释半编译
程序刚开始运行时采用逐行解释执行;
运行过程中,会将热点(高频)代码编译并缓存起来了(后面用到直接会用运行后的结果即可);
两者结合,提高效率
垃圾回收
垃圾:程序运行中没有被任何引用的对象
不回收会导致内存溢出OOM
早期垃圾回收需要程序员手动实现,如果忘记回收,会导致内存泄露。
怎么回收?
垃圾收集器可以对新生代,老年代进行回收,什么对全栈,方法区都可以进行垃圾回收。
内存溢出:经过垃圾回收,内存依然不够使用,造成程序崩溃
内存不够用
内存泄露:对象在程序中不会被使用,但是又不能被垃圾回收器回收,在一直占用内存,最 终导致内存溢出
内存被垃圾占用
单例模式中的单例对象
collection
socket
IO
这些资源通道没有及时关闭,垃圾回收器不能进行回收,就会造成内存泄漏。
STW(Stop The World)
指垃圾回收过程中会产生应用程序的停顿,停顿时整个应用线程都会被暂停,这个停顿称为STW.
为什么在垃圾回收中要进行STW?
垃圾回收中要分析哪些对象是垃圾,需要被回收,如果程序中的对象引用关系在不断变化,分析结果不准确,会出现漏标,错标的问题。
垃圾回收算法
1.标记阶段(判断哪些对象是垃圾)算法
引用计数算法(未被采用):在对象中有一个计数属性,只要有引用指向该对象,计数器加1,有断开减1,如果计数器为0,表示此对象为垃圾。
实现简单,但技术器占用空间,加减计数需要时间开销,并且无法解决循环引用问题
可达性分析算法:从一些活跃对象开始搜索,与根对象相关联的对象都又被引用,与跟对象或者根对象引用链不相关的对象就是垃圾。
那些对象可以作为根对象Root?
虚拟机栈中 被引用的对象
类中的静态属性
用作同步锁的对象
JAVA系统中的类
finalization机制
当对象被判定为垃圾,被回收前会调用一次finalize();
由垃圾回收机制调用。
虚拟机中对象的三种状态
1.可触及的:在根节点的引用链上
2.可复活的:垃圾回收时没调用过finalize()的
3.不可触及的: 垃圾回收时已经调用过finalize()的
对象不可触及时会被垃圾回收器回收
2.回收阶段算法
标记-复制算法
可以有多块内存,每次有一块是空的,将存活的对象复制一份到未被使用的内存中,然后清除其他块中的垃圾对象。
内存碎片少,适合存活对象少,垃圾对象多的内存(新生代)
标记-清除算法
将存活对象位置不变,将垃圾对象地址记录在一个空闲列表中,后面如果创建新的对象,就会直接覆盖掉垃圾对象
不移动对象,回收后,会产生内存碎片,效率高;适合老年代
标记-压缩算法
将存活的对象进行重新排列,排列到内存一端,将其余的内存进行清理。
要移动对象,回收后,进行压缩,不产生内存碎片,效率低;适合老年代
分代收集
根据不同区域特点进行回收,
年轻代,生命周期短,存活对象少,回收频繁,使用复制算法
老年代,生命周期长,存活对象多,回收频率低,采用清除和压缩算法混合使用。
垃圾回收器
垃圾回收器是jvm中真正进行垃圾回收的实践者,不同的厂商,不同版本实现方式都有不同。
使用时根据不同场景选择合适的垃圾回收器。
分类
从线程数量上分:
单线程Serial:适用于与一些小型设备,只有一个线程进行过垃圾回收
多线程Parallel:有多个线程进行垃圾回收
按工作数量分:
独占式:垃圾回收线程执行时,其他用户线程暂停执行
并发式:垃圾回收线程可以和用户线程一起执行
按照工作内存区间分:
老年代垃圾回收器:
新生代垃圾回收器:
GC性能指标
吞吐量:运行用户代码的时间/(运行用户代码的时间+运行垃圾收集代码的时间)
列举
回收器 | 代 | 线程模式 | 目标场景 |
---|---|---|---|
Serial | 年轻代 | 单线程 | 客户端/小内存 |
Serial Old | 老年代 | 单线程 | CMS 后备/小内存 |
ParNew | 年轻代 | 多线程并行 | 低延迟(搭配 CMS) |
Parallel Scavenge | 年轻代 | 多线程并行 | 高吞吐量(搭配 Parallel Old) |
Parallel Old | 老年代 | 多线程并行 | 高吞吐量 |
CMS | 老年代 | 并发 | 低延迟(已过时) |
G1 | 全堆 | 并发 | 平衡吞吐量与延迟(主流) |
CMS--Concurrent Mark Sweep
是首个实现垃圾实现垃圾收集线程与用户线程同时执行的;
但并不是一直都并发执行,也有独占执行
-
JDK 支持:JDK 5 引入,JDK 9 标记为废弃(Deprecated),JDK 14 移除。
初次标记:独占
并发标记:并发
重新标记:独占
并发清除:并发
G1--Garbage First
适用区域 :全堆
JDK 支持:JDK 7 引入,JDK 9+ 成为默认回收器。
内存模型:
Region 分区:将堆划分为多个大小相等的 Region(1MB~32MB)。
动态分代:Region 可动态作为 Eden、Survivor、Old 或 Humongous(存放大对象区)
工作流程:
先分区,哪个区垃圾多,优先回收那个区域
目标:平衡吞吐量与延迟
相关文章:
JVM--虚拟机
JVM,即虚拟机,可以简单理解为将字节码文件翻译成机器码的机器。 .class文件-->机器码文件 JVM整体组成部分 1.类加载器 负责从磁盘中加载字节码文件到JVM中 2.运行时数据区 按照不同的数据分区进行存储(方法区,堆,栈,本地方…...
【Unity】把Texture的黑色背景改成透明背景
1. 在Project窗口中选择目标Texture 2. 在Inspector窗口中进行如下设置: Texture Type: Sprite (2D and UI)Alpha Source: Input Texture Alpha (如果原图有Alpha通道) 或 From Gray Scale (如果要用灰度值作为透明度)Alpha Is Transparency: ✓ (勾选) 3. 其他建…...
计算机毕业设计SpringBoot+Vue.js华强北商城二手手机管理系统 (源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
利用 Python 爬虫进行跨境电商数据采集
1 引言2 代理IP的优势3 获取代理IP账号4 爬取实战案例---(某电商网站爬取)4.1 网站分析4.2 编写代码4.3 优化代码 5 总结 1 引言 在数字化时代,数据作为核心资源蕴含重要价值,网络爬虫成为企业洞察市场趋势、学术研究探索未知领域…...
Android中使用Robolectric测试点击事件(不需要手机)
文章目录 一、前言二、简单示例三、参考文档 一、前言 Robolectric 是一个由 Google 维护的开源 Android 测试框架,它允许你以 Android 运行时环境运行单元测试。 Robolectric 提供了一个模拟 Android 运行时环境,允许你测试你的代码是否正确地使用 And…...
如何把网络ip改为动态:全面指南
在数字化时代,网络IP地址作为设备在网络中的唯一标识,扮演着至关重要的角色。随着网络环境的不断变化,静态IP地址的局限性逐渐显现,而动态IP地址则因其灵活性和安全性受到越来越多用户的青睐。那么,如何把网络IP改为动…...
文件描述符与重定向
1. open系统调用 在 Linux 中, open() 系统调用用于打开一个文件或设备,并返回一个文件描述符,通过该描述符可以进行文件读写操作。open() 可以用于创建新文件或打开已存在的文件,具体行为取决于传递给它的参数。 需要包含的头文件…...
自然语言处理NLP入门 -- 第六节命名实体识别
1 什么是命名实体识别? 在日常生活中,我们经常会遇到这样的情景:希望从一大段文本中,快速找出所有的人名、地名、组织机构名称、日期、时间等关键信息。举个例子,如果你在阅读一篇关于历史事件的新闻报道时࿰…...
Windows PicPick Professional-v7.3.2-中文版
Windows PicPick Professional-中文版 链接:https://pan.xunlei.com/s/VOKGwGVGWUDl7L8cW4D1A1W4A1?pwdw5qz# - 更新了中文翻译,默认取消检测升级,删除多国语言...
Hue UI展示中文
个人博客地址:Hue UI展示中文 | 一张假钞的真实世界 如果使用开发分支代码如master分支)编译安装,需要自己编译语言文件。例如Hue安装目录为“/opt/hue”,则安装后执行以下命令: $ cd /opt/hue $ make locales 如果…...
【Unity】AI Navigation自动寻路(导航)功能
1.简介以及安装AI Navigation 1.1 简介 AI导航包包含高级组件,允许你在游戏中使用导航网格来整合导航和寻径。有了这个包,你可以在运行时和编辑时构建和使用导航网格,创建动态障碍,并使用链接来允许特定的动作(如跳跃…...
网络安全员证书
软考网络安全员证书:信息安全领域的黄金标准 随着信息技术的飞速发展,网络安全问题日益凸显,网络安全员的需求也日益增加。软考网络安全员证书作为信息安全领域的黄金标准,对于网络安全从业者来说具有重要意义。本文将详细介绍…...
2.你有什么绝活儿?—Java能做什么?
1、Java的绝活儿:要问Java有什么绝活,我觉得它应该算是一位魔法师,会的绝活儿有很多,要说最能拿得出手的当属以下三个。 1.1 平台无关性:Java可以在任何地方施展魔法,无论是Windows、Linux还是Mac…...
使用 ASP.NET Core 创建和下载 zip 文件
对于最近的一个功能,我必须从用 ASP.NET Core 编写的内部网站下载一批文件。在下载文件之前对其进行压缩,结果证明这是一种轻松实现多文件下载的好方法。.NET 提供了所有需要的功能,在本文中,我将向您展示如何实现它。 首先&#…...
数据结构之队列
一、队列的概念 队列是一个有序列表,可以用数组或者是链表来实现的。遵循的是先入先出的原则,就是先存入队列的数据要先取出,后面存的需要后面取出。插入的一端称为队尾,删除的一端称为队头,队列里没有元素就称它为空…...
微信小程序读取写入NFC文本,以及NFC直接启动小程序指定页面
一、微信小程序读取NFC文本(yyy优译小程序实现),网上有很多通过wx.getNFCAdapter方法来监听读取NFC卡信息,但怎么处理读取的message文本比较难找,现用下面方法来实现,同时还解决几个问题,1、在回调方法中this.setData不更新信息,因为this的指向问题,2、在退出页面时,…...
【Godot4.3】自定义简易菜单栏节点ETDMenuBar
概述 Godot中的菜单创建是一个复杂的灾难性工作,往往无从下手,我也是不止一次尝试简化菜单的创建。 从自己去年的发明“简易树形数据”用于简化Tree控件获得灵感,于是尝试编写了用于表示菜单数据的EasyMenuData类,以及对应的纯文…...
win7电脑上最好安装 Python什么版本?
李升伟 整理 在 Windows 7 上安装 Python 时,需考虑系统兼容性和安全性。以下是具体建议: --- ### **推荐版本:Python 3.8.x** 1. **兼容性** Python 3.8 是最后一个官方支持 Windows 7 的版本(需安装系统更新至 **SP1** …...
苍穹外卖-阿里云OSS文件上传
苍穹外卖-阿里云OSS文件上传 一、阿里云OSS简介**获取AccessKey**获取enpoint 二、代码实现1 引入依赖2 定义OSS相关配置2.1 application-dev.yml2.2 application.yml 3 读取OSS配置3.1 AliOssProperties 4 生成OSS工具类对象4.1 AliOssUtil4.2 OssConfiguration2.5 CommonCont…...
一周热点:基于向量的推理,而非文本
背景介绍 大型语言模型(LLMs):大型语言模型(如GPT-2)可以通过生成思维链(CoT)来提高性能。CoT是将回应提示的过程分解为一系列步骤的中间文本标记。然而,大部分CoT文本旨在保持流畅性(例如“a”、“of”、“we know that”),而非推理(例如“a + b = c”)。这导致了…...
Tagr 5 for Mac v5.8.0 [MAS] 音频标签编辑工具 支持M、Intel芯片
Tagr 5应用介绍 Tagr 5 是一款功能强大的音乐标签编辑工具,专为macOS用户设计。它旨在帮助用户高效地管理和编辑音乐文件的标签(Metadata),尤其适合那些有大量音乐文件的用户。通过Tagr 5,用户可以轻松地编辑和更新音…...
【linux】详谈 环境变量
目录 一、基本概念 二、常见的环境变量 取消环境变量 三、获取环境变量 通过代码获取环境变量 环境变量的特性 1. getenv函数:获取指定的环境变量 2. environ获取环境变量 四、本地变量 五、定义环境变量的方法 临时定义(仅对当前会话有效) 永…...
【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
数据结构1-4 队列
一、队列是什么? 先举一个日常例子,排队买饭。 排队买饭 大家按先来后到的顺序,在窗口前排队买饭,先到先得,买完之后走开,轮到下一位买,新来的人排在队尾,不能插队。 可见&#x…...
地弹与振铃
地弹(Ground Bounce)和振铃(Ringing)是数字电路中常见的信号完整性问题,两者都与高速开关和寄生参数有关,但表现形式和成因不同。以下是它们的对比及解决方法: 1. 地弹(Ground Bounc…...
单一职责原则(设计模式)
目录 问题: 定义: 解决: 方式 1:使用策略模式 示例:用户管理 方式 2:使用装饰者模式 示例:用户操作 方式 3:使用责任链模式 示例:用户操作链 总结 推荐 问题&a…...
蓝桥杯深秋的苹果
题目 当深秋的苹果树丰收时,村庄的居民们兴致勃勃地采摘着红彤彤的苹果。他们将采摘下来的 NN 个苹果排成了一排,形成了一个苹果序列 AA,第 ii 个苹果的甜度值为 AiAi(1≤i≤N1≤i≤N)。 现在村民需要将苹果序列划…...
【网页视频背景闪烁问题分析与解决方案】
网页视频背景闪烁问题分析与解决方案 现象描述 在开发带有视频背景的网页时,我们遇到了一个棘手的问题:当用户滚动页面时,视频背景区域会出现明显的闪烁现象,具体表现为: 文字内容会突然变亮或变大视频背景会突然变…...
Server 6 ,VMware 解析,ESXi 与 Workstation 应用指南(VMware ESXi 与 VMware Workstation)
目录 前言 一、VMware公司介绍 二、主要产品和技术 2.1 服务器虚拟化 2.2 桌面虚拟化 2.3 网络虚拟化与安全 2.4 云管理平台 2.5 存储与可用性 三、VMware ESXi 3.1 ESXi 是什么“超级神器” 3.2 安装与网络配置如何掌握 3.3 访问与管理如何玩转 3.4 下载地址与官网…...
今天你学C++了吗?——string(上)
♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...
使用通义万相Wan2.1进行视频生成
使用通义万相Wan2.1进行视频生成 源代码准备运行环境准备创建Python虚拟环境并激活安装依赖包 模型下载生成视频官网的视频生成例子简单描述场景视频生成示例详细描述场景视频生成示例 最近通义万相开源了其视频生成模型。模型有两个版本,一个是1.3B的,一…...
Windows在多网络下指定上网接口
Windows在多网络下指定上网接口 一、说明 设备情况:win11,同时连接了有线网和WLAN,有线网连接着NAS必须保持连接。需求:有些情况时,有线网无网络而WLAN有网,但系统仍走着有线导致无法上网。 二、方法 过…...
前端正则表达式完全指南:从入门到实战
文章目录 第一章:正则表达式基础概念1.1 什么是正则表达式1.2 正则表达式工作原理1.3 基础示例演示 第二章:正则表达式核心语法2.1 元字符大全表2.2 量词系统详解2.3 字符集合与排除 第三章:前端常用正则模式3.1 表单验证类3.1.1 邮箱验证3.1…...
【愚公系列】《Python网络爬虫从入门到精通》038-SQLite数据库
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
npx degit 问题:could not fetch remote...
问题与处理策略 问题描述 npx degit dream-num/univer-sheet-start-kit univer-sheet-start-kit执行上述指令,报如下错误 ! could not fetch remote https://github.com/dream-num/univer-sheet-start-kit ! could not find commit hash for HEAD# 翻译无法获取远…...
空投与转账:Solana代币核心概念及代码实战精解
目录 1.空投和转账概念 1.1.空投(Airdrop) 1.2.转账(Transfer) 2.Solana 代币创建与空投核心代码总结 2.1. 代币创建核心代码 2.2. 添加元数据核心代码 2.3. 空投代币核心代码 3.效果图展示 1.空投和转账概念 1.1.空投(Airdrop) 创建新代币: 空投是铸造(Mint)新代币…...
Rust~tokio的AsyncRead
AsyncRead trait 定义 介绍 /// This trait is analogous to the [std::io::Read] trait, but integrates with /// the asynchronous task system. In particular, the [poll_read] method, /// unlike [Read::read], will automatically queue the current task for wakeup…...
NO.22十六届蓝桥杯备战|一维数组|七道练习|冒泡排序(C++)
B2093 查找特定的值 - 洛谷 题⽬要求下标是从0开始的,和数组的下标是吻合的,存放数据应该从下标0开始n的取值范围是1~10000数组中存放的值的绝对值不超10000,说明int类型就⾜够了找到了输出下标,找不到要输出-1,这⼀点…...
Linux下的网络通信编程
在不同主机之间,进行进程间的通信。 1解决主机之间硬件的互通 2.解决主机之间软件的互通. 3.IP地址:来区分不同的主机(软件地址) 4.MAC地址:硬件地址 5.端口号:区分同一主机上的不同应用进程 网络协议…...
【JavaWeb13】了解ES6的核心特性,对于提高JavaScript编程效率有哪些潜在影响?
文章目录 🌍一. ES6 新特性❄️1. ES6 基本介绍❄️2. 基本使用2.1 let 声明变量2.2 const 声明常量/只读变量2.3 解构赋值2.4 模板字符串2.5 对象拓展运算符2.6 箭头函数 🌍二. Promise❄️1. 基本使用❄️2. 如何解决回调地狱问题2.1回调地狱问题2.2 使…...
每日一题之屏蔽信号
问题描述 在与三体文明的对抗中,人类联邦探测到了两个重要的信号源,分别用非负整数 aa 和 bb 来表示。 为了抵御三体舰队的入侵,科学家们制定出一项关键策略——屏蔽信号,目标是要让 aa、bb 这两个信号源其中之一的数值归零。 在…...
TCP如何保证可靠性
目录 回顾TCP协议TCP报文头部 TCP如何保证可靠性?校验和序列号确认应答机制(ACK)超时重传机制连接管理机制(三次握手和四次挥手)流量控制滑动窗口滑动机制 拥塞控制慢开始 & 拥塞避免快重传 & 快恢复 回顾TCP协…...
HTTP协议深度解析:从Tomcat到HTTPS的全方位探索
目录 引言 一、Tomcat部署与Servlet容器 1.1 Tomcat部署流程 1.2 Tomcat与Servlet 二、HTTP协议的基础构成 2.1 URL 2.2 HTTP请求与响应 2.3 HTTP状态码 三、计算机网络与数据传输 3.1 局域网与路由器 3.2 IP地址与MAC地址 3.3 域名与DNS 四、HTTPS协议与数据加密…...
互联网医院实时数据监测智能分析系统设计概述(下)
阶段4:可视化仪表盘与用户界面开发 在这一阶段,我们将使用 Plotly Dash 来设计一个实时预测仪表盘,用于展示疾病传播趋势、医生评估信息等。我们还将实现实时数据更新与展示,确保数据能够及时反映系统中的变化。 1. 设计实时预测仪表盘 步骤 1:安装 Dash 依赖 首先,确…...
性能测试测试策略制定|知名软件测评机构经验分享
随着互联网产品的普及,产品面对的用户量级也越来越大,能抗住指数级增长的瞬间访问量以及交易量是保障购物体验是否顺畅的至关重要的一环,而我们的性能测试恰恰也是为此而存在的。 性能测试是什么呢?性能测试要怎么测呢?…...
【AI+智造】在阿里云Ubuntu 24.04上部署DeepSeek R1 14B的完整方案
作者:Odoo技术开发/资深信息化负责人 日期:2025年2月28日 一、部署背景与目标 DeepSeek R1作为国产大语言模型的代表,凭借其强化学习驱动的推理能力,在复杂任务(如数学问题、编程逻辑)中表现优异。本地化部…...
蓝桥真题讲解
温馨提示:本系列文章非所有题都对对b组适用,b组的小伙伴请挑题看! 目录 第一题 题目链接 题目解析 代码原理 代码编写 本题总结 第二题 题目链接 题目解析 代码原理 代码编写 本题总结 第三题 题目链接 题目解析 代码原理 …...
javaweb将上传的图片保存在项目文件webapp下的upload文件夹下
前端HTML表单 (upload.html) 首先,创建一个HTML页面,允许用户选择并上传图片。 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>图片上传</title> </head> <…...
北京大学DeepSeek与AIGC应用(PDF无套路下载)
近年来,人工智能技术飞速发展,尤其是大模型和生成式AI(AIGC)的突破,正在重塑各行各业的生产方式与创新路径。 北京大学联合DeepSeek团队推出的内部研讨教程《DeepSeek与AIGC应用》,以通俗易懂的方式系统解…...
测量海拔以及两点间路程(十六)
一、DigitalEarthView.cpp void CDigitalEarthView::OnCheckCheliang() {isTestJu = !isTestJu;mOSG->isTestJu(isTestJu); } 二、OSGObject.cpp void COSGObject::isTestJu(bool isTest) {theApp.bNeedModify = TRUE;while(!theApp.bCanModify)Sleep(1);if(isTest){eh-&…...