自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 MySQL 基础笔记

事务就是遵循 ACID 原则的一系列业务执行,在数据库中的事务就是不同事务直接隔离,并保持原子性,要不都成功,要不都失败回滚,事务一定是从一个状态到另一个状态,并且做出的修改时永久的。

2025-06-11 23:42:14 1170

原创 Linux 学习笔记

压缩为 ZIP 格式或解压 ZIP 文件。显示文件开头部分(默认前 10 行)查看磁盘空间使用情况(人类可读格式)分页查看文件内容(支持上下翻页)查看用户信息(UID/GID)创建空文件或更新文件时间戳。动态查看系统进程/资源占用。查看网络接口信息(新版用。移动/重命名文件或目录。下载文件或访问 URL。以超级用户权限执行命令。显示当前工作目录路径。

2025-06-07 23:47:19 653

原创 Web 基础笔记

RESTful 是一种资源导向的 API 设计风格,它强调通过 URI 标识资源,通过请求方法标识操作,用状态码表示结果。RESTful 的设计规范有:1.URI 标识资源:在 URI 中不在书写类似 getUsers,deleteUser 这种强语义的 API 接口名,而是使用名词 User;2.通过请求方法表示操作:get 就是查询获取,post 就是插入,put 就是更新,delete 就是删除;

2025-06-06 17:33:10 995

原创 JVM GC 机制笔记

当触发 GC 时,先 Stop the world 将 GC Root 直接引用的对象都标记上,再继续运行用户线程,并行运行 GC 线程遍历出整个 GC Root 引用网络,遍历完后继续 STW,开启多线程纠正 GC Root 引用网络,因为在前一步遍历时可能会新增对象,所以需要纠正,纠正后继续开启用户线程,并行 GC 线程采用标记-整理算法回收垃圾,在并发清理时,需要判断区域是否满足最大 STW 停顿时间(优先回收垃圾占比高的区域),区域满足才进行清理,如果不满足则跳过。

2025-06-05 20:24:10 971

原创 JVM 调优笔记

3.jmap:用于获取进程的堆状态并转存快照(jmap -heap [pid],jmap -dump:format=b,file=heap.hprof <pid>)4.jstat:用于获取 GC 状态 (jstat -gc pid,jstat -gcutil pid)3.然后用 jstack <java_pid> > jstack.log 获取该进程下所有堆栈信息;4.回到项目,找出对应代码,通过阅读上下文情况,分析代码逻辑,进行修复。2.jstack:用于获取进程的堆栈状态(jstack [pid])

2025-06-05 11:50:10 996

原创 JVM 基础面经

程序计数器(Program Counter Register) 是 JVM 运行时内存结构中的一个重要组成部分,用于记录当前线程所执行的字节码的地址(即正在执行或即将执行的指令的地址)。它的作用类似于 CPU 的指令指针。1.线程私有:程序计数器是线程私有的,每个线程都有独立的一份,原因是 JVM 采用多线程运行,每条线程在执行字节码时需要独立追踪当前执行的位置。线程切换时,程序计数器可以帮助恢复到正确的执行位置,实现线程的正确调度。

2025-06-04 18:14:45 797

原创 线程池面经

比如缓存线程池,最大线程数为 Integer.MAX_VALUE,会造成线程数无限增长,同时 Executors 创建的线程池都是默认拒绝策略,不一定符合业务需求,再者固定线程池和单线程池都采用了无界队列,会造成任务队列而导致 OOM。当有任务要执行,先判断核心线程数是否已满,不是则创建核心线程并调度执行,是则判断队列是否已经满了,不是则入队等待空闲线程执行,是则判断最大线程数是否已满,不是则创建非核心线程执行当前任务,是则触发拒绝策略。1.固定大小线程池:核心线程数固定,空闲线程可复用,任务过多会排队;

2025-06-03 19:01:53 460

原创 并发锁基础面经

CAS 基本原理是比较某个变量当前值是否等于预期值,如果相等则更新为新值,如果不等则不做任何操作或者重试不断自旋;AQS 是 Java 并发包中提供的一个用于实现依赖 FIFO 队列的同步器的基础框架,它通过一个内部的双向队列管理线程的等待和唤醒,并维护一个表示同步状态的 Volatile State 变量。AQS 支持独占模式和共享模式。

2025-06-03 17:23:50 605

原创 线程基础面经

线程是 CPU 调度的最小单位,进程内可能包含有多个线程,多个线程共享进程的资源。线程之间的切换开销更小,而进程创建喝切换开销更大。

2025-06-03 15:21:48 433

原创 集合基础面经

只有数组长度为 2 的幂时,这种优化才能保证哈希值低位被充分利用,实现均匀分布,因为只有数组长度是 2 的次幂时,length - 1 的二进制数低位全为 1,作与运算就是保留低位 hash 值,刚好就是 0 ~ length - 1,如果不是 2 的次幂时,低位只有某些位置为 1,会造成计算的数组下标分布不均,同时 hash & (length - 1) 等价 hash % length 的前提条件就是数组大小是 2 的次幂。List 是有序存储的,Map 和 Set 是无序存储的。

2025-06-03 13:57:28 758

原创 Java 基础面经

单例模式是该类的实例对象在整个程序生命周期中只能存在一个实例,主要分为饿汉式,懒汉式以及双检锁。饿汉式:就是程序开始时就构建实例,通过 static 关键字修饰类实例对象,并调用构造方法,因为一开始就构建,所以是线程安全的;懒汉式:就是只有调用该实例对象时,才构建实例,先判断是否为空,为空则构建,否则返回实例,是非线程安全的,延迟构建;

2025-06-02 18:13:32 726

原创 MYSQL 常用函数

如果 expr1 是 NULL,返回 expr2。如果条件为真返回 v1,否则返回 v2。为每个分组内的行分配唯一序号,从1开始。返回最大值(支持数值或字符串)返回最小值(支持数值或字符串)排名函数,遇到并列会跳过排名。获取当前行的前n行的某列值。获取当前行的后n行的某列值。排名函数,并列不跳过。把每组数据等分为N组。计算当前窗口内累计和。

2025-05-29 23:27:22 364

原创 MyBatis 面经

MyBatis 有两级缓存,默认开启一级,而一级缓存是作用于 SqlSession 的,不同 SqlSession 之间的缓存并不互通,同时执行了更新,插入,删除操作后,缓存会被清空。而二级缓存则作用于 Mapper(Namespace),需要手动开启,同时缓存的数据需要实现了 Serializable 接口,二级缓存是跨 SqlSession 生效的。,并通过 PrepareStatement 的 Set 方法来赋值,可以有效防止 SQL 注入,提高了系统安全性。2. 集合查询(一对多)

2025-05-29 18:51:32 679

原创 Spring MVC 面经

前端发送请求到后端服务器,经过前端控制器统一调度,通过查询控制器映射器找对对应的控制器和方法并路由到那,再通过控制器适配器的解析发送到控制器,控制器处理完后返回结果,结果再经过控制器适配器的解析返回到前端控制器,前端控制器调用视图解析器解析数据并生成视图对象,最后视图对象返回到前端。处理器适配器(HandlerAdapter):用于适配不同的请求方式,将不同的请求解析为控制器可以识别的请求,并将控制器返回的结果统一处理为前端控制器可以处理的格式。- value:默认属性,用于指定前端传入的参数名称。

2025-05-29 13:18:43 594

原创 基础排序算法

选一个“基准值”(pivot),把数组划分为两部分:小于基准和大于等于基准的部分,然后对这两部分递归地继续快排,利用分治和原地交换完成排序。将数组划分为已排序和未排序两部分,每次从未排序部分取出一个元素,插入到已排序部分的合适位置,使其保持有序,类似打扑克牌理牌过程。将数组构建成一个大顶堆(或小顶堆),每次取出堆顶(最大/最小)元素,与堆尾交换,然后调整堆保持堆性质,反复进行直到数组有序。把一个数组不断“二分”,直到子数组只剩一个元素,然后从下往上逐步合并两个有序子数组,最终整个数组变成有序的。

2025-05-29 13:17:40 277

原创 Spring Cloud 面经

微服务是将一个单体服务按照一定的拆分规则,比如业务功能,拆分为若干个小服务,每一个服务都单独部署并且拥有独立的数据库,服务之间的通信通过服务调度组件进行通信,在SpringCloud中就是基于HTTP进行通信。优点是松耦合,只需关注当前服务的业务逻辑的开发,每个开发团队间可以自由选用技术开发,同时,在微服务分布式部署下即使某个服务不可用,也不会影响到其他服务的运行。缺点是运维成本增加,需要更多服务器部署,难以管理,人力成本增加,同时服务之间的通信和调用压力增大,数据之间的一致性受到影响。

2025-05-29 13:13:38 922

原创 Spring Boot 面经

通过创建application.yaml,application-dev.yaml,application-test.yaml,再配置application.yaml配置文件内的spring.profiles.active=dev/test,来读取对应的配置文件内配置。

2025-05-29 13:11:16 447

原创 分布式事务面经

分布式事务就是在分布式架构下,某一业务实现需要操作多个服务或者多个数据库,希望某一服务出现异常时,整体事务都执行回滚。比如用户下订单这个操作,就涉及了订单服务,用户服务,库存服务,首先是订单服务生成订单,调用用户服务扣除余额,同时调用库存服务扣除库存,但是如果用户余额已经扣除后,库存服务出错了,订单服务作为调用者会和库存服务一起回滚,但是作为并行调用的用户服务却无法回滚了,所以需要分布式事务控制这种情况。CAP 原则是分布式系统的一个重要概念,分别对应一致性,可用性,分区容错性。

2025-05-29 13:10:45 835

原创 Redis 面经

主从同步是实现Redis集群的核心功能,分为全量同步和增量同步。全量同步发生在从节点与主节点第一次连接时,以及从节点宕机太久重新连接时。1.全量同步的原理是从节点发送同步命令到主节点,带有从节点的runid以及offset,主节点则判断runid与自身的id是否一致,如果不一致代表第一次连接,需要进行全量连接,主节点先将runid以及offset发送给从节点同步,再调用bgsave生成RDB快照发送给从节点,从节点清空数据并加载该快照。

2025-05-29 12:58:57 829

原创 Selenium 面经

Selenium 是一个用于 Web 应用程序自动化测试的开源工具集,支持多语言(Java/Python等)和跨浏览器(Chrome/Firefox等)。核心组件:直接操作浏览器,实现自动化交互(核心工具)。:录制和回放测试脚本(适合快速原型)。:分布式测试,并行运行用例。

2025-05-29 12:58:07 342

原创 测试基本理论

测试计划包含了测试目标,测试范围,测试资源,测试人员,各测试时间点,风险以及应对。所以需要分析需求,明确测试的最终目标以及范围,避免过度或过少测试,再然后要明确测试所需资源,这些属于测试前置条件,没有安排到位无法开展工作,同时要分派好测试人员任务,再然后需要明确测试的各个时间点,每个时间点里程碑需要达到的目标,最后就是测试中可能出现的风险,需要评估可能出现的风险并给出解决方案。标准结构就是:用例编号,用例名称,用例优先级,前置条件,测试步骤,输入数据,预期结果,实际结果,测试时间,测试人员。

2025-05-29 12:54:54 1118

原创 RabbitMQ 面经

死信交换机和其他交换机并没有什么区别,只要有队列声明了deed-letter-exchange,那个被声明的交换机就是死信交换机,队列只需要声明deed-letter-exchange参数即可绑定死信交换机。

2025-05-29 12:51:07 896

原创 Kafka 面经

通过设置消息确认的ACKS的不同参数来调整,0 就是只要生产者发送了消息就确认,和 RabbitMQ里消费者确认机制的 None 的作用类似,1 就是只要消息对应分区的leader副本接受到消息了即可,和RabbitMQ里镜像队列的异步复制的作用类似,ALL 就是只有全部副本都接受到了消息才返回ACK,和RabbitMQ里镜像队列的同步复制的作用类似。2.分区并行,每一个 topic 都分为多个分区,每一个分区由单独的消费者消费,每个Partition独立处理读写请求,可以保证了消息的并行处理。

2025-05-29 12:50:09 1024

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除