逗号的博客

这里有一句格言,但我还没想好

Java 语言本身提供了两个 COW 数据结构 CopyOnWriteArrayListCopyOnWriteArraySet,但在某些场景下,比如配置信息热更新、缓存系统数据刷新和一些读多写少且需要保证数据一致性的场景,它们太重了。以 CopyOnWriteArrayListadd 方法为例,它在实现时使用了 synchronized 同步代码块。在这些场景下,我们可以使用一种轻量级的实现方式,即原子性地替换引用并利用 volatile 保证其他线程的可见性

阅读全文 »

在 Spring Boot 应用中使用 org.springframework.ai:spring-ai-starter-mcp-server-webflux:1.1.0 可以创建一个 MCP 服务器,如果想在一个应用创建多个 MCP 服务器,每个服务器使用不同的配置,比如不同的协议,该怎么实现呢?通过阅读 MCP 相关的源代码发现创建一个 MCP 服务器会向 Spring 容器注册 3 个对象(以异步的 Streamable HTTP 为例):
WebFluxStreamableServerTransportProviderRouterFunctionMcpAsyncServer,只要能在应用启动中或启动后从配置文件或数据库读取配置然后创建这些对象,就可以实现动态创建/销毁 MCP 服务器。

阅读全文 »

创建一个最简 Spring AI 项目,只引入 spring-ai-starter-mcp-server-webmvc 依赖,版本为 1.0.1,spring.ai.mcp.server.type 配置为 SYNC,然后定义一个 MCP 工具,准备工作就完成了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Service
public class WeatherService {
@Tool(description = "Get weather information by city name")
public String getWeather(String cityName) {
// Implementation
}
}

@Configuration
public class McpServerConfiguration {
@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
return MethodToolCallbackProvider.builder().toolObjects(weatherService).build();
}
}

后续分析只关注与工具调用相关的源码。

阅读全文 »

在我们的场景中访问内网资源需要通过奇安信天信,一个零信任网络访问系统,功能类似 EasyConnect,同时也需要安装奇安信天擎微步两个软件。我们都知道奇安信天擎等产品一旦安装想要卸载非常麻烦,而奇安信天信目前还没有类似 docker-easyconnect 的软件,经过实践把这三个软件安装在虚拟机中,然后在虚拟机中安装 3proxy 代理服务器,在主机中通过 Clash.for.Windows 连接代理服务器从而避免在主机中安装奇安信天擎等产品

阅读全文 »

Kettle 是 PDI 的旧称,在这里我们会不加区别地使用它们。我们将模拟一套生产环境用来实现以下需求

  1. 使用数据库保存作业和转换;
  2. 在 Windows 上编辑作业和转换,在 Linux 上执行作业和转换;
  3. 使用 POP 收信下载 Excel 附件;
  4. 将 Excel 数据导入数据库;
  5. 把 Excel 文件备份到另一个目录。
阅读全文 »

在 VirtualBox 上安装 Debian 系统还是比较简单的,让人感到有点困难的是 VirtualBox 的网络配置。以下是 Virtual Networking 关于网络模式的一个概览

比较省事儿的做法是使用桥接模式,这会在宿主机所在的网络加入一台电脑,在有的情况下这不是我们期望的,比如在公司网络中。我们的需求有两点,一是虚拟电脑能够访问外部网络,二是宿主机和虚拟电脑能够相互访问。从上面的网络模式概览中发现 NAT 和 Host-Only 模式的组合正好可以满足我们的需求。

在这篇文章中我们将从零开始在 Windows 上安装 VirtualBox,然后在 VirtualBox 上安装 Debian 系统。安装完成后会创建两个用户

用户 密码 备注
root 123456 超级用户,权限最大
acomma 123456 普通用户,日常使用

下面让我们开始整个安装与配置过程。

阅读全文 »

看雪论坛 0xEEEE逆向调用QQ截图NT与WeChatOCR这篇文章中发布了调用新版 QQ 截图功能的软件 QQScreenShotNT-Plus,虽然已经设置了 QQScreenshot.exe 的路径,但是每次启动这个软件都要提示是否重新自动获取,在设置中去掉“启动提示”依然无效。在那篇文章中作者说 QQScreenShotNT-Plus 是在 QQImpl 基础上实现的,但是作者没有发布对应的源代码,因此我准备基于 Windows Forms 技术复刻相关的功能。因为是第一次使用 .NET 相关技术开发 Windows 系统的应用软件,所以会详细地记录整个开发过程。源代码在 QQScreenShotLauncher

阅读全文 »
0%