计算机基础知识复习1.5

news2025/1/9 3:13:48

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

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

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

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

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

相关文章

android开发从入门进阶到高级学习资料集合

本文精心整理了Android开发相关的学习资料,涵盖入门、进阶、性能优化、博客、面试和书籍等多个维度,在这里分享给大家,欢迎收藏。 技术社区 开源中国 OSCHINA是国内顶尖的开源技术社区之一,自2008年成立以来,已汇聚超…

腾讯云更改用户为root

最近买了台99元一年的2核的云服务器,方便学习一些java开发中间件,以及部署一些项目。 1.设置root用户密码 sudo passwd root 2.修改配置文件 ll /etc | grep ssh cd /etc/ssh/ ls vim sshd_config 输入/PasswordAuthentication 寻找 输入:set nu 再按下…

联发科MTK6771/MT6771安卓核心板规格参数介绍

MT6771,也被称为Helio P60,是联发科技(MediaTek)推出的一款中央处理器(CPU)芯片,可运行 android9.0 操作系统的 4G AI 安卓智能模块。MT6771芯片采用了12纳米工艺制造,拥有八个ARM Cortex-A73和Cortex-A53核心,主频分别…

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

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

C#使用MVC框架创建WebApi服务接口

第一步,使用VS2019新建MVC-Web API应用程序 创建BridgeApi 第二步,运行将生成默认的示例网页,网页Url为 https://localhost:44361/home/index 右键 项目 添加 WebAPI控制器类 添加 我们可以看到App_Start目录下 有三个文件: BundleConfig.cs代表 捆绑文件的引用 有脚本文件…

跨年烟花C++代码

嘿&#xff0c;朋友们&#xff01;今天来给大家讲讲一段挺有意思的C代码呀&#xff0c;这段代码主要是用来实现一个烟花效果展示的程序哦&#xff0c;下面咱们一点点来看哈。 效果 1. 开头包含的那些头文件 #include <graphics.h> #include <conio.h> #include &…

Unity 2d描边基于SpriteRender,高性能的描边解决方案

目标 以Unity默认渲染管线为例&#xff0c;打造不需要图片内边距&#xff0c;描边平滑&#xff0c;高性能的描边解决方案 前言 在2d游戏中经常需要给2d对象添加描边&#xff0c;来突出强调2d对象 当你去网上查找2d描边shader&#xff0c;移植到项目里面&#xff0c;大概率会…

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

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

“深入浅出”系列之FFmpeg:(1)音视频开发基础

我的音视频开发大部分内容是跟着雷霄骅大佬学习的&#xff0c;所以笔记也是跟雷老师的博客写的。 一、音视频相关的基础知识 首先播放一个视频文件的流程如下所示&#xff1a; FFmpeg的作用就是将H.264格式的数据转换成YUV格式的数据&#xff0c;然后SDL将YUV显示到电脑屏幕上…

日志服务 SQL 引擎全新升级

作者&#xff1a;戴志勇、顾汉杰&#xff08;执少&#xff09; SQL 作为 SLS 基础功能&#xff0c;每天承载了用户大量日志数据的分析请求&#xff0c;既有小数据量的快速查询&#xff08;如告警、即席查询等&#xff09;&#xff1b;也有上万亿数据规模的报表级分析。SLS 作为…

20250107在WIN10下使用无线ADB连接Andorid7.1.2

connected to 192.168.3.217:5555 adb shell 20250107在WIN10下使用无线ADB连接Andorid7.1.2 2025/1/7 18:12 缘起&#xff1a;公司买了一台6000-7000&#xffe5;的地面站【Andorid7.1.2】&#xff0c;需要通过ifconfig命令来获取其中的网络信息。 虽然系统是VERY非常的陈旧&a…

浙江省自然资源厅:基于“浙里办”的自然资源移动政务服务创新实践——“浙里自然资源”

摘 要&#xff1a;本文基于浙江省自然资源移动政务服务的创新实践&#xff0c;设计和实现“浙里自然资源”应用&#xff0c;依托浙江省省域空间治理数字化平台特有的架构基础&#xff0c;在提升功能性和可用性、加强运营力度、丰富服务内容等方面采取了管理举措和技术创新。通…

使用 Jupyter Notebook:安装与应用指南

文章目录 安装 Jupyter Notebook1. 准备环境2. 安装 Jupyter Notebook3. 启动 Jupyter Notebook4. 选择安装方式&#xff08;可选&#xff09; 二、Jupyter Notebook 的基本功能1. 单元格的类型与运行2. 可视化支持3. 内置魔法命令 三、Jupyter Notebook 的实际应用场景1. 数据…

NeurIPS 2024 | 像素级LLM实现图像视频理解、生成、分割和编辑大统一(昆仑万维等)

Accepted by NeurIPS 2024 文章链接&#xff1a;https://arxiv.org/pdf/2412.19806 项目链接&#xff1a;https://vitron-llm.github.io/ Github链接&#xff1a;https://github.com/SkyworkAI/Vitron 亮点直击 首次提出了一种通用的视觉多模态大语言模型&#xff08;MLLM&…

嵌入式技术之Linux(Ubuntu) 一

一、Linux入门 1.硬件和操作系统以及用户的关系 一个传感器&#xff0c;获得数据后&#xff0c;需要向服务器发送数据。传感器传数据给上位机。 上位机需要一个程序来接收数据&#xff0c;那么这个上位机是什么机器&#xff1f; 我们的笔记本电脑就可以当成上位机。 两个手…

用户界面软件02

基于表单的用户界面 在“基于表单的用户界面”里面&#xff0c;用户开始时选中某个业务处理&#xff08;模块&#xff09;&#xff0c;然后应用程序就使用一系列的表单来引导用户完成整个处理过程。大型机系统上的大部分用户界面都是这样子的。[Cok97]中有更为详细的讨论。 面…

YOLOv8/YOLOv11改进 添加CBAM、GAM、SimAM、EMA、CAA、ECA、CA等多种注意力机制

目录 前言 CBAM GAM SimAM EMA CAA ECA CA 添加方法 YAML文件添加 使用改进训练 前言 本篇文章将为大家介绍Ultralytics/YOLOv8/YOLOv11中常用注意力机制的添加&#xff0c;可以满足一些简单的涨点需求。本文仅写方法&#xff0c;原理不多讲解&#xff0c;需要可跳…

【express-generator】05-路由中间件和错误处理(第一阶段收尾)

一、前言 上篇文章我们介绍了express-generator的请求体解析&#xff0c;重点讲了常用的请求体数据格式&#xff08;JSON/URL 编码的表单数据&#xff09;以及一个FILE文件上传&#xff0c;同时搭配代码示范进行辅助理解。 二、本篇重点 我们继续第一阶段的知识&#xff0c;…

python无需验证码免登录12306抢票 --selenium(2)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 就在刚刚我抢的票&#xff1a;2025年1月8日…

深度学习驱动的蛋白质设计技术与实践

通过设计特定的蛋白质结构&#xff0c;可以实现预期的生物功能&#xff0c;如催化特定化学反应、识别和结合特定分子、调控生物信号传导等&#xff0c;为生物医学、药物研发、生物技术等领域提供重要工具和解决方案。传统的蛋白质设计方法主要依赖于已知蛋白质结构的同源建模、…