{
  "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": "Abount About Author James 詹波 github 原来是这样的 JFinal (jfinal@qq.com) Yao Wu Tan 谭耀武 github 程序员中最会拉筋的 CTO Tong Li 李通 github (litongjava001@gmail.com ) Tong Li 简介 Tong Li 邮箱：litongja...",
      "keywords": [],
      "status": "document",
      "sha256": "ad37c60d5b3fcd8d199bf086032576a06414c4375816a458a0d94a4065f13e83"
    },
    {
      "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": "AI 检索与文档数据入口 站点在每次构建时从当前 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": "Quick Start",
      "keywords": [],
      "status": "placeholder",
      "sha256": "81b69564c81816b5cfc0a5203d9dd384c270037954151fb87f3e9b5289fa6079"
    },
    {
      "id": "README.md",
      "title": "Home",
      "language": "und",
      "chapter": "overview",
      "url": "https://tio-boot.com/",
      "markdownUrl": "https://tio-boot.com/ai/pages/README.md",
      "source": "README.md",
      "description": "--- home: true title: Home heroImage: ./logo.png heroText: Tio-Boot tagline: 基于 Java 的快速开放框架 actions: - text: Get Started link: /zh/01 introduction/02.md type: ",
      "keywords": [],
      "status": "document",
      "sha256": "0e01a8aa55558f5152c6a188bc076ede8d7385634dc5db71b9ac57eff5a5c9a0"
    },
    {
      "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": "tio-boot：新一代高性能 Java Web 开发框架 概述 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": "tio-boot 入门示例 创建新项目 项目名称： tio-boot-web-hello 开源仓库地址： https://github.com/litongjava/tio-boot-web-hello 添加依赖 TioBoot 已在 Maven 中央仓库发布。 Maven Central 上的 TioBoot 如果您使用 Java 8 进行开发，请在...",
      "keywords": [],
      "status": "document",
      "sha256": "64cb4bbe13eb279ab35a0cf1ec662bea12425be6da2dd416bc293c6e88ccf9a2"
    },
    {
      "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": "Tio-Boot 配置 : 现代化的配置方案 简介 Tio-Boot 是一个基于 Java 的轻量级框架，提供了灵活的配置管理功能。它支持多环境配置、从多种来源读取配置，并提供了优先级管理，以满足不同场景下的需求。本指南将详细介绍 Tio-Boot 的配置方法及常见配置项的使用。 配置文件概述 Tio-Boot 使用 nexus.io.tio.util...",
      "keywords": [],
      "status": "document",
      "sha256": "c5a503d898e850bc825de38014943753ce7b5a147b7e41b12de75638a698d71e"
    },
    {
      "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": "tio-boot 整合 hotswap-classloader 实现热加载 简介 在现代软件开发中，快速迭代和高效测试是提升开发效率的关键。传统的开发流程中，每次代码变更后都需要重启应用程序，这不仅耗时且影响开发体验。为了优化这一过程，本文介绍了如何将 hotswap-classloader 与 tio-boot 结合使用，实现 Java 应用的热加载...",
      "keywords": [],
      "status": "document",
      "sha256": "90b0e5b882f501a961150711d7388dc92a9bb98ce9379807efa7cfbcf05ad713"
    },
    {
      "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": "自行编译 tio-boot tio-boot 作为 TIO 生态系统中的核心组件，旨在简化 TIO 应用程序的引导过程。虽然 tio-boot 已经相对稳定，并且维护者保持每月发布一次的频率，但有时可能希望体验最新的功能和改进，此时手动编译安装是一个理想的选择。本文将详细介绍如何手动编译和安装 tio-boot 及其周边依赖项。 前言 TIO（Tenc...",
      "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": "0f76d7b2e61885bc60032c0211298bf94331c5addc0ea610d0919e323ad1ca0b"
    },
    {
      "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/readme.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/readme.md",
      "source": "zh/01_introduction/readme.md",
      "description": "01_introduction 本目录包含 8 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-boot：新一代高性能 Java Web 开发框架》。 : 文档《tio-boot 入门示例》。 : 文档《Tio-Boot 配置 : 现代化的配置方案》。 : 文档《tio-...",
      "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 Profile 实现分环境打包 tio-boot 项目 在软件开发过程中，不同的运行环境（如开发环境、生产环境、测试环境等）通常需要不同的配置和依赖。Maven 提供了 profiles 功能，允许开发者根据不同的需求切换构建配置，从而实现分环境打包。本指南将详细介绍如何通过 Maven Profile 配置，实现针对开发、生产、二进...",
      "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 项目配置详解：依赖与 Profiles 配置 本文档详细介绍了一个 Maven 项目的 pom.xml 文件配置，包括项目属性、依赖管理以及不同环境下的 Profiles 配置。通过本文档，您将了解如何配置项目的构建参数、依赖库以及针对开发、生产和其他特定环境的定制化设置。 目录 项目属性配置 在 pom.xml 中，<properties...",
      "keywords": [],
      "status": "document",
      "sha256": "4360281d61a6947cad5e959a39b7f1499b08fb635ad80deae746c4844d6ce7f3"
    },
    {
      "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 打包成 FatJar 在现代微服务和云原生应用的开发中，快速构建、部署和启动应用显得尤为重要。本文将介绍如何使用 tio-boot 将 Java 应用打包成轻量级的 FastJar，并在不同操作系统上进行启动和配置。 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": "使用 GraalVM 构建 tio-boot Native 程序 [toc] 本文将介绍如何使用 GraalVM 构建基于 tio-boot 的原生程序。这对于希望构建快速高效的 Java 服务器应用程序的开发人员尤其有用。我们将从安装必要的依赖开始，逐步构建一个可以独立于 JVM 运行的本地二进制镜像。 代码已提交至 GitHub 仓库。 编写代码 ...",
      "keywords": [],
      "status": "document",
      "sha256": "4decdb53b410b56a43a6514a271f2a4d3b7ff26e1bbc8747a491a72f67f8fae3"
    },
    {
      "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 本文档详细介绍了如何使用 Docker 部署 tio-boot 项目，包括安装 Java 和 Maven、克隆项目、使用 Docker 运行和构建镜像等步骤。 安装 Java 首先，创建目录并下载 Oracle JDK 8u411： 解压并配置 Java 环境变量： 验证 Java 安装： 安装 Maven ...",
      "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 简介 Fly.io 是一个专注于将全栈应用和数据库部署到用户附近位置的平台。它通过将容器转换为运行在全球 30 多个地区的微型虚拟机（micro-VM），显著降低了延迟并提高了应用的响应速度。 部署到 Fly.io 本文将通过 https://github.com/litongjava/tio-boot-web-he...",
      "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 将应用程序部署到 AWS Lambda 需要进行一些修改和配置。以下是详细步骤： 1. 打包应用程序 确保应用程序已经使用 Maven 打包： 2. 创建 Lambda 函数包 创建一个新的目录用于存放 Lambda 函数包，并将打包好的 JAR 文件复制到该目录： 在 lambda-package 目录下创建一个 boo...",
      "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. 创建函数计算项目 首先，确保已经安装了阿里云函数计算的 CLI 工具 fun：...",
      "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": "使用 Deploy 工具部署 工具简介 为了简化部署流程并提高部署效率，我开发了一款名为 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": "使用Systemctl启动项目 一、前提条件 操作系统：Linux（内核 ≥ 3.0，支持 systemd）。 拥有 root 或具有相应权限的用户。 已联网，能访问外部下载源。 二、安装 Java 1.8.0_411 创建下载目录并下载 JDK： 解压到系统标准路径： 配置环境变量（可添加到 /etc/profile 或 ~/.bashrc）： 验证...",
      "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 项目 在这篇博客中，我们将介绍如何使用 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": "使用 Nginx 反向代理 Tio-Boot 1. 简介 在高并发场景下，Tio-Boot 作为 Java 的高性能框架，配合 Nginx 反向代理可以进一步提升系统的稳定性和性能。本文将介绍如何通过配置 Nginx 反向代理 Tio-Boot 应用，并着重介绍如何通过 Keep-Alive 长连接来减少连接开销，提升整体性能。 2. 什么是 Keep...",
      "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 管理 Java 应用 Supervisor 是一个基于 Python 的进程管理工具，可用于在后台启动、监控和管理各类应用程序。本文档详细介绍了如何使用 Supervisor 来管理一个 Java 应用，从安装、配置到启动和监控，帮助构建一个稳定的运行环境。 安装 Supervisor 如果尚未安装 Supervisor，可...",
      "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": "历史部署页与替代方案 本页保留历史路径，不再承载独立部署步骤。按部署目标选择已有完整章节： ：依赖如何随应用交付。 ：构建可执行 JAR。 ：镜像与容器部署。 ：Linux 服务管理。 ：外部访问入口。 先确认 Java 与依赖版本，手动完成项目要求的数据库初始化，再启动应用。重启不应自动建表、清空数据或重置管理员。Windows 上重新打包遇到 JA...",
      "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": "胖包与瘦包的打包与部署 在现代软件开发中，高效的打包与部署是确保应用程序稳定运行和快速迭代的关键。尤其是在使用 Java 开发的项目中，选择合适的打包方式不仅影响应用程序的体积和启动速度，还直接关系到部署的便捷性和灵活性。本文将深入探讨 胖包（Fat Package）与 瘦包（Thin Package）的概念、优势，并详细介绍如何使用 deploy 工...",
      "keywords": [],
      "status": "document",
      "sha256": "5e9ee5d8d28e547fb2c3be47cd28dd2db6bd13c055bd5c203a08f066036f46dd"
    },
    {
      "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": "使用 JDK 8 构建基础库与验证运行环境 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/readme.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/readme.md",
      "source": "zh/02_deployment/readme.md",
      "description": "02_deployment 本目录包含 26 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 Maven Profile 实现分环境打包 tio-boot 项目》。 : 文档《Maven 项目配置详解：依赖与 Profiles 配置》。 : 文档《tio-boot 打包成 ...",
      "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": "tio-boot 整合 Logback tio-boot 并未绑定任何特定的日志框架，而是使用 slf4j 作为日志门面。本文将介绍如何在开发 tio-boot 应用时集成 Logback 作为日志实现。 Logback 建议在开发 tio-boot 应用时使用 Logback 作为日志实现。以下是集成 Logback 的详细步骤： 1. 引入 Log...",
      "keywords": [],
      "status": "document",
      "sha256": "ea65b1881e7fa71a65f4bdbfc22b224553aa6e91b3a38cb0dbdecdee4b4189fd"
    },
    {
      "id": "zh/03_logging/readme.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/readme.md",
      "source": "zh/03_logging/readme.md",
      "description": "日志 本章介绍 tio-boot 应用的日志配置。完成入门 Demo 和部署后，可以配置日志输出，观察应用运行情况。 文章 独立项目 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 发布，密钥保存在不提交的配置文件中，避免散落在业务代码。 文件按以下顺序合并，后加载的同名文件配置覆盖先前值： 用户目录 .env、secrets.txt。 类路径 app.properties、工作目录 app.pr...",
      "keywords": [],
      "status": "document",
      "sha256": "2f90a38afecbf5a73ac08e95c59385056938b37f64e00ed5857957b1fbcea327"
    },
    {
      "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 类负责在服务器启动后执行额外的操作。 示例代码 说明： bo...",
      "keywords": [],
      "status": "document",
      "sha256": "5be5cae12f23e6d035a107450c35cae83f376eb6d85d5ec4b303b18d53852f71"
    },
    {
      "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": "内置缓存系统 AbsCache 在构建高性能的网络应用时，缓存系统起着至关重要的作用。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": "使用 Redis 作为内部 Cache 内部 Cache 负责存储的信息 在 Tio-boot 运行过程中，内部状态信息会被存入缓存系统 AbsCache。以下是 Tio-boot 内部会缓存的一些典型信息： HTTP 会话（Session）数据：启用会话管理时，浏览器的会话信息会存储在缓存中，以便在后续请求中快速访问。默认情况下，使用 Concurr...",
      "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 DecodeExceptionHandler 是 tio-boot 的一个核心组件，用于处理消息解码失败的情况。这类失败通常表明可能存在网络攻击。本文档将详细介绍如何配置和实现自定义的 DecodeExceptionHandler，以提升您的 tio-boot 服务器的安全性和稳定性。 目录 服务器启动前的...",
      "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": "开启虚拟线程（Virtual Thread） 一、背景说明 自 Java 21 起，虚拟线程（Virtual Thread） 正式成为稳定特性（JEP 444），为高并发场景提供了一种低成本、高并发、阻塞友好的线程模型。 虚拟线程由 JVM 调度，不再与操作系统线程一一对应，在面对大量阻塞型任务（如数据库、RPC、文件 IO）时，能够显著降低线程创建、...",
      "keywords": [],
      "status": "document",
      "sha256": "5256a3f01395e6a49f72e917370c274585ad8a80cd8801ea36f993286de436f4"
    },
    {
      "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/readme.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/readme.md",
      "source": "zh/04_configuration/readme.md",
      "description": "04_configuration 本目录包含 10 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《配置参数》。 : 文档《服务器监听器》。 : 文档《内置缓存系统 AbsCache》。 : 文档《使用 Redis 作为内部 Cache》。 : 文档《静态文件处理器》。 : 文档...",
      "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": "Json 概述 Tio-Boot 的 JSON 模块以抽象类 Json 为核心，方便扩展第三方实现。Tio-Boot 官方提供了五种 Json 实现，分别是 TioJson、FastJson2、Jackson、Gson 和 MixedJson，这些实现均继承自抽象类 Json。 抽象类 Json 的核心方法如下： 如上所示，Json 抽象类定义了两个核...",
      "keywords": [],
      "status": "document",
      "sha256": "27cef8a09258dcc8d7d784ca93a45a857bc3909485eff7c15c693eff4bcfddbf"
    },
    {
      "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 手动处理 Json 请求 接收 Json 数据 从 http 请求中获取 json 字符串 从 http 请求中获取 json 字符串,接收 JSON 数据有需要手动转为 JavaBean 示例代码 @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": "响应实体类 RespBodyVo RespBodyVo 是一个自定义的响应体封装类，用于统一 API 接口的响应格式。通过使用 RespBodyVo，可以确保所有 API 响应的一致性，便于前后端的协作和错误处理。RespBodyVo 提供了多种静态工厂方法和链式调用方式，简化了响应的构建过程。 类定义 属性说明 ok (boolean): 表示响应的...",
      "keywords": [],
      "status": "document",
      "sha256": "673162305ec9d1b3c566e55af42c968fdf0b0ea428e76ff1a18d041414f3c2bb"
    },
    {
      "id": "zh/05_json/readme.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/readme.md",
      "source": "zh/05_json/readme.md",
      "description": "05_json 本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Json》。 : 文档《接受 JSON 和响应 JSON》。 : 文档《响应实体类》。",
      "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 控制器示例： 这段代码演示了一些重要的注解的用法： @AController: 这个注解标识一个类作为控制器（Controller）。如果一个类已...",
      "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 的方法，通过 @RequestPath 注解映射到 ...",
      "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 类型的参数。 示例代码 在上面的代码中，BaseController...",
      "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 请求是一项常见的需求。本文将介绍两种处理数组参数的方法： 使用框架自带的绑定功能（From） 使用自定义解析逻辑 1. 使用框架自带的绑定功能（From） 利用框架提供的注解和自动绑定功能，可以简化数组参数的接收和处理。以下是一个示例方法，展示如何通过 @RequestPath 注解接...",
      "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-Type。第三方协议要求纯...",
      "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\"): 类级别的注解，定义控制器的基础路径 @RequestP...",
      "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 对象作为参数，代表接收到的 HTTP 请求。 byte[] bod...",
      "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。该方法通过 @RequestPath 注解映射到一个空的 ...",
      "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 文件下载等多种场景，同时还展示了如何生成二维码并通过浏览器下载二维码图片。内容包括完整的代码示例和详细的原理解析，适用于希望扩展或自定义文件下载功能的开发者。 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 断点续传，以便前端页面使用 <video> 标签直接播放视频。文档中同时说明了如何禁用视频文件的 gzip 压缩，以避免浏览器在解码时出现错误。 背景说明 对于视频文件（例如 MP4 格式），由于其本身已经经过压缩，如果服务器再次对...",
      "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": "http Session 这段代码定义了一个名为 putsession 的方法，通过 @RequestPath 注解映射到 /putsession URL 路径。该方法接收两个参数：一个字符串 value 和一个 HttpRequest 对象 request。 方法的工作原理是： 通过 request.getHttpSession() 获取当前 HTT...",
      "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 读取与设置 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，请重新发起请求到该 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": "HttpRequest 1. HttpRequest(Node remote) 说明: 构造一个 HttpRequest 对象，并设置远程节点。 用法: 2. HttpRequest() 说明: 创建一个无参的 HttpRequest 对象。 用法: 3. close() 说明: 关闭此 HttpRequest 的连接。 用法: 4. close(St...",
      "keywords": [],
      "status": "document",
      "sha256": "72cdea9c685a0ca5f1b860fa8286d7e46463600d121d8ed533b9a8537c47ef7a"
    },
    {
      "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 HttpResponse 类扩展自 HttpPacket，用于表示 HTTP 响应。它包含了与 HTTP 响应相关的状态码、头部信息、Cookie 和主体内容。 构造方法 HttpResponse() 说明：默认构造函数，初始化一个空的 HTTP 响应对象。 HttpResponse(HttpRequest request) ...",
      "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 Resps 是响应构造工具类：把「正文 + Content-Type（可选下载头）」组装成一个 HttpResponse，控制器只负责把它返回。文本、JSON、HTML、静态文件、图片与 Office 文档导出都用同一套方法，接口不必自己拼响应头。 一、为什么用它 响应头集中设置：Content-Type、Content-Dispositi...",
      "keywords": [],
      "status": "document",
      "sha256": "67171f1652a4d38aaa3695f3f1b30d18a144056f08ac4df902430077e325d94e"
    },
    {
      "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": "RespBodyVo 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": "Controller拦截器 概述 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": "请求拦截器 拦截器概述 在基于 Tio-Boot 的 HTTP 应用中，拦截器（Interceptor）是一种在请求到达业务处理器之前或响应返回客户端之后，对请求/响应进行预处理和后处理的机制。合理地使用拦截器，可用于集中化地处理以下场景： 请求校验：验证 HTTP 请求是否合法，拦截恶意或缺少关键信息的请求 鉴权与权限控制：检查请求的认证信息或用户权...",
      "keywords": [],
      "status": "document",
      "sha256": "00c45454ecdc4ea373e12baddc951aad0c288a2ea20fdce5de178d847b788785"
    },
    {
      "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 概述 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 应用程序中使用全局异常处理器的详细步骤和说明。 1...",
      "keywords": [],
      "status": "document",
      "sha256": "b88ec3add0fdf586740b1a358c63082b72baacd7312e9228c1054cacb6b5d410"
    },
    {
      "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": "动态 返回 CSS 实现 本文介绍如何通过识别浏览器的 User-Agent，判断设备是移动端还是桌面端，并返回对应的 CSS 样式。 解析 User-Agent 常见的 User-Agent 示例 Google Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (...",
      "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 来生成带有干扰线的图形验证码，并以 JPEG 图片的形式返回给前端...",
      "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 注解。 类级别跨域支持: 在 Controller 类上添加 @EnableCORS 注解，这样类下的所有方法都会自动支持 CORS。 方法级别跨域支持: ...",
      "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 手动添加 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 浏览器在大多数情况下是支持以 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": "Server-Sent Events (SSE) SSE 简介 Server-Sent Events（SSE）是一种允许服务器主动向客户端发送信息的技术。与 WebSocket 不同，SSE 是单向通信，仅服务器能向客户端发送数据。这使得 SSE 非常适合于需要服务器实时推送数据但客户端不需要发送信息的场景，例如实时通知和更新。 tio-boot 发送...",
      "keywords": [],
      "status": "document",
      "sha256": "e24019fa1a2c9325f8a25149f3d5cefa53ec7ec9b0e6b4097a6774b4058e7f28"
    },
    {
      "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": "handler入门 1. tio-boot 简介及 Handler 的定位 tio-boot 是一个基于 t-io 的高性能 Java Web 框架，支持 HTTP 服务开发。 在 tio-boot 中，HTTP 请求分为 Controller 和 Handler 两种处理方式： Controller：支持自动请求参数封装、路由扫描，用法与传统 MVC...",
      "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": "返回 multipart 1. 背景与问题 在一些“执行任务/生成内容”的接口里，返回值往往包含一个非常大的 JSON 字段（例如 json、output、std_out 等）。如果服务端统一把所有字段拼成一个超大的 JSON 字符串再返回，客户端通常要做两件事： 先把整个响应体一次性读完 再把整段 JSON 反序列化 当 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": "Handler 的请求方法与错误响应 使用方法路由约束 HTTP 方法，Handler 负责读取参数并生成业务响应。响应体可以使用 Map，推荐使用 RespBodyVo 统一构造成功与失败响应。下面示例兼容 Java 8，业务数据仍可使用 Map，不执行数据库写入。 启动参数可使用 --server.port=8100 --server.contex...",
      "keywords": [],
      "status": "document",
      "sha256": "211d946ef919f0cd3a078334cea0ce0e47999f9eabf3578891a4d4f6d27482b7"
    },
    {
      "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": "自定义 Handler 转发请求 在一些情况下，我们可能需要查看客户端的请求转发到另个一个服端,包括请求头、请求体等。可以参考本文章实现 打印请求信息 拦截所有请求 配置一个 HttpRequestHandlerConfig 拦截所有请求 示例代码 输出信息示例 示例 1：JSON 格式的请求体 请求信息： 示例 2：表单格式的请求体 请求信息： 通过...",
      "keywords": [],
      "status": "document",
      "sha256": "93b432f86ed0dc893a2a75df15c3df982ca68f6861ec9eec76a0e9f67acd1d3b"
    },
    {
      "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": "使用 HttpForwardHandler 转发所有请求 ForwardHandler 简介 ForwardHandler 是 Tio-Boot 中用于请求转发的处理器，通常用于与第三方系统的集成。当请求在经过 Tio-Boot 的其他处理器（如 httpRequestInterceptor、httpRequestRouter、httpControll...",
      "keywords": [],
      "status": "document",
      "sha256": "883aab6360ba7884197b3735e9ccdad3518d6e0423b047ccb762865a98888232"
    },
    {
      "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 认证 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": "Http响应加密 一、背景与概述 在一些对数据安全要求较高的场景中，我们需要对服务端返回给客户端的 HTTP 响应体进行加密，以防止传输过程中的明文泄露。tio-boot 在底层已内置了对 HTTP 响应数据的加密支持： Controller 层：如果控制器直接返回对象或字符串，tio-boot 会自动调用配置的加解密器（TioEncryptor）对响...",
      "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": "使用零拷贝发送大文件 本文将结合示例代码，深入剖析零拷贝（Zero-Copy）技术的原理，演示如何在 Tio-boot HTTP 服务中利用零拷贝高效传输大文件，并补充性能优化和使用注意事项，帮助快速上手并理解底层机制。 一、背景与意义 传统的文件传输往往采用以下流程： 磁盘 → 内核缓冲区（DMA 读取） 内核缓冲区 → 用户缓冲区（read() 系...",
      "keywords": [],
      "status": "document",
      "sha256": "ca8a9331d8dac356137733f88ac87196e760b4bdfe46d23a38bd1168766f78a3"
    },
    {
      "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)：客户端将待上传的大文件按照预设大小（如 5MB）切分为多个小块。 ...",
      "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 请求的关键信息，并通过异步任务将数据保存到数据库中，为后续问题排查和系统性能分析提供数据依据。 1. 需求概述 ...",
      "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": "98cccc4395631eb93766fc3415c4036f53591e618829e14e41ba69398266d1f9"
    },
    {
      "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": "WebJars 本文档介绍如何在 Tio-Boot 中配置 WebJars 资源访问及 Swagger UI 页面访问的实现方式。通过 Tio-Boot 内置的 WebjarHandler 类和自定义的 SwaggerUiHandler，我们可以实现对 WebJars 静态资源和 doc.html Swagger 页面文件的访问。 WebJars 规范...",
      "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": "JProtobuf 一、简介 本文介绍另一种 JAVA 对象序列化神器——ProtoBuf（Protocol Buffers）。ProtoBuf 是由 Google 开发的一种用于序列化结构化数据的高效、灵活且语言中立的协议。它被广泛应用于数据通信、数据存储、RPC（远程过程调用）等场景，尤其适用于分布式系统和微服务架构中。ProtoBuf 序列化后的...",
      "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)：示例中调用关闭框架的 gzip 压缩逻...",
      "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 Bomb：使用压缩炸弹防御恶意爬虫 引言 在网络世界中，恶意爬虫可能导致服务器资源枯竭、数据被盗等问题。本文将介绍一种创新的防御策略——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 提供。 统一配置正文大小 所有值均为字节整数。http.max-r...",
      "keywords": [],
      "status": "document",
      "sha256": "8113d6d0b74acac94f66b38a7925b629e0f2f7dff6b3d9b5cba10498e38186fd"
    },
    {
      "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": "HttpRequestFunction：直接注册 Service 方法 函数路由让一个具有明确输入、输出的 Service 方法直接成为 HTTP 入口。对于只负责读取 JSON、调用 Service、输出响应的接口，可以省略单独的 Handler 类，同时保留模型、校验、业务服务和路由配置的分层。 三个类型的职责 源码中的接口名是 IHttpRequ...",
      "keywords": [],
      "status": "document",
      "sha256": "27df0c5ac019602ee252b3c96691fcb4f7a10486685bf65088afd45c52a60598"
    },
    {
      "id": "zh/06_web/assets/readme.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/readme.md",
      "source": "zh/06_web/assets/readme.md",
      "description": "assets 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 gzip_mermaid_20250706_84636f.svg: 矢量图资源，用于本目录文档配图或结构示意。",
      "keywords": [],
      "status": "document",
      "sha256": "045ee6c58dbdf7444df0d5821571147a43cf6cd31d917238462bf9ed042a175f"
    },
    {
      "id": "zh/06_web/readme.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/readme.md",
      "source": "zh/06_web/readme.md",
      "description": "Web 开发 本章按路由、请求响应、文件、会话和异步处理组织阅读顺序。 路由与参数 响应与文件 会话与请求控制 异步与流式输出 工具与监控",
      "keywords": [],
      "status": "document",
      "sha256": "1a9e84da9e5f8938c509fa576b7726120cdd0863165b88c181672ca065bd8170"
    },
    {
      "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：用于存放响应的具体数据内容。 在请求成功时，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": "37470d63a486100ca3bcfb974825d5c5fb8ff3e03cadb9e9bb051ee9a9274e6b"
    },
    {
      "id": "zh/07_validation/readme.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/readme.md",
      "source": "zh/07_validation/readme.md",
      "description": "07_validation 本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《数据紧校验规范》。 : 文档《参数校验》。",
      "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": "使用 tio-boot 搭建 WebSocket 服务 简介 随着实时网络应用的普及，如即时聊天、在线游戏和实时数据推送等，WebSocket 技术越来越受到开发者的青睐。它允许客户端和服务器之间进行全双工、低延迟的通信，从而实现更加流畅的用户体验。 本文将详细介绍如何使用 tio-boot 框架快速搭建一个功能完善的 WebSocket 服务器。我们...",
      "keywords": [],
      "status": "document",
      "sha256": "4e23b46fb71d5bfb0df1019457e51db640c90dbedb865f9f807b7462e3e2ecbc"
    },
    {
      "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": "WebSocket 聊天室项目示例 简介 这个项目的主要目的是展示如何使用 tio-boot 框架构建一个简单的 WebSocket 聊天室应用。通过这个项目，开发者可以学习如何使用 tio-boot 创建一个支持实时通信的 WebSocket 服务器，并了解如何处理客户端连接、消息广播、群组管理等常见的聊天功能。此外，项目还展示了如何通过 tio-b...",
      "keywords": [],
      "status": "document",
      "sha256": "a3969d4fb7381df26d5873ffa5bbe6ffef0609cc8579bdfa464e5b83222b48b6"
    },
    {
      "id": "zh/08_websocket/readme.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/readme.md",
      "source": "zh/08_websocket/readme.md",
      "description": "08_websocket 本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 tio-boot 搭建 WebSocket 服务》。 : 文档《WebSocket 聊天室项目示例》。 demo01.png: 图片资源，用于本目录文档配图或界面示意。 demo02....",
      "keywords": [],
      "status": "document",
      "sha256": "31ac4087555dc867bbee3d80649efd2b33f77e78aa2cc00f441539d8102d7081"
    },
    {
      "id": "zh/09_aop/01.md",
      "title": "JFinal-aop",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/01.md",
      "source": "zh/09_aop/01.md",
      "description": "JFinal-aop 添加依赖 jfinal-aop 源码:https://github.com/litongjava/jfinal-aop 概述 传统 AOP 实现需要引入大量繁杂而多余的概念，例如：Aspect、Advice、Joinpoint、Poincut、Introduction、Weaving、Around 等等，并且需要引入 IOC 容器...",
      "keywords": [],
      "status": "document",
      "sha256": "43b821c0a178d591d46d7961b6347145bbe07ec63f06149e6143ec5a234d8a7d"
    },
    {
      "id": "zh/09_aop/02.md",
      "title": "Aop 工具类",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/02.md",
      "source": "zh/09_aop/02.md",
      "description": "Aop 工具类 Introeuct JFinal Aop 提供了一个 Aop 工具类,可以方便的进行各种操作 使用 1、Aop get(...) Aop.get(...) 可以在任意时空创建对象并且对其进行依赖注入，例如： 以上代码会创建 Service 对象，如果 Service 中使用了 @AopBefore 配置过拦截器，那么会生效，如果 Ser...",
      "keywords": [],
      "status": "document",
      "sha256": "10ca5cbd20dd179204c6a7799d08a7576d3c8b284213f7ba738c7128600a1a7b"
    },
    {
      "id": "zh/09_aop/03.md",
      "title": "配置",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/03.md",
      "source": "zh/09_aop/03.md",
      "description": "配置 切换为 Cglib Proxy 动态代理是 jfinal AOP 的底层实现机制。proxy 模块需要运行在 JDK 环境之下，如果需要运行在 JRE 之下，可以添加如下配置来支持： 面的配置将切换到 cglib 对 proxy 模块的实现，需要在 pom.xml 中添加其 maven 依赖： 整合 Spring 整合 Dubbo 以下代码展示了...",
      "keywords": [],
      "status": "document",
      "sha256": "0eb572940dff883be39230bf2c0c8c653170d4d85300a5be658a9ed9f901ca3f"
    },
    {
      "id": "zh/09_aop/04.md",
      "title": "独立使用 JFinal Aop",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/04.md",
      "source": "zh/09_aop/04.md",
      "description": "独立使用 JFinal Aop 添加 jfinal-aop 依赖 jfinal-aop 可以独立使用, 可以在其他项目中使用 jfinal-aop 也可以在 Android 工程中使用 jfinal-aop 使用拦截器 如何在 Java 应用程序中使用 JFinal AOP （面向切面编程）库来实现拦截器功能。 这个演示主要涉及三个部分：目标类（Cat...",
      "keywords": [],
      "status": "document",
      "sha256": "9d6b83d80beba6cd415c239921ed589d85017ed70162b8ada0714e99700dc795"
    },
    {
      "id": "zh/09_aop/05.md",
      "title": "@AImport",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/05.md",
      "source": "zh/09_aop/05.md",
      "description": "@AImport @AImport 用于导入其它工程中的配置到本工程中 使用@AImport 注解整合 paddle-ocr-server paddle-ocr-server 是笔者开发的款 ocr 识别应用,开源地址,paddle-ocr-server 完全基于 tio-boot 开发,所以可以非常方便的整合到 tio-boot 应用中 编写 pom...",
      "keywords": [],
      "status": "document",
      "sha256": "24c93f69af8d24097e2a3dc6387cb61963508f882f17deb825ac325cb0a8394f"
    },
    {
      "id": "zh/09_aop/06.md",
      "title": "自定义注解拦截器",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/06.md",
      "source": "zh/09_aop/06.md",
      "description": "自定义注解拦截器 使用 InterceptorManager.me().registerInterceptor 实现自定义注解拦截器 在基于 JFinal AOP 的开发中，我们通常使用： 来为方法添加拦截器。 但这种方式有一个明显问题： 👉 业务语义不清晰 例如事务： 从代码上完全看不出： “这是一个事务方法” 这也是为什么 Spring、Micr...",
      "keywords": [],
      "status": "document",
      "sha256": "3a3c213705ba444d45dd8fa9f2e8fb303ee4e60caefc4c8de5000efaabf6d1be"
    },
    {
      "id": "zh/09_aop/07.md",
      "title": "原理解析",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/07.md",
      "source": "zh/09_aop/07.md",
      "description": "原理解析 1. 简介 本文介绍了 JFinal 框架中 AOP（面向切面编程）的实现原理和整体架构。 1.1. AOP 简介 AOP（Aspect-Oriented Programming，面向切面编程）是一种通过预编译方式和运行期间动态代理实现程序功能统一维护的技术。它允许将系统中的横切关注点（如日志、事务管理、权限控制等）与业务逻辑分离，增强代码的...",
      "keywords": [],
      "status": "document",
      "sha256": "46d55ec1788a266d87d503c279f50a2cc67cf83d91db8561e2ec684a9d0cfd46"
    },
    {
      "id": "zh/09_aop/assets/readme.md",
      "title": "assets",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/assets/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/assets/readme.md",
      "source": "zh/09_aop/assets/readme.md",
      "description": "assets 本目录包含 5 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 02.png: 图片资源，用于本目录文档配图或界面示意。 03.png: 图片资源，用于本目录文档配图或界面示意。 04.png: 图片资源，用于本目录文档配图或界面示意。 jfinal-aop.svg: 矢量图...",
      "keywords": [],
      "status": "document",
      "sha256": "fc74003afd67c1683043fa5ebb0b93aa92980e8c10083d440c85abdde6adb1e2"
    },
    {
      "id": "zh/09_aop/readme.md",
      "title": "09_aop",
      "language": "zh-CN",
      "chapter": "zh/09_aop",
      "url": "https://tio-boot.com/zh/09_aop/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/09_aop/readme.md",
      "source": "zh/09_aop/readme.md",
      "description": "09_aop 本目录包含 8 个文件和 1 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《JFinal-aop》。 : 文档《Aop 工具类》。 : 文档《配置》。 : 文档《独立使用 JFinal Aop》。 : 文档《@AImport》。 : 文档《自定义注解拦截器》。 : 文档《原理解...",
      "keywords": [],
      "status": "document",
      "sha256": "b83a58e855fa9b360da2f9f5803512ea0ca97d22c7f23b46787c45e2424e90fd"
    },
    {
      "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": "i18n 概述 tio-boot 为国际化提供了极速化的支持，国际化模块仅三个类文件，使用方式要比 spring 这类框架容易得多。 I18n 与 Res I18n 对象可通过资源文件的 baseName 与 locale 参数获取到与之相对应的 Res 对象，Res 对象提供了 API 用来获取国际化数据。 以下给出具体使用步骤： 创建 i18n_e...",
      "keywords": [],
      "status": "document",
      "sha256": "3fe22cc1455a390678891d969e388d661e4aff0b37f394166fabd70a93495035"
    },
    {
      "id": "zh/10_i18n/readme.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/readme.md",
      "source": "zh/10_i18n/readme.md",
      "description": "10_i18n 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《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 模版引擎文档 本文档详细介绍了如何在 tio-boot 框架中集成 Enjoy 模版引擎，包括引擎简介、基础使用示例、依赖添加、配置说明以及在 Controller 中的使用方法。内容深入浅出，非常适合初学者学习。 简介 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": "Tio-Boot 整合 Java-DB 与 Enjoy 模板引擎示例 本教程将详细介绍如何使用 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.setDevMode(...) ...",
      "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%的用法。如下是代码示例： 以上代码第一、第二行，与 Java 表达...",
      "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 支持单行与多行注释，以下是代码示例： 如上所示，单行注释使用三个#字符，多行注释以#--打头，以--#结尾。 与传统模板引擎不同，这里的单行注释采用三个字符，主要是为了减少与文本内容相冲突的可能性，模板是极其自由化的内容，使用三个字符，冲突的概率降低一个数量级。 jfinal 4.4 之前的版本注意：...",
      "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": "Shared Method 扩展 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": "Shared Object 扩展 通过使用 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 扩展 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": "Spring boot 整合 1、maven 坐标 Spring 整合可以在 pom.xml 中配置 jfinal 坐标，也可以配置 Enjoy Template Engine 的独立发布版本坐标，其 maven 坐标如下： JFinal Template Engine 的独立发布版本 Enjoy 只有 207K 大小，并且无任何第三方依赖。 2、Sp...",
      "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 Enjoy Template Engine 的使用不限于 web，可以使用在任何 java 开发环境中。Enjoy 常被用于代码生成、email 生成、模板消息生成等具有模板特征数据的应用场景，使用方式极为简单。 由于很多同学提出要在非 jfinal 环境下使用 Enjoy，所以 Enjoy 模板引擎发布了独立版本，maven 坐...",
      "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": "tio-boot enjoy 自定义指令 localeDate 背景 在使用 JFinal 模板引擎进行日期格式化时，默认的 #date 指令虽然支持多种格式化模式，但其在处理不同地区（Locale）时存在局限性。例如，默认情况下，#date(model.date, \"MMMM dd, yyyy\") 可能输出为 “一月 16, 2025”，而在某些项目...",
      "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": "PromptEngine 本文将详细讲解如何基于 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": "Enjoy 入门示例-擎渲染大模型请求体 在大模型开发过程中，构建复杂的 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": "Tio Boot + Enjoy：分页与 SEO 实战指南 背景与目的 在构建现代 Web 应用时，我们往往需要同时兼顾 性能、用户体验 和 搜索引擎优化 (SEO)。 性能：后端要能高效分页，避免一次性返回海量数据，保证前端加载流畅； 用户体验：分页导航要直观、简洁，支持键盘快捷键与自定义每页大小； SEO：页面内容应能被搜索引擎爬虫直接识别，不依赖...",
      "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": "TioBoot + Enjoy 生成 robots.txt 与 sitemap.xml：实战与SEO指南 背景与目的 为站点开放爬取并加速搜索引擎收录，robots.txt 与 sitemap.xml 是两块基础设施： robots.txt：告诉搜索引擎哪些资源可以或不可以抓取。 sitemap.xml：提供站点重要页面（如内容详情页）的结构化清单，包...",
      "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": "Enjoy 使用示例 渲染大模型提示词 本示例展示如何使用 JFinal 的 Enjoy 模板引擎来渲染翻译提示词(Prompt)。通过配置 Enjoy 引擎并加载模板，可以动态生成翻译请求内容。 配置 Enjoy 引擎 首先，创建一个配置类 EnjoyEngineConfig 来设置 Enjoy 引擎的基本参数。 RESOURCE_BASE_PATH...",
      "keywords": [],
      "status": "document",
      "sha256": "ede242f231b93b2de68c533f477083c0a95e5c43df75ebd2a1216f07a2cf833e"
    },
    {
      "id": "zh/11_enjoy/6.2/readme.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/readme.md",
      "source": "zh/11_enjoy/6.2/readme.md",
      "description": "6.2 本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 1_20180115001833.png: 图片资源，用于本目录文档配图或界面示意。 1_20200529195957.png: 图片资源，用于本目录文档配图或界面示意。",
      "keywords": [],
      "status": "document",
      "sha256": "cf23bd11adcf42fd0dadb34efa7b1ead4e6e43747b1bc1ec927fbd4ef383cfc2"
    },
    {
      "id": "zh/11_enjoy/assets/readme.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/readme.md",
      "source": "zh/11_enjoy/assets/readme.md",
      "description": "assets 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 01.png: 图片资源，用于本目录文档配图或界面示意。",
      "keywords": [],
      "status": "document",
      "sha256": "b3fd4928436d63cc91e734ec88426503014f2661b41b5169e1035aa57380505b"
    },
    {
      "id": "zh/11_enjoy/readme.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/readme.md",
      "source": "zh/11_enjoy/readme.md",
      "description": "11_enjoy 本目录包含 19 个文件和 2 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-boot 整合 Enjoy 模版引擎文档》。 : 文档《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": "Quartz 定时任务集成指南 简介 Quartz 是一个功能强大的开源任务调度库，广泛应用于 Java 应用程序中以实现定时任务。然而，原生的 Quartz 由于其复杂性，可能会增加开发和维护的难度。为了简化这一过程，本文将介绍如何使用 tio-utils 对 Quartz 进行封装，从而提升开发效率和项目的可维护性。 Quartz 概述 Quart...",
      "keywords": [],
      "status": "document",
      "sha256": "d7771577fc84cf5ac4b396becaa44c259f9c238e1229e519ece4045e2ff1b548"
    },
    {
      "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": "分布式定时任务 xxl-jb 20.1.简介 xxl-job 是一个分布式的定时任务执行框架,有调度中心和执行器两部分组成 调度中心:负责定时任务的调用 执行器:服务定时任务的执行 本篇文章介绍如何基于 tio-boot 创建一个执行器项目并注册的调度中心 20.2.安装 mysql 20.2.1.docker-run-mysql-8 使用命令连接 2...",
      "keywords": [],
      "status": "document",
      "sha256": "591310925f5776e46d5677a66fd3c24ca9f47247587838a795cacd26cea1805e"
    },
    {
      "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": "cron4j 使用指南 Cron4jPlugin 是一个集成在 Java 中的任务调度插件，通过使用 Cron4jPlugin，可以方便地利用通用的 cron 表达式实现任务调度功能。 入门示例 添加依赖 在项目的 pom.xml 文件中添加以下依赖： 依赖说明： java-db：JavaDB 插件依赖。 cron4j：cron4j 任务调度框架。 C...",
      "keywords": [],
      "status": "document",
      "sha256": "124566969ea70f83f06f75449420b1d26733f3579033eab2b4fe27a4a6b88608"
    },
    {
      "id": "zh/12_scheduling/readme.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/readme.md",
      "source": "zh/12_scheduling/readme.md",
      "description": "12_scheduling 本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Quartz 定时任务集成指南》。 : 文档《分布式定时任务 xxl-jb》。 : 文档《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：环境与 AOP 初始化 TioBootTest 是测试初始化工具，不是 JUnit 运行器，也不会自动启动 HTTP 服务器、创建测试数据库或回滚数据。本章依据 nexus.io.tio.boot.testing.TioBootTest 当前源码。 方法与边界 load(null) 不主动设置环境名，最终环境由有效配置决定，不能...",
      "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": "真实 HTTP 集成测试 直接调用 Handler 方法无法验证端口、上下文、拦截器及响应编码。以下示例使用 JDK 21、JUnit Jupiter 和当前 nexus.io 版本 tio-boot，项目需配置 JUnit 5 执行器；不需要数据库或第三方账号。 CI 应分配未占用端口，例如 PowerShell 使用 mvn test '-Dtes...",
      "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。 测试流程 显式启用集成测试，读取测试连接配置；未启用时报告跳过。 创建本次专属 schema，连接池内每个连接都使用它。...",
      "keywords": [],
      "status": "document",
      "sha256": "992861999ea37326a840ed9b0671d81d3af2b1aff0996c500aee094523ef4e8e"
    },
    {
      "id": "zh/13_testing/readme.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/readme.md",
      "source": "zh/13_testing/readme.md",
      "description": "13_testing 先理解测试初始化的边界，再进行真实 HTTP 与数据库隔离测试。 文件清单 : 当前目录的导航与文件摘要。 : TioBootTest：环境与 AOP 初始化。 : 真实 HTTP 集成测试。 : 数据库集成测试与隔离。",
      "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-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 配置工具 EnvUtils 是 tio-utils 提供的统一配置管理工具，用于在应用运行时，从多个配置来源中获取配置值，并按照固定优先级进行解析与覆盖。 它解决的核心问题是： 配置来源分散（参数、环境变量、配置文件） 多环境配置切换复杂 本地个性化配置容易污染团队环境 EnvUtils 通过一套明确的加载规则和优先级模型，统一了这些...",
      "keywords": [],
      "status": "document",
      "sha256": "a918ad6cabf3e3c999385682bf5a549580ee47a63c2effbfa7cc323d0dfe594e"
    },
    {
      "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": "Notification 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": "Email tio-utils 内置了邮箱工具类 nexus.io.tio.utils.email.EMailUtils 用于支持发送邮件 添加依赖 or 这两个依赖的区别在于它们所依赖的不同版本的 Java 邮件库，以及这些版本可能带来的改动或增强。具体如下： 1. javax.mail:mail:1.5.0-b01 这是 Java 邮件 API (...",
      "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": "JSON tio-utils 的 json 模块以抽象类 Json 为核心，方便扩展第三方实现，tio 官方给出了三个 Json 实现，分别是 TioJson、FastJson2、Jackson，这三个实现继承自抽象类 Json。 抽象类 Json 的核心抽象如下： 如上代码可以看出 Json 抽象就是 Object 与 json string 互转的...",
      "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": "File ResourceUtil 和 BufferedReader 读取 classpath 下的文本文件 读取文件示例 代码示例 读取为List<String> 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": "Base64 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)：下载指定 HTTP 或 H...",
      "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 类是一个用于简化 HTTP 请求操作的工具类，提供了发送 GET 和 POST 请求的便捷方法。它支持发送 JSON 数据、表单数据，并允许自定义请求头。 公共方法 1. postJson(String serverUrl, String payload) 描述： 发送一个带有 JSON 数据的 POST 请求。 参数： s...",
      "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": "Telegram 简介 tio-utils 内置了 Telegram 工具类，允许用户方便地将消息发送到 Telegram 群组。本文档将详细介绍如何创建 Telegram Bot、获取群组 Chat ID、使用 Java 代码发送消息，以及将其集成到 Tio-Boot 项目中。此外，还将介绍如何使用 tio-utils 内置的 TelegramBot...",
      "keywords": [],
      "status": "document",
      "sha256": "26ca37d29dd403dcbfab90abac80b04aa38d033c348f944c40abd1dc3a0b0db9"
    },
    {
      "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 加密和解密操作 生成密钥对 以下示例展示了如何使用 RsaUtils 生成 RSA 公钥和私钥，并将其编码为 Base64 字符串。 示例输出: 加密和解密消息 以下示例展示了如何使用生成的 RSA 公钥加密消息，并使用私钥解密。 示例输出: 将私钥和公钥存入数据库 为了安全地存储 RSA 密钥对，我们将私钥和公钥存入数据库中的 sy...",
      "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 HttpUtils 封装了 OkHttp 的请求构造与响应读取。项目需要提供 OkHttp 及客户端池使用的 Brotli 支持依赖，由项目统一管理依赖配置。 客户端池与 HTTPS OkHttpClientPool 复用连接池，提供不同连接及读取超时的客户端： 这些超时不是整个调用的总时限。需要限制整个调用时，可以从客户端创建 b...",
      "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": "ByteBufferUtils 这是一个专为 java.nio.ByteBuffer 设计的工具类，旨在简化和扩展 ByteBuffer 的常用操作。ByteBuffer 是 Java NIO 的核心组件，用于高效的 I/O 操作，但其原生 API 在某些场景下使用起来较为繁琐，例如处理特定格式的数据（如按行读取）、复制、拆分等。ByteBufferU...",
      "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": "虚拟线程 使用虚拟线程并发执行数学与安全判定 本文介绍如何在 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": "毫秒并发 ID (MCID) 生成方案 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": "Gzip 与字节缓冲区 完整字节数组的压缩与解压 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。 convertToIso8601Date(List<O...",
      "keywords": [],
      "status": "document",
      "sha256": "dae4ece3bc7ff481d2690622ad2ef739cb6381b61963eea8dc731037c50debb0"
    },
    {
      "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": "JSON 泛型转换与输出配置 明确 Map 的键和值类型 parseToMap(json, keyType, valueType) 和 parseToListMap(json, keyType, valueType) 使用传入的类型信息构造结果。FastJson2、Jackson 以及对应静态工具类遵循相同的类型约定；选择这些解析后端的 JsonUti...",
      "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": "JWT 签发与校验 JwtUtils 提供 HS256 令牌签发、签名校验及用户标识读取。认证入口先调用 verify，验证成功后再读取载荷；getPayload、parseUserIdString 等读取方法不代表已经认证。 校验约定 token 必须是三个非空片段，末尾额外的分隔符也会被拒绝。 空 token、签名不匹配、非法 Base64、缺失或...",
      "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 PageUtils 为内存中的 List、Set 和 SetWithLock 提供分页，可选转换器只处理当前页的数据。 参数和结果约定 页码从 1 开始，非正页码按 1 处理。 正数 pageSize 保留调用方指定的值，即使总记录数小于它。末页数据条数由 getList().size() 获取。 非正 pageSize ...",
      "keywords": [],
      "status": "document",
      "sha256": "601b013993aaabc985ac68110b2839da72eab405acd750a578540656b031602b"
    },
    {
      "id": "zh/14_tio-utils/readme.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/readme.md",
      "source": "zh/14_tio-utils/readme.md",
      "description": "14_tio-utils 下列条目提供工具类文档导航。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-utils》。 : 文档《EnvUtils 配置工具》。 : 文档《Notification》。 : 文档《Email》。 : 文档《JSON》。 : 文档《File》。 : 文档《Base64》。 : 文档《上传和下载》。 : 文档《H...",
      "keywords": [],
      "status": "document",
      "sha256": "f950d0804965d64699f4edcb9c96f75a235263d48ca875073fc1b2186d43c139"
    },
    {
      "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 与流复制工具 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 输入与锁等待 Base64 的字符校验 Base64Utils.decodeToBytes 使用标准 Base64 字母表，要求输入长度是四的倍数，支持末尾的 = 补位。空字符串得到空字节数组。非法字符（包括中文等非 ASCII 字符）会抛出 IllegalArgumentException，调用方可以统一处理输入校验失败。 字节数组接口...",
      "keywords": [],
      "status": "document",
      "sha256": "3fa03c84e645bb50ee0e67a290050fb6363e12d7b36f6eee1fd8e90c16677b2f"
    },
    {
      "id": "zh/15_java-db/00.md",
      "title": "Db 工具类",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/00.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/00.md",
      "source": "zh/15_java-db/00.md",
      "description": "Db 工具类 使用 java-db 库时，单数据源业务直接调用静态 Db，复用 ActiveRecord 已初始化的默认配置，无需持有 DbPro 实例；JSONB 显式解析、命名数据源、事务边界和测试隔离见 。 基础使用 1. 常见用法 Db 类及其配套的 Row 类，提供了在 Model 类之外更为丰富的数据库操作功能。使用 Db 与 Row 类时...",
      "keywords": [],
      "status": "document",
      "sha256": "66562bd6ec14999b60c85e72092245f21abc70ab7977dfc0ac397752890426eb"
    },
    {
      "id": "zh/15_java-db/01.md",
      "title": "java‑db",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/01.md",
      "source": "zh/15_java-db/01.md",
      "description": "java‑db 一个轻量级、零配置、支持多数据源、读写分离、SQL 模板管理、ActiveRecord ORM、批量操作、事务、统计等功能的 Java 数据库操作框架。 🚀 特性 ✅ 支持 MySQL、PostgreSQL、Oracle、SQLite 等多种数据库 ✅ 内置 Druid/HikariCP 连接池 ✅ ActiveRecord ORM ...",
      "keywords": [],
      "status": "document",
      "sha256": "95642edfaf6c8e2b05640f28b8d2ffb011ba7f4b59cf46079dc561a4a69bb348"
    },
    {
      "id": "zh/15_java-db/02.md",
      "title": "操作数据库入门示例",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/02.md",
      "source": "zh/15_java-db/02.md",
      "description": "操作数据库入门示例 java-db 支持多种数据库,以 mysql 为例进行演示 mysql 添加测试数据 首先，我们创建一个表： 然后，我们随意插入几条记录： 连接 mysql 接下来，我们添加依赖项： 最后，我们编写测试代码： 这段代码使用 ActiveRecord 插件来连接 MySQL 数据库并执行查询。以下是每部分的详细解释： 导入所需的库：...",
      "keywords": [],
      "status": "document",
      "sha256": "d45fe137049f144c50c5154f8ea05d8cf2f4660f411aee5bba327b489bf3f8ae"
    },
    {
      "id": "zh/15_java-db/03_SQL Template.md",
      "title": "SQL 模板 (SqlTemplates)",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/03_SQL%20Template.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/03_SQL%20Template.md",
      "source": "zh/15_java-db/03_SQL Template.md",
      "description": "SQL 模板 (SqlTemplates) 1. 简介 SqlTemplates 是一个强大且灵活的SQL管理工具，旨在将SQL语句从Java代码中分离出来，实现更清晰的代码结构和更便捷的SQL维护。它通过解析特定格式的 .sql 文件，将SQL语句加载到内存中，并允许通过唯一的ID进行调用。 该工具支持两种灵活的加载模式： 主文件模式：通过一个入口文...",
      "keywords": [],
      "status": "document",
      "sha256": "e41ff694a36af014efc6afd953d2b3af3807b59a21ceeac46fd91b0b909c8bd9"
    },
    {
      "id": "zh/15_java-db/04_数据源配置与使用.md",
      "title": "数据源配置与使用",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/04_%E6%95%B0%E6%8D%AE%E6%BA%90%E9%85%8D%E7%BD%AE%E4%B8%8E%E4%BD%BF%E7%94%A8.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/04_%E6%95%B0%E6%8D%AE%E6%BA%90%E9%85%8D%E7%BD%AE%E4%B8%8E%E4%BD%BF%E7%94%A8.md",
      "source": "zh/15_java-db/04_数据源配置与使用.md",
      "description": "数据源配置与使用 HikariCP java-db 为了支持 HikariCP 内置了 HikariCpPlugin,下面讲解一下 如何使用 HikariCP 引入依赖 在项目的 pom.xml 文件中，需要引入以下依赖库： 这里 java-db 提供了 ActiveRecordPlugin 的支持，postgresql 是 PostgreSQL 数据...",
      "keywords": [],
      "status": "document",
      "sha256": "f061b5057e6624d3b968c3155185ef6180ed7cd731b340789381f2c1f0ebe921"
    },
    {
      "id": "zh/15_java-db/05_ActiveRecordPlugin.md",
      "title": "ActiveRecord",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/05_ActiveRecordPlugin.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/05_ActiveRecordPlugin.md",
      "source": "zh/15_java-db/05_ActiveRecordPlugin.md",
      "description": "ActiveRecord 概述 ActiveRecord 是 JFinal-Plugins 最核心的组成部分之一，通过 ActiveRecord 来操作数据库，将极大地减少代码量，极大地提升开发效率。 ActiveRecord 模式的核心是：一个 Model 对象唯一对应数据库表中的一条记录，而对应关系依靠的是数据库表的主键值。 因此，ActiveRe...",
      "keywords": [],
      "status": "document",
      "sha256": "1850c2ac2e554ad1c9c78e4f794fbc1eb7b1580aec7889a16b75e1ffaefb5a26"
    },
    {
      "id": "zh/15_java-db/06_db工具类基础.md",
      "title": "Db 工具类",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/06_db%E5%B7%A5%E5%85%B7%E7%B1%BB%E5%9F%BA%E7%A1%80.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/06_db%E5%B7%A5%E5%85%B7%E7%B1%BB%E5%9F%BA%E7%A1%80.md",
      "source": "zh/15_java-db/06_db工具类基础.md",
      "description": "Db 工具类 使用 java-db 库时，单数据源业务直接调用静态 Db，复用 ActiveRecord 已初始化的默认配置，无需持有 DbPro 实例；JSONB 显式解析、命名数据源、事务边界和测试隔离见 。 基础使用 1. 常见用法 Db 类及其配套的 Row 类，提供了在 Model 类之外更为丰富的数据库操作功能。使用 Db 与 Row 类时...",
      "keywords": [],
      "status": "document",
      "sha256": "95c321adcbcf93d3b094197de2f758279723506f8b45e7e84bd37185cc450554"
    },
    {
      "id": "zh/15_java-db/07_db工具类高级.md",
      "title": "批量操作",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/07_db%E5%B7%A5%E5%85%B7%E7%B1%BB%E9%AB%98%E7%BA%A7.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/07_db%E5%B7%A5%E5%85%B7%E7%B1%BB%E9%AB%98%E7%BA%A7.md",
      "source": "zh/15_java-db/07_db工具类高级.md",
      "description": "批量操作 批量操作方法 在实际开发中，批量操作能够显著提高数据库的处理效率，减少单条操作带来的性能开销。本文将以 Java-db 框架中的Db类为例，详细介绍批量操作的使用方法，包括批量保存和批量更新。 类名：Db.java 方法签名 参数说明 sql：指的是INSERT INTO或UPDATE语句。动态参数使用问号（?）作为占位符，例如： 上述 SQ...",
      "keywords": [],
      "status": "document",
      "sha256": "4c422210a9cfb618a3994baf7e9c2558811a0bdca9c9d5ae0e8ffc2feaa8076b"
    },
    {
      "id": "zh/15_java-db/08_Model.md",
      "title": "Model",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/08_Model.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/08_Model.md",
      "source": "zh/15_java-db/08_Model.md",
      "description": "Model 1、基本用法 Model 是 ActiveRecord 中最重要的组件之一，它充当 MVC 模式中的 Model 部分。以下是 Model 定义示例代码： 以上代码中的 User 通过继承 Model，便立即拥有的众多方便的操作数据库的方法。在 User 中声明的 dao 静态对象是为了方便查询操作而定义的，该对象并不是必须的。基于 Act...",
      "keywords": [],
      "status": "document",
      "sha256": "14e490956ab8e0169e318f4030153b4005ce723df3fe12b49adf78596b9a4725"
    },
    {
      "id": "zh/15_java-db/09_生成器与 JavaBean.md",
      "title": "Model生成器",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/09_%E7%94%9F%E6%88%90%E5%99%A8%E4%B8%8E%20JavaBean.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/09_%E7%94%9F%E6%88%90%E5%99%A8%E4%B8%8E%20JavaBean.md",
      "source": "zh/15_java-db/09_生成器与 JavaBean.md",
      "description": "Model生成器 本文档介绍了如何使用 ActiveRecord 模块下的 Generator 工具类，自动生成 JavaBean 相关的 Model、BaseModel、MappingKit、DataDictionary 四类文件。通过生成器，可以快速创建符合 JavaBean 规范的模型类，提升开发效率和代码质量。 1. 生成器使用 1.1 基本使...",
      "keywords": [],
      "status": "document",
      "sha256": "28b845a0861992c6d3af352bfc0357419b5b660de24470272898c329b6dfabeb"
    },
    {
      "id": "zh/15_java-db/10.md",
      "title": "注解",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/10.md",
      "source": "zh/15_java-db/10.md",
      "description": "注解 本文档介绍了如何通过 Java 注解的方式操作数据库表 amazon_product_variant_example_table，实现数据的增删改查。我们将使用 JavaDb 框架中的 ActiveRecord 模块，并借助注解来简化数据库操作。 java-db 核心特性说明. 驼峰命名映射 Java 属性如hiResImageUrl自动映射到数...",
      "keywords": [],
      "status": "document",
      "sha256": "fd8fc8514ae620a4f30cf7fe6c8695b955cf3a80b5d72eea5e691169422e1d93"
    },
    {
      "id": "zh/15_java-db/11_异常处理.md",
      "title": "异常处理",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/11_%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/11_%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86.md",
      "source": "zh/15_java-db/11_异常处理.md",
      "description": "异常处理 ActiveRecordException 1、背景简介 在使用 Java-DB（即 LitongJava ActiveRecord 框架）操作数据库时，当执行增删改查操作失败，框架会抛出 ActiveRecordException。出于安全考虑，该异常默认不会将完整的 SQL 语句及参数打印到控制台，而是将它们保存在异常对象内部，避免敏感信...",
      "keywords": [],
      "status": "document",
      "sha256": "81516d860b16f4418a66a54e4d1f7258d183ae6a5c7e7fe31a6b0a2bc7db053e"
    },
    {
      "id": "zh/15_java-db/12_数据库事务处理.md",
      "title": "数据库事务处理",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/12_%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1%E5%A4%84%E7%90%86.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/12_%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1%E5%A4%84%E7%90%86.md",
      "source": "zh/15_java-db/12_数据库事务处理.md",
      "description": "数据库事务处理 在现代应用开发中，确保数据的完整性和一致性至关重要。数据库事务（Transaction）是实现这一目标的核心机制。它将一系列数据库操作捆绑成一个不可分割的逻辑工作单元，确保这些操作要么全部成功执行，要么在出现任何错误时全部回滚，使数据恢复到操作前的状态。 本文将详细介绍 ActiveRecord 框架中支持的三种主流事务处理方式，并提供...",
      "keywords": [],
      "status": "document",
      "sha256": "13c3ce0ff4f5a71359bfe2c891755f220a51febe5389bb493e73be606401b281"
    },
    {
      "id": "zh/15_java-db/13_Cache 缓存.md",
      "title": "Cache 缓存",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/13_Cache%20%E7%BC%93%E5%AD%98.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/13_Cache%20%E7%BC%93%E5%AD%98.md",
      "source": "zh/15_java-db/13_Cache 缓存.md",
      "description": "Cache 缓存 1、使用 Ehcache 缓存 ActiveRecord 可以使用缓存以大大提高性能，默认的缓存实现是 ehcache，使用时需要引入 ehcache 的 jar 包及其配置文件，以下代码是 Cache 使用示例： 上例 findByCache 方法中的 cacheName 需要在 ehcache.xml 中配置如：<cache na...",
      "keywords": [],
      "status": "document",
      "sha256": "b50548337df72ec062dbe9268f597039020547ab4e5ceae8560dc7ac421ae0c4"
    },
    {
      "id": "zh/15_java-db/14_Dialect多数据库支持.md",
      "title": "Dialect 多数据库支持",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/14_Dialect%E5%A4%9A%E6%95%B0%E6%8D%AE%E5%BA%93%E6%94%AF%E6%8C%81.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/14_Dialect%E5%A4%9A%E6%95%B0%E6%8D%AE%E5%BA%93%E6%94%AF%E6%8C%81.md",
      "source": "zh/15_java-db/14_Dialect多数据库支持.md",
      "description": "Dialect 多数据库支持 目前 ActiveRecordPlugin 提供了 MysqlDialect、OracleDialect、PostgresqlDialect、SqlServerDialect、Sqlite3Dialect、AnsiSqlDialect 实现类。MysqlDialect 与 OracleDialect 分别实现对 Mysql...",
      "keywords": [],
      "status": "document",
      "sha256": "64d717d09603c7405e5fe4442412f49c4243d8830898847a91bffab4fa2c0975"
    },
    {
      "id": "zh/15_java-db/15_表关联操作.md",
      "title": "表关联操作",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/15_%E8%A1%A8%E5%85%B3%E8%81%94%E6%93%8D%E4%BD%9C.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/15_%E8%A1%A8%E5%85%B3%E8%81%94%E6%93%8D%E4%BD%9C.md",
      "source": "zh/15_java-db/15_表关联操作.md",
      "description": "表关联操作 ActiveRecord 天然支持表关联操作，并不需要学习新的东西，此为无招胜有招。表关联操作主要有两种方式：一是直接使用 sql 得到关联数据；二是在 Model 中添加获取关联数据的方法。 假定现有两张数据库表：user、blog，并且 user 到 blog 是一对多关系，blog 表中使用 user_id 关联到 user 表。如下...",
      "keywords": [],
      "status": "document",
      "sha256": "714b703e5ccd727a988ca364390474a71d495203fe8a197a307bb3916fc3e35d"
    },
    {
      "id": "zh/15_java-db/16_复合主键.md",
      "title": "复合主键",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/16_%E5%A4%8D%E5%90%88%E4%B8%BB%E9%94%AE.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/16_%E5%A4%8D%E5%90%88%E4%B8%BB%E9%94%AE.md",
      "source": "zh/15_java-db/16_复合主键.md",
      "description": "复合主键 ActiveRecord 采用极简设计支持复合主键，对于 Model 来说需要在映射时指定复合主键名称，以下是具体例子： 如上代码所示，对于 Model 来说，只需要在添加 Model 映射时指定复合主键名称即可开始使用复合主键，在后续的操作中 JFinal 会对复合主键支持的个数进行检测，当复合主键数量不正确时会报异常，尤其是复合主键数量不...",
      "keywords": [],
      "status": "document",
      "sha256": "97f2594a88162ff776cb5a126a3059d5ac63e6052f64c40c5696796ca44651be"
    },
    {
      "id": "zh/15_java-db/17_Oracle支持.md",
      "title": "Oracle 支持",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/17_Oracle%E6%94%AF%E6%8C%81.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/17_Oracle%E6%94%AF%E6%8C%81.md",
      "source": "zh/15_java-db/17_Oracle支持.md",
      "description": "Oracle 支持 Oracle 数据库具有一定的特殊性，JFinal 针对这些特殊性进行了一些额外的支持以方便广大的 Oracle 使用者。以下是一个完整的 Oracle 配置示例： 由于 Oracle 数据库会自动将属性名(字段名)转换成大写，所以需要手动指定主键名为大写，如：arp.addMaping(“user”, “ID”, User.cla...",
      "keywords": [],
      "status": "document",
      "sha256": "1b198e543cb4361b1af52818c77f7fb4e15fb3eeb943fafdc5030c75346ee02c"
    },
    {
      "id": "zh/15_java-db/18_Enjoy SQL 模板.md",
      "title": "Enjoy SQL 模板",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/18_Enjoy%20SQL%20%E6%A8%A1%E6%9D%BF.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/18_Enjoy%20SQL%20%E6%A8%A1%E6%9D%BF.md",
      "source": "zh/15_java-db/18_Enjoy SQL 模板.md",
      "description": "Enjoy SQL 模板 JFinal 利用自带的 Enjoy Template Engine 极为简洁的实现了 Sql 模板管理功能。一如既往的极简设计，仅有 #sql、#para、#namespace 三个指令，学习成本依然低到极致。 重要：除了以上三个 sql 管理专用指令以外，jfinal 模板引擎的所有指令和功能也可以用在 sql 管理，jf...",
      "keywords": [],
      "status": "document",
      "sha256": "9836b7d031583d500920196b0dcca1c88d86c7109f0ebd0e91f05c661a376854"
    },
    {
      "id": "zh/15_java-db/19_整合 Enjoy 模板最佳实践.md",
      "title": "整合 Enjoy 模板最佳实践",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/19_%E6%95%B4%E5%90%88%20Enjoy%20%E6%A8%A1%E6%9D%BF%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/19_%E6%95%B4%E5%90%88%20Enjoy%20%E6%A8%A1%E6%9D%BF%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md",
      "source": "zh/15_java-db/19_整合 Enjoy 模板最佳实践.md",
      "description": "整合 Enjoy 模板最佳实践 简介 在 Java 应用程序中整合 Enjoy 模板引擎，特别是在处理数据库操作和 SQL 文件管理方面，可以显著提高开发效率并增强代码的可维护性。本指南将详细介绍如何配置数据库连接、添加和管理 SQL 文件，以及通过模板引擎执行查询测试。 整合优势 统一管理 SQL 文件：使用 Enjoy 模板引擎，您可以将 SQL ...",
      "keywords": [],
      "status": "document",
      "sha256": "6b8c0ecc2b789d79a58cdbae688854b287afb6c4f9f6b0a3175b47471cfd307c"
    },
    {
      "id": "zh/15_java-db/20_多数据源支持.md",
      "title": "多数据源支持",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/20_%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90%E6%94%AF%E6%8C%81.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/20_%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90%E6%94%AF%E6%8C%81.md",
      "source": "zh/15_java-db/20_多数据源支持.md",
      "description": "多数据源支持 ActiveRecordPlugin 可同时支持多数据源、多方言、多缓存、多事务级别等特性，对每个 ActiveRecordPlugin 可进行彼此独立的配置。简言之 JFinal 可以同时使用多数据源，并且可以针对这多个数据源配置独立的方言、缓存、事务级别等。 当使用多数据源时，只需要对每个 ActiveRecordPlugin 指定一...",
      "keywords": [],
      "status": "document",
      "sha256": "7300f0a0b0b8f67faafa68e8eedccdace1f5b38d50bf57bb0759a20fd9b7e55e"
    },
    {
      "id": "zh/15_java-db/21_独立使用 ActiveRecord.md",
      "title": "独立使用 ActiveRecord",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/21_%E7%8B%AC%E7%AB%8B%E4%BD%BF%E7%94%A8%20ActiveRecord.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/21_%E7%8B%AC%E7%AB%8B%E4%BD%BF%E7%94%A8%20ActiveRecord.md",
      "source": "zh/15_java-db/21_独立使用 ActiveRecord.md",
      "description": "独立使用 ActiveRecord ActiveRecordPlugin 可以独立于 java web 环境运行在任何普通的 java 程序中，使用方式极度简单，相对于 web 项目只需要手动调用一下其 start() 方法即可立即使用。以下是代码示例： 注意：ActiveRecordPlugin 所依赖的其它插件也必须手动调用一下 start()方法...",
      "keywords": [],
      "status": "document",
      "sha256": "a96613d9a59e7cf56591d28e6d48c8f26f15388412ad762e4cbe7a970acf2c5b"
    },
    {
      "id": "zh/15_java-db/22_调用存储过程.md",
      "title": "调用存储过程",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/22_%E8%B0%83%E7%94%A8%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/22_%E8%B0%83%E7%94%A8%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B.md",
      "source": "zh/15_java-db/22_调用存储过程.md",
      "description": "调用存储过程 使用工具类 Db 可以很方便调用存储过程，以下是代码示例： 如上所示，使用 Db.execute(...) 可以很方便去调用存储过程，其中的 connection 是一个 Connection 类型的对象，该对象在使用完以后，不必 close()，因为 jfinal 在上层会默认帮 close() 掉。 此外，MySQL 之下还可以使用更...",
      "keywords": [],
      "status": "document",
      "sha256": "a6869abef67064f43d534d6ae1d1b24acd6470dee9e2554f538b00b6a211e301"
    },
    {
      "id": "zh/15_java-db/23.md",
      "title": "java-db 整合 Guava 的 Striped 锁优化",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/23.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/23.md",
      "source": "zh/15_java-db/23.md",
      "description": "java-db 整合 Guava 的 Striped 锁优化 在现代高并发应用中，确保数据的一致性和线程安全性是至关重要的。本文将详细介绍如何使用 Guava 库提供的Striped锁机制来优化 Java 应用中的并发控制。通过一个具体的业务案例，展示Striped锁在实际应用中的优势和实现方法。 业务背景 假设我们有一个系统，用于处理教授的学生评论数...",
      "keywords": [],
      "status": "document",
      "sha256": "1273cb4caa608c71e983ae7e43b824733d190b77fb36bc5df3991a66578006b3"
    },
    {
      "id": "zh/15_java-db/24.md",
      "title": "生成 SQL",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/24.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/24.md",
      "source": "zh/15_java-db/24.md",
      "description": "生成 SQL 生成创表 SQL 定义实体类 生成创表 SQL output",
      "keywords": [],
      "status": "document",
      "sha256": "76ca6846f6a738031f9c5f0d60a58bc6a4eba9b7e336285c135da02b3d1a4aa9"
    },
    {
      "id": "zh/15_java-db/25.md",
      "title": "通过实体类操作数据库",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/25.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/25.md",
      "source": "zh/15_java-db/25.md",
      "description": "通过实体类操作数据库 保存 创建实体类 使用 Db 类保存数据",
      "keywords": [],
      "status": "document",
      "sha256": "c69fe4fc499b1c4fd6b084a9402eabcf2dfebf2b89c54718602982962bf52299"
    },
    {
      "id": "zh/15_java-db/26.md",
      "title": "java-db 读写分离",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/26.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/26.md",
      "source": "zh/15_java-db/26.md",
      "description": "java-db 读写分离 java-db 的 Db 工具类内置了读写分离功能。未处于默认数据源事务中时，自动读路由选择读数据源；默认数据源事务中，自动读路由固定使用主库的事务连接，以保证读取本事务写入的数据及行锁有效。写操作使用写数据源。 当调用 Db.find、Db.query、Db.paginate 等方法时，系统会自动执行读操作。 其他方法则用于...",
      "keywords": [],
      "status": "document",
      "sha256": "ac49a68db4cae49b4538a37ece9a9a87522ffeda514208b588f04027d3097599"
    },
    {
      "id": "zh/15_java-db/27.md",
      "title": "Spring Boot 整合 Java-DB",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/27.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/27.md",
      "source": "zh/15_java-db/27.md",
      "description": "Spring Boot 整合 Java-DB 整合 ActiveRecord 操作关系型数据库 Spring Boot 整合 Java-DB 有两种方式： 方式 1：不使用 Spring Boot，自行创建数据源并配置到 ActiveRecordPlugin 中 方式 2：使用 Spring Boot 的数据源，并将 ActiveRecordPlugi...",
      "keywords": [],
      "status": "document",
      "sha256": "70dc526f5ff2d0df23fedcb3096f0186ecf1b2488712b838c21e6f15d646e289"
    },
    {
      "id": "zh/15_java-db/28.md",
      "title": "like 查询",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/28.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/28.md",
      "source": "zh/15_java-db/28.md",
      "description": "like 查询 LIKE 查询是 SQL 中用于执行模糊匹配的重要操作符，常用于在 WHERE 子句中查找符合特定模式的记录。以下是关于如何进行 LIKE 查询的详细介绍，包括其基本用法、常见场景以及在 Java 中的实现示例。 1. 基本语法 column_name：要进行匹配的列。 pattern：用于匹配的模式，可以包含通配符。 2. 通配符 L...",
      "keywords": [],
      "status": "document",
      "sha256": "60abfd8c764f0b6b8108c422307e8503e79b58cb48487c3f0ebcccdadd31a667"
    },
    {
      "id": "zh/15_java-db/29.md",
      "title": "常用操作示例",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/29.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/29.md",
      "source": "zh/15_java-db/29.md",
      "description": "常用操作示例 查询 in 语句查询示例 in 查询 查询的表是 professor,查询的字段是 id 使用 java 的 stream 语法拼接 生成的 sql 语句和参数 从 row 中获取记录 使用 findIn 方法 updateById 根据 id 值更新 ENOTE_USER_DEVICES 表中的 mac_address 值 删除指定字段...",
      "keywords": [],
      "status": "document",
      "sha256": "f46672bf7ab5894e2aa965aaa20de998602ec12d838204227250dbd1f15d6854"
    },
    {
      "id": "zh/15_java-db/30.md",
      "title": "Druid 监控集成指南",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/30.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/30.md",
      "source": "zh/15_java-db/30.md",
      "description": "Druid 监控集成指南 一、前置依赖 在项目的构建文件（如 Maven 的 pom.xml）中添加 Druid 和数据库驱动依赖： Druid：提供高性能 JDBC 连接池、慢 SQL 日志、Web 监控等功能。 数据库驱动：根据实际使用的关系型数据库选择对应驱动。 二、配置 Druid 连接池与过滤器 在一个启动时被扫描的配置类（使用自定义 @AC...",
      "keywords": [],
      "status": "document",
      "sha256": "71ae5581cdda73e804d175f381c0587db308cf48ed55ed59111f953ecd20b948"
    },
    {
      "id": "zh/15_java-db/31.md",
      "title": "SQL 统计",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/31.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/31.md",
      "source": "zh/15_java-db/31.md",
      "description": "SQL 统计 简介 Java db 内置了 LiteSqlStatementStat 用于进行 SQL 统计 使用 使用 LiteSqlStatementStat 进行 SQL 统计 本文介绍了如何在 Java 应用中使用 LiteSqlStatementStat 进行 SQL 统计，并展示了相关配置、测试和输出结果。 1. 配置类 (DbConfig...",
      "keywords": [],
      "status": "document",
      "sha256": "df7fdd3ac88a930bf33642b2e2ff93d3a77fdd960d4750eba7faff096c45ecff"
    },
    {
      "id": "zh/15_java-db/32.md",
      "title": "Db 与 PostgreSQL 业务实践",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/32.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/32.md",
      "source": "zh/15_java-db/32.md",
      "description": "Db 与 PostgreSQL 业务实践 本章介绍 java-db 的静态 Db、JSONB 和事务用法，以及与 tio-boot-admin 的集成方式。使用 java-db 库时，单数据源业务直接使用 nexus.io.db.activerecord.Db，无需在 Store/Service 中持有或注入 DbPro。这是 java-db 的使用方...",
      "keywords": [],
      "status": "document",
      "sha256": "987b4b1db266e778e1ec722f78b3b9b686133885c28050e58c9999b5e5da5dfd"
    },
    {
      "id": "zh/15_java-db/33_支付回执与权益事务.md",
      "title": "支付回执与权益事务",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/33_%E6%94%AF%E4%BB%98%E5%9B%9E%E6%89%A7%E4%B8%8E%E6%9D%83%E7%9B%8A%E4%BA%8B%E5%8A%A1.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/33_%E6%94%AF%E4%BB%98%E5%9B%9E%E6%89%A7%E4%B8%8E%E6%9D%83%E7%9B%8A%E4%BA%8B%E5%8A%A1.md",
      "source": "zh/15_java-db/33_支付回执与权益事务.md",
      "description": "支付回执与权益事务 java-db 的线程绑定连接让收款事实、权益批次和原操作结果可以在同一短事务中提交。结合数据库唯一约束和行锁，可以同时处理重复回执、并发通知和返回丢失。 区分三个事实 发起付款、核明实际收款、实际权益交付分别建模。提交付款请求后发生超时，保留原请求号并查询原请求；页面成功提示不能作为收款依据。回执先完成验签、商户作用域、币种、金额...",
      "keywords": [],
      "status": "document",
      "sha256": "fbcbdb0c76f3c8f0472abf87885e952f9d26e0280cbd7d2055918dc3c3c81f42"
    },
    {
      "id": "zh/15_java-db/34_商业库存与按量履约事务.md",
      "title": "商业库存与按量履约事务",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/34_%E5%95%86%E4%B8%9A%E5%BA%93%E5%AD%98%E4%B8%8E%E6%8C%89%E9%87%8F%E5%B1%A5%E7%BA%A6%E4%BA%8B%E5%8A%A1.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/34_%E5%95%86%E4%B8%9A%E5%BA%93%E5%AD%98%E4%B8%8E%E6%8C%89%E9%87%8F%E5%B1%A5%E7%BA%A6%E4%BA%8B%E5%8A%A1.md",
      "source": "zh/15_java-db/34_商业库存与按量履约事务.md",
      "description": "商业库存与按量履约事务 java-db 的线程绑定事务适合将原操作、库存分配、权益扣量和累计交付金额一起提交。数据库负责并发互斥，服务端负责当前资格与计量证据，客户端展示已经确认的事实。 请求、预占与交付分开 用户确认使用时，将选中批次的可用量转入预占量，不增加已用量。排队只决定等待顺序；只有独占位置真实可用，才形成开始含、结束不含的服务区间。多个窗口...",
      "keywords": [],
      "status": "document",
      "sha256": "160712c0dcd068dcc52299870564fb1c7c1c12ba22299cce8399c31de19fdeff"
    },
    {
      "id": "zh/15_java-db/35_会员周期与独立增量池.md",
      "title": "会员周期与独立增量池",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/35_%E4%BC%9A%E5%91%98%E5%91%A8%E6%9C%9F%E4%B8%8E%E7%8B%AC%E7%AB%8B%E5%A2%9E%E9%87%8F%E6%B1%A0.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/35_%E4%BC%9A%E5%91%98%E5%91%A8%E6%9C%9F%E4%B8%8E%E7%8B%AC%E7%AB%8B%E5%A2%9E%E9%87%8F%E6%B1%A0.md",
      "source": "zh/15_java-db/35_会员周期与独立增量池.md",
      "description": "会员周期与独立增量池 java-db 的线程绑定事务可以将业务原操作、周期额度和结果引用原子提交；PostgreSQL 唯一约束及条件更新负责最后一个单位的并发互斥。会籍按固定期限计算，额度按业务时区自然日/月计算，二者分别建模，可以清楚解释续费、升级和实际剩余。 会籍和额度分别记录 会籍表达账号在哪个区间享有什么承诺；额度表达责任账号在某个自然周期已...",
      "keywords": [],
      "status": "document",
      "sha256": "ab8b0a330f38a7c5a6b3e6c7f850a788f94b8ac55d503d13d2d317f13afcac83"
    },
    {
      "id": "zh/15_java-db/query-resources.md",
      "title": "查询资源自动管理",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/query-resources.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/query-resources.md",
      "source": "zh/15_java-db/query-resources.md",
      "description": "查询资源自动管理 结果集、语句和连接 DbPro.queryListBytes、SQL 查询形式的 find、按 Row 条件查询的 find 和 findByField 在每次调用中管理自己创建的 JDBC 语句与结果集。返回的是已经读取完成的数据，调用方不需要关闭返回的列表。 queryListBytes 面向单列二进制结果，每行通过 JDBC g...",
      "keywords": [],
      "status": "document",
      "sha256": "0f7919cee70b2a8b53c4f5931ea6180af858900417f1ac3451efa54c2844b62e"
    },
    {
      "id": "zh/15_java-db/readme.md",
      "title": "15_java-db",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/readme.md",
      "source": "zh/15_java-db/readme.md",
      "description": "15_java-db 下列条目提供数据库文档导航。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Db 工具类》。 : 文档《java‑db》。 : 文档《操作数据库入门示例》。 : 文档《SQL 模板 (SqlTemplates)》。 : 文档《数据源配置与使用》。 : 文档《ActiveRecord》。 : 文档《Db 工具类》。 : 文档《...",
      "keywords": [],
      "status": "document",
      "sha256": "378e26e41cc99c19cca2e8801e04ae3f823c6fc53b074edba2d982001e4b1c12"
    },
    {
      "id": "zh/15_java-db/row-presentation.md",
      "title": "Row 展示转换与表格导出",
      "language": "zh-CN",
      "chapter": "zh/15_java-db",
      "url": "https://tio-boot.com/zh/15_java-db/row-presentation.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/15_java-db/row-presentation.md",
      "source": "zh/15_java-db/row-presentation.md",
      "description": "Row 展示转换与表格导出 转换为 Kv RowUtils.toKv 创建新的 Kv，并将顶层 Long 和 BigInteger 转为字符串，方便展示较大的整数。传入 true 时，将字段名从下划线形式转换为驼峰形式。原始 Row 中的值和类型保持不变。 例如 user_id 为 Long 时，结果的 userId 是字符串，而原 Row 的 use...",
      "keywords": [],
      "status": "document",
      "sha256": "0519e5b222df5288969a83cb8d1e95b84bcd3d7fa39d2371e3475d07c0edfbc4"
    },
    {
      "id": "zh/16_api-table/01.md",
      "title": "ApiTable 概述",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/01.md",
      "source": "zh/16_api-table/01.md",
      "description": "ApiTable 概述 概述 ApiTable 是一款灵活的,高性能的,非 ORM 的 java 数据库操作框架 支持常用的 sql 数据, sqlite,mysql,oracle,postgresql,tdengine 根据参数参数自动生成 sql 语句 快速实现支持增删改查 入门使用 添加依赖",
      "keywords": [],
      "status": "document",
      "sha256": "0efa2b00083dcf0fd5a82557321a28e0c8e2c6d10345224a90072a42255444a1"
    },
    {
      "id": "zh/16_api-table/02.md",
      "title": "使用 ApiTable 连接 SQLite",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/02.md",
      "source": "zh/16_api-table/02.md",
      "description": "使用 ApiTable 连接 SQLite 入门示例 创建数据表并插入数据 SQLite 是一种轻量级嵌入式数据库。使用 Navicat Premium 可以轻松创建 SQLite 数据库，数据库文件将保存在本地。 以下是一个创建表并插入数据的示例： 整合 SQLite 在项目中整合 SQLite，首先需要添加以下依赖： 在 app.propertie...",
      "keywords": [],
      "status": "document",
      "sha256": "a3eff8c0f163a95af8a2f5f365aec2da2df8ba275bc2756e619942f8068ad26e"
    },
    {
      "id": "zh/16_api-table/03.md",
      "title": "使用 ApiTable 连接 Mysql",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/03.md",
      "source": "zh/16_api-table/03.md",
      "description": "使用 ApiTable 连接 Mysql 11.2.1.创建表,插入数据 创建一张简单的 student 表 11.2.2.添加依赖 11.2.3.配置文件-app.properties 11.2.7.编写启动类 11.2.5.编写配置类 DbConfig.java, 注意观察 DataSource 的 priority 是 1,priority 表示...",
      "keywords": [],
      "status": "document",
      "sha256": "830cd5d16eba597760a6ec0e65eaec616da3a2b46037352d98ed4a8507b2bcfc"
    },
    {
      "id": "zh/16_api-table/04.md",
      "title": "使用 ApiTable 连接 Postgres",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/04.md",
      "source": "zh/16_api-table/04.md",
      "description": "使用 ApiTable 连接 Postgres postgresql 简介 略 整合 简单整合示例 创建表,插入数据 创建一张简单的 student 表 添加依赖 新建工程 tio-boot-postgresql-demo 配置文件 app.properties 编写启动类 编写配置类 DbConfig.java, 注意观察 DataSource 的 ...",
      "keywords": [],
      "status": "document",
      "sha256": "9d7b3c6be2f41812e202ab54b81072b508f0175d95485aecce895dfb255eeb4a"
    },
    {
      "id": "zh/16_api-table/05.md",
      "title": "使用 ApiTable 连接 TDEngine",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/05.md",
      "source": "zh/16_api-table/05.md",
      "description": "使用 ApiTable 连接 TDEngine 本节列出了整合 TDEngine 所需的 Maven 依赖。这些依赖包括 tio-boot 用于构建基于事件驱动的应用程序，以及相关的 JDBC 驱动和连接池用于数据库连接。 连接 TDEngine 添加依赖 添加配置信息 app.properties 启动类 ActiveRecordPluginConf...",
      "keywords": [],
      "status": "document",
      "sha256": "4ee37863e09dc0520f82950f137450713ce7fc236c3a28592266ed3c0ec94d51"
    },
    {
      "id": "zh/16_api-table/06.md",
      "title": "使用 api-table 连接 oracle",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/06.md",
      "source": "zh/16_api-table/06.md",
      "description": "使用 api-table 连接 oracle",
      "keywords": [],
      "status": "placeholder",
      "sha256": "075f72c08a1338a1ef83fcf47e9eaf8e59ef70662d4b8d69fea1b74f0f2a4646"
    },
    {
      "id": "zh/16_api-table/07.md",
      "title": "使用 api-table 连接 mysql and tdengine 多数据源",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/07.md",
      "source": "zh/16_api-table/07.md",
      "description": "使用 api-table 连接 mysql and tdengine 多数据源 如何在 tio-boot 应用程序中配置多个数据源，这里以 MySQL 和 TDengine 为例。 ActiveRecordPluginConfiguration 类 数据源配置: getMysqlDataSource(): 此方法创建并配置 MySQL 的数据源。使用 ...",
      "keywords": [],
      "status": "document",
      "sha256": "492637888d90343ec219b71868dc0ae5c6e19497ac8f875f972fabf7509c3858"
    },
    {
      "id": "zh/16_api-table/08.md",
      "title": "EasyExcel 导出",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/08.md",
      "source": "zh/16_api-table/08.md",
      "description": "EasyExcel 导出 在本指南中，我们将演示如何使用 EasyExcelUtils 和 EasyExcelResponseUtils 来支持 Excel 导出功能。EasyExcelUtils 主要用于将数据导出到本地文件，而 EasyExcelResponseUtils 则用于将导出的 Excel 表格文件直接下载到客户端。 1. 使用 Easy...",
      "keywords": [],
      "status": "document",
      "sha256": "be2d02c0c4110d43ad63a44b10113262b7f5cc984cbb332a0451e877f0569b60"
    },
    {
      "id": "zh/16_api-table/09.md",
      "title": "EasyExcel 导入",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/09.md",
      "source": "zh/16_api-table/09.md",
      "description": "EasyExcel 导入 简介 背景 在数据处理和分析的过程中，读取和解析 Excel 文件是一个非常常见的需求。在 Java 开发中，有许多库可以帮助我们实现这一功能。其中，阿里巴巴的 EasyExcel 库因其高性能和易用性，备受开发者青睐。本文将详细介绍如何使用 EasyExcel 读取 Excel 文件，并将内容转换为自定义的数据结构 Tabl...",
      "keywords": [],
      "status": "document",
      "sha256": "f86790dec917f119333ce5b0276796f0748001bfe30260bb7ed07ed1b056c08b"
    },
    {
      "id": "zh/16_api-table/10.md",
      "title": "ApiTable 的权限与业务边界",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/10.md",
      "source": "zh/16_api-table/10.md",
      "description": "ApiTable 的权限与业务边界 表可以被 CRUD 不代表所有业务操作都适合直接通过通用更新实现。 不能让普通用户通过任意表名或筛选条件获得后台通用表能力。验证 Token 仅确认身份，不自动解决操作权限与租户隔离。 使用 tio-boot-admin 时，TioAdminControllerConfiguration 已注册 ApiTable，无...",
      "keywords": [],
      "status": "document",
      "sha256": "629cc250ba2ac060baede68e1d266089a1c2ef9775e4a4ac9192784412fe020b"
    },
    {
      "id": "zh/16_api-table/11.md",
      "title": "ApiTable 联调与故障定位",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/11.md",
      "source": "zh/16_api-table/11.md",
      "description": "ApiTable 联调与故障定位 先区分独立 ApiTable 与 tio-boot-admin 内置控制器，再对照同版本接口验证。 先做只读表配置和分页查询，再在独立测试表创建记录、保存主键、更新并重新查询，最后验证删除、恢复和导出。不要用生产业务表做随意写入测试。 复杂写入还需 。具体接口见 。",
      "keywords": [],
      "status": "document",
      "sha256": "392a854104eb33dafd6c31c939a22580ab6e91d3f34c5a4b96660d8b9ab59520"
    },
    {
      "id": "zh/16_api-table/12.md",
      "title": "ApiTable 实现增删改查",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/12.md",
      "source": "zh/16_api-table/12.md",
      "description": "ApiTable 实现增删改查 本节介绍如何使用 tio-boot 整合 ApiTable，实现一个简单的增删改查（CRUD）示例应用。通过该示例，您将了解如何创建数据库表、配置依赖、编写控制器以及测试各项功能。 创建表和插入数据 创建表 首先，创建一个名为 system_users 的用户信息表，用于存储系统用户的相关信息。以下是建表的 SQL 语句...",
      "keywords": [],
      "status": "document",
      "sha256": "2769fed0e886924436282584b1135a27d282654c0fb565ab26fb8d1cbcd55ca4"
    },
    {
      "id": "zh/16_api-table/13.md",
      "title": "数组类型",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/13.md",
      "source": "zh/16_api-table/13.md",
      "description": "数组类型 本指南介绍了在前后端交互中如何处理数组类型的数据，包括数据的创建、后端接收与存储，以及数据查询的流程。 1. 创建数据时发送的格式 在创建新数据时，数组类型的字段需要按照特定的格式发送给后端。以下是一个示例，其中 permit_area 为数组类型字段： 说明： permit_area: 这是需要发送的数组字段，包含多个数值元素。 json_...",
      "keywords": [],
      "status": "document",
      "sha256": "f16458c73911da388f8134b93fa7b79f912e20f4a206d4b38601366f2c08e8ed"
    },
    {
      "id": "zh/16_api-table/14.md",
      "title": "单独使用 ApiTable",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/14.md",
      "source": "zh/16_api-table/14.md",
      "description": "单独使用 ApiTable 在现代应用开发中，简化数据库操作、提高代码复用性和维护性是每个开发者追求的目标。ApiTable 作为一个基于 java-db 框架的通用数据表操作工具，旨在实现这一目标。本文将详细介绍如何封装 ApiTableService 以及如何在控制器中使用 ApiTableService，以实现高效、灵活的增删改查（CRUD）操作...",
      "keywords": [],
      "status": "document",
      "sha256": "caaeabc0a959cf87da02067990743900beef7f89a1a1cb7a1cd305f88b2b1a4a"
    },
    {
      "id": "zh/16_api-table/15.md",
      "title": "TQL（Table SQL）前端输入规范",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/15.md",
      "source": "zh/16_api-table/15.md",
      "description": "TQL（Table SQL）前端输入规范 TQL（Table SQL）是一种以 http 请求参数 为载体的结构化查询语言，用于操作数据表。 解析前端输入的 Http 请求 参数 转换为底层数据库可执行的 SQL 语句 执行 SQL 将执行结果返回至前端 支持对表的增删改查操作 基本概念 数据表（Data Table） 例如，以下请求中 system_...",
      "keywords": [],
      "status": "document",
      "sha256": "bb5586f71aa82615e6cd319a15c0613981e5a5317cbe3c0255ba40138697c22c"
    },
    {
      "id": "zh/16_api-table/readme.md",
      "title": "16_api-table",
      "language": "zh-CN",
      "chapter": "zh/16_api-table",
      "url": "https://tio-boot.com/zh/16_api-table/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/16_api-table/readme.md",
      "source": "zh/16_api-table/readme.md",
      "description": "16_api-table 本目录包含 16 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《ApiTable 概述》。 : 文档《使用 ApiTable 连接 SQLite》。 : 文档《使用 ApiTable 连接 Mysql》。 : 文档《使用 ApiTable 连接 Pos...",
      "keywords": [],
      "status": "document",
      "sha256": "4fac9333be77eb83f6f292b2959a38cae28244ac0f5b00c7538913f028165368"
    },
    {
      "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 整合 MyBatis 简介 Tio-Boot：Tio-Boot 是一个高性能的 Java 网络编程框架，用于快速构建 Web、WebSocket、TCP 等网络应用。在本教程中，我们将使用 Tio-Boot 启动一个简单的 Web 服务，以演示如何与 MyBatis 整合。 MyBatis：MyBatis 是一个持久层框架，简化了 J...",
      "keywords": [],
      "status": "document",
      "sha256": "c29d581f1a13ad3007a28f8c083d2a69826b59e3826a2ced04a071cb4180d485"
    },
    {
      "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，而不使用 mybatis.xml 配置文件。我们将一步步解释每个部分的原理和原因，以帮助读者理解为什么要这样做。 整合 mybatis 一、添加依赖 首先，在项目的 pom.xml 文件中添加以下依赖： 说明： MyBatis：对象关系映射框架，用于与...",
      "keywords": [],
      "status": "document",
      "sha256": "e17c9439e3110bd895904e5045fc9c396ab14ff76af7cfe2b359cd51780b38a6"
    },
    {
      "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 的依赖配置，确保能够使用 Druid ...",
      "keywords": [],
      "status": "document",
      "sha256": "710c6ea60d03a94749eca77cc5c79bc16c26b1d6e7b271881b9a341427eb831f"
    },
    {
      "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": "使用 mybatis-plus 整合 tdengine 介绍如何使用 tio-boot 结合 Mybatis-Plus 对 TDengine 进行整合。TDengine 支持 SQL 语言，允许我们利用 Mybatis-Plus 的强大功能进行数据操作。tio-boot 是一个高效的 Java Web 框架，用于构建基于事件驱动的应用程序。 添加依赖 ...",
      "keywords": [],
      "status": "document",
      "sha256": "89acd96ce6355428cce0643fd2e24685bd512017b1383630463c462a52f68b42"
    },
    {
      "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": "整合 mybatis-plus 添加依赖 初始化测试数据 创建数据库 创建表 随便插入几条条记录 添加实体类和 Mapper 添加配置文件 mybatis.xml 使用工具类类整合 mybatis-plus 添加配置文件 mybatis.xml 数据源配置 mapper 配置 MybatisPlusUtils 使用 MybatisSqlSessionF...",
      "keywords": [],
      "status": "document",
      "sha256": "4847bd30f083da17d8311669a4cba7ea2c868e935bd1287daf1d1dceb7d7f03a"
    },
    {
      "id": "zh/17_mybatis/readme.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/readme.md",
      "source": "zh/17_mybatis/readme.md",
      "description": "17_mybatis 本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Tio-Boot 整合 MyBatis》。 : 文档《使用配置类方式整合 MyBatis》。 : 文档《整合数据源》。 : 文档《使用 mybatis-plus 整合 tdengine》。 : ...",
      "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": "使用配置类方式整合 jOOQ 在本教程中，我们将演示如何在 tio-boot 项目中，以纯 Java 配置类的方式整合 jOOQ，实现： 不使用 XML 不使用代码生成插件（可选） 使用 DSLContext 进行类型安全 SQL 通过 AOP 自动注入 jOOQ 核心对象 与 tio-boot 生命周期完美整合 通过本文，不仅能学会 怎么做，还能理解...",
      "keywords": [],
      "status": "document",
      "sha256": "4215d3fb79f1ca67e78071165bac869490b13115237b0cc1ad8c10f89e401b6b"
    },
    {
      "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": "tio-boot + jOOQ 事务管理 本文将基于已经完成的 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 进行高性能批量操作 如何避免常见性能陷阱 如何提升 Postgr...",
      "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": "整合agroal 本文介绍如何在 tio-boot 项目中使用 Agroal 连接池 作为数据源，并与 jOOQ 集成，同时提供事务管理能力。 该方案具有以下特点： 无 Spring 依赖 程序化配置（对 AOT / Native 更友好） 启动路径清晰 易于控制生命周期 性能稳定 适用于： 高性能 REST / RPC 服务 AOT / GraalV...",
      "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 无法提供真正可靠的自动补全 大项目里容易“潜伏 b...",
      "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": "基于 Record / POJO 增删改查 在前几篇中，我们已经完成了： 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": "UPSERT、批量更新、返回主键与高级 SQL 在前几篇中，我们已经完成了： 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": "的多表关联查询、DTO 投影、聚合统计与视图封装 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 连接池整合 Codegen 类型安全 Record / POJO CRUD 批量操作、分页、动态 SQL 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": "的窗口函数、CTE、JSON 查询与 PostgreSQL 高级 SQL 实战 在前几篇中，我们已经逐步完成了： 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": "下面直接续写下一篇，延续前文风格，作为可直接发布的教程稿。 tio-boot + jOOQ 的审计字段、乐观锁、数据权限与企业级 Repository 设计 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQ...",
      "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": "测试策略、SQL 日志、性能诊断与生产排障 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 Post...",
      "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": "多租户、读写分离与多数据源设计 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 PostgreSQL...",
      "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": "代码生成治理、数据库迁移与团队协作规范实战 在前几篇中，我们已经逐步完成了： tio-boot + jOOQ 基础整合 事务管理 Codegen 强类型升级 Record / POJO CRUD 批量、分页、动态 SQL PostgreSQL UPSERT、returning 多表查询、DTO 投影、聚合统计 JSONB、窗口函数、CTE 与 Post...",
      "keywords": [],
      "status": "document",
      "sha256": "7c8f3626aa3cb6978ec30db1ef560987cc3a5ceed51bddb2dc4a512f6c0c3fb9"
    },
    {
      "id": "zh/18_jooq/readme.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/readme.md",
      "source": "zh/18_jooq/readme.md",
      "description": "18_jooq 本目录包含 14 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用配置类方式整合 jOOQ》。 : 文档《tio-boot + jOOQ 事务管理》。 : 文档《批量操作与性能优化》。 : 文档《整合agroal》。 : 文档《代码生成与类型安全》。 : 文档...",
      "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": "PostgreSQL 安装 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": "PostgreSQL 主键自增 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": "PostgreSQL 日期类型 在现代 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": "Postgresql 金融类型 在金融系统中，PostgreSQL 通常使用 numeric 类型来存储高精度的数值数据，而在 Java 中推荐使用 java.math.BigDecimal 类来处理这类数据。本文将以一个具体的示例说明如何将 Java 中接收到的字符串 \"20\" 转换为 BigDecimal 对象，并存储到数据库中字段类型为 nume...",
      "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": "PostgreSQL 数组类型 基础数据类型数组 在数据模型设计中，经常会遇到需要存储数组字段的需求，尤其是在 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": "PostgreSQL 查询优化 在面对大数据量（如 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": "PostgreSQL 全文检索 在处理涉及大量文本数据的应用时，快速且精确的全文检索变得至关重要。本文将引导如何在 PostgreSQL 中对 title、organization、description 和 location 字段进行全文检索，并通过索引提高检索性能。 pgvector 插件 pgvector 是一个用于 PostgreSQL 的扩展...",
      "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": "PostgreSQL 向量 余弦相似度与余弦距离 什么是余弦相似度 余弦相似度用于衡量两个向量之间的相似程度。具体来说： 余弦相似度为 1：表示两个向量完全相同。 余弦相似度为 0：表示两个向量正交（没有相似性）。 余弦相似度为 -1：表示两个向量完全相反。 注意：在 pgvector 扩展中，运算符 <=> 实际上计算的是余弦距离，定义为 [ \\te...",
      "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": "PostgreSQL 优化向量查询 本文档介绍了如何通过预先存储向量到数据表中来优化向量查询操作。我们将对比旧的查询方式与优化后的新查询方式，并详细解释新 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": "PostgreSQL 其他 Postgres 在某些地方不同于 mysql,所有这里加以说明 RETURN_GENERATED_KEYS UUID 问题描述 数据的库的主键是类型是 UUID,当向数据库添加记录时,数据库会自动生成主键,如何获取生成的主键呢? ApiTable 会自动返回数据库主键的的这,只不过返回主键的有些特殊 我们保存一条记录测试一...",
      "keywords": [],
      "status": "document",
      "sha256": "57927cd517d10f4d7984e0929b1874e1fc62dece0a96ffd2e8c28408ba0adfb5"
    },
    {
      "id": "zh/19_postgresql/readme.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/readme.md",
      "source": "zh/19_postgresql/readme.md",
      "description": "19_postgresql 本目录包含 13 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《PostgreSQL 安装》。 : 文档《PostgreSQL 主键自增》。 : 文档《PostgreSQL 日期类型》。 : 文档《Postgresql 金融类型》。 : 文档《Pos...",
      "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": "使用 Docker 运行 MySQL 本文档将介绍如何使用 Docker 运行不同版本的 MySQL 容器，包括 MySQL 5.7 和 MySQL 8.x。我们将涵盖基本的运行命令、目录映射配置以及常见问题的解决方法。 MySQL 5.7 1.1 使用 Docker 运行 MySQL 5.7 运行以下命令以启动 MySQL 5.7 容器： 1.2 目...",
      "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 键顺序与插入前不一致。例如： 创建语句: 查询后的 JSON： 原因分析 MySQL 版本限制： MySQL 8.0.16 是 MySQL 8.0 系列的早...",
      "keywords": [],
      "status": "document",
      "sha256": "572739a6bae7e71e0ec61f2f955ed444fecced5ecb10a4ed15ae80efdbc6f415"
    },
    {
      "id": "zh/20_mysql/readme.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/readme.md",
      "source": "zh/20_mysql/readme.md",
      "description": "20_mysql 本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 Docker 运行 MySQL》。 : 文档《常见问题》。",
      "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": "快速体验 OceanBase 社区版 1. 背景信息 OceanBase 是由蚂蚁集团开发的一款高性能、高可用、分布式关系数据库。自 V4.0.0 版本起，OceanBase 提供了统一的安装包（All-in-One Package），用户可以通过该安装包一次性完成 obd、OceanBase 数据库、ODP、OBAgent、Grafana、Prome...",
      "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 数据库的各项操作。 部署单机版 OceanBase 集群 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、内存、IO、磁盘等方...",
      "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": "优化 SQL 性能指南 本指南介绍了如何在 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/readme.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/readme.md",
      "source": "zh/21_oceanbase/readme.md",
      "description": "21_oceanbase 本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《快速体验 OceanBase 社区版》。 : 文档《快速上手 OceanBase 数据库单机部署与管理》。 : 文档《诊断集群性能》。 : 文档《优化 SQL 性能指南》。 : 文档《待定》。",
      "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": "Oracle",
      "keywords": [],
      "status": "placeholder",
      "sha256": "d36e46df73150c427cd8c1da4421c0f643787a3e744327825da6bd43dcab1c80"
    },
    {
      "id": "zh/22_oracle/readme.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/readme.md",
      "source": "zh/22_oracle/readme.md",
      "description": "22_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": "SQL Server",
      "keywords": [],
      "status": "placeholder",
      "sha256": "e3e24fa719b41a8867b6f2e2cee90b39c9f52bc87209650d86c4062850d0c0de"
    },
    {
      "id": "zh/23_sqlserver/readme.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/readme.md",
      "source": "zh/23_sqlserver/readme.md",
      "description": "23_sqlserver 文章 （待补充）",
      "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": "SQLite",
      "keywords": [],
      "status": "placeholder",
      "sha256": "0f675675d172f6aa02db6639392511a346e8f506f7691c9f9c392737cf607f8c"
    },
    {
      "id": "zh/24_sqlite/readme.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/readme.md",
      "source": "zh/24_sqlite/readme.md",
      "description": "24_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": "tio-boot 使用 mongo-java-driver 操作 mongodb 在这个示例中,创建了一个使用 MongoDB 的简单 Java Web 应用程序。这个应用程序包括了数据库依赖配置、数据库操作工具类、配置类、控制器类以及实际的 HTTP 请求处理。下面我将详细解释每一部分的作用和逻辑。 MongoDB Java Driver 依赖 Mo...",
      "keywords": [],
      "status": "document",
      "sha256": "937c1d8753a4048237492fc5ee2648ada63296f8b8a2042ab62f9fafc3910c48"
    },
    {
      "id": "zh/25_mongodb/readme.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/readme.md",
      "source": "zh/25_mongodb/readme.md",
      "description": "25_mongodb 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《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": "Elasticsearch Introduction Elasticsearch 是一个基于分布式架构的搜索和分析引擎，主要用于处理大规模的文本数据。它建立在 Apache Lucene 之上，并提供了一个基于 RESTful API 的接口，使得数据的索引和搜索变得非常简便。以下是 Elasticsearch 的简介和一些基本概念： 简介 Elast...",
      "keywords": [],
      "status": "document",
      "sha256": "4d85d9bd70eb54799b80407743d08ad0acb0b84b6f3f87cebf76bf7ca3e73c85"
    },
    {
      "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": "JavaDB 整合 ElasticSearch Java 提供了一个 Elastic 类，用于简化与 ElasticSearch 的整合过程以及执行相关的 ES 操作。本文档将介绍如何在 Java 项目中通过配置类来实现与 ElasticSearch 的整合。 使用 JavaDB 整合 ElasticSearch 添加依赖 配置文件 (app.prop...",
      "keywords": [],
      "status": "document",
      "sha256": "75b11465812d8be8c79b697e93d1c6c87a5f82192f10785f9d8a6a09e6d8eaa3"
    },
    {
      "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": "Elastic 工具类使用指南 本章介绍了 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 注意事项 Elastic-search 在某些时候并不是效率最高的选择,例如根据主键查询和索引查询 在查询语句为 SELECT * FROM table WHERE id=? 的场景下，具体分析如下： 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": "ES 课程示例文档 在将关系数据库中的数据导入 Elasticsearch 以实现高效搜索的过程中，本文展示了如何使用 Java 集成 PostgreSQL 和 Elasticsearch。通过创建索引、批量导入数据、以及构建复杂查询，我们能够实现对大量课程数据的快速检索和分析。此方法不仅提高了数据查询的效率，还为用户提供了更为灵活的搜索功能，适用于需...",
      "keywords": [],
      "status": "document",
      "sha256": "3ac614d3e908ca2ed10d79e9108bc0a9c80c71922d30674f1202809aeae76ebf"
    },
    {
      "id": "zh/26_elasticsearch/readme.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/readme.md",
      "source": "zh/26_elasticsearch/readme.md",
      "description": "26_elasticsearch 本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Elasticsearch》。 : 文档《JavaDB 整合 ElasticSearch》。 : 文档《Elastic 工具类使用指南》。 : 文档《Elastic-search 注...",
      "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": "Caffeine Caffeine 简介 Caffeine 是一个高性能的 Java 缓存库，提供了近乎最优的命中率。它是一个完全在内存中的缓存，可以用作本地缓存或与其他缓存解决方案结合使用。Caffeine 的主要特点包括： 快速的读写操作 基于大小、时间和引用的驱逐策略 统计和监听功能 易用的 API tio-boot 整合 Caffeine 添加...",
      "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": "CacheUtils 工具类 概述 tio-utils 内置了 CacheUtils 用户提供对缓存数据的支持,提供的工具类如下,tio-boot 已经内置了 tio-utils,所以不需要添加 tio-utils 的依赖.但是需要添加对于缓存库的依赖 nexus.io.tio.utils.cache.caffeine.CaffeineCache ne...",
      "keywords": [],
      "status": "document",
      "sha256": "2b354f22e41f2438ab21f9b0fec3b1e51d9399b4493add12a1528516451f0486"
    },
    {
      "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": "使用 java-db 整合 ehcache Ehcache 是一个广泛使用的开源的缓存黄金，它可以提高应用程序的性能和扩展性。 java-db 对 ehcache 进行了支持,使其的 java-db 中更易使用 整合 ehcache 添加依赖 需要用到 java-db 添加配置文件 ehcache.xml ehcache.xml 是 Ehcache 缓...",
      "keywords": [],
      "status": "document",
      "sha256": "ccf4babf637fa24622d2dfea49503b30e5e6fc3770e4e3b2b073bf765d7bc4c6"
    },
    {
      "id": "zh/27_cache/readme.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/readme.md",
      "source": "zh/27_cache/readme.md",
      "description": "27_cache 本章介绍本地缓存与统一缓存接口。Redis 客户端、序列化、分布式缓存与两级缓存集中在 。 阅读目录",
      "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": "Java DB Redis 相关 Api Redis.use() 返回 RedisDb；分布式锁限制见 。 简介 Java DB 内置了许多与 Redis 相关的类，这些类可以简化 Redis 操作并提高开发效率。 相关类 以下是对 Redis 相关的文档说明： Redis 类 Redis 类是一个 Redis 工具类，提供了一组静态方法来简化 Red...",
      "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": "redis 使用示例 以下片段假设已按 启动插件，并导入 nexus.io.redis.Redis 和 nexus.io.redis.RedisDb。除独立给出导入的示例外，省略重复 import；资源在应用关闭时统一释放。 使用示例 示例 1：设置和获取字符串值 示例 2：操作整数值 示例 3：操作哈希表 示例 4：将对象存入哈希表 示例 5：操作列...",
      "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": "和 RedisTemplate 协作 问题描述 在之前的旧项目中，使用了 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 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": "hutool RedisDS 添加依赖,tio-boot 已经内置了 hutool-all 以来,包含 hutool-redis,主要添加 jedis 依赖即可 配置类 测试 Controller 这两段代码分别是配置类和控制器类的示例，用于在 Java 项目中使用 Hutool 的 RedisDS 类来配置和访问 Redis 数据库。 配置类 (Hu...",
      "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": "Redisson 本节解释如何使用 tio-boot 通过 Redisson 整合 redis Redisson 简介 什么是 Redisson Redisson 是一个强大的 Redis 客户端，提供了丰富的分布式数据结构和工具，适用于 Java 应用的高可扩展性和高并发需求。 Redisson 的主要用途 分布式数据结构：Redisson 提供标准...",
      "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 的区别 Caffeine 本身不会将数据存储到 Redis 中。如果想要将数据缓存到 Redis 中，需要使用专门为 Redis 设计的缓存解决方案，如 Spring Cache with Redis 或 Jedis。这些工具和库允许直接与 Redis 数据库交互，将数据存储...",
      "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": "使用 CacheUtils 整合 caffeine 和 redis 实现的两级缓存 配置类 CacheNameConfig 测试类 CacheCaffeineRedisTestController 访问 http://localhost/cache/caffeine/redis/test 查看测试结果",
      "keywords": [],
      "status": "document",
      "sha256": "2a646f61ebc398946da6c1a0a2802cf8c5ff345a2916e209e2dbb18137604b66"
    },
    {
      "id": "zh/28_redis/readme.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/readme.md",
      "source": "zh/28_redis/readme.md",
      "description": "28_redis 本章集中介绍 Redis 安装、接入、RedisPlugin / RedisDb API、数据操作、序列化互通及两级缓存。先完成 Docker 安装与连接验证，再阅读 java-db 整合，并根据项目选用 Jedis、Hutool 或 Redisson。 本章区分 java-db 的 RedisDb 和 tio-utils 的 Tio...",
      "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": "Mica-mqtt 添加依赖 这段代码主要涉及两个 Java 类，它们是用于配置和实现 MQTT 客户端的功能。让我们逐个进行解释： MqttClientConnectListener 类 这个类实现了 IMqttClientConnectListener 接口，用于监听 MQTT 客户端的连接状态。 方法: onConnected: 当客户端成功连接...",
      "keywords": [],
      "status": "document",
      "sha256": "34da39deb6746e819f56323274c564529a92eb4daf7eebe16c9e2bb925f1bcfa"
    },
    {
      "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": "EMQX tio-boot 整合EMQX 本文用来设置和运行一个基于 MQTT 协议的客户端程序，利用 Eclipse Paho MQTT 客户端库和 tio-boot 框架进行消息发布和订阅。 Maven 依赖 首先，<dependency>部分是 Maven 构建配置，用于在的项目中包含 Eclipse Paho MQTT 客户端库。 app.pr...",
      "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 背景 工作中遇到项目使用 Disruptor 做消息队列,对没看错,不是 Kafka,也不是 rabbitmq;Disruptor 有个最大的优点就是快,还有一点它是开源的哦,下面做个简单的记录. Disruptor 介绍 Disruptor 的 github 主页：https://github.com/LMAX-Exchange/...",
      "keywords": [],
      "status": "document",
      "sha256": "6b63657697373be677f40305b449e5213db3eb4f349181957694ea2ad9a45980"
    },
    {
      "id": "zh/29_mq/readme.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/readme.md",
      "source": "zh/29_mq/readme.md",
      "description": "29_mq 本章介绍 MQTT 接入（Mica MQTT、EMQX）与进程内事件处理（Disruptor）。Disruptor 是进程内组件，与独立消息代理的部署方式不同。Kafka 与 AWS MSK 见 。 阅读目录",
      "keywords": [],
      "status": "document",
      "sha256": "31fb8a6555fe6eef9349a325954089af5d44ac3f968730e8a3365b537e784c75"
    },
    {
      "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": "Kafka 本文演示如何在 tio-boot 项目中集成 Kafka，实现消息的生产与消费，并通过 HTTP 接口触发消息发送。 一、Kafka 安装与启动 Kafka 依赖 Zookeeper（新版本可用 KRaft，但这里用经典方式，简单稳定）。 Zookeeper 下载 ZooKeeper 3.9.5 下载目录 里面可以看到： apache-zo...",
      "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": "AWS MSK tio-boot-admin 的 Kafka 相关类使用包名 nexus.io.tio.boot.admin.kafaka。导入时请注意 kafaka 的拼写。 tio-boot整合AWS MSK 一、准备工作 接入前先确认这几件事： MSK 集群已创建 Topic 已存在，或者由程序自动创建 应用运行环境能访问 MSK 应用绑定的 A...",
      "keywords": [],
      "status": "document",
      "sha256": "80dd17a2de1899495974e5d5b110804f334d975f637f541229826d677eb6ca8d"
    },
    {
      "id": "zh/30_kafka/readme.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/readme.md",
      "source": "zh/30_kafka/readme.md",
      "description": "30_kafka 本章介绍 Apache Kafka 的接入以及 AWS Managed Streaming for Apache Kafka（MSK）相关配置。先阅读 Kafka，再按所用部署环境阅读 AWS MSK。MQTT 与进程内事件处理见 。 阅读目录",
      "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 概述 FixedTokenInterceptor 是 TioBoot 框架提供的一个内置 HTTP 请求拦截器，主要用于实现基于固定令牌的身份验证机制。该拦截器会检查 HTTP 请求头中的 authorization 字段，确保其值与预先配置的令牌一致，从而实现对 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": "TokenManager 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": "匿名登录 本章介绍如何创建匿名用户，以及在前后端交互中如何利用匿名登录接口完成用户身份的验证和授权。文档中包含了登录流程、接口说明、代码实现及其背后的关键技术细节和设计思路。 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.3 密码更新接口 请求 响应示例 3. 后端实现...",
      "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": "权限校验注解 在开发 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": "Sa-Token 概述 Tio-Boot 已经内置对 Sa-Token 的支持，为处理身份验证和授权提供了一种高效的方式。虽然 Tio-Boot 自带此支持，但仍需手动添加 sa-token-core 依赖。此外，如果希望将 Token 存储在 Redis 中，还需要添加 java-db、jedis 和 fst 依赖。 使用 Sa-Token 实现登录...",
      "keywords": [],
      "status": "document",
      "sha256": "1a2fdcd81d8b4595f76525424e8fd707a63c58191e49779cb6312651acb764de"
    },
    {
      "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": "sa-token 登录注册 在本章节中，我们将使用 tio-boot 和 Sa-Token 开发一个用户注册和登录系统。该系统将： 从 MySQL 数据库读取和存储用户信息。 生成用于认证的 JWT 令牌。 将会话数据存储在 Redis 中。 本示例将引导您完成以下步骤： 创建必要的数据库表。 添加项目所需的依赖。 配置应用程序属性。 设置应用程序、数...",
      "keywords": [],
      "status": "document",
      "sha256": "8ce6ee05fd5e336d5c2e05749bba6f3addf25063d5c4b469c0d49c7faae15428"
    },
    {
      "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": "StpUtil.isLogin() 源码解析 在现代 Web 应用中，用户身份验证与会话管理是确保系统安全性和用户体验的重要组成部分。本文将深入解析 StpUtil.isLogin() 方法的源码，帮助开发者更好地理解其工作原理及实现细节。 方法概述 StpUtil.isLogin() 方法用于判断当前会话是否已经登录。该方法返回一个布尔值：如果已登录...",
      "keywords": [],
      "status": "document",
      "sha256": "8c364373469d0c5321ab3fed7794dd6eabb6230ee9d352a9580e6388121dd601"
    },
    {
      "id": "zh/31_authentication/readme.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/readme.md",
      "source": "zh/31_authentication/readme.md",
      "description": "31_authentication 本章介绍 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: 用户名，可选。邮箱注册时可以不传，只传 email 即...",
      "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": "邮箱重置密码 本文档详细介绍了系统中重置密码功能的接口设计、流程说明及代码实现。该功能主要分为两个步骤： 获取验证码：用户输入邮箱后，系统向该邮箱发送验证码； 重置密码：用户将邮箱、验证码及新密码提交到后端，后端验证验证码有效后更新密码。 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": "腾讯云短信登录注册 概述 本指南旨在详细介绍如何实现基于短信验证码的用户登录和注册功能。通过使用腾讯云短信服务，系统能够在用户成功登录后自动创建新用户。本文涵盖了从短信模板配置、数据库设计、短信发送工具类开发，到接口实现和验证逻辑的全流程，适用于 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": "腾讯云短信重置密码 环境配置与平台字段 配置读取方式如下；完整服务还会检查必填项和有效期，避免空配置进入发送流程： 重置密码使用 TENCENT_SMS_RESET_PASSWORD_TEMPLATE_ID，绑定手机号使用 TENCENT_SMS_BIND_PHONE_TEMPLATE_ID；应用 ID、签名、区域、接口地址和有效期也由 EnvUtil...",
      "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": "阿里云短信登录和注册 1. 控制台准备与图片说明 申请资质、签名和模板 依次完成资质、短信签名、验证码模板和系统设置。短信签名、模板应审核通过，账户应有足够余额，调用身份应具有 dysms:SendSms 权限。 短信接入步骤 模板详情中确认模板 Code 和变量名。图中的 ${code} 是模板变量，调用时通过 TemplateParam 填充；图中...",
      "keywords": [],
      "status": "document",
      "sha256": "c91a7a67bf161443b30c6432515ae62577a4a6957b026311c8d6e42b6f29dd03"
    },
    {
      "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": "微信登录与绑定手机号 适用范围 微信小程序、移动应用和公众号网页使用不同的授权入口，不能混用授权码。 微信小程序登录与自动注册 客户端取得临时登录 code，通过 POST 交给业务服务端。 服务端从可信配置读取小程序 AppID、AppSecret，调用 https://api.weixin.qq.com/sns/jscode2session，传入 ...",
      "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": "微信小程序手机号快捷登录 概述 微信小程序手机号快捷登录由微信小程序客户端、业务服务端和微信开放接口共同完成。用户在小程序中主动授权手机号后，客户端取得两个不同用途的一次性凭证： uni.login 或 wx.login 返回的小程序登录 code，用于换取 openid 和 session_key。 getPhoneNumber 回调返回的手机号授权...",
      "keywords": [],
      "status": "document",
      "sha256": "b65bf53cf83b6a87cf9f819b0ec6bcd60d9ea48b88e5ad58acde03b9a89c8af6"
    },
    {
      "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 登录功能，包括前置准备、整体登录流程、后端接口及代码示例。通过本文档，您可以了解如何配置 Google 开发者平台、前后端交互细节、授权码交换、用户信息处理以及生成内部认证 token 的具体步骤。 目录 前置工作 登录流程 1. 是否需要后端支持 2. 前后端 Google 登录流程 请求接口...",
      "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": "阿里云邮件推送验证邮箱 本章用阿里云邮件推送（DirectMail）完成邮箱验证的发信环节，覆盖控制台准备、SMTP 与 SDK（OpenAPI）两种发送方式，以及和注册流程的对接点。 验证方式取值见：verification_type=1 发验证码邮件，2 发验证链接邮件。这两种都是\"把验证信息发给用户\"，发送成功不代表邮箱已验证，只有后端核验通过才...",
      "keywords": [],
      "status": "document",
      "sha256": "aa303aef2c61d7045a989ead8339e51e0656781d5038c7ece5daf64e1583c8f4"
    },
    {
      "id": "zh/32_third-party-auth/readme.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/readme.md",
      "source": "zh/32_third-party-auth/readme.md",
      "description": "32_third-party-auth 本章按邮件、短信和第三方身份提供方组织登录、注册及账号找回流程。基础 Token 与权限管理见；邮件服务等通用接入见。 验证类型 verification_type 表示验证方式，不局限于邮箱验证。 短信服务商由后端配置决定，腾讯云和阿里云使用相同的短信验证类型，不为每个服务商分配不同的值。后续新增方式时统一扩展...",
      "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": "ByteBuffer 简介 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": "AIO HTTP 服务器 创建简单的 HTTP 服务器 概述 AIO（Asynchronous I/O，异步 I/O）是一种能够在处理网络请求时提升效率的方式，它能够非阻塞地处理多个请求。与传统的阻塞 I/O 不同，AIO 通过异步事件通知机制减少了线程的等待时间。在 Java 中，可以使用 AsynchronousServerSocketChanne...",
      "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": "自定义和线程池和池化 ByteBuffer 背景与问题 在使用 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": "AioHttpServer 应用示例 IP 属地查询 简介 IP 属地查询在现代网络应用中是常见的功能。通过查询用户的 IP 地址，我们可以获取其地理位置信息，用于分析用户分布、增强安全性、个性化服务等场景。为了高效处理这一任务，本示例通过 Java 编写了一个异步 I/O (AIO) HTTP 服务器，结合 ip2region 库，实现了 IP 属地...",
      "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": "手写 AIO Http 服务器 本文将介绍一个手写的 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 中的虚拟线程与 AIO 引言 Java 21 引入了 虚拟线程（Virtual Threads），这是 Java 平台的一个重大更新，属于 Project Loom 项目的一部分。虚拟线程是轻量级的线程，实现了更高效的并发处理，特别是在处理大量 I/O 操作时。 在 Java 21 中，虚拟线程的引入改变了我们处理并发和 I/O 操作的...",
      "keywords": [],
      "status": "document",
      "sha256": "23ec51d333fd3f24839f1508d6dc3f33ae534781e2dbf1eda4ef31ec1fd6c5ec"
    },
    {
      "id": "zh/33_aio/assets/readme.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/readme.md",
      "source": "zh/33_aio/assets/readme.md",
      "description": "assets 本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 image-1.png: 图片资源，用于本目录文档配图或界面示意。 image-2.png: 图片资源，用于本目录文档配图或界面示意。 image-3.png: 图片资源，用于本目录文档配图或界面示意。 imag...",
      "keywords": [],
      "status": "document",
      "sha256": "de5f279a57b9323f5c1e526aa74caa2c7850f2e62d906b54077a38b914f172fe"
    },
    {
      "id": "zh/33_aio/readme.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/readme.md",
      "source": "zh/33_aio/readme.md",
      "description": "33_aio 本目录包含 7 个文件和 1 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《ByteBuffer》。 : 文档《AIO HTTP 服务器》。 : 文档《自定义和线程池和池化 ByteBuffer》。 : 文档《AioHttpServer 应用示例 IP 属地查询》。 : 文档《...",
      "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 核心优势与应用价值 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 消息处理流程 t-io 是一个高效的 Java 网络通信框架，它通过 Packet、ChannelContext、AioHandler 和 AioListener 等核心组件，处理 TCP 连接的数据收发和业务逻辑。以下是关于这些组件的详细介绍以及消息处理的过程。 1. Packet Packet 是用于表示业务数据结构的类。在使用 t-io...",
      "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 概述 TioBootServer 是 Tio 框架的核心启动类，负责初始化和启动 Tio 服务器。它提供了一个结构化的方式来配置和启动的服务器应用程序。在启动过程中，TioBootServer 将大量的类以静态变量的形式存储，使得开发者可以在框架启动前后进行灵活的配置和操作。 主要功能 初始化和启动: 通过 init 方法初...",
      "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": "独立端口启动 TCP 服务器 概述 T-io 是一个高性能、低延迟的 Java AIO 网络编程框架，可用于开发各类 TCP、UDP 或 WebSocket 应用。而 tio-boot 则是在 t-io 核心之上构建的快速开发框架，它通过约定优于配置和自动化注解，极大地简化了网络应用的开发流程。 tio-boot 提供了两种处理 TCP 数据的方式： ...",
      "keywords": [],
      "status": "document",
      "sha256": "84c393aab7f985165fd9805d31a906229e767a892f95135f75927790293fb1b8"
    },
    {
      "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": "内置 TCP 处理器 简介 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": "独立启动 UDPServer tio-boot 内置了 UDPServer,开发者口可以通过两种方式启动 独立方式 UDPServer 占用单独的端口 联合方式 UDPServer 和其他协议共用一个端口 操作系统会自动区分 TCP 和 UDP TCP 和 UDP 的区分是由操作系统的网络协议栈进行的。当数据包到达网络接口时，操作系统会检查数据包的协议...",
      "keywords": [],
      "status": "document",
      "sha256": "c41caaa007783804049fe46be374d47f5bd3a8b7dde0cc485c846e711ba68ecf"
    },
    {
      "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": "使用内置 UDPServer tio-boot 内置了 UDPServer tio-boot 内置了 UDP Server,只需要配置 UDPHandler 即可使用 将 UDPServer 和 TioBoot 配置为相同的端口即可,其他细节可以参考上一章节 参考文献 tiocloud 文档资料",
      "keywords": [],
      "status": "document",
      "sha256": "8c1a35e7aebe8c339ed89e4fcf85e1fc2993b750a223a28126c2d3632859eccc"
    },
    {
      "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": "TioConfig 场景介绍 在构建一个 TCP 服务器时，我们通常会先选择一个端口来监听客户端连接，然后创建多个线程池来执行相关任务，如消息发送、数据包解码、数据包处理等。此外，还需要维护与客户端连接相关的各种数据。为了实现与业务逻辑的互动，通常需要将客户端连接与业务数据绑定起来，例如将某个客户端绑定到一个群组、用户 ID、Token 等。 TioC...",
      "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 ChannelContext 对象是每个 TCP 连接建立后生成的一个关键对象。它是一个抽象类，具体取决于是使用 t-io 作为 TCP 客户端还是作为 TCP 服务器。如果使用 t-io 作为 TCP 客户端，那么将获得一个 ClientChannelContext 对象；如果使用 t-io 作为 TCP 服务器，那么将...",
      "keywords": [],
      "status": "document",
      "sha256": "1398fb11ed1d14f2546b9d6f5807c47c8c868737356081e833d2190d7e1c7c36"
    },
    {
      "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 来实现自己的业务数据结构。对于大家而言，可以将 Packet 看作一个普通的 VO（Value Object）对象。 注意：不建议直接使用 Packet 类，而是应该继承它来创建自定义的 Packet。 一个简单的 Packet 可能如下： 可以结合 AioHandler ...",
      "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 工具类 Tio是一个用于管理网络通信的核心类，特别是在处理客户端和服务器之间的连接、消息发送、连接绑定和关闭等功能。类包含了大量的用于管理网络连接、发送和接收数据包、处理连接状态、以及管理连接的黑名单等操作的方法。这些方法使得开发者可以在客户端和服务器之间有效地进行通信，并对连接进行精细化管理. 下面是每个方法的中文解释：Tio 静态内部类 I...",
      "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": "HTTP 长连接与高效文件传输 t-io 将 HTTP 连接复用、明文文件零拷贝和异步发送队列结合起来，使普通接口、文件下载和 TLS 通信共享一致的发送流程。一次响应完成后，框架释放本次资源、通知发送结果，并根据连接策略继续处理后续请求。 连接复用，减少重复握手 同一连接可以连续接收文件响应和普通响应。HTTPS 同样支持复用已建立的连接，有助于降低...",
      "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": "使用 AsynchronousSocketChannel 响应数据 tio-boot 的 HTTP 响应是异步的。如果想在业务处理完发送 HTTP 响应后执行一些额外的操作，可以参考本节内容。 tio-boot 异步发送 HTTP 响应 1. 获取 ChannelContext 首先，从 HttpRequest 中获取 ChannelContext，它...",
      "keywords": [],
      "status": "document",
      "sha256": "0e5b47f482696edf6d9b22794ae2b655824dd405a48ccda9ceb760661689f42d"
    },
    {
      "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": "e4475f1878719150f191bebaffbc9a1dc14bdddd048dc97ad3075a09ffd7b6cf"
    },
    {
      "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 与业务数据的关联关系。解绑操作非常重要，特别是在处理用户下线、会话过期等情况时。下面直接展示解绑操作的源代码： 资源解绑方法的详细说明 解绑业务 ID (unbindBsId) 解除 ChannelContext 与业务 ID 的关联。常用于业务逻辑...",
      "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 服务器： 如果 t-io 用作 ...",
      "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 进行排序： 说明 排序规则： 首先按照 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 在某些场景下，我们可能需要拉黑某些 IP 地址，以防止其访问我们的服务器。本文将演示如何在 Tio-Boot 中通过简单的代码实现 IP 拉黑功能。 代码实现 以下是一个基于 Tio-Boot 的简单 IP 拉黑控制器的实现： 代码说明 获取真实 IP 地址: 使用 HttpIpUtils.getRealIp(request) 获取客户端的...",
      "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（获取 SSL 证书、生成 JKS、在 t-io 中使用 SSL） 一些主流的 SSL 证书提供平台，如腾讯云和阿里云，已经提供了现成的 JKS 文件。因此，本文中描述的生成 JKS 证书的步骤可能并不适用，可以直接使用平台方提供的文件。 1. 申请 SSL 证书 SSL 证书可以通过阿里云等平台申请。当然，还有许多其他方式申请 S...",
      "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": "Https建立连接过程 1. DNS 解析 & 建立 TCP 连接 DNS 解析：curl 先向本地的 DNS 或者上游 DNS 服务器询问 jieti.cc 的 A/AAAA 记录。 三次握手：获得 IP（118.31.175.40）后，客户端发起 TCP SYN → 服务器回复 SYN-ACK → 客户端 ACK，至此 TCP 连接建立完毕。 2....",
      "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.beartbeat.timeout 指定了心跳超时时间，单位为毫秒。这个值表示当服务器在规定时间内未接收到来自客户端的心跳...",
      "keywords": [],
      "status": "document",
      "sha256": "92b633b337ea035e281a95daa8d9ef0d0a60d66e7e994956b1c32315fd36632e"
    },
    {
      "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 分钟为例： 配置 TioBoo...",
      "keywords": [],
      "status": "document",
      "sha256": "ddbb9d51e2a210ad9496495307b888c3a7e350b888f834bae626913afecc2136"
    },
    {
      "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 连接的流量数据 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 方法）： 字段 closed...",
      "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 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 GroupStat 是 ChannelStat 的集合，用于统计所有 TCP 通道的流量数据和状态。它有两个子类：ServerGroupStat 和 ClientGroupStat。当 t-io 用作 TCP 服务器时，将获取 ServerGroupStat，反之则获取 ClientGroupStat。 如何获取 G...",
      "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": "tio-运行原理详解 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": "DecodeRunnable 概述 t-io 对数据的解码过程是在 DecodeRunnable 中完成的，每个 TCP 连接对应一个 DecodeRunnable 实例。除了正常的解码外，半包和粘包的处理也都在 DecodeRunnable 中完成。 源代码 以下是 DecodeRunnable 类的源代码： 源代码解说 半包处理 在 TioHand...",
      "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 稳定性设计与资源管理 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 源码：构建高性能 Java 网络应用 在现代网络应用中，处理大量并发连接和高效的数据传输是至关重要的。Tio（简称 t-io）作为一个基于 Java 的高性能网络通信框架，旨在简化这一过程。本文将基于提供的代码片段，深入解析 t-io 的源码结构和关键技术细节，帮助开发者更好地理解并应用这一框架。 目录 Tio 框架概述 核心配置类：...",
      "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": "HTTP、WebSocket 与 TCP 的缓冲区复用 t-io 为 HTTP、WebSocket 和 TCP 提供统一的读取缓冲区管理，并通过 EncodedBuffer 将编码输出和回收责任一同交给异步发送任务。接收侧连续读取、发送侧池化编码与完成后回收相互配合，减少重复分配，适合长期运行的网络服务。 三种协议的使用方式 下表描述框架通过 enco...",
      "keywords": [],
      "status": "document",
      "sha256": "e0cf81ce4137e586255251ce97dc69be3a592a6c28663d238ac86b1e3554e486"
    },
    {
      "id": "zh/34_tio/assets/readme.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/readme.md",
      "source": "zh/34_tio/assets/readme.md",
      "description": "assets 本目录包含 5 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 01.png: 图片资源，用于本目录文档配图或界面示意。 02.jpg: 图片资源，用于本目录文档配图或界面示意。 03.png: 图片资源，用于本目录文档配图或界面示意。 04.png: 图片资源，用于本目录文...",
      "keywords": [],
      "status": "document",
      "sha256": "ead06b47b89353b86a803f08cf504de24d6e48d92e236e67994fe1c4e26baa5f"
    },
    {
      "id": "zh/34_tio/readme.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/readme.md",
      "source": "zh/34_tio/readme.md",
      "description": "34_tio 本章按“认识框架 → 快速上手 → 核心概念 → 业务应用 → 深入原理”的路线组织。首次阅读建议从核心优势与消息处理流程开始；已有使用经验时，可直接进入所需主题。 认识 t-io 快速上手 核心概念 消息与文件传输 连接管理 加密通信 心跳与监控 深入原理 配图资源",
      "keywords": [],
      "status": "document",
      "sha256": "ff10d6c6ac95dcdba3613b945bcc30190f5c1bb561a165fbdb7418ae93d13850"
    },
    {
      "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": "使用 Tio-Http-Server 搭建简单的 HTTP 服务 如果的项目无需 WebSocket 功能，且对性能有较高要求，那么可以考虑使用 tio-http-server 作为 HTTP 服务的基础。tio-http-server 是一款高性能的 Java HTTP 服务框架，专为满足低延迟、高并发场景而设计。本文将介绍如何使用 tio-http...",
      "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 添加 HttpRequestHandler tio-boot 支持的两种组件最 http 请求进行处理 handler controller 注意 1.handler 的优先级高于 controller 2.handler 不支持参数封装,只能接受形参 HttpRequest,返回 HttpResponse 3.handler 在性能...",
      "keywords": [],
      "status": "document",
      "sha256": "bf10e0cb810aa0fe46f87054e635a628d4c42e65b530f8d0eb390a7facfa0bf9"
    },
    {
      "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": "在 Android 上使用 tio-boot 运行 HTTP 服务 本文档详细介绍了如何在 Android 设备上使用 tio-boot 框架运行轻量级 HTTP 服务。tio-boot 基于 TIO 通信协议，实现了高性能、易用的 HTTP 服务能力，非常适合嵌入式或移动端场景。以下各步将带从环境准备，到代码编写，再到最终测试，一气呵成地完成部署。 ...",
      "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-native 将基于 tio-http-server 的 jar 编译成二进制文件运行 pom.xml 启动类 实体类 Controller maven and jdk 打包成二进制文件 打包过程中执使用的 native-image 命令如下 编译成功,编译过重中日志如下 测试启动成功 访问测试接口 http://loc...",
      "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 上传文件 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 与 tio-boot 的使用边界 tio-http-server 提供 HTTP 服务与 Handler 等底层能力；tio-boot 在其上提供应用启动、配置、Controller、拦截器和扩展集成。两者文档中的启动方式不能直接混合。 如何选择 已有 tio-boot 服务时，通过其 TioBootServer 路由器...",
      "keywords": [],
      "status": "document",
      "sha256": "ecb17867b2ee261a6f8079a2a62056f5347f59a2f5fa0d86cccdadb7c9143eb3"
    },
    {
      "id": "zh/35_tio-http-server/readme.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/readme.md",
      "source": "zh/35_tio-http-server/readme.md",
      "description": "35_tio-http-server 本目录包含 7 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 Tio-Http-Server 搭建简单的 HTTP 服务》。 : 文档《tio-boot 添加 HttpRequestHandler》。 : 文档《在 Android 上...",
      "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": "WebSocket 服务器 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 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": "TCP 数据转发 tio-websockify 使用 tio-boot 提供 WebSocket 与 TCP 双向二进制转发，内置 noVNC 页面。 转发流程 浏览器连接 /websockify 后，服务读取 EnvUtils.getStr(\"vnc-server\")，为该浏览器建立独立的 TCP 连接。前端二进制消息封装为 BytePacket，后...",
      "keywords": [],
      "status": "document",
      "sha256": "b63d6c0f3adac6b577d5378059a23b70675dfe68afc35e4619c9ea8c516f267f"
    },
    {
      "id": "zh/36_tio-websocket/readme.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/readme.md",
      "source": "zh/36_tio-websocket/readme.md",
      "description": "36_tio-websocket 本章介绍 WebSocket 服务端、客户端、TCP 转发及远程桌面容器部署。 文件清单 : 当前目录的导航与文件摘要。 : 文档《WebSocket 服务器》。 : 文档《WebSocket Client》。 : 文档《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": "Netty TCP Server Introcution Netty 简介 Netty 是一个基于 Java 的网络应用框架，用于快速开发高性能、高可靠性的网络服务器和客户端。Netty 简化了网络编程，提供了异步事件驱动的网络应用程序框架，使开发人员可以专注于业务逻辑的实现，而不用处理复杂的底层网络通信细节。 Netty 的基本概念 Channel:...",
      "keywords": [],
      "status": "document",
      "sha256": "c9ed439e3cf9ad3aef3be0e4ccc1c4e5f31f6b7252bc88db5ceee9d4f131feae"
    },
    {
      "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": "Netty Web Socket Server WebSocket 的优势 在多次交互场景下，WebSocket 通过以下几种方式显著提升了性能，相比于传统的 HTTP 协议更加适合实时应用场景： 持久连接: HTTP: 每次请求都需要重新建立和关闭 TCP 连接，这在高频次请求场景下增加了延迟和资源开销。 WebSocket: 连接一旦建立后会保持持...",
      "keywords": [],
      "status": "document",
      "sha256": "5367cf0f78fbf211f9e079e2b9830e7d99a03712d5e93711177fc55bf2afcddd"
    },
    {
      "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 生成 Java 包文件 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": "Netty WebSocket Server 二进制数据传输 简介 在之前的章节中，我们已经完成了以下两部分操作： 编写了一个 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": "Netty 组件详解 ChannelFuture 在 Netty 中，ChannelFuture 是由 Channel 提供的。具体来说，ChannelFuture 是在执行与 I/O 操作相关的方法时返回的。例如，当调用 Channel 的 write() 方法或 connect() 方法时，这些方法会返回一个 ChannelFuture 对象，用于...",
      "keywords": [],
      "status": "document",
      "sha256": "126ec42b6bbaad80ab79f4ef3f8883c4e3d7b7cc85cdfd90c764e0c1b287d346"
    },
    {
      "id": "zh/37_netty/readme.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/readme.md",
      "source": "zh/37_netty/readme.md",
      "description": "37_netty 本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Netty TCP Server》。 : 文档《Netty Web Socket Server》。 : 文档《使用 protoc 生成 Java 包文件》。 : 文档《Netty WebSocket...",
      "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-Boot 是一个基于 Netty 的轻量级 Web 中间件框架，专为高性能 Web 应用开发而设计。它充分利用了 Netty 的高效 IO 模型，支持快速开发高并发的 Web 服务。该框架整合了多种常见的中间件，包括 PostgreSQL、Redis、MongoDB、Elasticsearch、消息队列（MQ）、...",
      "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 请求处理流程解析 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": "整合 Hot Reload Netty-Boot 整合 Hotswap-ClassLoader 实现热加载 简介 在开发过程中，为了提高开发效率，通常会需要实时修改代码后立即生效，而无需重启整个应用程序。hotswap-classloader 提供了一个高效的解决方案，能够在不重启 JVM 的情况下，实现类的动态替换。本文将介绍如何将 hotswap-...",
      "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 数据库，并进行简单的查询操作。 数据库连接原理 数据库连接在 J...",
      "keywords": [],
      "status": "document",
      "sha256": "c720f3d4817058051a3ac1a530124613f31e9c28fbfa581b8ff16a27fe2932be"
    },
    {
      "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": "整合 Redis 在 Netty-Boot 项目中，通过 java-db 和 jedis 可以快速、高效地连接和操作 Redis 数据库。Redis 作为一个高性能的键值对存储系统，能够支持多种数据结构，同时具备高可扩展性和极快的响应速度。本文将展示如何在 Netty-Boot 中配置和使用 Redis，并对其工作原理进行详细解析。 Redis 连接原...",
      "keywords": [],
      "status": "document",
      "sha256": "b9331ad478e10c41dc280a399262cf89c508736ddc76b236151add9021c7aa47"
    },
    {
      "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": "整合 Elasticsearch 在 Netty-Boot 项目中，推荐使用 java-db 连接 Elasticsearch，这能够简化与 Elasticsearch 的交互。Elasticsearch 是一个分布式搜索和分析引擎，广泛用于全文搜索、日志分析等场景。通过整合 java-db 和 elasticsearch-rest-high-leve...",
      "keywords": [],
      "status": "document",
      "sha256": "17e1688c2c5bd161def439794b8ba062238c5159a96912b9ebc85e12079b6da7"
    },
    {
      "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": "整合 Dubbo 推荐使用 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": "Listener Netty-Boot 自定义 ChannelConnectionListener 在基于 Netty 的应用程序中，监听客户端的连接和断开是非常重要的需求。Netty-Boot 提供了 ChannelConnectionListener 接口，开发者可以通过实现该接口，自定义处理客户端的连接和断开事件。本文将介绍如何在 Netty-B...",
      "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 处理文件上传，并解析其工作原理。 文件上传原理 HTTP POST 和 multipart/fo...",
      "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": "05879e378f46023be166e207c42795089f63441730918c62521940d946353b3b"
    },
    {
      "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-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": "SSL 配置指南 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 自定义 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": "Reserve",
      "keywords": [],
      "status": "placeholder",
      "sha256": "6db42f0a1066005ebc923b35e3c4fbfcccc4fcdf09e882c466842bda8386ee5a"
    },
    {
      "id": "zh/38_netty-boot/readme.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/readme.md",
      "source": "zh/38_netty-boot/readme.md",
      "description": "38_netty-boot 本目录包含 15 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Netty-Boot》。 : 文档《原理解析》。 : 文档《整合 Hot Reload》。 : 文档《整合 数据库》。 : 文档《整合 Redis》。 : 文档《整合 Elasticse...",
      "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": "整合 okhttp 在现代 Java 应用开发中，高效的 HTTP 客户端管理至关重要。本文将介绍如何在 tio-boot 框架中整合 OkHttp，以及几种常见的 OkHttpClient 管理方式，包括使用 Bean 容器管理、单例枚举模式以及设置代理的方法。 添加依赖 将 OkHttpClient 添加到 Bean 容器 在 tio-boot 中...",
      "keywords": [],
      "status": "document",
      "sha256": "996064b69481a72029da2ff9ffaf370c659e6f5f7691391cabaa7447d231c0d8"
    },
    {
      "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": "整合 GrpahQL GraphQL 简介 GraphQL 提供了一种灵活、高效的数据查询方式，广泛应用于现代 web 和移动应用开发中。 GraphQL 是一种用于 API 的查询语言以及服务器端的运行环境，它通过给予客户端请求所需数据的能力来提供更高效、灵活的交互。GraphQL 由 Facebook 于 2012 年开发，并于 2015 年开源。...",
      "keywords": [],
      "status": "document",
      "sha256": "37ef89fa41f61dc77b0f61546964d2180e9228916795ad66683bac60dc401ee2"
    },
    {
      "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": "集成 Mailjet 本文档旨在指导开发者如何在 Java 项目中集成 Mailjet 以实现邮件发送功能。内容涵盖了 Maven 依赖配置、应用配置文件设置、工具类封装以及测试方法。此外，还介绍了如何使用封装好的工具类在 Enjoy 框架中发送邀请邮件，并提供了相关的邮件模板和代码示例。 Maven 依赖配置 在项目的 pom.xml 文件中添加 M...",
      "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 使用 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 离线库 整合 GeoLite 离线库：Java 通过 IP 获取地理位置信息 本文档介绍如何使用 GeoIP2 的离线库 GeoLite2-City，通过 Java 代码获取 IP 地址对应的地理信息。通过该示例，读者可以了解到如何获取城市、国家、经纬度以及邮政编码等数据，同时了解哪些信息需要额外的数据库支持。 1. GeoIP ...",
      "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 机器人指南 本指南将介绍如何将 Lark 机器人集成到您的应用程序中。我们将介绍两种集成方式： 使用 LarksuiteNotificationUtils 工具类 使用 Lark 官方 SDK (oapi-sdk) 目录 使用 LarksuiteNotificationUtils 添加机器人 推送消息 使用 Lark 官方 SDK (o...",
      "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": "集成 Lark Mail 实现邮件发送 本文档介绍如何基于 Lark Mail 实现邮件发送功能。通过继承 Lark Mail 接口并调用内部封装的邮件发送工具，我们可以方便地对接 smtp.larksuite.com 的 SMTP 服务，实现邮件发送。下面将详细介绍如何在项目中集成及使用这一功能。 实现现状：第 3 节里的 EMail 接口与 IEM...",
      "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": "Thymeleaf 1.简介 Thymyleaf 是一个用于在 Java Web 应用程序中渲染动态 HTML 内容的模板引擎。它通过使用特定的模板标签语法，使得在 HTML 文件中可以动态插入变量、循环、条件判断等逻辑，从而生成最终的 HTML 页面。Thymyleaf 非常适合用来生成服务器端渲染的网页，也可以用于生成 HTML 邮件内容。 2. ...",
      "keywords": [],
      "status": "document",
      "sha256": "d264039ae9abeffc21a576f05b8f968cc20b98c95e33f67bf8e151a1d1c6f724"
    },
    {
      "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": "Swagger 在现代 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": "Clerk 验证 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": "集成datadog 1.注册账号 https://www.datadoghq.com/#",
      "keywords": [],
      "status": "document",
      "sha256": "f60422cfa5caab187e7b2ff5cb47afb6a8f7ca7e33aa9ee2d88215bc04ca1adf"
    },
    {
      "id": "zh/39_integrations/readme.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/readme.md",
      "source": "zh/39_integrations/readme.md",
      "description": "39_integrations 本目录包含 19 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《整合 okhttp》。 : 文档《整合 GrpahQL》。 : 文档《集成 Mailjet》。 : 文档《整合 ip2region》。 : 文档《整合 GeoLite 离线库》。 :...",
      "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": "tio-boot 与 magic-script 集成指南 本指南演示如何在基于 JVM 的动态脚本框架 magic-script 中，快速集成并在 tio-boot 项目中执行脚本。 1. 概述 magic-script 是一个基于 JVM 的动态脚本引擎，支持类似 JavaScript 的语法，并且可以方便地与 Java 应用集成。通过将脚本与 ti...",
      "keywords": [],
      "status": "document",
      "sha256": "fdaa591b9140406d586f727ad1da128f54af1135f04ff8e2f8d74355f23ba805"
    },
    {
      "id": "zh/40_magic-script/readme.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/readme.md",
      "source": "zh/40_magic-script/readme.md",
      "description": "40_magic-script 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《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": "tio-boot 整合 Groovy 在现代 Java 开发中，为了提高开发效率和代码灵活性，Groovy 作为一种运行在 Java 平台上的动态语言，被广泛应用于快速开发、脚本编写、自动化测试以及构建工具中。本文介绍了 Groovy 的主要特点、在 tio-boot 中整合 Groovy 脚本的实现方式，以及详细的代码示例和说明。 1. 什么是 Gr...",
      "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/readme.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/readme.md",
      "source": "zh/41_groovy/readme.md",
      "description": "41_groovy 本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-boot 整合 Groovy》。 : 文档《调试常用脚本》。",
      "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": "jsoup jsoup 是一个用于解析、提取和处理 HTML 的 Java 库。它提供了一个非常方便的 API，可以让开发者轻松地从 URL、文件或字符串中解析 HTML，并提取所需的内容。本文将带深入了解 jsoup 的基础知识、核心对象以及常用的选择器语法，并通过实际案例演示其应用。 jsoup 基础 1.1 jsoup 入门案例 1.1.1 创建...",
      "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 数据 本文将详细介绍如何对 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 使用 WebMagic 进行网页爬取并入库 本文档详细介绍如何使用 Java 和 WebMagic 进行网页爬取，包括添加依赖项、创建 PageProcessor 进行网页解析、创建 Pipeline 将爬取的数据存入数据库，以及运行爬虫的过程。 示例目标网页：https://www.sis.hawaii.edu/uhdad/a...",
      "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 示例：爬取学校课程数据 目标是使用 WebMagic 框架构建一个完整的爬虫示例，从夏威夷大学的课程数据网页中自动提取并存储课程相关信息到数据库中。整个过程包括以下几个关键步骤： 数据分析：分析目标网页的 HTML 结构，确定需要爬取的内容及其位置，例如机构列表、学期信息、学科列表、课程详细信息等。 数据库表设计：为每个爬取的数据类型...",
      "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": "Playwright 简介 1. 什么是 Playwright Playwright 是一个由微软开发的现代化网页自动化测试和浏览器操作工具。它支持多种浏览器，包括 Chromium、Firefox 和 WebKit，并提供一致的跨浏览器 API。以下是 Playwright 的一些关键特点： 多浏览器支持：Playwright 支持 Chromium...",
      "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": "Flexmark (Markdown 处理器) 简介 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": "tio-boot 整合 Playwright 简介 在使用 Playwright 进行网页数据抓取时，每次启动 Playwright 都会带来较大的性能开销。为了解决这一问题，可以在服务启动时初始化 Playwright，并在服务关闭时正确释放资源，从而显著提升性能。本文将介绍如何使用 TioBoot 整合 Playwright，实现高效的网页数据获取...",
      "keywords": [],
      "status": "document",
      "sha256": "8898b4e880c67c050f76d23753dd6e5ec39fa71515c36f65e2c6b60b40757c12"
    },
    {
      "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/readme.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/readme.md",
      "source": "zh/42_crawling/readme.md",
      "description": "42_crawling 本目录包含 15 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《jsoup》。 : 文档《爬取 z-lib.io 数据》。 : 文档《整合 WebMagic》。 : 文档《WebMagic 示例：爬取学校课程数据》。 : 文档《Playwright》。 ...",
      "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": "dubbo 2.6.0 Introduction dubbo Dubbo 作为一款微服务框架，最重要的是向用户提供跨进程的 RPC 远程调用能力。如上图所示，Dubbo 的服务消费者（Consumer）通过一系列的工作将请求发送给服务提供者（Provider）。 为了实现这样一个目标，Dubbo 引入了注册中心（Registry）组件，通过注册中心，服...",
      "keywords": [],
      "status": "document",
      "sha256": "38c48dc47efb0b16d2e65c00b68f031acd9f6c384a4078bff0485e45be499c4b"
    },
    {
      "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 2.6.0 调用过程 异常堆栈 让我们分析这个异常堆栈，从下往上讲解 Dubbo 的调用过程： 线程启动 (java.lang.Thread.run): 调用链的起点是 Java 线程的启动。Thread.run 方法是所有线程执行的入口。 线程池执行 (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": "dubbo 3.2.0 添加依赖",
      "keywords": [],
      "status": "document",
      "sha256": "79a2fcf9db24a305ac4656b82f46ce3793e60a14e23ac3f037e385296cf6f440"
    },
    {
      "id": "zh/43_dubbo/readme.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/readme.md",
      "source": "zh/43_dubbo/readme.md",
      "description": "43_dubbo 本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《概述》。 : 文档《dubbo 2.6.0》。 : 文档《dubbo 2.6.0 调用过程》。 : 文档《dubbo 3.2.0》。 image.png: 图片资源，用于本目录文档配图或界面示意。",
      "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 Web 整合 Tio Boot 本文将详细讲解如何使用 Spring Boot 整合 Tio Boot，实现两者各自优势的互补： 使用 Spring Boot 内置的 Servlet 容器和 Controller 机制 利用 Tio Boot 的其他功能，如数据库操作、AOP 容器以及高性能的服务支持 整合之后的架构可以实现： ...",
      "keywords": [],
      "status": "document",
      "sha256": "3c4ac4b3cac940440d11a5637881e076958dd295fab76abec53c01050a3c7e13"
    },
    {
      "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": "spring-boot-starter-webflux 整合 tio-boot 本文档提供了如何将 tio-boot-server 集成到使用 spring-boot-starter-webflux 的项目中。默认情况下，Spring WebFlux 使用 Netty 作为网络处理层。本文档将引导如何将 tio-boot-server 作为替代品整合到...",
      "keywords": [],
      "status": "document",
      "sha256": "841826438d0f89571efda0e892a22f7e25654e7442b7a145e97c33f420a376bf"
    },
    {
      "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": "tio-boot 整合 spring-boot-starter tio-boot 整合 spring-boot-starter：启动原理与全流程解析 本文给出一套可落地的整合方案：在同一进程中以 tio-boot 作为主启动与路由入口，在 tio-boot 初始化阶段拉起 Spring Boot 容器，并通过 AOP/IOC 桥接实现 @Autowir...",
      "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": "Tio Boot 整合 Spring Boot Starter db 简介 传统上，我们通过引入 spring-boot-starter-web，将 Spring Boot 的 Controller 与 Tio Boot 的 Service 进行整合。然而，这种方法虽然可行，但却丢失了 Tio Boot 在处理请求时的异步和非阻塞特性。 为了解决这一问...",
      "keywords": [],
      "status": "document",
      "sha256": "6bf23d0e9bd060077e4adee25f7291c865711dea51a3173143c6a15bdbc05d8c"
    },
    {
      "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": "Tio Boot 整合 Spring Boot Starter Data Redis 指南 引言 在现代 Java 开发中，Tio Boot 是一个高性能的异步非阻塞网络框架，而 Spring Boot 则是一个简化 Spring 应用开发的快速开发框架。将两者结合，可以构建出高性能且易于维护的应用程序。 本指南将详细介绍如何将 Tio Boot 与 ...",
      "keywords": [],
      "status": "document",
      "sha256": "5cb3aaabf7483bf25808cff224b28ba72aae220be3e64d7c21b8354071b12fbc"
    },
    {
      "id": "zh/44_spring/readme.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/readme.md",
      "source": "zh/44_spring/readme.md",
      "description": "44_spring 本目录包含 6 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Spring Boot Web 整合 Tio Boot》。 : 文档《spring-boot-starter-webflux 整合 tio-boot》。 : 文档《tio-boot 整合 spri...",
      "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 概述 tio-boot 完全支持 spring-cloud 仅仅是 web 中间件使用 tio-boot-server,其他组件仍然是 spring-cloud tio-boot, Spring Cloud, 和 Consul 整合 tio-boot, Spring Cloud, 和 Consul 实现服务注...",
      "keywords": [],
      "status": "document",
      "sha256": "3b8aa31672b0281c941628b5a15738f86419a1c69b91106ce3a4a14f11cf0146"
    },
    {
      "id": "zh/45_spring-cloud/readme.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/readme.md",
      "source": "zh/45_spring-cloud/readme.md",
      "description": "45_spring-cloud 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《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": "Quarkus（无 HTTP）整合 tio-boot（有 HTTP） 同 JVM 架构完整方案说明 一、背景与问题动机 在 Java 服务架构中，常见的两类诉求往往是冲突的： 高性能、可控的网络层 希望完全掌控端口、协议、路由、线程模型（tio-boot 非常擅长） 成熟、强大的后台能力 希望使用 CDI、配置、生命周期管理、生态组件（Quarkus ...",
      "keywords": [],
      "status": "document",
      "sha256": "2cf2bbbea0d442a03c9fa2e09f30f91d8a93fd83f0fff5243f577e1dffeac3e0"
    },
    {
      "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": "tio-boot + Quarkus + Hibernate ORM Panache 1. 设计目标回顾 tio-boot 唯一对外 HTTP/网络入口 管端口、路由、handler、协议 Quarkus 只做后台运行时容器 提供 CDI（Arc）、事务（@Transactional）、ORM（Hibernate + Panache）、数据源/连接池 ...",
      "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": "tio-boot + Quarkus + Hibernate ORM Panache + jOOQ 整合方案 1. 架构目标升级 在既有设计中： tio-boot 唯一对外 HTTP / 网络入口，负责端口、协议、路由与 handler。 Quarkus 仅作为后台运行时容器，提供： CDI（Arc） 事务（JTA / @Transactional） ...",
      "keywords": [],
      "status": "document",
      "sha256": "2a32ec3c9b89292ca6ba04f3d086a9ec90f54c7b748a04d80dab20003114a068"
    },
    {
      "id": "zh/46_quarkus/readme.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/readme.md",
      "source": "zh/46_quarkus/readme.md",
      "description": "46_quarkus 本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Quarkus（无 HTTP）整合 tio-boot（有 HTTP）》。 : 文档《tio-boot + Quarkus + Hibernate ORM Panache》。 : 文档《tio-b...",
      "keywords": [],
      "status": "document",
      "sha256": "283a1f3309dd5580c3c3b9d0d394dc6df2d15dee0c329854a30c8b622f90ffdc"
    },
    {
      "id": "zh/47_telegram4j/01.md",
      "title": "数据库设计",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/01.md",
      "source": "zh/47_telegram4j/01.md",
      "description": "数据库设计 本章节介绍如何使用 tio-boot+大模型+telegram 开发一个翻译机器人,本节仅仅仅仅介绍数据库部分 openai 前往 openai 申请 key 过程略 telegram 创建 telegram 机器人 过程略 数据库 数据表设计 max_kb_sentence_tanslate_cache",
      "keywords": [],
      "status": "document",
      "sha256": "e5679a067200b2c42400e41ab6f7025bbe6c72adaa38115cf81f882dadfec15d"
    },
    {
      "id": "zh/47_telegram4j/02.md",
      "title": "基于 HTTP 协议开发 Telegram 翻译机器人",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/02.md",
      "source": "zh/47_telegram4j/02.md",
      "description": "基于 HTTP 协议开发 Telegram 翻译机器人 本文档旨在指导开发者如何使用 HTTP 协议开发一个具有翻译功能的 Telegram 机器人。文中详细描述了机器人的创建、Webhook 配置、翻译提示词编写、翻译服务的实现以及 Tio Boot 与 Telegram Bot 的整合，同时附有完整的 Java 代码示例，便于开发者参考与实践。 1...",
      "keywords": [],
      "status": "document",
      "sha256": "f64035fb36f8b43415a8542397f3ada8fb3e1b3be9113162fd8487f3e1d24e51"
    },
    {
      "id": "zh/47_telegram4j/03.md",
      "title": "基于 MTProto 协议开发 Telegram 翻译机器人",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/03.md",
      "source": "zh/47_telegram4j/03.md",
      "description": "基于 MTProto 协议开发 Telegram 翻译机器人 本文档旨在指导开发者使用 MTProto 协议开发一个具备翻译功能的 Telegram 机器人。通过配置 Telegram 应用、添加必要的依赖项，并结合提供的 Java 代码示例，您可以实现一个高效且功能丰富的翻译机器人。 简介 Telegram 机器人是一种基于 Telegram 平台的...",
      "keywords": [],
      "status": "document",
      "sha256": "8bd83ca146d830dd5879906eafab8c58de6e432aed9a389ee0b3998e7e4a88b5"
    },
    {
      "id": "zh/47_telegram4j/04.md",
      "title": "过滤旧消息",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/04.md",
      "source": "zh/47_telegram4j/04.md",
      "description": "过滤旧消息 在开发 Telegram 机器人时，机器人上线后可能会接收到大量旧消息。为了提升性能和用户体验，过滤这些旧消息是非常必要的。本文将详细介绍如何通过分析消息结构和实现代码来过滤机器人自身发送的旧消息。 问题描述 当 Telegram 机器人启动后，它可能会接收到大量历史消息。这些旧消息不仅会占用资源，还可能导致不必要的处理。因此，如何有效地过...",
      "keywords": [],
      "status": "document",
      "sha256": "98f4663c93f9ecf1132116d392500fd2d8e274c0f48dd26d7114e0061e976131"
    },
    {
      "id": "zh/47_telegram4j/05.md",
      "title": "保存机器人消息",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/05.md",
      "source": "zh/47_telegram4j/05.md",
      "description": "保存机器人消息 引言 在开发 Telegram 机器人时，经常需要对接收到的消息进行存储和处理，以便于后续的分析和响应。为了高效地实现这一需求，我们需要深入理解消息的数据结构，提取关键信息，并设计合理的数据库表结构。本文将详细介绍如何从 SendMessageEvent 中提取必要的数据，设计数据库表，并实现消息的存储。 1. SendMessageE...",
      "keywords": [],
      "status": "document",
      "sha256": "37250da63e080b839baf8d4da947a24d312fff69576a76e6526be218366c637a"
    },
    {
      "id": "zh/47_telegram4j/06.md",
      "title": "定时推送",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/06.md",
      "source": "zh/47_telegram4j/06.md",
      "description": "定时推送 在本节中，我们将指导您如何为 Telegram 翻译机器人添加定时推送功能。具体包括创建一个 Telegram 群组，并配置机器人定时向该群组推送指定的文章。通过这种方式，您可以实现定期分享内容，提高群组的活跃度和用户参与度。 步骤概述 创建一个 Telegram 群组 配置机器人加入群组 实现定时推送功能 测试与验证 步骤详解 1. 创建一...",
      "keywords": [],
      "status": "document",
      "sha256": "ba39a5f16f979a5ce847fa4da16b1dd267ac798ded92be25c7a9ac1e86503f98"
    },
    {
      "id": "zh/47_telegram4j/07.md",
      "title": "增加命令菜单",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/07.md",
      "source": "zh/47_telegram4j/07.md",
      "description": "增加命令菜单 引言 本文档旨在指导开发者如何为 Telegram 机器人添加命令菜单，以提升用户交互体验。通过详细的代码示例和解释，读者将学习如何使用 BotFather 或通过编程方式动态管理机器人命令菜单。本文还介绍了如何过滤命令消息以及封装路由，以实现更灵活和可维护的机器人功能。 增加命令菜单 为机器人增加命令菜单有两种主要方式： 通过 BotF...",
      "keywords": [],
      "status": "document",
      "sha256": "a57b566ef7c33241ea0211d9ba26be6d496b46eb142cfc9713252cf9ad9d1920"
    },
    {
      "id": "zh/47_telegram4j/08.md",
      "title": "使用 telegram-Client",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/08.md",
      "source": "zh/47_telegram4j/08.md",
      "description": "使用 telegram-Client telegram-client 是基于 telegram4j-core 开发的库，旨在简化 Telegram 消息的处理。本文将介绍如何使用 telegram-client 来处理消息和命令，包括依赖配置、事件适配器、命令处理以及客户端配置等内容。 添加依赖 首先，在项目的 pom.xml 文件中添加 telegr...",
      "keywords": [],
      "status": "document",
      "sha256": "cdf875e88c247091bbfa8c83c38c5e47469563be1613d33ed262d200e2d6796f"
    },
    {
      "id": "zh/47_telegram4j/09.md",
      "title": "使用自定义 StoreLayout",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/09.md",
      "source": "zh/47_telegram4j/09.md",
      "description": "使用自定义 StoreLayout 本指南详细介绍了如何通过使用自定义 StoreLayout 将 Telegram 频道的基本信息和详细信息存储到数据库中。通过此方法，可以减少对 Telegram 服务端的频繁调用，提高数据访问的效率和响应速度。 ChannelInfo 数据 ChannelInfo 主要包含两个核心属性： min：类型为 Immut...",
      "keywords": [],
      "status": "document",
      "sha256": "dd27b4a805a3686da1d59a91b5a542f97590c10483c4a720ed43e04e7730a12e"
    },
    {
      "id": "zh/47_telegram4j/10.md",
      "title": "延迟测试",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/10.md",
      "source": "zh/47_telegram4j/10.md",
      "description": "延迟测试 本文档详细介绍了一个用于测试服务器与 Telegram 服务器之间延迟的功能实现。该功能通过 Telegram 机器人发送消息并测量响应时间，以评估网络延迟情况。 功能概述 该功能通过 Telegram 机器人执行以下步骤： 发送初始消息：机器人向用户发送一条内容为 \"Wait a second...\" 的消息，提示用户等待。 编辑消息内容：...",
      "keywords": [],
      "status": "document",
      "sha256": "ea7b761493e76c16e21f5928e98657ae842a27c832c14282949d326a0a8e2817"
    },
    {
      "id": "zh/47_telegram4j/11.md",
      "title": "Reactor 错误处理",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/11.md",
      "source": "zh/47_telegram4j/11.md",
      "description": "Reactor 错误处理 在使用 Reactor 框架开发响应式应用时，错误处理是一个关键的环节。Reactor 提供了多种机制来捕获和处理操作符抛出的异常，包括全局钩子（Hooks）和局部钩子（Context）。本文将通过示例代码详细介绍如何实现和注册错误处理钩子，并解释实际运行时的日志输出。 引言 在响应式编程中，错误处理不仅仅是捕获异常，还涉及到...",
      "keywords": [],
      "status": "document",
      "sha256": "dedb0b36a9702b5f727627afb37ccdb0580c57a9598a7e9704307825900c40ca"
    },
    {
      "id": "zh/47_telegram4j/12.md",
      "title": "Telegram4J 常见错误处理指南",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/12.md",
      "source": "zh/47_telegram4j/12.md",
      "description": "Telegram4J 常见错误处理指南 在使用 Telegram4J 库与 Telegram 服务器进行交互时，开发者可能会遇到一些常见错误和警告。本文将详细分析这些问题的原因，并提供相应的解决方案，帮助您优化应用的稳定性和性能。 1. 处理 telegram4j.mtproto.RpcException: channels.getFullChanne...",
      "keywords": [],
      "status": "document",
      "sha256": "c732d8d0a34fc69d4131462e1d32d5b859b1be08d731b333cc0d93259c05c21d"
    },
    {
      "id": "zh/47_telegram4j/13.md",
      "title": "处理回调查询",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/13.md",
      "source": "zh/47_telegram4j/13.md",
      "description": "处理回调查询",
      "keywords": [],
      "status": "placeholder",
      "sha256": "2bc91ef8bb3e9d3127a9dfc596d4ad510f547f8ddfc4ec01a17ce757c0459ccb"
    },
    {
      "id": "zh/47_telegram4j/14.md",
      "title": "Reactor",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/14.md",
      "source": "zh/47_telegram4j/14.md",
      "description": "Reactor Reactor 是一个基于 Reactive Streams 规范的响应式编程库，广泛应用于 JVM 生态系统中（如 Spring WebFlux）。它提供了强大的工具来处理异步数据流和事件驱动的编程模型，帮助开发者构建高效、可扩展和弹性的应用程序。 Reactor 的核心概念 Publisher（发布者）： 负责生产数据并将其发布给订...",
      "keywords": [],
      "status": "document",
      "sha256": "084319efc9e962c8e7417da995b73110ac2e07cce6c22b006eb6992fa870ef99"
    },
    {
      "id": "zh/47_telegram4j/16.md",
      "title": "文档翻译",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/16.md",
      "source": "zh/47_telegram4j/16.md",
      "description": "文档翻译 image_to_text_prompt_en.txt image_to_text_prompt.txt",
      "keywords": [],
      "status": "document",
      "sha256": "2c338349b1dcdda1048a5e2d6a21e16b03d6d9ffffbbe4ec682665be4059c7a7"
    },
    {
      "id": "zh/47_telegram4j/17.md",
      "title": "使用 Tio-Boot 整合 tdlight",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/17.md",
      "source": "zh/47_telegram4j/17.md",
      "description": "使用 Tio-Boot 整合 tdlight 本文将详细介绍如何使用 Tio-Boot 框架整合 Telegram Bots。通过本文，您将学习如何配置项目依赖、设置必要的配置文件、编写核心代码以及进行测试。 简介 Tio-Boot 是一个基于 Java 的高性能网络框架，适用于快速构建各种网络应用。本文将指导您如何将 Telegram Bot 集成到...",
      "keywords": [],
      "status": "document",
      "sha256": "323ac71e6cf6c10f37bbe1f6984afaa387356dd0d6868cd340b338b44f26d217"
    },
    {
      "id": "zh/47_telegram4j/18.md",
      "title": "tio-boot 整合 TelegramBots",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/18.md",
      "source": "zh/47_telegram4j/18.md",
      "description": "tio-boot 整合 TelegramBots 本文档旨在指导开发者如何将 tio-boot 框架与 TelegramBots 库进行整合，采用 长轮询（Long Polling） 模式实现 Telegram Bot 的消息处理。通过本文，您将了解长轮询模式的基本原理，并通过一个简单的示例项目，掌握如何配置和运行一个基本的 Telegram Bot。...",
      "keywords": [],
      "status": "document",
      "sha256": "e845615fa78dbbd1bbbb846a1d0fa88246e968d319b285c3376377c3c4141dd1"
    },
    {
      "id": "zh/47_telegram4j/19.md",
      "title": "tio-boot 整合 Telegram-Bot-Utils",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/19.md",
      "source": "zh/47_telegram4j/19.md",
      "description": "tio-boot 整合 Telegram-Bot-Utils telegram-bot-utils 内置了 TelegramBots 依赖，使得构建 Telegram 机器人更加便捷。本篇文档将指导您如何使用 tio-boot 框架与 TelegramBots 库，创建一个简单的“回音机”功能的 Telegram 机器人。 telegram-bot-u...",
      "keywords": [],
      "status": "document",
      "sha256": "6d9c4d489a8435a56d6773fbe1b65e790545f871a95eaa8484e3ced1752f2f3e"
    },
    {
      "id": "zh/47_telegram4j/20.md",
      "title": "Telegram-Bot-Utils 使用指南",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/20.md",
      "source": "zh/47_telegram4j/20.md",
      "description": "Telegram-Bot-Utils 使用指南 Telegram-Bot-Utils 提供了丰富的工具类，本文将介绍其中的系列工具类的使用方法",
      "keywords": [],
      "status": "placeholder",
      "sha256": "a4f185cf39647467f8318b1d3932e7c70ec649991702e2290a73e4a6d3a1b07f"
    },
    {
      "id": "zh/47_telegram4j/readme.md",
      "title": "47_telegram4j",
      "language": "zh-CN",
      "chapter": "zh/47_telegram4j",
      "url": "https://tio-boot.com/zh/47_telegram4j/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/47_telegram4j/readme.md",
      "source": "zh/47_telegram4j/readme.md",
      "description": "47_telegram4j 本目录包含 23 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《数据库设计》。 : 文档《基于 HTTP 协议开发 Telegram 翻译机器人》。 : 文档《基于 MTProto 协议开发 Telegram 翻译机器人》。 : 文档《过滤旧消息》。...",
      "keywords": [],
      "status": "document",
      "sha256": "50465832d118db6f797133fe9bc4ce810e90d699990cb2ac5f9387c77c96f6d1"
    },
    {
      "id": "zh/48_telegram-bots/01.md",
      "title": "TelegramBots 入门指南",
      "language": "zh-CN",
      "chapter": "zh/48_telegram-bots",
      "url": "https://tio-boot.com/zh/48_telegram-bots/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/48_telegram-bots/01.md",
      "source": "zh/48_telegram-bots/01.md",
      "description": "TelegramBots 入门指南 本文档详细介绍了如何使用 TelegramBots 库实现长轮询模式，进而接收和处理 Telegram Bot 发送的各种类型消息。内容涵盖了长轮询模式的工作原理、环境配置、核心代码实现示例以及 Telegram Bot API 返回的多种消息格式解析说明。在示例中的所有关键数据（如用户 ID、频道 ID、消息 ID...",
      "keywords": [],
      "status": "document",
      "sha256": "853f45df303cc035022b81d80a45a79d3cc6712404bcd1ced068beb3a1178e66"
    },
    {
      "id": "zh/48_telegram-bots/02.md",
      "title": "使用工具库 telegram-bot-base 开发翻译机器人",
      "language": "zh-CN",
      "chapter": "zh/48_telegram-bots",
      "url": "https://tio-boot.com/zh/48_telegram-bots/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/48_telegram-bots/02.md",
      "source": "zh/48_telegram-bots/02.md",
      "description": "使用工具库 telegram-bot-base 开发翻译机器人 Maven 坐标配置 在 Maven 工程中引入所需依赖。以下配置中除日志记录和 JSON 处理依赖外，核心依赖为 telegram-bot-base。请确保在 pom.xml 中添加如下依赖： 说明 其中 telegram-bot-base 是对 telegram-bots 的常用操作进...",
      "keywords": [],
      "status": "document",
      "sha256": "42efe6a3b8748af4813d926e39e0e7420da098799e45b6ff993789e7cdfc1701"
    },
    {
      "id": "zh/48_telegram-bots/readme.md",
      "title": "48_telegram-bots",
      "language": "zh-CN",
      "chapter": "zh/48_telegram-bots",
      "url": "https://tio-boot.com/zh/48_telegram-bots/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/48_telegram-bots/readme.md",
      "source": "zh/48_telegram-bots/readme.md",
      "description": "48_telegram-bots 本目录包含 5 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《TelegramBots 入门指南》。 : 文档《使用工具库 telegram-bot-base 开发翻译机器人》。 image-1.png: 图片资源，用于本目录文档配图或界面示意...",
      "keywords": [],
      "status": "document",
      "sha256": "361b9f7dbf3ec62d847d090db2bfc5fdd37e4192067103454ef765d06676e9ea"
    },
    {
      "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 表结构： 字段容量设计 platform、用户及审计字段保持原有容量和类型，保留 tags JSON，避免本次字段扩容引入额外数据迁移。应用应确保 size 非负；是否接...",
      "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": "本地存储 本篇文章介绍一个实例，演示如何将文件存储到本地文件系统。通过配置和编写相应的代码，实现文件的上传、存储及访问功能。 目录 实现本地存储 配置文件 配置类 数据库配置类 DbConfig 处理器配置类 HandlerConfiguration 业务层 接入层 文件上传文档 1. 客户端生成文件的 MD5 值 2. 检查文件是否已上传 3. 上传...",
      "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": "存储到 亚马逊 S3 使用 AWS S3 存储文件并整合到 Tio-Boot 项目中 本文将详细介绍如何在 AWS S3 上配置存储桶，并将其整合到 Tio-Boot 项目中，实现文件的上传、存储及相关信息的保存到数据库。本文包含所有必要的配置步骤、代码示例及相关说明，确保您能够顺利完成集成。 目录 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": "存储到 Cloudflare R2 本文介绍如何： 创建 Cloudflare R2 Bucket 绑定自定义域名 获取 AccountId 配置 CORS 创建 R2 API Token 配置环境变量 使用 Java S3 SDK 上传文件到 R2 一、创建 R2 Bucket 进入 Cloudflare 控制台： 依次进入： 输入 Bucket 名...",
      "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": "存储到 腾讯 COS 添加依赖 编写工具类 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": "上传文件到阿里云 OSS 本文介绍通过 AliyunOssUtils 将字节数组或本地文件上传到阿里云 OSS。工具类位于 nexus.io.tio.boot.admin.utils.storage，封装 OSS SDK 的客户端创建和上传操作。 应用的统一上传接口、文件信息落库及下载接口见 。 1. 添加 SDK 依赖 在已经依赖 tio-boot-...",
      "keywords": [],
      "status": "document",
      "sha256": "83e4fa31f5c314769c717d203a4c3bd756c993ea40a1e36b7ddb67173fb9c94b"
    },
    {
      "id": "zh/49_file-storage/readme.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/readme.md",
      "source": "zh/49_file-storage/readme.md",
      "description": "49_file-storage 本目录包含 8 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《文件上传数据表》。 : 文档《本地存储》。 : 文档《存储到 亚马逊 S3》。 : 文档《存储到 Cloudflare R2》。 : 文档《存储到 腾讯 COS》。 : 文档《上传文件...",
      "keywords": [],
      "status": "document",
      "sha256": "fe8545061c890d3d05667cef85fff70901271a20dd4afc1f46ace13fd567b7c7"
    },
    {
      "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": "微信支付：Native 扫码支付（PC 网页扫码） 本文介绍普通商户如何在 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.pa...",
      "keywords": [],
      "status": "document",
      "sha256": "ca6890a6fd144de2a5fc257de366bb7eed7712ca09a9bbdab88a0d92ac0e67a1"
    },
    {
      "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": "支付宝：使用 page.pay 二维码前置模式实现网页内扫码支付 使用 alipay.trade.page.pay 的 qr_pay_mode=4，可以在网站自己的支付弹窗内嵌入支付宝二维码。用户用手机支付宝扫码付款，网站确认到账后显示成功，原页面无需跳转到支付宝收银台。 本文基于 tio-boot、支付宝官方 Java SDK 和 React 的实际...",
      "keywords": [],
      "status": "document",
      "sha256": "64db484ad3ca736e607d55a5223cdb7433f928ea962bf578b6db194d73d07421"
    },
    {
      "id": "zh/50_payment/readme.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/readme.md",
      "source": "zh/50_payment/readme.md",
      "description": "支付集成 ：材料准备、产品申请、网页应用、RSA2 密钥、tio-boot 下单与通知、幂等到账、二维码支付（当面付）、移动端与「不跳网页」的支付、上线验证及资料脱敏。 ：商户开通、密钥配置、Java 后端下单、小程序调起支付、通知验签与订单确认。 ：网页扫码下单、二维码展示与轮询、通知验签解密、主动查单与关单。",
      "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": "整合 google firebase firebase 简介 firebase 是 Google 提供的一个移动和网络应用开发平台，它提供了一系列工具和服务来帮助开发者构建高质量的应用，改善用户体验，并快速成长其业务。Firebase 提供的服务覆盖了应用开发的许多方面，包括但不限于数据库、认证、分析、配置管理、文件存储、功能测试和云函数等。 Fire...",
      "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": "Firebase Storage 添加一个 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 背景 在现代应用中，用户身份验证是确保系统安全性的重要环节。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，开发者可以方便地管理匿名用户，并为用户设置自定义的状态标记，例如记录用户是否使用过某项特定功能。 本文将介绍如何使用 Firebase A...",
      "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 文件。 示例代码 代码解释 环境加载和配置： 使用 EnvUtils.load() 来加载项目中的环境变量，这些变量可能包括 Firebase...",
      "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 Cloud Functio...",
      "keywords": [],
      "status": "document",
      "sha256": "4f6ede5bf830aa9d7c6381c8f3859e74b9014bfd2b981155d052f18ca6fb3b80"
    },
    {
      "id": "zh/51_firebase/readme.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/readme.md",
      "source": "zh/51_firebase/readme.md",
      "description": "51_firebase 本目录包含 9 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《整合 google firebase》。 : 文档《Firebase Storage》。 : 文档《Firebase Authentication》。 : 文档《使用 Firebase Adm...",
      "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": "Clerk",
      "keywords": [],
      "status": "placeholder",
      "sha256": "129a5706b5b4186ab4c2b1035ba5f9a9db98fa5ad0115251942c45af8d1b7236"
    },
    {
      "id": "zh/52_clerk/readme.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/readme.md",
      "source": "zh/52_clerk/readme.md",
      "description": "52_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": "JAVE 提取视频中的声音 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 提取视频中的图片 本文档介绍如何使用 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/readme.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/readme.md",
      "source": "zh/53_media/readme.md",
      "description": "53_media 本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《JAVE 提取视频中的声音》。 : 文档《Jave 提取视频中的图片》。 : 文档《待定》。",
      "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-JNI 简介 Whisper 是 OpenAI 开发的一个基于 Transformer 的语音识别模型，能够处理多种语言并生成高度准确的语音到文本转录。该模型最初是基于 Python 和机器学习框架（如 PyTorch）构建的，因此开发者必须依赖 Python 和相应的库来进行语音识别任务。 Whisper OpenAI 开源了 Whi...",
      "keywords": [],
      "status": "document",
      "sha256": "af04cdbfef3d0617e4d3b573bf585e6217fd346d21dcc25486685e0133642865"
    },
    {
      "id": "zh/54_asr/readme.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/readme.md",
      "source": "zh/54_asr/readme.md",
      "description": "54_asr 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Whisper-JNI》。",
      "keywords": [],
      "status": "document",
      "sha256": "a97844fa1581e6b15e744006b173ef2ef8a0e76fa11e89f3d797ad40feca7913"
    },
    {
      "id": "zh/55_tts/readme.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/readme.md",
      "source": "zh/55_tts/readme.md",
      "description": "55_tts 本目录包含 1 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。",
      "keywords": [],
      "status": "document",
      "sha256": "42b65ea615b806368831814ffaeca2d5a3425e92cffaa952a97c7bd9a64e3818"
    },
    {
      "id": "zh/56_ocr/readme.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/readme.md",
      "source": "zh/56_ocr/readme.md",
      "description": "56_ocr 本目录包含 1 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。",
      "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": "java-native-media 音视频处理优化库 项目背景 在传统的 Java 音视频处理方案中，开发者通常依赖调用 FFmpeg 命令行工具来实现音视频处理需求。但这种方式存在两个主要痛点： 性能损耗 调用外部进程会带来额外的进程间通信开销，从而影响整体处理效率。 包体积膨胀 为了功能完整性，往往需要捆绑 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": "JNI 入门示例 在开发 Android 或 Java 项目时，为了复用现有的 C/C++ 代码，我们通常会使用 C/C++ 开发一部分核心功能。JNI（Java Native Interface）作为 JVM 与 C/C++ 代码交互的桥梁，提供了这种跨语言调用能力。本文以一个简单的 “Hello JNI” 示例为例，讲解如何搭建环境、生成 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": "mp3 拆分 1. 项目背景与需求分析 目标： 将一个大的 MP3 文件按用户指定的大小拆分为多个小文件。拆分后，每个文件必须满足以下条件： 拆分点处不能破坏 MP3 帧结构； 每个拆分文件均为有效的 MP3 文件，可供语音识别模型处理； 返回拆分后文件的路径（以字符串数组形式返回给 Java 层）。 关键问题： MP3 帧结构： MP3 文件由一系列...",
      "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": "mp4 转 mp3 1. 安装 ffmpeg mp4 转 mp3 的过程中会遇到下面的库 libavformat、libavcodec、libswresample、libavutil ,需要安装 ffmpeg,使用 vcpkg 安装 ffmpeg 的方法如下 Alt text 2、原理说明 FFmpeg 解码/编码流程 通过 avformat_open...",
      "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": "使用 libmp3lame 实现高质量 MP3 编码 在 Windows 平台上，内置的 MP3 编码器（ACM Wrapper MFT）质量有限，很多开发者希望借助 libmp3lame 这一高质量开源 MP3 编码器实现更好的音频转换效果。本文介绍如何通过 vcpkg 安装支持 libmp3lame 的 FFmpeg、修改 CMake 构建脚本、调...",
      "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": "Linux 编译 本项目使用 FFmpeg（avcodec、avformat、swresample、avutil 等）和 mp3lame 进行音视频处理，同时使用 JNI 与 Java 交互。由于不同操作系统（Linux 与 Windows）的库查找、加载机制不同，本文档提供了两套配置方式，并解释相关原因和注意事项。 1. 安装依赖库 在 Linux ...",
      "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 编译 在 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": "从 JAR 包中加载本地库文件 在跨平台 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 支持的格式 整理后的输出如下 C 语言代码实现",
      "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": "任意格式转为 mp3 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 参数支持的取值 ta...",
      "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 方法，可以根据指定的文件大小阈值将一个多媒体文件分割成若干个连续的小文件，而无需重新编码，确保原始编码参数不变，从而实现高效、无损的拆分操作。 功能简介 多格式支持：支持 FFmpeg 支持的所...",
      "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": "VideoToHLS 流程 使用 native‑media 库将指定的 MP4 文件转换为 HLS 分段，分段时长为 segmentDuration 秒。 生成的 TS 分段文件将存放在与 hlsPath 相同的目录下（文件名按照 tsPattern 命名，例如 \"segment_%03d.ts\"）。 将生成的 m3u8 片段添加到 hlsPath 指...",
      "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": "split_video_to_hls 支持其他语言 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": "持久化 HLS 会话 本项目通过 JNI 封装 FFmpeg 库，实现了一个持久化 HLS 会话模块。该模块支持如下功能： 初始化持久化 HLS 会话 创建 HLS 输出上下文，并保存参数选项，同时记录会话的创建时间。该接口返回一个 native 指针，用于后续追加视频分段或关闭会话。 追加视频分段 根据输入的 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： 查找 avfilter 的头文件路径 添加： 查找 avfilter 的库文件 添加： 将 avfilter 的 include 目录添加到 include_directories() 修改 include_directories 部分： 在 target_link_l...",
      "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": "linux版本 项目源码： https://github.com/litongjava/java-native-media 一、问题现象 应用启动时报错： 二、问题根因 1）应用内置的 native 库依赖 FFmpeg 59 检查 .so 依赖： 输出： 说明该库是 按 FFmpeg 5.x (ABI 59) 编译的 2）服务器实际安装的是 FFmp...",
      "keywords": [],
      "status": "document",
      "sha256": "6d2aee441b96c2f8d0ec79a519d0b37db4bd7f089966971fa53b293a47d3e457"
    },
    {
      "id": "zh/57_native-media/readme.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/readme.md",
      "source": "zh/57_native-media/readme.md",
      "description": "57_native-media 本目录包含 24 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《java-native-media》。 : 文档《JNI 入门示例》。 : 文档《mp3 拆分》。 : 文档《mp4 转 mp3》。 : 文档《使用 libmp3lame 实现高质量...",
      "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": "使用 Java 运行 YOLOv8 ONNX 模型进行目标检测 本文是一篇完整的入门文档。目标是让初学者能够理解项目结构、组件职责、关键实现细节，以及如何运行和调试。 1. 概览与目标 本示例展示如何使用 Java（OpenCV + ONNX Runtime）对 YOLOv8 ONNX 模型做单张或批量图片的目标检测。实现流程为： 读取图片并转换为 R...",
      "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整合yolo 下面是一篇从零开始给初学者看的完整使用文档。 目标：让把 tio-boot + ONNX Runtime + YOLOv8 跑起来，并通过 HTTP 上传图片得到检测结果。 一、项目介绍 这是一个基于 Java 的目标检测服务： 技术栈： 最终效果： 客户端上传图片 → 服务器检测 → 返回 JSON 识别框 二、最终接口...",
      "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": "ONNX Runtime 推理说明 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": "Paddle Structure 一、背景与目标 下载模型 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": "tio-boot 整合 Paddle Structure 一、依赖 确保下面这些依赖： 、实体类 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": "tio-boot整合Paddle Structure 提取图片 新建实体类",
      "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": "U2Net 图片去背景原理 本文介绍 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": "tio-boot 整合 U2Net 实现图片去背景 本文介绍如何使用 tio-boot + ONNX Runtime + U2Net 搭建一个 Java 版图片去背景 HTTP 服务。接口行为兼容常见的 rembg HTTP 上传方式： 响应直接返回透明背景 PNG： 一、功能说明 U2Net 是一种图像显著性目标分割模型。它不是按颜色简单删除背景，而...",
      "keywords": [],
      "status": "document",
      "sha256": "536213ad86661e62271954367c3991cb760565a087a5371519d4ed32a6429989"
    },
    {
      "id": "zh/58_computer-vision/readme.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/readme.md",
      "source": "zh/58_computer-vision/readme.md",
      "description": "58_computer-vision 本目录包含 11 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用 Java 运行 YOLOv8 ONNX 模型进行目标检测》。 : 文档《tio-boot整合yolo》。 : 文档《ONNX Runtime 推理说明》。 : 文档《Pa...",
      "keywords": [],
      "status": "document",
      "sha256": "d671683dad626d69323cb97471b57fa0bdea2072a269226398df2a1a06851806"
    },
    {
      "id": "zh/59_java-openai/01.md",
      "title": "简介",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/01.md",
      "source": "zh/59_java-openai/01.md",
      "description": "简介 本章节主要介绍 java-openai（GitHub：litongjava/java-openai）库的核心能力、目录结构与统一调用方式，并展示如何将第三方大模型 API（OpenAI / Google / Anthropic / OpenRouter 等）以一致的请求与响应模型接入业务系统。 java-openai 的设计目标不是“只对接某一家...",
      "keywords": [],
      "status": "document",
      "sha256": "05a9c3a963321d786e1fd633d83b4ac484c6e0a4baabed38b2f8b71bbe7a03c2"
    },
    {
      "id": "zh/59_java-openai/02.md",
      "title": "流式生成",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/02.md",
      "source": "zh/59_java-openai/02.md",
      "description": "流式生成 在实际业务中，很多场景并不适合“等待完整结果一次性返回”，例如： 聊天机器人逐字输出，提升交互体验 长文本生成（写作、总结、代码生成），降低首 token 延迟 Web 前端使用 SSE / WebSocket 实时渲染内容 避免长时间阻塞请求导致的超时问题 java-openai 在统一抽象层之上，提供了跨平台一致的流式生成能力。业务侧只需...",
      "keywords": [],
      "status": "document",
      "sha256": "a9bdf1e29de1ce8798c92373aae211d8dfb1e7502d590ac6ef2506bd4aa67161"
    },
    {
      "id": "zh/59_java-openai/03.md",
      "title": "图片多模态输入",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/03.md",
      "source": "zh/59_java-openai/03.md",
      "description": "图片多模态输入 随着多模态模型的发展，越来越多的业务场景需要直接向大模型输入图片，并结合文本指令完成任务，例如： 图片文字识别（OCR） 图片内容理解与描述 图表、试题、合同、截图等内容解析 图片 + 文本混合推理（VLM / Vision-Language Model） java-openai 在统一聊天抽象的基础上，提供了统一的图片输入模型，使业务...",
      "keywords": [],
      "status": "document",
      "sha256": "ab295a87d96201b01f567840880d33f3dd0fed7562b229ffd02a4157d4873c55"
    },
    {
      "id": "zh/59_java-openai/04.md",
      "title": "Google Gemini接入",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/04.md",
      "source": "zh/59_java-openai/04.md",
      "description": "Google Gemini接入 协议自动转换 java-openai 的统一大模型调用能力 在真实的工程环境中，对接大模型的最大挑战从来不只是“调用 API”，而是跨平台协议差异带来的长期维护成本： OpenAI、Google Gemini、Anthropic Claude 的请求结构完全不同 system prompt、messages、roles、...",
      "keywords": [],
      "status": "document",
      "sha256": "8f732a9473efc7e982c3d5427de54bd2f1986a7ec3bfba736c5d06b8904265ee"
    },
    {
      "id": "zh/59_java-openai/05.md",
      "title": "google Vertex AI 接入",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/05.md",
      "source": "zh/59_java-openai/05.md",
      "description": "google Vertex AI 接入 service account 到 API Key 的转换与 java-openai 使用说明 在 Google Cloud 生态中，Vertex AI 默认更偏向使用 Service Account 进行认证。 但在当前 java-openai 的统一调用体系里，暂不直接支持 Service Account 认...",
      "keywords": [],
      "status": "document",
      "sha256": "06196d3e4a2e573443289020655bae197a07a39abc8f4493168cf4105340cc14"
    },
    {
      "id": "zh/59_java-openai/06.md",
      "title": "Perplexity API",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/06.md",
      "source": "zh/59_java-openai/06.md",
      "description": "Perplexity API 本文档详细介绍了如何使用 Perplexity API 进行聊天完成请求，并提供了 Java 示例代码，帮助开发者快速集成该 API。 概述 Perplexity API 提供了强大的搜索 和 推理 生成能力。本文将展示如何构建请求、解析响应以及在 Java 项目中调用 Perplexity API。 请求示例 以下是使用...",
      "keywords": [],
      "status": "document",
      "sha256": "78d4f24d53f52ba0af945f0e9a0fcd7a66b809bd199e64f95998fd638655b9d1"
    },
    {
      "id": "zh/59_java-openai/07.md",
      "title": "WhisperClient 语音识别",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/07.md",
      "source": "zh/59_java-openai/07.md",
      "description": "WhisperClient 语音识别 java-openai 的 WhisperClient 将音频文件提交给 OpenAI 兼容的转写接口。本节介绍客户端调用；上传接口、缓存和存储的应用实现见 。 配置与调用 在应用配置中设置 OPENAI_API_KEY，需要自定义服务地址时设置 OPENAI_API_URL。先调用 EnvUtils.load()...",
      "keywords": [],
      "status": "document",
      "sha256": "d3d34d2f9b9f42d53d96edd4456cb1507250aa8b5ea9c389e17e599164940d71"
    },
    {
      "id": "zh/59_java-openai/08.md",
      "title": "SupadataClient 获取视频字幕",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/08.md",
      "source": "zh/59_java-openai/08.md",
      "description": "SupadataClient 获取视频字幕 java-openai 提供 SupadataClient，用于获取 YouTube 视频字幕。本节从 中分离客户端调用说明；数据库缓存、会话和问答流程仍在 ai_agent 章节。 配置与调用 在应用配置中设置 SUPADATA_API_KEY，在客户端调用前加载配置。 get(videoId) 接收视频 ...",
      "keywords": [],
      "status": "document",
      "sha256": "d12c95f5a672cbde2aceb98b7788639f7d6a3f1a04b8d2524b1d0d9bc72b04df"
    },
    {
      "id": "zh/59_java-openai/18.md",
      "title": "GiteeClient 文档解析与图片 OCR",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/18.md",
      "source": "zh/59_java-openai/18.md",
      "description": "GiteeClient 文档解析与图片 OCR java-openai 提供 GiteeClient，可以提交文档解析任务、查询任务状态，也可以调用同步图片 OCR。文档模型常量存在，并不代表该模型支持所有接口。 配置 在应用配置或本地 secrets.txt 中设置 GITEE_API_KEY，启动时调用 EnvUtils.load()。读取配置使用...",
      "keywords": [],
      "status": "document",
      "sha256": "ca0c0ce776ed2950d5f05adaa69961233b73d10ded1c3208ef98d7e0bb59d1ff"
    },
    {
      "id": "zh/59_java-openai/19.md",
      "title": "DeepSeekClient 官方模型查询",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/19.md",
      "source": "zh/59_java-openai/19.md",
      "description": "DeepSeekClient 官方模型查询 该方法通过 EnvUtils.get(\"DEEPSEEK_API_KEY\") 读取密钥，查询 DeepSeek 官方模型列表。开源仓库中的 DeepSeek-OCR 不等于官方 API 已开放同名模型。应先检查账号模型列表和官方协议；没有该模型时，不要自行猜测 OCR 端点，也不要将其他视觉模型的结果标成 D...",
      "keywords": [],
      "status": "document",
      "sha256": "e31d1d6ec2c9356387639369c12b26d94b7b0a67eb10699f15ba788641ab35a6"
    },
    {
      "id": "zh/59_java-openai/20.md",
      "title": "BailianTTSClient 语音合成",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/20.md",
      "source": "zh/59_java-openai/20.md",
      "description": "BailianTTSClient 语音合成 BailianTTSClient wraps Alibaba Cloud Bailian / DashScope text-to-speech through the /api/v1/services/audio/tts/SpeechSynthesizer endpoint. Configuration Lo...",
      "keywords": [],
      "status": "document",
      "sha256": "494f707fee70e723f0fdb873738041fe30ca5d01ad82fce5b39e4efd56a2ec88"
    },
    {
      "id": "zh/59_java-openai/21.md",
      "title": "为单次生成配置独立传输策略",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/21.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/21.md",
      "source": "zh/59_java-openai/21.md",
      "description": "为单次生成配置独立传输策略 java-openai 支持向原始响应入口传入调用方管理的 OkHttpClient。业务可以独立设置等待时间、连接重试与跳转规则，继续复用客户端构造请求头、发送请求和返回响应的能力，不必改变公共客户端池。 如需根据 platform 自动选择服务地址与密钥，并获得统一的 UniChatResponse，使用 中的 UniC...",
      "keywords": [],
      "status": "document",
      "sha256": "3110a17663216d83e7522f8206d8af73ccd7a92f4977ed71bf7e9c8804d90d90"
    },
    {
      "id": "zh/59_java-openai/22.md",
      "title": "按业务档位选模型",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/22.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/22.md",
      "source": "zh/59_java-openai/22.md",
      "description": "按业务档位选模型 同一套代码既要跑便宜的快速模型，又要在用户选择\"更聪明\"时切到更强的模型，是接入大模型时的常见需求。做法不是把模型名写死在调用处，而是让业务只表达档位意图（快 / 思考 / 专家），由一层映射把档位翻译成\"平台 + 模型\"，再交给 UniChatRequest 统一发送。 这样做的收益很直接： 业务代码只出现 fast / think...",
      "keywords": [],
      "status": "document",
      "sha256": "4140d51f06c45d835e7022821f0d3d1daeda58f3599ff0420e586b1b4b3876f1"
    },
    {
      "id": "zh/59_java-openai/23.md",
      "title": "OpenAI、Claude 与 DeepSeek 联网搜索",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/23.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/23.md",
      "source": "zh/59_java-openai/23.md",
      "description": "OpenAI、Claude 与 DeepSeek 联网搜索 java-openai 通过各平台的服务端工具调用 Web Search。搜索由平台执行，客户端负责发送请求、接收回答与来源引用。三个平台的原生入口如下： OpenAI 使用 Responses API；DeepSeek 使用 Anthropic 兼容的 Messages API。不要把搜索工...",
      "keywords": [],
      "status": "document",
      "sha256": "97ec6e3c48898c88917c923735bf363c96b314c1307766bbf5262aeb7f3e429b"
    },
    {
      "id": "zh/59_java-openai/readme.md",
      "title": "59_java-openai",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/readme.md",
      "source": "zh/59_java-openai/readme.md",
      "description": "59_java-openai 本章节只介绍 java-openai 库的配置、客户端调用、请求与响应处理。应用设计见 ，文档解析效果评测见 。 文章目录",
      "keywords": [],
      "status": "document",
      "sha256": "0af311d0ee1ea395f936ebe12ea5f35aa7e2cfde21ba98056c2802caa980dfb8"
    },
    {
      "id": "zh/59_java-openai/unichat-owned-client.md",
      "title": "UniChatClient 与调用方 HTTP 客户端",
      "language": "zh-CN",
      "chapter": "zh/59_java-openai",
      "url": "https://tio-boot.com/zh/59_java-openai/unichat-owned-client.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/59_java-openai/unichat-owned-client.md",
      "source": "zh/59_java-openai/unichat-owned-client.md",
      "description": "UniChatClient 与调用方 HTTP 客户端 UniChatClient 统一处理聊天请求和响应。同步生成支持按平台选择 Chat Completions、Gemini/Vertex AI、Anthropic Messages 或 Responses 协议，并使用调用方提供的 OkHttpClient，按业务设置超时、重定向和重试策略，并复用...",
      "keywords": [],
      "status": "document",
      "sha256": "01f74105323d89f59bca1332a7d65916ba46d7f11af61858db3493dc71e0f47c"
    },
    {
      "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": "a72151439e38d0cacfcd540f9ed345c988875118f27d228519a897e9b2bbded9"
    },
    {
      "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": "智能问答 本文档详细介绍了校园领域搜索问答系统中的智能问答功能模块的设计与实现。该模块旨在通过接收用户提问、校验会话合法性、问题重写、生成提示词并交由大模型推理，管理历史记录以及控制推理过程，提供高效、精准的智能问答服务。本文将涵盖功能概述、接口设计、控制器实现、服务层实现以及代码优化。 功能概述 智能问答模块主要负责以下功能： 接收用户提问：通过 A...",
      "keywords": [],
      "status": "document",
      "sha256": "98964f0f7f0b9750438670221ace92bd8f2ef67050eb37c9cd5dcfa3d4c4e906"
    },
    {
      "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 设计：包括文件上传前的去重检测接口以及文件上传接口的说明。 数据库设计：存储上传文件基本信息的数据库表设计。 文件解析实现：针对不同类型文件的解析实现代码（PDF、Word、Excel、PP...",
      "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 输出。整个流程大致包括以下步骤： 提示词示例：定义了对用户输入的提示，指导后续信息整理和输出格式（例如生成个人简介、学术信...",
      "keywords": [],
      "status": "document",
      "sha256": "51ccd56e94784e6ccba209f6883645f5b7342b55212886f57bdfa4bc8e76530e"
    },
    {
      "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": "Ai studio gemini youbue 问答使用说明 生产环境不推荐使用,因为延迟太高了,每次推理的延迟都在 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": "自建 YouTube 字幕问答系统 客户端调用说明已独立到 java-openai 章节：。本篇保留应用接口、缓存和业务流程。 由于直接使用 Google Gemini YouTube 接口存在较高的延迟问题，因此本文介绍了一套自建 YouTube 视频问答系统的方案，通过调用第三方 supadata API 获取视频字幕，并将字幕进行存储与展示，实现...",
      "keywords": [],
      "status": "document",
      "sha256": "f8d989e79a0ccd5cfbd001abe338d7b88c69bec051abe864ef451929be20728e"
    },
    {
      "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": "自建 获取 youtube 字幕服务 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": "使用 OpenAI ASR 实现语音识别接口（Java 后端示例） 客户端调用说明已独立到 java-openai 章节：。本篇保留应用接口、缓存和业务流程。 本文介绍如何在 Java 后端快速实现一个“上传音频文件 → 调用 OpenAI ASR（Whisper）→ 返回识别文本”的接口，并加入缓存机制避免重复识别，降低成本与延迟。 整体流程可以理解...",
      "keywords": [],
      "status": "document",
      "sha256": "5aea22568a5ce12b1379cd771f8fb904ade8d56c9f5e88e52972695973d0bdcf"
    },
    {
      "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": "16",
      "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": "17",
      "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": "18",
      "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": "在 tio-boot 应用中整合 ai-agent 本文档将介绍如何在其他 tio-boot 应用中集成 ai-agent 组件，以便复用其强大的 AI 聊天及对话能力。以下内容包含 Maven 依赖的添加、路由配置以及接口调用示例。 1. 添加 Maven 依赖 在项目的 pom.xml 文件中添加如下依赖，从 Maven 仓库中引入 ai-agen...",
      "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 本文将系统介绍如何在自定义 ChatAskService 的过程中，结合 LlmChatHistoryService 实现一套完整的对话业务逻辑，包括历史消息管理、上下文拼接、流式响应以及会话持久化等能力。整篇内容聚焦设计思路与实现流程，不涉及具体代码细节。 精简 直接发送消息 Alt text 问答示例 一、整体...",
      "keywords": [],
      "status": "document",
      "sha256": "26517832506241b24e688366003eac89d00df905f654c0d8387ddfca52894f68"
    },
    {
      "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": "限流和错误处理 限流与错误处理：全局冷却、智能退避与可观测性闭环 在生产环境中，大模型调用失败的原因通常不是单点的“请求参数错误”，而是由限流、配额、网络波动、上游网关不稳定等因素叠加造成。尤其在并发场景下，如果缺少统一的限流与重试策略，系统很容易出现两类问题： 失败放大 多个并发请求同时遇到 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） 增强检索（RAG）是一种通过结合大语言模型（LLM）和外部文档资料的检索方法，用以提升问题回答的准确性和相关性。它的核心在于将传统信息检索与大语言模型的生成能力相结合，为用户提供更为丰富的答案。RAG 的实现需要依赖向量数据库、文档切片、向量化等多种技术手段。以下是对增强检索、向量数据库及其实现方法的详细说明。 什么是增强检索（RA...",
      "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），从而实现数据检索。 结构化数据检索流程 数据获取: 一般通过爬虫的形式从互联网上爬取数据。 数据入库: 将爬取到的数据存入到数据...",
      "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 问答 实现 AI 问答非常容易。可以通过笔者的 java-openai 库调用 OpenAI 的 Chat 接口，将用户的问题发送给 GPT 模型，GPT 模型会返回推理结果。 临时记忆 临时记忆的实现有多种方式，这里简单介绍两种方法： 数据库存储对话记录：将用户和大模型的对话记录存入数据库中。当需要对新的问题进行推理时，将新消息和历...",
      "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 的代码生成能力和执行器的计算能力。 连接代码执行器的主要优势包括: 提高计算准确性 增强数据处理能...",
      "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": "音频会话 SDP 示例 以下为原有音频会话描述记录。",
      "keywords": [],
      "status": "document",
      "sha256": "5fcc74dffdfbadfc511fddf6dd44febd5883e76c2d425833fdba7abc72f79fb9"
    },
    {
      "id": "zh/60_ai-agent/assets/readme.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/readme.md",
      "source": "zh/60_ai-agent/assets/readme.md",
      "description": "assets 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 01.png: 图片资源，用于本目录文档配图或界面示意。",
      "keywords": [],
      "status": "document",
      "sha256": "ed4c22db7f7c119f92170a41a494cbf7d3e50348e588982c2770646b536bcc7b"
    },
    {
      "id": "zh/60_ai-agent/readme.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/readme.md",
      "source": "zh/60_ai-agent/readme.md",
      "description": "60_ai-agent 本章节介绍智能体应用的接口、数据库、会话、检索和业务编排。客户端 API 使用见 。 文章目录",
      "keywords": [],
      "status": "document",
      "sha256": "096c526b9dbbc6586a9dc7e9a0db8947ff601a12f9c1a606c9435e5021af53db"
    },
    {
      "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": "数据库设计 数据选型 以下保留各表结构、字段解释和示例 SQL。当前部署使用 1024 维向量；历史基础表还需执行本文末尾的增量迁移。不要在已有业务库直接重建表。Windows 扩展安装见第 29 章，下面的 apt 命令仅适用于对应 Linux 环境。 前端：使用 MossKB 前端 后端：采用 Java 进行开发 模型端：使用 OpenAI-4o-...",
      "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": "用户登录实现 本文将详细介绍一个用户认证系统的 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": "模型管理 接口设计 本文将详细介绍 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": "知识库管理 一、接口设计 1. 获取知识库列表 请求方式：GET 接口路径：/api/dataset/{pageNo}/{pageSize} 示例请求： 示例响应： 2. 创建知识库 请求方式：POST 接口路径：/api/dataset 请求体： 注意是 embedding_mode_id 示例响应： 3. 验证知识库创建额度 请求方式：GET 接口...",
      "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 源码为准。 接口 POST /api/dataset/document/split 请求参数 file（二进制文件）：需要上传并拆分的...",
      "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": "片段向量 概述 片段向量化调用知识库选择的远程向量模型，当前要求返回 1024 维。为了减少向量模型的调用次数，我们将向量模型的返回结果缓存到 moss_kb_embedding_cache 表中。以下是相关接口及代码的实现细节。 接口文档 批量处理文档向量 请求方法: POST 请求路径: /api/dataset/{id}/document/_ba...",
      "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 和代码作为检索原理示例，不用于覆盖当前实现。 本节介绍如何对文本数据集进行命中率测试，以计算用户查询和数据库中存储的文本分段之间的相似度。我们已经完成数据库设计、用户登录、知识库管理、文件拆分...",
      "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": "文档管理 当前文档入口会按账号及知识库检查访问权限。文件检测策略与支持格式见，分段确认必须回传解析文件 ID。下文接口分析保留作流程参考。 功能概述 文档管理 功能包括以下主要操作： 获取文档列表：根据数据集 ID 获取分页文档列表。 获取单个文档详情：根据数据集 ID 和文档 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": "片段管理 当前分段新增和编辑使用知识库关联的向量模型，并校验文档、分段与知识库的归属。下文早期实现片段用于理解接口；当前向量约束见。 功能概述 片段管理 功能包括以下主要操作： 获取片段列表：根据数据集 ID 和文档 ID 分页获取片段列表。 添加问题到片段：为指定的片段添加问题。 获取片段的问题列表：获取指定片段下的所有问题。 接口定义 以下是片段管...",
      "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": "问题管理 概述 在当前的功能模块中，我们已经完成了多个核心功能，包括数据库设计、用户登录、知识库管理、文件拆分、片段向量化、命中率测试、文档管理以及片段管理。这些功能为存储、管理和处理数据提供了坚实的基础。 接下来，我们将实现 问题管理 功能，该功能旨在为片段指定问题，为大模型推理提供参考依据。通过问题管理，用户可以更高效地组织和利用知识库中的信息，提...",
      "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": "应用管理 本文档详细介绍了应用管理模块的功能，包括已完成的核心功能、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": "向量检索 核心功能 本节完成: 向量检索：从数据库中检索出语义相似的向量片段。 推理问答：基于搜索片段及用户问题生成自动化回答。 片段搜索功能 数据传输对象 (VO) ParagraphSearchResultVo 封装了片段搜索的结果，包括片段的基本信息及所属文档和数据集的相关信息。 使用 Lombok 注解简化代码。 搜索服务实现 MossKbPa...",
      "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），见；历史仅超 token 预算才压缩，详见。下文单次检索代码保留为早期...",
      "keywords": [],
      "status": "document",
      "sha256": "4b161f1b45ca500b9febd6d0e2834a2306f0b15d858c8afd3fbc4ea7418f7205"
    },
    {
      "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": "问答模块 api 接口 以下 ID、分享码及响应字段为结构示例，应替换为本次接口返回的数据；Java 接口的资源 ID 使用十进制长整型字符串。管理账号令牌与分享访客令牌分开保存。 打开问答页面例如http://127.0.0.1:3000/ui/#/chat/abe8055668fb480f会发送下面的请求和得到下面的响应 问答页面 profile ...",
      "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": "统计分析 当前实现范围 官方前端的“应用 → 概览”页面用统计接口渲染四组卡片与曲线。四个官方统计接口在本项目的 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": "用户管理 多用户支持 本节完成多用户功能 功能目标：支持多个用户使用系统，并按账号归属隔离私有资源，并按明确的公有模型、管理员和分享规则访问。 实现效果： 每个用户拥有独立的知识库、文档、片段及应用配置。 提供用户角色和权限管理功能，确保多用户环境下的数据安全和操作灵活性。 创建、查询、编辑、启停及重置密码接口 所有请求携带管理员 Authorizat...",
      "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": "VL模型文档解析方案和费用对比 本章保留早期成本估算示例，表中价格不代表当前报价，也不作为现有服务费用承诺。当前默认扫描解析为 Gitee PaddleOCR-VL-1.5，文字和结构化文档优先本地提取，见。实际价格以所选平台账单与当期计费说明为准。 openai 大模型方案 使用 GPT-4o 与 GPT-4o Mini 模型的价格计算与比较 概述 ...",
      "keywords": [],
      "status": "document",
      "sha256": "d91c3332815d55d2d306a4983a68a3fdf3d316dbcd68cb12025f61b1c6e05eb1"
    },
    {
      "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": "文档解析模型实测 客户端接入见 。本篇承接，记录同一份 PDF 的实测方法与结果。 [豫自然资办发〔2021〕18号文档地址]https://www.modelscope.cn/datasets/litonglinux/pdf-benchmark-dataset 测试日期：2026-09-26。使用用户指定的原始 PDF，35 个物理页，12,218,...",
      "keywords": [],
      "status": "document",
      "sha256": "f27408cd0bec4526043394f20183155e87eb037cdeec12114627d81de70d0606"
    },
    {
      "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": "文档解析优化 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 超预算时压缩，见。 片段汇总 功能背景 在 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 维，见。不要直接将旧维度 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": "多文档解析 当前实现与接口说明 Java 后端先检测文件实际内容，再选择解析策略。当前处理 PDF、DOCX、DOC、XLS/XLSX、常用文本和 HTML、可识别图片及受限 ZIP 文档集合。不要仅凭文件扩展名决定解析方式，也不要将尚未实现的格式列为已支持。 文字 PDF 使用文本提取，扫描页使用 Gitee PaddleOCR-VL-1.5，混合 ...",
      "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": "检索性能优化 本篇先给出与当前代码的核对结论，再逐项说明已经落地的优化及其实现，最后给出尚未执行的索引与分区设计。文中的分区方案是可选数据库设计示例，不是当前初始化脚本已执行的迁移；已有业务表不得直接按示例替换。当前数据库结构以所述脚本为准。 一、现状核对 检索链路上真正影响耗时与费用的环节有四个：问题向量化（远程调用）、候选片段筛选（数据库）、检索轮...",
      "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": "对话日志 Java MossKB 把会话、问答记录、检索轨迹与压缩摘要保存在 PostgreSQL。官方前端的「对话日志」页和分享对话页直接复用这些接口：管理账号按应用查看全部会话，分享访客只读取属于自己客户端的会话，两者都要通过应用与会话归属检查。 数据结构 建表语句以所述脚本为准，两处索引服务于日志读取：moss_kb_application_ch...",
      "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 支持管理员在同一个实例内创建本地普通账号，并复用官方前端的用户管理页面。普通账号各自登录、各自拥有知识库、应用、模型与聊天记录；管理员保留全量管理权限。本页记录该能力的接口、数据结构、前后端实现与验收结果，全部内容已在当前代码中完成。 一、功能范围 二、后端接口 用户管理接口集中在 /api/user...",
      "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": "api 管理 本章完成应用的 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": "独立对话页 本章说明如何把一个应用以公开链接的形式发给外部访客使用：访客打开分享地址即可直接对话，不需要注册、不需要登录，也看不到后台的任何管理入口。这条链路在代码里对应「公开访问链接 + 访客会话」，本章只讲这一条链路；对话日志的写入、检索与导出见。 一、这个页面是什么 应用管理里有两种「能对话的页面」，它们的数据完全隔离，不要混为一谈： 两者的问答...",
      "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": "嵌入第三方web系统 本章完成应用的对外嵌入：把应用以整页 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": "分段预览 回答下方的「知识来源」只给出文档名，看不到引用内容的上下文。本章补上分段预览：点一下来源里的文档卡片，弹窗按分段逐张列出该文档的全部分段，并把本次回答真正引用到的那个分段高亮出来、滚动到它的开头。核对回答时不用再跳回知识库文档页翻分段列表。 分段是知识库的最小检索单元，所以预览以分段为单位而不是把整篇文档揉成一段连续正文：每张卡片对应一个分段...",
      "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": "文档预览 解决的是「这次回答引用了哪几段」，视角停在分段上。要核对版式、盖章页、表格数字或者扫描件时，分段文本不够用：原文里的表格会被压成一行行文字，图片和印章根本不在分段里。本章补上文档预览：在分段预览界面点一下文档名称或「预览全文」按钮，新标签页打开一个独立的文档预览页，按文件类型把文档全文渲染出来，并可就地下载原文件。 「能支持预览的文档全部支持...",
      "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": "多轮检索 多轮检索包含两层含义：一次提问内可以执行多个检索轮次，多轮对话里能够承接上一轮的主题。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": "上下文压缩 多轮对话的上下文不能无限增长。把整段历史原封不动地发给推理模型，会同时带来三个问题：超出模型窗口后请求直接失败；即使没超窗口，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": "支持自定义模型 Java MossKB 把供应商、基础模型目录、凭据表单和参数表单统一放进 PostgreSQL，模型设置页因此可以按需扩展：接入一家新的 OpenAI 兼容平台、登记一批候选模型 ID、或者直接手填任意模型 ID，都不需要修改 Java 代码，也不需要给官方前端打补丁。生成与模型发现复用 java-openai 的 UniChatCl...",
      "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": "爬取网页数据 Web 站点知识库只描述两件事：一个根地址，以及一个可选的正文选择器。后端按目录范围把站点抓下来，转成 Markdown 后按标题切成段落，逐个页面写进文档列表。抓取与向量化都在后台线程执行，创建接口立即返回，文档会随着抓取进度陆续出现，界面上的文档列表每 6 秒刷新一次，不需要等到整站抓完。 下面出现的 Java 代码是对应实现的节选，...",
      "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": "隔离 Python 执行环境配置 用户代码永远不以 Java 进程的身份运行，所以这个功能必须先有一个能\"关住\"代码的执行环境。环境有两种接法，由 kb.python.runner 选择，默认 docker： 本篇只讲环境怎么准备、怎么验证、边界在哪里；执行器本身的协议、参数和失败语义见，函数库接口见。 配置项 全部写在 mosskb-web/my.t...",
      "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": "隔离 Python 执行器 函数库里的 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": "函数库与调用接口 函数库保存用户自己写的 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": "Windows 与 Linux 部署 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 上运行。 依赖 Python: 3.8...",
      "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 Milvus 是可选的替代存储方案。当前 Java MossKB 的已运行检索后端是 PostgreSQL + pgvector，未将 Milvus 列为已经接通的运行路径。 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": "存储文件到云存储 接下来我们完成存储文件到 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": "文档解析异步化 1. 为什么要把解析放到后台 分段预览原来是同步接口：浏览器上传文件后一直等在那里，后端把整份文档解析完再一次性返回分段。整份解析要逐页做远程 OCR，一份 35 页、12 MB 的扫描 PDF 需要几分钟到十几分钟，于是同步实现有三个绕不开的问题： 请求线程被长时间占用。HTTP 连接、超时配置和中间的反向代理都要为最长的那份文档让路...",
      "keywords": [],
      "status": "document",
      "sha256": "90819609d81ec0e6f7b5d5a697f5f10ae3e0242006b43fe915db519bb8f82297"
    },
    {
      "id": "zh/61_knowledge-base/readme.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/readme.md",
      "source": "zh/61_knowledge-base/readme.md",
      "description": "Java MossKB 知识库文档 默认模型 推理、OCR 与向量都调用远程模型服务，默认值来自初始化脚本写入的两个默认模型实例。文档与查询必须使用同一个向量模型和同一维度： 未做任何配置时，最终回答使用上表的默认生成模型，检索向量使用上表的默认向量模型。 两个默认值都由 KnowledgeModelService.chatModel() 与 embe...",
      "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": "ai-search 项目简介 本文档介绍了一个 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": "ai-search 数据库文档 本节提供了用于存储聊天历史记录的 PostgreSQL 数据库表的设计，包括表结构、字段说明及关系定义。 表设计 表结构 max_search_chat_session 表 存储所有的聊天记录的基本信息。 max_search_chat_message 表 存储每个聊天中的消息内容及相关信息。 files 表 复用 ti...",
      "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": "ai-search SearxNG 搜索引擎 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": "ai-search Jina Reader API 在搜索引擎返回的结果中，通常只包含网页的标题（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": "ai-search Jina Search API 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": "ai-search 搜索、重排与读取内容 本文档详细介绍了一个基于 Java 的搜索与网页爬取系统的实现过程。该系统由四个主要模块组成： 搜索请求处理器 搜索服务 AI 重排服务 Playwright 页面爬取服务 获取 Jina Reader API 内容读取 系统整体流程为： 用户发送搜索请求。 系统调用搜索引擎 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": "ai-search PDF 文件处理 本篇文档介绍了如何利用 Apache PDFBox 库对 PDF 文件进行简单处理，即从 PDF 字节数据中提取文本内容。本文主要包括依赖配置、核心代码实现以及使用示例，适用于需要快速解析 PDF 文档内容的场景。 1. 项目依赖 为了使用 PDFBox 进行 PDF 文件处理，需要在 Maven 项目的 pom....",
      "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": "ai-search 推理问答 在构建搜索系统时，往往需要将检索到的文本内容与特定的提示词（Prompt）一并提交给大模型，以生成更高质量的回复。本项目在完成以下功能后，希望进一步实现将检索到的网页内容（以 Markdown 格式）+ 自定义的提示词，发送给大模型进行推理并返回结果给用户： AI 搜索项目简介 数据库设计 SearxNG Jina Rea...",
      "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": "Google Custom Search JSON API 本篇文档旨在介绍如何利用 Google Custom Search JSON API 搜索特定网站。文档内容包括如何创建和配置可编程搜索引擎（Custom Search Engine，简称 CSE）、如何获取 API Key、如何通过 RESTful 接口发送请求，以及如何在前端页面中调用 A...",
      "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": "ai-search 意图识别 意图识别一共 要进行两次,问题重写前识别一次,问题重写后识别一次 意图识别的原理和需要准备的数据 引言 意图识别（Intent Recognition）是自然语言处理（NLP）中的一个重要任务。它的目标是理解用户的输入并确定其背后的意图。这在聊天机器人、虚拟助理和各种人机交互系统中尤为重要。为了实现意图识别，通常需要准备一...",
      "keywords": [],
      "status": "document",
      "sha256": "9a38f3d1190e059e2da3f28e811bfe703bdc2cc6050005a16b9050f4a9d57d43"
    },
    {
      "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": "ai-search 问题重写 什么是问题重写 问题重写：提升对话式 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": "ai-search 系统 API 接口 WebSocket 版本 本文档详细描述了 AI+搜索的推理接口 目录 获取模型信息 获取配置信息 搜索与推理 WebSocket 连接 发送初始信号 发送消息 接收服务器响应 消息历史记录 生成建议问题 获取网站 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": "ai-search 搜索代码实现 WebSocket 版本 本文档详细描述了基于 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": "ai-search 生成建议问 简介 在现代对话系统中，为了更好地满足用户需求，常常需要根据先前的对话上下文为用户生成一些后续的建议问题（suggestions），帮助用户更深入地与大模型或搜索引擎进行交互。本文将介绍如何基于大模型来生成这些建议问，并通过示例代码演示具体的实现方法和使用流程。 核心思路 预设 Prompt 提前编写一个 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": "ai-search 生成问题标题 一、背景介绍 在问答系统或对话系统中，需要将用户的问题或请求进行简短的概括（尤其用于标题或列表显示），但同时要遵循一定的限制（如字数限制、禁用某些词）。而针对并非真正问题的情况（如纯文本写作需求或简单的招呼问候），我们又希望能够统一返回某个占位值以标识此类请求无需生成相应的短标题。 为此，我们引入了一个简单而有效的做法...",
      "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": "ai-search 历史记录 本文档旨在为您的 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": "Discover API 本文档详细介绍了 /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": "翻译 前端发送的参数 提示词 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": "Tavily Search API 文档 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": "对接 Tavily Search 由于 Tavily Search API 能够返回更详细的内容，我们选择将 Tavily Search 作为数据问答的数据来源。下面文档介绍了如何使用 Tavily Search 获取搜索结果，并将结果用于后续的问答推理流程。本文档分为两个部分： MaxSearchSearchService：封装了对 Tavily S...",
      "keywords": [],
      "status": "document",
      "sha256": "9fd3838c69fb29367af0ad1f89bbc1d5d45fe0149b9501374e3cba516b9a8517"
    },
    {
      "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": "火山引擎 DeepSeek 开通火山引擎联网搜索 登录火山引擎-->选择火山方舟 开通 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": "对接 火山引擎 DeepSeek 下面是一篇完整的文档，详细介绍了如何对接火山引擎 DeepSeek 推理 API，将其集成到问答系统中作为推理接口。文档中包含所有代码，并逐步解释各个部分的作用、调用流程和关键实现逻辑，帮助读者深入理解系统的工作原理。 对接火山引擎 DeepSeek 推理 API 在本系统中，我们将火山引擎 DeepSeek 推理 A...",
      "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": "ai-search 搜索代码实现 SSE 版本 本文档详细说明了基于 SSE（Server-Sent Events）的实时消息传输接口及其代码实现。文中首先介绍了 SSE 接口的请求、响应及消息格式，然后逐个解析了各个关键模块的代码逻辑，包括请求处理、消息分发、搜索结果的处理、以及调用 DeepSeek 模型生成回答的过程。读者可以通过本文档了解整个系...",
      "keywords": [],
      "status": "document",
      "sha256": "af83a94f357b2516c17ce905fbd121819f6cede036d0d89ef7765b1808f20205"
    },
    {
      "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": "jar 包部署 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 部署 本文档将指导在 Docker 环境下部署 Max-Search 项目的后端服务，并初始化数据库所需的环境。同时，还将介绍前端的运行方式。 1. 安装 PostgreSQL 在部署后端前，需要准备好 PostgreSQL 数据库，并确保其支持向量扩展。 可以参阅官方文档或 tio-boot 的 PostgreSQL 教程 进行安装和基...",
      "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": "爬取一个静态网站的所有数据 这是一份完整的文档，对整个爬取静态网站数据的程序进行详细说明和代码组织，同时保留所有原有代码。该程序主要目标是将静态网站的所有网页数据（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": "网页数据预处理 项目背景 在采集到海量网页数据后，为了方便后续利用大模型进行问答或知识检索，需要对数据进行预处理。预处理主要包括两个层次的文本分段——首先将整个网页（Document）拆分为较大块的 Paragraph，然后再将 Paragraph 拆分为更小的 Sentence 级文本，最后利用嵌入模型生成向量数据。整个流程依赖于开源项目 java-...",
      "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 的标准对网页数据进行了预处理，生成了符合向量化检索要求的段落数据。接下来，可以直接基于这些预处理数据进行检索，并将检索结果整合到问答流程中，从而实现对用户问题的快速响应。 本篇文档主要介绍两部分内容： 网页数据检索：通过调用预处理好的段落数据服务进行向量检索，获取与用户问题...",
      "keywords": [],
      "status": "document",
      "sha256": "cbf3140009142e1a8f03d1c712d141937d6765990d6db71fc011466abfc4473f"
    },
    {
      "id": "zh/62_ai-search/readme.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/readme.md",
      "source": "zh/62_ai-search/readme.md",
      "description": "62_ai-search 本目录包含 33 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《ai-search 项目简介》。 : 文档《ai-search 数据库文档》。 : 文档《ai-search SearxNG 搜索引擎》。 : 文档《ai-search Jina Read...",
      "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": "整合Gemini realtime模型 本文档面向希望在 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": "Voice Agent 前端接入接口文档 本文档面向前端工程师，描述与后端实时语音代理的 WebSocket 协议、二进制音频格式、事件契约与接入示例。文档基于后端的桥接实现，目标是帮助前端同学快速对接并稳定播放 / 采集音频与显示转写与事件。 1 概要 连接方式：WebSocket（推荐使用 WSS） 默认路径示例：wss://{host}/api/...",
      "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": "整合千问realtime模型 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_complete 不一定意味着“音频已经...",
      "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. 目标 在实时语音场景中，用户有时会在官提问后长时间沉默。为了让对话自然推进，系统需要在用户长时间未开始回答时，主动由模型介入，引导用户继续作答、补充思路，或换一种更容易回答的方式继续交流。 本方案的目标是： 在用户长时间未开始回答时自动触发主动介入。 主动介入由模型自然生成，而不是后端写死固定提醒文案。 避免把“麦克风仍在持续上传静音音...",
      "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": "eleven labs",
      "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": "基于 tio-boot + ElevenLabs 构建实时语音 Agent（支持打断与主动介入） 这篇文章记录一次完整的实时语音 Agent 实践： 使用 tio-boot 作为后端 WebSocket 网关，对接 ElevenLabs Agents 实时语音能力，实现一个支持： 实时语音对话（浏览器麦克风） 中文语音输出 多轮对话 用户打断（inte...",
      "keywords": [],
      "status": "document",
      "sha256": "12425f3a3b2ea2ae12c23bf9a44d3434e867f032e0c92862b07835993454dc74"
    },
    {
      "id": "zh/63_voice-agent/readme.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/readme.md",
      "source": "zh/63_voice-agent/readme.md",
      "description": "63_voice-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": "Cline 提示词 本文档用于拆解用户与 MCP Time 工具及大模型交互的过程，同时详细说明如何使用系统提示词和各类工具。 提示词 系统提示词 首先有一个系统提示词,内容如下 用户输入 用户输入的内容使用 task 标签包裹 将当前的环境信息页发送给大模型 Assistant 大模型返回信息,指示客户端调用 mcp 工具 user 客户端执行 mc...",
      "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": "Cline 提示词-中文版本",
      "keywords": [],
      "status": "document",
      "sha256": "e82da2f672766a4d9b135aa42b91faf4dc43928c57a7edf389d0a366ed875fb8"
    },
    {
      "id": "zh/64_ai-coding/readme.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/readme.md",
      "source": "zh/64_ai-coding/readme.md",
      "description": "64_ai-coding 本目录包含 3 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Cline 提示词》。 : 文档《Cline 提示词-中文版本》。",
      "keywords": [],
      "status": "document",
      "sha256": "2d90241d3c2c9c6fc3f965eb47f8eeea76b39bf6df25334a42051d2b90f6c87e"
    },
    {
      "id": "zh/65_ai-browser/01.md",
      "title": "deepseek-browser-use：概念与学习路线",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/01.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/01.md",
      "source": "zh/65_ai-browser/01.md",
      "description": "deepseek-browser-use：概念与学习路线 deepseek-browser-use 是供智能体调用的浏览器服务。它用真实浏览器加载网页，通过 HTTP 接收命令，返回页面文本、元素索引、截图和动作结果。DeepSeek 或其他模型负责理解目标与选择动作；服务负责执行，模型调用并不内置在每条浏览器命令里。 项目源码：GitHub、Gite...",
      "keywords": [],
      "status": "document",
      "sha256": "f1e1b400095f5d83e4ec6cb9a4230274eca3e33a8bede63f7d90eac394dc3dc5"
    },
    {
      "id": "zh/65_ai-browser/02.md",
      "title": "安装、启动与健康检查",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/02.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/02.md",
      "source": "zh/65_ai-browser/02.md",
      "description": "安装、启动与健康检查 本章目标是让 deepseek-browser-use 服务正常响应健康检查。浏览器任务在下一章创建。 环境准备 当前源码需要 Java 21 或以上环境。源码运行还需要 Maven；使用 dsb 客户端不需要 Python 或其他运行时 —— 它是一个静态二进制（源码在仓库 dsb/，go build 一下即可，见 ）。选用平台...",
      "keywords": [],
      "status": "document",
      "sha256": "8e76679af2ba3193201d11649345402300976bea4e72c66e79b5989961a747db"
    },
    {
      "id": "zh/65_ai-browser/03_client.md",
      "title": "客户端：dsb 命令行与结构化留档",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/03_client.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/03_client.md",
      "source": "zh/65_ai-browser/03_client.md",
      "description": "客户端：dsb 命令行与结构化留档 dsb 是 Go 实现的命令行客户端，负责参数解析、HTTP 调用、退出码和 UTF-8 留档。浏览器操作由服务端执行。安装、多目标和后端管理见 ，可靠采集见 。本章提供当前可执行入口，不依赖已经移除的 Python 客户端。 1. 常用命令 1001 为数字示例 ID，使用前确认没有被占用。同一任务复用 ID，结束...",
      "keywords": [],
      "status": "document",
      "sha256": "da5f67e0d837dd3b2a855aa7e78b09588eb63b88ec189a1f8a712359a017ee48"
    },
    {
      "id": "zh/65_ai-browser/03.md",
      "title": "第一个任务：打开页面、读取结果与关闭",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/03.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/03.md",
      "source": "zh/65_ai-browser/03.md",
      "description": "第一个任务：打开页面、读取结果与关闭 本章使用项目自带 dsb 客户端完成一个只读任务。先按 启动服务，再在仓库根目录运行命令。 1. 创建任务 1001 是教学 ID，执行前应确认没有同名任务。实际项目可省略 ID，由服务生成；读取返回的 data.id，后续请求始终使用这个值。Java 侧需要生成业务 ID 时使用 nexus.io.tio.uti...",
      "keywords": [],
      "status": "document",
      "sha256": "a3effd1fe6a9eb417af4c5823313260cdc4dce7bb3e8587a464d6e20367a82d2"
    },
    {
      "id": "zh/65_ai-browser/04.md",
      "title": "统一命令接口与人机协作",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/04.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/04.md",
      "source": "zh/65_ai-browser/04.md",
      "description": "统一命令接口与人机协作 本章介绍 deepseek-browser-use 的统一接口。完成后，再了解请求、响应和错误处理。所有浏览器控制命令使用 POST /playwright/command；执行过程见。 项目源码：deepseek-browser-use。智能体使用说明位于 .agents/skills/deepseek-browser-use...",
      "keywords": [],
      "status": "document",
      "sha256": "f5f7e917c98cf6b09d9d4abc15e557356c20c82a473dbe8ff7664ead88d56567"
    },
    {
      "id": "zh/65_ai-browser/05.md",
      "title": "浏览器、profile 与登录态",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/05.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/05.md",
      "source": "zh/65_ai-browser/05.md",
      "description": "浏览器、profile 与登录态 本文说明当前工程「用哪个浏览器、用哪份 profile、登录态存在哪」，以及换浏览器带来的实际后果。前文 讲的是请求与响应的形状，本文讲的是浏览器本身。 一、一个浏览器，多个任务 浏览器是全进程共享的：一个浏览器进程、一份 profile，任务之间靠页签隔离。 为什么不能一个任务一个浏览器。 用户数据目录天生是单例：同...",
      "keywords": [],
      "status": "document",
      "sha256": "fd1c3a793d51c5a040ea052bfd8becc303d49249a36ec0fb8253eb1ee01be5f5"
    },
    {
      "id": "zh/65_ai-browser/06.md",
      "title": "窗口尺寸与页面视口",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/06.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/06.md",
      "source": "zh/65_ai-browser/06.md",
      "description": "窗口尺寸与页面视口 本文说明浏览器窗口开多大、页面按多大排版、截出来的图是什么尺寸。「窗口尺寸」和「页面视口」在早期实现里是同一个值，现在分开管理 —— 混在一起会得到一个页面比窗口还大的怪状态。 一、两件事必须分开看 把它们当成一件事时会出现这种结果：页面按钉死的尺寸排版，窗口按自己的尺寸显示，于是「页面上的视口高度」和「窗口里能看见的高度」对不上。...",
      "keywords": [],
      "status": "document",
      "sha256": "a5357b0e489820332f8649db77843feb7b2d422e5af4a6f712f3083c5bababbc"
    },
    {
      "id": "zh/65_ai-browser/07.md",
      "title": "接入智能体：观察、执行与验证",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/07.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/07.md",
      "source": "zh/65_ai-browser/07.md",
      "description": "接入智能体：观察、执行与验证 掌握手动调用后，再让模型选择动作。deepseek-browser-use 不要求特定模型，只要上层智能体能够发送 HTTP 请求并读取回执，就可以接入。 服务与智能体各自负责什么 不要把网页中的文字当成调用程序的系统指令。网页内容是待处理的数据；命令选择仍应以用户目标、当前状态和程序约束为准。 从最小循环开始 方法名以 ...",
      "keywords": [],
      "status": "document",
      "sha256": "be98f4ebd6004bc606bdbd86ff9c27209bd71e0bf53eeb63b861f300c672bcc0"
    },
    {
      "id": "zh/65_ai-browser/08.md",
      "title": "表单与多层弹窗排障：防止重复提交",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/08.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/08.md",
      "source": "zh/65_ai-browser/08.md",
      "description": "表单与多层弹窗排障：防止重复提交 本文对应浏览器工程的当前源码，说明表单定位、点击降级、对象释放异常和人工验证的处理方式。升级源码后需要重新构建并重启服务；旧进程不会自动获得这些行为。 支付产品申请等业务可参考。本章只讲浏览器操作，不重复支付接口实现。示例中的任务 ID、企业名称和域名均为占位信息。 1. 可见不等于能收到点击 背景表单和前景短信弹窗可...",
      "keywords": [],
      "status": "document",
      "sha256": "f01d5fa137a03ee5245c1764c3d82a18a3107c5f862bc8c268456b6079acf958"
    },
    {
      "id": "zh/65_ai-browser/09.md",
      "title": "调用追踪、页面留档与文件上传",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/09.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/09.md",
      "source": "zh/65_ai-browser/09.md",
      "description": "调用追踪、页面留档与文件上传 本文说明服务在自己的工作目录里留下了什么、放在哪、以及客户端-服务器模式下怎么把文件送到服务端。这些产物是排障与事后复盘的唯一凭据，同时也是需要定期清理的磁盘占用。 一、每一次调用都有留档 每一次调用（含批量里的每一步）的请求与响应都会落到 <启动目录>/logs/trace/<自然日>/ 下，例如 logs/trace/...",
      "keywords": [],
      "status": "document",
      "sha256": "474ae2229d1d9e62f09490a9d76bce8658671ff63fff9036e6749f073bf9315b"
    },
    {
      "id": "zh/65_ai-browser/10.md",
      "title": "站点配方、技能与异步作业",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/10.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/10.md",
      "source": "zh/65_ai-browser/10.md",
      "description": "站点配方、技能与异步作业 本文讲三件与「让智能体少踩坑」有关的事：把站点经验固化成可执行序列的配方、给人读也给智能体读的技能文档，以及长批次用的异步作业。 一、站点配方（recipes） 把「某个站点上必须这么点」的经验固化成服务端的 JSON 命令序列。每个配方一个 .json 文件，文件名（不含扩展名）就是配方名。 文件格式 commands 与批...",
      "keywords": [],
      "status": "document",
      "sha256": "e7a5529e7893ea1f01f3f286a0b85c79489e15e06f14235efff769d4b7a3a5df"
    },
    {
      "id": "zh/65_ai-browser/11.md",
      "title": "Windows OCR：本地图片与页面文字识别",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/11.md",
      "source": "zh/65_ai-browser/11.md",
      "description": "Windows OCR：本地图片与页面文字识别 ocr_image 识别图片上的文字。默认走后端 Windows 的 Windows.Media.Ocr，也可以配置成调用一条外部文档 OCR 命令（见第 6 节）。它适用于扫描件、公告图片和页面中没有 DOM 文本的区域。它不是二维码解码器，也不等于文档结构化提取；图片中的表格、印章、手写字和模糊字符需...",
      "keywords": [],
      "status": "document",
      "sha256": "91d4bff1de6e724451758cd2e646ff04024b07cb5d077f25462269ee9dec2327"
    },
    {
      "id": "zh/65_ai-browser/12.md",
      "title": "配置项与运维自省",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/12.md",
      "source": "zh/65_ai-browser/12.md",
      "description": "配置项与运维自省 本文列出当前工程的全部运行时配置项与只读查询端点，用于部署、排障和「现在到底是哪个配置在生效」这类问题。 一、配置从哪里读 配置项统一通过 EnvUtils.get 读取，优先级从高到低： EnvUtils 通道（系统属性、环境变量、app.properties 等，具体来源以框架的加载顺序为准）； 服务自带的 browser.pro...",
      "keywords": [],
      "status": "document",
      "sha256": "d7b6c89bbf9dd3d04b4f21c2b51477eadf02fe3c1335e24c797b02e0745b4866"
    },
    {
      "id": "zh/65_ai-browser/13.md",
      "title": "命令清单",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/13.md",
      "source": "zh/65_ai-browser/13.md",
      "description": "命令清单 本文按功能分组列出当前工程的注册方法，用于快速定位「这件事该用哪个方法」。这是方法名与用途索引，不是每条命令的完整参数手册。参数以源码 CommandTable 的注册及服务实现为准，使用说明位于 .agents/skills/deepseek-browser-use/SKILL.md 及其 references/ 分册。 完整实现教程从 开...",
      "keywords": [],
      "status": "document",
      "sha256": "0ac5a34778f144eee7fd19184a9b0198c1e544b57df0f35e06df8ae06673236d"
    },
    {
      "id": "zh/65_ai-browser/14.md",
      "title": "源码教程：从 HTTP 请求到命令执行",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/14.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/14.md",
      "source": "zh/65_ai-browser/14.md",
      "description": "源码教程：从 HTTP 请求到命令执行 本系列以当前 deepseek-browser-use 工程为准，按功能解释全部 122 个注册命令，以及额外的 commands 批量入口。先阅读本章理解公共执行链，再按章节进入具体实现。文中的源码路径均相对于浏览器项目根目录；示例中的 ID、域名及资料均为占位信息。 1. 建立源码地图 表中未写完整前缀的 J...",
      "keywords": [],
      "status": "document",
      "sha256": "69c9ba22207d308b84f7962d722b2e7e61b13fab1d051639c68f38345e4e336d"
    },
    {
      "id": "zh/65_ai-browser/15.md",
      "title": "DOM 原理：前端如何生成可交互快照",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/15.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/15.md",
      "source": "zh/65_ai-browser/15.md",
      "description": "DOM 原理：前端如何生成可交互快照 本章解释当前源码如何把网页 DOM 转成模型可读的结构化文本。先掌握 ，再看实现。 源码入口 文件位于 playwright-server/src/main/resources/dom/dom_tree/： DomService.buildExpression() 加载构建脚本并填入包装脚本；Java 通过 Fra...",
      "keywords": [],
      "status": "document",
      "sha256": "d5baf77f301b2d629deaaad851a74eb0ed775e3c2ac3f696d09dd6757845d66a"
    },
    {
      "id": "zh/65_ai-browser/16.md",
      "title": "DOM 原理：Java 模型与跨 Frame 索引",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/16.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/16.md",
      "source": "zh/65_ai-browser/16.md",
      "description": "DOM 原理：Java 模型与跨 Frame 索引 前端脚本返回节点映射后，Java 负责恢复树形结构、生成可读文本，并保存索引与 Frame 的对应关系。 当前模型 源码位于 playwright-server/src/main/java/nexus/io/ai/browser/dom/model/： DOMState 不只是一个元素编号表，还包括 ...",
      "keywords": [],
      "status": "document",
      "sha256": "a352d11f286532d415dd5d1e2dc4299ac7b399b7bd997783a6282c0ba6db3d3e"
    },
    {
      "id": "zh/65_ai-browser/17.md",
      "title": "正文提取与上层结构化处理",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/17.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/17.md",
      "source": "zh/65_ai-browser/17.md",
      "description": "正文提取与上层结构化处理 正文提取有两条命令，分工按页面上有没有表格来分： extract_structured_data 读取页面正文纯文本，并可附带链接列表。命令名称中的 structured 不表示服务会自动调用大模型生成业务 JSON。 extract_markdown 把页面（或页面上某个元素）转成 Markdown，表格按 GFM 表格输出...",
      "keywords": [],
      "status": "document",
      "sha256": "72cb362eca132a32287e411b54696e18d3099593bf7fb3fd50828a2b20cf38b4"
    },
    {
      "id": "zh/65_ai-browser/18.md",
      "title": "源码教程：生命周期、导航与页签",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/18.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/18.md",
      "source": "zh/65_ai-browser/18.md",
      "description": "源码教程：生命周期、导航与页签 本章从 PlaywrightService.start、BrowserInstance 和页签操作方法入手。共享浏览器策略详见。 1. 启动不是每个任务都创建一个浏览器 start 先解析 browser、headless、profile 等配置，再复用或创建共享浏览器，将任务 ID 与 BrowserInstance ...",
      "keywords": [],
      "status": "document",
      "sha256": "63b8928a287cdf02c0fca1b0af768600973b337c227e2d4c24f6b81e63f5a75c"
    },
    {
      "id": "zh/65_ai-browser/19.md",
      "title": "源码教程：DOM、页面状态与元素读取",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/19.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/19.md",
      "source": "zh/65_ai-browser/19.md",
      "description": "源码教程：DOM、页面状态与元素读取 浏览器服务把 DOM 变为可供模型阅读的文本，同时保存索引与元素、frame 的对应关系。索引是一次快照的定位线索，不是网站自己的元素 ID。 1. DOM 采集链 DomService.buildExpression 读取 resources/dom/dom_tree/index.js 与 run.js，组合并缓...",
      "keywords": [],
      "status": "document",
      "sha256": "6c61093c96784ac056cb112d5189b740380a1c94e673490bf78482d7a261c8ec"
    },
    {
      "id": "zh/65_ai-browser/20.md",
      "title": "源码教程：点击、输入、键盘与鼠标",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/20.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/20.md",
      "source": "zh/65_ai-browser/20.md",
      "description": "源码教程：点击、输入、键盘与鼠标 本章解释定位如何转为动作。核心辅助方法是 resolveIndex、resolveActionTarget、clickWithMode 和输入执行逻辑；遮挡与重复提交的排障步骤见。 1. 索引、CSS 与语义定位 resolveActionTarget 先 count，0 个匹配立即报告不存在；多个匹配扫描前 20 个...",
      "keywords": [],
      "status": "document",
      "sha256": "e206c238608280f73601053b1963cec8583b8b765558dd0e1a91c09a6410704a"
    },
    {
      "id": "zh/65_ai-browser/21.md",
      "title": "源码教程：等待条件与 JavaScript 执行",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/21.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/21.md",
      "source": "zh/65_ai-browser/21.md",
      "description": "源码教程：等待条件与 JavaScript 执行 异步页面不能只靠固定 sleep。等待命令分别判断元素、URL、网络、DOM 或数量条件；条件成立说明观测到了某种状态，不自动证明业务完成。 1. 原生等待与自定义等待 timeoutSeconds 与 quietMs 单位不同。错误时保留实际状态和耗时比只返回“失败”更有帮助。长期轮询的网站可能永远不...",
      "keywords": [],
      "status": "document",
      "sha256": "fbe037612338ae56e06b3941cd826d2f25ef2945f18cdc3e9af771f882e6cfbd"
    },
    {
      "id": "zh/65_ai-browser/22.md",
      "title": "源码教程：文件上传、截图、PDF 与 OCR",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/22.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/22.md",
      "source": "zh/65_ai-browser/22.md",
      "description": "源码教程：文件上传、截图、PDF 与 OCR 这一组命令连接浏览器对象与服务端文件系统。路径属于服务端，不能把客户端路径直接当成服务器可以打开的文件。文件传输协议见，OCR 使用方式见。 1. upload_file 的两个入口分支 注册层先检查 contentBase64 或 url：存在时调用 uploadFileInline，先落盘，再进入页面上...",
      "keywords": [],
      "status": "document",
      "sha256": "eb614c731c9da6a59bab6a86971c5032330e451aa696abcd87c4b8bfca78f069"
    },
    {
      "id": "zh/65_ai-browser/23.md",
      "title": "源码教程：Cookie、存储与页面设置",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/23.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/23.md",
      "source": "zh/65_ai-browser/23.md",
      "description": "源码教程：Cookie、存储与页面设置 这一组命令最容易混淆作用域。任务的 Page 可以独立，但 BrowserContext 可能共享；修改上下文会影响多个任务。不能把所有 set 开头的命令都当作当前页设置。 1. Cookie 是 Context 级数据 当前 set_cookie 命令没有暴露 domain/path 等完整 Cookie 构...",
      "keywords": [],
      "status": "document",
      "sha256": "ba7814db0a5b67c419471d834abd19f95a0bc18f22289c7392cd97fed0a7b861"
    },
    {
      "id": "zh/65_ai-browser/24.md",
      "title": "源码教程：网络记录、请求拦截与控制台",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/24.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/24.md",
      "source": "zh/65_ai-browser/24.md",
      "description": "源码教程：网络记录、请求拦截与控制台 网络功能用于解释“点击后发生了什么”。核心状态位于 BrowserInstance，通过页面事件监听记录请求、响应和失败，再由查询命令过滤和返回。 1. 从事件到请求记录 任务认领 Page 时安装监听器，为请求生成 requestId，保存 URL、方法、类型、时间及必要的正文摘要。响应和失败事件继续更新同一记录...",
      "keywords": [],
      "status": "document",
      "sha256": "b18ad63f242773344f930cf864817c26a4812108ccfda62dcf60a299856ba2a7"
    },
    {
      "id": "zh/65_ai-browser/25.md",
      "title": "源码教程：原生对话框、DOM 弹窗与人机协作",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/25.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/25.md",
      "source": "zh/65_ai-browser/25.md",
      "description": "源码教程：原生对话框、DOM 弹窗与人机协作 这三类能力的实现对象不同：原生对话框由浏览器事件提供，DOM 弹窗是普通网页节点，人工请求是服务端维护的协作状态。它们不能共用“找到一个确定按钮就点”的逻辑。 1. 原生对话框记录 页面出现 alert、confirm 或 prompt 时，监听器保存最近一次对话框信息并按配置处理。读取命令返回的是记录，不...",
      "keywords": [],
      "status": "document",
      "sha256": "e89abfe58ef7f22cf41c82c23710157432886330ee9e5050094b1d757c4fae63"
    },
    {
      "id": "zh/65_ai-browser/26.md",
      "title": "源码教程：批量、配方、后台作业与维护",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/26.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/26.md",
      "source": "zh/65_ai-browser/26.md",
      "description": "源码教程：批量、配方、后台作业与维护 这些能力不增加新的浏览器原语，而是组合和管理已有命令。重点是避免 HTTP 超时被误认为执行失败，以及区分“取消后续步骤”和“撤销已执行操作”。 1. commands 批量入口 commands 是 ActionService.execute 特殊处理的入口，不包含在 122 个注册方法之中。同步批次逐项解析单命...",
      "keywords": [],
      "status": "document",
      "sha256": "893b60a3cdfec9ae2f314da5bcaf01ba93fdc6699dc24fb9e21b0a1d322d25fe"
    },
    {
      "id": "zh/65_ai-browser/27.md",
      "title": "源码教程：Chrome 走 CDP 与 CDP 客户端",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/27.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/27.md",
      "source": "zh/65_ai-browser/27.md",
      "description": "源码教程：Chrome 走 CDP 与 CDP 客户端 本机 Google Chrome 一律通过 CDP（Chrome DevTools Protocol） 驱动：服务自己拉进程、开远程调试端口、用协议接上。为此工程里多了一个独立的协议客户端，包名 nexus.io.chromium.cdp，它不依赖工程内其它包，可以整包拿走单独用。 前文 讲的是「...",
      "keywords": [],
      "status": "document",
      "sha256": "50db0793868fab82e774572a95fca1ee4ffec1040f8724f39b482c81513c94f7"
    },
    {
      "id": "zh/65_ai-browser/28.md",
      "title": "请求响应关联与线程约束",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/28.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/28.md",
      "source": "zh/65_ai-browser/28.md",
      "description": "请求响应关联与线程约束 同一个 URL 可以连续或并发请求多次。get_requests 给出的每个 requestId 必须对应那次请求的状态和正文，get_response_body 与 wait_for_response 也必须沿用这个 ID。只比 URL 或选择最近一条未完成请求，无法证明响应归属。 精确关联与有序采集 服务按请求对象关联响应，...",
      "keywords": [],
      "status": "document",
      "sha256": "fbb28c3acfe86f4965c47da40acd98137ecda04bb403420a3b559c20cf6bf00a"
    },
    {
      "id": "zh/65_ai-browser/29.md",
      "title": "DeepSeek Harness 插件开发入门：从入口到第一个工具",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/29.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/29.md",
      "source": "zh/65_ai-browser/29.md",
      "description": "DeepSeek Harness 插件开发入门：从入口到第一个工具 如果你会写 Java 或 JavaScript，但还不知道 Harness 插件从哪里开始，本系列按四个步骤带你理解并修改 @litongjava/dsh-plugin-deepseek-browser-use：建立插件入口、接入基础浏览器命令、处理会话和异步作业、安装到宿主。 本篇的...",
      "keywords": [],
      "status": "document",
      "sha256": "df62af33f9e310f10a478aa73de6307f2be92b972cd4368776b69ea2c1fcc89c"
    },
    {
      "id": "zh/65_ai-browser/30.md",
      "title": "开发 dsh-plugin-deepseek-browser-use：HTTP 客户端与基础工具",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/30.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/30.md",
      "source": "zh/65_ai-browser/30.md",
      "description": "开发 dsh-plugin-deepseek-browser-use：HTTP 客户端与基础工具 上一篇完成了工具注册和派发。这一篇接入 Java 浏览器服务，让模型能够导航、观察、点击和输入。代码取自插件 0.2.0；完整文件会明确标注，其余片段都在现有工程中阅读或修改，不需要逐块拼接。 1. 先定义调用链和最小验收任务 本篇要完成的任务是：打开一个...",
      "keywords": [],
      "status": "document",
      "sha256": "386b4c92913962cfd3ccbddd76b62062ee1938841e051e76392666474c6fa692"
    },
    {
      "id": "zh/65_ai-browser/31.md",
      "title": "开发 dsh-plugin-deepseek-browser-use：会话、作业、文件与图片",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/31.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/31.md",
      "source": "zh/65_ai-browser/31.md",
      "description": "开发 dsh-plugin-deepseek-browser-use：会话、作业、文件与图片 上一篇已经把工具请求送到了 Java 服务。真实使用还有几个问题：两个会话会不会操作同一个任务？同一会话同时发两个命令怎么办？HTTP 已返回，但异步批次还没结束怎么办？本篇结合插件 0.2.0 的实际实现，逐步补齐这些核心能力。 1. 为什么不能只保存一个全...",
      "keywords": [],
      "status": "document",
      "sha256": "deb029a453bec7dd5d7235017364cfab15d79b74be03df35a5bc190fc29ba3b1"
    },
    {
      "id": "zh/65_ai-browser/32.md",
      "title": "把 dsh-plugin-deepseek-browser-use 构建并安装到 DeepSeek Harness",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/32.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/32.md",
      "source": "zh/65_ai-browser/32.md",
      "description": "把 dsh-plugin-deepseek-browser-use 构建并安装到 DeepSeek Harness 前三篇已经说明插件入口、HTTP、工具和会话管理。这一篇把源码变成可安装的插件，并确认目标 Harness 真正用上了它。操作以当前插件 0.2.0、Harness 0.2.0-rc.2 为基线。 下面的命令是给读者在自己的开发机和目标 ...",
      "keywords": [],
      "status": "document",
      "sha256": "e8766279172969d959caf3c2b203e1ceb12e10886a357002203862920db81a46"
    },
    {
      "id": "zh/65_ai-browser/33.md",
      "title": "DeepSeek Harness 原生浏览器插件：安装、配置与使用",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/33.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/33.md",
      "source": "zh/65_ai-browser/33.md",
      "description": "DeepSeek Harness 原生浏览器插件：安装、配置与使用 首次开发 Harness 插件，建议先读 → → → ，再用本篇查配置与日常用法。 本章使用 @litongjava/dsh-plugin-deepseek-browser-use，让 DeepSeek Harness 直接调用结构化浏览器工具。插件位于 deepseek-browse...",
      "keywords": [],
      "status": "document",
      "sha256": "54d1d4e620d404ca6cbec3a93f900a98a23a18aa5c28bb29460bc6faf1d322b2"
    },
    {
      "id": "zh/65_ai-browser/34.md",
      "title": "DeepSeek Harness 原生浏览器插件：源码、生命周期与测试",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/34.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/34.md",
      "source": "zh/65_ai-browser/34.md",
      "description": "DeepSeek Harness 原生浏览器插件：源码、生命周期与测试 插件源码目录是 deepseek-browser-use/plugins/deepseek-browser-use。它保留 Java 服务现有协议，只在 Harness 和 HTTP 之间增加适配层。安装步骤见 。 1. 文件分工 2. 插件装载与工具注册 index.ts 导出 ...",
      "keywords": [],
      "status": "document",
      "sha256": "35a5fe4c56e50b1c8de349b307ea29dc64ca8f5c47b047c8c6e46d278f3fe941"
    },
    {
      "id": "zh/65_ai-browser/35.md",
      "title": "后端自动管理：安装 Java 与 Git、更新源码、编译和启动",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/35.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/35.md",
      "source": "zh/65_ai-browser/35.md",
      "description": "后端自动管理：安装 Java 与 Git、更新源码、编译和启动 原生插件 0.2.0 增加 dsb_backend。启用后，Windows 用户不必先手工起 Java 服务：插件检查依赖、克隆源码、执行 Maven 构建，再以隐藏窗口方式启动长驻后端。浏览器动作仍直接走 HTTP。 1. 默认部署位置与来源 Windows 存在 D 盘时，默认源码目录...",
      "keywords": [],
      "status": "document",
      "sha256": "be24e4cd6998fefedcc6faa4c4011644c8576fa21af5977631b83258702cf1e8"
    },
    {
      "id": "zh/65_ai-browser/36.md",
      "title": "页面正在导航与主 Frame 缺失：PAGE_NAVIGATING",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/36.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/36.md",
      "source": "zh/65_ai-browser/36.md",
      "description": "页面正在导航与主 Frame 缺失：PAGE_NAVIGATING 只读命令突然报 Cannot invoke \"com.microsoft.playwright.Frame.childFrames()\" because \"frame\" is null，或者在构建快照时抛 Index 0 out of bounds for length 0 —— 这两...",
      "keywords": [],
      "status": "document",
      "sha256": "4374e30ed99d7ebf1dfa5840dbae07443b13a189b9299bc84fc0e4f7fa8d1c45"
    },
    {
      "id": "zh/65_ai-browser/37.md",
      "title": "dsb 客户端：Go 版本、多目标与后端服务管理",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/37.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/37.md",
      "source": "zh/65_ai-browser/37.md",
      "description": "dsb 客户端：Go 版本、多目标与后端服务管理 介绍当前命令行参数、结构化输出与留档。本章介绍 Go 实现的单文件二进制 dsb 的安装、多目标与服务管理；源码在仓库 dsb/ 目录。 这一章讲三件事：为什么换、怎么装、以及新版本多出来的两块能力 —— 连别的主机/多个端口 与 自己管后端服务。 1. 为什么换成 Go 原来的 Python 客户端只...",
      "keywords": [],
      "status": "document",
      "sha256": "d60fb9210e6ab20941b8f82ec2cb03021bf77e668478e191f22fe2e2edffcf04"
    },
    {
      "id": "zh/65_ai-browser/38.md",
      "title": "可靠的数据采集：上下文校验、UTF-8 留档与证据口径",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/38.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/38.md",
      "source": "zh/65_ai-browser/38.md",
      "description": "可靠的数据采集：上下文校验、UTF-8 留档与证据口径 浏览器自动化把可见页面、接口响应与调用留档连接起来。将动作执行、输出处理和业务结论分开记录，可以减少重复操作，并让分析结果可以追溯。本章只介绍通用采集能力，不包含具体应用的业务报告。 1. 使用明确的客户端入口 methods 是 CLI 子命令；协议方法使用 dsb run list_metho...",
      "keywords": [],
      "status": "document",
      "sha256": "414b753978f26afcfc50acdc7a302f87c356376699f5a31480e5e18593e7dffe"
    },
    {
      "id": "zh/65_ai-browser/39.md",
      "title": "浏览器 profile：列表、克隆与选择",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/39.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/39.md",
      "source": "zh/65_ai-browser/39.md",
      "description": "浏览器 profile：列表、克隆与选择 本文说明如何发现服务端的 Chrome profile、离线克隆为独立命名 profile，以及在启动时选择它。共享浏览器与登录态基础见 ，客户端安装见 。 一、先分清目录与名称 userDataDir：用户数据根目录，里面通常有 Local State 和多个子 profile。 profileDirecto...",
      "keywords": [],
      "status": "document",
      "sha256": "eb45babb0365094c6dcbb541f131200c33fab47fa40059dc3b383fdd6d0efab4"
    },
    {
      "id": "zh/65_ai-browser/assets/readme.md",
      "title": "assets",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/assets/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/assets/readme.md",
      "source": "zh/65_ai-browser/assets/readme.md",
      "description": "assets 本目录包含 5 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 baidu-boxed.png: 图片资源，用于本目录文档配图或界面示意。 google-dom.png: 图片资源，用于本目录文档配图或界面示意。 plugin-install-creator-mode.png...",
      "keywords": [],
      "status": "document",
      "sha256": "724cda33a2cf00eac271334ab11442b4f3b0c16a225cce0f596df07c415f4ece"
    },
    {
      "id": "zh/65_ai-browser/readme.md",
      "title": "deepseek-browser-use：从入门到源码",
      "language": "zh-CN",
      "chapter": "zh/65_ai-browser",
      "url": "https://tio-boot.com/zh/65_ai-browser/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/65_ai-browser/readme.md",
      "source": "zh/65_ai-browser/readme.md",
      "description": "deepseek-browser-use：从入门到源码 本章对应当前 deepseek-browser-use 工程，所有浏览器控制操作通过 POST /playwright/command。新读者从 01 开始；已经接入的读者可直接查 13 的命令清单。文中源码路径相对于浏览器项目根目录。 第一阶段：从零运行一个任务 按顺序阅读，完成环境准备、第一次...",
      "keywords": [],
      "status": "document",
      "sha256": "8e60a510327b00f41bda975e1e6c5503be522fd07f558e5012b896eca35d3200"
    },
    {
      "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": "语音合成系统 本系统旨在将输入文本转换为语音并返回 MP3 格式的音频文件。系统会自动根据输入文本的语言选择对应的语音合成引擎，并对生成的音频进行缓存，避免重复请求，从而降低资源消耗。 1. 系统简介 系统主要包含以下功能与特性： 多语言支持： 英文文本： 使用 OpenAi 提供的 TTS 服务进行语音合成。 中文文本： 使用火山引擎的 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": "Fish.audio TTS 接口说明文档与 Java 客户端封装 本文档详细说明了 Fish.audio TTS 接口的使用方法，并给出了完整的 Java 客户端封装示例代码，包括请求参数对象、硬编码实现的 MsgPack 转换工具、客户端调用逻辑以及测试示例。通过阅读本文档，您可以了解如何构造 msgpack 格式的请求体，如何使用 OkHttp ...",
      "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": "整合 fishaudio 到 java-uni-ai-server 项目 本文档详细介绍了如何在项目中整合 fishaudio 语音合成服务。项目原有的 TTS（语音合成）服务支持 openai 和 volce 平台，现在新增 fishaudio 服务，方便用户选择不同的 TTS 平台。下面将逐步展示各个模块的代码及功能说明。 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/readme.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/readme.md",
      "source": "zh/66_java-uni-ai-server/readme.md",
      "description": "66_java-uni-ai-server 本目录包含 5 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《语音合成系统》。 : 文档《Fish.audio TTS 接口说明文档与 Java 客户端封装》。 : 文档《整合 fishaudio 到 java-uni-ai-serv...",
      "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搭建多模型LLM代理服务 本文档介绍如何基于tio-boot框架快速搭建一个支持多模型的大语言模型代理服务。该代理服务将接收来自客户端的请求（包括流式和非流式模式），并通过统一接口将请求转发至OpenAI、Anthropic Claude和Google Gemini等API，同时负责将返回结果以HTTP响应或SSE（Server-S...",
      "keywords": [],
      "status": "document",
      "sha256": "a7e51948b2a1574f8d8234d4da2e9fecf454de173758798b1a6c980e71781039"
    },
    {
      "id": "zh/67_java-llm-proxy/readme.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/readme.md",
      "source": "zh/67_java-llm-proxy/readme.md",
      "description": "67_java-llm-proxy 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《使用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 代码 本文档介绍了如何在 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 代码 本文档介绍如何通过大模型生成符合规范、易于维护的 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": "执行 Python (Manim) 代码 本文档介绍了基于 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": "视频下载增加水印说明文档 该功能提供了一个 HTTP 接口用于视频下载，同时在视频中增加右下角的水印。主要流程如下： 客户端通过 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 请求增加两个可选字段，省略时保持原有横屏布局。 布局 2 按与布局 1 镜像的含义实现。左右分栏是主要偏好，允许根据内容调整比例；手机...",
      "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": "视频配套 PPT 的生成、存储与下载 Manim 合成接口会将场景图片按文件名排序，每张图片生成一页幻灯片，输出 combined.pptx。这种方式能保留视频画面的排版，方便讲解、复习和分享。幻灯片内容以图片呈现，并非可逐项编辑的文本与图形。 合成与上传 调用 GET /manim/finish，参数包括 session_id、可选的 waterma...",
      "keywords": [],
      "status": "document",
      "sha256": "952309faf0c216d001663006677fde33796a2e9ef8d6d74729d49321683a8e8b"
    },
    {
      "id": "zh/68_java-kit-server/assets/readme.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/readme.md",
      "source": "zh/68_java-kit-server/assets/readme.md",
      "description": "assets 本目录包含 2 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 image.png: 图片资源，用于本目录文档配图或界面示意。",
      "keywords": [],
      "status": "document",
      "sha256": "f22794d1be72608929b87e6e6dcbbd61567816805cf9fa5643d70d2abc1b79ca"
    },
    {
      "id": "zh/68_java-kit-server/readme.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/readme.md",
      "source": "zh/68_java-kit-server/readme.md",
      "description": "68_java-kit-server 本目录包含 10 个文件和 1 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《Java 执行 python 代码》。 : 文档《通过大模型执行 Python 代码》。 : 文档《执行 Python (Manim) 代码》。 : 文档《待定》。 : 文档《...",
      "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": "通讯协议文档 本通讯协议旨在为即时通讯系统提供一套全面、可靠的消息传输标准。协议支持多种登录方式、消息类型及群聊功能，并包含完善的鉴权与消息重发机制，确保消息的安全与可靠传递。 功能概述 本通讯协议支持以下功能： 确认（ACK）、重发、消息序列 管理。 匿名登录、用户名密码登录 和 Token 登录。 支持发送多种类型的消息：文本（Text）、图片（I...",
      "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": "ChatPacket.proto 文档 本文档详细描述了即时通讯系统中使用的 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": "java protobuf 生成代码 解析二进制数据 使用 ChatPacket 生成和解析二进制数据的两个实例 下面是两个实例，展示如何使用 ChatPacket 类生成二进制数据并将其解析回 ChatPacket 对象。可以将这些实例直接应用到的 Java 项目中。 实例 1：生成二进制数据 在这个实例中，我们将创建一个 ChatPacket 对象...",
      "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: 用于跟踪和确认的唯一消息序列号。 ack: ...",
      "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": "e300fcf52a256b43024959031c3c3ba52be74370499f19ce61e18df387c4baba"
    },
    {
      "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/readme.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/readme.md",
      "source": "zh/69_tio-im/readme.md",
      "description": "69_tio-im 本目录包含 9 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《通讯协议文档》。 : 文档《ChatPacket.proto 文档》。 : 文档《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": "tio-mail-wing简介 核心目标 实现邮件接收服务 (SMTP)：能够接收来自其他邮件服务器（如 QQ、Gmail 发来的邮件）或邮件客户端（如 Foxmail、Outlook 发出的邮件）的邮件。 实现邮件读取服务 (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": "任务1:实现POP3系统 POP3 协议详解 (Post Office Protocol version 3) POP3 是一种应用层协议，其全称为“邮局协议第3版”。顾名思义，它的工作模式非常像现实生活中的邮局信箱。 核心思想： 去邮局的信箱取信，把所有信件都拿出来带回家，然后的信箱就空了。在家阅读、整理、删除这些信件，这些操作都与邮局无关了。 PO...",
      "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": "使用 getmail 验证 tio-mail-wing POP3 服务 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": "任务2：实现 SMTP 服务 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 数据库初始化方案。方案包含两部分： 数据表结构定义 (DDL): 创建项目所需的所有核心数据表，其设计充分考虑了 IMAP 协议的特性、数据库性能优化以及未来的可扩展性。 基础数据填充 (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) 2.1. 类定义与职责 2.2. 核...",
      "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": "任务3：实现 SMTP 服务 数据库版本 1. 项目背景 该项目基于 TIO 框架，提供了一个完整的 SMTP 服务实现，支持以下特性： 使用 SMTP 协议处理邮件收发 支持 EHLO/HELO、AUTH LOGIN、MAIL FROM、RCPT TO、DATA、RSET、QUIT 等命令 将接收的邮件内容持久化到数据库（通过 MailService...",
      "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": "任务4：实现 POP3 服务（数据库版本） 本任务旨在基于 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 协议 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 之后立即清除的，而是一个“会话级”新邮件标记，其清除时机如下： 同一会话内的 SELECT/EXAMINE 不会清除它 当在同一个连接（session）里再次对同一信箱执行 SELECT 或 E...",
      "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": "任务5：实现 IMAP 服务（数据库版本） 任务概述 本任务旨在基于 T-IO 框架和数据库后端，实现一个完整的 IMAP 服务。系统包含以下几部分： ImapPacket：用于表示网络数据包的简单封装。 ImapSessionContext：会话级上下文，用于管理客户端状态、登录信息和当前选中邮箱。 ImapServerAioListener：连接级...",
      "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": "IMAP实现讲解 1. 邮件格式内容示例 下面展示了一封存储在数据库中的邮件原始内容示例（包括头部和正文）： Message-ID：全局唯一标识符，由发件端或服务器生成。 Date：邮件发送或接收时间，含时区偏移。 MIME-Version、Content-Type：表明邮件的多媒体或字符集格式。 From/To/Subject：标准头部字段，分别指发...",
      "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 手动测试脚本 前提条件 IMAP 服务器已启动，监听 127.0.0.1:143。（如端口不同，请将下面所有示例中的端口相应替换。） 已有用户 user1@tio.com，密码为 00000000。 本示例同时提供 telnet 和 curl 两种测试方式。 一、Telnet 交互测试 启动 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 认证机制 IMAP 协议支持多种认证方式，其中最常见的是： 两步验证（LOGIN）：客户端先请求用户名，再请求密码。 一步验证（PLAIN）：客户端一次性提交用户名和密码。 下面分别介绍这两种方式的报文流程及在服务端的实现。 一、两步验证（LOGIN） 报文流程 客户端发起 AUTHENTICATE LOGIN，服务端依次发送用户名和密码的 ...",
      "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）和其 IDLE 扩展（...",
      "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": "namesapce NAMESPACE 命令的作用是在 IMAP 会话中让客户端查询服务器上可用的邮箱命名空间（namespace），并获取每个命名空间对应的名称前缀（prefix）和层级分隔符（hierarchy delimiter）。具体来说，它告诉客户端： 个人命名空间（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": "CONDSTORE and QRESYNC 核心思路是利用一个全局递增的“修改序号”（mod-seq）来标记每条消息的状态变动，然后让客户端带上自己上次同步时看到的 mod-seq，仅拉取自那以后“真正变动”过的消息（新邮件、标志改动或被删除），从而避免每次都要全量扫描、也不会把旧邮件当“新邮件”再次推送。 一、原理讲解 mod-seq（修改序号） 服...",
      "keywords": [],
      "status": "document",
      "sha256": "54ae3bb048fa1d43f86145ee4c35093a5ba124578f931fd3cc7f49ca7739e12d"
    },
    {
      "id": "zh/70_tio-mail-wing/readme.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/readme.md",
      "source": "zh/70_tio-mail-wing/readme.md",
      "description": "70_tio-mail-wing 本目录包含 19 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《tio-mail-wing简介》。 : 文档《任务1:实现POP3系统》。 : 文档《使用 getmail 验证 tio-mail-wing POP3 服务》。 : 文档《任务2：...",
      "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": "实现 MCP Server 开发指南 本文系统性讲解如何基于 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": "MCP 协议 参考连接 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": "zh/71_tio-mcp-server/11.md",
      "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": "全网首发：从零搭建 Springboot+MCP+JUnit 项目 【搭配CherryStudio】 https://www.bilibili.com/video/BV1qUXkYRE6C/?spm_id_from=333.1007.tianma.1-3-3.click&vd_source=69e3cff470444b21e8c322dddec00def",
      "keywords": [],
      "status": "document",
      "sha256": "612269151ea425c1fe500308555b3ee8b01ec812a75503af758a2260bf44025d"
    },
    {
      "id": "zh/71_tio-mcp-server/readme.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/readme.md",
      "source": "zh/71_tio-mcp-server/readme.md",
      "description": "71_tio-mcp-server 本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《实现 MCP Server 开发指南》。 : 文档《MCP 协议》。 : 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": "收集 docker 日志",
      "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/readme.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/readme.md",
      "source": "zh/72_tio-log-server/readme.md",
      "description": "72_tio-log-server 本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《简介》。 : 文档《收集 docker 日志》。 : 文档《入库》。",
      "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": "SIP Server 第一版原理说明 1. 目标 这一版系统的目标不是做一个完整的运营级 SIP 平台，而是先把最小链路跑通： 监听 SIP TCP 5060 和 SIP UDP 5060 接收终端发来的 INVITE 从本地动态分配一个 RTP 端口 返回带 SDP answer 的 200 OK 等待对端发送 ACK 对端开始往协商好的 RTP 端...",
      "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": "SIP Server 第一版实战 1. 文档目标 本文介绍如何使用 tio-core 框架实现一个最小可运行的 SIP Echo 服务。 这个服务的目标不是做一个完整的 SIP 平台，而是先打通一条最关键的语音链路： 服务端同时监听 SIP TCP 5060 和 SIP UDP 5060 终端发起 INVITE 服务端解析 SIP 和 SDP 服务端动...",
      "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 协议：SIP 一、Windows 平台测试 Wi...",
      "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": "SIP Server 第二版实战 可以这么描述。 背景 当前项目基于 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 第三版实战 可以这样描述第三版本。 背景 在前两个版本的基础上，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": "基于 MediaProcessor 对接 Realtime 模型说明 1. 系统整体流程 SIP Server 已经实现了完整的语音通话链路： SIP 建立通话 SDP 协商音频 codec（PCMU / PCMA） RTP 接收语音数据 解码为 PCM 音频 交给 MediaProcessor 处理 处理后的音频重新编码为 RTP 回发给通话对端 整...",
      "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": "支持 G722 宽带语音 一、背景 当前项目基于 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": "G722编码和解码 一、背景 在前面的几轮演进中，当前项目已经完成了从 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": "增加 9196 回声测试分机 一、背景 当前项目基于 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）。 整个流程可以分为三个主要阶段： 电话网络接入阶段 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": "当用户先提问，模型开始语音回答；在模型语音还没播完时，用户再次说话，希望“插话”或“打断”；但模型没有马上停下当前语音，而是继续把原来的语音输出完，或者至少继续输出一段。这就导致用户和模型同时说话，交互体验像“抢话”。 这个现象通常叫： barge-in failure 也就是“插话失败”或“打断失败” 可以，这个能力官方文档里是支持的。你现在要补的是...",
      "keywords": [],
      "status": "document",
      "sha256": "bfc43a54ec36dd6a36cd821a05bbc27c14aeeb5be4ad1c19113e66425926d3bf"
    },
    {
      "id": "zh/73_tio-sip/readme.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/readme.md",
      "source": "zh/73_tio-sip/readme.md",
      "description": "73_tio-sip 本目录包含 16 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《SIP Server 第一版原理说明》。 : 文档《SIP Server 第一版实战》。 : 文档《一、Windows 平台测试》。 : 文档《SIP Server 第二版实战》。 : 文档《...",
      "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、初始化注解或请求处理中增加自动建表、自动插入账号逻辑。把 SQL 保留为可审阅的文件，...",
      "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": "9fc3ea1645b961adfcce618d0a0593c7ea0d7b872f6df770ed87cadd9c1614f4"
    },
    {
      "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 实例。 本章以 PostgreSQL 为...",
      "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 或通用表接口直接用于普通用户页面。业务接口与联调约定见 。 通过上述步骤，我们已经成功搭建了一个简单的后台管理系统的框架。tio-boot-ad...",
      "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）实现一个基于文件表单的业务功能模块。本模块支持文件上传、下载、预览以及与数据库的集成管理。 数据表设计 文件信息表 系统文件上传表存储了文件上传的详细信息，如文件名、大小、MD5 值等。...",
      "keywords": [],
      "status": "document",
      "sha256": "5d95b19dd3a04954ef8ddb59e0201cf213115947df538a2c5682bd68b502990e"
    },
    {
      "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 组件，在表格的列中添加一个操作按钮。点击按钮后触发网络请求，网络请求成功后刷新表格。同时展示了如何增加全局的按钮，实现类似功能。 功能目标 为表格每行添加一个按钮： 点击按钮后发送网络请求。 请求成功后刷新表格内容。...",
      "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 实现图片管理功能，包括数据库表的创建、后端文件上传配置以及前端页面的开发。 目录 创建数据表 配置后端支持文件上传 前端实现 定义表格列 服务层处理 页面组件 配置路由 显示效果 创建数据表 首先，需要在数据库中创建用于存储图片信息的数据表。以下是...",
      "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 管理 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 管理 PDF 可沿用 的 app_document 表，将 format 设为 pdf，无需重复建表。上传仍须验证文件类型、大小和权限。 展示方式 不能仅设置表格 valueType 就认为已有 PDF 阅读器，也不能把 HTML iframe 直接视为小程序组件。 文件响应与访问 业务接口检查权限后输出 application/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 来实现文章管理功能，包括文章的分类管理、创建、编辑、列表展示以及预览。以下是完整的实现步骤和代码示例。 数据表 为实现文章管理功能，需要设计两张数据表：文章分类表和文章表。 作者表 文章分类表 文章标签表 文章表 tio_boot_admi...",
      "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) CommonEditor 是对 Wa...",
      "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": "整合 Enjoy 模版引擎 本文介绍如何在 tio-boot-admin 项目中集成 Enjoy 模版引擎，并实现数据库数据渲染到前端页面。 一、引入 Enjoy 模版引擎 在项目启动时，执行以下配置： 该配置会完成： 初始化 Enjoy 引擎 设置模版路径 启用模版渲染能力 二、后端实现 1. Handler 编写 创建一个 Handler，用于： ...",
      "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": "历史可选方案：Token 存储与 Sa-Token 本文适用于需要维护旧 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": "业务 API 与 H5 / 小程序联调 本章补充使用 tio-boot-admin（nexus.io 包名）开发 PostgreSQL 业务项目时的接口约定和验证方法。响应格式、用户会话、业务表和第三方占位是业务工程的实现选择，不是框架自动提供的能力。 1. 保留后台配置，增加业务入口 继续使用 的六个内置配置调用。后台登录与 ApiTable 保留原...",
      "keywords": [],
      "status": "document",
      "sha256": "72ab711277c353dec3fbaba32c21910b1eaa26ddfad1a0903ffec71665c28a09"
    },
    {
      "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 根目录使用 JDK 21 执行： ...",
      "keywords": [],
      "status": "document",
      "sha256": "ae596c4411fec59941940cf9ca3ecda4e6196615040c0b378d231c7e0f0c236d"
    },
    {
      "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 从连接示例到业务会话 内置配置只提供连接，不会自动将应用的内存会话迁移到 Redis。业务接入时可建立共享的会话 Service：以 JWT 的 jti 作为键的一部分，用户 ID 作为值，通过 Redis.setStr(key, seconds, value) 写入与令牌一致的有效期；鉴权时校验 JWT 后再读取会话，退出时调用 R...",
      "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": "整合 Elasticsearch 从连接示例到业务检索 TioAdminElasticsearchConfig 不会自动把数据库业务表同步到 Elasticsearch。业务服务需要明确索引字段、写入时机、数据可见性与失败恢复策略： 只索引允许公开搜索的字段，避免同步联系方式、密文或私有文件键。 在最外层数据库事务提交后同步，避免事务回滚后留下可检索文...",
      "keywords": [],
      "status": "document",
      "sha256": "ecc033bdcef2729db5d7147d131ed556f8f7122f3ad2a5e6a56b2039b1156050"
    },
    {
      "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": "后端开发规范：tio-boot、java-db 与 Kv 本文后续新增接口、重构和代码审查的基准。示例省略 import 及与说明无关的业务实现；业务对象 Kv 指 com.jfinal.kit.Kv。文档不固定框架版本，实际能力以项目依赖和对应源码为准。 1. 总体分层 请求链路：路由匹配 → 鉴权拦截器 → Handler → Service → ...",
      "keywords": [],
      "status": "document",
      "sha256": "d63fdf9716812118d6d5d50b6cb2e495b75ff589837fd6ff4d071abf48312ae4"
    },
    {
      "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. 表的职责 图片文件存入对象存储，数据库分别保存文件元数据、业务内容和关联关系。 一篇文章可以有多张图片；删除文章中的图片关联，不等于删除 OSS 对象。文件表设计和扩容说明见，统一上传服务见。 2. 示例表结构 以下 SQL 由用户手动执行，应用启动不自动建表。文件表使用前述章节的结构；这里展示业务主表与关联表。按应用约定使...",
      "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": "6c91c7cb494c568e490f2de6d98608e6acd253c92d6342683a049e0672d2f6ec"
    },
    {
      "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.get 复用业务服务，Tio...",
      "keywords": [],
      "status": "document",
      "sha256": "e6365e8b8fe0a46ea99a3d9d110a0c81d8a930661e01f9c24cd52f52a67e3c92"
    },
    {
      "id": "zh/74_tio-boot-admin/readme.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/readme.md",
      "source": "zh/74_tio-boot-admin/readme.md",
      "description": "74_tio-boot-admin 推荐阅读顺序：01 入门指南 → 02 手动初始化数据库 → 03 配置职责 → 04 整合数据库 → 05 与前端集成 → 。 Redis 连接与字符串操作见 。17 是历史可选方案，默认接入不需要 Sa-Token。业务联调、路由鉴权和开发规范分别见 18、19、22。 章节目录 图片资源 create.png:...",
      "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 查询服务的 IP 服务，包括从申请百度 API 密钥到实现完整的业务逻辑。通过本文，您将学会如何搭建一个高效、可缓存的 IP 查询服务，减少对百度 API 的调用次数，从而降低成本。 文章目的 本文旨在为开发者提供一个完整的、可...",
      "keywords": [],
      "status": "document",
      "sha256": "869a512a32d6c15b3dd9210e776d67e725f55b227e43d6b493c93c28a32bba8a"
    },
    {
      "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 作为一款轻量级高性能框架，可以通过集成企业通知服务（如企业微信、飞书等）实现对异常的实时监控和告警。本文将介绍如何在 tio-b...",
      "keywords": [],
      "status": "document",
      "sha256": "f8289543822942673c7995772758663110bac58276b6f9f06fcc04ee46fac407"
    },
    {
      "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": "tio-boot 案例 - 文件上传和下载 添加依赖 数据表 创建一张数据表,保持上传的数据 配置文件 app.properties 启动类 配置类 实体类 常量类 UPlOAD_FOLDER_NAME 保持文件上传路径 service controller 上传文件 请求示例 响应示例 下载文件 http://localhost/file/downl...",
      "keywords": [],
      "status": "document",
      "sha256": "f10e34e440d3fbed39576d5a4a224d2fd9300ac316cb3bf24b0c9ecbadbc2706"
    },
    {
      "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": "tio-boot 案例 - 整合 ant design pro 增删改查 前端界面 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": "tio-boot 案例 - 流失响应 Introudction 使用 tio-boot 框架的 handler 组件从 openai chatgpt 获取流程响应并以流式的方法返回给客户端 使用了tio-boot框架，集成了与 OpenAI ChatGPT 进行交互的功能，并以服务器发送事件（Server-Sent Events, SSE）方式流式返回...",
      "keywords": [],
      "status": "document",
      "sha256": "67948215f9f030ec56eff6736f623f3c5b579f0b6885f95012bbc0b52497e582"
    },
    {
      "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 案例 - 增强检索 这篇文章主要介绍,如何使用 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": "tio-boot 案例 - 整合 function call function call 简介 Function Call 的典型案例 —— 天气查询插件。 问「我明天应该穿什么？」此时 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 背景介绍 在现代的应用程序中，服务的可靠性和稳定性至关重要。为了确保系统在出现问题时能够及时发现并采取措施，对关键服务的监控显得尤为重要。本项目使用了 Tio-boot 框架，结合 PostgreSQL、Redis 和 Elasticsearc...",
      "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 整合到登录注册系统 本文提供了一个使用 tio-boot 将 SQLite 整合到登录和注册系统的完整指南。内容包括 HTTP API 规范、数据库设计、初始化数据、Java 实现、拦截器以及与前端的集成。 HTTP API 规范 1. 用户登录 接口：POST /api/login/account 请求体：...",
      "keywords": [],
      "status": "document",
      "sha256": "31e026475bf8a7eb01cd02586bdc9e6ce43302068cddb24b72f9d2c15c63e277"
    },
    {
      "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": "tio-boot 案例 - 执行 shell 命令",
      "keywords": [],
      "status": "document",
      "sha256": "77f54ab8efa93a747af53b13469a9c1818695c1c1e5aabd052f08b3e7af2ee42"
    },
    {
      "id": "zh/75_examples/11.md",
      "title": "zh/75_examples/11.md",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/11.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/11.md",
      "source": "zh/75_examples/11.md",
      "description": "题目：基于 Java 的 Tio-Boot 框架实现简单登录系统 一、项目背景 某网站需要开发一个「用户登录模块」，以便已注册用户通过账号和密码登录系统，访问受保护的页面。请使用 Java + tio-boot 框架 完成一个最小可用的登录系统，并满足以下功能与非功能性要求。 二、功能要求 项目基础环境 使用 tio-boot 搭建 HTTP 服务，端...",
      "keywords": [],
      "status": "document",
      "sha256": "877ef51d3ea1a66d1769d3c3814b9f2caf0ee7aa578d52b7eb64e4df664b46b3"
    },
    {
      "id": "zh/75_examples/12.md",
      "title": "zh/75_examples/12.md",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/12.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/12.md",
      "source": "zh/75_examples/12.md",
      "description": "Frontend Interview Task Edge Saved – Article Bookmarking App Time Limit 1 hour Goal Build a small server-side rendered web application using Cloudflare Workers and React Router ...",
      "keywords": [],
      "status": "document",
      "sha256": "c9475ce4d657748269c4cc00b3cfacbf9bd66bae7071acf5f88d16a4dd045fb8"
    },
    {
      "id": "zh/75_examples/13.md",
      "title": "zh/75_examples/13.md",
      "language": "zh-CN",
      "chapter": "zh/75_examples",
      "url": "https://tio-boot.com/zh/75_examples/13.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/75_examples/13.md",
      "source": "zh/75_examples/13.md",
      "description": "题目：基于 Go 的 Hertz 框架实现一个简单登录系统 一、项目背景 请使用 Go 语言 + Hertz 框架 开发一个最小可用的用户登录系统，实现基本的认证与会话管理功能。 二、功能要求 基础环境 使用 Hertz 搭建 HTTP 服务（端口不限）。 使用 Go Modules 管理依赖，项目能正常启动并接收请求。 用户数据 使用任意方式存储用户...",
      "keywords": [],
      "status": "document",
      "sha256": "3b0c4e8372cda0efcb0bce37d38d299e724f2804005065e262bdb067a50ee7df"
    },
    {
      "id": "zh/75_examples/readme.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/readme.md",
      "source": "zh/75_examples/readme.md",
      "description": "75_examples 本目录包含 14 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《封装 IP 查询服务》。 : 文档《tio-boot 案例 - 全局异常捕获与企业微信群通知》。 : 文档《tio-boot 案例 - 文件上传和下载》。 : 文档《tio-boot 案例 ...",
      "keywords": [],
      "status": "document",
      "sha256": "bad9a17866262d2db6b406f6bba9d04aab7a4a170ce83fefd10f31b1005a8f01"
    },
    {
      "id": "zh/76_performance/01.md",
      "title": "压力测试 - tio-http-serer",
      "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-http-serer 测试方式 通过 apache benchmark 工具进行压力测试 测试环境 JDK 信息： java version \"1.8.0_361\" Java(TM) SE Runtime Environment (build 1.8.0_361-b09) Java HotSpot(TM) 64-Bit Serve...",
      "keywords": [],
      "status": "document",
      "sha256": "12118ee1f1f161cf97847e4fd8f6cefda635bd060d31b76114e31c132500494b"
    },
    {
      "id": "zh/76_performance/02.md",
      "title": "压力测试 - tio-boot",
      "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": "压力测试 - tio-boot 1. 测试概述 本文档主要通过 ApacheBench (ab) 和 wrk 两种工具，对基于 [tio-boot][^1] 搭建的本地服务器进行高并发访问压力测试，以评估其在大规模请求场景下的性能表现和稳定性。 2. 环境与测试代码 代码开源地址 https://github.com/litongjava/tio-bo...",
      "keywords": [],
      "status": "document",
      "sha256": "7cafe2f43cfc66ea3ce1352f31e2df11328b926081d5627307510dabcf6790ae"
    },
    {
      "id": "zh/76_performance/03.md",
      "title": "压力测试 - tio-boot-native",
      "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": "压力测试 - tio-boot-native https://github.com/litongjava/tio-boot-http-request-handler-demo 测试结果",
      "keywords": [],
      "status": "document",
      "sha256": "3c6b716be9e435b9b0d085f95125994e254cb52b8c8a735c30470eba48e49f9b"
    },
    {
      "id": "zh/76_performance/04.md",
      "title": "压力测试 - netty-boot",
      "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": "压力测试 - netty-boot 测试代码 服务器配置 在进行性能测试之前，除了运行的 Netty 应用外，还需要确保操作系统和网络环境都做了相应的准备与调优。以下是一些常见的步骤和需要检查的配置命令： 1. 系统资源检查 CPU 和内存 确认服务器的 CPU 核心数和内存大小，确保有足够的资源应对高并发测试。 lscpu free -m cat /...",
      "keywords": [],
      "status": "document",
      "sha256": "678d99ed160e45633bcacfb440d9f3f41a87a30c0ddf2a12a7b92a299b639f2b"
    },
    {
      "id": "zh/76_performance/05.md",
      "title": "性能测试对比",
      "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": "性能测试对比 测试数据 java-aio netty-boot tio-boot 对比分析 根据提供的测试数据，以下是 Java AIO、Netty-Boot 以及 Tio-Boot 三个 Web 中间件在 ApacheBench 压力测试下的性能分析与对比： 1. 基本性能数据 2. 请求延迟分析 Java AIO 50% 的请求在 88 ms 内完...",
      "keywords": [],
      "status": "document",
      "sha256": "d3012b7d9fde4cab330e7c8a998832a6e42d7a219a80178520497833100d93b2"
    },
    {
      "id": "zh/76_performance/06.md",
      "title": "TechEmpower FrameworkBenchmarks",
      "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": "TechEmpower FrameworkBenchmarks 测试报告",
      "keywords": [],
      "status": "document",
      "sha256": "8657d39e1bdf40a8bb30cb992f6657b3ec18bbd4a96959e77d82125186f5894f"
    },
    {
      "id": "zh/76_performance/07.md",
      "title": "压力测试 - tio-boot 12 C 32G",
      "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": "压力测试 - tio-boot 12 C 32G 1. 测试概述 本文档主要通过 ApacheBench (ab) 和 wrk 两种工具，对基于 [tio-boot][^1] 搭建的本地服务器进行高并发访问压力测试，以评估其在大规模请求场景下的性能表现和稳定性。 2. 环境与测试代码 代码开源地址 https://github.com/litongja...",
      "keywords": [],
      "status": "document",
      "sha256": "9cf37955366e154425222d4c88ead44ec4ce7f06e3f767c9c4227816ee6db3b2"
    },
    {
      "id": "zh/76_performance/08.md",
      "title": "HTTP/1.1 Pipelining 性能测试报告",
      "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": "HTTP/1.1 Pipelining 性能测试报告 本文通过使用 wrk 工具对开启和关闭 HTTP/1.1 pipeline 时服务器的性能进行对比测试。 测试环境 工具: wrk 测试地址: http://127.0.0.1:8080/plaintext 测试时长: 60 秒 线程数: 4 并发连接数: 256 超时时间: 8 秒 开启 Pipe...",
      "keywords": [],
      "status": "document",
      "sha256": "179bc0296b55984e7ed1d9dba72e2fdd6730a9ccb620899fe1c09ce5f8f59d2c"
    },
    {
      "id": "zh/76_performance/09.md",
      "title": "tio-boot vs Quarkus 性能对比测试报告",
      "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": "tio-boot vs Quarkus 性能对比测试报告 1. 测试目的 对比 tio-boot 与 Quarkus 在相同硬件环境、相同并发模型下的 HTTP /plaintext 接口性能，重点关注： 吞吐量（Requests Per Second, RPS） 平均延迟 尾延迟（P99 / Max） 在 Keep-Alive 场景下的稳定性 该测试...",
      "keywords": [],
      "status": "document",
      "sha256": "2dc7dbfd04c7559029284c30661226230e8c4edc9c38aaf48e3958fdbe512b7f"
    },
    {
      "id": "zh/76_performance/readme.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/readme.md",
      "source": "zh/76_performance/readme.md",
      "description": "76_performance 本目录包含 10 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《压力测试 - tio-http-serer》。 : 文档《压力测试 - tio-boot》。 : 文档《压力测试 - tio-boot-native》。 : 文档《压力测试 - net...",
      "keywords": [],
      "status": "document",
      "sha256": "b2159348b6f1abf5507cc405efc112ef91f93e8b01fed48fc49a06f696dc7f1e"
    },
    {
      "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.jfinal.aop.annotation.BeforeStartConfiguration 标记的类 启动服务器,监听端口 初始化@nexus.io.jfinal.aop.annotation.Configu...",
      "keywords": [],
      "status": "document",
      "sha256": "f1bc38f594b680dfd0d8722ce1f8085cd4464d87f7497c5d861de2f1c6cd4894"
    },
    {
      "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-boot 框架的请求...",
      "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": "重要的类 nexus.io.tio.boot.context.Enviorment: 这个类是一个环境配置类，用于管理和配置应用程序的运行环境。它可能包含了设置如数据库连接、服务地址等环境相关的配置。 nexus.io.tio.boot.context.TioApplicationContext: 这个类是一个应用程序上下文类，它负责启动程序和初始化和...",
      "keywords": [],
      "status": "document",
      "sha256": "c2d591639ac1fd7d28617d3ff1c514b6fff74c2e660873fb8fa9b05bce02f710"
    },
    {
      "id": "zh/77_internals/readme.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/readme.md",
      "source": "zh/77_internals/readme.md",
      "description": "77_internals 本目录包含 4 个文件和 0 个子目录，下列摘要基于文件名、一级标题或资源类型整理。 文件清单 : 当前目录的导航与文件摘要。 : 文档《生命周期》。 : 文档《请求处理流程》。 : 文档《重要的类》。",
      "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 章节；排查初始化顺序、路由优先级或请求生命周期时再进入本目录。 阅读顺序 ：TioApplication 如何创建上下文，配置何时执行，资源如何关闭。 ：上下文路径、拦截器、Handler、Controller 和静态资源。 ：网络协议处理入口。 ...",
      "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 中的指南 本文档介绍了如何将 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": "HTTP 请求分发与路由优先级 本章介绍 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": "高性能网络编程中的 ByteBuffer 分配与回收策略 —— 基于 t-io 的实践优化 背景 在 Java NIO 网络编程中，ByteBuffer 是最基础的 I/O 缓冲容器。 默认情况下，很多框架会在发送响应时直接调用： 这种“临时分配 → 写出 → 交由 GC 回收”的模式，在高并发场景下会遇到几个问题： GC 压力大：短生命周期的 Byt...",
      "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 源码解析 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": "HTTP 请求与连接生命周期 一次请求的业务处理完成与网络发送完成是两个不同的时刻。框架通过按连接排序的业务队列和串行发送队列，把普通响应、文件响应以及 TLS 写入串联起来，使连接关闭与实际发送状态保持一致。 请求到响应 Handler 返回、Tio.send 返回以及 onAfterHandled 都不能当作“响应已经发完”。发送完成表示本次数据已...",
      "keywords": [],
      "status": "document",
      "sha256": "30d13302cff33e015d393e58615f78e6469bd1c4de79d8744216a9c143f90b4e"
    },
    {
      "id": "zh/78_source-code/readme.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/readme.md",
      "source": "zh/78_source-code/readme.md",
      "description": "78_source-code 下列条目提供源码阅读文档导航。 文件清单 : 当前目录的导航与文件摘要。 : 文档《源码阅读入口》。 : 文档《Swagger 整合到 Tio-Boot 中的指南》。 : 文档《启动与关闭生命周期》。 : 文档《HTTP 请求分发与路由优先级》。 : 文档《高性能网络编程中的 ByteBuffer 分配与回收策略》。 : ...",
      "keywords": [],
      "status": "document",
      "sha256": "f2a90788db00f16f3fbffa673f5a30fd00e5ad4f2950220529bc9668e47952e9"
    },
    {
      "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 开始，接着完成部署与日志配置，再按业务需要进入核心开发、数据访问及其他主题。章节目录采用连续编号和英文名称；下列分组与侧边栏一致。 入门 部署与日志 核心开发 数据库与数据访问 缓存与消息队列 认证与账号体系 网络通信 集成与扩展 Firebase 与 Clerk 多媒体 AI 开发 项目实战 性能、原理与源码",
      "keywords": [],
      "status": "document",
      "sha256": "a8fe3b361a3e4daf05f23e3581afc428bd712fb0ed0145213f1de80580f592b8"
    },
    {
      "id": "zh/modecular_structure.md",
      "title": "zh/modecular_structure.md",
      "language": "zh-CN",
      "chapter": "zh/modecular_structure.md",
      "url": "https://tio-boot.com/zh/modecular_structure.html",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/modecular_structure.md",
      "source": "zh/modecular_structure.md",
      "description": "已将 “Lewis Structure” 栏改为 ASCII 示意结构，不再使用 AXE 简写：",
      "keywords": [],
      "status": "document",
      "sha256": "ec30083fe54c5f9b42347713f7253ab0aed735d0dde3627ba694df72eda7853d"
    },
    {
      "id": "zh/README.md",
      "title": "Home",
      "language": "zh-CN",
      "chapter": "zh/overview",
      "url": "https://tio-boot.com/zh/",
      "markdownUrl": "https://tio-boot.com/ai/pages/zh/README.md",
      "source": "zh/README.md",
      "description": "::: slot footer MIT Licensed | Copyright © 2023-present litongjava :::",
      "keywords": [],
      "status": "document",
      "sha256": "0c784f58e9ebf6d35a9e3d9915232100a1520741e2a14bf58dce1d8bc41135cd"
    }
  ]
}
