计算机基础知识复习1.5

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

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

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

分代回收:内存划分成新生代和老生代,分配的依据是对象的生存周期,经过的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.mzph.cn/web/65362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 中的覆盖索引

1. 覆盖索引的工作原理 当查询只涉及索引中已经包含的列时,SQL Server 可以直接使用索引来返回查询结果,而不需要回表到数据页去检索实际的数据行。覆盖索引因此能够显著减少 I/O 操作,提高查询效率。 例如,假设有一个表 Employ…

Golang开发-案例整理汇总

前言 CSDN的文章缺少一个索引所有文章分类的地方,所以手动创建这么一个文章汇总的地方,方便查找。Golang开发经典案例汇总 GoangWeb开发 GolangWeb开发- net/http模块 GolangWeb开发-好用的HTTP客户端httplib(beego) GolangWeb开发- Gin不使用Nginx部署Vue项目 Golang并发开…

交叉编译的核心原理与核心概念

什么是交叉编译? 交叉编译(Cross Compilation)是一种在一种计算机体系结构或操作系统(主机,Host)上生成另一种计算机体系结构或操作系统(目标,Target)上的可执行文件的过…

vue-codemirror定位光标位置并在光标处插入信息

业务场景:在代码编辑器外点击按钮,向代码编辑器内的光标处新增一条拼接好的信息。 getCursor方法: 官方文档: doc.getCursor(?start: string) → {line, ch} Retrieve one end of the primary selection. start is an optional string indicating which end of the select…

【GOOD】A Survey of Deep Graph Learning under Distribution Shifts

深度图学习在分布偏移下的综述:从图的分布外泛化到自适应 Northwestern University, USA Repository Abstract 图上的分布变化——训练和使用图机器学习模型之间的数据分布差异——在现实世界中普遍存在,并且通常不可避免。这些变化可能会严重恶化模…

『SQLite』解释执行(Explain)

摘要:本节主要讲解SQL的解释执行:Explain。 在 sqlite 语句之前,可以使用 “EXPLAIN” 关键字或 “EXPLAIN QUERY PLAN” 短语,用于描述表查询的细节。 基本语法 EXPLAIN 语法: EXPLAIN [SQLite Query]EXPLAIN QUER…

(一)使用 WebGL 绘制一个简单的点和原理解析

使用 WebGL 绘制一个简单的点,我们需要通过 WebGL 的管线来进行一系列的步骤。以下是实现的详细步骤和原理解析: WebGL 绘制点的基本步骤 初始化 WebGL 上下文 首先,我们需要获取 WebGL 上下文,这样才能进行所有的绘图操作。通常…

Vue路由跳转报错

说明:使用 Vue 的router.replace/push,若跳转到当前路由,控制台会报错如下:NavigationDuplicated: Avoided redundant navigation to current location 原因:Vue-router在3.1之后把$router.push()方法改为了Promise。所…

【Axure高保真原型】环形进度条(开始暂停效果)

今天和大家分享环形进度条(开始暂停效果)的原型模版,效果包括: 点击开始按钮,可以环形进度条开始读取,中部百分比显示环形的读取进度; 在读取过程中,点击暂停按钮,可以随…

Euler 21.10(华为欧拉)安装oracle19c-RAC

1. Euler 21.10安装oracle19c-RAC 1.1. 环境规划 1.1.1. 主机规划 hostname IP 实例名 hfdb90 192.168.40.90 hfdb1 hfdb91 192.168.40.90 hfdb2 系统版本 BigCloud Enterprise Linux For Euler 21.10 (GNU/Linux 4.19.90-2107.6.0.0100.oe1.bclinux.x86_64 x86_6…

【python】matplotlib(radar chart)

文章目录 1、功能描述和原理介绍2、代码实现3、效果展示4、完整代码5、多个雷达图绘制在一张图上6、参考 1、功能描述和原理介绍 基于 matplotlib 实现雷达图的绘制 一、雷达图的基本概念 雷达图(Radar Chart),也被称为蛛网图或星型图&…

(三)通过WebGL绘制一个简单的三角形来理解渲染管线

理解 WebGL 绘图原理的关键是了解它的渲染管线。WebGL 渲染管线实际上是由多个阶段组成的,每个阶段都有特定的任务,最终输出的是屏幕上的图像。为了让你能轻松理解这些原理,我将通过一个简单的例子来详细解释。 绘制一个简单的三角形 我们将…

【shell编程】报错信息:bash: bad file descriptor(包含6种解决方法)

大家好,我是摇光~ 在运行 Shell 脚本时,遇到 bash: bad file descriptor 错误通常意味着脚本尝试对一个无效或不可用的文件描述符(file descriptor)执行了读写操作。 以下是一些可能导致这个问题的原因、详细案例以及相应的解决…

Kafka3.x KRaft 模式 (没有zookeeper) 常用命令

版本号:kafka_2.12-3.7.0 说明:如有多个地址,用逗号分隔 创建主题 bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic demo --partitions 1 --replication-factor 1删除主题 bin/kafka-topics.sh --delete --boots…

Business Cooperation Process

Business Cooperation Process 商务合作基本流程 并不是每个人都能做到言而有信的,因此还是需要流程来约束的。

模式识别-Ch2-分类错误率

分类错误率 最小错误率贝叶斯决策 样本 x x x的错误率: 任一决策都可能会有错误。 P ( error ∣ x ) { P ( w 2 ∣ x ) , if we decide x as w 1 P ( w 1 ∣ x ) , if we decide x as w 2 P(\text{error}|\mathbf{x})\begin{cases} P(w_2|\mathbf{x}), &…

Milvus×全诊通:从导诊到智能超声,如何将人效比翻倍

AI与智慧医疗的结合已是未来发展的必然趋势。近年来,国家卫健委推崇智慧医疗和AI技术,如智能导诊、预问诊、辅助诊断等,以提高医疗服务效率和诊断准确性,改善患者就医体验。 全诊通是一家专注于医疗SaaS和人工智能的公司&#xff…

自动驾驶相关知识学习笔记

一、概要 因为想知道SIL、HIL是什么仿真工具,故而浏览了自动驾驶相关的知识。 资料来源《自动驾驶——人工智能理论与实践》胡波 林青 陈强 著;出版时间:2023年3月 二、图像的分类、分割与检测任务区别 如图所示,这些更高阶的…

springcloud 介绍

Spring Cloud是一个基于Spring Boot的微服务架构解决方案集合,它提供了一套完整的工具集,用于快速构建分布式系统。在Spring Cloud的架构中,服务被拆分为一系列小型、自治的微服务,每个服务运行在其独立的进程中,并通过…

Blazor用户身份验证状态详解

在 Blazor 应用程序中,AuthenticationState 是一个核心概念,用于表示用户的身份验证状态。它提供有关当前用户的信息,例如是否已登录、用户的身份信息(如用户名、角色等)。 AuthenticationState 通常由 Authenticatio…