自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 收藏
  • 关注

原创 Java Spring boot 注解笔记

个人理解相当于,如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。@Bean:相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

2022-09-06 22:03:18 161 1

原创 CA数字证书

由公钥加密的信息只能由与之相对应的私钥解密。数字证书中含有密钥对(公钥和私钥)所有者的识别信息,通过验证识别信息的真伪实现对证书持有者身份的认证。在CA判明申请者的身份后,便为他分配一个公钥,并且CA将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。网上的公众用户通过验证CA的签字从而信任CA,任何人都可以得到CA的证书(含公钥),用以验证它所签发的证书。如果一个用户想鉴别另一个证书的真伪,他就用CA的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。...

2022-07-20 09:40:27 737

原创 关于AQS的部分总结(一)

AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 ReentrantLock,Semaphore,其他的诸如 ReentrantReadWriteLock,SynchronousQueue,FutureTask(jdk1.7) 等等皆是基于 AQS 的。当然,我们自己也能利用 AQS 非常轻松容易地构造出符合我们自己需求的同步器。AQS 原理概览AQS 核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享

2022-06-30 20:03:52 177 1

原创 在浏览器中输入www.baidu.com发生了什么,用了哪些层的协议

整个流程如下:域名解析为了将消息从你的PC上传到服务器上,需要用到IP协议、ARP协议和OSPF协议。发起TCP的三次握手建立TCP连接后发起HTTP请求服务器响应HTTP请求浏览器解析html代码,并请求HTML代码中的资源(如js、css、图片等)断开TCP连接浏览器对页面进行渲染呈现给用户1、由域名解析得到ip地址(依次经过浏览器缓存,系统缓存,hosts文件,路由器缓存,递归搜索域名服务器)此时用到了DNS协议来获取域名对应的id2、三次握手建立tcp/ip连接tcp协议建立连接在网络层使用ip协议

2022-06-27 19:55:34 1996

原创 Topk问题和秒杀问题

(1)从1000个数据中找到k个最大数据首先看到这个题时,可能会想到先将这1000个数据进行降序排序,即取出的前k个元素最大。时间复杂度为O(N^2),使得程序效率低。思路:可先创建一个数组topK[k],将1000中的前k个数据放入数组topK中,将topK中的数据建小堆,则可保证堆的第一个元素是最小的,将第k个元素与堆中第一个元素比较,若大于,则交换。对堆进行重新建小堆,取第k+1个元素与堆中第一个元素比较,以此类推,直至1000-k个元素比较完。则此时堆中的元素就是k个最大数据。时间复杂度为 k*l

2022-06-20 19:58:01 195

原创 计算机网络TCP和UDP

UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机

2022-06-11 19:42:28 411

原创 java中的重写和重载

重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。 (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无

2022-06-10 19:58:42 321

原创 java中的封装

封装是面向对象程序设计四大基本概念之一,其余三个分别是继承,多态和抽象。封装是一种可以使类中的字段私有并能通过公有方法来访问私有字段的技术。如果一个字段被声明为私有,它就不能在类的外部被访问,从而隐藏了类内部的字段。基于这个原因,封装有时也被称为数据隐藏。封装可以被认为是一种能够保护代码和数据被定义在类外的其它代码任意访问的屏障。访问数据和代码由一个接口严格控制。封装的主要好处是修改实现的代码而又不会破坏其他人使用代码。封装的这个特性使代码具有可维护性、灵活性以及扩展性。封装的概念:将类的某些信息隐藏在类

2022-06-09 19:58:30 245

原创 java线程池(二)

只是对代码的分析每执行一次进行输出,也就是“nihao 123456”,返回true这里输出true这里通过循环创建了10个

2022-06-09 19:37:11 69

原创 java中的反射

反射的核心是在程序运行时动态的加载类并获取类的信息一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。而反射则是一开始并不知道我要初始化的类对象是什么反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。反射的实现1、class.forName(“全类名”):将字节码文件加载进内存,然后返回给class对象2、类名.class:通过类名获取class对象-----》一般知道类名称才使用3、对象.ge

2022-06-08 19:53:03 169

原创 java中的构造器

1.构造器要与类同名2.当我们new对象时,new 后边的方法就代表着我们的构造函数3.我们的每一个类当中都有一个默认的不显示的无参构造器,当我们这个类当中写一个构造器的时候,我们默认调用的就是我们显示的构造器4.我们的构造器是没有返回值的,如果有返回值,即便你的方法名和类名相同那么也不是构造函数5.我们的类当中是有一个或一个以上的构造函数构造器是一个创建对象时被自动调用的特殊方法,为的是初始化。构造器的名称应与类的名称一致。当创建一个个对象时,系统会该对象的属性默认初始化,基本类型属性的值为0(数值类型)

2022-06-08 19:49:20 765

原创 java异常体系

error 错误由jvm虚拟抛出exception 异常本身程序可以处理的错误可以用try catch 解决解决异常的方式:try----catch-----finally:try--catch---finally : 异常处理 一旦发生异常并被try--catch捕获,异常右try--catch处理,不会影响下边代码的指向 try: 对有可能存在异常的语句的使用 catch: 一旦try语句发生错误那就就走catch finally: 语句在任何条件下都会执行 --- 资源释放 throws----

2022-06-07 20:06:24 70

原创 java的多态

是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。a. 编译时多态:方法的重载;b. 运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态);a. 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是

2022-06-07 20:02:52 80

原创 java进程和线程

进程就是正在运行的程序,它是系统资源调度的独立单位,并且一个进程可以执行多个任务,而线程就是程序执行的任务,它是程序使用CPU的基本单位,因此也可以说线程是依赖于进程的。单进程的计算机一次只能做一件事情,而多进程的计算机可以做到一次做不同的事情,比如一边听音乐,一边听打游戏,这两件事情虽然感觉起来是在同时一起进行的,但其实是CPU在做着程序间的高效切换,这才让我们觉得是同时进行的。线程就是程序(进程)执行的任务,它分为单线程和多线程。单线程也就是做的事情专一,不会分神去做别的事,也就是程序只有一条执行路径;

2022-06-06 19:57:30 182

原创 java线程池

构建服务器应用程序的一个简单模型是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。实际上对于原型开发这种方法工作得很好,但如果试图部署以这种方式运行的服务器应用程序,那么这种方法的严重不足就很明显。每个请求对应一个线程(thread-per-request)方法的不足之一是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资源更多。除了创建和销毁线程的开销之外,活动的线程也消耗系统资源。在一个 JVM

2022-06-06 19:50:06 87

原创 什么是数据库索引

数据库索引其实就是为了使查询数据效率快。据库索引是用于提高数据库表的数据访问速度的。想要理解索引原理必须清楚一种数据结构「平衡树」(非二叉),也就是b tree或者 b+ tree 避免进行数据库全表的扫描,大多数情况,只需要扫描较少的索引页和数据页,而不是查询所有数据页。而且对于非聚集索引,有时不需要访问数据页即可得到数据。聚集索引可以避免数据插入操作,集中于表的最后一个数据页面。在某些情况下,索引可以避免排序操作。我们平时建表的时候都会为表加上主键, 在某些关系数据库中, 如果建表时不指定主键,

2022-06-05 19:48:07 435

原创 cookie 和session

cookie数据存放在客户的浏览器上,session数据放在服务器上如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端, 比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候,浏览器会将username一块发送给服务器,这些变量有一定的特殊标记。 服 务器会解释为 cookie变量。 所以只要不关闭浏览器,那么 cookie变量便一直是有效的,所以能够保证长时间不掉线。是存放在服务器端的类似于HashTable结构(每一

2022-06-05 19:40:07 103

原创 RBAC——基于角色的访问控制权限的基本模型

在RBAC中,用户不再直接与权限相连,而是通过“角色”这一属性来间接的被赋予权限,用户通过成为适当的角色来的到这些角色固有的权限,这样处理就解耦了用户与权限的关系。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。RBAC是间接关系示例:要建立五张表:用户表、...

2022-06-05 19:36:37 205

原创 基础数据类型、自动拆装箱

byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。1字节short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。2字节int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。4字节long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。8字节float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。4字节double:6

2022-06-04 20:15:36 106

原创 final、static 和 java static 乱斗

先初始化块(非静态) 然后初始化属性(非静态) 然后调初始化方法这是新建对象顺序先执行t1,然后t1里先执行初始化块,然后因为构造函数最后执行,先跳过去,然后下边是j,j是非静态的,执行,最后输出t1,然后t2也这样1 类加载从上往下执行,依次执行静态的初始化语句和初始化块,而且类加载优先于对象创建。(静态初始化语句和初始化块只加载一次)2 创建本类的对象时:从上往下执行一次非静态的初始化语向和初始化块,最后执行构造函数。3 创建另一个类对象时:先加载另一个类的静态语句和静态初始化块(同样也只是第一次

2022-06-04 14:28:16 70

原创 442. 数组中重复的数据

给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。思路参考:原地哈希给定数组长度为 nn,且所有数范围在 [1, n][1,n],找出出现次数超过一次的所有数字。利用值域与数字下标空间大小的等同关系,我们可以构造一种对应“关系”,使得每个数出现在它应该出现的位置:对于值为 kk

2022-05-11 21:32:33 85

原创 70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?思路:第n个台阶只能从第n-1或者n-2个上来。到第n-1个台阶的走法 + 第n-2个台阶的走法 = 到第n个台阶的走法,已经知道了第1个和第2个台阶的走法,一路加上去。class Solution { public int climbStairs(int n) { int[] dp = new int[n + 1]; dp[0] = 1;

2022-03-29 15:45:23 75

原创 2038. 如果相邻两个颜色均相同则删除当前颜色

共有 n个颜色片段排成一列,每个颜色片段要么是'A'要么是'B'。给你一个长度为n的字符串colors,其中colors[i]表示第i个颜色片段的颜色。Alice 和 Bob 在玩一个游戏,他们 轮流从这个字符串中删除颜色。Alice 先手。如果一个颜色片段为 'A'且 相邻两个颜色都是颜色 'A',那么 Alice 可以删除该颜色片段。Alice不可以删除任何颜色'B'片段。如果一个颜色片段为 'B'且 相邻两个颜色都是颜色 'B',那么 Bob...

2022-03-29 15:41:21 55

原创 606. 根据二叉树创建字符串

你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-string-from-binary-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目的意思是子节点需要用()来包裹。举例来说,二叉树[root,left,

2022-03-29 15:37:43 79

原创 589. N 叉树的前序遍历

给定一个 n叉树的根节点 root,返回其节点值的前序遍历。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值null分隔正常版(递归)class Solution { List<Integer> ans = new ArrayList<>(); public List<Integer> preorder(Node root) { dfs(root); return ans; ...

2022-03-29 15:29:56 355

原创 2055. 蜡烛之间的盘子

给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从 0开始的字符串s,它只包含字符'*' 和'|',其中'*'表示一个 盘子,'|'表示一支蜡烛。同时给你一个下标从 0开始的二维整数数组queries,其中queries[i] = [lefti, righti]表示 子字符串s[lefti...righti](包含左右端点的字符)。对于每个查询,你需要找到 子字符串中在 两支蜡烛之间的盘子的 数目。如果一个盘子在 子字符串中左边和右边 都至少有一支蜡...

2022-03-29 15:19:45 167

原创 2100. 适合打劫银行的日子

你和一群强盗准备打劫银行。给你一个下标从 0开始的整数数组security,其中security[i]是第 i天执勤警卫的数量。日子从 0开始编号。同时给你一个整数time。如果第 i天满足以下所有条件,我们称它为一个适合打劫银行的日子:第 i天前和后都分别至少有 time天。第 i天前连续 time天警卫数目都是非递增的。第 i天后连续 time天警卫数目都是非递减的。更正式的,第 i 天是一个合适打劫银行的日子当且仅当:security[i - time] ...

2022-03-29 15:13:38 130

原创 521. 最长特殊序列 Ⅰ

给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在,则返回 -1 。「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) 。字符串 s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。例如,"abc" 是 "aebdc" 的子序列,因为删除 "aebdc" 中斜体加粗的字符可以得到 "abc" 。 "aebdc" 的子序列还包括 "aebdc" 、 "aeb" 和 "" (空字符串)。来源:力扣(Leet

2022-03-29 15:08:02 31

原创 2104. 子数组范围和

给你一个整数数组 nums 。nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回 nums 中 所有 子数组范围的 和 。子数组是数组中一个连续 非空 的元素序列。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-subarray-ranges著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本人写法class Solution { public long subArra

2022-03-29 15:02:26 102

原创 172. 阶乘后的零

给定一个整数n,返回n!结果中尾随零的数量。public int trailingZeroes(int n) { int count = 0; while (n > 0) { count += n / 5; n = n / 5; } return count;} 首先题目的意思是末尾有几个0 比如6! = 【1* 2* 3* 4* 5* 6】 其中只有2*5末尾才有0,所以就可以抛去其他数据 ...

2022-03-29 14:49:07 50

原创 682. 棒球比赛

你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:整数 x - 表示本回合新获得分数 x"+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。"D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。

2022-03-29 14:42:41 31

原创 计算机网络——四次挥手

断开一个 TCP 连接则需要“四次挥手”: 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号 服务器-关闭与客户端的连接,发送一个FIN给客户端 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1 任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知

2022-02-18 19:52:05 72

原创 计算机网络——三次握手

客户端–发送带有 SYN 标志的数据包–一次握手–服务端 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端 三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常第二次握手:Client 确认了:自己发送、接收正常,对..

2022-02-18 19:51:29 116

原创 计算机网络的五层结构

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文。运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是

2022-02-18 19:49:24 970

原创 关于Duboo

什么是 Dubbo?Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。什么是 RPC?RPC原理是什么?什么是 RPC?RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算

2022-02-18 09:18:48 984

原创 聚集索引与非聚集索引

聚集索引聚集索引即索引结构和数据一起存放的索引。主键索引属于聚集索引。在 Mysql 中,InnoDB 引擎的表的 .ibd文件就包含了该表的索引和数据,对于 InnoDB 引擎表来说,该表的索引(B+树)的每个非叶子节点存储索引,叶子节点存储索引和索引对应的数据。聚集索引的优点聚集索引的查询速度非常的快,因为整个 B+树本身就是一颗多叉平衡树,叶子节点也都是有序的,定位到索引的节点,就相当于定位到了数据。聚集索引的缺点 依赖于有序的数据 :因为 B+树是多路平衡树,如果索引的数据

2022-02-18 09:12:02 418

原创 数据库索引

什么是索引?索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B 树, B+树和 Hash。索引的作用就相当于目录的作用。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。为什么要用索引?索引的优缺点分析索引的优点可以大大加快 数据的检索速度(大大减少的检索的数据量), 这也是创建索引的最主要的原因。毕竟大部分系统的读请求总是大于写请求的。 另外,通

2022-02-18 09:07:36 322

原创 JVM判断对象是否已死

引用计数算法 在对象中添加一个引用计数器,每当有一个地方 引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可 能再被使用的。

2022-02-18 09:05:31 41

原创 JVM内存区域

程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的 字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。Java虚拟机栈 与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stack)也是线程私有的,它的生命周期 与线程相同。虚拟机栈描述的是Jav

2022-02-13 11:42:26 35

原创 JVM 垃圾回收算法

最早出现也是最基础的垃圾收集算法是“标记-清除”(Mark-Sweep)算法。算法分为“标记”和“清除”两个阶段:首先标记出所有需要回 收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回 收所有未被标记的对象。标记过程就是对象是否属于垃圾的判定过程。标记-复制算法常被简称为复制算法。它将可用 内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着 的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。如果内存中多数对象..

2022-02-11 18:38:08 211

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除