- 博客(544)
- 收藏
- 关注
原创 java中调用uri请求的几种常见的方法
方法适合场景难度备注学习原理、简单小工具、环境受限(不能加库)中等初学者建议从这里开始理解概念传统企业项目,需要丰富功能和稳定支持中等功能全,但API稍旧OkHttp现代Java/Android应用,追求简洁和性能容易对于新项目,这是非常推荐的选择传统的Spring Boot项目,简单同步调用非常容易Spring生态,已进入维护模式WebClient响应式、高并发的Spring项目中等Spring未来的方向,支持异步。
2025-12-24 19:18:26
924
原创 java-BlockingQueue、CountDownLatch讲解
恢复线程的中断状态它用在里,防止中断信息丢失这是处理线程中断的最佳实践CountDownLatch = 倒计时器创建时指定初始值(等待的线程个数)每个工作线程完成后调用主线程调用await()阻塞等待当倒计时变成 0 时,主线程被唤醒这样可以保证主线程一定要等所有工作线程完成后才继续。
2025-12-14 13:57:41
870
原创 mysql-使用 performance_schema 进行性能监控
旧方式 (新方式 (手动开启默认开启,无需配置仅当前会话有效全局监控,支持多会话已废弃(MySQL 8.0 移除)官方推荐,功能更强大。
2025-12-09 18:56:37
930
原创 MySql索引优化:根据 SELECT 查询语句建立索引小技巧
通过这些技巧,你可以根据具体的 SELECT 语句设计出高效的索引策略。: 如果出现 "Using index" 表示覆盖索引。
2025-11-28 23:31:46
277
原创 Nacos + 微服务名调用 - 负载均衡详解
问题答案加了 Nacos 能不能直接用微服务名?需要激活负载均衡器才能用RestTemplate 需要什么?@LoadBalanced 注解OpenFeign 需要什么?WebClient 需要什么?推荐用哪个?OpenFeign(最方便)微服务名 → 负载均衡器拦截 → Nacos 查询实例 → 选择一个实例 → 替换为 IP:PORT → 发送请求。
2025-11-26 08:48:19
450
原创 Spring Cloud: Sentinel入门讲解
场景位置用途保护HTTP接口Controller限制请求频率保护业务方法Service限制业务操作远程调用降级Feign客户端调用失败降级异步任务保护@Async方法限制异步线程定时任务保护@Scheduled方法限制定时任务加在Service和Controller的public业务方法上,不要加在Mapper、私有方法、static方法。
2025-11-24 22:13:05
727
原创 Spring Cloud: SEATA中全局锁的申请和释放过程
阶段操作全局锁状态一阶段开始申请锁🔒 已锁一阶段执行持有锁执行SQL🔒 已锁一阶段结束等待二阶段🔒 已锁二阶段Commit删除undo_log🔒 已锁二阶段Commit提交本地事务🔒 已锁二阶段Commit释放全局锁🔓 已释放全局锁在一阶段申请,在二阶段提交/回滚并删除undo_log后才释放这样可以防止其他事务在一阶段期间修改这些记录锁的粒度是单条记录(通过主键标识)如果两个事务操作同一条记录,后来的事务会等待前面事务释放锁。
2025-11-24 21:10:15
275
原创 Spring Cloud Gateway 断言完全讲解
内置的断言可能无法满足业务需求。检查用户是否是VIP会员根据请求中的特定参数进行复杂逻辑判断整合数据库查询或缓存检查@Component // ⚠️ 关键!必须注册为Spring Bean// 传入配置类为什么要继承这个类?
2025-11-24 11:29:33
672
原创 SpringBoot22-ApplicationRunner 详细讲解
特性说明用途应用启动完成后执行初始化逻辑优势保证所有 Bean 初始化完成,支持依赖注入,可访问命令行参数注意事项如果抛出异常,应用启动会失败;可用 @Order 控制多个 Runner 的执行顺序替代方案。
2025-11-21 23:22:48
779
原创 SpringBoot21-WebSocket 完整技术笔记
Override= null) {模块关键点连接建立使用共享 HttpSession用户识别从 HttpSession 获取登录用户,不要依赖消息体伪造身份消息路由通过 JSON 消息头区分广播/私聊,维护映射连接管理上线加入集合,下线移除,并广播状态变更异常处理捕获发送异常,清理无效连接,避免内存泄漏安全校验验证用户身份、消息内容合法性调试支持利用浏览器 DevTools 和服务端日志。
2025-11-20 10:21:11
812
原创 SpringBoot20- Spring Task 入门教程
加开启功能写一个类,加@Component方法上加方法必须是,无参数用fixedRatefixedDelay或cron控制时间如果你用的是传统 Spring(非 Boot)的配置类,就是在传统 Spring 项目中手动开启定时任务功能的一种方式,相当于告诉 Spring:‘请支持 @Scheduled 注解!’”如果你现在用的是创建这个类;确保它被 Spring 扫描到(通过那么你的@Scheduled方法就能正常运行啦!问题默认行为如何解决多个@Scheduled任务是否并行?
2025-11-18 20:03:30
785
原创 SpringBoot19-HttpClient 详解及 SpringBoot 使用指南
当前企业用得最多的是 RestTemplate,因为它是 Spring 生态的默认选择,学习成本低,存量项目多。微服务场景下 OpenFeign 是第一选择,已经成为事实标准。未来趋势是 WebClient,但普及还需要时间。维护老项目:继续用 RestTemplate新建微服务:用 OpenFeign追求性能和新技术:用 WebClient需要底层控制:用 HttpClient。
2025-11-16 10:36:56
1115
原创 SpringBoot18-redis的配置
数据类型RedisTemplate 方法说明String字符串操作Hash哈希表操作List列表操作Set集合操作Sorted Set有序集合操作// K: Key 的类型// V: Value 的类型可以不配置,但会用 JDK 序列化,导致数据不可读配置的目的:改用 JSON 序列化,让数据可读、节省空间、跨语言兼容:Key 用字符串,Value 用 Object 更灵活推荐做法:写配置类,统一使用 JSON 序列化:让 Jackson 能访问 private 字段。
2025-11-15 21:18:52
1186
3
原创 SpringBoot17-addresourcehandler()方法
配置项说明示例访问路径/upload/**实际存储位置缓存时间(秒)3600启用资源链true核心要点ResourceHandler 用/**匹配子路径ResourceLocations 末尾加file 路径用于磁盘文件classpath 路径用于项目资源。
2025-11-14 16:24:10
442
原创 SpringBoot16-@Configuration 类
会自动执行不会自动执行构造方法普通方法@Bean 方法没有注解的方法@PostConstruct 方法WebMvcConfigurer 的重写方法关键点类在启动时会被实例化只有特定方法会自动执行(@Bean、配置接口的方法等)普通方法不会执行,除非手动调用可以用构造方法或 @PostConstruct 验证类是否加载项目结构:├── 主启动类├── 同包或子包│ └── @Configuration 类 → ✅ 自动扫描,无需注册│├── 外部包(其他项目)
2025-11-14 14:10:48
951
原创 Vue91-Vue的原型
概念说明Vue 原型所有实例共享的对象Vue 实例每个组件都是一个 Vue 实例原型属性/方法添加到上的属性/方法前缀Vue 约定,避免与组件属性冲突使用场景全局方法、全局属性、挂载第三方库简单理解Vue 原型就像一个"公共工具箱",所有 Vue 实例(组件)都可以访问里面的工具。Vue 内置的$emit$watch等都是放在这个"工具箱"里的。
2025-11-14 10:26:54
194
原创 nginx-负载均衡的配置
weightip_hashleast_connhash是的。url_hashfair这种通常是第三方模块(比如 nginx_upstream_fair),在普通 Nginx 里是没有的,要自己编译模块才有。
2025-11-14 00:48:26
751
原创 SpringCloud03-Eureka02-搭建Eureka服务
配置项单机模式集群模式falsetruefalsetrue指向自己(实际不用)指向其他Server作用简单、独立高可用、容错你看到的配置这其实是在为将来的集群部署预留配置空间。在单机模式下,因为,这行配置实际上不起作用。
2025-11-12 21:25:05
925
原创 SpringCloud03-Eureka01-概述与工作流程
Eureka是Netflix开源的服务注册与发现框架,也是Spring Cloud中的一个重要组件。它解决了微服务架构中的一个核心问题:在微服务众多且动态变化的环境中,如何让服务之间能够相互发现和调用。Eureka Server(服务注册中心)和Eureka Client(服务提供者和消费者)。
2025-11-12 14:17:38
786
原创 springMVC07-SpringMVC的执行流程
请求 → DispatcherServlet→ HandlerMapping查找Handler→ 获取HandlerAdapter→ 执行拦截器preHandle→ 执行Handler方法↓├─ 【正常执行】 → 返回ModelAndView| → 执行拦截器postHandle│└─ 【抛出异常】 → HandlerExceptionResolver捕获→ @ControllerAdvice全局异常处理器处理→ 返回错误ModelAndView或错误响应。
2025-11-12 11:43:21
665
原创 SpringBoot19-@Qualifier用法
搭配方式是否可行推荐程度说明@Qualifier + @Autowired(字段)✅⭐⭐可以但不推荐@Qualifier + 构造方法✅⭐⭐⭐⭐⭐最推荐✅⭐⭐⭐⭐可选依赖时用✅⭐多余,直接用@Resource的name@Qualifier 单独用✅⭐⭐⭐可以但建议加@Autowired更清晰核心答案:@Qualifier不是必须和@Autowired搭配,但最常见的是和@Autowired一起使用。
2025-11-12 09:53:10
676
原创 SpringBoot面试题12-Bean的循环依赖
循环依赖:两个类互相需要对方,就像小明等小红、小红等小明构造方法的循环依赖:Spring解决不了,会报错@Autowired的循环依赖:Spring能解决,通过"先给空壳,后填充"的方式最好的办法:重新设计代码,避免循环依赖循环依赖是指两个或多个Bean之间相互依赖,形成一个闭环。A依赖B,B依赖A(两者循环)A依赖B,B依赖C,C依赖A(三者循环)
2025-11-12 01:33:38
979
原创 SpringBoot面试题11-Bean的生命周期
最后,在容器销毁之前,会执行销毁对象,此时会执行 DisposableBean 接口的回调,这一步如果 Bean 中有标注了。Bean 的生命周期总体来说有 4 个阶段,分别有创建对象、初始化对象、使用对象以及销毁对象,而且这些工作大部分是交给。简单总结一下,Bean 的生命周期共包含四个阶段,其中初始化对象和销毁对象我们程序员可以通过一些扩展点执行自己的代码。,对象有了后会填充该对象的内容,其实就是处理。,保证每个对象能拿到它需要的成员对象。其次,对象创建完毕后,需要做一些。
2025-11-11 16:35:55
587
原创 SpringBoot面试题10-IOC容器的初始化流程
然后项目开始对外提供服务。在 Bean 创建之前,用来修改 Bean 的配置信息(BeanDefinition)。在 Bean 创建之后,用来修改 Bean 实例本身(可以做 AOP)。名字时机作用对象常用用途关键点Bean 未创建前BeanDefinition(配方)修改 Bean 配置、属性值动 Bean 的“说明书”Bean 已创建后Bean 实例(成品)AOP 增强、注解处理等动 Bean “成品本身”
2025-11-11 15:39:24
948
原创 SpringBoot面试题09-SpringBoot启动流程
容器创建好了以后,会为容器做一些准备工作,比如为容器设置 Environment、BeanFactoryPostProcessor / 后置处理器,并加载主类对应的 BeanDefinition。确认 web 应用类型,一般情况下是 Servlet 类型,这种类型的应用,将来会自动启动一个 Tomcat。准备 Environment 对象,它里面会封装一些当前应用运行环境的参数,比如环境变量等等。在 run 方法中会真正的实例化容器,并创建容器中需要的 Bean 实例,最终返回。首先,当我们在启动类执行。
2025-11-11 12:11:37
338
原创 SpringBoot面试题08-BeanPostProcessor
关键词内容时机Bean 初始化前后目的对 Bean 进行加工/增强典型用途AOP、注入逻辑、做统一处理必记Spring 给你再加工 Bean 的机会BeanPostProcessor = 统一增强 + 不改源码 + 自动代理。只要你的业务逻辑具备以下特点:通用性强(不是某一个类独有)横切性(和业务逻辑本身没关系)需要统一自动执行那么就应该:使用BeanPostProcessor + 代理(也可以用 @Aspect 更友好)
2025-11-10 22:11:27
801
原创 SpringBoot面试题07-InitializingBean / DisposableBean
它是 Spring 提供的一个生命周期回调接口。简单说:当一个 Bean 被 Spring 创建完,并且依赖注入也完成之后,Spring 会自动调用这个接口里的方法,做“初始化操作”。就像:你新买了电脑,装好系统后 → 你要去安装软件、配环境Bean 创建好后 → 你可以在这里“再做一些准备工作”InitializingBean 是 Spring 的生命周期回调接口,用于在Bean 被实例化并依赖注入完成后执行初始化逻辑,常用于加载资源或完成准备工作。
2025-11-10 01:05:47
930
原创 SpringBoot面试题06-Aware
Aware = 让 Bean 获得访问 Spring 内部能力的接口。ApplicationContextAware = 能拿到 Spring 容器本身。BeanNameAware = 能知道自己是谁。EnvironmentAware = 能读取配置。就是给 Bean “开权限”。@Autowired = 被动注入,只能在 Spring 管理的类中用SpringBeanUtils.getBean() = 主动从容器取 Bean,任何地方都能用。
2025-11-10 00:37:54
727
原创 SpringCloud02-服务拆分&远程调用
Feign 接口@FeignClient(name = "user-service") // 指向注册中心里的服务名部分意义告诉 Feign 去调用注册中心中名字叫的服务告诉它调用对方的这个 HTTP 接口【注意】:这是被调用的接口!!!
2025-11-09 22:57:02
1047
原创 SpringCloud01-初识微服务&SpringCloud
SpringCloud 依赖 SpringBoot,版本要匹配才能正常使用。SpringCloud 专注于很多服务之间怎么协同工作。只需改一个地方,所有服务都能自动更新,不用逐个修改。系统拆成很多服务,并且每个服务可能会启动多个实例。每个服务启动时,必须来这里登记「我是谁,我在哪」微服务,就是分布式架构的最佳实践方案。目前,解决以上为题的方案:微服务。所有外部用户访问系统,要先经过它。,不要让每个服务自己保存配置文件。其他服务通过它找到彼此。订单服务(负责下单)库存服务(减少库存)
2025-11-09 22:05:28
550
原创 SpringBoot面试题04-BeanDefinition
BeanDefinition = Bean 的说明书Spring 先读取说明书(BeanDefinition)再根据说明书创建 Bean(对象)
2025-11-08 22:18:34
267
原创 SpringBoot面试题03-BeanFactory
BeanFactory 是 Spring 的对象管理工厂,负责创建、存放和提供 Bean,是 Spring IoC 的核心。ApplicationContext 是在 BeanFactory 的基础上增强了更多功能。“Bean 定义已加载,但 Bean 还未实例化”BeanFactory 已经记录要创建哪些对象,但还没 new。容器适用场景举例非 Web 项目消息消费者、小工具脚本、定时任务程序✅ Web 项目(现在写的多数都是这个)API 服务、后台系统、前后端分离服务。
2025-11-08 21:56:08
660
原创 SpringBoot面试题02-ApplicationListener
事件机制、ApplicationListener、@EventListener、springboot生命周期事件、beanDefinition
2025-11-08 18:39:07
587
原创 SpringBoot18-文件上传助手MultipartResolver
概念含义Spring 中专门解析上传文件的人解析后的文件对象(你在 Controller 里用的)Spring Boot 默认使用老项目可能使用。
2025-11-02 17:49:29
431
原创 SpringBoot17-@Conditional条件装配
Conditional 要么加在配置类 @Configuration上,要么加在@Bean 方法上。控制模块级 → 配置类上控制单个 bean → 方法上@ConditionalOnBean → 有它才配我@ConditionalOnMissingBean → 你没写我来补前者做依赖判断(依赖存在才装配)后者做默认兜底(避免 Bean 冲突)
2025-11-02 15:20:22
926
1
原创 SpringBoot16-@Import注解 + @ImportResource注解
1) @Import 用来把类交给 Spring 容器管理2) 没有 @Component 这些注解的类,可以用 @Import 注册3) Spring Boot 自动配置本质就是大量使用 @Import。
2025-11-02 14:52:32
399
1
原创 java-接口适配器模式 & jsk8 接口默认实现
接口适配器模式是为了解决“接口方法太多,而实现类只需要部分方法”的问题。它通过提供一个抽象适配器类,空实现所有方法,子类只重写需要的部分即可。// 默认实现System.out.println("默认登录逻辑:记录日志 + 输出 登录成功");Java 8 允许接口通过 default 方法带实现,目的是让接口“可扩展不破坏旧代码”。实现类可以直接用,也可以选择重写。Java 8 的接口 default 方法,就是对“接口适配器模式”的语言级支持。它让你不再需要专门写适配器类。
2025-11-02 13:47:02
932
原创 SpringBoot面试题-总结01
Classpath 并不是一个“文件夹”,而是一个“路径列表(路径集合)”。也就是说:你当然在项目里找不到叫classpath的文件夹,因为它是 JVM 启动时使用的“搜索路径规则”,不是一个目录名。pom.xml 负责“告诉”项目依赖哪些库(它只是声明依赖Classpath 负责“运行时实际加载了哪些类和配置文件”(它是真正被 JVM 使用的内容Spring Boot 自动装配是根据Classpath 中实际存在的依赖来做判断的,而不是仅仅看 pom.xml。
2025-10-30 15:16:38
627
原创 SpringBoot面试题01-ApplicationContextInitializer
ApplicationContextInitializer 是在Spring 容器创建后但Bean 加载前执行的扩展点,用来在项目启动初期对ApplicationContext 做定制,比如修改环境配置或检查运行条件。这段代码利用在 Bean 初始化前,把一组 Map 类型的自定义配置注入到 Spring 的中,使它能像 application.yml 一样被获取和使用。模式描述传统软件软件买回去,自己安,自己养,自费修SaaS软件放云上,按月/按年订阅,厂商负责维护。
2025-10-29 23:18:39
794
原创 SpringBoot15-项目部署
springboot项目部署、springboot属性配置方式、springboot多环境配置方案:单个配置文件、多配置文件、profile-分组
2025-10-29 22:13:48
820
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅