Appearance
Runtime API Examples
This page demonstrates usage of some of the runtime APIs provided by VitePress.
The main useData() API can be used to access site, theme, and page data for the current page. It works in both .md and .vue files:
md
<script setup>
import { useData } from 'vitepress'
const { theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>Results
Theme Data
{
"nav": [
{
"text": "语言教程",
"items": [
{
"text": "前端",
"items": [
{
"text": "Flutter",
"link": "/教程/Flutter/base/000_初识flutter"
},
{
"text": "Html",
"link": "/教程/Html/README"
},
{
"text": "Css",
"link": "/教程/Css/README"
},
{
"text": "TypeScript",
"link": "/教程/Typescript/base/001_intro"
}
]
},
{
"text": "服务端",
"items": [
{
"text": "Java",
"link": "/教程/Java/book/README"
},
{
"text": "Golang",
"link": "/教程/Go/README"
},
{
"text": "Rust",
"link": "/教程/Rust/README"
}
]
}
]
},
{
"text": "面试",
"items": []
},
{
"text": "工具软件",
"items": []
},
{
"text": "资源下载",
"items": []
},
{
"text": "知识库",
"items": [
{
"text": "备忘录",
"link": "/备忘录/git"
},
{
"text": "Shell脚本",
"link": "/脚本/shell/http心跳检测"
},
{
"text": "Python脚本",
"link": "/脚本/python/SSH客户端"
}
]
}
],
"sidebar": {
"/教程/Flutter": {
"items": [
{
"dir": "base",
"text": "基础篇",
"items": [
{
"text": "初识flutter",
"link": "/教程/Flutter/base/000_初识flutter"
},
{
"text": "flutter学习路线",
"link": "/教程/Flutter/base/001_flutter学习路线"
},
{
"text": "常用网站",
"link": "/教程/Flutter/base/002_常用网站"
},
{
"text": "环境搭建",
"link": "/教程/Flutter/base/003_环境搭建"
},
{
"text": "HelloWorld",
"link": "/教程/Flutter/base/004_helloWorld"
},
{
"text": "Dart基本语法",
"link": "/教程/Flutter/base/005_dart基本语法"
},
{
"text": "有状态的StatefulWidget",
"link": "/教程/Flutter/base/006_有状态的StatefulWidget"
},
{
"text": "Flutter的基础Widget",
"link": "/教程/Flutter/base/007_Flutter的基础Widget"
},
{
"text": "Flutter的布局Widget",
"link": "/教程/Flutter/base/008_Flutter的布局Widget"
},
{
"text": "Flutter滚动Widget",
"link": "/教程/Flutter/base/009_Flutter滚动Widget"
},
{
"text": "Flutter事件监听",
"link": "/教程/Flutter/base/010_Flutter事件监听"
},
{
"text": "跨组件事件EventBus",
"link": "/教程/Flutter/base/011_跨组件事件EventBus"
},
{
"text": "Flutter状态State管理",
"link": "/教程/Flutter/base/012_Flutter状态State管理"
},
{
"text": "Flutter路由导航",
"link": "/教程/Flutter/base/013_Flutter路由导航"
},
{
"text": "Flutter实现动画",
"link": "/教程/Flutter/base/014_Flutter实现动画"
},
{
"text": "Flutter主题风格",
"link": "/教程/Flutter/base/015_Flutter主题风格"
},
{
"text": "Flutter屏幕适配",
"link": "/教程/Flutter/base/016_Flutter屏幕适配"
},
{
"text": "Flutter应用信息",
"link": "/教程/Flutter/base/017_Flutter应用信息"
},
{
"text": "flutter国际化",
"link": "/教程/Flutter/base/018_flutter国际化"
},
{
"text": "Flutter打包发布",
"link": "/教程/Flutter/base/019_Flutter打包发布"
},
{
"text": "Flutter混合开发",
"link": "/教程/Flutter/base/020_Flutter混合开发"
}
]
},
{
"text": "实战篇",
"items": [
{
"text": "创建项目",
"link": "/教程/Flutter/demo/001_创建项目"
},
{
"text": "主题定义",
"link": "/教程/Flutter/demo/002_主题定义"
},
{
"text": "屏幕适配",
"link": "/教程/Flutter/demo/003_屏幕适配"
},
{
"text": "多环境配置管理",
"link": "/教程/Flutter/demo/004_多环境配置管理"
}
]
}
]
},
"/教程/Html": {
"items": [
{
"dir": "base",
"text": "基础篇",
"items": [
{
"text": "初识flutter",
"link": "/教程/Html/语义化理解"
}
]
}
]
},
"/教程/Css": {
"items": [
{
"dir": "base",
"text": "基础篇",
"items": [
{
"text": "初识flutter",
"link": "/教程/Html/语义化理解"
}
]
}
]
},
"/教程/Typescript": {
"items": [
{
"text": "基础篇",
"items": [
{
"text": "TypeScript 语言简介",
"link": "/教程/Typescript/base/001_intro"
},
{
"text": "TypeScript 基本用法",
"link": "/教程/Typescript/base/002_basic"
},
{
"text": "any 类型,unknown 类型,never 类型",
"link": "/教程/Typescript/base/003_any"
},
{
"text": "TypeScript 的类型系统",
"link": "/教程/Typescript/base/004_types"
},
{
"text": "TypeScript 的数组类型",
"link": "/教程/Typescript/base/005_array"
},
{
"text": "TypeScript 的元组类型",
"link": "/教程/Typescript/base/006_tuple"
},
{
"text": "TypeScript 的 symbol 类型",
"link": "/教程/Typescript/base/007_symbol"
},
{
"text": "TypeScript 的函数类型",
"link": "/教程/Typescript/base/008_function"
},
{
"text": "TypeScript 的对象类型",
"link": "/教程/Typescript/base/009_object"
},
{
"text": "TypeScript 的 interface 接口",
"link": "/教程/Typescript/base/010_interface"
},
{
"text": "TypeScript 的 class 类型",
"link": "/教程/Typescript/base/011_class"
},
{
"text": "TypeScript 泛型",
"link": "/教程/Typescript/base/012_generics"
},
{
"text": "TypeScript 的 Enum 类型",
"link": "/教程/Typescript/base/013_enum"
},
{
"text": "TypeScript 的类型断言",
"link": "/教程/Typescript/base/014_assert"
},
{
"text": "TypeScript 模块",
"link": "/教程/Typescript/base/015_module"
},
{
"text": "TypeScript namespace",
"link": "/教程/Typescript/base/016_namespace"
},
{
"text": "TypeScript 装饰器",
"link": "/教程/Typescript/base/017_decorator"
},
{
"text": "装饰器(旧语法)",
"link": "/教程/Typescript/base/018_decorator-legacy"
},
{
"text": "declare 关键字",
"link": "/教程/Typescript/base/019_declare"
},
{
"text": "d.ts 类型声明文件",
"link": "/教程/Typescript/base/020_d.ts"
},
{
"text": "TypeScript 类型运算符",
"link": "/教程/Typescript/base/021_operator"
},
{
"text": "TypeScript 的类型映射",
"link": "/教程/Typescript/base/022_mapping"
},
{
"text": "类型运算",
"link": "/教程/Typescript/base/023_type-operations"
},
{
"text": "TypeScript 类型工具",
"link": "/教程/Typescript/base/024_utility"
},
{
"text": "TypeScript 的注释指令",
"link": "/教程/Typescript/base/025_comment"
},
{
"text": "tsconfig.json",
"link": "/教程/Typescript/base/026_tsconfig.json"
},
{
"text": "tsc 命令行编译器",
"link": "/教程/Typescript/base/027_tsc"
},
{
"text": "TypeScript 的 ES6 类型",
"link": "/教程/Typescript/base/es6"
},
{
"text": "TypeScript 类型缩小",
"link": "/教程/Typescript/base/narrowing"
},
{
"text": "TypeScript 项目使用 npm 模块",
"link": "/教程/Typescript/base/npm"
},
{
"text": "TypeScript 的 React 支持",
"link": "/教程/Typescript/base/react"
}
]
}
]
},
"/教程/Java": {
"items": [
{
"dir": "base",
"text": "Java基础",
"items": [
{
"text": "简介",
"link": "/教程/Java/book/base/00-简介"
},
{
"text": "对象的概念",
"link": "/教程/Java/book/base/01-对象的概念"
},
{
"text": "安装Java和本书用例",
"link": "/教程/Java/book/base/02-安装Java和本书用例"
},
{
"text": "万物皆对象",
"link": "/教程/Java/book/base/03-万物皆对象"
},
{
"text": "运算符",
"link": "/教程/Java/book/base/04-运算符"
},
{
"text": "控制流",
"link": "/教程/Java/book/base/05-控制流"
},
{
"text": "初始化和清理",
"link": "/教程/Java/book/base/06-初始化和清理"
},
{
"text": "封装",
"link": "/教程/Java/book/base/07-封装"
},
{
"text": "复用",
"link": "/教程/Java/book/base/08-复用"
},
{
"text": "多态",
"link": "/教程/Java/book/base/09-多态"
},
{
"text": "接口",
"link": "/教程/Java/book/base/10-接口"
},
{
"text": "内部类",
"link": "/教程/Java/book/base/11-内部类"
},
{
"text": "集合",
"link": "/教程/Java/book/base/12-集合"
},
{
"text": "函数式编程",
"link": "/教程/Java/book/base/13-函数式编程"
},
{
"text": "流式编程",
"link": "/教程/Java/book/base/14-流式编程"
},
{
"text": "异常",
"link": "/教程/Java/book/base/15-异常"
},
{
"text": "代码校验",
"link": "/教程/Java/book/base/16-代码校验"
},
{
"text": "文件",
"link": "/教程/Java/book/base/17-文件"
},
{
"text": "字符串",
"link": "/教程/Java/book/base/18-字符串"
},
{
"text": "类型信息",
"link": "/教程/Java/book/base/19-类型信息"
},
{
"text": "泛型",
"link": "/教程/Java/book/base/20-泛型"
},
{
"text": "数组",
"link": "/教程/Java/book/base/21-数组"
},
{
"text": "枚举",
"link": "/教程/Java/book/base/22-枚举"
},
{
"text": "注解",
"link": "/教程/Java/book/base/23-注解"
},
{
"text": "并发编程",
"link": "/教程/Java/book/base/24-并发编程"
},
{
"text": "设计模式",
"link": "/教程/Java/book/base/25-设计模式"
}
]
},
{
"dir": "topic",
"text": "专题",
"items": [
{
"text": "编程指南",
"link": "/教程/Java/book/topic/编程指南"
},
{
"text": "标准IO",
"link": "/教程/Java/book/topic/标准IO"
},
{
"text": "并发底层原理",
"link": "/教程/Java/book/topic/并发底层原理"
},
{
"text": "数据压缩",
"link": "/教程/Java/book/topic/数据压缩"
},
{
"text": "流式IO",
"link": "/教程/Java/book/topic/流式IO"
},
{
"text": "文档注释",
"link": "/教程/Java/book/topic/文档注释"
},
{
"text": "并发底层原理",
"link": "/教程/Java/book/topic/并发底层原理"
},
{
"text": "新IO",
"link": "/教程/Java/book/topic/新IO"
},
{
"text": "对象序列化",
"link": "/教程/Java/book/topic/对象序列化"
},
{
"text": "对象传递和返回",
"link": "/教程/Java/book/topic/对象传递和返回"
},
{
"text": "编程指南",
"link": "/教程/Java/book/topic/编程指南"
},
{
"text": "标准IO",
"link": "/教程/Java/book/topic/标准IO"
},
{
"text": "C++和Java的优良传统",
"link": "/教程/Java/book/topic/C++和Java的优良传统"
},
{
"text": "理解equals和hashCode方法",
"link": "/教程/Java/book/topic/理解equals和hashCode方法"
}
]
}
]
},
"/教程/Go": {
"items": [
{
"text": "基础",
"items": [
{
"text": "1.1 起源与发展",
"link": "/教程/Go/01.1"
},
{
"text": "1.2 语言的主要特性与发展的环境和影响因素",
"link": "/教程/Go/01.2"
},
{
"text": "2.1 平台与架构",
"link": "/教程/Go/02.1"
},
{
"text": "2.2 Go 环境变量",
"link": "/教程/Go/02.2"
},
{
"text": "2.3 在 Linux 上安装 Go",
"link": "/教程/Go/02.3"
},
{
"text": "2.4 在 Mac OS X 上安装 Go",
"link": "/教程/Go/02.4"
},
{
"text": "2.5 在 Windows 上安装 Go",
"link": "/教程/Go/02.5"
},
{
"text": "2.6 安装目录清单",
"link": "/教程/Go/02.6"
},
{
"text": "2.7 Go 运行时 (runtime)",
"link": "/教程/Go/02.7"
},
{
"text": "2.8 Go 解释器",
"link": "/教程/Go/02.8"
},
{
"text": "3.0 编辑器、集成开发环境与其它工具",
"link": "/教程/Go/03.0"
},
{
"text": "3.1 Go 开发环境的基本要求",
"link": "/教程/Go/03.1"
},
{
"text": "3.2 编辑器和集成开发环境",
"link": "/教程/Go/03.2"
},
{
"text": "3.3 调试器",
"link": "/教程/Go/03.3"
},
{
"text": "3.4 构建并运行 Go 程序",
"link": "/教程/Go/03.4"
},
{
"text": "3.5 格式化代码",
"link": "/教程/Go/03.5"
},
{
"text": "3.6 生成代码文档",
"link": "/教程/Go/03.6"
},
{
"text": "3.7 其它工具",
"link": "/教程/Go/03.7"
},
{
"text": "3.8 Go 性能说明",
"link": "/教程/Go/03.8"
},
{
"text": "3.9 与其它语言进行交互",
"link": "/教程/Go/03.9"
}
]
},
{
"text": "数据类型与基本结构",
"items": [
{
"text": "4.1 文件名、关键字与标识符",
"link": "/教程/Go/04.1"
},
{
"text": "4.2 Go 程序的基本结构和要素",
"link": "/教程/Go/04.2"
},
{
"text": "4.3 常量",
"link": "/教程/Go/04.3"
},
{
"text": "4.4 变量",
"link": "/教程/Go/04.4"
},
{
"text": "4.5 基本类型和运算符",
"link": "/教程/Go/04.5"
},
{
"text": "4.6 字符串",
"link": "/教程/Go/04.6"
},
{
"text": "4.7 strings 和 strconv 包",
"link": "/教程/Go/04.7"
},
{
"text": "4.8 时间和日期",
"link": "/教程/Go/04.8"
},
{
"text": "4.9 指针",
"link": "/教程/Go/04.9"
},
{
"text": "5.0 控制结构",
"link": "/教程/Go/05.0"
},
{
"text": "5.1 if-else 结构",
"link": "/教程/Go/05.1"
},
{
"text": "5.2 测试多返回值函数的错误",
"link": "/教程/Go/05.2"
},
{
"text": "5.3 switch 结构",
"link": "/教程/Go/05.3"
},
{
"text": "5.4 for 结构",
"link": "/教程/Go/05.4"
},
{
"text": "5.5 break 与 continue",
"link": "/教程/Go/05.5"
},
{
"text": "5.6 标签与 goto",
"link": "/教程/Go/05.6"
},
{
"text": "6.0 函数 (function)",
"link": "/教程/Go/06.0"
},
{
"text": "6.1 介绍",
"link": "/教程/Go/06.1"
},
{
"text": "6.2 函数参数与返回值",
"link": "/教程/Go/06.2"
},
{
"text": "6.3 传递变长参数",
"link": "/教程/Go/06.3"
},
{
"text": "6.4 defer 和追踪",
"link": "/教程/Go/06.4"
},
{
"text": "6.5 内置函数",
"link": "/教程/Go/06.5"
},
{
"text": "6.6 递归函数",
"link": "/教程/Go/06.6"
},
{
"text": "6.7 将函数作为参数",
"link": "/教程/Go/06.7"
},
{
"text": "6.8 闭包",
"link": "/教程/Go/06.8"
},
{
"text": "6.9 应用闭包:将函数作为返回值",
"link": "/教程/Go/06.9"
},
{
"text": "6.10 使用闭包调试",
"link": "/教程/Go/06.10"
},
{
"text": "6.11 计算函数执行时间",
"link": "/教程/Go/06.11"
},
{
"text": "6.12 通过内存缓存来提升性能",
"link": "/教程/Go/06.12"
},
{
"text": "7.0 数组与切片",
"link": "/教程/Go/07.0"
},
{
"text": "7.1 声明和初始化",
"link": "/教程/Go/07.1"
},
{
"text": "7.2 切片",
"link": "/教程/Go/07.2"
},
{
"text": "7.3 For-range 结构",
"link": "/教程/Go/07.3"
},
{
"text": "7.4 切片重组 (reslice)",
"link": "/教程/Go/07.4"
},
{
"text": "7.5 切片的复制与追加",
"link": "/教程/Go/07.5"
},
{
"text": "7.6 字符串、数组和切片的应用",
"link": "/教程/Go/07.6"
},
{
"text": "8.0 Map",
"link": "/教程/Go/08.0"
},
{
"text": "8.1 声明、初始化和 make",
"link": "/教程/Go/08.1"
},
{
"text": "8.2 测试键值对是否存在及删除元素",
"link": "/教程/Go/08.2"
},
{
"text": "8.3 for-range 的配套用法",
"link": "/教程/Go/08.3"
},
{
"text": "8.4 map 类型的切片",
"link": "/教程/Go/08.4"
},
{
"text": "8.5 map 的排序",
"link": "/教程/Go/08.5"
},
{
"text": "8.6 将 map 的键值对调",
"link": "/教程/Go/08.6"
},
{
"text": "9.0 包 (package)",
"link": "/教程/Go/09.0"
},
{
"text": "9.1 标准库概述",
"link": "/教程/Go/09.1"
},
{
"text": "9.2 regexp 包",
"link": "/教程/Go/09.2"
},
{
"text": "9.3 锁和 sync 包",
"link": "/教程/Go/09.3"
},
{
"text": "9.4 精密计算和 big 包",
"link": "/教程/Go/09.4"
},
{
"text": "9.5 自定义包和可见性",
"link": "/教程/Go/09.5"
},
{
"text": "9.6 为自定义包使用 godoc",
"link": "/教程/Go/09.6"
},
{
"text": "9.7 使用 go install 安装自定义包",
"link": "/教程/Go/09.7"
},
{
"text": "9.8 自定义包的目录结构、go install 和 go test",
"link": "/教程/Go/09.8"
},
{
"text": "9.9 通过 Git 打包和安装",
"link": "/教程/Go/09.9"
},
{
"text": "9.10 Go 的外部包和项目",
"link": "/教程/Go/09.10"
},
{
"text": "9.11 在 Go 程序中使用外部库",
"link": "/教程/Go/09.11"
},
{
"text": "10.0 结构 (struct) 与方法 (method)",
"link": "/教程/Go/10.0"
},
{
"text": "10.1 结构体定义",
"link": "/教程/Go/10.1"
},
{
"text": "10.2 使用工厂方法创建结构体实例",
"link": "/教程/Go/10.2"
},
{
"text": "10.3 使用自定义包中的结构体",
"link": "/教程/Go/10.3"
},
{
"text": "10.4 带标签的结构体",
"link": "/教程/Go/10.4"
},
{
"text": "10.5 匿名字段和内嵌结构体",
"link": "/教程/Go/10.5"
},
{
"text": "10.6 方法",
"link": "/教程/Go/10.6"
},
{
"text": "10.7 类型的 String() 方法和格式化描述符",
"link": "/教程/Go/10.7"
},
{
"text": "10.8 垃圾回收和 SetFinalizer",
"link": "/教程/Go/10.8"
},
{
"text": "11.0 接口 (interface)与反射 (reflection)",
"link": "/教程/Go/11.0"
},
{
"text": "11.1 接口是什么",
"link": "/教程/Go/11.1"
},
{
"text": "11.2 接口嵌套接口",
"link": "/教程/Go/11.2"
},
{
"text": "11.3 类型断言:如何检测和转换接口变量的类型",
"link": "/教程/Go/11.3"
},
{
"text": "11.4 类型判断:type-switch",
"link": "/教程/Go/11.4"
},
{
"text": "11.5 测试一个值是否实现了某个接口",
"link": "/教程/Go/11.5"
},
{
"text": "11.6 使用方法集与接口",
"link": "/教程/Go/11.6"
},
{
"text": "11.7 第一个例子:使用 Sorter 接口排序",
"link": "/教程/Go/11.7"
},
{
"text": "11.8 第二个例子:读和写",
"link": "/教程/Go/11.8"
},
{
"text": "11.9 空接口",
"link": "/教程/Go/11.9"
},
{
"text": "11.10 反射包",
"link": "/教程/Go/11.10"
},
{
"text": "11.11 Printf() 和反射",
"link": "/教程/Go/11.11"
},
{
"text": "11.12 接口与动态类型",
"link": "/教程/Go/11.12"
},
{
"text": "11.13 总结:Go 中的面向对象",
"link": "/教程/Go/11.13"
},
{
"text": "11.14 结构体、集合和高阶函数",
"link": "/教程/Go/11.14"
}
]
},
{
"text": "高级编程",
"items": [
{
"text": "12.0 读写数据",
"link": "/教程/Go/12.0"
},
{
"text": "12.1 读取用户的输入",
"link": "/教程/Go/12.1"
},
{
"text": "12.2 文件读写",
"link": "/教程/Go/12.2"
},
{
"text": "12.3 文件拷贝",
"link": "/教程/Go/12.3"
},
{
"text": "12.4 从命令行读取参数",
"link": "/教程/Go/12.4"
},
{
"text": "12.5 用 buffer 读取文件",
"link": "/教程/Go/12.5"
},
{
"text": "12.6 用切片读写文件",
"link": "/教程/Go/12.6"
},
{
"text": "12.7 用 defer 关闭文件",
"link": "/教程/Go/12.7"
},
{
"text": "12.8 使用接口的实际例子:fmt.Fprintf",
"link": "/教程/Go/12.8"
},
{
"text": "12.9 JSON 数据格式",
"link": "/教程/Go/12.9"
},
{
"text": "12.10 XML 数据格式",
"link": "/教程/Go/12.10"
},
{
"text": "12.11 用 Gob 传输数据",
"link": "/教程/Go/12.11"
},
{
"text": "12.12 Go 中的密码学",
"link": "/教程/Go/12.12"
},
{
"text": "13.0 错误处理与测试",
"link": "/教程/Go/13.0"
},
{
"text": "13.1 错误处理",
"link": "/教程/Go/13.1"
},
{
"text": "13.2 运行时异常和 panic",
"link": "/教程/Go/13.2"
},
{
"text": "13.3 从 panic 中恢复 (recover)",
"link": "/教程/Go/13.3"
},
{
"text": "13.4 自定义包中的错误处理和 panicking",
"link": "/教程/Go/13.4"
},
{
"text": "13.5 一种用闭包处理错误的模式",
"link": "/教程/Go/13.5"
},
{
"text": "13.6 启动外部命令和程序",
"link": "/教程/Go/13.6"
},
{
"text": "13.7 Go 中的单元测试和基准测试",
"link": "/教程/Go/13.7"
},
{
"text": "13.8 测试的具体例子",
"link": "/教程/Go/13.8"
},
{
"text": "13.9 用(测试数据)表驱动测试",
"link": "/教程/Go/13.9"
},
{
"text": "13.10 性能调试:分析并优化 Go 程序",
"link": "/教程/Go/13.10"
},
{
"text": "14.0 协程 (goroutine) 与通道 (channel)",
"link": "/教程/Go/14.0"
},
{
"text": "14.1 并发、并行和协程",
"link": "/教程/Go/14.1"
},
{
"text": "14.2 协程间的信道",
"link": "/教程/Go/14.2"
},
{
"text": "14.3 协程的同步:关闭通道-测试阻塞的通道",
"link": "/教程/Go/14.3"
},
{
"text": "14.4 使用 select 切换协程",
"link": "/教程/Go/14.4"
},
{
"text": "14.5 通道、超时和计时器(Ticker)",
"link": "/教程/Go/14.5"
},
{
"text": "14.6 协程和恢复 (recover)",
"link": "/教程/Go/14.6"
},
{
"text": "14.7 新旧模型对比:任务和 worker",
"link": "/教程/Go/14.7"
},
{
"text": "14.8 惰性生成器的实现",
"link": "/教程/Go/14.8"
},
{
"text": "14.9 实现 Futures 模式",
"link": "/教程/Go/14.9"
},
{
"text": "14.10 复用",
"link": "/教程/Go/14.10"
},
{
"text": "14.11 限制同时处理的请求数",
"link": "/教程/Go/14.11"
},
{
"text": "14.12 链式协程",
"link": "/教程/Go/14.12"
},
{
"text": "14.13 在多核心上并行计算",
"link": "/教程/Go/14.13"
},
{
"text": "14.14 并行化大量数据的计算",
"link": "/教程/Go/14.14"
},
{
"text": "14.15 漏桶算法",
"link": "/教程/Go/14.15"
},
{
"text": "14.16 对 Go 协程进行基准测试",
"link": "/教程/Go/14.16"
},
{
"text": "14.17 使用通道并发访问对象",
"link": "/教程/Go/14.17"
},
{
"text": "15.0 网络、模板与网页应用",
"link": "/教程/Go/15.0"
},
{
"text": "15.1 tcp 服务器",
"link": "/教程/Go/15.1"
},
{
"text": "15.2 一个简单的 web 服务器",
"link": "/教程/Go/15.2"
},
{
"text": "15.3 访问并读取页面数据",
"link": "/教程/Go/15.3"
},
{
"text": "15.4 写一个简单的网页应用",
"link": "/教程/Go/15.4"
},
{
"text": "15.5 确保网页应用健壮",
"link": "/教程/Go/15.5"
},
{
"text": "15.6 用模板编写网页应用",
"link": "/教程/Go/15.6"
},
{
"text": "15.7 探索 template 包",
"link": "/教程/Go/15.7"
},
{
"text": "15.8 精巧的多功能网页服务器",
"link": "/教程/Go/15.8"
},
{
"text": "15.9 用 rpc 实现远程过程调用",
"link": "/教程/Go/15.9"
},
{
"text": "15.10 基于网络的通道 netchan",
"link": "/教程/Go/15.10"
},
{
"text": "15.11 与 websocket 通信",
"link": "/教程/Go/15.11"
},
{
"text": "15.12 用 smtp 发送邮件",
"link": "/教程/Go/15.12"
}
]
},
{
"text": "实战",
"items": [
{
"text": "16.0 常见的陷阱与错误",
"link": "/教程/Go/16.0"
},
{
"text": "16.1 误用短声明导致变量覆盖",
"link": "/教程/Go/16.1"
},
{
"text": "16.2 误用字符串",
"link": "/教程/Go/16.2"
},
{
"text": "16.3 发生错误时使用 defer 关闭一个文件",
"link": "/教程/Go/16.3"
},
{
"text": "16.4 何时使用 new() 和 make()",
"link": "/教程/Go/16.4"
},
{
"text": "16.5 不需要将一个指向切片的指针传递给函数",
"link": "/教程/Go/16.5"
},
{
"text": "16.6 使用指针指向接口类型",
"link": "/教程/Go/16.6"
},
{
"text": "16.7 使用值类型时误用指针",
"link": "/教程/Go/16.7"
},
{
"text": "16.8 误用协程和通道",
"link": "/教程/Go/16.8"
},
{
"text": "16.9 闭包和协程的使用",
"link": "/教程/Go/16.9"
},
{
"text": "16.10 糟糕的错误处理",
"link": "/教程/Go/16.10"
},
{
"text": "17.0 模式",
"link": "/教程/Go/17.0"
},
{
"text": "17.1 逗号 ok 模式",
"link": "/教程/Go/17.1"
},
{
"text": "17.2 defer 模式",
"link": "/教程/Go/17.2"
},
{
"text": "17.3 可见性模式",
"link": "/教程/Go/17.3"
},
{
"text": "17.4 运算符模式和接口",
"link": "/教程/Go/17.4"
},
{
"text": "18.0 出于性能考虑的实用代码片段",
"link": "/教程/Go/18.0"
},
{
"text": "18.1 字符串",
"link": "/教程/Go/18.1"
},
{
"text": "18.2 数组和切片",
"link": "/教程/Go/18.2"
},
{
"text": "18.3 映射",
"link": "/教程/Go/18.3"
},
{
"text": "18.4 结构体",
"link": "/教程/Go/18.4"
},
{
"text": "18.5 接口",
"link": "/教程/Go/18.5"
},
{
"text": "18.6 函数",
"link": "/教程/Go/18.6"
},
{
"text": "18.7 文件",
"link": "/教程/Go/18.7"
},
{
"text": "18.8 协程 (goroutine) 与通道 (channel)",
"link": "/教程/Go/18.8"
},
{
"text": "18.9 网络和网页应用",
"link": "/教程/Go/18.9"
},
{
"text": "18.10 其他",
"link": "/教程/Go/18.10"
},
{
"text": "18.11 出于性能考虑的最佳实践和建议",
"link": "/教程/Go/18.11"
},
{
"text": "19.0 构建一个完整的应用程序",
"link": "/教程/Go/19.0"
},
{
"text": "19.1 简介",
"link": "/教程/Go/19.1"
},
{
"text": "19.2 短网址项目简介",
"link": "/教程/Go/19.2"
},
{
"text": "19.3 数据结构",
"link": "/教程/Go/19.3"
},
{
"text": "19.4 用户界面:web 服务端",
"link": "/教程/Go/19.4"
},
{
"text": "19.5 持久化存储:gob",
"link": "/教程/Go/19.5"
},
{
"text": "19.6 用协程优化性能",
"link": "/教程/Go/19.6"
},
{
"text": "19.7 以 json 格式存储",
"link": "/教程/Go/19.7"
},
{
"text": "19.8 多服务器处理架构",
"link": "/教程/Go/19.8"
},
{
"text": "19.9 使用代理缓存",
"link": "/教程/Go/19.9"
},
{
"text": "19.10 总结和增强",
"link": "/教程/Go/19.10"
},
{
"text": "20.0 Google App Engine 中的 Go",
"link": "/教程/Go/20.0"
},
{
"text": "20.1 什么是 Google App Engine?",
"link": "/教程/Go/20.1"
},
{
"text": "20.2 云上的 Go",
"link": "/教程/Go/20.2"
},
{
"text": "20.3 安装 Go App Engine SDK:为 Go 部署的开发环境",
"link": "/教程/Go/20.3"
},
{
"text": "20.4 建造你自己的 Hello world 应用",
"link": "/教程/Go/20.4"
},
{
"text": "20.5 使用用户服务和探索其 API",
"link": "/教程/Go/20.5"
},
{
"text": "20.6 处理窗口",
"link": "/教程/Go/20.6"
},
{
"text": "20.7 使用数据存储",
"link": "/教程/Go/20.7"
},
{
"text": "20.8 上传到云端",
"link": "/教程/Go/20.8"
},
{
"text": "21.0 真实世界中 Go 的使用",
"link": "/教程/Go/21.0"
},
{
"text": "21.1 Heroku:一个使用 Go 的高度可用一致数据存储",
"link": "/教程/Go/21.1"
},
{
"text": "21.2 MROffice:一个使用 Go 的呼叫中心网络电话 (VOIP) 系统",
"link": "/教程/Go/21.2"
},
{
"text": "21.3 Atlassian:一个虚拟机群管理系统",
"link": "/教程/Go/21.3"
},
{
"text": "21.4 Camilistore:一个可寻址内容存储系统",
"link": "/教程/Go/21.4"
},
{
"text": "21.5 Go 语言的其他应用",
"link": "/教程/Go/21.5"
}
]
}
]
},
"/教程/Rust": {
"items": [
{
"dir": "环境准备",
"text": "环境准备",
"collapsed": false,
"items": [
{
"text": "安装",
"link": "/教程/Rust/环境准备/安装"
},
{
"text": "编辑器扩展",
"link": "/教程/Rust/环境准备/编辑器扩展"
},
{
"text": "Cargo",
"link": "/教程/Rust/环境准备/Cargo"
}
]
},
{
"text": "基础入门",
"collapsed": false,
"items": [
{
"text": "变量",
"link": "/教程/Rust/基础入门/变量"
},
{
"text": "类型推导",
"link": "/教程/Rust/基础入门/类型推导"
},
{
"text": "基本类型",
"link": "/教程/Rust/基础入门/基本类型"
},
{
"text": "数字类型",
"link": "/教程/Rust/基础入门/数字类型"
},
{
"text": "数字类型",
"link": "/教程/Rust/基础入门/数字类型"
},
{
"text": "字符,布尔,单元类型",
"link": "/教程/Rust/基础入门/字符,布尔,单元类型"
},
{
"text": "语句和表达式",
"link": "/教程/Rust/基础入门/语句和表达式"
},
{
"text": "函数",
"link": "/教程/Rust/基础入门/函数"
},
{
"text": "复合类型",
"link": "/教程/Rust/基础入门/复合类型"
},
{
"text": "字符串与切片",
"link": "/教程/Rust/基础入门/字符串与切片"
},
{
"text": "元组",
"link": "/教程/Rust/基础入门/元组"
},
{
"text": "结构体",
"link": "/教程/Rust/基础入门/结构体"
},
{
"text": "枚举",
"link": "/教程/Rust/基础入门/枚举"
},
{
"text": "数组",
"link": "/教程/Rust/基础入门/数组"
},
{
"text": "所有权",
"link": "/教程/Rust/基础入门/所有权"
},
{
"text": "引用与借用",
"link": "/教程/Rust/基础入门/引用与借用"
}
]
}
]
},
"/备忘录": {
"items": [
{
"text": "版本控制",
"items": [
{
"text": "Git 常用命令",
"link": "/备忘录/git"
}
]
},
{
"text": "构建工具",
"items": [
{
"text": "Maven核心概念总结",
"link": "/备忘录/maven"
},
{
"text": "Gradle核心概念总结",
"link": "/备忘录/gradle"
},
{
"text": "Cargo 常用命令",
"link": "/备忘录/cargo"
}
]
},
{
"text": "服务器管理",
"items": [
{
"text": "SSH 常用命令",
"link": "/备忘录/ssh"
},
{
"text": "Nginx 配置指南",
"link": "/备忘录/nginx"
},
{
"text": "PM2 进程管理",
"link": "/备忘录/pm2"
}
]
},
{
"text": "文本处理",
"items": [
{
"text": "Grep 命令详解",
"link": "/备忘录/grep"
}
]
}
]
},
"/脚本/shell": {
"items": [
{
"text": "系统监控",
"items": [
{
"text": "http心跳检测",
"link": "/脚本/shell/http心跳检测"
},
{
"text": "zabbix监控用户密码过期",
"link": "/脚本/shell/zabbix监控用户密码过期"
},
{
"text": "内存检测",
"link": "/脚本/shell/内存检测"
},
{
"text": "批量检测网站是否异常并邮件通知",
"link": "/脚本/shell/批量检测网站是否异常并邮件通知"
},
{
"text": "找出占用CPU内存过高的进程",
"link": "/脚本/shell/找出占用CPU内存过高的进程"
},
{
"text": "查看网卡实时流量",
"link": "/脚本/shell/查看网卡实时流量"
},
{
"text": "检测CPU剩余百分比",
"link": "/脚本/shell/检测CPU剩余百分比"
},
{
"text": "检测两台服务器指定目录下的文件一致性",
"link": "/脚本/shell/检测两台服务器指定目录下的文件一致性"
},
{
"text": "检测磁盘剩余空间",
"link": "/脚本/shell/检测磁盘剩余空间"
},
{
"text": "检测网卡流量并记录",
"link": "/脚本/shell/检测网卡流量并记录"
},
{
"text": "监控httpd的进程数",
"link": "/脚本/shell/监控httpd的进程数"
},
{
"text": "监控MySQL主从同步状态是否异常脚本",
"link": "/脚本/shell/监控MySQL主从同步状态是否异常脚本"
},
{
"text": "监控多台服务器磁盘利用率脚本",
"link": "/脚本/shell/监控多台服务器磁盘利用率脚本"
},
{
"text": "监控机器分区使用率并发邮件",
"link": "/脚本/shell/监控机器分区使用率并发邮件"
},
{
"text": "监控机器空间使用率并发送邮件",
"link": "/脚本/shell/监控机器空间使用率并发送邮件"
},
{
"text": "目录入侵检测与告警",
"link": "/脚本/shell/目录入侵检测与告警"
},
{
"text": "统计Linux进程相关数量信息",
"link": "/脚本/shell/统计Linux进程相关数量信息"
},
{
"text": "轮询检测Apache状态并启用钉钉报警",
"link": "/脚本/shell/轮询检测Apache状态并启用钉钉报警"
}
]
},
{
"text": "数据库管理",
"items": [
{
"text": "MySQL数据库备份单循环",
"link": "/脚本/shell/MySQL数据库备份单循环"
},
{
"text": "MySQL数据库备份多循环",
"link": "/脚本/shell/MySQL数据库备份多循环"
},
{
"text": "MySql数据库备份脚本(分表备份)",
"link": "/脚本/shell/MySql数据库备份脚本(分表备份)"
},
{
"text": "MySql数据库备份脚本",
"link": "/脚本/shell/MySql数据库备份脚本"
},
{
"text": "备份数据库目录脚本",
"link": "/脚本/shell/备份数据库目录脚本"
},
{
"text": "每天自动备份MySQL数据库",
"link": "/脚本/shell/每天自动备份MySQL数据库"
}
]
},
{
"text": "服务器管理",
"items": [
{
"text": "一键安装MongoDB",
"link": "/脚本/shell/一键安装MongoDB"
},
{
"text": "一键安装tomcat脚本",
"link": "/脚本/shell/一键安装tomcat脚本"
},
{
"text": "一键查看服务器利用率",
"link": "/脚本/shell/一键查看服务器利用率"
},
{
"text": "一键编译安装Redis脚本",
"link": "/脚本/shell/一键编译安装Redis脚本"
},
{
"text": "从FTP服务器下载文件",
"link": "/脚本/shell/从FTP服务器下载文件"
},
{
"text": "判断哪些用户登陆了系统",
"link": "/脚本/shell/判断哪些用户登陆了系统"
},
{
"text": "判断用户输入的是否为IP地址",
"link": "/脚本/shell/判断用户输入的是否为IP地址"
},
{
"text": "扫描主机端口状态",
"link": "/脚本/shell/扫描主机端口状态"
},
{
"text": "批量主机远程执行命令脚本",
"link": "/脚本/shell/批量主机远程执行命令脚本"
},
{
"text": "批量修改服务器用户密码",
"link": "/脚本/shell/批量修改服务器用户密码"
},
{
"text": "服务器系统配置初始化",
"link": "/脚本/shell/服务器系统配置初始化"
},
{
"text": "自动安装",
"link": "/脚本/shell/自动安装"
}
]
},
{
"text": "安全防护",
"items": [
{
"text": "Dos攻击防范",
"link": "/脚本/shell/Dos攻击防范"
},
{
"text": "Linux系统发送告警脚本",
"link": "/脚本/shell/Linux系统发送告警脚本"
},
{
"text": "PV过量自动实现防火墙封IP",
"link": "/脚本/shell/PV过量自动实现防火墙封IP"
},
{
"text": "封禁请求量异常的IP",
"link": "/脚本/shell/封禁请求量异常的IP"
},
{
"text": "屏蔽每分钟SSH尝试登录超过10次的IP",
"link": "/脚本/shell/屏蔽每分钟SSH尝试登录超过10次的IP"
},
{
"text": "屏蔽每分钟访问超过200的IP",
"link": "/脚本/shell/屏蔽每分钟访问超过200的IP"
}
]
},
{
"text": "日志处理",
"items": [
{
"text": "Nginx日志按要求切割",
"link": "/脚本/shell/Nginx日志按要求切割"
},
{
"text": "Nginx访问日志分析脚本",
"link": "/脚本/shell/Nginx访问日志分析脚本"
},
{
"text": "Nginx访问日志自动按天(周月)切割",
"link": "/脚本/shell/Nginx访问日志自动按天(周月)切割"
},
{
"text": "Nginx访问访问日志按天切割",
"link": "/脚本/shell/Nginx访问访问日志按天切割"
},
{
"text": "监测Nginx访问日志502情况",
"link": "/脚本/shell/监测Nginx访问日志502情况"
}
]
},
{
"text": "自动化部署",
"items": [
{
"text": "一键申请多个证书shell脚本",
"link": "/脚本/shell/一键申请多个证书shell脚本"
},
{
"text": "一键证书申请和颁发脚本",
"link": "/脚本/shell/一键证书申请和颁发脚本"
},
{
"text": "一键部署LNMP网站平台脚本",
"link": "/脚本/shell/一键部署LNMP网站平台脚本"
},
{
"text": "自动ftp上传",
"link": "/脚本/shell/自动ftp上传"
},
{
"text": "自动创建文件",
"link": "/脚本/shell/自动创建文件"
},
{
"text": "自动发布Java项目(Tomcat)",
"link": "/脚本/shell/自动发布Java项目(Tomcat)"
}
]
},
{
"text": "实用工具",
"items": [
{
"text": "SVN完整备份",
"link": "/脚本/shell/SVN完整备份"
},
{
"text": "修改文件后缀",
"link": "/脚本/shell/修改文件后缀"
},
{
"text": "备份当前日期文件",
"link": "/脚本/shell/备份当前日期文件"
},
{
"text": "定时清空文件内容",
"link": "/脚本/shell/定时清空文件内容"
},
{
"text": "实现动态进度条",
"link": "/脚本/shell/实现动态进度条"
},
{
"text": "并发从数台机器中获取hostname",
"link": "/脚本/shell/并发从数台机器中获取hostname"
},
{
"text": "批量修改文件名",
"link": "/脚本/shell/批量修改文件名"
},
{
"text": "杀死所有脚本",
"link": "/脚本/shell/杀死所有脚本"
},
{
"text": "构建本地YUM",
"link": "/脚本/shell/构建本地YUM"
},
{
"text": "查看某个端口下请求数最多的ip",
"link": "/脚本/shell/查看某个端口下请求数最多的ip"
},
{
"text": "生成随机数",
"link": "/脚本/shell/生成随机数"
},
{
"text": "移动文件",
"link": "/脚本/shell/移动文件"
},
{
"text": "统计gc信息",
"link": "/脚本/shell/统计gc信息"
},
{
"text": "统计指定文件类型的总大小",
"link": "/脚本/shell/统计指定文件类型的总大小"
},
{
"text": "计算文档每行出现的数字个数",
"link": "/脚本/shell/计算文档每行出现的数字个数"
}
]
}
]
},
"/脚本/python": {
"items": [
{
"text": "网络客户端",
"items": [
{
"text": "SSH客户端",
"link": "/脚本/python/SSH客户端"
},
{
"text": "FTP上传下载",
"link": "/脚本/python/FTP上传下载"
}
]
},
{
"text": "系统管理",
"items": [
{
"text": "Saltstack客户端",
"link": "/脚本/python/Saltstack客户端"
},
{
"text": "vCenter进行日常操作",
"link": "/脚本/python/vCenter进行日常操作"
}
]
},
{
"text": "安全检测",
"items": [
{
"text": "获取域名ssl证书过期时间",
"link": "/脚本/python/获取域名ssl证书过期时间"
}
]
}
]
}
},
"footer": {
"copyright": "Copyright © 2019-2025"
}
}Page Data
{
"title": "Runtime API Examples",
"description": "",
"frontmatter": {
"outline": "deep"
},
"headers": [],
"relativePath": "api-examples.md",
"filePath": "api-examples.md"
}Page Frontmatter
{
"outline": "deep"
}More
Check out the documentation for the full list of runtime APIs.