java基础篇:
我把面试问烂了的⭐Java基础篇⭐总结了一下(带答案,万字总结,精心打磨,建议收藏)-优快云博客
1、String、StringBuffer、StringBuilder的区别
String是用final修饰的不可变对象,可以理解为常量,线程安全,对String进行改变每次都会新生成一个String对象,然后把指针指向新对象。
StringBuffer线程安全,StringBuilder线程不安全
多线程篇:
多线程(看这一篇就够了,超详细,满满的干货)_csdn线程-优快云博客
1、线程是什么
⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 “同时” 执行着多份代码,main()⼀般被称为主线程(Main Thread)
2、相比进程的优势:
-
创建线程比创建进程更快.
-
销毁线程比销毁进程更快.
-
调度线程比调度进程更快.
3、创建线程:
-
继承Thread类
-
实现Runnable接口
-
线程池
设计模式篇:
23 种设计模式详解(全23种)_23种设计模式-优快云博客
总体来说设计模式分为三大类:
(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
(2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
(3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
springCloud篇:
【SpringCloud】最全最细!微服务框架_springcloud微服务架构-优快云博客
1、服务发现与注册:
服务实例向注册中心注册自身,并定期发送心跳保持注册状态
2、分布式架构的优缺点:
优点:
降低服务耦合、有利于升级拓展
缺点:
架构复杂,运维部署难度高
3、nacos与eureka的区别
(1)Nacos与eureka的共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
(2)Nacos与Eureka的区别
Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
临时实例心跳不正常会被剔除,非临时实例则不会被剔除
Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式 ; Eureka采用AP方式
mysql篇:
MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)_mysql有这一篇幅就够了-优快云博客
底层原理分为6个步骤:
1、连接:客户端像mysql发送请求,与connector交互,连接池认证处理
2、缓存:服务器首先检查查询缓存,如果命中缓存,则返回缓存中的结果,否则进入下一阶段
3、解析:服务器进行sql解析(语法、词法)、预处理
4、优化:由优化器生成最优的执行计划
5、执行:mysql根据执行计划调存储引擎的api接口
6、结果:将查询结果返回给客户端,并缓存查询结果
mvcc篇:
【MySQL笔记】正确的理解MySQL的MVCC及实现原理_mysqlmvcc实现原理-优快云博客
是一种在数据库系统中用于实现并发控制的技术,允许多个事务并发的修改和读取数据,而不会发生数据冲突和不一致的问题。核心是保存数据的多个版本,这样不同的数据可以读取或修改不同的数据版本,从而避免了锁机制带来的性能瓶颈。
实现原理:
1、版本号和时间戳:每个数据都有自己的版本号,标识其创建时间(包括读版本号、写版本号)
2、数据版本管理:
- 每一行数据都有多个版本,每个版本有自己的版本号。
- 当一个事务开始时,它会读取数据的当前版本,并在此基础上进行修改。
- 修改后的数据会被保存为一个新的版本。
3、读写分离
快照读:不会阻塞写操作
当前读:可能会阻塞写操作,因为需要确保读取的是最新提交的数据
4、垃圾回收
无效版本清理:旧的数据版本会被标记为无效,并在适当的时候进行清理
sql调化篇:
1、使用索引:为经常用于查询条件的列添加索引,减少全表扫描
2、优化join操作:确保join操作中的连接条件有合适的索引,避免笛卡尔积
3、减少子查询:尽量将子查询转为join操作,减少嵌套查询的开销
4、选择合适的数据类型,减少存储空间和i/o开销
5、优化排序和分组:使用合适的索引,减少排序和分组开销
6、避免join太多张表,如果join的表太多,拆分为多条sql
索引篇:
什么是 MySQL 索引?_**什么是mysql索引?-优快云博客
什么是索引?
类似目录,key-value,底层是b+tree,优势,层级少,查询速度快,非叶子节点只存key,叶子节点存值,相同内存下比btree存更多的索引
哪些情况不走索引:
1、索引参与计算
2、使用like的时候,通配符放在最前面或中间
3、列的数据类型与值不同,例如列为字符串或字符,用整数找 不走索引
4、数据太少时,mysql评估使用全表扫描要比索引快
5、条件中有or关键字,必须所有条件都建索引,否则不走索引
6、正则表达式不走索引
redis篇:
Redis深度解析:特性、缓存策略、持久化与集群实战-优快云博客