<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Coder-文小白的博客]]></title><description><![CDATA[95后Java后端程序员，新晋菜鸟奶爸，开始尝试探索副业的小白。]]></description><link>https://blog.youkuaiyun.com/C_AJing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; C_AJing]]></copyright><item><title><![CDATA[Spring Cloud与Seata 2.0集成：零基础安装到AT模式实战的完整教程]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/141691022</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/141691022</guid><author>C_AJing</author><pubDate>Fri, 30 Aug 2024 07:00:00 +0800</pubDate><description><![CDATA[Seata）是一个开源的分布式事务解决方案，旨在解决微服务架构下的事务一致性问题。它提供了高性能、易扩展的分布式事务服务，帮助开发者在分布式系统中实现事务管理。Seata 2.0版本是这一框架的一个重要更新，带来了更多的功能和优化。例如，Seata 2.0版本继续优化了事务处理的性能，通过更高效的事务日志存储方式和更精细的并发控制策略，提高了事务处理的吞吐量和响应速度。更多关于seata2.0版本新特性，可以通过官网（https://seata.apache.org/zh-cn/）进行了解。]]></description><category></category></item><item><title><![CDATA[Java中LinkedBlockingDeque类中drainTo方法的运用与实现原理]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/140619014</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/140619014</guid><author>C_AJing</author><pubDate>Tue, 23 Jul 2024 07:30:00 +0800</pubDate><description><![CDATA[最近在项目开发中，有使用到类做数据存储。是Java并发编程中一种常见的阻塞队列，它是线程安全的，采用链表的方式实现，具有先进先出的特性，它几乎可以无限扩展，并且可以阻塞读取和阻塞写入。在项目中，某一个工具类中，采用了来进行数据存储，需要在使用的时候进行队列进行是否存在数据，否则进行遍历操作，同时操作完成以后，需要及时重置队列，此时类中的drainTo方法，刚好可以满足需求。drainTo方法，主要作用是将队列中的集合元素转移到指定的集合中，下面介绍一下常见的使用方式。可以看到drainTo。]]></description><category></category></item><item><title><![CDATA[spring boot 3.x版本中集成spring security 6.x版本进行实现动态权限控制解决方案]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/140276668</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/140276668</guid><author>C_AJing</author><pubDate>Mon, 08 Jul 2024 19:14:05 +0800</pubDate><description><![CDATA[框架会自动使用的方法进行用户加载，在加载用户以后，会在过滤器中的方法中，进行前端输入的用户信息和加载的用户信息进行信息对比。/*** 这里为了演示方便，模拟从数据库查询，直接设置一下权限");return new User("jack" , // 用户名称 new BCryptPasswordEncoder() . encode("123456") , //密码 list //权限列表);} }/**]]></description><category></category></item><item><title><![CDATA[Spring Boot项目中，如何在yml配置文件中读取maven pom.xml文件中的properties标签下的属性值]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/139360100</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/139360100</guid><author>C_AJing</author><pubDate>Sat, 01 Jun 2024 09:30:00 +0800</pubDate><description><![CDATA[在最近的项目开发过程中，有一个需求，需要在Spring Boot项目的yml配置文件中读取到mave的pom.xml文件中的properties标签下的属性值，这个要怎么实现呢？]]></description><category></category></item><item><title><![CDATA[如何基于Spring Boot项目从零开始打造一个基于数据库号段模式去中心化的分布式ID生成方案]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/138232950</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/138232950</guid><author>C_AJing</author><pubDate>Sat, 27 Apr 2024 10:34:59 +0800</pubDate><description><![CDATA[在当前系统开发过程中，单体架构的应用正在走向消亡，越来越多的应用开始分布式架构，在分布式架构设计过程中，有一个问题往往避免不了，就是分布式ID生成问题。在常见解决方案中，有使用雪花算法或者自建统一ID生成服务雪花算法是一个很好的分布式ID生成方案，不过雪花算法的递增规律可能看起来不太明显，自建统一ID生成服务面对中小型系统来说又太过于复杂了，那除了这些方法之外还有什么好的解决方法没有呢？这次我们介绍一个解决方案，基于数据库号段的解决方案。]]></description><category></category></item><item><title><![CDATA[Java应用开发必备：使用 easy-captcha 组件生成验证码的详细介绍]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/138232714</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/138232714</guid><author>C_AJing</author><pubDate>Sat, 27 Apr 2024 10:33:44 +0800</pubDate><description><![CDATA[最近系统开发在优化验证码的相关功能，第一反应就是有没有开源的第三方组件可以使用呢。在一番寻觅以后，还真发现一个好用的第三方验证码组件。是一个开源的Java库，用于生成和验证验证码，它的API上手难度低，可以生成包含数字字母中文和数字运算验证码，还有会动的GIF格式验证码哦，此外还允许开发者针对长度字符集字体颜色样式等方面进行自定义，可以满足大部分复杂场景。// 指定宽度为200，高度为100，验证码字符为5个。]]></description><category></category></item><item><title><![CDATA[Java开发Tips：避免浮点数类型比较时陷入的坑]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/138230946</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/138230946</guid><author>C_AJing</author><pubDate>Sat, 27 Apr 2024 10:33:07 +0800</pubDate><description><![CDATA[可以看到，虽然Java中浮点数比较只是一个小功能，但是使用不当还是有很大的业务风险，大家平时开发过程中，针对业务功能还是需要做好充分测试。]]></description><category></category></item><item><title><![CDATA[记一次中间件宕机以后持续请求导致应用OOM的排查思路（server.max-http-header-size属性配置不当的严重后果）]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/137975694</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/137975694</guid><author>C_AJing</author><pubDate>Fri, 19 Apr 2024 19:46:47 +0800</pubDate><description><![CDATA[最近有一次在系统并发比较高的时候，数据库突然发生了故障，导致大量请求失败，在数据库宕机不久，通过应用日志可以看到系统发生了。通过内部排查得知，原来是应用提供的某个接口是GET请求方式，在请求URL中拼接的参数过大的时候会报。初次看到这个现象的时候，我还是有点懵逼的，数据库宕机以后为什么会导致应用发生OOM呢？还在继续接受请求，由于请求响应阻塞，同时此时会有大量请求进行堆积，但是每次请求都会创建。最后，将该GET请求方式接口修改成了POST方式请求，参数传递也通过请求体进行，]]></description><category></category></item><item><title><![CDATA[什么？我一行日志代码竟然让接口响应延迟了1s]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/137975618</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/137975618</guid><author>C_AJing</author><pubDate>Fri, 19 Apr 2024 19:42:49 +0800</pubDate><description><![CDATA[代码逻辑很简单，参数type如果是old，日志级别是debug的话，需要打印一下debug日志，debug日志中需要调用一个方法。在某次开发过程中，对于一个接口，我只是加了一行代码竟然让接口响应延迟大大增加，感觉是很小一个错误，在此记录一下。可以看到此时响应时间增长到1000多毫秒了，两者只是一行日志的区别。了，通过应用日志也可以发现test()方法不再执行。可以看到此时响应时间在几十毫秒的样子。可以看到此时，方法耗时。]]></description><category></category></item><item><title><![CDATA[Spring Boot项目启动过程中为什么日志打印没有显示完整包名呢？]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/137085939</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/137085939</guid><author>C_AJing</author><pubDate>Wed, 27 Mar 2024 18:48:22 +0800</pubDate><description><![CDATA[不知道大家注意过没有，在Spring Boot项目启动过程中日志打印并没有显示完整的报名，而是显示一些o.a.co.s.web形式的包名，如下图：这是为什么呢？]]></description><category></category></item><item><title><![CDATA[Spring Boot项目怎么从Nacos注册中心上获取其他服务列表信息？]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136720711</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136720711</guid><author>C_AJing</author><pubDate>Thu, 14 Mar 2024 20:15:19 +0800</pubDate><description><![CDATA[在spring boot项目开发过程中，为了进行微服务之间的调用，我们一般会使用注册中心，比如Nacos。假设我们有一个业务需求，应用A需要从Nacos注册中心上获取服务信息进行分析，需要怎么实现呢？]]></description><category></category></item><item><title><![CDATA[Spring Boot项目如何快速从零开始打造一个属于自己的RPC框架]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136332494</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136332494</guid><author>C_AJing</author><pubDate>Tue, 27 Feb 2024 21:40:33 +0800</pubDate><description><![CDATA[在平时Spring Boot项目开发过程中，我们进行远程服务调用大都采用 + 相关注解发布接口，使用组件进行微服务之间调用。这套技术架构已经足够完善了，当然没有什么问题，但是作为一个开发者，老是用一套框架天天写代码，不免有点无聊，那么今天我们就从零开始,不使用 + 相关注解发布接口，不使用组件进行远程调用，靠自己，快速从零开始实现一个属于，炫一下吧！
2. 自定义注解
既然我们不使用Spring提供的原生相关注解了，那我们为了简化开发，还是吧。此注解的作用于接口上，被该注解标识的接口可以被自定义框架，简化我]]></description><category></category></item><item><title><![CDATA[Spring Boot项目中不使用@RequestMapping相关注解，如何动态发布自定义URL路径]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136309951</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136309951</guid><author>C_AJing</author><pubDate>Tue, 27 Feb 2024 07:00:00 +0800</pubDate><description><![CDATA[在Spring Boot项目开发过程中，对于接口API发布URL访问路径，一般都是在类上标识或者注解，然后在方法上标识注解，通过设置注解属性，发布URL。在某些场景下，我觉得这样发布URL太麻烦了，不适用，有没有什么其他方法自由发布定义的接口呢？答案是肯定的。参考步骤二的测试截图效果，我们自定义发布一个URL。/*** 注册一个web容器初始化以后的事件监听，注册自定义URL/*** 标识事件监听器是否已经注册，避免重复注册/*** 需要发布的地址。]]></description><category></category></item><item><title><![CDATA[Spring Boo项目中方法参数对象中字段上存在的自定义注解如何进行拦截解析]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136287618</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136287618</guid><author>C_AJing</author><pubDate>Sun, 25 Feb 2024 21:25:07 +0800</pubDate><description><![CDATA[在Spring Boot项目开发过程中，我们经常会使用到自定义注解的方式进行业务逻辑开发，此时注解我们一般是放在方法或者类上面，通过AOP切面拦截的方式进行自定义业务逻辑填充。但是如果自定义注解放在类的字段上，此时应该如何进行解析呢？@Target({]]></description><category></category></item><item><title><![CDATA[注意！你在Java程序中使用取模（%）算法进行数字奇偶判断的代码可能有BUG！]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136287494</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136287494</guid><author>C_AJing</author><pubDate>Sun, 25 Feb 2024 21:21:03 +0800</pubDate><description><![CDATA[我们在平时代码开发过程中，可能会遇到对数字进行奇数、偶数判断，初级开发者往往会使用进行取模的方式，一般来说也不会有什么问题，但是可能存在隐藏bug。测试代码：@TestSystem.out.println("2是：" + doRemainder(2));System.out.println("1是：" + doRemainder(1));System.out.println("0是：" + doRemainder(0));]]></description><category></category></item><item><title><![CDATA[Spring框架@Autowired注解进行字段时，使用父类类型接收子类变量，可以注入成功吗？（@Autowired源码跟踪）]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136243412</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136243412</guid><author>C_AJing</author><pubDate>Thu, 22 Feb 2024 21:40:15 +0800</pubDate><description><![CDATA[平常我们在使用spring框架开发项目过程中，会使用@Autowired注解进行属性依赖注入，一般我们都是声明接口类型来接收接口实现变量，那么使用父类类型接收子类变量，可以注入成功吗？答案是肯定可以的！以上流程还是比较清晰的，分析过程中有一些分支流程没有过度关注，有兴趣的小伙伴也可以参考流程，自己进行debug调试分析。]]></description><category></category></item><item><title><![CDATA[Spring Boot应用集成Actuator组件以后怎么自定义端点暴露信息]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136198466</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136198466</guid><author>C_AJing</author><pubDate>Tue, 20 Feb 2024 21:29:50 +0800</pubDate><description><![CDATA[在平时业务开发中，我们往往会在spring Boot项目中集成Actuator组件进行系统监控，虽然Actuator组件暴露的端点信息已经足够丰富了，但是特殊场景下，我们也需要自己暴露端点信息，此时应该怎么操作呢？@RestControllerEndpoint(id = "myActuator") // 标识这是一个actuator组件暴露端点@Component //交给Spring容器管理resultMap.put("msg", "我是测试数据...");]]></description><category></category></item><item><title><![CDATA[Spring Boot项目怎么对System.setProperty(key, value)设置的属性进行读取加解密]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136198797</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136198797</guid><author>C_AJing</author><pubDate>Tue, 20 Feb 2024 21:25:58 +0800</pubDate><description><![CDATA[之前我写过一篇文章使用SM4国密加密算法对Spring Boot项目数据库连接信息以及yaml文件配置属性进行加密配置（读取时自动解密），对Spring Boot项目的属性读取时进行加解密，但是没有说明对System.setProperty(key, value)设置的属性进行读取加解密，这个在开发过程中应该怎么实现呢？在resource目录下新建META-INF目录，新建spring.factories文件在resource目录下新建META-INF目录，新建spring.factories文件。]]></description><category></category></item><item><title><![CDATA[Spring Boot项目中TaskDecorator的应用实践]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136199067</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136199067</guid><author>C_AJing</author><pubDate>Tue, 20 Feb 2024 21:24:39 +0800</pubDate><description><![CDATA[TaskDecorator是一个执行回调方法的装饰器，主要应用于传递上下文，或者提供任务的监控/统计信息，可以用于处理子线程与主线程间数据传递的问题。System . out . println("线程执行前，资源设置。。。。");System . out . println("线程执行后，资源清理。。。。");} }System . out . println("线程执行前，资源设置。。。。");System . out . println("线程执行后，资源清理。。。。");} }]]></description><category></category></item><item><title><![CDATA[Spring Boot应用集成Actuator端点自定义Filter解决未授权访问的漏洞]]></title><link>https://blog.youkuaiyun.com/C_AJing/article/details/136179796</link><guid>https://blog.youkuaiyun.com/C_AJing/article/details/136179796</guid><author>C_AJing</author><pubDate>Mon, 19 Feb 2024 22:51:50 +0800</pubDate><description><![CDATA[我们知道想要实时监控我们的应用程序的运行状态，比如实时显示一些指标数据，观察每时每刻访问的流量，或者是我们数据库的访问状态等等，需要使用到Actuator组件，但是Actuator有一个访问未授权问题，简单说就是其他人可以通过Actuator组件暴露的URL进行端点信息访问，甚至shutdown应用。那么我们有没有什么解决方法呢？endpoints:web:exposure:whiteUrl: # 白名单，配置白名单的URL请求时不需要验证，多个可以用英文逗号分隔。]]></description><category></category></item></channel></rss>