<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Staba的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Staba</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Staba]]></copyright><item><title><![CDATA[InheritableThreadLocal遇到线程池出现的问题分析及解决方案]]></title><link>https://blog.csdn.net/Staba/article/details/140484964</link><guid>https://blog.csdn.net/Staba/article/details/140484964</guid><author>Staba</author><pubDate>Thu, 18 Jul 2024 10:38:19 +0800</pubDate><description><![CDATA[在开发xxl-job定时任务时，由于在定时任务中使用了线程池进行子任务处理并且打印日志，发现存在子任务日志打印位置错乱问题，比如，定时任务1中线程池执行的子任务日志被记录到了定时任务2的日志文件中。]]></description><category></category></item><item><title><![CDATA[[Netty实践] 请求响应同步实现]]></title><link>https://blog.csdn.net/Staba/article/details/135290561</link><guid>https://blog.csdn.net/Staba/article/details/135290561</guid><author>Staba</author><pubDate>Fri, 22 Mar 2024 08:53:00 +0800</pubDate><description><![CDATA[本片文章将实现请求响应同步，什么是请求响应同步呢？就是当我们发起一个请求时，希望能够在一定时间内同步（线程阻塞）等待响应结果。我们通过netty实现rpc调用时，由于客户端和服务端保持连接，在此期间客户端会有无数的接口调用（并发），而此时，每次发送的请求需要能够及时响应获取调用结果，服务端一次次返回调用结果，客户端在处理响应结果时，需要与请求建立联系，确保每一次的请求能够正确获取到对应的调用结果。]]></description><category></category></item><item><title><![CDATA[[Netty实践] 简单聊天实现（四）：Server集群改造]]></title><link>https://blog.csdn.net/Staba/article/details/135367296</link><guid>https://blog.csdn.net/Staba/article/details/135367296</guid><author>Staba</author><pubDate>Thu, 21 Mar 2024 17:13:40 +0800</pubDate><description><![CDATA[本章是拓展内容，主要实现的是Server集群。当系统的用户多了之后，单机Server资源有限，无法提供socket连接时，我们需要部署Server集群，当Server支持集群之后，将存在以下问题：每个用户连接的是不同的Server，比如，zhangsan用户连接的是ServerA，lisi用户连接的是ServerB，当zhangsan用户向lisi用户发送消息时，由于两个用户客户端与服务端通信的Channel处于不同的服务端，该如何确保能够正常通信呢？]]></description><category></category></item><item><title><![CDATA[网关层针对各微服务动态修改Ribbon路由策略]]></title><link>https://blog.csdn.net/Staba/article/details/136906856</link><guid>https://blog.csdn.net/Staba/article/details/136906856</guid><author>Staba</author><pubDate>Thu, 21 Mar 2024 17:04:51 +0800</pubDate><description><![CDATA[最近，遇到这么一个需求：1、需要在网关层（目前使用zuul）为某一个服务指定自定义算法IP Hash路由策略2、除第一次改造重启后，后续为微服务添加路由算法时，zuul网关不能重启，因为会导致用户短时间内不会使用，也就是说，需要动态的为服务修改路由算法基于上诉两点，本人查找过不少资料，发现没有找到符合的解决方案，也可能是关键词条不准确的问题，导致很长一段时间陷入泥潭，后来通过编程式选择服务进行远程调用上，找到了修改的思路。]]></description><category></category></item><item><title><![CDATA[[Netty实践] 简单聊天实现（三）：client部分]]></title><link>https://blog.csdn.net/Staba/article/details/135061661</link><guid>https://blog.csdn.net/Staba/article/details/135061661</guid><author>Staba</author><pubDate>Wed, 27 Dec 2023 08:52:47 +0800</pubDate><description><![CDATA[本章节主要讲第三部分，涉及客户端的实现，主要包括客户端进行登录、私聊、群聊。]]></description><category></category></item><item><title><![CDATA[[Netty实践] 简单聊天实现（二）：server部分]]></title><link>https://blog.csdn.net/Staba/article/details/135061442</link><guid>https://blog.csdn.net/Staba/article/details/135061442</guid><author>Staba</author><pubDate>Wed, 27 Dec 2023 08:50:37 +0800</pubDate><description><![CDATA[本章节主要讲第二部分，涉及服务端的实现，主要包括服务端的创建、channel管理、组管理、对应各种Handler实现。]]></description><category></category></item><item><title><![CDATA[[Netty实践] 简单聊天实现（一）：基础部分]]></title><link>https://blog.csdn.net/Staba/article/details/135057482</link><guid>https://blog.csdn.net/Staba/article/details/135057482</guid><author>Staba</author><pubDate>Wed, 27 Dec 2023 08:48:35 +0800</pubDate><description><![CDATA[本章主要通过netty实现一个简单的聊天功能，主要分为三块：登录、单聊以及群聊功能，上诉功能会做的比较粗略，主打的就是一个学习，更完善的功能需要自行深入了解以及修改，也希望通过这个章节实践，能够给大家帮助。该章节主要分为三部分，同时也是分为三篇博客：第一部分，主要涉及服务端与客户端之间通信的消息设计，以及消息序列化相关实现第二部分，主要涉及服务端的实现，主要包括服务端的创建、channel管理、组管理、对应各种Handler实现。]]></description><category></category></item><item><title><![CDATA[[Netty实践] 简单WebSocket服务实现]]></title><link>https://blog.csdn.net/Staba/article/details/135134100</link><guid>https://blog.csdn.net/Staba/article/details/135134100</guid><author>Staba</author><pubDate>Sun, 24 Dec 2023 16:53:44 +0800</pubDate><description><![CDATA[关于WebSocket此处不进行过多介绍，本章主要着重通过Netty实现WebSocket通信服务端，并且实现一个简单的通过网页进行聊天的功能。讲到WebSocket，这里简单介绍一下为什么要使用WebSocket。以往我们通过网页与服务器进行交互时，都是通过发起一个http/https请求，该请求是无状态的，发送请求后，等待获取服务器返回的结果之后，这次请求就结束了，客户端与服务端就断开了。]]></description><category></category></item><item><title><![CDATA[[Netty实践] 心跳检测]]></title><link>https://blog.csdn.net/Staba/article/details/134964410</link><guid>https://blog.csdn.net/Staba/article/details/134964410</guid><author>Staba</author><pubDate>Sun, 24 Dec 2023 16:47:30 +0800</pubDate><description><![CDATA[心跳检测是用于保障服务端与客户端之间通信连接状态的实时监控。客户端不断向服务端发送心跳包（心跳包就是一组数据，自行定义，能够进行区分就好）。服务端在一定时间范围内能够正常接收客户端心跳包的话，就认为连接正常活跃；如果服务端在一定时间内没有接收到客户端心跳包的话，就认为连接出现中断或异常，那么就可以进行连接断开、释放资源等操作，从而保证节省服务端连接资源。]]></description><category></category></item><item><title><![CDATA[JavaFx基础学习【五】：FXML布局文件使用]]></title><link>https://blog.csdn.net/Staba/article/details/132259634</link><guid>https://blog.csdn.net/Staba/article/details/132259634</guid><author>Staba</author><pubDate>Mon, 14 Aug 2023 20:45:11 +0800</pubDate><description><![CDATA[FXML是一种在JavaFX应用程序中定义用户界面的，基于XML的声明性标记语言。FXML非常适用来静态布局，如表单、控件和表格。如果你还不是不明白FXML到底是什么，你可以类比HTML，我们可以通过HTML来做web页面的UI，同理，我们就可以使用FXML来做JavaFx应用程序的UI。1、fx:id，用于指定标签的id，通过该id，我们便能够找到该标签我是一个按钮]]></description><category></category></item><item><title><![CDATA[JavaFx基础学习【四】：UI控件的通用属性]]></title><link>https://blog.csdn.net/Staba/article/details/132245344</link><guid>https://blog.csdn.net/Staba/article/details/132245344</guid><author>Staba</author><pubDate>Mon, 14 Aug 2023 20:43:29 +0800</pubDate><description><![CDATA[Node，就是节点，在整体结构中，就是黄色那一块，红色也算个人理解，在实际中，Node可以说是我们的UI页面上的每一个节点了，比如按钮、标签之类的控件，而这些控件，大多都是有一些通用属性的，以下简单介绍一下。]]></description><category></category></item><item><title><![CDATA[JavaFx基础学习【三】：Scene]]></title><link>https://blog.csdn.net/Staba/article/details/132244456</link><guid>https://blog.csdn.net/Staba/article/details/132244456</guid><author>Staba</author><pubDate>Mon, 14 Aug 2023 20:39:47 +0800</pubDate><description><![CDATA[Scene，就是场景，在整体结构中，就是蓝色那一块的为了更好的体验出什么是Scene，以下提供了两个不同背景颜色的Scene，让大家知道是在Application中是处于哪一块，从图中我们可以很容易看出来，圈出来的内容，我们Scene就是指这一大块区域的内容，在以后开发中，我们的每个Scene可以有不同的大小、背景颜色、Node元素之类的，好比我们每个网页都有不同标签及样式： 以下我们将创建两个Scene，第一个Sence有一个按钮可以进入到第二个人Scene，第二个Scene有一个按钮可以返回到第一个Sc]]></description><category></category></item><item><title><![CDATA[JavaFx基础学习【二】：Stage]]></title><link>https://blog.csdn.net/Staba/article/details/132227741</link><guid>https://blog.csdn.net/Staba/article/details/132227741</guid><author>Staba</author><pubDate>Mon, 14 Aug 2023 20:28:19 +0800</pubDate><description><![CDATA[窗口Stage为图中标绿部分：实际为如下部分：不同的操作系统表现的样式不同，以下都是以Windows操作系统为例，为了使大家更清楚Stage是那部分，直接看以下图，可能更清楚：有点潦草，但意思就是窗口框体。]]></description><category></category></item><item><title><![CDATA[JavaFx基础学习【一】：基本认识]]></title><link>https://blog.csdn.net/Staba/article/details/132225830</link><guid>https://blog.csdn.net/Staba/article/details/132225830</guid><author>Staba</author><pubDate>Mon, 14 Aug 2023 19:55:36 +0800</pubDate><description><![CDATA[JavaFX 是一个开源的下一代客户端应用平台，适用于基于Java构建的桌面、移动端和嵌入式系统。它是许多个人和公司的共同努力的成果，目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。]]></description><category></category></item><item><title><![CDATA[Java之Graphics2D图片生成水印]]></title><link>https://blog.csdn.net/Staba/article/details/131281914</link><guid>https://blog.csdn.net/Staba/article/details/131281914</guid><author>Staba</author><pubDate>Sun, 25 Jun 2023 10:40:53 +0800</pubDate><description><![CDATA[百度百科：Graphics2D ，Graphics 类，提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制不止通过JDK提供的工具类，还可以使用第三方的Thumbnailator工具，进行添加水印、制作缩略图等功能。]]></description><category></category></item><item><title><![CDATA[[Spring Boot Starter系列]Spring Boot自动装配原理]]></title><link>https://blog.csdn.net/Staba/article/details/131271398</link><guid>https://blog.csdn.net/Staba/article/details/131271398</guid><author>Staba</author><pubDate>Sun, 18 Jun 2023 21:00:09 +0800</pubDate><description><![CDATA[什么是Spring Boot的自动装配？Spring Boot自动配置尝试根据您添加的jar依赖项自动配置您的Spring应用程序。您需要通过将@EnableAutoConfiguration或@SpringBootApplication注释添加到您的一个@Configuration类中来选择自动配置。您应该只添加一个@SpringBootApplication或@EnableAutoConfiguration注释。]]></description><category></category></item><item><title><![CDATA[[Spring Boot Starter系列]spring-boot-starter组件自定义开发及应用]]></title><link>https://blog.csdn.net/Staba/article/details/131154448</link><guid>https://blog.csdn.net/Staba/article/details/131154448</guid><author>Staba</author><pubDate>Sun, 11 Jun 2023 17:27:12 +0800</pubDate><description><![CDATA[为什么自定义spring-boot-starter组件？我们以该问题作为切入点进行分析。当然，每个人有自己不同的理解，这里仅结合我所接触的业务进行分享：1、使用自定义starter组件之前：在我们还没有使用自定义stater组件之前，通常，我们会将一些通用的功能封装在一个项目模块之中（避免每个项目写重复代码，可封装如数据源切换、安全校验之类的代码），再打包成jar包，发布到maven私仓中，供其他项目引入使用。]]></description><category></category></item><item><title><![CDATA[Mybatis之Collectin标签多层嵌套使用]]></title><link>https://blog.csdn.net/Staba/article/details/131050054</link><guid>https://blog.csdn.net/Staba/article/details/131050054</guid><author>Staba</author><pubDate>Mon, 05 Jun 2023 16:48:01 +0800</pubDate><description><![CDATA[关于该篇文章，主要是通过例子展示，当编写mybatis的xml文件中，出现需要使用嵌套Collection标签时候的有效写法，以此分享给大家，同时也是作为自己在业务开发中问题解决的记录。]]></description><category></category></item><item><title><![CDATA[线程池执行FutureTask，得到返回结果]]></title><link>https://blog.csdn.net/Staba/article/details/130082892</link><guid>https://blog.csdn.net/Staba/article/details/130082892</guid><author>Staba</author><pubDate>Tue, 11 Apr 2023 14:42:01 +0800</pubDate><description><![CDATA[一种可取消的异步计算。这个类提供了Future的基本实现，提供了启动和取消计算、查询计算是否完成以及检索计算结果的方法。只有在计算完成后才能检索结果；如果计算尚未完成，则get方法将被阻塞。一旦计算完成，就无法重新启动或取消计算（除非使用runAndReset调用计算）。FutureTask可以用于包装Callable或Runnable对象。因为FutureTask实现了Runnable，所以FutureTasks可以提交给Executor执行。]]></description><category></category></item><item><title><![CDATA[Spring根据业务选择不同的策略Bean执行]]></title><link>https://blog.csdn.net/Staba/article/details/130051572</link><guid>https://blog.csdn.net/Staba/article/details/130051572</guid><author>Staba</author><pubDate>Mon, 10 Apr 2023 13:47:41 +0800</pubDate><description><![CDATA[在执行业务的时候，对于不同情况将有不同的算法逻辑进行运算。比如，从前端或表记录中传递了一个字段mode，当mode为1时，执行策略1,；当mode为2时，执行策略2。对于以上算法的选择，以下有两种处理方式：...]]></description><category></category></item></channel></rss>