<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fim77的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fim77</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fim77]]></copyright><item><title><![CDATA[【2026版】JVM面试题]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/149980989</link><guid>https://blog.youkuaiyun.com/fim77/article/details/149980989</guid><author>fim77</author><pubDate>Wed, 06 Aug 2025 22:03:22 +0800</pubDate><description><![CDATA[Java中Stop-The-World机制简称STW，是在执行垃圾收集算法时，Java应用程序的其他所有线程都被挂起。这是Java中一种全局暂停现象，全局停顿，所有Java代码停止，native代码可以执行，但不能与JVM交互。三色标记算法是一种JVM中垃圾标记的算法，他可以减少JVM在GC过程中的STW时长，他是CMS、G1等垃圾收集器中主要使用的标记算法。三色标记法将对象分为三种状态：白色、灰色和黑色。白色：该对象没有被标记过。灰色：该对象已经被标记过了，但该对象的引用对象还没标记完。]]></description><category></category></item><item><title><![CDATA[【2026版】Spring面试题]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/149687244</link><guid>https://blog.youkuaiyun.com/fim77/article/details/149687244</guid><author>fim77</author><pubDate>Sun, 27 Jul 2025 14:03:05 +0800</pubDate><description><![CDATA[所谓的IOC（inversion of control），就是控制反转的意思。在传统的程序设计中，应用程序代码通常控制着对象的创建和管理。例如，一个对象需要依赖其他对象，那么它会直接new出来对象。而在IOC 中，控制关系发生了反转。控制权被转移到Spring容器中，容器负责创建和管理对象，并在需要的时候将它们注入到应用程序中。所以，原来这个对象的控制权在我们的代码中，我们自己new的对象，在Spring中，应用程序不再控制对象的创建，而是被动地接受由容器注入的对象。]]></description><category></category></item><item><title><![CDATA[【2026版】Redis面试题]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/149550429</link><guid>https://blog.youkuaiyun.com/fim77/article/details/149550429</guid><author>fim77</author><pubDate>Wed, 23 Jul 2025 15:27:05 +0800</pubDate><description><![CDATA[热Key问题指在同一个时间点上，Redis中的同一个key被大量访问，就会导致流量过于集中，使得很多物理资源无法支撑，如网络带宽、物理存储空间、数据库连接等。热点key拆分：将热点数据分散到多个Key中，例如通过引l入随机前缀，使不同用户请求分散到多个Key，多个key分布在多实例中，避免集中访问单一Key。多级缓存：在Redis前增加其他缓存层（如CDN、本地缓存），以分担Redis的访问压力。限流和降级：在热点Key访问过高时，应用限流策略，减少对Redis的请求，或者在必要时返回降级的数据或空值。]]></description><category></category></item><item><title><![CDATA[【2025版】Redis面试题]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/148555099</link><guid>https://blog.youkuaiyun.com/fim77/article/details/148555099</guid><author>fim77</author><pubDate>Sat, 21 Jun 2025 14:52:52 +0800</pubDate><description><![CDATA[Redis的核心操作虽然是单线程的，但是Redis 使用像 epoll（Linux 系统）这样的 I/O 多路复用技术，检测所有客户端连接上的可读/可写事件​​，命令解析、执行、响应内容生成​​ 等核心逻辑 ​​依然由主线程单线程串行执行​，但是会将处理好的结果 ​​分发给 I/O 多线程进行具体的读写操作，所以能够在同一时间高效处理大量客户端的并发请求，避免了多线程环境下的上下文切换开销和锁竞争问题，从而实现对大量客户端连接的监听与处理。当执行 EXEC 时，队列中的​​所有命令会按顺序一次性执行​​。]]></description><category></category></item><item><title><![CDATA[【2025版】Java 基础+进阶 面试题]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/148005487</link><guid>https://blog.youkuaiyun.com/fim77/article/details/148005487</guid><author>fim77</author><pubDate>Thu, 29 May 2025 10:05:25 +0800</pubDate><description><![CDATA[/... }//...保存字符串的数组被 final 修饰且为私有的，并且String 类没有提供/暴露修改这个字符串的方法。String 类被 final 修饰导致其不能被继承，进而避免了子类破坏 String 不可变。Java 泛型是一种在编译时提供类型安全检查的机制，允许开发者编写更通用、可读且类型安全的代码。泛型的作用：类型安全：通过编译时检查，避免运行时类型转换错误（如 ClassCastException）。代码复用：编写可处理多种数据类型的通用代码（如集合框架 List）]]></description><category></category></item><item><title><![CDATA[【2025版】SpringCloud Gateway网关快速入门]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/148047838</link><guid>https://blog.youkuaiyun.com/fim77/article/details/148047838</guid><author>fim77</author><pubDate>Sun, 18 May 2025 18:52:23 +0800</pubDate><description><![CDATA[主要是yml里的路由规则配置，这里只是简单演示，还有路由过滤器可以配置，需要用到的时候再找资料。向8090端口发送请求，最终也能正确路由到提供order-service的某个端口上。]]></description><category></category></item><item><title><![CDATA[【2025版】OpenFeign快速入门]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/148045905</link><guid>https://blog.youkuaiyun.com/fim77/article/details/148045905</guid><author>fim77</author><pubDate>Sun, 18 May 2025 18:22:19 +0800</pubDate><description><![CDATA[有说在yml中配置的，这种方式会报找不到服务实例的错误，不是因为别的原因，就是加了这个配置的原因，因为把这个loadbalancer的配置去掉就不会报这个错误，一加上就报错。OpenFeign只会在FeignClient所在包的日志级别为DEBUG时，才会输出日志。再次请求，打个断点，可以看到delegate已经变成OkHttp的客户端。：在某个FeignClient中配置，只对当前FeignClient生效。Feign默认的日志级别就是NONE，所以默认我们看不到请求日志。]]></description><category></category></item><item><title><![CDATA[【2025版】Spring Boot面试题]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/147687588</link><guid>https://blog.youkuaiyun.com/fim77/article/details/147687588</guid><author>fim77</author><pubDate>Wed, 14 May 2025 18:43:17 +0800</pubDate><description><![CDATA[SpringBootApplication是SpringBoot项目的核心注解，通常用于标记应用程序的主类（即包含main方法的类）。它的主要作用是一站式地启用SpringBoot的关键特性，简化项目的初始配置。继承自 @Configuration，标记当前类为配置类，允许通过 @Bean 注解定义和注册 Bean。​​启用 Spring Boot 的自动配置机制。]]></description><category></category></item><item><title><![CDATA[Spring 事件监听机制的使用]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/147959382</link><guid>https://blog.youkuaiyun.com/fim77/article/details/147959382</guid><author>fim77</author><pubDate>Wed, 14 May 2025 18:08:11 +0800</pubDate><description><![CDATA[事件可以是任意对象（Spring 4.2+支持POJO），或继承ApplicationEvent（旧版）。// 自定义事件（POJO形式，无需继承ApplicationEvent）]]></description><category></category></item><item><title><![CDATA[【2025版】MyBatis使用教程]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/147953014</link><guid>https://blog.youkuaiyun.com/fim77/article/details/147953014</guid><author>fim77</author><pubDate>Wed, 14 May 2025 16:18:48 +0800</pubDate><description><![CDATA[使用Mybatis的注解方式，主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能，建议使用XML来配置映射语句，也就是将SQL语句写在XML配置文件中。但是如果全都没传数据，就会多个where出来，如果第一个没传数据，会多个and出来，使用。在xml映射文件中配置的SQL，有时可能会存在很多重复的片段，此时就会存在很多冗余的代码。XML映射文件中sql语句的id与Mapper接口中的方法名一致，并保持返回类型一致。：动态的在SQL语句中插入set关键字，并会删掉额外的逗号。]]></description><category></category></item><item><title><![CDATA[【2025版】JDK动态代理与CGLIB代理使用方法]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/147950641</link><guid>https://blog.youkuaiyun.com/fim77/article/details/147950641</guid><author>fim77</author><pubDate>Wed, 14 May 2025 12:51:06 +0800</pubDate><description><![CDATA[如果目标对象实现了多个接口，想使用哪个接口的增强功能，只需要把。]]></description><category></category></item><item><title><![CDATA[【2025年】MySQL面试题总结]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/147397674</link><guid>https://blog.youkuaiyun.com/fim77/article/details/147397674</guid><author>fim77</author><pubDate>Sat, 03 May 2025 17:51:41 +0800</pubDate><description><![CDATA[如果一个索引包含（或者说覆盖）所有需要查询的字段的值，我们就称之为 覆盖索引。覆盖索引即需要查询的字段正好是索引的字段，那么直接根据该索引，就可以查到数据了，而无需回表查询。在 InnoDB 存储引擎中，非主键索引的叶子节点包含的是主键的值。这意味着，当使用非主键索引进行查询时，数据库会先找到对应的主键值，然后再通过主键索引来定位和检索完整的行数据。这个过程被称为“回表”。MySQL的主从同步机制是一种数据复制技术，用于将主数据库(Master)上的数据同步到一个或多个从数据库(Slave)中。]]></description><category></category></item><item><title><![CDATA[【2025版】2小时候学会MQ消息队列，全是干货]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/147265846</link><guid>https://blog.youkuaiyun.com/fim77/article/details/147265846</guid><author>fim77</author><pubDate>Sat, 19 Apr 2025 17:29:15 +0800</pubDate><description><![CDATA[之前的队列和交换机，以及他们的绑定关系都是在控制台操作的，但是在实际开发时，队列和交换机是程序员定义的，将来项目上线，又要交给运维去创建。将来开发编程肯定不是在控制台这样手动操作的，是需要写在代码里面的，手动操作繁琐，容易出错，而且也不方便自动化执行，如果从研发环境转到生产环境，这些配置肯定不可能再手动点一遍配出来，如果能通过执行代码的方式把这些交换机、队列重新自动化的配置好，那肯定是更准确，更方便的。比如队列A绑定的路由键是"error"，队列B绑定的路由键是"info"。]]></description><category></category></item><item><title><![CDATA[一文学会Git代码版本控制]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/147112908</link><guid>https://blog.youkuaiyun.com/fim77/article/details/147112908</guid><author>fim77</author><pubDate>Fri, 11 Apr 2025 11:26:52 +0800</pubDate><description><![CDATA[命令作用注意git -v查看 git 版本git init初始化 git 仓库git add 文件标识暂存某个文件文件标识以终端为起始的相对路径git add .暂存所有文件git commit -m '说明注释'提交产生版本记录每次提交，把暂存区内容快照一份git status查看文件状态 - 详细信息查看文件状态 - 简略信息第一列是暂存区状态，第二列是工作区状态查看暂存区文件列表git restore 文件标识从暂存区恢复到工作区。]]></description><category></category></item><item><title><![CDATA[Maven（基础+进阶）教程]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/146969946</link><guid>https://blog.youkuaiyun.com/fim77/article/details/146969946</guid><author>fim77</author><pubDate>Thu, 10 Apr 2025 09:30:02 +0800</pubDate><description><![CDATA[Maven 是一个 ​基于项目对象模型（POM）​ 的 ​Java 项目构建和依赖管理工具，由 Apache 开发。它通过标准化的项目结构、自动化构建流程和强大的依赖管理机制，显著简化了 Java 项目的开发、测试、打包和部署过程。]]></description><category></category></item><item><title><![CDATA[快速上手SpringBoot拦截器]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/146518994</link><guid>https://blog.youkuaiyun.com/fim77/article/details/146518994</guid><author>fim77</author><pubDate>Wed, 26 Mar 2025 10:59:44 +0800</pubDate><description><![CDATA[拦截器（Interceptor） 是 Spring MVC 提供的一种机制，用于在 请求到达 Controller 前 或 响应返回客户端前 执行自定义逻辑。它类似于 Servlet 中的过滤器（Filter），但更深度集成到 Spring 框架中，可以直接访问 Spring 的上下文（如 Controller、Handler 信息）。默认情况下，拦截器的执行顺序由注册顺序决定。方法：按拦截器的 注册顺序 依次调用。方法：按拦截器的 注册顺序的逆序 调用。方法：按拦截器的 注册顺序的逆序 调用。]]></description><category></category></item><item><title><![CDATA[面试高频：SpringBoot中为何不推荐@Autowired注入]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/146518699</link><guid>https://blog.youkuaiyun.com/fim77/article/details/146518699</guid><author>fim77</author><pubDate>Wed, 26 Mar 2025 08:34:21 +0800</pubDate><description><![CDATA[不使用@Autowired注入的原因与IoC容器强耦合使用 @Autowired 进行字段注入时，类会直接依赖 Spring 的特定注解和容器机制。这导致代码与 Spring 框架强耦合，脱离 Spring 容器后无法独立运行或测试。容易违反单一职责原则字段注入允许类中随意添加多个 @Autowired 依赖，可能导致类承担过多职责，违反单一职责原则（SRP）。构造函数参数列表过长时，会提醒开发者重构类职责（例如拆分到多个类中）。构造函数注入的优势。]]></description><category></category></item><item><title><![CDATA[一文带你理清SpringBoot如何实现多数据源动态路由【全干货，无废话】]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/146490304</link><guid>https://blog.youkuaiyun.com/fim77/article/details/146490304</guid><author>fim77</author><pubDate>Tue, 25 Mar 2025 01:39:06 +0800</pubDate><description><![CDATA[annotation(dataSource)里的 dataSource 只要和 switchDataSource(JoinPoint joinPoint, DataSource dataSource)里的 dataSource 同名就行，不是只能叫dataSource。直到上一步，我们等于是做好了配置工作，规定好了路由规则，后面的工作还有确定什么时候触发路由，当然，在触发的时候要传递一些信息，路由规则根据接收到的信息应用规则，这个信息也就是注解的值，也就是说路由规则需要一个输入，才能决定路由结果。]]></description><category></category></item><item><title><![CDATA[一文搞懂Spring Boot处理跨域请求]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/146460156</link><guid>https://blog.youkuaiyun.com/fim77/article/details/146460156</guid><author>fim77</author><pubDate>Sun, 23 Mar 2025 19:23:04 +0800</pubDate><description><![CDATA[跨域请求（Cross-Origin Request）是指在浏览器中，一个网页的 JavaScript 代码尝试向与当前网页不同源（Origin）的服务器发起 HTTP 请求。这里的“源”由协议（Protocol）、域名（Domain）和端口（Port）三部分组成。如果这三个部分中有任何一个不同，就被认为是跨域请求。一般我们遇到的跨域请求发生在前端服务器向后端服务器发送请求，前端和后端的端口号不同，产生了跨域问题跨域请求的起因是浏览器的同源策略。]]></description><category></category></item><item><title><![CDATA[一文搞懂SpringBoot自动装配原理]]></title><link>https://blog.youkuaiyun.com/fim77/article/details/146459033</link><guid>https://blog.youkuaiyun.com/fim77/article/details/146459033</guid><author>fim77</author><pubDate>Sun, 23 Mar 2025 18:52:14 +0800</pubDate><description><![CDATA[使用和@Bean定义要自动配置的类和bean在中写上自动配置类的全类名打包发布，在其他项目中引入即可。]]></description><category></category></item></channel></rss>