- 博客(99)
- 收藏
- 关注
原创 Windows系统手动安装TimescaleDB完整指南(含报错解决+常用操作)
摘要: 本文详细介绍了Windows系统下TimescaleDB(PostgreSQL扩展)的两种安装方式:手动处理安装和文件复制安装。内容涵盖前期准备(PostgreSQL环境配置、安装包获取)、具体安装步骤(包括路径设置、环境变量配置、安装程序执行)、常见报错解决方案(如文件占用、版本冲突)以及安装后的验证方法。同时提供了TimescaleDB的常用操作命令,包括扩展查询、版本确认等,确保用户能够顺利完成安装并快速上手使用这一高性能时间序列数据库扩展工具。适用于PostgreSQL 17/18版本,适配
2026-04-17 15:09:37
424
原创 Vue2 data + Vue3 ref/reactive 核心知识点总结
Vue响应式系统对比摘要 Vue2采用data函数返回对象的设计,通过Object.defineProperty实现响应式,优点包括组件数据隔离、自动视图更新和状态集中管理,但存在新增属性不响应、数组操作受限等问题。Vue3引入ref和reactive两种响应式方案:ref用于基本类型,通过.value访问;reactive基于Proxy实现,完美支持对象/数组的深度响应,包括Map/Set等引用类型。两者各有优劣,ref适合零散状态但需注意.value写法,reactive处理复杂对象更直观但解构需配合t
2026-03-31 15:06:51
632
1
原创 前端实时数据刷新全方案详解|WebSocket / 定时轮询 / 惰性轮询 / Web Worker/SharedWorker/ 后台静默同步
本文介绍了四种前端实时刷新数据的方案:WebSocket、定时轮询、惰性轮询和Web Worker轮询。WebSocket通过一次握手建立持久连接,实现真正的双向实时通信。定时轮询使用setInterval定时请求数据,简单但存在请求堆积风险。惰性轮询采用递归setTimeout,确保上一次请求完成后再发起下一次请求,避免堆积问题。Web Worker轮询在独立线程中运行,不受主线程阻塞影响,适合后台稳定执行。此外还提到Periodic Background Sync作为PWA的后台定时同步方案。不同方案各
2026-03-30 22:15:48
939
1
原创 OpenClaw Docker部署与配置完整指南
OpenClaw开源智能交互网关部署指南 OpenClaw是一款自托管式智能交互网关工具,支持本地部署、设备授权管理和多模型集成。本指南提供了完整的部署流程: 部署方式:推荐使用Docker容器化部署,可通过官方GitHub仓库或个人修改的docker-compose文件快速启动。 核心配置:详细解析了openclaw.json配置文件,包含网关运行模式、认证方式、端口设置等关键参数。 服务管理:介绍了查看网关状态、获取访问Token及Web控制台地址的方法。 设备授权:提供设备列表查看和授权审批流程说明,
2026-03-16 06:41:25
1305
原创 Spring Security api接口 认证放行
本文介绍了基于Spring Security实现API Key认证的完整方案,主要包含四个核心组件: ApiKeyAuthFilter:继承OncePerRequestFilter的认证过滤器,负责从请求头提取API Key并触发认证流程。通过AuthenticationManager进行认证,成功后将认证信息存入安全上下文。 ApiKeyAuthenticationToken:继承AbstractAuthenticationToken的自定义令牌类,封装API Key认证信息,初始状态为未认证。 ApiK
2026-03-06 12:33:42
506
原创 基于注解+拦截器的API动态路由实现方案
本文介绍了一种基于Spring拦截器的动态API路由方案,通过自定义注解和反射机制实现接口请求的自动分发。核心组件包括:1)@ApiMethod注解标记业务方法;2)ApiHandlerMapping拦截器处理/api/**路径请求,解析模块名和方法名后,通过反射调用对应的业务服务方法。该方案通过JSON请求体解析、统一响应封装和异常处理,简化了接口开发流程,无需编写大量Controller代码,提高了开发效率和灵活性。主要适用于需要快速构建大量API接口且希望减少重复代码的场景。
2026-03-03 16:28:02
658
原创 Flutter 存储权限:适配主流系统
本文提供了Flutter应用中存储权限申请的完整解决方案,涵盖Android和iOS平台的适配要点。针对Android系统,详细说明了从Android 10到14的权限配置差异,包括分区存储适配、媒体细分权限和特殊权限处理;iOS部分则重点介绍了相册权限的细分说明和审核要求。代码实现部分展示了如何根据不同Android版本申请相应权限,并处理iOS的"所选照片"权限场景。文章强调权限描述文案的规范性和异常处理的重要性,为开发者提供了跨平台、全版本兼容的存储权限管理方案。
2026-02-27 05:28:37
935
原创 Flutter Provider 使用教程:Consumer/of/watch/read 全解析
Provider状态管理框架简介 Provider是Flutter中最常用的状态管理方案,通过ChangeNotifier实现状态数据与通知机制,利用InheritedWidget实现跨组件树共享状态。主要包含三种使用方式: Consumer:推荐方式,通过局部刷新优化性能,但会增加Widget嵌套层级 Provider.of:灵活获取状态,但需要手动控制监听行为 **watch/read扩展
2026-02-23 14:19:09
972
2
原创 flutter 父子组件互相调用方法,值更新
子组件不能直接访问父组件的属性 / 方法,核心实现方式是父组件将函数(回调)传递给子组件,子组件调用该函数(本质是 “子触发父的逻辑”)。父传子是最基础的传值方式,核心是子组件定义接收参数的变量,父组件在创建子组件时传入数据。
2026-02-19 06:25:34
1221
原创 Flutter 中 JavaScript(JS)与 Dart 双向通信实现方案
本文介绍了Flutter与JavaScript的双向通信实现方案。主要内容包括: 基于webview_flutter插件的通信方式 通过addJavaScriptChannel建立Flutter到JS的通道 使用postMessage实现JS到Flutter的数据推送 通过runJavaScript执行JS代码调用内部方法 Web平台下Dart与JS的交互 使用@JS注解建立Dart与JS的映射关系 @allowInterop实现Dart函数作为回调传给JS 具体实现步骤 配置webview_flutter
2026-02-18 08:30:19
1210
1
原创 3433.统计用户被提及情况
该摘要描述了一个聊天系统中用户提及次数的统计问题。系统包含在线/离线状态转换和消息提及事件,需要按时间顺序处理事件并统计每个用户被提及的次数。关键点包括:1)离线事件会覆盖之前的离线时间;2)消息事件根据提及类型(ALL、HERE或指定用户)更新计数;3)相同时间戳时优先处理离线事件。通过排序事件并维护用户在线状态数组,最终返回每个用户的提及次数统计结果。示例中用户0和1分别被提及2次。
2025-12-19 11:50:48
217
原创 JAVA多重数组理解
本文系统讲解了Java中多维数组的核心概念与使用。首先明确多维数组本质是"数组的数组",支持锯齿结构(每行长度可不同)。详细介绍了声明初始化方法、元素访问与遍历技巧(推荐for-each循环),并分析了其内存结构特点。文章还列举了常见应用场景(矩阵操作、动态规划等),提供了深拷贝实现方案,对比了数组与链表的特性差异,最后简要提及高维数组。特别强调了实际开发中的注意事项,如边界检查、空指针处理等,为Java开发者提供了全面的多维数组使用指南。
2025-11-08 16:00:27
923
原创 对于 时间复杂度和空间复杂度分析
本文介绍了算法时间复杂度和空间复杂度的基本概念与分析步骤。时间复杂度衡量算法运行时间随输入规模增长的变化趋势,通常用大O记号表示;空间复杂度衡量算法所需内存空间的变化趋势,主要计算辅助空间使用情况。文章详细讲解了识别输入规模、分析循环和递归、简化表达式的方法,并提供了常见算法复杂度示例。对于面试场景,还总结了快速估算口诀,帮助快速判断不同算法结构的复杂度。掌握这些分析技巧,可以更有效地评估和优化算法性能。
2025-11-08 14:39:42
1203
原创 2257. 统计网格图中没有被保卫的格子数
本文提出了一种计算网格中未被警卫保卫的空格数量的算法。给定一个m×n的网格,其中包含警卫和墙壁的位置,算法通过以下步骤实现: 初始化网格并标记警卫和墙壁位置 对每个警卫,沿四个方向扩展视线,直到遇到墙壁或其他警卫 使用辅助数组记录被保卫的格子 最后统计未被标记的空格数量 算法的时间复杂度为O(m×n),空间复杂度为O(m×n)。通过模拟警卫的视线范围和障碍物阻挡机制,准确计算出安全区域的数量。示例测试验证了算法的正确性,适用于不同规模的网格问题。
2025-11-02 15:49:51
983
原创 modbus tcp 跟 modbus rtu
文章摘要: Modbus TCP和RTU是工业通信中两种主流协议,核心区别在于传输层实现:TCP基于以太网(高速、远距离、无设备数量限制),RTU基于串行总线(低成本、短距离、最多32个从站)。两者通过功能码(如01读线圈、03读保持寄存器、06写单个寄存器)操作4类寄存器(线圈/离散输入/保持/输入寄存器),实现设备控制与数据采集。RTU采用CRC16校验确保数据可靠性,典型应用如PLC读取传感器数据(温湿度)、控制水泵启停及频率设定。实际应用中需根据场景需求选择协议类型,并严格遵循寄存器映射规范。
2025-10-08 16:03:10
1263
原创 2106. 摘水果,梳理思路
文章摘要: 该问题要求在无限x轴上收集最多水果,初始位置为startPos,最多移动k步。水果位置已排序,需要通过滑动窗口和前缀和优化求解。Java解法将水果位置和数量分离,构建前缀和数组快速计算区间和。通过双指针维护有效窗口,计算从起点到窗口两端的最少步数(考虑左右往返情况),若步数≤k则更新最大水果数。示例1输出9(移动至6和8),示例2输出14(移动至4、5、6、7),示例3输出0(无法到达任何位置)。算法时间复杂度O(n),适用于大规模数据。
2025-08-03 19:17:09
808
原创 Spring AI MCP 服务端
Spring AI MCP服务器启动器为Spring Boot应用提供模型上下文协议(MCP)服务器的自动配置功能。支持同步/异步操作模式,提供STDIO、WebMVC和WebFlux三种传输层选项。通过简单依赖配置即可实现MCP服务器组件的自动装配,支持资源管理、工具调用、提示交互等多种功能。配置参数包括服务器名称、版本、指令说明、功能开关等,可通过YAML灵活调整。该启动器简化了AI服务集成,适用于命令行工具、Web应用等多种场景。
2025-08-02 16:34:34
1552
1
原创 Spring AI MCP 客户端
摘要:Spring AI MCP客户端启动器为Spring Boot应用提供MCP客户端的自动配置功能,支持同步/异步客户端实现,包含多实例管理、自动初始化、传输定制等特性。提供标准Maven依赖和WebFlux版本配置选项,支持通过YAML/JSON配置Stdio传输属性(如命令参数、环境变量)。典型应用场景包括集成智谱AI等大模型服务,通过MessageWindowChatMemory实现对话记忆功能,并支持通过SyncMcpToolCallbackProvider进行工具回调集成。配置示例展示了如何组
2025-07-26 20:10:40
1810
3
原创 Spring AI 工具调用
AI工具调用增强应用功能:本文介绍了在AI应用中使用工具调用的模式,主要包括信息检索和执行操作两类功能。通过Java代码示例展示了如何定义工具类(如DateTimeTools和CustomerTools),并利用Spring AI框架实现工具调用。文章详细讲解了工具上下文传递、直接返回结果配置以及工具执行的生命周期管理,包括框架控制和用户控制两种执行方式。通过对比使用工具前后的效果图,直观展示了工具调用对AI应用的增强作用,为开发者提供了灵活的工具集成方案。
2025-07-21 09:10:32
1237
原创 Spring AI 聊天记忆
Spring AI提供了多种聊天内存管理方案,支持内存存储和持久化存储。默认使用内存中的MessageWindowChatMemory,限制消息数量为20条。开发者可通过JdbcChatMemoryRepository实现关系型数据库持久化,支持PostgreSQL、MySQL等数据库,支持自动建表。ChatClient API通过MessageChatMemoryAdvisor等内置顾问管理对话上下文,支持按会话ID维护历史记录。示例代码展示了如何配置基于智谱AI模型的聊天客户端,实现带内存管理的对话功能
2025-07-20 11:02:07
1105
原创 Java 设计 MCP SSE 配置
本文介绍了如何基于Spring Boot框架实现Server-Sent Events (SSE)与Model Context Protocol (MCP)的集成方案。主要内容包括: 系统架构:构建实时AI交互系统,支持两种传输模式(stdio和SSE) 配置实现:通过McpServerConfig类进行灵活配置,使用@ConditionalOnProperty动态选择传输方式 核心功能: 提供标准I/O和WebFlux SSE两种传输层实现 支持MCP协议的工具调用和日志功能 通过路由绑定实现HTTP服务端
2025-07-12 18:42:03
889
原创 Java高效压缩技巧:ZipOutputStream详解
ZipOutputStream 是 Java 标准库中用于 创建 ZIP 文件 的核心类,位于 java.util.zip 包中。它允许你将多个文件或字节流写入一个 ZIP 压缩包,并支持设置压缩级别、编码方式等参数。
2025-07-06 15:08:57
979
原创 Java poi-tl 使用 word 模板 生成 word
poi-tl是一款基于Java的Word模板引擎,通过模板标签和数据模型快速生成Word文档。它支持跨平台使用,提供简单友好的API,只需准备模板文档和JSON数据即可渲染输出。主要特点包括:支持文本、图片、表格等多种元素;保留模板样式;标签可出现在文档任意位置;输出方式灵活。相比Apache POI、Freemarker等方案,poi-tl在功能性、易用性和移植性方面表现更优,是Java生态中处理Word文档的高效工具。
2025-07-06 14:17:07
1614
原创 ubuntu24.04 搭建 java 环境服务,以及mysql数据库
本文介绍了Nginx、MySQL和OpenJDK 17在Linux系统上的安装配置方法。主要内容包括:1) Nginx的安装、配置文件修改及服务管理命令;2) MySQL的安装、安全配置、远程访问权限设置及字符集修改;3) OpenJDK 17的安装步骤及版本验证。文章提供了详细的命令行操作指南和配置示例,图文并茂地展示了关键步骤的执行结果,适合需要快速部署这些服务的开发人员参考。
2025-06-05 17:01:52
866
原创 langchain llm 对话大模型 使用Funcation Call工具使用
使用Pydantic模型定义数据结构、通过LangChain和Ollama的接口与语言模型进行交互,并构造了一个能够生成特定类型笑话(敲门笑话)的系统。以下是对代码各个部分的详细解读:导入必要的库:定义数据模型:初始化语言模型:设置提示信息:执行请求并获取结果:是使用 LangChain 提供的功能,让语言模型(LLM)在生成输出时遵循指定的 结构化格式。这个结构化的格式可以是一个 Pydantic 模型,如(FinalResponse),也可以是一个 JSON Schema 字典。LangChain 的
2025-05-08 09:13:26
1212
原创 langchain 学习 制作一个简单的 llm 对话程序
使用了 langchain 的模块来构建一个翻译任务的链式处理流程。你定义了一个提示模板(ChatPromptTemplate),连接了一个本地部署的大模型(ChatOllama),并最终通过字符串输出解析器(StrOutputParser)将结果转换为字符串。当你调用 prompt_template.invoke({“language”: “italian”, “text”: “hi”}) 时,ChatPromptTemplate 会根据传入的字典替换掉模板中的占位符,生成最终的消息。
2025-05-07 09:04:34
1128
原创 langchain 简单与ollama 关联使用
使用 LangChain 中的 OllamaEmbeddings 类来初始化一个本地运行的嵌入模型(embedding model)的实例。这个模型可以将文本数据转换为向量表示(即 embeddings),常用于语义搜索、相似性匹配、RAG(Retrieval-Augmented Generation)等场景。如上面 一样通过 text 提问获取到 以保存的 向量化 数据通过 ollama 的llm 提问生成对应回答,一个简易的问答知识流程。“k”: 表示每次检索返回几个最相似的文档块(默认是 4)
2025-04-29 11:06:00
1353
原创 python flask 项目部署
在 Windows 上使用 Waitress 部署 Flask 应用是一个不错的选择,因为 Waitress 是一个纯 Python 编写的 WSGI 服务器,它兼容 Windows 系统。以下是具体步骤来帮助你在 Windows 上通过 Waitress 部署 Flask 应用。
2025-04-18 11:43:11
1466
1
原创 通过 winsw 把相关服务配置windows自启动
必需 此元素指定要启动的可执行文件。它可以是绝对路径,也可以只指定可执行文件名称并让其从中进行搜索PATH(但请注意,服务通常在不同的用户帐户中运行,因此它可能与PATH您的 shell 不同。此 ID 在系统中安装的所有服务中必须是唯一的,并且应完全由字母数字字符组成。如果指定了此可选元素,则允许服务与桌面交互,例如显示新窗口和对话框。如果需要指定要为子进程设置的环境变量,可以多次指定此可选元素。请注意,此帐户没有密码,因此任何提供的密码都会被忽略。请注意,此帐户没有密码,因此任何提供的密码都会被忽略。
2025-04-18 11:37:27
1404
原创 ollama 安装方式
在本地运行 Llama 3.3、DeepSeek-R1、Phi-4、Mistral、Gemma 2 和其他模型。魔塔社区:https://www.modelscope.cn/my/overview。如果不设置环境变量,模型文件会自动保存在C盘。还是推荐官方模型, 第三方导入的 modefile 配置有点不太正常。高级系统设置 环境变量, 添加一条 models 模型存放地址。http://127.0.0.1:3000 或者服务器ip地址。可以通过 web ui 配置 ollama 进行使用。
2025-03-07 15:37:37
1352
原创 dify docker 部署方式
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。知识库添加自己的文档信息,然后通过Rerank 模型 和 Embedding 模型 导入知识库就可以了。
2025-03-07 14:21:30
4974
4
原创 xinference docker 部署方式
Xorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 Xinference,您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并创建强大的 AI 应用。docker dify 添加 docker 容器内ip 配置。docker 下载对应的 xinference。docker 运行,注意 路径改成自己的,
2025-03-05 13:52:40
5709
1
原创 RabbitMQ 在 Spring Boot中使用方式
与直接模式(Direct Exchange)、扇出模式(Fanout Exchange)和主题模式(Topic Exchange)不同,Headers Exchange允许你根据消息的头部属性来决定路由逻辑,而不是简单的字符串匹配。与直接模式(Direct Exchange)不同的是,主题交换机允许使用通配符来匹配消息的路由键(routing key),从而实现更加复杂的消息路由逻辑。发送消息到fanout类型的交换机时,不需要指定路由键,因为fanout交换机会忽略路由键并将消息广播给所有绑定的队列。
2025-02-10 09:04:27
3239
原创 Seata 分布式事务使用
在 Seata 中,分布式事务被分成全局事务和分支事务。全局事务是由业务发起方启动的事务,而分支事务则是指全局事务在一个服务内的局部事务。为了协调这些事务,Seata 使用了 AT(Automatic Transaction)、TCC(Try-Confirm-Cancel)、Saga 和 XA 模式等几种不同的事务模式。branch_table 是 Seata 框架中的一个重要组成部分,用于分布式事务管理。Seata 是一种开源的分布式事务解决方案,旨在提供高性能和易用性的同时保证数据的一致性。
2025-02-05 08:03:50
1794
原创 Sentinel 断路器在Spring Cloud使用
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
2025-02-03 08:37:30
1602
3
原创 nacos 配置管理、 配置热更新、 动态路由
统一配置管理可以解决多服务配置过的问题,同时该服务配置文件移交配置中心 处理信息配置 pom.xml 添加 config 和 bootstrap 的 jar 包添加 bootstrap.yaml 文件配置配置说明spring.application.name: 指定微服务的名称(cart-service),Nacos 会根据该名称加载对应的配置。spring.profiles.active: 指定当前激活的环境(dev),Nacos 会加载 cart-service-dev.yaml 配置。sp
2025-02-01 08:33:20
1627
原创 TCP 长连接和短连接
长连接是指客户端与服务器之间的连接一旦建立后,在一定时间内保持开启状态,可以用于多次数据交互。通常情况下,只有当没有新的请求或响应时,或者出现错误情况,才会关闭这个连接。短连接指的是每次客户端发起一个请求后,服务器处理完该请求并返回结果给客户端之后,立即关闭连接。下次有新的请求时再重新建立一个新的连接。
2025-01-23 10:27:10
831
原创 LiteFlow Spring boot使用方式
目前是通过java 编写组件是 LiteFlow 框架中的一个注解,用于标记类作为 LiteFlow 组件。这个注解使得被标注的类能够参与流程编排,并允许你在流程定义中引用它们。通过这种方式,你可以轻松地将业务逻辑封装进组件中,并在需要时调用这些组件来执行特定的任务。在内部可以使用@Resource注解调用其他方法普通组件用于流程往下继续执行 THEN 或者 WHEN@Slf4j@Override判断组件用于 IF AND OR 规则组装/*** 属性判断流程处理*/@Slf4j。
2025-01-23 10:25:58
1756
原创 Spring cloud 用户登录以及用户信息流转大致流程
AuthGlobalFilter 实现了 GlobalFilter 和 Ordered 接口,使其可以在所有路由之前执行。通过构造函数注入的方式引入了 AuthProperties 和 JwtTool 两个依赖项,这通常是通过 Spring 的依赖注入机制完成的。AntPathMatcher 是一个用于匹配 URL 路径模式的工具类,常用于定义哪些路径应该被放行而不需经过身份验证。路径匹配方法配置过滤器 在第几层执行@Overridereturn 0;
2025-01-07 08:54:24
1478
原创 Spring cloud 微服务 Gateway 项目中使用
Spring Cloud Gateway 是 Spring Cloud 生态系统中的一个关键组件,用于实现 API 网关功能。它基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.x 构建,旨在提供一种简单且有效的方式来路由到 API 微服务,并为它们提供横切关注点(如:安全性、监控/指标、限流等)。以下是对 Spring Cloud Gateway 的详细解析。
2025-01-06 08:58:54
1487
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅