- 博客(28)
- 资源 (3)
- 收藏
- 关注
原创 日志slf4j 和 logback-classic 区别
依赖层面普通Maven项目:两个依赖一起写;SpringBoot项目:无需手动引入,starter已内置;配置文件层面不配置:能跑,仅控制台打印,无日志文件;生产/实际开发:必须配置,持久化日志方便排错。
2026-06-17 09:08:34
195
原创 SpringCloud Alibaba Nacos+Gateway+Redis令牌桶限流实战|双Consumer双Provider集群踩坑全解
近期实操SpringCloud Alibaba微服务,采用Nacos(注册中心+配置中心)+Gateway网关+Redis令牌桶限流架构,搭建2个Consumer消费者 + 2个Provider提供者 + 1个Gateway网关集群环境。实操过程踩坑:Nacos启动命令错误、端口占用、Nacos配置拉取报错、Gateway限流失效Redis无数据、限流返回空白页面、多实例配置拆分等问题。本文整理全套可运行源码+详细注释+踩坑原因+解决方案,新手可一键复刻落地。
2026-06-05 15:59:57
262
原创 Vue 父子组件传值(父传子 + 子传父)总结
本文介绍了Vue3中父子组件通信的两种核心方式:父传子和子传父。父组件通过自定义属性传递数据,子组件使用defineProps接收;子组件通过defineEmits定义事件向父组件发送数据。文章提供了完整的代码示例,包括父组件(App.vue)如何传递数据和接收子组件事件,子组件(Pros.vue)如何接收父组件数据并触发事件回调。这种通信方式实现了父子组件间的双向数据流,代码简洁高效,适合实战应用场景。
2026-04-22 15:46:40
75
原创 Vue3+Vite+SpringBoot JWT 登录全栈实战(跨域 3 种方案 + 路由守卫 + Token 过期)
本文详细介绍了前后端分离项目中JWT登录的实现方案,重点解决跨域问题并提供三种解决方案:Vite本地代理(开发首选)、后端全局CORS配置(生产可用)和@CrossOrigin局部注解(细粒度控制)。项目采用Vue3+SpringBoot架构,前端实现了路由守卫和Axios拦截器,后端配置了JWT工具类和过滤器。文章特别强调配置文件的正确性,列举了各文件路径、作用及配置错误可能导致的后果(如404、跨域错误等),确保登录安全性和系统稳定性。所有JWT参数均通过配置文件管理,避免硬编码问题。
2026-04-09 11:56:35
369
原创 Spring Boot 日志架构深度优化:将 Info、Error、Druid SQL 日志完全分离的实战配置
在企业级 Spring Boot 项目中,日志混乱会严重影响问题排查。本文带你实现,控制台 + 文件独立输出,生产环境直接可用!
2026-04-09 11:22:24
379
原创 #SpringBoot 日志配置完整文档(SLF4J + Logback + Druid适配)
本文档详细说明 SpringBoot 项目中「SLF4J + Logback」日志框架的完整配置,包含 Maven 依赖、application.yml 日志级别配置、logback-spring.xml 完整配置,重点覆盖:日志路径(相对/绝对)、日志格式、日志级别、开发/生产环境差异化配置,同时适配 Druid 连接池日志输出,确保日志可落地、可排查(如 Druid 连接泄露、连接池满等日志)。
2026-04-08 15:48:47
417
原创 Spring Boot 接口开发实战:@RequestBody、@PathVariable、@RequestParam 与 @RequestHeader 的区别与应用
摘要: 本文详细解析了Spring Boot中四种常用参数接收注解的用法及区别。通过代码示例和Postman测试,介绍了@RequestBody处理JSON请求体、@PathVariable获取RESTful路径变量、@RequestParam解析查询参数以及@RequestHeader读取请求头信息的具体应用场景。文章还提供了对比表格,帮助开发者快速掌握各注解的特性:@RequestBody用于POST/PUT请求体,@PathVariable用于URL路径参数,@RequestParam用于GET查询参
2026-01-27 19:53:22
677
原创 Java设计模式实战:从咖啡店案例深度剖析装饰器模式(Decorator Pattern)及代码重构
摘要: 装饰器模式提供了一种动态扩展对象功能的灵活方式,避免了继承带来的子类膨胀问题。本文以“咖啡店”为例,演示了装饰器模式的实现过程:首先定义基础组件接口(Coffee)和具体组件(SimpleCoffee),然后通过装饰器(如MilkDecorator、SugarDecorator)动态添加配料功能。针对初始代码存在的冗余和扩展性问题,重构引入了抽象装饰类(CoffeeDecorator),封装公共逻辑,使具体装饰器只需关注自身职责。优化后的结构符合开闭原则,支持灵活组合功能,同时提升了代码复用性和可维
2026-01-23 16:50:14
522
原创 netty学习 springboot 整合之 启动
摘要: 本文总结了在Spring Boot中整合Netty的4种方式,重点分析了不同启动触发机制的适用场景: CommandLineRunner(推荐):容器初始化后执行,支持顺序控制; @PostConstruct:Bean初始化后自动触发,适合轻量级启动; ApplicationListener:监听上下文事件,灵活性高; main方法启动:耦合度高,仅适用于测试。 关键点: 必须通过新线程异步启动Netty,避免阻塞主线程; 需实现@PreDestroy优雅关闭释放资源; 推荐使用CommandLin
2026-01-22 15:37:06
413
原创 SpringBoot 开启事务的步骤
Spring Boot 通过声明式事务简化了事务管理,只需几个关键步骤:添加JDBC/JPA依赖,在启动类添加@EnableTransactionManagement注解(通常可省略),配置数据源,最后在Service方法上使用@Transactional注解即可。支持通过属性控制事务传播行为、隔离级别等特性,但需注意避免在Controller层使用、自调用失效和异常捕获导致回滚失效等问题。默认仅对RuntimeException回滚,检查型异常需通过rollbackFor属性配置。
2026-01-16 17:25:39
360
原创 Vue.js 入门实战
最近开始学习前端框架 Vue.js,为了加深理解,我动手编写了一个综合示例。这个示例涵盖了 Vue 的数据绑定、事件处理、计算属性以及组件化等核心概念。通过这篇博客,我将带大家一步步解析这段代码,希望能帮助到同样在学习 Vue 的朋友们。通过这个简单的例子,我们复习了 Vue.js 的基础核心知识。Vue 的响应式系统、简洁的模板语法和强大的组件化能力,让前端开发变得非常高效。在使用自定义组件时候,需要将组件先定义 在注册<h2>学校名字{{name}}</h2>
2026-01-14 14:59:33
551
原创 基于 Java NIO 的单线程多路复用服务器
非阻塞是前提:所有注册到Selector的 Channel 必须调用。事件驱动:服务端不再主动去“拿”数据,而是等Selector告诉它“有数据来了”,它才去处理。单线程威力:在不考虑 CPU 密集型计算的情况下,一个线程通过 NIO 可以轻松支撑数万并发连接(C10K 问题解决方案)。
2026-01-13 17:18:10
387
原创 深入理解 @EnableConfigurationProperties:优雅管理配置与解耦组件
本文介绍了Spring Boot中优雅管理配置的两种方案:@Value注解和@ConfigurationProperties。重点解析了@ConfigurationProperties结合@EnableConfigurationProperties实现类型安全配置的方法,特别解决了开发Starter组件时"不想自动扫描配置类"的痛点。文章详细说明了核心注解的作用、正确使用方式,并修正了常见误区,包括依赖配置、命名转换规则等。最后总结不同场景下的最佳实践:简单应用使用@Component+
2026-01-08 16:31:42
629
原创 java 多线程通信中遇到socket 异常关闭问题
我现在在做一个服务端 客户端聊天 代码,服务端通过开启多线程 接收客户端发送信息。客户端老是出现socket关闭问题。因为开启了线程,主线程运行完毕 自动关闭了线程,造成线程关闭。具体原因是在主类中try()自动把系统关闭了。
2026-01-05 17:47:49
175
原创 java 注解学习中遇到无法获取注解信息的问题解答
RetentionPolicy.RUNTIME 可以保留注解到运行时,RetentionPolicy.Class 只保留在CLASS文件中,运行时候不保留 RetentionPolicy.SOURCE 注解只保留在源码中,编译器直接丢弃。但是如果我想通过手段获取,该如何进行。这时候需要用到反射。注解是java中用于标注类型的方式,在内部可以进行默认参数的设置比如。是因为没有在注解上标注具体@Retention 注解应该保留的时间。但是结果返回确实空的,具体什么问题呢?
2026-01-04 16:34:27
175
原创 springboot学习中问题汇总
这个问题是我初学 springboot 中文件配置的情况,当时引入@ConfigurationProperties(prefix = “user”) 注解的作用是在 appliction.yml 文件中对 user.name age 进行了配置,如果他们的前缀一样就可以通过这个注解批量的注入到对应属性中去,但是 我忘了将@value()注解去掉了。
2025-12-30 09:22:44
227
原创 通过先序遍历,求中序遍历和后序遍历
package com.com.liutong;import java.util.Scanner;class TreeNode { public char data; public TreeNode leftChild; public TreeNode rightChild;} class BinaryTree { int i = 0; public TreeNode createBinaryTree(String arr){ if
2022-05-30 11:16:29
319
原创 巧用夹角计算8皇后问题
package com.com.liutong;public class Queen { public int row=7; public int col=7; public int [][] list =new int[8][8]; public int total=0; public void fz(){ for(int i=0;i<this.row;i++) for(int j=0;j<this.col;j
2022-05-27 18:55:40
166
原创 java DateTimeFormatter 格式化日期
package com.test;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.format.DateTimeFormatter;public class DateTimeFormatterTest { public static final DateTimeFormatter YYYY_MM_DD_HH_MM_SS = Dat
2021-10-07 18:53:19
269
原创 线性回归
from sklearn.model_selection import train_test_splitimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsdef cost_function(X,Y,weight,bias): #损失函数 均方差 y_hat=weight*X+bias l=y_hat-Y cost=np.sum(l**2)/2*
2021-04-14 18:22:12
131
原创 java.time包 LocalDate LocalDateTime 获取当前日期和当前时间
java.time包获取当前日期和当前时间这里我们使用LocalDate 和 LocalDateTime 这两个final类获取日期 LocalDate.now()静态方法实现获取日期和时间 使用 LocalDateTime.now() 静态方法实现package DateLiu;import java.time.*;import java.time.format.DateTimeFormatter;import java.util.Calendar;public class
2021-03-20 16:25:34
7237
原创 java 链表 快慢指针求中间节点
快慢指针 求中间节点package com.link;import java.awt.print.Printable;import java.util.ArrayList;import java.util.List;public class Solution { /** * @param head: the given linked list * @return: the array that store the values in reverse order
2021-03-04 12:06:30
278
1
原创 单链表翻转 非递归方法 返回数组
单链表翻转 非递归方法返回数组package com.link;import java.util.ArrayList;import java.util.List;public class Solution { List<Integer> list =new ArrayList<>(); public List<Integer> reverseStore(ListNode head) { // write your c
2021-03-04 11:19:44
169
1
转载 Linux中VMware虚拟机增加磁盘空间的扩容操作[图文]
Linux中VMware虚拟机增加磁盘空间的扩容操作[图文][日期:2011-02-09] 来源:Linux社区 作者:Linux编辑 [字体:大 中 小]用VMwareware虚拟机安装的Red Hat Enterprise Linux系统剩余空间不足,造成软件无法正常安装。如果重新装一遍系统就需要重新配置好开发环境和软件的安装配置。通过上网搜集的资料,结合自己的实践,总结了如下扩大硬盘空间的详细步骤,希望对大家有帮助。(1)打开VMware,选择Edit Virtual mache settin
2020-10-22 09:02:56
569
原创 python的私有化字段
python 私有化字段或者方法只需要将前面加上__比如class C(): def __init__(self,name,group): self.name=name self.__group=group def code(self): return self.__group def __code(self): return self.namec=C("1","2")print(c.code())#能返回print(c.__code())#不能返回...
2020-08-07 16:10:26
164
glpi-9.2.3.zip
2020-07-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅