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

JVM_类的加载、链接、初始化、卸载、主动使用、被动使用

①. 说说类加载分几步?

  • ①. 按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:

  1. 第一过程的加载(loading)也称为装载
  2. 验证、准备、解析3个部分统称为链接(Linking)
  3. 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载

②. 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载、类的链接、类的初始化这三个步骤来对类进行初始化。如果不出现意外,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或者初始化

③. 从程序中类的使用过程看:

    ②. 过程一:类的加载(Loading)

    • ①. 类的加载指的是将类的.class文件中的二进制数据读取到内存中,存放在运行时数据区的方法区中,并创建一个大的Java.lang.Class对象,用来封装方法区内的数据结构 在加载类时,Java虚拟机必须完成以下3件事情:

    ②. 对于①的说明,我们也可以这样去理解:所谓装载(加载),简而言之就是将Java类的字节码文件加载到机器内存中,并在内存中构建出Java类的原型——类模板对象

    (所谓类模板对象,其实就是Java类在JVM内存中的一个快照,JVM将从字节码文件中解析出的常量池、类字段、类方法等信息存储到类模板中,这样JVM在运行期便能通过类模板而获取Java类中的任意信息,能够对Java类的成员变量进行遍历,也能进行Java方法的调用)

    ③. 对于类的二进制数据流,虚拟机可以通过多种途径产生或获得(只要所读取的字节码符合JVM规范即可)

    1.虚拟机可能通过文件系统读入一个class后缀的文件(最常见)

    2.读入jar、zip等归档数据包,提取类文件。

    3.事先存放在数据库中的类的二进制数据

    4.使用类似于HTTP之类的协议通过网络进行加载

    5.在运行时生成一段Class的二进制信息等

    ④. Class实例的位置

    (类将.class文件加载至元空间后,会在堆中创建一个Java.lang.Class对象,用来封装类位于方法区内的数据结构,该Class对象是在加载类的过程中创建的,每个类都对应有一个Class类型的对象)

    1. 通过类的全名,获取类的二进制数据流
    2. 解析类的二进制数据流为方法区内的数据结构(Java类模型)
    3. 创建java.lang.Class类的实例,表示该类型。作为方法区这个类的各种数据的访问入口

    ③. 过程二:链接(Linking)

    • ①. 验证:确保Class文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的正确性

      1.  

      1.目的是确保Class文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的正确性,不会危害虚拟机自身安全
      2.主要包括四种验证:文件格式验证,元数据验证,字节码验证,符号引用验证
      3.格式检查:是否以魔术oxCAFEBABE开头,主版本和副版本是否在当前Java虚拟机的支持范围内,数据中每一项是否都拥有正确的长度等

        ②. 准备(静态变量,不能是常量)

          1.为类变量分配内存并且设置该类变量的默认初始化值
          2.这里不包含用final修饰的static,因为final在编译的时候就会分配了,准备阶段会显式赋值
          3.这里不会为实例变量分配初始化,类变量会分配在方法区中,而实例变量会随着对象一起分配到Java堆中
          4.注意:Java并不支持boolean类型,对于boolean类型,内部实现是int,由于int的默认值是0,故对应的,boolean的默认值就是false

            public class ClassInitTest {private  static int num=1; //类变量的赋值动作//静态代码快中的语句static{num=2;number=20;System.out.println(num);//System.out.println(number); 报错:非法的前向引用}//Linking之prepare: number=0 -->initial:20-->10private static int number=10;public static void main(String[] args) {System.out.println(ClassInitTest.num);System.out.println(ClassInitTest.number);}
            }
            

          • ③. 若该类具有父类,Jvm会保证子类的< clinit >() 执行前,父类的< clinit >() 已经执行完成。clinit 不同于类的构造方法(init) (由父及子,静态先行)

           

          public class ClinitTest1 {static class Father{public static int A=1;static{A=2;}}static class Son extends Father{public static int B=A;}public static void main(String[] args) {//这个输出2,则说明父类已经全部加载完毕System.out.println(Son.B);}
          }
          

           

          /*** @author TANGZHI* @create 2021-01-01 18:49* 哪些场景下,java编译器就不会生成<clinit>()方法*/
          public class InitializationTest1 {//场景1:对应非静态的字段,不管是否进行了显式赋值,都不会生成<clinit>()方法public int num = 1;//场景2:静态的字段,没有显式的赋值,不会生成<clinit>()方法public static int num1;//场景3:比如对于声明为static final的基本数据类型的字段,不管是否进行了显式赋值,都不会生成<clinit>()方法public static final int num2 = 1;
          }
          

           

          
          /*** @author TANGZHI* @create 2021-01-01 ** 说明:使用static + final修饰的字段的显式赋值的操作,到底是在哪个阶段进行的赋值?* 情况1:在链接阶段的准备环节赋值* 情况2:在初始化阶段<clinit>()中赋值* 结论:* 在链接阶段的准备环节赋值的情况:* 1. 对于基本数据类型的字段来说,如果使用static final修饰,则显式赋值(直接赋值常量,而非调用方法)通常是在链接阶段的准备环节进行* 2. 对于String来说,如果使用字面量的方式赋值,使用static final修饰的话,则显式赋值通常是在链接阶段的准备环节进行** 在初始化阶段<clinit>()中赋值的情况:* 排除上述的在准备环节赋值的情况之外的情况。* 最终结论:使用static + final修饰,且显示赋值中不涉及到方法或构造器调用的基本数据类型或String类型的显式赋值,是在链接阶段的准备环节进行。*/
          public class InitializationTest2 {public static int a = 1;//在初始化阶段<clinit>()中赋值public static final int INT_CONSTANT = 10;//在链接阶段的准备环节赋值public static final Integer INTEGER_CONSTANT1 = Integer.valueOf(100);//在初始化阶段<clinit>()中赋值public static Integer INTEGER_CONSTANT2 = Integer.valueOf(1000);//在初始化阶段<clinit>()中赋值public static final String s0 = "helloworld0";//在链接阶段的准备环节赋值public static final String s1 = new String("helloworld1");//在初始化阶段<clinit>()中赋值public static String s2 = "helloworld2";public static final int NUM1 = new Random().nextInt(10);//在初始化阶段<clinit>()中赋值
          }
          

           

          package com.xiaozhi;/*** @author TANGZHI* @create 2021-05-25*/
          class StaticA {static {try {Thread.sleep(1000);} catch (InterruptedException e) {}try {Class.forName("com.xiaozhi.StaticB");} catch (ClassNotFoundException e) {e.printStackTrace();}System.out.println("StaticA init OK");}
          }class StaticB {static {try {Thread.sleep(1000);} catch (InterruptedException e) {}try {Class.forName("com.xiaozhi.StaticA");} catch (ClassNotFoundException e) {e.printStackTrace();}System.out.println("StaticB init OK");}
          }public class StaticDeadLockMain extends Thread {private char flag;public StaticDeadLockMain(char flag) {this.flag = flag;this.setName("Thread" + flag);}@Overridepublic void run() {try {Class.forName("com.xiaozhi.Static" + flag);} catch (ClassNotFoundException e) {e.printStackTrace();}System.out.println(getName() + " over");}public static void main(String[] args) throws InterruptedException {StaticDeadLockMain loadA = new StaticDeadLockMain('A');loadA.start();StaticDeadLockMain loadB = new StaticDeadLockMain('B');loadB.start();}
          }
          

          ⑤. 主动引用(触发在初始化阶段的Clinit方法)

             

            # 注意,如果把A接口中的默认方法注释,那么就只输出:子类初始化......
            输出:
            CompareB的初始化
            子类初始化.....
            public class DemoB implements A{
                static{
                    System.out.println("子类初始化......");
                }
                public static void main(String[] args) {

                }
            }
            interface A{
                public static final Thread t = new Thread() {
                    {
                        System.out.println("CompareB的初始化");
                    }
                };
                default void method1(){
                    System.out.println("====");
                }
            }
             

            ⑥. 被动使用

            ⑦. 过程四:类的Using(使用)

            ⑧. 过程五:类的Unloading(卸载)

                      相关文章:

                      JVM_类的加载、链接、初始化、卸载、主动使用、被动使用

                      ①. 说说类加载分几步&#xff1f; ①. 按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段: 第一过程的加载(loading)也称为装载验证、准备、解析3个部分统称为链接(Linking)在Java中数据类型分为基本数据类型和引用数据…...

                      数论问题79一一研究成果

                      (豆包智能搜索一一李扩继) 李扩继是一位在数学研究尤其是哥德巴赫猜想研究领域有一定成果的中学老师&#xff0c;以下是关于他的具体介绍&#xff1a; ①研究经历&#xff1a;2006年承担咸阳市教研室的立项课题《角谷猜想的研究》&#xff0c;虽未完成角谷猜想的证明&#xff…...

                      【DeepSeek-V3】AI Model Evaluation Framework and index schedule AI模型能力评价指标及对比

                      文章目录 AI 模型评估体系 | AI Model Evaluation Framework1. 模型架构信息 | Model Architecture Information2. 英语能力评估 | English Language Proficiency3. 编程能力评估 | Programming Capability Metrics4. 数学能力评估 | Mathematical Capability Assessment5. 中文…...

                      《程序人生》工作2年感悟

                      一些杂七杂八的感悟&#xff1a; 1.把事做好比什么都重要&#xff0c; 先树立量良好的形象&#xff0c;再横向发展。 2.职场就是人情世故&#xff0c;但也不要被人情世故绑架。 3.要常怀感恩的心&#xff0c;要记住帮助过你的人&#xff0c;愿意和你分享的人&#xff0c;有能力…...

                      Elasticsearch的开发工具(Dev Tools)

                      目录 说明1. **Console**2. **Search Profiler**3. **Grok Debugger**4. **Painless Lab**总结 说明 Elasticsearch的开发工具&#xff08;Dev Tools&#xff09;在Kibana中提供了多种功能强大的工具&#xff0c;用于调试、优化和测试Elasticsearch查询和脚本。以下是关于Cons…...

                      22_解析XML配置文件_List列表

                      解析XML文件 需要先 1.【加载XML文件】 而 【加载XML】文件有两种方式 【第一种 —— 使用Unity资源系统加载文件】 TextAsset xml Resources.Load<TextAsset>(filePath); XmlDocument doc new XmlDocument(); doc.LoadXml(xml.text); 【第二种 —— 在C#文件IO…...

                      智慧园区管理平台实现智能整合提升企业运营模式与管理效率

                      内容概要 在当今数字化的背景下&#xff0c;智慧园区管理平台正逐渐成为企业提升运营效率和管理模式的重要工具。这个平台汇聚了多种先进技术&#xff0c;旨在通过智能整合各类资源与信息&#xff0c;帮助企业实现全面的管理创新。 智慧园区管理平台不仅仅是一个数据处理工具…...

                      从规则到神经网络:机器翻译技术的演进与未来展望

                      从规则到神经网络:机器翻译技术的演进与未来展望 引言 还记得早些年用翻译软件翻译一句简单的英文句子,却发现翻译结果让人啼笑皆非的日子吗?从“我喜欢吃苹果”被翻译成“我喜欢吃苹果电脑”,到今天的神经网络机器翻译(Neural Machine Translation, NMT)能够生成语义流…...

                      [MySQL]事务的隔离级别原理与底层实现

                      目录 1.为什么要有隔离性 2.事务的隔离级别 读未提交 读提交 可重复读 串行化 3.演示事务隔离级别的操作 查看与设置事务的隔离级别 演示读提交操作 演示可重复读操作 1.为什么要有隔离性 在真正的业务场景下&#xff0c;MySQL服务在同一时间一定会有大量的客户端进程…...

                      hdfs:介绍三个脚本

                      1、jps-cluster.sh 如果我们想在Bigdata01 这台电脑上&#xff0c;查看整个集群的服务启动情况&#xff0c;可以使用这个脚本文件。 #!/bin/bash USAGE"使⽤⽅法&#xff1a;sh jps-cluster.sh" NODES("bigdata01" "bigdata02" "bigdata03…...

                      【Oracle篇】使用Hint对优化器的执行计划进行干预(含单表、多表、查询块、声明四大类Hint干预)

                      &#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;从事IT领域✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(…...

                      【Rust自学】15.7. 循环引用导致内存泄漏

                      说句题外话&#xff0c;这篇文章真心很难&#xff0c;有看不懂可以在评论区问&#xff0c;我会尽快作答的。 喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω…...

                      4.scala默认参数值

                      Scala具备给参数提供默认值的能力&#xff0c;这样调用者就可以忽略这些具有默认值的参数。 def log(message: String, level: String "INFO") println(s"$level: $message")log("System starting") // prints INFO: System starting log(&q…...

                      前端知识速记—JS篇:null 与 undefined

                      前端知识速记—JS篇&#xff1a;null 与 undefined 什么是 null 和 undefined&#xff1f; 1. undefined 的含义 undefined 是 JavaScript 中默认的值&#xff0c;表示某个变量已被声明但尚未被赋值。当尝试访问一个未初始化的变量、函数没有返回值时&#xff0c;都会得到 u…...

                      微信小程序中常见的 跳转方式 及其特点的表格总结(wx.navigateTo 适合需要返回上一页的场景)

                      文章目录 详细说明总结wx.navigateTo 的特点为什么 wx.navigateTo 最常用&#xff1f;其他跳转方式的使用频率总结 以下是微信小程序中常见的跳转方式及其特点的表格总结&#xff1a; 跳转方式API 方法特点适用场景wx.navigateTowx.navigateTo({ url: 路径 })保留当前页面&…...

                      【人工智能】基于Python的机器翻译系统,从RNN到Transformer的演进与实现

                      《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 机器翻译(Machine Translation, MT)作为自然语言处理领域的重要应用之一,近年来受到了广泛的关注。在本篇文章中,我们将详细探讨如何使…...

                      蓝桥备赛指南(5)

                      queue队列 queue是一种先进先出的数据结构。它提供了一组函数来操作和访问元素&#xff0c;但它的功能相对较简单&#xff0c;queue函数的内部实现了底层容器来存储元素&#xff0c;并且只能通过特定的函数来访问和操作元素。 queue函数的常用函数 1.push()函数&#xff1a;…...

                      蓝桥云客 好数

                      0好数 - 蓝桥云课 问题描述 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位…&#xff09;上的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位…&#xff09;上的数字是偶数&#xff0c;我们就称之为“好数”。 给定一个正…...

                      CF 764B.Timofey and cubes(Java实现)

                      题目分析 输入n个数字&#xff0c;首尾交换&#xff0c;奇数对换&#xff0c;偶数对不换 思路分析 存入数组&#xff0c;遍历时判断i%20时(数组下标0开始&#xff0c;所以题目分析没有错)&#xff0c;对换 代码 import java.util.*;public class Main {public static void ma…...

                      四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)

                      四.3 Redis 五大数据类型/结构的详细说明/详细使用&#xff08; hash 哈希表数据类型详解和使用&#xff09; 文章目录 四.3 Redis 五大数据类型/结构的详细说明/详细使用&#xff08; hash 哈希表数据类型详解和使用&#xff09;2.hash 哈希表常用指令(详细讲解说明)2.1 hset …...

                      AIGC(生成式AI)试用 20 -- deepseek 初识

                      >> 基本概念 Ollama -- 运行大模型&#xff0c;管理运行AI大模型的工具&#xff0c;用来安装布置DeepSeek https://ollama.com/ , Get up and running with large language models. AnythingLLM -- 大模型增强应用&#xff0c;GUI大模型交互程序 Download AnythingLLM …...

                      你好!这是我自己的CSDN博客!

                      写于2025年1月30日 我是一个普通的嵌入式软件程序员&#xff0c;喜欢研究Linux&#xff08;应用层跟内核从都有粗浅的涉略&#xff09;&#xff0c;单片机&#xff0c;操作系统和计算机体系架构等内容&#xff0c;目前是一枚普通的本科生。 笔者是一个朴素的开源主义者&#xf…...

                      将pandas.core.series.Series类型的小数转化成百分数

                      大年初二&#xff0c;大家过年好&#xff0c;蛇年行大运&#xff01; 今天在编写一个代码的时候&#xff0c;使用 import pandas as pd产生了pandas.core.series.Series类型的数据&#xff0c;里面有小数&#xff0c;样式如下&#xff1a; 目的&#xff1a;将这些小数转化为百…...

                      [EAI-027] RDT-1B,目前最大的用于机器人双臂操作的机器人基础模型

                      Paper Card 论文标题&#xff1a;RDT-1B: a Diffusion Foundation Model for Bimanual Manipulation 论文作者&#xff1a;Songming Liu, Lingxuan Wu, Bangguo Li, Hengkai Tan, Huayu Chen, Zhengyi Wang, Ke Xu, Hang Su, Jun Zhu 论文链接&#xff1a;https://arxiv.org/ab…...

                      oracle中使用in 和 not in 查询效率分析

                      在Oracle数据库中&#xff0c;IN和NOT IN的查询效率受多种因素影响&#xff0c;以下是关键点总结和优化建议&#xff1a; 1. IN 的效率 优化方式&#xff1a; IN 通常会被优化为 OR条件 或 半连接&#xff08;Semi-Join&#xff09;&#xff0c;如果子查询关联到外部表&#x…...

                      【python】四帧差法实现运动目标检测

                      四帧差法是一种运动目标检测技术&#xff0c;它通过比较连续四帧图像之间的差异来检测运动物体。这种方法可以在一定的程度上提高检测的准确性。 目录 1 方案 2 实践 ① 代码 ② 效果图 1 方案 具体的步骤如下&#xff1a; ① 读取视频流&#xff1a;使用cv2.VideoCapture…...

                      指针的介绍4【回调函数、qsort函数的运用】

                      1.回调函数 1.1定义 回调函数就是通过函数指针而被调用的函数 把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#xff0c;被调⽤的函数就是回调函数 回调函数不是由该函数的实现⽅直接调⽤&#xff0…...

                      Attention Free Transformer (AFT)-2020论文笔记

                      名称&#xff1a; Attention Free Transformer (AFT) 来源&#xff1a; [2105.14103] An Attention Free Transformer 相关工作&#xff1a; #Approximatingthedotproduct #Sparselocalattention #Contextcompression #Eliminatingdotproductattention #MLPsforvision 创…...

                      Pyside的QWebEngineProfile类

                      QWebEngineProfile 是 PySide/Qt 中用于管理浏览器引擎&#xff08;WebEngine&#xff09;配置的类&#xff0c;属于 QtWebEngineCore 模块。它主要用于控制网页的全局行为&#xff0c;例如缓存、Cookie、持久化存储、用户代理&#xff08;User-Agent&#xff09;、代理设置等。…...

                      Java继承中的静态方法隐藏与实例变量隐藏:深入解析与最佳实践

                      引言 在Java面向对象编程中&#xff0c;继承是实现代码复用的核心机制。然而&#xff0c;继承中的静态方法&#xff08;static&#xff09;和实例变量的行为常常让开发者感到困惑。许多初学者甚至经验丰富的程序员容易混淆方法覆盖&#xff08;Override&#xff09;、方法隐藏…...

                      day6手机摄影社区,可以去苹果摄影社区学习拍摄技巧

                      逛自己手机的社区&#xff1a;即&#xff08;手机牌子&#xff09;摄影社区 拍照时防止抖动可以控制自己的呼吸&#xff0c;不要大喘气 拍一张照片后&#xff0c;如何简单的用手机修图&#xff1f; HDR模式就是让高光部分和阴影部分更协调&#xff08;拍风紧时可以打开&…...

                      从AD的原理图自动提取引脚网络的小工具

                      这里跟大家分享一个我自己写的小软件&#xff0c;实现从AD的原理图里自动找出网络名称和引脚的对应。存成文本方便后续做表格或是使用简单行列编辑生成引脚约束文件&#xff08;如.XDC .UCF .TCL等&#xff09;。 我们在FPGA设计中需要引脚锁定文件&#xff0c;就是指示TOP层…...

                      H3CNE-31-BFD

                      Bidirectional Forwarding Dection&#xff0c;双向转发检查 作用&#xff1a;毫秒级故障检查&#xff0c;通常结合三层协议&#xff08;静态路由、vrrp、ospf、BGP等&#xff09;&#xff0c;实现链路故障快速检查。 BFD配置示例 没有中间的SW&#xff0c;接口down&#xff…...

                      Linux安装zookeeper

                      1, 下载 Apache ZooKeeperhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apa…...

                      QPS 值是怎样进行计算和应用的

                      1. QPS 值的定义 QPS&#xff08;Queries Per Second&#xff09;&#xff0c;即每秒查询率&#xff0c;指一台服务器每秒能够相应 的查询次数&#xff0c;是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。它表示系统在某一特定时间内能够处理的查询请求的数量…...

                      【视频+图文详解】HTML基础4-html标签的基本使用

                      图文教程 html标签的基本使用 无序列表 作用&#xff1a;定义一个没有顺序的列表结构 由两个标签组成&#xff1a;<ul>以及<li>&#xff08;两个标签都属于容器级标签&#xff0c;其中ul只能嵌套li标签&#xff0c;但li标签能嵌套任何标签&#xff0c;甚至ul标…...

                      内外网文件摆渡企业常见应用场景和对应方案

                      在如今的企业环境中&#xff0c;内外网文件摆渡的需求越来越常见&#xff0c;也变得越来越重要。随着信息化的不断推进&#xff0c;企业内部和外部之间的数据交换越来越频繁&#xff0c;如何安全、高效地进行文件传输成了一个关键问题。今天&#xff0c;咱就来聊聊内外网文件摆…...

                      基于微信小程序的新闻资讯系统设计与实现(LW+源码+讲解)

                      专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

                      透视B/S架构与C/S架构:构建未来网络应用的智慧选择

                      透视B/S架构与C/S架构&#xff1a;构建未来网络应用的智慧选择 在信息技术迅猛发展的今天&#xff0c;网络架构的选择对企业和开发者来说至关重要。B/S架构&#xff08;Browser/Server&#xff09;与C/S架构&#xff08;Client/Server&#xff09;是两种主流的架构模式&#x…...

                      受击反馈HitReact、死亡效果Death Dissolve、Floating伤害值Text(末尾附 客户端RPC )

                      受击反馈HitReact 设置角色受击标签 (GameplayTag基本了解待补充) 角色监听标签并设置移动速度 创建一个受击技能&#xff0c;并应用GE 实现设置角色的受击蒙太奇动画 实现角色受击时播放蒙太奇动画&#xff0c;为了保证通用性&#xff0c;将其设置为一个函数&#xff0c;并…...

                      【网络】3.HTTP(讲解HTTP协议和写HTTP服务)

                      目录 1 认识URL1.1 URI的格式 2 HTTP协议2.1 请求报文2.2 响应报文 3 模拟HTTP3.1 Socket.hpp3.2 HttpServer.hpp3.2.1 start()3.2.2 ThreadRun()3.2.3 HandlerHttp&#xff08;&#xff09; 总结 1 认识URL 什么是URI&#xff1f; URI 是 Uniform Resource Identifier的缩写&…...

                      mysql_init和mysql_real_connect的形象化认识

                      解析总结 1. mysql_init 的作用 mysql_init 用于初始化一个 MYSQL 结构体&#xff0c;为后续数据库连接和操作做准备。该结构体存储连接配置及状态信息&#xff0c;是 MySQL C API 的核心句柄。 示例&#xff1a; MYSQL *conn mysql_init(NULL); // 初始化连接句柄2. mysql_…...

                      01.01、判定字符是否唯一

                      01.01、[简单] 判定字符是否唯一 1、题目描述 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同。 在这一题中&#xff0c;我们的任务是判断一个字符串 s 中的所有字符是否全都不同。我们将讨论两种不同的方法来解决这个问题&#xff0c;并详细解释每种方法…...

                      [NOIP2007]矩阵取数游戏

                      点我写题 题目描述 帅帅经常跟同学玩一个矩阵取数游戏&#xff1a;对于一个给定的n*m的矩阵&#xff0c;矩阵中的每个元素aij均为非负整数。游戏规则如下&#xff1a; 1.每次取数时须从每行各取走一个元素&#xff0c;共n个。m次后取完矩阵所有元素&#xff1b; 2.每次取走的…...

                      C++模板初识

                      文章目录 一、函数模板1. 函数模板2. 函数模板、模板的特例化、非模板函数的重载关系3. 外部调用4. 模板的非类型参数5. 代码示例 二、类模板 一、函数模板 1. 函数模板 模板函数&#xff1a;在函数调用点&#xff0c;编译器用用户指定的类型&#xff0c;从原模板实例化一份函…...

                      C# Winform制作一个登录系统

                      using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace 登录 {p…...

                      Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException

                      文章目录 Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException: The message is 1,048,576 bytes when serialized which is larger than the maximum request size.1. 错误解析2. 错误原因3. 错误复现案例3.1 生产者发送超大消息 4. 解决方案4.1 方法 1&…...

                      Python | Pytorch | Tensor知识点总结

                      如是我闻&#xff1a; Tensor 是我们接触Pytorch了解到的第一个概念&#xff0c;这里是一个关于 PyTorch Tensor 主题的知识点总结&#xff0c;涵盖了 Tensor 的基本概念、创建方式、运算操作、梯度计算和 GPU 加速等内容。 1. Tensor 基本概念 Tensor 是 PyTorch 的核心数据结…...

                      arm-linux-gnueabihf安装

                      Linaro Releases windows下打开wsl2中的ubuntu&#xff0c;资源管理器中输入&#xff1a; \\wsl$gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 复制到/home/ark01/tool 在 Ubuntu 中创建目录&#xff1a; /usr/local/arm&#xff0c;命令如下&#xff1a; …...

                      C++ 堆栈分配的区别

                      这两种声明方式有什么区别 1.使用 new 关键字动态分配内存 动态分配&#xff1a;使用 new 关键字会在堆&#xff08;heap&#xff09;上分配内存&#xff0c;并返回一个指向该内存位置的指针。生命周期&#xff1a;对象的生命周期不会随着声明它的作用域结束而结束&#xff0…...