自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 物联网 基于netty入门与线程模型探秘简述

理解 Netty 的核心组件(Channel、ChannelHandler、ChannelPipeline),掌握其高性能的 Reactor 线程模型,并通过一个完整的 Echo 示例快速入门。每个 EventLoop 内部有一个 Selector 和任务队列,一个 EventLoop 服务于多个 Channel,保证同一 Channel 的事件串行执行。WorkerGroup:负责已连接的读写 I/O 及业务处理(通常业务 Handler 可再异步执行)

2026-05-14 21:19:40 54

原创 物联网 Protobuf实战第一篇

物联网 protobuf 相关约定和定义。:避免循环依赖,确保编译顺序清晰。

2026-05-13 22:29:57 338

原创 物联网 Protobuf入门+梳理

它被设计为独立于编程语言,也独立于操作系统。这就意味着你可以用一种语言(比如 Java)定义一个数据结构和编码消息,然后用完全另一种语言(比如 Python 或 Go)来读取和解析它,而不会有任何障碍。使用 Buf 等工具:更专业的 Protobuf 管理工具,可以 lint、格式化、自动生成多语言代码。将 .proto 文件放在独立目录(如 proto/),并用 Git 统一管理。就是将传统的model.java文件,改变为proto文件。执行下面脚本,解析proto文件,生成python代码。

2026-05-12 22:28:01 315

原创 物联网 Protobuf文本协议入门

Protobuf(Protocol Buffers)是Google开发的高效、跨语言的序列化框架,相比JSON/XML等文本协议,Protobuf在性能、空间占用和跨语言支持方面具有显著优势。

2026-05-11 21:47:00 202

原创 物联网 MQTT简易版Broker,基于spring-boot socket

【代码】物联网 MQTT简易版Broker,基于spring-boot socket。

2026-05-10 11:42:00 113

原创 物联网 MQTT订阅性能优势

服务端必须明确知道设备的 IP 和端口,并且设备往往需要有一个固定或可访问的公网 IP(或通过反向连接、内网穿透辅助)。每次推送都是直接建立 Socket 连接到那个 IP 的设备。服务端必须维护一张“设备 → IP”的映射表,设备位置变了就得更新。服务端不需要知道硬件设备的 IP 地址,也不需要关心设备在哪个网络、有没有换 IP。设备主动告诉 Broker “我想订阅某个主题”,之后所有发往该主题的消息,Broker 都会自动转发给它。服务端只管往主题上发指令,设备自己“认领”消息。

2026-05-10 09:19:23 259

原创 物联网 MQTT协议和本地socket区别

MQTT Broker 是在普通 Socket 之上实现了完整的 MQTT 协议,让你获得了发布/订阅、QoS、遗嘱消息、保留消息等高级特性,而不必自己从零实现这些复杂逻辑。发布/订阅模式让硬件开发者只需关心自己的数据主题,而不用处理设备间直接寻址、在线状态、消息缓存等底层细节,显著降低物联网系统的复杂度。硬件设备(传感器、执行器、网关、智能家电等)与云端或边缘平台通信时,发布/订阅模式天然适配“多对多、动态、低耦合”的通信需求。添加新设备时,只需让新设备订阅相关主题,无需修改其他设备。

2026-05-08 21:38:22 282

原创 物联网 MQTT协议

它诞生于1999年,最初用于石油管道的卫星通信(带宽极低、延迟极高),后来在物联网(IoT)领域大放异彩,现已成为物联网最主流的通信协议之一。如三一重工通过MQTT监控设备,故障预测准确率达90%,并用于压力、流量等远程监测。用于城市大脑等大型数据平台,整合环境、交通、能源等各类数据。连接车辆与云平台,实现车辆数据的实时上报、远程控制和导航更新等车内车载通信。海量设备(智能音箱、控制中枢、APP)通过MQTT进行无缝通信和交互控制。连接传感器监测土壤温湿度、光照等数据,实现精准灌溉和农业自动化管理。

2026-05-07 20:41:33 196

原创 python 如何一次性安装项目所有依赖包(pip和uv)

如何一次性导入所有依赖包,避免盲目遇到一个报错导入一个项目。

2026-05-06 21:28:50 16

原创 python window下面uv安装和使用

而uv是更现代的、Rust编写的“一体化Python项目管理器”,旨在解决pip在性能和功能上的诸多局限(集成了项目创建、依赖锁定、Python版本管理、虚拟环境管理、脚本运行等多种功能)uv add requests(它会自动将依赖添加到pyproject.toml,并生成/更新精确锁定所有依赖版本的uv.lock文件)无需关心环境是否激活,直接运行uv run main.py(uv会自动识别并使用项目关联的虚拟环境)pip是专注的、Python官方的“包安装工具”

2026-05-05 20:56:57 255

原创 python venv 虚拟环境的创建

venv 是 Python 3.3+ 自带的虚拟环境工具,可以为每个项目创建独立的 Python 运行环境,避免不同项目之间依赖包冲突。Python 3.3 及以上,venv已作为标准库内置,无需任何额外步骤。根据惯例被命名为项目目录下的 .venv 或 venv。

2026-05-04 22:30:04 56

原创 借助gitee仓库构建私有图床

借助gitee仓库构建私有图床。

2026-05-01 22:12:34 100

原创 pnpm 入门和安装

文件夹中,像是为每个项目都单独购买一份仓库里已有的图纸。而 pnpm 采用了一种更巧妙的方式:它只在一个名为“仓库”(store)的全局地方存放一份图纸,各个项目都通过一种“快捷方式”(即硬链接和符号链接)来引用它。pnpm 会根据 package.json 生成高效的 node_modules 结构并创建 pnpm-lock.yaml 文件。删除现有项目中的 node_modules 文件夹和 package-lock.json 文件。npm 将每个依赖的副本直接复制到项目的。

2026-04-29 21:37:04 369

原创 python本地环境搭建,pip管理

【代码】python本地环境搭建,pip管理。

2026-04-22 22:21:02 46

原创 spring-ai 第十二mcp server调用入门(http协议)

(MCP) 是一个标准化协议,使 AI 模型能够以结构化的方式与外部工具和资源进行交互。想象它是一个在你的 AI 模型和现实世界之间的桥梁 - 允许它们通过一致的接口访问数据库、API、文件系统和其他外部服务。它支持多种传输机制,以在不同的环境中提供灵活性。启动后,MCP Server 会在 http://localhost:8083/mcp 端点提供服务。cmd 命令 执行 npx @modelcontextprotocol/inspector。

2026-04-19 22:46:24 216

原创 spring-ai 第十一mcp server调用入门(stdio协议)

(MCP) 是一个标准化协议,使 AI 模型能够以结构化的方式与外部工具和资源进行交互。想象它是一个在你的 AI 模型和现实世界之间的桥梁 - 允许它们通过一致的接口访问数据库、API、文件系统和其他外部服务。它支持多种传输机制,以在不同的环境中提供灵活性。这种架构天然将开发者分为两个群体:AI 应用开发者专注于编排多服务器、集成 AI 模型和打造用户体验;MCP Server 开发者专注于将特定服务能力标准化暴露。切到项目 target/目录下执行。

2026-04-16 21:43:05 205

原创 Hermes 搭建可视化web-dashboard界面

原因是hermes安全控制不允许,本机之外访问。查询当前版本是否和官网一致。

2026-04-15 20:35:26 452

原创 spring-ai 第十tool调用

从外部来源检索信息(弥补本地模型的不足,通过外网获取信息进行推理组织),eg: 检索最新的新闻文章。工具调用(也称为函数调用)是AI应用中的常见模式,允许模型与一组API或工具互动,增强其功能。完整链路(llm->通过关键字匹配优先执行tool进行数据库查询,再通过llm进行优化)代码中重点 tool 关键字,如果匹配不到会直接跳过tool,直接llm。执行一个动作,例如调用一个API或执行一个命令,eg:填写网页上的表单。llm 选择 (model: glm-4-plus)

2026-04-14 21:22:40 242

原创 Hermes 适合小白手把手操作集成飞书

hermes pairing approve feishu 7547RMY4 (将这行命令进行执行)hermes gateway setup (开始配置)[注意其中用户是 飞书用户id]hermes gateway restart (改变配置之后进行重启)hermes gateway status (检查状态)hermes gateway start (启动)上述配置完成之后,会进行确认。

2026-04-13 16:48:57 486

原创 spring-ai 第九模型介绍-聊天记录

大型语言模型(LLMs)是无状态的,这意味着它们不会保留之前交互的信息。为了解决这个问题,Spring AI 提供了聊天记忆功能,使您能够存储和检索在与 LLM 的多次交互中的信息。官方文档明确指出,ChatMemory 不适合存储完整历史,如需保存所有记录,应考虑使用 Spring Data 等其他方案。如果您需要维护所有消息交换的完整记录,您应该考虑使用其他方法,例如依赖于Spring Data以高效地存储和检索完整的聊天历史记录。存储层负责将消息存储在持久化存储中,例如数据库或文件系统。

2026-04-12 21:30:43 210

原创 手把手带你安装自己的hermes agent

2026-04-12 13:45:59 470

原创 番外篇-ollama一步一步docker安装部署

【代码】番外篇-ollama一步一步docker安装部署。

2026-04-11 23:26:37 611

原创 spring-ai 第八模型介绍-图像模型

prompt=一个泰迪狗漫画。这些模型专门用于图像生成,允许开发人员在不同的图像相关模型之间切换,同时只需进行最少的代码更改。

2026-04-10 17:36:58 269

原创 spring-ai 第七模型介绍-向量模型

通过将文本、图像和视频转换为浮点数组(称为向量)来工作。这些向量旨在捕捉文本、图像和视频的含义。

2026-04-09 17:17:57 216

原创 spring-ai 第六模型介绍-聊天模型

利用了预训练的语言模型,例如 GPT(生成型预训练变换器),以在自然语言中生成类似人类的响应。通过输入封装的辅助类 Prompt 和输出处理的辅助类 ChatResponse。

2026-04-08 16:27:51 87

原创 spring-ai 第五模型介绍

模型api(提供一个通用的API接口,下游适配不同模型)向量存储api(像jdbc一样,切换不同的向量存储模型)一个统一的API接口,提供多种模型能力。

2026-04-07 17:32:57 35

原创 spring-ai 第四多模态API

多模态是指模型同时理解和处理来自各种来源的信息的能力,包括文本、图像、音频和其他数据格式(目前新的模型支持多模态),OpenAI的GPT-4o、Google的Vertex AI Gemini 1.5、Anthropic的Claude3,以及开源的Llama3.2。用户消息的content字段主要用于文本输入,而可选的media字段允许添加一个或多个不同模态的附加内容,如图像、音频和视频。MimeType指定模态类型。能以极简代码同时调用文本、图像、音频等多模态大模型,大幅降低多模态 AI 应用的开发门槛。

2026-04-06 16:37:56 208

原创 spring-ai 第三结构化输出

快速将AI模型的结果转换为数据类型,例如JSON、XML或Java类,以便可以传递给其他应用程序函数和方法。LLM生成结构化输出的能力对于下游应用非常重要。

2026-04-05 16:54:29 77

原创 spring-ai 第二提示词介绍

本文介绍了Spring-AI框架中提示词(Prompt)的使用方法。提示词已从简单字符串发展为结构化模板,包含USER(用户输入)、ASSISTANT(AI回应)、SYSTEM(系统指令)和TOOL(工具调用)四种角色。通过PromptTemplate类可创建结构化提示,示例展示了如何构建SystemPromptTemplate实例并渲染提示词。文章还介绍了加载外部提示词模板的方法,以及集成智谱AI模型的具体步骤,包括依赖配置和API密钥设置。最后提供了测试接口地址,帮助开发者快速验证提示词功能。

2026-04-04 14:58:24 587

原创 spring-ai 第一步集成入门

允许您注册自己的服务作为工具,将大型语言模型连接到外部系统的API,@Tool-注释的方法提供。模型、提示、提示模板、embedding、token(=钱)、结构输出。Spring AI 目前支持将输入和输出处理为语言、图像和音频的模型。一个ETL(提取、转换和加载)管道。

2026-04-03 21:37:49 55

原创 使用jstack排查死锁,面试考点

是 JDK 自带的命令行工具,用于生成 Java 进程的线程快照(thread dump)。通过分析线程快照,可以快速定位死锁问题。找出相互等待锁的线程对,即线程 A 持有锁 L1 等待锁 L2,线程 B 持有锁 L2 等待锁 L1。首先,找到目标 Java 进程的 PID(进程 ID)。通过以上步骤,可以快速定位并解决 Java 应用中的死锁问题。:在某些环境下(如容器),可能需要使用。如果应用因死锁导致无响应,可以添加。记录下应用进程的 PID,例如。以下是一个简单的死锁代码及使用。

2026-04-01 16:25:53 238

原创 Java创建线程的3种方式简单易懂

来管理线程,但理解这三种基础方式对掌握并发编程非常重要。:实际开发中更常用线程池(如。

2026-03-31 20:05:25 70

原创 HashSet、LinkedHashSet、TreeSet 区别与使用场景

通过以上对比,你可以根据实际业务需求(是否需要顺序、是否需要排序、性能要求)来选择合适的。接口的实现类,它们都不允许存储重复元素。但它们底层的实现机制不同,导致在。

2026-03-30 16:48:02 366

原创 HashMap 底层原理(面试精简版)

“HashMap 的 get 流程?” → 计算 hash → 定位桶 → 遍历链表/红黑树,用。比较 key 返回 value。

2026-03-28 17:55:30 205

原创 为什么禁止在for循环里使用拼接字符串

下面我会从字符串的不可变性、编译期优化、循环中的具体问题以及替代方案等方面详细解释。如果循环次数很少(例如固定 3~5 次),或者拼接的字符串是编译期常量,那么。通过遵循这一原则,你可以写出更高效、更健壮的 Java 代码。中,这种优化无法跨迭代生效。对象,其中包含拼接后的结果,而原来的字符串对象保持不变。这意味着一旦创建,它的内容就不能被改变。场景,它仍然无法避免重复创建中间对象,因此。对象,并进行拼接,导致大量临时对象产生。优化,使得简单拼接的性能有所提升。,避免在不知情的情况下写出性能陷阱。

2026-03-27 16:36:39 370

原创 Java 异常处理最佳实践,别再乱用 try-catch

不仅会让代码变得臃肿难读,还可能掩盖潜在的问题。确保代码中的异常分支被测试覆盖,尤其是自定义异常和资源关闭逻辑。优雅的异常处理,能让你的系统在出错时依然可控、可追溯、可恢复。在实际开发中,异常处理往往是被忽视但又极其重要的一环。异常处理的性能开销较大,且会破坏代码可读性。捕获异常后什么都不做,是最危险的行为。(如 ID、参数值),方便定位问题。,帮助你写出更优雅、更健壮的代码。的资源(如流、连接),优先使用。,它会自动关闭资源,避免资源泄漏。中关闭,容易遗漏或出错。)统一处理异常,避免到处。

2026-03-26 17:40:46 381

原创 String 为什么不可变?面试必问

当创建一个字符串字面量时,JVM 会先检查池中是否存在相同内容的字符串,如果存在则返回引用,否则创建新对象放入池中。被设计为不可变类(immutable),即一旦创建,其值就不能被修改。这是 Java 语言设计中的一个经典决策,背后涉及性能、安全、并发等多方面考虑。如果字符串可变,攻击者可能通过反射等手段修改字符串内容,造成安全隐患。如果字符串可变,那么一个引用修改了字符串内容,会导致池中其他引用指向的值也被改变,产生不可预知的错误。如果字符串可变,恶意代码可能修改正在加载的类名,破坏类加载器的安全机制。

2026-03-25 18:23:56 256

原创 Java8新特性最实用的5个

则作为 Lambda 的补充,让代码更简洁。熟练运用这 5 个特性,是写出优雅、健壮且符合业界规范的 Java 代码的基础。Java 8 引入了全新的日期时间 API,基于。Java 8 的发布是 Java 历史上的一次重大革新,至今仍是绝大多数企业级应用的主流版本。它是 Lambda 表达式的一种简化写法。这是 Java 8 的灵魂。它让你能够将函数作为参数传递,告别了冗长的匿名内部类。它通过显式的 API 强制开发者思考“变量可能为空”的情况。用于处理集合数据的利器,支持链式编程和并行计算。

2026-03-24 14:08:13 298

原创 分布式事务

基本可用、软状态、最终一致性的缩写,是对cap理论中一致性和可用性的权衡后的结果。

2026-03-23 17:36:24 229

原创 spring ai 集成 demo

允许您注册自己的服务作为工具,将大型语言模型连接到外部系统的API,@Tool-注释的方法提供。模型、提示、提示模板、embedding、token(=钱)、结构输出。Spring AI 目前支持将输入和输出处理为语言、图像和音频的模型。基于spring ai 构建聊天demo。一个ETL(提取、转换和加载)管道。

2026-03-18 21:55:58 184

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除