<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lichuangcsdn的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lichuangcsdn</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lichuangcsdn]]></copyright><item><title><![CDATA[【Spring AI 学习（三）】实现简单的对话]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/163250700</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/163250700</guid><author>lichuangcsdn</author><pubDate>Mon, 27 Jul 2026 20:40:46 +0800</pubDate><description><![CDATA[本文演示了如何使用SpringAI实现简单的对话功能。首先创建一个名为spring_ai_chat的子模块，并配置Maven依赖（包括Spring Boot Web和Spring AI OpenAI Starter）。在application.properties中设置API密钥和DeepSeek平台的基础URL。编写启动类ChatApplication和控制器ChatController，后者通过ChatClient处理用户输入并返回AI响应。启动项目后，可通过访问localhost:8080/chat?]]></description><category></category></item><item><title><![CDATA[【Spring AI 学习（二）】快速入门]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/163220155</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/163220155</guid><author>lichuangcsdn</author><pubDate>Mon, 27 Jul 2026 12:19:33 +0800</pubDate><description><![CDATA[本文介绍了如何使用Spring AI快速搭建环境并运行一个demo。主要内容包括：1. 环境准备（IDEA、JDK17、Maven3.9）；2. 创建Maven工程和模块；3. 配置POM文件，添加Spring Boot和Spring AI依赖；4. 配置application.properties文件（设置API key等）；5. 创建Controller和启动类；6. 启动项目并测试接口。通过访问/ai/generate接口，可以调用DeepSeek的AI模型进行问答交互，实现了基本的AI功能调用流程。]]></description><category></category></item><item><title><![CDATA[【Spring AI 学习（一）】spring ai是什么]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/163220092</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/163220092</guid><author>lichuangcsdn</author><pubDate>Sun, 26 Jul 2026 20:24:14 +0800</pubDate><description><![CDATA[它的核心理念是，让你能像开发普通 Spring 应用一样开发 AI 应用，将 AI 集成过程中复杂的底层细节（如不同 AI 模型的 API 差异）抽象化，提供一套统一、熟悉的开发体验。]]></description><category></category></item><item><title><![CDATA[利用python工具you-get下载网页的视频文件]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148357473</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148357473</guid><author>lichuangcsdn</author><pubDate>Sat, 31 May 2025 23:45:35 +0800</pubDate><description><![CDATA[摘要：本文介绍了如何使用Python工具you-get下载网页视频（如B站）。首先安装Python，然后通过命令行安装you-get工具。最后在命令行输入视频链接即可下载，视频会保存为MP4文件（可能分割为视频和音频两个文件）。操作简单，只需几个步骤即可完成视频下载。]]></description><category></category></item><item><title><![CDATA[springboot集成websocket给前端推送消息]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148355577</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148355577</guid><author>lichuangcsdn</author><pubDate>Sat, 31 May 2025 20:48:09 +0800</pubDate><description><![CDATA[本文介绍了如何使用WebSocket实现后端主动向前端推送消息的功能。通过Spring Boot创建websocketDemo工程，添加websocket依赖并配置8085端口。主要包含以下实现步骤：1)创建WebSocket处理器管理会话连接；2)配置WebSocket注册端点；3)编写推送控制器接口；4)前端通过WebSocket连接监听消息。测试时，调用/api/push接口即可将消息推送给所有连接的客户端，实现双向实时通信。该方案突破了传统前端请求模式，实现了服务器主动推送消息的能力。]]></description><category></category></item><item><title><![CDATA[finally语句块是否一定会执行？finally和return执行顺序先后问题]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148051706</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148051706</guid><author>lichuangcsdn</author><pubDate>Sun, 18 May 2025 23:21:30 +0800</pubDate><description><![CDATA[finally语句块并不总是会执行。在以下情况下，finally块不会执行：1) 在try块之前抛出异常；2) 在try块中调用System.exit(0)或Runtime.getRuntime().halt(0)；3) 遇到无限循环、死锁、JVM崩溃或断电等情况。此外，当try块中包含return语句时，finally块会在return语句执行之前执行。例如，在functionA中，尽管return语句调用了其他函数，程序仍会先执行finally块，然后返回结果，因此输出顺序为A、C、E、B、F。]]></description><category></category></item><item><title><![CDATA[【java多线程】线程间通信-利用wait和notify轮流按序打印奇数和偶数]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148051251</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148051251</guid><author>lichuangcsdn</author><pubDate>Sun, 18 May 2025 22:45:54 +0800</pubDate><description><![CDATA[在多线程编程中，wait和notify是实现线程间通信的关键机制。wait方法使当前线程进入等待状态，并释放持有的锁，直到其他线程调用notify或notifyAll方法唤醒它。notify用于唤醒单个等待线程，而notifyAll则唤醒所有等待线程。这些方法必须在synchronized同步块或方法中使用，以确保线程安全。通过一个交替打印奇偶数的示例，展示了如何利用wait和notifyAll实现线程间的协调与通信，确保线程按顺序执行任务，直至完成指定条件。]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Config配置中心-Configclient端通过和Config server端通信来获取配置文件信息（含源代码）（十四）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148033789</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148033789</guid><author>lichuangcsdn</author><pubDate>Sat, 17 May 2025 21:42:42 +0800</pubDate><description><![CDATA[本文介绍了如何在Spring Cloud项目中实现Config Client与Config Server的通信，以从Git服务器获取配置文件。首先，创建了一个Config Client项目microservicecloud-config-client-3355，并在POM文件中添加了必要的依赖。接着，配置了bootstrap.yml和application.yml文件，其中bootstrap.yml指定了从Git获取的配置文件名称、环境、分支以及Config Server的地址。项目启动时，Config C]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Config配置中心-ConfigServer端与Git通信（含源代码）（十三）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148033169</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148033169</guid><author>lichuangcsdn</author><pubDate>Sat, 17 May 2025 21:04:08 +0800</pubDate><description><![CDATA[Spring Cloud Config 是一个用于集中管理微服务配置的工具，特别适用于包含多个独立服务的复杂系统，如电商平台。通过将配置文件存储在Git服务器上，Config Server 可以在服务启动时从Git拉取配置，简化了配置管理。文章详细介绍了如何搭建Config Server端，包括创建Git远程仓库、配置POM文件依赖、设置application.yml文件以及创建启动类。最后，通过访问不同的URL，展示了如何从Config Server获取不同环境（如开发环境和测试环境）的配置信息，验证了C]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Zuul路由访问映射规则配置及使用（含源代码）（十二）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148032014</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148032014</guid><author>lichuangcsdn</author><pubDate>Sat, 17 May 2025 19:23:37 +0800</pubDate><description><![CDATA[本文介绍了Spring Cloud中Zuul网关的使用，重点讲解了Zuul的路由和过滤功能。Zuul通过与Eureka整合，作为微服务的统一入口，负责请求的转发和过滤。文章详细描述了如何创建一个Zuul网关项目（microservicecloud-zuul-gateway-9527），包括POM文件的依赖配置、application.yml文件的路由规则设置，以及启动类中启用Zuul代理的注解。此外，文章还展示了如何通过Zuul访问服务提供者的接口，并介绍了如何通过配置隐藏真实服务地址，增加访问前缀等安全措]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Hystrix Dashboard服务监控（含源代码）（十一）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148031520</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148031520</guid><author>lichuangcsdn</author><pubDate>Sat, 17 May 2025 18:36:33 +0800</pubDate><description><![CDATA[该文章详细介绍了如何搭建和使用HystrixDashboard来监控微服务中的Hystrix调用。首先，Hystrix不仅提供依赖服务的调用隔离，还通过HystrixDashboard实现准实时的调用监控，展示请求的执行信息。文章详细描述了创建HystrixDashboard项目的过程，包括添加必要的Maven依赖、配置端口号、启用HystrixDashboard功能等步骤。随后，文章指导如何启动受监控的服务，并确保服务提供者的POM文件中包含相关监控依赖。最后，通过访问HystrixDashboard的W]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Hystrix服务降级（含源代码）（十）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148017867</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148017867</guid><author>lichuangcsdn</author><pubDate>Fri, 16 May 2025 22:23:46 +0800</pubDate><description><![CDATA[本文介绍了Spring Cloud中的服务降级机制及其实现方式。服务降级是在资源不足时暂停部分服务，待资源稳定后再恢复，主要在服务消费者端实现。文章以microservicecloud-consumer-feign项目为例，详细说明了如何在POM文件中添加依赖、在application.yml中配置服务降级，以及通过FeignClient注解和FallbackFactory接口实现服务降级。通过模拟服务提供者不可用的情况，验证了服务降级的有效性。最后，文章比较了服务降级与服务熔断的区别，指出服务降级在调用方]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Hystrix服务熔断（含源代码）（九）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148017181</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/148017181</guid><author>lichuangcsdn</author><pubDate>Fri, 16 May 2025 21:33:37 +0800</pubDate><description><![CDATA[Hystrix是一个用于处理分布式系统的延迟和容错的开源库，在分布式系统中，许多依赖不可避免的会调用失败。日入超时、异常等，Hystrix能保证在一个依赖出现问题的情况下，不会导致整体服务失败，避免级联故障，以提高分布式系统的弹性。

“断路器”本身是一种开关装置，当某个服务单元发生故障之后，通过断路器的故障监控，向调用方返回一个符合预期的、可处理的备选响应（FallBack）,而不是让调用方长时间的等待或者抛出调用无法处理的异常，这样就保证了服务调用方的线程不会长时间占用，从而避免了故障]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】使用Feign实现接口调用（含源代码）（八）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147961169</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147961169</guid><author>lichuangcsdn</author><pubDate>Wed, 14 May 2025 19:50:24 +0800</pubDate><description><![CDATA[该文章介绍了如何在Spring Cloud项目中使用Feign来简化HTTP请求的调用。通过Feign，开发者可以像声明DAO接口一样声明HTTP请求接口，避免了使用RestTemplate时的硬编码问题。文章详细说明了如何在microservicecloud-api项目中创建带有@FeignClient注解的接口GoodsClientService，并在microservicecloud-consumer-feign模块中通过依赖注入来调用该接口。此外，文章还介绍了如何配置POM文件和applicatio]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Ribbon负载均衡（含源代码）（七）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147960111</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147960111</guid><author>lichuangcsdn</author><pubDate>Wed, 14 May 2025 18:47:11 +0800</pubDate><description><![CDATA[本文介绍了Spring Cloud中Ribbon负载均衡的实现及其验证过程。Ribbon是一种客户端负载均衡工具，类似于火车站售票窗口的选择机制，通过选择访问次数较少的服务端来分散请求压力。文章详细描述了如何通过RestTemplate和@LoadBalanced注解实现负载均衡，并默认使用轮询算法。此外，文章还介绍了如何通过一个消费者项目和三个提供者项目来验证负载均衡的效果，确保请求能够均匀分配到不同的服务端。最后，通过启动Eureka服务端、提供者和消费者项目，并访问消费者接口，观察返回数据的变化，验证]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Eureka 服务发现（含源代码）（六）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147959560</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147959560</guid><author>lichuangcsdn</author><pubDate>Wed, 14 May 2025 18:02:26 +0800</pubDate><description><![CDATA[服务的注册是指eureka client将自身注册到server端。从此之外，客户端自己还可以在自身接口里，也能查询到server端的服务注册列表。然后我们在controller中会注入，然后在接口里就可以使用这个discoveryClient，然后获取到Eureka server端的服务注册列表，即客户端就算不访问。server网页， 也能通过自己去发现server端注册了哪些服务。我们讨论了服务的注册，现在我们来看看服务的发现。，如下图，也能看到server端的服务注册列表。（一）服务发现的理解。]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】服务消费者通过restTemplate来访问服务提供者（含源代码）（五）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147956837</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147956837</guid><author>lichuangcsdn</author><pubDate>Wed, 14 May 2025 17:24:38 +0800</pubDate><description><![CDATA[在浏览器中访问http://localhost/consumer/goods/list/applicationName，页面正常展示返回结果，说明能通过服务名称来访问到服务提供者的接口。我们启动服务消费者项目microservicecloud-consumer-80，然后在浏览器中访问 http://localhost/consumer/goods/list/http。通过服务消费者microservicecloud-consumer-80模块的创建，我们在controller中定义了接口。]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Eureka 客户端服务注册（含源代码）（四）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147953398</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147953398</guid><author>lichuangcsdn</author><pubDate>Wed, 14 May 2025 15:50:59 +0800</pubDate><description><![CDATA[这篇文章主要介绍Eureka客户端服务注册到eureka的server端]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建（含源代码）（三）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147952086</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/147952086</guid><author>lichuangcsdn</author><pubDate>Wed, 14 May 2025 14:14:51 +0800</pubDate><description><![CDATA[本文介绍了如何搭建单个Eureka服务端，而非集群环境。通过修改项目microservicecloud-eureka-7001的配置文件，将server.port设置为7001，eureka.instance.hostname设置为localhost，并配置register-with-eureka和fetch-register为false，表示该服务端不向注册中心注册自己，且自身即为注册中心。service-url.defaultZone配置为自身地址http://localhost:7001/eureka]]></description><category></category></item><item><title><![CDATA[【springcloud学习(dalston.sr1)】Eureka服务端集群的搭建（含源代码）（二）]]></title><link>https://blog.youkuaiyun.com/lichuangcsdn/article/details/88665560</link><guid>https://blog.youkuaiyun.com/lichuangcsdn/article/details/88665560</guid><author>lichuangcsdn</author><pubDate>Wed, 14 May 2025 00:08:23 +0800</pubDate><description><![CDATA[本文详细介绍了如何搭建Eureka服务端集群环境。Eureka作为服务注册与发现的核心组件，类似于写字楼的物业管理系统，负责管理服务注册列表。文章通过创建三个模块（microservicecloud-eureka-7001、7002、7003）来模拟集群搭建，每个模块配置了不同的端口和主机名，并通过修改hosts文件实现域名映射。在配置文件中，设置了服务端不注册自己，并指定了其他Eureka服务端的地址以实现集群功能。最后，通过启动类上的@EnableEurekaServer注解启用Eureka服务，并成功]]></description><category></category></item></channel></rss>