计算机基础知识复习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方法只是类的一个普通方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949864.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

141.环形链表 142.环形链表II

141.环形链表 & 142.环形链表II 141.环形链表 思路:快慢指针 or 哈希表 快慢指针代码: class Solution { public:bool hasCycle(ListNode *head) {if(headnullptr||head->nextnullptr)return false;ListNode *fasthead->next; //不能设置成…

信用租赁系统助力企业实现免押金租赁新模式

内容概要 在现代商业环境中,信用租赁正在迅速崛起。通过结合大数据与区块链技术,信用租赁系统彻底改变了传统的租赁流程。什么是信用租赁呢?简单说,就是不需要押金,你也能够租到你想要的物品,这对企业和消…

el-select下拉框在弹框里面错位

问题出现 Element Plus 是一个基于 Vue 3 的组件库,el-select 是其中一个用于选择器的组件。在 el-select 组件中,teleported 属性用于控制下拉菜单的渲染位置。 解决方法 teleported 属性「element-plus」 popper-append-to-body属性「element」 ‌…

IO进程day1

一、思维导图

力扣-21-合并两个有序链表

思路: 因为是升序的两个链表,我们可以进行数据域比大小,然后把p3(自己创建的)的指针域指向小的那个 注:一定要先判断两个指针为0的情况

人工智能的发展领域之GPU加速计算的应用概述、架构介绍与教学过程

文章目录 一、架构介绍GPU算力平台概述优势与特点 二、注册与登录账号注册流程GPU服务器类型配置选择指南内存和存储容量网络带宽CPU配置 三、创建实例实例创建步骤镜像选择与设置 四、连接实例SSH连接方法远程桌面配置 一、架构介绍 GPU算力平台概述 一个专注于GPU加速计算的…

QT实现 端口扫描暂停和继续功能 3

上篇QT给端口扫描工程增加线程2-CSDN博客 为按钮pushButton_Stop添加clicked事件,功能为暂停扫描,并在暂停后显示继续按钮,点击继续按钮之后继续扫描 1.更新UI 添加继续按钮 点击转到槽则会自动声明 2. 更新 MainWindow.h 需要新增的部分…

汽车微处理器安全机制以及测试介绍

本文介绍了三类汽车微处理器安全机制:硬件类、软件类和混合类,旨在提高系统的可靠性和安全性。硬件类安全机制包括逻辑内建自测试(Logic-BIST)、三重模块冗余(TMR)、内存内建自测试(Memory-BIST…

【Azure Redis 缓存】Azure Redis 遇见的连接不上问题和数据丢失的情况解答

问题描述 PHP应用再连接Azure Redis服务时,出现Connection Timed out。当通过升级提高Azure Redis的性能时候,发现之前的数据丢失了。 image.png 问题解答 当Redis服务出现Timeout的情况时,可以从Redis服务的指标(Metrics)开始查看&#xff0…

python学习笔记—15—数据容器之列表

1. 数据容器 列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict) 2. 列表 (1) 定义 tmp_list ["super", "carry", "doinb"] print(f"tmp_list {tmp_list}, tmp_list type is {type(tmp_list)}") tmp_list1 ["doi…

记录一次面试中被问到的问题 (HR面)

文章目录 一、你对公司的了解多少二、为什么对这个岗位感兴趣三、不能说的离职原因四、离职原因高情商回复五、你的核心优势是什么六、你认为你比其他面试候选人的优势是什么七、不要提及情感 一、你对公司的了解多少 准备要点: 在面试前,对公司进行充分…

VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读

VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读 导读:这篇论文介绍了CogAgent,一个专注于图形用户界面 (GUI) 理解和导航的视觉语言模型 (VLM)。这篇论文提出了一种新的视觉语言模型 CogAgent&#…

linux audio(1)-pulseaudio模块数据流

本文主要讨论pulseaudio模块的数据流。这里的模块(module)主要限制在sink和source这两种类型。其他类型的数据流后续有空 再撰文讨论。 pulseaudio的模块一般会启动一路线程进行数据的搬运和处理。 下面的是module-null-source模块的数据搬运线程启动代码。 进入thread_func…

ros2-4.1 服务通信介绍

服务是ROS图中节点之间的另一种通信方法。服务分为客户端和服务端,客户端发送请求给服务端,服务端可以根据客户端的请求做一些处理,然后返回结果给客户端。也称为为请求-响应模型。 服务和话题的不同之处,话题是没有返回的&#…

微信小程序之历史上的今天

微信小程序之历史上的今天 需求描述 今天我们再来做一个小程序,主要是搜索历史上的今天发生了哪些大事,结果如下 当天的历史事件或者根据事件选择的历史事件的列表: 点击某个详细的历史事件以后看到详细信息: API申请和小程序…

数据库模型全解析:从文档存储到搜索引擎

目录 前言1. 文档存储(Document Store)1.1 概念与特点1.2 典型应用1.3 代表性数据库 2. 图数据库(Graph DBMS)2.1 概念与特点2.2 典型应用2.3 代表性数据库 3. 原生 XML 数据库(Native XML DBMS)3.1 概念与…

Vue3+TS+vite项目笔记1

vue2与vue3的比较 源码的升级 使用Proxy代替defineProperty实现响应式。 重写虚拟DOM的实现和Tree-Shaking。 新的特性 Composition API(组合API): setup ref与reactive computed与watch ...... 新的内置组件: Fragment T…

Spring5框架之SpringMVC

目录 1.SpringMVC的入门案例 1.1 通过maven构建一个web项目 1.2 添加对应的依赖及Tomcat插件 1.3 创建SpringMVC的配置文件 1.4 在web.xml中注册DispatchServlet 1.5 创建自定义的Controller 1.6 在Springmvc配置文件中注册 原理分析: 2.SpringMVC基于注解的…

Android Audio基础(53)——PCM逻辑设备Write数据

1. 前言 本文,我们将以回放(Playback,播放音频)为例,讲解PCM Data是如何从用户空间到内核空间,最后传递到Codec。 在 ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图。: 对于Linux来说,由于分为 user space 和kernel space,而且两者之间数据不能随便…

【漫话机器学习系列】039.点积(dot product)

点积(Dot Product) 点积是线性代数中的一种基本运算,用于两个向量的操作。它是将两个向量按分量相乘并求和的结果,用于衡量两个向量在同一方向上的相似性。 点积的定义 给定两个相同维度的向量 和 ,它们的点积定义为…