{
  "schemaVersion": 1,
  "site": "https://tio-boot.com",
  "pages": [
    {
      "id": "about.md",
      "title": "Abount",
      "language": "und",
      "chapter": "overview",
      "url": "https://tio-boot.com/about.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/about.md",
      "source": "about.md",
      "description": "About Author - James 詹波 github 原来是这样的 JFinal (jfinal@qq.com) - Yao Wu Tan 谭耀武 github 程序员中最会拉筋的 CTO - Tong Li 李通 github (litongjava001@gmail.com ) Tong Li 简介 Ton",
      "keywords": [],
      "status": "document",
      "sha256": "62023eee7c397938f6d1d397ef74fd35db0a027f02ec902db01ef75fd8664b02"
    },
    {
      "id": "ai-retrieval.md",
      "title": "AI 检索与文档数据入口",
      "language": "und",
      "chapter": "overview",
      "url": "https://tio-boot.com/ai-retrieval.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/ai-retrieval.md",
      "source": "ai-retrieval.md",
      "description": "站点在每次构建时从当前 Markdown 正文生成检索资源，章节移动、改名或更新后无需手工维护另一份语料。 在线检索与语料下载 使用站内搜索可以快速定位文档；需要在本地建立检索索引时，可以按需下载以下资源： 下载完整 AI 语料 下载检索目录 下载完整文档 站内浏览与搜索需要联网，资源按访问需要加载。保存 JSONL、",
      "keywords": [],
      "status": "document",
      "sha256": "a03ff571e989a9ba073352ffa205dd17235acbe3d1d3a1ceab8347d7f1f81540"
    },
    {
      "id": "en/1 Quick Start/1.0 Quick Start.md",
      "title": "Quick Start",
      "language": "en",
      "chapter": "en/overview",
      "url": "https://tio-boot.com/en/1%20Quick%20Start/1.0%20Quick%20Start.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/en/1%20Quick%20Start/1.0%20Quick%20Start.md",
      "source": "en/1 Quick Start/1.0 Quick Start.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "81b69564c81816b5cfc0a5203d9dd384c270037954151fb87f3e9b5289fa6079"
    },
    {
      "id": "index.md",
      "title": "Home",
      "language": "und",
      "chapter": "overview",
      "url": "https://tio-boot.com/",
      "markdownUrl": "https://tio-boot.com/ai/pages/index.md",
      "source": "index.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    },
    {
      "id": "zh/01_introduction/01.md",
      "title": "tio-boot：新一代高性能 Java Web 开发框架",
      "language": "zh-CN",
      "chapter": "zh/01_introduction",
      "url": "https://tio-boot.com/zh/01_introduction/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/01_introduction/01.md",
      "source": "zh/01_introduction/01.md",
      "description": "toc 概述 tio-boot：好用、快速、节约时间的高性能 Java Web 开发框架。 tio-boot 是一款轻量级、高性能的 Java Web 开发框架，以 更快、更小、更简单 为目标，为开发者带来卓越的性能与开发效率。相比传统框架，tio-boot 提供显著优势： - 并发性能提升 ：快 2 ～ 3 倍 - ",
      "keywords": [],
      "status": "document",
      "sha256": "3a9463e4140dbb1b3a91f3bdc830bb2726a7461fcefe74279f07dab48a4a96ef"
    },
    {
      "id": "zh/01_introduction/02.md",
      "title": "tio-boot 入门示例",
      "language": "zh-CN",
      "chapter": "zh/01_introduction",
      "url": "https://tio-boot.com/zh/01_introduction/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/01_introduction/02.md",
      "source": "zh/01_introduction/02.md",
      "description": "toc 创建新项目 项目名称： tio-boot-web-hello 开源仓库地址： - https://github.com/litongjava/tio-boot-web-hello --- 添加依赖 TioBoot 已在 Maven 中央仓库发布。 - Maven Central 上的 TioBoot 如果您使用",
      "keywords": [],
      "status": "document",
      "sha256": "da3638793109925a5d0d995e406d9fb6163e0af80503fd6330e5207ec126145d"
    },
    {
      "id": "zh/01_introduction/03.md",
      "title": "Tio-Boot 配置 : 现代化的配置方案",
      "language": "zh-CN",
      "chapter": "zh/01_introduction",
      "url": "https://tio-boot.com/zh/01_introduction/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/01_introduction/03.md",
      "source": "zh/01_introduction/03.md",
      "description": "toc --- 简介 Tio-Boot 是一个基于 Java 的轻量级框架，提供了灵活的配置管理功能。它支持多环境配置、从多种来源读取配置，并提供了优先级管理，以满足不同场景下的需求。本指南将详细介绍 Tio-Boot 的配置方法及常见配置项的使用。 配置文件概述 Tio-Boot 使用 nexus.io.tio.ut",
      "keywords": [],
      "status": "document",
      "sha256": "f4d02e7cbc4dc3da53c7774a51c5b300a684f38e58aff7047e460610052c2272"
    },
    {
      "id": "zh/01_introduction/05.md",
      "title": "tio-boot 整合 hotswap-classloader 实现热加载",
      "language": "zh-CN",
      "chapter": "zh/01_introduction",
      "url": "https://tio-boot.com/zh/01_introduction/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/01_introduction/05.md",
      "source": "zh/01_introduction/05.md",
      "description": "简介 在现代软件开发中，快速迭代和高效测试是提升开发效率的关键。传统的开发流程中，每次代码变更后都需要重启应用程序，这不仅耗时且影响开发体验。为了优化这一过程，本文介绍了如何将 hotswap-classloader 与 tio-boot 结合使用，实现 Java 应用的热加载（Hot Swapping），从而在不重启",
      "keywords": [],
      "status": "document",
      "sha256": "fb85a87a546994ecc43697fc9db50097500497ac7db12d5a8eecc2c83a0a3bd1"
    },
    {
      "id": "zh/01_introduction/06.md",
      "title": "自行编译 tio-boot",
      "language": "zh-CN",
      "chapter": "zh/01_introduction",
      "url": "https://tio-boot.com/zh/01_introduction/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/01_introduction/06.md",
      "source": "zh/01_introduction/06.md",
      "description": "toc tio-boot 作为 TIO 生态系统中的核心组件，旨在简化 TIO 应用程序的引导过程。虽然 tio-boot 已经相对稳定，并且维护者保持每月发布一次的频率，但有时可能希望体验最新的功能和改进，此时手动编译安装是一个理想的选择。本文将详细介绍如何手动编译和安装 tio-boot 及其周边依赖项。 前言 T",
      "keywords": [],
      "status": "document",
      "sha256": "01d754d81296d177f7ca250d72d54987d13cc6f874b317cfa143eb860cec0c2b"
    },
    {
      "id": "zh/01_introduction/07.md",
      "title": "最新版本",
      "language": "zh-CN",
      "chapter": "zh/01_introduction",
      "url": "https://tio-boot.com/zh/01_introduction/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/01_introduction/07.md",
      "source": "zh/01_introduction/07.md",
      "description": "最新版本如下",
      "keywords": [],
      "status": "document",
      "sha256": "1a92bfcf3feec96a3fd0b08ad38a6cc07b8ccc2b7533278330a0aeb6ff2ad3af"
    },
    {
      "id": "zh/01_introduction/08.md",
      "title": "开发规范",
      "language": "zh-CN",
      "chapter": "zh/01_introduction",
      "url": "https://tio-boot.com/zh/01_introduction/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/01_introduction/08.md",
      "source": "zh/01_introduction/08.md",
      "description": "模版引擎命名规范 tio-boot 支持多种模版引擎,以 enjoy 模版引擎为例,介绍命名规范 - enjoy-templates: enjoy 模版目录 - enjoy-sql :enjoy sql 目录 - sql-templates :SqlTemplates 目录 接口命名规范 1. 接口概述 本系统提供三个",
      "keywords": [],
      "status": "document",
      "sha256": "2c82f64d95ff320ee0a1df101d104943e23debdd25ce23591112d47ddc7899d7"
    },
    {
      "id": "zh/01_introduction/index.md",
      "title": "01_introduction",
      "language": "zh-CN",
      "chapter": "zh/01_introduction",
      "url": "https://tio-boot.com/zh/01_introduction/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/01_introduction/index.md",
      "source": "zh/01_introduction/index.md",
      "description": "本目录包含 8 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-boot：新一代高性能 Java Web 开发框架》。 - 02.md : 文档《tio-boot 入门示例》。 - 03.md : ",
      "keywords": [],
      "status": "document",
      "sha256": "4a4f459fe4113702c8e2828e456b439c5ea9d540152b5309cf3131d6515c025c"
    },
    {
      "id": "zh/02_deployment/01.md",
      "title": "使用 Maven Profile 实现分环境打包 tio-boot 项目",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/01.md",
      "source": "zh/02_deployment/01.md",
      "description": "在软件开发过程中，不同的运行环境（如开发环境、生产环境、测试环境等）通常需要不同的配置和依赖。Maven 提供了 profiles 功能，允许开发者根据不同的需求切换构建配置，从而实现分环境打包。本指南将详细介绍如何通过 Maven Profile 配置，实现针对开发、生产、二进制包和 GraalVM 原生镜像的分环境",
      "keywords": [],
      "status": "document",
      "sha256": "80fbf02ded07333a283ed729add6a3dfe1c91c3b4b6c0fc4ce272770b727a7fe"
    },
    {
      "id": "zh/02_deployment/02.md",
      "title": "Maven 项目配置详解：依赖与 Profiles 配置",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/02.md",
      "source": "zh/02_deployment/02.md",
      "description": "本文档详细介绍了一个 Maven 项目的 pom.xml 文件配置，包括项目属性、依赖管理以及不同环境下的 Profiles 配置。通过本文档，您将了解如何配置项目的构建参数、依赖库以及针对开发、生产和其他特定环境的定制化设置。 目录 toc --- 项目属性配置 在 pom.xml 中， 标签用于定义项目的全局属性，",
      "keywords": [],
      "status": "document",
      "sha256": "64dc71f8907aa0b90a03c946f02492d2b5a9e1adc37359bbe6406d4a12707ac1"
    },
    {
      "id": "zh/02_deployment/03.md",
      "title": "tio-boot 打包成 FatJar",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/03.md",
      "source": "zh/02_deployment/03.md",
      "description": "在现代微服务和云原生应用的开发中，快速构建、部署和启动应用显得尤为重要。本文将介绍如何使用 tio-boot 将 Java 应用打包成轻量级的 FastJar，并在不同操作系统上进行启动和配置。 toc 1. 项目打包 首先，确保已经正确配置了 Java 环境变量。以 Windows 为例，设置 JAVA HOME 并",
      "keywords": [],
      "status": "document",
      "sha256": "d8a70a7a442cb7d2d4de09e881f342f9ac728d111a3c8bf6ef10d7ace28d35fd"
    },
    {
      "id": "zh/02_deployment/04.md",
      "title": "使用 GraalVM 构建 tio-boot Native 程序",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/04.md",
      "source": "zh/02_deployment/04.md",
      "description": "toc 本文将介绍如何使用 GraalVM 构建基于 tio-boot 的原生程序。这对于希望构建快速高效的 Java 服务器应用程序的开发人员尤其有用。我们将从安装必要的依赖开始，逐步构建一个可以独立于 JVM 运行的本地二进制镜像。 代码已提交至 GitHub 仓库 。 编写代码 pom.xml 配置 首先，配置 ",
      "keywords": [],
      "status": "document",
      "sha256": "fbe3c21146aacc98f025d10d6bb383cd4407004209bb5f2f8896be618f15a62e"
    },
    {
      "id": "zh/02_deployment/05.md",
      "title": "使用 Docker 部署 tio-boot",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/05.md",
      "source": "zh/02_deployment/05.md",
      "description": "本文档详细介绍了如何使用 Docker 部署 tio-boot 项目，包括安装 Java 和 Maven、克隆项目、使用 Docker 运行和构建镜像等步骤。 toc --- 安装 Java 首先，创建目录并下载 Oracle JDK 8u411： 解压并配置 Java 环境变量： 验证 Java 安装： 安装 Mav",
      "keywords": [],
      "status": "document",
      "sha256": "13bcba486ad1af0478aaa21e776fb3d452560610d8514e9a4579105c13399552"
    },
    {
      "id": "zh/02_deployment/06.md",
      "title": "部署到 Fly.io",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/06.md",
      "source": "zh/02_deployment/06.md",
      "description": "Fly.io 简介 Fly.io 是一个专注于将全栈应用和数据库部署到用户附近位置的平台。它通过将容器转换为运行在全球 30 多个地区的微型虚拟机（micro-VM），显著降低了延迟并提高了应用的响应速度。 部署到 Fly.io 本文将通过 https://github.com/litongjava/tio-boot-",
      "keywords": [],
      "status": "document",
      "sha256": "4691e670aecd41ef18defe7fac9ffd973510ca7339fed50f4f00ddb54c1dc5eb"
    },
    {
      "id": "zh/02_deployment/07.md",
      "title": "部署到 AWS Lambda",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/07.md",
      "source": "zh/02_deployment/07.md",
      "description": "将应用程序部署到 AWS Lambda 需要进行一些修改和配置。以下是详细步骤： 1. 打包应用程序 确保应用程序已经使用 Maven 打包： 2. 创建 Lambda 函数包 创建一个新的目录用于存放 Lambda 函数包，并将打包好的 JAR 文件复制到该目录： 在 lambda-package 目录下创建一个 b",
      "keywords": [],
      "status": "document",
      "sha256": "7eb204ea8b278e67d10e800ea7b72b0c01ca5d4770f1e689dc718f3122af6cb6"
    },
    {
      "id": "zh/02_deployment/08.md",
      "title": "到阿里云云函数",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/08.md",
      "source": "zh/02_deployment/08.md",
      "description": "阿里云云函数简介 阿里云的 serverless 产品 https://fcnext.console.aliyun.com/overview 部署到阿里云云函数 如果要将应用程序部署到阿里云云函数（Function Compute），需要进行以下步骤： 1. 创建函数计算项目 首先，确保已经安装了阿里云函数计算的 CL",
      "keywords": [],
      "status": "document",
      "sha256": "4d80895fddd42c7664267e06348130addf167c0225a523171c7eb80288d7857b"
    },
    {
      "id": "zh/02_deployment/09.md",
      "title": "使用 Deploy 工具部署",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/09.md",
      "source": "zh/02_deployment/09.md",
      "description": "toc 工具简介 为了简化部署流程并提高部署效率，我开发了一款名为 deploy 的工具，专用于将 tio-boot 工程快速部署到自有服务器上。该工具包含客户端和服务端两部分，用户需先在服务器上安装服务端，之后即可通过客户端进行部署操作。 工具已开源 ，源码地址如下： - deploy 工具 服务端安装 有关服务端的",
      "keywords": [],
      "status": "document",
      "sha256": "abb593ff3d55e3c2ba4fe010bcda0900f5eb8905e5cd4de6cad0188b4a14c8be"
    },
    {
      "id": "zh/02_deployment/10.md",
      "title": "使用Systemctl启动项目",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/10.md",
      "source": "zh/02_deployment/10.md",
      "description": "一、前提条件 操作系统：Linux（内核 ≥ 3.0，支持 systemd）。 拥有 root 或具有相应权限的用户。 已联网，能访问外部下载源。 --- 二、安装 Java 1.8.0 411 1. 创建下载目录并下载 JDK： 2. 解压到系统标准路径： 3. 配置环境变量（可添加到 /etc/profile 或 ",
      "keywords": [],
      "status": "document",
      "sha256": "f5e23ea7d8a120801b5aaa74d49660ff2fa9563de1ee32cbfdea2864ce18eaec"
    },
    {
      "id": "zh/02_deployment/11.md",
      "title": "使用 Jenkins 部署 Tio-Boot 项目",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/11.md",
      "source": "zh/02_deployment/11.md",
      "description": "在这篇博客中，我们将介绍如何使用 Jenkins 自动化部署 Tio-Boot 项目，帮助开发者实现项目的持续集成和部署（CI/CD）。本文详细介绍了从 Jenkins 安装、配置到项目构建、部署的每一步操作，并附带相关的原理说明。 Jenkins 简介 Jenkins 是一个开源的自动化服务器，广泛用于构建、测试和部",
      "keywords": [],
      "status": "document",
      "sha256": "e7ce56a3f665d60e44f66ba1fee3d9a3759a0287f579916968aef1c02da76154"
    },
    {
      "id": "zh/02_deployment/12.md",
      "title": "使用 Nginx 反向代理 Tio-Boot",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/12.md",
      "source": "zh/02_deployment/12.md",
      "description": "1. 简介 在高并发场景下，Tio-Boot 作为 Java 的高性能框架，配合 Nginx 反向代理可以进一步提升系统的稳定性和性能。本文将介绍如何通过配置 Nginx 反向代理 Tio-Boot 应用，并着重介绍如何通过 Keep-Alive 长连接来减少连接开销，提升整体性能。 2. 什么是 Keep-Alive",
      "keywords": [],
      "status": "document",
      "sha256": "f1c53d60985c156f35ce6ebba6af4f35d5dd267173181ca2351e6b0f96aed53d"
    },
    {
      "id": "zh/02_deployment/13.md",
      "title": "使用 Supervisor 管理 Java 应用",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/13.md",
      "source": "zh/02_deployment/13.md",
      "description": "Supervisor 是一个基于 Python 的进程管理工具，可用于在后台启动、监控和管理各类应用程序。本文档详细介绍了如何使用 Supervisor 来管理一个 Java 应用，从安装、配置到启动和监控，帮助构建一个稳定的运行环境。 toc 安装 Supervisor 如果尚未安装 Supervisor，可通过 p",
      "keywords": [],
      "status": "document",
      "sha256": "1a6470e6ba39579a3066d2df23207fe9e30912b3e7b0e9fb59c14781b0d8ee29"
    },
    {
      "id": "zh/02_deployment/14.md",
      "title": "历史部署页与替代方案",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/14.md",
      "source": "zh/02_deployment/14.md",
      "description": "本页保留历史路径，不再承载独立部署步骤。按部署目标选择已有完整章节： - 胖包与瘦包 ：依赖如何随应用交付。 - FatJar 打包 ：构建可执行 JAR。 - Docker ：镜像与容器部署。 - systemd ：Linux 服务管理。 - Nginx 反向代理 ：外部访问入口。 先确认 Java 与依赖版本，手动",
      "keywords": [],
      "status": "document",
      "sha256": "29c1aa51945f911bc2b8fa9efe4233211532b3a3fa992c17d6ff1475f30b218c"
    },
    {
      "id": "zh/02_deployment/15.md",
      "title": "胖包与瘦包的打包与部署",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/15.md",
      "source": "zh/02_deployment/15.md",
      "description": "toc 在现代软件开发中，高效的打包与部署是确保应用程序稳定运行和快速迭代的关键。尤其是在使用 Java 开发的项目中，选择合适的打包方式不仅影响应用程序的体积和启动速度，还直接关系到部署的便捷性和灵活性。本文将深入探讨 胖包 （Fat Package）与 瘦包 （Thin Package）的概念、优势，并详细介绍如何",
      "keywords": [],
      "status": "document",
      "sha256": "7ac3b404579ea1789894271ff5220de86d22cfdbc8f215d3fd351c472d95dd43"
    },
    {
      "id": "zh/02_deployment/16.md",
      "title": "使用 JDK 8 构建基础库与验证运行环境",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/16.md",
      "source": "zh/02_deployment/16.md",
      "description": "aio-socket 和 t-io 基础库使用 JDK 8 编译，可以统一 Java 8 平台 API 与字节码基线，便于应用在 Java 8 和较新的 Java 运行环境中复用构建产物。业务应用可以根据自身依赖选择运行环境，并对最终打包产物进行验证。 确认 Maven 使用 JDK 8 编译器由 Maven 实际运行",
      "keywords": [],
      "status": "document",
      "sha256": "7bbc46ce8431a9b15ca2577ef1a7cd28a86a89176b9f0357a113f1ff8cdda7f4"
    },
    {
      "id": "zh/02_deployment/index.md",
      "title": "02_deployment",
      "language": "zh-CN",
      "chapter": "zh/02_deployment",
      "url": "https://tio-boot.com/zh/02_deployment/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/02_deployment/index.md",
      "source": "zh/02_deployment/index.md",
      "description": "本目录包含 26 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《使用 Maven Profile 实现分环境打包 tio-boot 项目》。 - 02.md : 文档《Maven 项目配置详解：依赖与 P",
      "keywords": [],
      "status": "document",
      "sha256": "b432c71fe8402b9c708d74d7fd2d545d32b3089a340f0e3f8320f573c0ac2fc0"
    },
    {
      "id": "zh/03_logging/01-logback.md",
      "title": "tio-boot 整合 Logback",
      "language": "zh-CN",
      "chapter": "zh/03_logging",
      "url": "https://tio-boot.com/zh/03_logging/01-logback.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/03_logging/01-logback.md",
      "source": "zh/03_logging/01-logback.md",
      "description": "toc tio-boot 并未绑定任何特定的日志框架，而是使用 slf4j 作为日志门面。本文将介绍如何在开发 tio-boot 应用时集成 Logback 作为日志实现。 Logback 建议在开发 tio-boot 应用时使用 Logback 作为日志实现。以下是集成 Logback 的详细步骤： 1. 引入 Lo",
      "keywords": [],
      "status": "document",
      "sha256": "ea65b1881e7fa71a65f4bdbfc22b224553aa6e91b3a38cb0dbdecdee4b4189fd"
    },
    {
      "id": "zh/03_logging/index.md",
      "title": "日志",
      "language": "zh-CN",
      "chapter": "zh/03_logging",
      "url": "https://tio-boot.com/zh/03_logging/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/03_logging/index.md",
      "source": "zh/03_logging/index.md",
      "description": "本章介绍 tio-boot 应用的日志配置。完成入门 Demo 和部署后，可以配置日志输出，观察应用运行情况。 文章 - 整合 Logback 独立项目 tio-log-server 见 项目实战中的 tio-log-server 。",
      "keywords": [],
      "status": "document",
      "sha256": "882241fdb163453a424d35820b546235b05aa3091ce993db6427fd52b18d9c30"
    },
    {
      "id": "zh/04_configuration/01.md",
      "title": "配置参数",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/01.md",
      "source": "zh/04_configuration/01.md",
      "description": "配置文件 tio-boot 使用 EnvUtils 统一读取应用参数与私密配置。应用策略可以随 app.properties 发布，密钥保存在不提交的配置文件中，避免散落在业务代码。 文件按以下顺序合并，后加载的同名文件配置覆盖先前值： 1. 用户目录 .env 、 secrets.txt 。 2. 类路径 app.p",
      "keywords": [],
      "status": "document",
      "sha256": "66e0f2898d027040ec455e1108781c78f4b042717e394a2c8131ea2998039ae6"
    },
    {
      "id": "zh/04_configuration/02.md",
      "title": "服务器监听器",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/02.md",
      "source": "zh/04_configuration/02.md",
      "description": "1. 实现自定义服务器监听器 为了在 Tio-Boot 项目中创建一个自定义的服务器监听器，我们可以通过实现 TioBootServerListener 接口来拦截服务器启动的关键点，并添加一些自定义的启动逻辑。下面是一个实现自定义监听器的示例， MyServerListener 类负责在服务器启动后执行额外的操作。 ",
      "keywords": [],
      "status": "document",
      "sha256": "f235c599e5589c0e5d3e77251a5d9aacda5359d8bd03ff7f602429fe5b99b505"
    },
    {
      "id": "zh/04_configuration/03.md",
      "title": "内置缓存系统 AbsCache",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/03.md",
      "source": "zh/04_configuration/03.md",
      "description": "在构建高性能的网络应用时，缓存系统起着至关重要的作用。Tio-boot 框架内置了一种轻量级的缓存系统—— AbsCache 。本文将详细介绍如何使用 AbsCache 来缓存数据，并通过 CacheFactory 实现缓存实例的注册和管理。Tio-boot 框架内部状态都使用 AbsCache 来进行存储 简介 1.",
      "keywords": [],
      "status": "document",
      "sha256": "95a55341aa4c6df1f914c94a2a6f42ec1c3d77d0d89377fa38e0dd5e9d8d8d63"
    },
    {
      "id": "zh/04_configuration/04.md",
      "title": "使用 Redis 作为内部 Cache",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/04.md",
      "source": "zh/04_configuration/04.md",
      "description": "toc 内部 Cache 负责存储的信息 在 Tio-boot 运行过程中，内部状态信息会被存入缓存系统 AbsCache 。以下是 Tio-boot 内部会缓存的一些典型信息： 1. HTTP 会话（Session）数据 ：启用会话管理时，浏览器的会话信息会存储在缓存中，以便在后续请求中快速访问。默认情况下，使用 C",
      "keywords": [],
      "status": "document",
      "sha256": "845b8f120760d33444b03434f5528b10d51a283f23f22bea5286eff46d0b6103"
    },
    {
      "id": "zh/04_configuration/05.md",
      "title": "静态文件处理器",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/05.md",
      "source": "zh/04_configuration/05.md",
      "description": "在现代 Web 开发中，静态资源的高效管理和分发对提升用户体验至关重要。TioBoot 作为一款高性能的 Java Web 框架，提供了内置的静态文件处理器 DefaultStaticResourceHandler ，实现了 StaticResourceHandler 接口。然而，在某些复杂场景下，我们可能需要根据不同",
      "keywords": [],
      "status": "document",
      "sha256": "413901c90314e047590356b87eae95ad8d5970c051eaf6ce779c7c22f1b96654"
    },
    {
      "id": "zh/04_configuration/06.md",
      "title": "基于域名的静态资源隔离",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/06.md",
      "source": "zh/04_configuration/06.md",
      "description": "在多站点部署或不同环境隔离的场景下，我们可以通过基于域名的配置实现资源隔离。不同的域名对应不同的配置文件，进而映射到服务器文件系统中的不同目录。这样可以在一台服务器上为多个站点提供服务，每个站点的静态资源都存放在独立的目录中。在 tio-boot 中可以使用自定义 StaticResourceHandler 实现 数据",
      "keywords": [],
      "status": "document",
      "sha256": "21eb3cfe867cd008ece9051324faf518be97a92626588fca717591f4772352e0"
    },
    {
      "id": "zh/04_configuration/07.md",
      "title": "DecodeExceptionHandler",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/07.md",
      "source": "zh/04_configuration/07.md",
      "description": "DecodeExceptionHandler 是 tio-boot 的一个核心组件，用于处理消息解码失败的情况。这类失败通常表明可能存在网络攻击。本文档将详细介绍如何配置和实现自定义的 DecodeExceptionHandler ，以提升您的 tio-boot 服务器的安全性和稳定性。 目录 1. 服务器启动前的配置",
      "keywords": [],
      "status": "document",
      "sha256": "57521b50355b7aa5b37d4f53c3773a66e98821d0cd9255c2739cd2cfdb8462ac"
    },
    {
      "id": "zh/04_configuration/08.md",
      "title": "开启虚拟线程（Virtual Thread）",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/08.md",
      "source": "zh/04_configuration/08.md",
      "description": "toc 一、背景说明 自 Java 21 起， 虚拟线程（Virtual Thread） 正式成为稳定特性（JEP 444），为高并发场景提供了一种 低成本、高并发、阻塞友好 的线程模型。 虚拟线程由 JVM 调度，不再与操作系统线程一一对应，在面对大量阻塞型任务（如数据库、RPC、文件 IO）时，能够显著降低线程创建",
      "keywords": [],
      "status": "document",
      "sha256": "579db6c5413b37a45f4c3e14c5ae53381f0a6732c86c461ec04f3e2ebca6bc66"
    },
    {
      "id": "zh/04_configuration/09.md",
      "title": "框架级错误通知",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/09.md",
      "source": "zh/04_configuration/09.md",
      "description": "一、背景介绍 在实际生产环境中，应用启动阶段的异常（例如数据库连接失败、Redis 连接异常、注解扫描失败、服务启动失败等）如果不能被及时感知，往往会导致问题发现滞后。 TioBoot 提供了框架级通知能力 ，可以在应用启动的关键阶段捕获异常并通过自定义通知通道发送告警信息，从而实现启动即感知、失败即通知。 本文将详细",
      "keywords": [],
      "status": "document",
      "sha256": "dde72a90917fed87b623125f6bbca467d63bc08bdc337f10bca27b860ee71d1d"
    },
    {
      "id": "zh/04_configuration/index.md",
      "title": "04_configuration",
      "language": "zh-CN",
      "chapter": "zh/04_configuration",
      "url": "https://tio-boot.com/zh/04_configuration/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/04_configuration/index.md",
      "source": "zh/04_configuration/index.md",
      "description": "本目录包含 10 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《配置参数》。 - 02.md : 文档《服务器监听器》。 - 03.md : 文档《内置缓存系统 AbsCache》。 - 04.md : ",
      "keywords": [],
      "status": "document",
      "sha256": "b60dc06df8f7331cfb0449b6614476684eddda32e72888fee35cf21615204d53"
    },
    {
      "id": "zh/05_json/01.md",
      "title": "Json",
      "language": "zh-CN",
      "chapter": "zh/05_json",
      "url": "https://tio-boot.com/zh/05_json/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/05_json/01.md",
      "source": "zh/05_json/01.md",
      "description": "toc 概述 Tio-Boot 的 JSON 模块以抽象类 Json 为核心，方便扩展第三方实现。Tio-Boot 官方提供了五种 Json 实现，分别是 TioJson 、 FastJson2 、 Jackson 、 Gson 和 MixedJson ，这些实现均继承自抽象类 Json 。 抽象类 Json 的核心方",
      "keywords": [],
      "status": "document",
      "sha256": "a171a155f868d6a70f765c47788f4ff29894c29d2778b9ac3cc7d5a54920bbf0"
    },
    {
      "id": "zh/05_json/02.md",
      "title": "接受 JSON 和响应 JSON",
      "language": "zh-CN",
      "chapter": "zh/05_json",
      "url": "https://tio-boot.com/zh/05_json/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/05_json/02.md",
      "source": "zh/05_json/02.md",
      "description": "手动处理 Json 请求 接收 Json 数据 从 http 请求中获取 json 字符串 从 http 请求中获取 json 字符串,接收 JSON 数据有需要手动转为 JavaBean 示例代码 1. @RequestPath : @RequestPath(\"/test/json\"),用于声明这个类是一个请求控制器",
      "keywords": [],
      "status": "document",
      "sha256": "ee4a9f536c3e24e915d0d514670e2055365a2b440257c762676d3967cafd3025"
    },
    {
      "id": "zh/05_json/03.md",
      "title": "响应实体类",
      "language": "zh-CN",
      "chapter": "zh/05_json",
      "url": "https://tio-boot.com/zh/05_json/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/05_json/03.md",
      "source": "zh/05_json/03.md",
      "description": "toc RespBodyVo RespBodyVo 是一个自定义的响应体封装类，用于统一 API 接口的响应格式。通过使用 RespBodyVo ，可以确保所有 API 响应的一致性，便于前后端的协作和错误处理。 RespBodyVo 提供了多种静态工厂方法和链式调用方式，简化了响应的构建过程。 类定义 属性说明 - ",
      "keywords": [],
      "status": "document",
      "sha256": "673162305ec9d1b3c566e55af42c968fdf0b0ea428e76ff1a18d041414f3c2bb"
    },
    {
      "id": "zh/05_json/index.md",
      "title": "05_json",
      "language": "zh-CN",
      "chapter": "zh/05_json",
      "url": "https://tio-boot.com/zh/05_json/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/05_json/index.md",
      "source": "zh/05_json/index.md",
      "description": "本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Json》。 - 02.md : 文档《接受 JSON 和响应 JSON》。 - 03.md : 文档《响应实体类》。",
      "keywords": [],
      "status": "document",
      "sha256": "5371181ce85f68baceab7f0857788add2b973bcf6a377d939bae638d55b9e9cf"
    },
    {
      "id": "zh/06_web/01.md",
      "title": "概述",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/01.md",
      "source": "zh/06_web/01.md",
      "description": "TestControler 在 Web 开发中，常用的类包括 HttpRequest, HttpResponse, Reps 等。以下是一个使用了 tio-boot controller 的 Java 控制器示例： 这段代码演示了一些重要的注解的用法： 1. @AController : 这个注解标识一个类作为控制器（",
      "keywords": [],
      "status": "document",
      "sha256": "5fec41aa7b0f8cdc30e0e79e60d368d00f9ad7fe4c2053597344e51b16d8dbfc"
    },
    {
      "id": "zh/06_web/02.md",
      "title": "接收请求参数",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/02.md",
      "source": "zh/06_web/02.md",
      "description": "get 获取参数 这段代码定义了一个名为 get 的方法，通过 @RequestPath 注解映射到 URL 路径 /get 。方法接收两个字符串参数 before 和 end ，以及一个 HttpRequest 对象 request 。 Post 获取参数 这段代码定义了一个名为 post 的方法，通过 @Reque",
      "keywords": [],
      "status": "document",
      "sha256": "6781a643ff3906112641e9c7e5fe6fe80e46169429cd77b2418903911f60624e"
    },
    {
      "id": "zh/06_web/03.md",
      "title": "接收日期参数",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/03.md",
      "source": "zh/06_web/03.md",
      "description": "在 Tio-Boot 框架中，处理日期类型参数是开发中的常见场景。通过框架内置的类型转换功能，可以轻松地接收和处理前端传递的日期数据 Date 使用 Tio-Boot 框架处理 Date 类型参数 以下是一个简单的示例，演示如何在 Controller 中接收 Date 类型的参数。 示例代码 在上面的代码中， Bas",
      "keywords": [],
      "status": "document",
      "sha256": "f70e8e1ab98cd3ef18d823657edcc39427f7c6c0d6a9a4be1fbd8a5ee35d6db4"
    },
    {
      "id": "zh/06_web/04.md",
      "title": "接收数组参数",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/04.md",
      "source": "zh/06_web/04.md",
      "description": "在 Web 应用程序中，处理包含数组参数的 HTTP 请求是一项常见的需求。本文将介绍两种处理数组参数的方法： 1. 使用框架自带的绑定功能（From） 2. 使用自定义解析逻辑 1. 使用框架自带的绑定功能（From） 利用框架提供的注解和自动绑定功能，可以简化数组参数的接收和处理。以下是一个示例方法，展示如何通过 ",
      "keywords": [],
      "status": "document",
      "sha256": "faf10ba56ee07cf8d64cb9d2442cba726f273d49ad8ad2d2c4facb5ebebd28d6"
    },
    {
      "id": "zh/06_web/05.md",
      "title": "返回字符串",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/05.md",
      "source": "zh/06_web/05.md",
      "description": "这段代码定义了一个使用 tio-boot 框架的 HTTP 控制器，专门用于处理 /test/string 路径下的 Web 请求，并返回一个字符串。 - @RequestPath() : 方法注解，指定了此方法处理的具体请求路径。结合类注解，当 HTTP 请求发送到 /test/string 时，此方法将被调用。 -",
      "keywords": [],
      "status": "document",
      "sha256": "c9167cdb87137626b0ce33656a234d50df5114e48b0bada66419c476dd84e94b"
    },
    {
      "id": "zh/06_web/06.md",
      "title": "返回文本数据",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/06.md",
      "source": "zh/06_web/06.md",
      "description": "使用 Resps.txt 返回纯文本，由框架设置 text/plain 和对应的 charset，无需手写 Content-Type。 Resps.txt(response, body, \"UTF-8\") 复用传入的响应对象，保留已设置的状态码及其他响应头，使用 UTF-8 编码正文并设置纯文本 Content-Typ",
      "keywords": [],
      "status": "document",
      "sha256": "ec3bd384c6df851c6a25e1f62a264148877e943fd213bacf795bcb1f28fe40d5"
    },
    {
      "id": "zh/06_web/07.md",
      "title": "返回网页",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/07.md",
      "source": "zh/06_web/07.md",
      "description": "概述 本文档介绍如何使用 tio-boot 框架创建 Controller 来直接返回网页内容。通过这种方式，可以将存储在数据库中的 HTML 内容直接渲染到浏览器中。 控制器实现 完整代码示例 代码解析 1. 注解说明 - @RequestPath(\"/amazon products\") : 类级别的注解，定义控制器",
      "keywords": [],
      "status": "document",
      "sha256": "9f6285b1bef04c6f46a6eff4e1ee1489c846f46d9c42bc35b58cbea9524e9295"
    },
    {
      "id": "zh/06_web/08.md",
      "title": "请求和响应字节",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/08.md",
      "source": "zh/06_web/08.md",
      "description": "获取请求字节 Method index : - @RequestPath : 方法注解，没有提供具体的路径值，这意味着它将使用类级别的路径 /test/bytes 。因此，当 HTTP 请求发送到 /test/bytes 时，此方法将被调用。 - 方法接收一个 HttpRequest 对象作为参数，代表接收到的 HTT",
      "keywords": [],
      "status": "document",
      "sha256": "0a2f2098b945be17621e4d518913086d4f2b28021fdd7a74b1595314a452953c"
    },
    {
      "id": "zh/06_web/09.md",
      "title": "文件上传",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/09.md",
      "source": "zh/06_web/09.md",
      "description": "接收文件 接受文件在 Controller 的方法中添加 UploadFile 类型的参数,在发送 http 请求时,请求的 key 是 UploadFile 类型的参数名.通常是 file,下面的案例是 uploadFile 这段代码定义了一个处理 HTTP 请求的方法 index 。该方法通过 @RequestPa",
      "keywords": [],
      "status": "document",
      "sha256": "76bf5f71b14a3a973d7078e9fb2991bb6212217efc1d12642bcd6f4c6082d1ae"
    },
    {
      "id": "zh/06_web/10.md",
      "title": "文件下载",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/10.md",
      "source": "zh/06_web/10.md",
      "description": "本文详细介绍了如何在 tio-boot 后端应用程序中实现文件下载功能，涵盖任意文件下载、浏览器触发下载、以及 DOCX/PDF 文件下载等多种场景，同时还展示了如何生成二维码并通过浏览器下载二维码图片。内容包括完整的代码示例和详细的原理解析，适用于希望扩展或自定义文件下载功能的开发者。 --- toc 1. 任意文件",
      "keywords": [],
      "status": "document",
      "sha256": "809f0be9c9ca9e7ea5b9b0a580683e751bb3d25221baae84fc67fa23129021b5"
    },
    {
      "id": "zh/06_web/11.md",
      "title": "返回视频文件并支持断点续传",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/11.md",
      "source": "zh/06_web/11.md",
      "description": "本文档介绍如何通过 TioBoot Handler 返回视频文件，支持 HTTP Range 断点续传，以便前端页面使用 标签直接播放视频。文档中同时说明了如何禁用视频文件的 gzip 压缩，以避免浏览器在解码时出现错误。 背景说明 对于视频文件（例如 MP4 格式），由于其本身已经经过压缩，如果服务器再次对其进行 g",
      "keywords": [],
      "status": "document",
      "sha256": "312bf4da71e0064736c6f0fafd84423f96fb32c1f83d2a9c7bef9f22945fee66"
    },
    {
      "id": "zh/06_web/12.md",
      "title": "http Session",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/12.md",
      "source": "zh/06_web/12.md",
      "description": "这段代码定义了一个名为 putsession 的方法，通过 @RequestPath 注解映射到 /putsession URL 路径。该方法接收两个参数：一个字符串 value 和一个 HttpRequest 对象 request 。 方法的工作原理是： - 通过 request.getHttpSession() 获",
      "keywords": [],
      "status": "document",
      "sha256": "c8de0c02ef8dfc7c4cae26e6b422c365abfadf7ab88e39939e6b6169c2193c92"
    },
    {
      "id": "zh/06_web/13.md",
      "title": "Cookie 读取与设置",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/13.md",
      "source": "zh/06_web/13.md",
      "description": "Cookie 用于在浏览器与服务器之间保存少量状态。框架提供请求读取、响应设置及有效期配置，可以直接在 Handler 中使用。 读取请求 Cookie 请求中的 theme= 和 theme=\"\" 都保留为空字符串，可以与未携带 theme Cookie 的情况区分。值中已有的等号保持原样，例如 token=abc=",
      "keywords": [],
      "status": "document",
      "sha256": "8f242904f04038e7e9c393044bb14adac02250fdd3c8a66804975a5c0a369ae5"
    },
    {
      "id": "zh/06_web/14.md",
      "title": "重定向和转发",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/14.md",
      "source": "zh/06_web/14.md",
      "description": "本文将详细介绍在 tio-boot 中如何实现请求的 重定向 与 转发 ，并提供详细的示例代码和说明。通过本文，将了解两者的区别、适用场景以及具体的实现方法。 --- 一、重定向 (Redirect) 1.1 概念说明 重定向 是服务器告诉客户端（例如浏览器），“请求的资源已临时或永久移动到另一个 URL，请重新发起请",
      "keywords": [],
      "status": "document",
      "sha256": "a7b319be7d3f87dfeaf9ae136e38b45b60fd30747738c7f8dffae253d5a7f97c"
    },
    {
      "id": "zh/06_web/15.md",
      "title": "HttpRequest",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/15.md",
      "source": "zh/06_web/15.md",
      "description": "原始二进制请求体 框架按 Content-Type 识别请求体。 application/x-www-form-urlencoded 使用表单解析， multipart/form-data 使用文件表单解析，JSON 和纯文本使用文本格式。 application/octet-stream 、图片和其他未映射的媒体类型",
      "keywords": [],
      "status": "document",
      "sha256": "e179c2fb289f607c5f0e267156d03875bf9ca764ec9140fabf5021f7f88c9f78"
    },
    {
      "id": "zh/06_web/16.md",
      "title": "HttpResponse",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/16.md",
      "source": "zh/06_web/16.md",
      "description": "HttpResponse 类扩展自 HttpPacket ，用于表示 HTTP 响应。它包含了与 HTTP 响应相关的状态码、头部信息、Cookie 和主体内容。 构造方法 1. HttpResponse() - 说明：默认构造函数，初始化一个空的 HTTP 响应对象。 2. HttpResponse(HttpRequ",
      "keywords": [],
      "status": "document",
      "sha256": "3561d1a43f72601e065d7cc7c5d0e8042c0abfdcb49105119a0a85f458a78ab3"
    },
    {
      "id": "zh/06_web/17.md",
      "title": "Resps",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/17.md",
      "source": "zh/06_web/17.md",
      "description": "Resps 是响应构造工具类：把「正文 + Content-Type（可选下载头）」组装成一个 HttpResponse ，控制器只负责把它返回。文本、JSON、HTML、静态文件、图片与 Office 文档导出都用同一套方法，接口不必自己拼响应头。 toc 一、为什么用它 - 响应头集中设置 ： Content-Ty",
      "keywords": [],
      "status": "document",
      "sha256": "de6502140a0996db97abe88a07fa577cafaab3978e59fa7130d34acdee8e74f3"
    },
    {
      "id": "zh/06_web/18.md",
      "title": "RespBodyVo",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/18.md",
      "source": "zh/06_web/18.md",
      "description": "Introduction 响应可以使用 Map 自定义结构，推荐使用统一响应对象 RespBodyVo 。当前 nexus.io 版本的类位于 nexus.io.model.body.RespBodyVo ，由 java-model 提供，tio-boot 项目可使用。 RespBodyVo 是一个用于构造和管理响应对",
      "keywords": [],
      "status": "document",
      "sha256": "e309f42fd8a11c163259d6a182531127bdb3c3aa290bcdfff7b771affab16ee4"
    },
    {
      "id": "zh/06_web/19.md",
      "title": "Controller拦截器",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/19.md",
      "source": "zh/06_web/19.md",
      "description": "toc 概述 ControllerInterceptor 是 Tio-Boot 内置的拦截器，用于在控制器的 Action 方法执行前后进行统一处理。通过实现 ControllerInterceptor 接口，可以在请求进入业务方法前进行预处理，如权限校验、参数校验、日志记录等；在业务方法执行后对返回结果进行统一包装或",
      "keywords": [],
      "status": "document",
      "sha256": "61c6717b1436e24412d37daa3554ec421c4b7782c670e7a32e5871e0c438dab7"
    },
    {
      "id": "zh/06_web/20.md",
      "title": "请求拦截器",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/20.md",
      "source": "zh/06_web/20.md",
      "description": "toc 拦截器概述 在基于 Tio-Boot 的 HTTP 应用中，拦截器（Interceptor）是一种在请求到达业务处理器之前或响应返回客户端之后，对请求/响应进行预处理和后处理的机制。合理地使用拦截器，可用于集中化地处理以下场景： 请求校验 ：验证 HTTP 请求是否合法，拦截恶意或缺少关键信息的请求 鉴权与权限",
      "keywords": [],
      "status": "document",
      "sha256": "5bc7d74f29c7494f92e4daf1b66d1eaa7a677aa88d3b2c8542a247dc660b6752"
    },
    {
      "id": "zh/06_web/21.md",
      "title": "LoggingInterceptor",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/21.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/21.md",
      "source": "zh/06_web/21.md",
      "description": "概述 LoggingInterceptor是tio-boot内置的日志拦截器,之所以提供了这个接口,是为了提高性能. LoggingInterceptor 是一种自定义拦截器，专门用于在控制器方法执行前后记录日志到数据库。它耦合在 ControllerInterceptor 之后执行，可以： before 方法中：采集",
      "keywords": [],
      "status": "document",
      "sha256": "a0e617a1f0e719a7e5bd01dc5e3d4587bbf42c9f7a82831f147d677af8689f73"
    },
    {
      "id": "zh/06_web/22.md",
      "title": "全局异常处理器",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/22.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/22.md",
      "source": "zh/06_web/22.md",
      "description": "Tio-Boot 提供了 TioBootExceptionHandler 接口，用于对全局异常进行统一处理。通过使用全局异常处理器，您可以在应用程序中捕获并处理所有未处理的异常，从而提高系统的健壮性和可维护性。 在 Tio-Boot 中使用全局异常处理器 以下是如何在 Tio-Boot 应用程序中使用全局异常处理器的详",
      "keywords": [],
      "status": "document",
      "sha256": "54a5fc0c11bac13a4c7128714d8672532762bbf47ba071ac7cfac355e74f4b1f"
    },
    {
      "id": "zh/06_web/23.md",
      "title": "异步处理",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/23.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/23.md",
      "source": "zh/06_web/23.md",
      "description": "使用场景 大文件上传及上传后进行语音识别的应用场景 - 大文件上传: 企业员工上传完整的会议录音或录像文件 - 上传后进行语音识别: 对会议内容进行自动转写，生成会议纪要，便于后续查阅和分析讨论点 如果上传完成后不采用异步任务对文件进行语音识别，可能会出现以下问题： - 响应延迟： 语音识别是一个计算密集型的操作，特别",
      "keywords": [],
      "status": "document",
      "sha256": "a8ecf52397c335dfb98d52bbfa5b5c18a0a2022792a027d955c77ded4e9bd3a6"
    },
    {
      "id": "zh/06_web/24.md",
      "title": "动态 返回 CSS 实现",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/24.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/24.md",
      "source": "zh/06_web/24.md",
      "description": "本文介绍如何通过识别浏览器的 User-Agent，判断设备是移动端还是桌面端，并返回对应的 CSS 样式。 解析 User-Agent 常见的 User-Agent 示例 - Google Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/53",
      "keywords": [],
      "status": "document",
      "sha256": "55fbba45af49d1a9e3c0e9722d71bd5f3b57f2733ced1e9d0a4723c2e4dc8203"
    },
    {
      "id": "zh/06_web/25.md",
      "title": "返回图片",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/25.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/25.md",
      "source": "zh/06_web/25.md",
      "description": "下面的文档将介绍在 tio-boot 框架中，如何在 Controller 中返回图片给浏览器，包括生成验证码图片、二维码图片以及与 Next.js 配合返回图片的完整示例。 --- 1. 返回验证码图片 利用 Hutool 库生成并返回图形验证码。此示例通过 LineCaptcha 来生成带有干扰线的图形验证码，并以",
      "keywords": [],
      "status": "document",
      "sha256": "1fbc104834d1811d9a78e24946be3eed5f262d0673cea446cc7e895485c0c0f7"
    },
    {
      "id": "zh/06_web/26.md",
      "title": "跨域",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/26.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/26.md",
      "source": "zh/06_web/26.md",
      "description": "@EnableCORS 注解支持 在 Tio-Boot 项目中，如果想让 Controller 的 Action 支持跨域请求 (CORS)，可以通过在类或方法上添加 @EnableCORS 注解。 1. 类级别跨域支持 : 在 Controller 类上添加 @EnableCORS 注解，这样类下的所有方法都会自动支",
      "keywords": [],
      "status": "document",
      "sha256": "da3c8ec0a1d60d8c566d25eddee596f28561cb9ad9b11da191c71324490d32c3"
    },
    {
      "id": "zh/06_web/27.md",
      "title": "添加 Controller",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/27.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/27.md",
      "source": "zh/06_web/27.md",
      "description": "手动添加 Controller 在 tio-boot 框架中，启动类上使用 @AComponentScan 注解，Controller 类上使用 @RequestPath 注解。被 @AComponentScan 标记的启动类会自动扫描并初始化所有被 @RequestPath 标记的 Controller 类。 然而，",
      "keywords": [],
      "status": "document",
      "sha256": "2eaecf31f3a0c4650c45bc86aa22182d8fa5817d819a18df3485183ab8e02269"
    },
    {
      "id": "zh/06_web/28.md",
      "title": "Transfer-Encoding: chunked 实时音频播放",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/28.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/28.md",
      "source": "zh/06_web/28.md",
      "description": "什么是 Transfer-Encoding: chunked 浏览器在大多数情况下是支持以 Transfer-Encoding 为 \"chunked\" 的方式传输的音频实时播放的。这种传输方式允许服务器将音频数据分块传输，而不是一次性发送整个音频文件。这样，浏览器可以在接收到部分音频数据后立即开始播放，而无需等待整个文",
      "keywords": [],
      "status": "document",
      "sha256": "3bdb2273be55afb4bff0caa7f44d32db8911b282953717a8dc425434afaa8ba8"
    },
    {
      "id": "zh/06_web/29.md",
      "title": "Server-Sent Events (SSE)",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/29.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/29.md",
      "source": "zh/06_web/29.md",
      "description": "SSE 简介 Server-Sent Events（SSE）是一种允许服务器主动向客户端发送信息的技术。与 WebSocket 不同，SSE 是单向通信，仅服务器能向客户端发送数据。这使得 SSE 非常适合于需要服务器实时推送数据但客户端不需要发送信息的场景，例如实时通知和更新。 tio-boot 发送 Server ",
      "keywords": [],
      "status": "document",
      "sha256": "a89091b6264ccf5b73e216bd766f68f8cbe07764d480dcb09342644510e0ab17"
    },
    {
      "id": "zh/06_web/30.md",
      "title": "handler入门",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/30.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/30.md",
      "source": "zh/06_web/30.md",
      "description": "1. tio-boot 简介及 Handler 的定位 tio-boot 是一个基于 t-io 的高性能 Java Web 框架，支持 HTTP 服务开发。 在 tio-boot 中，HTTP 请求分为 Controller 和 Handler 两种处理方式： Controller ：支持自动请求参数封装、路由扫描，用",
      "keywords": [],
      "status": "document",
      "sha256": "898121ee83f7b60f1a96e26d720b20ea0d03ccb897b03dd7fb270a4aceb409d2"
    },
    {
      "id": "zh/06_web/31.md",
      "title": "返回 multipart",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/31.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/31.md",
      "source": "zh/06_web/31.md",
      "description": "1. 背景与问题 在一些“执行任务/生成内容”的接口里，返回值往往包含一个非常大的 JSON 字段（例如 json 、 output 、 std out 等）。如果服务端统一把所有字段拼成一个超大的 JSON 字符串再返回，客户端通常要做两件事： 1. 先把整个响应体一次性读完 2. 再把整段 JSON 反序列化 当 ",
      "keywords": [],
      "status": "document",
      "sha256": "ef35dbc4eafb11748b30100269bf8f1fc5e583b4046bf83e8e10a5d5877642bc"
    },
    {
      "id": "zh/06_web/32.md",
      "title": "Handler 的请求方法与错误响应",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/32.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/32.md",
      "source": "zh/06_web/32.md",
      "description": "使用方法路由约束 HTTP 方法，Handler 负责读取参数并生成业务响应。响应体可以使用 Map，推荐使用 RespBodyVo 统一构造成功与失败响应。下面示例兼容 Java 8，业务数据仍可使用 Map，不执行数据库写入。 启动参数可使用 --server.port=8100 --server.context-",
      "keywords": [],
      "status": "document",
      "sha256": "48f9428ac9f87906aeb742843ed6816832fcd99ddab3cc5f07bef4e6f52e07b2"
    },
    {
      "id": "zh/06_web/33.md",
      "title": "自定义 Handler 转发请求",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/33.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/33.md",
      "source": "zh/06_web/33.md",
      "description": "在一些情况下，我们可能需要查看客户端的请求转发到另个一个服端,包括请求头、请求体等。可以参考本文章实现 打印请求信息 拦截所有请求 配置一个 HttpRequestHandlerConfig 拦截所有请求 示例代码 输出信息示例 示例 1：JSON 格式的请求体 请求信息： 示例 2：表单格式的请求体 请求信息： 通过",
      "keywords": [],
      "status": "document",
      "sha256": "920db406df01cac49835ec4f54c78c3d4ff49944a390ef052a73ff8505f60321"
    },
    {
      "id": "zh/06_web/34.md",
      "title": "使用 HttpForwardHandler 转发所有请求",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/34.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/34.md",
      "source": "zh/06_web/34.md",
      "description": "ForwardHandler 简介 ForwardHandler 是 Tio-Boot 中用于请求转发的处理器，通常用于与第三方系统的集成。当请求在经过 Tio-Boot 的其他处理器（如 httpRequestInterceptor 、 httpRequestRouter 、 httpControllerRouter",
      "keywords": [],
      "status": "document",
      "sha256": "3a9f2e633a9f449f1b51cab10fdfcd57cdc64c2bc536e077c291dd0ef7d71150"
    },
    {
      "id": "zh/06_web/35.md",
      "title": "常用工具类",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/35.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/35.md",
      "source": "zh/06_web/35.md",
      "description": "HttpIpUtils - String getRealIp(HttpRequest request) 获取请求的真实 IP 地址。此方法支持多种代理环境，确保即使在复杂的代理链中，也能准确提取客户端的实际 IP 地址。",
      "keywords": [],
      "status": "document",
      "sha256": "0052f05ffbfe23c0f5792995d372fa7dd797c0ff96cc2d7671f49cacaa66f548"
    },
    {
      "id": "zh/06_web/36.md",
      "title": "HTTP Basic 认证",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/36.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/36.md",
      "source": "zh/06_web/36.md",
      "description": "HTTP Basic 认证是一种简单而有效的方法，用于限制对网络资源的访问。通过要求用户提供有效的用户名和密码，可以保护应用程序中的敏感端点。本文将探讨如何在 Tio-Boot 应用程序中集成 HTTP Basic 认证，以确保安全的访问控制。同时，我们还将重点介绍 Tio-Boot 处理 HTTP 请求头的一个重要特",
      "keywords": [],
      "status": "document",
      "sha256": "1c24586f160ad3117ed092accb3becb6960b46603ba133d2e5fe55ac2bd34d6b"
    },
    {
      "id": "zh/06_web/37.md",
      "title": "Http响应加密",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/37.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/37.md",
      "source": "zh/06_web/37.md",
      "description": "toc 一、背景与概述 在一些对数据安全要求较高的场景中，我们需要对服务端返回给客户端的 HTTP 响应体进行加密，以防止传输过程中的明文泄露。tio-boot 在底层已内置了对 HTTP 响应数据的加密支持： Controller 层 ：如果控制器直接返回对象或字符串，tio-boot 会自动调用配置的加解密器（ T",
      "keywords": [],
      "status": "document",
      "sha256": "c1017c7ce0532f3c9b4a88a8d719fce18e0fbd9f462bd1e46d48832a46bb5acb"
    },
    {
      "id": "zh/06_web/38.md",
      "title": "零拷贝",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/38.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/38.md",
      "source": "zh/06_web/38.md",
      "description": "通过 HttpFileDataHandler 和一条 GET 路由，可以把本地文件发布为 HTTP 资源，并复用框架的单段 Range、客户端缓存和零拷贝文件发送能力。 示例源码： tio-http-file-server 。 使用 tio-boot 搭建支持零拷贝的 HTTP 文件服务器 以下是示例项目的启动类，保留",
      "keywords": [],
      "status": "document",
      "sha256": "9602c3b5d71e90a67cdcfa3e54148bf20e70dfed26f008d123d8266b68b6f782"
    },
    {
      "id": "zh/06_web/39.md",
      "title": "分片上传",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/39.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/39.md",
      "source": "zh/06_web/39.md",
      "description": "1. 概述 本文档详细介绍了基于 Tio Boot 框架实现的文件分片上传服务。该服务旨在解决大文件上传过程中可能遇到的网络不稳定、超时等问题，通过将大文件分割成多个小块（分片）进行上传，提高上传的稳定性和效率。 1.1. 核心思想 分片上传 (Chunked Upload) ：客户端将待上传的大文件按照预设大小（如 ",
      "keywords": [],
      "status": "document",
      "sha256": "89f680f0b1d8a435df47dd7bc87c406e1a8086b86a81d2f3112a474469335e79"
    },
    {
      "id": "zh/06_web/40.md",
      "title": "接口访问统计",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/40.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/40.md",
      "source": "zh/06_web/40.md",
      "description": "本文档详细介绍如何在 Tio-Boot 框架中实现接口访问统计功能。通过实现 RequestStatisticsHandler 接口，我们创建了 DbRequestStatisticsHandler 类，用于记录每个 HTTP 请求的关键信息，并通过异步任务将数据保存到数据库中，为后续问题排查和系统性能分析提供数据依据",
      "keywords": [],
      "status": "document",
      "sha256": "037bce07bc1b1ce8e3e4617366824be8c7b191a6895b50e0acd14b96e5afc498"
    },
    {
      "id": "zh/06_web/41.md",
      "title": "接口请求和响应数据记录",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/41.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/41.md",
      "source": "zh/06_web/41.md",
      "description": "本文档详细介绍了如何基于 Tio-Boot 框架实现接口请求和响应数据的记录功能，同时统计接口的耗时。我们将创建两个实现类： - MyHttpResponseStatisticsHandler 用于记录接口响应数据，并统计接口耗时。 - DbRequestResponseStatisticsHandler 用于记录请求",
      "keywords": [],
      "status": "document",
      "sha256": "e69cb87784eb24aa8bc064f2396027c4028e5dff262e29ac0381e6d956272b8a"
    },
    {
      "id": "zh/06_web/42.md",
      "title": "WebJars",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/42.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/42.md",
      "source": "zh/06_web/42.md",
      "description": "本文档介绍如何在 Tio-Boot 中配置 WebJars 资源访问及 Swagger UI 页面访问的实现方式。通过 Tio-Boot 内置的 WebjarHandler 类和自定义的 SwaggerUiHandler ，我们可以实现对 WebJars 静态资源和 doc.html Swagger 页面文件的访问。 ",
      "keywords": [],
      "status": "document",
      "sha256": "4a6c65398d2b41ff70b4332d5dcdc6185ea6a96fba327ed63a19ae0c0937dac9"
    },
    {
      "id": "zh/06_web/43.md",
      "title": "JProtobuf",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/43.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/43.md",
      "source": "zh/06_web/43.md",
      "description": "一、简介 本文介绍另一种 JAVA 对象序列化神器—— ProtoBuf（Protocol Buffers） 。ProtoBuf 是由 Google 开发的一种用于序列化结构化数据的高效、灵活且语言中立的协议。它被广泛应用于数据通信、数据存储、RPC（远程过程调用）等场景，尤其适用于分布式系统和微服务架构中。Proto",
      "keywords": [],
      "status": "document",
      "sha256": "8095fced31f197fa7fc35f5c232b0eb1c19bf9ce07307bbff82755afe653a84a"
    },
    {
      "id": "zh/06_web/44.md",
      "title": "测速",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/44.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/44.md",
      "source": "zh/06_web/44.md",
      "description": "1、功能概述 SpeedTestHandler 是基于 Tio-Boot HTTP 框架的一个测速接口，能根据客户端传入的 size 参数（单位 MB）动态生成指定大小的二进制 payload 并返回，用于测试网络带宽及客户端接收性能。 --- 2、Handler 实现示例 说明 disableGzip(true) ：",
      "keywords": [],
      "status": "document",
      "sha256": "473d3baee1a8ce742d1f96e81c18d350c46fe12c05a31a5f2840824993f16fad"
    },
    {
      "id": "zh/06_web/45.md",
      "title": "Gzip Bomb：使用压缩炸弹防御恶意爬虫",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/45.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/45.md",
      "source": "zh/06_web/45.md",
      "description": "引言 在网络世界中，恶意爬虫可能导致服务器资源枯竭、数据被盗等问题。本文将介绍一种创新的防御策略—— Gzip炸弹 ，它通过发送高度压缩的数据（解压后体积指数级增长），使恶意爬虫消耗大量资源直至崩溃。以下实现基于Java的tio-boot框架，并附有Python爬虫示例展示其效果。 --- Java服务端实现 核心逻辑",
      "keywords": [],
      "status": "document",
      "sha256": "dd8c13cf84b1acc2b701c97cd0331a6d14734d2d662175e585389c7e75e8888d"
    },
    {
      "id": "zh/06_web/46.md",
      "title": "请求校验与响应转换",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/46.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/46.md",
      "source": "zh/06_web/46.md",
      "description": "通过框架统一控制请求大小、复用业务异常和转换响应值，可以让 Handler 专注于参数模型和服务调用。通用校验位于 tio-utils，HTTP 参数绑定位于 tio-http-common，响应转换位于 tio-boot，参数异常与业务异常由 java-model 提供。 统一配置正文大小 所有值均为字节整数。 ht",
      "keywords": [],
      "status": "document",
      "sha256": "7810c5d3fe36679dbd99ab69f82b78ca41e434140aceb5c072aee68bf298fb3e"
    },
    {
      "id": "zh/06_web/47.md",
      "title": "HttpRequestFunction：直接注册 Service 方法",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/47.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/47.md",
      "source": "zh/06_web/47.md",
      "description": "函数路由让一个具有明确输入、输出的 Service 方法直接成为 HTTP 入口。对于只负责读取 JSON、调用 Service、输出响应的接口，可以省略单独的 Handler 类，同时保留模型、校验、业务服务和路由配置的分层。 三个类型的职责 | 类型 | 职责 | | --- | --- | | IHttpRequ",
      "keywords": [],
      "status": "document",
      "sha256": "14892bed9ba26f4060a93a0b2e301b7693d881a5bc6abac4179141982344a052"
    },
    {
      "id": "zh/06_web/49.md",
      "title": "大文件导出：零拷贝发送 Excel、Word、PDF、PPT",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/49.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/49.md",
      "source": "zh/06_web/49.md",
      "description": "报表、合同、课件这类导出文件动辄几十 MB。 Resps 的导出方法除了接收 byte ，还可以直接接收 File ：文件不会读进堆内存，而是作为文件区间交给传输层发送。普通 HTTP 连接上由操作系统的 sendfile 完成零拷贝传输，TLS 连接上按块加密发送。 这样做的好处： - 内存占用与文件大小无关 ：无论",
      "keywords": [],
      "status": "document",
      "sha256": "f30dcea7abe6c5b2feea716f8d8f74379f62dba9bb1fb44f3eef089c4f98871d"
    },
    {
      "id": "zh/06_web/assets/index.md",
      "title": "assets",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/assets/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/assets/index.md",
      "source": "zh/06_web/assets/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - gzip mermaid 20250706 84636f.svg : 矢量图资源，用于本目录文档配图或结构示意。",
      "keywords": [],
      "status": "document",
      "sha256": "045ee6c58dbdf7444df0d5821571147a43cf6cd31d917238462bf9ed042a175f"
    },
    {
      "id": "zh/06_web/index.md",
      "title": "Web 开发",
      "language": "zh-CN",
      "chapter": "zh/06_web",
      "url": "https://tio-boot.com/zh/06_web/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/06_web/index.md",
      "source": "zh/06_web/index.md",
      "description": "本章按路由、请求响应、文件、会话和异步处理组织阅读顺序。 路由与参数 - 概述 - 添加 Controller - handler入门 - HttpRequestFunction：直接注册 Service 方法 - Handler 的请求方法与错误响应 - 接收请求参数 - 接收日期参数 - 接收数组参数 - Http",
      "keywords": [],
      "status": "document",
      "sha256": "69120107fafecf3f7e32fed00ae4a22b4686d7cd57cc67aca4b72a5602c806c8"
    },
    {
      "id": "zh/07_validation/01.md",
      "title": "数据紧校验规范",
      "language": "zh-CN",
      "chapter": "zh/07_validation",
      "url": "https://tio-boot.com/zh/07_validation/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/07_validation/01.md",
      "source": "zh/07_validation/01.md",
      "description": "规范描述 本规范旨在为后端 API 的数据校验与错误处理提供统一的标准，确保前后端在交互过程中能够高效、准确地传递和处理错误信息。规范内容包括以下几个方面： 1. 统一响应结构 所有后端 API 接口的响应均采用统一的 JSON 格式，主要包含以下字段： - data ：用于存放响应的具体数据内容。 - 在 请求成功 ",
      "keywords": [],
      "status": "document",
      "sha256": "9d34c6ad8ba2c6e59dafdaf2bbafe974786e76a605f5f67733b8f7e5ee3dae3c"
    },
    {
      "id": "zh/07_validation/02.md",
      "title": "参数校验",
      "language": "zh-CN",
      "chapter": "zh/07_validation",
      "url": "https://tio-boot.com/zh/07_validation/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/07_validation/02.md",
      "source": "zh/07_validation/02.md",
      "description": "使用自定义方法进行参数校验 为了提升性能，建议在 Controller 或 Service 中使用自定义方法进行参数校验。以下是一个示例，展示了如何实现登录参数的校验逻辑。 在这个示例中， LoginValidator 类负责验证登录参数。具体步骤如下： - 使用 StrKit.isBlank 方法检查用户名是否为空，",
      "keywords": [],
      "status": "document",
      "sha256": "ee24d69f976dcc0aabc72b7d2a27182a98001b40b7e820c9e22fba7efb768329"
    },
    {
      "id": "zh/07_validation/index.md",
      "title": "07_validation",
      "language": "zh-CN",
      "chapter": "zh/07_validation",
      "url": "https://tio-boot.com/zh/07_validation/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/07_validation/index.md",
      "source": "zh/07_validation/index.md",
      "description": "本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《数据紧校验规范》。 - 02.md : 文档《参数校验》。",
      "keywords": [],
      "status": "document",
      "sha256": "57a41cd70c46a718b37c339e8889791fbc4f8401cacbc92c3f556b7335585aa7"
    },
    {
      "id": "zh/08_websocket/01.md",
      "title": "使用 tio-boot 搭建 WebSocket 服务",
      "language": "zh-CN",
      "chapter": "zh/08_websocket",
      "url": "https://tio-boot.com/zh/08_websocket/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/08_websocket/01.md",
      "source": "zh/08_websocket/01.md",
      "description": "toc 简介 随着实时网络应用的普及，如即时聊天、在线游戏和实时数据推送等，WebSocket 技术越来越受到开发者的青睐。它允许客户端和服务器之间进行全双工、低延迟的通信，从而实现更加流畅的用户体验。 本文将详细介绍如何使用 tio-boot 框架快速搭建一个功能完善的 WebSocket 服务器。我们将从 WebS",
      "keywords": [],
      "status": "document",
      "sha256": "9736ef965dffcd2cdba44ef8ebe24475c5ed83ea52571bc43565e19c2fd54c96"
    },
    {
      "id": "zh/08_websocket/02.md",
      "title": "WebSocket 聊天室项目示例",
      "language": "zh-CN",
      "chapter": "zh/08_websocket",
      "url": "https://tio-boot.com/zh/08_websocket/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/08_websocket/02.md",
      "source": "zh/08_websocket/02.md",
      "description": "简介 这个项目的主要目的是展示如何使用 tio-boot 框架构建一个简单的 WebSocket 聊天室应用。通过这个项目，开发者可以学习如何使用 tio-boot 创建一个支持实时通信的 WebSocket 服务器，并了解如何处理客户端连接、消息广播、群组管理等常见的聊天功能。此外，项目还展示了如何通过 tio-bo",
      "keywords": [],
      "status": "document",
      "sha256": "046b2902bd888110e8a46f223ecbe139a8f8002940566976e579159e9f253d37"
    },
    {
      "id": "zh/08_websocket/index.md",
      "title": "08_websocket",
      "language": "zh-CN",
      "chapter": "zh/08_websocket",
      "url": "https://tio-boot.com/zh/08_websocket/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/08_websocket/index.md",
      "source": "zh/08_websocket/index.md",
      "description": "本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《使用 tio-boot 搭建 WebSocket 服务》。 - 02.md : 文档《WebSocket 聊天室项目示例》。 - demo01",
      "keywords": [],
      "status": "document",
      "sha256": "31ac4087555dc867bbee3d80649efd2b33f77e78aa2cc00f441539d8102d7081"
    },
    {
      "id": "zh/10_i18n/01.md",
      "title": "i18n",
      "language": "zh-CN",
      "chapter": "zh/10_i18n",
      "url": "https://tio-boot.com/zh/10_i18n/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/10_i18n/01.md",
      "source": "zh/10_i18n/01.md",
      "description": "概述 tio-boot 为国际化提供了极速化的支持，国际化模块仅三个类文件，使用方式要比 spring 这类框架容易得多。 I18n 与 Res I18n 对象可通过资源文件的 baseName 与 locale 参数获取到与之相对应的 Res 对象，Res 对象提供了 API 用来获取国际化数据。 以下给出具体使用步",
      "keywords": [],
      "status": "document",
      "sha256": "3fe22cc1455a390678891d969e388d661e4aff0b37f394166fabd70a93495035"
    },
    {
      "id": "zh/10_i18n/index.md",
      "title": "10_i18n",
      "language": "zh-CN",
      "chapter": "zh/10_i18n",
      "url": "https://tio-boot.com/zh/10_i18n/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/10_i18n/index.md",
      "source": "zh/10_i18n/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《i18n》。",
      "keywords": [],
      "status": "document",
      "sha256": "d58d28f54d9e5e071713dfad861b0af5dd03923fd6719891508e1b6d9501cbe8"
    },
    {
      "id": "zh/11_enjoy/01.md",
      "title": "tio-boot 整合 Enjoy 模版引擎文档",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/01.md",
      "source": "zh/11_enjoy/01.md",
      "description": "本文档详细介绍了如何在 tio-boot 框架中集成 Enjoy 模版引擎，包括引擎简介、基础使用示例、依赖添加、配置说明以及在 Controller 中的使用方法。内容深入浅出，非常适合初学者学习。 toc --- 简介 Enjoy Template Engine 是一款为 Java 开发者打造的高效模版引擎。其采用",
      "keywords": [],
      "status": "document",
      "sha256": "f77a9698b84dddc8ae06a89c9aea45fb56980a387f886ee7512a66e194372242"
    },
    {
      "id": "zh/11_enjoy/02.md",
      "title": "Tio-Boot 整合 Java-DB 与 Enjoy 模板引擎示例",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/02.md",
      "source": "zh/11_enjoy/02.md",
      "description": "toc 本教程将详细介绍如何使用 Tio-Boot 框架，结合 Java-DB（ActiveRecord） 和 Enjoy 模板引擎 ，快速构建一个现代化的 Web 应用——“Study11 学习平台”。我们将从数据库设计、后端服务、模板渲染到前端展示，完整演示数据驱动页面的实现过程。 --- 🎯 项目目标 创建一个",
      "keywords": [],
      "status": "document",
      "sha256": "16b0e0cb89d5f7aa46e2ebe7c51efb9c66dbd1dd9a6028319bf37de2329816e5"
    },
    {
      "id": "zh/11_enjoy/03_引擎配置.md",
      "title": "引擎配置",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/03_%E5%BC%95%E6%93%8E%E9%85%8D%E7%BD%AE.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/03_%E5%BC%95%E6%93%8E%E9%85%8D%E7%BD%AE.md",
      "source": "zh/11_enjoy/03_引擎配置.md",
      "description": "1､配置入口 Enjoy 引擎的配置入口统一在 Engine 类中。Engine 类中提供了一系列 setter 方法帮助引导配置，减少记忆负担，例如： 注意：engine.setToClassPathSourceFactory()、engine.setBaseTemplatePath(...)、engine.setD",
      "keywords": [],
      "status": "document",
      "sha256": "c7c758d5213f6939b47e01a29086bd2b2bfb86f86ed47b650b535bac4f9cca0f"
    },
    {
      "id": "zh/11_enjoy/04_表达式.md",
      "title": "表达式",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/04_%E8%A1%A8%E8%BE%BE%E5%BC%8F.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/04_%E8%A1%A8%E8%BE%BE%E5%BC%8F.md",
      "source": "zh/11_enjoy/04_表达式.md",
      "description": "Enjoy Template Engine 表达式规则设计在总体上符合 java 表达式规则，仅仅针对模板引擎的特征进行极其少量的符合直觉的有利于开发体验的扩展。 对于表达式的使用，再次强调一个关键点：表达式与 Java 是直接打通的。掌握了这个关键点立即就掌握了模板引擎 90%的用法。如下是代码示例： 以上代码第一、",
      "keywords": [],
      "status": "document",
      "sha256": "ffdd64b1d741b5aa90466900ca5cd3ebbe35ab378fc6fc18447e19c375517227"
    },
    {
      "id": "zh/11_enjoy/05_指令.md",
      "title": "指令",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/05_%E6%8C%87%E4%BB%A4.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/05_%E6%8C%87%E4%BB%A4.md",
      "source": "zh/11_enjoy/05_指令.md",
      "description": "Enjoy Template Engine 一如既往地坚持极简设计，核心只有 if、 for、 switch、 set、 include、 define、 (…) 这七个指令，便实现了传统模板引擎几乎所有的功能，用户如果有任意一门程序语言基础，学习成本几乎为零。 如果官方提供的指令无法满足需求，还可以极其简单地在模板语",
      "keywords": [],
      "status": "document",
      "sha256": "5087ee8739945caa61587708f6643fab66b40246d476c34579cf643375b56ae5"
    },
    {
      "id": "zh/11_enjoy/06_注释.md",
      "title": "注释",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/06_%E6%B3%A8%E9%87%8A.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/06_%E6%B3%A8%E9%87%8A.md",
      "source": "zh/11_enjoy/06_注释.md",
      "description": "JFinal Template Engine 支持单行与多行注释，以下是代码示例： 如上所示，单行注释使用三个 字符，多行注释以 --打头，以-- 结尾。 与传统模板引擎不同，这里的单行注释采用三个字符，主要是为了减少与文本内容相冲突的可能性，模板是极其自由化的内容，使用三个字符，冲突的概率降低一个数量级。 jfina",
      "keywords": [],
      "status": "document",
      "sha256": "c8c086da40d8227e33ab2b4bc6ea716dbdcd67a95854c344ef8c30d39d7e0144"
    },
    {
      "id": "zh/11_enjoy/07_原样输出.md",
      "title": "原样输出",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/07_%E5%8E%9F%E6%A0%B7%E8%BE%93%E5%87%BA.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/07_%E5%8E%9F%E6%A0%B7%E8%BE%93%E5%87%BA.md",
      "source": "zh/11_enjoy/07_原样输出.md",
      "description": "原样输出是指不被解析，而仅仅当成纯文本的内容区块，如下所示： 如上所示，原样输出以 三个字符打头，以 三个字符结尾，中间被包裹的内容虽然是指令，但仍然被当成是纯文本，这非常有利于解决与前端 javascript 模板引擎的指令冲突问题。 无论是单行注释、多行注释，还是原样输出，都是以三个字符开头，目的都是为了降低与纯文",
      "keywords": [],
      "status": "document",
      "sha256": "91a657e2f9ea15d90fded273a52fd52b948f1528730993f3ecf7f71355b025db"
    },
    {
      "id": "zh/11_enjoy/08_Shared Method 扩展.md",
      "title": "Shared Method 扩展",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/08_Shared%20Method%20%E6%89%A9%E5%B1%95.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/08_Shared%20Method%20%E6%89%A9%E5%B1%95.md",
      "source": "zh/11_enjoy/08_Shared Method 扩展.md",
      "description": "1､基本用法 Enjoy 模板引擎可以极其简单的直接使用任意的 java 类中的 public 方法，并且被使用的 java 类无需实现任何接口也无需继承任何抽象类，完全无耦合。以下代码以 JFinal 之中的 com.jfinal.kit.StrKit 类为例： 以上代码已将 StrKit 类中所有的 public ",
      "keywords": [],
      "status": "document",
      "sha256": "f9e2aa821eac70ec072ee8e009e7160244aea9d3ea1b4b4f0ed0a20071d47ed3"
    },
    {
      "id": "zh/11_enjoy/09_Shared Object扩展.md",
      "title": "Shared Object 扩展",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/09_Shared%20Object%E6%89%A9%E5%B1%95.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/09_Shared%20Object%E6%89%A9%E5%B1%95.md",
      "source": "zh/11_enjoy/09_Shared Object扩展.md",
      "description": "通过使用 addSharedObject 方法，将某个具体对象添加为共享对象，可以全局进行使用，以下是代码示例： 以上代码中的第二行，添加了一个名为 RESOURCE HOST 的共享对象，而第三行代码添加了一个名为 StrKit 的共享对象，以下是在模板中的使用例子： 以上代码第一行中使用输出指令输出了 RESOUC",
      "keywords": [],
      "status": "document",
      "sha256": "c4b22f312da97f02d6fcc58b4d083140b1ca5652c09fd1d9f8dd49f8a47e2d82"
    },
    {
      "id": "zh/11_enjoy/10_Extension Method扩展.md",
      "title": "Extension Method 扩展",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/10_Extension%20Method%E6%89%A9%E5%B1%95.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/10_Extension%20Method%E6%89%A9%E5%B1%95.md",
      "source": "zh/11_enjoy/10_Extension Method扩展.md",
      "description": "Extension Method 用于对已存在的类在其外部添加扩展方法，该功能类似于 ruby 语言中的 mixin 特性。 Enjoy 默认已经为 BigDecimal、BigInteger、String、Integer、Long、Float、Double、Short、Byte 这 9 个常用的 java 类型，添加",
      "keywords": [],
      "status": "document",
      "sha256": "8f1879f3653423883ef137d81280dd4aa5c1d55bb1e2edb12088fc921f61565d"
    },
    {
      "id": "zh/11_enjoy/11_Spring boot 整合.md",
      "title": "Spring boot 整合",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/11_Spring%20boot%20%E6%95%B4%E5%90%88.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/11_Spring%20boot%20%E6%95%B4%E5%90%88.md",
      "source": "zh/11_enjoy/11_Spring boot 整合.md",
      "description": "1、maven 坐标 Spring 整合可以在 pom.xml 中配置 jfinal 坐标，也可以配置 Enjoy Template Engine 的独立发布版本坐标，其 maven 坐标如下： JFinal Template Engine 的独立发布版本 Enjoy 只有 207K 大小，并且无任何第三方依赖。 2、",
      "keywords": [],
      "status": "document",
      "sha256": "2dd140c293d54e7cc9e99ddb5b6bf68bc6471ccc6aaea832a5ce04a559871110"
    },
    {
      "id": "zh/11_enjoy/12_独立使用 Enjoy.md",
      "title": "独立使用 Enjoy",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/12_%E7%8B%AC%E7%AB%8B%E4%BD%BF%E7%94%A8%20Enjoy.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/12_%E7%8B%AC%E7%AB%8B%E4%BD%BF%E7%94%A8%20Enjoy.md",
      "source": "zh/11_enjoy/12_独立使用 Enjoy.md",
      "description": "Enjoy Template Engine 的使用不限于 web，可以使用在任何 java 开发环境中。Enjoy 常被用于代码生成、email 生成、模板消息生成等具有模板特征数据的应用场景，使用方式极为简单。 由于很多同学提出要在非 jfinal 环境下使用 Enjoy，所以 Enjoy 模板引擎发布了独立版本，m",
      "keywords": [],
      "status": "document",
      "sha256": "15de607dab7fef98be65445bbdb470b90338c71decb28091a7e451ade6e7ea72"
    },
    {
      "id": "zh/11_enjoy/13.md",
      "title": "tio-boot enjoy 自定义指令 localeDate",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/13.md",
      "source": "zh/11_enjoy/13.md",
      "description": "背景 在使用 JFinal 模板引擎进行日期格式化时，默认的 date 指令虽然支持多种格式化模式，但其在处理不同地区（Locale）时存在局限性。例如，默认情况下， date(model.date, \"MMMM dd, yyyy\") 可能输出为 “一月 16, 2025”，而在某些项目中需要将其显示为 “Januar",
      "keywords": [],
      "status": "document",
      "sha256": "466b09a719956f1678f818ffaa7e8737dbc076d93b29a432124e826416399693"
    },
    {
      "id": "zh/11_enjoy/14.md",
      "title": "PromptEngine",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/14.md",
      "source": "zh/11_enjoy/14.md",
      "description": "本文将详细讲解如何基于 JFinal Template Engine 封装一个专用于大模型提示词的工具类 —— PromptEngine ，以及如何使用该工具类来渲染提示词模板。 --- 一、PromptEngine 类的实现 我们首先创建一个名为 PromptEngine 的工具类，该类主要功能是通过 JFinal ",
      "keywords": [],
      "status": "document",
      "sha256": "0ebdb1c78aa86e63de175a9263a854932c935f891e7ef4219e9cffc4de146985"
    },
    {
      "id": "zh/11_enjoy/15.md",
      "title": "Enjoy 入门示例-擎渲染大模型请求体",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/15.md",
      "source": "zh/11_enjoy/15.md",
      "description": "在大模型开发过程中，构建复杂的 JSON 请求体是一个常见且关键的步骤。手动构建这些 JSON 对象不仅繁琐，而且容易出错。幸运的是， Enjoy 模版引擎 提供了一种高效、简便的方法来自动生成所需的 JSON 请求体，从而大幅提升开发效率和代码的可维护性。 本文将详细介绍如何使用 Enjoy 模版引擎渲染大模型的输入",
      "keywords": [],
      "status": "document",
      "sha256": "903fd3bf3421d26fe04e7c3e54056dba61060b28f0772b879f22af13de0ff5c3"
    },
    {
      "id": "zh/11_enjoy/16.md",
      "title": "Tio Boot + Enjoy：分页与 SEO 实战指南",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/16.md",
      "source": "zh/11_enjoy/16.md",
      "description": "背景与目的 在构建现代 Web 应用时，我们往往需要同时兼顾 性能 、 用户体验 和 搜索引擎优化 (SEO) 。 性能 ：后端要能高效分页，避免一次性返回海量数据，保证前端加载流畅； 用户体验 ：分页导航要直观、简洁，支持键盘快捷键与自定义每页大小； SEO ：页面内容应能被搜索引擎爬虫直接识别，不依赖复杂的 Jav",
      "keywords": [],
      "status": "document",
      "sha256": "477ed41151ae273ce84455b75dd54337a5461a1c5c7fde70a434c2fe9a590b23"
    },
    {
      "id": "zh/11_enjoy/17.md",
      "title": "TioBoot + Enjoy 生成 robots.txt 与 sitemap.xml：实战与SEO指南",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/17.md",
      "source": "zh/11_enjoy/17.md",
      "description": "背景与目的 为站点开放爬取并加速搜索引擎收录， robots.txt 与 sitemap.xml 是两块基础设施： robots.txt ：告诉搜索引擎哪些资源可以或不可以抓取。 sitemap.xml ：提供站点重要页面（如内容详情页）的结构化清单，包含 URL 与最后更新时间，帮助搜索引擎更高效地发现与索引。 本文",
      "keywords": [],
      "status": "document",
      "sha256": "5c64eb0e852cc8e36d148d77b5606f41cef0dacd113705de7da052462c84340d"
    },
    {
      "id": "zh/11_enjoy/18.md",
      "title": "Enjoy 使用示例",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/18.md",
      "source": "zh/11_enjoy/18.md",
      "description": "渲染大模型提示词 本示例展示如何使用 JFinal 的 Enjoy 模板引擎来渲染翻译提示词(Prompt)。通过配置 Enjoy 引擎并加载模板，可以动态生成翻译请求内容。 配置 Enjoy 引擎 首先，创建一个配置类 EnjoyEngineConfig 来设置 Enjoy 引擎的基本参数。 - RESOURCE B",
      "keywords": [],
      "status": "document",
      "sha256": "ede242f231b93b2de68c533f477083c0a95e5c43df75ebd2a1216f07a2cf833e"
    },
    {
      "id": "zh/11_enjoy/6.2/index.md",
      "title": "6.2",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/6.2/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/6.2/index.md",
      "source": "zh/11_enjoy/6.2/index.md",
      "description": "本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 1 20180115001833.png : 图片资源，用于本目录文档配图或界面示意。 - 1 20200529195957.png : 图片资源，用于本目录文档配",
      "keywords": [],
      "status": "document",
      "sha256": "cf23bd11adcf42fd0dadb34efa7b1ead4e6e43747b1bc1ec927fbd4ef383cfc2"
    },
    {
      "id": "zh/11_enjoy/assets/index.md",
      "title": "assets",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/assets/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/assets/index.md",
      "source": "zh/11_enjoy/assets/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.png : 图片资源，用于本目录文档配图或界面示意。",
      "keywords": [],
      "status": "document",
      "sha256": "b3fd4928436d63cc91e734ec88426503014f2661b41b5169e1035aa57380505b"
    },
    {
      "id": "zh/11_enjoy/index.md",
      "title": "11_enjoy",
      "language": "zh-CN",
      "chapter": "zh/11_enjoy",
      "url": "https://tio-boot.com/zh/11_enjoy/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/11_enjoy/index.md",
      "source": "zh/11_enjoy/index.md",
      "description": "本目录包含 19 个文件和 2 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-boot 整合 Enjoy 模版引擎文档》。 - 02.md : 文档《Tio-Boot 整合 Java-DB 与 Enjoy 模板",
      "keywords": [],
      "status": "document",
      "sha256": "f123fc72a22b50962247ee1d8033cb5c9a375434bb79554660511d010297e8b0"
    },
    {
      "id": "zh/12_scheduling/01.md",
      "title": "Quartz 定时任务集成指南",
      "language": "zh-CN",
      "chapter": "zh/12_scheduling",
      "url": "https://tio-boot.com/zh/12_scheduling/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/12_scheduling/01.md",
      "source": "zh/12_scheduling/01.md",
      "description": "toc 简介 Quartz 是一个功能强大的开源任务调度库，广泛应用于 Java 应用程序中以实现定时任务。然而，原生的 Quartz 由于其复杂性，可能会增加开发和维护的难度。为了简化这一过程，本文将介绍如何使用 tio-utils 对 Quartz 进行封装，从而提升开发效率和项目的可维护性。 Quartz 概述 ",
      "keywords": [],
      "status": "document",
      "sha256": "ac97dedc81dee391a6900f3df96a2897b0bd0c63098bdf1ad6ce92ed224fccc7"
    },
    {
      "id": "zh/12_scheduling/02.md",
      "title": "分布式定时任务 xxl-jb",
      "language": "zh-CN",
      "chapter": "zh/12_scheduling",
      "url": "https://tio-boot.com/zh/12_scheduling/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/12_scheduling/02.md",
      "source": "zh/12_scheduling/02.md",
      "description": "20.1.简介 xxl-job 是一个分布式的定时任务执行框架,有调度中心和执行器两部分组成 调度中心:负责定时任务的调用 执行器:服务定时任务的执行 本篇文章介绍如何基于 tio-boot 创建一个执行器项目并注册的调度中心 20.2.安装 mysql 20.2.1.docker-run-mysql-8 使用命令连接",
      "keywords": [],
      "status": "document",
      "sha256": "7dcf6807dea3f46aeb74e8d5c022f0355a80294e3fbd0fd7ca7614d123cf5397"
    },
    {
      "id": "zh/12_scheduling/03.md",
      "title": "cron4j 使用指南",
      "language": "zh-CN",
      "chapter": "zh/12_scheduling",
      "url": "https://tio-boot.com/zh/12_scheduling/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/12_scheduling/03.md",
      "source": "zh/12_scheduling/03.md",
      "description": "Cron4jPlugin 是一个集成在 Java 中的任务调度插件，通过使用 Cron4jPlugin，可以方便地利用通用的 cron 表达式实现任务调度功能。 入门示例 添加依赖 在项目的 pom.xml 文件中添加以下依赖： 依赖说明： - java-db ：JavaDB 插件依赖。 - cron4j ：cron4",
      "keywords": [],
      "status": "document",
      "sha256": "a5974c4b720472ead3a9978f30a724dda3e16db2e950d7d613a91c3ecda18238"
    },
    {
      "id": "zh/12_scheduling/index.md",
      "title": "12_scheduling",
      "language": "zh-CN",
      "chapter": "zh/12_scheduling",
      "url": "https://tio-boot.com/zh/12_scheduling/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/12_scheduling/index.md",
      "source": "zh/12_scheduling/index.md",
      "description": "本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Quartz 定时任务集成指南》。 - 02.md : 文档《分布式定时任务 xxl-jb》。 - 03.md : 文档《cron4j 使用指",
      "keywords": [],
      "status": "document",
      "sha256": "ab44f094a9d3892825bbf7baf02b8388041796eaff05c3aa12af0024d22bf3fa"
    },
    {
      "id": "zh/13_testing/01.md",
      "title": "TioBootTest：环境与 AOP 初始化",
      "language": "zh-CN",
      "chapter": "zh/13_testing",
      "url": "https://tio-boot.com/zh/13_testing/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/13_testing/01.md",
      "source": "zh/13_testing/01.md",
      "description": "TioBootTest 是测试初始化工具，不是 JUnit 运行器，也不会自动启动 HTTP 服务器、创建测试数据库或回滚数据。本章依据 nexus.io.tio.boot.testing.TioBootTest 当前源码。 方法与边界 | 方法 | 实际行为 | | --- | --- | | load(env) |",
      "keywords": [],
      "status": "document",
      "sha256": "e33a68942a88153fba38ddd7bc38fdacd781877e70e8e3d4951af00202d6d837"
    },
    {
      "id": "zh/13_testing/02.md",
      "title": "真实 HTTP 集成测试",
      "language": "zh-CN",
      "chapter": "zh/13_testing",
      "url": "https://tio-boot.com/zh/13_testing/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/13_testing/02.md",
      "source": "zh/13_testing/02.md",
      "description": "直接调用 Handler 方法无法验证端口、上下文、拦截器及响应编码。以下示例使用 JDK 21、JUnit Jupiter 和当前 nexus.io 版本 tio-boot，项目需配置 JUnit 5 执行器；不需要数据库或第三方账号。 CI 应分配未占用端口，例如 PowerShell 使用 mvn test '-",
      "keywords": [],
      "status": "document",
      "sha256": "2cac25af0a1b8a0c0eb37260955b6ee27a74f43d2131fc0a0f72ff5513348c6e"
    },
    {
      "id": "zh/13_testing/03.md",
      "title": "数据库集成测试与隔离",
      "language": "zh-CN",
      "chapter": "zh/13_testing",
      "url": "https://tio-boot.com/zh/13_testing/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/13_testing/03.md",
      "source": "zh/13_testing/03.md",
      "description": "TioBootTest 不提供数据库隔离。优先使用专用测试库；采用 PostgreSQL 独立 schema 时，应为每次测试生成固定前缀加随机十六进制字符的名称，并限定所有测试连接的 search path。 测试流程 1. 显式启用集成测试，读取测试连接配置；未启用时报告跳过。 2. 创建本次专属 schema，连",
      "keywords": [],
      "status": "document",
      "sha256": "992861999ea37326a840ed9b0671d81d3af2b1aff0996c500aee094523ef4e8e"
    },
    {
      "id": "zh/13_testing/index.md",
      "title": "13_testing",
      "language": "zh-CN",
      "chapter": "zh/13_testing",
      "url": "https://tio-boot.com/zh/13_testing/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/13_testing/index.md",
      "source": "zh/13_testing/index.md",
      "description": "先理解测试初始化的边界，再进行真实 HTTP 与数据库隔离测试。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : TioBootTest：环境与 AOP 初始化。 - 02.md : 真实 HTTP 集成测试。 - 03.md : 数据库集成测试与隔离。",
      "keywords": [],
      "status": "document",
      "sha256": "953646af08c1587e85acdc007470c9ac3551db833cd4bc6a06ea06412b744e59"
    },
    {
      "id": "zh/14_tio-utils/01.md",
      "title": "tio-utils",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/01.md",
      "source": "zh/14_tio-utils/01.md",
      "description": "tio-utils 是 tio-boot 的内置工具类库 - 无默认任何第三方依赖 - 自带 JsonUtils,实现了实体类转为 Json 字符串 - 如果需要将 Json 字符串转为实体类,请添加 fastjson2 gradle",
      "keywords": [],
      "status": "document",
      "sha256": "d6b8a362075947fc84fb011c6f8ab3c289b4d40ff6710591c6f01f371d91cfba"
    },
    {
      "id": "zh/14_tio-utils/02.md",
      "title": "EnvUtils 配置工具",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/02.md",
      "source": "zh/14_tio-utils/02.md",
      "description": "EnvUtils 是 tio-utils 提供的统一配置管理工具，用于在应用运行时，从多个配置来源中获取配置值，并按照 固定优先级 进行解析与覆盖。 它解决的核心问题是： 配置来源分散（参数、环境变量、配置文件） 多环境配置切换复杂 本地个性化配置容易污染团队环境 EnvUtils 通过一套明确的加载规则和优先级模型，",
      "keywords": [],
      "status": "document",
      "sha256": "d4afb5274107f91c70baa8b8fc41a0eedebea9081765f78cfd76d9e462b43b4b"
    },
    {
      "id": "zh/14_tio-utils/03.md",
      "title": "Notification",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/03.md",
      "source": "zh/14_tio-utils/03.md",
      "description": "1. 概述 tio-boot 内置了消息通知组件,用户发送消息到 微信企业群 飞书企业群 等等 本文档提供了一个通知组件的使用指南，介绍通过不同的方式发送通知，比如发送文本消息或者发送预警信息。它支持自定义通知方式，用户可以通过实现特定的接口来集成不同的通知服务。 添加依赖 Notification 依赖 okhttp",
      "keywords": [],
      "status": "document",
      "sha256": "d0804c1af8dfb2ad03740b2c9e2a5d2accf031c7cba0b2f8ceaf2fe9b4efbe59"
    },
    {
      "id": "zh/14_tio-utils/04.md",
      "title": "Email",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/04.md",
      "source": "zh/14_tio-utils/04.md",
      "description": "tio-utils 内置了邮箱工具类 nexus.io.tio.utils.email.EMailUtils 用于支持发送邮件 添加依赖 or 这两个依赖的区别在于它们所依赖的不同版本的 Java 邮件库，以及这些版本可能带来的改动或增强。具体如下： 1. javax.mail:mail:1.5.0-b01 - 这是 ",
      "keywords": [],
      "status": "document",
      "sha256": "c4169f984dcac493250b8926295ef6e45986195aa8bd2c1215ab96dfa3b4ea17"
    },
    {
      "id": "zh/14_tio-utils/05.md",
      "title": "JSON",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/05.md",
      "source": "zh/14_tio-utils/05.md",
      "description": "tio-utils 的 json 模块以抽象类 Json 为核心，方便扩展第三方实现，tio 官方给出了三个 Json 实现，分别是 TioJson、FastJson2、Jackson，这三个实现继承自抽象类 Json。 抽象类 Json 的核心抽象如下： 如上代码可以看出 Json 抽象就是 Object 与 jso",
      "keywords": [],
      "status": "document",
      "sha256": "0fa0e91fda1b6030ca602bd5a783efaeb86c23c6dff19a66c3d1f300e1f19455"
    },
    {
      "id": "zh/14_tio-utils/06.md",
      "title": "File",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/06.md",
      "source": "zh/14_tio-utils/06.md",
      "description": "ResourceUtil 和 BufferedReader 读取 classpath 下的文本文件 读取文件示例 代码示例 读取为 List lines 代码示例 读取文件内容为字符串 如果感觉上面的方法繁琐,可以使用下面的代码 代码示例 读取文件内容为字节数组",
      "keywords": [],
      "status": "document",
      "sha256": "ac60ef5cbf966e3e3c7493da2f9bdbc9fffb852456c100f1a2a073cd0335f4bc"
    },
    {
      "id": "zh/14_tio-utils/07.md",
      "title": "Base64",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/07.md",
      "source": "zh/14_tio-utils/07.md",
      "description": "tio-utils 内置了 base64 编码和解码工具类,示例代码如下",
      "keywords": [],
      "status": "document",
      "sha256": "29f000bdd670e529b0ccce8a5e6616fc185101457ec3f6ff79142a67ec2d04f5"
    },
    {
      "id": "zh/14_tio-utils/08.md",
      "title": "上传和下载",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/08.md",
      "source": "zh/14_tio-utils/08.md",
      "description": "使用 HttpDownloadUtils 下载文件 HttpDownloadUtils.download 使用 HTTP GET 下载内容，返回内存中的 ByteArrayOutputStream 。可以传入自定义请求头；不需要请求头时使用单参数重载。 方法约定 - download(String remoteUrl)",
      "keywords": [],
      "status": "document",
      "sha256": "b7adf70dfc7bbb907106b13e0392f999b093f5eb8e453c60eeb5dbee59a78b4b"
    },
    {
      "id": "zh/14_tio-utils/09.md",
      "title": "Http",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/09.md",
      "source": "zh/14_tio-utils/09.md",
      "description": "类简介 Http 类是一个用于简化 HTTP 请求操作的工具类，提供了发送 GET 和 POST 请求的便捷方法。它支持发送 JSON 数据、表单数据，并允许自定义请求头。 公共方法 1. postJson(String serverUrl, String payload) 描述： 发送一个带有 JSON 数据的 PO",
      "keywords": [],
      "status": "document",
      "sha256": "c3c2070c88388095d54a0c9bbc2cc5334a7d28151f3f15489fe1bc26d6c13630"
    },
    {
      "id": "zh/14_tio-utils/10.md",
      "title": "Telegram",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/10.md",
      "source": "zh/14_tio-utils/10.md",
      "description": "简介 tio-utils 内置了 Telegram 工具类，允许用户方便地将消息发送到 Telegram 群组。本文档将详细介绍如何创建 Telegram Bot、获取群组 Chat ID、使用 Java 代码发送消息，以及将其集成到 Tio-Boot 项目中。此外，还将介绍如何使用 tio-utils 内置的 Tel",
      "keywords": [],
      "status": "document",
      "sha256": "4930e8bedbf6a72c013f462e7302fb6acf36b9fa21a32cb0d363524af6b947e2"
    },
    {
      "id": "zh/14_tio-utils/11.md",
      "title": "RsaUtils",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/11.md",
      "source": "zh/14_tio-utils/11.md",
      "description": "加密和解密操作 生成密钥对 以下示例展示了如何使用 RsaUtils 生成 RSA 公钥和私钥，并将其编码为 Base64 字符串。 示例输出: 加密和解密消息 以下示例展示了如何使用生成的 RSA 公钥加密消息，并使用私钥解密。 示例输出: 将私钥和公钥存入数据库 为了安全地存储 RSA 密钥对，我们将私钥和公钥存入",
      "keywords": [],
      "status": "document",
      "sha256": "f6c35e68f3a6440c4575679c9052f06875260229a282e41a5b9b169efefacfe5"
    },
    {
      "id": "zh/14_tio-utils/12.md",
      "title": "HttpUtils",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/12.md",
      "source": "zh/14_tio-utils/12.md",
      "description": "HttpUtils 封装了 OkHttp 的请求构造与响应读取。项目需要提供 OkHttp 及客户端池使用的 Brotli 支持依赖，由项目统一管理依赖配置。 客户端池与 HTTPS OkHttpClientPool 复用连接池，提供不同连接及读取超时的客户端： | 方法 | 连接和读取超时 | | --- | ---",
      "keywords": [],
      "status": "document",
      "sha256": "0197ca4dbc18ce4b0ad1524b42aec967d735e65190db6ce1c46f61a7f27687fc"
    },
    {
      "id": "zh/14_tio-utils/13.md",
      "title": "ByteBufferUtils",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/13.md",
      "source": "zh/14_tio-utils/13.md",
      "description": "这是一个专为 java.nio.ByteBuffer 设计的工具类，旨在简化和扩展 ByteBuffer 的常用操作。 ByteBuffer 是 Java NIO 的核心组件，用于高效的 I/O 操作，但其原生 API 在某些场景下使用起来较为繁琐，例如处理特定格式的数据（如按行读取）、复制、拆分等。 ByteBuff",
      "keywords": [],
      "status": "document",
      "sha256": "9fc882646c3fa029f386324996110808cb35544e3982f2ab189a2fab56ad9f37"
    },
    {
      "id": "zh/14_tio-utils/19.md",
      "title": "系统监控",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/19.md",
      "source": "zh/14_tio-utils/19.md",
      "description": "本指南将介绍如何使用 tio-utils 中的 SystemMonitorUtils 获取系统信息，以及如何将监控数据记录到数据库中。 一、使用 SystemMonitorUtils 获取系统信息 tio-utils 提供了 SystemMonitorUtils 类，方便用户获取系统的各种信息。以下是使用方法： 执行上",
      "keywords": [],
      "status": "document",
      "sha256": "f1c85f4e23eb35df12d9ecf020e1c559d62d25789b6730d8eda00c00b61ae495"
    },
    {
      "id": "zh/14_tio-utils/20.md",
      "title": "线程",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/20.md",
      "source": "zh/14_tio-utils/20.md",
      "description": "一、概述 TioThreadUtils 是一个基于 java.util.concurrent.ExecutorService 封装的线程池工具类，用于在项目中统一管理和使用线程池资源。 它提供了： 全局唯一的固定大小线程池 统一的线程命名规则 简化的任务提交与执行方法 线程池的启动、停止与重启能力 适用于异步任务执行、",
      "keywords": [],
      "status": "document",
      "sha256": "26021d13e450c99362ea51a72dac6a8ba75795ef49ec44525fbe437f48c56c5b"
    },
    {
      "id": "zh/14_tio-utils/21.md",
      "title": "虚拟线程",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/21.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/21.md",
      "source": "zh/14_tio-utils/21.md",
      "description": "toc 使用虚拟线程并发执行数学与安全判定 本文介绍如何在 ApiMathController determine 接口中，使用 MvThreadUtils （基于虚拟线程）并发执行两个独立的判定逻辑： determineTextMath 与 determineTextSafe 。目标是在保持原有“判定顺序与返回语义不",
      "keywords": [],
      "status": "document",
      "sha256": "2f661c475facfbf312195f3f4f0f968b78ec14470da8c2baa65869f7096b532c"
    },
    {
      "id": "zh/14_tio-utils/30.md",
      "title": "毫秒并发 ID (MCID) 生成方案",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/30.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/30.md",
      "source": "zh/14_tio-utils/30.md",
      "description": "1. 引言 在数字时代，唯一标识符的生成对于维护数据完整性、支持分布式系统以及确保准确的事务处理至关重要。 毫秒并发 ID (MCID) 生成方案是一种高精度、可扩展的解决方案，旨在为需要毫秒级精度和高并发支持的实时系统生成唯一标识符。本文件概述了 MCID 方案的设计、实现及标准化建议，并特别强调了其对前端浏览器的支",
      "keywords": [],
      "status": "document",
      "sha256": "e45d6e2783e9b7be9b217ee131cb150435fc196ebbcaa95f9388c58cc25b6226"
    },
    {
      "id": "zh/14_tio-utils/compression-buffers.md",
      "title": "Gzip 与字节缓冲区",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/compression-buffers.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/compression-buffers.md",
      "source": "zh/14_tio-utils/compression-buffers.md",
      "description": "完整字节数组的压缩与解压 ZipUtil.gzip 将字节数组压缩为 Gzip 数据； ZipUtil.unGzip 接收完整压缩数据并返回解压后的字节数组，也支持按顺序连接的多个 Gzip 成员。 空的原始数据可以正常压缩、解压；零字节的压缩输入则不是有效 Gzip 数据。对于截断的首部、压缩正文或尾部，以及校验和不",
      "keywords": [],
      "status": "document",
      "sha256": "9c46de0f2add08aacc9e4cd4242c3683e736081d75612ac8cb71f17dd3717ea3"
    },
    {
      "id": "zh/14_tio-utils/date-and-filename.md",
      "title": "日期转换与文件名解析",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/date-and-filename.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/date-and-filename.md",
      "source": "zh/14_tio-utils/date-and-filename.md",
      "description": "DateParseUtils parseIso8601Date 按 ISO 偏移日期时间解析为 java.util.Date ，支持 Z 、正负偏移以及可选的小数秒。解析会保留实际时间点，小数秒转换到 Date 的毫秒精度。无效日历日期、尾随内容或 null 输入返回 null 。 convertToIso8601Da",
      "keywords": [],
      "status": "document",
      "sha256": "dae4ece3bc7ff481d2690622ad2ef739cb6381b61963eea8dc731037c50debb0"
    },
    {
      "id": "zh/14_tio-utils/index.md",
      "title": "14_tio-utils",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/index.md",
      "source": "zh/14_tio-utils/index.md",
      "description": "下列条目提供工具类文档导航。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-utils》。 - 02.md : 文档《EnvUtils 配置工具》。 - 03.md : 文档《Notification》。 - 04.md : 文档《Email》。 - 05.md :",
      "keywords": [],
      "status": "document",
      "sha256": "f950d0804965d64699f4edcb9c96f75a235263d48ca875073fc1b2186d43c139"
    },
    {
      "id": "zh/14_tio-utils/json-generics.md",
      "title": "JSON 泛型转换与输出配置",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/json-generics.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/json-generics.md",
      "source": "zh/14_tio-utils/json-generics.md",
      "description": "明确 Map 的键和值类型 parseToMap(json, keyType, valueType) 和 parseToListMap(json, keyType, valueType) 使用传入的类型信息构造结果。FastJson2、Jackson 以及对应静态工具类遵循相同的类型约定；选择这些解析后端的 JsonU",
      "keywords": [],
      "status": "document",
      "sha256": "64e6e2e2e925b3a672e25655cd02fc643cfc1b293aa7d4a7772823b47da735b4"
    },
    {
      "id": "zh/14_tio-utils/jwt.md",
      "title": "JWT 签发与校验",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/jwt.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/jwt.md",
      "source": "zh/14_tio-utils/jwt.md",
      "description": "JwtUtils 提供 HS256 令牌签发、签名校验及用户标识读取。认证入口先调用 verify ，验证成功后再读取载荷； getPayload 、 parseUserIdString 等读取方法不代表已经认证。 校验约定 - token 必须是三个非空片段，末尾额外的分隔符也会被拒绝。 - 空 token、签名不匹",
      "keywords": [],
      "status": "document",
      "sha256": "47a296d92d5b86d5d5df379632f4931746c23ee11542f13f697b50472b659eb4"
    },
    {
      "id": "zh/14_tio-utils/page.md",
      "title": "集合分页 PageUtils",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/page.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/page.md",
      "source": "zh/14_tio-utils/page.md",
      "description": "PageUtils 为内存中的 List、Set 和 SetWithLock 提供分页，可选转换器只处理当前页的数据。 参数和结果约定 - 页码从 1 开始，非正页码按 1 处理。 - 正数 pageSize 保留调用方指定的值，即使总记录数小于它。末页数据条数由 getList().size() 获取。 - 非正 p",
      "keywords": [],
      "status": "document",
      "sha256": "601b013993aaabc985ac68110b2839da72eab405acd750a578540656b031602b"
    },
    {
      "id": "zh/14_tio-utils/string-and-random.md",
      "title": "字符串查找与随机整数",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/string-and-random.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/string-and-random.md",
      "source": "zh/14_tio-utils/string-and-random.md",
      "description": "统一的字符串查找接口 StrUtil 支持在 String、StringBuilder 等 CharSequence 对象中查找字符和子串，提供正向、反向及忽略大小写的重载，便于复用相同的搜索逻辑。 示例结果分别为 6 和 0。查找包含索引 0；未匹配以及输入为 null 时返回 -1。 - 正向子串查找：负起点按 0",
      "keywords": [],
      "status": "document",
      "sha256": "e8c95080d21ba002e22fee6f5b948c5bd1910f314c919042e710ed307102fcb5"
    },
    {
      "id": "zh/14_tio-utils/url-and-stream.md",
      "title": "URL 与流复制工具",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/url-and-stream.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/url-and-stream.md",
      "source": "zh/14_tio-utils/url-and-stream.md",
      "description": "URL 编解码 UrlUtils.encode 对一个组件按 UTF-8 进行百分号编码； decode 解码百分号字节序列，保留原本未转义的中文、补充字符和 + 。这里的 + 是字面加号，不表示表单编码中的空格。 encodeUrl 保留现有合法转义和路径分隔符。例如 %2F 保持为 %2F ，不会变成新的 / 路径",
      "keywords": [],
      "status": "document",
      "sha256": "8957026aee1ac817c08e7756be541096c041f5eb2e657095a430bacd9d82a159"
    },
    {
      "id": "zh/14_tio-utils/utility-boundaries.md",
      "title": "Base64 输入与锁等待",
      "language": "zh-CN",
      "chapter": "zh/14_tio-utils",
      "url": "https://tio-boot.com/zh/14_tio-utils/utility-boundaries.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/14_tio-utils/utility-boundaries.md",
      "source": "zh/14_tio-utils/utility-boundaries.md",
      "description": "Base64 的字符校验 Base64Utils.decodeToBytes 使用标准 Base64 字母表，要求输入长度是四的倍数，支持末尾的 = 补位。空字符串得到空字节数组。非法字符（包括中文等非 ASCII 字符）会抛出 IllegalArgumentException ，调用方可以统一处理输入校验失败。 字节",
      "keywords": [],
      "status": "document",
      "sha256": "3fa03c84e645bb50ee0e67a290050fb6363e12d7b36f6eee1fd8e90c16677b2f"
    },
    {
      "id": "zh/17_mybatis/01.md",
      "title": "Tio-Boot 整合 MyBatis",
      "language": "zh-CN",
      "chapter": "zh/17_mybatis",
      "url": "https://tio-boot.com/zh/17_mybatis/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/17_mybatis/01.md",
      "source": "zh/17_mybatis/01.md",
      "description": "简介 Tio-Boot ：Tio-Boot 是一个高性能的 Java 网络编程框架，用于快速构建 Web、WebSocket、TCP 等网络应用。在本教程中，我们将使用 Tio-Boot 启动一个简单的 Web 服务，以演示如何与 MyBatis 整合。 MyBatis ：MyBatis 是一个持久层框架，简化了 Ja",
      "keywords": [],
      "status": "document",
      "sha256": "4853e9b431ff5d8ee88475dd0b832a7f9697bb6b396db875fc2f3b48e9a1e621"
    },
    {
      "id": "zh/17_mybatis/02.md",
      "title": "使用配置类方式整合 MyBatis",
      "language": "zh-CN",
      "chapter": "zh/17_mybatis",
      "url": "https://tio-boot.com/zh/17_mybatis/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/17_mybatis/02.md",
      "source": "zh/17_mybatis/02.md",
      "description": "在本教程中，我们将展示如何通过 配置类 的方式来整合 MyBatis，而 不使用 mybatis.xml 配置文件 。我们将一步步解释每个部分的原理和原因，以帮助读者理解为什么要这样做。 整合 mybatis 一、添加依赖 首先，在项目的 pom.xml 文件中添加以下依赖： 说明： - MyBatis ：对象关系映射",
      "keywords": [],
      "status": "document",
      "sha256": "3093c7489ed4e7e0cb676e2496a9ca2db13e76cc7af616d6075f6fc2e1106320"
    },
    {
      "id": "zh/17_mybatis/03.md",
      "title": "整合数据源",
      "language": "zh-CN",
      "chapter": "zh/17_mybatis",
      "url": "https://tio-boot.com/zh/17_mybatis/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/17_mybatis/03.md",
      "source": "zh/17_mybatis/03.md",
      "description": "Druid 引言 本项目中我们采用了 MyBatis 作为 ORM 框架，并集成了阿里巴巴提供的 Druid 数据源管理工具来优化数据库连接的管理和性能。Druid 提供了强大的监控、扩展和配置能力，适用于大多数企业级应用场景。 添加 Druid 依赖 在项目的 pom.xml 文件中添加 Druid 的依赖配置，确保",
      "keywords": [],
      "status": "document",
      "sha256": "c4ee4fa2376d2e1a3c209e821316bdc04348e07f104144a56ec46bcdae031efc"
    },
    {
      "id": "zh/17_mybatis/04.md",
      "title": "使用 mybatis-plus 整合 tdengine",
      "language": "zh-CN",
      "chapter": "zh/17_mybatis",
      "url": "https://tio-boot.com/zh/17_mybatis/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/17_mybatis/04.md",
      "source": "zh/17_mybatis/04.md",
      "description": "介绍如何使用 tio-boot 结合 Mybatis-Plus 对 TDengine 进行整合。TDengine 支持 SQL 语言，允许我们利用 Mybatis-Plus 的强大功能进行数据操作。tio-boot 是一个高效的 Java Web 框架，用于构建基于事件驱动的应用程序。 添加依赖 - tio-boot:",
      "keywords": [],
      "status": "document",
      "sha256": "3fd3bb3d3bc633c8510345936003af54bf856f0dca2bc3f369e53fadf96106f0"
    },
    {
      "id": "zh/17_mybatis/05.md",
      "title": "整合 mybatis-plus",
      "language": "zh-CN",
      "chapter": "zh/17_mybatis",
      "url": "https://tio-boot.com/zh/17_mybatis/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/17_mybatis/05.md",
      "source": "zh/17_mybatis/05.md",
      "description": "添加依赖 初始化测试数据 创建数据库 创建表 随便插入几条条记录 添加实体类和 Mapper 添加配置文件 mybatis.xml 使用工具类类整合 mybatis-plus 添加配置文件 mybatis.xml - 数据源配置 - mapper 配置 MybatisPlusUtils - 使用 MybatisSqlS",
      "keywords": [],
      "status": "document",
      "sha256": "26bc3205a5c9cba0539b2df939cf7df8c8e673bb1ba93daf8b895184391dc2ff"
    },
    {
      "id": "zh/17_mybatis/index.md",
      "title": "17_mybatis",
      "language": "zh-CN",
      "chapter": "zh/17_mybatis",
      "url": "https://tio-boot.com/zh/17_mybatis/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/17_mybatis/index.md",
      "source": "zh/17_mybatis/index.md",
      "description": "本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Tio-Boot 整合 MyBatis》。 - 02.md : 文档《使用配置类方式整合 MyBatis》。 - 03.md : 文档《整合数",
      "keywords": [],
      "status": "document",
      "sha256": "bc69d6559ee44905c53a1da2f0a1295205d3ec3d357713886c074904aacc55a4"
    },
    {
      "id": "zh/18_jooq/01.md",
      "title": "使用配置类方式整合 jOOQ",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/01.md",
      "source": "zh/18_jooq/01.md",
      "description": "toc 在本教程中，我们将演示如何在 tio-boot 项目中， 以纯 Java 配置类的方式整合 jOOQ ，实现： 不使用 XML 不使用代码生成插件（可选） 使用 DSLContext 进行类型安全 SQL 通过 AOP 自动注入 jOOQ 核心对象 与 tio-boot 生命周期完美整合 通过本文，不仅能学会 ",
      "keywords": [],
      "status": "document",
      "sha256": "7cb924fb1f1c4a6b168f76e8550f85b5e3788df6f2f888a4ade53af7bd96f210"
    },
    {
      "id": "zh/18_jooq/02.md",
      "title": "tio-boot + jOOQ 事务管理",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/02.md",
      "source": "zh/18_jooq/02.md",
      "description": "toc 本文将基于已经完成的 tio-boot + jOOQ（纯配置类方式、AOP 注入 DSLContext） 的整合方案，继续讲清楚在该架构下如何实现 事务管理 。 目标是做到： 以 纯 Java 方式 管理事务 不依赖 Spring，不引入额外框架 支持手动事务、AOP 事务两种写法 明确事务边界，避免连接泄漏与",
      "keywords": [],
      "status": "document",
      "sha256": "84f1a839a3f57e6aad3874df138d5a87d38326aebd8d1b5d39fc175d0146e1f8"
    },
    {
      "id": "zh/18_jooq/03.md",
      "title": "批量操作与性能优化",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/03.md",
      "source": "zh/18_jooq/03.md",
      "description": "在现代 Web 系统中，数据库往往是性能瓶颈，而 批量操作（Batch） 是最直接、最有效的优化手段之一。 本文将在已经完成： tio-boot + jOOQ 整合 AOP 注入 DSLContext 手动 / AOP 事务管理 的基础上，深入讲解： 如何使用 jOOQ 进行高性能批量操作 如何避免常见性能陷阱 如何提",
      "keywords": [],
      "status": "document",
      "sha256": "5b573a5c718d3ff807eef131dc5ec5ba0b95d89fcd321af89104c7f637e58178"
    },
    {
      "id": "zh/18_jooq/04.md",
      "title": "整合agroal",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/04.md",
      "source": "zh/18_jooq/04.md",
      "description": "toc 本文介绍如何在 tio-boot 项目中使用 Agroal 连接池 作为数据源，并与 jOOQ 集成，同时提供事务管理能力。 该方案具有以下特点： 无 Spring 依赖 程序化配置（对 AOT / Native 更友好） 启动路径清晰 易于控制生命周期 性能稳定 适用于： 高性能 REST / RPC 服务 ",
      "keywords": [],
      "status": "document",
      "sha256": "de954e143e6cacc01c00fa02b46015fd98babd7430748d0310ab8f2f4a2ebe98"
    },
    {
      "id": "zh/18_jooq/05.md",
      "title": "代码生成与类型安全",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/05.md",
      "source": "zh/18_jooq/05.md",
      "description": "在前两篇中，我们已经完成了： tio-boot + jOOQ 纯配置类整合（DSLContext 注入） 事务管理 批量操作与性能优化 但目前的 SQL 仍然是这种写法： 这类字符串方式虽然可用，但它的缺点也很明显： 字段名写错只能运行时报错 重构改字段/表名时无法自动修复 IDE 无法提供真正可靠的自动补全 大项目里",
      "keywords": [],
      "status": "document",
      "sha256": "59ecd9a999c65fd0d57f21769efb4a49620a5b9f459c4e6231c14233fb1c6834"
    },
    {
      "id": "zh/18_jooq/06.md",
      "title": "基于 Record / POJO 增删改查",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/06.md",
      "source": "zh/18_jooq/06.md",
      "description": "toc 在前几篇中，我们已经完成了： tio-boot + jOOQ 纯配置类整合 事务管理 Agroal / Druid 数据源整合 jOOQ Codegen 强类型升级 到这里，整个基础设施已经齐备。 接下来真正进入日常开发的核心环节： 如何基于 jOOQ 生成的 Table / Record / POJO，写出清",
      "keywords": [],
      "status": "document",
      "sha256": "0c964c3e8eea563430483d08a69eb87ef7005dceaa389dd6eaf699aef78b5928"
    },
    {
      "id": "zh/18_jooq/07.md",
      "title": "UPSERT、批量更新、返回主键与高级 SQL",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/07.md",
      "source": "zh/18_jooq/07.md",
      "description": "toc 在前几篇中，我们已经完成了： tio-boot + jOOQ 纯配置类整合 事务管理 Agroal / Druid 数据源整合 jOOQ Codegen 强类型升级 基于 Record / POJO 的增删改查、分页、动态条件、批量插入 到这里，已经可以覆盖大多数常规 CRUD 场景。 但在真实项目中，还会频繁",
      "keywords": [],
      "status": "document",
      "sha256": "2897b0694606dff1c1044b01cdaa4b2c340407e4cb08193d4ee1ce400a4154b6"
    },
    {
      "id": "zh/18_jooq/08.md",
      "title": "的多表关联查询、DTO 投影、聚合统计与视图封装",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/08.md",
      "source": "zh/18_jooq/08.md",
      "description": "toc 在前几篇中，我们已经逐步完成了： 1. tio-boot + jOOQ 基础整合 2. 事务管理 3. 连接池整合 4. Codegen 类型安全 5. Record / POJO CRUD 6. 批量操作、分页、动态 SQL 7. PostgreSQL UPSERT 与 returning 到这里，已经具备完",
      "keywords": [],
      "status": "document",
      "sha256": "aeb14875084e5507af16fe14ca6e4b7fb7f93ff824391137a045cceae71b9ae8"
    },
    {
      "id": "zh/18_jooq/09.md",
      "title": "的窗口函数、CTE、JSON 查询与 PostgreSQL 高级 SQL 实战",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/09.md",
      "source": "zh/18_jooq/09.md",
      "description": "toc 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 连接池整合 Codegen 类型安全 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表关联查询、DTO 投影、聚合统计与视图封装 到这里，已经具备了完",
      "keywords": [],
      "status": "document",
      "sha256": "0a1d717ec89b2441b3e443511d07036bd70ce09e8bd18d97c884434f8c5da255"
    },
    {
      "id": "zh/18_jooq/10.md",
      "title": "tio-boot + jOOQ 的审计字段、乐观锁、数据权限与企业级 Repository 设计",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/10.md",
      "source": "zh/18_jooq/10.md",
      "description": "下面直接续写下一篇，延续前文风格，作为可直接发布的教程稿。 --- toc 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、",
      "keywords": [],
      "status": "document",
      "sha256": "a96e2b73a40db095440c19d91445de123bf554b02773780cefb0fd130be09838"
    },
    {
      "id": "zh/18_jooq/11.md",
      "title": "测试策略、SQL 日志、性能诊断与生产排障",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/11.md",
      "source": "zh/18_jooq/11.md",
      "description": "toc 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 Postg",
      "keywords": [],
      "status": "document",
      "sha256": "1e5fb1b4cae2d548a0aeec438c37dc4f5b44b710fae067116260fba991bd5307"
    },
    {
      "id": "zh/18_jooq/12.md",
      "title": "多租户、读写分离与多数据源设计",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/12.md",
      "source": "zh/18_jooq/12.md",
      "description": "toc 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 Postg",
      "keywords": [],
      "status": "document",
      "sha256": "1352f3a5ca32a9162bfd7f84193d3e68b66f36a1c46e58be690135787f58435d"
    },
    {
      "id": "zh/18_jooq/13.md",
      "title": "代码生成治理、数据库迁移与团队协作规范实战",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/13.md",
      "source": "zh/18_jooq/13.md",
      "description": "toc 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 Postg",
      "keywords": [],
      "status": "document",
      "sha256": "7c8f3626aa3cb6978ec30db1ef560987cc3a5ceed51bddb2dc4a512f6c0c3fb9"
    },
    {
      "id": "zh/18_jooq/index.md",
      "title": "18_jooq",
      "language": "zh-CN",
      "chapter": "zh/18_jooq",
      "url": "https://tio-boot.com/zh/18_jooq/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/18_jooq/index.md",
      "source": "zh/18_jooq/index.md",
      "description": "本目录包含 14 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《使用配置类方式整合 jOOQ》。 - 02.md : 文档《tio-boot + jOOQ 事务管理》。 - 03.md : 文档《批量操作",
      "keywords": [],
      "status": "document",
      "sha256": "b3b775364cfeb47c4933b159250f477b5c62ea1a2acb77e66735c1e0317c2839"
    },
    {
      "id": "zh/19_postgresql/01.md",
      "title": "PostgreSQL 安装",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/01.md",
      "source": "zh/19_postgresql/01.md",
      "description": "toc docker 安装 本文档将指导您如何在单机环境下使用 Docker 安装 PostgreSQL 数据库。我们将涵盖从初始安装到数据持久化的整个过程。 环境准备 确保您的系统已安装 Docker。如果尚未安装，请参考 Docker 官方文档 进行安装。 步骤一：使用 Docker 运行 PostgreSQL 容",
      "keywords": [],
      "status": "document",
      "sha256": "b23973dac39dd3e1d5ea5fe755234d4c9b6f0e85283b31d7f1e98c56bf39d009"
    },
    {
      "id": "zh/19_postgresql/02.md",
      "title": "PostgreSQL 主键自增",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/02.md",
      "source": "zh/19_postgresql/02.md",
      "description": "toc PostgreSQL 提供了一种便捷的方式来创建自增列,这在需要为每一行生成唯一标识符时非常有用。本教程将介绍如何在 PostgreSQL 中使用自增列,并结合 Java 代码示例说明其实际应用。 1. 在 PostgreSQL 中创建带有自增列的表 在 PostgreSQL 中,我们可以使用 SERIAL 数",
      "keywords": [],
      "status": "document",
      "sha256": "ebe282f505007b34c4b3836fcf031e3f6d44c26587d2c8680b37ff5a81667355"
    },
    {
      "id": "zh/19_postgresql/03.md",
      "title": "PostgreSQL 日期类型",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/03.md",
      "source": "zh/19_postgresql/03.md",
      "description": "toc 在现代 Web 应用开发中，正确处理日期和时间，尤其是涉及不同时区的场景，是一个至关重要的环节。本文将以 PostgreSQL 的 TIMESTAMP WITH TIME ZONE 类型为核心，详细介绍如何在 Java 后端以及前后端数据交互中进行高效、准确的处理。 1. 核心概念：数据库中的时间存储 在开始之",
      "keywords": [],
      "status": "document",
      "sha256": "23882ebed9890b132ce5a3bc0083ef7cfab221eae809c859a8a568ce63a94a76"
    },
    {
      "id": "zh/19_postgresql/04.md",
      "title": "Postgresql 金融类型",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/04.md",
      "source": "zh/19_postgresql/04.md",
      "description": "toc 在金融系统中，PostgreSQL 通常使用 numeric 类型来存储高精度的数值数据，而在 Java 中推荐使用 java.math.BigDecimal 类来处理这类数据。本文将以一个具体的示例说明如何将 Java 中接收到的字符串 \"20\" 转换为 BigDecimal 对象，并存储到数据库中字段类型为",
      "keywords": [],
      "status": "document",
      "sha256": "1e3c026c4b5622f85f7a39e04d6b39775c650cfe4e58252b283739ea3ea22d75"
    },
    {
      "id": "zh/19_postgresql/05.md",
      "title": "PostgreSQL 数组类型",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/05.md",
      "source": "zh/19_postgresql/05.md",
      "description": "toc 基础数据类型数组 在数据模型设计中，经常会遇到需要存储数组字段的需求，尤其是在 PostgreSQL 数据库中。本文将以 java-db 框架为例，详细介绍如何支持对 PostgreSQL bigint 、 varchar 和 int 等数组字段的读写操作。示例将基于 java-db 的自动生成的实体类，具体实",
      "keywords": [],
      "status": "document",
      "sha256": "c0b4397ae426b8fad7027395944c86f82b201b2db9516de79006e561b391f084"
    },
    {
      "id": "zh/19_postgresql/06.md",
      "title": "索引",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/06.md",
      "source": "zh/19_postgresql/06.md",
      "description": "单列索引索引和聚合索引 本文以 mv scene code 表为例，围绕以下几类查询，说明 PostgreSQL 对索引的使用方式，以及如何设计更合理的索引。 --- 一、仅创建 group id 单列索引的情况 索引定义 查询行为分析 1. 查询仅包含 group id PostgreSQL 会使用该单列索引 可以通",
      "keywords": [],
      "status": "document",
      "sha256": "bcaf58fd07ccc04392bfcec045f13f74e8a55b3e71c610f36e62739a39b5c34e"
    },
    {
      "id": "zh/19_postgresql/07.md",
      "title": "PostgreSQL 查询优化",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/07.md",
      "source": "zh/19_postgresql/07.md",
      "description": "toc 在面对大数据量（如 rumi rmp rating 表中的 1 千万 条记录）时，分区表是一种有效的优化手段。本文将详细探讨在将表转换为分区表后，查询和插入操作的变化，以及如何利用分区表进行优化。 一、索引 原始查询示例： 在未优化前，此查询耗时约 19 秒。通过在 teacher id 列上创建索引： 查询时",
      "keywords": [],
      "status": "document",
      "sha256": "30b18e12310ac0856424ccad04bd960d7049a2cf0643fa09707d0b4ce69c4c69"
    },
    {
      "id": "zh/19_postgresql/08.md",
      "title": "获取字段类型",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/08.md",
      "source": "zh/19_postgresql/08.md",
      "description": "本文档主要介绍如何通过 Java 调用获取数据库字段类型的方法，以及该方法的实现原理和使用 PostgreSQL 获取表结构信息的完整流程。 示例代码说明 以下示例代码展示了如何调用 ApiTable.getFieldType 方法获取 website page params 表中 page cost 字段的类型。代码",
      "keywords": [],
      "status": "document",
      "sha256": "b96aa7c56f489ac7b834587cb017e38b6d7aea01e83b37b609dfda4ac61934a0"
    },
    {
      "id": "zh/19_postgresql/09.md",
      "title": "PostgreSQL 全文检索",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/09.md",
      "source": "zh/19_postgresql/09.md",
      "description": "toc 在处理涉及大量文本数据的应用时，快速且精确的全文检索变得至关重要。本文将引导如何在 PostgreSQL 中对 title 、 organization 、 description 和 location 字段进行全文检索，并通过索引提高检索性能。 pgvector 插件 pgvector 是一个用于 Postg",
      "keywords": [],
      "status": "document",
      "sha256": "0358f6075c689b84e1e29e30f84ecb9b80ada7580034e0d0e5bc0cdf201e8e49"
    },
    {
      "id": "zh/19_postgresql/10.md",
      "title": "PostgreSQL 向量",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/10.md",
      "source": "zh/19_postgresql/10.md",
      "description": "toc 余弦相似度与余弦距离 什么是余弦相似度 余弦相似度用于衡量两个向量之间的相似程度。具体来说： - 余弦相似度为 1 ：表示两个向量完全相同。 - 余弦相似度为 0 ：表示两个向量正交（没有相似性）。 - 余弦相似度为 -1 ：表示两个向量完全相反。 注意：在 pgvector 扩展中，运算符 实际上计算的是 余",
      "keywords": [],
      "status": "document",
      "sha256": "6950ad3091ad7356a01fb3d022709e6fce373e3068171ad1adbfa31dc6d253cc"
    },
    {
      "id": "zh/19_postgresql/11.md",
      "title": "PostgreSQL 优化向量查询",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/11.md",
      "source": "zh/19_postgresql/11.md",
      "description": "toc 本文档介绍了如何通过预先存储向量到数据表中来优化向量查询操作。我们将对比旧的查询方式与优化后的新查询方式，并详细解释新 SQL 的优化点，以及如何在代码中利用这些优化。 --- 一、背景介绍 在原始场景中，需要对大规模文本数据进行向量相似度查询。传统方法是将输入向量直接嵌入到 SQL 查询中进行逐行比较，这会导",
      "keywords": [],
      "status": "document",
      "sha256": "9f6e182b05a713c45560ec66c28f482c6a9ff710f30294d85baa05cafc91b4b5"
    },
    {
      "id": "zh/19_postgresql/12.md",
      "title": "PostgreSQL 其他",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/12.md",
      "source": "zh/19_postgresql/12.md",
      "description": "toc Postgres 在某些地方不同于 mysql,所有这里加以说明 RETURN GENERATED KEYS UUID 问题描述 - 数据的库的主键是类型是 UUID,当向数据库添加记录时,数据库会自动生成主键,如何获取生成的主键呢? - ApiTable 会自动返回数据库主键的的这,只不过返回主键的有些特殊 ",
      "keywords": [],
      "status": "document",
      "sha256": "57927cd517d10f4d7984e0929b1874e1fc62dece0a96ffd2e8c28408ba0adfb5"
    },
    {
      "id": "zh/19_postgresql/index.md",
      "title": "19_postgresql",
      "language": "zh-CN",
      "chapter": "zh/19_postgresql",
      "url": "https://tio-boot.com/zh/19_postgresql/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/19_postgresql/index.md",
      "source": "zh/19_postgresql/index.md",
      "description": "本目录包含 13 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《PostgreSQL 安装》。 - 02.md : 文档《PostgreSQL 主键自增》。 - 03.md : 文档《PostgreSQL",
      "keywords": [],
      "status": "document",
      "sha256": "f9b3cc572594b466cfc4debce9465f3594727f4dfe07ace379335be56e509154"
    },
    {
      "id": "zh/20_mysql/01.md",
      "title": "使用 Docker 运行 MySQL",
      "language": "zh-CN",
      "chapter": "zh/20_mysql",
      "url": "https://tio-boot.com/zh/20_mysql/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/20_mysql/01.md",
      "source": "zh/20_mysql/01.md",
      "description": "toc 本文档将介绍如何使用 Docker 运行不同版本的 MySQL 容器，包括 MySQL 5.7 和 MySQL 8.x。我们将涵盖基本的运行命令、目录映射配置以及常见问题的解决方法。 --- MySQL 5.7 1.1 使用 Docker 运行 MySQL 5.7 运行以下命令以启动 MySQL 5.7 容器：",
      "keywords": [],
      "status": "document",
      "sha256": "faf817aed72e0ea75165c3bce62396f94d806b2aa32a40b09f7a84044d76ae1c"
    },
    {
      "id": "zh/20_mysql/02.md",
      "title": "常见问题",
      "language": "zh-CN",
      "chapter": "zh/20_mysql",
      "url": "https://tio-boot.com/zh/20_mysql/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/20_mysql/02.md",
      "source": "zh/20_mysql/02.md",
      "description": "JSON MySQL 8.0.16 JSON 字段键顺序问题 问题描述 在使用 MySQL 8.0.16 版本时，向 JSON 类型的字段插入 JSON 字符串后，发现存储后的 JSON 键顺序与插入前不一致。例如： 创建语句: sql drop table if exists telegram channel min",
      "keywords": [],
      "status": "document",
      "sha256": "572739a6bae7e71e0ec61f2f955ed444fecced5ecb10a4ed15ae80efdbc6f415"
    },
    {
      "id": "zh/20_mysql/index.md",
      "title": "20_mysql",
      "language": "zh-CN",
      "chapter": "zh/20_mysql",
      "url": "https://tio-boot.com/zh/20_mysql/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/20_mysql/index.md",
      "source": "zh/20_mysql/index.md",
      "description": "本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《使用 Docker 运行 MySQL》。 - 02.md : 文档《常见问题》。",
      "keywords": [],
      "status": "document",
      "sha256": "b800e84f47a2e8a3ddba07862d996153fea6c2c1007cbab5eb9b7f9984d3d335"
    },
    {
      "id": "zh/21_oceanbase/01.md",
      "title": "快速体验 OceanBase 社区版",
      "language": "zh-CN",
      "chapter": "zh/21_oceanbase",
      "url": "https://tio-boot.com/zh/21_oceanbase/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/21_oceanbase/01.md",
      "source": "zh/21_oceanbase/01.md",
      "description": "toc 1. 背景信息 OceanBase 是由蚂蚁集团开发的一款高性能、高可用、分布式关系数据库。自 V4.0.0 版本起，OceanBase 提供了统一的安装包（All-in-One Package），用户可以通过该安装包一次性完成 obd 、 OceanBase 数据库 、 ODP 、 OBAgent 、 Gra",
      "keywords": [],
      "status": "document",
      "sha256": "153c077832ce5ebaa99ae44abaec6ebda80665638c9a2a9f46ea4eddd8d73f6e"
    },
    {
      "id": "zh/21_oceanbase/02.md",
      "title": "快速上手 OceanBase 数据库单机部署与管理",
      "language": "zh-CN",
      "chapter": "zh/21_oceanbase",
      "url": "https://tio-boot.com/zh/21_oceanbase/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/21_oceanbase/02.md",
      "source": "zh/21_oceanbase/02.md",
      "description": "本文档详细介绍了如何快速部署 OceanBase 单机版集群、查看集群基本信息、创建租户、创建数据库和用户，以及如何连接 OceanBase 集群。通过本指南，即使是初学者也能快速上手 OceanBase 数据库的各项操作。 --- 部署单机版 OceanBase 集群 1. 部署集群环境 1. 登录 ECS 主机 首",
      "keywords": [],
      "status": "document",
      "sha256": "23de0bc99bae71fd97ad2a5fcf344a4e5654dd3ad78a516ba1c00cfa6a919cf6"
    },
    {
      "id": "zh/21_oceanbase/03.md",
      "title": "诊断集群性能",
      "language": "zh-CN",
      "chapter": "zh/21_oceanbase",
      "url": "https://tio-boot.com/zh/21_oceanbase/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/21_oceanbase/03.md",
      "source": "zh/21_oceanbase/03.md",
      "description": "在进行数据库集群性能诊断时，可以采用多种方法来监控和分析系统状态。可以使用白屏监控工具如 OCP Express 或 Prometheus 进行可视化监控，也可以通过直接运行 SQL 命令（黑屏操作）来获取实时性能数据。本文档将详细介绍如何通过 SQL 命令获取和分析 OceanBase 集群的性能指标，涵盖 CPU、",
      "keywords": [],
      "status": "document",
      "sha256": "c25d3153494e00c98c17b17d6befaede54373c5bd0ad9ac81118beed0141fd70"
    },
    {
      "id": "zh/21_oceanbase/04.md",
      "title": "优化 SQL 性能指南",
      "language": "zh-CN",
      "chapter": "zh/21_oceanbase",
      "url": "https://tio-boot.com/zh/21_oceanbase/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/21_oceanbase/04.md",
      "source": "zh/21_oceanbase/04.md",
      "description": "本指南介绍了如何在 OceanBase 环境下定位与优化 SQL 性能问题。通过使用 SQL 查询定位资源消耗较高的语句、分析执行计划以及针对性地优化 SQL，可以显著提升系统性能。以下内容涵盖了从登录集群、定位 Top SQL，到获取执行计划、分析执行瓶颈，再到最终的 SQL 改写和优化过程的完整步骤和案例分析。 -",
      "keywords": [],
      "status": "document",
      "sha256": "a17814934f6c04004b9304b69c90d03ce0fc78a1897c6e39609ce22a292372e0"
    },
    {
      "id": "zh/21_oceanbase/05.md",
      "title": "待定",
      "language": "zh-CN",
      "chapter": "zh/21_oceanbase",
      "url": "https://tio-boot.com/zh/21_oceanbase/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/21_oceanbase/05.md",
      "source": "zh/21_oceanbase/05.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "c65f819aa4dc2e52b6e02a6a8fd885f798dccfac5d3064ad73259beee29d6453"
    },
    {
      "id": "zh/21_oceanbase/index.md",
      "title": "21_oceanbase",
      "language": "zh-CN",
      "chapter": "zh/21_oceanbase",
      "url": "https://tio-boot.com/zh/21_oceanbase/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/21_oceanbase/index.md",
      "source": "zh/21_oceanbase/index.md",
      "description": "本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《快速体验 OceanBase 社区版》。 - 02.md : 文档《快速上手 OceanBase 数据库单机部署与管理》。 - 03.md :",
      "keywords": [],
      "status": "document",
      "sha256": "90684ae26b32fcf388f324ab730c5564422e5a45a28bfdddf2a1bef3cd91a750"
    },
    {
      "id": "zh/22_oracle/01.md",
      "title": "Oracle",
      "language": "zh-CN",
      "chapter": "zh/22_oracle",
      "url": "https://tio-boot.com/zh/22_oracle/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/22_oracle/01.md",
      "source": "zh/22_oracle/01.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "d36e46df73150c427cd8c1da4421c0f643787a3e744327825da6bd43dcab1c80"
    },
    {
      "id": "zh/22_oracle/index.md",
      "title": "22_oracle",
      "language": "zh-CN",
      "chapter": "zh/22_oracle",
      "url": "https://tio-boot.com/zh/22_oracle/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/22_oracle/index.md",
      "source": "zh/22_oracle/index.md",
      "description": "文章 - Oracle （待补充）",
      "keywords": [],
      "status": "placeholder",
      "sha256": "bb4b6110532f20d18f9e2732f220b409dd3a3a773bd882a91a28a981e0890ced"
    },
    {
      "id": "zh/23_sqlserver/01.md",
      "title": "SQL Server",
      "language": "zh-CN",
      "chapter": "zh/23_sqlserver",
      "url": "https://tio-boot.com/zh/23_sqlserver/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/23_sqlserver/01.md",
      "source": "zh/23_sqlserver/01.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "e3e24fa719b41a8867b6f2e2cee90b39c9f52bc87209650d86c4062850d0c0de"
    },
    {
      "id": "zh/23_sqlserver/index.md",
      "title": "23_sqlserver",
      "language": "zh-CN",
      "chapter": "zh/23_sqlserver",
      "url": "https://tio-boot.com/zh/23_sqlserver/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/23_sqlserver/index.md",
      "source": "zh/23_sqlserver/index.md",
      "description": "文章 - SQL Server （待补充）",
      "keywords": [],
      "status": "placeholder",
      "sha256": "3b213edf13c8af4fb07edfb58c639c58e351834a4fcb05b957ff8ba077a942cb"
    },
    {
      "id": "zh/24_sqlite/01.md",
      "title": "SQLite",
      "language": "zh-CN",
      "chapter": "zh/24_sqlite",
      "url": "https://tio-boot.com/zh/24_sqlite/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/24_sqlite/01.md",
      "source": "zh/24_sqlite/01.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "0f675675d172f6aa02db6639392511a346e8f506f7691c9f9c392737cf607f8c"
    },
    {
      "id": "zh/24_sqlite/index.md",
      "title": "24_sqlite",
      "language": "zh-CN",
      "chapter": "zh/24_sqlite",
      "url": "https://tio-boot.com/zh/24_sqlite/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/24_sqlite/index.md",
      "source": "zh/24_sqlite/index.md",
      "description": "文章 - SQLite （待补充）",
      "keywords": [],
      "status": "placeholder",
      "sha256": "017c0c4149b97340f4cd97a83842c10064323b0d6cfcf3616dbc601f6f7b9780"
    },
    {
      "id": "zh/25_mongodb/01.md",
      "title": "tio-boot 使用 mongo-java-driver 操作 mongodb",
      "language": "zh-CN",
      "chapter": "zh/25_mongodb",
      "url": "https://tio-boot.com/zh/25_mongodb/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/25_mongodb/01.md",
      "source": "zh/25_mongodb/01.md",
      "description": "在这个示例中,创建了一个使用 MongoDB 的简单 Java Web 应用程序。这个应用程序包括了数据库依赖配置、数据库操作工具类、配置类、控制器类以及实际的 HTTP 请求处理。下面我将详细解释每一部分的作用和逻辑。 1. MongoDB Java Driver 依赖 MongoDB Java Driver，这是一",
      "keywords": [],
      "status": "document",
      "sha256": "ee1cf3edab9db82c657b66bc8cdabceb84a8b8f1e574dfb84c6734c2fc68a43b"
    },
    {
      "id": "zh/25_mongodb/index.md",
      "title": "25_mongodb",
      "language": "zh-CN",
      "chapter": "zh/25_mongodb",
      "url": "https://tio-boot.com/zh/25_mongodb/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/25_mongodb/index.md",
      "source": "zh/25_mongodb/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-boot 使用 mongo-java-driver 操作 mongodb》。",
      "keywords": [],
      "status": "document",
      "sha256": "f1b294e41d576955d38b7715d1f3188ff21a98ccd61bec59b1fe481f66380e9a"
    },
    {
      "id": "zh/26_elasticsearch/01.md",
      "title": "Elasticsearch",
      "language": "zh-CN",
      "chapter": "zh/26_elasticsearch",
      "url": "https://tio-boot.com/zh/26_elasticsearch/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/26_elasticsearch/01.md",
      "source": "zh/26_elasticsearch/01.md",
      "description": "Introduction Elasticsearch 是一个基于分布式架构的搜索和分析引擎，主要用于处理大规模的文本数据。它建立在 Apache Lucene 之上，并提供了一个基于 RESTful API 的接口，使得数据的索引和搜索变得非常简便。以下是 Elasticsearch 的简介和一些基本概念： 简介 El",
      "keywords": [],
      "status": "document",
      "sha256": "ac9458617ef619197faf7b62dde63d4b8839100b1d4f295f3ae2c5f9c3cbbeee"
    },
    {
      "id": "zh/26_elasticsearch/02.md",
      "title": "JavaDB 整合 ElasticSearch",
      "language": "zh-CN",
      "chapter": "zh/26_elasticsearch",
      "url": "https://tio-boot.com/zh/26_elasticsearch/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/26_elasticsearch/02.md",
      "source": "zh/26_elasticsearch/02.md",
      "description": "Java 提供了一个 Elastic 类，用于简化与 ElasticSearch 的整合过程以及执行相关的 ES 操作。本文档将介绍如何在 Java 项目中通过配置类来实现与 ElasticSearch 的整合。 使用 JavaDB 整合 ElasticSearch 添加依赖 配置文件 ( app.properties",
      "keywords": [],
      "status": "document",
      "sha256": "bcaa07ba66ca9af10961ca5d761c9aaabe88a670b5dbaea652d40de2d49cd299"
    },
    {
      "id": "zh/26_elasticsearch/03.md",
      "title": "Elastic 工具类使用指南",
      "language": "zh-CN",
      "chapter": "zh/26_elasticsearch",
      "url": "https://tio-boot.com/zh/26_elasticsearch/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/26_elasticsearch/03.md",
      "source": "zh/26_elasticsearch/03.md",
      "description": "本章介绍了 JavaDB 提供的 Elastic 工具类的使用方法，包括索引的创建、查看、删除，以及文档的批量导入、查询、更新和删除等操作。 索引操作 创建索引 创建索引的命令如下： 查看索引 要查看索引的设置，可以使用以下命令： 示例返回结果： 删除索引 删除索引的命令如下： Java 代码示例 数据文档操作 批量导",
      "keywords": [],
      "status": "document",
      "sha256": "23bfe2733671eea9c101aa9e95cebabd316f2b43d8b8debee2ef17b3cfa36e1f"
    },
    {
      "id": "zh/26_elasticsearch/04.md",
      "title": "Elastic-search 注意事项",
      "language": "zh-CN",
      "chapter": "zh/26_elasticsearch",
      "url": "https://tio-boot.com/zh/26_elasticsearch/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/26_elasticsearch/04.md",
      "source": "zh/26_elasticsearch/04.md",
      "description": "Elastic-search 在某些时候并不是效率最高的选择,例如根据主键查询和索引查询 在查询语句为 SELECT FROM table WHERE id=? 的场景下，具体分析如下： 1. PostgreSQL : - 适用场景 ：PostgreSQL 是关系型数据库，最适合结构化查询，特别是在基于主键或唯一索引的",
      "keywords": [],
      "status": "document",
      "sha256": "b51b3646c9b90404a4998b78885e53a4e06f67cea167fb011601d3c4c3844edc"
    },
    {
      "id": "zh/26_elasticsearch/05.md",
      "title": "ES 课程示例文档",
      "language": "zh-CN",
      "chapter": "zh/26_elasticsearch",
      "url": "https://tio-boot.com/zh/26_elasticsearch/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/26_elasticsearch/05.md",
      "source": "zh/26_elasticsearch/05.md",
      "description": "在将关系数据库中的数据导入 Elasticsearch 以实现高效搜索的过程中，本文展示了如何使用 Java 集成 PostgreSQL 和 Elasticsearch。通过创建索引、批量导入数据、以及构建复杂查询，我们能够实现对大量课程数据的快速检索和分析。此方法不仅提高了数据查询的效率，还为用户提供了更为灵活的搜索",
      "keywords": [],
      "status": "document",
      "sha256": "3ac614d3e908ca2ed10d79e9108bc0a9c80c71922d30674f1202809aeae76ebf"
    },
    {
      "id": "zh/26_elasticsearch/index.md",
      "title": "26_elasticsearch",
      "language": "zh-CN",
      "chapter": "zh/26_elasticsearch",
      "url": "https://tio-boot.com/zh/26_elasticsearch/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/26_elasticsearch/index.md",
      "source": "zh/26_elasticsearch/index.md",
      "description": "本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Elasticsearch》。 - 02.md : 文档《JavaDB 整合 ElasticSearch》。 - 03.md : 文档《Ela",
      "keywords": [],
      "status": "document",
      "sha256": "808df80127980c8aff5808dca67409d47ab7d3d42d5a02619fb8ba0c1987cb65"
    },
    {
      "id": "zh/27_cache/01.md",
      "title": "Caffeine",
      "language": "zh-CN",
      "chapter": "zh/27_cache",
      "url": "https://tio-boot.com/zh/27_cache/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/27_cache/01.md",
      "source": "zh/27_cache/01.md",
      "description": "toc Caffeine 简介 Caffeine 是一个高性能的 Java 缓存库，提供了近乎最优的命中率。它是一个完全在内存中的缓存，可以用作本地缓存或与其他缓存解决方案结合使用。Caffeine 的主要特点包括： - 快速的读写操作 - 基于大小、时间和引用的驱逐策略 - 统计和监听功能 - 易用的 API tio",
      "keywords": [],
      "status": "document",
      "sha256": "e12a8efef9f999ab106b44f868c3cc34951a154a2e7af9b4600a0f15834f7f43"
    },
    {
      "id": "zh/27_cache/06.md",
      "title": "CacheUtils 工具类",
      "language": "zh-CN",
      "chapter": "zh/27_cache",
      "url": "https://tio-boot.com/zh/27_cache/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/27_cache/06.md",
      "source": "zh/27_cache/06.md",
      "description": "概述 tio-utils 内置了 CacheUtils 用户提供对缓存数据的支持,提供的工具类如下,tio-boot 已经内置了 tio-utils,所以不需要添加 tio-utils 的依赖.但是需要添加对于缓存库的依赖 - nexus.io.tio.utils.cache.caffeine.CaffeineCach",
      "keywords": [],
      "status": "document",
      "sha256": "4434b4a561f09629829144361e40693ba85728b2ccc5fa56e4a5771f8f52774a"
    },
    {
      "id": "zh/27_cache/08.md",
      "title": "使用 java-db 整合 ehcache",
      "language": "zh-CN",
      "chapter": "zh/27_cache",
      "url": "https://tio-boot.com/zh/27_cache/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/27_cache/08.md",
      "source": "zh/27_cache/08.md",
      "description": "Ehcache 是一个广泛使用的开源的缓存黄金，它可以提高应用程序的性能和扩展性。 java-db 对 ehcache 进行了支持,使其的 java-db 中更易使用 整合 ehcache 添加依赖 需要用到 java-db 添加配置文件 ehcache.xml ehcache.xml 是 Ehcache 缓存的配置文",
      "keywords": [],
      "status": "document",
      "sha256": "ccf4babf637fa24622d2dfea49503b30e5e6fc3770e4e3b2b073bf765d7bc4c6"
    },
    {
      "id": "zh/27_cache/index.md",
      "title": "27_cache",
      "language": "zh-CN",
      "chapter": "zh/27_cache",
      "url": "https://tio-boot.com/zh/27_cache/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/27_cache/index.md",
      "source": "zh/27_cache/index.md",
      "description": "本章介绍本地缓存与统一缓存接口。Redis 客户端、序列化、分布式缓存与两级缓存集中在 28 redis 。 阅读目录 - Caffeine - CacheUtils 工具类 - 使用 java-db 整合 ehcache",
      "keywords": [],
      "status": "document",
      "sha256": "95fb84a984f678aae428ba06e251bcac44787183d2cb4702b2f40c12f436812a"
    },
    {
      "id": "zh/28_redis/00.md",
      "title": "使用 Docker 安装 Redis",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/00.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/00.md",
      "source": "zh/28_redis/00.md",
      "description": "使用 Docker 安装 Redis，配置密码、host 网络、数据持久化，并通过 redis-cli 验证连接。",
      "keywords": [
        "[Redis",
        "Docker",
        "安装",
        "requirepass",
        "redis-cli",
        "host",
        "持久化]"
      ],
      "status": "document",
      "sha256": "d7f3b96a8e9c8a9a9f492707dfb498e6821c3a6d5b11b8d4d2bdedf1b85210e1"
    },
    {
      "id": "zh/28_redis/01.md",
      "title": "使用 java-db 整合 Redis",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/01.md",
      "source": "zh/28_redis/01.md",
      "description": "java-db 的 RedisPlugin 初始化、连接池生命周期、RedisDb 调用与序列化选择。",
      "keywords": [
        "[Redis",
        "RedisPlugin",
        "RedisDb",
        "java-db",
        "Jedis",
        "连接池",
        "序列化]"
      ],
      "status": "document",
      "sha256": "123e4ed0122ba929b8a3ca4bbec03a7ba7af23951101f29c2fcd36364dc3ad27"
    },
    {
      "id": "zh/28_redis/02.md",
      "title": "Java DB Redis 相关 Api",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/02.md",
      "source": "zh/28_redis/02.md",
      "description": "Redis.use() 返回 RedisDb ；分布式锁限制见 使用示例 。 简介 Java DB 内置了许多与 Redis 相关的类，这些类可以简化 Redis 操作并提高开发效率。 相关类 以下是对 Redis 相关的文档说明： Redis 类 Redis 类是一个 Redis 工具类，提供了一组静态方法来简化 R",
      "keywords": [],
      "status": "document",
      "sha256": "e777df3120824f1c1cef235dde1b94acd5507c3f9b8d782de29c6526edd65e3a"
    },
    {
      "id": "zh/28_redis/03.md",
      "title": "redis 使用示例",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/03.md",
      "source": "zh/28_redis/03.md",
      "description": "以下片段假设已按 RedisPlugin 初始化 启动插件，并导入 nexus.io.redis.Redis 和 nexus.io.redis.RedisDb 。除独立给出导入的示例外，省略重复 import；资源在应用关闭时统一释放。 使用示例 示例 1：设置和获取字符串值 示例 2：操作整数值 示例 3：操作哈希表",
      "keywords": [],
      "status": "document",
      "sha256": "9165fd0cfc100049bd61e9b535e5588fce986c488bcf4ee29852121b22c95d6e"
    },
    {
      "id": "zh/28_redis/04.md",
      "title": "和 RedisTemplate 协作",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/04.md",
      "source": "zh/28_redis/04.md",
      "description": "问题描述 在之前的旧项目中，使用了 Spring Boot 框架，并通过 RedisTemplate 类操作数据库。 RedisTemplate 在向 Redis 中写入数据时，会对 key 和 value 进行序列化。现在的问题是，如何使用 Java DB 的 Redis 工具读取由 RedisTemplate 序列",
      "keywords": [],
      "status": "document",
      "sha256": "d803f33a5eb293bbf6809c594b33f155117e3fdb411bc234570b0d2538968daa"
    },
    {
      "id": "zh/28_redis/05.md",
      "title": "使用 Jedis 连接池接入 Redis",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/05.md",
      "source": "zh/28_redis/05.md",
      "description": "Jedis 是 Redis 的 Java 客户端。本章 java-db 示例使用 Jedis 4.3.1。直接使用 Jedis 时，应共享 JedisPool，每次操作从池中借出连接并在结束后归还。 依赖 最小示例 本例假设本地 Redis 无认证。Web 项目应在应用初始化时创建连接池、请求中借用连接、应用关闭时销毁",
      "keywords": [],
      "status": "document",
      "sha256": "31e0793cc37c6912bd617eb33467baa1d3bd7e15066e22a84b3bac90db98a508"
    },
    {
      "id": "zh/28_redis/06.md",
      "title": "hutool RedisDS",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/06.md",
      "source": "zh/28_redis/06.md",
      "description": "添加依赖,tio-boot 已经内置了 hutool-all 以来,包含 hutool-redis,主要添加 jedis 依赖即可 配置类 测试 Controller 这两段代码分别是配置类和控制器类的示例，用于在 Java 项目中使用 Hutool 的 RedisDS 类来配置和访问 Redis 数据库。 配置类 (",
      "keywords": [],
      "status": "document",
      "sha256": "7fb92018edd63ae04de00cb2a33efd39430e9ee85d8ccff2fd8131fe003352ad"
    },
    {
      "id": "zh/28_redis/07.md",
      "title": "Redisson",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/07.md",
      "source": "zh/28_redis/07.md",
      "description": "本节解释如何使用 tio-boot 通过 Redisson 整合 redis Redisson 简介 什么是 Redisson Redisson 是一个强大的 Redis 客户端，提供了丰富的分布式数据结构和工具，适用于 Java 应用的高可扩展性和高并发需求。 Redisson 的主要用途 - 分布式数据结构 ：Re",
      "keywords": [],
      "status": "document",
      "sha256": "21f5962b08920854df0fa36f612ead286b771ffbae1e8f13e70a31d742ae14f8"
    },
    {
      "id": "zh/28_redis/08.md",
      "title": "Caffeine 与 Redis 两级缓存",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/08.md",
      "source": "zh/28_redis/08.md",
      "description": "Caffeine 和 Redis 的区别 Caffeine 本身不会将数据存储到 Redis 中。如果想要将数据缓存到 Redis 中，需要使用专门为 Redis 设计的缓存解决方案，如 Spring Cache with Redis 或 Jedis。这些工具和库允许直接与 Redis 数据库交互，将数据存储在 Red",
      "keywords": [],
      "status": "document",
      "sha256": "cb0d8778a8a1f1310f768afb6653a917fa2f48332090a8a078dafda408b22425"
    },
    {
      "id": "zh/28_redis/09.md",
      "title": "使用 CacheUtils 整合 caffeine 和 redis 实现的两级缓存",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/09.md",
      "source": "zh/28_redis/09.md",
      "description": "配置类 CacheNameConfig 测试类 CacheCaffeineRedisTestController 访问 http://localhost/cache/caffeine/redis/test 查看测试结果",
      "keywords": [],
      "status": "document",
      "sha256": "b6f6b236f87c1dca876482f6e70cbc31075757628b596beb30de143d0f0a2428"
    },
    {
      "id": "zh/28_redis/index.md",
      "title": "28_redis",
      "language": "zh-CN",
      "chapter": "zh/28_redis",
      "url": "https://tio-boot.com/zh/28_redis/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/28_redis/index.md",
      "source": "zh/28_redis/index.md",
      "description": "本章集中介绍 Redis 安装、接入、RedisPlugin / RedisDb API、数据操作、序列化互通及两级缓存。先完成 Docker 安装与连接验证，再阅读 java-db 整合，并根据项目选用 Jedis、Hutool 或 Redisson。 本章区分 java-db 的 RedisDb 和 tio-uti",
      "keywords": [],
      "status": "document",
      "sha256": "3bdd0634af772a68c4917c8e3f5f9048051c89650520c9ce8af1738ec0ae7575"
    },
    {
      "id": "zh/29_mq/01.md",
      "title": "Mica-mqtt",
      "language": "zh-CN",
      "chapter": "zh/29_mq",
      "url": "https://tio-boot.com/zh/29_mq/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/29_mq/01.md",
      "source": "zh/29_mq/01.md",
      "description": "添加依赖 这段代码主要涉及两个 Java 类，它们是用于配置和实现 MQTT 客户端的功能。让我们逐个进行解释： MqttClientConnectListener 类 这个类实现了 IMqttClientConnectListener 接口，用于监听 MQTT 客户端的连接状态。 - 方法 : - onConnect",
      "keywords": [],
      "status": "document",
      "sha256": "fbbd17394a6aac85654d4a0005ea7fe523230a46a537dd95be77d207edd3c1c7"
    },
    {
      "id": "zh/29_mq/02.md",
      "title": "EMQX",
      "language": "zh-CN",
      "chapter": "zh/29_mq",
      "url": "https://tio-boot.com/zh/29_mq/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/29_mq/02.md",
      "source": "zh/29_mq/02.md",
      "description": "tio-boot 整合EMQX 本文用来设置和运行一个基于 MQTT 协议的客户端程序，利用 Eclipse Paho MQTT 客户端库和 tio-boot 框架进行消息发布和订阅。 Maven 依赖 首先， 部分是 Maven 构建配置，用于在的项目中包含 Eclipse Paho MQTT 客户端库。 app.p",
      "keywords": [],
      "status": "document",
      "sha256": "a4f28e2633338a113b8c6a42d5e86dde8800414c45214c8515ba5ee171a75c2b"
    },
    {
      "id": "zh/29_mq/03.md",
      "title": "Disruptor",
      "language": "zh-CN",
      "chapter": "zh/29_mq",
      "url": "https://tio-boot.com/zh/29_mq/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/29_mq/03.md",
      "source": "zh/29_mq/03.md",
      "description": "背景 工作中遇到项目使用 Disruptor 做消息队列,对没看错,不是 Kafka,也不是 rabbitmq;Disruptor 有个最大的优点就是快,还有一点它是开源的哦,下面做个简单的记录. Disruptor 介绍 Disruptor 的 github 主页：https://github.com/LMAX-Ex",
      "keywords": [],
      "status": "document",
      "sha256": "e455252e94fe86e20efcae5757e6d04a620c967e50671da5eb46110b976993a6"
    },
    {
      "id": "zh/29_mq/04.md",
      "title": "RocketMQ 安装（Docker Compose）",
      "language": "zh-CN",
      "chapter": "zh/29_mq",
      "url": "https://tio-boot.com/zh/29_mq/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/29_mq/04.md",
      "source": "zh/29_mq/04.md",
      "description": "使用 Docker Compose 部署 RocketMQ 5.x 的 NameServer、Broker、Proxy 与 Dashboard，开启延迟消息与定时消息，并用 mqadmin 和控制台验证。",
      "keywords": [
        "[RocketMQ",
        "Docker",
        "docker-compose",
        "NameServer",
        "Broker",
        "Dashboard",
        "延迟消息",
        "定时消息",
        "mqadmin]"
      ],
      "status": "document",
      "sha256": "83038d8c3dccc3d2e0f732c4a64af488f57da31a0bbe2e5ab8d71ee21c18d7eb"
    },
    {
      "id": "zh/29_mq/05.md",
      "title": "tio-boot 整合 RocketMQ",
      "language": "zh-CN",
      "chapter": "zh/29_mq",
      "url": "https://tio-boot.com/zh/29_mq/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/29_mq/05.md",
      "source": "zh/29_mq/05.md",
      "description": "tio-boot-admin 提供的 RocketMQ 整合，不依赖 Spring：TioAdminRocketMqConfig 初始化、配置、RocketMq 入口、RocketMqTemplate 发送（同步、Key、Tag、属性、延迟级别、定时、顺序、异步、单向）、@RocketMqMessageListener 监听（集群、广播、顺序、Tag/SQL92 过滤、重试）、发送与消费钩子、ACL 与消息轨迹。",
      "keywords": [
        "[RocketMQ",
        "tio-boot",
        "tio-boot-admin",
        "TioAdminRocketMqConfig",
        "RocketMq",
        "RocketMqTemplate",
        "RocketMqMessageListener",
        "RocketMqListener",
        "延迟消息",
        "广播消费",
        "顺序消息",
        "消息钩子",
        "多租户]"
      ],
      "status": "document",
      "sha256": "3a0c2b1ead1946de85756b8d807b8b2d6609f9951d52431d5b45c45869cb4b45"
    },
    {
      "id": "zh/29_mq/06.md",
      "title": "RocketMQ 即时通讯实战",
      "language": "zh-CN",
      "chapter": "zh/29_mq",
      "url": "https://tio-boot.com/zh/29_mq/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/29_mq/06.md",
      "source": "zh/29_mq/06.md",
      "description": "用 tio-boot-admin 提供的 RocketMQ 整合实现即时通讯消息链路：消息落库后异步扇出、按节点 Topic 定向推送、广播上线事件、客户端 ACK、延迟消息检查并重推、租户上下文透传，以及事务提交后发送的本地消息表。",
      "keywords": [
        "[RocketMQ",
        "tio-boot",
        "即时通讯",
        "IM",
        "消息推送",
        "广播消费",
        "延迟消息",
        "ACK",
        "重推",
        "本地消息表",
        "Outbox",
        "多租户]"
      ],
      "status": "document",
      "sha256": "d8099e0f2d9cf02a79a72e29a984e6a322b279f39207f5f155b5eb0981dfbeec"
    },
    {
      "id": "zh/29_mq/index.md",
      "title": "29_mq",
      "language": "zh-CN",
      "chapter": "zh/29_mq",
      "url": "https://tio-boot.com/zh/29_mq/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/29_mq/index.md",
      "source": "zh/29_mq/index.md",
      "description": "本章介绍 MQTT 接入（Mica MQTT、EMQX）、进程内事件处理（Disruptor）以及 RocketMQ 的安装、整合与即时通讯实战。RocketMQ 整合由 tio-boot-admin 提供，不依赖 Spring。Disruptor 是进程内组件，与独立消息代理的部署方式不同。Kafka 与 AWS M",
      "keywords": [],
      "status": "document",
      "sha256": "6eb570714781771e0d1eccdd6fc025f7ffb8f453c0a8c59f4fb58db781cbb59f"
    },
    {
      "id": "zh/30_kafka/01.md",
      "title": "Kafka",
      "language": "zh-CN",
      "chapter": "zh/30_kafka",
      "url": "https://tio-boot.com/zh/30_kafka/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/30_kafka/01.md",
      "source": "zh/30_kafka/01.md",
      "description": "本文演示如何在 tio-boot 项目中集成 Kafka ，实现消息的生产与消费，并通过 HTTP 接口触发消息发送。 --- 一、Kafka 安装与启动 Kafka 依赖 Zookeeper（新版本可用 KRaft，但这里用经典方式，简单稳定）。 Zookeeper 下载 ZooKeeper 3.9.5 下载目录 里",
      "keywords": [],
      "status": "document",
      "sha256": "486cc63f7b5ce0c69bdf9843d81e63ed9991fbf54e92c366c1319781de6663bb"
    },
    {
      "id": "zh/30_kafka/02.md",
      "title": "AWS MSK",
      "language": "zh-CN",
      "chapter": "zh/30_kafka",
      "url": "https://tio-boot.com/zh/30_kafka/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/30_kafka/02.md",
      "source": "zh/30_kafka/02.md",
      "description": "tio-boot-admin 的 Kafka 相关类使用包名 nexus.io.tio.boot.admin.kafaka 。导入时请注意 kafaka 的拼写。 tio-boot整合AWS MSK 一、准备工作 接入前先确认这几件事： 1. MSK 集群已创建 2. Topic 已存在 ，或者由程序自动创建 3. 应",
      "keywords": [],
      "status": "document",
      "sha256": "80dd17a2de1899495974e5d5b110804f334d975f637f541229826d677eb6ca8d"
    },
    {
      "id": "zh/30_kafka/index.md",
      "title": "30_kafka",
      "language": "zh-CN",
      "chapter": "zh/30_kafka",
      "url": "https://tio-boot.com/zh/30_kafka/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/30_kafka/index.md",
      "source": "zh/30_kafka/index.md",
      "description": "本章介绍 Apache Kafka 的接入以及 AWS Managed Streaming for Apache Kafka（MSK）相关配置。先阅读 Kafka，再按所用部署环境阅读 AWS MSK。MQTT 与进程内事件处理见 29 mq 。 阅读目录 - Kafka - AWS MSK",
      "keywords": [],
      "status": "document",
      "sha256": "8bd6cb507ba958280d44c2f94e15324cea1bde42ec359d7ab2124d295a736ef0"
    },
    {
      "id": "zh/31_authentication/01.md",
      "title": "FixedTokenInterceptor",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/01.md",
      "source": "zh/31_authentication/01.md",
      "description": "概述 FixedTokenInterceptor 是 TioBoot 框架提供的一个内置 HTTP 请求拦截器，主要用于实现基于固定令牌的身份验证机制。该拦截器会检查 HTTP 请求头中的 authorization 字段，确保其值与预先配置的令牌一致，从而实现对 API 访问的安全控制。 应用场景 - 简单的 API",
      "keywords": [],
      "status": "document",
      "sha256": "fdb1a70dbb1c3f43eb14f76d4437574d4d7289eb2c06176d511a14a47cc4811e"
    },
    {
      "id": "zh/31_authentication/02.md",
      "title": "TokenManager",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/02.md",
      "source": "zh/31_authentication/02.md",
      "description": "Tio-boot内置了TokenManager用于简化token管理 在使用 Tio-boot 框架开发 Web 应用程序时，安全性始终是我们必须重点关注的部分。本文将详细介绍如何使用 Tio-boot 框架实现基于 JWT 的 Token 认证。我们将探讨如何配置拦截器、生成和验证 JWT Token，并管理用户的登",
      "keywords": [],
      "status": "document",
      "sha256": "9a0bad69e3876750e509a56234de41690052c5d0c2d863d6c43e8640549091d8"
    },
    {
      "id": "zh/31_authentication/03.md",
      "title": "数据表",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/03.md",
      "source": "zh/31_authentication/03.md",
      "description": "1 用户表 Postgres sqlite 2 邮箱验证码表 用于存储邮件验证码信息，便于后续验证邮箱：",
      "keywords": [],
      "status": "document",
      "sha256": "77647529e9ed4f8679a41c209a72986d6953b937f379c8846a183c6a439f664e"
    },
    {
      "id": "zh/31_authentication/04.md",
      "title": "匿名登录",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/04.md",
      "source": "zh/31_authentication/04.md",
      "description": "toc 本章介绍如何创建匿名用户，以及在前后端交互中如何利用匿名登录接口完成用户身份的验证和授权。文档中包含了登录流程、接口说明、代码实现及其背后的关键技术细节和设计思路。 1. 匿名登录流程 匿名登录流程主要包括以下两个步骤： 1. 前端请求 前端向后端发起请求，通过调用匿名登录接口，获取匿名用户的相关信息。该接口会",
      "keywords": [],
      "status": "document",
      "sha256": "309389432badccabc4dca208e2244fbcc10a20e0d83cae0d4a2d83d06105eeab"
    },
    {
      "id": "zh/31_authentication/06.md",
      "title": "个人中心",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/06.md",
      "source": "zh/31_authentication/06.md",
      "description": "1. 功能概述 本文介绍如何使用 tio-boot 框架实现个人中心功能，包含以下核心接口： - 用户信息查询 ：获取当前用户的详细信息 - 用户信息更新 ：修改用户基本信息 - 密码更新 ：安全修改用户密码 --- 2. 接口规范 2.1 用户信息查询接口 请求 响应示例 2.2 用户信息更新接口 请求 响应示例 2",
      "keywords": [],
      "status": "document",
      "sha256": "a662df09eef97f5cd7dc3ff4081bc9d0ce0c47c8567e3b1ce198cf6c64dc4182"
    },
    {
      "id": "zh/31_authentication/14.md",
      "title": "权限校验注解",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/14.md",
      "source": "zh/31_authentication/14.md",
      "description": "toc 在开发 Web 应用程序时，权限控制是必不可少的功能。本文将介绍如何在 TioBoot 框架中使用内置的注解 @GatewayCheck 、 @RequiresAuthentication 和 @RequiresPermissions 实现权限校验，并演示如何自定义权限校验的切面逻辑。 前言 TioBoot 提",
      "keywords": [],
      "status": "document",
      "sha256": "8f05cf52e6907d5d50e8ab024402994f4115df6a8dda1609a06dbdbf271e9282"
    },
    {
      "id": "zh/31_authentication/15.md",
      "title": "Sa-Token",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/15.md",
      "source": "zh/31_authentication/15.md",
      "description": "toc 概述 Tio-Boot 已经内置对 Sa-Token 的支持，为处理身份验证和授权提供了一种高效的方式。虽然 Tio-Boot 自带此支持，但仍需手动添加 sa-token-core 依赖。此外，如果希望将 Token 存储在 Redis 中，还需要添加 java-db 、 jedis 和 fst 依赖。 使用",
      "keywords": [],
      "status": "document",
      "sha256": "a620c9c51eb16d8d606dfb2137897d473b7d5563399916e0ffa3a076aac9ef0c"
    },
    {
      "id": "zh/31_authentication/16.md",
      "title": "sa-token 登录注册",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/16.md",
      "source": "zh/31_authentication/16.md",
      "description": "toc 在本章节中，我们将使用 tio-boot 和 Sa-Token 开发一个用户注册和登录系统。该系统将： - 从 MySQL 数据库读取和存储用户信息。 - 生成用于认证的 JWT 令牌。 - 将会话数据存储在 Redis 中。 本示例将引导您完成以下步骤： - 创建必要的数据库表。 - 添加项目所需的依赖。 -",
      "keywords": [],
      "status": "document",
      "sha256": "a5ab978f9dda93e587a2257fffe5cd5cc58f33f4f9ced8e06272525ca95b38c1"
    },
    {
      "id": "zh/31_authentication/17.md",
      "title": "StpUtil.isLogin() 源码解析",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/17.md",
      "source": "zh/31_authentication/17.md",
      "description": "toc 在现代 Web 应用中，用户身份验证与会话管理是确保系统安全性和用户体验的重要组成部分。本文将深入解析 StpUtil.isLogin() 方法的源码，帮助开发者更好地理解其工作原理及实现细节。 方法概述 StpUtil.isLogin() 方法用于判断当前会话是否已经登录。该方法返回一个布尔值：如果已登录返回",
      "keywords": [],
      "status": "document",
      "sha256": "8c364373469d0c5321ab3fed7794dd6eabb6230ee9d352a9580e6388121dd601"
    },
    {
      "id": "zh/31_authentication/index.md",
      "title": "31_authentication",
      "language": "zh-CN",
      "chapter": "zh/31_authentication",
      "url": "https://tio-boot.com/zh/31_authentication/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/31_authentication/index.md",
      "source": "zh/31_authentication/index.md",
      "description": "本章介绍 Token、用户数据、匿名登录、个人中心和权限控制。依赖外部邮件、短信或身份提供方的完整流程，见 第三方登录注册 。原有基础认证文章编号保留。 文章 - FixedTokenInterceptor - TokenManager - 数据表 - 匿名登录 - 个人中心 - 权限校验注解 - Sa-Token -",
      "keywords": [],
      "status": "document",
      "sha256": "27271767739830ea99c2a24df03b1e9a0af39f19d1171da0fed877ad34093683"
    },
    {
      "id": "zh/32_third-party-auth/01.md",
      "title": "邮箱登录和注册",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/01.md",
      "source": "zh/32_third-party-auth/01.md",
      "description": "1.接口 1.1 注册（Regisater） 1.1.1 前端请求 当用户提交注册信息时，前端将用户名（邮箱）、密码和验证类型发送给后端，后端根据允许的验证类型处理注册及验证流程。 前端请求参数： - email: 用户的邮箱地址。 - password: 用户的密码。 - username: 用户名，可选。邮箱注册时",
      "keywords": [],
      "status": "document",
      "sha256": "3dab8a21ca362873232e140f87e6522a8548644ec2a13c1483328b08dcb3228e"
    },
    {
      "id": "zh/32_third-party-auth/02.md",
      "title": "邮箱重置密码",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/02.md",
      "source": "zh/32_third-party-auth/02.md",
      "description": "toc 本文档详细介绍了系统中重置密码功能的接口设计、流程说明及代码实现。该功能主要分为两个步骤： 1. 获取验证码 ：用户输入邮箱后，系统向该邮箱发送验证码； 2. 重置密码 ：用户将邮箱、验证码及新密码提交到后端，后端验证验证码有效后更新密码。 --- 1. 重置密码流程 重置密码的流程主要分为以下两个步骤： 1.",
      "keywords": [],
      "status": "document",
      "sha256": "61013b8c5ab9d124c8237ad8d7ae6bb7d69343e863107f1a9bfccb2e96d78bac"
    },
    {
      "id": "zh/32_third-party-auth/03.md",
      "title": "腾讯云短信登录注册",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/03.md",
      "source": "zh/32_third-party-auth/03.md",
      "description": "toc 概述 本指南旨在详细介绍如何实现基于短信验证码的用户登录和注册功能。通过使用腾讯云短信服务，系统能够在用户成功登录后自动创建新用户。本文涵盖了从短信模板配置、数据库设计、短信发送工具类开发，到接口实现和验证逻辑的全流程，适用于 Java 开发环境。 配置短信模板 在开始实现短信登录功能之前，首先需要在腾讯云完成",
      "keywords": [],
      "status": "document",
      "sha256": "95286379507193e840e7be4ab58fd54489df7277defbfd722532aa4f8b7b174d"
    },
    {
      "id": "zh/32_third-party-auth/04.md",
      "title": "腾讯云短信重置密码",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/04.md",
      "source": "zh/32_third-party-auth/04.md",
      "description": "toc --- 环境配置与平台字段 配置读取方式如下；完整服务还会检查必填项和有效期，避免空配置进入发送流程： 重置密码使用 TENCENT SMS RESET PASSWORD TEMPLATE ID ，绑定手机号使用 TENCENT SMS BIND PHONE TEMPLATE ID ；应用 ID、签名、区域、接",
      "keywords": [],
      "status": "document",
      "sha256": "c5ea9ba268064c6b1aa702441c4cb4f704706e0c04edce9de0f049e96e500e9c"
    },
    {
      "id": "zh/32_third-party-auth/05.md",
      "title": "阿里云短信登录和注册",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/05.md",
      "source": "zh/32_third-party-auth/05.md",
      "description": "toc 1. 控制台准备与图片说明 申请资质、签名和模板 依次完成资质、短信签名、验证码模板和系统设置。短信签名、模板应审核通过，账户应有足够余额，调用身份应具有 dysms:SendSms 权限。 短信接入步骤 模板详情中确认模板 Code 和变量名。图中的 ${code} 是模板变量，调用时通过 TemplateP",
      "keywords": [],
      "status": "document",
      "sha256": "4749be43c5162909d23d00d0a0f3ecaeec60b272fc67a6d57901a7034fc08c93"
    },
    {
      "id": "zh/32_third-party-auth/06.md",
      "title": "阿里云短信重置密码",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/06.md",
      "source": "zh/32_third-party-auth/06.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "691e771db0061966f82041e61008b75d2f6cdd00e67dc7bee0d50eeaa9bc6a34"
    },
    {
      "id": "zh/32_third-party-auth/07.md",
      "title": "微信登录与绑定手机号",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/07.md",
      "source": "zh/32_third-party-auth/07.md",
      "description": "toc 适用范围 微信小程序、移动应用和公众号网页使用不同的授权入口，不能混用授权码。 | 场景 | 客户端取得 code | 服务端交换接口 | | --- | --- | --- | | 微信小程序 | uni.login({ provider: 'weixin' }) / wx.login | /sns/jsco",
      "keywords": [],
      "status": "document",
      "sha256": "01cb055deb9c52cfcd55201f97b60749b5540744fbd975e8a8ebad2e9c5c8b3f"
    },
    {
      "id": "zh/32_third-party-auth/08.md",
      "title": "支付宝登录与绑定手机号",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/08.md",
      "source": "zh/32_third-party-auth/08.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "b5ab78c7faaf20a00cbec32a314ce517c9f5bf2ee4f6494fecee6e2df27ef392"
    },
    {
      "id": "zh/32_third-party-auth/09.md",
      "title": "微信小程序手机号快捷登录",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/09.md",
      "source": "zh/32_third-party-auth/09.md",
      "description": "toc 概述 微信小程序手机号快捷登录由微信小程序客户端、业务服务端和微信开放接口共同完成。用户在小程序中主动授权手机号后，客户端取得两个不同用途的一次性凭证： - uni.login 或 wx.login 返回的小程序登录 code ，用于换取 openid 和 session key 。 - getPhoneNum",
      "keywords": [],
      "status": "document",
      "sha256": "ffad108b2ca29730e66e63d3fa93ce9b8c001e258329833e5cb8ca37d2ea1e99"
    },
    {
      "id": "zh/32_third-party-auth/10.md",
      "title": "Google登录",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/10.md",
      "source": "zh/32_third-party-auth/10.md",
      "description": "本文档详细描述了如何实现 Google 登录功能，包括前置准备、整体登录流程、后端接口及代码示例。通过本文档，您可以了解如何配置 Google 开发者平台、前后端交互细节、授权码交换、用户信息处理以及生成内部认证 token 的具体步骤。 目录 - 前置工作 - 登录流程 - 1. 是否需要后端支持 - 2. 前后端 ",
      "keywords": [],
      "status": "document",
      "sha256": "4b457aeb9352bd26eedf64f8ac3c4846484d6650650fd7e406834c515cf6c2b3"
    },
    {
      "id": "zh/32_third-party-auth/11.md",
      "title": "阿里云邮件推送验证邮箱",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/11.md",
      "source": "zh/32_third-party-auth/11.md",
      "description": "toc 本章用阿里云邮件推送（DirectMail）完成邮箱验证的发信环节，覆盖控制台准备、SMTP 与 SDK（OpenAPI）两种发送方式，以及和注册流程的对接点。 验证方式取值见 验证类型 ： verification type=1 发验证码邮件， 2 发验证链接邮件。这两种都是\"把验证信息发给用户\"， 发送成功",
      "keywords": [],
      "status": "document",
      "sha256": "aa303aef2c61d7045a989ead8339e51e0656781d5038c7ece5daf64e1583c8f4"
    },
    {
      "id": "zh/32_third-party-auth/index.md",
      "title": "32_third-party-auth",
      "language": "zh-CN",
      "chapter": "zh/32_third-party-auth",
      "url": "https://tio-boot.com/zh/32_third-party-auth/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/32_third-party-auth/index.md",
      "source": "zh/32_third-party-auth/index.md",
      "description": "本章按邮件、短信和第三方身份提供方组织登录、注册及账号找回流程。基础 Token 与权限管理见 认证 ；邮件服务等通用接入见 第三方集成 。 验证类型 verification type 表示验证方式，不局限于邮箱验证。 | 值 | 验证方式 | | --- | --- | | 0 | 不验证 | | 1 | 邮箱验证",
      "keywords": [],
      "status": "document",
      "sha256": "e4369520f66ba17d59a4e6119581545b76c43689c389d4ce71ba6d04e26ea0af"
    },
    {
      "id": "zh/33_aio/01.md",
      "title": "ByteBuffer",
      "language": "zh-CN",
      "chapter": "zh/33_aio",
      "url": "https://tio-boot.com/zh/33_aio/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/33_aio/01.md",
      "source": "zh/33_aio/01.md",
      "description": "简介 1. 什么是 ByteBuffer ByteBuffer 是 Java NIO（New Input/Output）库中的一个类，用于处理字节数据的缓冲区。它允许开发者以更高效的方式对字节流进行读写操作。与传统的 I/O 方式相比， ByteBuffer 不仅可以让程序更灵活地控制数据的读写，还可以通过直接访问底层",
      "keywords": [],
      "status": "document",
      "sha256": "f93003010a641e7f395d10701d8312af42f374fbf0a4b25badcd3e38e821b0fb"
    },
    {
      "id": "zh/33_aio/02.md",
      "title": "AIO HTTP 服务器",
      "language": "zh-CN",
      "chapter": "zh/33_aio",
      "url": "https://tio-boot.com/zh/33_aio/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/33_aio/02.md",
      "source": "zh/33_aio/02.md",
      "description": "创建简单的 HTTP 服务器 概述 AIO（Asynchronous I/O，异步 I/O）是一种能够在处理网络请求时提升效率的方式，它能够非阻塞地处理多个请求。与传统的阻塞 I/O 不同，AIO 通过异步事件通知机制减少了线程的等待时间。在 Java 中，可以使用 AsynchronousServerSocketCh",
      "keywords": [],
      "status": "document",
      "sha256": "cc4beac84c1d38fec237b8174785c96409eddd67d802c2059cad67de46a48417"
    },
    {
      "id": "zh/33_aio/03.md",
      "title": "自定义和线程池和池化 ByteBuffer",
      "language": "zh-CN",
      "chapter": "zh/33_aio",
      "url": "https://tio-boot.com/zh/33_aio/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/33_aio/03.md",
      "source": "zh/33_aio/03.md",
      "description": "背景与问题 在使用 Java AIO（NIO.2）编程时，如果不做特殊配置，默认的 AsynchronousChannelGroup 会使用系统默认的线程池。默认情况下，线程池为会频繁的创建线程、策略单一，当面对高并发请求时，很容易成为性能瓶颈。此外，频繁为每个请求分配 ByteBuffer 对象也会在高并发场景中造成",
      "keywords": [],
      "status": "document",
      "sha256": "90e3bdab355a605293bed3c9a30a804d646652008417bfcbc423321b0d6be155"
    },
    {
      "id": "zh/33_aio/04.md",
      "title": "AioHttpServer 应用示例 IP 属地查询",
      "language": "zh-CN",
      "chapter": "zh/33_aio",
      "url": "https://tio-boot.com/zh/33_aio/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/33_aio/04.md",
      "source": "zh/33_aio/04.md",
      "description": "简介 IP 属地查询在现代网络应用中是常见的功能。通过查询用户的 IP 地址，我们可以获取其地理位置信息，用于分析用户分布、增强安全性、个性化服务等场景。为了高效处理这一任务，本示例通过 Java 编写了一个异步 I/O (AIO) HTTP 服务器，结合 ip2region 库，实现了 IP 属地查询功能。 pom.",
      "keywords": [],
      "status": "document",
      "sha256": "b18ef453de45113872d5158a13cd59846d18ec29c65fb2324bbba5c46901fcba"
    },
    {
      "id": "zh/33_aio/05.md",
      "title": "手写 AIO Http 服务器",
      "language": "zh-CN",
      "chapter": "zh/33_aio",
      "url": "https://tio-boot.com/zh/33_aio/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/33_aio/05.md",
      "source": "zh/33_aio/05.md",
      "description": "本文将介绍一个手写的 Java AIO（Asynchronous I/O）HTTP 服务器的实现。该服务器采用 Java NIO 的异步特性，实现了一个简单的 HTTP 服务器，能够处理基本的 HTTP 请求和响应。以下将详细解析代码的各个部分，帮助您理解其工作原理。 一、概述 该 HTTP 服务器的核心功能包括： -",
      "keywords": [],
      "status": "document",
      "sha256": "3eff9b7ff505a94a5e4aab02ced9b012ef791540be8ea6fb5f14780797de22b5"
    },
    {
      "id": "zh/33_aio/06.md",
      "title": "Java 21 中的虚拟线程与 AIO",
      "language": "zh-CN",
      "chapter": "zh/33_aio",
      "url": "https://tio-boot.com/zh/33_aio/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/33_aio/06.md",
      "source": "zh/33_aio/06.md",
      "description": "引言 Java 21 引入了 虚拟线程（Virtual Threads） ，这是 Java 平台的一个重大更新，属于 Project Loom 项目的一部分。虚拟线程是轻量级的线程，实现了更高效的并发处理，特别是在处理大量 I/O 操作时。 在 Java 21 中，虚拟线程的引入改变了我们处理并发和 I/O 操作的方式",
      "keywords": [],
      "status": "document",
      "sha256": "23ec51d333fd3f24839f1508d6dc3f33ae534781e2dbf1eda4ef31ec1fd6c5ec"
    },
    {
      "id": "zh/33_aio/assets/index.md",
      "title": "assets",
      "language": "zh-CN",
      "chapter": "zh/33_aio",
      "url": "https://tio-boot.com/zh/33_aio/assets/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/33_aio/assets/index.md",
      "source": "zh/33_aio/assets/index.md",
      "description": "本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - image-1.png : 图片资源，用于本目录文档配图或界面示意。 - image-2.png : 图片资源，用于本目录文档配图或界面示意。 - image-3.",
      "keywords": [],
      "status": "document",
      "sha256": "de5f279a57b9323f5c1e526aa74caa2c7850f2e62d906b54077a38b914f172fe"
    },
    {
      "id": "zh/33_aio/index.md",
      "title": "33_aio",
      "language": "zh-CN",
      "chapter": "zh/33_aio",
      "url": "https://tio-boot.com/zh/33_aio/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/33_aio/index.md",
      "source": "zh/33_aio/index.md",
      "description": "本目录包含 7 个文件和 1 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《ByteBuffer》。 - 02.md : 文档《AIO HTTP 服务器》。 - 03.md : 文档《自定义和线程池和池化 ByteBu",
      "keywords": [],
      "status": "document",
      "sha256": "0ae80d82acaa315ae11f460566a96590a19b034377ac46ab05d895ab162b08f8"
    },
    {
      "id": "zh/34_tio/01-overview.md",
      "title": "t-io 核心优势与应用价值",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/01-overview.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/01-overview.md",
      "source": "zh/34_tio/01-overview.md",
      "description": "t-io 将异步网络通信、长连接管理、有序消息处理和高效文件传输整合在同一套编程模型中。开发者可以用统一的连接上下文与消息 API，构建 HTTP 服务、即时通信、设备接入及自定义 TCP 应用。 一套通信模型，覆盖多种业务 ChannelContext 保存连接上下文， Packet 表达待处理消息， Tio 提供连",
      "keywords": [],
      "status": "document",
      "sha256": "d9f35c956c58674d2f6bf8299341757ab5cf7d5a904b5379b5fcf4e41f11a4d3"
    },
    {
      "id": "zh/34_tio/02-message-flow.md",
      "title": "t-io 消息处理流程",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/02-message-flow.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/02-message-flow.md",
      "source": "zh/34_tio/02-message-flow.md",
      "description": "t-io 是一个高效的 Java 网络通信框架，它通过 Packet 、 ChannelContext 、 AioHandler 和 AioListener 等核心组件，处理 TCP 连接的数据收发和业务逻辑。以下是关于这些组件的详细介绍以及消息处理的过程。 1. Packet Packet 是用于表示业务数据结构的类",
      "keywords": [],
      "status": "document",
      "sha256": "e533bb98f68d247194838f46e31f05485a5639b0cbddacce0faca88c4d0dac2f"
    },
    {
      "id": "zh/34_tio/03-tio-boot-server.md",
      "title": "TioBootServer",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/03-tio-boot-server.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/03-tio-boot-server.md",
      "source": "zh/34_tio/03-tio-boot-server.md",
      "description": "概述 TioBootServer 是 Tio 框架的核心启动类，负责初始化和启动 Tio 服务器。它提供了一个结构化的方式来配置和启动的服务器应用程序。在启动过程中， TioBootServer 将大量的类以静态变量的形式存储，使得开发者可以在框架启动前后进行灵活的配置和操作。 主要功能 - 初始化和启动 : 通过 i",
      "keywords": [],
      "status": "document",
      "sha256": "72f979690ff5e59b80f6e242a53a101f10513f39cec216745e0eb60942433771"
    },
    {
      "id": "zh/34_tio/04-tcp-server.md",
      "title": "独立端口启动 TCP 服务器",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/04-tcp-server.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/04-tcp-server.md",
      "source": "zh/34_tio/04-tcp-server.md",
      "description": "toc 概述 T-io 是一个高性能、低延迟的 Java AIO 网络编程框架，可用于开发各类 TCP、UDP 或 WebSocket 应用。而 tio-boot 则是在 t-io 核心之上构建的快速开发框架，它通过约定优于配置和自动化注解，极大地简化了网络应用的开发流程。 tio-boot 提供了两种处理 TCP 数",
      "keywords": [],
      "status": "document",
      "sha256": "2106190d9af1bcf142753637bb2d688ff84dc026ccce0744929abaa1f1a94e00"
    },
    {
      "id": "zh/34_tio/05-tcp-handler.md",
      "title": "内置 TCP 处理器",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/05-tcp-handler.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/05-tcp-handler.md",
      "source": "zh/34_tio/05-tcp-handler.md",
      "description": "简介 tio-boot 框架内置了对 TCP 的支持. tio-boot 内置了协议识别算法，使得一个端口能够同时支持 TCP 、 HTTP 和 WebSocket 三种协议。当一个数据包到达 tio-boot-server 时， TioBootServerHandler 会根据内置的协议识别算法，选择合适的处理器来处",
      "keywords": [],
      "status": "document",
      "sha256": "f7e0129c1fd0d048d75373b0e2ba14c434340340ab1cb0e903d52832c56ceb20"
    },
    {
      "id": "zh/34_tio/06-udp-server.md",
      "title": "独立启动 UDPServer",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/06-udp-server.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/06-udp-server.md",
      "source": "zh/34_tio/06-udp-server.md",
      "description": "tio-boot 内置了 UDPServer,开发者口可以通过两种方式启动 - 独立方式 UDPServer 占用单独的端口 - 联合方式 UDPServer 和其他协议共用一个端口 操作系统会自动区分 TCP 和 UDP TCP 和 UDP 的区分是由操作系统的网络协议栈进行的。当数据包到达网络接口时，操作系统会检查",
      "keywords": [],
      "status": "document",
      "sha256": "d3db11249d9ff592405eca27ac1845a62039b71614f98dc7f9681d4a14a87bd4"
    },
    {
      "id": "zh/34_tio/07-udp-handler.md",
      "title": "使用内置 UDPServer",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/07-udp-handler.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/07-udp-handler.md",
      "source": "zh/34_tio/07-udp-handler.md",
      "description": "tio-boot 内置了 UDPServer tio-boot 内置了 UDP Server,只需要配置 UDPHandler 即可使用 将 UDPServer 和 TioBoot 配置为相同的端口即可,其他细节可以参考上一章节 参考文献 tiocloud 文档资料",
      "keywords": [],
      "status": "document",
      "sha256": "ebafea06b9043ab9f169ff5e485eff0604d69c959d4ffbf93499ccda6d007344"
    },
    {
      "id": "zh/34_tio/08-tio-config.md",
      "title": "TioConfig",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/08-tio-config.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/08-tio-config.md",
      "source": "zh/34_tio/08-tio-config.md",
      "description": "场景介绍 在构建一个 TCP 服务器时，我们通常会先选择一个端口来监听客户端连接，然后创建多个线程池来执行相关任务，如消息发送、数据包解码、数据包处理等。此外，还需要维护与客户端连接相关的各种数据。为了实现与业务逻辑的互动，通常需要将客户端连接与业务数据绑定起来，例如将某个客户端绑定到一个群组、用户 ID、Token ",
      "keywords": [],
      "status": "document",
      "sha256": "41bb0e1bbfe197903989ae3324bf5c26c5c9afecf8466db7111cc64924aaaae0"
    },
    {
      "id": "zh/34_tio/09-channel-context.md",
      "title": "ChannelContext",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/09-channel-context.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/09-channel-context.md",
      "source": "zh/34_tio/09-channel-context.md",
      "description": "ChannelContext 对象是每个 TCP 连接建立后生成的一个关键对象。它是一个抽象类，具体取决于是使用 t-io 作为 TCP 客户端还是作为 TCP 服务器。如果使用 t-io 作为 TCP 客户端，那么将获得一个 ClientChannelContext 对象；如果使用 t-io 作为 TCP 服务器，那",
      "keywords": [],
      "status": "document",
      "sha256": "5c45a13c84240a77fa228ed7bde51c9428d96c6ad8fbc87126302ea9a4ad7475"
    },
    {
      "id": "zh/34_tio/10-packet.md",
      "title": "Packet",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/10-packet.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/10-packet.md",
      "source": "zh/34_tio/10-packet.md",
      "description": "Packet 类用于表示业务数据结构。我们通过继承 Packet 来实现自己的业务数据结构。对于大家而言，可以将 Packet 看作一个普通的 VO（Value Object）对象。 注意 ：不建议直接使用 Packet 类，而是应该继承它来创建自定义的 Packet。 一个简单的 Packet 可能如下： 可以结合 ",
      "keywords": [],
      "status": "document",
      "sha256": "f5a2f16e185ecc092aa44969f6602c0ca07ec0c6b0429498b06f56f3b27ca6e6"
    },
    {
      "id": "zh/34_tio/11-tio-api.md",
      "title": "Tio 工具类",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/11-tio-api.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/11-tio-api.md",
      "source": "zh/34_tio/11-tio-api.md",
      "description": "Tio 是一个用于管理网络通信的核心类，特别是在处理客户端和服务器之间的连接、消息发送、连接绑定和关闭等功能。类包含了大量的用于管理网络连接、发送和接收数据包、处理连接状态、以及管理连接的黑名单等操作的方法。这些方法使得开发者可以在客户端和服务器之间有效地进行通信，并对连接进行精细化管理. 下面是每个方法的中文解释： ",
      "keywords": [],
      "status": "document",
      "sha256": "97181818a13af176841c499ea6d2e82d2a82ddfdfe952b839a244021f3860e9e"
    },
    {
      "id": "zh/34_tio/12-send-data.md",
      "title": "发送数据",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/12-send-data.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/12-send-data.md",
      "source": "zh/34_tio/12-send-data.md",
      "description": "在 t-io 中，发送数据分为异步发送和同步发送两种方式。异步发送更适用于高并发和对实时性要求不高的场景，而同步发送则在需要立即确认数据发送结果时使用。 异步发送 异步发送是指业务层将 Packet 提交给 t-io 后立即返回，此时数据还没有被真正发送，而是被放入待发送队列中进行处理。异步发送的操作通常以 send ",
      "keywords": [],
      "status": "document",
      "sha256": "75591ab8b49c06647f11a8ffc13f3e26179b11d3356bf85f8cef4c4213f505b8"
    },
    {
      "id": "zh/34_tio/13-http-keep-alive-file-transfer.md",
      "title": "HTTP 长连接与高效文件传输",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/13-http-keep-alive-file-transfer.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/13-http-keep-alive-file-transfer.md",
      "source": "zh/34_tio/13-http-keep-alive-file-transfer.md",
      "description": "t-io 将 HTTP 连接复用、明文文件零拷贝和异步发送队列结合起来，使普通接口、文件下载和 TLS 通信共享一致的发送流程。一次响应完成后，框架释放本次资源、通知发送结果，并根据连接策略继续处理后续请求。 连接复用，减少重复握手 | 请求 | 响应完成后的连接行为 | | --- | --- | | HTTP/1.",
      "keywords": [],
      "status": "document",
      "sha256": "0e77919443b77eb35071e46bd36bc8a7d671a30ba6c90cb913ef73b6291744df"
    },
    {
      "id": "zh/34_tio/14-async-channel-response.md",
      "title": "使用 AsynchronousSocketChannel 响应数据",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/14-async-channel-response.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/14-async-channel-response.md",
      "source": "zh/34_tio/14-async-channel-response.md",
      "description": "tio-boot 的 HTTP 响应是异步的。如果想在业务处理完发送 HTTP 响应后执行一些额外的操作，可以参考本节内容。 tio-boot 异步发送 HTTP 响应 1. 获取 ChannelContext 首先，从 HttpRequest 中获取 ChannelContext ，它包含了当前连接的状态和配置信息。",
      "keywords": [],
      "status": "document",
      "sha256": "698f5f732940c206539dc7866f745285757aaa84830bbe825ffa05bd939da3de"
    },
    {
      "id": "zh/34_tio/15-bind-data.md",
      "title": "业务数据绑定",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/15-bind-data.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/15-bind-data.md",
      "source": "zh/34_tio/15-bind-data.md",
      "description": "在网络编程中，资源绑定是将业务相关的数据和 TCP 连接（即 ChannelContext ）关联起来的关键过程。例如，将一个连接表示为一个特定用户。假设 ChannelContext-A 代表了用户张三，张三的 userid 为 333 ，可以使用以下代码进行绑定： t-io 提供了 4 种内置的资源绑定方式。用户可",
      "keywords": [],
      "status": "document",
      "sha256": "6621712644057f6ee95b081a867dff0ca747191d62324462bd6064e9b15d175c"
    },
    {
      "id": "zh/34_tio/16-unbind-data.md",
      "title": "业务数据解绑",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/16-unbind-data.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/16-unbind-data.md",
      "source": "zh/34_tio/16-unbind-data.md",
      "description": "在业务数据绑定的场景中，解绑是与绑定相对应的操作，用于解除 ChannelContext 与业务数据的关联关系。解绑操作非常重要，特别是在处理用户下线、会话过期等情况时。下面直接展示解绑操作的源代码： 资源解绑方法的详细说明 1. 解绑业务 ID ( unbindBsId ) 解除 ChannelContext 与业务",
      "keywords": [],
      "status": "document",
      "sha256": "940a00d1de59b86c0d32bdddc20f1ece36666dbe49ddd1027618de243b2ea851"
    },
    {
      "id": "zh/34_tio/17-close-connection.md",
      "title": "关闭连接",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/17-close-connection.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/17-close-connection.md",
      "source": "zh/34_tio/17-close-connection.md",
      "description": "断开连接 断开连接的方法以 Tio.close 开头，它用于断开当前已经建立的 TCP 连接。该方法会中止与客户端或服务器的通信。 移除连接 移除连接的方法以 Tio.remove 开头，表示彻底放弃该连接。移除连接后，t-io 将完全释放与该连接相关的资源，不再对该连接进行任何处理。 注意事项 - 作为 TCP 服务",
      "keywords": [],
      "status": "document",
      "sha256": "f5c7f4247f94820c59c12460ea88b77487272adb7c9bc2bc07398d22942f8c4e"
    },
    {
      "id": "zh/34_tio/18-resource-sharing.md",
      "title": "资源共享",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/18-resource-sharing.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/18-resource-sharing.md",
      "source": "zh/34_tio/18-resource-sharing.md",
      "description": "多端口资源共享 需求场景 - 场景 1: 端口 5555 只接受 iOS 的请求。 - 场景 2: 端口 6666 只接受安卓的请求。 - 共同点: 无论是 iOS 还是安卓，应用层协议的格式是相同的。 问题 如果一条消息需要发送给同一个群组的用户，而该群组中可能既有安卓用户也有 iOS 用户，如何高效地发送消息给所有",
      "keywords": [],
      "status": "document",
      "sha256": "f8b8548408bddc49811caa12e72d0982ceda96c6eb522e4276cdfb3cb6967040"
    },
    {
      "id": "zh/34_tio/19-member-ordering.md",
      "title": "成员排序",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/19-member-ordering.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/19-member-ordering.md",
      "source": "zh/34_tio/19-member-ordering.md",
      "description": "内置排序 实现 Comparator 比较器 为了对 ChannelContext 对象进行排序，可以实现 Comparator 接口。以下是 ChannelContextComparator 的实现，它按照连接的创建时间和唯一标识符（ID）对 ChannelContext 进行排序： 说明 - 排序规则： - 首先按",
      "keywords": [],
      "status": "document",
      "sha256": "0956a7da23375b4af3aaf1c72a593234ff4b9a097b8e42631ae8b8c79f9994f8"
    },
    {
      "id": "zh/34_tio/20-ip-blacklist.md",
      "title": "拉黑 IP",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/20-ip-blacklist.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/20-ip-blacklist.md",
      "source": "zh/34_tio/20-ip-blacklist.md",
      "description": "在某些场景下，我们可能需要拉黑某些 IP 地址，以防止其访问我们的服务器。本文将演示如何在 Tio-Boot 中通过简单的代码实现 IP 拉黑功能。 代码实现 以下是一个基于 Tio-Boot 的简单 IP 拉黑控制器的实现： 代码说明 1. 获取真实 IP 地址 : 使用 HttpIpUtils.getRealIp(",
      "keywords": [],
      "status": "document",
      "sha256": "dabdfa45284167276356c447a99b0d6e90bb56e6ac8e681a3d84f6bd8a2066a1"
    },
    {
      "id": "zh/34_tio/21-ssl.md",
      "title": "SSL",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/21-ssl.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/21-ssl.md",
      "source": "zh/34_tio/21-ssl.md",
      "description": "使用 SSL（获取 SSL 证书、生成 JKS、在 t-io 中使用 SSL） 一些主流的 SSL 证书提供平台，如腾讯云和阿里云，已经提供了现成的 JKS 文件。因此，本文中描述的生成 JKS 证书的步骤可能并不适用，可以直接使用平台方提供的文件。 1. 申请 SSL 证书 SSL 证书可以通过阿里云等平台申请。当然",
      "keywords": [],
      "status": "document",
      "sha256": "306d658149bebbdb3cc55beed9d7b14190f902e788168b12bf0e8410cac29a95"
    },
    {
      "id": "zh/34_tio/22-https-handshake.md",
      "title": "Https建立连接过程",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/22-https-handshake.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/22-https-handshake.md",
      "source": "zh/34_tio/22-https-handshake.md",
      "description": "--- 1. DNS 解析 & 建立 TCP 连接 1. DNS 解析 ：curl 先向本地的 DNS 或者上游 DNS 服务器询问 jieti.cc 的 A/AAAA 记录。 2. 三次握手 ：获得 IP（118.31.175.40）后，客户端发起 TCP SYN → 服务器回复 SYN-ACK → 客户端 ACK，",
      "keywords": [],
      "status": "document",
      "sha256": "cb981565f5bc520b5936b28310734f5e07c6167ee4484090ab16e19c84b96c8a"
    },
    {
      "id": "zh/34_tio/23-heartbeat.md",
      "title": "监控: 心跳",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/23-heartbeat.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/23-heartbeat.md",
      "source": "zh/34_tio/23-heartbeat.md",
      "description": "Tio-Boot 内置了心跳监控功能，即使是纯 HTTP 项目，也建议开启心跳监控来提高系统稳定性和实时性。 1. 设置心跳时间 首先，需要在配置文件 app.properties 中设置心跳超时时间： server.heartbeat.timeout 指定了心跳超时时间，单位为毫秒。这个值表示当服务器在规定时间内未接",
      "keywords": [],
      "status": "document",
      "sha256": "fe40276272990225142895a923dbaafb2a11e9ee765beb8a40402ce1fb247475"
    },
    {
      "id": "zh/34_tio/24-client-traffic.md",
      "title": "监控: 客户端的流量数据",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/24-client-traffic.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/24-client-traffic.md",
      "source": "zh/34_tio/24-client-traffic.md",
      "description": "概述 本文介绍了如何使用 Tio-boot 通过 MyIpStatListener 来监控基于客户端 IP 的网络流量数据。通过这种方式，可以获取有关网络通信的详细数据，如连接请求次数、发送和接收的字节数、处理消息包的时间等。 实现步骤 IpStatDuration 定义 IP 统计时段，以 5 分钟为例： 配置 Ti",
      "keywords": [],
      "status": "document",
      "sha256": "758f8cee436d2f475a9c193da03a9d8d9c733ae4eb67ce0c9421b72e78f6f325"
    },
    {
      "id": "zh/34_tio/25-connection-traffic.md",
      "title": "监控: 单条 TCP 连接的流量数据",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/25-connection-traffic.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/25-connection-traffic.md",
      "source": "zh/34_tio/25-connection-traffic.md",
      "description": "TCP 会话的流量数据：ChannelStat 每个 TCP 会话对应一个 ChannelContext 对象，而每个 ChannelContext 对象都有一个 ChannelStat 对象，用于记录该连接的流量统计和状态信息。定义如下： ChannelStat 定义 ChannelStat 包含以下字段和方法，用于",
      "keywords": [],
      "status": "document",
      "sha256": "8c8f3d2aa27e7abfa287ccec3b8beec4d2f87acc1e3a215502260b7c74e0a4f6"
    },
    {
      "id": "zh/34_tio/26-port-traffic.md",
      "title": "监控: 端口的流量数据",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/26-port-traffic.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/26-port-traffic.md",
      "source": "zh/34_tio/26-port-traffic.md",
      "description": "GroupStat 在 t-io 中，每个 TioConfig 对象都包含一个 GroupStat 成员，用于统计和监控连接组的流量数据。其定义如下： GroupStat 定义 GroupStat 包含以下字段和方法，用于统计监听端口的整体流量和性能数据（已省略简单的 getter 和 setter 方法）： 字段 -",
      "keywords": [],
      "status": "document",
      "sha256": "c602d4a70b6593211febec5e3e83372a5ece5b6c9a3079934e4eaa4bd97c2f38"
    },
    {
      "id": "zh/34_tio/27-channel-stat.md",
      "title": "单条通道统计: ChannelStat",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/27-channel-stat.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/27-channel-stat.md",
      "source": "zh/34_tio/27-channel-stat.md",
      "description": "ChannelStat 是用于统计单条 TCP 通道的流量数据的类。t-io 自称拥有最强级别的流量统计和监控，这一点也绝非空谈。通过 ChannelStat ，可以获取一条 TCP 通道的各种统计信息，包括流量、消息处理效率、连接状态等。 如何获取 ChannelStat 每个 ChannelContext 对象都有",
      "keywords": [],
      "status": "document",
      "sha256": "0348b1fef77be16af1b1345d86a9b86c976eab5fa65fe8e549dd70f5442417bb"
    },
    {
      "id": "zh/34_tio/28-group-stat.md",
      "title": "所有通道统计: GroupStat",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/28-group-stat.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/28-group-stat.md",
      "source": "zh/34_tio/28-group-stat.md",
      "description": "GroupStat 是 ChannelStat 的集合，用于统计所有 TCP 通道的流量数据和状态。它有两个子类： ServerGroupStat 和 ClientGroupStat 。当 t-io 用作 TCP 服务器时，将获取 ServerGroupStat ，反之则获取 ClientGroupStat 。 如何获",
      "keywords": [],
      "status": "document",
      "sha256": "da7fb85788ee1a7dafb2ebc750e6433ef131f508181ce23f6b2348ce470512fc"
    },
    {
      "id": "zh/34_tio/29-runtime-internals.md",
      "title": "tio-运行原理详解",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/29-runtime-internals.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/29-runtime-internals.md",
      "source": "zh/34_tio/29-runtime-internals.md",
      "description": "t-io 是一个高效、轻量级的异步 I/O 框架，广泛用于处理高并发网络通信场景，支持 TCP、UDP、WebSocket 和 Http 等协议。本文将详细解析 t-io 的运行机制，包括其核心组件、数据处理流程、线程池设计和连接管理机制。通过全面解析这些内容，可以帮助开发者更好地理解 t-io 的工作原理，进而在实际",
      "keywords": [],
      "status": "document",
      "sha256": "c5e0a5efa310138983313efd985024c082741c57adb2fb67e85d0fa25f826592"
    },
    {
      "id": "zh/34_tio/30-decode-runnable.md",
      "title": "DecodeRunnable",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/30-decode-runnable.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/30-decode-runnable.md",
      "source": "zh/34_tio/30-decode-runnable.md",
      "description": "概述 t-io 对数据的解码过程是在 DecodeRunnable 中完成的，每个 TCP 连接对应一个 DecodeRunnable 实例。除了正常的解码外，半包和粘包的处理也都在 DecodeRunnable 中完成。 源代码 以下是 DecodeRunnable 类的源代码： 源代码解说 半包处理 在 TioHa",
      "keywords": [],
      "status": "document",
      "sha256": "019d7c21c99b58c7cf1f452b5822485451e7a399686abb481cf47469f36e1683"
    },
    {
      "id": "zh/34_tio/31-stability-resource-management.md",
      "title": "t-io 稳定性设计与资源管理",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/31-stability-resource-management.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/31-stability-resource-management.md",
      "source": "zh/34_tio/31-stability-resource-management.md",
      "description": "t-io 将 IO 事件处理、业务回调和连接资源管理组织在清晰的生命周期中。对于长连接服务、即时通信和持续运行的 HTTP 应用，这意味着开发者可以更专注于业务逻辑，由框架统一处理连接接入、异步读写和资源回收。 共享 IO 线程，独立处理每次操作 多个连接可以共享 IO Worker。Worker 为注册任务和就绪事件",
      "keywords": [],
      "status": "document",
      "sha256": "0da43a6b1d5a6fd9c5334dad712316563668b839b97076759dffc8016c273fc7"
    },
    {
      "id": "zh/34_tio/32-source-code-guide.md",
      "title": "深入解析 Tio 源码：构建高性能 Java 网络应用",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/32-source-code-guide.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/32-source-code-guide.md",
      "source": "zh/34_tio/32-source-code-guide.md",
      "description": "在现代网络应用中，处理大量并发连接和高效的数据传输是至关重要的。Tio（简称 t-io）作为一个基于 Java 的高性能网络通信框架，旨在简化这一过程。本文将基于提供的代码片段，深入解析 t-io 的源码结构和关键技术细节，帮助开发者更好地理解并应用这一框架。 目录 1. Tio 框架概述 2. 核心配置类：TioCo",
      "keywords": [],
      "status": "document",
      "sha256": "5ef06f4ba51757595b16ea202f39bb185a752adbf542d366ce840f65716984b1"
    },
    {
      "id": "zh/34_tio/33-buffer-reuse.md",
      "title": "HTTP、WebSocket 与 TCP 的缓冲区复用",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/33-buffer-reuse.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/33-buffer-reuse.md",
      "source": "zh/34_tio/33-buffer-reuse.md",
      "description": "t-io 为 HTTP、WebSocket 和 TCP 提供统一的读取缓冲区管理，并通过 EncodedBuffer 将编码输出和回收责任一同交给异步发送任务。接收侧连续读取、发送侧池化编码与完成后回收相互配合，减少重复分配，适合长期运行的网络服务。 三种协议的使用方式 下表描述框架通过 encodeBuffer() ",
      "keywords": [],
      "status": "document",
      "sha256": "e0cf81ce4137e586255251ce97dc69be3a592a6c28663d238ac86b1e3554e486"
    },
    {
      "id": "zh/34_tio/34-embedded-frp.md",
      "title": "在 Java 应用中嵌入 FRP 客户端",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/34-embedded-frp.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/34-embedded-frp.md",
      "source": "zh/34_tio/34-embedded-frp.md",
      "description": "tio-frp 将内网穿透连接集成到 Java 应用的生命周期中。应用启动后读取 frpc.toml ，完成登录、代理注册和数据转发；应用关闭时释放隧道连接，无需单独维护 frpc 进程。 TCP 收发使用 tio-core，协议层负责 FRP 消息、控制流加密、Yamux 复用和心跳。Java 21 虚拟线程负责等待",
      "keywords": [],
      "status": "document",
      "sha256": "47d26273c1b25dcc9c119c06754565c1457c65d0f39bd571cf601c62acabe8cb"
    },
    {
      "id": "zh/34_tio/assets/index.md",
      "title": "assets",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/assets/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/assets/index.md",
      "source": "zh/34_tio/assets/index.md",
      "description": "本目录包含 5 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.png : 图片资源，用于本目录文档配图或界面示意。 - 02.jpg : 图片资源，用于本目录文档配图或界面示意。 - 03.png : 图片资源，用于本目",
      "keywords": [],
      "status": "document",
      "sha256": "ead06b47b89353b86a803f08cf504de24d6e48d92e236e67994fe1c4e26baa5f"
    },
    {
      "id": "zh/34_tio/index.md",
      "title": "34_tio",
      "language": "zh-CN",
      "chapter": "zh/34_tio",
      "url": "https://tio-boot.com/zh/34_tio/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/34_tio/index.md",
      "source": "zh/34_tio/index.md",
      "description": "本章按“认识框架 → 快速上手 → 核心概念 → 业务应用 → 深入原理”的路线组织。首次阅读建议从核心优势与消息处理流程开始；已有使用经验时，可直接进入所需主题。 认识 t-io - 01. t-io 核心优势与应用价值 - 02. t-io 消息处理流程 快速上手 - 03. TioBootServer - 04.",
      "keywords": [],
      "status": "document",
      "sha256": "4b4de88e3fe35c9febe8a9304ef2fdee70b57b009cd94e68efad38052db4c22f"
    },
    {
      "id": "zh/35_tio-http-server/01.md",
      "title": "使用 Tio-Http-Server 搭建简单的 HTTP 服务",
      "language": "zh-CN",
      "chapter": "zh/35_tio-http-server",
      "url": "https://tio-boot.com/zh/35_tio-http-server/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/35_tio-http-server/01.md",
      "source": "zh/35_tio-http-server/01.md",
      "description": "如果的项目无需 WebSocket 功能，且对性能有较高要求，那么可以考虑使用 tio-http-server 作为 HTTP 服务的基础。 tio-http-server 是一款高性能的 Java HTTP 服务框架，专为满足低延迟、高并发场景而设计。本文将介绍如何使用 tio-http-server 搭建一个简单的",
      "keywords": [],
      "status": "document",
      "sha256": "dddd787c7ff380d8839a95ea258b39bdf1da8234509983aa7894e2cfdb10e572"
    },
    {
      "id": "zh/35_tio-http-server/02.md",
      "title": "tio-boot 添加 HttpRequestHandler",
      "language": "zh-CN",
      "chapter": "zh/35_tio-http-server",
      "url": "https://tio-boot.com/zh/35_tio-http-server/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/35_tio-http-server/02.md",
      "source": "zh/35_tio-http-server/02.md",
      "description": "tio-boot 支持的两种组件最 http 请求进行处理 - handler - controller 注意 - 1.handler 的优先级高于 controller - 2.handler 不支持参数封装,只能接受形参 HttpRequest,返回 HttpResponse - 3.handler 在性能上优于 ",
      "keywords": [],
      "status": "document",
      "sha256": "f1c8230714dda2e6cfa5a1168c5655c3a710c3d862156dda77eca8a1caa4abbc"
    },
    {
      "id": "zh/35_tio-http-server/03.md",
      "title": "在 Android 上使用 tio-boot 运行 HTTP 服务",
      "language": "zh-CN",
      "chapter": "zh/35_tio-http-server",
      "url": "https://tio-boot.com/zh/35_tio-http-server/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/35_tio-http-server/03.md",
      "source": "zh/35_tio-http-server/03.md",
      "description": "toc 本文档详细介绍了如何在 Android 设备上使用 tio-boot 框架运行轻量级 HTTP 服务。 tio-boot 基于 TIO 通信协议，实现了高性能、易用的 HTTP 服务能力，非常适合嵌入式或移动端场景。以下各步将带从环境准备，到代码编写，再到最终测试，一气呵成地完成部署。 Android平台启动t",
      "keywords": [],
      "status": "document",
      "sha256": "a8a0e83971069891ef8af00c109fbb2a18ca4ca4492a4485e0c1654e3d48d069"
    },
    {
      "id": "zh/35_tio-http-server/04.md",
      "title": "tio-http-server-native",
      "language": "zh-CN",
      "chapter": "zh/35_tio-http-server",
      "url": "https://tio-boot.com/zh/35_tio-http-server/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/35_tio-http-server/04.md",
      "source": "zh/35_tio-http-server/04.md",
      "description": "将基于 tio-http-server 的 jar 编译成二进制文件运行 pom.xml 启动类 实体类 Controller maven and jdk 打包成二进制文件 打包过程中执使用的 native-image 命令如下 编译成功,编译过重中日志如下 测试启动成功 访问测试接口 - http://localho",
      "keywords": [],
      "status": "document",
      "sha256": "62414dbfb68f7fc039d8a32cf4c614fa9e5dca9b33f6414a6658dd2c85d705e7"
    },
    {
      "id": "zh/35_tio-http-server/05.md",
      "title": "handler 常用操作",
      "language": "zh-CN",
      "chapter": "zh/35_tio-http-server",
      "url": "https://tio-boot.com/zh/35_tio-http-server/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/35_tio-http-server/05.md",
      "source": "zh/35_tio-http-server/05.md",
      "description": "文件 接受文件上传 为什么使用 handler 上传文件 - handler 的性能高于 controller 上传示例",
      "keywords": [],
      "status": "document",
      "sha256": "6214cbd1810a5e1af1883a5771dc8139f9deb3ff13c7ba99ae7712c9027db436"
    },
    {
      "id": "zh/35_tio-http-server/06.md",
      "title": "tio-http-server 与 tio-boot 的使用边界",
      "language": "zh-CN",
      "chapter": "zh/35_tio-http-server",
      "url": "https://tio-boot.com/zh/35_tio-http-server/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/35_tio-http-server/06.md",
      "source": "zh/35_tio-http-server/06.md",
      "description": "tio-http-server 提供 HTTP 服务与 Handler 等底层能力； tio-boot 在其上提供应用启动、配置、Controller、拦截器和扩展集成。两者文档中的启动方式不能直接混合。 如何选择 | 需求 | 阅读入口 | | --- | --- | | 独立创建基础 HTTP 服务，自己组织生命周",
      "keywords": [],
      "status": "document",
      "sha256": "ecb17867b2ee261a6f8079a2a62056f5347f59a2f5fa0d86cccdadb7c9143eb3"
    },
    {
      "id": "zh/35_tio-http-server/index.md",
      "title": "35_tio-http-server",
      "language": "zh-CN",
      "chapter": "zh/35_tio-http-server",
      "url": "https://tio-boot.com/zh/35_tio-http-server/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/35_tio-http-server/index.md",
      "source": "zh/35_tio-http-server/index.md",
      "description": "本目录包含 7 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《使用 Tio-Http-Server 搭建简单的 HTTP 服务》。 - 02.md : 文档《tio-boot 添加 HttpRequest",
      "keywords": [],
      "status": "document",
      "sha256": "79fb87194488cc458c7a4dc84f0e19e422ee177e372f8e6e4856990496b6cc75"
    },
    {
      "id": "zh/36_tio-websocket/01.md",
      "title": "WebSocket 服务器",
      "language": "zh-CN",
      "chapter": "zh/36_tio-websocket",
      "url": "https://tio-boot.com/zh/36_tio-websocket/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/36_tio-websocket/01.md",
      "source": "zh/36_tio-websocket/01.md",
      "description": "tio-boot 内置了 tio-websocket 组件，推荐使用 tio-boot 创建 WebSocket 服务器。如果您对 WebSocket 场景有特殊的要求，可以参考下面的代码启动一个独立的 WebSocket 服务器。 添加依赖 在项目的 pom.xml 中添加以下依赖： 定义常量 创建一个 Const ",
      "keywords": [],
      "status": "document",
      "sha256": "b29ba39fe830d579a4f36d8803bfe20f442f6c3eca302e3f70e4b234c0db5a45"
    },
    {
      "id": "zh/36_tio-websocket/02.md",
      "title": "WebSocket Client",
      "language": "zh-CN",
      "chapter": "zh/36_tio-websocket",
      "url": "https://tio-boot.com/zh/36_tio-websocket/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/36_tio-websocket/02.md",
      "source": "zh/36_tio-websocket/02.md",
      "description": "WebSocket Client 并不是 tio-boot 的内置组件 1. 依赖添加 首先，您需要在项目的 pom.xml 文件中添加以下依赖，以使用 tio-websocket-client 库。 这个依赖是 WebSocket 客户端的核心，提供了建立连接、发送和接收消息等功能。 2. WebSocket 客户端",
      "keywords": [],
      "status": "document",
      "sha256": "bcafdaa74314424828b635d7ef59fbefa071d893040a5f33d701e7130c95c577"
    },
    {
      "id": "zh/36_tio-websocket/03.md",
      "title": "TCP 数据转发",
      "language": "zh-CN",
      "chapter": "zh/36_tio-websocket",
      "url": "https://tio-boot.com/zh/36_tio-websocket/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/36_tio-websocket/03.md",
      "source": "zh/36_tio-websocket/03.md",
      "description": "tio-websockify 使用 tio-boot 提供 WebSocket 与 TCP 双向二进制转发，内置 noVNC 页面。 转发流程 浏览器连接 /websockify 后，服务读取 EnvUtils.getStr(\"vnc-server\") ，为该浏览器建立独立的 TCP 连接。前端二进制消息封装为 Byt",
      "keywords": [],
      "status": "document",
      "sha256": "b63d6c0f3adac6b577d5378059a23b70675dfe68afc35e4619c9ea8c516f267f"
    },
    {
      "id": "zh/36_tio-websocket/index.md",
      "title": "36_tio-websocket",
      "language": "zh-CN",
      "chapter": "zh/36_tio-websocket",
      "url": "https://tio-boot.com/zh/36_tio-websocket/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/36_tio-websocket/index.md",
      "source": "zh/36_tio-websocket/index.md",
      "description": "本章介绍 WebSocket 服务端、客户端、TCP 转发及远程桌面容器部署。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《WebSocket 服务器》。 - 02.md : 文档《WebSocket Client》。 - 03.md : 文档《TCP数据转发》。",
      "keywords": [],
      "status": "document",
      "sha256": "3424ee5131863c1a2eb81605eafe26123c715be71e81f789558897aca2f0f4e6"
    },
    {
      "id": "zh/37_netty/01.md",
      "title": "Netty TCP Server",
      "language": "zh-CN",
      "chapter": "zh/37_netty",
      "url": "https://tio-boot.com/zh/37_netty/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/37_netty/01.md",
      "source": "zh/37_netty/01.md",
      "description": "Introcution Netty 简介 Netty 是一个基于 Java 的网络应用框架，用于快速开发高性能、高可靠性的网络服务器和客户端。Netty 简化了网络编程，提供了异步事件驱动的网络应用程序框架，使开发人员可以专注于业务逻辑的实现，而不用处理复杂的底层网络通信细节。 Netty 的基本概念 1. Chann",
      "keywords": [],
      "status": "document",
      "sha256": "38f0a6ded0e2b7a948c315d662ea937032be858a7c1452b33dfce406057eb11d"
    },
    {
      "id": "zh/37_netty/02.md",
      "title": "Netty Web Socket Server",
      "language": "zh-CN",
      "chapter": "zh/37_netty",
      "url": "https://tio-boot.com/zh/37_netty/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/37_netty/02.md",
      "source": "zh/37_netty/02.md",
      "description": "WebSocket 的优势 在多次交互场景下，WebSocket 通过以下几种方式显著提升了性能，相比于传统的 HTTP 协议更加适合实时应用场景： 1. 持久连接 : - HTTP : 每次请求都需要重新建立和关闭 TCP 连接，这在高频次请求场景下增加了延迟和资源开销。 - WebSocket : 连接一旦建立后会",
      "keywords": [],
      "status": "document",
      "sha256": "2a55f08359fd3c1753e5ada47323dc72e615a7629646fd361655a3be8362015d"
    },
    {
      "id": "zh/37_netty/03.md",
      "title": "使用 protoc 生成 Java 包文件",
      "language": "zh-CN",
      "chapter": "zh/37_netty",
      "url": "https://tio-boot.com/zh/37_netty/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/37_netty/03.md",
      "source": "zh/37_netty/03.md",
      "description": "protoc 简介 protoc 是 Protocol Buffers 编译器，用于将 .proto 文件转换为目标语言的代码。在您的项目中， protoc 主要用于定义和规范消息体格式，确保消息在不同系统之间的一致性。 protoc 是 Protocol Buffers（简称 Protobuf）的核心工具，通过它可以",
      "keywords": [],
      "status": "document",
      "sha256": "40d905a78bff249f31f151cd9d61db98ef3be2fa21bd3182c8719b3fedf2c02c"
    },
    {
      "id": "zh/37_netty/04.md",
      "title": "Netty WebSocket Server 二进制数据传输",
      "language": "zh-CN",
      "chapter": "zh/37_netty",
      "url": "https://tio-boot.com/zh/37_netty/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/37_netty/04.md",
      "source": "zh/37_netty/04.md",
      "description": "简介 在之前的章节中，我们已经完成了以下两部分操作： - 编写了一个 WebSocket 服务器并实现了聊天服务功能。 - 使用 protoc 工具生成了 Java 的协议缓冲区（Protobuf）文件。 然而，目前客户端和服务器之间传输的数据是以 JSON 格式进行的。本章将介绍如何在客户端和服务器之间通过二进制数据",
      "keywords": [],
      "status": "document",
      "sha256": "16fd8f89c53ca755276669b70936a58cb67346a4449b326cb9bd3ccb94ce1e08"
    },
    {
      "id": "zh/37_netty/05.md",
      "title": "Netty 组件详解",
      "language": "zh-CN",
      "chapter": "zh/37_netty",
      "url": "https://tio-boot.com/zh/37_netty/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/37_netty/05.md",
      "source": "zh/37_netty/05.md",
      "description": "ChannelFuture 在 Netty 中， ChannelFuture 是由 Channel 提供的。具体来说， ChannelFuture 是在执行与 I/O 操作相关的方法时返回的。例如，当调用 Channel 的 write() 方法或 connect() 方法时，这些方法会返回一个 ChannelFutu",
      "keywords": [],
      "status": "document",
      "sha256": "126ec42b6bbaad80ab79f4ef3f8883c4e3d7b7cc85cdfd90c764e0c1b287d346"
    },
    {
      "id": "zh/37_netty/index.md",
      "title": "37_netty",
      "language": "zh-CN",
      "chapter": "zh/37_netty",
      "url": "https://tio-boot.com/zh/37_netty/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/37_netty/index.md",
      "source": "zh/37_netty/index.md",
      "description": "本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Netty TCP Server》。 - 02.md : 文档《Netty Web Socket Server》。 - 03.md : 文档《",
      "keywords": [],
      "status": "document",
      "sha256": "b412ac7ea0d1150a26203bb7fd8336fc96bc8f169dde18b2b66e77961cf90dca"
    },
    {
      "id": "zh/38_netty-boot/01.md",
      "title": "Netty-Boot",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/01.md",
      "source": "zh/38_netty-boot/01.md",
      "description": "简介 Netty-Boot 是一个基于 Netty 的轻量级 Web 中间件框架，专为高性能 Web 应用开发而设计。它充分利用了 Netty 的高效 IO 模型，支持快速开发高并发的 Web 服务。该框架整合了多种常见的中间件，包括 PostgreSQL、Redis、MongoDB、Elasticsearch、消息队",
      "keywords": [],
      "status": "document",
      "sha256": "cea6e0b15e3441623e591e6f237d14b068252b243159a0f6691ab23e31461638"
    },
    {
      "id": "zh/38_netty-boot/02.md",
      "title": "原理解析",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/02.md",
      "source": "zh/38_netty-boot/02.md",
      "description": "深入解析 Netty 的请求处理过程 在使用 Netty 构建高性能网络应用时，理解其内部的请求处理流程对于调试和优化非常关键。本文将通过一个异常堆栈信息，详细讲解 Netty 的请求处理过程，帮助开发者深入了解 Netty 的内部机制。 异常堆栈信息 以下是一次请求处理过程中捕获的异常堆栈信息： Netty 请求处理",
      "keywords": [],
      "status": "document",
      "sha256": "945e4f1675245f8db36bad3be5cc2596f6d8d05cc8eee8d90bd72d26bf22a0a9"
    },
    {
      "id": "zh/38_netty-boot/03.md",
      "title": "整合 Hot Reload",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/03.md",
      "source": "zh/38_netty-boot/03.md",
      "description": "Netty-Boot 整合 Hotswap-ClassLoader 实现热加载 简介 在开发过程中，为了提高开发效率，通常会需要实时修改代码后立即生效，而无需重启整个应用程序。 hotswap-classloader 提供了一个高效的解决方案，能够在不重启 JVM 的情况下，实现类的动态替换。本文将介绍如何将 hots",
      "keywords": [],
      "status": "document",
      "sha256": "f46b385fbeba743552c5114c4aa296d76e77a7a67a55b7bab1cfffb72ab15cfb"
    },
    {
      "id": "zh/38_netty-boot/04.md",
      "title": "整合 数据库",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/04.md",
      "source": "zh/38_netty-boot/04.md",
      "description": "在 Netty-Boot 项目中，推荐使用 java-db 来进行数据库连接，它为开发者提供了简便的方式来操作数据库，支持多种数据库方言，并结合了 HikariCP 作为数据库连接池，确保高效的数据库连接管理。本文将展示如何配置 java-db 来连接 PostgreSQL 数据库，并进行简单的查询操作。 数据库连接原",
      "keywords": [],
      "status": "document",
      "sha256": "041eb4b632afddd164f7a17662e48da61f55e6587d7039f0810cd7a85f3baa0f"
    },
    {
      "id": "zh/38_netty-boot/05.md",
      "title": "整合 Redis",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/05.md",
      "source": "zh/38_netty-boot/05.md",
      "description": "在 Netty-Boot 项目中，通过 java-db 和 jedis 可以快速、高效地连接和操作 Redis 数据库。Redis 作为一个高性能的键值对存储系统，能够支持多种数据结构，同时具备高可扩展性和极快的响应速度。本文将展示如何在 Netty-Boot 中配置和使用 Redis，并对其工作原理进行详细解析。 R",
      "keywords": [],
      "status": "document",
      "sha256": "3f3165fd81e7628942dd0373b9764972de2ba29a444fa8730df49a4ec08782c3"
    },
    {
      "id": "zh/38_netty-boot/06.md",
      "title": "整合 Elasticsearch",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/06.md",
      "source": "zh/38_netty-boot/06.md",
      "description": "在 Netty-Boot 项目中，推荐使用 java-db 连接 Elasticsearch，这能够简化与 Elasticsearch 的交互。 Elasticsearch 是一个分布式搜索和分析引擎，广泛用于全文搜索、日志分析等场景。通过整合 java-db 和 elasticsearch-rest-high-lev",
      "keywords": [],
      "status": "document",
      "sha256": "059b9e539ee2bbd896d094d2319dcff8085008dcc4071b0c3f4557a2b41510b5"
    },
    {
      "id": "zh/38_netty-boot/07.md",
      "title": "整合 Dubbo",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/07.md",
      "source": "zh/38_netty-boot/07.md",
      "description": "推荐使用 jfinal-aop 对 dubbo 的支持整合 dubbo 提供者 消费者",
      "keywords": [],
      "status": "placeholder",
      "sha256": "8f6abde7ab7fba61019f67bda14801710acdc89ff0c6de66107fbe9c6fa25525"
    },
    {
      "id": "zh/38_netty-boot/08.md",
      "title": "Listener",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/08.md",
      "source": "zh/38_netty-boot/08.md",
      "description": "Netty-Boot 自定义 ChannelConnectionListener 在基于 Netty 的应用程序中，监听客户端的连接和断开是非常重要的需求。 Netty-Boot 提供了 ChannelConnectionListener 接口，开发者可以通过实现该接口，自定义处理客户端的连接和断开事件。本文将介绍如何",
      "keywords": [],
      "status": "document",
      "sha256": "01f8cbadcb881f5aac3f6a30839cb420e2a3ab265837e0ded9af0a7bfe0470ef"
    },
    {
      "id": "zh/38_netty-boot/09.md",
      "title": "文件上传",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/09.md",
      "source": "zh/38_netty-boot/09.md",
      "description": "Netty-Boot 文件上传处理 在 Netty-Boot 项目中，文件上传是一个常见的需求。Netty 提供了强大的 HTTP 处理能力，可以通过 multipart/form-data 实现文件上传。本文将介绍如何通过 Netty-Boot 处理文件上传，并解析其工作原理。 文件上传原理 1. HTTP POST",
      "keywords": [],
      "status": "document",
      "sha256": "65c37f4ef14f58ec7950575e2011442b6ab317bb0baa532af331a1058a3c5bc9"
    },
    {
      "id": "zh/38_netty-boot/10.md",
      "title": "拦截器",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/10.md",
      "source": "zh/38_netty-boot/10.md",
      "description": "在基于 Netty-Boot 的应用中，拦截器是非常重要的功能，它可以在请求到达业务处理器之前或请求完成后进行预处理或后处理。通过使用拦截器，开发者可以实现全局过滤、认证、日志记录等功能。本文将介绍如何在 Netty-Boot 中配置和使用拦截器。 拦截器原理 拦截器的作用是对请求进行预处理或后处理，类似于过滤器的功能",
      "keywords": [],
      "status": "document",
      "sha256": "82666e3ef97aa791c0c05c0afdb0ee3e02d44f059cc54d0c9b5c1a6fd1f816c9"
    },
    {
      "id": "zh/38_netty-boot/11.md",
      "title": "Spring Boot 整合 Netty-Boot",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/11.md",
      "source": "zh/38_netty-boot/11.md",
      "description": "本指南将演示如何在 Spring Boot 应用程序中集成 Netty-Boot，使您能够在 Spring Boot 的上下文中使用 Netty 来处理 HTTP 和 WebSocket 请求。 前提条件 - JDK 版本 ：8 或更高 - 构建工具 ：Maven 或 Gradle - 知识准备 ：具备 Spring ",
      "keywords": [],
      "status": "document",
      "sha256": "1681efe17bac88e3a6c080cb2a6d7cecdb325f22a57dc9e122178773f64678c6"
    },
    {
      "id": "zh/38_netty-boot/12.md",
      "title": "SSL 配置指南",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/12.md",
      "source": "zh/38_netty-boot/12.md",
      "description": "Netty-Boot 内置了对 HTTPS 的支持，以下将详细介绍如何配置和使用 SSL 以确保您的 Web 应用的安全性。 使用内置自签名证书 Netty-Boot 提供了内置的自签名证书，适用于开发和测试环境。通过以下配置，您可以快速启用 HTTPS 支持。 配置文件 在 app.properties 文件中添加以",
      "keywords": [],
      "status": "document",
      "sha256": "9a467d92c6371ee7aab3b8035f2e87d2975e81026d375e9317ad9dd7200266a6"
    },
    {
      "id": "zh/38_netty-boot/13.md",
      "title": "ChannelInitializer",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/13.md",
      "source": "zh/38_netty-boot/13.md",
      "description": "自定义 ChannelInitializer Netty-Boot 提供了灵活的扩展机制，允许开发者根据具体需求自定义 ChannelInitializer ，以定制 Netty 的管道（Pipeline）配置。通过自定义 ChannelInitializer ，您可以添加或修改处理器（Handlers），实现特定的业",
      "keywords": [],
      "status": "document",
      "sha256": "a8f3f7d76647c8cfd94a7c4dcdf3f1c1ef3113b61dac29f51caea9d1fa8e82bc"
    },
    {
      "id": "zh/38_netty-boot/14.md",
      "title": "Reserve",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/14.md",
      "source": "zh/38_netty-boot/14.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "6db42f0a1066005ebc923b35e3c4fbfcccc4fcdf09e882c466842bda8386ee5a"
    },
    {
      "id": "zh/38_netty-boot/index.md",
      "title": "38_netty-boot",
      "language": "zh-CN",
      "chapter": "zh/38_netty-boot",
      "url": "https://tio-boot.com/zh/38_netty-boot/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/38_netty-boot/index.md",
      "source": "zh/38_netty-boot/index.md",
      "description": "本目录包含 15 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Netty-Boot》。 - 02.md : 文档《原理解析》。 - 03.md : 文档《整合 Hot Reload》。 - 04.md ",
      "keywords": [],
      "status": "document",
      "sha256": "11c6e7fe28a00b59f5991ae4303adc9ceef13b3fe1fdff1a7033a01d69ccef37"
    },
    {
      "id": "zh/39_integrations/01.md",
      "title": "整合 okhttp",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/01.md",
      "source": "zh/39_integrations/01.md",
      "description": "toc 在现代 Java 应用开发中，高效的 HTTP 客户端管理至关重要。本文将介绍如何在 tio-boot 框架中整合 OkHttp，以及几种常见的 OkHttpClient 管理方式，包括使用 Bean 容器管理、单例枚举模式以及设置代理的方法。 --- 添加依赖 将 OkHttpClient 添加到 Bean ",
      "keywords": [],
      "status": "document",
      "sha256": "aed0f2c42eb406a52f281bd0efcc03b7020ebdfc8e9e271b923fd4621e3506b9"
    },
    {
      "id": "zh/39_integrations/02.md",
      "title": "整合 GrpahQL",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/02.md",
      "source": "zh/39_integrations/02.md",
      "description": "GraphQL 简介 GraphQL 提供了一种灵活、高效的数据查询方式，广泛应用于现代 web 和移动应用开发中。 GraphQL 是一种用于 API 的查询语言以及服务器端的运行环境，它通过给予客户端请求所需数据的能力来提供更高效、灵活的交互。GraphQL 由 Facebook 于 2012 年开发，并于 201",
      "keywords": [],
      "status": "document",
      "sha256": "28a2ec60c5ece80d2f401b675b7d7eb3636b8fcf35c2c53277b242df4bc539cc"
    },
    {
      "id": "zh/39_integrations/03.md",
      "title": "集成 Mailjet",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/03.md",
      "source": "zh/39_integrations/03.md",
      "description": "toc 本文档旨在指导开发者如何在 Java 项目中集成 Mailjet 以实现邮件发送功能。内容涵盖了 Maven 依赖配置、应用配置文件设置、工具类封装以及测试方法。此外，还介绍了如何使用封装好的工具类在 Enjoy 框架中发送邀请邮件，并提供了相关的邮件模板和代码示例。 --- Maven 依赖配置 在项目的 p",
      "keywords": [],
      "status": "document",
      "sha256": "25984add4e39b54b059abc96149cb73ad954d6c5abfbe1c6fd522dadebcfa841"
    },
    {
      "id": "zh/39_integrations/04.md",
      "title": "整合 ip2region",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/04.md",
      "source": "zh/39_integrations/04.md",
      "description": "使用 ip2region 在 Java 中进行 IP 地理位置查询 本文将介绍如何使用 ip2region 库在 Java 应用中进行 IP 地址查询。ip2region 库提供了一种快速准确的方式来确定 IP 地址的地理位置。我们将一步步介绍如何设置库、配置它以及使用它来获取 IP 地址信息。 前提条件 在开始之前，",
      "keywords": [],
      "status": "document",
      "sha256": "938aabadd7c9bfc1448acb296a4dbd22cb3c8234692ec06b50b32e8b3a98a24a"
    },
    {
      "id": "zh/39_integrations/05.md",
      "title": "整合 GeoLite 离线库",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/05.md",
      "source": "zh/39_integrations/05.md",
      "description": "整合 GeoLite 离线库：Java 通过 IP 获取地理位置信息 toc 本文档介绍如何使用 GeoIP2 的离线库 GeoLite2-City，通过 Java 代码获取 IP 地址对应的地理信息。通过该示例，读者可以了解到如何获取城市、国家、经纬度以及邮政编码等数据，同时了解哪些信息需要额外的数据库支持。 1. ",
      "keywords": [],
      "status": "document",
      "sha256": "52e4eecabb9cdcf5c4ea7b2c6c9816f313701fa98988b0d685796ad9c7dc5368"
    },
    {
      "id": "zh/39_integrations/06.md",
      "title": "整合 Lark 机器人指南",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/06.md",
      "source": "zh/39_integrations/06.md",
      "description": "本指南将介绍如何将 Lark 机器人集成到您的应用程序中。我们将介绍两种集成方式： 1. 使用 LarksuiteNotificationUtils 工具类 2. 使用 Lark 官方 SDK ( oapi-sdk ) 目录 - 使用 LarksuiteNotificationUtils - 添加机器人 - 推送消息 ",
      "keywords": [],
      "status": "document",
      "sha256": "a1d00bb4bc60e47332931024aa5b6f2faf62738070e5b189fc954f168c56ef7b"
    },
    {
      "id": "zh/39_integrations/07.md",
      "title": "集成 Lark Mail 实现邮件发送",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/07.md",
      "source": "zh/39_integrations/07.md",
      "description": "toc 本文档介绍如何基于 Lark Mail 实现邮件发送功能。通过继承 Lark Mail 接口并调用内部封装的邮件发送工具，我们可以方便地对接 smtp.larksuite.com 的 SMTP 服务，实现邮件发送。下面将详细介绍如何在项目中集成及使用这一功能。 实现现状 ：第 3 节里的 EMail 接口与 I",
      "keywords": [],
      "status": "document",
      "sha256": "d8d48d91d5a26926e71f041cabe9dcc3552c9a455b6a276bc015e55a11752040"
    },
    {
      "id": "zh/39_integrations/08.md",
      "title": "Thymeleaf",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/08.md",
      "source": "zh/39_integrations/08.md",
      "description": "1.简介 Thymeleaf 是用于在 Java Web 应用程序中渲染动态 HTML 的模板引擎，支持变量、循环和条件判断，可用于服务端网页及 HTML 邮件。 Thymyleaf 是 tio-utils 提供的调用封装，名称保留其实际 Java API 拼写。 2. Tio-boot 整合 Thymeleaf 步骤",
      "keywords": [],
      "status": "document",
      "sha256": "eff13bcd78eba2851efc2bde760fb175b25a062ddf481790bc4f19da56dc93df"
    },
    {
      "id": "zh/39_integrations/09.md",
      "title": "Swagger",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/09.md",
      "source": "zh/39_integrations/09.md",
      "description": "在现代 Web 应用开发中，API 文档的自动化生成是提高开发效率和维护性的重要手段。Swagger 作为一种广泛使用的 API 文档生成工具，与 Tio-Boot 框架的集成能够为开发者提供便捷的接口文档管理。本文将详细介绍如何在 Tio-Boot 项目中集成 Swagger，包括依赖添加、配置设置、代码实现及相关组",
      "keywords": [],
      "status": "document",
      "sha256": "38152c782cb47cfd751fec838ed7170077aeb3a1083c2e92d76174e0612eff91"
    },
    {
      "id": "zh/39_integrations/10.md",
      "title": "Clerk 验证",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/10.md",
      "source": "zh/39_integrations/10.md",
      "description": "tio-boot 整合 Clerk 进行 Token 验证 本文档介绍如何将 Clerk SDK for Java 与 tio-boot 框架集成，实现对 token 的验证功能。主要内容包括 Clerk 简介、Token 格式说明以及整合步骤和代码示例。 --- 1. Clerk 简介 Clerk 是一款用于处理身份",
      "keywords": [],
      "status": "document",
      "sha256": "504c699c3ac7070858b9c7d367718489dfc2c8ad18f92fbbc4864bf7012e498d"
    },
    {
      "id": "zh/39_integrations/11.md",
      "title": "集成datadog",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/11.md",
      "source": "zh/39_integrations/11.md",
      "description": "1.注册账号 https://www.datadoghq.com/",
      "keywords": [],
      "status": "document",
      "sha256": "f60422cfa5caab187e7b2ff5cb47afb6a8f7ca7e33aa9ee2d88215bc04ca1adf"
    },
    {
      "id": "zh/39_integrations/index.md",
      "title": "39_integrations",
      "language": "zh-CN",
      "chapter": "zh/39_integrations",
      "url": "https://tio-boot.com/zh/39_integrations/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/39_integrations/index.md",
      "source": "zh/39_integrations/index.md",
      "description": "本目录包含 19 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《整合 okhttp》。 - 02.md : 文档《整合 GrpahQL》。 - 03.md : 文档《集成 Mailjet》。 - 04.m",
      "keywords": [],
      "status": "document",
      "sha256": "debc0cc2f399f82454c7177a83f99af2d7d3068c4c5f7fec2f6286b1989ad341"
    },
    {
      "id": "zh/40_magic-script/01.md",
      "title": "tio-boot 与 magic-script 集成指南",
      "language": "zh-CN",
      "chapter": "zh/40_magic-script",
      "url": "https://tio-boot.com/zh/40_magic-script/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/40_magic-script/01.md",
      "source": "zh/40_magic-script/01.md",
      "description": "本指南演示如何在基于 JVM 的动态脚本框架 magic-script 中，快速集成并在 tio-boot 项目中执行脚本。 --- 1. 概述 magic-script 是一个基于 JVM 的动态脚本引擎，支持类似 JavaScript 的语法，并且可以方便地与 Java 应用集成。通过将脚本与 tio-boot W",
      "keywords": [],
      "status": "document",
      "sha256": "eed179d5fcd0ba9ad581aa35ca19ae61ade81c050acd1db9dba5b1068d3d5548"
    },
    {
      "id": "zh/40_magic-script/index.md",
      "title": "40_magic-script",
      "language": "zh-CN",
      "chapter": "zh/40_magic-script",
      "url": "https://tio-boot.com/zh/40_magic-script/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/40_magic-script/index.md",
      "source": "zh/40_magic-script/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-boot 与 magic-script 集成指南》。",
      "keywords": [],
      "status": "document",
      "sha256": "b1d8735359318a1c69fcbe974461d8395ceab6c4a435a6df639f6cf4b248ddca"
    },
    {
      "id": "zh/41_groovy/01.md",
      "title": "tio-boot 整合 Groovy",
      "language": "zh-CN",
      "chapter": "zh/41_groovy",
      "url": "https://tio-boot.com/zh/41_groovy/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/41_groovy/01.md",
      "source": "zh/41_groovy/01.md",
      "description": "在现代 Java 开发中，为了提高开发效率和代码灵活性，Groovy 作为一种运行在 Java 平台上的动态语言，被广泛应用于快速开发、脚本编写、自动化测试以及构建工具中。本文介绍了 Groovy 的主要特点、在 tio-boot 中整合 Groovy 脚本的实现方式，以及详细的代码示例和说明。 --- 1. 什么是 ",
      "keywords": [],
      "status": "document",
      "sha256": "60370bd539687c47723c2f4b90fb9983ef6b61da727f110655120b420def3cc8"
    },
    {
      "id": "zh/41_groovy/02.md",
      "title": "调试常用脚本",
      "language": "zh-CN",
      "chapter": "zh/41_groovy",
      "url": "https://tio-boot.com/zh/41_groovy/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/41_groovy/02.md",
      "source": "zh/41_groovy/02.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "334c320ffd3e71eb6efc49141d8bedd4f08338669a0f14f652ecf463f85b5da5"
    },
    {
      "id": "zh/41_groovy/index.md",
      "title": "41_groovy",
      "language": "zh-CN",
      "chapter": "zh/41_groovy",
      "url": "https://tio-boot.com/zh/41_groovy/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/41_groovy/index.md",
      "source": "zh/41_groovy/index.md",
      "description": "本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-boot 整合 Groovy》。 - 02.md : 文档《调试常用脚本》。",
      "keywords": [],
      "status": "document",
      "sha256": "e5037d192ddc6be465ea9b74f9d539e155a75da73f63b1c277e26aa4b67ac5d6"
    },
    {
      "id": "zh/42_crawling/01.md",
      "title": "jsoup",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/01.md",
      "source": "zh/42_crawling/01.md",
      "description": "toc jsoup 是一个用于解析、提取和处理 HTML 的 Java 库。它提供了一个非常方便的 API，可以让开发者轻松地从 URL、文件或字符串中解析 HTML，并提取所需的内容。本文将带深入了解 jsoup 的基础知识、核心对象以及常用的选择器语法，并通过实际案例演示其应用。 jsoup 基础 1.1 jsou",
      "keywords": [],
      "status": "document",
      "sha256": "59904bef1453c884845bda8fa56df3542bfdf1d8ae5f6000ddee6ba3192b5d12"
    },
    {
      "id": "zh/42_crawling/02.md",
      "title": "爬取 z-lib.io 数据",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/02.md",
      "source": "zh/42_crawling/02.md",
      "description": "本文将详细介绍如何对 z‑lib.io 进行数据爬取，将关键数据入库，并利用 PostgreSQL 的全文检索功能对书名、作者、出版社、备注等字段建立搜索索引。内容包括网站数据分析、数据表设计、全文检索字段维护（手动更新和触发器自动更新）、以及使用 Java 与 Jsoup 爬取网页、解析数据并批量插入数据库的完整示例",
      "keywords": [],
      "status": "document",
      "sha256": "28222addae688244cf5b219e700bf47f85e53e6d99a6cc430e3fed7bab3f8b00"
    },
    {
      "id": "zh/42_crawling/03.md",
      "title": "整合 WebMagic",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/03.md",
      "source": "zh/42_crawling/03.md",
      "description": "使用 WebMagic 进行网页爬取并入库 本文档详细介绍如何使用 Java 和 WebMagic 进行网页爬取，包括添加依赖项、创建 PageProcessor 进行网页解析、创建 Pipeline 将爬取的数据存入数据库，以及运行爬虫的过程。 示例目标网页：https://www.sis.hawaii.edu/uh",
      "keywords": [],
      "status": "document",
      "sha256": "c93c5483b3ff789d499256165b61baf5103a85c95dbc6d3c65c5de08410b0e2c"
    },
    {
      "id": "zh/42_crawling/04.md",
      "title": "WebMagic 示例：爬取学校课程数据",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/04.md",
      "source": "zh/42_crawling/04.md",
      "description": "目标是使用 WebMagic 框架构建一个完整的爬虫示例，从夏威夷大学的课程数据网页中自动提取并存储课程相关信息到数据库中。整个过程包括以下几个关键步骤： 1. 数据分析 ：分析目标网页的 HTML 结构，确定需要爬取的内容及其位置，例如机构列表、学期信息、学科列表、课程详细信息等。 2. 数据库表设计 ：为每个爬取的",
      "keywords": [],
      "status": "document",
      "sha256": "f3a34859e55bdca3546b622b964e41410333357134d51712498d846e2f474eaa"
    },
    {
      "id": "zh/42_crawling/05.md",
      "title": "Playwright",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/05.md",
      "source": "zh/42_crawling/05.md",
      "description": "toc 简介 1. 什么是 Playwright Playwright 是一个由微软开发的现代化网页自动化测试和浏览器操作工具。它支持多种浏览器，包括 Chromium、Firefox 和 WebKit，并提供一致的跨浏览器 API。以下是 Playwright 的一些关键特点： 1. 多浏览器支持 ：Playwrig",
      "keywords": [],
      "status": "document",
      "sha256": "b219e5b57a1f257cc46ba16af32fd5c12228cd8120ccec563cc070ac32db8698"
    },
    {
      "id": "zh/42_crawling/06.md",
      "title": "Flexmark (Markdown 处理器)",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/06.md",
      "source": "zh/42_crawling/06.md",
      "description": "toc 简介 Flexmark 是一个功能强大的 Java Markdown 处理库，支持将 HTML 转换为 Markdown。它提供了灵活的 API，能够从 HTML 中提取内容并将其转换为符合 Markdown 语法的文本格式。Flexmark 提供了多种扩展和选项，使其在各种 Markdown 转换场景中都能得",
      "keywords": [],
      "status": "document",
      "sha256": "189abc55233ea633772ed3528cba307e82f1164c4b1ddf15bce232f45b3c789d"
    },
    {
      "id": "zh/42_crawling/07.md",
      "title": "tio-boot 整合 Playwright",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/07.md",
      "source": "zh/42_crawling/07.md",
      "description": "简介 在使用 Playwright 进行网页数据抓取时，每次启动 Playwright 都会带来较大的性能开销。为了解决这一问题，可以在服务启动时初始化 Playwright，并在服务关闭时正确释放资源，从而显著提升性能。本文将介绍如何使用 TioBoot 整合 Playwright，实现高效的网页数据获取服务，并探讨",
      "keywords": [],
      "status": "document",
      "sha256": "b6158c278c9261755f608d3cb0f1df47cb02bd8644ff21a917e26c370f6d50b8"
    },
    {
      "id": "zh/42_crawling/08.md",
      "title": "缓存网页数据",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/08.md",
      "source": "zh/42_crawling/08.md",
      "description": "一、功能概述 在某些场景下，我们需要对网页内容进行批量爬取和分析。但如果每次访问浏览器都进行实时加载，会消耗较多的系统资源（例如启动浏览器加载时可能会占用 90M 以上的内存）。因此，本方案的设计思路是： 将已爬取到的网页内容进行缓存，后续重复访问同一页面时直接使用缓存内容 ，达到减少资源消耗和爬取时延的目的。 本方案",
      "keywords": [],
      "status": "document",
      "sha256": "29d91b8cc75a73714644e0b79a888478ef29657de0bcc2383eafa39aadd7c12b"
    },
    {
      "id": "zh/42_crawling/index.md",
      "title": "42_crawling",
      "language": "zh-CN",
      "chapter": "zh/42_crawling",
      "url": "https://tio-boot.com/zh/42_crawling/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/42_crawling/index.md",
      "source": "zh/42_crawling/index.md",
      "description": "本目录包含 15 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《jsoup》。 - 02.md : 文档《爬取 z-lib.io 数据》。 - 03.md : 文档《整合 WebMagic》。 - 04.",
      "keywords": [],
      "status": "document",
      "sha256": "17f36993d5b3e514455212a00b84fd885f4a586835c74fab201d7aa72e367191"
    },
    {
      "id": "zh/43_dubbo/01.md",
      "title": "概述",
      "language": "zh-CN",
      "chapter": "zh/43_dubbo",
      "url": "https://tio-boot.com/zh/43_dubbo/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/43_dubbo/01.md",
      "source": "zh/43_dubbo/01.md",
      "description": "什么是 Dubbo Apache Dubbo 是一款 RPC 服务开发框架，用于解决微服务架构下的服务治理与通信问题，官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力， 利用 Dubbo 提供的丰富服务治理特性，可以实现诸如服务发现、负载",
      "keywords": [],
      "status": "document",
      "sha256": "584113c69632bc9ed66909c7e991be5301b0130470923ac02883affdaf09677d"
    },
    {
      "id": "zh/43_dubbo/02.md",
      "title": "dubbo 2.6.0",
      "language": "zh-CN",
      "chapter": "zh/43_dubbo",
      "url": "https://tio-boot.com/zh/43_dubbo/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/43_dubbo/02.md",
      "source": "zh/43_dubbo/02.md",
      "description": "Introduction dubbo Dubbo 作为一款微服务框架，最重要的是向用户提供跨进程的 RPC 远程调用能力。如上图所示，Dubbo 的服务消费者（Consumer）通过一系列的工作将请求发送给服务提供者（Provider）。 为了实现这样一个目标，Dubbo 引入了注册中心（Registry）组件，通过注",
      "keywords": [],
      "status": "document",
      "sha256": "9dda53db452ade73fe2131c1331f977dcf48c86ac784e76db062418717914dbc"
    },
    {
      "id": "zh/43_dubbo/03.md",
      "title": "dubbo 2.6.0 调用过程",
      "language": "zh-CN",
      "chapter": "zh/43_dubbo",
      "url": "https://tio-boot.com/zh/43_dubbo/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/43_dubbo/03.md",
      "source": "zh/43_dubbo/03.md",
      "description": "异常堆栈 让我们分析这个异常堆栈，从下往上讲解 Dubbo 的调用过程： 1. 线程启动 ( java.lang.Thread.run ) : - 调用链的起点是 Java 线程的启动。 Thread.run 方法是所有线程执行的入口。 2. 线程池执行 ( ThreadPoolExecutor$Worker.run ",
      "keywords": [],
      "status": "document",
      "sha256": "3d6905e4249c746dae84cf996b52bd01740d53d8995a625db47de395d8724203"
    },
    {
      "id": "zh/43_dubbo/04.md",
      "title": "dubbo 3.2.0",
      "language": "zh-CN",
      "chapter": "zh/43_dubbo",
      "url": "https://tio-boot.com/zh/43_dubbo/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/43_dubbo/04.md",
      "source": "zh/43_dubbo/04.md",
      "description": "添加依赖",
      "keywords": [],
      "status": "document",
      "sha256": "79a2fcf9db24a305ac4656b82f46ce3793e60a14e23ac3f037e385296cf6f440"
    },
    {
      "id": "zh/43_dubbo/index.md",
      "title": "43_dubbo",
      "language": "zh-CN",
      "chapter": "zh/43_dubbo",
      "url": "https://tio-boot.com/zh/43_dubbo/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/43_dubbo/index.md",
      "source": "zh/43_dubbo/index.md",
      "description": "本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《概述》。 - 02.md : 文档《dubbo 2.6.0》。 - 03.md : 文档《dubbo 2.6.0 调用过程》。 - 04.md",
      "keywords": [],
      "status": "document",
      "sha256": "b9ee3d3599177c86b38df1711692dab20e5ac14e4f1b0bd4d18b4f79dc5c759a"
    },
    {
      "id": "zh/44_spring/01.md",
      "title": "Spring Boot Web 整合 Tio Boot",
      "language": "zh-CN",
      "chapter": "zh/44_spring",
      "url": "https://tio-boot.com/zh/44_spring/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/44_spring/01.md",
      "source": "zh/44_spring/01.md",
      "description": "本文将详细讲解如何使用 Spring Boot 整合 Tio Boot，实现两者各自优势的互补： - 使用 Spring Boot 内置的 Servlet 容器和 Controller 机制 - 利用 Tio Boot 的其他功能，如数据库操作、AOP 容器以及高性能的服务支持 整合之后的架构可以实现： - Tio B",
      "keywords": [],
      "status": "document",
      "sha256": "7f693dba72bfabce2a4a8f22d8498ba0d6423a8ea471be7fdf14e481bc840780"
    },
    {
      "id": "zh/44_spring/02.md",
      "title": "spring-boot-starter-webflux 整合 tio-boot",
      "language": "zh-CN",
      "chapter": "zh/44_spring",
      "url": "https://tio-boot.com/zh/44_spring/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/44_spring/02.md",
      "source": "zh/44_spring/02.md",
      "description": "本文档提供了如何将 tio-boot-server 集成到使用 spring-boot-starter-webflux 的项目中。默认情况下，Spring WebFlux 使用 Netty 作为网络处理层。本文档将引导如何将 tio-boot-server 作为替代品整合到的 Spring WebFlux 应用中。 p",
      "keywords": [],
      "status": "document",
      "sha256": "91868fdad2aa1c6b8d2d80616578b235674d32aa017e77233b04622c3bd8476d"
    },
    {
      "id": "zh/44_spring/03.md",
      "title": "tio-boot 整合 spring-boot-starter",
      "language": "zh-CN",
      "chapter": "zh/44_spring",
      "url": "https://tio-boot.com/zh/44_spring/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/44_spring/03.md",
      "source": "zh/44_spring/03.md",
      "description": "toc tio-boot 整合 spring-boot-starter：启动原理与全流程解析 本文给出一套可落地的整合方案：在同一进程中以 tio-boot 作为主启动与路由入口 ，在 tio-boot 初始化阶段 拉起 Spring Boot 容器 ，并通过 AOP/IOC 桥接实现 @Autowired 注入与 A",
      "keywords": [],
      "status": "document",
      "sha256": "b4f066d1c1dfb5fe407eb480996c7af4fb2e111fed89090f75372c5ffd48ef74"
    },
    {
      "id": "zh/44_spring/04.md",
      "title": "Tio Boot 整合 Spring Boot Starter db",
      "language": "zh-CN",
      "chapter": "zh/44_spring",
      "url": "https://tio-boot.com/zh/44_spring/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/44_spring/04.md",
      "source": "zh/44_spring/04.md",
      "description": "简介 传统上，我们通过引入 spring-boot-starter-web ，将 Spring Boot 的 Controller 与 Tio Boot 的 Service 进行整合。然而，这种方法虽然可行，但却丢失了 Tio Boot 在处理请求时的异步和非阻塞特性。 为了解决这一问题，我们提出了一种新的整合方法：仅",
      "keywords": [],
      "status": "document",
      "sha256": "22abca8a762590e1c77aad5ac37ecf97ae7fcfb5e228259e27c79848701e10aa"
    },
    {
      "id": "zh/44_spring/05.md",
      "title": "Tio Boot 整合 Spring Boot Starter Data Redis 指南",
      "language": "zh-CN",
      "chapter": "zh/44_spring",
      "url": "https://tio-boot.com/zh/44_spring/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/44_spring/05.md",
      "source": "zh/44_spring/05.md",
      "description": "引言 在现代 Java 开发中， Tio Boot 是一个高性能的异步非阻塞网络框架，而 Spring Boot 则是一个简化 Spring 应用开发的快速开发框架。将两者结合，可以构建出高性能且易于维护的应用程序。 本指南将详细介绍如何将 Tio Boot 与 Spring Boot Starter Data Red",
      "keywords": [],
      "status": "document",
      "sha256": "38bfe077195261d781d46bcee926442a2ebd41480acb4ca2429c74c4291615b0"
    },
    {
      "id": "zh/44_spring/index.md",
      "title": "44_spring",
      "language": "zh-CN",
      "chapter": "zh/44_spring",
      "url": "https://tio-boot.com/zh/44_spring/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/44_spring/index.md",
      "source": "zh/44_spring/index.md",
      "description": "本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Spring Boot Web 整合 Tio Boot》。 - 02.md : 文档《spring-boot-starter-webflux ",
      "keywords": [],
      "status": "document",
      "sha256": "ee40af033a8f95d80595e76ebf23eb34f274c5fa7c3366a3ca79b34c078a4c60"
    },
    {
      "id": "zh/45_spring-cloud/01.md",
      "title": "tio-boot spring-cloud",
      "language": "zh-CN",
      "chapter": "zh/45_spring-cloud",
      "url": "https://tio-boot.com/zh/45_spring-cloud/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/45_spring-cloud/01.md",
      "source": "zh/45_spring-cloud/01.md",
      "description": "概述 - tio-boot 完全支持 spring-cloud - 仅仅是 web 中间件使用 tio-boot-server,其他组件仍然是 spring-cloud tio-boot, Spring Cloud, 和 Consul 整合 tio-boot, Spring Cloud, 和 Consul 实现服务注册",
      "keywords": [],
      "status": "document",
      "sha256": "fe0c0c02fa58d02b0b7babf75124506e833c3713a1008dedd6da0957313fc038"
    },
    {
      "id": "zh/45_spring-cloud/index.md",
      "title": "45_spring-cloud",
      "language": "zh-CN",
      "chapter": "zh/45_spring-cloud",
      "url": "https://tio-boot.com/zh/45_spring-cloud/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/45_spring-cloud/index.md",
      "source": "zh/45_spring-cloud/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-boot spring-cloud》。",
      "keywords": [],
      "status": "document",
      "sha256": "0770ca16308513b8c75b94aab88a226e5215bdf24bd789892c9847438d524ed4"
    },
    {
      "id": "zh/46_quarkus/01.md",
      "title": "Quarkus（无 HTTP）整合 tio-boot（有 HTTP）",
      "language": "zh-CN",
      "chapter": "zh/46_quarkus",
      "url": "https://tio-boot.com/zh/46_quarkus/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/46_quarkus/01.md",
      "source": "zh/46_quarkus/01.md",
      "description": "同 JVM 架构完整方案说明 --- 一、背景与问题动机 在 Java 服务架构中，常见的两类诉求往往是冲突的： 高性能、可控的网络层 希望完全掌控端口、协议、路由、线程模型（tio-boot 非常擅长） 成熟、强大的后台能力 希望使用 CDI、配置、生命周期管理、生态组件（Quarkus 非常擅长） 传统做法往往是：",
      "keywords": [],
      "status": "document",
      "sha256": "c7d77c3d69a27e4c40c8316d7fe9a6a90e513b9d6d51293956c153fdae487cd2"
    },
    {
      "id": "zh/46_quarkus/02.md",
      "title": "tio-boot + Quarkus + Hibernate ORM Panache",
      "language": "zh-CN",
      "chapter": "zh/46_quarkus",
      "url": "https://tio-boot.com/zh/46_quarkus/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/46_quarkus/02.md",
      "source": "zh/46_quarkus/02.md",
      "description": "1. 设计目标回顾 tio-boot 唯一对外 HTTP/网络入口 管端口、路由、handler、协议 Quarkus 只做后台运行时容器 提供 CDI（Arc）、事务（ @Transactional ）、ORM（Hibernate + Panache）、数据源/连接池 不对外启动 HTTP 端口 业务代码 Servi",
      "keywords": [],
      "status": "document",
      "sha256": "027dca40dba6eab2e849625846b104a1a03268aa82a9f874ba6c87db24a0ba11"
    },
    {
      "id": "zh/46_quarkus/03.md",
      "title": "tio-boot + Quarkus + Hibernate ORM Panache + jOOQ 整合方案",
      "language": "zh-CN",
      "chapter": "zh/46_quarkus",
      "url": "https://tio-boot.com/zh/46_quarkus/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/46_quarkus/03.md",
      "source": "zh/46_quarkus/03.md",
      "description": "1. 架构目标升级 在既有设计中： tio-boot 唯一对外 HTTP / 网络入口，负责端口、协议、路由与 handler。 Quarkus 仅作为后台运行时容器，提供： CDI（Arc） 事务（JTA / @Transactional ） Hibernate ORM（Panache） 数据源与连接池 业务代码 完",
      "keywords": [],
      "status": "document",
      "sha256": "2a32ec3c9b89292ca6ba04f3d086a9ec90f54c7b748a04d80dab20003114a068"
    },
    {
      "id": "zh/46_quarkus/index.md",
      "title": "46_quarkus",
      "language": "zh-CN",
      "chapter": "zh/46_quarkus",
      "url": "https://tio-boot.com/zh/46_quarkus/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/46_quarkus/index.md",
      "source": "zh/46_quarkus/index.md",
      "description": "本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Quarkus（无 HTTP）整合 tio-boot（有 HTTP）》。 - 02.md : 文档《tio-boot + Quarkus + ",
      "keywords": [],
      "status": "document",
      "sha256": "283a1f3309dd5580c3c3b9d0d394dc6df2d15dee0c329854a30c8b622f90ffdc"
    },
    {
      "id": "zh/49_file-storage/01.md",
      "title": "文件上传数据表",
      "language": "zh-CN",
      "chapter": "zh/49_file-storage",
      "url": "https://tio-boot.com/zh/49_file-storage/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/49_file-storage/01.md",
      "source": "zh/49_file-storage/01.md",
      "description": "在这个指南中，我们将详细介绍如何设计和实现一个文件上传和管理系统的数据库 1. 文件表设计 首先，我们需要设计一个表来存储上传文件的相关信息。以下是一个示例的 SQL 表结构： 字段容量设计 | 字段 | 类型 | 设计依据 | | --- | --- | --- | | name | VARCHAR(255) | 保",
      "keywords": [],
      "status": "document",
      "sha256": "0342851c15f00fdb2640fd50eb13aab65d9e328f234c8fb42861b6bdefa94ad8"
    },
    {
      "id": "zh/49_file-storage/02.md",
      "title": "本地存储",
      "language": "zh-CN",
      "chapter": "zh/49_file-storage",
      "url": "https://tio-boot.com/zh/49_file-storage/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/49_file-storage/02.md",
      "source": "zh/49_file-storage/02.md",
      "description": "本篇文章介绍一个实例，演示如何将文件存储到本地文件系统。通过配置和编写相应的代码，实现文件的上传、存储及访问功能。 目录 1. 实现本地存储 - 配置文件 - 配置类 - 数据库配置类 DbConfig - 处理器配置类 HandlerConfiguration - 业务层 - 接入层 2. 文件上传文档 - 1. 客",
      "keywords": [],
      "status": "document",
      "sha256": "fcae1501e2928a15b29261f1ba0ed20caa27458c88ce77b4417017493d640ce0"
    },
    {
      "id": "zh/49_file-storage/03.md",
      "title": "存储到 亚马逊 S3",
      "language": "zh-CN",
      "chapter": "zh/49_file-storage",
      "url": "https://tio-boot.com/zh/49_file-storage/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/49_file-storage/03.md",
      "source": "zh/49_file-storage/03.md",
      "description": "使用 AWS S3 存储文件并整合到 Tio-Boot 项目中 本文将详细介绍如何在 AWS S3 上配置存储桶，并将其整合到 Tio-Boot 项目中，实现文件的上传、存储及相关信息的保存到数据库。本文包含所有必要的配置步骤、代码示例及相关说明，确保您能够顺利完成集成。 目录 1. AW3 S3 配置 - 创建存储桶",
      "keywords": [],
      "status": "document",
      "sha256": "16e9dc76f634ba7c08c01cd8ca1187918a62d333461c1b475b9fe28b9568d7e3"
    },
    {
      "id": "zh/49_file-storage/04.md",
      "title": "存储到 Cloudflare R2",
      "language": "zh-CN",
      "chapter": "zh/49_file-storage",
      "url": "https://tio-boot.com/zh/49_file-storage/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/49_file-storage/04.md",
      "source": "zh/49_file-storage/04.md",
      "description": "toc 本文介绍如何： 1. 创建 Cloudflare R2 Bucket 2. 绑定自定义域名 3. 获取 AccountId 4. 配置 CORS 5. 创建 R2 API Token 6. 配置环境变量 7. 使用 Java S3 SDK 上传文件到 R2 --- 一、创建 R2 Bucket 进入 Cloud",
      "keywords": [],
      "status": "document",
      "sha256": "4e00b2979b3b6de3b00e6523ca6d4683db18c1880bb3adf0d21c4cb93ed5c354"
    },
    {
      "id": "zh/49_file-storage/05.md",
      "title": "存储到 腾讯 COS",
      "language": "zh-CN",
      "chapter": "zh/49_file-storage",
      "url": "https://tio-boot.com/zh/49_file-storage/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/49_file-storage/05.md",
      "source": "zh/49_file-storage/05.md",
      "description": "添加依赖 编写工具类 TencentStorageService 接收文件上传并入库 SystemFileTencentCosHandler",
      "keywords": [],
      "status": "document",
      "sha256": "fbe25dcd0e23e86dec281375bb5ffa2792cd38460719eee230e3827293a90d47"
    },
    {
      "id": "zh/49_file-storage/06.md",
      "title": "上传文件到阿里云 OSS",
      "language": "zh-CN",
      "chapter": "zh/49_file-storage",
      "url": "https://tio-boot.com/zh/49_file-storage/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/49_file-storage/06.md",
      "source": "zh/49_file-storage/06.md",
      "description": "本文介绍通过 AliyunOssUtils 将字节数组或本地文件上传到阿里云 OSS。工具类位于 nexus.io.tio.boot.admin.utils.storage ，封装 OSS SDK 的客户端创建和上传操作。 应用的统一上传接口、文件信息落库及下载接口见 tio-boot-admin：文件上传 。 1. ",
      "keywords": [],
      "status": "document",
      "sha256": "83e4fa31f5c314769c717d203a4c3bd756c993ea40a1e36b7ddb67173fb9c94b"
    },
    {
      "id": "zh/49_file-storage/07.md",
      "title": "上传文件到 MinIO",
      "language": "zh-CN",
      "chapter": "zh/49_file-storage",
      "url": "https://tio-boot.com/zh/49_file-storage/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/49_file-storage/07.md",
      "source": "zh/49_file-storage/07.md",
      "description": "MinIO 提供兼容 S3 的对象存储接口。 MinioUtils 复用 AWS SDK，提供字节数组上传、本地文件上传、公开 URL 和预签名下载； UniStorageService 负责统一上传、文件信息落库及查询。切换存储平台后，业务层继续使用相同的服务接口。 toc 1. 添加依赖 在已依赖 tio-boot",
      "keywords": [],
      "status": "document",
      "sha256": "9154f59238cbd4a305c14ffc9ab7e83ce36502497e2f138f958809d709a1d8ed"
    },
    {
      "id": "zh/49_file-storage/index.md",
      "title": "49_file-storage",
      "language": "zh-CN",
      "chapter": "zh/49_file-storage",
      "url": "https://tio-boot.com/zh/49_file-storage/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/49_file-storage/index.md",
      "source": "zh/49_file-storage/index.md",
      "description": "本目录介绍文件信息管理及各类存储平台接入，配图位于 assets 目录。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《文件上传数据表》。 - 02.md : 文档《本地存储》。 - 03.md : 文档《存储到 亚马逊 S3》。 - 04.md : 文档《存储到 Clou",
      "keywords": [],
      "status": "document",
      "sha256": "f6876ff4cc5d5212ed72dd9bec84c3c5eeca3bc9a743482bcd04573d15a6d6db"
    },
    {
      "id": "zh/50_payment/01.md",
      "title": "微信小程序支付：普通支付",
      "language": "zh-CN",
      "chapter": "zh/50_payment",
      "url": "https://tio-boot.com/zh/50_payment/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/50_payment/01.md",
      "source": "zh/50_payment/01.md",
      "description": "本文介绍普通商户如何在 tio-boot 后端接入微信支付 API V3 的 JSAPI 下单接口，并在微信小程序中使用 wx.requestPayment 完成支付。以购买实物商品为例，依次完成商户开通、密钥配置、获取付款人 OpenID、预下单、调起收银台、支付回调和订单确认。 本文不包含服务商代收和分账。会员、数",
      "keywords": [],
      "status": "document",
      "sha256": "faec616aadf7f5b8d42dc7702396621081d760a9d5155461773d4d2ceacb8604"
    },
    {
      "id": "zh/50_payment/02.md",
      "title": "微信支付：Native 扫码支付（PC 网页扫码）",
      "language": "zh-CN",
      "chapter": "zh/50_payment",
      "url": "https://tio-boot.com/zh/50_payment/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/50_payment/02.md",
      "source": "zh/50_payment/02.md",
      "description": "本文介绍普通商户如何在 tio-boot 后端接入微信支付 API V3 的 Native 下单接口，把返回的 code url 渲染成二维码， 让用户在电脑浏览器上扫码付款，并通过通知与查单确认收款结果。适用于网页端充值、购买虚拟内容等场景。 网页扫码与小程序支付用的是同一套商户配置，区别在下单接口与前端展示方式：小",
      "keywords": [],
      "status": "document",
      "sha256": "f775eafcf82a7053df881e6c93d560d10ed2f96862a2f799f36b7b1b74f68be9"
    },
    {
      "id": "zh/50_payment/03.md",
      "title": "支付宝：电脑网站支付接入指南",
      "language": "zh-CN",
      "chapter": "zh/50_payment",
      "url": "https://tio-boot.com/zh/50_payment/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/50_payment/03.md",
      "source": "zh/50_payment/03.md",
      "description": "本文面向自行运营网站的普通商户，介绍从申请产品到使用 tio-boot 后端接入支付宝收款的过程。用户在网站选择商品，后端创建订单并生成支付宝收银台链接，用户跳转后付款，后端通过异步通知和主动查单确认到账。 本文采用官方 Java SDK 的 v2 接口和 RSA2 公钥模式，调用 alipay.trade.page.",
      "keywords": [],
      "status": "document",
      "sha256": "d2fee05d10e83d8c1ecfc9e4770f0a1ede2176b55e789c29ce31d43b9ca4bb83"
    },
    {
      "id": "zh/50_payment/04.md",
      "title": "支付宝：使用 page.pay 二维码前置模式实现网页内扫码支付",
      "language": "zh-CN",
      "chapter": "zh/50_payment",
      "url": "https://tio-boot.com/zh/50_payment/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/50_payment/04.md",
      "source": "zh/50_payment/04.md",
      "description": "使用 alipay.trade.page.pay 的 qr pay mode=4 ，可以在网站自己的支付弹窗内嵌入支付宝二维码。用户用手机支付宝扫码付款，网站确认到账后显示成功，原页面无需跳转到支付宝收银台。 本文基于 tio-boot、支付宝官方 Java SDK 和 React 的实际项目实现。2026 年 10 ",
      "keywords": [],
      "status": "document",
      "sha256": "64db484ad3ca736e607d55a5223cdb7433f928ea962bf578b6db194d73d07421"
    },
    {
      "id": "zh/50_payment/index.md",
      "title": "支付集成",
      "language": "zh-CN",
      "chapter": "zh/50_payment",
      "url": "https://tio-boot.com/zh/50_payment/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/50_payment/index.md",
      "source": "zh/50_payment/index.md",
      "description": "- 支付宝：电脑网站支付接入指南 ：材料准备、产品申请、网页应用、RSA2 密钥、tio-boot 下单与通知、幂等到账、二维码支付（当面付）、移动端与「不跳网页」的支付、上线验证及资料脱敏。 - 微信小程序支付：普通支付 ：商户开通、密钥配置、Java 后端下单、小程序调起支付、通知验签与订单确认。 - 微信支付：N",
      "keywords": [],
      "status": "document",
      "sha256": "911b983767cce08d4720b3abbb1dbc8633c2c5db5f3e4b93beb8d45ab0eb01b5"
    },
    {
      "id": "zh/51_firebase/01.md",
      "title": "整合 google firebase",
      "language": "zh-CN",
      "chapter": "zh/51_firebase",
      "url": "https://tio-boot.com/zh/51_firebase/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/51_firebase/01.md",
      "source": "zh/51_firebase/01.md",
      "description": "firebase 简介 firebase 是 Google 提供的一个移动和网络应用开发平台，它提供了一系列工具和服务来帮助开发者构建高质量的应用，改善用户体验，并快速成长其业务。Firebase 提供的服务覆盖了应用开发的许多方面，包括但不限于数据库、认证、分析、配置管理、文件存储、功能测试和云函数等。 Fireba",
      "keywords": [],
      "status": "document",
      "sha256": "ebe68e5d584a60434c94c27235e78c61314d9c7c481213a777864dd0284fcbc0"
    },
    {
      "id": "zh/51_firebase/02.md",
      "title": "Firebase Storage",
      "language": "zh-CN",
      "chapter": "zh/51_firebase",
      "url": "https://tio-boot.com/zh/51_firebase/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/51_firebase/02.md",
      "source": "zh/51_firebase/02.md",
      "description": "添加一个 Bucket 创建 bucket Firebase Storage 使用存储桶（Bucket）来组织和存储您的文件。如果您刚创建了 Firebase 项目，Firebase 会为您自动创建一个默认的存储桶。 - 您可以在 Firebase 控制台的 Storage 部分查看和管理您的存储桶。 - 要添加或管理",
      "keywords": [],
      "status": "document",
      "sha256": "d01d2762c4216ab5acb2afb152a3211b94dc7073b9b16f36e724b9f859b9a112"
    },
    {
      "id": "zh/51_firebase/03.md",
      "title": "Firebase Authentication",
      "language": "zh-CN",
      "chapter": "zh/51_firebase",
      "url": "https://tio-boot.com/zh/51_firebase/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/51_firebase/03.md",
      "source": "zh/51_firebase/03.md",
      "description": "背景 在现代应用中，用户身份验证是确保系统安全性的重要环节。Firebase Authentication 提供了简单易用的身份验证服务，支持多种身份验证方法，包括电子邮件密码登录、第三方登录（如 Google、Facebook）、匿名登录等。为了确保操作的安全性，如文件上传，通常需要验证用户的身份，并验证其所携带的 ",
      "keywords": [],
      "status": "document",
      "sha256": "3215e950e49f6a1f0c9c75144694feea769475e29e4e9612dfd5c9f945bc6e5f"
    },
    {
      "id": "zh/51_firebase/04.md",
      "title": "使用 Firebase Admin SDK 进行匿名用户管理与自定义状态标记",
      "language": "zh-CN",
      "chapter": "zh/51_firebase",
      "url": "https://tio-boot.com/zh/51_firebase/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/51_firebase/04.md",
      "source": "zh/51_firebase/04.md",
      "description": "在现代应用程序中，匿名用户管理是一个常见的需求，尤其是在需要为未登录用户提供部分功能的场景中。通过 Firebase Admin SDK，开发者可以方便地管理匿名用户，并为用户设置自定义的状态标记，例如记录用户是否使用过某项特定功能。 本文将介绍如何使用 Firebase Admin SDK 实现匿名用户的管理，并通过",
      "keywords": [],
      "status": "document",
      "sha256": "b0d99f51371b593545e35d7618acc9ea85eff8fd3685f5546a7aa30de21d3bd0"
    },
    {
      "id": "zh/51_firebase/05.md",
      "title": "导出用户",
      "language": "zh-CN",
      "chapter": "zh/51_firebase",
      "url": "https://tio-boot.com/zh/51_firebase/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/51_firebase/05.md",
      "source": "zh/51_firebase/05.md",
      "description": "导出 Firebase 用户到 Excel 本示例使用 Firebase Admin SDK 从 Firebase 中导出用户信息，并通过 EasyExcelUtils 工具类将数据导出为 Excel 文件。 示例代码 代码解释 1. 环境加载和配置 ： - 使用 EnvUtils.load() 来加载项目中的环境变量",
      "keywords": [],
      "status": "document",
      "sha256": "30359e3f23473ef5e18da10cc54bfe7ecc109f018f6f1a89d398ccc8ba033ba7"
    },
    {
      "id": "zh/51_firebase/06.md",
      "title": "登录注册",
      "language": "zh-CN",
      "chapter": "zh/51_firebase",
      "url": "https://tio-boot.com/zh/51_firebase/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/51_firebase/06.md",
      "source": "zh/51_firebase/06.md",
      "description": "简介 本文档概述了基于 Firebase Auth 平台的用户认证系统的设计与实现。系统提供用户注册、登录、密码重置功能，利用 Firebase Authentication 实现安全的用户管理和邮箱验证。本指南旨在为开发人员和相关人员提供详细的实现说明，帮助他们了解、实现并与提供的认证服务进行交互。 --- 需求 用",
      "keywords": [],
      "status": "document",
      "sha256": "6d78b3995050557f2d3451eca0108d42040844ce174f46f81f490803a296b62b"
    },
    {
      "id": "zh/51_firebase/07.md",
      "title": "注册回调",
      "language": "zh-CN",
      "chapter": "zh/51_firebase",
      "url": "https://tio-boot.com/zh/51_firebase/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/51_firebase/07.md",
      "source": "zh/51_firebase/07.md",
      "description": "同步 Firebase 用户到后端系统 概述 在现代应用中，用户管理是一个关键的功能。Firebase 提供了强大的身份验证服务，可以轻松地管理用户的创建和删除。然而，在某些场景下，我们需要将 Firebase 的用户数据与后端系统进行同步，以实现更复杂的业务逻辑或数据分析。本文将详细介绍如何通过 Firebase C",
      "keywords": [],
      "status": "document",
      "sha256": "4f6ede5bf830aa9d7c6381c8f3859e74b9014bfd2b981155d052f18ca6fb3b80"
    },
    {
      "id": "zh/51_firebase/index.md",
      "title": "51_firebase",
      "language": "zh-CN",
      "chapter": "zh/51_firebase",
      "url": "https://tio-boot.com/zh/51_firebase/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/51_firebase/index.md",
      "source": "zh/51_firebase/index.md",
      "description": "本目录包含 9 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《整合 google firebase》。 - 02.md : 文档《Firebase Storage》。 - 03.md : 文档《Fireb",
      "keywords": [],
      "status": "document",
      "sha256": "5fad73fc15f1f4f69973bf9afff2dc54b9e1ff99c51e038645514a368f009be0"
    },
    {
      "id": "zh/52_clerk/01.md",
      "title": "Clerk",
      "language": "zh-CN",
      "chapter": "zh/52_clerk",
      "url": "https://tio-boot.com/zh/52_clerk/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/52_clerk/01.md",
      "source": "zh/52_clerk/01.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "129a5706b5b4186ab4c2b1035ba5f9a9db98fa5ad0115251942c45af8d1b7236"
    },
    {
      "id": "zh/52_clerk/index.md",
      "title": "52_clerk",
      "language": "zh-CN",
      "chapter": "zh/52_clerk",
      "url": "https://tio-boot.com/zh/52_clerk/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/52_clerk/index.md",
      "source": "zh/52_clerk/index.md",
      "description": "文章 - Clerk （待补充）",
      "keywords": [],
      "status": "placeholder",
      "sha256": "c60d92c61d5506d26b04b440b928212f234feed29beb0423ba916fb7a89deca2"
    },
    {
      "id": "zh/53_media/01.md",
      "title": "JAVE 提取视频中的声音",
      "language": "zh-CN",
      "chapter": "zh/53_media",
      "url": "https://tio-boot.com/zh/53_media/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/53_media/01.md",
      "source": "zh/53_media/01.md",
      "description": "1. JAVE 简介 JAVE（Java Audio Video Encoder）是一个开源的 Java 库，专门用于处理多媒体文件的编码和解码操作。JAVE 支持多种格式的音频和视频文件，提供了诸如格式转换、音频提取、视频帧截取等常见的多媒体处理功能。JAVE 底层通过封装 FFmpeg 实现多媒体处理，因此能够执行",
      "keywords": [],
      "status": "document",
      "sha256": "700fc584c4b9f9b776ab3f99bfc4f68a2d0797bfbf1a26c759325936b367e388"
    },
    {
      "id": "zh/53_media/02.md",
      "title": "Jave 提取视频中的图片",
      "language": "zh-CN",
      "chapter": "zh/53_media",
      "url": "https://tio-boot.com/zh/53_media/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/53_media/02.md",
      "source": "zh/53_media/02.md",
      "description": "本文档介绍如何使用 JAVE 库内置的 FFmpeg 功能来从视频中提取图片，并通过控制器将其整合到 Web 应用中。 使用 FFmpeg 命令提取图片 获取 FFmpeg 命令路径 JAVE 库内置了一个 DefaultFFMPEGLocator 类，该类在实例化时会将 FFmpeg 可执行文件复制到系统的临时文件夹",
      "keywords": [],
      "status": "document",
      "sha256": "7fa8ebfa24ec9a41882116074fcd3b3b8022d36390644e46576a442a9967dfaa"
    },
    {
      "id": "zh/53_media/03.md",
      "title": "待定",
      "language": "zh-CN",
      "chapter": "zh/53_media",
      "url": "https://tio-boot.com/zh/53_media/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/53_media/03.md",
      "source": "zh/53_media/03.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "c65f819aa4dc2e52b6e02a6a8fd885f798dccfac5d3064ad73259beee29d6453"
    },
    {
      "id": "zh/53_media/index.md",
      "title": "53_media",
      "language": "zh-CN",
      "chapter": "zh/53_media",
      "url": "https://tio-boot.com/zh/53_media/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/53_media/index.md",
      "source": "zh/53_media/index.md",
      "description": "本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《JAVE 提取视频中的声音》。 - 02.md : 文档《Jave 提取视频中的图片》。 - 03.md : 文档《待定》。",
      "keywords": [],
      "status": "document",
      "sha256": "9c2be9697136b2db068bacd6a581c8980a8e5b7a2428a998c1a2168447fc4333"
    },
    {
      "id": "zh/54_asr/01.md",
      "title": "Whisper-JNI",
      "language": "zh-CN",
      "chapter": "zh/54_asr",
      "url": "https://tio-boot.com/zh/54_asr/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/54_asr/01.md",
      "source": "zh/54_asr/01.md",
      "description": "简介 Whisper 是 OpenAI 开发的一个基于 Transformer 的语音识别模型，能够处理多种语言并生成高度准确的语音到文本转录。该模型最初是基于 Python 和机器学习框架（如 PyTorch）构建的，因此开发者必须依赖 Python 和相应的库来进行语音识别任务。 Whisper OpenAI 开源",
      "keywords": [],
      "status": "document",
      "sha256": "af04cdbfef3d0617e4d3b573bf585e6217fd346d21dcc25486685e0133642865"
    },
    {
      "id": "zh/54_asr/index.md",
      "title": "54_asr",
      "language": "zh-CN",
      "chapter": "zh/54_asr",
      "url": "https://tio-boot.com/zh/54_asr/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/54_asr/index.md",
      "source": "zh/54_asr/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Whisper-JNI》。",
      "keywords": [],
      "status": "document",
      "sha256": "a97844fa1581e6b15e744006b173ef2ef8a0e76fa11e89f3d797ad40feca7913"
    },
    {
      "id": "zh/55_tts/index.md",
      "title": "55_tts",
      "language": "zh-CN",
      "chapter": "zh/55_tts",
      "url": "https://tio-boot.com/zh/55_tts/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/55_tts/index.md",
      "source": "zh/55_tts/index.md",
      "description": "本目录包含 1 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。",
      "keywords": [],
      "status": "document",
      "sha256": "42b65ea615b806368831814ffaeca2d5a3425e92cffaa952a97c7bd9a64e3818"
    },
    {
      "id": "zh/56_ocr/index.md",
      "title": "56_ocr",
      "language": "zh-CN",
      "chapter": "zh/56_ocr",
      "url": "https://tio-boot.com/zh/56_ocr/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/56_ocr/index.md",
      "source": "zh/56_ocr/index.md",
      "description": "本目录包含 1 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。",
      "keywords": [],
      "status": "document",
      "sha256": "c9d6527b5915cf9d37b57709da6bb1285295873943ba425712bd17f99e27ab71"
    },
    {
      "id": "zh/57_native-media/01.md",
      "title": "java-native-media",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/01.md",
      "source": "zh/57_native-media/01.md",
      "description": "音视频处理优化库 toc --- 项目背景 在传统的 Java 音视频处理方案中，开发者通常依赖调用 FFmpeg 命令行工具来实现音视频处理需求。但这种方式存在两个主要痛点： 1. 性能损耗 调用外部进程会带来额外的进程间通信开销，从而影响整体处理效率。 2. 包体积膨胀 为了功能完整性，往往需要捆绑 FFmpeg ",
      "keywords": [],
      "status": "document",
      "sha256": "e93eaeecd89706d794627843fe35a3d4e9000fbea4900783cd58b49dab35b1d3"
    },
    {
      "id": "zh/57_native-media/02.md",
      "title": "JNI 入门示例",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/02.md",
      "source": "zh/57_native-media/02.md",
      "description": "toc 在开发 Android 或 Java 项目时，为了复用现有的 C/C++ 代码，我们通常会使用 C/C++ 开发一部分核心功能。JNI（Java Native Interface）作为 JVM 与 C/C++ 代码交互的桥梁，提供了这种跨语言调用能力。本文以一个简单的 “Hello JNI” 示例为例，讲解如何",
      "keywords": [],
      "status": "document",
      "sha256": "8af1c71547dcc86f745526b94ae1682250cdbf495faaa1f7c5243fcbc1a9866d"
    },
    {
      "id": "zh/57_native-media/03.md",
      "title": "mp3 拆分",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/03.md",
      "source": "zh/57_native-media/03.md",
      "description": "toc 1. 项目背景与需求分析 目标： 将一个大的 MP3 文件按用户指定的大小拆分为多个小文件。拆分后，每个文件必须满足以下条件： - 拆分点处不能破坏 MP3 帧结构； - 每个拆分文件均为有效的 MP3 文件，可供语音识别模型处理； - 返回拆分后文件的路径（以字符串数组形式返回给 Java 层）。 关键问题：",
      "keywords": [],
      "status": "document",
      "sha256": "56e58dbd3cd5f6cd40d9c7f74c6b400d6ae17c7d480060c6c225c2b3b903522f"
    },
    {
      "id": "zh/57_native-media/04.md",
      "title": "mp4 转 mp3",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/04.md",
      "source": "zh/57_native-media/04.md",
      "description": "toc 1. 安装 ffmpeg mp4 转 mp3 的过程中会遇到下面的库 libavformat、libavcodec、libswresample、libavutil ,需要安装 ffmpeg,使用 vcpkg 安装 ffmpeg 的方法如下 Alt text --- 2、原理说明 1. FFmpeg 解码/编码流",
      "keywords": [],
      "status": "document",
      "sha256": "4b01e3374b5874cf8152c7ed81c6107cd16c4035c091bf7495ccb707761f00eb"
    },
    {
      "id": "zh/57_native-media/05.md",
      "title": "使用 libmp3lame 实现高质量 MP3 编码",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/05.md",
      "source": "zh/57_native-media/05.md",
      "description": "toc 在 Windows 平台上，内置的 MP3 编码器（ACM Wrapper MFT）质量有限，很多开发者希望借助 libmp3lame 这一高质量开源 MP3 编码器实现更好的音频转换效果。本文介绍如何通过 vcpkg 安装支持 libmp3lame 的 FFmpeg、修改 CMake 构建脚本、调整 C/C+",
      "keywords": [],
      "status": "document",
      "sha256": "864226b56b04c8d87ef565601f702a56a8db79797509c0eb8950b0366142e7bf"
    },
    {
      "id": "zh/57_native-media/06.md",
      "title": "Linux 编译",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/06.md",
      "source": "zh/57_native-media/06.md",
      "description": "toc 本项目使用 FFmpeg（avcodec、avformat、swresample、avutil 等）和 mp3lame 进行音视频处理，同时使用 JNI 与 Java 交互。由于不同操作系统（Linux 与 Windows）的库查找、加载机制不同，本文档提供了两套配置方式，并解释相关原因和注意事项。 --- 1",
      "keywords": [],
      "status": "document",
      "sha256": "5b99064b41b5a8ada77e735e26454e4327587ed9dfa54749d1d4d073e5f51def"
    },
    {
      "id": "zh/57_native-media/07.md",
      "title": "macOS 编译",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/07.md",
      "source": "zh/57_native-media/07.md",
      "description": "在 macOS M2 上编译使用 FFmpeg 与 JNI 的项目，您可以按照以下步骤进行配置和构建： 1. 准备工作 1. 是否需要使用 vcpkg？ - 不一定 在 macOS 上，推荐使用 Homebrew 来安装 FFmpeg、lame 等依赖，因为 Homebrew 在 macOS 平台具有更高的普及率和维护",
      "keywords": [],
      "status": "document",
      "sha256": "bae292f82060ab60b3159cc3e04d1040578b0bd4b74b1d7fea311262e26026cb"
    },
    {
      "id": "zh/57_native-media/08.md",
      "title": "从 JAR 包中加载本地库文件",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/08.md",
      "source": "zh/57_native-media/08.md",
      "description": "在跨平台 Java 项目中，往往需要使用 JNI 调用本地（C/C++）代码。本方案介绍如何将 native media 编译后的各平台动态库（如 Windows 的 DLL、Linux 的 .so、macOS 的 .dylib）打包到 JAR 内部，并在运行时通过工具类将这些库文件提取到用户目录下加载。这样既便于统一",
      "keywords": [],
      "status": "document",
      "sha256": "935fa022167267342e177df1a4965e8c27cbc066392cc45a51b75b2c2ccf267a"
    },
    {
      "id": "zh/57_native-media/09.md",
      "title": "支持的音频和视频格式",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/09.md",
      "source": "zh/57_native-media/09.md",
      "description": "java 支持的格式 整理后的输出如下 | 名称 | 说明 | 扩展名 | 是音频还是视频 | 视频格式简介 | | ----------------------- | ----------------------------------------------------------------- | -------",
      "keywords": [],
      "status": "document",
      "sha256": "d2cfb5a8d72c1604435e32fa7f60e0152284dbd51f12ef2f059ef51db13e7d96"
    },
    {
      "id": "zh/57_native-media/10.md",
      "title": "任意格式转为 mp3",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/10.md",
      "source": "zh/57_native-media/10.md",
      "description": "java 测试代码 c 语言实现 audio file utils.h audio file utils.c jni native mp3.c native mp3.c",
      "keywords": [],
      "status": "document",
      "sha256": "7c909be76aa2ee11d2717c324cdc319624b650e1ee2d3993b27631915017bf29"
    },
    {
      "id": "zh/57_native-media/11.md",
      "title": "通用格式转换",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/11.md",
      "source": "zh/57_native-media/11.md",
      "description": "该功能利用 FFmpeg 实现音频格式转换，通过调用本地 DLL 中的 NativeMedia.convertTo 方法，将输入文件转换为指定目标格式。 使用示例 在上面的示例中， \"libmp3lame\" 表示使用 libmp3lame 编码器进行转换，最终输出文件将使用 MP3 容器格式。 targetFormat",
      "keywords": [],
      "status": "document",
      "sha256": "bd50da18f87da70990701c80c7470c534d4ee91ecea82fa8243f4ae77357b020"
    },
    {
      "id": "zh/57_native-media/12.md",
      "title": "通用格式拆分",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/12.md",
      "source": "zh/57_native-media/12.md",
      "description": "该功能利用 FFmpeg 强大的多媒体处理能力，实现对音频、视频等多种格式文件的自动拆分。通过调用本地库中的 NativeMedia.split 方法，可以根据指定的文件大小阈值将一个多媒体文件分割成若干个连续的小文件，而无需重新编码，确保原始编码参数不变，从而实现高效、无损的拆分操作。 功能简介 - 多格式支持 ：支",
      "keywords": [],
      "status": "document",
      "sha256": "18cf25dbac44f3e75d3a96265f1feb7d4e768c98be3223f0809980041228ec52"
    },
    {
      "id": "zh/57_native-media/13.md",
      "title": "视频合并",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/13.md",
      "source": "zh/57_native-media/13.md",
      "description": "本方案的主要思路是调用 FFmpeg 的开发库，在 C 层实现“流复制（stream copy）”模式下的多个视频和音频文件的合并操作，并通过 JNI 供 Java 层调用。视频和音频合并过程中针对不同输入文件时长不一致的问题，采用了统一全局时间轴（global offset）的策略，确保合并后各个媒体流在播放时不会出",
      "keywords": [],
      "status": "document",
      "sha256": "275dd482dfc7bf86fc01b51210109cf81fb594744e706e9b2aaedc97dd805651"
    },
    {
      "id": "zh/57_native-media/14.md",
      "title": "VideoToHLS",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/14.md",
      "source": "zh/57_native-media/14.md",
      "description": "流程 1. 使用 native‑media 库将指定的 MP4 文件转换为 HLS 分段，分段时长为 segmentDuration 秒。 2. 生成的 TS 分段文件将存放在与 hlsPath 相同的目录下（文件名按照 tsPattern 命名，例如 \"segment\\ %03d.ts\"）。 3. 将生成的 m3u8",
      "keywords": [],
      "status": "document",
      "sha256": "ea7d9bfa2b52c5b07a00a39691ce6518a3b2033f4ac506de65ad1b481771b11e"
    },
    {
      "id": "zh/57_native-media/15.md",
      "title": "split_video_to_hls 支持其他语言",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/15.md",
      "source": "zh/57_native-media/15.md",
      "description": "native media.h pure video to hls.c 修改 native video to hls.c",
      "keywords": [],
      "status": "document",
      "sha256": "90ad1e396b61ce18bfe0982a4fd1408f70b02f2646ead7cfa6dc9adb321aa903"
    },
    {
      "id": "zh/57_native-media/16.md",
      "title": "持久化 HLS 会话",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/16.md",
      "source": "zh/57_native-media/16.md",
      "description": "本项目通过 JNI 封装 FFmpeg 库，实现了一个持久化 HLS 会话模块。该模块支持如下功能： 1. 初始化持久化 HLS 会话 创建 HLS 输出上下文，并保存参数选项，同时记录会话的创建时间。该接口返回一个 native 指针，用于后续追加视频分段或关闭会话。 2. 追加视频分段 根据输入的 MP4 文件，追",
      "keywords": [],
      "status": "document",
      "sha256": "424019899960f962f6bc9540369108eba7b18cae822bbf462ec25b947333cc5e"
    },
    {
      "id": "zh/57_native-media/17.md",
      "title": "获取视频长度",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/17.md",
      "source": "zh/57_native-media/17.md",
      "description": "Java C jni video length.c",
      "keywords": [],
      "status": "document",
      "sha256": "c24738838bd53cc00659d5a58ace3d1d4f2ccfe8179977bd24f44242ae30dd7a"
    },
    {
      "id": "zh/57_native-media/18.md",
      "title": "保存视频的最后一帧",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/18.md",
      "source": "zh/57_native-media/18.md",
      "description": "背景介绍 在视频处理领域，经常会遇到这样的需求： 生成视频缩略图 ：常常取第一帧或最后一帧作为预览图； 分析视频结尾内容 ：比如广告检测、结尾画面识别； 封面生成 ：保存最后一帧作为视频的封面图。 Java 生态中并没有现成的高性能库直接完成此任务，因此我们需要借助 FFmpeg （功能最强大的开源音视频处理库）来获取",
      "keywords": [],
      "status": "document",
      "sha256": "ad607cfd7231c83df7fede8197a96286a8cf582ec9288ad230b456be16fd6f79"
    },
    {
      "id": "zh/57_native-media/19.md",
      "title": "添加水印",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/19.md",
      "source": "zh/57_native-media/19.md",
      "description": "添加 avfilter 按如下步骤修改的 CMakeLists.txt： 1. 查找 avfilter 的头文件路径 添加： 2. 查找 avfilter 的库文件 添加： 3. 将 avfilter 的 include 目录添加到 include directories() 修改 include directorie",
      "keywords": [],
      "status": "document",
      "sha256": "61751968e07bb05c0d10292bbe7a0061d54245472523d7c15d9dddf3d3a8c03a"
    },
    {
      "id": "zh/57_native-media/20.md",
      "title": "linux版本",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/20.md",
      "source": "zh/57_native-media/20.md",
      "description": "项目源码： https://github.com/litongjava/java-native-media --- 一、问题现象 应用启动时报错： --- 二、问题根因 1）应用内置的 native 库依赖 FFmpeg 59 检查 .so 依赖： 输出： 说明该库是 按 FFmpeg 5.x (ABI 59) 编译的",
      "keywords": [],
      "status": "document",
      "sha256": "6d2aee441b96c2f8d0ec79a519d0b37db4bd7f089966971fa53b293a47d3e457"
    },
    {
      "id": "zh/57_native-media/index.md",
      "title": "57_native-media",
      "language": "zh-CN",
      "chapter": "zh/57_native-media",
      "url": "https://tio-boot.com/zh/57_native-media/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/57_native-media/index.md",
      "source": "zh/57_native-media/index.md",
      "description": "本目录包含 24 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《java-native-media》。 - 02.md : 文档《JNI 入门示例》。 - 03.md : 文档《mp3 拆分》。 - 04",
      "keywords": [],
      "status": "document",
      "sha256": "59f6a8ab1acbba9d56a66c47d6d629b54f3fd26c2ce4f191a274da5f2dd0482b"
    },
    {
      "id": "zh/58_computer-vision/01.md",
      "title": "使用 Java 运行 YOLOv8 ONNX 模型进行目标检测",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/01.md",
      "source": "zh/58_computer-vision/01.md",
      "description": "toc 本文是一篇完整的入门文档。目标是让初学者能够 理解项目结构、组件职责、关键实现细节，以及如何运行和调试 。 --- 1. 概览与目标 本示例展示如何使用 Java（OpenCV + ONNX Runtime）对 YOLOv8 ONNX 模型做单张或批量图片的目标检测。实现流程为： 1. 读取图片并转换为 RGB",
      "keywords": [],
      "status": "document",
      "sha256": "9c8f835a0792e177d7e4286c5ad84401e1b7985f5706ce5a003a553528497270"
    },
    {
      "id": "zh/58_computer-vision/02.md",
      "title": "tio-boot整合yolo",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/02.md",
      "source": "zh/58_computer-vision/02.md",
      "description": "下面是一篇 从零开始给初学者看的完整使用文档 。 目标：让把 tio-boot + ONNX Runtime + YOLOv8 跑起来，并通过 HTTP 上传图片得到检测结果。 --- 一、项目介绍 这是一个基于 Java 的目标检测服务： 技术栈： | 技术 | 作用 | | ------------ | -----",
      "keywords": [],
      "status": "document",
      "sha256": "96122b5ff2a74d702a8bf6bfb471e8476fdb350f91c972494cf53de997ba277b"
    },
    {
      "id": "zh/58_computer-vision/03.md",
      "title": "ONNX Runtime 推理说明",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/03.md",
      "source": "zh/58_computer-vision/03.md",
      "description": "toc 1. 为什么使用 ONNX Runtime 在训练阶段，目标检测模型通常使用 PyTorch / Ultralytics YOLOv8 完成。 但在生产环境（Java 服务端、Android 等）无法直接运行 Python 推理，因此需要： 将训练好的模型导出为 ONNX → 使用 ONNX Runtime 执",
      "keywords": [],
      "status": "document",
      "sha256": "abf15b2d33113c72ec031c1ac4300901e4e9a9155cd5f53118ec32a2b57548fe"
    },
    {
      "id": "zh/58_computer-vision/04.md",
      "title": "Paddle Structure",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/04.md",
      "source": "zh/58_computer-vision/04.md",
      "description": "一、背景与目标 下载模型 https://www.paddleocr.ai/latest/version3.x/pipeline usage/PP-StructureV3.html 1-pp-structurev3 目标是将 PaddleOCR 中的文档布局分析模型： PP-DocLayout plus-L 从 Pad",
      "keywords": [],
      "status": "document",
      "sha256": "e72ab0291e9a814b39cde4889e116f603e620103902732cbe742a1f231a5e3a7"
    },
    {
      "id": "zh/58_computer-vision/05.md",
      "title": "tio-boot 整合 Paddle Structure",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/05.md",
      "source": "zh/58_computer-vision/05.md",
      "description": "一、依赖 确保下面这些依赖： --- 、实体类 1、DetectionResult 如果你项目里已经有这个类，把 setBbox 修好即可。 --- 2、PreprocessResult --- 三、PP-DocLayout 服务类 默认模型目录通过 EnvUtils.get(\"pp.doclayout.model d",
      "keywords": [],
      "status": "document",
      "sha256": "2d7f9e5de98a4cc271ca54ad2a28cbae95b7a9a2b78340f84c354e42c37743c2"
    },
    {
      "id": "zh/58_computer-vision/06.md",
      "title": "tio-boot整合Paddle Structure 提取图片",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/06.md",
      "source": "zh/58_computer-vision/06.md",
      "description": "新建实体类",
      "keywords": [],
      "status": "document",
      "sha256": "2d8e528b099f9232027a70ebfd9fb171b60f38e8ddcc64f7fca1eefd2af94e07"
    },
    {
      "id": "zh/58_computer-vision/07.md",
      "title": "U2Net 图片去背景原理",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/07.md",
      "source": "zh/58_computer-vision/07.md",
      "description": "toc 本文介绍 U2Net 用于图片去背景的基本原理，帮助理解后续 Java + ONNX Runtime 服务中的预处理、推理、mask 后处理和 PNG alpha 合成。 --- 一、去背景本质 图片去背景不是简单地按颜色删除背景。真实图片中，主体和背景可能有相近颜色，例如： 白衣服和白墙 黑色头发和暗背景 商",
      "keywords": [],
      "status": "document",
      "sha256": "b9ad7419ec990fe60058ffc7a23fd56e76ff767519cb84f071211f9f45ba4ecd"
    },
    {
      "id": "zh/58_computer-vision/08.md",
      "title": "tio-boot 整合 U2Net 实现图片去背景",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/08.md",
      "source": "zh/58_computer-vision/08.md",
      "description": "toc 本文介绍如何使用 tio-boot + ONNX Runtime + U2Net 搭建一个 Java 版图片去背景 HTTP 服务。接口行为兼容常见的 rembg HTTP 上传方式： 响应直接返回透明背景 PNG： --- 一、功能说明 U2Net 是一种图像显著性目标分割模型。它不是按颜色简单删除背景，而是",
      "keywords": [],
      "status": "document",
      "sha256": "4b175f7776ee83286463265289979702fe9cab65f82fec7eebb265c0df06e670"
    },
    {
      "id": "zh/58_computer-vision/index.md",
      "title": "58_computer-vision",
      "language": "zh-CN",
      "chapter": "zh/58_computer-vision",
      "url": "https://tio-boot.com/zh/58_computer-vision/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/58_computer-vision/index.md",
      "source": "zh/58_computer-vision/index.md",
      "description": "本目录包含 11 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《使用 Java 运行 YOLOv8 ONNX 模型进行目标检测》。 - 02.md : 文档《tio-boot整合yolo》。 - 03.m",
      "keywords": [],
      "status": "document",
      "sha256": "d671683dad626d69323cb97471b57fa0bdea2072a269226398df2a1a06851806"
    },
    {
      "id": "zh/60_ai-agent/01.md",
      "title": "数据库设计",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/01.md",
      "source": "zh/60_ai-agent/01.md",
      "description": "本章节将详细介绍如何使用 tio-boot 系统开发一个面向校园领域的搜索问答系统。该系统旨在为用户提供高效、智能的问答服务，涵盖以下主要功能： 功能概述 - 推荐问题 ：根据用户输入智能推荐相关问题，提升用户体验。 - 会话管理 ：有效管理用户与系统之间的对话会话，确保对话的连贯性。 - 历史记录管理 ：记录并管理用",
      "keywords": [],
      "status": "document",
      "sha256": "3715f226c7ed7803653fba0519bb94bfb101e9ed67f7f527fb30d05c3317cefd"
    },
    {
      "id": "zh/60_ai-agent/02.md",
      "title": "示例问题管理",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/02.md",
      "source": "zh/60_ai-agent/02.md",
      "description": "本文档详细介绍了校园领域搜索问答系统中的 问题示例 功能模块的设计与实现。该模块旨在通过智能推荐相关问题，提升用户的查询体验和系统的响应效率。本文将涵盖接口设计、数据库表结构以及相关的 Java 实现代码。 功能概述 问题示例 模块主要负责根据用户的查询上下文，智能地推荐相关的问题，帮助用户快速找到所需信息。具体功能包",
      "keywords": [],
      "status": "document",
      "sha256": "de4aa6d81f4da347fb5cb5358f41063a338418442e01120717ad363b01f0f45d"
    },
    {
      "id": "zh/60_ai-agent/03.md",
      "title": "会话管理",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/03.md",
      "source": "zh/60_ai-agent/03.md",
      "description": "本文档详细介绍了校园领域搜索问答系统中的 会话管理 功能模块的设计与实现。该模块旨在有效管理用户与系统之间的对话会话，确保对话的连贯性和一致性。本文将涵盖接口设计、数据库表结构、控制器实现以及服务层实现。 功能概述 会话管理 模块主要负责以下功能： - 创建会话 ：允许用户创建新的对话会话。 - 列出会话 ：提供用户所",
      "keywords": [],
      "status": "document",
      "sha256": "7d75f46fbf670642a02f081ec09be7deef9ccc12118a2d4d4e1b05dfd9028c47"
    },
    {
      "id": "zh/60_ai-agent/04.md",
      "title": "历史记录",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/04.md",
      "source": "zh/60_ai-agent/04.md",
      "description": "本文档详细介绍了校园领域搜索问答系统中的 历史记录管理 功能模块的设计与实现。该模块旨在记录和管理用户的对话历史，支持用户查看历史记录和对特定对话内容进行点赞操作。本文将涵盖接口设计、数据库表结构、控制器实现以及服务层实现。 功能概述 历史记录管理 模块主要负责以下功能： - 查看历史记录 ：允许用户查看特定会话的对话",
      "keywords": [],
      "status": "document",
      "sha256": "8e71b43c1fa04ab8f79365bca3e24324a620355b9ee146340dacb47f96572cbd"
    },
    {
      "id": "zh/60_ai-agent/06.md",
      "title": "意图识别",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/06.md",
      "source": "zh/60_ai-agent/06.md",
      "description": "本文档详细介绍了校园领域搜索问答系统中的 意图识别与提示词生成 功能模块的设计与实现。该模块旨在通过自然语言处理技术识别用户的查询意图，并基于意图生成相应的提示词，提升系统的响应准确性和用户体验。本文将涵盖功能概述、接口设计、数据库表结构、控制器实现以及服务层实现。 功能概述 意图识别与提示词生成 模块主要负责以下功能",
      "keywords": [],
      "status": "document",
      "sha256": "ee54f3067e692e61468520bfd7ea8a6c1ff6ca0124f03fe5e17514a0455c7aa6"
    },
    {
      "id": "zh/60_ai-agent/07.md",
      "title": "智能问答",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/07.md",
      "source": "zh/60_ai-agent/07.md",
      "description": "本文档详细介绍了校园领域搜索问答系统中的 智能问答 功能模块的设计与实现。该模块旨在通过接收用户提问、校验会话合法性、问题重写、生成提示词并交由大模型推理，管理历史记录以及控制推理过程，提供高效、精准的智能问答服务。本文将涵盖功能概述、接口设计、控制器实现、服务层实现以及代码优化。 功能概述 智能问答 模块主要负责以下",
      "keywords": [],
      "status": "document",
      "sha256": "e6cbcb82c3c5604d5cbbe61f8f46fc1d537606f5f615664b2c14364dd228e887"
    },
    {
      "id": "zh/60_ai-agent/08.md",
      "title": "文件上传与解析文档",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/08.md",
      "source": "zh/60_ai-agent/08.md",
      "description": "本文档描述了如何通过文件上传接口实现文件的去重检测、上传以及内容解析，供大模型文问答系统作为上下文信息使用。内容主要分为以下几个部分： - API 设计 ：包括文件上传前的去重检测接口以及文件上传接口的说明。 - 数据库设计 ：存储上传文件基本信息的数据库表设计。 - 文件解析实现 ：针对不同类型文件的解析实现代码（P",
      "keywords": [],
      "status": "document",
      "sha256": "7f6a9420816a58a47ef93441b20e5b704a148a75d4cff365ad1f5592554851fe"
    },
    {
      "id": "zh/60_ai-agent/09.md",
      "title": "翻译",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/09.md",
      "source": "zh/60_ai-agent/09.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "620cb1a47cf877379feed3cc634956babb26cb8fb0cdceb69cf8c427cb0d7c6c"
    },
    {
      "id": "zh/60_ai-agent/10.md",
      "title": "名人搜索功能实现",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/10.md",
      "source": "zh/60_ai-agent/10.md",
      "description": "本模块主要用于根据用户输入的关键字（如姓名、机构等），调用搜索引擎 API 获取相关信息（例如 LinkedIn、社交媒体、视频等），并通过大语言模型对数据进行整理、润色与摘要，最终返回格式化的 Markdown 输出。整个流程大致包括以下步骤： 1. 提示词示例 ：定义了对用户输入的提示，指导后续信息整理和输出格式（",
      "keywords": [],
      "status": "document",
      "sha256": "5e95a5187d511f6279831b6553b654af45ef9e32f2144628a320f28ef93efaa3"
    },
    {
      "id": "zh/60_ai-agent/11.md",
      "title": "Ai studio gemini youbue 问答使用说明",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/11.md",
      "source": "zh/60_ai-agent/11.md",
      "description": "toc 生产环境不推荐使用,因为延迟太高了,每次推理的延迟都在 40s 左右 本文档介绍了 youbue 功能的工作原理及消息交互格式。该功能支持前端向后端提交包含 YouTube 视频链接和用户消息的请求，后端会将消息转换为大模型所需的消息格式并发送。以下详细描述了首次消息发送及后续追问的消息格式转换过程。 --- ",
      "keywords": [],
      "status": "document",
      "sha256": "8315d3738685223332b3138077f2a631d7ab4d2335481f5e8c8dd389797ee5b4"
    },
    {
      "id": "zh/60_ai-agent/12.md",
      "title": "自建 YouTube 字幕问答系统",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/12.md",
      "source": "zh/60_ai-agent/12.md",
      "description": "客户端调用说明已独立到 java-openai 章节： SupadataClient 获取视频字幕 。本篇保留应用接口、缓存和业务流程。 由于直接使用 Google Gemini YouTube 接口存在较高的延迟问题，因此本文介绍了一套自建 YouTube 视频问答系统的方案，通过调用第三方 supadata API",
      "keywords": [],
      "status": "document",
      "sha256": "611bff94400ee58a73968295112c632c5c0f55f870ba62bc4bcf977071e7edcf"
    },
    {
      "id": "zh/60_ai-agent/13.md",
      "title": "自建 获取 youtube 字幕服务",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/13.md",
      "source": "zh/60_ai-agent/13.md",
      "description": "https://github.com/litongjava/yt-dlp-java",
      "keywords": [],
      "status": "placeholder",
      "sha256": "e1917f0e0987ebcba76fad65defbdbe6f37486f947ec5e77b68487af5e29eb31"
    },
    {
      "id": "zh/60_ai-agent/14.md",
      "title": "使用 OpenAI ASR 实现语音识别接口（Java 后端示例）",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/14.md",
      "source": "zh/60_ai-agent/14.md",
      "description": "客户端调用说明已独立到 java-openai 章节： WhisperClient 语音识别 。本篇保留应用接口、缓存和业务流程。 toc 本文介绍如何在 Java 后端快速实现一个“上传音频文件 → 调用 OpenAI ASR（Whisper）→ 返回识别文本”的接口，并加入缓存机制避免重复识别，降低成本与延迟。 整",
      "keywords": [],
      "status": "document",
      "sha256": "092162df4df6940e86c6c5fa2f3b9c42185387d452714f88354187767d6964e3"
    },
    {
      "id": "zh/60_ai-agent/15.md",
      "title": "定向搜索",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/15.md",
      "source": "zh/60_ai-agent/15.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "3e9942ecc1048717054ea97d95ade1c6745f6cefd8116e1b8ce0ca0e000cb18e"
    },
    {
      "id": "zh/60_ai-agent/16.md",
      "title": "16",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/16.md",
      "source": "zh/60_ai-agent/16.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "58efe4f15a6b6ca7043ac01099e79c6d1239bb1c7fa57c4f78203a0530f84794"
    },
    {
      "id": "zh/60_ai-agent/17.md",
      "title": "17",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/17.md",
      "source": "zh/60_ai-agent/17.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "ad6af1fb98402a66057aa99fbcb3d1bd75f0598870a025401eb5ee45d9eff13d"
    },
    {
      "id": "zh/60_ai-agent/18.md",
      "title": "18",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/18.md",
      "source": "zh/60_ai-agent/18.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "d12bf024ce306e34eb848a5ead9726db8a869ee4ac5e22a44abb21ed278c0f0d"
    },
    {
      "id": "zh/60_ai-agent/19.md",
      "title": "在 tio-boot 应用中整合 ai-agent",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/19.md",
      "source": "zh/60_ai-agent/19.md",
      "description": "toc 本文档将介绍如何在其他 tio-boot 应用中集成 ai-agent 组件，以便复用其强大的 AI 聊天及对话能力。以下内容包含 Maven 依赖的添加、路由配置以及接口调用示例。 --- 1. 添加 Maven 依赖 在项目的 pom.xml 文件中添加如下依赖，从 Maven 仓库中引入 ai-agent",
      "keywords": [],
      "status": "document",
      "sha256": "1d55e1e71e306ab4cc1ef69c9e29b5b3d704140bd3e5e3bcf5dc917628d0e2b8"
    },
    {
      "id": "zh/60_ai-agent/20.md",
      "title": "接口文档",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/20.md",
      "source": "zh/60_ai-agent/20.md",
      "description": "本文档详细介绍了各类接口的使用说明，包括请求方式、接口路径、请求参数及响应格式。开发者可根据本说明文档快速对接接口，完成推荐问题、会话管理、推理服务、点赞操作及历史记录等功能的集成，同时还提供了通用能力接口（rewrite、file、tutor、youtube、search、advise、celebrity）的说明。 ",
      "keywords": [],
      "status": "document",
      "sha256": "a0e6be619f1a25e14a1dbfe3bb7502c45bf7058f004d11483e7f65917a7caa72"
    },
    {
      "id": "zh/60_ai-agent/21.md",
      "title": "自定义 ChatAskService",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/21.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/21.md",
      "source": "zh/60_ai-agent/21.md",
      "description": "本文将系统介绍如何在自定义 ChatAskService 的过程中，结合 LlmChatHistoryService 实现一套完整的对话业务逻辑，包括历史消息管理、上下文拼接、流式响应以及会话持久化等能力。整篇内容聚焦设计思路与实现流程，不涉及具体代码细节。 --- 精简 直接发送消息 Alt text 问答示例 一、",
      "keywords": [],
      "status": "document",
      "sha256": "36e9effd691409e5bef2128ff87d2ee2c56e846b50311f09343e1854ce5a9fde"
    },
    {
      "id": "zh/60_ai-agent/22.md",
      "title": "请求记录",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/22.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/22.md",
      "source": "zh/60_ai-agent/22.md",
      "description": "在多平台、多模型的生产系统里，稳定性问题往往不是“模型能力不行”，而是缺少一套可追溯、可统计、可告警的调用记录体系。 java-openai 通过统一的 UniChatRequest / UniChatResponse 抽象，把模型协议差异隔离在适配层；而在业务层，建议再配套一层“请求记录”能力，把每一次调用的关键要素",
      "keywords": [],
      "status": "document",
      "sha256": "6063a8add1a72b2df817ebe79574b40a398110e1105549522e0cec5676744d19"
    },
    {
      "id": "zh/60_ai-agent/23.md",
      "title": "限流和错误处理",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/23.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/23.md",
      "source": "zh/60_ai-agent/23.md",
      "description": "限流与错误处理：全局冷却、智能退避与可观测性闭环 在生产环境中，大模型调用失败的原因通常不是单点的“请求参数错误”，而是由限流、配额、网络波动、上游网关不稳定等因素叠加造成。尤其在并发场景下，如果缺少统一的限流与重试策略，系统很容易出现两类问题： 1. 失败放大 多个并发请求同时遇到 429 后各自重试，进一步触发更严",
      "keywords": [],
      "status": "document",
      "sha256": "bd46d5b1bcb64ddfcc711a7e858d2fae86dc8932f2fd0fb84848e30c7713376e"
    },
    {
      "id": "zh/60_ai-agent/24.md",
      "title": "增强检索（RAG）",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/24.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/24.md",
      "source": "zh/60_ai-agent/24.md",
      "description": "增强检索（RAG）是一种通过结合大语言模型（LLM）和外部文档资料的检索方法，用以提升问题回答的准确性和相关性。它的核心在于将传统信息检索与大语言模型的生成能力相结合，为用户提供更为丰富的答案。RAG 的实现需要依赖向量数据库、文档切片、向量化等多种技术手段。以下是对增强检索、向量数据库及其实现方法的详细说明。 什么是",
      "keywords": [],
      "status": "document",
      "sha256": "ef8aa5aecc8ca2ce3b1055f4d7fa9377a87e93af544f19895f595e6c6c4c4e2c"
    },
    {
      "id": "zh/60_ai-agent/25.md",
      "title": "结构化数据检索",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/25.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/25.md",
      "source": "zh/60_ai-agent/25.md",
      "description": "什么是结构化数据检索 结构化数据检索与文档检索（非结构化数据）的检索思路相似。不同之处在于，结构化数据检索使用的是 text-to-SQL 技术。通过将用户的自然语言输入（文本）转换为数据库查询语言（SQL），从而实现数据检索。 结构化数据检索流程 1. 数据获取 : 一般通过爬虫的形式从互联网上爬取数据。 2. 数据",
      "keywords": [],
      "status": "document",
      "sha256": "23422a88841f2c911a55ec83f7b421435ef3b0ba77c2e67398df92069e9d5f90"
    },
    {
      "id": "zh/60_ai-agent/26.md",
      "title": "AI 问答",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/26.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/26.md",
      "source": "zh/60_ai-agent/26.md",
      "description": "AI 问答 实现 AI 问答非常容易。可以通过笔者的 java-openai 库调用 OpenAI 的 Chat 接口，将用户的问题发送给 GPT 模型，GPT 模型会返回推理结果。 临时记忆 临时记忆的实现有多种方式，这里简单介绍两种方法： 1. 数据库存储对话记录 ：将用户和大模型的对话记录存入数据库中。当需要对新",
      "keywords": [],
      "status": "document",
      "sha256": "5881fbd775fdd9271dc6b239ee70d993785ada9af848a65c9b4a3a482907217e"
    },
    {
      "id": "zh/60_ai-agent/27.md",
      "title": "连接代码执行器",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/27.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/27.md",
      "source": "zh/60_ai-agent/27.md",
      "description": "为什么要连接代码执行器 大语言模型(LLM)如 ChatGPT 在许多方面表现出色,但在进行精确计算和数据处理时可能存在局限性。然而,LLM 擅长编写代码。通过将 LLM 生成的代码交给专门的代码执行器运行,我们可以结合两者的优势:LLM 的代码生成能力和执行器的计算能力。 连接代码执行器的主要优势包括: 1. 提高计",
      "keywords": [],
      "status": "document",
      "sha256": "c8e12756eb4be35ab089b5ae5f19146443c68148061be03a477b2b57e7ac4a3b"
    },
    {
      "id": "zh/60_ai-agent/28.md",
      "title": "待定",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/28.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/28.md",
      "source": "zh/60_ai-agent/28.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "c65f819aa4dc2e52b6e02a6a8fd885f798dccfac5d3064ad73259beee29d6453"
    },
    {
      "id": "zh/60_ai-agent/29.md",
      "title": "模型编程能力评测",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/29.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/29.md",
      "source": "zh/60_ai-agent/29.md",
      "description": "提示词",
      "keywords": [],
      "status": "document",
      "sha256": "1f73d4fef4f841a99647ade8bdb9b0a7afcab12f93b54ed45932a4060cce8a4f"
    },
    {
      "id": "zh/60_ai-agent/30.md",
      "title": "音频会话 SDP 示例",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/30.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/30.md",
      "source": "zh/60_ai-agent/30.md",
      "description": "以下为原有音频会话描述记录。",
      "keywords": [],
      "status": "document",
      "sha256": "5fcc74dffdfbadfc511fddf6dd44febd5883e76c2d425833fdba7abc72f79fb9"
    },
    {
      "id": "zh/60_ai-agent/assets/index.md",
      "title": "assets",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/assets/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/assets/index.md",
      "source": "zh/60_ai-agent/assets/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.png : 图片资源，用于本目录文档配图或界面示意。",
      "keywords": [],
      "status": "document",
      "sha256": "ed4c22db7f7c119f92170a41a494cbf7d3e50348e588982c2770646b536bcc7b"
    },
    {
      "id": "zh/60_ai-agent/index.md",
      "title": "60_ai-agent",
      "language": "zh-CN",
      "chapter": "zh/60_ai-agent",
      "url": "https://tio-boot.com/zh/60_ai-agent/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/60_ai-agent/index.md",
      "source": "zh/60_ai-agent/index.md",
      "description": "本章节介绍智能体应用的接口、数据库、会话、检索和业务编排。客户端 API 使用见 java-openai 。 文章目录 - 数据库设计 - 示例问题管理 - 会话管理 - 历史记录 - 意图识别 - 智能问答 - 文件上传与解析文档 - 翻译 - 名人搜索功能实现 - Ai studio gemini youbue 问",
      "keywords": [],
      "status": "document",
      "sha256": "c7df2026c30a6f8dcec801bd791a03633c6bbaa5df21278b5bfa2b7df5229fa9"
    },
    {
      "id": "zh/61_knowledge-base/00.md",
      "title": "学术论文",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/00.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/00.md",
      "source": "zh/61_knowledge-base/00.md",
      "description": "说明 ：本文是原论文示例的整理稿，文中的流程与数值举例不代表当前实现。推理、向量与 OCR 的默认模型见 默认模型 。 题目 ：基于向量检索和大语言模型的智能知识库系统设计与实现 摘要 本文介绍了一种结合向量检索技术和大语言模型的智能知识库系统的设计与实现。该系统能够将非结构化的文档数据进行识别、拆分和向量化处理，通过",
      "keywords": [],
      "status": "document",
      "sha256": "dc76c310a5792b3579f034b5c07a56b3342ceb95eb7eef108d8b51822fcd85bd"
    },
    {
      "id": "zh/61_knowledge-base/01.md",
      "title": "数据库设计",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/01.md",
      "source": "zh/61_knowledge-base/01.md",
      "description": "toc --- 数据选型 以下保留各表结构、字段解释和示例 SQL。当前部署使用 1024 维向量；历史基础表还需执行本文末尾的增量迁移。不要在已有业务库直接重建表。Windows 扩展安装见第 29 章，下面的 apt 命令仅适用于对应 Linux 环境。 - 前端 ：使用 MossKB 前端 - 后端 ：采用 Ja",
      "keywords": [],
      "status": "document",
      "sha256": "f9bfb77f571940be1fd21c688e1c36ef50b2240ef7d1645c5464306d23012296"
    },
    {
      "id": "zh/61_knowledge-base/02.md",
      "title": "用户登录实现",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/02.md",
      "source": "zh/61_knowledge-base/02.md",
      "description": "toc 本文将详细介绍一个用户认证系统的 API，包括登录、获取用户信息、获取系统配置以及注销功能。除此之外，我们还将探讨相关的代码实现，帮助开发者更好地理解和应用这些功能。 系统概述 本用户认证系统提供了一系列 API 接口，用于管理用户的登录、信息获取、系统配置查看以及注销功能。通过这些接口，开发者可以轻松集成认证",
      "keywords": [],
      "status": "document",
      "sha256": "1d8e9409ec9d3775e576e061873264b9c0653368e7789a4e9c56192e9d446188"
    },
    {
      "id": "zh/61_knowledge-base/03.md",
      "title": "模型管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/03.md",
      "source": "zh/61_knowledge-base/03.md",
      "description": "toc 接口设计 本文将详细介绍 Java MossKB 系统中模型管理的实现，包括其接口设计、后端代码实现以及整体架构。通过这一介绍，您将了解如何通过 API 进行模型的添加、更新、查询和删除，以及后端如何处理这些请求。 tio-boot 提供了一系列 RESTful API，用于管理不同提供者的模型。这些接口涵盖了",
      "keywords": [],
      "status": "document",
      "sha256": "b2d807dc8c7b459eb00ce7bcb79f3f35c0e2d68d98f59a160f211e1385aa1f82"
    },
    {
      "id": "zh/61_knowledge-base/04.md",
      "title": "知识库管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/04.md",
      "source": "zh/61_knowledge-base/04.md",
      "description": "toc 一、接口设计 1. 获取知识库列表 请求方式 ：GET 接口路径 ： /api/dataset/{pageNo}/{pageSize} 示例请求 ： 示例响应 ： 2. 创建知识库 请求方式 ：POST 接口路径 ： /api/dataset 请求体 ： 注意是 embedding mode id 示例响应 ：",
      "keywords": [],
      "status": "document",
      "sha256": "9a809b110886108382effd00e21d84a9a588b85ebf79928ddf749b5130214aad"
    },
    {
      "id": "zh/61_knowledge-base/05.md",
      "title": "文档拆分",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/05.md",
      "source": "zh/61_knowledge-base/05.md",
      "description": "当前文件检测、OCR 与解析预览由 DocumentParsingService 完成；上传分段必须保留文件 id 。当前格式、容量和策略见 多文档解析 。下文接口分析和代码片段保留为流程学习参考，可执行实现以当前 Java 源码为准。 toc 接口 POST /api/dataset/document/split 请",
      "keywords": [],
      "status": "document",
      "sha256": "25594d7cd05fba99161ca908a99794e19e24f61b6921065fe9897322936a2439"
    },
    {
      "id": "zh/61_knowledge-base/06.md",
      "title": "片段向量",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/06.md",
      "source": "zh/61_knowledge-base/06.md",
      "description": "toc 概述 片段向量化调用知识库选择的远程向量模型，当前要求返回 1024 维。为了减少向量模型的调用次数，我们将向量模型的返回结果缓存到 moss kb embedding cache 表中。以下是相关接口及代码的实现细节。 接口文档 批量处理文档向量 请求方法 : POST 请求路径 : /api/dataset",
      "keywords": [],
      "status": "document",
      "sha256": "891df8d23e4b332fc2c34b0958956d1f627ca51eeac599696233e7cd9b983456"
    },
    {
      "id": "zh/61_knowledge-base/07.md",
      "title": "命中测试",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/07.md",
      "source": "zh/61_knowledge-base/07.md",
      "description": "当前命中测试支持 embedding、keywords、blend，向量统一为 1024 维，按知识库所选模型查询。当前过滤和排序见 检索 。下文早期 SQL 和代码作为检索原理示例，不用于覆盖当前实现。 toc 本节介绍如何对文本数据集进行命中率测试，以计算用户查询和数据库中存储的文本分段之间的相似度。我们已经完成数",
      "keywords": [],
      "status": "document",
      "sha256": "3e8a108f93b987b45da2808dd434075bec5a50c6f8135c073e932b2194585e53"
    },
    {
      "id": "zh/61_knowledge-base/08.md",
      "title": "文档管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/08.md",
      "source": "zh/61_knowledge-base/08.md",
      "description": "当前文档入口会按账号及知识库检查访问权限。文件检测策略与支持格式见 29 ，分段确认必须回传解析文件 ID。下文接口分析保留作流程参考。 toc 功能概述 文档管理 功能包括以下主要操作： 1. 获取文档列表 ：根据数据集 ID 获取分页文档列表。 2. 获取单个文档详情 ：根据数据集 ID 和文档 ID 获取特定文档",
      "keywords": [],
      "status": "document",
      "sha256": "b1497ad50dcbd98a8dbcd61b3ab9258b0716fabd587781e869ecdc623a05c93c"
    },
    {
      "id": "zh/61_knowledge-base/09.md",
      "title": "片段管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/09.md",
      "source": "zh/61_knowledge-base/09.md",
      "description": "当前分段新增和编辑使用知识库关联的向量模型，并校验文档、分段与知识库的归属。下文早期实现片段用于理解接口；当前向量约束见 06 。 toc 功能概述 片段管理 功能包括以下主要操作： 1. 获取片段列表 ：根据数据集 ID 和文档 ID 分页获取片段列表。 2. 添加问题到片段 ：为指定的片段添加问题。 3. 获取片段",
      "keywords": [],
      "status": "document",
      "sha256": "6b14bb2f79a5f8bbafc49e93157c36fcab0f465dc5bcdde429652f2f2deb5b12"
    },
    {
      "id": "zh/61_knowledge-base/10.md",
      "title": "问题管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/10.md",
      "source": "zh/61_knowledge-base/10.md",
      "description": "toc 概述 在当前的功能模块中，我们已经完成了多个核心功能，包括数据库设计、用户登录、知识库管理、文件拆分、片段向量化、命中率测试、文档管理以及片段管理。这些功能为存储、管理和处理数据提供了坚实的基础。 接下来，我们将实现 问题管理 功能，该功能旨在为片段指定问题，为大模型推理提供参考依据。通过问题管理，用户可以更高",
      "keywords": [],
      "status": "document",
      "sha256": "b61a48072147ab30cc03182b066a3a12f2392b455e494230ec2e0352e14f3648"
    },
    {
      "id": "zh/61_knowledge-base/11.md",
      "title": "应用管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/11.md",
      "source": "zh/61_knowledge-base/11.md",
      "description": "toc 本文档详细介绍了应用管理模块的功能，包括已完成的核心功能、API 接口说明以及相关代码实现。旨在帮助开发者理解并有效利用应用管理功能。 应用管理概述 在我们的系统中，一个应用（Application）就是一个智能体（Agent）。应用管理模块负责创建、更新、删除和查询应用，以及管理应用相关的模型和知识库。 已完",
      "keywords": [],
      "status": "document",
      "sha256": "a40e364ddb4e5bdafc048988d85eb8eb69bb81bf058eb5bf0f3e50c7dc73872e"
    },
    {
      "id": "zh/61_knowledge-base/12.md",
      "title": "向量检索",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/12.md",
      "source": "zh/61_knowledge-base/12.md",
      "description": "toc 核心功能 本节完成: - 向量检索 ：从数据库中检索出语义相似的向量片段。 - 推理问答 ：基于搜索片段及用户问题生成自动化回答。 --- 片段搜索功能 数据传输对象 (VO) ParagraphSearchResultVo - 封装了片段搜索的结果，包括片段的基本信息及所属文档和数据集的相关信息。 - 使用 ",
      "keywords": [],
      "status": "document",
      "sha256": "b8708afecade729e2d297cd6b80dea97b5f090340290b7a45d110b9edaee2808"
    },
    {
      "id": "zh/61_knowledge-base/13.md",
      "title": "推理问答",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/13.md",
      "source": "zh/61_knowledge-base/13.md",
      "description": "当前问答调试复用应用配置、会话历史与迭代检索，检索轮次见 多轮检索 。最终生成通过 UniChatClient ，默认模型是 Gitee 的 deepseek-v4.1-flash （属 DeepSeek Flash 系列，官方平台把同系列模型 ID 写作 deepseek-flash ），见 默认模型 ；历史仅超 t",
      "keywords": [],
      "status": "document",
      "sha256": "3dc2f6ca8e48c703d6a0bfbb104ae7c4836da0924f747f92725a92d902d44de3"
    },
    {
      "id": "zh/61_knowledge-base/14.md",
      "title": "问答模块",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/14.md",
      "source": "zh/61_knowledge-base/14.md",
      "description": "toc api 接口 以下 ID、分享码及响应字段为结构示例，应替换为本次接口返回的数据；Java 接口的资源 ID 使用十进制长整型字符串。管理账号令牌与分享访客令牌分开保存。 打开问答页面例如http://127.0.0.1:3000/ui/ /chat/abe8055668fb480f会发送下面的请求和得到下面的",
      "keywords": [],
      "status": "document",
      "sha256": "fbcaa2abf28bebd8e5e2c3ac7aa09ccb0146096e0d96b7bdcc01ba446924e846"
    },
    {
      "id": "zh/61_knowledge-base/15.md",
      "title": "统计分析",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/15.md",
      "source": "zh/61_knowledge-base/15.md",
      "description": "toc 当前实现范围 官方前端的“应用 → 概览”页面用统计接口渲染四组卡片与曲线。四个官方统计接口在本项目的 Java 后端均已实现，数据取自业务表实时聚合， star num 、 trample num 、 customer added count 不再是占位值。 | 官方接口 | 路径 | 状态 | | --- ",
      "keywords": [],
      "status": "document",
      "sha256": "dfa263737e6f32d00e39bfe171e32a94184bdb40974b23a555f5ec699b4c8215"
    },
    {
      "id": "zh/61_knowledge-base/16.md",
      "title": "用户管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/16.md",
      "source": "zh/61_knowledge-base/16.md",
      "description": "toc 多用户支持 本节完成多用户功能 - 功能目标 ：支持多个用户使用系统，并按账号归属隔离私有资源，并按明确的公有模型、管理员和分享规则访问。 - 实现效果 ： - 每个用户拥有独立的知识库、文档、片段及应用配置。 - 提供用户角色和权限管理功能，确保多用户环境下的数据安全和操作灵活性。 创建、查询、编辑、启停及重",
      "keywords": [],
      "status": "document",
      "sha256": "5d7271ddf474c2c26cb523ca721803854195f1c0d58454404b56bf505822da19"
    },
    {
      "id": "zh/61_knowledge-base/17.md",
      "title": "VL模型文档解析方案和费用对比",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/17.md",
      "source": "zh/61_knowledge-base/17.md",
      "description": "本章保留早期成本估算示例，表中价格不代表当前报价，也不作为现有服务费用承诺。当前默认扫描解析为 Gitee PaddleOCR-VL-1.5，文字和结构化文档优先本地提取，见 29 。实际价格以所选平台账单与当期计费说明为准。 toc openai 大模型方案 使用 GPT-4o 与 GPT-4o Mini 模型的价格",
      "keywords": [],
      "status": "document",
      "sha256": "be9b338546e4156b4d20a42305ca6aaba5af4794949a98e816557cf2140c3aa6"
    },
    {
      "id": "zh/61_knowledge-base/18.md",
      "title": "文档解析模型实测",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/18.md",
      "source": "zh/61_knowledge-base/18.md",
      "description": "客户端接入见 GiteeClient 文档解析与图片 OCR 。本篇承接 VL模型文档解析方案和费用对比 ，记录同一份 PDF 的实测方法与结果。 豫自然资办发〔2021〕18号文档地址 https://www.modelscope.cn/datasets/litonglinux/pdf-benchmark-datas",
      "keywords": [],
      "status": "document",
      "sha256": "817367a68341b8c811b07dd34d611d06cdfbee3d1cc43c63921e056993ea0bcd"
    },
    {
      "id": "zh/61_knowledge-base/19.md",
      "title": "文档解析优化",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/19.md",
      "source": "zh/61_knowledge-base/19.md",
      "description": "toc Java MossKB 的文档解析只在需要时调用远程 OCR。PDF 先按页尝试原生文本层提取，只有无法可靠取到文字的页面才交给 Gitee 的 PaddleOCR-VL-1.5 ；图片和 DOCX 内嵌图片同样走这条路径。本地不需要部署 OCR 模型权重。 本篇说明解析策略、调用链路、缓存、限制与实测结论。部",
      "keywords": [],
      "status": "document",
      "sha256": "f743f7936ab3396844eaed645579a4af90da58ec591fb7adca0c80edee3fc9e1"
    },
    {
      "id": "zh/61_knowledge-base/20.md",
      "title": "片段汇总",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/20.md",
      "source": "zh/61_knowledge-base/20.md",
      "description": "本文介绍片段汇总的设计思路，不等同于当前问答中的会话摘要。当前实际执行的是证据核验与迭代检索；历史仅在 token 超预算时压缩，见 上下文压缩 。 toc 片段汇总 功能背景 在 RAG 系统中，向量检索对于单个问题的检索准确度较高，但在处理复杂的汇总类问题时，检索的准确度会有所下降。这是因为大模型将多个片段添加到上",
      "keywords": [],
      "status": "document",
      "sha256": "4aba6a7f9fad7742fc46c1352ca754e41ccafb6df006131e65ce1d0886eb8bb7"
    },
    {
      "id": "zh/61_knowledge-base/21.md",
      "title": "段落分块与检索",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/21.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/21.md",
      "source": "zh/61_knowledge-base/21.md",
      "description": "本章句子拆分和早期 SQL 是可选算法示例。当前应用主检索链路按知识库模型检索段落，向量为 1024 维，见 12 。不要直接将旧维度 SQL 作为当前迁移脚本。 分层向量与检索 功能背景 在 RAG 系统中，向量检索对于单个问题的检索准确度较高，但是如何拆分的段落较大再进行向量的相似度计算时 得出的相似度会较低。为了",
      "keywords": [],
      "status": "document",
      "sha256": "f8d08092a04cbb2f419a22935c9297256f3b29d2ab6b24a1df1e7db564aab089"
    },
    {
      "id": "zh/61_knowledge-base/22.md",
      "title": "多文档解析",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/22.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/22.md",
      "source": "zh/61_knowledge-base/22.md",
      "description": "toc 当前实现与接口说明 Java 后端先检测文件实际内容，再选择解析策略。当前处理 PDF、DOCX、DOC、XLS/XLSX、常用文本和 HTML、可识别图片及受限 ZIP 文档集合。不要仅凭文件扩展名决定解析方式，也不要将尚未实现的格式列为已支持。 文字 PDF 使用文本提取，扫描页使用 Gitee Paddl",
      "keywords": [],
      "status": "document",
      "sha256": "ebbe98c98bf6b9e8ed75e9b2c08136d1fb51215c381fe62c16bfc6418eb999bd"
    },
    {
      "id": "zh/61_knowledge-base/23.md",
      "title": "检索性能优化",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/23.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/23.md",
      "source": "zh/61_knowledge-base/23.md",
      "description": "本篇先给出与当前代码的核对结论，再逐项说明 已经落地 的优化及其实现，最后给出 尚未执行 的索引与分区设计。文中的分区方案是可选数据库设计示例，不是当前初始化脚本已执行的迁移；已有业务表不得直接按示例替换。当前数据库结构以 01 所述脚本为准。 toc 一、现状核对 检索链路上真正影响耗时与费用的环节有四个： 问题向量",
      "keywords": [],
      "status": "document",
      "sha256": "f119142c91354822305c991dac47e5e85cee60ab62e1d69e21c21c1e92d25315"
    },
    {
      "id": "zh/61_knowledge-base/24.md",
      "title": "对话日志",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/24.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/24.md",
      "source": "zh/61_knowledge-base/24.md",
      "description": "toc Java MossKB 把会话、问答记录、检索轨迹与压缩摘要保存在 PostgreSQL。官方前端的「对话日志」页和分享对话页直接复用这些接口：管理账号按应用查看全部会话，分享访客只读取属于自己客户端的会话，两者都要通过应用与会话归属检查。 数据结构 | 表 | 保存内容 | | --- | --- | | m",
      "keywords": [],
      "status": "document",
      "sha256": "5cd328e8a1277ad0d7165281dc5e441b7b5fb932fa64eba7d6636cffa0336e09"
    },
    {
      "id": "zh/61_knowledge-base/25.md",
      "title": "创建独立用户与账号资源管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/25.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/25.md",
      "source": "zh/61_knowledge-base/25.md",
      "description": "Java MossKB 支持管理员在同一个实例内创建本地普通账号，并复用官方前端的用户管理页面。普通账号各自登录、各自拥有知识库、应用、模型与聊天记录；管理员保留全量管理权限。本页记录该能力的接口、数据结构、前后端实现与验收结果，全部内容已在当前代码中完成。 一、功能范围 | 能力 | 状态 | 说明 | | --- ",
      "keywords": [],
      "status": "document",
      "sha256": "f097fe62f0284d77544ea23900aeb84553713702e4d10172500c100e8306d4e6"
    },
    {
      "id": "zh/61_knowledge-base/26.md",
      "title": "api 管理",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/26.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/26.md",
      "source": "zh/61_knowledge-base/26.md",
      "description": "toc 本章完成应用的 API 访问凭证管理：为应用创建 API 密钥，第三方拿着密钥就能直接调用应用的问答接口，不再依赖登录态。除应用密钥外，也提供账号级密钥的接口。前端沿用官方界面，后端接口、密钥认证与数据表在本项目中一并补齐。 一、功能范围 | 能力 | 状态 | 说明 | | --- | --- | --- |",
      "keywords": [],
      "status": "document",
      "sha256": "45070b04c7e21a11b9ab14633ba8bdb68b34145173ad2b12f5fae7395537c538"
    },
    {
      "id": "zh/61_knowledge-base/27.md",
      "title": "独立对话页",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/27.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/27.md",
      "source": "zh/61_knowledge-base/27.md",
      "description": "toc 本章说明如何把一个应用以公开链接的形式发给外部访客使用：访客打开分享地址即可直接对话，不需要注册、不需要登录，也看不到后台的任何管理入口。这条链路在代码里对应「公开访问链接 + 访客会话」，本章只讲这一条链路；对话日志的写入、检索与导出见 对话日志 。 一、这个页面是什么 应用管理里有两种「能对话的页面」，它们",
      "keywords": [],
      "status": "document",
      "sha256": "0338648a94d25bbdc337fc64903dc4e7377b053d8b9779968f34f94eee4188b4"
    },
    {
      "id": "zh/61_knowledge-base/28.md",
      "title": "嵌入第三方web系统",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/28.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/28.md",
      "source": "zh/61_knowledge-base/28.md",
      "description": "toc 本章完成应用的对外嵌入：把应用以整页 iframe、移动端 iframe 或浮窗脚本三种形式挂到别人的网站上。三种形式共用同一套公开访问链接与访客身份（见 独立对话页 ），区别只在「页面容器由谁提供、入口按钮由谁渲染」。前端沿用官方界面，浮窗脚本接口、来源白名单与每个客户端的当日提问次数由后端补齐。 一、三种嵌",
      "keywords": [],
      "status": "document",
      "sha256": "44b47d5cb6fe8764f4ac63590ba52c72dfa7214ec8492db14ea6907b71e12103"
    },
    {
      "id": "zh/61_knowledge-base/29.md",
      "title": "分段预览",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/29.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/29.md",
      "source": "zh/61_knowledge-base/29.md",
      "description": "toc 回答下方的「知识来源」只给出文档名，看不到引用内容的上下文。本章补上 分段预览 ：点一下来源里的文档卡片，弹窗按分段逐张列出该文档的全部分段，并把本次回答真正引用到的那个分段高亮出来、滚动到它的开头。核对回答时不用再跳回知识库文档页翻分段列表。 分段是知识库的最小检索单元，所以预览以分段为单位而不是把整篇文档揉",
      "keywords": [],
      "status": "document",
      "sha256": "377b2af483677f3e55439ca6208a84387d439f37a31f7acbf798e41a37084252"
    },
    {
      "id": "zh/61_knowledge-base/30.md",
      "title": "文档预览",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/30.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/30.md",
      "source": "zh/61_knowledge-base/30.md",
      "description": "toc 分段预览 解决的是「这次回答引用了哪几段」，视角停在分段上。要核对版式、盖章页、表格数字或者扫描件时，分段文本不够用：原文里的表格会被压成一行行文字，图片和印章根本不在分段里。本章补上 文档预览 ：在分段预览界面点一下 文档名称 或「 预览全文 」按钮， 新标签页 打开一个独立的文档预览页，按文件类型把文档全文",
      "keywords": [],
      "status": "document",
      "sha256": "8416fd8998d0f03a5e760c04ced499a94c370a0d28bbbdbc34e4b33df2530407"
    },
    {
      "id": "zh/61_knowledge-base/31.md",
      "title": "多轮检索",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/31.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/31.md",
      "source": "zh/61_knowledge-base/31.md",
      "description": "toc 多轮检索包含两层含义：一次提问内可以执行多个检索轮次，多轮对话里能够承接上一轮的主题。Java 实现已经包含这条链路：服务端按会话读取历史，把省略主语的追问改写为可以独立检索的问题，再按“检索 → 核验资料 → 针对缺口补检”的循环累积证据，最后把累计资料与历史一起交给推理模型生成回答。轮次轨迹、停止原因、资料",
      "keywords": [],
      "status": "document",
      "sha256": "0f147ef660e04e240961ebedea2c3f22b83b81df6e52921ed4324abe8cd0ca9f"
    },
    {
      "id": "zh/61_knowledge-base/32.md",
      "title": "上下文压缩",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/32.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/32.md",
      "source": "zh/61_knowledge-base/32.md",
      "description": "toc 多轮对话的上下文不能无限增长。把整段历史原封不动地发给推理模型，会同时带来三个问题：超出模型窗口后请求直接失败；即使没超窗口，token 费用和首字延迟也随轮数线性上涨；越早的内容越容易被长文本淹没，追问时模型反而找不到关键结论。Java MossKB 的处理方式是 持久摘要加水位的压缩 ：较早的问答合并成一段",
      "keywords": [],
      "status": "document",
      "sha256": "daf852972b094108c1451a0f6953248f91e20b00aa2283009d04d6b264f6b818"
    },
    {
      "id": "zh/61_knowledge-base/33.md",
      "title": "支持自定义模型",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/33.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/33.md",
      "source": "zh/61_knowledge-base/33.md",
      "description": "toc Java MossKB 把供应商、基础模型目录、凭据表单和参数表单统一放进 PostgreSQL，模型设置页因此可以按需扩展：接入一家新的 OpenAI 兼容平台、登记一批候选模型 ID、或者直接手填任意模型 ID，都不需要修改 Java 代码，也不需要给官方前端打补丁。生成与模型发现复用 java-opena",
      "keywords": [],
      "status": "document",
      "sha256": "130583ecc657850cf5e5f83b4c13a710844486ab35d35145fadb7a8a9142994c"
    },
    {
      "id": "zh/61_knowledge-base/34.md",
      "title": "爬取网页数据",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/34.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/34.md",
      "source": "zh/61_knowledge-base/34.md",
      "description": "toc Web 站点知识库只描述两件事：一个根地址，以及一个可选的正文选择器。后端按目录范围把站点抓下来，转成 Markdown 后按标题切成段落，逐个页面写进文档列表。抓取与向量化都在后台线程执行，创建接口立即返回，文档会随着抓取进度陆续出现，界面上的文档列表每 6 秒刷新一次，不需要等到整站抓完。 下面出现的 Ja",
      "keywords": [],
      "status": "document",
      "sha256": "045c9db969bfed2a439f238816abfffe7cf0edc61e74366e7d1efbca160fa71c"
    },
    {
      "id": "zh/61_knowledge-base/35.md",
      "title": "隔离 Python 执行环境配置",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/35.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/35.md",
      "source": "zh/61_knowledge-base/35.md",
      "description": "toc 用户代码永远不以 Java 进程的身份运行，所以这个功能必须先有一个能\"关住\"代码的执行环境。环境有两种接法，由 kb.python.runner 选择， 默认 docker ： | runner | 适用场景 | 隔离方式 | 是否需要 Docker | | --- | --- | --- | --- | |",
      "keywords": [],
      "status": "document",
      "sha256": "71ddb038584ae33b9da65ed04a0e4f6f6db1fc57810f5c4e525924cd781371b2"
    },
    {
      "id": "zh/61_knowledge-base/36.md",
      "title": "隔离 Python 执行器",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/36.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/36.md",
      "source": "zh/61_knowledge-base/36.md",
      "description": "toc 函数库里的 Python 代码由 Java 侧调度执行：鉴权、存储、参数转换、并发控制和超时都由 Java 负责，Python 只负责运行原版函数代码本身。每次调试或执行都是一次独立的执行单元，结束后不留容器、不留文件。 这样做换来的是几条很实在的好处： - 用户代码永远不以 Java 进程的身份运行。 执行环",
      "keywords": [],
      "status": "document",
      "sha256": "912bcc6b0a611c5cd8393c7b2dd644f885b5710307a63237f5d5621587477f32"
    },
    {
      "id": "zh/61_knowledge-base/37.md",
      "title": "函数库与调用接口",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/37.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/37.md",
      "source": "zh/61_knowledge-base/37.md",
      "description": "toc 函数库保存用户自己写的 Python 函数，并提供调试、语法检查、执行、导出导入和图标管理。执行环境与执行器实现分别见 隔离 Python 执行环境配置 和 隔离 Python 执行器 。 Java MossKB 的函数库与前端界面是同一套契约：列表分页、参数定义、初始化参数、内置模板、导出导入都在这一层对齐，",
      "keywords": [],
      "status": "document",
      "sha256": "80875df51fd706db868b903940f00ad83f86f578b8509262196dff8d106c8990"
    },
    {
      "id": "zh/61_knowledge-base/38.md",
      "title": "Windows 与 Linux 部署",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/38.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/38.md",
      "source": "zh/61_knowledge-base/38.md",
      "description": "toc Java MossKB 由三部分组成：PostgreSQL 保存业务数据与向量，Java 后端提供 HTTP、SSE 与静态资源接口，前端是复用官方界面的静态页面。推理、向量和 OCR 全部由远程服务完成，本机不需要加载模型权重。Windows 与 Linux 的差别只在工具链的安装方式和启动方式，数据库结构与",
      "keywords": [],
      "status": "document",
      "sha256": "afe87065c11db22fdcf7774f202941d97dc62f8ff5adadfcee2c986c308a56de"
    },
    {
      "id": "zh/61_knowledge-base/39.md",
      "title": "离线运行向量模型",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/39.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/39.md",
      "source": "zh/61_knowledge-base/39.md",
      "description": "本章节介绍如何离线运行向量模型 jina-embeddings ，并编写一个 HTTP API 服务，用于使用 Jina-embeddings-v3 模型生成文本嵌入。该服务基于 ONNX Runtime 和 Robyn 框架构建，兼容 OpenAI embedding 数据格式，并支持在 CPU 上运行。 --- 依",
      "keywords": [],
      "status": "document",
      "sha256": "9669fbfc88105a7340b65908ee89aa03ba4f9a395acead7a795a623fa06adafa"
    },
    {
      "id": "zh/61_knowledge-base/40.md",
      "title": "Milvus",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/40.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/40.md",
      "source": "zh/61_knowledge-base/40.md",
      "description": "Milvus 是可选的替代存储方案。当前 Java MossKB 的已运行检索后端是 PostgreSQL + pgvector，未将 Milvus 列为已经接通的运行路径。 toc 1. 什么是向量数据库？ 向量数据库是一种专门用于存储和查询高维向量的数据库，广泛应用于文本、语音、图像、视频等数据的存储和检索。相较于",
      "keywords": [],
      "status": "document",
      "sha256": "b8ecb43bce3489bc38c54824942f2586645bfacc5d9481a569f68184c0cab084"
    },
    {
      "id": "zh/61_knowledge-base/41.md",
      "title": "存储文件到云存储",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/41.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/41.md",
      "source": "zh/61_knowledge-base/41.md",
      "description": "toc 接下来我们完成存储文件到 S3 的功能",
      "keywords": [],
      "status": "placeholder",
      "sha256": "4030491b1f4e4aed62163ad1e4ee8338d39e8d258fa0d80bebf879d7e23fb551"
    },
    {
      "id": "zh/61_knowledge-base/42.md",
      "title": "文档解析异步化",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/42.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/42.md",
      "source": "zh/61_knowledge-base/42.md",
      "description": "toc 1. 为什么要把解析放到后台 分段预览原来是同步接口：浏览器上传文件后一直等在那里，后端把整份文档解析完再一次性返回分段。整份解析要逐页做远程 OCR，一份 35 页、12 MB 的扫描 PDF 需要几分钟到十几分钟，于是同步实现有三个绕不开的问题： - 请求线程被长时间占用。HTTP 连接、超时配置和中间的反",
      "keywords": [],
      "status": "document",
      "sha256": "90819609d81ec0e6f7b5d5a697f5f10ae3e0242006b43fe915db519bb8f82297"
    },
    {
      "id": "zh/61_knowledge-base/index.md",
      "title": "Java MossKB 知识库文档",
      "language": "zh-CN",
      "chapter": "zh/61_knowledge-base",
      "url": "https://tio-boot.com/zh/61_knowledge-base/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/61_knowledge-base/index.md",
      "source": "zh/61_knowledge-base/index.md",
      "description": "默认模型 推理、OCR 与向量都调用远程模型服务，默认值来自初始化脚本写入的两个默认模型实例。文档与查询必须使用同一个向量模型和同一维度： | 用途 | 默认模型 ID | 平台与接口 | 说明 | | --- | --- | --- | --- | | 推理与生成（最终回答、问题改写、证据核验、摘要） | deeps",
      "keywords": [],
      "status": "document",
      "sha256": "20dfddacd006a19bd7a935b962e0ddce8f061c74030e0d98e2f8c866ba39f36e"
    },
    {
      "id": "zh/62_ai-search/01.md",
      "title": "ai-search 项目简介",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/01.md",
      "source": "zh/62_ai-search/01.md",
      "description": "toc 本文档介绍了一个 AI 搜索项目的设计与实现方案，前端采用 Next.js 框架，后端基于 Java 开发。项目旨在通过整合先进的检索技术和大模型能力，提升搜索问答系统的准确度和用户体验。下文详细阐述了项目的整体流程、关键技术以及优化策略。 AI Search 流程图 --- 1. AI 搜索的标准流程 AI ",
      "keywords": [],
      "status": "document",
      "sha256": "04ae867022422be97f46240c2d352fdbd0f7017ddec4c4471c812954d2debc35"
    },
    {
      "id": "zh/62_ai-search/02.md",
      "title": "ai-search 数据库文档",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/02.md",
      "source": "zh/62_ai-search/02.md",
      "description": "本节提供了用于存储聊天历史记录的 PostgreSQL 数据库表的设计，包括表结构、字段说明及关系定义。 toc 表设计 表结构 max search chat session 表 存储所有的聊天记录的基本信息。 max search chat message 表 存储每个聊天中的消息内容及相关信息。 files 表 ",
      "keywords": [],
      "status": "document",
      "sha256": "6079b738e0bd649e8a73668997f274684a7d98ca546b4ccdce3d5b76ac6dd927"
    },
    {
      "id": "zh/62_ai-search/03.md",
      "title": "ai-search SearxNG 搜索引擎",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/03.md",
      "source": "zh/62_ai-search/03.md",
      "description": "toc SearxNG 是一个强大且注重隐私的元搜索引擎，能够汇总来自多个搜索引擎的结果而不跟踪用户活动。本指南将引导您通过 Docker 部署 SearxNG，介绍其可用的 API，并提供如何有效使用这一强大工具的见解。 --- SearxNG 简介 SearxNG 是一个开源的自托管元搜索引擎，强调用户隐私和灵活性",
      "keywords": [],
      "status": "document",
      "sha256": "d29787b50776337aa162bd259009f98bb55f11957a8865a151bbd3206bc236db"
    },
    {
      "id": "zh/62_ai-search/04.md",
      "title": "ai-search Jina Reader API",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/04.md",
      "source": "zh/62_ai-search/04.md",
      "description": "toc toc 在搜索引擎返回的结果中，通常只包含网页的标题（title）、描述（description）和 URL，而不包含网页的实际内容。为了让大模型能更好地回答用户的问题，我们需要获取网页的完整内容。Jina Reader API 正是为此目的而设计的，它可以帮助方便地读取网页的详细内容。 快速开始 请求示例 可",
      "keywords": [],
      "status": "document",
      "sha256": "88b8a93301a26a0df1f3d6dd6b57c5902eb1b987f20458407ca840c1689f42a6"
    },
    {
      "id": "zh/62_ai-search/05.md",
      "title": "ai-search Jina Search API",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/05.md",
      "source": "zh/62_ai-search/05.md",
      "description": "toc Jina Search API 将搜索引擎和内容转换功能相结合，不仅可以搜索相关网页，还能将返回的网页内容进行转换和整合，便于后续处理和大模型理解。 功能概述 - 搜索引擎： 根据用户输入的查询条件，搜索相关网页。 - 内容转换： 将搜索到的网页内容进行转换，返回易于阅读和分析的数据格式。 请求示例 可以使用 ",
      "keywords": [],
      "status": "document",
      "sha256": "749b2716bd0b26004c0bda614a2daea34682ed584d6c3f4993ba7784940e7f2b"
    },
    {
      "id": "zh/62_ai-search/06.md",
      "title": "ai-search 搜索、重排与读取内容",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/06.md",
      "source": "zh/62_ai-search/06.md",
      "description": "toc toc 本文档详细介绍了一个基于 Java 的搜索与网页爬取系统的实现过程。该系统由四个主要模块组成： 1. 搜索请求处理器 2. 搜索服务 3. AI 重排服务 4. Playwright 页面爬取服务 获取 Jina Reader API 内容读取 系统整体流程为： - 用户发送搜索请求。 - 系统调用搜索",
      "keywords": [],
      "status": "document",
      "sha256": "de4beb54a380ea5dc72788e9322b318dc38c18ef10bed017b01e72d71f7521da"
    },
    {
      "id": "zh/62_ai-search/07.md",
      "title": "ai-search PDF 文件处理",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/07.md",
      "source": "zh/62_ai-search/07.md",
      "description": "toc 本篇文档介绍了如何利用 Apache PDFBox 库对 PDF 文件进行简单处理，即从 PDF 字节数据中提取文本内容。本文主要包括依赖配置、核心代码实现以及使用示例，适用于需要快速解析 PDF 文档内容的场景。 --- 1. 项目依赖 为了使用 PDFBox 进行 PDF 文件处理，需要在 Maven 项目",
      "keywords": [],
      "status": "document",
      "sha256": "b1259bcf2485533fd4407f3e95d258862963494e911e803343beec739cc0f63c"
    },
    {
      "id": "zh/62_ai-search/08.md",
      "title": "ai-search 推理问答",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/08.md",
      "source": "zh/62_ai-search/08.md",
      "description": "toc toc 在构建搜索系统时，往往需要将检索到的文本内容与特定的提示词（Prompt）一并提交给大模型，以生成更高质量的回复。本项目在完成以下功能后，希望进一步实现将检索到的网页内容（以 Markdown 格式）+ 自定义的提示词，发送给大模型进行推理并返回结果给用户： 1. AI 搜索项目简介 2. 数据库设计 ",
      "keywords": [],
      "status": "document",
      "sha256": "4fd3a82938bd0e36d175e2b1cab6121379c7d06c06bb659d034f226aae5e5b61"
    },
    {
      "id": "zh/62_ai-search/09.md",
      "title": "Google Custom Search JSON API",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/09.md",
      "source": "zh/62_ai-search/09.md",
      "description": "toc 本篇文档旨在介绍如何利用 Google Custom Search JSON API 搜索特定网站。文档内容包括如何创建和配置可编程搜索引擎（Custom Search Engine，简称 CSE）、如何获取 API Key、如何通过 RESTful 接口发送请求，以及如何在前端页面中调用 API 并渲染搜索结",
      "keywords": [],
      "status": "document",
      "sha256": "b6be9b77459ad704af832c995cfb3e35b4c38f292dc32b78dbc28d50ee8265bd"
    },
    {
      "id": "zh/62_ai-search/10.md",
      "title": "ai-search 意图识别",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/10.md",
      "source": "zh/62_ai-search/10.md",
      "description": "toc 意图识别一共 要进行两次,问题重写前识别一次,问题重写后识别一次 意图识别的原理和需要准备的数据 引言 意图识别（Intent Recognition）是自然语言处理（NLP）中的一个重要任务。它的目标是理解用户的输入并确定其背后的意图。这在聊天机器人、虚拟助理和各种人机交互系统中尤为重要。为了实现意图识别，通",
      "keywords": [],
      "status": "document",
      "sha256": "a2624edc9bca6d040b7a3e6fda7a034cfa658327e1314bc4295da6d75a9aaf66"
    },
    {
      "id": "zh/62_ai-search/11.md",
      "title": "ai-search 问题重写",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/11.md",
      "source": "zh/62_ai-search/11.md",
      "description": "toc 什么是问题重写 问题重写：提升对话式 AI 的上下文理解能力和增加检索结果的准确性 在构建对话式 AI 系统时，一个常见的挑战是如何准确理解用户的后续问题。这些问题通常依赖于之前的对话上下文，如果直接将其用于信息检索或进一步处理，可能会导致不准确或不相关的回答。为了解决这个问题，我们可以使用一种称为\"问题重写\"",
      "keywords": [],
      "status": "document",
      "sha256": "0282d1360a0a3ce7314ef37fdaa41017747fff2431f08b2b3da9290c9c65d02e"
    },
    {
      "id": "zh/62_ai-search/12.md",
      "title": "ai-search 系统 API 接口 WebSocket 版本",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/12.md",
      "source": "zh/62_ai-search/12.md",
      "description": "toc 本文档详细描述了 AI+搜索的推理接口 目录 1. 获取模型信息 2. 获取配置信息 3. 搜索与推理 - WebSocket 连接 - 发送初始信号 - 发送消息 - 接收服务器响应 - 消息历史记录 4. 生成建议问题 5. 获取网站 Logo --- 获取模型信息 描述 获取当前 AI 模型的相关信息，包",
      "keywords": [],
      "status": "document",
      "sha256": "3bf61a6314542c7780680299ed2631b8834eb580f229707c02143d03f416bbae"
    },
    {
      "id": "zh/62_ai-search/13.md",
      "title": "ai-search 搜索代码实现 WebSocket 版本",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/13.md",
      "source": "zh/62_ai-search/13.md",
      "description": "toc 本文档详细描述了基于 WebSocket 实现的 ai-search 搜索系统的代码结构。系统主要包括以下模块： - 实体类 ：用于封装请求、响应、消息、历史记录以及网页搜索结果等数据结构。 - WebSocket 处理器 ：负责处理客户端连接、握手、消息收发以及关闭连接等操作。 - 业务服务类 ：包括消息分发",
      "keywords": [],
      "status": "document",
      "sha256": "bd10652e9466f68e8c6f6cd513b1efd7d9cbef3b55aac2c2316abf5c6f2b941d"
    },
    {
      "id": "zh/62_ai-search/14.md",
      "title": "ai-search 生成建议问",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/14.md",
      "source": "zh/62_ai-search/14.md",
      "description": "toc 简介 在现代对话系统中，为了更好地满足用户需求，常常需要根据先前的对话上下文为用户生成一些后续的建议问题（suggestions），帮助用户更深入地与大模型或搜索引擎进行交互。本文将介绍如何基于大模型来生成这些建议问，并通过示例代码演示具体的实现方法和使用流程。 --- 核心思路 1. 预设 Prompt 提前",
      "keywords": [],
      "status": "document",
      "sha256": "d37b9ea14123c3fd1740db585170d35664143bb76b3f26186a116b89b4c6b54c"
    },
    {
      "id": "zh/62_ai-search/15.md",
      "title": "ai-search 生成问题标题",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/15.md",
      "source": "zh/62_ai-search/15.md",
      "description": "toc 一、背景介绍 在问答系统或对话系统中，需要将用户的问题或请求进行简短的概括（尤其用于标题或列表显示），但同时要遵循一定的限制（如字数限制、禁用某些词）。而针对并非真正问题的情况（如纯文本写作需求或简单的招呼问候），我们又希望能够统一返回某个占位值以标识此类请求无需生成相应的短标题。 为此，我们引入了一个简单而有",
      "keywords": [],
      "status": "document",
      "sha256": "5975e62f22cfd0d4502fb65e2f2f7932e9723f54a87df1c27ff85fcd3fedc397"
    },
    {
      "id": "zh/62_ai-search/16.md",
      "title": "ai-search 历史记录",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/16.md",
      "source": "zh/62_ai-search/16.md",
      "description": "toc 本文档旨在为您的 AI+搜索 系统的历史记录功能提供详细的 API 说明和代码实现示例。通过这些 API 接口，用户可以查看所有聊天记录以及指定聊天记录的详细内容，包括聊天基本信息和消息内容。除此之外，还提供了一个辅助接口，用于方便查看向大模型发送推理数据的过程。 --- 1. API 说明 本节详细描述了用于",
      "keywords": [],
      "status": "document",
      "sha256": "4b9753cfbf9f6ff25399a5a6c67f8dfee3254bbecc06e550a4381fbe5c0e66b8"
    },
    {
      "id": "zh/62_ai-search/17.md",
      "title": "Discover API",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/17.md",
      "source": "zh/62_ai-search/17.md",
      "description": "本文档详细介绍了 /api/discover 接口的功能、返回数据结构及其实现代码，并说明了前后端交互时传递消息的处理逻辑，帮助开发人员全面了解该接口的设计思想和实现细节。 --- 1. 接口说明 - 接口地址 ： GET /api/discover - 接口功能 ：返回博客或新闻内容的列表，主要用于展示摘要信息，便于",
      "keywords": [],
      "status": "document",
      "sha256": "7c39d190d3636a3a3808116f49c2aeba97f4adfda2c849fe2971d4fecc8d1133"
    },
    {
      "id": "zh/62_ai-search/18.md",
      "title": "翻译",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/18.md",
      "source": "zh/62_ai-search/18.md",
      "description": "toc 前端发送的参数 提示词 translator prompt.txt",
      "keywords": [],
      "status": "document",
      "sha256": "8552024b84f588fab00d2ea33d9067a018a00c3fc548fa2274532d1b75044c22"
    },
    {
      "id": "zh/62_ai-search/19.md",
      "title": "Tavily Search API 文档",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/19.md",
      "source": "zh/62_ai-search/19.md",
      "description": "toc Tavily Search API 是专为 AI 智能体（例如大型语言模型，LLM）设计的搜索引擎。本文档将详细介绍该 API 的使用方式，包括搜索（search）和内容抽取（extract）接口，并提供基于 Java 的客户端封装示例及调用示例。 --- API 接口 1. Search 接口 该接口用于搜索",
      "keywords": [],
      "status": "document",
      "sha256": "b60d4560b6528a6a8a689bb10aa253deb65a7e65462c0718f7582714634161ca"
    },
    {
      "id": "zh/62_ai-search/20.md",
      "title": "对接 Tavily Search",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/20.md",
      "source": "zh/62_ai-search/20.md",
      "description": "toc 由于 Tavily Search API 能够返回更详细的内容，我们选择将 Tavily Search 作为数据问答的数据来源。下面文档介绍了如何使用 Tavily Search 获取搜索结果，并将结果用于后续的问答推理流程。本文档分为两个部分： 1. MaxSearchSearchService ：封装了对 ",
      "keywords": [],
      "status": "document",
      "sha256": "c305921502dc7588dee3a586a64b38abf7f74ca30ec54e2cffa8cea58f473941"
    },
    {
      "id": "zh/62_ai-search/21.md",
      "title": "火山引擎 DeepSeek",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/21.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/21.md",
      "source": "zh/62_ai-search/21.md",
      "description": "toc 开通火山引擎联网搜索 登录火山引擎-- 选择火山方舟 开通 deepseek r1 和 deepseek r1 联网搜索版 Alt text Alt text 添加应用,添加联网插件 Alt text Api 接入 模型请求示例 调用联网搜索版本请求示例 请求 响应",
      "keywords": [],
      "status": "document",
      "sha256": "8ff6d2055065ca6ddd0c56b913ef00aefa117276dc59970945d64cc9854187bb"
    },
    {
      "id": "zh/62_ai-search/22.md",
      "title": "对接 火山引擎 DeepSeek",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/22.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/22.md",
      "source": "zh/62_ai-search/22.md",
      "description": "toc 下面是一篇完整的文档，详细介绍了如何对接火山引擎 DeepSeek 推理 API，将其集成到问答系统中作为推理接口。文档中包含所有代码，并逐步解释各个部分的作用、调用流程和关键实现逻辑，帮助读者深入理解系统的工作原理。 --- 对接火山引擎 DeepSeek 推理 API 在本系统中，我们将火山引擎 DeepS",
      "keywords": [],
      "status": "document",
      "sha256": "7fd7c8841ad3669ce398a30bb29e51033c3e3b6cd13050de7bbebe8153d95050"
    },
    {
      "id": "zh/62_ai-search/23.md",
      "title": "ai-search 搜索代码实现 SSE 版本",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/23.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/23.md",
      "source": "zh/62_ai-search/23.md",
      "description": "toc 本文档详细说明了基于 SSE（Server-Sent Events）的实时消息传输接口及其代码实现。文中首先介绍了 SSE 接口的请求、响应及消息格式，然后逐个解析了各个关键模块的代码逻辑，包括请求处理、消息分发、搜索结果的处理、以及调用 DeepSeek 模型生成回答的过程。读者可以通过本文档了解整个系统的流",
      "keywords": [],
      "status": "document",
      "sha256": "1ea43d64d4ca02c0bd6852a45d2be08dedad8bf5679587453bfeebc3d31a4954"
    },
    {
      "id": "zh/62_ai-search/24.md",
      "title": "jar 包部署",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/24.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/24.md",
      "source": "zh/62_ai-search/24.md",
      "description": "cat .env 启动 使用 docker 启动",
      "keywords": [],
      "status": "document",
      "sha256": "9c822c1d0e1276a530242ed923a4493c132ded256ac5cf8618810f49e3838995"
    },
    {
      "id": "zh/62_ai-search/25.md",
      "title": "Docker 部署",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/25.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/25.md",
      "source": "zh/62_ai-search/25.md",
      "description": "本文档将指导在 Docker 环境下部署 Max-Search 项目的后端服务，并初始化数据库所需的环境。同时，还将介绍前端的运行方式。 toc --- 1. 安装 PostgreSQL 在部署后端前，需要准备好 PostgreSQL 数据库，并确保其支持向量扩展。 可以参阅官方文档或 tio-boot 的 Postg",
      "keywords": [],
      "status": "document",
      "sha256": "04aebd6aa420a5dcedbe15028381cc605f8aad3fda3b35fdaa127167444efe1c"
    },
    {
      "id": "zh/62_ai-search/26.md",
      "title": "爬取一个静态网站的所有数据",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/26.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/26.md",
      "source": "zh/62_ai-search/26.md",
      "description": "toc 这是一份完整的文档，对整个爬取静态网站数据的程序进行详细说明和代码组织，同时保留所有原有代码。该程序主要目标是将静态网站的所有网页数据（HTML、PDF、转换后的 Markdown 等）存入数据库，为后续使用大模型回答用户问题提供参考依据。整个项目基于 litongjava/playwright-server ",
      "keywords": [],
      "status": "document",
      "sha256": "4161950cc543ff32a7a21ae128ef52e8f597b12a22fe3e44f7dc77bdc2d45984"
    },
    {
      "id": "zh/62_ai-search/27.md",
      "title": "网页数据预处理",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/27.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/27.md",
      "source": "zh/62_ai-search/27.md",
      "description": "toc 项目背景 在采集到海量网页数据后，为了方便后续利用大模型进行问答或知识检索，需要对数据进行预处理。预处理主要包括两个层次的文本分段——首先将整个网页（Document）拆分为较大块的 Paragraph，然后再将 Paragraph 拆分为更小的 Sentence 级文本，最后利用嵌入模型生成向量数据。整个流程",
      "keywords": [],
      "status": "document",
      "sha256": "16b8c368cde9439c10efdf07c5e639d344b0aeafd718cf67f833a17e694cd61a"
    },
    {
      "id": "zh/62_ai-search/28.md",
      "title": "网页数据检索与问答流程整合",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/28.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/28.md",
      "source": "zh/62_ai-search/28.md",
      "description": "在之前的工作中，我们已经按照 java-maxkb 的标准对网页数据进行了预处理，生成了符合向量化检索要求的段落数据。接下来，可以直接基于这些预处理数据进行检索，并将检索结果整合到问答流程中，从而实现对用户问题的快速响应。 本篇文档主要介绍两部分内容： 1. 网页数据检索 ：通过调用预处理好的段落数据服务进行向量检索，",
      "keywords": [],
      "status": "document",
      "sha256": "381d671b07c4a9148362e434c9a204dff74c53cf19329eff4e8d31334b60769c"
    },
    {
      "id": "zh/62_ai-search/index.md",
      "title": "62_ai-search",
      "language": "zh-CN",
      "chapter": "zh/62_ai-search",
      "url": "https://tio-boot.com/zh/62_ai-search/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/62_ai-search/index.md",
      "source": "zh/62_ai-search/index.md",
      "description": "本目录包含 33 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《ai-search 项目简介》。 - 02.md : 文档《ai-search 数据库文档》。 - 03.md : 文档《ai-search",
      "keywords": [],
      "status": "document",
      "sha256": "1eed6db78ef08ce11d3fa7fb171af9d00a1c69ddde5706705f5f5fbb4aca1caf"
    },
    {
      "id": "zh/63_voice-agent/01.md",
      "title": "整合Gemini realtime模型",
      "language": "zh-CN",
      "chapter": "zh/63_voice-agent",
      "url": "https://tio-boot.com/zh/63_voice-agent/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/63_voice-agent/01.md",
      "source": "zh/63_voice-agent/01.md",
      "description": "本文档面向希望在 tio-boot 框架上快速接入 Gemini Live （支持实时语音问答与语音合成/转写）的 Java 开发者。内容包含：依赖与准备、整体架构、后端关键实现说明、前端示例、音频格式/协议、部署与调试建议、常见问题与扩展点。文档以已提供的实现为基础，补充说明与最佳实践，便于直接复制到工程中使用。 -",
      "keywords": [],
      "status": "document",
      "sha256": "411bc173892aa76303d72975269466c6d4206c1f61ba26c34209756868bc997c"
    },
    {
      "id": "zh/63_voice-agent/02.md",
      "title": "Voice Agent 前端接入接口文档",
      "language": "zh-CN",
      "chapter": "zh/63_voice-agent",
      "url": "https://tio-boot.com/zh/63_voice-agent/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/63_voice-agent/02.md",
      "source": "zh/63_voice-agent/02.md",
      "description": "本文档面向前端工程师，描述与后端实时语音代理的 WebSocket 协议、二进制音频格式、事件契约与接入示例。文档基于后端的桥接实现，目标是帮助前端同学快速对接并稳定播放 / 采集音频与显示转写与事件。 1 概要 连接方式：WebSocket（推荐使用 WSS） 默认路径示例： wss://{host}/api/v1/",
      "keywords": [],
      "status": "document",
      "sha256": "e31e5b09a2a90c9ea13fd00f060d758caa528a5771155595c6f5b13436c61a2f"
    },
    {
      "id": "zh/63_voice-agent/03.md",
      "title": "整合千问realtime模型",
      "language": "zh-CN",
      "chapter": "zh/63_voice-agent",
      "url": "https://tio-boot.com/zh/63_voice-agent/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/63_voice-agent/03.md",
      "source": "zh/63_voice-agent/03.md",
      "description": "tio-boot 集成 Qwen-Omni-Realtime（中国区，北京）DashScope Java SDK 接入完整文档 在 tio-boot 上 WebSocket 语音链路（浏览器 16k PCM 上行、服务端转发、浏览器播放 24k PCM 下行）的 Java 开发者， --- 1. 目标与整体架构 目标能",
      "keywords": [],
      "status": "document",
      "sha256": "d11362eb7152bd5d2b41a35d86e50661d911fe62d594d0fe39f81367bd72664e"
    },
    {
      "id": "zh/63_voice-agent/04.md",
      "title": "打断支持",
      "language": "zh-CN",
      "chapter": "zh/63_voice-agent",
      "url": "https://tio-boot.com/zh/63_voice-agent/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/63_voice-agent/04.md",
      "source": "zh/63_voice-agent/04.md",
      "description": "一、标准时序图：正常一轮播放 这是最理想的链路。 --- 正常场景下，前端应该看到的日志顺序 理想上类似这样： 注意两点： 1. assistant turn start 必须早于第一包音频 如果音频先到了，前端没有 activeAssistantTurnId ，会直接丢弃。 2. assistant turn com",
      "keywords": [],
      "status": "document",
      "sha256": "614321fffd96c2be040722fc8fbfe1e53cfce36f50dc0dacee23cb06211d61c4"
    },
    {
      "id": "zh/63_voice-agent/05.md",
      "title": "主动介入",
      "language": "zh-CN",
      "chapter": "zh/63_voice-agent",
      "url": "https://tio-boot.com/zh/63_voice-agent/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/63_voice-agent/05.md",
      "source": "zh/63_voice-agent/05.md",
      "description": "1. 目标 在实时语音场景中，用户有时会在官提问后长时间沉默。为了让对话自然推进，系统需要在用户长时间未开始回答时，主动由模型介入，引导用户继续作答、补充思路，或换一种更容易回答的方式继续交流。 本方案的目标是： 1. 在用户长时间未开始回答时自动触发主动介入。 2. 主动介入由模型自然生成，而不是后端写死固定提醒文案",
      "keywords": [],
      "status": "document",
      "sha256": "6123dcc780e785999405c75431f16d1a687c33279e3c32c9fbed025e87a7129c"
    },
    {
      "id": "zh/63_voice-agent/06.md",
      "title": "eleven labs",
      "language": "zh-CN",
      "chapter": "zh/63_voice-agent",
      "url": "https://tio-boot.com/zh/63_voice-agent/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/63_voice-agent/06.md",
      "source": "zh/63_voice-agent/06.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "7d9cb9a60fd681c9b9a3c8e689d1185aaa5d611cc5f5c586ff101a78f740386e"
    },
    {
      "id": "zh/63_voice-agent/07.md",
      "title": "基于 tio-boot + ElevenLabs 构建实时语音 Agent（支持打断与主动介入）",
      "language": "zh-CN",
      "chapter": "zh/63_voice-agent",
      "url": "https://tio-boot.com/zh/63_voice-agent/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/63_voice-agent/07.md",
      "source": "zh/63_voice-agent/07.md",
      "description": "这篇文章记录一次完整的实时语音 Agent 实践： 使用 tio-boot 作为后端 WebSocket 网关 ，对接 ElevenLabs Agents 实时语音能力 ，实现一个支持： 实时语音对话（浏览器麦克风） 中文语音输出 多轮对话 用户打断（interrupt） 主动介入（proactive interven",
      "keywords": [],
      "status": "document",
      "sha256": "12425f3a3b2ea2ae12c23bf9a44d3434e867f032e0c92862b07835993454dc74"
    },
    {
      "id": "zh/63_voice-agent/index.md",
      "title": "63_voice-agent",
      "language": "zh-CN",
      "chapter": "zh/63_voice-agent",
      "url": "https://tio-boot.com/zh/63_voice-agent/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/63_voice-agent/index.md",
      "source": "zh/63_voice-agent/index.md",
      "description": "本章节介绍语音智能体的接入与应用实现。 文章目录 - 整合Gemini realtime模型 - Voice Agent 前端接入接口文档 - 整合千问realtime模型 - 打断支持 - 主动介入 - eleven labs - 基于 tio-boot + ElevenLabs 构建实时语音 Agent（支持打断与",
      "keywords": [],
      "status": "document",
      "sha256": "58db595dd6f91be9c7aa851866c9524ca420291ea5a1fa8e3a2ee76279615617"
    },
    {
      "id": "zh/64_ai-coding/01.md",
      "title": "Cline 提示词",
      "language": "zh-CN",
      "chapter": "zh/64_ai-coding",
      "url": "https://tio-boot.com/zh/64_ai-coding/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/64_ai-coding/01.md",
      "source": "zh/64_ai-coding/01.md",
      "description": "本文档用于拆解用户与 MCP Time 工具及大模型交互的过程，同时详细说明如何使用系统提示词和各类工具。 提示词 系统提示词 首先有一个系统提示词,内容如下 bash cd C:\\Users\\Administrator\\Documents\\Cline\\MCP npx @modelcontextprotocol/cre",
      "keywords": [],
      "status": "document",
      "sha256": "87391d5be407b71e7b942564b8d9e1e6ec0a811a867a3278cb5db6b7852c7da1"
    },
    {
      "id": "zh/64_ai-coding/02.md",
      "title": "Cline 提示词-中文版本",
      "language": "zh-CN",
      "chapter": "zh/64_ai-coding",
      "url": "https://tio-boot.com/zh/64_ai-coding/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/64_ai-coding/02.md",
      "source": "zh/64_ai-coding/02.md",
      "description": "REPLACE bash cd C:\\Users\\Administrator\\Documents\\Cline\\MCP npx @modelcontextprotocol/create-server weather-server cd weather-server 安装依赖 npm install axios weath",
      "keywords": [],
      "status": "document",
      "sha256": "e82da2f672766a4d9b135aa42b91faf4dc43928c57a7edf389d0a366ed875fb8"
    },
    {
      "id": "zh/64_ai-coding/03.md",
      "title": "tio-boot 调用 Agent CLI：agent-cli-sdk",
      "language": "zh-CN",
      "chapter": "zh/64_ai-coding",
      "url": "https://tio-boot.com/zh/64_ai-coding/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/64_ai-coding/03.md",
      "source": "zh/64_ai-coding/03.md",
      "description": "toc 简介 编码 Agent（读文件、改代码、跑命令、调用 MCP 工具）通常以命令行程序的形式发布。 agent-cli-sdk 把这类 CLI 变成一个普通的 Java 依赖：SDK 以子进程启动 CLI，通过 stdin/stdout 上的 stream-json 控制协议通信，业务代码拿到的是类型化的消息和回",
      "keywords": [],
      "status": "document",
      "sha256": "9194afeec8dec0405eb97072fc9aa1612e15c55987dab0dba9bb116a2390a166"
    },
    {
      "id": "zh/64_ai-coding/index.md",
      "title": "64_ai-coding",
      "language": "zh-CN",
      "chapter": "zh/64_ai-coding",
      "url": "https://tio-boot.com/zh/64_ai-coding/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/64_ai-coding/index.md",
      "source": "zh/64_ai-coding/index.md",
      "description": "本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Cline 提示词》。 - 02.md : 文档《Cline 提示词-中文版本》。 - 03.md : 文档《tio-boot 调用 Agen",
      "keywords": [],
      "status": "document",
      "sha256": "179d4dea0498ec00d2ef3dd7ebf8a19f645d8048b2272e7f28fced770ef4a156"
    },
    {
      "id": "zh/66_java-uni-ai-server/01.md",
      "title": "语音合成系统",
      "language": "zh-CN",
      "chapter": "zh/66_java-uni-ai-server",
      "url": "https://tio-boot.com/zh/66_java-uni-ai-server/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/66_java-uni-ai-server/01.md",
      "source": "zh/66_java-uni-ai-server/01.md",
      "description": "toc 本系统旨在将输入文本转换为语音并返回 MP3 格式的音频文件。系统会自动根据输入文本的语言选择对应的语音合成引擎，并对生成的音频进行缓存，避免重复请求，从而降低资源消耗。 1. 系统简介 系统主要包含以下功能与特性： - 多语言支持： - 英文文本： 使用 OpenAi 提供的 TTS 服务进行语音合成。 - ",
      "keywords": [],
      "status": "document",
      "sha256": "1327d914fe9b633130cdbefe218b31a696a38b4f80f21c5bc8e44621ec8526f9"
    },
    {
      "id": "zh/66_java-uni-ai-server/02.md",
      "title": "Fish.audio TTS 接口说明文档与 Java 客户端封装",
      "language": "zh-CN",
      "chapter": "zh/66_java-uni-ai-server",
      "url": "https://tio-boot.com/zh/66_java-uni-ai-server/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/66_java-uni-ai-server/02.md",
      "source": "zh/66_java-uni-ai-server/02.md",
      "description": "toc 本文档详细说明了 Fish.audio TTS 接口的使用方法，并给出了完整的 Java 客户端封装示例代码，包括请求参数对象、硬编码实现的 MsgPack 转换工具、客户端调用逻辑以及测试示例。通过阅读本文档，您可以了解如何构造 msgpack 格式的请求体，如何使用 OkHttp 发起 HTTP 请求，以及",
      "keywords": [],
      "status": "document",
      "sha256": "0edeaa85e0fc9baafa791de79dd51e84641c56f3e74cbe399e3675a8941972d6"
    },
    {
      "id": "zh/66_java-uni-ai-server/03.md",
      "title": "整合 fishaudio 到 java-uni-ai-server 项目",
      "language": "zh-CN",
      "chapter": "zh/66_java-uni-ai-server",
      "url": "https://tio-boot.com/zh/66_java-uni-ai-server/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/66_java-uni-ai-server/03.md",
      "source": "zh/66_java-uni-ai-server/03.md",
      "description": "toc 本文档详细介绍了如何在项目中整合 fishaudio 语音合成服务。项目原有的 TTS（语音合成）服务支持 openai 和 volce 平台，现在新增 fishaudio 服务，方便用户选择不同的 TTS 平台。下面将逐步展示各个模块的代码及功能说明。 toc --- 1. 项目模块介绍 本次整合涉及到以下主",
      "keywords": [],
      "status": "document",
      "sha256": "3e684aee867b3a7f2a0c38ce75147e7c3938f63b0c8844b253443582ab610263"
    },
    {
      "id": "zh/66_java-uni-ai-server/04.md",
      "title": "待定",
      "language": "zh-CN",
      "chapter": "zh/66_java-uni-ai-server",
      "url": "https://tio-boot.com/zh/66_java-uni-ai-server/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/66_java-uni-ai-server/04.md",
      "source": "zh/66_java-uni-ai-server/04.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "c65f819aa4dc2e52b6e02a6a8fd885f798dccfac5d3064ad73259beee29d6453"
    },
    {
      "id": "zh/66_java-uni-ai-server/index.md",
      "title": "66_java-uni-ai-server",
      "language": "zh-CN",
      "chapter": "zh/66_java-uni-ai-server",
      "url": "https://tio-boot.com/zh/66_java-uni-ai-server/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/66_java-uni-ai-server/index.md",
      "source": "zh/66_java-uni-ai-server/index.md",
      "description": "本目录包含 5 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《语音合成系统》。 - 02.md : 文档《Fish.audio TTS 接口说明文档与 Java 客户端封装》。 - 03.md : 文档《",
      "keywords": [],
      "status": "document",
      "sha256": "5b64a31435e99851da585e9d8867578c6df85370bf2dd660580a51edc1aaf2e7"
    },
    {
      "id": "zh/67_java-llm-proxy/01.md",
      "title": "使用tio-boot搭建多模型LLM代理服务",
      "language": "zh-CN",
      "chapter": "zh/67_java-llm-proxy",
      "url": "https://tio-boot.com/zh/67_java-llm-proxy/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/67_java-llm-proxy/01.md",
      "source": "zh/67_java-llm-proxy/01.md",
      "description": "本文档介绍如何基于 tio-boot 框架快速搭建一个支持多模型的大语言模型代理服务。该代理服务将接收来自客户端的请求（包括流式和非流式模式），并通过统一接口将请求转发至OpenAI、Anthropic Claude和Google Gemini等API，同时负责将返回结果以HTTP响应或SSE（Server-Sent ",
      "keywords": [],
      "status": "document",
      "sha256": "63a7942654e92cd8d74412c5887d4c76be2a8e3986aa1aaeacd7b1f2585719e9"
    },
    {
      "id": "zh/67_java-llm-proxy/02.md",
      "title": "构建",
      "language": "zh-CN",
      "chapter": "zh/67_java-llm-proxy",
      "url": "https://tio-boot.com/zh/67_java-llm-proxy/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/67_java-llm-proxy/02.md",
      "source": "zh/67_java-llm-proxy/02.md",
      "description": "一、产物关系（先搞清楚要发几样东西） | 产物 | 文件名 | 作用 | | --- | --- | --- | | Java 内核包 ×6 | java-llm-proxy {windows,linux,darwin} {amd64,aarch64}.{zip,tar.gz} + .sha256 | 应用下载/内置的",
      "keywords": [],
      "status": "document",
      "sha256": "bbc917fb44d4877300dd534b691ce88dc9e5e745d8b46419082f044afbec5c77"
    },
    {
      "id": "zh/67_java-llm-proxy/index.md",
      "title": "67_java-llm-proxy",
      "language": "zh-CN",
      "chapter": "zh/67_java-llm-proxy",
      "url": "https://tio-boot.com/zh/67_java-llm-proxy/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/67_java-llm-proxy/index.md",
      "source": "zh/67_java-llm-proxy/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《使用tio-boot搭建多模型LLM代理服务》。",
      "keywords": [],
      "status": "document",
      "sha256": "9383815d3f45f8c61dd712e4c09b049632950346aa98f7ff896adc1f682f8643"
    },
    {
      "id": "zh/68_java-kit-server/01.md",
      "title": "Java 执行 python 代码",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/01.md",
      "source": "zh/68_java-kit-server/01.md",
      "description": "本文档介绍了如何在 Java 环境调用 Python 脚本，并最终获取图像输出。文中详细讲解了整个流程，包括使用 Python 的 Agg 后端、通过 -c 参数一次性执行命令，以及利用 Enjoy 模版引擎配合 main.py 执行用户脚本的原理。 --- 1. Java 调用 Python 代码的实现 在 Java",
      "keywords": [],
      "status": "document",
      "sha256": "6c53ae3a2cf5cf4aed5e08c9c51311dce304f0c1d8485a2fcc213e4e62f65079"
    },
    {
      "id": "zh/68_java-kit-server/02.md",
      "title": "通过大模型执行 Python 代码",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/02.md",
      "source": "zh/68_java-kit-server/02.md",
      "description": "本文档介绍如何通过大模型生成符合规范、易于维护的 Python 代码，并通过 java-kit-server-server 执行该代码。整个过程严格遵循预设的工具调用格式和步骤，以确保生成的代码既安全又高效。文档包含系统提示词、示例代码以及 Java 服务端实现的所有代码，不遗漏任何细节。 --- 1. 系统提示词 系",
      "keywords": [],
      "status": "document",
      "sha256": "6797af4557d5a80faf334b9c9b0dd1d954853fb6d615c0441c8bc0123212ab8c"
    },
    {
      "id": "zh/68_java-kit-server/03.md",
      "title": "执行 Python (Manim) 代码",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/03.md",
      "source": "zh/68_java-kit-server/03.md",
      "description": "toc 本文档介绍了基于 java-kit-server 项目环境下如何通过 Java 程序执行 Python 代码（主要用于执行 Manim 脚本）的实现方案。文档包括整体架构、工作流程说明以及完整的代码实现，确保不遗漏您提供的任何代码。 --- 1. 项目概述 该项目旨在提供一个基于 Java 后端的 Python",
      "keywords": [],
      "status": "document",
      "sha256": "265174542028492d760ffc8f217d273e0eba48fe15b6a7086eb3bb3652f1654e"
    },
    {
      "id": "zh/68_java-kit-server/04.md",
      "title": "待定",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/04.md",
      "source": "zh/68_java-kit-server/04.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "c65f819aa4dc2e52b6e02a6a8fd885f798dccfac5d3064ad73259beee29d6453"
    },
    {
      "id": "zh/68_java-kit-server/05.md",
      "title": "待定",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/05.md",
      "source": "zh/68_java-kit-server/05.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "c65f819aa4dc2e52b6e02a6a8fd885f798dccfac5d3064ad73259beee29d6453"
    },
    {
      "id": "zh/68_java-kit-server/06.md",
      "title": "待定",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/06.md",
      "source": "zh/68_java-kit-server/06.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "c65f819aa4dc2e52b6e02a6a8fd885f798dccfac5d3064ad73259beee29d6453"
    },
    {
      "id": "zh/68_java-kit-server/07.md",
      "title": "视频下载增加水印说明文档",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/07.md",
      "source": "zh/68_java-kit-server/07.md",
      "description": "toc 该功能提供了一个 HTTP 接口用于视频下载，同时在视频中增加右下角的水印。主要流程如下： 1. 客户端通过 URL 发起请求，示例如下： 请求参数说明： - path ：视频文件存储的相对或绝对路径（本例中拼接了 “.” 作为根目录）。 - text ：水印文字内容，将在视频右下角显示。 - filename",
      "keywords": [],
      "status": "document",
      "sha256": "d0b37d170c5f8d62cd818bc9c73cca084b54c343b275a78921a618c73a05a49c"
    },
    {
      "id": "zh/68_java-kit-server/08-video-size-layout.md",
      "title": "视频尺寸与布局选择",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/08-video-size-layout.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/08-video-size-layout.md",
      "source": "zh/68_java-kit-server/08-video-size-layout.md",
      "description": "首页支持按照页面语言显示生成模式，并提供尺寸、布局选择。尺寸决定视频画布比例，布局决定主要构图方式，两者可以自由组合。 请求参数 POST /api/explanation/video 的 JSON 请求增加两个可选字段，省略时保持原有横屏布局。 | 字段 | 默认值 | 可选值 | | --- | --- | ---",
      "keywords": [],
      "status": "document",
      "sha256": "81c4bde44dacf633e39d66a644ba9a3c43d68d4978db211942be38b56db97dde"
    },
    {
      "id": "zh/68_java-kit-server/09-ppt-download.md",
      "title": "视频配套 PPT 的生成、存储与下载",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/09-ppt-download.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/09-ppt-download.md",
      "source": "zh/68_java-kit-server/09-ppt-download.md",
      "description": "Manim 合成接口会将场景图片按文件名排序，每张图片生成一页幻灯片，输出 combined.pptx 。这种方式能保留视频画面的排版，方便讲解、复习和分享。幻灯片内容以图片呈现，并非可逐项编辑的文本与图形。 合成与上传 调用 GET /manim/finish ，参数包括 session id 、可选的 waterm",
      "keywords": [],
      "status": "document",
      "sha256": "952309faf0c216d001663006677fde33796a2e9ef8d6d74729d49321683a8e8b"
    },
    {
      "id": "zh/68_java-kit-server/assets/index.md",
      "title": "assets",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/assets/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/assets/index.md",
      "source": "zh/68_java-kit-server/assets/index.md",
      "description": "本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - image.png : 图片资源，用于本目录文档配图或界面示意。",
      "keywords": [],
      "status": "document",
      "sha256": "f22794d1be72608929b87e6e6dcbbd61567816805cf9fa5643d70d2abc1b79ca"
    },
    {
      "id": "zh/68_java-kit-server/index.md",
      "title": "68_java-kit-server",
      "language": "zh-CN",
      "chapter": "zh/68_java-kit-server",
      "url": "https://tio-boot.com/zh/68_java-kit-server/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/68_java-kit-server/index.md",
      "source": "zh/68_java-kit-server/index.md",
      "description": "本目录包含 10 个文件和 1 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《Java 执行 python 代码》。 - 02.md : 文档《通过大模型执行 Python 代码》。 - 03.md : 文档《执行 P",
      "keywords": [],
      "status": "document",
      "sha256": "38e8688ce4b46c395e705dc8f79e9b7a88ddabe87b77186e8b23b6966bd50df0"
    },
    {
      "id": "zh/69_tio-im/01.md",
      "title": "通讯协议文档",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/01.md",
      "source": "zh/69_tio-im/01.md",
      "description": "toc 本通讯协议旨在为即时通讯系统提供一套全面、可靠的消息传输标准。协议支持多种登录方式、消息类型及群聊功能，并包含完善的鉴权与消息重发机制，确保消息的安全与可靠传递。 --- 功能概述 本通讯协议支持以下功能： - 确认（ACK） 、 重发 、 消息序列 管理。 - 匿名登录 、 用户名密码登录 和 Token 登",
      "keywords": [],
      "status": "document",
      "sha256": "ba9b1ee4db61cc5a01b40bbb5722cf8510d438967cca185b5dba7c2d49161fa4"
    },
    {
      "id": "zh/69_tio-im/02.md",
      "title": "ChatPacket.proto 文档",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/02.md",
      "source": "zh/69_tio-im/02.md",
      "description": "toc 本文档详细描述了即时通讯系统中使用的 ChatPacket.proto 文件，该文件基于 Protocol Buffers（protobuf）定义了通讯协议中的各类消息结构和命令类型。本文档不仅对原始的 .proto 文件进行了润色和格式优化，还根据前述通讯协议的内容修复了其中的错误，确保协议的一致性和完整性。",
      "keywords": [],
      "status": "document",
      "sha256": "95c6bc0193c513b5e27456bd1e66a0d987bd44d86f56cb8b66e806a5bdfb0daf"
    },
    {
      "id": "zh/69_tio-im/03.md",
      "title": "java protobuf",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/03.md",
      "source": "zh/69_tio-im/03.md",
      "description": "toc 生成代码 解析二进制数据 使用 ChatPacket 生成和解析二进制数据的两个实例 下面是两个实例，展示如何使用 ChatPacket 类生成二进制数据并将其解析回 ChatPacket 对象。可以将这些实例直接应用到的 Java 项目中。 实例 1：生成二进制数据 在这个实例中，我们将创建一个 ChatPa",
      "keywords": [],
      "status": "document",
      "sha256": "6921313ba3e075c2c0ccdcf2f4ce8f3e8dff15fd6ce34b50b936ba63bdcddcc0"
    },
    {
      "id": "zh/69_tio-im/04.md",
      "title": "数据表设计",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/04.md",
      "source": "zh/69_tio-im/04.md",
      "description": "1. im users 用户表 2. im messages history 表 此表用于存储用户之间和群组之间交换的所有消息的历史记录，支持各种消息类型，并包含消息确认和序列化所需的字段。 表结构 字段描述 - id : 每条消息的唯一标识符。 - cmd : 表示消息类型的命令代码。 - sequence : 用于",
      "keywords": [],
      "status": "document",
      "sha256": "f120e4ba101dff2cfd7d8510232f6765528738783b5c5b2ba2ba6de8cecada2a"
    },
    {
      "id": "zh/69_tio-im/05.md",
      "title": "创建工程",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/05.md",
      "source": "zh/69_tio-im/05.md",
      "description": "框架 本项目使用 tio-boot 框架,包含的依赖如下",
      "keywords": [],
      "status": "document",
      "sha256": "00261a1be541f1e0d4a7d0e6bdfa8d849d62669f43c0a5e371cf7a1522c74bef"
    },
    {
      "id": "zh/69_tio-im/06.md",
      "title": "登录",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/06.md",
      "source": "zh/69_tio-im/06.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "87370bcb21697e2bf1307b31f4ddd12ab6d87af39d1f53527de364cd59961abb"
    },
    {
      "id": "zh/69_tio-im/07.md",
      "title": "历史消息",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/07.md",
      "source": "zh/69_tio-im/07.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "3a80375939804b2ea5874835f77ea5cef6fed90a238627841bd7b26d7be79f82"
    },
    {
      "id": "zh/69_tio-im/08.md",
      "title": "发消息",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/08.md",
      "source": "zh/69_tio-im/08.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "f484c9287e3333c7724545e909e87a14b019748addcaf5b528c4f5549d246cb8"
    },
    {
      "id": "zh/69_tio-im/index.md",
      "title": "69_tio-im",
      "language": "zh-CN",
      "chapter": "zh/69_tio-im",
      "url": "https://tio-boot.com/zh/69_tio-im/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/69_tio-im/index.md",
      "source": "zh/69_tio-im/index.md",
      "description": "本目录包含 9 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《通讯协议文档》。 - 02.md : 文档《ChatPacket.proto 文档》。 - 03.md : 文档《java protobuf》",
      "keywords": [],
      "status": "document",
      "sha256": "232762d6bda61491d3850b5e68dde3d4b574086283ff895bae6d7d8c287012d2"
    },
    {
      "id": "zh/70_tio-mail-wing/01.md",
      "title": "tio-mail-wing简介",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/01.md",
      "source": "zh/70_tio-mail-wing/01.md",
      "description": "核心目标 1. 实现邮件接收服务 (SMTP) ：能够接收来自其他邮件服务器（如 QQ、Gmail 发来的邮件）或邮件客户端（如 Foxmail、Outlook 发出的邮件）的邮件。 2. 实现邮件读取服务 (POP3/IMAP) ：允许邮件客户端（如 QQ 邮箱 App、Gmail App、Thunderbird）连",
      "keywords": [],
      "status": "document",
      "sha256": "82736905caf9b7e20fdcd0efefde5698511eb535fc860b530f44060695d1a3fb"
    },
    {
      "id": "zh/70_tio-mail-wing/02.md",
      "title": "任务1:实现POP3系统",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/02.md",
      "source": "zh/70_tio-mail-wing/02.md",
      "description": "POP3 协议详解 (Post Office Protocol version 3) POP3 是一种应用层协议，其全称为“邮局协议第3版”。顾名思义，它的工作模式非常像现实生活中的邮局信箱。 核心思想： 去邮局的信箱取信，把所有信件都拿出来带回家，然后的信箱就空了。在家阅读、整理、删除这些信件，这些操作都与邮局无关了",
      "keywords": [],
      "status": "document",
      "sha256": "8f20b6a21fb83ab72ffc9f6f74f3d0581aa0533092eca202b8d8feb5dad62a9f"
    },
    {
      "id": "zh/70_tio-mail-wing/03.md",
      "title": "使用 getmail 验证 tio-mail-wing POP3 服务",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/03.md",
      "source": "zh/70_tio-mail-wing/03.md",
      "description": "1. 简介 在完成了 tio-mail-wing 项目 POP3 服务的基础协议实现后，我们需要一个专业、健壮的客户端工具来进行全面和严格的验证。 telnet 和 curl 适用于快速的、命令级的调试，而 getmail 则是一个成熟的、遵循 RFC 规范的邮件收取工具，它能模拟真实世界中邮件客户端的完整工作流程。 ",
      "keywords": [],
      "status": "document",
      "sha256": "6047e2e281646e08b06e983a8ed9e52bc1155cb8e3c2d4386a4d7b140c473662"
    },
    {
      "id": "zh/70_tio-mail-wing/04.md",
      "title": "任务2：实现 SMTP 服务",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/04.md",
      "source": "zh/70_tio-mail-wing/04.md",
      "description": "SMTP 协议详解 (Simple Mail Transfer Protocol) SMTP，全称为“简单邮件传输协议”，是互联网上传输电子邮件的核心协议。如果说 POP3 是“收信”的协议，那么 SMTP 就是“寄信和送信”的协议。 核心思想： 写好一封信，把它投进邮筒。邮递员（的 SMTP 服务器）会收走这封信，然",
      "keywords": [],
      "status": "document",
      "sha256": "053fdd92744d6bffc26c0d25bbffc0c5c737b1bcfe8c7f1dd9f6ecfc69d746b1"
    },
    {
      "id": "zh/70_tio-mail-wing/05.md",
      "title": "数据库初始化文档",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/05.md",
      "source": "zh/70_tio-mail-wing/05.md",
      "description": "1. 文档概述 本文档为 tio-mail-wing IMAP 邮件系统项目提供完整的 PostgreSQL 数据库初始化方案。方案包含两部分： 1. 数据表结构定义 (DDL) : 创建项目所需的所有核心数据表，其设计充分考虑了 IMAP 协议的特性、数据库性能优化以及未来的可扩展性。 2. 基础数据填充 (DML)",
      "keywords": [],
      "status": "document",
      "sha256": "764a206a2e3d08070a3f68864d84c0f55d6c38e0e4b1f93b18331648c5f013cf"
    },
    {
      "id": "zh/70_tio-mail-wing/06.md",
      "title": "用户管理",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/06.md",
      "source": "zh/70_tio-mail-wing/06.md",
      "description": "1. 概述 MwUserService 是 tio-mail-wing 项目中负责处理所有用户相关业务逻辑的核心服务层组件。它的主要职责包括用户身份认证和用户信息查询，为上层应用（如 IMAP 的 LOGIN 命令处理模块）提供稳定、安全的接口。 --- 2. 服务层实现 ( MwUserService.java ) ",
      "keywords": [],
      "status": "document",
      "sha256": "1bafe21d7b9c133e136f7225651c97c2af54a435cdfd1c66d32f184eb86ba20f"
    },
    {
      "id": "zh/70_tio-mail-wing/07.md",
      "title": "邮件管理",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/07.md",
      "source": "zh/70_tio-mail-wing/07.md",
      "description": "mailbox.sql Email WhereClauseResult MailBoxService MailSaveAtom MailSaveService MailService",
      "keywords": [],
      "status": "document",
      "sha256": "a3772ac250959e63a60b27889e925bf69e7f8b1033d5f9314c4d7b583b54cdc3"
    },
    {
      "id": "zh/70_tio-mail-wing/08.md",
      "title": "任务3：实现 SMTP 服务 数据库版本",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/08.md",
      "source": "zh/70_tio-mail-wing/08.md",
      "description": "toc --- 1. 项目背景 该项目基于 TIO 框架，提供了一个完整的 SMTP 服务实现，支持以下特性： 使用 SMTP 协议处理邮件收发 支持 EHLO/HELO、AUTH LOGIN、MAIL FROM、RCPT TO、DATA、RSET、QUIT 等命令 将接收的邮件内容持久化到数据库（通过 MailSer",
      "keywords": [],
      "status": "document",
      "sha256": "84c069f86d22e6c97ee8ad0f849d4465a65f1a8b8d65c541acb1577bf0158e8d"
    },
    {
      "id": "zh/70_tio-mail-wing/09.md",
      "title": "任务4：实现 POP3 服务（数据库版本）",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/09.md",
      "source": "zh/70_tio-mail-wing/09.md",
      "description": "toc 本任务旨在基于 Tio 框架和已有的服务层（ MwUserService 、 MailService 等）实现一个支持数据库交互的 POP3 服务器。本文档介绍了各个组件的功能及配置方法，并保留了原有代码示例。 --- 项目结构 --- 配置与启动： Pop3ServerConfig 负责读取配置、创建 Tio",
      "keywords": [],
      "status": "document",
      "sha256": "4b60d7e6869fcedbba05d68cad0df860b7cf387d32d0b17ad49214fc3dac53d3"
    },
    {
      "id": "zh/70_tio-mail-wing/10.md",
      "title": "IMAP 协议",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/10.md",
      "source": "zh/70_tio-mail-wing/10.md",
      "description": "IMAP（Internet Message Access Protocol）的实现要比 POP3、SMTP 复杂得多，因为它是有状态的、功能丰富的，且响应格式多样。我们将采用“最小可用”策略，先实现主流客户端所需的核心功能，使其能够连接服务器并收发邮件。 一、IMAP 协议概述 IMAP 与 POP3 并列，是另一种主",
      "keywords": [],
      "status": "document",
      "sha256": "a4f46651f61e866409399dd3bf0e5c8e787f88772b508c9a50c04f94f263ba50"
    },
    {
      "id": "zh/70_tio-mail-wing/11.md",
      "title": "拉取多封邮件",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/11.md",
      "source": "zh/70_tio-mail-wing/11.md",
      "description": "Recent标签是在什么时候清除的 根据 RFC 3501（IMAP4rev1）中对 \\Recent 标志的定义，它并不是在第一次 SELECT 之后立即清除的，而是一个“会话级”新邮件标记，其清除时机如下： 1. 同一会话内的 SELECT/EXAMINE 不会清除它 当在同一个连接（session）里再次对同一信箱",
      "keywords": [],
      "status": "document",
      "sha256": "b15f1cbdcff9d56e0c8e810c38c1ac7562968af2288f1a8d6bb99d47a08158bb"
    },
    {
      "id": "zh/70_tio-mail-wing/12.md",
      "title": "任务5：实现 IMAP 服务（数据库版本）",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/12.md",
      "source": "zh/70_tio-mail-wing/12.md",
      "description": "toc --- 任务概述 本任务旨在基于 T-IO 框架和数据库后端，实现一个完整的 IMAP 服务。系统包含以下几部分： 1. ImapPacket ：用于表示网络数据包的简单封装。 2. ImapSessionContext ：会话级上下文，用于管理客户端状态、登录信息和当前选中邮箱。 3. ImapServerA",
      "keywords": [],
      "status": "document",
      "sha256": "5790e246aeb86e5dc10ebf8bbc3f272379e60521583cf8f691f4c56bd32bf9f3"
    },
    {
      "id": "zh/70_tio-mail-wing/13.md",
      "title": "IMAP实现讲解",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/13.md",
      "source": "zh/70_tio-mail-wing/13.md",
      "description": "toc --- 1. 邮件格式内容示例 下面展示了一封存储在数据库中的邮件原始内容示例（包括头部和正文）： Message-ID ：全局唯一标识符，由发件端或服务器生成。 Date ：邮件发送或接收时间，含时区偏移。 MIME-Version、Content-Type ：表明邮件的多媒体或字符集格式。 From/To/",
      "keywords": [],
      "status": "document",
      "sha256": "aa97b8d0078261fb4629239b27a241bda85a944f876d95cfe8f1df12f6193e64"
    },
    {
      "id": "zh/70_tio-mail-wing/14.md",
      "title": "IMAP 手动测试脚本",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/14.md",
      "source": "zh/70_tio-mail-wing/14.md",
      "description": "前提条件 IMAP 服务器已启动，监听 127.0.0.1:143 。（如端口不同，请将下面所有示例中的端口相应替换。） 已有用户 user1@tio.com ，密码为 00000000 。 本示例同时提供 telnet 和 curl 两种测试方式。 --- 一、Telnet 交互测试 1. 启动 Telnet 会话 ",
      "keywords": [],
      "status": "document",
      "sha256": "1eb83d769b9bc68bdfb7f9ab2352ed6869623cac70ee361431eb0c8d07bf7b31"
    },
    {
      "id": "zh/70_tio-mail-wing/15.md",
      "title": "IMAP 认证机制",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/15.md",
      "source": "zh/70_tio-mail-wing/15.md",
      "description": "IMAP 协议支持多种认证方式，其中最常见的是： 1. 两步验证（LOGIN） ：客户端先请求用户名，再请求密码。 2. 一步验证（PLAIN） ：客户端一次性提交用户名和密码。 下面分别介绍这两种方式的报文流程及在服务端的实现。 --- 一、两步验证（LOGIN） 报文流程 客户端发起 AUTHENTICATE LO",
      "keywords": [],
      "status": "document",
      "sha256": "e2a4b9f0e9c844d1f5503c81f7da6b32d08999d9251e405f277a36ff61ca3b9d"
    },
    {
      "id": "zh/70_tio-mail-wing/16.md",
      "title": "主动推送",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/16.md",
      "source": "zh/70_tio-mail-wing/16.md",
      "description": "服务端收到新邮件且客户端在线时,主动将邮件推送到客户端 报文 服务端再收到新邮件后向客户端发送的报文内容如下 报文讲解 是服务端在 IDLE 状态下“主动”发给客户端的无标签（untagged）通知，用来告诉客户端：当前信箱里共有 9 封邮件，其中 1 封是新近到达的。 详细来说，按照 IMAP 协议（RFC 3501",
      "keywords": [],
      "status": "document",
      "sha256": "c539c9751b5598a6a1b1370f80ae39637c36b420ab3bf70c2ff2dcecf3b3f020"
    },
    {
      "id": "zh/70_tio-mail-wing/17.md",
      "title": "namesapce",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/17.md",
      "source": "zh/70_tio-mail-wing/17.md",
      "description": "NAMESPACE 命令的作用是在 IMAP 会话中让客户端查询服务器上可用的邮箱命名空间（namespace），并获取每个命名空间对应的名称前缀（prefix）和层级分隔符（hierarchy delimiter）。具体来说，它告诉客户端： 1. 个人命名空间（Personal Namespace） 客户自己的邮箱都",
      "keywords": [],
      "status": "document",
      "sha256": "709addb2bd53d05ea0d1006efdaf0621b0aa7642d1064819daa49db6c9ab75df"
    },
    {
      "id": "zh/70_tio-mail-wing/18.md",
      "title": "CONDSTORE and QRESYNC",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/18.md",
      "source": "zh/70_tio-mail-wing/18.md",
      "description": "核心思路是利用一个全局递增的“修改序号”（mod-seq）来标记每条消息的状态变动，然后让客户端带上自己上次同步时看到的 mod-seq，仅拉取自那以后“真正变动”过的消息（新邮件、标志改动或被删除），从而避免每次都要全量扫描、也不会把旧邮件当“新邮件”再次推送。 --- 一、原理讲解 1. mod-seq（修改序号）",
      "keywords": [],
      "status": "document",
      "sha256": "54ae3bb048fa1d43f86145ee4c35093a5ba124578f931fd3cc7f49ca7739e12d"
    },
    {
      "id": "zh/70_tio-mail-wing/index.md",
      "title": "70_tio-mail-wing",
      "language": "zh-CN",
      "chapter": "zh/70_tio-mail-wing",
      "url": "https://tio-boot.com/zh/70_tio-mail-wing/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/70_tio-mail-wing/index.md",
      "source": "zh/70_tio-mail-wing/index.md",
      "description": "本目录包含 19 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-mail-wing简介》。 - 02.md : 文档《任务1:实现POP3系统》。 - 03.md : 文档《使用 getmail ",
      "keywords": [],
      "status": "document",
      "sha256": "612bd4d7e36baf22f6571606e59c4821b8f34c3bd5bc1840756fe956ecdeb749"
    },
    {
      "id": "zh/71_tio-mcp-server/01.md",
      "title": "实现 MCP Server 开发指南",
      "language": "zh-CN",
      "chapter": "zh/71_tio-mcp-server",
      "url": "https://tio-boot.com/zh/71_tio-mcp-server/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/71_tio-mcp-server/01.md",
      "source": "zh/71_tio-mcp-server/01.md",
      "description": "本文系统性讲解如何基于 tio-boot 从零实现一个符合 MCP（Model Context Protocol） 的 Server，并通过 SSE（Server-Sent Events） 与 MCP Client（如 openai-mcp）完成真实协议交互。文末保留了 完整代码 与 完整抓包协议内容 ，便于对照实现细",
      "keywords": [],
      "status": "document",
      "sha256": "ecc4b7938409ff163cc8273397d1a50d7056230b2dab787579ce654b4305b71d"
    },
    {
      "id": "zh/71_tio-mcp-server/08.md",
      "title": "MCP 协议",
      "language": "zh-CN",
      "chapter": "zh/71_tio-mcp-server",
      "url": "https://tio-boot.com/zh/71_tio-mcp-server/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/71_tio-mcp-server/08.md",
      "source": "zh/71_tio-mcp-server/08.md",
      "description": "参考连接 - https://www.bilibili.com/video/BV1NRQxYXEuc - https://www.bilibili.com/video/BV1AnQNYxEsy - https://www.bilibili.com/video/BV1P3XTYPEJm/",
      "keywords": [],
      "status": "document",
      "sha256": "2cb607d985548e49a2e4bfcd8772c9d3c0da8b151fa2cd253d3d95b2d99f2f04"
    },
    {
      "id": "zh/71_tio-mcp-server/11.md",
      "title": "全网首发：从零搭建 Springboot+MCP+JUnit 项目 【搭配CherryStudio】",
      "language": "zh-CN",
      "chapter": "zh/71_tio-mcp-server",
      "url": "https://tio-boot.com/zh/71_tio-mcp-server/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/71_tio-mcp-server/11.md",
      "source": "zh/71_tio-mcp-server/11.md",
      "description": "",
      "keywords": [],
      "status": "document",
      "sha256": "fd10a1b2e02b7738d52432892b8aad80bb1b35f21ae670a260bb2e4ddb6fb1b3"
    },
    {
      "id": "zh/71_tio-mcp-server/index.md",
      "title": "71_tio-mcp-server",
      "language": "zh-CN",
      "chapter": "zh/71_tio-mcp-server",
      "url": "https://tio-boot.com/zh/71_tio-mcp-server/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/71_tio-mcp-server/index.md",
      "source": "zh/71_tio-mcp-server/index.md",
      "description": "本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《实现 MCP Server 开发指南》。 - 08.md : 文档《MCP 协议》。 - 11.md : Markdown 文档。",
      "keywords": [],
      "status": "document",
      "sha256": "ea57d0cbdcc9042b1827f5add327cad9f0c2ea87e192030375f8e2f5080a9eb5"
    },
    {
      "id": "zh/72_tio-log-server/01.md",
      "title": "简介",
      "language": "zh-CN",
      "chapter": "zh/72_tio-log-server",
      "url": "https://tio-boot.com/zh/72_tio-log-server/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/72_tio-log-server/01.md",
      "source": "zh/72_tio-log-server/01.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "a2feaf51055d0f86d54fb4110c6058be0541fbe4519e271cb2ab88de0ad2f667"
    },
    {
      "id": "zh/72_tio-log-server/02.md",
      "title": "收集 docker 日志",
      "language": "zh-CN",
      "chapter": "zh/72_tio-log-server",
      "url": "https://tio-boot.com/zh/72_tio-log-server/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/72_tio-log-server/02.md",
      "source": "zh/72_tio-log-server/02.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "a69bc0c0fe8af25b31de68ef160bd4f513c69c148715d86d5221012584a6d5f1"
    },
    {
      "id": "zh/72_tio-log-server/03.md",
      "title": "入库",
      "language": "zh-CN",
      "chapter": "zh/72_tio-log-server",
      "url": "https://tio-boot.com/zh/72_tio-log-server/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/72_tio-log-server/03.md",
      "source": "zh/72_tio-log-server/03.md",
      "description": "",
      "keywords": [],
      "status": "placeholder",
      "sha256": "01033c595f47af4ad2306edc282ed50db3f1e44e6d62d074824aaa7dbfd81201"
    },
    {
      "id": "zh/72_tio-log-server/index.md",
      "title": "72_tio-log-server",
      "language": "zh-CN",
      "chapter": "zh/72_tio-log-server",
      "url": "https://tio-boot.com/zh/72_tio-log-server/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/72_tio-log-server/index.md",
      "source": "zh/72_tio-log-server/index.md",
      "description": "本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《简介》。 - 02.md : 文档《收集 docker 日志》。 - 03.md : 文档《入库》。",
      "keywords": [],
      "status": "document",
      "sha256": "2cfb7dbe542a8b16a4184044f6fb4bf66d4aa3ebd3ceb61851982b22e4b14274"
    },
    {
      "id": "zh/73_tio-sip/01.md",
      "title": "SIP Server 第一版原理说明",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/01.md",
      "source": "zh/73_tio-sip/01.md",
      "description": "toc 1. 目标 这一版系统的目标不是做一个完整的运营级 SIP 平台，而是先把最小链路跑通： 1. 监听 SIP TCP 5060 和 SIP UDP 5060 2. 接收终端发来的 INVITE 3. 从本地动态分配一个 RTP 端口 4. 返回带 SDP answer 的 200 OK 5. 等待对端发送 AC",
      "keywords": [],
      "status": "document",
      "sha256": "a162264f605e7063e5b4c101a3208e348e76e5f25a873291b11a6bfc518c5889"
    },
    {
      "id": "zh/73_tio-sip/02.md",
      "title": "SIP Server 第一版实战",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/02.md",
      "source": "zh/73_tio-sip/02.md",
      "description": "1. 文档目标 本文介绍如何使用 tio-core 框架实现一个最小可运行的 SIP Echo 服务。 这个服务的目标不是做一个完整的 SIP 平台，而是先打通一条最关键的语音链路： 1. 服务端同时监听 SIP TCP 5060 和 SIP UDP 5060 2. 终端发起 INVITE 3. 服务端解析 SIP 和",
      "keywords": [],
      "status": "document",
      "sha256": "6ef01d376ee8590f6286ea3e2954596effa5d7a63d0b931bd9e5a1bccb2cf895"
    },
    {
      "id": "zh/73_tio-sip/03.md",
      "title": "一、Windows 平台测试",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/03.md",
      "source": "zh/73_tio-sip/03.md",
      "description": "SIP 通话测试说明 本文档说明如何在 Windows、macOS 和 Android 平台上使用 SIP 软电话客户端进行基本的通话测试。测试目标是验证客户端是否能够通过指定的 SIP 地址发起呼叫。 测试使用示例地址： 该地址表示： 用户： 1001 服务器： 192.168.3.211 端口： 5060 协议： ",
      "keywords": [],
      "status": "document",
      "sha256": "1b51bc30f38b3e9a666fefca1ecbad0e62340ab7f3a767cf1a6c752901552774"
    },
    {
      "id": "zh/73_tio-sip/04.md",
      "title": "SIP Server 第二版实战",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/04.md",
      "source": "zh/73_tio-sip/04.md",
      "description": "可以这么描述。 背景 当前项目基于 tio-core 自研了一个轻量级 SIP Server，用来承接语音呼叫接入，并为后续语音机器人、ASR/TTS、LLM 实时对话打基础。 第一版已经完成了最小链路验证，核心能力包括： 监听 SIP TCP 5060 和 SIP UDP 5060 收到 INVITE 后分配动态 R",
      "keywords": [],
      "status": "document",
      "sha256": "817ff432536a2885e6f1bd3d0b44494eff9f6c3e40c2bd88613a7918f38f5339"
    },
    {
      "id": "zh/73_tio-sip/05.md",
      "title": "SIP Server 第三版实战",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/05.md",
      "source": "zh/73_tio-sip/05.md",
      "description": "可以这样描述第三版本。 背景 在前两个版本的基础上，SIP Server 已经逐步从“可跑通的最小 demo”演进为“具备基本协议能力的语音接入服务”。 第一版主要解决的是链路验证问题，完成了： SIP TCP/UDP 5060 接入 INVITE 建链 动态 RTP 端口分配 200 OK + SDP 返回 RTP ",
      "keywords": [],
      "status": "document",
      "sha256": "9d3a3b03b0c70aeea49d867d782ff19f17e6a8c6ca208e85006a32a99fc04040"
    },
    {
      "id": "zh/73_tio-sip/06.md",
      "title": "性能优化",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/06.md",
      "source": "zh/73_tio-sip/06.md",
      "description": "把 整个 CallSessionManager 优化成更高性能版本（避免 getByLocalRtpPort 的 O(n) 扫描，适合高并发 SIP server） 修改前 优化后 优化版本2",
      "keywords": [],
      "status": "document",
      "sha256": "72b07932dc099d4b08beb3c33fe289f36b88cc9befd3bb9a3d0fad56f64b2088"
    },
    {
      "id": "zh/73_tio-sip/07.md",
      "title": "基于 MediaProcessor 对接 Realtime 模型说明",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/07.md",
      "source": "zh/73_tio-sip/07.md",
      "description": "1. 系统整体流程 SIP Server 已经实现了完整的语音通话链路： 1. SIP 建立通话 2. SDP 协商音频 codec（PCMU / PCMA） 3. RTP 接收语音数据 4. 解码为 PCM 音频 5. 交给 MediaProcessor 处理 6. 处理后的音频重新编码为 RTP 7. 回发给通话对",
      "keywords": [],
      "status": "document",
      "sha256": "f5e4de130774eec9f32f23d5c98ababf4a3b0c04281bae75221a8c824acad0df"
    },
    {
      "id": "zh/73_tio-sip/08.md",
      "title": "对接大语言模型",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/08.md",
      "source": "zh/73_tio-sip/08.md",
      "description": "背景 原来的 SIP Server 已经把通话底座全部打通了，SIP 建链、SDP 协商、RTP 收发、G711 编解码这些底层能力都已经稳定存在。系统里真正留给业务扩展的点只有一个，就是 MediaProcessor 。默认实现只是把收到的音频原样返回，所以表现出来就是回声。现在要做的事情，是把这个“回声处理器”替换",
      "keywords": [],
      "status": "document",
      "sha256": "3051d69487cb2249ebaf248d363a3f8349ec9691c317b66a4db03bd63414113e"
    },
    {
      "id": "zh/73_tio-sip/09.md",
      "title": "支持 G722 宽带语音",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/09.md",
      "source": "zh/73_tio-sip/09.md",
      "description": "一、背景 当前项目基于 tio-core 自研了一套轻量级 SIP Server，用于承接语音呼叫接入，并为后续语音机器人、ASR、TTS、Realtime LLM 对话等能力提供底层通话链路。 在前几个阶段中，系统已经逐步完成了以下能力建设： 第一阶段：最小链路打通 第一版主要完成了 SIP 和 RTP 的基础连通性",
      "keywords": [],
      "status": "document",
      "sha256": "e48917c452a1534159d7d7c0afe987c62b52b4675ba57312ba4a054c580a177e"
    },
    {
      "id": "zh/73_tio-sip/10.md",
      "title": "G722编码和解码",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/10.md",
      "source": "zh/73_tio-sip/10.md",
      "description": "一、背景 在前面的几轮演进中，当前项目已经完成了从 SIP 建链、SDP 协商、RTP 收发，到 MediaProcessor 媒体处理抽象，再到 Realtime 模型桥接的一整套基础能力建设。整体架构已经具备“电话接入 → 音频处理 → 模型交互 → RTP 回发”的完整闭环。 不过，在 codec 支持层面，系统",
      "keywords": [],
      "status": "document",
      "sha256": "547d48c4bee06d3d5cf155a213de89651a82bab355f6d98a154aef9a511a6d88"
    },
    {
      "id": "zh/73_tio-sip/11.md",
      "title": "会话级采样率转换",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/11.md",
      "source": "zh/73_tio-sip/11.md",
      "description": "一、背景 在上一篇中，系统已经完成了 G722Codec 的接入，并基于 java-media-codec 为 RTP 层补齐了 G722 的实际编码和解码能力。到这一步，当前项目在 codec 维度上已经不再局限于 PCMU / PCMA 两种 G.711 窄带语音，而是具备了在 SDP 协商成功后进入 16k 宽带",
      "keywords": [],
      "status": "document",
      "sha256": "4b67c1aa27906785a382acc620fa06cae78c0b45908ebe6e89f064817552bb86"
    },
    {
      "id": "zh/73_tio-sip/13.md",
      "title": "增加 9196 回声测试分机",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/13.md",
      "source": "zh/73_tio-sip/13.md",
      "description": "一、背景 当前项目基于 tio-core 自研了一套轻量级 SIP Server，用于承接语音呼叫接入，并为后续语音机器人、ASR、TTS、Realtime LLM 对话等能力提供底层通话链路。 在前面的几个阶段中，系统已经逐步完成了以下能力： SIP TCP / UDP 监听 INVITE / ACK / BYE 基",
      "keywords": [],
      "status": "document",
      "sha256": "cee4121ca61ee19d3ff50096d15dd256f0f5ca9e5954339af61d4d3c86d581c9"
    },
    {
      "id": "zh/73_tio-sip/14.md",
      "title": "语音系统链路说明",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/14.md",
      "source": "zh/73_tio-sip/14.md",
      "description": "在 AI 电话系统中，音频通常会经过多个模块处理。 一个典型的语音处理链路如下： 该链路表示：电话网络使用 8k 语音 ，而 AI 模型通常使用 更高采样率 的音频进行处理，因此系统需要在不同阶段进行 采样率转换（Resample） 。 整个流程可以分为三个主要阶段： 1. 电话网络接入阶段 2. AI 模型处理阶段 ",
      "keywords": [],
      "status": "document",
      "sha256": "a7f39d83c4e19fe2d176a7362ddb86762122ba52a435b65968358962d0bcf82b"
    },
    {
      "id": "zh/73_tio-sip/15.md",
      "title": "一、Gemini Realtime 的打断机制",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/15.md",
      "source": "zh/73_tio-sip/15.md",
      "description": "当用户先提问，模型开始语音回答；在模型语音还没播完时，用户再次说话，希望“插话”或“打断”；但模型没有马上停下当前语音，而是继续把原来的语音输出完，或者至少继续输出一段。这就导致用户和模型同时说话，交互体验像“抢话”。 这个现象通常叫： 1. barge-in failure 也就是“插话失败”或“打断失败” 可以，这",
      "keywords": [],
      "status": "document",
      "sha256": "bfc43a54ec36dd6a36cd821a05bbc27c14aeeb5be4ad1c19113e66425926d3bf"
    },
    {
      "id": "zh/73_tio-sip/index.md",
      "title": "73_tio-sip",
      "language": "zh-CN",
      "chapter": "zh/73_tio-sip",
      "url": "https://tio-boot.com/zh/73_tio-sip/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/73_tio-sip/index.md",
      "source": "zh/73_tio-sip/index.md",
      "description": "本目录包含 16 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《SIP Server 第一版原理说明》。 - 02.md : 文档《SIP Server 第一版实战》。 - 03.md : 文档《一、Wi",
      "keywords": [],
      "status": "document",
      "sha256": "1e73ecdcc646a4e2b8c84f1ceca2b9c5db56d70093ffbbd7c43a7c9037e2b24c"
    },
    {
      "id": "zh/74_tio-boot-admin/01.md",
      "title": "入门指南：使用框架内置配置",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/01.md",
      "source": "zh/74_tio-boot-admin/01.md",
      "description": "tio-boot-admin 是基于 tio-boot 的后台管理中间层，封装了数据库配置、登录处理器、鉴权拦截器和 ApiTable 通用表接口。接入项目时，调用这些配置类，再添加项目自己的业务代码即可。 本章以 Java 21、tio-boot-admin、PostgreSQL 为例，代码使用 nexus.io 包",
      "keywords": [],
      "status": "document",
      "sha256": "5a98a50fbd8bec5e42070da1946c914df3a8429e15d73d76da2ee195be2db6ba"
    },
    {
      "id": "zh/74_tio-boot-admin/02.md",
      "title": "手动初始化数据库",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/02.md",
      "source": "zh/74_tio-boot-admin/02.md",
      "description": "数据库初始化由用户在数据库客户端或命令行中 手动执行 SQL 。 TioAdminDbConfiguration 只初始化连接池和 ActiveRecord，不执行本章 SQL，不创建或重置管理员。 不要在应用启动入口、 BootConfiguration 、初始化注解或请求处理中增加自动建表、自动插入账号逻辑。把 S",
      "keywords": [],
      "status": "document",
      "sha256": "637425d564c6ad61c65782953be871c4e0290706f6e1e108602c2046dfeaacdc"
    },
    {
      "id": "zh/74_tio-boot-admin/03.md",
      "title": "配置职责、生效条件与扩展边界",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/03.md",
      "source": "zh/74_tio-boot-admin/03.md",
      "description": "本章介绍 tio-boot-admin 的七个内置配置类，与 入门指南 中的基础配置及可选 Elasticsearch 接入对应。新项目应优先使用这些内置配置，只为明确的业务需求增加扩展。 1. 七个配置类分别做什么 | 配置类 | 已完成的工作 | 当前源码中的生效条件 | | --- | --- | --- | |",
      "keywords": [],
      "status": "document",
      "sha256": "9e7686d1a0e1c3cbf65920558237b417f14a9bb54512bd6c3c446ae7d61476e1"
    },
    {
      "id": "zh/74_tio-boot-admin/04.md",
      "title": "整合数据库",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/04.md",
      "source": "zh/74_tio-boot-admin/04.md",
      "description": "tio-boot-admin 通过 TioAdminDbConfiguration 初始化 Hikari 连接池和 java-db 的 ActiveRecord 插件。初始化完成后，业务代码直接使用静态 nexus.io.db.activerecord.Db ，无需重新创建连接池或保存默认 DbPro 实例。 本章以 ",
      "keywords": [],
      "status": "document",
      "sha256": "7f47b6378113e337d176dd0d7970df4a211095732023d920b62b7882703f1925"
    },
    {
      "id": "zh/74_tio-boot-admin/05.md",
      "title": "与前端集成",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/05.md",
      "source": "zh/74_tio-boot-admin/05.md",
      "description": "本章介绍 后台管理前端 及 ApiTable 组件。普通用户使用的 H5、微信小程序可以单独采用 uni-app 等技术，通过业务 API 接入同一后端。两类前端的接口权限不同，不能把后台 Token 或通用表接口直接用于普通用户页面。业务接口与联调约定见 业务 API 与 H5 / 小程序联调 。 通过上述步骤，我们",
      "keywords": [],
      "status": "document",
      "sha256": "2056bc39cf9f341c3212d9b44b4aed236a29ee977c42cd10790444a0486b19d4"
    },
    {
      "id": "zh/74_tio-boot-admin/06.md",
      "title": "文件上传",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/06.md",
      "source": "zh/74_tio-boot-admin/06.md",
      "description": "简介 本文件介绍了如何使用 Tio Boot Admin 技术栈（前端使用 tio-boot-admin-react ，后端使用 tio-boot-admin ）实现一个基于文件表单的业务功能模块。本模块支持文件上传、下载、预览以及与数据库的集成管理。 --- 数据表设计 文件信息表 系统文件上传表 存储了文件上传的详",
      "keywords": [],
      "status": "document",
      "sha256": "5ed809d7d3027ec3dd06a73f11441dbe72e3719b482f8b6ac470c6cdfb611cee"
    },
    {
      "id": "zh/74_tio-boot-admin/07.md",
      "title": "网络请求",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/07.md",
      "source": "zh/74_tio-boot-admin/07.md",
      "description": "简介 本文将介绍如何使用 React 和 Ant Design 和 tio-boot-admin-react ApiTable 组件，在表格的列中添加一个操作按钮。点击按钮后触发网络请求，网络请求成功后刷新表格。同时展示了如何增加全局的按钮，实现类似功能。 功能目标 1. 为表格每行添加一个按钮 ： - 点击按钮后发送",
      "keywords": [],
      "status": "document",
      "sha256": "1b9040cb37e6bdafc79ae152cf0a5557ba3ea80f3bfcbdee8495a4dcd27844de"
    },
    {
      "id": "zh/74_tio-boot-admin/08.md",
      "title": "单图片管理（只读模式）",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/08.md",
      "source": "zh/74_tio-boot-admin/08.md",
      "description": "本文介绍如何在 tio-boot-admin + tio-boot-admin-react 体系下，实现 单张图片的管理与展示 。 该方案仅用于 浏览与查询 ，不支持图片上传、编辑或删除操作，适用于 OCR 结果缓存、日志快照、第三方图片引用等只读业务场景。 --- 一、使用场景说明 本方案适合以下场景： 每条记录只对",
      "keywords": [],
      "status": "document",
      "sha256": "6d759548e951c83b714a7b15b5bcf5000b50cfeaf95e0586ad0d6715638b80ae"
    },
    {
      "id": "zh/74_tio-boot-admin/09.md",
      "title": "多图片管理",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/09.md",
      "source": "zh/74_tio-boot-admin/09.md",
      "description": "本文介绍如何使用 tio-boot-admin 和 tio-boot-admin-react 实现图片管理功能，包括数据库表的创建、后端文件上传配置以及前端页面的开发。 目录 1. 创建数据表 2. 配置后端支持文件上传 3. 前端实现 - 定义表格列 - 服务层处理 - 页面组件 - 配置路由 4. 显示效果 创建数",
      "keywords": [],
      "status": "document",
      "sha256": "03872eb4157eb43903bc95a1ffb7c115f9431962df034a555d839119a1642e26"
    },
    {
      "id": "zh/74_tio-boot-admin/10.md",
      "title": "布尔值管理",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/10.md",
      "source": "zh/74_tio-boot-admin/10.md",
      "description": "本文介绍在 tio-boot-admin + tio-boot-admin-react 体系下，如何对 布尔值字段（Boolean） 进行统一、规范、可查询的管理与展示。 重点说明 数据库设计、前端枚举映射、筛选能力与查询行为 ，适用于业务中存在明确“是 / 否”“命中 / 未命中”“开启 / 关闭”语义的字段场景。 ",
      "keywords": [],
      "status": "document",
      "sha256": "bdf1ac6d4a9bea0fd86438658ada6df61bc7f759667b580aca08369b70db73dd"
    },
    {
      "id": "zh/74_tio-boot-admin/11.md",
      "title": "字段联动",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/11.md",
      "source": "zh/74_tio-boot-admin/11.md",
      "description": "本章以“分类 → 子分类”为例。字典表和保存校验由业务工程实现，ApiTable 不会根据字段名自动推断联动关系。 手动创建字典表 这是 PostgreSQL 示例，parent id 使用逻辑关联，没有外键。写入与删除时须校验父记录和引用关系。表前缀按项目替换，SQL 由用户手动执行。 前端状态流程 父项改变时先清空",
      "keywords": [],
      "status": "document",
      "sha256": "6e7b108fd2756dae2e74059fe02c6f2b9f69642e5f94248daeba09aebd1d2bc4"
    },
    {
      "id": "zh/74_tio-boot-admin/12.md",
      "title": "Word 管理",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/12.md",
      "source": "zh/74_tio-boot-admin/12.md",
      "description": "Word 管理包含上传、元数据、下载和可选预览。后台表格与上传接口不等于在线 Office 编辑器；格式转换或协同编辑需单独接入。 文档元数据 以下 PostgreSQL 示例可同时管理 Word 和 PDF，由用户手动执行： file id 与 preview file id 是文件服务的逻辑关联，没有声明外键或绑定",
      "keywords": [],
      "status": "document",
      "sha256": "763626ec1592f0d994ac17207f58943befea926d24640dec10bc46efe1fd110f"
    },
    {
      "id": "zh/74_tio-boot-admin/13.md",
      "title": "PDF 管理",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/13.md",
      "source": "zh/74_tio-boot-admin/13.md",
      "description": "PDF 可沿用 Word 管理 的 app document 表，将 format 设为 pdf，无需重复建表。上传仍须验证文件类型、大小和权限。 展示方式 | 场景 | 实现 | | --- | --- | | 后台列表 | 标题、大小、时间与打开/下载按钮 | | 浏览器内置阅读器 | 打开授权地址，并提供下载回退",
      "keywords": [],
      "status": "document",
      "sha256": "f7f535937c95e2088f5b86f8a9cc18f77161bebee4bef37a7dfbc3535a701ca6"
    },
    {
      "id": "zh/74_tio-boot-admin/14.md",
      "title": "文章管理",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/14.md",
      "source": "zh/74_tio-boot-admin/14.md",
      "description": "在本文中，我们将展示如何使用 Tio Boot Admin 和 React 配合 WangEditor 来实现文章管理功能，包括文章的分类管理、创建、编辑、列表展示以及预览。以下是完整的实现步骤和代码示例。 数据表 为实现文章管理功能，需要设计两张数据表：文章分类表和文章表。 作者表 文章分类表 文章标签表 文章表 -",
      "keywords": [],
      "status": "document",
      "sha256": "b9c81af693487f0b4664de83a5477c80092f22acff01a7d32d8f249c1e0bb39b"
    },
    {
      "id": "zh/74_tio-boot-admin/15.md",
      "title": "富文本编辑器",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/15.md",
      "source": "zh/74_tio-boot-admin/15.md",
      "description": "在上一节中，我们介绍了使用 Tio Boot Admin 、 React 和 WangEditor 实现文章管理功能。本节将聚焦于富文本编辑器的功能扩展和使用，展示如何通过定制上传功能支持图片、视频和嵌入 YouTube 视频的能力。 --- 富文本编辑器组件实现 编辑器组件 ( CommonEditor.tsx ) ",
      "keywords": [],
      "status": "document",
      "sha256": "4a56c953d3fe13c0471a8f896c2d054c87bbae8ecdc8933f7030a5c5aefcb3ae"
    },
    {
      "id": "zh/74_tio-boot-admin/16.md",
      "title": "整合 Enjoy 模版引擎",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/16.md",
      "source": "zh/74_tio-boot-admin/16.md",
      "description": "本文介绍如何在 tio-boot-admin 项目中集成 Enjoy 模版引擎，并实现数据库数据渲染到前端页面。 --- 一、引入 Enjoy 模版引擎 在项目启动时，执行以下配置： 该配置会完成： 初始化 Enjoy 引擎 设置模版路径 启用模版渲染能力 --- 二、后端实现 1. Handler 编写 创建一个 H",
      "keywords": [],
      "status": "document",
      "sha256": "4120b1c573d6ae396936b526330981a1e89f3705171fa0e3c60014b00b744eef"
    },
    {
      "id": "zh/74_tio-boot-admin/17.md",
      "title": "历史可选方案：Token 存储与 Sa-Token",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/17.md",
      "source": "zh/74_tio-boot-admin/17.md",
      "description": "本文适用于需要维护旧 Sa-Token 集成的项目。当前 tio-boot-admin 默认使用框架 Token/JWT 鉴权，标准接入无需添加 Sa-Token 依赖、配置类或表。请先阅读 入门指南 和 配置职责说明 。本文保留旧版实现供参考，类名、表名与依赖需按旧项目实际版本核对；涉及 SQL 仍由用户手动执行。 ",
      "keywords": [],
      "status": "document",
      "sha256": "74abfc339900ad405bd5df7b5e8b911292d8516337f149586579b89ff60ba0ab"
    },
    {
      "id": "zh/74_tio-boot-admin/18.md",
      "title": "业务 API 与 H5 / 小程序联调",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/18.md",
      "source": "zh/74_tio-boot-admin/18.md",
      "description": "本章补充使用 tio-boot-admin （ nexus.io 包名）开发 PostgreSQL 业务项目时的接口约定和验证方法。响应格式、用户会话、业务表和第三方占位是 业务工程的实现选择，不是框架自动提供的能力 。 1. 保留后台配置，增加业务入口 继续使用 01.md 的六个内置配置调用。后台登录与 ApiTa",
      "keywords": [],
      "status": "document",
      "sha256": "67c0cbbddacbbafb77bb26b8e2dd5da284ec1b1b185f97ea8b1dcb9db2d1c8e6"
    },
    {
      "id": "zh/74_tio-boot-admin/19.md",
      "title": "方法路由与业务鉴权",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/19.md",
      "source": "zh/74_tio-boot-admin/19.md",
      "description": "本章介绍方法路由、业务鉴权拦截器及其配置方式。 tio-boot 使用 Java 8 编译， tio-boot-admin 使用 Java 21 编译；Java 版本与 Maven 组件版本是两回事。 1. 本地构建顺序 先在 t-io 根目录使用 JDK 8 执行，再在 tio-boot-admin 根目录使用 JD",
      "keywords": [],
      "status": "document",
      "sha256": "70aea432abd68d297b4466f0e372172752fb761912a377ce8905adef42c234db"
    },
    {
      "id": "zh/74_tio-boot-admin/20.md",
      "title": "整合 Redis",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/20.md",
      "source": "zh/74_tio-boot-admin/20.md",
      "description": "从连接示例到业务会话 内置配置只提供连接，不会自动将应用的内存会话迁移到 Redis。业务接入时可建立共享的会话 Service：以 JWT 的 jti 作为键的一部分，用户 ID 作为值，通过 Redis.setStr(key, seconds, value) 写入与令牌一致的有效期；鉴权时校验 JWT 后再读取会话",
      "keywords": [],
      "status": "document",
      "sha256": "704237da913d8c695a9d3033b8ff4f879f09d77268b7a694d530fcd83a129fcb"
    },
    {
      "id": "zh/74_tio-boot-admin/21.md",
      "title": "整合 Elasticsearch",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/21.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/21.md",
      "source": "zh/74_tio-boot-admin/21.md",
      "description": "从连接示例到业务检索 TioAdminElasticsearchConfig 不会自动把数据库业务表同步到 Elasticsearch。业务服务需要明确索引字段、写入时机、数据可见性与失败恢复策略： - 只索引允许公开搜索的字段，避免同步联系方式、密文或私有文件键。 - 在最外层数据库事务提交后同步，避免事务回滚后留下",
      "keywords": [],
      "status": "document",
      "sha256": "8de7cfdb3cfc97c3628d8e94e133e11a6dcb1c3fbe218cef51ba9042244a5193"
    },
    {
      "id": "zh/74_tio-boot-admin/22.md",
      "title": "后端开发规范：tio-boot、java-db 与 Kv",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/22.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/22.md",
      "source": "zh/74_tio-boot-admin/22.md",
      "description": "本文后续新增接口、重构和代码审查的基准。示例省略 import 及与说明无关的业务实现；业务对象 Kv 指 com.jfinal.kit.Kv 。文档不固定框架版本，实际能力以项目依赖和对应源码为准。 1. 总体分层 请求链路： 路由匹配 → 鉴权拦截器 → Handler → Service → Db 。应用需要复用",
      "keywords": [],
      "status": "document",
      "sha256": "d7811142c065d1464692799320b96dc88685d5f48ab5b288417e87e696b153f0"
    },
    {
      "id": "zh/74_tio-boot-admin/23.md",
      "title": "多表实现文件数据存储",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/23.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/23.md",
      "source": "zh/74_tio-boot-admin/23.md",
      "description": "1. 表的职责 图片文件存入对象存储，数据库分别保存文件元数据、业务内容和关联关系。 | 表 | 职责 | | --- | --- | | tio boot admin system upload file | 文件原名、大小、MD5、平台、Bucket、对象路径、上传人 | | demo article | 文章标题",
      "keywords": [],
      "status": "document",
      "sha256": "5bc2ebfa59d7761e0a6431de3ac2b496c8ac36b52ad83fe34c7be2eedc6dbe75"
    },
    {
      "id": "zh/74_tio-boot-admin/24.md",
      "title": "受限事项与原操作闭环",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/24.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/24.md",
      "source": "zh/74_tio-boot-admin/24.md",
      "description": "账号恢复、权利申请和人工审批适合使用显式业务命令：tio-boot-admin 提供数据库生命周期与后台登录能力，业务服务负责当前对象范围、状态版本和用途。这样可以复用框架基础设施，同时把每一次业务变更限定到可解释的动作。 选择注册入口 下面配置复用框架数据库与账号登录处理器。项目自己的事项处理器按具体 HTTP 方法",
      "keywords": [],
      "status": "document",
      "sha256": "0317c38bf517a9d42f6f1e190fcf1e310b047795c92bc05ec5758f7062226e67"
    },
    {
      "id": "zh/74_tio-boot-admin/25.md",
      "title": "具名业务后台与受控命令集成",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/25.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/25.md",
      "source": "zh/74_tio-boot-admin/25.md",
      "description": "tio-boot-admin-react 可以作为独立管理端，复用成熟的布局、表单、表格和路由能力； tio-boot-admin 负责框架账号登录，业务服务进一步关联具名自然人、当前资源权限与领域命令。这样的组合便于让多个业务模块共享登录与操作体验，同时保留每个模块的事实来源。 1. 从框架账号到业务身份 后台账号登",
      "keywords": [],
      "status": "document",
      "sha256": "fc95eff9879b572966f6c578b2614bcd0110c78789052daec369b965fd090972"
    },
    {
      "id": "zh/74_tio-boot-admin/26.md",
      "title": "固定用途查询、受控导出与删除证明",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/26.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/26.md",
      "source": "zh/74_tio-boot-admin/26.md",
      "description": "tio-boot 的显式路由、请求拦截器和 java-db 事务适合承载用途清晰的数据服务。将身份认证、对象授权、业务事实、导出交付和删除证据分开，可以让用户看懂实际结果，也方便后台按原事项继续核验。 固定查询与字段白名单 先定义少量业务查询，再为每类查询配置固定 SQL、允许的期间和返回字段。参数只提供值，不让客户端",
      "keywords": [],
      "status": "document",
      "sha256": "a08788174a507de47fbaa396d78e87f17a57a3ab2f5f2cf05e3d7999e906b506"
    },
    {
      "id": "zh/74_tio-boot-admin/27.md",
      "title": "登录与认证",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/27.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/27.md",
      "source": "zh/74_tio-boot-admin/27.md",
      "description": "本文说明 tio-boot-admin 与 tio-boot-admin-react （React + Umi）的登录联调约定。接口行为以本地后端真实 HTTP 请求的验证结果为依据；Java 示例结合仓库已有 Handler 示例整理，不替代项目已注册的内置处理器。 统一响应体让前端可以集中处理业务结果， Aop.g",
      "keywords": [],
      "status": "document",
      "sha256": "6f8b9fca5fb649b3a10895ab17b7962ae6b6ea7fd1008522fcd98371a7b106dc"
    },
    {
      "id": "zh/74_tio-boot-admin/index.md",
      "title": "74_tio-boot-admin",
      "language": "zh-CN",
      "chapter": "zh/74_tio-boot-admin",
      "url": "https://tio-boot.com/zh/74_tio-boot-admin/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/74_tio-boot-admin/index.md",
      "source": "zh/74_tio-boot-admin/index.md",
      "description": "推荐阅读顺序：01 入门指南 → 02 手动初始化数据库 → 03 配置职责 → 04 整合数据库 → 05 与前端集成 → 27 登录与认证 。 Redis 连接与字符串操作见 20：整合 Redis 。17 是历史可选方案，默认接入不需要 Sa-Token。业务联调、路由鉴权和开发规范分别见 18、19、22。 章",
      "keywords": [],
      "status": "document",
      "sha256": "eedbb3238633eea3ff348a33872929899017bc403c21a79df2a761589aa81275"
    },
    {
      "id": "zh/75_examples/01.md",
      "title": "封装 IP 查询服务",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/01.md",
      "source": "zh/75_examples/01.md",
      "description": "在互联网应用中，获取用户的地理位置信息是一项常见且重要的功能。本文将详细介绍如何封装一个基于百度 IP 查询服务的 IP 服务，包括从申请百度 API 密钥到实现完整的业务逻辑。通过本文，您将学会如何搭建一个高效、可缓存的 IP 查询服务，减少对百度 API 的调用次数，从而降低成本。 文章目的 本文旨在为开发者提供一",
      "keywords": [],
      "status": "document",
      "sha256": "e3cc42788eed033073313513ca0242a1c79262625ae0d5471843b19ff7f42d6a"
    },
    {
      "id": "zh/75_examples/02.md",
      "title": "tio-boot 案例 - 全局异常捕获与企业微信群通知",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/02.md",
      "source": "zh/75_examples/02.md",
      "description": "简介 在现代应用的开发中，稳定性和健壮性是至关重要的。生产环境中难免会遇到不可预见的异常，如何及时发现和处理这些异常是每个开发者和运维团队关心的问题。 tio-boot 作为一款轻量级高性能框架，可以通过集成企业通知服务（如企业微信、飞书等）实现对异常的实时监控和告警。本文将介绍如何在 tio-boot 框架中实现全局",
      "keywords": [],
      "status": "document",
      "sha256": "396099d3b53b5895119967fef8b4772e3634c78ccaac14d5cef886b84f89b0af"
    },
    {
      "id": "zh/75_examples/03.md",
      "title": "tio-boot 案例 - 文件上传和下载",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/03.md",
      "source": "zh/75_examples/03.md",
      "description": "添加依赖 数据表 创建一张数据表,保持上传的数据 配置文件 app.properties 启动类 配置类 实体类 常量类 - UPlOAD FOLDER NAME 保持文件上传路径 service controller 上传文件 请求示例 响应示例 - 下载文件 http://localhost/file/downlo",
      "keywords": [],
      "status": "document",
      "sha256": "4fd337a376c54ea268aee41869f7d03569361de1a25074293266867425be788f"
    },
    {
      "id": "zh/75_examples/04.md",
      "title": "tio-boot 案例 - 整合 ant design pro 增删改查",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/04.md",
      "source": "zh/75_examples/04.md",
      "description": "前端界面 data.d.ts service.ts column.tsx PostCreateForm.tsx index.tsx",
      "keywords": [],
      "status": "document",
      "sha256": "d662e9a7c07aa84462ea9456650c45546b30a38b437a96ee83ac33ccb656c29e"
    },
    {
      "id": "zh/75_examples/05.md",
      "title": "tio-boot 案例 - 流失响应",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/05.md",
      "source": "zh/75_examples/05.md",
      "description": "Introudction 使用 tio-boot 框架的 handler 组件从 openai chatgpt 获取流程响应并以流式的方法返回给客户端 使用了 tio-boot 框架，集成了与 OpenAI ChatGPT 进行交互的功能，并以服务器发送事件（Server-Sent Events, SSE）方式流式返回",
      "keywords": [],
      "status": "document",
      "sha256": "8f1b4b32843ff1bc4060b95b139f7fd2589d20b849be601a7dacccafba9ab3df"
    },
    {
      "id": "zh/75_examples/06.md",
      "title": "tio-boot 案例 - 增强检索",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/06.md",
      "source": "zh/75_examples/06.md",
      "description": "这篇文章主要介绍,如何使用 tio-boot 框架的其他相关框架完成下面的功能 - 爬取数据:编写爬虫从网页上爬取数据 - 数据入库:将爬取的数据存入数据库,这里使用 postgre 数据库 - 向量化:将入库后的数据的部分字段进行向量化并入库,方便后续搜索 - 定时任务:使用定时任务每 1 小时更新整体的数据 网页数",
      "keywords": [],
      "status": "document",
      "sha256": "c912f42a8857721e0a20dadfa0f32e9e0bef82fc53bde6e72066f8811cbffe13"
    },
    {
      "id": "zh/75_examples/07.md",
      "title": "tio-boot 案例 - 整合 function call",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/07.md",
      "source": "zh/75_examples/07.md",
      "description": "function call 简介 Function Call 的典型案例 —— 天气查询插件。 问「我明天应该穿什么？」此时 GPT 完全理解了我的问题，而且知道穿衣建议是需要了解相关天气情况的。因此它问了我在哪个城市，并且在获得该信息后，调用了天气查询插件。并基于天气查询返回的结果，告诉了我穿衣建议。 但在 GPT ",
      "keywords": [],
      "status": "document",
      "sha256": "3f5e4a376e2cef78ea6194ff6d7fefe818e70794a3e45cca4cb73253a0f68643"
    },
    {
      "id": "zh/75_examples/08.md",
      "title": "tio-boot 案例 - 定时任务 监控 PostgreSQL、Redis 和 Elasticsearch",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/08.md",
      "source": "zh/75_examples/08.md",
      "description": "背景介绍 在现代的应用程序中，服务的可靠性和稳定性至关重要。为了确保系统在出现问题时能够及时发现并采取措施，对关键服务的监控显得尤为重要。本项目使用了 Tio-boot 框架，结合 PostgreSQL、Redis 和 Elasticsearch 三个服务的监控功能，并通过 Telegram 推送报警消息，确保当服务出",
      "keywords": [],
      "status": "document",
      "sha256": "723152d7a1e6e08f8921d89865fc5b21dc99165144c5f61b5202ec2c87efc266"
    },
    {
      "id": "zh/75_examples/09.md",
      "title": "Tio-Boot 案例：使用 SQLite 整合到登录注册系统",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/09.md",
      "source": "zh/75_examples/09.md",
      "description": "本文提供了一个使用 tio-boot 将 SQLite 整合到登录和注册系统的完整指南。内容包括 HTTP API 规范、数据库设计、初始化数据、Java 实现、拦截器以及与前端的集成。 HTTP API 规范 1. 用户登录 接口 ： POST /api/login/account 请求体 ： 响应 ： 2. 获取当",
      "keywords": [],
      "status": "document",
      "sha256": "f55404e386713ca79dd5a6bf093d937a62de0c8d93bf1c28366a8c098190e533"
    },
    {
      "id": "zh/75_examples/10.md",
      "title": "tio-boot 案例 - 执行 shell 命令",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/10.md",
      "source": "zh/75_examples/10.md",
      "description": "",
      "keywords": [],
      "status": "document",
      "sha256": "11798a74436033c71074d156345b422fe19b7eb8c0ea5d4ce4d793734b027dcc"
    },
    {
      "id": "zh/75_examples/index.md",
      "title": "75_examples",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/index.md",
      "source": "zh/75_examples/index.md",
      "description": "本目录包含 11 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《封装 IP 查询服务》。 - 02.md : 文档《tio-boot 案例 - 全局异常捕获与企业微信群通知》。 - 03.md : 文档《",
      "keywords": [],
      "status": "document",
      "sha256": "6149d18b352c8e9cc816ab84d058346d54bfacc652ad850f868f8aa216e349a5"
    },
    {
      "id": "zh/76_performance/01.md",
      "title": "tio-boot 为什么运行更快：从请求链路到内存复用",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/01.md",
      "source": "zh/76_performance/01.md",
      "description": "tio-boot 的性能优势，来自网络事件处理、业务调度、请求分发和数据发送等环节对开销的控制。共享 I/O 线程处理多个连接，直接 Handler 调用保持执行路径清晰，缓冲区复用减少重复分配，连接复用和高效文件传输进一步降低通信成本。这些设计在高频短请求、长连接及文件服务中具有不同的价值。 本文结合当前实现说明这些",
      "keywords": [],
      "status": "document",
      "sha256": "008af50efba94492fc692585995a5868078ca7639ced87fcc585368c4d90a19b"
    },
    {
      "id": "zh/76_performance/02.md",
      "title": "压力测试 - tio-http-serer",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/02.md",
      "source": "zh/76_performance/02.md",
      "description": "测试方式 通过 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 Server VM ",
      "keywords": [],
      "status": "document",
      "sha256": "2af7b3203f2b40bcb7218f1e4afa48c1a51886af59a4aeb57bb55b57e91276e6"
    },
    {
      "id": "zh/76_performance/03.md",
      "title": "压力测试 - tio-boot",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/03.md",
      "source": "zh/76_performance/03.md",
      "description": "1. 测试概述 本文档主要通过 ApacheBench (ab) 和 wrk 两种工具，对基于 tio-boot ^1 搭建的本地服务器进行高并发访问压力测试，以评估其在大规模请求场景下的性能表现和稳定性。 --- 2. 环境与测试代码 代码开源地址 https://github.com/litongjava/tio-",
      "keywords": [],
      "status": "document",
      "sha256": "7cafe2f43cfc66ea3ce1352f31e2df11328b926081d5627307510dabcf6790ae"
    },
    {
      "id": "zh/76_performance/04.md",
      "title": "压力测试 - tio-boot-native",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/04.md",
      "source": "zh/76_performance/04.md",
      "description": "https://github.com/litongjava/tio-boot-http-request-handler-demo 测试结果",
      "keywords": [],
      "status": "document",
      "sha256": "3c6b716be9e435b9b0d085f95125994e254cb52b8c8a735c30470eba48e49f9b"
    },
    {
      "id": "zh/76_performance/05.md",
      "title": "压力测试 - netty-boot",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/05.md",
      "source": "zh/76_performance/05.md",
      "description": "测试代码 服务器配置 在进行性能测试之前，除了运行的 Netty 应用外，还需要确保操作系统和网络环境都做了相应的准备与调优。以下是一些常见的步骤和需要检查的配置命令： 1. 系统资源检查 - CPU 和内存 确认服务器的 CPU 核心数和内存大小，确保有足够的资源应对高并发测试。 lscpu free -m cat ",
      "keywords": [],
      "status": "document",
      "sha256": "678d99ed160e45633bcacfb440d9f3f41a87a30c0ddf2a12a7b92a299b639f2b"
    },
    {
      "id": "zh/76_performance/06.md",
      "title": "性能测试对比",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/06.md",
      "source": "zh/76_performance/06.md",
      "description": "测试数据 java-aio netty-boot tio-boot 对比分析 根据提供的测试数据，以下是 Java AIO、Netty-Boot 以及 Tio-Boot 三个 Web 中间件在 ApacheBench 压力测试下的性能分析与对比： 1. 基本性能数据 | 项目 | Java AIO | Netty-Bo",
      "keywords": [],
      "status": "document",
      "sha256": "d3012b7d9fde4cab330e7c8a998832a6e42d7a219a80178520497833100d93b2"
    },
    {
      "id": "zh/76_performance/07.md",
      "title": "TechEmpower FrameworkBenchmarks",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/07.md",
      "source": "zh/76_performance/07.md",
      "description": "测试报告",
      "keywords": [],
      "status": "document",
      "sha256": "8657d39e1bdf40a8bb30cb992f6657b3ec18bbd4a96959e77d82125186f5894f"
    },
    {
      "id": "zh/76_performance/08.md",
      "title": "压力测试 - tio-boot 12 C 32G",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/08.md",
      "source": "zh/76_performance/08.md",
      "description": "1. 测试概述 本文档主要通过 ApacheBench (ab) 和 wrk 两种工具，对基于 tio-boot ^1 搭建的本地服务器进行高并发访问压力测试，以评估其在大规模请求场景下的性能表现和稳定性。 --- 2. 环境与测试代码 代码开源地址 https://github.com/litongjava/tio-",
      "keywords": [],
      "status": "document",
      "sha256": "9cf37955366e154425222d4c88ead44ec4ce7f06e3f767c9c4227816ee6db3b2"
    },
    {
      "id": "zh/76_performance/09.md",
      "title": "HTTP/1.1 Pipelining 性能测试报告",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/09.md",
      "source": "zh/76_performance/09.md",
      "description": "本文通过使用 wrk 工具对开启和关闭 HTTP/1.1 pipeline 时服务器的性能进行对比测试。 测试环境 - 工具 : wrk - 测试地址 : http://127.0.0.1:8080/plaintext - 测试时长 : 60 秒 - 线程数 : 4 - 并发连接数 : 256 - 超时时间 : 8 秒",
      "keywords": [],
      "status": "document",
      "sha256": "179bc0296b55984e7ed1d9dba72e2fdd6730a9ccb620899fe1c09ce5f8f59d2c"
    },
    {
      "id": "zh/76_performance/10.md",
      "title": "tio-boot vs Quarkus 性能对比测试报告",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/10.md",
      "source": "zh/76_performance/10.md",
      "description": "1. 测试目的 对比 tio-boot 与 Quarkus 在相同硬件环境、相同并发模型下的 HTTP /plaintext 接口性能，重点关注： 吞吐量（Requests Per Second, RPS） 平均延迟 尾延迟（P99 / Max） 在 Keep-Alive 场景下的稳定性 该测试主要反映 网络框架与执行",
      "keywords": [],
      "status": "document",
      "sha256": "2dc7dbfd04c7559029284c30661226230e8c4edc9c38aaf48e3958fdbe512b7f"
    },
    {
      "id": "zh/76_performance/index.md",
      "title": "76_performance",
      "language": "zh-CN",
      "chapter": "zh/76_performance",
      "url": "https://tio-boot.com/zh/76_performance/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/76_performance/index.md",
      "source": "zh/76_performance/index.md",
      "description": "本目录包含性能测试报告与运行原理说明，配图位于 assets 目录。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《tio-boot 为什么运行更快：从请求链路到内存复用》，配合三张原理图介绍性能机制与验证方法。 - 02.md : 文档《压力测试 - tio-http-s",
      "keywords": [],
      "status": "document",
      "sha256": "824ed99cf7a12e4cbcafb04fba41938ef1ea8ae95d266539584fae87e1e2a5e0"
    },
    {
      "id": "zh/77_internals/01.md",
      "title": "生命周期",
      "language": "zh-CN",
      "chapter": "zh/77_internals",
      "url": "https://tio-boot.com/zh/77_internals/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/77_internals/01.md",
      "source": "zh/77_internals/01.md",
      "description": "tio-boot 框架的生命周期如下 - 初始化 Bean 容器 - 扫描所有 Class,查找 AopClass,初始化@nexus.io.annotation.BeforeStartConfiguration 标记的类 - 启动服务器,监听端口 - 初始化@nexus.io.annotation.Configura",
      "keywords": [],
      "status": "document",
      "sha256": "e71cfdf82d8f19576d695db58112b622a29ed74a8d2015cb9a8f94564f9369f5"
    },
    {
      "id": "zh/77_internals/02.md",
      "title": "请求处理流程",
      "language": "zh-CN",
      "chapter": "zh/77_internals",
      "url": "https://tio-boot.com/zh/77_internals/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/77_internals/02.md",
      "source": "zh/77_internals/02.md",
      "description": "引言 tio-boot 是基于 Java AIO（Asynchronous I/O，异步 I/O）开发的高性能网络应用框架。它利用 Java 的异步 I/O 和事件驱动架构，为开发者提供了一个高效、可扩展的网络通信解决方案，特别适用于需要高并发和低延迟的现代网络应用。本文将通过解析一个请求的异常堆栈，深入探讨 tio-",
      "keywords": [],
      "status": "document",
      "sha256": "0246130519751f801dbb4f3986d45f91b1753bf847319e0c461c907834484be9"
    },
    {
      "id": "zh/77_internals/03.md",
      "title": "重要的类",
      "language": "zh-CN",
      "chapter": "zh/77_internals",
      "url": "https://tio-boot.com/zh/77_internals/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/77_internals/03.md",
      "source": "zh/77_internals/03.md",
      "description": "1. nexus.io.tio.boot.context.Enviorment : - 这个类是一个环境配置类，用于管理和配置应用程序的运行环境。它可能包含了设置如数据库连接、服务地址等环境相关的配置。 2. nexus.io.tio.boot.context.TioApplicationContext : - 这个类",
      "keywords": [],
      "status": "document",
      "sha256": "c2d591639ac1fd7d28617d3ff1c514b6fff74c2e660873fb8fa9b05bce02f710"
    },
    {
      "id": "zh/77_internals/index.md",
      "title": "77_internals",
      "language": "zh-CN",
      "chapter": "zh/77_internals",
      "url": "https://tio-boot.com/zh/77_internals/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/77_internals/index.md",
      "source": "zh/77_internals/index.md",
      "description": "本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《生命周期》。 - 02.md : 文档《请求处理流程》。 - 03.md : 文档《重要的类》。",
      "keywords": [],
      "status": "document",
      "sha256": "2d8422ca6a58aedf61a13bc162987d534f18aab766cca3f08c100dd37114a29a"
    },
    {
      "id": "zh/78_source-code/01.md",
      "title": "源码阅读入口",
      "language": "zh-CN",
      "chapter": "zh/78_source-code",
      "url": "https://tio-boot.com/zh/78_source-code/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/78_source-code/01.md",
      "source": "zh/78_source-code/01.md",
      "description": "本目录解释 tio-boot 的启动、请求分发和底层网络实现。应用开发先阅读入门与 Web 章节；排查初始化顺序、路由优先级或请求生命周期时再进入本目录。 阅读顺序 1. 启动与关闭生命周期 ： TioApplication 如何创建上下文，配置何时执行，资源如何关闭。 2. HTTP 请求分发与路由优先级 ：上下文路",
      "keywords": [],
      "status": "document",
      "sha256": "1fd0552aea3fb9e468c7c87d64acaceb7772fdf6d323360323bf7886b2a8ce12"
    },
    {
      "id": "zh/78_source-code/02.md",
      "title": "Swagger 整合到 Tio-Boot 中的指南",
      "language": "zh-CN",
      "chapter": "zh/78_source-code",
      "url": "https://tio-boot.com/zh/78_source-code/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/78_source-code/02.md",
      "source": "zh/78_source-code/02.md",
      "description": "本文档介绍了如何将 Swagger 整合到 Tio-Boot 项目中。 添加依赖 在 pom.xml 文件中添加以下依赖： 注意 ：Swagger 会增加项目的打包体积，因此不推荐在生产环境中使用。 Swagger 图示 加载静态文件 swagger-bootstrap-ui 的静态资源位于以下目录： 静态资源目录 添",
      "keywords": [],
      "status": "document",
      "sha256": "ae604b2041ec5cb3a52b3aad90c0029d2c8b5934426e2821f4070611a33429b9"
    },
    {
      "id": "zh/78_source-code/03.md",
      "title": "启动与关闭生命周期",
      "language": "zh-CN",
      "chapter": "zh/78_source-code",
      "url": "https://tio-boot.com/zh/78_source-code/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/78_source-code/03.md",
      "source": "zh/78_source-code/03.md",
      "description": "本章依据 TioApplication 和 TioApplicationContext 当前 nexus.io 源码。用于理解配置顺序，不要求业务工程复制这些内部实现。 启动入口 TioApplication.run(...) 创建 TioApplicationContext ，调用其 run 并返回 Context ",
      "keywords": [],
      "status": "document",
      "sha256": "c1f2ead6aa7046f4eff2d34d98abeba1545c75eeda895f182344d763ccaece1d"
    },
    {
      "id": "zh/78_source-code/04.md",
      "title": "HTTP 请求分发与路由优先级",
      "language": "zh-CN",
      "chapter": "zh/78_source-code",
      "url": "https://tio-boot.com/zh/78_source-code/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/78_source-code/04.md",
      "source": "zh/78_source-code/04.md",
      "description": "本章介绍 TioBootHttpRequestDispatcher 的请求分发流程与 DefaultHttpRequestRouter 的路由匹配规则。 请求链 域名与路径处理 → CORS 预检（启用且带 Origin / Access-Control-Request-Method）→ Session / 限流 → ",
      "keywords": [],
      "status": "document",
      "sha256": "cc82c2723729f506272a53dabdb306adc96b0c77c8c4931e43858eb4966213c7"
    },
    {
      "id": "zh/78_source-code/05.md",
      "title": "高性能网络编程中的 ByteBuffer 分配与回收策略",
      "language": "zh-CN",
      "chapter": "zh/78_source-code",
      "url": "https://tio-boot.com/zh/78_source-code/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/78_source-code/05.md",
      "source": "zh/78_source-code/05.md",
      "description": "—— 基于 t-io 的实践优化 背景 在 Java NIO 网络编程中， ByteBuffer 是最基础的 I/O 缓冲容器。 默认情况下，很多框架会在发送响应时直接调用： 这种“临时分配 → 写出 → 交由 GC 回收”的模式，在高并发场景下会遇到几个问题： GC 压力大 ：短生命周期的 ByteBuffer 数量",
      "keywords": [],
      "status": "document",
      "sha256": "fe66b13cca46e3f6e959fbd39a117c3fe3e4e5fd9a11be78eb0eb1b96db0b49d"
    },
    {
      "id": "zh/78_source-code/06.md",
      "title": "TioBootServerHandler 源码解析",
      "language": "zh-CN",
      "chapter": "zh/78_source-code",
      "url": "https://tio-boot.com/zh/78_source-code/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/78_source-code/06.md",
      "source": "zh/78_source-code/06.md",
      "description": "TioBootServerHandler 的 decode 方法",
      "keywords": [],
      "status": "document",
      "sha256": "eb3619bea994277002fd38e582c8b03f82872b279be812b6242600bbf537e5fe"
    },
    {
      "id": "zh/78_source-code/http-connection-lifecycle.md",
      "title": "HTTP 请求与连接生命周期",
      "language": "zh-CN",
      "chapter": "zh/78_source-code",
      "url": "https://tio-boot.com/zh/78_source-code/http-connection-lifecycle.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/78_source-code/http-connection-lifecycle.md",
      "source": "zh/78_source-code/http-connection-lifecycle.md",
      "description": "一次请求的业务处理完成与网络发送完成是两个不同的时刻。框架通过按连接排序的业务队列和串行发送队列，把普通响应、文件响应以及 TLS 写入串联起来，使连接关闭与实际发送状态保持一致。 请求到响应 Handler 返回、 Tio.send 返回以及 onAfterHandled 都不能当作“响应已经发完”。发送完成表示本次",
      "keywords": [],
      "status": "document",
      "sha256": "30d13302cff33e015d393e58615f78e6469bd1c4de79d8744216a9c143f90b4e"
    },
    {
      "id": "zh/78_source-code/index.md",
      "title": "78_source-code",
      "language": "zh-CN",
      "chapter": "zh/78_source-code",
      "url": "https://tio-boot.com/zh/78_source-code/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/78_source-code/index.md",
      "source": "zh/78_source-code/index.md",
      "description": "下列条目提供源码阅读文档导航。 文件清单 - readme.md : 当前目录的导航与文件摘要。 - 01.md : 文档《源码阅读入口》。 - 02.md : 文档《Swagger 整合到 Tio-Boot 中的指南》。 - 03.md : 文档《启动与关闭生命周期》。 - 04.md : 文档《HTTP 请求分发与",
      "keywords": [],
      "status": "document",
      "sha256": "f2a90788db00f16f3fbffa673f5a30fd00e5ad4f2950220529bc9668e47952e9"
    },
    {
      "id": "zh/79_cloud/01.md",
      "title": "Nacos 安装（Docker Compose）",
      "language": "zh-CN",
      "chapter": "zh/79_cloud",
      "url": "https://tio-boot.com/zh/79_cloud/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/79_cloud/01.md",
      "source": "zh/79_cloud/01.md",
      "description": "使用 Docker Compose 在本机部署 Nacos（standalone + MySQL 存储），开启鉴权、初始化管理员、创建命名空间，并通过接口与控制台验证。",
      "keywords": [
        "[Nacos",
        "Docker",
        "docker-compose",
        "MySQL",
        "注册中心",
        "配置中心",
        "命名空间",
        "鉴权]"
      ],
      "status": "document",
      "sha256": "b8bb8f3ce8baf1bc70a554e542fa1cd0b7250176898cc3c08a80e89ef5786323"
    },
    {
      "id": "zh/79_cloud/02.md",
      "title": "服务注册与发现",
      "language": "zh-CN",
      "chapter": "zh/79_cloud",
      "url": "https://tio-boot.com/zh/79_cloud/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/79_cloud/02.md",
      "source": "zh/79_cloud/02.md",
      "description": "tio-boot 应用注册到 Nacos 并发现其他服务：依赖、配置项、TioBootNacos.start、实例元数据、一个进程注册多个服务名、优雅下线与服务查询。",
      "keywords": [
        "[tio-boot",
        "Nacos",
        "服务注册",
        "服务发现",
        "TioBootNacos",
        "CloudContext",
        "元数据",
        "优雅下线]"
      ],
      "status": "document",
      "sha256": "f95650bc125be3d28e3a8daa86440966b64512dc81e46a80cdc44773051979ed"
    },
    {
      "id": "zh/79_cloud/03.md",
      "title": "配置中心",
      "language": "zh-CN",
      "chapter": "zh/79_cloud",
      "url": "https://tio-boot.com/zh/79_cloud/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/79_cloud/03.md",
      "source": "zh/79_cloud/03.md",
      "description": "从 Nacos 加载 tio-boot 配置：nacos.config.data-ids、启动时自动加载（可以设置 server.port）、优先级、YAML 展开规则、热更新与变更监听。",
      "keywords": [
        "[tio-boot",
        "Nacos",
        "配置中心",
        "data-ids",
        "EnvUtils",
        "热更新",
        "RemoteConfig",
        "YAML]"
      ],
      "status": "document",
      "sha256": "47c99f19bc622400428b8376124134910163aa3bf282878cad3582421d776725"
    },
    {
      "id": "zh/79_cloud/04.md",
      "title": "服务调用与负载均衡",
      "language": "zh-CN",
      "chapter": "zh/79_cloud",
      "url": "https://tio-boot.com/zh/79_cloud/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/79_cloud/04.md",
      "source": "zh/79_cloud/04.md",
      "description": "在 tio-boot 中按服务名调用其他服务：ServiceClient、ServiceRequest、请求头透传、失败换实例、轮询与加权随机负载均衡、按实例元数据灰度。",
      "keywords": [
        "[tio-boot",
        "ServiceClient",
        "服务调用",
        "负载均衡",
        "灰度发布",
        "请求头透传",
        "Nacos]"
      ],
      "status": "document",
      "sha256": "d675ea6f4fae7c1a06d03ffedefaad5bdb307a5804612f6a7727b289652d9ce2"
    },
    {
      "id": "zh/79_cloud/05.md",
      "title": "网关",
      "language": "zh-CN",
      "chapter": "zh/79_cloud",
      "url": "https://tio-boot.com/zh/79_cloud/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/79_cloud/05.md",
      "source": "zh/79_cloud/05.md",
      "description": "用 tio-boot 搭建 API 网关：路由与断言、过滤器、全局过滤器（鉴权、CORS、Trace Id）、按服务名负载均衡转发 HTTP、SSE 和 WebSocket，路由放在 Nacos 中热更新。",
      "keywords": [
        "[tio-boot",
        "网关",
        "gateway",
        "路由",
        "过滤器",
        "负载均衡",
        "SSE",
        "WebSocket",
        "Nacos",
        "灰度]"
      ],
      "status": "document",
      "sha256": "76fd11c25bd242e00b7fd6a216c1d35478a3aa079772f672cdb54ecc59abe28f"
    },
    {
      "id": "zh/79_cloud/06.md",
      "title": "HTTP 与 WebSocket 反向代理",
      "language": "zh-CN",
      "chapter": "zh/79_cloud",
      "url": "https://tio-boot.com/zh/79_cloud/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/79_cloud/06.md",
      "source": "zh/79_cloud/06.md",
      "description": "tio-boot 内置的 HTTP 与 WebSocket 反向代理：TioHttpProxy 转发所有请求方法与原始请求体、流式转发 SSE，WebSocketProxyHandler 双向转发 WebSocket 消息，HttpRequestRouter.any 与 ChannelCloseHooks。",
      "keywords": [
        "[tio-boot",
        "反向代理",
        "TioHttpProxy",
        "SSE",
        "WebSocket 代理",
        "WebSocketProxyHandler",
        "ChannelCloseHooks]"
      ],
      "status": "document",
      "sha256": "d6a37db47052906d2a41c674d830f5ebfae8fa970eb393d6121c45ae88118b54"
    },
    {
      "id": "zh/79_cloud/07.md",
      "title": "启动与停止的扩展点",
      "language": "zh-CN",
      "chapter": "zh/79_cloud",
      "url": "https://tio-boot.com/zh/79_cloud/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/79_cloud/07.md",
      "source": "zh/79_cloud/07.md",
      "description": "tio-boot 启动与停止的扩展点：EnvLoadedListener 在读取服务配置前补充配置，addServerListener 添加多个服务监听器，server.shutdown.hook 在收到 SIGTERM 时优雅关闭。",
      "keywords": [
        "[tio-boot",
        "EnvLoadedListener",
        "ServiceLoader",
        "ServerListener",
        "addServerListener",
        "shutdown hook",
        "优雅关闭]"
      ],
      "status": "document",
      "sha256": "4eb6b91f17e2d9ade745af3762adf46ca1acd35ebdb0b466e46909d623cfce57"
    },
    {
      "id": "zh/79_cloud/index.md",
      "title": "79_cloud",
      "language": "zh-CN",
      "chapter": "zh/79_cloud",
      "url": "https://tio-boot.com/zh/79_cloud/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/79_cloud/index.md",
      "source": "zh/79_cloud/index.md",
      "description": "本章介绍用 tio-boot 构建微服务：以 Nacos 为注册中心和配置中心，服务启动后自动注册、关闭前自动下线，服务之间按服务名调用并负载均衡，客户端通过网关访问所有服务；网关转发 HTTP、SSE 流式响应和 WebSocket，路由和配置都可以在 Nacos 中修改后立即生效。所有能力都基于 tio-boot ",
      "keywords": [],
      "status": "document",
      "sha256": "d27bd8b4dbfd6221d788f60aba593b703e31674aa589891491687d9edc777dc7"
    },
    {
      "id": "zh/guide.md",
      "title": "文档阅读导航",
      "language": "zh-CN",
      "chapter": "zh/overview",
      "url": "https://tio-boot.com/zh/guide.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/guide.md",
      "source": "zh/guide.md",
      "description": "从入门 Demo 开始，接着完成部署与日志配置，再按业务需要进入核心开发、数据访问及其他主题。章节目录采用连续编号和英文名称；下列分组与侧边栏一致。 入门 - 01 · 入门 部署与日志 - 02 · 部署 - 03 · 日志 核心开发 - 04 · 配置 - 05 · JSON - 06 · Web 开发 - 07 ",
      "keywords": [],
      "status": "document",
      "sha256": "7baa4b2995cdf2e3896c571a54e1cac73d3208102486478b6577698160334fe0"
    },
    {
      "id": "zh/index.md",
      "title": "Home",
      "language": "zh-CN",
      "chapter": "zh/overview",
      "url": "https://tio-boot.com/zh/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/index.md",
      "source": "zh/index.md",
      "description": "按学习路径浏览全部章节",
      "keywords": [],
      "status": "placeholder",
      "sha256": "9f13d7cde68ab7a343d5dc6232586e5bd9fef053be10354734801f13be60179b"
    }
  ]
}
