<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Java技术栈，分享不断学习、不断超越、不断积累的历程！]]></title><description><![CDATA[80后Java程序员，见证了中国互联网崛起的完整历程。 已掌握Java技术栈:Linux、K8s、Docker、DevOps、SpringBoot、SpEL、SpringCloud、SpringCloudAlibaba、SpringSecurity、Shi]]></description><link>https://blog.youkuaiyun.com/friendlytkyj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; friendlytkyj]]></copyright><item><title><![CDATA[【MCP】使用SpringBoot基于Streamable-HTTP构建MCP-Client]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/156831511</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/156831511</guid><author>friendlytkyj</author><pubDate>Sun, 11 Jan 2026 16:45:06 +0800</pubDate><description><![CDATA[本文介绍了如何使用SpringBoot基于Streamable-HTTP协议构建MCP-Client客户端。MCP（模型上下文协议）是一种基于上下文的工具使用方式，通过将工具描述作为Prompt输入给大模型，使其生成符合预设格式的文本输出。文章详细说明了开发环境配置（Spring Boot 4.0.1 + spring-ai-bom 2.0.0-M1）、核心依赖引入、启动类创建、配置文件设置以及相关配置类说明，并提供了Junit单元测试示例来验证MCP-Server的调用功能。通过这种架构，可以实现大模型与]]></description><category></category></item><item><title><![CDATA[【MCP】使用SpringBoot基于Streamable-HTTP构建MCP-Server]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/156796714</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/156796714</guid><author>friendlytkyj</author><pubDate>Sat, 10 Jan 2026 13:31:57 +0800</pubDate><description><![CDATA[最近几年`AI`应用越来越广泛，`Anthropic`公司在`2024年11月`提出了`MCP`协议，随着时间推移，支持`MCP`协议的厂商越来越多。

`MCP`的`client`端和`server`端通讯的协议也在逐步演进，一开始主流的是`SSE`协议，随后又诞生了`Streamable-HTTP`协议，用于取代`SSE`协议。

本文将介绍如何使用`SpringBoot`基于`Streamable-HTTP`构建`MCP-Server`服务端。]]></description><category></category></item><item><title><![CDATA[【数据结构】简介]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/151312271</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/151312271</guid><author>friendlytkyj</author><pubDate>Mon, 08 Sep 2025 11:24:42 +0800</pubDate><description><![CDATA[本文介绍了数据结构的基础知识及其在程序设计中的重要性。文章首先引用了尼古拉斯·沃斯的名言&quot;算法+数据结构=程序&quot;，强调了两者的核心地位。接着讲解了学习数据结构所需的数学基础，包括指数、对数、级数等运算。通过具体示例比较了不同算法的效率差异，说明优化算法的重要性。随后详细介绍了数组、栈、队列、链表、树、图、堆、哈希表等常见数据结构的特点和应用场景。最后根据信息学奥赛大纲，分别说明了入门级和提高级对数据结构知识的要求层次，指出随着竞赛级别提升，数据结构的重要性愈加凸显。文章为学习数据结构提供]]></description><category></category></item><item><title><![CDATA[【ZeroNews】OpenWrt路由器小存储开启内网穿透]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/150573583</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/150573583</guid><author>friendlytkyj</author><pubDate>Thu, 21 Aug 2025 09:51:03 +0800</pubDate><description><![CDATA[想远程登录和管理路由器，但`wan`口没有公网`IP`或无固定公网`IP`，我们可以使用内网穿透技术轻松解决这些问题，以下介绍`ZeroNews`产品，因为每个用户有一个永久免费的域名、端口映射，满足大部分普通用户的日常需求。

`ZeroNews`最新版本`3.x.x`软件包大小约`15M+`，很多路由器剩余存储不足`30M`，并且空间都在`/tmp`目录，针对这种情况，无法按常规步骤把压缩包上传到路由器后再安装，接下来从`0`带你在存储不足`30M`的路由器上进行安装`ZeroNews`。]]></description><category></category></item><item><title><![CDATA[【LLaMA-Factory】使用LoRa微调训练DeepSeek-R1-Distill-Qwen-7B]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/147814471</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/147814471</guid><author>friendlytkyj</author><pubDate>Fri, 09 May 2025 11:23:50 +0800</pubDate><description><![CDATA[不能复制下载地址，然后在机器上使用。方便每次登录终端自动切换到对应的。如果不出现一下的情况则已经禁用。需要梯子(科学上网)，才能加载。如果不禁用开源驱动，直接安装。命令直接下载，这样请求会返回。，会安装失败，在日志文件。模型有点吃紧，可以使用。中会出现以下错误信息。]]></description><category></category></item><item><title><![CDATA[【Charles】抓包工具安装&配置&unknown问题解决]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/147530254</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/147530254</guid><author>friendlytkyj</author><pubDate>Sat, 26 Apr 2025 13:03:46 +0800</pubDate><description><![CDATA[本文系统介绍了`Windows`平台下`Charles`抓包工具的安装配置全流程及`HTTPS`抓包常见问题的解决方案。内容涵盖从官网下载特定版本安装包、使用在线工具生成有效`License`实现软件激活，到重点解决`HTTPS`协议抓包显示`<unknown>`问题的完整方案。针对证书安装环节可能出现的"无效安全证书"错误，详细图解了通过证书管理器手动导入Charles根证书的操作步骤，并特别提示了`.pem`格式证书的导入注意事项。此外还演示了`SSL`代理配置的关键设置步骤，最终实现`HTTPS`请求]]></description><category></category></item><item><title><![CDATA[【FastGPT】利用知识库创建AI智能助手]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/146311047</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/146311047</guid><author>friendlytkyj</author><pubDate>Wed, 19 Mar 2025 15:37:30 +0800</pubDate><description><![CDATA[关于`FastGPT`的部署，官方提供了`docker-compose`方式的部署文档，如果使用的是`podman`和`podman-compose`的同学，可以参考这篇文章[【FastGPT】Linux系统使用podman-compose方式部署指南](https://blog.youkuaiyun.com/friendlytkyj/article/details/145880230)

如何新增用户和修改密码，请参考这篇文章[【FastGPT】如何新增用户&修改密码](https://blog.youkuaiyun.com/f]]></description><category></category></item><item><title><![CDATA[【FastGPT】如何新增用户&修改密码]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/146015964</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/146015964</guid><author>friendlytkyj</author><pubDate>Tue, 04 Mar 2025 15:13:20 +0800</pubDate><description><![CDATA[关于`FastGPT`的部署，官方提供了`docker-compose`方式的部署文档，如果使用的是`podman`和`podman-compose`的同学，可以参考这篇文章[【FastGPT】Linux系统使用podman-compose方式部署指南](https://blog.youkuaiyun.com/friendlytkyj/article/details/145880230)

部署好之后，发现FastGPT的用户管理功能比较简单，没有新增用户，也没有修改密码的功能。只有一个默认用户`root`，默认密码`]]></description><category></category></item><item><title><![CDATA[【FastGPT】Linux系统使用podman-compose方式部署指南]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/145880230</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/145880230</guid><author>friendlytkyj</author><pubDate>Wed, 26 Feb 2025 17:02:39 +0800</pubDate><description><![CDATA[`FastGPT`是一个基于`LLM`大语言模型的知识库问答系统，提供开箱即用的数据处理、模型调用等能力。同时可以通过`Flow`可视化进行工作流编排，从而实现复杂的问答场景。

官方提供了`docker-compose`方式部署，本文使用`podman`、`podman-compose`方式部署，毕竟`podman`几乎可以无缝兼容`docker`

部署之后，还从`0`到`1`对`FastGPT`进行各种配置，直到可以使用为止，方便大家入门。]]></description><category></category></item><item><title><![CDATA[【Kibana】Linux部署最新版8.x]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/145304194</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/145304194</guid><author>friendlytkyj</author><pubDate>Wed, 22 Jan 2025 15:14:42 +0800</pubDate><description><![CDATA[`The Elastic Stack`，包括`Elasticsearch`、`Kibana`、`Beats`和`Logstash`（也成为`ELK Stack`）

`Elasticsearch`：简称`ES`，是一个开源的高扩展的分布式全文搜索引擎，是整个`Elastic Stack`技术栈的核心。它可以近乎实时地存储、检索数据；本身扩展性很好，可以扩展到上百台服务器，处理`PB`级的数据。

本文主要讲解如何部署`Kibana`，使用最新版`8.17.0`。]]></description><category></category></item><item><title><![CDATA[【Kafka】Linux+KRaft集群部署指南]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/145185356</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/145185356</guid><author>friendlytkyj</author><pubDate>Thu, 16 Jan 2025 15:54:56 +0800</pubDate><description><![CDATA[`Kafka`是一种高吞吐量的分布式发布订阅消息系统，它可以处理消费者在网站中的所有动作流数据。其核心组件包含`Producer`、`Broker`、`Consumer`，以及依赖的`Zookeeper`集群。其中`Zookeeper`集群是`Kafka`用来负责集群元数据的管理、控制器的选举等。

用过`kafka`的开发者应该知道，每次启动`kafka`服务时，都是需要先把`Zookeeper`启动，然后启动`kafka`，步骤相当繁琐。

`Kafka`在使用的过程当中，会出现一些问题。由于重度依赖`]]></description><category></category></item><item><title><![CDATA[【RedisStack】Linux安装指南]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/145107240</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/145107240</guid><author>friendlytkyj</author><pubDate>Mon, 13 Jan 2025 10:06:02 +0800</pubDate><description><![CDATA[`Redis Stack`是使用`Redis`的最佳起点。我们将我们必须提供的最好的技术捆绑在一起，形成一个易于使用的软件包。`Redis Stack`扩展了`Redis OSS`的核心功能，并为调试等提供了完整的开发人员体验。
除了`Redis OSS`的所有功能之外，`Redis Stack`还支持：
- Probabilistic data structures
- Queryable JSON documents
- Querying across hashes and JSON documents]]></description><category></category></item><item><title><![CDATA[【Email】基于SpringBoot3.4.x集成发送邮件功能]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/144415775</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/144415775</guid><author>friendlytkyj</author><pubDate>Thu, 12 Dec 2024 09:06:32 +0800</pubDate><description><![CDATA[在业务系统开发过程中，经常有发送邮件的需求，希望可以系统在某个时候自动触发邮件，或者支持用户主动触发邮件，`Spring Boot`框架提供了发送邮件的功能，通过简单的配置即可实现。

有时候不仅要发送邮件，对邮件内容格式、样式还有更高要求，我们也可以利用模板引擎来实现，比如`Thymeleaf`，`Freemarker`等等。

本着"**最新**"原则，这篇文章依然采用最新版的`Spring Boot 3.4.0`，`OpenJDK`最新`LTS`版`21`，`IntelliJ IDEA`最新社区版`2]]></description><category></category></item><item><title><![CDATA[【EFK】Linux集群部署Elasticsearch最新版本8.x]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/143645242</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/143645242</guid><author>friendlytkyj</author><pubDate>Sat, 09 Nov 2024 15:08:07 +0800</pubDate><description><![CDATA[`The Elastic Stack`，包括`Elasticsearch`、`Kibana`、`Beats`和`Logstash`（也成为`ELK Stack`）

`Elasticsearch`：简称`ES`，是一个开源的高扩展的分布式全文搜索引擎，是整个`Elastic Stack`技术栈的核心。它可以近乎实时地存储、检索数据；本身扩展性很好，可以扩展到上百台服务器，处理`PB`级的数据。

本文主要讲解如何部署`Elasticsearch`，使用最新版`8.15.3`。]]></description><category></category></item><item><title><![CDATA[【Kafka】Windows+KRaft部署指南]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/143584817</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/143584817</guid><author>friendlytkyj</author><pubDate>Thu, 07 Nov 2024 13:22:04 +0800</pubDate><description><![CDATA[Kafka是一种高吞吐量的分布式发布订阅消息系统，它可以处理消费者在网站中的所有动作流数据。其核心组件包含ProducerBrokerConsumer，以及依赖的Zookeeper集群。其中Zookeeper集群是Kafka用来负责集群元数据的管理、控制器的选举等。用过kafka的开发者应该知道，每次启动kafka服务时，都是需要先把Zookeeper启动，然后启动kafka，步骤相当繁琐。Kafka在使用的过程当中，会出现一些问题。由于重度依赖Zookeeper集群，当Zookeeper。]]></description><category></category></item><item><title><![CDATA[【Actuator】基于SpringBoot3.3.x版本④可观测性增强]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/143146764</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/143146764</guid><author>friendlytkyj</author><pubDate>Tue, 22 Oct 2024 11:56:08 +0800</pubDate><description><![CDATA[**可观测性**由CNCF组织提出，在云原生中提到一个词`Observerbility`，随着云原生的崛起，可观测性成了云原生时代的必备能力。加上谷歌、阿里、腾讯等互联网大厂的参与，**可观测性**逐渐从幕后走进寻常百姓家。

那么，什么叫可观测性呢？用相对严谨的话来说，**可观测性指的是一种能力，是通过检查其输出来衡量系统内部状态的能⼒。这些输出体现内部系统状态的能力越强，可观测性也就越好。**

由此可以看出，可观测性的核心价值就是排查故障。搞`IT`的都知道，这个世界上不存在没有`Bug`的系统，无论]]></description><category></category></item><item><title><![CDATA[【Jenkins】windows安装步骤]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/142872603</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/142872603</guid><author>friendlytkyj</author><pubDate>Sat, 12 Oct 2024 12:11:36 +0800</pubDate><description><![CDATA[解压的war包默认是放在C盘的用户目录，通过JENKINS_HOME环境变量可以快捷指定解压的WAR包路径、插件路径、日志路径等。Jenkins第一次启动，会在控制台打印管理员初始化密码，比如。，同时jenkins目录下也生成了很多个文件夹。也可以不创建用户，直接点击。]]></description><category></category></item><item><title><![CDATA[【Springdoc-openapi】基于SpringBoot3.3.x版本③集成Springdoc]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/142713088</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/142713088</guid><author>friendlytkyj</author><pubDate>Sat, 05 Oct 2024 12:36:35 +0800</pubDate><description><![CDATA[在微服务开发过程中，后端同学会写各种`API`，每写一个`API`，都需要相应的`API`文档，前端同学需要根据`API`文档进行开发、联调，其它后端同学也需要通过`API`文档了解系统设计以及方便排查问题。

关于`API`文档的工具有很多，比如常用的`Swagger`、`Apifox`等等，本文主要介绍`Springdoc`开源库，它与`Spring Boot`框架体系的集成更显丝滑。

本着"**最新**"原则，这篇文章依然采用最新版的`Spring Boot 3.3.4`，最新版`springdoc]]></description><category></category></item><item><title><![CDATA[【Spring Security】基于SpringBoot3.3.4版本②如何配置免鉴权Path]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/142693055</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/142693055</guid><author>friendlytkyj</author><pubDate>Thu, 03 Oct 2024 16:20:04 +0800</pubDate><description><![CDATA[[【Spring Security】基于SpringBoot3.3.4版本①整合JWT的使用教程](https://blog.youkuaiyun.com/friendlytkyj/article/details/142679120)
在这篇文章中，详细演示了使用最新版`Spring Boot`，完成一个微服务开发，并使用`Spring Security`组件完成登录认证，同时整合了`JWT`，使用的`RSA`公私钥签名、验签。

接下来继续讲解下一个业务场景：一个真实场景的微服务，难免会有一些请求`Path`不需要任]]></description><category></category></item><item><title><![CDATA[【Spring Security】基于SpringBoot3.3.4版本整合JWT的使用教程]]></title><link>https://blog.youkuaiyun.com/friendlytkyj/article/details/142679120</link><guid>https://blog.youkuaiyun.com/friendlytkyj/article/details/142679120</guid><author>friendlytkyj</author><pubDate>Wed, 02 Oct 2024 15:48:13 +0800</pubDate><description><![CDATA[Spring Boot框架版本在持续迭代中，Spring相关组件也在不断更新，JDK版本的发布频率也更加的频繁。做为一名持续学习的开发者，紧跟技术时代潮流，持续学习新技术，持续更新自己的技能储备，是往前冲锋的必备能力和品质。希望大家跟我一样，保持对技术的渴望，保持学习的激情，一起努力吧。

JWT也是现在前后端分离主流的身份认证载体，在本文中，我们会循序渐进从Spring Boot框架起步，一步步整合JWT，使用RSA公钥、私钥对JWT进行签名和验签，一点点揭开Spring Security的神秘面纱。

]]></description><category></category></item></channel></rss>