计算机基础知识复习1.5

ops/2025/1/12 21:44:04/

标记-清除算法:标记-清除分为标记 和清除 两个阶段,首先通过可达性分析,标记出所有需要回收的对象,然后统一回收所有被标记的对象。

复制算法:为了解决碎片空间的问题,出现了复制算法  将内存分成两块,每次申请内存时都使用其中的一块,当内存不够时,将这一块内存中所有存活的复制到另一块上。然后把已使用的内存清理掉

标记-整理算法:标记之后不直接清理,而是将所有存活对象都移动到内存的一端,移动结束后直接清理掉剩余部分

分代回收:内存划分成新生代和老生代,分配的依据是对象的生存周期,经过的GC次数。对象创建时,一般在新生代申请内存,当经历一次GC之后如果还存活,那么对象年龄+1 当年龄超过一定值后,如果对象还存活,那么该对象进入老年代

checked exception和unchecked exception

受检查异常,Java代码在编译过程中,如果受检查异常没有catch或者throws关键字处理的话,就没办法通过编译

不受检查异常:runTimeException 不处理不受检查异常也可通过编译

多线程安全

synchronized 关键字  volatile关键字  用于变量 确保所有线程看到的是该变量的最新值,而不是存储在本地寄存器中的副本。reentrantLock类 锁管理  原子类 如AtomicInteger,AtomicLong  线程局部变量:threadLocal可以为每个线程提供独立的变量副本,并发集合

新生代:新生代分为Eden Space和Survivor Space。Eden Space中,大多数新创建的对象首先存放在这里。Eden区较小,当Eden区满时,会触发一次Minor GC (新生代垃圾回收)。

老年代:经历过多次Minor GC仍存活的对象会被移动到老年代。老年代中的对象生命周期较长,因此称为Full GC

G1垃圾回收

初始时,所有区域都处于空闲状态

创建一些对象,挑出一些空闲区域作为伊甸园区存储这些对象

当伊甸园区需要垃圾回收时,挑出一个空闲区域作为幸存者区,用复制算法复制存活对象,需要暂停用户线程

随着时间流逝,伊甸园区的内存又不足了

将伊甸园以及幸存者区中的存活对象,采用复制算法,复制到新的幸存区,其中较老对象晋升至老年代

当老年代占用内存超过阈值后,触发并发标记,这时无需暂停用户线程

并发标记之后,会有重新标记阶段解决漏标问题,此时需要暂停用户线程

这些都完成后就知道了老年代有哪些存活对象,随后进入混合收集阶段,此时不会对所有老年代区域进行回收,而是根据暂停时间目标优先回收价值高的区域

基于Redis的延迟队列实现

开始->发送延迟消息->消息存入Zset->轮询Redis(Zset)->到达执行时间->执行任务

next-key lock:临建锁 是Record Lock+Gap Lock的组合  锁定一个范围,并且锁定记录本身

内存淘汰策略

随机淘汰

淘汰整个键值中最久未使用的键值

淘汰整个键值中最少使用的键值

键入URL

浏览器会判断所请求的资源是否在缓存里

DNS解析

建立TCP连接

泛型:编译器可以对泛型参数进行检测,并且通过泛型参数可以指定传入的对象类型

泛型类

泛型接口

泛型方法

binlog 和 redo log 有什么区别

binlog是MySQL的Server层实现的日志,所有存储引擎都可以使用

redo log是InnoDB存储引擎实现的日志

binlog是追加写,写满了一个文件,就创建一个新的文件继续写,保存的是全量的日志

redolog是循环写,日志空间大小是固定的,全部写满就从头开始,保存未被刷入磁盘的脏页日志

@Autowired:是Spring定义的注解

@Resource:是Java定义的注解

@Autowired:是先根据类型byType查找,如果存在多个Bean再根据名称byName进行查找

@Resource:是Java定义的注解 先根据名称查找 如果名称查找不到,再根据类型进行查找

@Autowired:支持属性注入,构造方法注入和Setter注入

@Resource:支持属性注入和Setter注入 

Spring MVC 执行流程

前端控制器DispatcherServlet  查询HandlerMapping 处理器映射器{key:url,value:"类名#方法名”}

返回处理器执行链 HandlerExecutionChain

请求执行Handler 处理器适配器(处理参数,处理返回值)

请求处理 处理器Handler  返回json

什么情况下使用CMS,什么情况使用G1

cms

低延迟需求:适用于对停顿时间要求敏感的应用程序

老年代收集:主要针对老年代的垃圾回收

碎片化管理:容易出现内存碎片,可能需要定期进行full gc来压缩内存空间

g1

大堆内存:适用于需要管理大内存堆的场景,能够有效处理数GB以上的堆内存

对内存碎片敏感:G1通过紧凑整理来减少内存碎片,降低了碎片化对性能的影响

比较平衡的性能:G1在提供较低停顿时间的同时,也保持了相对较高的吞吐量

ReentrantLock

实现Lock接口,是一个可重入且独占式的锁,和synchronized关键字。默认使用非公平锁,可以通过构造器来显示的指定使用公平锁

start方法和run方法

用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法执行完毕而直接继续执行下面的代码,通过调用Thread类的start()方法来启动一个线程

用run方法只是类的一个普通方法


http://www.ppmy.cn/ops/149559.html

相关文章

2501wtl,皮肤技术

下载地址 设计目标 最重要的是使用方便,已有程序创建一个COM对象,调一个方法就可把界面外观全部改成Mac风格的. 另外一个目标是要有扩展性. 所以,基本设计是定义一个统一的接口,然后用不同实现.每一个实现单独放在一个COMDLL中,调用者选择一个类标创建对象就行了. 接口的定义…

鸿蒙中自定义slider实现字体大小变化

ui: import { display, mediaquery, router } from kit.ArkUI import CommonConstants from ./CommonConstants; import PreferencesUtil from ./PreferencesUtil; import StyleConstants from ./StyleConstants;// 字体大小 Entry Component struct FontSize {Sta…

c语言提供后端,提供页面显示跳转服务

后端代码: #define SERVER_IP_ADDR "0.0.0.0" // 服务器IP地址 #define SERVER_PORT 8080 // 服务器端口号 #define BACKLOG 10 #define BUF_SIZE 8192 #define OK 1 #define ERROR 0#include <stdio.h> #include <stdlib.h> #include <st…

Chapter 4.6:Coding the GPT model

4 Implementing a GPT model from Scratch To Generate Text 4.6 Coding the GPT model 本章从宏观视角介绍了 DummyGPTModel&#xff0c;使用占位符表示其构建模块&#xff0c;随后用真实的 TransformerBlock 和 LayerNorm 类替换占位符&#xff0c;组装出完整的 1.24 亿参数…

UML系列之Rational Rose笔记三:活动图(泳道图)

一、新建活动图&#xff08;泳道图&#xff09; 依旧在用例视图里面&#xff0c;新建一个activity diagram&#xff1b;新建好之后&#xff0c;就可以绘制活动图了&#xff1a; 正常每个活动需要一个开始&#xff0c;点击黑点&#xff0c;然后在图中某个位置安放&#xff0c;接…

网络原理(二)—— https

https 简介 https 也是一个应用层协议&#xff0c;他是由 http 和 SSL 组成的&#xff08;在 http 的基础上进行加密&#xff0c;把原本http 的明文传输变为了密文传输&#xff09;&#xff0c;简称为 https。 加密的方式大体分为两大类&#xff0c;分别是对称加密和非对称加…

将光源视角的深度贴图应用于摄像机视角的渲染

将光源视角的深度贴图应用于摄像机视角的渲染是阴影映射&#xff08;Shadow Mapping&#xff09;技术的核心步骤之一。这个过程涉及到将摄像机视角下的片段坐标转换到光源视角下&#xff0c;并使用深度贴图来判断这些片段是否处于阴影中。 1. 生成光源视角的深度贴图 首先&…

机器学习之决策树的分类树模型及决策树绘制

决策树分类模型 目录 决策树分类模型决策树概念组成部分&#xff1a;决策树的构建过程&#xff1a;优缺点决策树的优点&#xff1a;决策树的缺点&#xff1a; 熵概念算法数据理解 决策树的三种分法ID3&#xff08;Iterative Dichotomiser 3&#xff09;概念算法步骤 C4.5概念信…