![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 91
yuan_404
这个作者很懒,什么都没留下…
展开
-
MySql-高级(分库分表问题简析) 学习笔记
snowflake 算法是 twitter 开源的分布式 id 生成算法,采用 Scala 语言实现,是把一个 64 位的 long 型的 id,1 个 bit 是不用的,用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。使用一个单独的库,这个库不做分库分表,就只有它一个,此时当系统里每次得到一个 id,都是往这个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。的,也就是说主库上并行的操作,在从库上会串行执行。原创 2023-05-23 11:17:19 · 1065 阅读 · 1 评论 -
SpringCloud(28. 分布式会话与分布式事务)
比如,一般来说跟钱相关的,跟钱打交道的,支付、交易相关的场景,会用 TCC,严格保证分布式事务要么全部成功,要么全部自动回滚,严格保证资金的正确性,保证在资金上不会出现问题。这个方案说实话最大的问题就在于严重依赖于数据库的消息表来管理事务啥的,如果是高并发场景咋办呢?所以一般确实很少用。但是说实话,一般尽量别这么搞,自己手写回滚逻辑,或者是补偿逻辑,实在太恶心了,那个业务代码是很难维护的。这个方案保证了最终一致性,哪怕 B 事务失败了,但是 A 会不断重发消息,直到 B 那边成功为止。原创 2023-05-22 11:01:37 · 872 阅读 · 1 评论 -
SpringCloud(27. Redis 和 ZK 分布式锁)
要求较高,那么可以选择使用。要求较高,那么可以选择使用。如果应用场景对于分布式锁的。如果应用场景对于分布式锁的。原创 2023-05-18 10:29:33 · 639 阅读 · 0 评论 -
SpringCloud(26.分布式服务框架Dubbo面试题简析)
provider 启动的时候,就会加载到我们 jar 包里的my=com.bingo.MyProtocol 这行配置里,接着会根据你的配置使用你定义好的 MyProtocol 了,这个就是简单说明一下,你通过上述方式,可以替换掉大量的 dubbo 内部的组件,就是扔个你自己的 jar 包,然后配置一下即可。首先,一般来说,个人建议是,你们从业务逻辑上设计的这个系统最好是不需要这种顺序性的保证,因为一旦引入顺序性保障,比如使用分布式锁,会导致系统复杂度上升,而且会带来效率低下,热点数据压力过大等问题。原创 2023-05-18 09:17:22 · 466 阅读 · 0 评论 -
Redis(18. 面试题简析)学习笔记
sentinel,中文名是哨兵。集群监控:负责监控 redis master 和 slave 进程是否正常工作。消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。故障转移:如果 master node 挂掉了,会自动转移到 slave node 上。配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址。哨兵用于实现 redis 集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。原创 2023-05-12 11:10:25 · 563 阅读 · 0 评论 -
MQ(面试问题简析)学习笔记
通过一个 MQ,Pub/Sub 发布订阅消息这么一个模型,A 系统就跟其它系统彻底解耦了。原创 2023-05-08 16:03:40 · 1171 阅读 · 2 评论 -
Redis-周阳(17. Redis 分布式锁)学习笔记
synchronized 锁:单机版 OK,上 nginx分布式微服务,单机锁就不 OK,分布式锁:取消单机锁,上 redis 分布式锁 SETNX如果出异常的话,可能无法释放锁, 必须要在 finally 代码块中释放锁如果宕机了,部署了微服务代码层面根本没有走到 finally 这块,也没办法保证解锁,因此需要有设置锁的过期时间除了增加过期时间之外,还必须要 SETNX 操作和设置过期时间的操作必须为原子性操作。原创 2023-05-04 16:47:25 · 822 阅读 · 0 评论 -
Spring(11. 循环依赖 - 周阳)学习笔记
你解释下spring中的三级缓存?三级缓存分别是什么?三个Map有什么异同?什么是循环依赖?请你谈谈?看过 Spring源码吗?一般我们说的 Spring容器是什么?如何检测是否存在循环依赖?实际开发中见过循环依赖的异常吗?多例的情况下,循环依赖问题为什么无法解决?……多个 bean 之间相互依赖,形成了一个闭环比如:A 依赖于 B、B 依赖于 C、C 依赖于 A通常来说,如果问 Spring 容器内部如何解决循环依赖, 一定是指默认的单例 Bean 中,属性互相引用的场景。原创 2023-04-26 21:30:56 · 551 阅读 · 0 评论 -
JUC-多线程(12. AQS-周阳)学习笔记
可重入锁,又叫递归锁同一个线程,在外层方法获取锁的时候,再进入该线程内层方法会自动获取锁(前提,锁对象必须是同一个对象),不会因为之前获取还没释放而阻塞。Java 中的 ReentrantLock 和 Synchronized 都是可重入锁可重入锁的优点就是避免死锁第一个考点:我相信你应该看过源码了,那么AQS里面有个变量叫State,它的值有几种?答:3个状态:没占用是0,占用了是1,大于1是可重入锁第二个考点:如果锁正在被占用,AB两个线程进来了以后,请问这个总共有多少个Node节点。原创 2023-04-22 17:56:28 · 880 阅读 · 0 评论 -
MySql-高级( 面试问题简析) 学习笔记
B-Tree结构中是将数据存储到了节点中,因此每行存的索引就变少了(规定每行存16kb)相应的深度(阶)比B+Tree深,会造成进行IO操作过多,影响性能。其次B+Tree中的叶子节点存在指针,由于指针的存在,在范围查找时,移动指针即可,而B-Tree不行。在事务B提交之前,事务A查询的结果就已经是事务B修改后的数据。事务B提交后,事务A再一次读取,读到的是更新后的数据。事务B提交后,事务A再一次读取,读到的依旧是原始数据。事务B对 ID = 1 的数据进行修改。事务B提交前,事务A读到的是原始数据。原创 2023-04-19 17:10:44 · 490 阅读 · 0 评论 -
JVM(面试问题简析)学习笔记
在执行年轻代GC的时候,会将没有任何引用的对象回收,一般情况下被方法的局部变量、类的静态变量引用的对象不会被回收,其他都会被回收。一般,再垃圾回收处理时,一边判断哪些没有被引用,一边进行回收是不现实的,所以有一个。的概念,也就是在垃圾回收时,会停止工作线程运行,然后再判断哪些可以回收。对于老年代而言,其中的垃圾对象不是很多,大部分都是需要长期存活的对象。老年代的垃圾回收比年轻代的速度会慢 10 倍以上。如果eden区满了,就会触发年轻代的GC。parnew + cms 的组合。年轻代垃圾回收的算法。原创 2023-04-19 13:37:53 · 213 阅读 · 0 评论 -
Spring(10. 面试问题简析)学习笔记
AOP(Aspect-Oriented Programming:面向切面编程),能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。Spring 中的 Bean 本身是线程不安全的,但是存在以下几种情况下,可以是线程安全的。Spring 容器中的 Bean 的 五种作用域,(绝大部分的时候,使用的都是单例的)底层的核心技术就是反射。利用反射直接根据你的类去构建对应的对象。原创 2023-04-13 16:58:41 · 526 阅读 · 0 评论 -
MySql-高级(锁机制) 学习笔记
尚硅谷-MySql-高级思维导图:思维导图(mmap+HTML格式)1. 概述1. 定义锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。2. 举例打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另原创 2020-08-06 14:32:29 · 128 阅读 · 0 评论 -
MySql-高级(查询截取分析) 学习笔记
1. 前言在实际的应用中、面对实际的项目系统时,不需要对所有的 SQL 都建立索引,费时费力。只需要统计出系统中,使用频率最高的 、查询时间最慢的 一些 SQL 语句即可,也就是“八二原则”,处理 20% 的 SQL,达到 80% 的优化。统计出 这些 SQL 语句,用到的方法大致为 : 1. 慢查询日志;2. show processlist一般这项工作由运维人员进行,这里至少大致了解。2. 慢查询日志1. 定义MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中原创 2020-08-05 16:40:14 · 111 阅读 · 0 评论 -
MySql-高级(索引优化分析) 学习笔记
1. 前言为什么系统性能下降( sql 执行慢、执行时间长、等待时间长)数据过多 —— 当单表数据量快要达到 500 万条瓶颈时,分库分表关联的表太多(使用太多 join) —— SQL 优化没有充分利用索引 —— 优化索引建立服务器调优及呵呵参数设置 —— 调整 my.cnf优化索引是效果较好的,最重要的。2.简单回顾多表查询3.索引介绍3.1 概念索引是帮助 MySQL高效获取数据的结构,可以理解为,排好序的快速查找数据结构3.2 优势查询速度快排序速度很快3原创 2020-08-02 16:18:53 · 428 阅读 · 0 评论 -
JUC-多线程(11.面试问题简析)学习笔记
原子性 就是当有一个线程在对内存中的某个数据进行操作的时候,必须要等这个线程完全操作结束后,其他线程才能够操作,这就是原子性。可见性 就是如果有多个线程对一个数据进行操作时,如果一个线程成功修改了数据,那么其他线程能够立即更新工作内存中的该数据,即随时保持最新数据状态。为了避免频繁的创建、销毁线程,会构建一个线程池,有一定数量的线程,线程执行完任务之后,不要销毁自己,继续等待执行下一个任务。每个线程都有属于自己的工作内存,这个一个 CUP 级别的内存,在工作内存中存储了所有使用到的变量的副本。原创 2023-04-11 21:40:45 · 430 阅读 · 0 评论 -
HashMap源码分析 (1.基础入门) 学习笔记
本章为+ 拉钩教育HashMap 学习笔记。原创 2023-04-03 11:25:13 · 291 阅读 · 0 评论 -
HashMap源码分析 (2.原理分析) 学习笔记
第一次 put 时,Key1 的 Hash 值经过扰乱后得到 hash = 1122,通过寻址公式可得 index = 2,此为 Node1第二次 put 时,Key2 的 Hash 值经过扰乱后得到 hash = 162, 通过寻址公式也可得 index = 2,此为 Node2那么此时 Node1、Node2 就发生了碰撞当发生了上述的碰撞时,就需要将 Node2 的 next 指向 Node1,并且 index = 2 的元素存为 Node2,变为一个链表。原创 2023-04-03 14:25:25 · 281 阅读 · 0 评论 -
HashMap源码分析 (3. 手撕源码) 学习笔记
本章为学习笔记。原创 2023-04-03 17:12:41 · 320 阅读 · 0 评论