
冲刺大厂之面经总结
文章平均质量分 88
仔细研读,认真总结,冲刺大厂不是问题,加油!!!
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
南淮北安
好好学习
展开
-
【面经总结】刺大厂之面经总结
将该专栏的面经仔细研读思考,冲刺大厂没问题加油!!!!文章目录一、JVM 知识点整理二、Java 基础知识整理三、Java 高并发知识点整理四、Java 相关内容补充五、Java 框架知识五、数据库知识点整理六、计网知识点整理七、操作系统八、分布式九、Redis十、面试学习扩展一、JVM 知识点整理序号标题01JVM 的运行机制、多线程和 JVM 的内存区域02 JVM 的运行内存划分、垃圾回收算法和 4种引用类型03JVM 中分代收集算法、分区收集算法和垃圾收集原创 2022-05-11 21:41:35 · 655 阅读 · 0 评论 -
【面经总结】开发面试题补充整理四
文章目录一、缓存污染一、缓存污染缓存污染问题指的是留存在缓存中的数据,实际不会再被访问了,但是又占据了缓存空间。如果这样的数据体量很大,甚至占满了缓存,每次有新数据写入缓存时,还需要把这些数据逐步淘汰出缓存,就会增加缓存操作的时间开销。因此,要解决缓存污染问题,最关键的技术就是能识别出这些只访问一次或是访问次数很少的数据,在淘汰数据时,优先把他们筛选出来淘汰掉。LRU和LFU两个策略都有应用。LRU和LFU两种策略关注的数据访问特征各有侧重,LRU策略更加关注数据的时效性,而LFU策略更加关注数据的原创 2022-05-25 10:31:04 · 736 阅读 · 0 评论 -
【面经总结】开发面试题补充整理三
文章目录一、判断链表是否有环?二、堆排序的过程一、判断链表是否有环?可以利用快慢指针进行判断,快指针比慢指针多走一步,最后看会不会相遇为什么不选择多走两步或者三步?快慢指针的作用就是为了判断是否有环,我们肯定希望越快判断越好,如果是高倍的话,快指针会很快就进入环中,但是慢指针则会很慢才能到达第一个环,这个过程中,快指针将会在第一个环中无意义的高速移动选择1 和 2 的组合,这样快慢指针的路程差精确等于环绕一周的长度。因为我们不知道环的周长,所以能够被所有正整数整除的数字就只能是1了,只要速度差是一原创 2022-05-25 10:20:21 · 798 阅读 · 0 评论 -
【面经总结】开发面试题补充整理二
文章目录一、如果有a b两个字段,按b来排序,那应该怎么建索引?理由是什么?二、一、如果有a b两个字段,按b来排序,那应该怎么建索引?理由是什么?按照 ba 的顺序建立索引这样建立索引时,就可以完成排序,同时避免了回表因为按照ab建立索引,则需要先找a再到b,这样多了个回表操作二、...原创 2022-02-20 22:57:12 · 192 阅读 · 0 评论 -
【面经总结】开发面试题补充整理一
用过c或者c++吗?介绍一下指针和引用的区别。指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。操作系统,对Linux了解多少。目录结构:根目录:/,bin:存放二进制可执行文件,etc:存放系统配置文件,usr:存放共享的系统资源,home:存放用户文件的根目录,root:超级用户目录,dev:存放设备文件,lib:文件系统中的程序运行需要的共享库及内核模块,boot:存放用于系统引导时使用的各.原创 2021-03-02 20:25:15 · 278 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于Redis 主从模式、哨兵模式和集群模式详解的相关知识点
Redis集群方式共有三种:主从模式,哨兵模式,cluster(集群)模式文章目录一、单机模式二、主从模式三、哨兵模式四、哨兵模式下的监控原理五、集群六、集群的故障转移七、为什么Redis集群有16384个槽八、集群模式和哨兵模式的区别一、单机模式就是安装一个redis,启动起来,业务调用即可。优点:部署简单,0成本。成本低,没有备用节点,不需要其他的开支。高性能,单机不需要同步数据,数据天然一致性。缺点:可靠性保证不是很好,单节点有宕机的风险。单机高性能受限于CPU的处理能力,r原创 2022-05-14 00:00:00 · 385 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于Redis 的相关知识的补充
文章目录一、Redis 的 SDS 和 C 中字符串相比有什么优势二、字典内部结构和rehash三、收缩扩容的条件四、Redis 持久化1. RDB 优缺点3. AOF 优缺点五、为什么要使用缓存?六、为什么引入Redis七、主从复制八、Redis 相关题目九、如何解决 Redis 的并发竞争 Key 问题十、Redis 集群的容错机制十一、Redis 的集群存储原理一、Redis 的 SDS 和 C 中字符串相比有什么优势C 语言使用了一个长度为 N+1 的字符数组来表示长度为 N 的字符串,并且字符原创 2022-05-13 16:00:00 · 280 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于Redis 中的持久化的相关知识点
持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。Redis 提供了两种持久化方式:RDB(默认) 和AOF文章目录一、数据库持久化二、RDB持久化1. RDB 文件的创建与载入2. SAVE命令执行时的服务器状态3. BGSAVE命令执行时的服务器状态4. RDB 文件载入时的服务器状态5. 自动间隔性保存三、AOF持久化1. AOF持久化的实现2. 命令追加(append)3. AOF文件的写入与同步4. AOF持久化的效率和安全性5. AOF文件的载入与数据还原6. AOF重写一、原创 2022-05-12 15:15:00 · 246 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于Redis 中的字典及 rehash的相关知识点
文章目录一、Redis 中的字典1. 哈希表2. 哈希表节点3. 字典二、rehash1. rehash 的过程2. 哈希表的扩展与收缩三、渐进式 rehash一、Redis 中的字典Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。Redis 中的字典相当于 Java 中的 HashMap,内部实现也差不多类似,都是通过 “数组 + 链表” 的 链地址法 来解决部分 哈希冲突,同时这样的结构也吸收了两种不同数据结构的优点。1原创 2022-05-12 04:45:00 · 272 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于Redis 的删除策略的相关知识点
Redis中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的token或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能set key的时候,都可以给一个expire time,就是过期时间,通过过期时间就可以指定这个key可以存活的时间删除策略的目标:在内存占用和CPU占用之间寻找一种平衡,提高 Redis 的性能(1)定时删除策略创建原创 2022-05-10 15:30:00 · 272 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于Redis 中数据结构的相关知识点
文章目录一、SDS二、链表三、字典1. 定义2. 渐进式 rehash3. 扩容收缩四、跳跃表五、整数集合六、压缩列表一、SDSC 语言使用了一个长度为 N+1 的字符数组来表示长度为 N 的字符串,并且字符数组最后一个元素总是 \0,这种简单的字符串表示方式 不符合 Redis 对字符串在安全性、效率以及功能方面的要求。这样简单的数据结构可能会造成以下一些问题:获取字符串长度为 O(N) 级别的操作 → 因为 C 不保存数组的长度,每次都需要遍历一遍整个数组;不能很好的杜绝 缓冲区溢出/内存泄原创 2022-05-11 12:00:00 · 264 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于消息队列(RabbitMQ/RocketMQ/Kafka)的相关知识点
Kafka:不支持事务,对于消息重复、丢失、错误没有严格要,适用大量数据的互联网服务RabbitMQ:对数据的一致性、稳定性、可靠性要求很高的场景,对性能和吞吐量要求其次RocketMQ:具有高吞吐量,高可用性,主要用于阿里内部文章目录一、RabbitMQ 如何保证高可用?二、如何保证消息队列的高性能?1. 幂等性2. 可靠性3. 顺序性三、RocketMQ1. 高性能2. 高可用四、Kafka一、RabbitMQ 如何保证高可用?RabbitMQ 有三种部署方式:单节点模式:最简单的情况,非原创 2022-05-11 07:00:00 · 306 阅读 · 0 评论 -
(面经总结)一篇文章带你搞懂微服务中的 RPC
文章目录一、RPC二、本地过程的调用过程三、远程过程调用1. Call ID 映射2. 序列化和反序列化3. 网络传输一、RPCRPC,即远程过程调用,比如两个服务器A,B,一个应用部署在 A 服务器上,想要调用B 服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。简单来说,就是像调用本地服务一样调用远程服务已经有HTTP协议了,为什么还需要RPC方式实现分布式系统:使用 HTTP 还需要搭配 web 服务, rpc 可以避免这转载 2021-03-12 21:57:49 · 1335 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于一致性Hash算法的相关知识点
文章目录一、为什么要引入一致性哈希二、一致性哈希算法的基本概念三、hash 环的偏斜四、使用场景一、为什么要引入一致性哈希比如我们有三个缓存服务器,用于缓存服务器编号为 0,1,2现在有3万张图片需要缓存,为了分摊缓存的压力,我们肯定希望将这些图片均匀的分配到这三个服务器上我们可以直接将这3万张图片均摊到三个服务器上,但是这样的话,因为是无规律,所以查找时就需要依次遍历所有的服务器,效率太低所以可以利用 hash 算法或者取模算法,将图片的名称哈希计算,我们这里有3个服务器,然后将哈希后的结果对3原创 2022-05-11 05:30:00 · 363 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于TCP粘包的相关知识点
在socket网络编程中,都是端到端通信,由客户端端口+服务端端口+客户端IP+服务端IP+传输协议组成的五元组可以明确的标识一条连接。在TCP的socket编程中,发送端和接收端都有成对的socket。发送端为了将多个发往接收端的包,更加高效的的发给接收端,于是采用了优化算法(Nagle算法),将多次间隔较小、数据量较小的数据,合并成一个数据量大的数据块,然后进行封包。那么这样一来,接收端就必须使用高效科学的拆包机制来分辨这些数据文章目录一、什么是TCP粘包问题?二、造成TCP粘包的原因三、什么时候需要转载 2022-05-09 16:19:40 · 282 阅读 · 0 评论 -
(面经总结)一篇文章带你深挖从 URL 输入到页面展示发生了什么
文章目录一、总体过程二、域名解析三、TCP 三次握手四、发送 HTTP 请求五、服务器处理请求并返回 HTTP 报文六、浏览器解析渲染页面七、断开连接八、浏览器同时打开很多标签页,共用一个TCP连接吗?九、浏览器和服务器交互,谁先主动关闭?十、浏览器打开就关闭,服务器怎么办?一、总体过程(1)DNS 解析:将域名解析成 IP 地址(2)TCP 连接:TCP 三次握手(3)发送 HTTP 请求(4)服务器处理请求并返回 HTTP 报文(5)浏览器解析渲染页面(6)断开连接:TCP 四次挥手我们原创 2022-05-11 09:30:00 · 281 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于ARP 协议的相关知识点
文章目录一、什么是 ARP 协议二、ARP 协议的工作原理一、什么是 ARP 协议ARP 是地址解析协议,用于通过目标 IP 地址,定位下一个接收数据包的网络设备的 MAC 地址。如果目标主机处在同一个数据链路上,那么可以直接得到目标主机的 MAC 地址,否则会得到下一条路由器的 MAC 地址。MAC 和 IP 地址虽然看上去功能类似(都是用于唯一区分主机),但是两者缺一不可。如果只有 IP 地址,虽然可以跳过 ARP,直接在数据链路上发一个广播,但是这仅适用于通信双方处于同一个数据链路下的情况。原创 2022-05-11 07:30:00 · 602 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于 TCP,UDP,IP的相关知识点
TCP/IP协议是一个协议簇。里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议,就用他两命名了TCP/IP协议族按层次分别分为以下4层:应用层、传输层、网络层和数据链路层文章目录一、TCP二、IP三、UDP一、TCP按层次分,TCP位于传输层,提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把原创 2022-05-10 10:00:00 · 389 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于HTTPS的相关知识点
文章目录一、HTTPS二、共享秘钥加密和公开秘钥加密1. 共享秘钥加密2. 公开秘钥加密三、HTTPS 采用混合加密机制四、HTTPS 的工作原理一、HTTPS对于HTTP来说,服务器也好,客户端也好,都是没有办法确认通信方的。因为很有可能并不是和原本预想的通信方在实际通信,同时通信的报文很有可能在通信途中就被篡改了为了统一解决上述这些问题,需要在HTTP上再加入加密处理和认证等机制。我们把添加了加密及认证机制的HTTP称为 HTTPS通常,HTTP直接和 TCP 通信。当使用 SSL 时,则演变成原创 2022-05-10 06:30:00 · 406 阅读 · 0 评论 -
(面经总结)一篇文章带你完整复习HTTP的相关知识点
文章目录一、HTTP 协议二、消息结构三、HTTP 方法三、HTTP 状态码一、HTTP 协议HTTP协议和TCP/IP协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应它是一种无状态协议:HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理使用HTTP协议,每当有新的请求发送原创 2022-05-10 05:30:00 · 243 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试中被问到的 TCP 中7种定时器
文章目录一、建立连接定时器(connection-establishment timer)二、重传定时器(retransmission timer)三、延迟应答定时器(delayed ACK timer)四、坚持定时器(persist timer)五、保活定时器(keepalive timer)六、FIN_WAIT_2定时器(FIN_WAIT_2 timer)七、TIME_WAIT定时器 (TIME_WAIT timer, 也叫2MSL timer)一、建立连接定时器(connection-establi转载 2022-05-06 09:29:03 · 315 阅读 · 0 评论 -
(面经总结)一篇文章带你完整复习 TCP 的重传机制、滑动窗口、流量控制和拥塞控制
相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢?为了实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。那么,TCP 是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的。文章目录一、TCP 的重传机制1. 超时重传2. 快速重传3. SACK 方法4. Duplicate SACK二、TCP 滑动窗口1. 为什么要引入滑动窗口?2. 窗口大小三、流量控制一、TCP 的重传机制转载 2021-03-09 21:07:41 · 271 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试中数据库分库分表的相关知识点
参考链接:https://www.cnblogs.com/butterfly100/p/9034281.html文章目录一、为什么要进行数据库分库分表?二、垂直切分三、水平切分一、为什么要进行数据库分库分表?主要是为了提升数据库的性能,因为当数据库中的数据量达到1000w或者100G以后,由于查询维度比较多,此时像添加优化索引之类的操作对于数据库的性能提升很小,所系需要对其进行分库分表,目的就是减小数据库的负担,将数据分散到多个数据库中,提升性能。分库分表有垂直切分和水平切分两种二、垂直切分垂直转载 2022-05-06 09:18:09 · 394 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试可能会问到的 聚簇索引和非聚簇索引
文章目录一、聚簇索引二、非聚簇索引三、InnoDB 的索引1. 聚簇索引的优势2. 聚簇索引的劣势四、MyISM 的非聚簇索引五、为什么主键通常建议使用自增 id六、聚簇索引和非聚簇索引的使用场景七、Mysql 聚簇索引的设定一、聚簇索引聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。如果某索引不是聚集索引,则表中的行物理顺序与索引顺序不匹配,与非聚集索引相比,聚集索引有着更快的检索速度。原创 2022-05-11 07:00:00 · 697 阅读 · 0 评论 -
(面经总结)一篇文章带你学习 Mysql 里的 binlog、redo log 和 undo log
文章目录一、binlog1. 什么是 binlog2. 作用二、redo log1. 什么是 redo log2. redo log 和 binlog 的区别三、undo log一、binlog1. 什么是 binlogbinlog 记录了数据库表结构和表数据变更,比如update/delete/insert/truncate/create。它不会记录 select(因为这没有对表没有进行变更)binlog 我们可以简单理解为:存储着每条变更的SQL语句(当然从下面的图看来看,不止SQL,还有XID转载 2021-04-22 16:18:26 · 437 阅读 · 0 评论 -
(面经总结)一篇文章带你深入学习 Mysql 中的主从复制
文章目录一、Mysql 的主从复制二、主从同步的实现步骤三、复制方式1. 异步复制2. 同步复制3. 半同步复制四、主从复制的模型1. 一主多从2. 级联复制3. 主主复制4. 主、被动的主主复制一、Mysql 的主从复制简单来说是让一台MySQL服务器去复制另一台MySQL的数据,使两个服务器的数据保持一致通过复制功能,构建一个或者多个从库,可以提高数据库的高可用性、可扩展性,同时实现负载均衡。当主库发生故障时,可以快速的切到其某一个从库,并将该从库提升为主库,因为数据都一样,所以不会影响系统的运转载 2021-04-08 15:41:30 · 250 阅读 · 0 评论 -
(面经总结)一篇文章带你完整学习 MySQL 事务隔离级别的实现原理
在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离级别。在MySQL中,默认的隔离级别是REPEATABLE-READ(可重复读),mysql的默认隔离级别解决了脏读、幻读、不可重复读问题文章目录一、数据库的隔离级别二、MVCC1. 增删改查2. 快照读和当前读三、一致性非锁定读和锁定读四、悲观锁和乐观锁五、锁六、理论分析七、实验一、数据库的隔离级别(1)未提交读(Read Uncommitted)A事务只要修改了数据,无论有没有提交,其转载 2021-04-01 21:10:48 · 356 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试可能会问到的 SQL 语句
文章目录一、求每个班级成绩前三的学生记录二、设计一个文件夹管理系统三、求每个部门薪水最高的员工和部门名一、求每个班级成绩前三的学生记录(1)新建 stu 表-- ------------------------------ Table structure for stu-- ----------------------------DROP TABLE IF EXISTS `stu`;CREATE TABLE `stu` ( `sid` int(11) NOT NULL AUTO_INCR原创 2022-05-09 05:00:00 · 381 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于Innodb的相关知识点
文章目录一、存储引擎二、InnoDB三、InnoDB 的本质1. 数据是如何存储的?2. 页:InnoDB 管理存储空间的基本单位3. 页目录:Page Directory4. 引入 B+ 树:索引四、面试题一、存储引擎数据库的存储引擎是数据库的底层软件组织,数据库管理系统(DBMS)使用存储引擎创建、查询、更新和删除数据。不同的存储引擎提供了不同的存储机制、索引技巧、锁定水平等功能,都有其特定的功能。现在,许多数据库管理系统都支持多种存储引擎,常用的存储引擎主要有MyISAM、InnoDB、Memor原创 2022-05-09 04:00:00 · 357 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于多线程的编程问题
文章目录一、多线程打印10个数二、交替打印奇偶不加锁三、交替打印10个数不加锁一、多线程打印10个数class MyThread implements Runnable { int num = 1; @Override public void run() { for (int i = 0; i < 10; i++) { //对当前对象加锁 synchronized (this) {原创 2022-05-07 04:15:00 · 223 阅读 · 0 评论 -
(面经总结)终于搞明白了 AtomicInteger 如何保证线程安全
文章目录一、为什么引入 AtomicInteger ?二、AtomicInteger 原理分析1. 具体使用2. 原理分析三、简单解释一、为什么引入 AtomicInteger ?谈到线程安全,会首先想到了synchronized 和 Lock,但是这种方式又有一个名字,叫做互斥锁,一次只能有一个持有锁的线程进入,再加上还有不同线程争夺锁这个机制,效率比较低,所以又称 悲观锁与之相对应,就有了 乐观锁 的概念:它不加锁去完成某项操作,如果因为冲突失败就重试,直到成功为止。AtomicInteger原创 2021-10-24 16:40:16 · 2715 阅读 · 1 评论 -
(面经总结)一篇文章带你整理面试过程中关于ThreadLocal的相关知识
文章目录一、什么是 ThreadLocal二、ThreadLocal 的应用场景三、ThreadLocal 的底层1. set 和 get 方法2. ThreadLocalMap(1)为什么需要数组呢?(2)没有了链表怎么解决Hash冲突呢?3. 内存泄露一、什么是 ThreadLocalThreadLocal类顾名思义可以理解为线程本地变量。也就是说如果定义了一个ThreadLocal, 每个线程往这个ThreadLocal中读写是线程隔离,互相之间不会影响的,主要用来解决线程内资源的共享,比如,让原创 2022-05-06 10:00:00 · 320 阅读 · 0 评论 -
(面经总结)一篇文章带你整理面试过程中关于锁升级的过程
文章目录一、对象头二、重量级锁三、轻量级锁四、偏向锁五、自旋锁六、锁的升级一、对象头在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)实例数据和对其填充与synchronized无关,实例数据存放类的属性数据信息,java代码中能看到的属性和他们的值。对其填充不是必须部分,由于虚拟机要求对象起始地址必须是8字节的整数倍,对齐填充仅仅是为了使字节对齐。对象头是我们需要关注的重点,它是sync原创 2022-05-06 10:00:00 · 408 阅读 · 0 评论 -
(面经总结)一篇文章带你深入剖析 synchronized 的底层原理
文章目录一、synchronized 的基本用法二、synchronized 的底层实现原理1. 同步块的底层原理分析2. 同步方法的底层原理分析四、总结一、synchronized 的基本用法可参考:一篇文章带你搞定 Java 中同步概念可参考:一篇文章带你深入了解多线程中的线程组,守护线程,线程优先级,synchronizesynchronized 与 volatile 的最大区别在于原子性,volatile 不具备原子性可参考:一篇文章带你深入了解 volatile 与 Java 内存模原创 2022-05-08 02:45:00 · 295 阅读 · 0 评论 -
(面经总结)一篇文章带你完整复习 Java 中的 AQS
文章目录一、什么是AQS二、AQS的原理三、state:状态四、AQS共享资源的方式:独占式和共享式一、什么是AQSAQS(Abstract Queued Synchronizer)是一个抽象的队列同步器,通过维护一个共享资源状态(Volatile Int State)和一个先进先出(FIFO)的线程等待队列来实现一个多线程访问共享资源的同步框架。二、AQS的原理AQS为每个共享资源都设置一个共享资源锁,线程在需要访问共享资源时首先需要获取共享资源锁,如果获取到了共享资源锁,便可以在当前线程中使用该原创 2021-02-25 13:12:05 · 1837 阅读 · 0 评论 -
(面经总结)一篇文章带你完整复习CAS 和 ABA 问题
文章目录一、CAS的概念:比较并交换二、CAS的特性:乐观锁三、CAS自旋等待四、ABA问题一、CAS的概念:比较并交换CAS(Compare And Swap)指比较并交换。CAS算法CAS(V, E, N)包含3个参数,V表示内存里的值,E表示传入的值,N表示新值。在且仅在V值等于 E值时,才会将V值设为 N,如果 V值和 E值不同,则说明已经有其他线程做了更新,当前线程什么都不做。最后,CAS返回当前V的真实值。二、CAS的特性:乐观锁CAS操作采用了乐观锁的思想,总是认为自己可以成功完成原创 2022-05-04 10:45:30 · 348 阅读 · 0 评论 -
(面经总结)一篇文章带你完整复习 Java 中进程调度算法
文章目录一、进程调度算法二、优先调度算法1. 先来先服务调度算法2. 短作业优先调度算法三、高优先权优先调度算法1. 非抢占式优先调度算法2. 抢占式优先调度算法3. 高响应比优先调度算法四、时间片的轮转调度算法1. 时间片轮转法2. 多级反馈队列调度算法一、进程调度算法进程调度算法包括优先调度算法、高优先权优先调度算法和基于时间片的轮转调度算法。其中,优先调度算法分为先来先服务调度算法和短作业优先调度算法;高优先权优先调度算法分为非抢占式优先权算法、抢占式优先权调度算法和高响应比优先调度算法。基原创 2021-02-24 16:57:43 · 233 阅读 · 0 评论 -
(面经总结)一篇文章带你完整复习 Java 中线程上下文切换和多线程如何共享数据
文章目录一、线程上下文切换1. 上下文切换2. 引起线程上下文切换的原因二、多线程如何共享数据1. 将数据抽象成一个类,并将对这个数据的操作封装在类的方法中2. 将Runnable对象作为一个类的内部类,将共享数据作为这个类的成员变量一、线程上下文切换CPU利用时间片轮询来为每个任务都服务一定的时间,然后把当前任务的状态保存下来,继续服务下一个任务。任务的状态保存及再加载就叫作线程的上下文切换进程:指一个运行中的程序的实例。在一个进程内部可以有多个线程在同时运行,并与创建它的进程共享同一地址空间(一原创 2021-02-23 18:15:42 · 550 阅读 · 1 评论 -
(面经总结)一篇文章带你完整复习 Java 中并发关键字(CountDownLatch/CyclicBarrier/Semaphore/Volatile)
文章目录一、倒计数器:CountDownLatch二、循环栅栏:CyclicBarrier三、信号量:Semaphore四、volatile 关键字的作用一、倒计数器:CountDownLatchCountDownLatch类位于java.util.concurrent包下,是一个同步工具类,允许一个或多个线程一直等待其他线程的操作执行完后再执行相关操作。CountDownLatch基于线程计数器来实现并发访问控制,主要用于主线程等待其他子线程都执行完毕后执行相关操作对于倒计数器,一种典型的场景就原创 2022-05-05 02:45:00 · 577 阅读 · 0 评论 -
(面经总结)一篇文章带你完整复习 Java 中阻塞队列
文章目录一、Java阻塞队列二、阻塞队列的主要操作1. 插入操作2. 获取数据操作(移除操作)三、Java中的阻塞队列实现1. ArrayBlockingQueue2. LinkedBlockingQueue3. PriorityBlockingQueue4. DelayQueue5. SynchronousQueue6. LinkedTransferQueue7. LinkedBlockingDeque一、Java阻塞队列队列是一种只允许在表的前端进行删除操作,而在表的后端进行插入操作的线性表。阻塞原创 2021-02-22 10:49:39 · 231 阅读 · 0 评论