# Tio Boot Docs > Tio Boot 是基于 Java 的高性能 Web 快速开发框架文档,覆盖快速开始、数据库、AI 应用、实战项目与最佳实践。 This file helps AI assistants and agentic search tools discover the Tio Boot documentation. ## Core Resources - [Full documentation](https://tio-boot.com/llms-full.txt): Complete Markdown content for all generated documentation pages. - [Sitemap](https://tio-boot.com/sitemap.xml): Search engine sitemap for all generated pages. ## Overview - [Home](https://tio-boot.com/): 基于 Java 的快速开放框架 ## About - [Abount](https://tio-boot.com/about.html): Abount About Author James 詹波 github 原来是这样的 JFinal (jfinal@qq.com) Yao Wu Tan 谭耀武 github 程序员中最会拉筋的 CTO Tong Li 李通 github (litongjava001@gmail.com ) Tong Li 简介 Tong Li 邮箱:litongja... ## en - [Quick Start](https://tio-boot.com/en/1%20Quick%20Start/1.0%20Quick%20Start.html): Quick Start ## zh - [Home](https://tio-boot.com/zh/): ::: slot footer MIT Licensed | Copyright © 2023-present litongjava ::: - [01_tio-boot 简介](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/): 01_tio-boot 简介 本目录包含 9 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-boot:新一代高性能 Java Web 开发框架》。 : 文档《tio-boot 入门示例》。 : 文档《Tio-Boot 配置 : 现代化的配置方案》。 : 文档《tio-b... - [tio-boot:新一代高性能 Java Web 开发框架](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/01.html): tio-boot:新一代高性能 Java Web 开发框架 概述 tio-boot:好用、快速、节约时间的高性能 Java Web 开发框架。 tio-boot 是一款轻量级、高性能的 Java Web 开发框架,以更快、更小、更简单为目标,为开发者带来卓越的性能与开发效率。相比传统框架,tio-boot 提供显著优势: 并发性能提升:快 2 ~ 3 ... - [tio-boot 入门示例](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/02.html): tio-boot 入门示例 创建新项目 项目名称: tio-boot-web-hello 开源仓库地址: https://github.com/litongjava/tio-boot-web-hello 添加依赖 TioBoot 已在 Maven 中央仓库发布。 Maven Central 上的 TioBoot 如果您使用 Java 8 进行开发,请在... - [Tio-Boot 配置 : 现代化的配置方案](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/03.html): Tio-Boot 配置 : 现代化的配置方案 简介 Tio-Boot 是一个基于 Java 的轻量级框架,提供了灵活的配置管理功能。它支持多环境配置、从多种来源读取配置,并提供了优先级管理,以满足不同场景下的需求。本指南将详细介绍 Tio-Boot 的配置方法及常见配置项的使用。 配置文件概述 Tio-Boot 使用 nexus.io.tio.util... - [tio-boot 整合 Logback](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/04.html): tio-boot 整合 Logback tio-boot 并未绑定任何特定的日志框架,而是使用 slf4j 作为日志门面。本文将介绍如何在开发 tio-boot 应用时集成 Logback 作为日志实现。 Logback 建议在开发 tio-boot 应用时使用 Logback 作为日志实现。以下是集成 Logback 的详细步骤: 1. 引入 Log... - [tio-boot 整合 hotswap-classloader 实现热加载](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/05.html): tio-boot 整合 hotswap-classloader 实现热加载 简介 在现代软件开发中,快速迭代和高效测试是提升开发效率的关键。传统的开发流程中,每次代码变更后都需要重启应用程序,这不仅耗时且影响开发体验。为了优化这一过程,本文介绍了如何将 hotswap-classloader 与 tio-boot 结合使用,实现 Java 应用的热加载... - [自行编译 tio-boot](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/06.html): 自行编译 tio-boot tio-boot 作为 TIO 生态系统中的核心组件,旨在简化 TIO 应用程序的引导过程。虽然 tio-boot 已经相对稳定,并且维护者保持每月发布一次的频率,但有时可能希望体验最新的功能和改进,此时手动编译安装是一个理想的选择。本文将详细介绍如何手动编译和安装 tio-boot 及其周边依赖项。 前言 TIO(Tenc... - [最新版本](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/07.html): 最新版本 最新版本如下 - [开发规范](https://tio-boot.com/zh/01_tio-boot%20%E7%AE%80%E4%BB%8B/08.html): 开发规范 模版引擎命名规范 tio-boot 支持多种模版引擎,以 enjoy 模版引擎为例,介绍命名规范 enjoy-templates: enjoy 模版目录 enjoy-sql :enjoy sql 目录 sql-templates :SqlTemplates 目录 接口命名规范 1. 接口概述 本系统提供三个不同权限级别的页面查询接口,分别适用... - [02_部署](https://tio-boot.com/zh/02_%E9%83%A8%E7%BD%B2/): 02_部署 本目录包含 25 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 Maven Profile 实现分环境打包 tio-boot 项目》。 : 文档《Maven 项目配置详解:依赖与 Profiles 配置》。 : 文档《tio-boot 打包成 FatJar》。... - [使用 Maven Profile 实现分环境打包 tio-boot 项目](https://tio-boot.com/zh/02_%E9%83%A8%E7%BD%B2/01.html): 使用 Maven Profile 实现分环境打包 tio-boot 项目 在软件开发过程中,不同的运行环境(如开发环境、生产环境、测试环境等)通常需要不同的配置和依赖。Maven 提供了 profiles 功能,允许开发者根据不同的需求切换构建配置,从而实现分环境打包。本指南将详细介绍如何通过 Maven Profile 配置,实现针对开发、生产、二进... - [Maven 项目配置详解:依赖与 Profiles 配置](https://tio-boot.com/zh/02_%E9%83%A8%E7%BD%B2/02.html): Maven 项目配置详解:依赖与 Profiles 配置 本文档详细介绍了一个 Maven 项目的 pom.xml 文件配置,包括项目属性、依赖管理以及不同环境下的 Profiles 配置。通过本文档,您将了解如何配置项目的构建参数、依赖库以及针对开发、生产和其他特定环境的定制化设置。 目录 项目属性配置 在 pom.xml 中, 标签直接播放视频。文档中同时说明了如何禁用视频文件的 gzip 压缩,以避免浏览器在解码时出现错误。 背景说明 对于视频文件(例如 MP4 格式),由于其本身已经经过压缩,如果服务器再次对... - [http Session](https://tio-boot.com/zh/06_web/12.html): http Session 这段代码定义了一个名为 putsession 的方法,通过 @RequestPath 注解映射到 /putsession URL 路径。该方法接收两个参数:一个字符串 value 和一个 HttpRequest 对象 request。 方法的工作原理是: 通过 request.getHttpSession() 获取当前 HTT... - [Cookie](https://tio-boot.com/zh/06_web/13.html): Cookie Cookie 构建方法 这段代码定义了一个使用 tio-boot 框架的 HTTP 控制器,用于处理 /test/cookie 路径下的 Web 请求,并涉及 HTTP Cookie 的读取和设置。以下是对代码的部分解释: Method index: Method setCookie: 当 HTTP 请求发送到 /test/cookie/... - [重定向和转发](https://tio-boot.com/zh/06_web/14.html): 重定向和转发 本文将详细介绍在 tio-boot 中如何实现请求的 重定向 与 转发,并提供详细的示例代码和说明。通过本文,将了解两者的区别、适用场景以及具体的实现方法。 一、重定向 (Redirect) 1.1 概念说明 重定向 是服务器告诉客户端(例如浏览器),“请求的资源已临时或永久移动到另一个 URL,请重新发起请求到该 URL”。重定向时,服... - [HttpRequest](https://tio-boot.com/zh/06_web/15.html): HttpRequest 1. HttpRequest(Node remote) 说明: 构造一个 HttpRequest 对象,并设置远程节点。 用法: 2. HttpRequest() 说明: 创建一个无参的 HttpRequest 对象。 用法: 3. close() 说明: 关闭此 HttpRequest 的连接。 用法: 4. close(St... - [HttpResponse](https://tio-boot.com/zh/06_web/16.html): HttpResponse HttpResponse 类扩展自 HttpPacket,用于表示 HTTP 响应。它包含了与 HTTP 响应相关的状态码、头部信息、Cookie 和主体内容。 构造方法 HttpResponse() 说明:默认构造函数,初始化一个空的 HTTP 响应对象。 HttpResponse(HttpRequest request) ... - [Resps](https://tio-boot.com/zh/06_web/17.html): Resps css(HttpRequest request, String bodyString):创建一个带有给定正文字符串的 CSS 响应。设置 Content-Type 为 text/css;charset=utf-8。 css(HttpRequest request, String bodyString, String charset):与上一... - [RespBodyVo](https://tio-boot.com/zh/06_web/18.html): RespBodyVo Introduction 为了方便开发者返回数据,tio-boot 内置了了统一的数据返回类 RespBodyVo RespBodyVo 是一个用于构造和管理响应对象的工具类,它提供了一种标准化的方式来表示操作的结果(成功、失败或未知)、消息、数据和业务编码。这个类非常适合在后端服务中使用,尤其是在需要对前端返回标准化的响应结构时... - [Controller拦截器](https://tio-boot.com/zh/06_web/19.html): Controller拦截器 概述 ControllerInterceptor 是 Tio-Boot 内置的拦截器,用于在控制器的 Action 方法执行前后进行统一处理。通过实现 ControllerInterceptor 接口,可以在请求进入业务方法前进行预处理,如权限校验、参数校验、日志记录等;在业务方法执行后对返回结果进行统一包装或后置处理。 接... - [请求拦截器](https://tio-boot.com/zh/06_web/20.html): 请求拦截器 拦截器概述 在基于 Tio-Boot 的 HTTP 应用中,拦截器(Interceptor)是一种在请求到达业务处理器之前或响应返回客户端之后,对请求/响应进行预处理和后处理的机制。合理地使用拦截器,可用于集中化地处理以下场景: 请求校验:验证 HTTP 请求是否合法,拦截恶意或缺少关键信息的请求 鉴权与权限控制:检查请求的认证信息或用户权... - [LoggingInterceptor](https://tio-boot.com/zh/06_web/21.html): LoggingInterceptor 概述 LoggingInterceptor是tio-boot内置的日志拦截器,之所以提供了这个接口,是为了提高性能. LoggingInterceptor 是一种自定义拦截器,专门用于在控制器方法执行前后记录日志到数据库。它耦合在 ControllerInterceptor 之后执行,可以: before 方法中:... - [全局异常处理器](https://tio-boot.com/zh/06_web/22.html): 全局异常处理器 Tio-Boot 提供了 TioBootExceptionHandler 接口,用于对全局异常进行统一处理。通过使用全局异常处理器,您可以在应用程序中捕获并处理所有未处理的异常,从而提高系统的健壮性和可维护性。 在 Tio-Boot 中使用全局异常处理器 以下是如何在 Tio-Boot 应用程序中使用全局异常处理器的详细步骤和说明。 1... - [异步处理](https://tio-boot.com/zh/06_web/23.html): 异步处理 使用场景 大文件上传及上传后进行语音识别的应用场景 大文件上传: 企业员工上传完整的会议录音或录像文件 上传后进行语音识别: 对会议内容进行自动转写,生成会议纪要,便于后续查阅和分析讨论点 如果上传完成后不采用异步任务对文件进行语音识别,可能会出现以下问题: 响应延迟: 语音识别是一个计算密集型的操作,特别是当处理大文件时。如果在同一请求中直... - [动态 返回 CSS 实现](https://tio-boot.com/zh/06_web/24.html): 动态 返回 CSS 实现 本文介绍如何通过识别浏览器的 User-Agent,判断设备是移动端还是桌面端,并返回对应的 CSS 样式。 解析 User-Agent 常见的 User-Agent 示例 Google Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (... - [返回图片](https://tio-boot.com/zh/06_web/25.html): 返回图片 下面的文档将介绍在 tio-boot 框架中,如何在 Controller 中返回图片给浏览器,包括生成验证码图片、二维码图片以及与 Next.js 配合返回图片的完整示例。 1. 返回验证码图片 利用 Hutool 库生成并返回图形验证码。此示例通过 LineCaptcha 来生成带有干扰线的图形验证码,并以 JPEG 图片的形式返回给前端... - [跨域](https://tio-boot.com/zh/06_web/26.html): 跨域 @EnableCORS 注解支持 在 Tio-Boot 项目中,如果想让 Controller 的 Action 支持跨域请求 (CORS),可以通过在类或方法上添加 @EnableCORS 注解。 类级别跨域支持: 在 Controller 类上添加 @EnableCORS 注解,这样类下的所有方法都会自动支持 CORS。 方法级别跨域支持: ... - [添加 Controller](https://tio-boot.com/zh/06_web/27.html): 添加 Controller 手动添加 Controller 在 tio-boot 框架中,启动类上使用 @AComponentScan 注解,Controller 类上使用 @RequestPath 注解。被 @AComponentScan 标记的启动类会自动扫描并初始化所有被 @RequestPath 标记的 Controller 类。 然而,在某些... - [Transfer-Encoding: chunked 实时音频播放](https://tio-boot.com/zh/06_web/28.html): Transfer-Encoding: chunked 实时音频播放 什么是 Transfer-Encoding: chunked 浏览器在大多数情况下是支持以 Transfer-Encoding 为 "chunked" 的方式传输的音频实时播放的。这种传输方式允许服务器将音频数据分块传输,而不是一次性发送整个音频文件。这样,浏览器可以在接收到部分音频数... - [Server-Sent Events (SSE)](https://tio-boot.com/zh/06_web/29.html): Server-Sent Events (SSE) SSE 简介 Server-Sent Events(SSE)是一种允许服务器主动向客户端发送信息的技术。与 WebSocket 不同,SSE 是单向通信,仅服务器能向客户端发送数据。这使得 SSE 非常适合于需要服务器实时推送数据但客户端不需要发送信息的场景,例如实时通知和更新。 tio-boot 发送... - [handler入门](https://tio-boot.com/zh/06_web/30.html): handler入门 1. tio-boot 简介及 Handler 的定位 tio-boot 是一个基于 t-io 的高性能 Java Web 框架,支持 HTTP 服务开发。 在 tio-boot 中,HTTP 请求分为 Controller 和 Handler 两种处理方式: Controller:支持自动请求参数封装、路由扫描,用法与传统 MVC... - [返回 multipart](https://tio-boot.com/zh/06_web/31.html): 返回 multipart 1. 背景与问题 在一些“执行任务/生成内容”的接口里,返回值往往包含一个非常大的 JSON 字段(例如 json、output、std_out 等)。如果服务端统一把所有字段拼成一个超大的 JSON 字符串再返回,客户端通常要做两件事: 先把整个响应体一次性读完 再把整段 JSON 反序列化 当 JSON 特别大时,可能出现... - [待定](https://tio-boot.com/zh/06_web/32.html): 待定 - [自定义 Handler 转发请求](https://tio-boot.com/zh/06_web/33.html): 自定义 Handler 转发请求 在一些情况下,我们可能需要查看客户端的请求转发到另个一个服端,包括请求头、请求体等。可以参考本文章实现 打印请求信息 拦截所有请求 配置一个 HttpRequestHandlerConfig 拦截所有请求 示例代码 输出信息示例 示例 1:JSON 格式的请求体 请求信息: 示例 2:表单格式的请求体 请求信息: 通过... - [使用 HttpForwardHandler 转发所有请求](https://tio-boot.com/zh/06_web/34.html): 使用 HttpForwardHandler 转发所有请求 ForwardHandler 简介 ForwardHandler 是 Tio-Boot 中用于请求转发的处理器,通常用于与第三方系统的集成。当请求在经过 Tio-Boot 的其他处理器(如 httpRequestInterceptor、httpRequestRouter、httpControll... - [常用工具类](https://tio-boot.com/zh/06_web/35.html): 常用工具类 HttpIpUtils String getRealIp(HttpRequest request) 获取请求的真实 IP 地址。此方法支持多种代理环境,确保即使在复杂的代理链中,也能准确提取客户端的实际 IP 地址。 - [HTTP Basic 认证](https://tio-boot.com/zh/06_web/36.html): HTTP Basic 认证 HTTP Basic 认证是一种简单而有效的方法,用于限制对网络资源的访问。通过要求用户提供有效的用户名和密码,可以保护应用程序中的敏感端点。本文将探讨如何在 Tio-Boot 应用程序中集成 HTTP Basic 认证,以确保安全的访问控制。同时,我们还将重点介绍 Tio-Boot 处理 HTTP 请求头的一个重要特点:所... - [Http响应加密](https://tio-boot.com/zh/06_web/37.html): Http响应加密 一、背景与概述 在一些对数据安全要求较高的场景中,我们需要对服务端返回给客户端的 HTTP 响应体进行加密,以防止传输过程中的明文泄露。tio-boot 在底层已内置了对 HTTP 响应数据的加密支持: Controller 层:如果控制器直接返回对象或字符串,tio-boot 会自动调用配置的加解密器(TioEncryptor)对响... - [使用零拷贝发送大文件](https://tio-boot.com/zh/06_web/38.html): 使用零拷贝发送大文件 本文将结合示例代码,深入剖析零拷贝(Zero-Copy)技术的原理,演示如何在 Tio-boot HTTP 服务中利用零拷贝高效传输大文件,并补充性能优化和使用注意事项,帮助快速上手并理解底层机制。 一、背景与意义 传统的文件传输往往采用以下流程: 磁盘 → 内核缓冲区(DMA 读取) 内核缓冲区 → 用户缓冲区(read() 系... - [分片上传](https://tio-boot.com/zh/06_web/39.html): 分片上传 1. 概述 本文档详细介绍了基于 Tio Boot 框架实现的文件分片上传服务。该服务旨在解决大文件上传过程中可能遇到的网络不稳定、超时等问题,通过将大文件分割成多个小块(分片)进行上传,提高上传的稳定性和效率。 1.1. 核心思想 分片上传 (Chunked Upload):客户端将待上传的大文件按照预设大小(如 5MB)切分为多个小块。 ... - [接口访问统计](https://tio-boot.com/zh/06_web/40.html): 接口访问统计 本文档详细介绍如何在 Tio-Boot 框架中实现接口访问统计功能。通过实现 RequestStatisticsHandler 接口,我们创建了 DbRequestStatisticsHandler 类,用于记录每个 HTTP 请求的关键信息,并通过异步任务将数据保存到数据库中,为后续问题排查和系统性能分析提供数据依据。 1. 需求概述 ... - [接口请求和响应数据记录](https://tio-boot.com/zh/06_web/41.html): 接口请求和响应数据记录 本文档详细介绍了如何基于 Tio-Boot 框架实现接口请求和响应数据的记录功能,同时统计接口的耗时。我们将创建两个实现类: MyHttpResponseStatisticsHandler 用于记录接口响应数据,并统计接口耗时。 DbRequestResponseStatisticsHandler 用于记录请求和响应数据,且仅保... - [WebJars](https://tio-boot.com/zh/06_web/42.html): WebJars 本文档介绍如何在 Tio-Boot 中配置 WebJars 资源访问及 Swagger UI 页面访问的实现方式。通过 Tio-Boot 内置的 WebjarHandler 类和自定义的 SwaggerUiHandler,我们可以实现对 WebJars 静态资源和 doc.html Swagger 页面文件的访问。 WebJars 规范... - [JProtobuf](https://tio-boot.com/zh/06_web/43.html): JProtobuf 一、简介 本文介绍另一种 JAVA 对象序列化神器——ProtoBuf(Protocol Buffers)。ProtoBuf 是由 Google 开发的一种用于序列化结构化数据的高效、灵活且语言中立的协议。它被广泛应用于数据通信、数据存储、RPC(远程过程调用)等场景,尤其适用于分布式系统和微服务架构中。ProtoBuf 序列化后的... - [测速](https://tio-boot.com/zh/06_web/44.html): 测速 1、功能概述 SpeedTestHandler 是基于 Tio-Boot HTTP 框架的一个测速接口,能根据客户端传入的 size 参数(单位 MB)动态生成指定大小的二进制 payload 并返回,用于测试网络带宽及客户端接收性能。 2、Handler 实现示例 说明 disableGzip(true):示例中调用关闭框架的 gzip 压缩逻... - [Gzip Bomb:使用压缩炸弹防御恶意爬虫](https://tio-boot.com/zh/06_web/45.html): Gzip Bomb:使用压缩炸弹防御恶意爬虫 引言 在网络世界中,恶意爬虫可能导致服务器资源枯竭、数据被盗等问题。本文将介绍一种创新的防御策略——Gzip炸弹,它通过发送高度压缩的数据(解压后体积指数级增长),使恶意爬虫消耗大量资源直至崩溃。以下实现基于Java的tio-boot框架,并附有Python爬虫示例展示其效果。 Java服务端实现 核心逻辑... - [assets](https://tio-boot.com/zh/06_web/assets/): assets 本目录包含 2 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 gzip_mermaid_20250706_84636f.svg: 矢量图资源,用于本目录文档配图或结构示意。 - [07_validate](https://tio-boot.com/zh/07_validate/): 07_validate 本目录包含 3 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《数据紧校验规范》。 : 文档《参数校验》。 - [数据紧校验规范](https://tio-boot.com/zh/07_validate/01.html): 数据紧校验规范 规范描述 本规范旨在为后端 API 的数据校验与错误处理提供统一的标准,确保前后端在交互过程中能够高效、准确地传递和处理错误信息。规范内容包括以下几个方面: 1. 统一响应结构 所有后端 API 接口的响应均采用统一的 JSON 格式,主要包含以下字段: data:用于存放响应的具体数据内容。 在请求成功时,data 包含所需的返回数据... - [参数校验](https://tio-boot.com/zh/07_validate/02.html): 参数校验 使用自定义方法进行参数校验 为了提升性能,建议在 Controller 或 Service 中使用自定义方法进行参数校验。以下是一个示例,展示了如何实现登录参数的校验逻辑。 在这个示例中,LoginValidator 类负责验证登录参数。具体步骤如下: 使用 StrKit.isBlank 方法检查用户名是否为空,如果为空则返回一个带有错误信息... - [08_websocket](https://tio-boot.com/zh/08_websocket/): 08_websocket 本目录包含 6 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 tio-boot 搭建 WebSocket 服务》。 : 文档《WebSocket 聊天室项目示例》。 demo01.png: 图片资源,用于本目录文档配图或界面示意。 demo02.... - [使用 tio-boot 搭建 WebSocket 服务](https://tio-boot.com/zh/08_websocket/01.html): 使用 tio-boot 搭建 WebSocket 服务 简介 随着实时网络应用的普及,如即时聊天、在线游戏和实时数据推送等,WebSocket 技术越来越受到开发者的青睐。它允许客户端和服务器之间进行全双工、低延迟的通信,从而实现更加流畅的用户体验。 本文将详细介绍如何使用 tio-boot 框架快速搭建一个功能完善的 WebSocket 服务器。我们... - [WebSocket 聊天室项目示例](https://tio-boot.com/zh/08_websocket/02.html): WebSocket 聊天室项目示例 简介 这个项目的主要目的是展示如何使用 tio-boot 框架构建一个简单的 WebSocket 聊天室应用。通过这个项目,开发者可以学习如何使用 tio-boot 创建一个支持实时通信的 WebSocket 服务器,并了解如何处理客户端连接、消息广播、群组管理等常见的聊天功能。此外,项目还展示了如何通过 tio-b... - [09_java-db](https://tio-boot.com/zh/09_java-db/): 09_java-db 本目录包含 36 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Db 工具类》。 : 文档《java‑db》。 : 文档《操作数据库入门示例》。 : 文档《SQL 模板 (SqlTemplates)》。 : 文档《数据源配置与使用》。 : 文档《Activ... - [Db 工具类](https://tio-boot.com/zh/09_java-db/00.html): Db 工具类 基础使用 1. 常见用法 Db 类及其配套的 Row 类,提供了在 Model 类之外更为丰富的数据库操作功能。使用 Db 与 Row 类时,无需对数据库表进行映射,Row 相当于一个通用的 Model。以下是 Db + Row 模式的一些常见用法: 导入配置 2. 事务处理示例 以下示例展示了如何在事务中执行多个数据库操作: 以上两次数... - [java‑db](https://tio-boot.com/zh/09_java-db/01.html): java‑db 一个轻量级、零配置、支持多数据源、读写分离、SQL 模板管理、ActiveRecord ORM、批量操作、事务、统计等功能的 Java 数据库操作框架。 🚀 特性 ✅ 支持 MySQL、PostgreSQL、Oracle、SQLite 等多种数据库 ✅ 内置 Druid/HikariCP 连接池 ✅ ActiveRecord ORM ... - [操作数据库入门示例](https://tio-boot.com/zh/09_java-db/02.html): 操作数据库入门示例 java-db 支持多种数据库,以 mysql 为例进行演示 mysql 添加测试数据 首先,我们创建一个表: 然后,我们随意插入几条记录: 连接 mysql 接下来,我们添加依赖项: 最后,我们编写测试代码: 这段代码使用 ActiveRecord 插件来连接 MySQL 数据库并执行查询。以下是每部分的详细解释: 导入所需的库:... - [SQL 模板 (SqlTemplates)](https://tio-boot.com/zh/09_java-db/03_SQL%20Template.html): SQL 模板 (SqlTemplates) 1. 简介 SqlTemplates 是一个强大且灵活的SQL管理工具,旨在将SQL语句从Java代码中分离出来,实现更清晰的代码结构和更便捷的SQL维护。它通过解析特定格式的 .sql 文件,将SQL语句加载到内存中,并允许通过唯一的ID进行调用。 该工具支持两种灵活的加载模式: 主文件模式:通过一个入口文... - [数据源配置与使用](https://tio-boot.com/zh/09_java-db/04_%E6%95%B0%E6%8D%AE%E6%BA%90%E9%85%8D%E7%BD%AE%E4%B8%8E%E4%BD%BF%E7%94%A8.html): 数据源配置与使用 HikariCP java-db 为了支持 HikariCP 内置了 HikariCpPlugin,下面讲解一下 如何使用 HikariCP 引入依赖 在项目的 pom.xml 文件中,需要引入以下依赖库: 这里 java-db 提供了 ActiveRecordPlugin 的支持,postgresql 是 PostgreSQL 数据... - [ActiveRecord](https://tio-boot.com/zh/09_java-db/05_ActiveRecordPlugin.html): ActiveRecord 概述 ActiveRecord 是 JFinal-Plugins 最核心的组成部分之一,通过 ActiveRecord 来操作数据库,将极大地减少代码量,极大地提升开发效率。 ActiveRecord 模式的核心是:一个 Model 对象唯一对应数据库表中的一条记录,而对应关系依靠的是数据库表的主键值。 因此,ActiveRe... - [Db 工具类](https://tio-boot.com/zh/09_java-db/06_db%E5%B7%A5%E5%85%B7%E7%B1%BB%E5%9F%BA%E7%A1%80.html): Db 工具类 基础使用 1. 常见用法 Db 类及其配套的 Row 类,提供了在 Model 类之外更为丰富的数据库操作功能。使用 Db 与 Row 类时,无需对数据库表进行映射,Row 相当于一个通用的 Model。以下是 Db + Row 模式的一些常见用法: 导入配置 2. 事务处理示例 以下示例展示了如何在事务中执行多个数据库操作: 以上两次数... - [批量操作](https://tio-boot.com/zh/09_java-db/07_db%E5%B7%A5%E5%85%B7%E7%B1%BB%E9%AB%98%E7%BA%A7.html): 批量操作 批量操作方法 在实际开发中,批量操作能够显著提高数据库的处理效率,减少单条操作带来的性能开销。本文将以 Java-db 框架中的Db类为例,详细介绍批量操作的使用方法,包括批量保存和批量更新。 类名:Db.java 方法签名 参数说明 sql:指的是INSERT INTO或UPDATE语句。动态参数使用问号(?)作为占位符,例如: 上述 SQ... - [Model](https://tio-boot.com/zh/09_java-db/08_Model.html): Model 1、基本用法 Model 是 ActiveRecord 中最重要的组件之一,它充当 MVC 模式中的 Model 部分。以下是 Model 定义示例代码: 以上代码中的 User 通过继承 Model,便立即拥有的众多方便的操作数据库的方法。在 User 中声明的 dao 静态对象是为了方便查询操作而定义的,该对象并不是必须的。基于 Act... - [Model生成器](https://tio-boot.com/zh/09_java-db/09_%E7%94%9F%E6%88%90%E5%99%A8%E4%B8%8E%20JavaBean.html): Model生成器 本文档介绍了如何使用 ActiveRecord 模块下的 Generator 工具类,自动生成 JavaBean 相关的 Model、BaseModel、MappingKit、DataDictionary 四类文件。通过生成器,可以快速创建符合 JavaBean 规范的模型类,提升开发效率和代码质量。 1. 生成器使用 1.1 基本使... - [注解](https://tio-boot.com/zh/09_java-db/10.html): 注解 本文档介绍了如何通过 Java 注解的方式操作数据库表 amazon_product_variant_example_table,实现数据的增删改查。我们将使用 JavaDb 框架中的 ActiveRecord 模块,并借助注解来简化数据库操作。 java-db 核心特性说明. 驼峰命名映射 Java 属性如hiResImageUrl自动映射到数... - [异常处理](https://tio-boot.com/zh/09_java-db/11_%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86.html): 异常处理 ActiveRecordException 1、背景简介 在使用 Java-DB(即 LitongJava ActiveRecord 框架)操作数据库时,当执行增删改查操作失败,框架会抛出 ActiveRecordException。出于安全考虑,该异常默认不会将完整的 SQL 语句及参数打印到控制台,而是将它们保存在异常对象内部,避免敏感信... - [数据库事务处理](https://tio-boot.com/zh/09_java-db/12_%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1%E5%A4%84%E7%90%86.html): 数据库事务处理 在现代应用开发中,确保数据的完整性和一致性至关重要。数据库事务(Transaction)是实现这一目标的核心机制。它将一系列数据库操作捆绑成一个不可分割的逻辑工作单元,确保这些操作要么全部成功执行,要么在出现任何错误时全部回滚,使数据恢复到操作前的状态。 本文将详细介绍 ActiveRecord 框架中支持的三种主流事务处理方式,并提供... - [Cache 缓存](https://tio-boot.com/zh/09_java-db/13_Cache%20%E7%BC%93%E5%AD%98.html): Cache 缓存 1、使用 Ehcache 缓存 ActiveRecord 可以使用缓存以大大提高性能,默认的缓存实现是 ehcache,使用时需要引入 ehcache 的 jar 包及其配置文件,以下代码是 Cache 使用示例: 上例 findByCache 方法中的 cacheName 需要在 ehcache.xml 中配置如:部分是 Maven 构建配置,用于在的项目中包含 Eclipse Paho MQTT 客户端库。 app.pr... - [Disruptor](https://tio-boot.com/zh/22_MQ/03.html): Disruptor 背景 工作中遇到项目使用 Disruptor 做消息队列,对没看错,不是 Kafka,也不是 rabbitmq;Disruptor 有个最大的优点就是快,还有一点它是开源的哦,下面做个简单的记录. Disruptor 介绍 Disruptor 的 github 主页:https://github.com/LMAX-Exchange/... - [kafaka](https://tio-boot.com/zh/22_MQ/04.html): kafaka 本文演示如何在 tio-boot 项目中集成 Kafka,实现消息的生产与消费,并通过 HTTP 接口触发消息发送。 一、Kafka 安装与启动 Kafka 依赖 Zookeeper(新版本可用 KRaft,但这里用经典方式,简单稳定)。 Zookeeper 下载 ZooKeeper 3.9.5 下载目录 里面可以看到: apache-z... - [AWS MSK](https://tio-boot.com/zh/22_MQ/05.html): AWS MSK tio-boot整合AWS MSK 一、准备工作 接入前先确认这几件事: MSK 集群已创建 Topic 已存在,或者由程序自动创建 应用运行环境能访问 MSK 应用绑定的 AWS 身份有足够权限 AWS 官方说明里提到,MSK Provisioned 集群默认是私网访问,客户端一般需要在同一 VPC 内;而 IAM 模式下,Java ... - [23_tio-utils](https://tio-boot.com/zh/23_tio-utils/): 23_tio-utils 本目录包含 18 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-utils》。 : 文档《EnvUtils 配置工具》。 : 文档《Notification》。 : 文档《Email》。 : 文档《JSON》。 : 文档《File》。 : 文档... - [tio-utils](https://tio-boot.com/zh/23_tio-utils/01.html): tio-utils tio-utils 是 tio-boot 的内置工具类库 无默认任何第三方依赖 自带 JsonUtils,实现了实体类转为 Json 字符串 如果需要将 Json 字符串转为实体类,请添加 fastjson2 gradle - [EnvUtils 配置工具](https://tio-boot.com/zh/23_tio-utils/02.html): EnvUtils 配置工具 EnvUtils 是 tio-utils 提供的统一配置管理工具,用于在应用运行时,从多个配置来源中获取配置值,并按照固定优先级进行解析与覆盖。 它解决的核心问题是: 配置来源分散(参数、环境变量、配置文件) 多环境配置切换复杂 本地个性化配置容易污染团队环境 EnvUtils 通过一套明确的加载规则和优先级模型,统一了这些... - [Notification](https://tio-boot.com/zh/23_tio-utils/03.html): Notification 1. 概述 tio-boot 内置了消息通知组件,用户发送消息到 微信企业群 飞书企业群 等等 本文档提供了一个通知组件的使用指南,介绍通过不同的方式发送通知,比如发送文本消息或者发送预警信息。它支持自定义通知方式,用户可以通过实现特定的接口来集成不同的通知服务。 添加依赖 Notification 依赖 okhttp 发送数... - [Email](https://tio-boot.com/zh/23_tio-utils/04.html): Email tio-utils 内置了邮箱工具类 nexus.io.tio.utils.email.EMailUtils 用于支持发送邮件 添加依赖 or 这两个依赖的区别在于它们所依赖的不同版本的 Java 邮件库,以及这些版本可能带来的改动或增强。具体如下: 1. javax.mail:mail:1.5.0-b01 这是 Java 邮件 API (... - [JSON](https://tio-boot.com/zh/23_tio-utils/05.html): JSON tio-utils 的 json 模块以抽象类 Json 为核心,方便扩展第三方实现,tio 官方给出了三个 Json 实现,分别是 TioJson、FastJson2、Jackson,这三个实现继承自抽象类 Json。 抽象类 Json 的核心抽象如下: 如上代码可以看出 Json 抽象就是 Object 与 json string 互转的... - [File](https://tio-boot.com/zh/23_tio-utils/06.html): File ResourceUtil 和 BufferedReader 读取 classpath 下的文本文件 读取文件示例 代码示例 读取为List lines 代码示例 读取文件内容为字符串 如果感觉上面的方法繁琐,可以使用下面的代码 代码示例 读取文件内容为字节数组 - [Base64](https://tio-boot.com/zh/23_tio-utils/07.html): Base64 tio-utils 内置了 base64 编码和解码工具类,示例代码如下 - [上传和下载](https://tio-boot.com/zh/23_tio-utils/08.html): 上传和下载 使用 HttpDownloadUtils 下载文件 HttpDownloadUtils 是一个用于从远程服务器下载文件的实用工具类。下面是一个示例代码,以及详细解释如何使用 HttpDownloadUtils 来下载文件。 示例代码 方法解析 参数 remoteURL: 远程文件的 URL 地址。该参数是一个字符串,指定了要下载文件的完整 ... - [Http](https://tio-boot.com/zh/23_tio-utils/09.html): Http 类简介 Http 类是一个用于简化 HTTP 请求操作的工具类,提供了发送 GET 和 POST 请求的便捷方法。它支持发送 JSON 数据、表单数据,并允许自定义请求头。 公共方法 1. postJson(String serverUrl, String payload) 描述: 发送一个带有 JSON 数据的 POST 请求。 参数: s... - [Telegram](https://tio-boot.com/zh/23_tio-utils/10.html): Telegram 简介 tio-utils 内置了 Telegram 工具类,允许用户方便地将消息发送到 Telegram 群组。本文档将详细介绍如何创建 Telegram Bot、获取群组 Chat ID、使用 Java 代码发送消息,以及将其集成到 Tio-Boot 项目中。此外,还将介绍如何使用 tio-utils 内置的 TelegramBot... - [RsaUtils](https://tio-boot.com/zh/23_tio-utils/11.html): RsaUtils 加密和解密操作 生成密钥对 以下示例展示了如何使用 RsaUtils 生成 RSA 公钥和私钥,并将其编码为 Base64 字符串。 示例输出: 加密和解密消息 以下示例展示了如何使用生成的 RSA 公钥加密消息,并使用私钥解密。 示例输出: 将私钥和公钥存入数据库 为了安全地存储 RSA 密钥对,我们将私钥和公钥存入数据库中的 sy... - [HttpUtils](https://tio-boot.com/zh/23_tio-utils/12.html): HttpUtils 添加依赖 nexus.io.tio.utils.http.HttpUtils 是对 okhttp 的二次封装,使用前请添加 okhttp 依赖 HttpUtils 是一个使用 OkHttpClient 处理 HTTP 请求和响应的 Java 工具类。该类提供了一组静态方法,方便进行 GET 和 POST 请求,并处理请求头和请求体。... - [ByteBufferUtils](https://tio-boot.com/zh/23_tio-utils/13.html): ByteBufferUtils 这是一个专为 java.nio.ByteBuffer 设计的工具类,旨在简化和扩展 ByteBuffer 的常用操作。ByteBuffer 是 Java NIO 的核心组件,用于高效的 I/O 操作,但其原生 API 在某些场景下使用起来较为繁琐,例如处理特定格式的数据(如按行读取)、复制、拆分等。ByteBufferU... - [系统监控](https://tio-boot.com/zh/23_tio-utils/19.html): 系统监控 本指南将介绍如何使用 tio-utils 中的 SystemMonitorUtils 获取系统信息,以及如何将监控数据记录到数据库中。 一、使用 SystemMonitorUtils 获取系统信息 tio-utils 提供了 SystemMonitorUtils 类,方便用户获取系统的各种信息。以下是使用方法: 执行上述代码后,您将获得一个 ... - [线程](https://tio-boot.com/zh/23_tio-utils/20.html): 线程 一、概述 TioThreadUtils 是一个基于 java.util.concurrent.ExecutorService 封装的线程池工具类,用于在项目中统一管理和使用线程池资源。 它提供了: 全局唯一的固定大小线程池 统一的线程命名规则 简化的任务提交与执行方法 线程池的启动、停止与重启能力 适用于异步任务执行、并发处理、后台任务等场景。 ... - [虚拟线程](https://tio-boot.com/zh/23_tio-utils/21.html): 虚拟线程 使用虚拟线程并发执行数学与安全判定 本文介绍如何在 ApiMathController#determine 接口中,使用 MvThreadUtils(基于虚拟线程)并发执行两个独立的判定逻辑:determineTextMath 与 determineTextSafe。目标是在保持原有“判定顺序与返回语义不变”的前提下,减少总体等待时间。 背景... - [毫秒并发 ID (MCID) 生成方案](https://tio-boot.com/zh/23_tio-utils/30.html): 毫秒并发 ID (MCID) 生成方案 1. 引言 在数字时代,唯一标识符的生成对于维护数据完整性、支持分布式系统以及确保准确的事务处理至关重要。毫秒并发 ID (MCID) 生成方案是一种高精度、可扩展的解决方案,旨在为需要毫秒级精度和高并发支持的实时系统生成唯一标识符。本文件概述了 MCID 方案的设计、实现及标准化建议,并特别强调了其对前端浏览器... - [24_tio-http-server](https://tio-boot.com/zh/24_tio-http-server/): 24_tio-http-server 本目录包含 7 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 Tio-Http-Server 搭建简单的 HTTP 服务》。 : 文档《tio-boot 添加 HttpRequestHandler》。 : 文档《在 Android 上... - [使用 Tio-Http-Server 搭建简单的 HTTP 服务](https://tio-boot.com/zh/24_tio-http-server/01.html): 使用 Tio-Http-Server 搭建简单的 HTTP 服务 如果的项目无需 WebSocket 功能,且对性能有较高要求,那么可以考虑使用 tio-http-server 作为 HTTP 服务的基础。tio-http-server 是一款高性能的 Java HTTP 服务框架,专为满足低延迟、高并发场景而设计。本文将介绍如何使用 tio-http... - [tio-boot 添加 HttpRequestHandler](https://tio-boot.com/zh/24_tio-http-server/02.html): tio-boot 添加 HttpRequestHandler tio-boot 支持的两种组件最 http 请求进行处理 handler controller 注意 1.handler 的优先级高于 controller 2.handler 不支持参数封装,只能接受形参 HttpRequest,返回 HttpResponse 3.handler 在性能... - [在 Android 上使用 tio-boot 运行 HTTP 服务](https://tio-boot.com/zh/24_tio-http-server/03.html): 在 Android 上使用 tio-boot 运行 HTTP 服务 本文档详细介绍了如何在 Android 设备上使用 tio-boot 框架运行轻量级 HTTP 服务。tio-boot 基于 TIO 通信协议,实现了高性能、易用的 HTTP 服务能力,非常适合嵌入式或移动端场景。以下各步将带从环境准备,到代码编写,再到最终测试,一气呵成地完成部署。 ... - [tio-http-server-native](https://tio-boot.com/zh/24_tio-http-server/04.html): tio-http-server-native 将基于 tio-http-server 的 jar 编译成二进制文件运行 pom.xml 启动类 实体类 Controller maven and jdk 打包成二进制文件 打包过程中执使用的 native-image 命令如下 编译成功,编译过重中日志如下 测试启动成功 访问测试接口 http://loc... - [handler 常用操作](https://tio-boot.com/zh/24_tio-http-server/05.html): handler 常用操作 文件 接受文件上传 为什么使用 handler 上传文件 handler 的性能高于 controller 上传示例 - [/zh/24_tio-http-server/06.html](https://tio-boot.com/zh/24_tio-http-server/06.html) - [25_tio-websocket](https://tio-boot.com/zh/25_tio-websocket/): 25_tio-websocket 本目录包含 4 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《WebSocket 服务器》。 : 文档《WebSocket Client》。 : 文档《TCP数据转发》。 - [WebSocket 服务器](https://tio-boot.com/zh/25_tio-websocket/01.html): WebSocket 服务器 tio-boot 内置了 tio-websocket 组件,推荐使用 tio-boot 创建 WebSocket 服务器。如果您对 WebSocket 场景有特殊的要求,可以参考下面的代码启动一个独立的 WebSocket 服务器。 添加依赖 在项目的 pom.xml 中添加以下依赖: 定义常量 创建一个 Const 类,用... - [WebSocket Client](https://tio-boot.com/zh/25_tio-websocket/02.html): WebSocket Client WebSocket Client 并不是 tio-boot 的内置组件 1. 依赖添加 首先,您需要在项目的pom.xml文件中添加以下依赖,以使用tio-websocket-client库。 这个依赖是 WebSocket 客户端的核心,提供了建立连接、发送和接收消息等功能。 2. WebSocket 客户端测试 主... - [TCP数据转发](https://tio-boot.com/zh/25_tio-websocket/03.html): TCP数据转发 1.tio‑websockify 消息转发服务文档 1、项目简介 tio-websockify 是一个基于 T‑io 框架的 WebSocket → TCP 转发代理,旨在将来自浏览器的 WebSocket 帧实时转发到后端 TCP 服务(如 VNC Server),并将后端返回的二进制数据封装成 WebSocket 帧回传给前端。 核... - [26_tio-im](https://tio-boot.com/zh/26_tio-im/): 26_tio-im 本目录包含 9 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《通讯协议文档》。 : 文档《ChatPacket.proto 文档》。 : 文档《java protobuf》。 : 文档《数据表设计》。 : 文档《创建工程》。 : 文档《登录》。 : 文档《历... - [通讯协议文档](https://tio-boot.com/zh/26_tio-im/01.html): 通讯协议文档 本通讯协议旨在为即时通讯系统提供一套全面、可靠的消息传输标准。协议支持多种登录方式、消息类型及群聊功能,并包含完善的鉴权与消息重发机制,确保消息的安全与可靠传递。 功能概述 本通讯协议支持以下功能: 确认(ACK)、重发、消息序列 管理。 匿名登录、用户名密码登录 和 Token 登录。 支持发送多种类型的消息:文本(Text)、图片(I... - [ChatPacket.proto 文档](https://tio-boot.com/zh/26_tio-im/02.html): ChatPacket.proto 文档 本文档详细描述了即时通讯系统中使用的 ChatPacket.proto 文件,该文件基于 Protocol Buffers(protobuf)定义了通讯协议中的各类消息结构和命令类型。本文档不仅对原始的 .proto 文件进行了润色和格式优化,还根据前述通讯协议的内容修复了其中的错误,确保协议的一致性和完整性。 ... - [java protobuf](https://tio-boot.com/zh/26_tio-im/03.html): java protobuf 生成代码 解析二进制数据 使用 ChatPacket 生成和解析二进制数据的两个实例 下面是两个实例,展示如何使用 ChatPacket 类生成二进制数据并将其解析回 ChatPacket 对象。可以将这些实例直接应用到的 Java 项目中。 实例 1:生成二进制数据 在这个实例中,我们将创建一个 ChatPacket 对象... - [数据表设计](https://tio-boot.com/zh/26_tio-im/04.html): 数据表设计 1. im_users 用户表 2. im_messages_history 表 此表用于存储用户之间和群组之间交换的所有消息的历史记录,支持各种消息类型,并包含消息确认和序列化所需的字段。 表结构 字段描述 id: 每条消息的唯一标识符。 cmd: 表示消息类型的命令代码。 sequence: 用于跟踪和确认的唯一消息序列号。 ack: ... - [创建工程](https://tio-boot.com/zh/26_tio-im/05.html): 创建工程 框架 本项目使用 tio-boot 框架,包含的依赖如下 - [登录](https://tio-boot.com/zh/26_tio-im/06.html): 登录 - [历史消息](https://tio-boot.com/zh/26_tio-im/07.html): 历史消息 - [发消息](https://tio-boot.com/zh/26_tio-im/08.html): 发消息 - [27_mybatis](https://tio-boot.com/zh/27_mybatis/): 27_mybatis 本目录包含 6 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Tio-Boot 整合 MyBatis》。 : 文档《使用配置类方式整合 MyBatis》。 : 文档《整合数据源》。 : 文档《使用 mybatis-plus 整合 tdengine》。 : ... - [Tio-Boot 整合 MyBatis](https://tio-boot.com/zh/27_mybatis/01.html): Tio-Boot 整合 MyBatis 简介 Tio-Boot:Tio-Boot 是一个高性能的 Java 网络编程框架,用于快速构建 Web、WebSocket、TCP 等网络应用。在本教程中,我们将使用 Tio-Boot 启动一个简单的 Web 服务,以演示如何与 MyBatis 整合。 MyBatis:MyBatis 是一个持久层框架,简化了 J... - [使用配置类方式整合 MyBatis](https://tio-boot.com/zh/27_mybatis/02.html): 使用配置类方式整合 MyBatis 在本教程中,我们将展示如何通过配置类的方式来整合 MyBatis,而不使用 mybatis.xml 配置文件。我们将一步步解释每个部分的原理和原因,以帮助读者理解为什么要这样做。 整合 mybatis 一、添加依赖 首先,在项目的 pom.xml 文件中添加以下依赖: 说明: MyBatis:对象关系映射框架,用于与... - [整合数据源](https://tio-boot.com/zh/27_mybatis/03.html): 整合数据源 Druid 引言 本项目中我们采用了 MyBatis 作为 ORM 框架,并集成了阿里巴巴提供的 Druid 数据源管理工具来优化数据库连接的管理和性能。Druid 提供了强大的监控、扩展和配置能力,适用于大多数企业级应用场景。 添加 Druid 依赖 在项目的 pom.xml 文件中添加 Druid 的依赖配置,确保能够使用 Druid ... - [使用 mybatis-plus 整合 tdengine](https://tio-boot.com/zh/27_mybatis/04.html): 使用 mybatis-plus 整合 tdengine 介绍如何使用 tio-boot 结合 Mybatis-Plus 对 TDengine 进行整合。TDengine 支持 SQL 语言,允许我们利用 Mybatis-Plus 的强大功能进行数据操作。tio-boot 是一个高效的 Java Web 框架,用于构建基于事件驱动的应用程序。 添加依赖 ... - [整合 mybatis-plus](https://tio-boot.com/zh/27_mybatis/05.html): 整合 mybatis-plus 添加依赖 初始化测试数据 创建数据库 创建表 随便插入几条条记录 添加实体类和 Mapper 添加配置文件 mybatis.xml 使用工具类类整合 mybatis-plus 添加配置文件 mybatis.xml 数据源配置 mapper 配置 MybatisPlusUtils 使用 MybatisSqlSessionF... - [28_mongodb](https://tio-boot.com/zh/28_mongodb/): 28_mongodb 本目录包含 2 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-boot 使用 mongo-java-driver 操作 mongodb》。 - [tio-boot 使用 mongo-java-driver 操作 mongodb](https://tio-boot.com/zh/28_mongodb/01.html): tio-boot 使用 mongo-java-driver 操作 mongodb 在这个示例中,创建了一个使用 MongoDB 的简单 Java Web 应用程序。这个应用程序包括了数据库依赖配置、数据库操作工具类、配置类、控制器类以及实际的 HTTP 请求处理。下面我将详细解释每一部分的作用和逻辑。 MongoDB Java Driver 依赖 Mo... - [29_elastic-search](https://tio-boot.com/zh/29_elastic-search/): 29_elastic-search 本目录包含 6 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Elasticsearch》。 : 文档《JavaDB 整合 ElasticSearch》。 : 文档《Elastic 工具类使用指南》。 : 文档《Elastic-search ... - [Elasticsearch](https://tio-boot.com/zh/29_elastic-search/01.html): Elasticsearch Introduction Elasticsearch 是一个基于分布式架构的搜索和分析引擎,主要用于处理大规模的文本数据。它建立在 Apache Lucene 之上,并提供了一个基于 RESTful API 的接口,使得数据的索引和搜索变得非常简便。以下是 Elasticsearch 的简介和一些基本概念: 简介 Elast... - [JavaDB 整合 ElasticSearch](https://tio-boot.com/zh/29_elastic-search/02.html): JavaDB 整合 ElasticSearch Java 提供了一个 Elastic 类,用于简化与 ElasticSearch 的整合过程以及执行相关的 ES 操作。本文档将介绍如何在 Java 项目中通过配置类来实现与 ElasticSearch 的整合。 使用 JavaDB 整合 ElasticSearch 添加依赖 配置文件 (app.prop... - [Elastic 工具类使用指南](https://tio-boot.com/zh/29_elastic-search/03.html): Elastic 工具类使用指南 本章介绍了 JavaDB 提供的 Elastic 工具类的使用方法,包括索引的创建、查看、删除,以及文档的批量导入、查询、更新和删除等操作。 索引操作 创建索引 创建索引的命令如下: 查看索引 要查看索引的设置,可以使用以下命令: 示例返回结果: 删除索引 删除索引的命令如下: Java 代码示例 数据文档操作 批量导入... - [Elastic-search 注意事项](https://tio-boot.com/zh/29_elastic-search/04.html): Elastic-search 注意事项 Elastic-search 在某些时候并不是效率最高的选择,例如根据主键查询和索引查询 在查询语句为 SELECT * FROM table WHERE id=? 的场景下,具体分析如下: PostgreSQL: 适用场景:PostgreSQL 是关系型数据库,最适合结构化查询,特别是在基于主键或唯一索引的精确... - [ES 课程示例文档](https://tio-boot.com/zh/29_elastic-search/05.html): ES 课程示例文档 在将关系数据库中的数据导入 Elasticsearch 以实现高效搜索的过程中,本文展示了如何使用 Java 集成 PostgreSQL 和 Elasticsearch。通过创建索引、批量导入数据、以及构建复杂查询,我们能够实现对大量课程数据的快速检索和分析。此方法不仅提高了数据查询的效率,还为用户提供了更为灵活的搜索功能,适用于需... - [30_magic-script](https://tio-boot.com/zh/30_magic-script/): 30_magic-script 本目录包含 2 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-boot 与 magic-script 集成指南》。 - [tio-boot 与 magic-script 集成指南](https://tio-boot.com/zh/30_magic-script/01.html): tio-boot 与 magic-script 集成指南 本指南演示如何在基于 JVM 的动态脚本框架 magic-script 中,快速集成并在 tio-boot 项目中执行脚本。 1. 概述 magic-script 是一个基于 JVM 的动态脚本引擎,支持类似 JavaScript 的语法,并且可以方便地与 Java 应用集成。通过将脚本与 ti... - [31_groovy](https://tio-boot.com/zh/31_groovy/): 31_groovy 本目录包含 3 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-boot 整合 Groovy》。 : 文档《调试常用脚本》。 - [tio-boot 整合 Groovy](https://tio-boot.com/zh/31_groovy/01.html): tio-boot 整合 Groovy 在现代 Java 开发中,为了提高开发效率和代码灵活性,Groovy 作为一种运行在 Java 平台上的动态语言,被广泛应用于快速开发、脚本编写、自动化测试以及构建工具中。本文介绍了 Groovy 的主要特点、在 tio-boot 中整合 Groovy 脚本的实现方式,以及详细的代码示例和说明。 1. 什么是 Gr... - [调试常用脚本](https://tio-boot.com/zh/31_groovy/02.html): 调试常用脚本 - [32_firebase](https://tio-boot.com/zh/32_firebase/): 32_firebase 本目录包含 9 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《整合 google firebase》。 : 文档《Firebase Storage》。 : 文档《Firebase Authentication》。 : 文档《使用 Firebase Adm... - [整合 google firebase](https://tio-boot.com/zh/32_firebase/01.html): 整合 google firebase firebase 简介 firebase 是 Google 提供的一个移动和网络应用开发平台,它提供了一系列工具和服务来帮助开发者构建高质量的应用,改善用户体验,并快速成长其业务。Firebase 提供的服务覆盖了应用开发的许多方面,包括但不限于数据库、认证、分析、配置管理、文件存储、功能测试和云函数等。 Fire... - [Firebase Storage](https://tio-boot.com/zh/32_firebase/02.html): Firebase Storage 添加一个 Bucket 创建 bucket Firebase Storage 使用存储桶(Bucket)来组织和存储您的文件。如果您刚创建了 Firebase 项目,Firebase 会为您自动创建一个默认的存储桶。 您可以在 Firebase 控制台的 Storage 部分查看和管理您的存储桶。 要添加或管理存储桶,... - [Firebase Authentication](https://tio-boot.com/zh/32_firebase/03.html): Firebase Authentication 背景 在现代应用中,用户身份验证是确保系统安全性的重要环节。Firebase Authentication 提供了简单易用的身份验证服务,支持多种身份验证方法,包括电子邮件密码登录、第三方登录(如 Google、Facebook)、匿名登录等。为了确保操作的安全性,如文件上传,通常需要验证用户的身份,并验... - [使用 Firebase Admin SDK 进行匿名用户管理与自定义状态标记](https://tio-boot.com/zh/32_firebase/04.html): 使用 Firebase Admin SDK 进行匿名用户管理与自定义状态标记 在现代应用程序中,匿名用户管理是一个常见的需求,尤其是在需要为未登录用户提供部分功能的场景中。通过 Firebase Admin SDK,开发者可以方便地管理匿名用户,并为用户设置自定义的状态标记,例如记录用户是否使用过某项特定功能。 本文将介绍如何使用 Firebase A... - [导出用户](https://tio-boot.com/zh/32_firebase/05.html): 导出用户 导出 Firebase 用户到 Excel 本示例使用 Firebase Admin SDK 从 Firebase 中导出用户信息,并通过 EasyExcelUtils 工具类将数据导出为 Excel 文件。 示例代码 代码解释 环境加载和配置: 使用 EnvUtils.load() 来加载项目中的环境变量,这些变量可能包括 Firebase... - [登录注册](https://tio-boot.com/zh/32_firebase/06.html): 登录注册 简介 本文档概述了基于 Firebase Auth 平台的用户认证系统的设计与实现。系统提供用户注册、登录、密码重置功能,利用 Firebase Authentication 实现安全的用户管理和邮箱验证。本指南旨在为开发人员和相关人员提供详细的实现说明,帮助他们了解、实现并与提供的认证服务进行交互。 需求 用户认证系统需满足以下需求: 用户... - [注册回调](https://tio-boot.com/zh/32_firebase/07.html): 注册回调 同步 Firebase 用户到后端系统 概述 在现代应用中,用户管理是一个关键的功能。Firebase 提供了强大的身份验证服务,可以轻松地管理用户的创建和删除。然而,在某些场景下,我们需要将 Firebase 的用户数据与后端系统进行同步,以实现更复杂的业务逻辑或数据分析。本文将详细介绍如何通过 Firebase Cloud Functio... - [34_spider](https://tio-boot.com/zh/34_spider/): 34_spider 本目录包含 15 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《jsoup》。 : 文档《爬取 z-lib.io 数据》。 : 文档《整合 WebMagic》。 : 文档《WebMagic 示例:爬取学校课程数据》。 : 文档《Playwright》。 : ... - [jsoup](https://tio-boot.com/zh/34_spider/01.html): jsoup jsoup 是一个用于解析、提取和处理 HTML 的 Java 库。它提供了一个非常方便的 API,可以让开发者轻松地从 URL、文件或字符串中解析 HTML,并提取所需的内容。本文将带深入了解 jsoup 的基础知识、核心对象以及常用的选择器语法,并通过实际案例演示其应用。 jsoup 基础 1.1 jsoup 入门案例 1.1.1 创建... - [爬取 z-lib.io 数据](https://tio-boot.com/zh/34_spider/02.html): 爬取 z-lib.io 数据 本文将详细介绍如何对 z‑lib.io 进行数据爬取,将关键数据入库,并利用 PostgreSQL 的全文检索功能对书名、作者、出版社、备注等字段建立搜索索引。内容包括网站数据分析、数据表设计、全文检索字段维护(手动更新和触发器自动更新)、以及使用 Java 与 Jsoup 爬取网页、解析数据并批量插入数据库的完整示例代码... - [整合 WebMagic](https://tio-boot.com/zh/34_spider/03.html): 整合 WebMagic 使用 WebMagic 进行网页爬取并入库 本文档详细介绍如何使用 Java 和 WebMagic 进行网页爬取,包括添加依赖项、创建 PageProcessor 进行网页解析、创建 Pipeline 将爬取的数据存入数据库,以及运行爬虫的过程。 示例目标网页:https://www.sis.hawaii.edu/uhdad/a... - [WebMagic 示例:爬取学校课程数据](https://tio-boot.com/zh/34_spider/04.html): WebMagic 示例:爬取学校课程数据 目标是使用 WebMagic 框架构建一个完整的爬虫示例,从夏威夷大学的课程数据网页中自动提取并存储课程相关信息到数据库中。整个过程包括以下几个关键步骤: 数据分析:分析目标网页的 HTML 结构,确定需要爬取的内容及其位置,例如机构列表、学期信息、学科列表、课程详细信息等。 数据库表设计:为每个爬取的数据类型... - [Playwright](https://tio-boot.com/zh/34_spider/05.html): Playwright 简介 1. 什么是 Playwright Playwright 是一个由微软开发的现代化网页自动化测试和浏览器操作工具。它支持多种浏览器,包括 Chromium、Firefox 和 WebKit,并提供一致的跨浏览器 API。以下是 Playwright 的一些关键特点: 多浏览器支持:Playwright 支持 Chromium... - [Flexmark (Markdown 处理器)](https://tio-boot.com/zh/34_spider/06.html): Flexmark (Markdown 处理器) 简介 Flexmark 是一个功能强大的 Java Markdown 处理库,支持将 HTML 转换为 Markdown。它提供了灵活的 API,能够从 HTML 中提取内容并将其转换为符合 Markdown 语法的文本格式。Flexmark 提供了多种扩展和选项,使其在各种 Markdown 转换场景中... - [tio-boot 整合 Playwright](https://tio-boot.com/zh/34_spider/07.html): tio-boot 整合 Playwright 简介 在使用 Playwright 进行网页数据抓取时,每次启动 Playwright 都会带来较大的性能开销。为了解决这一问题,可以在服务启动时初始化 Playwright,并在服务关闭时正确释放资源,从而显著提升性能。本文将介绍如何使用 TioBoot 整合 Playwright,实现高效的网页数据获取... - [缓存网页数据](https://tio-boot.com/zh/34_spider/08.html): 缓存网页数据 一、功能概述 在某些场景下,我们需要对网页内容进行批量爬取和分析。但如果每次访问浏览器都进行实时加载,会消耗较多的系统资源(例如启动浏览器加载时可能会占用 90M 以上的内存)。因此,本方案的设计思路是:将已爬取到的网页内容进行缓存,后续重复访问同一页面时直接使用缓存内容,达到减少资源消耗和爬取时延的目的。 本方案主要包含以下几个部分: ... - [36_integration_thirty_party](https://tio-boot.com/zh/36_integration_thirty_party/): 36_integration_thirty_party 本目录包含 19 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《整合 okhttp》。 : 文档《整合 GrpahQL》。 : 文档《集成 Mailjet》。 : 文档《整合 ip2region》。 : 文档《整合 Geo... - [整合 okhttp](https://tio-boot.com/zh/36_integration_thirty_party/01.html): 整合 okhttp 在现代 Java 应用开发中,高效的 HTTP 客户端管理至关重要。本文将介绍如何在 tio-boot 框架中整合 OkHttp,以及几种常见的 OkHttpClient 管理方式,包括使用 Bean 容器管理、单例枚举模式以及设置代理的方法。 添加依赖 将 OkHttpClient 添加到 Bean 容器 在 tio-boot 中... - [整合 GrpahQL](https://tio-boot.com/zh/36_integration_thirty_party/02.html): 整合 GrpahQL GraphQL 简介 GraphQL 提供了一种灵活、高效的数据查询方式,广泛应用于现代 web 和移动应用开发中。 GraphQL 是一种用于 API 的查询语言以及服务器端的运行环境,它通过给予客户端请求所需数据的能力来提供更高效、灵活的交互。GraphQL 由 Facebook 于 2012 年开发,并于 2015 年开源。... - [集成 Mailjet](https://tio-boot.com/zh/36_integration_thirty_party/03.html): 集成 Mailjet 本文档旨在指导开发者如何在 Java 项目中集成 Mailjet 以实现邮件发送功能。内容涵盖了 Maven 依赖配置、应用配置文件设置、工具类封装以及测试方法。此外,还介绍了如何使用封装好的工具类在 Enjoy 框架中发送邀请邮件,并提供了相关的邮件模板和代码示例。 Maven 依赖配置 在项目的 pom.xml 文件中添加 M... - [整合 ip2region](https://tio-boot.com/zh/36_integration_thirty_party/04.html): 整合 ip2region 使用 ip2region 在 Java 中进行 IP 地理位置查询 本文将介绍如何使用 ip2region 库在 Java 应用中进行 IP 地址查询。ip2region 库提供了一种快速准确的方式来确定 IP 地址的地理位置。我们将一步步介绍如何设置库、配置它以及使用它来获取 IP 地址信息。 前提条件 在开始之前,确保具备... - [整合 GeoLite 离线库](https://tio-boot.com/zh/36_integration_thirty_party/05.html): 整合 GeoLite 离线库 整合 GeoLite 离线库:Java 通过 IP 获取地理位置信息 本文档介绍如何使用 GeoIP2 的离线库 GeoLite2-City,通过 Java 代码获取 IP 地址对应的地理信息。通过该示例,读者可以了解到如何获取城市、国家、经纬度以及邮政编码等数据,同时了解哪些信息需要额外的数据库支持。 1. GeoIP ... - [整合 Lark 机器人指南](https://tio-boot.com/zh/36_integration_thirty_party/06.html): 整合 Lark 机器人指南 本指南将介绍如何将 Lark 机器人集成到您的应用程序中。我们将介绍两种集成方式: 使用 LarksuiteNotificationUtils 工具类 使用 Lark 官方 SDK (oapi-sdk) 目录 使用 LarksuiteNotificationUtils 添加机器人 推送消息 使用 Lark 官方 SDK (o... - [集成 Lark Mail 实现邮件发送](https://tio-boot.com/zh/36_integration_thirty_party/07.html): 集成 Lark Mail 实现邮件发送 本文档介绍如何基于 Lark Mail 实现邮件发送功能。通过继承 Lark Mail 接口并调用内部封装的邮件发送工具,我们可以方便地对接 smtp.larksuite.com 的 SMTP 服务,实现邮件发送。下面将详细介绍如何在项目中集成及使用这一功能。 1. 环境准备与账号配置 在使用 Lark Mail... - [Thymeleaf](https://tio-boot.com/zh/36_integration_thirty_party/08.html): Thymeleaf 1.简介 Thymyleaf 是一个用于在 Java Web 应用程序中渲染动态 HTML 内容的模板引擎。它通过使用特定的模板标签语法,使得在 HTML 文件中可以动态插入变量、循环、条件判断等逻辑,从而生成最终的 HTML 页面。Thymyleaf 非常适合用来生成服务器端渲染的网页,也可以用于生成 HTML 邮件内容。 2. ... - [Swagger](https://tio-boot.com/zh/36_integration_thirty_party/09.html): Swagger 在现代 Web 应用开发中,API 文档的自动化生成是提高开发效率和维护性的重要手段。Swagger 作为一种广泛使用的 API 文档生成工具,与 Tio-Boot 框架的集成能够为开发者提供便捷的接口文档管理。本文将详细介绍如何在 Tio-Boot 项目中集成 Swagger,包括依赖添加、配置设置、代码实现及相关组件的讲解。 目录 ... - [Clerk 验证](https://tio-boot.com/zh/36_integration_thirty_party/10.html): Clerk 验证 tio-boot 整合 Clerk 进行 Token 验证 本文档介绍如何将 Clerk SDK for Java 与 tio-boot 框架集成,实现对 token 的验证功能。主要内容包括 Clerk 简介、Token 格式说明以及整合步骤和代码示例。 1. Clerk 简介 Clerk 是一款用于处理身份验证和授权的工具包,支持... - [集成datadog](https://tio-boot.com/zh/36_integration_thirty_party/11.html): 集成datadog 1.注册账号 https://www.datadoghq.com/# - [37_dubbo](https://tio-boot.com/zh/37_dubbo/): 37_dubbo 本目录包含 6 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《概述》。 : 文档《dubbo 2.6.0》。 : 文档《dubbo 2.6.0 调用过程》。 : 文档《dubbo 3.2.0》。 image.png: 图片资源,用于本目录文档配图或界面示意。 - [概述](https://tio-boot.com/zh/37_dubbo/01.html): 概述 什么是 Dubbo Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求... - [dubbo 2.6.0](https://tio-boot.com/zh/37_dubbo/02.html): dubbo 2.6.0 Introduction dubbo Dubbo 作为一款微服务框架,最重要的是向用户提供跨进程的 RPC 远程调用能力。如上图所示,Dubbo 的服务消费者(Consumer)通过一系列的工作将请求发送给服务提供者(Provider)。 为了实现这样一个目标,Dubbo 引入了注册中心(Registry)组件,通过注册中心,服... - [dubbo 2.6.0 调用过程](https://tio-boot.com/zh/37_dubbo/03.html): dubbo 2.6.0 调用过程 异常堆栈 让我们分析这个异常堆栈,从下往上讲解 Dubbo 的调用过程: 线程启动 (java.lang.Thread.run): 调用链的起点是 Java 线程的启动。Thread.run 方法是所有线程执行的入口。 线程池执行 (ThreadPoolExecutor$Worker.run): 线程池中的工作线程开始... - [dubbo 3.2.0](https://tio-boot.com/zh/37_dubbo/04.html): dubbo 3.2.0 添加依赖 - [38_spring](https://tio-boot.com/zh/38_spring/): 38_spring 本目录包含 6 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Spring Boot Web 整合 Tio Boot》。 : 文档《spring-boot-starter-webflux 整合 tio-boot》。 : 文档《tio-boot 整合 spri... - [Spring Boot Web 整合 Tio Boot](https://tio-boot.com/zh/38_spring/01.html): Spring Boot Web 整合 Tio Boot 本文将详细讲解如何使用 Spring Boot 整合 Tio Boot,实现两者各自优势的互补: 使用 Spring Boot 内置的 Servlet 容器和 Controller 机制 利用 Tio Boot 的其他功能,如数据库操作、AOP 容器以及高性能的服务支持 整合之后的架构可以实现: ... - [spring-boot-starter-webflux 整合 tio-boot](https://tio-boot.com/zh/38_spring/02.html): spring-boot-starter-webflux 整合 tio-boot 本文档提供了如何将 tio-boot-server 集成到使用 spring-boot-starter-webflux 的项目中。默认情况下,Spring WebFlux 使用 Netty 作为网络处理层。本文档将引导如何将 tio-boot-server 作为替代品整合到... - [tio-boot 整合 spring-boot-starter](https://tio-boot.com/zh/38_spring/03.html): tio-boot 整合 spring-boot-starter tio-boot 整合 spring-boot-starter:启动原理与全流程解析 本文给出一套可落地的整合方案:在同一进程中以 tio-boot 作为主启动与路由入口,在 tio-boot 初始化阶段拉起 Spring Boot 容器,并通过 AOP/IOC 桥接实现 @Autowir... - [Tio Boot 整合 Spring Boot Starter db](https://tio-boot.com/zh/38_spring/04.html): Tio Boot 整合 Spring Boot Starter db 简介 传统上,我们通过引入 spring-boot-starter-web,将 Spring Boot 的 Controller 与 Tio Boot 的 Service 进行整合。然而,这种方法虽然可行,但却丢失了 Tio Boot 在处理请求时的异步和非阻塞特性。 为了解决这一问... - [Tio Boot 整合 Spring Boot Starter Data Redis 指南](https://tio-boot.com/zh/38_spring/05.html): Tio Boot 整合 Spring Boot Starter Data Redis 指南 引言 在现代 Java 开发中,Tio Boot 是一个高性能的异步非阻塞网络框架,而 Spring Boot 则是一个简化 Spring 应用开发的快速开发框架。将两者结合,可以构建出高性能且易于维护的应用程序。 本指南将详细介绍如何将 Tio Boot 与 ... - [39_spring-cloud](https://tio-boot.com/zh/39_spring-cloud/): 39_spring-cloud 本目录包含 2 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-boot spring-cloud》。 - [tio-boot spring-cloud](https://tio-boot.com/zh/39_spring-cloud/01.html): tio-boot spring-cloud 概述 tio-boot 完全支持 spring-cloud 仅仅是 web 中间件使用 tio-boot-server,其他组件仍然是 spring-cloud tio-boot, Spring Cloud, 和 Consul 整合 tio-boot, Spring Cloud, 和 Consul 实现服务注... - [40_quarkus](https://tio-boot.com/zh/40_quarkus/): 40_quarkus 本目录包含 4 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Quarkus(无 HTTP)整合 tio-boot(有 HTTP)》。 : 文档《tio-boot + Quarkus + Hibernate ORM Panache》。 : 文档《tio-b... - [Quarkus(无 HTTP)整合 tio-boot(有 HTTP)](https://tio-boot.com/zh/40_quarkus/01.html): 下面是一篇整理、润色并补充解释后的完整技术文档,目标是: 让第一次接触这套方案的读者,也能一步一步读懂“为什么要这样做、每一层在做什么、代码为什么这么写”。 Quarkus(无 HTTP)整合 tio-boot(有 HTTP) 同 JVM 架构完整方案说明 一、背景与问题动机 在 Java 服务架构中,常见的两类诉求往往是冲突的: 高性能、可控的网络层... - [tio-boot + Quarkus + Hibernate ORM Panache](https://tio-boot.com/zh/40_quarkus/02.html): tio-boot + Quarkus + Hibernate ORM Panache 1. 设计目标回顾 tio-boot 唯一对外 HTTP/网络入口 管端口、路由、handler、协议 Quarkus 只做后台运行时容器 提供 CDI(Arc)、事务(@Transactional)、ORM(Hibernate + Panache)、数据源/连接池 ... - [tio-boot + Quarkus + Hibernate ORM Panache + jOOQ 整合方案](https://tio-boot.com/zh/40_quarkus/03.html): tio-boot + Quarkus + Hibernate ORM Panache + jOOQ 整合方案 1. 架构目标升级 在既有设计中: tio-boot 唯一对外 HTTP / 网络入口,负责端口、协议、路由与 handler。 Quarkus 仅作为后台运行时容器,提供: CDI(Arc) 事务(JTA / @Transactional) ... - [41_postgresql](https://tio-boot.com/zh/41_postgresql/): 41_postgresql 本目录包含 13 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《PostgreSQL 安装》。 : 文档《PostgreSQL 主键自增》。 : 文档《PostgreSQL 日期类型》。 : 文档《Postgresql 金融类型》。 : 文档《Pos... - [PostgreSQL 安装](https://tio-boot.com/zh/41_postgresql/01.html): PostgreSQL 安装 docker 安装 本文档将指导您如何在单机环境下使用 Docker 安装 PostgreSQL 数据库。我们将涵盖从初始安装到数据持久化的整个过程。 环境准备 确保您的系统已安装 Docker。如果尚未安装,请参考 Docker 官方文档 进行安装。 步骤一:使用 Docker 运行 PostgreSQL 容器 首先,使用... - [PostgreSQL 主键自增](https://tio-boot.com/zh/41_postgresql/02.html): PostgreSQL 主键自增 PostgreSQL 提供了一种便捷的方式来创建自增列,这在需要为每一行生成唯一标识符时非常有用。本教程将介绍如何在 PostgreSQL 中使用自增列,并结合 Java 代码示例说明其实际应用。 1. 在 PostgreSQL 中创建带有自增列的表 在 PostgreSQL 中,我们可以使用SERIAL数据类型来创建自... - [PostgreSQL 日期类型](https://tio-boot.com/zh/41_postgresql/03.html): PostgreSQL 日期类型 在现代 Web 应用开发中,正确处理日期和时间,尤其是涉及不同时区的场景,是一个至关重要的环节。本文将以 PostgreSQL 的 TIMESTAMP WITH TIME ZONE 类型为核心,详细介绍如何在 Java 后端以及前后端数据交互中进行高效、准确的处理。 1. 核心概念:数据库中的时间存储 在开始之前,我们首... - [Postgresql 金融类型](https://tio-boot.com/zh/41_postgresql/04.html): Postgresql 金融类型 在金融系统中,PostgreSQL 通常使用 numeric 类型来存储高精度的数值数据,而在 Java 中推荐使用 java.math.BigDecimal 类来处理这类数据。本文将以一个具体的示例说明如何将 Java 中接收到的字符串 "20" 转换为 BigDecimal 对象,并存储到数据库中字段类型为 nume... - [PostgreSQL 数组类型](https://tio-boot.com/zh/41_postgresql/05.html): PostgreSQL 数组类型 基础数据类型数组 在数据模型设计中,经常会遇到需要存储数组字段的需求,尤其是在 PostgreSQL 数据库中。本文将以 java-db 框架为例,详细介绍如何支持对 PostgreSQL bigint[]、varchar[] 和 int[] 等数组字段的读写操作。示例将基于 java-db 的自动生成的实体类,具体实现... - [索引](https://tio-boot.com/zh/41_postgresql/06.html): 索引 单列索引索引和聚合索引 本文以 mv_scene_code 表为例,围绕以下几类查询,说明 PostgreSQL 对索引的使用方式,以及如何设计更合理的索引。 一、仅创建 group_id 单列索引的情况 索引定义 查询行为分析 1. 查询仅包含 group_id PostgreSQL 会使用该单列索引 可以通过索引快速定位满足条件的行 对于等值... - [PostgreSQL 查询优化](https://tio-boot.com/zh/41_postgresql/07.html): PostgreSQL 查询优化 在面对大数据量(如 rumi_rmp_rating 表中的 1 千万 条记录)时,分区表是一种有效的优化手段。本文将详细探讨在将表转换为分区表后,查询和插入操作的变化,以及如何利用分区表进行优化。 一、索引 原始查询示例: 在未优化前,此查询耗时约 19 秒。通过在 teacher_id 列上创建索引: 查询时间可缩短至... - [获取字段类型](https://tio-boot.com/zh/41_postgresql/08.html): 获取字段类型 本文档主要介绍如何通过 Java 调用获取数据库字段类型的方法,以及该方法的实现原理和使用 PostgreSQL 获取表结构信息的完整流程。 示例代码说明 以下示例代码展示了如何调用 ApiTable.getFieldType 方法获取 website_page_params 表中 page_cost 字段的类型。代码中首先加载环境变量,... - [PostgreSQL 全文检索](https://tio-boot.com/zh/41_postgresql/09.html): PostgreSQL 全文检索 在处理涉及大量文本数据的应用时,快速且精确的全文检索变得至关重要。本文将引导如何在 PostgreSQL 中对 title、organization、description 和 location 字段进行全文检索,并通过索引提高检索性能。 pgvector 插件 pgvector 是一个用于 PostgreSQL 的扩展... - [PostgreSQL 向量](https://tio-boot.com/zh/41_postgresql/10.html): PostgreSQL 向量 余弦相似度与余弦距离 什么是余弦相似度 余弦相似度用于衡量两个向量之间的相似程度。具体来说: 余弦相似度为 1:表示两个向量完全相同。 余弦相似度为 0:表示两个向量正交(没有相似性)。 余弦相似度为 -1:表示两个向量完全相反。 注意:在 pgvector 扩展中,运算符 <=> 实际上计算的是余弦距离,定义为 [ \te... - [PostgreSQL 优化向量查询](https://tio-boot.com/zh/41_postgresql/11.html): PostgreSQL 优化向量查询 本文档介绍了如何通过预先存储向量到数据表中来优化向量查询操作。我们将对比旧的查询方式与优化后的新查询方式,并详细解释新 SQL 的优化点,以及如何在代码中利用这些优化。 一、背景介绍 在原始场景中,需要对大规模文本数据进行向量相似度查询。传统方法是将输入向量直接嵌入到 SQL 查询中进行逐行比较,这会导致以下问题: ... - [PostgreSQL 其他](https://tio-boot.com/zh/41_postgresql/12.html): PostgreSQL 其他 Postgres 在某些地方不同于 mysql,所有这里加以说明 RETURN_GENERATED_KEYS UUID 问题描述 数据的库的主键是类型是 UUID,当向数据库添加记录时,数据库会自动生成主键,如何获取生成的主键呢? ApiTable 会自动返回数据库主键的的这,只不过返回主键的有些特殊 我们保存一条记录测试一... - [42_mysql](https://tio-boot.com/zh/42_mysql/): 42_mysql 本目录包含 3 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 Docker 运行 MySQL》。 : 文档《常见问题》。 - [使用 Docker 运行 MySQL](https://tio-boot.com/zh/42_mysql/01.html): 使用 Docker 运行 MySQL 本文档将介绍如何使用 Docker 运行不同版本的 MySQL 容器,包括 MySQL 5.7 和 MySQL 8.x。我们将涵盖基本的运行命令、目录映射配置以及常见问题的解决方法。 MySQL 5.7 1.1 使用 Docker 运行 MySQL 5.7 运行以下命令以启动 MySQL 5.7 容器: 1.2 目... - [常见问题](https://tio-boot.com/zh/42_mysql/02.html): 常见问题 JSON MySQL 8.0.16 JSON 字段键顺序问题 问题描述 在使用 MySQL 8.0.16 版本时,向 JSON 类型的字段插入 JSON 字符串后,发现存储后的 JSON 键顺序与插入前不一致。例如: 创建语句: 查询后的 JSON: 原因分析 MySQL 版本限制: MySQL 8.0.16 是 MySQL 8.0 系列的早... - [43_oceanbase](https://tio-boot.com/zh/43_oceanbase/): 43_oceanbase 本目录包含 6 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《快速体验 OceanBase 社区版》。 : 文档《快速上手 OceanBase 数据库单机部署与管理》。 : 文档《诊断集群性能》。 : 文档《优化 SQL 性能指南》。 : 文档《待定》。 - [快速体验 OceanBase 社区版](https://tio-boot.com/zh/43_oceanbase/01.html): 快速体验 OceanBase 社区版 1. 背景信息 OceanBase 是由蚂蚁集团开发的一款高性能、高可用、分布式关系数据库。自 V4.0.0 版本起,OceanBase 提供了统一的安装包(All-in-One Package),用户可以通过该安装包一次性完成 obd、OceanBase 数据库、ODP、OBAgent、Grafana、Prome... - [快速上手 OceanBase 数据库单机部署与管理](https://tio-boot.com/zh/43_oceanbase/02.html): 快速上手 OceanBase 数据库单机部署与管理 本文档详细介绍了如何快速部署 OceanBase 单机版集群、查看集群基本信息、创建租户、创建数据库和用户,以及如何连接 OceanBase 集群。通过本指南,即使是初学者也能快速上手 OceanBase 数据库的各项操作。 部署单机版 OceanBase 集群 1. 部署集群环境 登录 ECS 主机... - [诊断集群性能](https://tio-boot.com/zh/43_oceanbase/03.html): 诊断集群性能 在进行数据库集群性能诊断时,可以采用多种方法来监控和分析系统状态。可以使用白屏监控工具如 OCP_Express 或 Prometheus 进行可视化监控,也可以通过直接运行 SQL 命令(黑屏操作)来获取实时性能数据。本文档将详细介绍如何通过 SQL 命令获取和分析 OceanBase 集群的性能指标,涵盖 CPU、内存、IO、磁盘等方... - [优化 SQL 性能指南](https://tio-boot.com/zh/43_oceanbase/04.html): 优化 SQL 性能指南 本指南介绍了如何在 OceanBase 环境下定位与优化 SQL 性能问题。通过使用 SQL 查询定位资源消耗较高的语句、分析执行计划以及针对性地优化 SQL,可以显著提升系统性能。以下内容涵盖了从登录集群、定位 Top SQL,到获取执行计划、分析执行瓶颈,再到最终的 SQL 改写和优化过程的完整步骤和案例分析。 一、前提准备... - [待定](https://tio-boot.com/zh/43_oceanbase/05.html): 待定 - [49_jooq](https://tio-boot.com/zh/49_jooq/): 49_jooq 本目录包含 14 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用配置类方式整合 jOOQ》。 : 文档《tio-boot + jOOQ 事务管理》。 : 文档《批量操作与性能优化》。 : 文档《整合agroal》。 : 文档《代码生成与类型安全》。 : 文档... - [使用配置类方式整合 jOOQ](https://tio-boot.com/zh/49_jooq/01.html): 使用配置类方式整合 jOOQ 在本教程中,我们将演示如何在 tio-boot 项目中,以纯 Java 配置类的方式整合 jOOQ,实现: 不使用 XML 不使用代码生成插件(可选) 使用 DSLContext 进行类型安全 SQL 通过 AOP 自动注入 jOOQ 核心对象 与 tio-boot 生命周期完美整合 通过本文,不仅能学会 怎么做,还能理解... - [tio-boot + jOOQ 事务管理](https://tio-boot.com/zh/49_jooq/02.html): tio-boot + jOOQ 事务管理 本文将基于已经完成的 tio-boot + jOOQ(纯配置类方式、AOP 注入 DSLContext) 的整合方案,继续讲清楚在该架构下如何实现 事务管理。 目标是做到: 以 纯 Java 方式 管理事务 不依赖 Spring,不引入额外框架 支持手动事务、AOP 事务两种写法 明确事务边界,避免连接泄漏与隐... - [批量操作与性能优化](https://tio-boot.com/zh/49_jooq/03.html): 批量操作与性能优化 在现代 Web 系统中,数据库往往是性能瓶颈,而批量操作(Batch) 是最直接、最有效的优化手段之一。 本文将在已经完成: tio-boot + jOOQ 整合 AOP 注入 DSLContext 手动 / AOP 事务管理 的基础上,深入讲解: 如何使用 jOOQ 进行高性能批量操作 如何避免常见性能陷阱 如何提升 Postgr... - [整合agroal](https://tio-boot.com/zh/49_jooq/04.html): 整合agroal 本文介绍如何在 tio-boot 项目中使用 Agroal 连接池 作为数据源,并与 jOOQ 集成,同时提供事务管理能力。 该方案具有以下特点: 无 Spring 依赖 程序化配置(对 AOT / Native 更友好) 启动路径清晰 易于控制生命周期 性能稳定 适用于: 高性能 REST / RPC 服务 AOT / GraalV... - [代码生成与类型安全](https://tio-boot.com/zh/49_jooq/05.html): 代码生成与类型安全 在前两篇中,我们已经完成了: tio-boot + jOOQ 纯配置类整合(DSLContext 注入) 事务管理 批量操作与性能优化 但目前的 SQL 仍然是这种写法: 这类字符串方式虽然可用,但它的缺点也很明显: 字段名写错只能运行时报错 重构改字段/表名时无法自动修复 IDE 无法提供真正可靠的自动补全 大项目里容易“潜伏 b... - [基于 Record / POJO 增删改查](https://tio-boot.com/zh/49_jooq/06.html): 基于 Record / POJO 增删改查 在前几篇中,我们已经完成了: tio-boot + jOOQ 纯配置类整合 事务管理 Agroal / Druid 数据源整合 jOOQ Codegen 强类型升级 到这里,整个基础设施已经齐备。 接下来真正进入日常开发的核心环节: 如何基于 jOOQ 生成的 Table / Record / POJO,写出... - [UPSERT、批量更新、返回主键与高级 SQL](https://tio-boot.com/zh/49_jooq/07.html): UPSERT、批量更新、返回主键与高级 SQL 在前几篇中,我们已经完成了: tio-boot + jOOQ 纯配置类整合 事务管理 Agroal / Druid 数据源整合 jOOQ Codegen 强类型升级 基于 Record / POJO 的增删改查、分页、动态条件、批量插入 到这里,已经可以覆盖大多数常规 CRUD 场景。 但在真实项目中,还... - [的多表关联查询、DTO 投影、聚合统计与视图封装](https://tio-boot.com/zh/49_jooq/08.html): 的多表关联查询、DTO 投影、聚合统计与视图封装 在前几篇中,我们已经逐步完成了: tio-boot + jOOQ 基础整合 事务管理 连接池整合 Codegen 类型安全 Record / POJO CRUD 批量操作、分页、动态 SQL PostgreSQL UPSERT 与 returning 到这里,已经具备完整的 单表数据访问能力。 但在真实... - [的窗口函数、CTE、JSON 查询与 PostgreSQL 高级 SQL 实战](https://tio-boot.com/zh/49_jooq/09.html): 的窗口函数、CTE、JSON 查询与 PostgreSQL 高级 SQL 实战 在前几篇中,我们已经逐步完成了: tio-boot + jOOQ 基础整合 事务管理 连接池整合 Codegen 类型安全 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表关联查询、DTO 投影、聚... - [tio-boot + jOOQ 的审计字段、乐观锁、数据权限与企业级 Repository 设计](https://tio-boot.com/zh/49_jooq/10.html): 下面直接续写下一篇,延续前文风格,作为可直接发布的教程稿。 tio-boot + jOOQ 的审计字段、乐观锁、数据权限与企业级 Repository 设计 在前几篇中,我们已经逐步完成了: tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQ... - [测试策略、SQL 日志、性能诊断与生产排障](https://tio-boot.com/zh/49_jooq/11.html): 测试策略、SQL 日志、性能诊断与生产排障 在前几篇中,我们已经逐步完成了: tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 Post... - [多租户、读写分离与多数据源设计](https://tio-boot.com/zh/49_jooq/12.html): 多租户、读写分离与多数据源设计 在前几篇中,我们已经逐步完成了: tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 PostgreSQL... - [代码生成治理、数据库迁移与团队协作规范实战](https://tio-boot.com/zh/49_jooq/13.html): 代码生成治理、数据库迁移与团队协作规范实战 在前几篇中,我们已经逐步完成了: tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 Post... - [50_media](https://tio-boot.com/zh/50_media/): 50_media 本目录包含 4 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《JAVE 提取视频中的声音》。 : 文档《Jave 提取视频中的图片》。 : 文档《待定》。 - [JAVE 提取视频中的声音](https://tio-boot.com/zh/50_media/01.html): JAVE 提取视频中的声音 1. JAVE 简介 JAVE(Java Audio Video Encoder)是一个开源的 Java 库,专门用于处理多媒体文件的编码和解码操作。JAVE 支持多种格式的音频和视频文件,提供了诸如格式转换、音频提取、视频帧截取等常见的多媒体处理功能。JAVE 底层通过封装 FFmpeg 实现多媒体处理,因此能够执行多种复... - [Jave 提取视频中的图片](https://tio-boot.com/zh/50_media/02.html): Jave 提取视频中的图片 本文档介绍如何使用 JAVE 库内置的 FFmpeg 功能来从视频中提取图片,并通过控制器将其整合到 Web 应用中。 使用 FFmpeg 命令提取图片 获取 FFmpeg 命令路径 JAVE 库内置了一个 DefaultFFMPEGLocator 类,该类在实例化时会将 FFmpeg 可执行文件复制到系统的临时文件夹中。通... - [待定](https://tio-boot.com/zh/50_media/03.html): 待定 - [51_asr](https://tio-boot.com/zh/51_asr/): 51_asr 本目录包含 2 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Whisper-JNI》。 - [Whisper-JNI](https://tio-boot.com/zh/51_asr/01.html): Whisper-JNI 简介 Whisper 是 OpenAI 开发的一个基于 Transformer 的语音识别模型,能够处理多种语言并生成高度准确的语音到文本转录。该模型最初是基于 Python 和机器学习框架(如 PyTorch)构建的,因此开发者必须依赖 Python 和相应的库来进行语音识别任务。 Whisper OpenAI 开源了 Whi... - [52_tts](https://tio-boot.com/zh/52_tts/): 52_tts 本目录包含 1 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 - [53_ocr](https://tio-boot.com/zh/53_ocr/): 53_ocr 本目录包含 1 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 - [54_native-media](https://tio-boot.com/zh/54_native-media/): 54_native-media 本目录包含 24 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《java-native-media》。 : 文档《JNI 入门示例》。 : 文档《mp3 拆分》。 : 文档《mp4 转 mp3》。 : 文档《使用 libmp3lame 实现高质量... - [java-native-media](https://tio-boot.com/zh/54_native-media/01.html): java-native-media 音视频处理优化库 项目背景 在传统的 Java 音视频处理方案中,开发者通常依赖调用 FFmpeg 命令行工具来实现音视频处理需求。但这种方式存在两个主要痛点: 性能损耗 调用外部进程会带来额外的进程间通信开销,从而影响整体处理效率。 包体积膨胀 为了功能完整性,往往需要捆绑 FFmpeg 二进制文件,导致最终应用包... - [JNI 入门示例](https://tio-boot.com/zh/54_native-media/02.html): JNI 入门示例 在开发 Android 或 Java 项目时,为了复用现有的 C/C++ 代码,我们通常会使用 C/C++ 开发一部分核心功能。JNI(Java Native Interface)作为 JVM 与 C/C++ 代码交互的桥梁,提供了这种跨语言调用能力。本文以一个简单的 “Hello JNI” 示例为例,讲解如何搭建环境、生成 JNI ... - [mp3 拆分](https://tio-boot.com/zh/54_native-media/03.html): mp3 拆分 1. 项目背景与需求分析 目标: 将一个大的 MP3 文件按用户指定的大小拆分为多个小文件。拆分后,每个文件必须满足以下条件: 拆分点处不能破坏 MP3 帧结构; 每个拆分文件均为有效的 MP3 文件,可供语音识别模型处理; 返回拆分后文件的路径(以字符串数组形式返回给 Java 层)。 关键问题: MP3 帧结构: MP3 文件由一系列... - [mp4 转 mp3](https://tio-boot.com/zh/54_native-media/04.html): mp4 转 mp3 1. 安装 ffmpeg mp4 转 mp3 的过程中会遇到下面的库 libavformat、libavcodec、libswresample、libavutil ,需要安装 ffmpeg,使用 vcpkg 安装 ffmpeg 的方法如下 Alt text 2、原理说明 FFmpeg 解码/编码流程 通过 avformat_open... - [使用 libmp3lame 实现高质量 MP3 编码](https://tio-boot.com/zh/54_native-media/05.html): 使用 libmp3lame 实现高质量 MP3 编码 在 Windows 平台上,内置的 MP3 编码器(ACM Wrapper MFT)质量有限,很多开发者希望借助 libmp3lame 这一高质量开源 MP3 编码器实现更好的音频转换效果。本文介绍如何通过 vcpkg 安装支持 libmp3lame 的 FFmpeg、修改 CMake 构建脚本、调... - [Linux 编译](https://tio-boot.com/zh/54_native-media/06.html): Linux 编译 本项目使用 FFmpeg(avcodec、avformat、swresample、avutil 等)和 mp3lame 进行音视频处理,同时使用 JNI 与 Java 交互。由于不同操作系统(Linux 与 Windows)的库查找、加载机制不同,本文档提供了两套配置方式,并解释相关原因和注意事项。 1. 安装依赖库 在 Linux ... - [macOS 编译](https://tio-boot.com/zh/54_native-media/07.html): macOS 编译 在 macOS M2 上编译使用 FFmpeg 与 JNI 的项目,您可以按照以下步骤进行配置和构建: 1. 准备工作 1. 是否需要使用 vcpkg? 不一定 在 macOS 上,推荐使用 Homebrew 来安装 FFmpeg、lame 等依赖,因为 Homebrew 在 macOS 平台具有更高的普及率和维护性。 可选方案 如果... - [从 JAR 包中加载本地库文件](https://tio-boot.com/zh/54_native-media/08.html): 从 JAR 包中加载本地库文件 在跨平台 Java 项目中,往往需要使用 JNI 调用本地(C/C++)代码。本方案介绍如何将 native media 编译后的各平台动态库(如 Windows 的 DLL、Linux 的 .so、macOS 的 .dylib)打包到 JAR 内部,并在运行时通过工具类将这些库文件提取到用户目录下加载。这样既便于统一管... - [支持的音频和视频格式](https://tio-boot.com/zh/54_native-media/09.html): 支持的音频和视频格式 java 支持的格式 整理后的输出如下 C 语言代码实现 - [任意格式转为 mp3](https://tio-boot.com/zh/54_native-media/10.html): 任意格式转为 mp3 java 测试代码 c 语言实现 audio_file_utils.h audio_file_utils.c jni_native_mp3.c native_mp3.c - [通用格式转换](https://tio-boot.com/zh/54_native-media/11.html): 通用格式转换 该功能利用 FFmpeg 实现音频格式转换,通过调用本地 DLL 中的 NativeMedia.convertTo 方法,将输入文件转换为指定目标格式。 使用示例 在上面的示例中,"libmp3lame" 表示使用 libmp3lame 编码器进行转换,最终输出文件将使用 MP3 容器格式。 targetFormat 参数支持的取值 ta... - [通用格式拆分](https://tio-boot.com/zh/54_native-media/12.html): 通用格式拆分 该功能利用 FFmpeg 强大的多媒体处理能力,实现对音频、视频等多种格式文件的自动拆分。通过调用本地库中的 NativeMedia.split 方法,可以根据指定的文件大小阈值将一个多媒体文件分割成若干个连续的小文件,而无需重新编码,确保原始编码参数不变,从而实现高效、无损的拆分操作。 功能简介 多格式支持:支持 FFmpeg 支持的所... - [视频合并](https://tio-boot.com/zh/54_native-media/13.html): 视频合并 本方案的主要思路是调用 FFmpeg 的开发库,在 C 层实现“流复制(stream copy)”模式下的多个视频和音频文件的合并操作,并通过 JNI 供 Java 层调用。视频和音频合并过程中针对不同输入文件时长不一致的问题,采用了统一全局时间轴(global offset)的策略,确保合并后各个媒体流在播放时不会出现音视频不同步或音频播放... - [VideoToHLS](https://tio-boot.com/zh/54_native-media/14.html): VideoToHLS 流程 使用 native‑media 库将指定的 MP4 文件转换为 HLS 分段,分段时长为 segmentDuration 秒。 生成的 TS 分段文件将存放在与 hlsPath 相同的目录下(文件名按照 tsPattern 命名,例如 "segment_%03d.ts")。 将生成的 m3u8 片段添加到 hlsPath 指... - [split_video_to_hls 支持其他语言](https://tio-boot.com/zh/54_native-media/15.html): split_video_to_hls 支持其他语言 native_media.h pure_video_to_hls.c 修改 native_video_to_hls.c - [持久化 HLS 会话](https://tio-boot.com/zh/54_native-media/16.html): 持久化 HLS 会话 本项目通过 JNI 封装 FFmpeg 库,实现了一个持久化 HLS 会话模块。该模块支持如下功能: 初始化持久化 HLS 会话 创建 HLS 输出上下文,并保存参数选项,同时记录会话的创建时间。该接口返回一个 native 指针,用于后续追加视频分段或关闭会话。 追加视频分段 根据输入的 MP4 文件,追加视频(和音频)分段到持... - [获取视频长度](https://tio-boot.com/zh/54_native-media/17.html): 获取视频长度 Java C jni_video_length.c - [保存视频的最后一帧](https://tio-boot.com/zh/54_native-media/18.html): 保存视频的最后一帧 背景介绍 在视频处理领域,经常会遇到这样的需求: 生成视频缩略图:常常取第一帧或最后一帧作为预览图; 分析视频结尾内容:比如广告检测、结尾画面识别; 封面生成:保存最后一帧作为视频的封面图。 Java 生态中并没有现成的高性能库直接完成此任务,因此我们需要借助 FFmpeg(功能最强大的开源音视频处理库)来获取视频的最后一帧。 为了... - [添加水印](https://tio-boot.com/zh/54_native-media/19.html): 添加水印 添加 avfilter 按如下步骤修改的 CMakeLists.txt: 查找 avfilter 的头文件路径 添加: 查找 avfilter 的库文件 添加: 将 avfilter 的 include 目录添加到 include_directories() 修改 include_directories 部分: 在 target_link_l... - [linux版本](https://tio-boot.com/zh/54_native-media/20.html): linux版本 项目源码: https://github.com/litongjava/java-native-media 一、问题现象 应用启动时报错: 二、问题根因 1)应用内置的 native 库依赖 FFmpeg 59 检查 .so 依赖: 输出: 说明该库是 按 FFmpeg 5.x (ABI 59) 编译的 2)服务器实际安装的是 FFmp... - [55_cv](https://tio-boot.com/zh/55_cv/): 55_cv 本目录包含 11 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 Java 运行 YOLOv8 ONNX 模型进行目标检测》。 : 文档《tio-boot整合yolo》。 : 文档《ONNX Runtime 推理说明》。 : 文档《Paddle Structur... - [使用 Java 运行 YOLOv8 ONNX 模型进行目标检测](https://tio-boot.com/zh/55_cv/01.html): 使用 Java 运行 YOLOv8 ONNX 模型进行目标检测 本文是一篇完整的入门文档。目标是让初学者能够理解项目结构、组件职责、关键实现细节,以及如何运行和调试。 1. 概览与目标 本示例展示如何使用 Java(OpenCV + ONNX Runtime)对 YOLOv8 ONNX 模型做单张或批量图片的目标检测。实现流程为: 读取图片并转换为 R... - [tio-boot整合yolo](https://tio-boot.com/zh/55_cv/02.html): tio-boot整合yolo 下面是一篇从零开始给初学者看的完整使用文档。 目标:让把 tio-boot + ONNX Runtime + YOLOv8 跑起来,并通过 HTTP 上传图片得到检测结果。 一、项目介绍 这是一个基于 Java 的目标检测服务: 技术栈: 最终效果: 客户端上传图片 → 服务器检测 → 返回 JSON 识别框 二、最终接口... - [ONNX Runtime 推理说明](https://tio-boot.com/zh/55_cv/03.html): ONNX Runtime 推理说明 1. 为什么使用 ONNX Runtime 在训练阶段,目标检测模型通常使用 PyTorch / Ultralytics YOLOv8 完成。 但在生产环境(Java 服务端、Android 等)无法直接运行 Python 推理,因此需要: 将训练好的模型导出为 ONNX → 使用 ONNX Runtime 执行推理... - [Paddle Structure](https://tio-boot.com/zh/55_cv/04.html): Paddle Structure 一、背景与目标 下载模型 https://www.paddleocr.ai/latest/version3.x/pipeline_usage/PP-StructureV3.html#1-pp-structurev3 目标是将 PaddleOCR 中的文档布局分析模型: PP-DocLayout_plus-L 从 Pad... - [tio-boot 整合 Paddle Structure](https://tio-boot.com/zh/55_cv/05.html): tio-boot 整合 Paddle Structure 一、依赖 确保下面这些依赖: 、实体类 1、DetectionResult 如果你项目里已经有这个类,把 setBbox 修好即可。 2、PreprocessResult 三、PP-DocLayout 服务类 默认模型目录通过 EnvUtils.get("pp.doclayout.model_d... - [tio-boot整合Paddle Structure 提取图片](https://tio-boot.com/zh/55_cv/06.html): tio-boot整合Paddle Structure 提取图片 新建实体类 - [U2Net 图片去背景原理](https://tio-boot.com/zh/55_cv/07.html): U2Net 图片去背景原理 本文介绍 U2Net 用于图片去背景的基本原理,帮助理解后续 Java + ONNX Runtime 服务中的预处理、推理、mask 后处理和 PNG alpha 合成。 一、去背景本质 图片去背景不是简单地按颜色删除背景。真实图片中,主体和背景可能有相近颜色,例如: 白衣服和白墙 黑色头发和暗背景 商品阴影和桌面 半透明玻... - [tio-boot 整合 U2Net 实现图片去背景](https://tio-boot.com/zh/55_cv/08.html): tio-boot 整合 U2Net 实现图片去背景 本文介绍如何使用 tio-boot + ONNX Runtime + U2Net 搭建一个 Java 版图片去背景 HTTP 服务。接口行为兼容常见的 rembg HTTP 上传方式: 响应直接返回透明背景 PNG: 一、功能说明 U2Net 是一种图像显著性目标分割模型。它不是按颜色简单删除背景,而... - [58_telegram4j](https://tio-boot.com/zh/58_telegram4j/): 58_telegram4j 本目录包含 23 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《数据库设计》。 : 文档《基于 HTTP 协议开发 Telegram 翻译机器人》。 : 文档《基于 MTProto 协议开发 Telegram 翻译机器人》。 : 文档《过滤旧消息》。... - [数据库设计](https://tio-boot.com/zh/58_telegram4j/01.html): 数据库设计 本章节介绍如何使用 tio-boot+大模型+telegram 开发一个翻译机器人,本节仅仅仅仅介绍数据库部分 openai 前往 openai 申请 key 过程略 telegram 创建 telegram 机器人 过程略 数据库 数据表设计 max_kb_sentence_tanslate_cache - [基于 HTTP 协议开发 Telegram 翻译机器人](https://tio-boot.com/zh/58_telegram4j/02.html): 基于 HTTP 协议开发 Telegram 翻译机器人 本文档旨在指导开发者如何使用 HTTP 协议开发一个具有翻译功能的 Telegram 机器人。文中详细描述了机器人的创建、Webhook 配置、翻译提示词编写、翻译服务的实现以及 Tio Boot 与 Telegram Bot 的整合,同时附有完整的 Java 代码示例,便于开发者参考与实践。 1... - [基于 MTProto 协议开发 Telegram 翻译机器人](https://tio-boot.com/zh/58_telegram4j/03.html): 基于 MTProto 协议开发 Telegram 翻译机器人 本文档旨在指导开发者使用 MTProto 协议开发一个具备翻译功能的 Telegram 机器人。通过配置 Telegram 应用、添加必要的依赖项,并结合提供的 Java 代码示例,您可以实现一个高效且功能丰富的翻译机器人。 简介 Telegram 机器人是一种基于 Telegram 平台的... - [过滤旧消息](https://tio-boot.com/zh/58_telegram4j/04.html): 过滤旧消息 在开发 Telegram 机器人时,机器人上线后可能会接收到大量旧消息。为了提升性能和用户体验,过滤这些旧消息是非常必要的。本文将详细介绍如何通过分析消息结构和实现代码来过滤机器人自身发送的旧消息。 问题描述 当 Telegram 机器人启动后,它可能会接收到大量历史消息。这些旧消息不仅会占用资源,还可能导致不必要的处理。因此,如何有效地过... - [保存机器人消息](https://tio-boot.com/zh/58_telegram4j/05.html): 保存机器人消息 引言 在开发 Telegram 机器人时,经常需要对接收到的消息进行存储和处理,以便于后续的分析和响应。为了高效地实现这一需求,我们需要深入理解消息的数据结构,提取关键信息,并设计合理的数据库表结构。本文将详细介绍如何从 SendMessageEvent 中提取必要的数据,设计数据库表,并实现消息的存储。 1. SendMessageE... - [定时推送](https://tio-boot.com/zh/58_telegram4j/06.html): 定时推送 在本节中,我们将指导您如何为 Telegram 翻译机器人添加定时推送功能。具体包括创建一个 Telegram 群组,并配置机器人定时向该群组推送指定的文章。通过这种方式,您可以实现定期分享内容,提高群组的活跃度和用户参与度。 步骤概述 创建一个 Telegram 群组 配置机器人加入群组 实现定时推送功能 测试与验证 步骤详解 1. 创建一... - [增加命令菜单](https://tio-boot.com/zh/58_telegram4j/07.html): 增加命令菜单 引言 本文档旨在指导开发者如何为 Telegram 机器人添加命令菜单,以提升用户交互体验。通过详细的代码示例和解释,读者将学习如何使用 BotFather 或通过编程方式动态管理机器人命令菜单。本文还介绍了如何过滤命令消息以及封装路由,以实现更灵活和可维护的机器人功能。 增加命令菜单 为机器人增加命令菜单有两种主要方式: 通过 BotF... - [使用 telegram-Client](https://tio-boot.com/zh/58_telegram4j/08.html): 使用 telegram-Client telegram-client 是基于 telegram4j-core 开发的库,旨在简化 Telegram 消息的处理。本文将介绍如何使用 telegram-client 来处理消息和命令,包括依赖配置、事件适配器、命令处理以及客户端配置等内容。 添加依赖 首先,在项目的 pom.xml 文件中添加 telegr... - [使用自定义 StoreLayout](https://tio-boot.com/zh/58_telegram4j/09.html): 使用自定义 StoreLayout 本指南详细介绍了如何通过使用自定义 StoreLayout 将 Telegram 频道的基本信息和详细信息存储到数据库中。通过此方法,可以减少对 Telegram 服务端的频繁调用,提高数据访问的效率和响应速度。 ChannelInfo 数据 ChannelInfo 主要包含两个核心属性: min:类型为 Immut... - [延迟测试](https://tio-boot.com/zh/58_telegram4j/10.html): 延迟测试 本文档详细介绍了一个用于测试服务器与 Telegram 服务器之间延迟的功能实现。该功能通过 Telegram 机器人发送消息并测量响应时间,以评估网络延迟情况。 功能概述 该功能通过 Telegram 机器人执行以下步骤: 发送初始消息:机器人向用户发送一条内容为 "Wait a second..." 的消息,提示用户等待。 编辑消息内容:... - [Reactor 错误处理](https://tio-boot.com/zh/58_telegram4j/11.html): Reactor 错误处理 在使用 Reactor 框架开发响应式应用时,错误处理是一个关键的环节。Reactor 提供了多种机制来捕获和处理操作符抛出的异常,包括全局钩子(Hooks)和局部钩子(Context)。本文将通过示例代码详细介绍如何实现和注册错误处理钩子,并解释实际运行时的日志输出。 引言 在响应式编程中,错误处理不仅仅是捕获异常,还涉及到... - [Telegram4J 常见错误处理指南](https://tio-boot.com/zh/58_telegram4j/12.html): Telegram4J 常见错误处理指南 在使用 Telegram4J 库与 Telegram 服务器进行交互时,开发者可能会遇到一些常见错误和警告。本文将详细分析这些问题的原因,并提供相应的解决方案,帮助您优化应用的稳定性和性能。 1. 处理 telegram4j.mtproto.RpcException: channels.getFullChanne... - [处理回调查询](https://tio-boot.com/zh/58_telegram4j/13.html): 处理回调查询 - [Reactor](https://tio-boot.com/zh/58_telegram4j/14.html): Reactor Reactor 是一个基于 Reactive Streams 规范的响应式编程库,广泛应用于 JVM 生态系统中(如 Spring WebFlux)。它提供了强大的工具来处理异步数据流和事件驱动的编程模型,帮助开发者构建高效、可扩展和弹性的应用程序。 Reactor 的核心概念 Publisher(发布者): 负责生产数据并将其发布给订... - [文档翻译](https://tio-boot.com/zh/58_telegram4j/16.html): 文档翻译 image_to_text_prompt_en.txt image_to_text_prompt.txt - [使用 Tio-Boot 整合 tdlight](https://tio-boot.com/zh/58_telegram4j/17.html): 使用 Tio-Boot 整合 tdlight 本文将详细介绍如何使用 Tio-Boot 框架整合 Telegram Bots。通过本文,您将学习如何配置项目依赖、设置必要的配置文件、编写核心代码以及进行测试。 简介 Tio-Boot 是一个基于 Java 的高性能网络框架,适用于快速构建各种网络应用。本文将指导您如何将 Telegram Bot 集成到... - [tio-boot 整合 TelegramBots](https://tio-boot.com/zh/58_telegram4j/18.html): tio-boot 整合 TelegramBots 本文档旨在指导开发者如何将 tio-boot 框架与 TelegramBots 库进行整合,采用 长轮询(Long Polling) 模式实现 Telegram Bot 的消息处理。通过本文,您将了解长轮询模式的基本原理,并通过一个简单的示例项目,掌握如何配置和运行一个基本的 Telegram Bot。... - [tio-boot 整合 Telegram-Bot-Utils](https://tio-boot.com/zh/58_telegram4j/19.html): tio-boot 整合 Telegram-Bot-Utils telegram-bot-utils 内置了 TelegramBots 依赖,使得构建 Telegram 机器人更加便捷。本篇文档将指导您如何使用 tio-boot 框架与 TelegramBots 库,创建一个简单的“回音机”功能的 Telegram 机器人。 telegram-bot-u... - [Telegram-Bot-Utils 使用指南](https://tio-boot.com/zh/58_telegram4j/20.html): Telegram-Bot-Utils 使用指南 Telegram-Bot-Utils 提供了丰富的工具类,本文将介绍其中的系列工具类的使用方法 - [59_telegram-bots](https://tio-boot.com/zh/59_telegram-bots/): 59_telegram-bots 本目录包含 5 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《TelegramBots 入门指南》。 : 文档《使用工具库 telegram-bot-base 开发翻译机器人》。 image-1.png: 图片资源,用于本目录文档配图或界面示意... - [TelegramBots 入门指南](https://tio-boot.com/zh/59_telegram-bots/01.html): TelegramBots 入门指南 本文档详细介绍了如何使用 TelegramBots 库实现长轮询模式,进而接收和处理 Telegram Bot 发送的各种类型消息。内容涵盖了长轮询模式的工作原理、环境配置、核心代码实现示例以及 Telegram Bot API 返回的多种消息格式解析说明。在示例中的所有关键数据(如用户 ID、频道 ID、消息 ID... - [使用工具库 telegram-bot-base 开发翻译机器人](https://tio-boot.com/zh/59_telegram-bots/02.html): 使用工具库 telegram-bot-base 开发翻译机器人 Maven 坐标配置 在 Maven 工程中引入所需依赖。以下配置中除日志记录和 JSON 处理依赖外,核心依赖为 telegram-bot-base。请确保在 pom.xml 中添加如下依赖: 说明 其中 telegram-bot-base 是对 telegram-bots 的常用操作进... - [60_LLM](https://tio-boot.com/zh/60_LLM/): 60_LLM 本目录包含 16 个文件和 1 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《简介》。 : 文档《流式生成》。 : 文档《图片多模态输入》。 : 文档《Google Gemini接入》。 : 文档《google Vertex AI 接入》。 : 文档《请求记录》。 : 文档《限... - [简介](https://tio-boot.com/zh/60_LLM/01.html): 简介 本章节主要介绍 java-openai(GitHub:litongjava/java-openai)库的核心能力、目录结构与统一调用方式,并展示如何将第三方大模型 API(OpenAI / Google / Anthropic / OpenRouter 等)以一致的请求与响应模型接入业务系统。 java-openai 的设计目标不是“只对接某一家... - [流式生成](https://tio-boot.com/zh/60_LLM/02.html): 流式生成 在实际业务中,很多场景并不适合“等待完整结果一次性返回”,例如: 聊天机器人逐字输出,提升交互体验 长文本生成(写作、总结、代码生成),降低首 token 延迟 Web 前端使用 SSE / WebSocket 实时渲染内容 避免长时间阻塞请求导致的超时问题 java-openai 在统一抽象层之上,提供了跨平台一致的流式生成能力。业务侧只需... - [图片多模态输入](https://tio-boot.com/zh/60_LLM/03.html): 图片多模态输入 随着多模态模型的发展,越来越多的业务场景需要直接向大模型输入图片,并结合文本指令完成任务,例如: 图片文字识别(OCR) 图片内容理解与描述 图表、试题、合同、截图等内容解析 图片 + 文本混合推理(VLM / Vision-Language Model) java-openai 在统一聊天抽象的基础上,提供了统一的图片输入模型,使业务... - [Google Gemini接入](https://tio-boot.com/zh/60_LLM/04.html): Google Gemini接入 协议自动转换 java-openai 的统一大模型调用能力 在真实的工程环境中,对接大模型的最大挑战从来不只是“调用 API”,而是跨平台协议差异带来的长期维护成本: OpenAI、Google Gemini、Anthropic Claude 的请求结构完全不同 system prompt、messages、roles、... - [google Vertex AI 接入](https://tio-boot.com/zh/60_LLM/05.html): google Vertex AI 接入 service account 到 API Key 的转换与 java-openai 使用说明 在 Google Cloud 生态中,Vertex AI 默认更偏向使用 Service Account 进行认证。 但在当前 java-openai 的统一调用体系里,暂不直接支持 Service Account 认... - [请求记录](https://tio-boot.com/zh/60_LLM/06.html): 请求记录 在多平台、多模型的生产系统里,稳定性问题往往不是“模型能力不行”,而是缺少一套可追溯、可统计、可告警的调用记录体系。java-openai 通过统一的 UniChatRequest / UniChatResponse 抽象,把模型协议差异隔离在适配层;而在业务层,建议再配套一层“请求记录”能力,把每一次调用的关键要素完整落库,形成可观测性闭环... - [限流和错误处理](https://tio-boot.com/zh/60_LLM/07.html): 限流和错误处理 限流与错误处理:全局冷却、智能退避与可观测性闭环 在生产环境中,大模型调用失败的原因通常不是单点的“请求参数错误”,而是由限流、配额、网络波动、上游网关不稳定等因素叠加造成。尤其在并发场景下,如果缺少统一的限流与重试策略,系统很容易出现两类问题: 失败放大 多个并发请求同时遇到 429 后各自重试,进一步触发更严重的限流,形成雪崩。 排... - [增强检索(RAG)](https://tio-boot.com/zh/60_LLM/11.html): 增强检索(RAG) 增强检索(RAG)是一种通过结合大语言模型(LLM)和外部文档资料的检索方法,用以提升问题回答的准确性和相关性。它的核心在于将传统信息检索与大语言模型的生成能力相结合,为用户提供更为丰富的答案。RAG 的实现需要依赖向量数据库、文档切片、向量化等多种技术手段。以下是对增强检索、向量数据库及其实现方法的详细说明。 什么是增强检索(RA... - [结构化数据检索](https://tio-boot.com/zh/60_LLM/12.html): 结构化数据检索 什么是结构化数据检索 结构化数据检索与文档检索(非结构化数据)的检索思路相似。不同之处在于,结构化数据检索使用的是 text-to-SQL 技术。通过将用户的自然语言输入(文本)转换为数据库查询语言(SQL),从而实现数据检索。 结构化数据检索流程 数据获取: 一般通过爬虫的形式从互联网上爬取数据。 数据入库: 将爬取到的数据存入到数据... - [AI 问答](https://tio-boot.com/zh/60_LLM/13.html): AI 问答 AI 问答 实现 AI 问答非常容易。可以通过笔者的 java-openai 库调用 OpenAI 的 Chat 接口,将用户的问题发送给 GPT 模型,GPT 模型会返回推理结果。 临时记忆 临时记忆的实现有多种方式,这里简单介绍两种方法: 数据库存储对话记录:将用户和大模型的对话记录存入数据库中。当需要对新的问题进行推理时,将新消息和历... - [连接代码执行器](https://tio-boot.com/zh/60_LLM/14.html): 连接代码执行器 为什么要连接代码执行器 大语言模型(LLM)如 ChatGPT 在许多方面表现出色,但在进行精确计算和数据处理时可能存在局限性。然而,LLM 擅长编写代码。通过将 LLM 生成的代码交给专门的代码执行器运行,我们可以结合两者的优势:LLM 的代码生成能力和执行器的计算能力。 连接代码执行器的主要优势包括: 提高计算准确性 增强数据处理能... - [待定](https://tio-boot.com/zh/60_LLM/15.html): 待定 - [模型编程能力评测](https://tio-boot.com/zh/60_LLM/16.html): 模型编程能力评测 提示词 - [/zh/60_LLM/17.html](https://tio-boot.com/zh/60_LLM/17.html): v=0 o=1001 2542 3964 IN IP4 192.168.3.241 s=Talk c=IN IP4 192.168.3.241 t=0 0 a=rtcp-xr:rcvr-rtt=all:10000 stat-summary=loss,dup,jitt,TTL voip-metrics m=audio 7076 RTP/AVP 96 97... - [images](https://tio-boot.com/zh/60_LLM/images/): images 本目录包含 2 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 01.png: 图片资源,用于本目录文档配图或界面示意。 - [61_voice-agent](https://tio-boot.com/zh/61_voice-agent/): 61_voice-agent 本目录包含 8 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《整合Gemini realtime模型》。 : 文档《Voice Agent 前端接入接口文档》。 : 文档《整合千问realtime模型》。 : 文档《打断支持》。 : 文档《主动介入... - [整合Gemini realtime模型](https://tio-boot.com/zh/61_voice-agent/01.html): 整合Gemini realtime模型 本文档面向希望在 tio-boot 框架上快速接入 Gemini Live(支持实时语音问答与语音合成/转写)的 Java 开发者。内容包含:依赖与准备、整体架构、后端关键实现说明、前端示例、音频格式/协议、部署与调试建议、常见问题与扩展点。文档以已提供的实现为基础,补充说明与最佳实践,便于直接复制到工程中使用。... - [Voice Agent 前端接入接口文档](https://tio-boot.com/zh/61_voice-agent/02.html): Voice Agent 前端接入接口文档 本文档面向前端工程师,描述与后端实时语音代理的 WebSocket 协议、二进制音频格式、事件契约与接入示例。文档基于后端的桥接实现,目标是帮助前端同学快速对接并稳定播放 / 采集音频与显示转写与事件。 1 概要 连接方式:WebSocket(推荐使用 WSS) 默认路径示例:wss://{host}/api/... - [整合千问realtime模型](https://tio-boot.com/zh/61_voice-agent/03.html): 整合千问realtime模型 tio-boot 集成 Qwen-Omni-Realtime(中国区,北京)DashScope Java SDK 接入完整文档 在 tio-boot 上 WebSocket 语音链路(浏览器 16k PCM 上行、服务端转发、浏览器播放 24k PCM 下行)的 Java 开发者, 1. 目标与整体架构 目标能力: 浏览器... - [打断支持](https://tio-boot.com/zh/61_voice-agent/04.html): 打断支持 一、标准时序图:正常一轮播放 这是最理想的链路。 正常场景下,前端应该看到的日志顺序 理想上类似这样: 注意两点: 1. assistant_turn_start 必须早于第一包音频 如果音频先到了,前端没有 activeAssistantTurnId,会直接丢弃。 2. assistant_turn_complete 不一定意味着“音频已经... - [主动介入](https://tio-boot.com/zh/61_voice-agent/05.html): 主动介入 1. 目标 在实时语音场景中,用户有时会在官提问后长时间沉默。为了让对话自然推进,系统需要在用户长时间未开始回答时,主动由模型介入,引导用户继续作答、补充思路,或换一种更容易回答的方式继续交流。 本方案的目标是: 在用户长时间未开始回答时自动触发主动介入。 主动介入由模型自然生成,而不是后端写死固定提醒文案。 避免把“麦克风仍在持续上传静音音... - [eleven labs](https://tio-boot.com/zh/61_voice-agent/06.html): eleven labs - [基于 tio-boot + ElevenLabs 构建实时语音 Agent(支持打断与主动介入)](https://tio-boot.com/zh/61_voice-agent/07.html): 基于 tio-boot + ElevenLabs 构建实时语音 Agent(支持打断与主动介入) 这篇文章记录一次完整的实时语音 Agent 实践: 使用 tio-boot 作为后端 WebSocket 网关,对接 ElevenLabs Agents 实时语音能力,实现一个支持: 实时语音对话(浏览器麦克风) 中文语音输出 多轮对话 用户打断(inte... - [63_knowlege_base](https://tio-boot.com/zh/63_knowlege_base/): 63_knowlege_base 本目录包含 37 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《学术论文》。 : 文档《数据库设计》。 : 文档《用户登录实现》。 : 文档《模型管理》。 : 文档《知识库管理》。 : 文档《文档拆分》。 : 文档《片段向量》。 : 文档《命中... - [学术论文](https://tio-boot.com/zh/63_knowlege_base/00.html): 学术论文 题目:基于向量检索和大语言模型的智能知识库系统设计与实现 摘要 本文介绍了一种结合向量检索技术和大语言模型的智能知识库系统的设计与实现。该系统能够将非结构化的文档数据进行识别、拆分和向量化处理,通过语义相似度检索实现对用户问题的高效匹配,并利用大语言模型进行推理生成自然语言回答。系统包含用户管理、知识库管理、文档识别与拆分、片段存储与检索、问... - [数据库设计](https://tio-boot.com/zh/63_knowlege_base/01.html): 数据库设计 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。... - [用户登录实现](https://tio-boot.com/zh/63_knowlege_base/02.html): 用户登录实现 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理... - [模型管理](https://tio-boot.com/zh/63_knowlege_base/03.html): 模型管理 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [知识库管理](https://tio-boot.com/zh/63_knowlege_base/04.html): 知识库管理 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。... - [文档拆分](https://tio-boot.com/zh/63_knowlege_base/05.html): 文档拆分 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [片段向量](https://tio-boot.com/zh/63_knowlege_base/06.html): 片段向量 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [命中测试](https://tio-boot.com/zh/63_knowlege_base/07.html): 命中测试 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [文档管理](https://tio-boot.com/zh/63_knowlege_base/08.html): 文档管理 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [片段管理](https://tio-boot.com/zh/63_knowlege_base/09.html): 片段管理 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [问题管理](https://tio-boot.com/zh/63_knowlege_base/10.html): 问题管理 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [应用管理](https://tio-boot.com/zh/63_knowlege_base/11.html): 应用管理 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [向量检索](https://tio-boot.com/zh/63_knowlege_base/12.html): 向量检索 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [推理问答](https://tio-boot.com/zh/63_knowlege_base/13.html): 推理问答 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [问答模块](https://tio-boot.com/zh/63_knowlege_base/14.html): 问答模块 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [统计分析](https://tio-boot.com/zh/63_knowlege_base/15.html): 统计分析 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [用户管理](https://tio-boot.com/zh/63_knowlege_base/16.html): 用户管理 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [api 管理](https://tio-boot.com/zh/63_knowlege_base/17.html): api 管理 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理... - [存储文件到 S3](https://tio-boot.com/zh/63_knowlege_base/18.html): 存储文件到 S3 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的... - [文档解析优化](https://tio-boot.com/zh/63_knowlege_base/19.html): 文档解析优化 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理... - [片段汇总](https://tio-boot.com/zh/63_knowlege_base/20.html): 片段汇总 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [段落分块与检索](https://tio-boot.com/zh/63_knowlege_base/21.html): 段落分块与检索 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处... - [多文档解析](https://tio-boot.com/zh/63_knowlege_base/22.html): 多文档解析 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。... - [对话日志](https://tio-boot.com/zh/63_knowlege_base/23.html): 对话日志 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理。 ... - [检索性能优化](https://tio-boot.com/zh/63_knowlege_base/24.html): 检索性能优化 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理... - [Milvus](https://tio-boot.com/zh/63_knowlege_base/25.html): Milvus 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理... - [文档解析方案和费用对比](https://tio-boot.com/zh/63_knowlege_base/26.html): 文档解析方案和费用对比 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类... - [离线运行向量模型](https://tio-boot.com/zh/63_knowlege_base/27.html): 离线运行向量模型 本章节介绍如何离线运行向量模型 jina-embeddings,并编写一个 HTTP API 服务,用于使用 Jina-embeddings-v3 模型生成文本嵌入。该服务基于 ONNX Runtime 和 Robyn 框架构建,兼容 OpenAI embedding 数据格式,并支持在 CPU 上运行。 依赖 Python: 3.8... - [爬取网页数据](https://tio-boot.com/zh/63_knowlege_base/30.html): 爬取网页数据 项目目标 本项目旨在构建一个功能完备的 RAG(Retrieval-Augmented Generation)系统,主要目标包括: 知识库管理:支持创建、更新和删除知识库,便于用户高效维护内容。 文档处理:包括文档的拆分、片段的向量化处理,以提升检索效率和准确性。 问答系统:提供高效的向量检索和实时生成回答的能力,支持复杂汇总类问题的处理... - [64_ai_agent](https://tio-boot.com/zh/64_ai_agent/): 64_ai_agent 本目录包含 24 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《数据库设计》。 : 文档《示例问题管理》。 : 文档《会话管理》。 : 文档《历史记录》。 : 文档《Perplexity API》。 : 文档《意图识别》。 : 文档《智能问答》。 : 文... - [数据库设计](https://tio-boot.com/zh/64_ai_agent/01.html): 数据库设计 本章节将详细介绍如何使用 tio-boot 系统开发一个面向校园领域的搜索问答系统。该系统旨在为用户提供高效、智能的问答服务,涵盖以下主要功能: 功能概述 推荐问题:根据用户输入智能推荐相关问题,提升用户体验。 会话管理:有效管理用户与系统之间的对话会话,确保对话的连贯性。 历史记录管理:记录并管理用户的历史查询,便于后续参考和分析。 意图... - [示例问题管理](https://tio-boot.com/zh/64_ai_agent/02.html): 示例问题管理 本文档详细介绍了校园领域搜索问答系统中的问题示例功能模块的设计与实现。该模块旨在通过智能推荐相关问题,提升用户的查询体验和系统的响应效率。本文将涵盖接口设计、数据库表结构以及相关的 Java 实现代码。 功能概述 问题示例模块主要负责根据用户的查询上下文,智能地推荐相关的问题,帮助用户快速找到所需信息。具体功能包括: 智能推荐:根据用户当... - [会话管理](https://tio-boot.com/zh/64_ai_agent/03.html): 会话管理 本文档详细介绍了校园领域搜索问答系统中的会话管理功能模块的设计与实现。该模块旨在有效管理用户与系统之间的对话会话,确保对话的连贯性和一致性。本文将涵盖接口设计、数据库表结构、控制器实现以及服务层实现。 功能概述 会话管理模块主要负责以下功能: 创建会话:允许用户创建新的对话会话。 列出会话:提供用户所有对话会话的列表,支持分页查询。 设置会话... - [历史记录](https://tio-boot.com/zh/64_ai_agent/04.html): 历史记录 本文档详细介绍了校园领域搜索问答系统中的历史记录管理功能模块的设计与实现。该模块旨在记录和管理用户的对话历史,支持用户查看历史记录和对特定对话内容进行点赞操作。本文将涵盖接口设计、数据库表结构、控制器实现以及服务层实现。 功能概述 历史记录管理模块主要负责以下功能: 查看历史记录:允许用户查看特定会话的对话历史,支持分页查询。 点赞功能:用户... - [Perplexity API](https://tio-boot.com/zh/64_ai_agent/05.html): Perplexity API 本文档详细介绍了如何使用 Perplexity API 进行聊天完成请求,并提供了 Java 示例代码,帮助开发者快速集成该 API。 概述 Perplexity API 提供了强大的搜索 和 推理 生成能力。本文将展示如何构建请求、解析响应以及在 Java 项目中调用 Perplexity API。 请求示例 以下是使用... - [意图识别](https://tio-boot.com/zh/64_ai_agent/06.html): 意图识别 本文档详细介绍了校园领域搜索问答系统中的意图识别与提示词生成功能模块的设计与实现。该模块旨在通过自然语言处理技术识别用户的查询意图,并基于意图生成相应的提示词,提升系统的响应准确性和用户体验。本文将涵盖功能概述、接口设计、数据库表结构、控制器实现以及服务层实现。 功能概述 意图识别与提示词生成模块主要负责以下功能: 意图识别:通过分析用户输入... - [智能问答](https://tio-boot.com/zh/64_ai_agent/07.html): 智能问答 本文档详细介绍了校园领域搜索问答系统中的智能问答功能模块的设计与实现。该模块旨在通过接收用户提问、校验会话合法性、问题重写、生成提示词并交由大模型推理,管理历史记录以及控制推理过程,提供高效、精准的智能问答服务。本文将涵盖功能概述、接口设计、控制器实现、服务层实现以及代码优化。 功能概述 智能问答模块主要负责以下功能: 接收用户提问:通过 A... - [文件上传与解析文档](https://tio-boot.com/zh/64_ai_agent/08.html): 文件上传与解析文档 本文档描述了如何通过文件上传接口实现文件的去重检测、上传以及内容解析,供大模型文问答系统作为上下文信息使用。内容主要分为以下几个部分: API 设计:包括文件上传前的去重检测接口以及文件上传接口的说明。 数据库设计:存储上传文件基本信息的数据库表设计。 文件解析实现:针对不同类型文件的解析实现代码(PDF、Word、Excel、PP... - [翻译](https://tio-boot.com/zh/64_ai_agent/09.html): 翻译 - [名人搜索功能实现](https://tio-boot.com/zh/64_ai_agent/10.html): 名人搜索功能实现 本模块主要用于根据用户输入的关键字(如姓名、机构等),调用搜索引擎 API 获取相关信息(例如 LinkedIn、社交媒体、视频等),并通过大语言模型对数据进行整理、润色与摘要,最终返回格式化的 Markdown 输出。整个流程大致包括以下步骤: 提示词示例:定义了对用户输入的提示,指导后续信息整理和输出格式(例如生成个人简介、学术信... - [Ai studio gemini youbue 问答使用说明](https://tio-boot.com/zh/64_ai_agent/11.html): Ai studio gemini youbue 问答使用说明 生产环境不推荐使用,因为延迟太高了,每次推理的延迟都在 40s 左右 本文档介绍了 youbue 功能的工作原理及消息交互格式。该功能支持前端向后端提交包含 YouTube 视频链接和用户消息的请求,后端会将消息转换为大模型所需的消息格式并发送。以下详细描述了首次消息发送及后续追问的消息格式... - [自建 YouTube 字幕问答系统](https://tio-boot.com/zh/64_ai_agent/12.html): 自建 YouTube 字幕问答系统 由于直接使用 Google Gemini YouTube 接口存在较高的延迟问题,因此本文介绍了一套自建 YouTube 视频问答系统的方案,通过调用第三方 supadata API 获取视频字幕,并将字幕进行存储与展示,实现视频问答功能。下面将从获取字幕、Java 代码实现、业务流程解析以及已知问题几个方面进行介绍... - [自建 获取 youtube 字幕服务](https://tio-boot.com/zh/64_ai_agent/13.html): 自建 获取 youtube 字幕服务 https://github.com/litongjava/yt-dlp-java - [使用 OpenAI ASR 实现语音识别接口(Java 后端示例)](https://tio-boot.com/zh/64_ai_agent/14.html): 使用 OpenAI ASR 实现语音识别接口(Java 后端示例) 本文介绍如何在 Java 后端快速实现一个“上传音频文件 → 调用 OpenAI ASR(Whisper)→ 返回识别文本”的接口,并加入缓存机制避免重复识别,降低成本与延迟。 整体流程可以理解为四步: 客户端通过 POST /api/v1/asr 上传音频文件(表单字段名为 file... - [定向搜索](https://tio-boot.com/zh/64_ai_agent/15.html): 定向搜索 - [16](https://tio-boot.com/zh/64_ai_agent/16.html): 16 - [17](https://tio-boot.com/zh/64_ai_agent/17.html): 17 - [18](https://tio-boot.com/zh/64_ai_agent/18.html): 18 - [在 tio-boot 应用中整合 ai-agent](https://tio-boot.com/zh/64_ai_agent/19.html): 在 tio-boot 应用中整合 ai-agent 本文档将介绍如何在其他 tio-boot 应用中集成 ai-agent 组件,以便复用其强大的 AI 聊天及对话能力。以下内容包含 Maven 依赖的添加、路由配置以及接口调用示例。 1. 添加 Maven 依赖 在项目的 pom.xml 文件中添加如下依赖,从 Maven 仓库中引入 ai-agen... - [接口文档](https://tio-boot.com/zh/64_ai_agent/20.html): 接口文档 本文档详细介绍了各类接口的使用说明,包括请求方式、接口路径、请求参数及响应格式。开发者可根据本说明文档快速对接接口,完成推荐问题、会话管理、推理服务、点赞操作及历史记录等功能的集成,同时还提供了通用能力接口(rewrite、file、tutor、youtube、search、advise、celebrity)的说明。 接口概览 获取推荐问题接... - [自定义 ChatAskService](https://tio-boot.com/zh/64_ai_agent/21.html): 自定义 ChatAskService 本文将系统介绍如何在自定义 ChatAskService 的过程中,结合 LlmChatHistoryService 实现一套完整的对话业务逻辑,包括历史消息管理、上下文拼接、流式响应以及会话持久化等能力。整篇内容聚焦设计思路与实现流程,不涉及具体代码细节。 精简 直接发送消息 Alt text 问答示例 一、整体... - [65_ai-search](https://tio-boot.com/zh/65_ai-search/): 65_ai-search 本目录包含 33 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《ai-search 项目简介》。 : 文档《ai-search 数据库文档》。 : 文档《ai-search SearxNG 搜索引擎》。 : 文档《ai-search Jina Read... - [ai-search 项目简介](https://tio-boot.com/zh/65_ai-search/01.html): ai-search 项目简介 本文档介绍了一个 AI 搜索项目的设计与实现方案,前端采用 Next.js 框架,后端基于 Java 开发。项目旨在通过整合先进的检索技术和大模型能力,提升搜索问答系统的准确度和用户体验。下文详细阐述了项目的整体流程、关键技术以及优化策略。 AI Search 流程图 1. AI 搜索的标准流程 AI 搜索一般可分为两个主... - [ai-search 数据库文档](https://tio-boot.com/zh/65_ai-search/02.html): ai-search 数据库文档 本节提供了用于存储聊天历史记录的 PostgreSQL 数据库表的设计,包括表结构、字段说明及关系定义。 表设计 表结构 max_search_chat_session 表 存储所有的聊天记录的基本信息。 max_search_chat_message 表 存储每个聊天中的消息内容及相关信息。 files 表 复用 ti... - [ai-search SearxNG 搜索引擎](https://tio-boot.com/zh/65_ai-search/03.html): ai-search SearxNG 搜索引擎 SearxNG 是一个强大且注重隐私的元搜索引擎,能够汇总来自多个搜索引擎的结果而不跟踪用户活动。本指南将引导您通过 Docker 部署 SearxNG,介绍其可用的 API,并提供如何有效使用这一强大工具的见解。 SearxNG 简介 SearxNG 是一个开源的自托管元搜索引擎,强调用户隐私和灵活性。与... - [ai-search Jina Reader API](https://tio-boot.com/zh/65_ai-search/04.html): ai-search Jina Reader API 在搜索引擎返回的结果中,通常只包含网页的标题(title)、描述(description)和 URL,而不包含网页的实际内容。为了让大模型能更好地回答用户的问题,我们需要获取网页的完整内容。Jina Reader API 正是为此目的而设计的,它可以帮助方便地读取网页的详细内容。 快速开始 请求示例 ... - [ai-search Jina Search API](https://tio-boot.com/zh/65_ai-search/05.html): ai-search Jina Search API Jina Search API 将搜索引擎和内容转换功能相结合,不仅可以搜索相关网页,还能将返回的网页内容进行转换和整合,便于后续处理和大模型理解。 功能概述 搜索引擎: 根据用户输入的查询条件,搜索相关网页。 内容转换: 将搜索到的网页内容进行转换,返回易于阅读和分析的数据格式。 请求示例 可以使用... - [ai-search 搜索、重排与读取内容](https://tio-boot.com/zh/65_ai-search/06.html): ai-search 搜索、重排与读取内容 本文档详细介绍了一个基于 Java 的搜索与网页爬取系统的实现过程。该系统由四个主要模块组成: 搜索请求处理器 搜索服务 AI 重排服务 Playwright 页面爬取服务 获取 Jina Reader API 内容读取 系统整体流程为: 用户发送搜索请求。 系统调用搜索引擎 API 获取初步搜索结果。 利用大... - [ai-search PDF 文件处理](https://tio-boot.com/zh/65_ai-search/07.html): ai-search PDF 文件处理 本篇文档介绍了如何利用 Apache PDFBox 库对 PDF 文件进行简单处理,即从 PDF 字节数据中提取文本内容。本文主要包括依赖配置、核心代码实现以及使用示例,适用于需要快速解析 PDF 文档内容的场景。 1. 项目依赖 为了使用 PDFBox 进行 PDF 文件处理,需要在 Maven 项目的 pom.... - [ai-search 推理问答](https://tio-boot.com/zh/65_ai-search/08.html): ai-search 推理问答 在构建搜索系统时,往往需要将检索到的文本内容与特定的提示词(Prompt)一并提交给大模型,以生成更高质量的回复。本项目在完成以下功能后,希望进一步实现将检索到的网页内容(以 Markdown 格式)+ 自定义的提示词,发送给大模型进行推理并返回结果给用户: AI 搜索项目简介 数据库设计 SearxNG Jina Rea... - [Google Custom Search JSON API](https://tio-boot.com/zh/65_ai-search/09.html): Google Custom Search JSON API 本篇文档旨在介绍如何利用 Google Custom Search JSON API 搜索特定网站。文档内容包括如何创建和配置可编程搜索引擎(Custom Search Engine,简称 CSE)、如何获取 API Key、如何通过 RESTful 接口发送请求,以及如何在前端页面中调用 A... - [ai-search 意图识别](https://tio-boot.com/zh/65_ai-search/10.html): ai-search 意图识别 意图识别一共 要进行两次,问题重写前识别一次,问题重写后识别一次 意图识别的原理和需要准备的数据 引言 意图识别(Intent Recognition)是自然语言处理(NLP)中的一个重要任务。它的目标是理解用户的输入并确定其背后的意图。这在聊天机器人、虚拟助理和各种人机交互系统中尤为重要。为了实现意图识别,通常需要准备一... - [ai-search 问题重写](https://tio-boot.com/zh/65_ai-search/11.html): ai-search 问题重写 什么是问题重写 问题重写:提升对话式 AI 的上下文理解能力和增加检索结果的准确性 在构建对话式 AI 系统时,一个常见的挑战是如何准确理解用户的后续问题。这些问题通常依赖于之前的对话上下文,如果直接将其用于信息检索或进一步处理,可能会导致不准确或不相关的回答。为了解决这个问题,我们可以使用一种称为"问题重写"的技术。 什... - [ai-search 系统 API 接口 WebSocket 版本](https://tio-boot.com/zh/65_ai-search/12.html): ai-search 系统 API 接口 WebSocket 版本 本文档详细描述了 AI+搜索的推理接口 目录 获取模型信息 获取配置信息 搜索与推理 WebSocket 连接 发送初始信号 发送消息 接收服务器响应 消息历史记录 生成建议问题 获取网站 Logo 获取模型信息 描述 获取当前 AI 模型的相关信息,包括聊天模型提供者和嵌入模型提供者及... - [ai-search 搜索代码实现 WebSocket 版本](https://tio-boot.com/zh/65_ai-search/13.html): ai-search 搜索代码实现 WebSocket 版本 本文档详细描述了基于 WebSocket 实现的 ai-search 搜索系统的代码结构。系统主要包括以下模块: 实体类:用于封装请求、响应、消息、历史记录以及网页搜索结果等数据结构。 WebSocket 处理器:负责处理客户端连接、握手、消息收发以及关闭连接等操作。 业务服务类:包括消息分发... - [ai-search 生成建议问](https://tio-boot.com/zh/65_ai-search/14.html): ai-search 生成建议问 简介 在现代对话系统中,为了更好地满足用户需求,常常需要根据先前的对话上下文为用户生成一些后续的建议问题(suggestions),帮助用户更深入地与大模型或搜索引擎进行交互。本文将介绍如何基于大模型来生成这些建议问,并通过示例代码演示具体的实现方法和使用流程。 核心思路 预设 Prompt 提前编写一个 Prompt(... - [ai-search 生成问题标题](https://tio-boot.com/zh/65_ai-search/15.html): ai-search 生成问题标题 一、背景介绍 在问答系统或对话系统中,需要将用户的问题或请求进行简短的概括(尤其用于标题或列表显示),但同时要遵循一定的限制(如字数限制、禁用某些词)。而针对并非真正问题的情况(如纯文本写作需求或简单的招呼问候),我们又希望能够统一返回某个占位值以标识此类请求无需生成相应的短标题。 为此,我们引入了一个简单而有效的做法... - [ai-search 历史记录](https://tio-boot.com/zh/65_ai-search/16.html): ai-search 历史记录 本文档旨在为您的 AI+搜索 系统的历史记录功能提供详细的 API 说明和代码实现示例。通过这些 API 接口,用户可以查看所有聊天记录以及指定聊天记录的详细内容,包括聊天基本信息和消息内容。除此之外,还提供了一个辅助接口,用于方便查看向大模型发送推理数据的过程。 1. API 说明 本节详细描述了用于管理和访问聊天历史记... - [Discover API](https://tio-boot.com/zh/65_ai-search/17.html): Discover API 本文档详细介绍了 /api/discover 接口的功能、返回数据结构及其实现代码,并说明了前后端交互时传递消息的处理逻辑,帮助开发人员全面了解该接口的设计思想和实现细节。 1. 接口说明 接口地址:GET /api/discover 接口功能:返回博客或新闻内容的列表,主要用于展示摘要信息,便于用户快速了解相关内容。 客户端... - [翻译](https://tio-boot.com/zh/65_ai-search/18.html): 翻译 前端发送的参数 提示词 translator_prompt.txt - [Tavily Search API 文档](https://tio-boot.com/zh/65_ai-search/19.html): Tavily Search API 文档 Tavily Search API 是专为 AI 智能体(例如大型语言模型,LLM)设计的搜索引擎。本文档将详细介绍该 API 的使用方式,包括搜索(search)和内容抽取(extract)接口,并提供基于 Java 的客户端封装示例及调用示例。 API 接口 1. Search 接口 该接口用于搜索指定的关... - [对接 Tavily Search](https://tio-boot.com/zh/65_ai-search/20.html): 对接 Tavily Search 由于 Tavily Search API 能够返回更详细的内容,我们选择将 Tavily Search 作为数据问答的数据来源。下面文档介绍了如何使用 Tavily Search 获取搜索结果,并将结果用于后续的问答推理流程。本文档分为两个部分: MaxSearchSearchService:封装了对 Tavily S... - [火山引擎 DeepSeek](https://tio-boot.com/zh/65_ai-search/21.html): 火山引擎 DeepSeek 开通火山引擎联网搜索 登录火山引擎-->选择火山方舟 开通 deepseek r1 和 deepseek r1 联网搜索版 Alt text Alt text 添加应用,添加联网插件 Alt text Api 接入 模型请求示例 调用联网搜索版本请求示例 请求 响应 - [对接 火山引擎 DeepSeek](https://tio-boot.com/zh/65_ai-search/22.html): 对接 火山引擎 DeepSeek 下面是一篇完整的文档,详细介绍了如何对接火山引擎 DeepSeek 推理 API,将其集成到问答系统中作为推理接口。文档中包含所有代码,并逐步解释各个部分的作用、调用流程和关键实现逻辑,帮助读者深入理解系统的工作原理。 对接火山引擎 DeepSeek 推理 API 在本系统中,我们将火山引擎 DeepSeek 推理 A... - [ai-search 搜索代码实现 SSE 版本](https://tio-boot.com/zh/65_ai-search/23.html): ai-search 搜索代码实现 SSE 版本 本文档详细说明了基于 SSE(Server-Sent Events)的实时消息传输接口及其代码实现。文中首先介绍了 SSE 接口的请求、响应及消息格式,然后逐个解析了各个关键模块的代码逻辑,包括请求处理、消息分发、搜索结果的处理、以及调用 DeepSeek 模型生成回答的过程。读者可以通过本文档了解整个系... - [jar 包部署](https://tio-boot.com/zh/65_ai-search/24.html): jar 包部署 cat .env 启动 使用 docker 启动 - [Docker 部署](https://tio-boot.com/zh/65_ai-search/25.html): Docker 部署 本文档将指导在 Docker 环境下部署 Max-Search 项目的后端服务,并初始化数据库所需的环境。同时,还将介绍前端的运行方式。 1. 安装 PostgreSQL 在部署后端前,需要准备好 PostgreSQL 数据库,并确保其支持向量扩展。 可以参阅官方文档或 tio-boot 的 PostgreSQL 教程 进行安装和基... - [爬取一个静态网站的所有数据](https://tio-boot.com/zh/65_ai-search/26.html): 爬取一个静态网站的所有数据 这是一份完整的文档,对整个爬取静态网站数据的程序进行详细说明和代码组织,同时保留所有原有代码。该程序主要目标是将静态网站的所有网页数据(HTML、PDF、转换后的 Markdown 等)存入数据库,为后续使用大模型回答用户问题提供参考依据。整个项目基于 litongjava/playwright-server 开发,并利用 ... - [网页数据预处理](https://tio-boot.com/zh/65_ai-search/27.html): 网页数据预处理 项目背景 在采集到海量网页数据后,为了方便后续利用大模型进行问答或知识检索,需要对数据进行预处理。预处理主要包括两个层次的文本分段——首先将整个网页(Document)拆分为较大块的 Paragraph,然后再将 Paragraph 拆分为更小的 Sentence 级文本,最后利用嵌入模型生成向量数据。整个流程依赖于开源项目 java-... - [网页数据检索与问答流程整合](https://tio-boot.com/zh/65_ai-search/28.html): 网页数据检索与问答流程整合 在之前的工作中,我们已经按照 java-maxkb 的标准对网页数据进行了预处理,生成了符合向量化检索要求的段落数据。接下来,可以直接基于这些预处理数据进行检索,并将检索结果整合到问答流程中,从而实现对用户问题的快速响应。 本篇文档主要介绍两部分内容: 网页数据检索:通过调用预处理好的段落数据服务进行向量检索,获取与用户问题... - [66_ai-coding](https://tio-boot.com/zh/66_ai-coding/): 66_ai-coding 本目录包含 3 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Cline 提示词》。 : 文档《Cline 提示词-中文版本》。 - [Cline 提示词](https://tio-boot.com/zh/66_ai-coding/01.html): Cline 提示词 本文档用于拆解用户与 MCP Time 工具及大模型交互的过程,同时详细说明如何使用系统提示词和各类工具。 提示词 系统提示词 首先有一个系统提示词,内容如下 用户输入 用户输入的内容使用 task 标签包裹 将当前的环境信息页发送给大模型 Assistant 大模型返回信息,指示客户端调用 mcp 工具 user 客户端执行 mc... - [Cline 提示词-中文版本](https://tio-boot.com/zh/66_ai-coding/02.html): Cline 提示词-中文版本 - [67_java-uni-ai-server](https://tio-boot.com/zh/67_java-uni-ai-server/): 67_java-uni-ai-server 本目录包含 5 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《语音合成系统》。 : 文档《Fish.audio TTS 接口说明文档与 Java 客户端封装》。 : 文档《整合 fishaudio 到 java-uni-ai-serv... - [语音合成系统](https://tio-boot.com/zh/67_java-uni-ai-server/01.html): 语音合成系统 本系统旨在将输入文本转换为语音并返回 MP3 格式的音频文件。系统会自动根据输入文本的语言选择对应的语音合成引擎,并对生成的音频进行缓存,避免重复请求,从而降低资源消耗。 1. 系统简介 系统主要包含以下功能与特性: 多语言支持: 英文文本: 使用 OpenAi 提供的 TTS 服务进行语音合成。 中文文本: 使用火山引擎的 TTS 服务... - [Fish.audio TTS 接口说明文档与 Java 客户端封装](https://tio-boot.com/zh/67_java-uni-ai-server/02.html): Fish.audio TTS 接口说明文档与 Java 客户端封装 本文档详细说明了 Fish.audio TTS 接口的使用方法,并给出了完整的 Java 客户端封装示例代码,包括请求参数对象、硬编码实现的 MsgPack 转换工具、客户端调用逻辑以及测试示例。通过阅读本文档,您可以了解如何构造 msgpack 格式的请求体,如何使用 OkHttp ... - [整合 fishaudio 到 java-uni-ai-server 项目](https://tio-boot.com/zh/67_java-uni-ai-server/03.html): 整合 fishaudio 到 java-uni-ai-server 项目 本文档详细介绍了如何在项目中整合 fishaudio 语音合成服务。项目原有的 TTS(语音合成)服务支持 openai 和 volce 平台,现在新增 fishaudio 服务,方便用户选择不同的 TTS 平台。下面将逐步展示各个模块的代码及功能说明。 1. 项目模块介绍 本次... - [待定](https://tio-boot.com/zh/67_java-uni-ai-server/04.html): 待定 - [68_java-llm-proxy](https://tio-boot.com/zh/68_java-llm-proxy/): 68_java-llm-proxy 本目录包含 2 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用tio-boot搭建多模型LLM代理服务》。 - [使用tio-boot搭建多模型LLM代理服务](https://tio-boot.com/zh/68_java-llm-proxy/01.html): 使用tio-boot搭建多模型LLM代理服务 本文档介绍如何基于tio-boot框架快速搭建一个支持多模型的大语言模型代理服务。该代理服务将接收来自客户端的请求(包括流式和非流式模式),并通过统一接口将请求转发至OpenAI、Anthropic Claude和Google Gemini等API,同时负责将返回结果以HTTP响应或SSE(Server-S... - [69_java-kit-server](https://tio-boot.com/zh/69_java-kit-server/): 69_java-kit-server 本目录包含 8 个文件和 1 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Java 执行 python 代码》。 : 文档《通过大模型执行 Python 代码》。 : 文档《执行 Python (Manim) 代码》。 : 文档《待定》。 : 文档《待... - [Java 执行 python 代码](https://tio-boot.com/zh/69_java-kit-server/01.html): Java 执行 python 代码 本文档介绍了如何在 Java 环境调用 Python 脚本,并最终获取图像输出。文中详细讲解了整个流程,包括使用 Python 的 Agg 后端、通过 -c 参数一次性执行命令,以及利用 Enjoy 模版引擎配合 main.py 执行用户脚本的原理。 1. Java 调用 Python 代码的实现 在 Java 中,... - [通过大模型执行 Python 代码](https://tio-boot.com/zh/69_java-kit-server/02.html): 通过大模型执行 Python 代码 本文档介绍如何通过大模型生成符合规范、易于维护的 Python 代码,并通过 java-kit-server-server 执行该代码。整个过程严格遵循预设的工具调用格式和步骤,以确保生成的代码既安全又高效。文档包含系统提示词、示例代码以及 Java 服务端实现的所有代码,不遗漏任何细节。 1. 系统提示词 系统提示... - [执行 Python (Manim) 代码](https://tio-boot.com/zh/69_java-kit-server/03.html): 执行 Python (Manim) 代码 本文档介绍了基于 java-kit-server 项目环境下如何通过 Java 程序执行 Python 代码(主要用于执行 Manim 脚本)的实现方案。文档包括整体架构、工作流程说明以及完整的代码实现,确保不遗漏您提供的任何代码。 1. 项目概述 该项目旨在提供一个基于 Java 后端的 Python 代码执... - [待定](https://tio-boot.com/zh/69_java-kit-server/04.html): 待定 - [待定](https://tio-boot.com/zh/69_java-kit-server/05.html): 待定 - [待定](https://tio-boot.com/zh/69_java-kit-server/06.html): 待定 - [视频下载增加水印说明文档](https://tio-boot.com/zh/69_java-kit-server/07.html): 视频下载增加水印说明文档 该功能提供了一个 HTTP 接口用于视频下载,同时在视频中增加右下角的水印。主要流程如下: 客户端通过 URL 发起请求,示例如下: 请求参数说明: path:视频文件存储的相对或绝对路径(本例中拼接了 “.” 作为根目录)。 text:水印文字内容,将在视频右下角显示。 filename:下载时客户端保存的视频文件名(通过设... - [readme_files](https://tio-boot.com/zh/69_java-kit-server/readme_files/): readme_files 本目录包含 2 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 image.png: 图片资源,用于本目录文档配图或界面示意。 - [70_ai-brower](https://tio-boot.com/zh/70_ai-brower/): 70_ai-brower 本目录包含 8 个文件和 1 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《AI Browser:基于用户指令的浏览器自动化系统》。 : 文档《提示词》。 : 文档《dom构建- buildDomTree.js》。 : 文档《dom构建- 将网页可点击元素提取与可视... - [AI Browser:基于用户指令的浏览器自动化系统](https://tio-boot.com/zh/70_ai-brower/01.html): AI Browser:基于用户指令的浏览器自动化系统 简介 本系统实现了智能化浏览器操作引擎,能够根据自然语言指令自动执行网页浏览任务。通过将网页元素结构化表示与AI决策模型相结合,系统能够理解用户意图并转化为具体浏览器操作,实现从简单搜索到复杂工作流(如在线购票)的自动化执行。 网页内容结构化处理 系统核心创新在于将复杂DOM结构转换为AI可理解的文... - [提示词](https://tio-boot.com/zh/70_ai-brower/02.html): 提示词 系统提示词 完整交互流程 - [dom构建- buildDomTree.js](https://tio-boot.com/zh/70_ai-brower/03.html): dom构建- buildDomTree.js 引言 在自动化测试、可视化辅助工具或浏览器扩展中,精准获取并标记页面中的可交互元素是核心需求。本文档从 DOM 树的构建与遍历出发,依次介绍如何判断元素的可见性与交互性,如何在页面上高亮并标记目标元素,最后阐述性能监控与缓存优化思路,为开发者提供一套全面且高效的实现方案。 1. DOM 树构建 通过递归遍历... - [dom构建- 将网页可点击元素提取与可视化](https://tio-boot.com/zh/70_ai-brower/04.html): dom构建- 将网页可点击元素提取与可视化 一、项目背景与目标 在自动化测试、智能 AI 代理交互等场景中,我们常常需要让机器“看懂”网页,将页面中的可点击元素提取出来并以结构化、可读的文本形式呈现,便于后续推理或自动化操作。本示例基于 Playwright 和一段自定义脚本,将任意网页的 DOM 树构建为 Java 对象,并输出所有可交互元素的文本化... - [提取网内容](https://tio-boot.com/zh/70_ai-brower/05.html): 提取网内容 1. 简介 StructuredDataExtractor 是基于 Playwright、Jsoup 和 Flexmark 的一个工具类,用于从已加载的网页中提取结构化数据。它提供两种主要能力: 纯文本提取:直接获取页面主体的所有可见文本。 HTML 转 Markdown:将页面主体 HTML 转换为 Markdown,并可选地在末尾附上页... - [启动浏览器](https://tio-boot.com/zh/70_ai-brower/06.html): 启动浏览器 HTTP 控制浏览器 本文档介绍如何通过 HTTP 接口启动、导航及关闭 Playwright 浏览器实例,并提供完整的示例代码 一、前置条件 JDK 8 及以上 Playwright for Java 依赖: tio-boot 框架 二、核心数据结构:BrowserInstance 用于在内存中保存每个浏览器实例的上下文和页面引用。 三、... - [操作浏览器指令](https://tio-boot.com/zh/70_ai-brower/07.html): 操作浏览器指令 浏览器操作直接相关的指令: search_google:在 Google 上搜索 go_to_url:跳转到指定 URL,可选新标签页 go_back:浏览器后退 wait:等待指定秒数(常用于等待页面或元素加载) click_element_by_index:单击当前页中指定索引的可交互元素 input_text:在指定输入框中输入文... - [images](https://tio-boot.com/zh/70_ai-brower/images/): images 本目录包含 3 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 baidu-boxed.png: 图片资源,用于本目录文档配图或界面示意。 google-dom.png: 图片资源,用于本目录文档配图或界面示意。 - [71_tio-boot-admin](https://tio-boot.com/zh/71_tio-boot-admin/): 71_tio-boot-admin 本目录包含 32 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《入门指南》。 : 文档《初始化数据》。 : 文档《token 存储》。 : 文档《与前端集成》。 : 文档《文件上传》。 : 文档《网络请求》。 : 文档《单图片管理(只读模式)... - [入门指南](https://tio-boot.com/zh/71_tio-boot-admin/01.html): 入门指南 tio-boot-admin 是基于 tio-boot 的管理系统中间层框架,旨在帮助开发者快速搭建项目后台管理系统。本文将通过一个入门示例,详细介绍如何集成和配置 tio-boot-admin,从而快速启动一个简单的后台管理系统。 目录 初始化数据 添加依赖 配置文件 配置类 启动类 启动日志 与前端集成 初始化数据 见下面的章节 添加依赖... - [初始化数据](https://tio-boot.com/zh/71_tio-boot-admin/02.html): 初始化数据 tio_boot_admin_system_users postgresql 表名:tio_boot_admin_system_users mysql 初始化表数据 初始化数据插入:tio_boot_admin_system_users_init.sql Sqlite 表名:tio_boot_admin_system_users.sql 初... - [token 存储](https://tio-boot.com/zh/71_tio-boot-admin/03.html): token 存储 使用数据库存储 token 使用数据库存储 Sa-Token tio-boot-admin 默认不再使用 Sa-Token 进行用户鉴权。可以舍弃本节 如果需要将 Sa-Token 的数据存储在数据库中,需要添加的表如下。 1. 数据表创建 在数据库中创建一张用于存储 Sa-Token 数据的表,SQL 脚本如下: postgres ... - [与前端集成](https://tio-boot.com/zh/71_tio-boot-admin/04.html): 与前端集成 通过上述步骤,我们已经成功搭建了一个简单的后台管理系统的框架。tio-boot-admin 提供了丰富的功能接口,方便后续开发和扩展。接下来,需要配合前端项目进行界面开发和功能对接。 tio-boot-admin-react 推荐使用 tio-boot-admin-react 作为前端解决方案,该项目基于 React 框架,提供了丰富的组件... - [文件上传](https://tio-boot.com/zh/71_tio-boot-admin/05.html): 文件上传 简介 本文件介绍了如何使用 Tio Boot Admin 技术栈(前端使用 tio-boot-admin-react,后端使用 tio-boot-admin)实现一个基于文件表单的业务功能模块。本模块支持文件上传、下载、预览以及与数据库的集成管理。 数据表设计 文件信息表 系统文件上传表存储了文件上传的详细信息,如文件名、大小、MD5 值等。... - [网络请求](https://tio-boot.com/zh/71_tio-boot-admin/06.html): 网络请求 简介 本文将介绍如何使用 React 和 Ant Design 和 tio-boot-admin-react ApiTable 组件,在表格的列中添加一个操作按钮。点击按钮后触发网络请求,网络请求成功后刷新表格。同时展示了如何增加全局的按钮,实现类似功能。 功能目标 为表格每行添加一个按钮: 点击按钮后发送网络请求。 请求成功后刷新表格内容。... - [单图片管理(只读模式)](https://tio-boot.com/zh/71_tio-boot-admin/07.html): 单图片管理(只读模式) 本文介绍如何在 tio-boot-admin + tio-boot-admin-react 体系下,实现单张图片的管理与展示。 该方案仅用于浏览与查询,不支持图片上传、编辑或删除操作,适用于 OCR 结果缓存、日志快照、第三方图片引用等只读业务场景。 一、使用场景说明 本方案适合以下场景: 每条记录只对应 一张图片 图片已由其他... - [多图片管理](https://tio-boot.com/zh/71_tio-boot-admin/08.html): 多图片管理 本文介绍如何使用 tio-boot-admin 和 tio-boot-admin-react 实现图片管理功能,包括数据库表的创建、后端文件上传配置以及前端页面的开发。 目录 创建数据表 配置后端支持文件上传 前端实现 定义表格列 服务层处理 页面组件 配置路由 显示效果 创建数据表 首先,需要在数据库中创建用于存储图片信息的数据表。以下是... - [布尔值管理](https://tio-boot.com/zh/71_tio-boot-admin/09.html): 布尔值管理 本文介绍在 tio-boot-admin + tio-boot-admin-react 体系下,如何对**布尔值字段(Boolean)**进行统一、规范、可查询的管理与展示。 重点说明 数据库设计、前端枚举映射、筛选能力与查询行为,适用于业务中存在明确“是 / 否”“命中 / 未命中”“开启 / 关闭”语义的字段场景。 一、使用场景说明 布... - [字段联动](https://tio-boot.com/zh/71_tio-boot-admin/10.html): 字段联动 创建字典表 - [Word 管理](https://tio-boot.com/zh/71_tio-boot-admin/11.html): Word 管理 - [PDF 管理](https://tio-boot.com/zh/71_tio-boot-admin/12.html): PDF 管理 - [文章管理](https://tio-boot.com/zh/71_tio-boot-admin/13.html): 文章管理 在本文中,我们将展示如何使用 Tio Boot Admin 和 React 配合 WangEditor 来实现文章管理功能,包括文章的分类管理、创建、编辑、列表展示以及预览。以下是完整的实现步骤和代码示例。 数据表 为实现文章管理功能,需要设计两张数据表:文章分类表和文章表。 作者表 文章分类表 文章标签表 文章表 tio_boot_admi... - [富文本编辑器](https://tio-boot.com/zh/71_tio-boot-admin/14.html): 富文本编辑器 在上一节中,我们介绍了使用 Tio Boot Admin、React 和 WangEditor 实现文章管理功能。本节将聚焦于富文本编辑器的功能扩展和使用,展示如何通过定制上传功能支持图片、视频和嵌入 YouTube 视频的能力。 富文本编辑器组件实现 编辑器组件 (CommonEditor.tsx) CommonEditor 是对 Wa... - [整合 Enjoy 模版引擎](https://tio-boot.com/zh/71_tio-boot-admin/15.html): 整合 Enjoy 模版引擎 本文介绍如何在 tio-boot-admin 项目中集成 Enjoy 模版引擎,并实现数据库数据渲染到前端页面。 一、引入 Enjoy 模版引擎 在项目启动时,执行以下配置: 该配置会完成: 初始化 Enjoy 引擎 设置模版路径 启用模版渲染能力 二、后端实现 1. Handler 编写 创建一个 Handler,用于: ... - [72_文件存储](https://tio-boot.com/zh/72_%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8/): 72_文件存储 本目录包含 8 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《文件上传数据表》。 : 文档《本地存储》。 : 文档《存储到 亚马逊 S3》。 : 文档《存储到 Cloudflare R2》。 : 文档《存储到 腾讯 COS》。 : 文档《存储到 阿里云 OSS》... - [文件上传数据表](https://tio-boot.com/zh/72_%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8/01.html): 文件上传数据表 在这个指南中,我们将详细介绍如何设计和实现一个文件上传和管理系统的数据库 1. 文件表设计 首先,我们需要设计一个表来存储上传文件的相关信息。以下是一个示例的 SQL 表结构: 插入示例数据: 该表记录了文件的基本信息和元数据,如文件的 MD5 值、文件名、文件大小、存储路径和标签等。 2. 业务表设计 业务表用于存储与业务相关的信息,... - [本地存储](https://tio-boot.com/zh/72_%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8/02.html): 本地存储 本篇文章介绍一个实例,演示如何将文件存储到本地文件系统。通过配置和编写相应的代码,实现文件的上传、存储及访问功能。 目录 实现本地存储 配置文件 配置类 数据库配置类 DbConfig 处理器配置类 HandlerConfiguration 业务层 接入层 文件上传文档 1. 客户端生成文件的 MD5 值 2. 检查文件是否已上传 3. 上传... - [存储到 亚马逊 S3](https://tio-boot.com/zh/72_%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8/03.html): 存储到 亚马逊 S3 使用 AWS S3 存储文件并整合到 Tio-Boot 项目中 本文将详细介绍如何在 AWS S3 上配置存储桶,并将其整合到 Tio-Boot 项目中,实现文件的上传、存储及相关信息的保存到数据库。本文包含所有必要的配置步骤、代码示例及相关说明,确保您能够顺利完成集成。 目录 AW3 S3 配置 创建存储桶 设置公开权限 修改桶... - [存储到 Cloudflare R2](https://tio-boot.com/zh/72_%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8/04.html): 存储到 Cloudflare R2 本文介绍如何: 创建 Cloudflare R2 Bucket 绑定自定义域名 获取 AccountId 配置 CORS 创建 R2 API Token 配置环境变量 使用 Java S3 SDK 上传文件到 R2 一、创建 R2 Bucket 进入 Cloudflare 控制台: 依次进入: 输入 Bucket 名... - [存储到 腾讯 COS](https://tio-boot.com/zh/72_%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8/05.html): 存储到 腾讯 COS 添加依赖 编写工具类 TencentStorageService 接收文件上传并入库 SystemFileTencentCosHandler - [存储到 阿里云 OSS](https://tio-boot.com/zh/72_%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8/06.html): 存储到 阿里云 OSS 添加依赖 配置key upload file AliyunStorageService AliyunOssUtils - [73_tio-mail-wing](https://tio-boot.com/zh/73_tio-mail-wing/): 73_tio-mail-wing 本目录包含 19 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-mail-wing简介》。 : 文档《任务1:实现POP3系统》。 : 文档《使用 getmail 验证 tio-mail-wing POP3 服务》。 : 文档《任务2:... - [tio-mail-wing简介](https://tio-boot.com/zh/73_tio-mail-wing/01.html): tio-mail-wing简介 核心目标 实现邮件接收服务 (SMTP):能够接收来自其他邮件服务器(如 QQ、Gmail 发来的邮件)或邮件客户端(如 Foxmail、Outlook 发出的邮件)的邮件。 实现邮件读取服务 (POP3/IMAP):允许邮件客户端(如 QQ 邮箱 App、Gmail App、Thunderbird)连接到我们的服务器,... - [任务1:实现POP3系统](https://tio-boot.com/zh/73_tio-mail-wing/02.html): 任务1:实现POP3系统 POP3 协议详解 (Post Office Protocol version 3) POP3 是一种应用层协议,其全称为“邮局协议第3版”。顾名思义,它的工作模式非常像现实生活中的邮局信箱。 核心思想: 去邮局的信箱取信,把所有信件都拿出来带回家,然后的信箱就空了。在家阅读、整理、删除这些信件,这些操作都与邮局无关了。 PO... - [使用 getmail 验证 tio-mail-wing POP3 服务](https://tio-boot.com/zh/73_tio-mail-wing/03.html): 使用 getmail 验证 tio-mail-wing POP3 服务 1. 简介 在完成了 tio-mail-wing 项目 POP3 服务的基础协议实现后,我们需要一个专业、健壮的客户端工具来进行全面和严格的验证。telnet 和 curl 适用于快速的、命令级的调试,而 getmail 则是一个成熟的、遵循 RFC 规范的邮件收取工具,它能模拟真... - [任务2:实现 SMTP 服务](https://tio-boot.com/zh/73_tio-mail-wing/04.html): 任务2:实现 SMTP 服务 SMTP 协议详解 (Simple Mail Transfer Protocol) SMTP,全称为“简单邮件传输协议”,是互联网上传输电子邮件的核心协议。如果说 POP3 是“收信”的协议,那么 SMTP 就是“寄信和送信”的协议。 核心思想: 写好一封信,把它投进邮筒。邮递员(的 SMTP 服务器)会收走这封信,然后根... - [数据库初始化文档](https://tio-boot.com/zh/73_tio-mail-wing/05.html): 数据库初始化文档 1. 文档概述 本文档为 tio-mail-wing IMAP 邮件系统项目提供完整的 PostgreSQL 数据库初始化方案。方案包含两部分: 数据表结构定义 (DDL): 创建项目所需的所有核心数据表,其设计充分考虑了 IMAP 协议的特性、数据库性能优化以及未来的可扩展性。 基础数据填充 (DML): 初始化系统所需的默认用户及... - [用户管理](https://tio-boot.com/zh/73_tio-mail-wing/06.html): 用户管理 1. 概述 MwUserService 是 tio-mail-wing 项目中负责处理所有用户相关业务逻辑的核心服务层组件。它的主要职责包括用户身份认证和用户信息查询,为上层应用(如 IMAP 的 LOGIN 命令处理模块)提供稳定、安全的接口。 2. 服务层实现 (MwUserService.java) 2.1. 类定义与职责 2.2. 核... - [邮件管理](https://tio-boot.com/zh/73_tio-mail-wing/07.html): 邮件管理 mailbox.sql Email WhereClauseResult MailBoxService MailSaveAtom MailSaveService MailService - [任务3:实现 SMTP 服务 数据库版本](https://tio-boot.com/zh/73_tio-mail-wing/08.html): 任务3:实现 SMTP 服务 数据库版本 1. 项目背景 该项目基于 TIO 框架,提供了一个完整的 SMTP 服务实现,支持以下特性: 使用 SMTP 协议处理邮件收发 支持 EHLO/HELO、AUTH LOGIN、MAIL FROM、RCPT TO、DATA、RSET、QUIT 等命令 将接收的邮件内容持久化到数据库(通过 MailService... - [任务4:实现 POP3 服务(数据库版本)](https://tio-boot.com/zh/73_tio-mail-wing/09.html): 任务4:实现 POP3 服务(数据库版本) 本任务旨在基于 Tio 框架和已有的服务层(MwUserService、MailService 等)实现一个支持数据库交互的 POP3 服务器。本文档介绍了各个组件的功能及配置方法,并保留了原有代码示例。 项目结构 配置与启动:Pop3ServerConfig 负责读取配置、创建 Tio 服务实例并启动监听。... - [IMAP 协议](https://tio-boot.com/zh/73_tio-mail-wing/10.html): IMAP 协议 IMAP(Internet Message Access Protocol)的实现要比 POP3、SMTP 复杂得多,因为它是有状态的、功能丰富的,且响应格式多样。我们将采用“最小可用”策略,先实现主流客户端所需的核心功能,使其能够连接服务器并收发邮件。 一、IMAP 协议概述 IMAP 与 POP3 并列,是另一种主流的邮件读取协议。... - [拉取多封邮件](https://tio-boot.com/zh/73_tio-mail-wing/11.html): 拉取多封邮件 Recent标签是在什么时候清除的 根据 RFC 3501(IMAP4rev1)中对 \Recent 标志的定义,它并不是在第一次 SELECT 之后立即清除的,而是一个“会话级”新邮件标记,其清除时机如下: 同一会话内的 SELECT/EXAMINE 不会清除它 当在同一个连接(session)里再次对同一信箱执行 SELECT 或 E... - [任务5:实现 IMAP 服务(数据库版本)](https://tio-boot.com/zh/73_tio-mail-wing/12.html): 任务5:实现 IMAP 服务(数据库版本) 任务概述 本任务旨在基于 T-IO 框架和数据库后端,实现一个完整的 IMAP 服务。系统包含以下几部分: ImapPacket:用于表示网络数据包的简单封装。 ImapSessionContext:会话级上下文,用于管理客户端状态、登录信息和当前选中邮箱。 ImapServerAioListener:连接级... - [IMAP实现讲解](https://tio-boot.com/zh/73_tio-mail-wing/13.html): IMAP实现讲解 1. 邮件格式内容示例 下面展示了一封存储在数据库中的邮件原始内容示例(包括头部和正文): Message-ID:全局唯一标识符,由发件端或服务器生成。 Date:邮件发送或接收时间,含时区偏移。 MIME-Version、Content-Type:表明邮件的多媒体或字符集格式。 From/To/Subject:标准头部字段,分别指发... - [IMAP 手动测试脚本](https://tio-boot.com/zh/73_tio-mail-wing/14.html): IMAP 手动测试脚本 前提条件 IMAP 服务器已启动,监听 127.0.0.1:143。(如端口不同,请将下面所有示例中的端口相应替换。) 已有用户 user1@tio.com,密码为 00000000。 本示例同时提供 telnet 和 curl 两种测试方式。 一、Telnet 交互测试 启动 Telnet 会话 成功连接后,应立即看到类似: ... - [IMAP 认证机制](https://tio-boot.com/zh/73_tio-mail-wing/15.html): IMAP 认证机制 IMAP 协议支持多种认证方式,其中最常见的是: 两步验证(LOGIN):客户端先请求用户名,再请求密码。 一步验证(PLAIN):客户端一次性提交用户名和密码。 下面分别介绍这两种方式的报文流程及在服务端的实现。 一、两步验证(LOGIN) 报文流程 客户端发起 AUTHENTICATE LOGIN,服务端依次发送用户名和密码的 ... - [主动推送](https://tio-boot.com/zh/73_tio-mail-wing/16.html): 主动推送 服务端收到新邮件且客户端在线时,主动将邮件推送到客户端 报文 服务端再收到新邮件后向客户端发送的报文内容如下 报文讲解 是服务端在 IDLE 状态下“主动”发给客户端的无标签(untagged)通知,用来告诉客户端:当前信箱里共有 9 封邮件,其中 1 封是新近到达的。 详细来说,按照 IMAP 协议(RFC 3501)和其 IDLE 扩展(... - [namesapce](https://tio-boot.com/zh/73_tio-mail-wing/17.html): namesapce NAMESPACE 命令的作用是在 IMAP 会话中让客户端查询服务器上可用的邮箱命名空间(namespace),并获取每个命名空间对应的名称前缀(prefix)和层级分隔符(hierarchy delimiter)。具体来说,它告诉客户端: 个人命名空间(Personal Namespace) 客户自己的邮箱都放在哪个前缀下,以及... - [CONDSTORE and QRESYNC](https://tio-boot.com/zh/73_tio-mail-wing/18.html): CONDSTORE and QRESYNC 核心思路是利用一个全局递增的“修改序号”(mod-seq)来标记每条消息的状态变动,然后让客户端带上自己上次同步时看到的 mod-seq,仅拉取自那以后“真正变动”过的消息(新邮件、标志改动或被删除),从而避免每次都要全量扫描、也不会把旧邮件当“新邮件”再次推送。 一、原理讲解 mod-seq(修改序号) 服... - [74_tio-mcp-server](https://tio-boot.com/zh/74_tio-mcp-server/): 74_tio-mcp-server 本目录包含 4 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《实现 MCP Server 开发指南》。 : 文档《MCP 协议》。 : Markdown 文档。 - [实现 MCP Server 开发指南](https://tio-boot.com/zh/74_tio-mcp-server/01.html): 实现 MCP Server 开发指南 本文系统性讲解如何基于 tio-boot 从零实现一个符合 MCP(Model Context Protocol) 的 Server,并通过 SSE(Server-Sent Events) 与 MCP Client(如 openai-mcp)完成真实协议交互。文末保留了完整代码与完整抓包协议内容,便于对照实现细节与... - [MCP 协议](https://tio-boot.com/zh/74_tio-mcp-server/08.html): MCP 协议 参考连接 https://www.bilibili.com/video/BV1NRQxYXEuc https://www.bilibili.com/video/BV1AnQNYxEsy https://www.bilibili.com/video/BV1P3XTYPEJm/ - [/zh/74_tio-mcp-server/11.html](https://tio-boot.com/zh/74_tio-mcp-server/11.html): 全网首发:从零搭建 Springboot+MCP+JUnit 项目 【搭配CherryStudio】 https://www.bilibili.com/video/BV1qUXkYRE6C/?spm_id_from=333.1007.tianma.1-3-3.click&vd_source=69e3cff470444b21e8c322dddec00def - [75_tio-sip](https://tio-boot.com/zh/75_tio-sip/): 75_tio-sip 本目录包含 16 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《SIP Server 第一版原理说明》。 : 文档《SIP Server 第一版实战》。 : 文档《一、Windows 平台测试》。 : 文档《SIP Server 第二版实战》。 : 文档《... - [SIP Server 第一版原理说明](https://tio-boot.com/zh/75_tio-sip/01.html): SIP Server 第一版原理说明 1. 目标 这一版系统的目标不是做一个完整的运营级 SIP 平台,而是先把最小链路跑通: 监听 SIP TCP 5060 和 SIP UDP 5060 接收终端发来的 INVITE 从本地动态分配一个 RTP 端口 返回带 SDP answer 的 200 OK 等待对端发送 ACK 对端开始往协商好的 RTP 端... - [SIP Server 第一版实战](https://tio-boot.com/zh/75_tio-sip/02.html): SIP Server 第一版实战 1. 文档目标 本文介绍如何使用 tio-core 框架实现一个最小可运行的 SIP Echo 服务。 这个服务的目标不是做一个完整的 SIP 平台,而是先打通一条最关键的语音链路: 服务端同时监听 SIP TCP 5060 和 SIP UDP 5060 终端发起 INVITE 服务端解析 SIP 和 SDP 服务端动... - [一、Windows 平台测试](https://tio-boot.com/zh/75_tio-sip/03.html): SIP 通话测试说明 本文档说明如何在 Windows、macOS 和 Android 平台上使用 SIP 软电话客户端进行基本的通话测试。测试目标是验证客户端是否能够通过指定的 SIP 地址发起呼叫。 测试使用示例地址: 该地址表示: 用户:1001 服务器:192.168.3.211 端口:5060 协议:SIP 一、Windows 平台测试 Wi... - [SIP Server 第二版实战](https://tio-boot.com/zh/75_tio-sip/04.html): SIP Server 第二版实战 可以这么描述。 背景 当前项目基于 tio-core 自研了一个轻量级 SIP Server,用来承接语音呼叫接入,并为后续语音机器人、ASR/TTS、LLM 实时对话打基础。 第一版已经完成了最小链路验证,核心能力包括: 监听 SIP TCP 5060 和 SIP UDP 5060 收到 INVITE 后分配动态 R... - [SIP Server 第三版实战](https://tio-boot.com/zh/75_tio-sip/05.html): SIP Server 第三版实战 可以这样描述第三版本。 背景 在前两个版本的基础上,SIP Server 已经逐步从“可跑通的最小 demo”演进为“具备基本协议能力的语音接入服务”。 第一版主要解决的是链路验证问题,完成了: SIP TCP/UDP 5060 接入 INVITE 建链 动态 RTP 端口分配 200 OK + SDP 返回 RTP ... - [性能优化](https://tio-boot.com/zh/75_tio-sip/06.html): 性能优化 把 整个 CallSessionManager 优化成更高性能版本(避免 getByLocalRtpPort 的 O(n) 扫描,适合高并发 SIP server) 修改前 优化后 优化版本2 - [基于 MediaProcessor 对接 Realtime 模型说明](https://tio-boot.com/zh/75_tio-sip/07.html): 基于 MediaProcessor 对接 Realtime 模型说明 1. 系统整体流程 SIP Server 已经实现了完整的语音通话链路: SIP 建立通话 SDP 协商音频 codec(PCMU / PCMA) RTP 接收语音数据 解码为 PCM 音频 交给 MediaProcessor 处理 处理后的音频重新编码为 RTP 回发给通话对端 整... - [对接大语言模型](https://tio-boot.com/zh/75_tio-sip/08.html): 对接大语言模型 背景 原来的 SIP Server 已经把通话底座全部打通了,SIP 建链、SDP 协商、RTP 收发、G711 编解码这些底层能力都已经稳定存在。系统里真正留给业务扩展的点只有一个,就是 MediaProcessor。默认实现只是把收到的音频原样返回,所以表现出来就是回声。现在要做的事情,是把这个“回声处理器”替换成“实时模型处理器”... - [支持 G722 宽带语音](https://tio-boot.com/zh/75_tio-sip/09.html): 支持 G722 宽带语音 一、背景 当前项目基于 tio-core 自研了一套轻量级 SIP Server,用于承接语音呼叫接入,并为后续语音机器人、ASR、TTS、Realtime LLM 对话等能力提供底层通话链路。 在前几个阶段中,系统已经逐步完成了以下能力建设: 第一阶段:最小链路打通 第一版主要完成了 SIP 和 RTP 的基础连通性验证,具... - [G722编码和解码](https://tio-boot.com/zh/75_tio-sip/10.html): G722编码和解码 一、背景 在前面的几轮演进中,当前项目已经完成了从 SIP 建链、SDP 协商、RTP 收发,到 MediaProcessor 媒体处理抽象,再到 Realtime 模型桥接的一整套基础能力建设。整体架构已经具备“电话接入 → 音频处理 → 模型交互 → RTP 回发”的完整闭环。 不过,在 codec 支持层面,系统此前主要围绕 ... - [会话级采样率转换](https://tio-boot.com/zh/75_tio-sip/11.html): 会话级采样率转换 一、背景 在上一篇中,系统已经完成了 G722Codec 的接入,并基于 java-media-codec 为 RTP 层补齐了 G722 的实际编码和解码能力。到这一步,当前项目在 codec 维度上已经不再局限于 PCMU / PCMA 两种 G.711 窄带语音,而是具备了在 SDP 协商成功后进入 16k 宽带链路的能力。 不... - [增加 9196 回声测试分机](https://tio-boot.com/zh/75_tio-sip/13.html): 增加 9196 回声测试分机 一、背景 当前项目基于 tio-core 自研了一套轻量级 SIP Server,用于承接语音呼叫接入,并为后续语音机器人、ASR、TTS、Realtime LLM 对话等能力提供底层通话链路。 在前面的几个阶段中,系统已经逐步完成了以下能力: SIP TCP / UDP 监听 INVITE / ACK / BYE 基本流... - [语音系统链路说明](https://tio-boot.com/zh/75_tio-sip/14.html): 语音系统链路说明 在 AI 电话系统中,音频通常会经过多个模块处理。 一个典型的语音处理链路如下: 该链路表示:电话网络使用 8k 语音,而 AI 模型通常使用 更高采样率 的音频进行处理,因此系统需要在不同阶段进行 采样率转换(Resample)。 整个流程可以分为三个主要阶段: 电话网络接入阶段 AI 模型处理阶段 语音回传阶段 下面对每个阶段进行... - [一、Gemini Realtime 的打断机制](https://tio-boot.com/zh/75_tio-sip/15.html): 当用户先提问,模型开始语音回答;在模型语音还没播完时,用户再次说话,希望“插话”或“打断”;但模型没有马上停下当前语音,而是继续把原来的语音输出完,或者至少继续输出一段。这就导致用户和模型同时说话,交互体验像“抢话”。 这个现象通常叫: barge-in failure 也就是“插话失败”或“打断失败” 可以,这个能力官方文档里是支持的。你现在要补的是... - [76_tio-log-server](https://tio-boot.com/zh/76_tio-log-server/): 76_tio-log-server 本目录包含 4 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《简介》。 : 文档《收集 docker 日志》。 : 文档《入库》。 - [简介](https://tio-boot.com/zh/76_tio-log-server/01.html): 简介 - [收集 docker 日志](https://tio-boot.com/zh/76_tio-log-server/02.html): 收集 docker 日志 - [入库](https://tio-boot.com/zh/76_tio-log-server/03.html): 入库 - [77_manim](https://tio-boot.com/zh/77_manim/): 77_manim 本目录包含 32 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Teach me anything - 基于大语言的知识点讲解视频生成系统》。 : 文档《Manim 开发环境搭建》。 : 文档《生成场景提示词》。 : 文档《生成代码》。 : 文档《完整脚本示例... - [Teach me anything - 基于大语言的知识点讲解视频生成系统](https://tio-boot.com/zh/77_manim/01.html): Teach me anything - 基于大语言的知识点讲解视频生成系统 应用作品详细描述 题目说明: 本应用通过多阶段提示和跨平台协同,实现用户前端简单输入到高质量、专业动画教学视频的自动化生成,主要面向教育行业,旨在降低复杂知识点可视化的门槛。 1️⃣ 简介 背景信息: 随着在线教育和短视频教学的迅猛发展,教师与内容创作者对高质量、专业化的动画讲... - [Manim 开发环境搭建](https://tio-boot.com/zh/77_manim/02.html): Manim 开发环境搭建 本文将详细说明如何搭建 Manim 的开发环境以及如何编写一个简洁、生动、形象的数学动画,演示公式 [ (a+b)^2 = a^2 + 2ab + b^2 ] 的证明过程。 第一部分 Latex and ffmpeg 为了顺利运行 Manim 并生成动画,需要配置以下几项环境组件:安装 LaTeX 发行版与 FFmpeg。下面... - [生成场景提示词](https://tio-boot.com/zh/77_manim/03.html): 生成场景提示词 本方案旨在实现从用户简单输入到专业动画视频生成的全自动转换,通过多阶段提示和跨平台协同,确保生成的视频不仅内容详实、专业且动画效果精美。下文将分步骤介绍整个流程,并附上生成视频文案和详细场景提示的提示词示例。 1. 用户问题(前端传递) 用户输入 用户在前端界面提交一个简单的主题,例如:“已知 ( f(x)=x^2 ),求解该函数的切线... - [生成代码](https://tio-boot.com/zh/77_manim/04.html): 生成代码 提示词 - [完整脚本示例](https://tio-boot.com/zh/77_manim/05.html): 完整脚本示例 大模型生成的完整的脚步如下 cpu - [TTS服务端](https://tio-boot.com/zh/77_manim/06.html): TTS服务端 查看66_java-uni-ai-server - [废弃](https://tio-boot.com/zh/77_manim/07.html): 废弃 - [废弃](https://tio-boot.com/zh/77_manim/08.html): 废弃 - [废弃](https://tio-boot.com/zh/77_manim/09.html): 废弃 - [使用 SSE 流式传输生成进度的实现文档](https://tio-boot.com/zh/77_manim/10.html): 使用 SSE 流式传输生成进度的实现文档 在视频生成过程中,由于生成操作耗时较长,传统的阻塞式等待会严重影响用户体验。为此,本方案采用了 Server-Sent Events(SSE)技术,在视频生成过程中实时将进度数据推送给客户端。下文详细介绍了核心代码实现、设计思路以及工作流程。 1. 整体架构与设计思路 本方案主要由两个模块组成: 请求处理模块(... - [整合全流程完整文档](https://tio-boot.com/zh/77_manim/11.html): 整合全流程完整文档 本文档描述了通过单一代码提示词完成从主题生成、代码生成、代码执行到视频播放的全流程。主要包括数据库设计、数据接口定义、Java 后端逻辑(含大模型调用、Python 代码生成与修复、Linux 服务器代码执行),以及测试用例。下文对每个部分的代码做了详细说明,并解释了其主要逻辑。 1. 数据库设计 该系统主要涉及四张数据表,它们分别... - [HLS 动态推流技术文档](https://tio-boot.com/zh/77_manim/12.html): HLS 动态推流技术文档 本系统旨在实现客户端上传由 Manim 生成的多个 MP4 场景文件,服务端利用内部的 native‑media 项目(替代 ffmpeg)对这些文件进行转换、分段处理,并动态更新 HLS 播放列表(m3u8 文件)。客户端只需获取持续更新的 m3u8 地址,即可实现无缝、低延迟播放整个场景视频流。 1. 概述 系统核心模块包... - [manim 分场景生成代码](https://tio-boot.com/zh/77_manim/13.html): manim 分场景生成代码 1. 思路 在传统的 Manim 渲染流程中,所有场景的帧生成、视频合成以及音频配音都会在全部完成后,才统一输出为最终的视频文件。这种方式虽能保证完整性,但等待时间较长,不利于实时播放或快速反馈。 为提升响应速度和用户体验,本方案采用“分段处理”的策略:每个场景单独渲染生成视频和音频,并在完成后立即输出。这样,用户无需等待全... - [分场景运行代码及流式播放支持](https://tio-boot.com/zh/77_manim/14.html): 分场景运行代码及流式播放支持 本篇文档旨在详细说明如何分场景运行代码,以及如何利用流式传输(Stream)技术实现视频播放。文档内容包含运行过程说明、接口调用示例以及完整的 Java 代码实现,并对各个模块进行了详细解释,帮助读者全面理解整个流程。 1. 运行过程说明 在之前的工作中,我们已经实现了分场景生成代码,本节主要介绍如何分场景运行代码以及如何... - [分场景业务端完整实现流程](https://tio-boot.com/zh/77_manim/15.html): 分场景业务端完整实现流程 本文档详细介绍了分场景业务端的完整实现流程,主要内容包括以下几个部分: 整体流程概述:描述了系统的业务流程,从调用大模型生成场景代码到将生成的代码发送到远程服务器(java-kit-server)执行,再到 java-kit-server 自动处理视频文件与流式播放支持。 代码生成与错误修复提示模板:展示了用于大模型生成代码以... - [Maiim布局管理器](https://tio-boot.com/zh/77_manim/16.html): Maiim布局管理器 摘要 在使用 Manim 制作动画时,大模型自动生成的代码常会出现元素重叠的问题。为了解决这一难题,我们设计了一个通用的 LayoutManager,它能够: 为不同的 Mobject(图形、曲线等)自动分配唯一颜色,保持视觉区分度。 对 Text、MathTex、Axes 等文字或坐标系元素保留黑色,以确保可读性。 递归注册 V... - [仅仅生成场景代码](https://tio-boot.com/zh/77_manim/17.html): 仅仅生成场景代码 思路 提取工具模块 将所有公共方法集中到 manim_utils.py 中。 将布局管理器独立到 layout_manager.py 中。 场景脚本引用 在的场景文件中,引入并调用上述两个模块: 生成指令约定 向大模型发送的提示中,明确说明「只需要生成场景脚本部分,不包含 manim_utils.py 和 layout_manager... - [使用 modal 运行 manim 代码](https://tio-boot.com/zh/77_manim/18.html): 使用 modal 运行 manim 代码 一 CPU 版本 manim_a_plus_b.py modal_run_with_manim.py 二 GPU 版本 四、下载文件 五、常见问题: Q:GPU 型号如何选择? T4:性价比最高,适合常规视频动画加速。 A100 或 V100:更高性能,价格较贵,适合特别复杂的场景。 Q:如何调整分辨率? 修改... - [Python 使用 Modal GPU 加速渲染](https://tio-boot.com/zh/77_manim/19.html): Python 使用 Modal GPU 加速渲染 本文介绍如何利用 Modal.com 的云端 GPU 服务,快速部署并运行 Python 渲染任务。文中不仅对 Modal.com 的 GPU 服务做了简单介绍,还提供了从安装 CLI、创建应用、定制容器,到水平扩展以及 GPU 加速运行的全流程示例。值得注意的是,第一次运行可能会稍慢,但之后的运行速度... - [Modal 平台 GPU 环境下运行 Manim](https://tio-boot.com/zh/77_manim/20.html): Modal 平台 GPU 环境下运行 Manim 在本教程中,我们将演示如何配置一个 Modal 应用,使其在带 GPU(例如 A10G)的容器中运行 Manim 脚本进行渲染。整个过程包含以下关键步骤: 选择合适的基础镜像:使用 NVIDIA 提供的 CUDA 开发镜像(如 nvidia/cuda:12.2.0-devel-ubuntu22.04),... - [Modal Manim OpenGL 安装与使用](https://tio-boot.com/zh/77_manim/21.html): Modal Manim OpenGL 安装与使用 Manim Community 版自 2021 年起引入了 OpenGL 后端以支持 GPU 渲染。尽管通过 OpenGL 能够在一定程度上加速渲染,但实测发现速度并没有提升太多。下面将详细说明如何在 Modal 环境下搭建支持 OpenGL 的 Manim 渲染环境。 1. 环境简介 Manim Co... - [优化 GPU 加速](https://tio-boot.com/zh/77_manim/22.html): 优化 GPU 加速 无解 - [生成视频封面流程](https://tio-boot.com/zh/77_manim/23.html): 生成视频封面流程 思路 本流程的基本思路是利用大语言模型生成符合要求的 Manim 脚本,执行该脚本后,利用 Manim 渲染出静态视频封面。文档中详细介绍了生成 Manim 代码时需要遵循的规则、常见问题以及正确的编码示例。 流程思路 大语言模型生成代码 模型根据输入的主题提示(例如:“什么是正弦函数”),结合预设的系统提示词生成完整可运行的 Man... - [Java 调用 manim 命令 执行代码 生成封面](https://tio-boot.com/zh/77_manim/24.html): Java 调用 manim 命令 执行代码 生成封面 1. 项目背景与整体思路 本项目主要用于接收客户端提交的 Manim 脚本代码,通过 Java 程序调用 Manim 渲染工具执行该脚本,生成视频封面图片。整体流程如下: 请求接收 HTTP 请求发送包含 Manim 脚本代码到后端。后端控制器(Handler)接收请求,并调用服务层处理代码执行任务... - [Manim 图像生成服务客户端文档](https://tio-boot.com/zh/77_manim/25.html): Manim 图像生成服务客户端文档 一、简介 随着 AI 与可视化技术的结合,自动化生成教学或演示用的动画图像变得至关重要。本项目基于 Manim(一个 Python 动画引擎)与 Google Gemini 模型,通过 Java 服务端控制代码生成、渲染与错误修复,最终生成可用于前端展示的图像。 本文档将带领读者了解整个 Manim 图像生成客户端的... - [manim render help](https://tio-boot.com/zh/77_manim/26.html): manim render help - [显示 中文公式](https://tio-boot.com/zh/77_manim/27.html): 显示 中文公式 示例代码 Manim 脚本详解:创建带中文公式和语音的物理教辅动画 1. 概述 该 Python 脚本使用 Manim 动画引擎(一个用于创建数学动画的库)来生成一个教学视频片段。这个片段具体演示了如何计算一个物理问题——飞轮的转动动能。脚本的核心特性包括: 中文支持:能够在 Text(普通文本)和 MathTex(LaTeX 数学公式... - [ManimGL(manimgl)](https://tio-boot.com/zh/77_manim/28.html): ManimGL(manimgl) ManimGL(manimgl)在 Debian 上的开发环境搭建与常见坑位排查(含真实问题复盘) 本文面向希望在 Debian 上使用 3Blue1Brown 原版 Manim(ManimGL / manimgl)进行动画开发与视频导出的同学。内容包含: ManimGL(manimgl)与 Manim Communi... - [Manim 实战入门:用代码创造数学动画](https://tio-boot.com/zh/77_manim/40.html): Manim 实战入门:用代码创造数学动画 简介 前言 欢迎来到 Manim 的世界!Manim 是一个强大的动画引擎,最初由 Grant Sanderson (3Blue1Brown) 开发,用于制作精美的数学解释视频。它使用 Python 编程语言,让您能够通过代码精确控制动画的每一个细节,创造出专业级的可视化效果。 这本书是为初学者设计的,特别是那... - [欢迎](https://tio-boot.com/zh/77_manim/41.html): 欢迎 欢迎阅读到这里,我们正在招募 manim相关工程师,请发送简历到 litongjava001@gmail.com,备注 video_tutor - [78_mainim_demos](https://tio-boot.com/zh/78_mainim_demos/): 78_mainim_demos 本目录包含 31 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《01》。 : 文档《02》。 : 文档《02》。 : 文档《02》。 : 文档《Chemistry - Kjeldahl Method》。 : 文档《Physics - Geomet... - [01](https://tio-boot.com/zh/78_mainim_demos/01.html): 01 topic sence prompt code - [02](https://tio-boot.com/zh/78_mainim_demos/02.html): 02 topic 场景提示 代码 - [02](https://tio-boot.com/zh/78_mainim_demos/03.html): 02 topic 场景提示 代码 Video https://manim.collegebot.ai/cache/499192080877916160/videos/1080p30/CombinedScene.mp4 - [02](https://tio-boot.com/zh/78_mainim_demos/04.html): 02 topic 场景提示 Coe Video https://manim.collegebot.ai/cache/499197165058035712/videos/1080p30/CombinedScene.mp4 - [Chemistry - Kjeldahl Method](https://tio-boot.com/zh/78_mainim_demos/05.html): Chemistry - Kjeldahl Method https://manim.collegebot.ai/data/hls/500243360083316736/main.mp4 - [Physics - Geometric Brownian Motion](https://tio-boot.com/zh/78_mainim_demos/06.html): Physics - Geometric Brownian Motion https://manim.collegebot.ai/data/hls/500200028518977536/main.mp4 - [Computer Science - Gradient Descent](https://tio-boot.com/zh/78_mainim_demos/07.html): Computer Science - Gradient Descent - [Math - Properties of Kites](https://tio-boot.com/zh/78_mainim_demos/08.html): Math - Properties of Kites - [Math - Rational Zero Theorem](https://tio-boot.com/zh/78_mainim_demos/09.html): Math - Rational Zero Theorem - [/zh/78_mainim_demos/10.html](https://tio-boot.com/zh/78_mainim_demos/10.html): Math - Integration By Substitution - [/zh/78_mainim_demos/11.html](https://tio-boot.com/zh/78_mainim_demos/11.html): Chemistry - Kjeldahl Method - [/zh/78_mainim_demos/12.html](https://tio-boot.com/zh/78_mainim_demos/12.html): Physics - Geometric Brownian Motion - [/zh/78_mainim_demos/13.html](https://tio-boot.com/zh/78_mainim_demos/13.html): Chemistry - Kjeldahl Method - [/zh/78_mainim_demos/14.html](https://tio-boot.com/zh/78_mainim_demos/14.html): Math - Integration By Substitution - [generate a video from unit circle to cos](https://tio-boot.com/zh/78_mainim_demos/15.html): generate a video from unit circle to cos Topic generate a video from unit circle to cos Sennce code - [什么是向量](https://tio-boot.com/zh/78_mainim_demos/16.html): 什么是向量 code video https://manim.collegebot.ai/cache/499830182130651136/videos/1080p30/CombinedScene.mp4 - [生成一个三角函数讲解视频](https://tio-boot.com/zh/78_mainim_demos/17.html): 生成一个三角函数讲解视频 code video https://manim.collegebot.ai/cache/499940685498376192/videos/1080p30/CombinedScene.mp4 - [/zh/78_mainim_demos/18.html](https://tio-boot.com/zh/78_mainim_demos/18.html): why sky is blue? https://manim.collegebot.ai/data/hls/500598558963335168/main.mp4 - [欧拉公式的几何意义](https://tio-boot.com/zh/78_mainim_demos/19.html): 欧拉公式的几何意义 video https://manim.collegebot.ai/data/hls/500642289342857216/main.mp4 Sence prompt code - [/zh/78_mainim_demos/20.html](https://tio-boot.com/zh/78_mainim_demos/20.html): Why Rainbows Are Actually Circular How Black Holes Actually Work The Secret Pattern in Prime Numbers Why Ice Floats (And Why That's Amazing) The Mathematics of Bee Honeycomb How... - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_01.html): PYPH 151 homework 1 Quesiton 1 Question If two vectors have the same magnitude, do their components have to be the same? No. The magnitude of a vector is equal to the Pythagorea... - [PYPH 151 homework 1 Quesiton 2](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_02.html): PYPH 151 homework 1 Quesiton 2 Quesiton Explain why a vector cannot have a component greater than its own magnitude. A vector’s magnitude is the Pythagorean sum of its component... - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_03.html): PYPH 151 homework 1 Quesiton 1 - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_04.html): PYPH 151 homework 1 Quesiton 1 - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_05.html): PYPH 151 homework 1 Quesiton 1 - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_06.html): PYPH 151 homework 1 Quesiton 1 - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_07.html): PYPH 151 homework 1 Quesiton 1 - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_08.html): PYPH 151 homework 1 Quesiton 1 - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_09.html): PYPH 151 homework 1 Quesiton 1 - [PYPH 151 homework 1 Quesiton 1](https://tio-boot.com/zh/78_mainim_demos/PYHS_151_01_10.html): PYPH 151 homework 1 Quesiton 1 - [80_性能测试](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/): 80_性能测试 本目录包含 10 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《压力测试 - tio-http-serer》。 : 文档《压力测试 - tio-boot》。 : 文档《压力测试 - tio-boot-native》。 : 文档《压力测试 - netty-boot... - [压力测试 - tio-http-serer](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/01.html): 压力测试 - tio-http-serer 测试方式 通过 apache benchmark 工具进行压力测试 测试环境 JDK 信息: java version "1.8.0_361" Java(TM) SE Runtime Environment (build 1.8.0_361-b09) Java HotSpot(TM) 64-Bit Serve... - [压力测试 - tio-boot](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/02.html): 压力测试 - tio-boot 1. 测试概述 本文档主要通过 ApacheBench (ab) 和 wrk 两种工具,对基于 [tio-boot][^1] 搭建的本地服务器进行高并发访问压力测试,以评估其在大规模请求场景下的性能表现和稳定性。 2. 环境与测试代码 代码开源地址 https://github.com/litongjava/tio-bo... - [压力测试 - tio-boot-native](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/03.html): 压力测试 - tio-boot-native https://github.com/litongjava/tio-boot-http-request-handler-demo 测试结果 - [压力测试 - netty-boot](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/04.html): 压力测试 - netty-boot 测试代码 服务器配置 在进行性能测试之前,除了运行的 Netty 应用外,还需要确保操作系统和网络环境都做了相应的准备与调优。以下是一些常见的步骤和需要检查的配置命令: 1. 系统资源检查 CPU 和内存 确认服务器的 CPU 核心数和内存大小,确保有足够的资源应对高并发测试。 lscpu free -m cat /... - [性能测试对比](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/05.html): 性能测试对比 测试数据 java-aio netty-boot tio-boot 对比分析 根据提供的测试数据,以下是 Java AIO、Netty-Boot 以及 Tio-Boot 三个 Web 中间件在 ApacheBench 压力测试下的性能分析与对比: 1. 基本性能数据 2. 请求延迟分析 Java AIO 50% 的请求在 88 ms 内完... - [TechEmpower FrameworkBenchmarks](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/06.html): TechEmpower FrameworkBenchmarks 测试报告 - [压力测试 - tio-boot 12 C 32G](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/07.html): 压力测试 - tio-boot 12 C 32G 1. 测试概述 本文档主要通过 ApacheBench (ab) 和 wrk 两种工具,对基于 [tio-boot][^1] 搭建的本地服务器进行高并发访问压力测试,以评估其在大规模请求场景下的性能表现和稳定性。 2. 环境与测试代码 代码开源地址 https://github.com/litongja... - [HTTP/1.1 Pipelining 性能测试报告](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/08.html): HTTP/1.1 Pipelining 性能测试报告 本文通过使用 wrk 工具对开启和关闭 HTTP/1.1 pipeline 时服务器的性能进行对比测试。 测试环境 工具: wrk 测试地址: http://127.0.0.1:8080/plaintext 测试时长: 60 秒 线程数: 4 并发连接数: 256 超时时间: 8 秒 开启 Pipe... - [tio-boot vs Quarkus 性能对比测试报告](https://tio-boot.com/zh/80_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/09.html): tio-boot vs Quarkus 性能对比测试报告 1. 测试目的 对比 tio-boot 与 Quarkus 在相同硬件环境、相同并发模型下的 HTTP /plaintext 接口性能,重点关注: 吞吐量(Requests Per Second, RPS) 平均延迟 尾延迟(P99 / Max) 在 Keep-Alive 场景下的稳定性 该测试... - [81_tio-boot](https://tio-boot.com/zh/81_tio-boot/): 81_tio-boot 本目录包含 9 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《简介》。 : 文档《Swagger 整合到 Tio-Boot 中的指南》。 : 文档《待定》。 : 文档《待定》。 : 文档《高性能网络编程中的 ByteBuffer 分配与回收策略》。 : ... - [简介](https://tio-boot.com/zh/81_tio-boot/01.html): 简介 tio-boot源码解析和开发细节披露 - [Swagger 整合到 Tio-Boot 中的指南](https://tio-boot.com/zh/81_tio-boot/02.html): Swagger 整合到 Tio-Boot 中的指南 本文档介绍了如何将 Swagger 整合到 Tio-Boot 项目中。 添加依赖 在 pom.xml 文件中添加以下依赖: 注意:Swagger 会增加项目的打包体积,因此不推荐在生产环境中使用。 Swagger 图示 加载静态文件 swagger-bootstrap-ui 的静态资源位于以下目录: ... - [待定](https://tio-boot.com/zh/81_tio-boot/03.html): 待定 - [待定](https://tio-boot.com/zh/81_tio-boot/04.html): 待定 - [高性能网络编程中的 ByteBuffer 分配与回收策略](https://tio-boot.com/zh/81_tio-boot/05.html): 高性能网络编程中的 ByteBuffer 分配与回收策略 —— 基于 t-io 的实践优化 背景 在 Java NIO 网络编程中,ByteBuffer 是最基础的 I/O 缓冲容器。 默认情况下,很多框架会在发送响应时直接调用: 这种“临时分配 → 写出 → 交由 GC 回收”的模式,在高并发场景下会遇到几个问题: GC 压力大:短生命周期的 Byt... - [TioBootServerHandler 源码解析](https://tio-boot.com/zh/81_tio-boot/06.html): TioBootServerHandler 源码解析 TioBootServerHandler 的 decode 方法 - [99_案例](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/): 99_案例 本目录包含 14 个文件和 0 个子目录,下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《封装 IP 查询服务》。 : 文档《tio-boot 案例 - 全局异常捕获与企业微信群通知》。 : 文档《tio-boot 案例 - 文件上传和下载》。 : 文档《tio-boot 案例 - 整合 a... - [封装 IP 查询服务](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/01.html): 封装 IP 查询服务 在互联网应用中,获取用户的地理位置信息是一项常见且重要的功能。本文将详细介绍如何封装一个基于百度 IP 查询服务的 IP 服务,包括从申请百度 API 密钥到实现完整的业务逻辑。通过本文,您将学会如何搭建一个高效、可缓存的 IP 查询服务,减少对百度 API 的调用次数,从而降低成本。 文章目的 本文旨在为开发者提供一个完整的、可... - [tio-boot 案例 - 全局异常捕获与企业微信群通知](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/02.html): tio-boot 案例 - 全局异常捕获与企业微信群通知 简介 在现代应用的开发中,稳定性和健壮性是至关重要的。生产环境中难免会遇到不可预见的异常,如何及时发现和处理这些异常是每个开发者和运维团队关心的问题。tio-boot 作为一款轻量级高性能框架,可以通过集成企业通知服务(如企业微信、飞书等)实现对异常的实时监控和告警。本文将介绍如何在 tio-b... - [tio-boot 案例 - 文件上传和下载](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/03.html): tio-boot 案例 - 文件上传和下载 添加依赖 数据表 创建一张数据表,保持上传的数据 配置文件 app.properties 启动类 配置类 实体类 常量类 UPlOAD_FOLDER_NAME 保持文件上传路径 service controller 上传文件 请求示例 响应示例 下载文件 http://localhost/file/downl... - [tio-boot 案例 - 整合 ant design pro 增删改查](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/04.html): tio-boot 案例 - 整合 ant design pro 增删改查 前端界面 data.d.ts service.ts column.tsx PostCreateForm.tsx index.tsx - [tio-boot 案例 - 流失响应](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/05.html): tio-boot 案例 - 流失响应 Introudction 使用 tio-boot 框架的 handler 组件从 openai chatgpt 获取流程响应并以流式的方法返回给客户端 使用了tio-boot框架,集成了与 OpenAI ChatGPT 进行交互的功能,并以服务器发送事件(Server-Sent Events, SSE)方式流式返回... - [tio-boot 案例 - 增强检索](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/06.html): tio-boot 案例 - 增强检索 这篇文章主要介绍,如何使用 tio-boot 框架的其他相关框架完成下面的功能 爬取数据:编写爬虫从网页上爬取数据 数据入库:将爬取的数据存入数据库,这里使用 postgre 数据库 向量化:将入库后的数据的部分字段进行向量化并入库,方便后续搜索 定时任务:使用定时任务每 1 小时更新整体的数据 网页数据分析 这里... - [tio-boot 案例 - 整合 function call](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/07.html): tio-boot 案例 - 整合 function call function call 简介 Function Call 的典型案例 —— 天气查询插件。 问「我明天应该穿什么?」此时 GPT 完全理解了我的问题,而且知道穿衣建议是需要了解相关天气情况的。因此它问了我在哪个城市,并且在获得该信息后,调用了天气查询插件。并基于天气查询返回的结果,告诉了... - [tio-boot 案例 - 定时任务 监控 PostgreSQL、Redis 和 Elasticsearch](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/08.html): tio-boot 案例 - 定时任务 监控 PostgreSQL、Redis 和 Elasticsearch 背景介绍 在现代的应用程序中,服务的可靠性和稳定性至关重要。为了确保系统在出现问题时能够及时发现并采取措施,对关键服务的监控显得尤为重要。本项目使用了 Tio-boot 框架,结合 PostgreSQL、Redis 和 Elasticsearc... - [Tio-Boot 案例:使用 SQLite 整合到登录注册系统](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/09.html): Tio-Boot 案例:使用 SQLite 整合到登录注册系统 本文提供了一个使用 tio-boot 将 SQLite 整合到登录和注册系统的完整指南。内容包括 HTTP API 规范、数据库设计、初始化数据、Java 实现、拦截器以及与前端的集成。 HTTP API 规范 1. 用户登录 接口:POST /api/login/account 请求体:... - [tio-boot 案例 - 执行 shell 命令](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/10.html): tio-boot 案例 - 执行 shell 命令 - [/zh/99_%E6%A1%88%E4%BE%8B/11.html](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/11.html): 题目:基于 Java 的 Tio-Boot 框架实现简单登录系统 一、项目背景 某网站需要开发一个「用户登录模块」,以便已注册用户通过账号和密码登录系统,访问受保护的页面。请使用 Java + tio-boot 框架 完成一个最小可用的登录系统,并满足以下功能与非功能性要求。 二、功能要求 项目基础环境 使用 tio-boot 搭建 HTTP 服务,端... - [/zh/99_%E6%A1%88%E4%BE%8B/12.html](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/12.html): Frontend Interview Task Edge Saved – Article Bookmarking App Time Limit 1 hour Goal Build a small server-side rendered web application using Cloudflare Workers and React Router ... - [/zh/99_%E6%A1%88%E4%BE%8B/13.html](https://tio-boot.com/zh/99_%E6%A1%88%E4%BE%8B/13.html): 题目:基于 Go 的 Hertz 框架实现一个简单登录系统 一、项目背景 请使用 Go 语言 + Hertz 框架 开发一个最小可用的用户登录系统,实现基本的认证与会话管理功能。 二、功能要求 基础环境 使用 Hertz 搭建 HTTP 服务(端口不限)。 使用 Go Modules 管理依赖,项目能正常启动并接收请求。 用户数据 使用任意方式存储用户... - [/zh/modecular_structure.html](https://tio-boot.com/zh/modecular_structure.html): 已将 “Lewis Structure” 栏改为 ASCII 示意结构,不再使用 AXE 简写: