-
Notifications
You must be signed in to change notification settings - Fork 421
Expand file tree
/
Copy pathindex.html
More file actions
230 lines (149 loc) · 273 KB
/
index.html
File metadata and controls
230 lines (149 loc) · 273 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Netkiller Java 手札(版)</title><link rel="stylesheet" type="text/css" href="docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="description" content="关于《Netkiller Java 手札》 作者2002年开始在项目中使用Java,各种原因没有留下Java文档,2015因工作需要重新拾起Java并整理本文档。 本电子书重点内容是Spring boot, Spring cloud, Spring data, Spring security" /><link rel="home" href="index.html" title="Netkiller Java 手札(版)" /><link rel="next" href="preface.html" title="自述" /></head><body><a xmlns="" href="//www.netkiller.cn/">Home</a> | <a xmlns="" href="//netkiller.github.io/">简体中文</a> | <a xmlns="" href="http://netkiller.sourceforge.net/">繁体中文</a> | <a xmlns="" href="/journal/index.html">杂文</a>
| <a xmlns="" href="https://github.com/netkiller">Github</a> | <a xmlns="" href="https://zhuanlan.zhihu.com/netkiller">知乎专栏</a> | <a xmlns="" href="https://www.facebook.com/bg7nyt">Facebook</a> | <a xmlns="" href="http://cn.linkedin.com/in/netkiller/">Linkedin</a> | <a xmlns="" href="https://www.youtube.com/user/bg7nyt/videos">Youtube</a> | <a xmlns="" href="//www.netkiller.cn/home/donations.html">打赏(Donations)</a> | <a xmlns="" href="//www.netkiller.cn/home/about.html">About</a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Netkiller Java 手札(版)</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="preface.html">下一页</a></td></tr></table><hr /></div><table xmlns=""><tr><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&repo=netkiller.github.io&type=watch&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe></td><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&repo=netkiller.github.io&type=fork&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe></td><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&type=follow&count=true&size=large" height="30" width="240" frameborder="0" scrolling="0" style="width:240px; height: 30px;" allowTransparency="true"></iframe></td><td></td><td><a href="https://zhuanlan.zhihu.com/netkiller"><img src="/images/logo/zhihu-card-default.svg" height="25" /></a></td><td valign="middle"><a href="https://zhuanlan.zhihu.com/netkiller">知乎专栏</a></td><td></td><td></td><td></td><td></td></tr></table><div xml:lang="zh-cn" class="book" lang="zh-cn"><div class="titlepage"><div><div><h1 class="title"><a id="id768"></a>Netkiller Java 手札(2026版)</h1></div><div><h2 class="subtitle">Java, Servlet, JavaBean, Struts, Spring ...</h2></div><div><div class="authorgroup">
<div class="author"><h3 class="author"><span class="honorific">Mr</span>. <span class="firstname">Neo</span> <span class="othername"></span> <span class="surname">Chan</span>, <span class="lineage">陈景峯(BG7NYT)</span></h3><div class="affiliation">
<div class="address"><p><br />
<br />
<span class="country">中国</span><span class="state">广东省</span><span class="city">深圳市</span><span class="street">望海路半岛城邦三期</span><br />
<span class="postcode">518067</span><br />
<span class="phone">+86 13113668890</span><br />
<br />
<code class="email"><<a class="email" href="mailto:[email protected]">[email protected]</a>></code><br />
</p></div>
</div></div>
</div></div><div><p class="releaseinfo">
文档始创于
<span class="date">2015-11-10<br /></span>
</p></div><div><p class="releaseinfo">
</p><p>
电子书最近一次更新于
<span class="date">2026-04-20 14:55:04
</span>
</p><p class="releaseinfo">
</p></div><div><p class="copyright">版权 © 2015-2026 Netkiller(Neo Chan). All rights reserved.</p></div><div><div class="legalnotice"><a id="legalnotice"></a>
<p class="legalnotice-title"><strong>版权声明</strong></p>
<p>转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。</p>
<table border="0" summary="Simple list" class="simplelist"><tr><td>
<a class="ulink" href="images/cover.png" target="_top">
<div><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="250"><tr><td><img src="images/cover.png" width="250" /></td></tr></table></div>
</a>
</td><td>
<p></p>
</td><td>
<table border="0" summary="Simple list" class="simplelist"><tr><td>
<table border="0" summary="Simple list" class="simplelist"><tr><td>
<a class="ulink" href="https://creativecommons.org/licenses/by/4.0/" target="_top">
<div><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="180"><tr><td><img src="/images/by-nc-sa.png" width="180" /></td></tr></table></div>
</a>
</td></tr><tr><td>
<a class="ulink" href="http://www.netkiller.cn" target="_top">http://www.netkiller.cn</a>
</td></tr><tr><td>
<a class="ulink" href="http://netkiller.github.io/" target="_top">http://netkiller.github.io</a>
</td></tr><tr><td>
<a class="ulink" href="http://netkiller.sourceforge.net/" target="_top">http://netkiller.sourceforge.net</a>
</td></tr><tr><td>微信公众号: netkiller</td></tr><tr><td>微信:13113668890 请注明“读者”</td></tr><tr><td>QQ:13721218 请注明“读者”</td></tr><tr><td>QQ群:128659835 请注明“读者”</td></tr><tr><td></td></tr><tr><td>
<a class="ulink" href="https://zhuanlan.zhihu.com/netkiller" target="_top">知乎专栏</a>
</td></tr></table>
</td><td>
<a class="ulink" href="images/wechat.png" target="_top">
<div><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="600"><tr><td><img src="images/wechat.png" width="600" /></td></tr></table></div>
</a>
</td></tr></table>
</td></tr></table>
</div></div><div><p class="pubdate">2017-11</p></div><div><div class="abstract"><a id="abstract"></a><p class="title"><strong>关于《Netkiller Java 手札》</strong></p>
<p>作者2002年开始在项目中使用Java,各种原因没有留下Java文档,2015因工作需要重新拾起Java并整理本文档。</p>
<p>本电子书重点内容是Spring boot, Spring cloud, Spring data, Spring security</p>
</div></div><div><div class="abstract"><p class="title"><strong>我的系列文档</strong></p>
<p>编程语言</p>
<table border="0" summary="Simple list" class="simplelist"><tr><td>
<a class="ulink" href="../architect/index.html" target="_top">Netkiller Architect 手札</a>
</td><td>
<a class="ulink" href="../developer/index.html" target="_top">Netkiller Developer 手札</a>
</td><td>
<a class="ulink" href="../java/index.html" target="_top">Netkiller Java 手札</a>
</td><td>
<a class="ulink" href="../spring/index.html" target="_top">Netkiller Spring 手札</a>
</td><td>
<a class="ulink" href="../android/index.html" target="_top">Netkiller Android 手札</a>
</td><td>
<a class="ulink" href="../python/index.html" target="_top">Netkiller Python 手札</a>
</td></tr><tr><td>
<a class="ulink" href="../testing/index.html" target="_top">Netkiller Testing 手札</a>
</td><td>
<a class="ulink" href="../cryptography/index.html" target="_top">Netkiller Cryptography 手札</a>
</td><td>
<a class="ulink" href="../perl/index.html" target="_top">Netkiller Perl 手札</a>
</td><td>
<a class="ulink" href="../docbook/index.html" target="_top">Netkiller Docbook 手札</a>
</td><td>
<a class="ulink" href="../project/index.html" target="_top">Netkiller Project 手札</a>
</td><td>
<a class="ulink" href="../database/index.html" target="_top">Netkiller Database 手札</a>
</td></tr><tr><td>
<a class="ulink" href="../php/index.html" target="_top">Netkiller PHP 手札</a>
</td><td> </td><td> </td><td> </td><td> </td><td> </td></tr></table>
</div></div></div><hr /></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a id="dedication"></a>致读者</h1></div></div></div>
<table border="0" summary="Simple list" class="simplelist"><tr><td>
<a class="ulink" href="https://archiveprogram.github.com/arctic-vault/" target="_top">
<div><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="NaN"><tr><td><img src="images/logo/badge--acv-64.png" width="NaN" /></td></tr></table></div>
</a>
</td><td>
<p>Netkiller 系列手札 已经被 Github 收录,并备份保存在北极地下250米深的代码库中,备份会保留1000年。</p>
<p>Preserving open source software for future generations</p>
<p>The world is powered by open source software. It is a hidden cornerstone of modern civilization, and the shared heritage of all humanity.</p>
<p>The GitHub Arctic Code Vault is a data repository preserved in the Arctic World Archive (AWA), a very-long-term archival facility 250 meters deep in the permafrost of an Arctic mountain.</p>
<p>We are collaborating with the Bodleian Library in Oxford, the Bibliotheca Alexandrina in Egypt, and Stanford Libraries in California to store copies of 17,000 of GitHub’s most popular and most-depended-upon projects—open source’s “greatest hits”—in their archives, in museum-quality cases, to preserve them for future generations.</p>
<p>
<a class="ulink" href="https://archiveprogram.github.com/arctic-vault/" target="_top">https://archiveprogram.github.com/arctic-vault/</a>
</p>
</td></tr></table>
</div><div class="toc"><p><strong>目录</strong></p><dl class="toc"><dt><span class="preface"><a href="preface.html">1. 自述</a></span></dt><dd><dl><dt><span class="section"><a href="preface.html#reader">1.1. 写给读者</a></span></dt><dt><span class="section"><a href="author.html">1.2. 作者简介</a></span></dt><dd><dl><dt><span class="section"><a href="author.html#id770">1.2.1. 户外爱好者</a></span></dt></dl></dd><dt><span class="section"><a href="preface.download.html">1.3. 如何获得文档</a></span></dt><dt><span class="section"><a href="donations.html">1.4. 打赏(Donations)</a></span></dt><dt><span class="section"><a href="contacts.html">1.5. 联系方式</a></span></dt></dl></dd><dt><span class="part"><a href="java/index.html">I. Java 21</a></span></dt><dd><dl><dt><span class="chapter"><a href="java/jvm/index.html">1. JVM</a></span></dt><dd><dl><dt><span class="section"><a href="java/jvm/index.html#id771">1.1. Rocky Linux 9 / Almalinux 9 + Maven + OpenJDK25</a></span></dt><dt><span class="section"><a href="java/jvm/java.21.html">1.2. Java 21</a></span></dt><dt><span class="section"><a href="java/jvm/java.openjdk.html">1.3. Almalinux / RockyLinux</a></span></dt><dt><span class="section"><a href="java/jvm/java.14.html">1.4. CentOS 8 Java 14</a></span></dt><dt><span class="section"><a href="java/jvm/java.version.html">1.5. Java 版本切换</a></span></dt><dt><span class="section"><a href="java/jvm/jdk6.html">1.6. 安装 Java 6</a></span></dt><dd><dl><dt><span class="section"><a href="java/jvm/jdk6.html#id772">1.6.1. HeapDumpOnOutOfMemoryError</a></span></dt></dl></dd><dt><span class="section"><a href="java/jvm/java-1.8.0-openjdk.html">1.7. java-1.8.0-openjdk</a></span></dt><dt><span class="section"><a href="java/jvm/java.docker.html">1.8. docker 环境</a></span></dt><dt><span class="section"><a href="java/jvm/java.html">1.9. java - Launches a Java application.</a></span></dt><dd><dl><dt><span class="section"><a href="java/jvm/java.html#java11">1.9.1. java 9~11</a></span></dt><dt><span class="section"><a href="java/jvm/java.html#java.verbose:class">1.9.2. -verbose:class 显示载入jar文件</a></span></dt><dt><span class="section"><a href="java/jvm/java.html#java.io.tmpdir">1.9.3. java.io.tmpdir</a></span></dt><dt><span class="section"><a href="java/jvm/java.html#java.version">1.9.4. 显示版本号</a></span></dt><dt><span class="section"><a href="java/jvm/java.html#java.list-modules">1.9.5. 列出java模块</a></span></dt></dl></dd><dt><span class="section"><a href="java/jvm/java.cmd.html">1.10. Java 相关命令</a></span></dt><dd><dl><dt><span class="section"><a href="java/jvm/java.cmd.html#id773">1.10.1. jps</a></span></dt><dt><span class="section"><a href="java/jvm/java.cmd.html#jar">1.10.2. jar</a></span></dt><dt><span class="section"><a href="java/jvm/java.cmd.html#jdeps">1.10.3. jdeps - Java class dependency analyzer.</a></span></dt><dt><span class="section"><a href="java/jvm/java.cmd.html#jshell">1.10.4. JShell</a></span></dt><dt><span class="section"><a href="java/jvm/java.cmd.html#jlink">1.10.5. jlink</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="java/Runtime.html">2. exec 运行shell</a></span></dt><dd><dl><dt><span class="section"><a href="java/Runtime.html#system">2.1. System</a></span></dt><dd><dl><dt><span class="section"><a href="java/Runtime.html#System">2.1.1. System</a></span></dt><dt><span class="section"><a href="java/Runtime.html#id780">2.1.2. System.in 标准输入(Stdin)</a></span></dt><dt><span class="section"><a href="java/Runtime.html#id781">2.1.3. ANSI Color</a></span></dt></dl></dd><dt><span class="section"><a href="java/ch02s02.html">2.2. Java 嵌入 Python 代码</a></span></dt></dl></dd><dt><span class="chapter"><a href="java/type/index.html">3. 数据类型</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/index.html#var">3.1. var 本地变量类型推断</a></span></dt><dt><span class="section"><a href="java/type/integer.html">3.2. Integer 整形</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/integer.html#id782">3.2.1. 字符串转整数</a></span></dt><dt><span class="section"><a href="java/type/integer.html#id783">3.2.2. 进制转换</a></span></dt><dt><span class="section"><a href="java/type/integer.html#id784">3.2.3. 前面补零</a></span></dt><dt><span class="section"><a href="java/type/integer.html#NumberFormat">3.2.4. NumberFormat 数字格式化</a></span></dt><dt><span class="section"><a href="java/type/integer.html#id785">3.2.5. 从字符串中提取数字</a></span></dt></dl></dd><dt><span class="section"><a href="java/type/string.html">3.3. String 字符串</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/string.html#string.indexOf">3.3.1. 查找字符重现的位置</a></span></dt><dt><span class="section"><a href="java/type/string.html#string.line">3.3.2. 行数统计</a></span></dt><dt><span class="section"><a href="java/type/string.html#string.repeat">3.3.3. 复制字符串</a></span></dt><dt><span class="section"><a href="java/type/string.html#string.random">3.3.4. 随机字符串</a></span></dt><dt><span class="section"><a href="java/type/string.html#string.replace">3.3.5. 字符串替换处理</a></span></dt><dt><span class="section"><a href="java/type/string.html#substring">3.3.6. substring</a></span></dt><dt><span class="section"><a href="java/type/string.html#string2tempstamp">3.3.7. string to timestamp</a></span></dt><dt><span class="section"><a href="java/type/string.html#String.strip">3.3.8. String.strip</a></span></dt><dt><span class="section"><a href="java/type/string.html#string.block">3.3.9. 文本块</a></span></dt><dt><span class="section"><a href="java/type/string.html#string.split">3.3.10. 分割字符串</a></span></dt><dt><span class="section"><a href="java/type/string.html#String.format">3.3.11. String.format 字符串格式化</a></span></dt><dt><span class="section"><a href="java/type/string.html#java.text.DecimalFormat">3.3.12. DecimalFormat 文本格式化</a></span></dt><dt><span class="section"><a href="java/type/string.html#stream().anyMatch()">3.3.13. 通过 stream() 匹配一组字符串</a></span></dt><dt><span class="section"><a href="java/type/string.html#id794">3.3.14. 字符串输出转译字符串</a></span></dt></dl></dd><dt><span class="section"><a href="java/type/long.html">3.4. 类型转换</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/long.html#id795">3.4.1. Long to String</a></span></dt></dl></dd><dt><span class="section"><a href="java/type/date.html">3.5. Date 日期时间</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/date.html#date.new">3.5.1. String to Date</a></span></dt><dt><span class="section"><a href="java/type/date.html#DateTimeFormatter">3.5.2. DateTimeFormatter 格式化日期和时间</a></span></dt><dt><span class="section"><a href="java/type/date.html#SimpleDateFormat">3.5.3. SimpleDateFormat 格式化日期和时间</a></span></dt><dt><span class="section"><a href="java/type/date.html#Timestamp">3.5.4. Timestamp</a></span></dt><dt><span class="section"><a href="java/type/date.html#TimeZone">3.5.5. TimeZone</a></span></dt><dt><span class="section"><a href="java/type/date.html#date.compare">3.5.6. 比较两个日期与时间</a></span></dt><dt><span class="section"><a href="java/type/date.html#date.calendar">3.5.7. Calendar</a></span></dt><dt><span class="section"><a href="java/type/date.html#date.today">3.5.8. getToday</a></span></dt><dt><span class="section"><a href="java/type/date.html#date.Yesterday">3.5.9. Yesterday</a></span></dt><dt><span class="section"><a href="java/type/date.html#date.iso8601">3.5.10. ISO 8601</a></span></dt><dt><span class="section"><a href="java/type/date.html#date.LocalDateTime">3.5.11. LocalDateTime</a></span></dt><dt><span class="section"><a href="java/type/date.html#java.time.Duration">3.5.12. Duration</a></span></dt><dt><span class="section"><a href="java/type/date.html#id802">3.5.13. 计算流逝时间</a></span></dt></dl></dd><dt><span class="section"><a href="java/type/array.html">3.6. Array 数组</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/array.html#StringToArray">3.6.1. 字符串转数组</a></span></dt><dt><span class="section"><a href="java/type/array.html#id803">3.6.2. for each</a></span></dt><dt><span class="section"><a href="java/type/array.html#ArrayToString">3.6.3. Array to String</a></span></dt><dt><span class="section"><a href="java/type/array.html#String.join">3.6.4. 数据转字符串</a></span></dt><dt><span class="section"><a href="java/type/array.html#string.split">3.6.5. 字符串转数组</a></span></dt></dl></dd><dt><span class="section"><a href="java/type/float.html">3.7. float 浮点</a></span></dt><dt><span class="section"><a href="java/type/double.html">3.8. double 双精度浮点</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/double.html#id804">3.8.1. String to double</a></span></dt><dt><span class="section"><a href="java/type/double.html#id805">3.8.2. 百分数转Double</a></span></dt><dt><span class="section"><a href="java/type/double.html#id806">3.8.3. Double转百分数</a></span></dt></dl></dd><dt><span class="section"><a href="java/type/BigDecimal.html">3.9. BigDecimal</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/BigDecimal.html#id807">3.9.1. Convert BigDecimal Object to double value</a></span></dt><dt><span class="section"><a href="java/type/BigDecimal.html#id808">3.9.2. 去除末尾多余的0</a></span></dt><dt><span class="section"><a href="java/type/BigDecimal.html#id809">3.9.3. 禁用科学计数法</a></span></dt><dt><span class="section"><a href="java/type/BigDecimal.html#id810">3.9.4. 移动小数点位置</a></span></dt></dl></dd><dt><span class="section"><a href="java/type/StringBuffer.html">3.10. StringBuffer</a></span></dt><dt><span class="section"><a href="java/type/enum.html">3.11. enum</a></span></dt><dt><span class="section"><a href="java/type/byte.html">3.12. byte 类型</a></span></dt><dd><dl><dt><span class="section"><a href="java/type/byte.html#id811">3.12.1. string2byte</a></span></dt><dt><span class="section"><a href="java/type/byte.html#id812">3.12.2. 初始化 byte[] 填充数据 0</a></span></dt><dt><span class="section"><a href="java/type/byte.html#byte2string">3.12.3. byte[] to String</a></span></dt><dt><span class="section"><a href="java/type/byte.html#BigInteger2byte">3.12.4. BigInteger2byte</a></span></dt><dt><span class="section"><a href="java/type/byte.html#int2byte">3.12.5. int to byte array</a></span></dt><dt><span class="section"><a href="java/type/byte.html#byte2int">3.12.6. byte array to int</a></span></dt><dt><span class="section"><a href="java/type/byte.html#byte2char">3.12.7. byte2char</a></span></dt><dt><span class="section"><a href="java/type/byte.html#longToByte64">3.12.8. longToByte64</a></span></dt><dt><span class="section"><a href="java/type/byte.html#byte64ToLong">3.12.9. byte64ToLong</a></span></dt><dt><span class="section"><a href="java/type/byte.html#short2byte">3.12.10. short2byte</a></span></dt><dt><span class="section"><a href="java/type/byte.html#byte8ToDouble">3.12.11. byte8ToDouble</a></span></dt><dt><span class="section"><a href="java/type/byte.html#byte4ToFloat">3.12.12. byte4ToFloat</a></span></dt><dt><span class="section"><a href="java/type/byte.html#unsigned-byte">3.12.13. 无符号 byte</a></span></dt><dt><span class="section"><a href="java/type/byte.html#byte2hex">3.12.14. byte to hex</a></span></dt><dt><span class="section"><a href="java/type/byte.html#bytes2hex">3.12.15. byte[] to hex</a></span></dt><dt><span class="section"><a href="java/type/byte.html#byte[]">3.12.16. 连接两个 byte[]</a></span></dt><dt><span class="section"><a href="java/type/byte.html#list.byte">3.12.17. List<Byte> to byte[]</a></span></dt></dl></dd><dt><span class="section"><a href="java/type/java.boolean.html">3.13. 布尔型 Boolean</a></span></dt></dl></dd><dt><span class="chapter"><a href="java/ControlFlow.html">4. 流程控制</a></span></dt><dd><dl><dt><span class="section"><a href="java/ControlFlow.html#id814">4.1. Switch</a></span></dt><dd><dl><dt><span class="section"><a href="java/ControlFlow.html#id813">4.1.1. yield</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="java/class/index.html">5. 面向对象</a></span></dt><dd><dl><dt><span class="section"><a href="java/class/index.html#Java面向对象">5.1. 可变参数</a></span></dt><dt><span class="section"><a href="java/class/class.generics.html">5.2. 泛型</a></span></dt><dd><dl><dt><span class="section"><a href="java/class/class.generics.html#id815">5.2.1. 范型演示</a></span></dt><dt><span class="section"><a href="java/class/class.generics.html#id816">5.2.2. 数组泛型方法</a></span></dt><dt><span class="section"><a href="java/class/class.generics.html#id817">5.2.3. 静态方法</a></span></dt><dt><span class="section"><a href="java/class/class.generics.html#id818">5.2.4. 可变参数的泛型方法</a></span></dt><dt><span class="section"><a href="java/class/class.generics.html#id819">5.2.5. 返回泛型值</a></span></dt><dt><span class="section"><a href="java/class/class.generics.html#id820">5.2.6. 泛型类</a></span></dt></dl></dd><dt><span class="section"><a href="java/class/class.record.html">5.3. record</a></span></dt><dd><dl><dt><span class="section"><a href="java/class/class.record.html#id821">5.3.1. 在 Record 中定义范型</a></span></dt></dl></dd><dt><span class="section"><a href="java/class/class.callback.html">5.4. Callback 回调</a></span></dt><dt><span class="section"><a href="java/class/class.sealed.html">5.5. 密封类</a></span></dt><dd><dl><dt><span class="section"><a href="java/class/class.sealed.html#id822">5.5.1. </a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="java/throw/index.html">6. 异常处理</a></span></dt><dd><dl><dt><span class="section"><a href="java/throw/index.html#id823">6.1. 抛出异常</a></span></dt><dt><span class="section"><a href="java/throw/try-with-resources.html">6.2. try-with-resources</a></span></dt><dt><span class="section"><a href="java/throw/SneakyThrows.html">6.3. SneakyThrows</a></span></dt><dd><dl><dt><span class="section"><a href="java/throw/SneakyThrows.html#id824">6.3.1. 处理所有异常 Exception</a></span></dt><dt><span class="section"><a href="java/throw/SneakyThrows.html#id825">6.3.2. 处理特定异常</a></span></dt><dt><span class="section"><a href="java/throw/SneakyThrows.html#id826">6.3.3. 抛出异常</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="java/thread/index.html">7. Java 线程</a></span></dt><dd><dl><dt><span class="section"><a href="java/thread/index.html#id827">7.1. 多线程 Lambda 表达式</a></span></dt><dt><span class="section"><a href="java/thread/ch07s02.html">7.2. 实现异步执行</a></span></dt><dt><span class="section"><a href="java/thread/Thread.html">7.3. 继承 Thread 类实现多线程</a></span></dt><dd><dl><dt><span class="section"><a href="java/thread/Thread.html#thread.getName">7.3.1. 设置线程名称</a></span></dt><dt><span class="section"><a href="java/thread/Thread.html#thread.isAlive">7.3.2. 判断线程是否存活</a></span></dt><dt><span class="section"><a href="java/thread/Thread.html#thread.getState">7.3.3. 获取线程状态</a></span></dt><dt><span class="section"><a href="java/thread/Thread.html#id828">7.3.4. 安装终止一个线程</a></span></dt></dl></dd><dt><span class="section"><a href="java/thread/Runnable.html">7.4. 实现 Runnable 接口</a></span></dt><dt><span class="section"><a href="java/thread/synchronized.html">7.5. 线程同步</a></span></dt><dt><span class="section"><a href="java/thread/ThreadLocal.html">7.6. ThreadLocal</a></span></dt><dt><span class="section"><a href="java/thread/ScopedValue.html">7.7. ScopedValue</a></span></dt><dt><span class="section"><a href="java/thread/ThreadLocalMap.html">7.8. ThreadLocalMap</a></span></dt><dt><span class="section"><a href="java/thread/InheritableThreadLocal.html">7.9. InheritableThreadLocal</a></span></dt><dt><span class="section"><a href="java/thread/Thread.setDaemon.html">7.10. 守护线程</a></span></dt><dt><span class="section"><a href="java/thread/Thread.wait().html">7.11. 线程等待与线程通知</a></span></dt><dd><dl><dt><span class="section"><a href="java/thread/Thread.wait().html#id829">7.11.1. 通知所有线程</a></span></dt><dt><span class="section"><a href="java/thread/Thread.wait().html#id830">7.11.2. 携带消息</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="jdk/index.html">II. JDK Development Kit</a></span></dt><dd><dl><dt><span class="chapter"><a href="jdk/structures/index.html">8. 数据结构</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/structures/index.html#Collection">8.1. Collection 接口</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html">8.2. List</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/structures/java.util.List.html#id831">8.2.1. 静态 List</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#List.of()">8.2.2. List.of()</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#List.copyOf()">8.2.3. List.copyOf()</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#Arrays.asList">8.2.4. String[] to List</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#Collectors.toList">8.2.5. Stream.toList() 方法</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#list.containsAll">8.2.6. containsAll</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#id833">8.2.7. </a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#随机获取List元素">8.2.8. 随机 List</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#getFirst">8.2.9. getFirst() / getLast()</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.List.html#List.toArray">8.2.10. List 转 Array</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/structures/ArrayList.html">8.3. ArrayList</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/structures/ArrayList.html#id834">8.3.1. 初始化</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id835">8.3.2. 判断元素是否存在</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id836">8.3.3. 循环打印</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id837">8.3.4. ArrayList to Array</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id838">8.3.5. ArrayList to String</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id839">8.3.6. Array to List</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id840">8.3.7. List to Array</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#arrayList.forEach">8.3.8. ArrayList forEach</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#ArrayList.stream()">8.3.9. ArrayList stream()</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#ArrarList2String">8.3.10. ArrarList 转换为 string[]</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#StringToArrayList">8.3.11. string 转换为 ArrayList</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id841">8.3.12. ArrayList 转换为 string</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id842">8.3.13. string[] 转换为 ArrarList</a></span></dt><dt><span class="section"><a href="jdk/structures/ArrayList.html#id843">8.3.14. 合并 List<byte[]> ArrayList<byte[]></a></span></dt></dl></dd><dt><span class="section"><a href="jdk/structures/LinkedList.html">8.4. LinkedList</a></span></dt><dt><span class="section"><a href="jdk/structures/Vector.html">8.5. Vector</a></span></dt><dt><span class="section"><a href="jdk/structures/set.html">8.6. Set</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/structures/set.html#id844">8.6.1. Set 初始化</a></span></dt><dt><span class="section"><a href="jdk/structures/set.html#id845">8.6.2. Set 转为 List</a></span></dt><dt><span class="section"><a href="jdk/structures/set.html#Set.of()">8.6.3. Set.of()</a></span></dt><dt><span class="section"><a href="jdk/structures/set.html#Set.toArray">8.6.4. Set to Array</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/structures/map.html">8.7. Map</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/structures/map.html#Map.of">8.7.1. 初始化</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#HashMap">8.7.2. HashMap</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#LinkedHashMap">8.7.3. LinkedHashMap</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#NavigableMap">8.7.4. NavigableMap</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#Map.loop">8.7.5. 遍历数据</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#Map.Iterator">8.7.6. 迭代器</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#map.forEach">8.7.7. Map forEach</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#Map随机取值">8.7.8. 随机取值</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#id856">8.7.9. 有序 Key 值,HashMap 与 LinkedHashMap 对比</a></span></dt><dt><span class="section"><a href="jdk/structures/map.html#id857">8.7.10. 调换 map 的 key 与 value 位置</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/structures/Iterator.html">8.8. Iterator</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/structures/Iterator.html#id858">8.8.1. List 迭代</a></span></dt><dt><span class="section"><a href="jdk/structures/Iterator.html#id859">8.8.2. 处理剩余结果</a></span></dt><dt><span class="section"><a href="jdk/structures/Iterator.html#id860">8.8.3. Map 迭代</a></span></dt><dt><span class="section"><a href="jdk/structures/Iterator.html#id861">8.8.4. Iterator 与 List 的区别</a></span></dt><dt><span class="section"><a href="jdk/structures/Iterator.html#id862">8.8.5. remove() 删除操作</a></span></dt><dt><span class="section"><a href="jdk/structures/Iterator.html#id863">8.8.6. Iterable 转 List</a></span></dt><dt><span class="section"><a href="jdk/structures/Iterator.html#ListIterator">8.8.7. ListIterator</a></span></dt><dt><span class="section"><a href="jdk/structures/Iterator.html#Iterable">8.8.8. Iterable</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/structures/java.util.Queue.html">8.9. Queue</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/structures/java.util.Queue.html#id864">8.9.1. 阻塞队列</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.Queue.html#LinkedBlockingQueue">8.9.2. LinkedBlockingQueue</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.Queue.html#id866">8.9.3. Deque 双端队列</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.Queue.html#id867">8.9.4. 数据转换</a></span></dt><dt><span class="section"><a href="jdk/structures/java.util.Queue.html#id868">8.9.5. PriorityBlockingQueue</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/structures/Stack.html">8.10. Stack</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html">8.11. Optional</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.of()">8.11.1. of() 为非null的值创建一个Optional。</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.ofNullable()">8.11.2. ofNullable() 为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。
</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.isPresent()">8.11.3. isPresent 如果值存在返回true,否则返回false。ifEmpty() null 返回 true 否则返回
false
</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.ifEmpty()">8.11.4. ifPresent() 如果Optional实例有值执行 lambda 表达式</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.get()">8.11.5. get() 返回值</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.orElse()">8.11.6. orElse 如果有值则将其返回,否则返回指定的其它值。</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.orElseGet()">8.11.7. orElseGet与orElse方法类似,区别在于得到的默认值从 Supplier 返回。</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.orElseThrow()">8.11.8. orElseThrow 如果有值则将其返回,否则抛出supplier接口创建的异常</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.map()">8.11.9. map() 方法用来对Optional实例的值执行一系列操作</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.flatMap()">8.11.10. flatMap()</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.filter()">8.11.11. filter() 通过传入限定条件过滤Optional值</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.stream()">8.11.12. stream()</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.or()">8.11.13. or()</a></span></dt><dt><span class="section"><a href="jdk/structures/Optional.html#Optional.example">8.11.14. example</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="jdk/java.util.regex.html">9. 正则表达式</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/java.util.regex.html#id873">9.1. 正则查找</a></span></dt><dt><span class="section"><a href="jdk/ch09s02.html">9.2. 正则替换</a></span></dt><dt><span class="section"><a href="jdk/ch09s03.html">9.3. 字符串分割</a></span></dt></dl></dd><dt><span class="chapter"><a href="jdk/concurrent/index.html">10. Java 并发编程</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/index.html#TimeUnit">10.1. TimeUnit</a></span></dt><dt><span class="section"><a href="jdk/concurrent/ThreadLocalRandom.html">10.2. ThreadLocalRandom</a></span></dt><dt><span class="section"><a href="jdk/concurrent/java.util.concurrent.atomic.html">10.3. 原子变量</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/java.util.concurrent.atomic.html#AtomicInteger">10.3.1. AtomicInteger / AtomicLong</a></span></dt><dt><span class="section"><a href="jdk/concurrent/java.util.concurrent.atomic.html#AtomicBoolean">10.3.2. AtomicBoolean</a></span></dt><dt><span class="section"><a href="jdk/concurrent/java.util.concurrent.atomic.html#AtomicReference">10.3.3. AtomicReference</a></span></dt><dt><span class="section"><a href="jdk/concurrent/java.util.concurrent.atomic.html#id883">10.3.4. 值设置与获取操作</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/concurrent/ReentrantLock.html">10.4. ReentrantLock 锁</a></span></dt><dt><span class="section"><a href="jdk/concurrent/ConcurrentHashMap.html">10.5. 线程安全的 HashMap(ConcurrentHashMap)</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/ConcurrentHashMap.html#id884">10.5.1. 设置键与值</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/concurrent/CopyOnWriteArraySet.html">10.6. CopyOnWriteArraySet</a></span></dt><dt><span class="section"><a href="jdk/concurrent/BlockingQueue.html">10.7. 队列 / 阻塞队列</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/BlockingQueue.html#ConcurrentLinkedQueue">10.7.1. ConcurrentLinkedQueue 非阻塞队列</a></span></dt><dt><span class="section"><a href="jdk/concurrent/BlockingQueue.html#ArrayBlockingQueue">10.7.2. ArrayBlockingQueue</a></span></dt><dt><span class="section"><a href="jdk/concurrent/BlockingQueue.html#LinkedBlockingQueue">10.7.3. LinkedBlockingQueue</a></span></dt><dt><span class="section"><a href="jdk/concurrent/BlockingQueue.html#PriorityBlockingQueue">10.7.4. PriorityBlockingQueue</a></span></dt><dt><span class="section"><a href="jdk/concurrent/BlockingQueue.html#ConcurrentLinkedQueue">10.7.5. ConcurrentLinkedQueue</a></span></dt><dt><span class="section"><a href="jdk/concurrent/BlockingQueue.html#LinkedTransferQueue">10.7.6. LinkedTransferQueue</a></span></dt><dt><span class="section"><a href="jdk/concurrent/BlockingQueue.html#id885">10.7.7. LinkedBlockingQueue LinkedTransferQueue ConcurrentLinkedQueue
</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/concurrent/Future.html">10.8. Future</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/Future.html#id886">10.8.1. Future + Stream 管理一组线程</a></span></dt><dt><span class="section"><a href="jdk/concurrent/Future.html#id887">10.8.2. Future + ExecutorService</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/concurrent/FutureTask.html">10.9. FutureTask</a></span></dt><dt><span class="section"><a href="jdk/concurrent/StructuredTaskScope.html">10.10. StructuredTaskScope</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/StructuredTaskScope.html#StructuredTaskScope">10.10.1. StructuredTaskScope Example</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html">10.11. CompletableFuture</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#CompletableFuture.new">10.11.1. 创建 CompletableFuture 实例,并且其他线程中使用</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#runAsync">10.11.2. runAsync 创建没有返回值的异步任务</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#thenRun / thenRunAsync">10.11.3. thenRun / thenRunAsync</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#supplyAsync">10.11.4. supplyAsync 创建带有返回值的异步任务。</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#thenAccept / thenAcceptAsync">10.11.5. thenAccept / thenAcceptAsync</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#get">10.11.6. 获取结果</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#Apply">10.11.7. thenApply / thenApplyAsync</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#runAsync / thenAccept / thenApply 区别">10.11.8. runAsync / thenAccept / thenApply 区别</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#whenComplete">10.11.9. whenComplete 任务完成时执行,并且返回结果和异常</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#completeOnTimeout">10.11.10. 超时处理</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#thenCompose">10.11.11. 按顺序执行</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#thenCombine">10.11.12. thenCombine、thenAcceptBoth 和runAfterBoth</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#applyToEither">10.11.13. applyToEither、acceptEither和runAfterEither</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#allOf">10.11.14. allOf / anyOf</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#CompletableFuture.Parallel">10.11.15. 并行执行 CompletableFuture</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#complete/completeExceptionally">10.11.16. 通知完成任务</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#exceptionally">10.11.17. 异常处理</a></span></dt><dt><span class="section"><a href="jdk/concurrent/CompletableFuture.html#CompletableFuturePipeline">10.11.18. CompletableFuture 实现 Pipeline 流水线</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/concurrent/ThreadPool.html">10.12. java 线程池</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/ThreadPool.html#Executors.newCachedThreadPool">10.12.1. newCachedThreadPool</a></span></dt><dt><span class="section"><a href="jdk/concurrent/ThreadPool.html#newFixedThreadPool">10.12.2. 固定线程池(newFixedThreadPool)</a></span></dt><dt><span class="section"><a href="jdk/concurrent/ThreadPool.html#newScheduledThreadPool">10.12.3. Executors.newScheduledThreadPool</a></span></dt><dt><span class="section"><a href="jdk/concurrent/ThreadPool.html#SingleThreadExecutor">10.12.4. SingleThreadExecutor</a></span></dt><dt><span class="section"><a href="jdk/concurrent/ThreadPool.html#ExecutorService">10.12.5. ExecutorService 正确关闭方法</a></span></dt><dt><span class="section"><a href="jdk/concurrent/ThreadPool.html#ForkJoinPool">10.12.6. ForkJoinPool / ForkJoinTask</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/concurrent/Flow.html">10.13. Flow</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/Flow.html#id888">10.13.1. 自定义 Publisher / Subscriber</a></span></dt><dt><span class="section"><a href="jdk/concurrent/Flow.html#SubmissionPublisher">10.13.2. SubmissionPublisher</a></span></dt><dt><span class="section"><a href="jdk/concurrent/Flow.html#Flow.Processor">10.13.3. Flow.Processor</a></span></dt><dt><span class="section"><a href="jdk/concurrent/Flow.html#id891">10.13.4. 订单</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/concurrent/VirtualThreads.html">10.14. Java 虚拟线程(协程)</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/concurrent/VirtualThreads.html#id892">10.14.1. 与 Future 配合使用</a></span></dt><dt><span class="section"><a href="jdk/concurrent/VirtualThreads.html#id893">10.14.2. 虚拟线程并发控制</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="jdk/stream/index.html">11. Stream</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/stream/index.html#Stream.of">11.1. Stream.of</a></span></dt><dt><span class="section"><a href="jdk/stream/Stream.ofNullable.html">11.2. Stream.ofNullable</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.filter.html">11.3. filter</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.map.html">11.4. map</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.peek.html">11.5. peek 打印调试信息</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.limit.html">11.6. limit/skip</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.sorted.html">11.7. sorted</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.distinct.html">11.8. distinct</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.forEach.html">11.9. forEach</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.count.html">11.10. count</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.toList.html">11.11. 流转列表</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.collect.html">11.12. collect</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/stream/stream.collect.html#id894">11.12.1. Collectors.toList() 列表转字符串</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.collect.html#id895">11.12.2. Collectors.joining() 连接字符串</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.collect.html#id896">11.12.3. 转 Set Collectors.toSet()</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.collect.html#Collectors.teeing">11.12.4. Collectors.teeing()</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/stream/stream.takeWhile.html">11.13. takeWhile 和 dropWhile</a></span></dt><dt><span class="section"><a href="jdk/stream/Stream.concat.html">11.14. 合并 Stream</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.mapToObj.html">11.15. mapToObj</a></span></dt><dt><span class="section"><a href="jdk/stream/stream.Collectors.html">11.16. Collectors</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/stream/stream.Collectors.html#id897">11.16.1. </a></span></dt><dt><span class="section"><a href="jdk/stream/stream.Collectors.html#id898">11.16.2. 过滤空值</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/stream/stream.example.html">11.17. 混合使用的例子</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/stream/stream.example.html#stream.list">11.17.1. List to Stream</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/stream/streamSupplier.html">11.18. 流复用 streamSupplier</a></span></dt><dt><span class="section"><a href="jdk/stream/parallelStream.html">11.19. Parallel Streams(并行流)</a></span></dt><dt><span class="section"><a href="jdk/stream/IntStream.html">11.20. IntStream</a></span></dt><dt><span class="section"><a href="jdk/stream/LongStream.html">11.21. LongStream</a></span></dt><dt><span class="section"><a href="jdk/stream/DoubleStream.html">11.22. DoubleStream</a></span></dt><dt><span class="section"><a href="jdk/stream/ch11s23.html">11.23. 例子</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/stream/ch11s23.html#id899">11.23.1. Markdown 转 CSV</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="jdk/function/index.html">12. 函数式编程</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/function/index.html#Supplier">12.1. Supplier 供应型的接口</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/function/index.html#id900">12.1.1. Supplier 作为方法参数使用</a></span></dt><dt><span class="section"><a href="jdk/function/index.html#IntSupplier">12.1.2. IntSupplier</a></span></dt><dt><span class="section"><a href="jdk/function/index.html#LongSupplier">12.1.3. LongSupplier</a></span></dt><dt><span class="section"><a href="jdk/function/index.html#DoubleSupplier">12.1.4. DoubleSupplier</a></span></dt><dt><span class="section"><a href="jdk/function/index.html#BooleanSupplier">12.1.5. BooleanSupplier</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/function/Consumer.html">12.2. Consumer 消费型的接口</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/function/Consumer.html#IntConsumer">12.2.1. IntConsumer</a></span></dt><dt><span class="section"><a href="jdk/function/Consumer.html#Consumer.Void">12.2.2. 无返回值 Void</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/function/BiConsumer.html">12.3. BiConsumer</a></span></dt><dt><span class="section"><a href="jdk/function/BiFunction.html">12.4. BiFunction</a></span></dt><dt><span class="section"><a href="jdk/function/Predicate.html">12.5. Predicate 判断型的接口</a></span></dt><dt><span class="section"><a href="jdk/function/java.util.function.html">12.6. Supplier / Consumer / Predicate 应用场景</a></span></dt><dt><span class="section"><a href="jdk/function/ch12s07.html">12.7. Map + Function</a></span></dt><dt><span class="section"><a href="jdk/function/ch12s08.html">12.8. Predicate + Stream</a></span></dt><dt><span class="section"><a href="jdk/function/ch12s09.html">12.9. Enum + Function</a></span></dt></dl></dd><dt><span class="chapter"><a href="jdk/util/index.html">13. Util</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/util/index.html#java.util.Properties">13.1. Properties 处理 *.properties 文件</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/util/index.html#id905">13.1.1. 打开 properties 文件</a></span></dt><dt><span class="section"><a href="jdk/util/index.html#propertyNames">13.1.2. propertyNames()</a></span></dt><dt><span class="section"><a href="jdk/util/index.html#id906">13.1.3. keySet()</a></span></dt><dt><span class="section"><a href="jdk/util/index.html#id907">13.1.4. entrySet()</a></span></dt><dt><span class="section"><a href="jdk/util/index.html#id908">13.1.5. 方法中返回 Properties</a></span></dt><dt><span class="section"><a href="jdk/util/index.html#id909">13.1.6. </a></span></dt><dt><span class="section"><a href="jdk/util/index.html#getResourceAsStream">13.1.7. getResourceAsStream()</a></span></dt><dt><span class="section"><a href="jdk/util/index.html#store">13.1.8. store</a></span></dt><dt><span class="section"><a href="jdk/util/index.html#id910">13.1.9. 实现国际化</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/util/java.util.logging.html">13.2. Logging</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/util/java.util.logging.html#id911">13.2.1. console</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/util/java.util.Base64.html">13.3. BASE64</a></span></dt><dt><span class="section"><a href="jdk/util/java.util.Locale.html">13.4. Locale 国际化</a></span></dt><dt><span class="section"><a href="jdk/util/java.util.ResourceBundle.html">13.5. ResourceBundle</a></span></dt><dt><span class="section"><a href="jdk/util/Scanner.html">13.6. Scanner</a></span></dt><dt><span class="section"><a href="jdk/util/java.util.UUID.html">13.7. UUID</a></span></dt><dt><span class="section"><a href="jdk/util/Arrays.equals.html">13.8. Arrays.equals 判断两个数组是否相等</a></span></dt><dt><span class="section"><a href="jdk/util/java.util.Random.html">13.9. Random 随机字符串</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/util/java.util.Random.html#id912">13.9.1. 取 0-n 范围内随机数</a></span></dt><dt><span class="section"><a href="jdk/util/java.util.Random.html#id913">13.9.2. 指定随机数范围</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/util/java.util.zip.CRC32.html">13.10. CRC32</a></span></dt><dt><span class="section"><a href="jdk/util/Timer.html">13.11. Timer / TimerTask 实现周期性重复执行</a></span></dt></dl></dd><dt><span class="chapter"><a href="jdk/time/index.html">14. 时间</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/time/index.html#LocalDate">14.1. LocalDate</a></span></dt><dt><span class="section"><a href="jdk/time/LocalTime.html">14.2. LocalTime</a></span></dt><dt><span class="section"><a href="jdk/time/ZonedDateTime.html">14.3. ZonedDateTime</a></span></dt><dt><span class="section"><a href="jdk/time/DateTimeFormatter.html">14.4. DateTimeFormatter</a></span></dt><dt><span class="section"><a href="jdk/time/Instant.html">14.5. Instant</a></span></dt><dt><span class="section"><a href="jdk/time/Period.html">14.6. Period :基于日期值</a></span></dt><dt><span class="section"><a href="jdk/time/Duration.html">14.7. Duration:基于时间值</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/time/Duration.html#id914">14.7.1. 设置指定单位的持续时间</a></span></dt><dt><span class="section"><a href="jdk/time/Duration.html#id915">14.7.2. 获取指定单位的持续时间</a></span></dt><dt><span class="section"><a href="jdk/time/Duration.html#id916">14.7.3. 获取两个时间点之间差值的持续时间</a></span></dt><dt><span class="section"><a href="jdk/time/Duration.html#toMillis">14.7.4. 获取毫秒</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="jdk/io/index.html">15. IO</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/index.html#File">15.1. 取出文件名中的扩展名</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/index.html#getAbsolutePath()">15.1.1. getAbsolutePath() 获取绝对路径</a></span></dt><dt><span class="section"><a href="jdk/io/index.html#File.mkdir()">15.1.2. 创建目录 mkdir()</a></span></dt><dt><span class="section"><a href="jdk/io/index.html#id917">15.1.3. 文件删除</a></span></dt><dt><span class="section"><a href="jdk/io/index.html#id918">15.1.4. 获取路径中目录和文件名</a></span></dt><dt><span class="section"><a href="jdk/io/index.html#File.createTempFile">15.1.5. 临时文件</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/io/java.io.FileWriter.html">15.2. FileWriter 文本写入文件</a></span></dt><dt><span class="section"><a href="jdk/io/java.nio.file.html">15.3. Files</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/java.nio.file.html#id919">15.3.1. 删除文件</a></span></dt><dt><span class="section"><a href="jdk/io/java.nio.file.html#id920">15.3.2. 创建目录和文件</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/io/BufferedWriter.html">15.4. BufferedWriter</a></span></dt><dt><span class="section"><a href="jdk/io/PrintWriter.html">15.5. PrintWriter</a></span></dt><dt><span class="section"><a href="jdk/io/FileOutputStream.html">15.6. FileOutputStream</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/FileOutputStream.html#FileOutputStream.try">15.6.1. FileOutputStream + try 用法</a></span></dt><dt><span class="section"><a href="jdk/io/FileOutputStream.html#OutputStreamWriter">15.6.2. OutputStreamWriter</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/io/FileInputStream.html">15.7. FileInputStream</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/FileInputStream.html#InputStreamReader">15.7.1. InputStreamReader</a></span></dt><dt><span class="section"><a href="jdk/io/FileInputStream.html#inputStream.transferTo()">15.7.2. inputStream.transferTo()</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/io/java.util.Scanner.html">15.8. Scanner</a></span></dt><dt><span class="section"><a href="jdk/io/Files.html">15.9. Files</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/Files.html#id921">15.9.1. Files.lines</a></span></dt><dt><span class="section"><a href="jdk/io/Files.html#id922">15.9.2. Files.readAllLines</a></span></dt><dt><span class="section"><a href="jdk/io/Files.html#id923">15.9.3. Files.readAllBytes</a></span></dt><dt><span class="section"><a href="jdk/io/Files.html#id924">15.9.4. Files.newBufferedReader</a></span></dt><dt><span class="section"><a href="jdk/io/Files.html#id925">15.9.5. Files.delete</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/io/file.binary.html">15.10. 二进制文件</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/file.binary.html#binary.int">15.10.1. 理解二进制文件</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.byte">15.10.2. byte 类型</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.boolean">15.10.3. boolean 布尔型</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.long">15.10.4. Long 型</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.char">15.10.5. char 类型</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.utf">15.10.6. UTF 字符串</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.short">15.10.7. Short 类型</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.float">15.10.8. float 单精度浮点类型</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.double">15.10.9. double 数据类型</a></span></dt><dt><span class="section"><a href="jdk/io/file.binary.html#binary.exmaple">15.10.10. 二进制文件操作演示</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/io/java.io.path.html">15.11. 路径操作汇总</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/java.io.path.html#resources.path">15.11.1. 获得 Resource 下文件路径</a></span></dt><dt><span class="section"><a href="jdk/io/java.io.path.html#id928">15.11.2. URI/相对/拒绝/路径/文件</a></span></dt><dt><span class="section"><a href="jdk/io/java.io.path.html#id929">15.11.3. URL 操作汇总</a></span></dt><dt><span class="section"><a href="jdk/io/java.io.path.html#id930">15.11.4. nio 路径库</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/io/ch15s12.html">15.12. 遍历目录和文件</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/io/ch15s12.html#id931">15.12.1. listFiles()</a></span></dt><dt><span class="section"><a href="jdk/io/ch15s12.html#id932">15.12.2. Files.newDirectoryStream</a></span></dt><dt><span class="section"><a href="jdk/io/ch15s12.html#id933">15.12.3. Files.list</a></span></dt><dt><span class="section"><a href="jdk/io/ch15s12.html#id934">15.12.4. Files.walk 递归遍历目录</a></span></dt><dt><span class="section"><a href="jdk/io/ch15s12.html#id935">15.12.5. SimpleFileVisitor</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="jdk/net/index.html">16. Network</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/net/index.html#URL">16.1. URL</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/net/index.html#id936">16.1.1. 获取路径/文件名</a></span></dt><dt><span class="section"><a href="jdk/net/index.html#id937">16.1.2. 打开 URL</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/net/URLConnection.html">16.2. URLConnection</a></span></dt><dt><span class="section"><a href="jdk/net/HttpURLConnection.html">16.3. HttpURLConnection</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/net/HttpURLConnection.html#id938">16.3.1. GET 请求</a></span></dt><dt><span class="section"><a href="jdk/net/HttpURLConnection.html#id939">16.3.2. POST 请求</a></span></dt><dt><span class="section"><a href="jdk/net/HttpURLConnection.html#id940">16.3.3. POST JSON</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/net/InetAddress.html">16.4. 获取IP地址何机器名</a></span></dt><dt><span class="section"><a href="jdk/net/ch16s05.html">16.5. HttpClient HTTP/3 (QUIC协议)</a></span></dt></dl></dd><dt><span class="chapter"><a href="jdk/sql/index.html">17. JDBC</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/sql/index.html#id941">17.1. 安装 JDBC 包</a></span></dt><dt><span class="section"><a href="jdk/sql/mysql.html">17.2. MySQL</a></span></dt><dt><span class="section"><a href="jdk/sql/oracle.html">17.3. Oracle</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/sql/oracle.html#id942">17.3.1. SID</a></span></dt><dt><span class="section"><a href="jdk/sql/oracle.html#id943">17.3.2. SERVICE_NAME</a></span></dt><dt><span class="section"><a href="jdk/sql/oracle.html#id944">17.3.3. TNS</a></span></dt><dt><span class="section"><a href="jdk/sql/oracle.html#id945">17.3.4. Oracle RAC Cluster</a></span></dt><dt><span class="section"><a href="jdk/sql/oracle.html#id946">17.3.5. Oracle JDBC Demo</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/sql/faq.html">17.4. FAQ</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/sql/faq.html#id947">17.4.1. java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection</a></span></dt><dt><span class="section"><a href="jdk/sql/faq.html#id948">17.4.2. Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="jdk/reflect/index.html">18. Reflection 反射</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/reflect/index.html#id949">18.1. 获得所有变量</a></span></dt><dt><span class="section"><a href="jdk/reflect/ch18s02.html">18.2. 批量赋值</a></span></dt><dt><span class="section"><a href="jdk/reflect/ch18s03.html">18.3. 方法操作</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/reflect/ch18s03.html#id950">18.3.1. 获得所有方法</a></span></dt><dt><span class="section"><a href="jdk/reflect/ch18s03.html#id951">18.3.2. set/get 方法</a></span></dt><dt><span class="section"><a href="jdk/reflect/ch18s03.html#id952">18.3.3. static 方法调用</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/reflect/ch18s04.html">18.4. 完成的例子</a></span></dt></dl></dd><dt><span class="chapter"><a href="jdk/security/index.html">19. java.security</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/security/index.html#Security.getAlgorithms">19.1. 列出 Java 支持的数字摘要算法</a></span></dt><dt><span class="section"><a href="jdk/security/filesum.html">19.2. 计算文件的 MD5,SHA 等 HASH 值</a></span></dt><dt><span class="section"><a href="jdk/security/ch19s03.html">19.3. Md5sum</a></span></dt></dl></dd><dt><span class="chapter"><a href="jdk/javax.html">20. javax</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/javax/script/javax.html#index">20.1. java 脚本引擎</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/javax/script/javax.html#maven">20.1.1. Maven</a></span></dt><dt><span class="section"><a href="jdk/javax/script/javax.html#helloworld">20.1.2. Helloworld</a></span></dt><dt><span class="section"><a href="jdk/javax/script/javax.html#file">20.1.3. 运行脚本文件</a></span></dt><dt><span class="section"><a href="jdk/javax/script/javax.html#variable">20.1.4. 变量传递</a></span></dt><dt><span class="section"><a href="jdk/javax/script/javax.html#global">20.1.5. 全局变量与局部变量定义</a></span></dt><dt><span class="section"><a href="jdk/javax/script/javax.html#fun">20.1.6. 调用脚本中的函数或方法</a></span></dt><dt><span class="section"><a href="jdk/javax/script/javax.html#compile">20.1.7. 脚本编译</a></span></dt><dt><span class="section"><a href="jdk/javax/script/javax.html#jjs">20.1.8. jjs - Invokes the Nashorn engine.</a></span></dt></dl></dd><dt><span class="section"><a href="jdk/javax/crypto/index.html">20.2. Crypto</a></span></dt><dd><dl><dt><span class="section"><a href="jdk/javax/crypto/index.html#id953">20.2.1. MD5</a></span></dt><dt><span class="section"><a href="jdk/javax/crypto/index.html#id954">20.2.2. AES</a></span></dt><dt><span class="section"><a href="jdk/javax/crypto/index.html#id955">20.2.3. AES/CBC/PKCS5PADDING</a></span></dt><dt><span class="section"><a href="jdk/javax/crypto/index.html#id956">20.2.4. DES</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="build/index.html">III. Build Tools</a></span></dt><dd><dl><dt><span class="chapter"><a href="build/ant.html">21. Apache Ant</a></span></dt><dd><dl><dt><span class="section"><a href="build/ant.html#setup">21.1. 安装 ant</a></span></dt><dd><dl><dt><span class="section"><a href="build/ant.html#id957">21.1.1. 1.8</a></span></dt><dt><span class="section"><a href="build/ant.html#id958">21.1.2. 1.10.1</a></span></dt></dl></dd><dt><span class="section"><a href="build/cli.html">21.2. ANT</a></span></dt><dd><dl><dt><span class="section"><a href="build/cli.html#id959">21.2.1. ant.project.name</a></span></dt><dt><span class="section"><a href="build/cli.html#id960">21.2.2. 定义 </a></span></dt></dl></dd><dt><span class="section"><a href="build/project.html">21.3. Project</a></span></dt><dd><dl><dt><span class="section"><a href="build/project.html#id961">21.3.1. property</a></span></dt><dt><span class="section"><a href="build/project.html#id962">21.3.2. ant</a></span></dt><dt><span class="section"><a href="build/project.html#environment">21.3.3. environment</a></span></dt></dl></dd><dt><span class="section"><a href="build/path.html">21.4. path</a></span></dt><dt><span class="section"><a href="build/copy.html">21.5. copy</a></span></dt><dt><span class="section"><a href="build/javac.html">21.6. javac</a></span></dt><dt><span class="section"><a href="build/condition.html">21.7. condition</a></span></dt><dt><span class="section"><a href="build/exec.html">21.8. exec</a></span></dt><dd><dl><dt><span class="section"><a href="build/exec.html#id963">21.8.1. sshexec</a></span></dt></dl></dd><dt><span class="section"><a href="build/if.html">21.9. if</a></span></dt><dt><span class="section"><a href="build/macrodef.html">21.10. macrodef</a></span></dt><dd><dl><dt><span class="section"><a href="build/macrodef.html#id964">21.10.1. Git</a></span></dt><dt><span class="section"><a href="build/macrodef.html#id965">21.10.2. Rsync</a></span></dt><dt><span class="section"><a href="build/macrodef.html#id966">21.10.3. SSH</a></span></dt><dt><span class="section"><a href="build/macrodef.html#maven">21.10.4. maven</a></span></dt></dl></dd><dt><span class="section"><a href="build/javascript.html">21.11. Javascript</a></span></dt><dt><span class="section"><a href="build/mail.html">21.12. mail</a></span></dt><dt><span class="section"><a href="build/basename.html">21.13. basename</a></span></dt><dt><span class="section"><a href="build/ch21s14.html">21.14. 创建文件</a></span></dt><dt><span class="section"><a href="build/faq.html">21.15. FAQ</a></span></dt><dd><dl><dt><span class="section"><a href="build/faq.html#id967">21.15.1. warning: 'includeantruntime' was not set, defaulting to
build.sysclasspath=last; set to false for repeatable builds</a></span></dt><dt><span class="section"><a href="build/faq.html#id968">21.15.2. 调试 exec</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="build/ivy.html">22. Apache Ivy</a></span></dt><dd><dl><dt><span class="section"><a href="build/ivy.html#id971">22.1. Ivy Install</a></span></dt><dd><dl><dt><span class="section"><a href="build/ivy.html#id969">22.1.1. source code</a></span></dt><dt><span class="section"><a href="build/ivy.html#id970">22.1.2. apt-get</a></span></dt></dl></dd><dt><span class="section"><a href="build/ch22s02.html">22.2. Test example</a></span></dt></dl></dd><dt><span class="chapter"><a href="build/maven.html">23. Apache Maven</a></span></dt><dd><dl><dt><span class="section"><a href="build/maven.html#install">23.1. 安装 Maven</a></span></dt><dd><dl><dt><span class="section"><a href="build/maven.html#rockylinux.openjdk25">23.1.1. Rocky Linux 9 + Maven 3.3.9 + OpenJDK25</a></span></dt><dt><span class="section"><a href="build/maven.html#maven.centos">23.1.2. CentOS 8 安装 Maven</a></span></dt><dt><span class="section"><a href="build/maven.html#maven.ubuntu">23.1.3. Ubuntu</a></span></dt><dt><span class="section"><a href="build/maven.html#maven.oscm">23.1.4. 一键安装</a></span></dt><dt><span class="section"><a href="build/maven.html#maven.binrary">23.1.5. apache-maven-3.8.2</a></span></dt><dt><span class="section"><a href="build/maven.html#NexusRepositoryOSS">23.1.6. Nexus Repository OSS</a></span></dt><dt><span class="section"><a href="build/maven.html#maven.macos">23.1.7. MacOS</a></span></dt><dt><span class="section"><a href="build/maven.html#mvnd">23.1.8. mvnd</a></span></dt></dl></dd><dt><span class="section"><a href="build/cli.html">23.2. Maven 命令</a></span></dt><dd><dl><dt><span class="section"><a href="build/cli.html#id975">23.2.1. 切换 JAVA 版本</a></span></dt><dt><span class="section"><a href="build/cli.html#-D">23.2.2. 参数</a></span></dt><dt><span class="section"><a href="build/cli.html#mvn.settings.xml">23.2.3. -s 指定 settings.xml 文件</a></span></dt><dt><span class="section"><a href="build/cli.html#mvn.thread">23.2.4. 多线程</a></span></dt><dt><span class="section"><a href="build/cli.html#help">23.2.5. help</a></span></dt><dt><span class="section"><a href="build/cli.html#create">23.2.6. archetype:create</a></span></dt><dt><span class="section"><a href="build/cli.html#mvn.archetype">23.2.7. 从 archetype 模版创建项目</a></span></dt><dt><span class="section"><a href="build/cli.html#clean">23.2.8. clean</a></span></dt><dt><span class="section"><a href="build/cli.html#compile">23.2.9. compile</a></span></dt><dt><span class="section"><a href="build/cli.html#mvn.test-compile">23.2.10. 编译测试代码</a></span></dt><dt><span class="section"><a href="build/cli.html#test">23.2.11. test</a></span></dt><dt><span class="section"><a href="build/cli.html#package">23.2.12. package</a></span></dt><dt><span class="section"><a href="build/cli.html#install">23.2.13. install</a></span></dt><dt><span class="section"><a href="build/cli.html#war">23.2.14. war</a></span></dt><dt><span class="section"><a href="build/cli.html#exec">23.2.15. exec</a></span></dt><dt><span class="section"><a href="build/cli.html#dependency">23.2.16. dependency</a></span></dt><dt><span class="section"><a href="build/cli.html#jar">23.2.17. jar</a></span></dt><dt><span class="section"><a href="build/cli.html#mvn.assembly">23.2.18. 构建装配Maven Assembly</a></span></dt><dt><span class="section"><a href="build/cli.html#mvn.encrypt">23.2.19. 加密密码</a></span></dt><dt><span class="section"><a href="build/cli.html#help:describe">23.2.20. help:describe</a></span></dt></dl></dd><dt><span class="section"><a href="build/maven.settings.xml.html">23.3. settings.xml 配置</a></span></dt><dd><dl><dt><span class="section"><a href="build/maven.settings.xml.html#mvnrepository">23.3.1. Maven 仓库</a></span></dt><dt><span class="section"><a href="build/maven.settings.xml.html#maven.mirror">23.3.2. 镜像配置</a></span></dt></dl></dd><dt><span class="section"><a href="build/pom.xml.html">23.4. pom.xml</a></span></dt><dd><dl><dt><span class="section"><a href="build/pom.xml.html#properties">23.4.1. properties</a></span></dt><dt><span class="section"><a href="build/pom.xml.html#id978">23.4.2. 常用的POM属性</a></span></dt><dt><span class="section"><a href="build/pom.xml.html#repositories">23.4.3. repositories 仓库配置</a></span></dt><dt><span class="section"><a href="build/pom.xml.html#dependencies">23.4.4. dependencies</a></span></dt><dt><span class="section"><a href="build/pom.xml.html#dependencyManagement">23.4.5. dependencyManagement</a></span></dt><dt><span class="section"><a href="build/pom.xml.html#build">23.4.6. build</a></span></dt><dt><span class="section"><a href="build/pom.xml.html#plugins">23.4.7. plugins</a></span></dt></dl></dd><dt><span class="section"><a href="build/maven.module.html">23.5. Maven Module</a></span></dt><dd><dl><dt><span class="section"><a href="build/maven.module.html#id984">23.5.1. Parent</a></span></dt><dt><span class="section"><a href="build/maven.module.html#id985">23.5.2. 公共项目 common</a></span></dt><dt><span class="section"><a href="build/maven.module.html#id986">23.5.3. 常规项目</a></span></dt><dt><span class="section"><a href="build/maven.module.html#id987">23.5.4. 现在测试效果</a></span></dt></dl></dd><dt><span class="section"><a href="build/maven.dependencies.html">23.6. 依赖管理</a></span></dt><dd><dl><dt><span class="section"><a href="build/maven.dependencies.html#id988">23.6.1. 创建依赖模块</a></span></dt><dt><span class="section"><a href="build/maven.dependencies.html#id989">23.6.2. 引用依赖管理</a></span></dt></dl></dd><dt><span class="section"><a href="build/maven.plugins.html">23.7. plugins</a></span></dt><dd><dl><dt><span class="section"><a href="build/maven.plugins.html#maven-compiler-plugin">23.7.1. maven-compiler-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#maven-war-plugin">23.7.2. maven-war-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#maven-antrun-plugin">23.7.3. maven-antrun-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#maven-install-plugin">23.7.4. maven-install-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#maven-surefire-plugin">23.7.5. maven-surefire-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#maven-deploy-plugin">23.7.6. maven-deploy-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#maven-jar-plugin">23.7.7. maven-jar-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#maven-dependency-plugin">23.7.8. maven-dependency-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#spring-boot-maven-plugin">23.7.9. spring-boot-maven-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#tomcat8-maven-plugin">23.7.10. tomcat8-maven-plugin</a></span></dt><dt><span class="section"><a href="build/maven.plugins.html#docker-maven-plugin">23.7.11. docker-maven-plugin</a></span></dt></dl></dd><dt><span class="section"><a href="build/maven.branch.html">23.8. 应用案例</a></span></dt><dd><dl><dt><span class="section"><a href="build/maven.branch.html#id992">23.8.1. 并行开发解决不同环境包引用</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="build/gradle.html">24. Gradle 5</a></span></dt><dd><dl><dt><span class="section"><a href="build/gradle.html#gradle.setup">24.1. 安装 Gradle</a></span></dt><dd><dl><dt><span class="section"><a href="build/gradle.html#id993">24.1.1. CentOS</a></span></dt><dt><span class="section"><a href="build/gradle.html#id994">24.1.2. Mac</a></span></dt><dt><span class="section"><a href="build/gradle.html#Artifactory">24.1.3. Artifactory 本地仓库</a></span></dt></dl></dd><dt><span class="section"><a href="build/ch24s02.html">24.2. Example</a></span></dt><dt><span class="section"><a href="build/gradlew.html">24.3. gradle 命令</a></span></dt><dd><dl><dt><span class="section"><a href="build/gradlew.html#id997">24.3.1. tasks 列出任务</a></span></dt></dl></dd><dt><span class="section"><a href="build/build.gradle.html">24.4. build.gradle</a></span></dt><dd><dl><dt><span class="section"><a href="build/build.gradle.html#id998">24.4.1. repositories</a></span></dt><dt><span class="section"><a href="build/build.gradle.html#id999">24.4.2. dependencies</a></span></dt><dt><span class="section"><a href="build/build.gradle.html#id1000">24.4.3. jar</a></span></dt><dt><span class="section"><a href="build/build.gradle.html#id1001">24.4.4. Task</a></span></dt></dl></dd><dt><span class="section"><a href="build/gradle.properties.html">24.5. gradle.properties</a></span></dt><dd><dl><dt><span class="section"><a href="build/gradle.properties.html#id1002">24.5.1. 列出 properties</a></span></dt><dt><span class="section"><a href="build/gradle.properties.html#id1003">24.5.2. 自定义 gradle.properties</a></span></dt><dt><span class="section"><a href="build/gradle.properties.html#id1004">24.5.3. ext</a></span></dt><dt><span class="section"><a href="build/gradle.properties.html#id1005">24.5.4. System.properties</a></span></dt></dl></dd><dt><span class="section"><a href="build/ch24s06.html">24.6. Github Packages</a></span></dt><dd><dl><dt><span class="section"><a href="build/ch24s06.html#id1006">24.6.1. Publishing a package</a></span></dt><dt><span class="section"><a href="build/ch24s06.html#id1007">24.6.2. Using a published package</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="build/jitpack.html">25. JitPack - Easy to use package repository for Git</a></span></dt></dl></dd><dt><span class="part"><a href="boot/index.html">IV. Spring Boot</a></span></dt><dd><dl><dt><span class="chapter"><a href="boot/spring.boot.quickstart.html">26. Spring Boot Quick start</a></span></dt><dd><dl><dt><span class="section"><a href="boot/spring.boot.quickstart.html#id1008">26.1. 创建项目</a></span></dt><dt><span class="section"><a href="boot/pom.html">26.2. pom.xml</a></span></dt><dt><span class="section"><a href="boot/controller.html">26.3. Controller</a></span></dt><dt><span class="section"><a href="boot/spring-boot-maven-plugin.html">26.4. Springboot with Maven</a></span></dt><dd><dl><dt><span class="section"><a href="boot/spring-boot-maven-plugin.html#id1009">26.4.1. resource</a></span></dt><dt><span class="section"><a href="boot/spring-boot-maven-plugin.html#id1010">26.4.2. Maven run</a></span></dt><dt><span class="section"><a href="boot/spring-boot-maven-plugin.html#id1011">26.4.3. Spring Boot maven 插件 build-image</a></span></dt><dt><span class="section"><a href="boot/spring-boot-maven-plugin.html#id1012">26.4.4. 生成项目信息</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/suite.html">27. Spring 开发环境</a></span></dt><dd><dl><dt><span class="section"><a href="boot/suite.html#id1013">27.1. Java 开发环境</a></span></dt><dt><span class="section"><a href="boot/install.html">27.2. 安装 Spring Tool Suite</a></span></dt><dt><span class="section"><a href="boot/dashboard.html">27.3. Dashboard</a></span></dt><dt><span class="section"><a href="boot/start.spring.io.html">27.4. Spring Initializr - Bootstrap your application</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/SpringApplication.html">28. SpringApplication</a></span></dt><dd><dl><dt><span class="section"><a href="boot/SpringApplication.html#spring.run">28.1. 运行 Spring boot 项目</a></span></dt><dd><dl><dt><span class="section"><a href="boot/SpringApplication.html#id1014">28.1.1. Linux systemd</a></span></dt><dt><span class="section"><a href="boot/SpringApplication.html#id1015">28.1.2. 传统 init.d 脚本</a></span></dt><dt><span class="section"><a href="boot/SpringApplication.html#war">28.1.3. 编译用于Tomcat的 War</a></span></dt></dl></dd><dt><span class="section"><a href="boot/SpringBootApplication.html">28.2. @SpringBootApplication</a></span></dt><dd><dl><dt><span class="section"><a href="boot/SpringBootApplication.html#id1016">28.2.1. 排除 @EnableAutoConfiguration 加载项</a></span></dt></dl></dd><dt><span class="section"><a href="boot/获取Resources中的文件.html">28.3. 获取 Resources 目录中的静态文件</a></span></dt><dt><span class="section"><a href="boot/EnableAutoConfiguration.html">28.4. @EnableAutoConfiguration</a></span></dt><dt><span class="section"><a href="boot/@ComponentScan.html">28.5. @ComponentScan</a></span></dt><dt><span class="section"><a href="boot/@EntityScan.html">28.6. @EntityScan 实体扫描</a></span></dt><dt><span class="section"><a href="boot/@EnableJpaRepositories.html">28.7. @EnableJpaRepositories</a></span></dt><dt><span class="section"><a href="boot/启动和销毁.html">28.8. 启动和销毁</a></span></dt><dt><span class="section"><a href="boot/打印环境变量.html">28.9. 打印环境变量</a></span></dt><dt><span class="section"><a href="boot/CharacterEncodingFilter.html">28.10. CharacterEncodingFilter</a></span></dt><dt><span class="section"><a href="boot/banner.html">28.11. 隐藏 Banner</a></span></dt><dt><span class="section"><a href="boot/scan.html">28.12. 实体与仓库扫描</a></span></dt><dt><span class="section"><a href="boot/beans.html">28.13. 列出 Beans</a></span></dt><dt><span class="section"><a href="boot/spring.boot.ports.html">28.14. Tomcat 端口</a></span></dt><dt><span class="section"><a href="boot/启动配置项.html">28.15. 配置项设定</a></span></dt><dt><span class="section"><a href="boot/spring.profiles.active.html">28.16. spring.profiles.active</a></span></dt><dt><span class="section"><a href="boot/@Profile.html">28.17. @Profile("dev") / @ActiveProfiles("dev")</a></span></dt><dt><span class="section"><a href="boot/spring.boot.timezone.html">28.18. 设置默认时区</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/spring.boot.shutdown.html">29. 如何优雅停止 Springboot 运行</a></span></dt><dd><dl><dt><span class="section"><a href="boot/spring.boot.shutdown.html#id1017">29.1. 准备工作</a></span></dt><dt><span class="section"><a href="boot/ch29s02.html">29.2. kill 命令演示</a></span></dt><dt><span class="section"><a href="boot/ch29s03.html">29.3. 容器中如何优雅关闭 Springboot</a></span></dt><dt><span class="section"><a href="boot/ch29s04.html">29.4. 写入PID文件</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/properties/index.html">30. Properties 配置文件</a></span></dt><dd><dl><dt><span class="section"><a href="boot/properties/index.html#application.properties">30.1. application.properties 配置文件</a></span></dt><dd><dl><dt><span class="section"><a href="boot/properties/index.html#faq.application.properties">30.1.1. application.properties 参考</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#spring.config.location">30.1.2. 启动指定参数</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#spring.autoconfigure.exclude">30.1.3. 加载排除</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#spring.pid">30.1.4. PID FILE</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#spring.main.banner-mode">30.1.5. banner 关闭</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#server">30.1.6. server</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#logging">30.1.7. logging</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#server.tomcat">30.1.8. 内嵌 tomcat server</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#spring.servlet">30.1.9. servlet</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#spring.jackson">30.1.10. JSON 输出与日期格式化</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#mail">30.1.11. SMTP 相关配置</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#redis">30.1.12. Redis</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#mongodb">30.1.13. MongoDB</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#mysql">30.1.14. MySQL</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#oracle">30.1.15. Oracle</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#default_schema">30.1.16. default_schema</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#datasource">30.1.17. datasource</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#velocity">30.1.18. velocity</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#security">30.1.19. Security 相关配置</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#mvc">30.1.20. MVC 配置</a></span></dt><dt><span class="section"><a href="boot/properties/index.html#kafka">30.1.21. Kafka 相关配置</a></span></dt></dl></dd><dt><span class="section"><a href="boot/properties/properties.html">30.2. Properties 文件</a></span></dt><dd><dl><dt><span class="section"><a href="boot/properties/properties.html#@Value">30.2.1. @Value 注解</a></span></dt><dt><span class="section"><a href="boot/properties/properties.html#ConfigurationProperties">30.2.2. @EnableConfigurationProperties 引用自定义 *.properties 配置文件</a></span></dt><dt><span class="section"><a href="boot/properties/properties.html#@PropertySource">30.2.3. @PropertySource 注解载入 properties 文件</a></span></dt></dl></dd><dt><span class="section"><a href="boot/properties/Environment.html">30.3. Environment 读取配置文件</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s04.html">30.4. 手工载入 *.properties 文件</a></span></dt><dd><dl><dt><span class="section"><a href="boot/properties/ch30s04.html#id1021">30.4.1. 家在 resources 目录中的指定文件</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s04.html#id1022">30.4.2. 从 InputStreamReader 打开 application.properties</a></span></dt></dl></dd><dt><span class="section"><a href="boot/properties/ch30s05.html">30.5. 命令行注入配置项</a></span></dt><dd><dl><dt><span class="section"><a href="boot/properties/ch30s05.html#spring.profiles.active">30.5.1. spring.profiles.active 参数切换配置文件</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s05.html#id1023">30.5.2. SpringApplicationBuilder.properties() 方法添加配置项</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s05.html#setAddCommandLineProperties">30.5.3. 禁用命令行注入环境变量</a></span></dt></dl></dd><dt><span class="section"><a href="boot/properties/PropertyResolver.html">30.6. PropertyResolver 获取配置</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s07.html">30.7. 参数引用</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s08.html">30.8. 默认值</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s09.html">30.9. 产生随机数</a></span></dt><dd><dl><dt><span class="section"><a href="boot/properties/ch30s09.html#id1024">30.9.1. 随机数</a></span></dt></dl></dd><dt><span class="section"><a href="boot/properties/ch30s10.html">30.10. 多行字符串</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s11.html">30.11. 注入多值属性 arrays, list, set</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s12.html">30.12. List 列表类型</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s13.html">30.13. Map类型</a></span></dt><dt><span class="section"><a href="boot/properties/ch30s14.html">30.14. Binder</a></span></dt><dt><span class="section"><a href="boot/properties/jasypt-spring-boot-starter.html">30.15. 加密 application.properties 中的敏感内容</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/spring.boot.logging.html">31. Spring boot with Logging</a></span></dt><dd><dl><dt><span class="section"><a href="boot/spring.boot.logging.html#application.properties.logging">31.1. 配置日志文件</a></span></dt><dd><dl><dt><span class="section"><a href="boot/spring.boot.logging.html#id1025">31.1.1. 日志输出级别</a></span></dt><dt><span class="section"><a href="boot/spring.boot.logging.html#id1026">31.1.2. Spring boot 2.1 以后的版本不打印 Mapped 日志问题</a></span></dt><dt><span class="section"><a href="boot/spring.boot.logging.html#id1027">31.1.3. 禁止控制台输出日志</a></span></dt><dt><span class="section"><a href="boot/spring.boot.logging.html#id1028">31.1.4. 定制日志格式</a></span></dt><dt><span class="section"><a href="boot/spring.boot.logging.html#id1029">31.1.5. 彩色输出</a></span></dt></dl></dd><dt><span class="section"><a href="boot/logging.logback.html">31.2. 日志切割</a></span></dt><dt><span class="section"><a href="boot/logging.ansi.html">31.3. 彩色日志</a></span></dt><dt><span class="section"><a href="boot/lombok.logging.html">31.4. 打印日志</a></span></dt><dd><dl><dt><span class="section"><a href="boot/lombok.logging.html#id1030">31.4.1. lombok</a></span></dt></dl></dd><dt><span class="section"><a href="boot/springboot.logback.html">31.5. logback 配置详解</a></span></dt><dd><dl><dt><span class="section"><a href="boot/springboot.logback.html#logback.stdout">31.5.1. 标准输出</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#id1031">31.5.2. 禁止 logback 日志输出</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#logback.level">31.5.3. 指定Class过滤日志</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#logback.attr">31.5.4. configuration 属性配置</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#logback.contextName">31.5.5. contextName 设置上下文名称</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#logback.property">31.5.6. property 设置变量</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#logback.encoder">31.5.7. encoder 日志格式设置</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#RollingFileAppender">31.5.8. RollingFileAppender</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#id1034">31.5.9. 日志过滤</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#logback.file">31.5.10. 标准输出</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#id1035">31.5.11. MDC</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#logback.mongodb">31.5.12. 日志写入 MongoDB</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#logback.logstash">31.5.13. 日志发送给 logstash</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#springboot.fluentd">31.5.14. fluentd</a></span></dt><dt><span class="section"><a href="boot/springboot.logback.html#Loki4j">31.5.15. Loki4j Logback</a></span></dt></dl></dd><dt><span class="section"><a href="boot/log4j2-gelf-logstash.html">31.6. Log4j2 + Gelf + Logstash</a></span></dt><dd><dl><dt><span class="section"><a href="boot/log4j2-gelf-logstash.html#id1048">31.6.1. Maven 配置</a></span></dt><dt><span class="section"><a href="boot/log4j2-gelf-logstash.html#id1049">31.6.2. log4j2.xml 配置</a></span></dt><dt><span class="section"><a href="boot/log4j2-gelf-logstash.html#id1050">31.6.3. Java 测试代码</a></span></dt><dt><span class="section"><a href="boot/log4j2-gelf-logstash.html#id1051">31.6.4. Logstash 配置</a></span></dt><dt><span class="section"><a href="boot/log4j2-gelf-logstash.html#id1052">31.6.5. 测试结果</a></span></dt><dt><span class="section"><a href="boot/log4j2-gelf-logstash.html#id1060">31.6.6. Log4j2 更多技巧</a></span></dt></dl></dd><dt><span class="section"><a href="boot/logging.dingtalk.html">31.7. 日志报警</a></span></dt><dd><dl><dt><span class="section"><a href="boot/logging.dingtalk.html#id1061">31.7.1. Logstash 配置</a></span></dt><dt><span class="section"><a href="boot/logging.dingtalk.html#id1062">31.7.2. 监控 SpringBootApplication 的启动和退出</a></span></dt></dl></dd><dt><span class="section"><a href="boot/SpringBoot.ELK.html">31.8. Spring boot with ELK(Elasticsearch + Logstash + Kibana)</a></span></dt><dd><dl><dt><span class="section"><a href="boot/SpringBoot.ELK.html#id1063">31.8.1. TCP 方案</a></span></dt><dt><span class="section"><a href="boot/SpringBoot.ELK.html#id1064">31.8.2. Redis 方案</a></span></dt><dt><span class="section"><a href="boot/SpringBoot.ELK.html#id1065">31.8.3. Kafka 方案</a></span></dt><dt><span class="section"><a href="boot/SpringBoot.ELK.html#id1066">31.8.4. Other</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/web.html">32. Springboot with Undertow / Jetty / http2</a></span></dt><dd><dl><dt><span class="section"><a href="boot/web.html#Undertow">32.1. Spring boot with Undertow</a></span></dt><dd><dl><dt><span class="section"><a href="boot/web.html#id1067">32.1.1. Maven 依赖</a></span></dt><dt><span class="section"><a href="boot/web.html#id1068">32.1.2. Application</a></span></dt><dt><span class="section"><a href="boot/web.html#id1069">32.1.3. 相关配置</a></span></dt></dl></dd><dt><span class="section"><a href="boot/jetty.html">32.2. Spring boot with Jetty</a></span></dt><dt><span class="section"><a href="boot/springboot.https.html">32.3. Spring boot with HTTP2 SSL</a></span></dt><dd><dl><dt><span class="section"><a href="boot/springboot.https.html#id1070">32.3.1. 生成自签名证书</a></span></dt><dt><span class="section"><a href="boot/springboot.https.html#id1071">32.3.2. application.properties 配置文件</a></span></dt><dt><span class="section"><a href="boot/springboot.https.html#id1072">32.3.3. 启动 Spring boot</a></span></dt><dt><span class="section"><a href="boot/springboot.https.html#id1073">32.3.4. restTemplate 调用实例</a></span></dt><dt><span class="section"><a href="boot/springboot.https.html#id1074">32.3.5. HTTP2</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/mongodb/index.html">33. Spring boot with MongoDB</a></span></dt><dd><dl><dt><span class="section"><a href="boot/mongodb/index.html#id1075">33.1. Maven</a></span></dt><dt><span class="section"><a href="boot/mongodb/ch33s02.html">33.2. Application</a></span></dt><dt><span class="section"><a href="boot/mongodb/MongoTemplate.html">33.3. MongoTemplate</a></span></dt><dt><span class="section"><a href="boot/mongodb/Repository.html">33.4. Repository</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/mysql/index.html">34. Spring boot with MySQL</a></span></dt><dd><dl><dt><span class="section"><a href="boot/mysql/index.html#id1076">34.1. Maven</a></span></dt><dt><span class="section"><a href="boot/mysql/ch34s02.html">34.2. Resource</a></span></dt><dt><span class="section"><a href="boot/mysql/ch34s03.html">34.3. Application</a></span></dt><dt><span class="section"><a href="boot/mysql/ch34s04.html">34.4. JdbcTemplate</a></span></dt><dt><span class="section"><a href="boot/mysql/ch34s05.html">34.5. CrudRepository</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/oracle/index.html">35. Spring boot with Oracle</a></span></dt><dd><dl><dt><span class="section"><a href="boot/oracle/index.html#id1077">35.1. Maven</a></span></dt><dt><span class="section"><a href="boot/oracle/ch35s02.html">35.2. application.properties</a></span></dt><dt><span class="section"><a href="boot/oracle/ch35s03.html">35.3. Application</a></span></dt><dt><span class="section"><a href="boot/oracle/ch35s04.html">35.4. CrudRepository</a></span></dt><dt><span class="section"><a href="boot/oracle/ch35s05.html">35.5. JdbcTemplate</a></span></dt><dt><span class="section"><a href="boot/oracle/ch35s06.html">35.6. Controller</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/postgresql/index.html">36. Spring boot with PostgreSQL</a></span></dt><dd><dl><dt><span class="section"><a href="boot/postgresql/index.html#id1078">36.1. pom.xml</a></span></dt><dt><span class="section"><a href="boot/postgresql/ch36s02.html">36.2. application.properties</a></span></dt><dt><span class="section"><a href="boot/postgresql/ch36s03.html">36.3. Application</a></span></dt><dt><span class="section"><a href="boot/postgresql/ch36s04.html">36.4. CrudRepository</a></span></dt><dt><span class="section"><a href="boot/postgresql/ch36s05.html">36.5. JdbcTemplate</a></span></dt><dt><span class="section"><a href="boot/postgresql/ch36s06.html">36.6. Controller</a></span></dt><dt><span class="section"><a href="boot/postgresql/ch36s07.html">36.7. Test</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/elasticsearch/index.html">37. Spring boot with Elasticsearch</a></span></dt><dd><dl><dt><span class="section"><a href="boot/elasticsearch/index.html#id1079">37.1. Maven</a></span></dt><dt><span class="section"><a href="boot/elasticsearch/ch37s02.html">37.2. Application</a></span></dt><dt><span class="section"><a href="boot/elasticsearch/ch37s03.html">37.3. application.properties</a></span></dt><dt><span class="section"><a href="boot/elasticsearch/ch37s04.html">37.4. Domain</a></span></dt><dt><span class="section"><a href="boot/elasticsearch/ch37s05.html">37.5. ElasticsearchRepository</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/elasticsearch/5.x/index.html">38. Spring boot with Elasticsearch TransportClient</a></span></dt><dd><dl><dt><span class="section"><a href="boot/elasticsearch/5.x/index.html#id1080">38.1. Maven</a></span></dt><dt><span class="section"><a href="boot/elasticsearch/5.x/ch38s02.html">38.2. Application</a></span></dt><dt><span class="section"><a href="boot/elasticsearch/5.x/ch38s03.html">38.3. application.properties</a></span></dt><dt><span class="section"><a href="boot/elasticsearch/5.x/ch38s04.html">38.4. ElasticsearchConfiguration</a></span></dt><dt><span class="section"><a href="boot/elasticsearch/5.x/ch38s05.html">38.5. RestController</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/hive/index.html">39. Spring boot with Apache Hive</a></span></dt><dd><dl><dt><span class="section"><a href="boot/hive/index.html#id1081">39.1. Maven</a></span></dt><dt><span class="section"><a href="boot/hive/ch39s02.html">39.2. application.properties</a></span></dt><dt><span class="section"><a href="boot/hive/ch39s03.html">39.3. Configuration</a></span></dt><dt><span class="section"><a href="boot/hive/ch39s04.html">39.4. CURD 操作实例</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/phoenix/index.html">40. Spring boot with Phoenix</a></span></dt><dd><dl><dt><span class="section"><a href="boot/phoenix/index.html#id1082">40.1. Maven</a></span></dt><dt><span class="section"><a href="boot/phoenix/ch40s02.html">40.2. application.properties</a></span></dt><dt><span class="section"><a href="boot/phoenix/ch40s03.html">40.3. Configuration</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/datasource/index.html">41. Spring boot with Datasource</a></span></dt><dd><dl><dt><span class="section"><a href="boot/datasource/index.html#id1086">41.1. Master / Slave 主从数据库数据源配置</a></span></dt><dd><dl><dt><span class="section"><a href="boot/datasource/index.html#id1083">41.1.1. application.properties</a></span></dt><dt><span class="section"><a href="boot/datasource/index.html#id1084">41.1.2. 配置主从数据源</a></span></dt><dt><span class="section"><a href="boot/datasource/index.html#id1085">41.1.3. 选择数据源</a></span></dt></dl></dd><dt><span class="section"><a href="boot/datasource/ch41s02.html">41.2. 多数据源配置</a></span></dt><dt><span class="section"><a href="boot/datasource/ch41s03.html">41.3. JPA 多数据源</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/pool/index.html">42. 连接池配置</a></span></dt><dd><dl><dt><span class="section"><a href="boot/pool/index.html#tomcat">42.1. org.apache.tomcat.jdbc.pool.DataSource</a></span></dt><dt><span class="section"><a href="boot/pool/pool.druid.html">42.2. druid</a></span></dt><dd><dl><dt><span class="section"><a href="boot/pool/pool.druid.html#id1087">42.2.1. 加密数据库密码</a></span></dt></dl></dd><dt><span class="section"><a href="boot/pool/pool.c3p0.html">42.3. c3p0 - JDBC3 Connection and Statement Pooling</a></span></dt><dt><span class="section"><a href="boot/pool/dbcp2.html">42.4. dbcp2</a></span></dt><dt><span class="section"><a href="boot/pool/bonecp.html">42.5. bonecp</a></span></dt><dt><span class="section"><a href="boot/pool/HikariPool.html">42.6. HikariPool</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/queue/index.html">43. Spring boot with Queue</a></span></dt><dd><dl><dt><span class="section"><a href="boot/queue/index.html#rabbitmq">43.1. Spring boot with RabbitMQ(AMQP)</a></span></dt><dd><dl><dt><span class="section"><a href="boot/queue/index.html#id1088">43.1.1. maven</a></span></dt><dt><span class="section"><a href="boot/queue/index.html#id1089">43.1.2. RabbitMQConfig</a></span></dt><dt><span class="section"><a href="boot/queue/index.html#id1090">43.1.3. 生产者</a></span></dt><dt><span class="section"><a href="boot/queue/index.html#id1091">43.1.4. 消费者</a></span></dt></dl></dd><dt><span class="section"><a href="boot/queue/kafka.html">43.2. Spring boot with Apache Kafka</a></span></dt><dd><dl><dt><span class="section"><a href="boot/queue/kafka.html#id1092">43.2.1. 安装 kafka</a></span></dt><dt><span class="section"><a href="boot/queue/kafka.html#maven">43.2.2. maven</a></span></dt><dt><span class="section"><a href="boot/queue/kafka.html#application">43.2.3. Spring boot Application</a></span></dt><dt><span class="section"><a href="boot/queue/kafka.html#EnableKafka">43.2.4. EnableKafka</a></span></dt><dt><span class="section"><a href="boot/queue/kafka.html#KafkaListener">43.2.5. KafkaListener</a></span></dt><dt><span class="section"><a href="boot/queue/kafka.html#spring.boot.kafka.test">43.2.6. 测试</a></span></dt><dt><span class="section"><a href="boot/queue/kafka.html#spring.boot.kafka.example">43.2.7. 完整的发布订阅实例</a></span></dt><dt><span class="section"><a href="boot/queue/kafka.html#spring.cloud.kafka">43.2.8. Spring cloud with Kafka</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/scheduling/index.html">44. Spring boot with Scheduling</a></span></dt><dd><dl><dt><span class="section"><a href="boot/scheduling/index.html#id1096">44.1. 启用计划任务</a></span></dt><dd><dl><dt><span class="section"><a href="boot/scheduling/index.html#id1093">44.1.1. Application.java</a></span></dt><dt><span class="section"><a href="boot/scheduling/index.html#id1094">44.1.2. 配置</a></span></dt><dt><span class="section"><a href="boot/scheduling/index.html#id1095">44.1.3. Component</a></span></dt></dl></dd><dt><span class="section"><a href="boot/scheduling/Scheduled.matchIfMissing.html">44.2. 计划任务控制开关</a></span></dt><dt><span class="section"><a href="boot/scheduling/scheduled.html">44.3. @Scheduled 详解</a></span></dt><dd><dl><dt><span class="section"><a href="boot/scheduling/scheduled.html#fixedRate">44.3.1. fixedRate 案例</a></span></dt><dt><span class="section"><a href="boot/scheduling/scheduled.html#timeUnit">44.3.2. timeUnit</a></span></dt></dl></dd><dt><span class="section"><a href="boot/scheduling/schedule.cron.html">44.4. cron 表达式</a></span></dt><dd><dl><dt><span class="section"><a href="boot/scheduling/schedule.cron.html#id1097">44.4.1. 每3秒钟一运行一次</a></span></dt><dt><span class="section"><a href="boot/scheduling/schedule.cron.html#id1098">44.4.2. 凌晨23点运行</a></span></dt><dt><span class="section"><a href="boot/scheduling/schedule.cron.html#id1099">44.4.3. 周一 ~ 周五</a></span></dt></dl></dd><dt><span class="section"><a href="boot/scheduling/TimerTask.html">44.5. Timer 例子</a></span></dt><dt><span class="section"><a href="boot/scheduling/ScheduledExecutorService.html">44.6. ScheduledExecutorService 例子</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/swagger/index.html">45. Spring boot with Swagger</a></span></dt><dd><dl><dt><span class="section"><a href="boot/swagger/index.html#springdoc">45.1. Spring boot with Springdoc</a></span></dt><dd><dl><dt><span class="section"><a href="boot/swagger/index.html#id1100">45.1.1. WebMvc</a></span></dt><dt><span class="section"><a href="boot/swagger/index.html#id1101">45.1.2. Webflux</a></span></dt><dt><span class="section"><a href="boot/swagger/index.html#id1102">45.1.3. Swagger UI</a></span></dt><dt><span class="section"><a href="boot/swagger/index.html#id1103">45.1.4. 从 SpringFox 迁移到 Swagger3 注解变化</a></span></dt></dl></dd><dt><span class="section"><a href="boot/swagger/springboot.knife4j.html">45.2. Spring boot with knife4j</a></span></dt><dd><dl><dt><span class="section"><a href="boot/swagger/springboot.knife4j.html#id1104">45.2.1. maven</a></span></dt><dt><span class="section"><a href="boot/swagger/springboot.knife4j.html#id1105">45.2.2. Knife4jConfiguration</a></span></dt><dt><span class="section"><a href="boot/swagger/springboot.knife4j.html#id1106">45.2.3. application.properties</a></span></dt></dl></dd><dt><span class="section"><a href="boot/swagger/springfox.html">45.3. springfox</a></span></dt><dd><dl><dt><span class="section"><a href="boot/swagger/springfox.html#id1107">45.3.1. Swagger3</a></span></dt><dt><span class="section"><a href="boot/swagger/springfox.html#id1112">45.3.2. Swagger2</a></span></dt><dt><span class="section"><a href="boot/swagger/springfox.html#swagger.@Api">45.3.3. @Api() 资源定义</a></span></dt><dt><span class="section"><a href="boot/swagger/springfox.html#swagger.@ApiIgnore">45.3.4. @ApiIgnore 忽律接口</a></span></dt><dt><span class="section"><a href="boot/swagger/springfox.html#id1114">45.3.5. @ApiOperation()</a></span></dt><dt><span class="section"><a href="boot/swagger/springfox.html#id1115">45.3.6. @ApiResponses</a></span></dt><dt><span class="section"><a href="boot/swagger/springfox.html#id1116">45.3.7. @ApiModel 实体类</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/lombok.html">46. Spring boot with lombok</a></span></dt><dd><dl><dt><span class="section"><a href="boot/lombok.html#id1117">46.1. @Builder</a></span></dt><dt><span class="section"><a href="boot/ch46s02.html">46.2. @Slf4j 注解</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/docker/index.html">47. Spring boot with Container</a></span></dt><dd><dl><dt><span class="section"><a href="boot/docker/index.html#springboot.docker">47.1. Spring boot with Docker</a></span></dt><dd><dl><dt><span class="section"><a href="boot/docker/index.html#id1123">47.1.1. 通过 Docker 命令构建镜像</a></span></dt><dt><span class="section"><a href="boot/docker/index.html#id1128">47.1.2. 通过 Maven 构建 Docker 镜像</a></span></dt><dt><span class="section"><a href="boot/docker/index.html#id1129">47.1.3. [ERROR] No plugin found for prefix 'dockerfile' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/Users/neo/.m2/repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1]</a></span></dt><dt><span class="section"><a href="boot/docker/index.html#id1130">47.1.4. curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:8888</a></span></dt></dl></dd><dt><span class="section"><a href="boot/docker/spring-boot.docker-stack.html">47.2. Spring boot with Docker stack</a></span></dt><dd><dl><dt><span class="section"><a href="boot/docker/spring-boot.docker-stack.html#id1131">47.2.1. 编译 Docker 镜像</a></span></dt><dt><span class="section"><a href="boot/docker/spring-boot.docker-stack.html#id1132">47.2.2. </a></span></dt></dl></dd><dt><span class="section"><a href="boot/docker/springboot.kubernetes.html">47.3. Spring boot with Kubernetes</a></span></dt><dd><dl><dt><span class="section"><a href="boot/docker/springboot.kubernetes.html#id1133">47.3.1. Kubernetes 编排脚本</a></span></dt><dt><span class="section"><a href="boot/docker/springboot.kubernetes.html#id1134">47.3.2. 部署镜像</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/index.html">48. Spring boot with command line</a></span></dt><dd><dl><dt><span class="section"><a href="boot/index.html#id1135">48.1. Maven</a></span></dt><dt><span class="section"><a href="boot/spring.command.argv.html">48.2. CommandLineRunner 例子</a></span></dt><dt><span class="section"><a href="boot/ch48s03.html">48.3. ApplicationRunner 例子</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/actuator/index.html">49. Spring Boot Actuator</a></span></dt><dd><dl><dt><span class="section"><a href="boot/actuator/index.html#id1136">49.1. Maven 依赖</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.config.html">49.2. 与 Spring Boot Actuator 有关的配置</a></span></dt><dd><dl><dt><span class="section"><a href="boot/actuator/actuator.config.html#id1137">49.2.1. 禁用HTTP端点</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.config.html#id1138">49.2.2. 安全配置</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.config.html#actuator.path">49.2.3. 修改 actuator 地址</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.config.html#id1139">49.2.4. 关机</a></span></dt></dl></dd><dt><span class="section"><a href="boot/actuator/actuator.address.html">49.3. actuator 接口</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.health.html">49.4. 健康状态</a></span></dt><dd><dl><dt><span class="section"><a href="boot/actuator/actuator.health.html#id1140">49.4.1. 健康状态</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.health.html#actuator.health.custom">49.4.2. 自定义健康检查</a></span></dt></dl></dd><dt><span class="section"><a href="boot/actuator/actuator.info.html">49.5. info 配置信息</a></span></dt><dd><dl><dt><span class="section"><a href="boot/actuator/actuator.info.html#id1143">49.5.1. application.properties 配置静态信息</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.info.html#id1144">49.5.2. 动态信息</a></span></dt></dl></dd><dt><span class="section"><a href="boot/actuator/actuator.beans.html">49.6. beans 信息</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.caches.html">49.7. caches</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.conditions.html">49.8. conditions</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.configprops.html">49.9. configprops 配置文件</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.env.html">49.10. env 环境变量</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.logfile.html">49.11. logfile 日志</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.threaddump.html">49.12. threaddump 线程信息</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.scheduledtasks.html">49.13. 计划任务</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.metrics.html">49.14. metrics</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.mappings.html">49.15. 控制器映射 URL</a></span></dt><dt><span class="section"><a href="boot/actuator/actuator.endpoint.html">49.16. 自定义监控指标</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/test/index.html">50. SpringBootTest</a></span></dt><dd><dl><dt><span class="section"><a href="boot/test/index.html#springboot.test.maven">50.1. Maven 依赖</a></span></dt><dt><span class="section"><a href="boot/test/test.class.html">50.2. 测试类</a></span></dt><dd><dl><dt><span class="section"><a href="boot/test/test.class.html#spring.boot.test">50.2.1. Junit基本注解介绍</a></span></dt></dl></dd><dt><span class="section"><a href="boot/test/Assert.html">50.3. </a></span></dt><dd><dl><dt><span class="section"><a href="boot/test/Assert.html#Assert.assertEquals">50.3.1. Assert.assertEquals 判断相等</a></span></dt><dt><span class="section"><a href="boot/test/Assert.html#Assert.assertTrue">50.3.2. Assert.assertTrue</a></span></dt></dl></dd><dt><span class="section"><a href="boot/test/ch50s04.html">50.4. JPA 测试</a></span></dt><dt><span class="section"><a href="boot/test/ch50s05.html">50.5. TestRestTemplate</a></span></dt><dt><span class="section"><a href="boot/test/MockMvc.html">50.6. Controller单元测试</a></span></dt><dt><span class="section"><a href="boot/test/WebTestClient.html">50.7. WebTestClient</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/spring.aop.html">51. Spring boot with Aop</a></span></dt><dd><dl><dt><span class="section"><a href="boot/spring.aop.html#Aspect">51.1. Aspect</a></span></dt><dd><dl><dt><span class="section"><a href="boot/spring.aop.html#id1145">51.1.1. Maven</a></span></dt><dt><span class="section"><a href="boot/spring.aop.html#id1146">51.1.2. Pojo 类</a></span></dt><dt><span class="section"><a href="boot/spring.aop.html#id1147">51.1.3. Service 类</a></span></dt><dt><span class="section"><a href="boot/spring.aop.html#id1148">51.1.4. Aspect 类</a></span></dt><dt><span class="section"><a href="boot/spring.aop.html#id1149">51.1.5. 控制器</a></span></dt><dt><span class="section"><a href="boot/spring.aop.html#id1150">51.1.6. Application</a></span></dt><dt><span class="section"><a href="boot/spring.aop.html#id1151">51.1.7. 测试</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/springboot.starter.html">52. Spring boot with starter</a></span></dt><dd><dl><dt><span class="section"><a href="boot/springboot.starter.html#id1156">52.1. 实现 starter</a></span></dt><dd><dl><dt><span class="section"><a href="boot/springboot.starter.html#id1152">52.1.1. Maven pom.xml 依赖包</a></span></dt><dt><span class="section"><a href="boot/springboot.starter.html#id1153">52.1.2. 配置文件处理</a></span></dt><dt><span class="section"><a href="boot/springboot.starter.html#id1154">52.1.3. 自动配置文件</a></span></dt><dt><span class="section"><a href="boot/springboot.starter.html#id1155">52.1.4. 启用 starter 的自定义注解</a></span></dt></dl></dd><dt><span class="section"><a href="boot/ch52s02.html">52.2. 引用 starter</a></span></dt><dd><dl><dt><span class="section"><a href="boot/ch52s02.html#id1157">52.2.1. Maven pom.xml 引入依赖</a></span></dt><dt><span class="section"><a href="boot/ch52s02.html#id1158">52.2.2. 通过注解配置 starter</a></span></dt><dt><span class="section"><a href="boot/ch52s02.html#id1159">52.2.3. 测试运行结果</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/monitor/index.html">53. Spring boot with Monitor</a></span></dt><dd><dl><dt><span class="section"><a href="boot/monitor/index.html#springboot.grafana">53.1. Spring boot with Grafana</a></span></dt><dd><dl><dt><span class="section"><a href="boot/monitor/index.html#id1160">53.1.1. Springboot 集成 InfluxDB</a></span></dt><dt><span class="section"><a href="boot/monitor/index.html#id1161">53.1.2. InfluxDB</a></span></dt></dl></dd><dt><span class="section"><a href="boot/monitor/springboot.prometheus.html">53.2. Spring Boot with Prometheus</a></span></dt><dd><dl><dt><span class="section"><a href="boot/monitor/springboot.prometheus.html#id1162">53.2.1. Maven 依赖</a></span></dt><dt><span class="section"><a href="boot/monitor/springboot.prometheus.html#id1163">53.2.2. application.properties 配置文件</a></span></dt><dt><span class="section"><a href="boot/monitor/springboot.prometheus.html#id1164">53.2.3. 启动类</a></span></dt><dt><span class="section"><a href="boot/monitor/springboot.prometheus.html#id1165">53.2.4. 测试</a></span></dt><dt><span class="section"><a href="boot/monitor/springboot.prometheus.html#id1166">53.2.5. 控制器监控</a></span></dt><dt><span class="section"><a href="boot/monitor/springboot.prometheus.html#id1171">53.2.6. 自定义埋点监控</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/git/index.html">55. Spring boot with Git version</a></span></dt><dd><dl><dt><span class="section"><a href="boot/git/index.html#id1172">55.1. CommonRestController 公共控制器</a></span></dt><dt><span class="section"><a href="boot/git/ch55s02.html">55.2. VersionRestController 测试控制器</a></span></dt><dt><span class="section"><a href="boot/git/ch55s03.html">55.3. 创建 .gitattributes 文件</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/session/index.html">56. Spring boot with Session share</a></span></dt><dd><dl><dt><span class="section"><a href="boot/session/index.html#id1176">56.1. Redis</a></span></dt><dd><dl><dt><span class="section"><a href="boot/session/index.html#id1173">56.1.1. Maven</a></span></dt><dt><span class="section"><a href="boot/session/index.html#id1174">56.1.2. application.properties</a></span></dt><dt><span class="section"><a href="boot/session/index.html#id1175">56.1.3. Application</a></span></dt></dl></dd><dt><span class="section"><a href="boot/session/ch56s02.html">56.2. 测试 Session</a></span></dt><dt><span class="section"><a href="boot/session/ch56s03.html">56.3. JDBC</a></span></dt><dt><span class="section"><a href="boot/session/ch56s04.html">56.4. Springboot 2.1</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/cache/index.html">57. Spring boot with Caching</a></span></dt><dd><dl><dt><span class="section"><a href="boot/cache/index.html#id1178">57.1. maven</a></span></dt><dd><dl><dt><span class="section"><a href="boot/cache/index.html#id1177">57.1.1. Redis</a></span></dt></dl></dd><dt><span class="section"><a href="boot/cache/@EnableCaching.html">57.2. 启用缓存 @EnableCaching</a></span></dt><dt><span class="section"><a href="boot/cache/@Cacheable.html">57.3. 设置缓存 @Cacheable</a></span></dt><dd><dl><dt><span class="section"><a href="boot/cache/@Cacheable.html#id1179">57.3.1. 多参数处理</a></span></dt><dt><span class="section"><a href="boot/cache/@Cacheable.html#id1180">57.3.2. 对象参数</a></span></dt><dt><span class="section"><a href="boot/cache/@Cacheable.html#id1181">57.3.3. </a></span></dt><dt><span class="section"><a href="boot/cache/@Cacheable.html#id1182">57.3.4. 参数索引</a></span></dt><dt><span class="section"><a href="boot/cache/@Cacheable.html#id1183">57.3.5. 自动生成 key</a></span></dt><dt><span class="section"><a href="boot/cache/@Cacheable.html#id1184">57.3.6. SpEL表达式</a></span></dt><dt><span class="section"><a href="boot/cache/@Cacheable.html#id1185">57.3.7. 排除 null 结果</a></span></dt><dt><span class="section"><a href="boot/cache/@Cacheable.html#result.empty">57.3.8. 排除 empty</a></span></dt></dl></dd><dt><span class="section"><a href="boot/cache/@CachePut.html">57.4. 更新缓存 @CachePut</a></span></dt><dt><span class="section"><a href="boot/cache/@CacheEvict.html">57.5. 删除缓存 @CacheEvict</a></span></dt><dt><span class="section"><a href="boot/cache/@Caching.html">57.6. 组合操作 @Caching</a></span></dt><dt><span class="section"><a href="boot/cache/ch57s07.html">57.7. 序列化</a></span></dt><dt><span class="section"><a href="boot/cache/解决Expire 和 TTL 过期时间.html">57.8. 解决Expire 和 TTL 过期时间</a></span></dt><dt><span class="section"><a href="boot/cache/cache.serializer.html">57.9. Cannot serialize</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/email/index.html">58. Spring boot with Email</a></span></dt><dd><dl><dt><span class="section"><a href="boot/email/index.html#jakarta.mail">58.1. jakarta.mail</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.html">58.2. spring-boot-starter-mail</a></span></dt><dd><dl><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.html#id1186">58.2.1. Maven</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.html#id1187">58.2.2. Resource</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.html#id1188">58.2.3. POJO</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.html#id1189">58.2.4. RestController</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.html#id1190">58.2.5. Test</a></span></dt></dl></dd><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.detail.html">58.3. 用法详解</a></span></dt><dd><dl><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.detail.html#id1191">58.3.1. 开启 DEBUG</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.detail.html#id1192">58.3.2. SMTP SSL 配置</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.detail.html#id1193">58.3.3. SMTP TLS 配置</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.detail.html#id1194">58.3.4. 发送文本邮件</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.detail.html#id1195">58.3.5. 发送HTML邮件</a></span></dt><dt><span class="section"><a href="boot/email/spring-boot-starter-mail.detail.html#id1196">58.3.6. 发送带附件的邮件</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/hessian/index.html">59. Spring boot with Hessian</a></span></dt><dd><dl><dt><span class="section"><a href="boot/hessian/index.html#id1197">59.1. Maven</a></span></dt><dt><span class="section"><a href="boot/hessian/ch59s02.html">59.2. Application</a></span></dt><dt><span class="section"><a href="boot/hessian/ch59s03.html">59.3. HessianServiceExporter</a></span></dt><dt><span class="section"><a href="boot/hessian/ch59s04.html">59.4. Service</a></span></dt><dt><span class="section"><a href="boot/hessian/ch59s05.html">59.5. RestController</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/async/index.html">60. Spring boot with Async</a></span></dt><dd><dl><dt><span class="section"><a href="boot/async/index.html#Callable">60.1. Callable 实现异步</a></span></dt><dt><span class="section"><a href="boot/async/WebAsyncTask.html">60.2. WebAsyncTask 实现异步</a></span></dt><dt><span class="section"><a href="boot/async/DeferredResult.html">60.3. DeferredResult 实现异步返回结果</a></span></dt><dt><span class="section"><a href="boot/async/ch60s04.html">60.4. 带有返回值的异步任务</a></span></dt><dd><dl><dt><span class="section"><a href="boot/async/ch60s04.html#id1198">60.4.1. Future</a></span></dt><dt><span class="section"><a href="boot/async/ch60s04.html#id1199">60.4.2. CompletableFuture</a></span></dt></dl></dd><dt><span class="section"><a href="boot/async/SimpleAsyncTaskExecutor.html">60.5. 默认简单线程池 SimpleAsyncTaskExecutor</a></span></dt><dd><dl><dt><span class="section"><a href="boot/async/SimpleAsyncTaskExecutor.html#id1200">60.5.1. 配置线程池</a></span></dt><dt><span class="section"><a href="boot/async/SimpleAsyncTaskExecutor.html#id1201">60.5.2. @Service/@Component 中异步执行</a></span></dt><dt><span class="section"><a href="boot/async/SimpleAsyncTaskExecutor.html#id1202">60.5.3. applicationTaskExecutor</a></span></dt></dl></dd><dt><span class="section"><a href="boot/async/ThreadPoolTaskExecutor.html">60.6. ThreadPoolTaskExecutor 自定义线程池</a></span></dt><dd><dl><dt><span class="section"><a href="boot/async/ThreadPoolTaskExecutor.html#简单异步执行">60.6.1. 最简单的配置</a></span></dt><dt><span class="section"><a href="boot/async/ThreadPoolTaskExecutor.html#id1203">60.6.2. 队列</a></span></dt><dt><span class="section"><a href="boot/async/ThreadPoolTaskExecutor.html#id1204">60.6.3. 定义多个线程池</a></span></dt><dt><span class="section"><a href="boot/async/ThreadPoolTaskExecutor.html#id1205">60.6.4. 实现 AsyncConfigurer 接口方式创建自定义连接池</a></span></dt><dt><span class="section"><a href="boot/async/ThreadPoolTaskExecutor.html#id1206">60.6.5. 继承 AsyncConfigurerSupport 创建自定义连接池 </a></span></dt><dt><span class="section"><a href="boot/async/ThreadPoolTaskExecutor.html#id1207">60.6.6. 生产环境完整代码 @Bean 注入方式</a></span></dt><dt><span class="section"><a href="boot/async/ThreadPoolTaskExecutor.html#id1208">60.6.7. 通过 @Bean 覆盖掉 SimpleAsyncTaskExecutor</a></span></dt></dl></dd><dt><span class="section"><a href="boot/async/ThreadPoolExecutor.html">60.7. 自定义线程池 ThreadPoolExecutor</a></span></dt><dd><dl><dt><span class="section"><a href="boot/async/ThreadPoolExecutor.html#id1209">60.7.1. ThreadPoolExecutor</a></span></dt><dt><span class="section"><a href="boot/async/ThreadPoolExecutor.html#id1210">60.7.2. 注入自定义线程池bean</a></span></dt></dl></dd><dt><span class="section"><a href="boot/async/ch60s08.html">60.8. 设置线程名称</a></span></dt><dt><span class="section"><a href="boot/async/ch60s09.html">60.9. 线程池监控</a></span></dt><dt><span class="section"><a href="boot/async/ch60s10.html">60.10. 注意事项</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/web3j.html">61. Springboot with Ethereum (web3j)</a></span></dt><dd><dl><dt><span class="section"><a href="boot/web3j.html#id1211">61.1. Maven</a></span></dt><dt><span class="section"><a href="boot/web3j.springboot.application.properties.html">61.2. application.properties</a></span></dt><dt><span class="section"><a href="boot/ch61s03.html">61.3. TestRestController</a></span></dt><dt><span class="section"><a href="boot/ch61s04.html">61.4. 测试</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/record/index.html">62. Java Record 新特性</a></span></dt><dd><dl><dt><span class="section"><a href="boot/record/index.html#id1212">62.1. Record 替代 POJO 类</a></span></dt><dt><span class="section"><a href="boot/record/ch62s02.html">62.2. Record 作为 Properties</a></span></dt><dt><span class="section"><a href="boot/record/ch62s03.html">62.3. Record 作为实体类</a></span></dt><dt><span class="section"><a href="boot/record/ch62s04.html">62.4. Record 作为 Service</a></span></dt><dt><span class="section"><a href="boot/record/spring.boot.record.html">62.5. Record 作为 Controller</a></span></dt></dl></dd><dt><span class="chapter"><a href="boot/Retryable.html">63. Spring boot with Retryable</a></span></dt><dd><dl><dt><span class="section"><a href="boot/Retryable.html#spring.EnableResilientMethods">63.1. @EnableResilientMethods</a></span></dt><dd><dl><dt><span class="section"><a href="boot/Retryable.html#spring.ConcurrencyLimit">63.1.1. @ConcurrencyLimit 限流</a></span></dt><dt><span class="section"><a href="boot/Retryable.html#spring.Retryable">63.1.2. @Retryable 重试</a></span></dt></dl></dd><dt><span class="section"><a href="boot/ch63s02.html">63.2. spring-retry</a></span></dt><dd><dl><dt><span class="section"><a href="boot/ch63s02.html#id1213">63.2.1. spring-retry 依赖</a></span></dt><dt><span class="section"><a href="boot/ch63s02.html#id1214">63.2.2. @EnableRetry 启用重试</a></span></dt><dt><span class="section"><a href="boot/ch63s02.html#id1215">63.2.3. </a></span></dt><dt><span class="section"><a href="boot/ch63s02.html#id1216">63.2.4. 高级用法</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="boot/.html">64. Spring Boot 4 + OpenTelemetry</a></span></dt><dd><dl><dt><span class="section"><a href="boot/.html#id1217">64.1. 依赖配置</a></span></dt><dt><span class="section"><a href="boot/ch64s02.html">64.2. 定义 Span</a></span></dt><dt><span class="section"><a href="boot/ch64s03.html">64.3. 日志追踪</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="framework/index.html">V. Spring Framework</a></span></dt><dd><dl><dt><span class="chapter"><a href="framework/framework.html">65. Spring 框架</a></span></dt><dd><dl><dt><span class="section"><a href="framework/framework.html#bean">65.1. @Bean</a></span></dt><dd><dl><dt><span class="section"><a href="framework/framework.html#id1218">65.1.1. @Scope 定义类型</a></span></dt><dt><span class="section"><a href="framework/framework.html#id1219">65.1.2. InitializingBean</a></span></dt></dl></dd><dt><span class="section"><a href="framework/UriComponents.html">65.2. URL 拼装/解析</a></span></dt><dt><span class="section"><a href="framework/ServletUriComponentsBuilder.html">65.3. ServletUriComponentsBuilder</a></span></dt><dt><span class="section"><a href="framework/PathPattern.html">65.4. URL 路径相关</a></span></dt><dt><span class="section"><a href="framework/HttpExchange.html">65.5. 声明式 HTTP 客户端 HttpExchange</a></span></dt><dd><dl><dt><span class="section"><a href="framework/HttpExchange.html#id1220">65.5.1. 支持的注解类型</a></span></dt><dt><span class="section"><a href="framework/HttpExchange.html#id1221">65.5.2. RestClient 例子</a></span></dt><dt><span class="section"><a href="framework/HttpExchange.html#id1222">65.5.3. HTTP 头设置</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="framework/mvc/index.html">66. Spring MVC</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/index.html#@EnableWebMvc">66.1. @EnableWebMvc</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/index.html#id1223">66.1.1. @PostConstruct</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/Controller.html">66.2. @Controller</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/Controller.html#@RequestMapping">66.2.1. @RequestMapping</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@GetMapping">66.2.2. @GetMapping</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@PostMapping">66.2.3. @PostMapping</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@RequestBody">66.2.4. @RequestBody</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@RequestParam">66.2.5. RequestMapping with Request Parameters - @RequestParam</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@RequestHeader">66.2.6. @RequestHeader - 获取 HTTP Header 信息</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@PathVariable">66.2.7. RequestMapping with Path Variables - @PathVariable</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@MatrixVariable">66.2.8. @MatrixVariable注解,RFC3986定义URI的路径(Path)中可包含name-value片段</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@ModelAttribute">66.2.9. @ModelAttribute</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@ResponseBody">66.2.10. @ResponseBody</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@ResponseStatus">66.2.11. @ResponseStatus 设置 HTTP 状态</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@CrossOrigin">66.2.12. @CrossOrigin</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@CookieValue">66.2.13. @CookieValue - 获取 Cookie 值</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#@SessionAttributes">66.2.14. @SessionAttributes</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#ModelAndView">66.2.15. ModelAndView</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#HttpServletResponse">66.2.16. HttpServletResponse</a></span></dt><dt><span class="section"><a href="framework/mvc/Controller.html#HttpServletRequest">66.2.17. HttpServletRequest</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/RestController.html">66.3. @RestController</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/RestController.html#id1258">66.3.1. 接口设计中 URL 参数,FORM 参数,JSON 怎么选择</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#id1259">66.3.2. 返回迭代器</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#id1260">66.3.3. 上传文件</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#id1261">66.3.4. 返回实体</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#id1262">66.3.5. JSON</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#restfull.raw.json">66.3.6. 处理原始 RAW JSON 数据</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#json.null">66.3.7. 返回 JSON 对象 NULL 专为 "" 字符串</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#restful.xml">66.3.8. XML</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#restful.json">66.3.9. 兼容传统 json 接口</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#restful.upload">66.3.10. 上传文件</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#restful.download">66.3.11. 下载文件</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#id1263">66.3.12. Mime/MediaType</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#export.csv">66.3.13. Spring boot with csv</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#json">66.3.14. Json 处理</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#rest.synchronized">66.3.15. synchronized</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#spring.Emitter">66.3.16. Spring boot with Emitter</a></span></dt><dt><span class="section"><a href="framework/mvc/RestController.html#id1279">66.3.17. forward 转发</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/ch66s04.html">66.4. Springboot 4.0</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/ch66s04.html#id1280">66.4.1. Api 版本控制</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/view.html">66.5. View</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/view.html#id1281">66.5.1. 配置静态文件目录</a></span></dt><dt><span class="section"><a href="framework/mvc/view.html#id1282">66.5.2. 添加静态文件目录</a></span></dt><dt><span class="section"><a href="framework/mvc/view.html#tag">66.5.3. Using Spring’s form tag library</a></span></dt><dt><span class="section"><a href="framework/mvc/view.html#thymeleaf">66.5.4. Thymeleaf</a></span></dt><dt><span class="section"><a href="framework/mvc/view.html#freemarker">66.5.5. FreeMarker</a></span></dt><dt><span class="section"><a href="framework/mvc/view.html#spring.mvc.i18n">66.5.6. i18n 国际化</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/jsp/index.html">66.6. Spring boot with Webpage</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/jsp/index.html#id1296">66.6.1. Maven</a></span></dt><dt><span class="section"><a href="framework/mvc/jsp/index.html#id1297">66.6.2. application.properties</a></span></dt><dt><span class="section"><a href="framework/mvc/jsp/index.html#id1298">66.6.3. Application</a></span></dt><dt><span class="section"><a href="framework/mvc/jsp/index.html#id1299">66.6.4. IndexController</a></span></dt><dt><span class="section"><a href="framework/mvc/jsp/index.html#id1300">66.6.5. src/main/webapp/WEB-INF/jsp/index.jsp</a></span></dt><dt><span class="section"><a href="framework/mvc/jsp/index.html#id1301">66.6.6. 集成模板引擎</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/velocity/index.html">66.7. Spring boot with Velocity template</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/velocity/index.html#id1302">66.7.1. Maven</a></span></dt><dt><span class="section"><a href="framework/mvc/velocity/index.html#id1303">66.7.2. Resource</a></span></dt><dt><span class="section"><a href="framework/mvc/velocity/index.html#id1304">66.7.3. Application</a></span></dt><dt><span class="section"><a href="framework/mvc/velocity/index.html#id1305">66.7.4. RestController</a></span></dt><dt><span class="section"><a href="framework/mvc/velocity/index.html#id1306">66.7.5. Test</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/thymeleaf/index.html">66.8. Spring boot with Thymeleaf</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/thymeleaf/index.html#thymeleaf.maven">66.8.1. Maven</a></span></dt><dt><span class="section"><a href="framework/mvc/thymeleaf/index.html#thymeleaf.application.properties">66.8.2. application.properties</a></span></dt><dt><span class="section"><a href="framework/mvc/thymeleaf/index.html#thymeleaf.controller">66.8.3. Controller</a></span></dt><dt><span class="section"><a href="framework/mvc/thymeleaf/index.html#thymeleaf.template">66.8.4. HTML5 Template</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/validation.html">66.9. 校验器(Validator)</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/validation.html#id1307">66.9.1. 依赖</a></span></dt><dt><span class="section"><a href="framework/mvc/validation.html#id1311">66.9.2. 常规用法</a></span></dt><dt><span class="section"><a href="framework/mvc/validation.html#id1314">66.9.3. 常用注解</a></span></dt><dt><span class="section"><a href="framework/mvc/validation.html#id1315">66.9.4. 在 Service 中使用 Validator 检查数据</a></span></dt><dt><span class="section"><a href="framework/mvc/validation.html#id1320">66.9.5. 自定义注解</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/interceptor.html">66.10. Interceptor/Filter 拦截器/过滤</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/interceptor.html#interceptor.session">66.10.1. Session 拦截</a></span></dt><dt><span class="section"><a href="framework/mvc/interceptor.html#interceptor.token">66.10.2. Token 拦截</a></span></dt><dt><span class="section"><a href="framework/mvc/interceptor.html#Authorization.Bearer">66.10.3. Authorization Bearer</a></span></dt><dt><span class="section"><a href="framework/mvc/interceptor.html#Filter">66.10.4. 过滤器</a></span></dt><dt><span class="section"><a href="framework/mvc/interceptor.html#URI_TEMPLATE_VARIABLES_ATTRIBUTE">66.10.5. 拦截器获取PathVariable变量</a></span></dt><dt><span class="section"><a href="framework/mvc/interceptor.html#webmvc.WebMvcConfigurer">66.10.6. WebMvcConfigurer 拦截</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html">66.11. String boot with RestTemplate</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#restTemplate.example">66.11.1. RestTemplate Example</a></span></dt><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#restTemplate.getForObject">66.11.2. GET 操作</a></span></dt><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#restTemplate.postForObject">66.11.3. POST 操作</a></span></dt><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#restTemplate.put">66.11.4. PUT 操作</a></span></dt><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#restTemplate.delete">66.11.5. Delete 操作</a></span></dt><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#restTemplate.exchange">66.11.6. 上传文件</a></span></dt><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#RestTemplate.auth">66.11.7. HTTP Auth</a></span></dt><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#RestTemplate.double.auth">66.11.8. PKCS12</a></span></dt><dt><span class="section"><a href="framework/mvc/RestTemplate/index.html#RestTemplate.timeout">66.11.9. Timeout 超时设置</a></span></dt></dl></dd><dt><span class="section"><a href="framework/mvc/RestClient.html">66.12. RestClient</a></span></dt><dd><dl><dt><span class="section"><a href="framework/mvc/RestClient.html#RestClient.Bean">66.12.1. 创建 RestClient</a></span></dt><dt><span class="section"><a href="framework/mvc/RestClient.html#RestClient.get">66.12.2. Get 操作</a></span></dt><dt><span class="section"><a href="framework/mvc/RestClient.html#RestClient.post">66.12.3. Post Json</a></span></dt><dt><span class="section"><a href="framework/mvc/RestClient.html#RestClient.auth">66.12.4. HTTP Authorization Basic</a></span></dt><dt><span class="section"><a href="framework/mvc/RestClient.html#RestClient.onStatus">66.12.5. onStatus</a></span></dt><dt><span class="section"><a href="framework/mvc/RestClient.html#RestClient.Timeout">66.12.6. Timeout 超时设置</a></span></dt><dt><span class="section"><a href="framework/mvc/RestClient.html#RestClient.bytes">66.12.7. 下载二进制流</a></span></dt><dt><span class="section"><a href="framework/mvc/RestClient.html#RestClient.upload">66.12.8. 上传文件</a></span></dt><dt><span class="section"><a href="framework/mvc/RestClient.html#id1331">66.12.9. Springboot 4.0 Version 版本号</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="framework/webflux/webflux.html">68. WebFlux framework</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/webflux.html#webflux.helloworld">68.1. Getting Started</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/webflux.html#id1332">68.1.1. Maven</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.html#id1333">68.1.2. Application</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.html#id1334">68.1.3. RestController</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.html#id1335">68.1.4. 测试</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/WebFlux.VS.SprintMVC.html">68.2. WebFlux 与 SprintMVC 有什么不同?</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/WebFlux.VS.SprintMVC.html#id1336">68.2.1. 实验程序</a></span></dt><dt><span class="section"><a href="framework/webflux/WebFlux.VS.SprintMVC.html#id1337">68.2.2. 实验结果</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/webflux.router.html">68.3. WebFlux Router</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/webflux.router.html#router.component">68.3.1. Component 原件</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.router.html#router.config">68.3.2. 路由配置</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html">68.4. RestController</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#id1338">68.4.1. Post 数据</a></span></dt><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#webflux.Thymeleaf">68.4.2. Thymeleaf</a></span></dt><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#webflux.mono">68.4.3. Mono</a></span></dt><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#webflux.flux">68.4.4. Flux 返回多条数据</a></span></dt><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#webflux.sse">68.4.5. SSE</a></span></dt><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#concatWithValues">68.4.6. 末尾连接字符串 </a></span></dt><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#Flux.scan">68.4.7. Flux scan</a></span></dt><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#ConnectableFlux">68.4.8. ConnectableFlux</a></span></dt><dt><span class="section"><a href="framework/webflux/Webflux.RestController.html#id1376">68.4.9. 上传文件并保存</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/webflux.NDJSON.html">68.5. Newline Delimited JSON (NDJSON) </a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html">68.6. WebClient</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webflux.config">68.6.1. 配置 WebClient</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.controller">68.6.2. @Controller/@RestController 实例</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.get">68.6.3. Get 请求实例</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.uri">68.6.4. URI 参数</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.query">68.6.5. 查询参数</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.post">68.6.6. Post 操作演示</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.post.form">68.6.7. Post 表单数据</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.post.multipart">68.6.8. 上传文件</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.header">68.6.9. 设置 HTTP 头</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.block">68.6.10. 同步阻塞等待返回结果</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.websocket">68.6.11. websocket</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.httpstatus">68.6.12. 获取 HTTP 链接状态</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.auth">68.6.13. Http Base Authentication - 401 Unauthorized</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.sse">68.6.14. SSE(Server-Sent Events)</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.timeout">68.6.15. 超时时间</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.share">68.6.16. share() 共享订阅数据</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.log">68.6.17. 打印调试日志</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.uri">68.6.18. 解决 WebClient 截断 URI的问题</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.webclient.html#webclient.error">68.6.19. 异常处理</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/ch68s07.html">68.7. Webflux 安全</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/ch68s07.html#webflux.webfilter">68.7.1. Token 拦截器</a></span></dt><dt><span class="section"><a href="framework/webflux/ch68s07.html#webflux.jwt">68.7.2. JWT</a></span></dt><dt><span class="section"><a href="framework/webflux/ch68s07.html#webflux.security">68.7.3. spring-boot-starter-security</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/webflux.r2dbc.html">68.8. R2DBC</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/webflux.r2dbc.html#id1389">68.8.1. MySQL</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.r2dbc.html#R2dbcEntityTemplate">68.8.2. R2dbcEntityTemplate</a></span></dt><dt><span class="section"><a href="framework/webflux/webflux.r2dbc.html#id1390">68.8.3. MySQL Point 数据类型</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/redis-reactive.html">68.9. Webflux Redis</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/redis-reactive.html#id1391">68.9.1. Maven Redis 依赖</a></span></dt><dt><span class="section"><a href="framework/webflux/redis-reactive.html#id1392">68.9.2. Redis 配置</a></span></dt><dt><span class="section"><a href="framework/webflux/redis-reactive.html#id1393">68.9.3. Config</a></span></dt><dt><span class="section"><a href="framework/webflux/redis-reactive.html#id1394">68.9.4. Service</a></span></dt><dt><span class="section"><a href="framework/webflux/redis-reactive.html#id1395">68.9.5. RestController</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/mongodb-reactive.html">68.10. Webflux Mongdb</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/mongodb-reactive.html#id1396">68.10.1. Maven 依赖</a></span></dt><dt><span class="section"><a href="framework/webflux/mongodb-reactive.html#id1397">68.10.2. Repository</a></span></dt><dt><span class="section"><a href="framework/webflux/mongodb-reactive.html#id1398">68.10.3. Service</a></span></dt><dt><span class="section"><a href="framework/webflux/mongodb-reactive.html#id1399">68.10.4. 控制器</a></span></dt></dl></dd><dt><span class="section"><a href="framework/webflux/ch68s11.html">68.11. 常见问题</a></span></dt><dd><dl><dt><span class="section"><a href="framework/webflux/ch68s11.html#id1400">68.11.1. The Java/XML config for Spring MVC and Spring WebFlux cannot
both be enabled, e.g. via @EnableWebMvc and @EnableWebFlux, in the
same application.
</a></span></dt><dt><span class="section"><a href="framework/webflux/ch68s11.html#id1401">68.11.2. @EnableWebFluxSecurity 与 @EnableReactiveMethodSecurity 不生效
</a></span></dt><dt><span class="section"><a href="framework/webflux/ch68s11.html#id1402">68.11.3. webflux netty 不支持 Content-Type: application/x-www-form-urlencoded</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="framework/service/index.html">69. Service</a></span></dt><dd><dl><dt><span class="section"><a href="framework/service/index.html#service.ComponentScan">69.1. Application</a></span></dt><dt><span class="section"><a href="framework/service/service.interface.html">69.2. 定义接口</a></span></dt><dt><span class="section"><a href="framework/service/service.implements.html">69.3. 实现接口</a></span></dt><dt><span class="section"><a href="framework/service/service.autowired.html">69.4. 调用 Service</a></span></dt><dt><span class="section"><a href="framework/service/service.context.getBean.html">69.5. context.getBean 调用 Service</a></span></dt><dt><span class="section"><a href="framework/service/AopContext.html">69.6. AopContext</a></span></dt><dt><span class="section"><a href="framework/service/service.singleton.html">69.7. Service 单例/多例模式</a></span></dt><dd><dl><dt><span class="section"><a href="framework/service/service.singleton.html#id1403">69.7.1. Service 是单例模式</a></span></dt><dt><span class="section"><a href="framework/service/service.singleton.html#id1404">69.7.2. Service 多例实现</a></span></dt></dl></dd><dt><span class="section"><a href="framework/service/ch69s08.html">69.8. 构造方法</a></span></dt></dl></dd><dt><span class="chapter"><a href="framework/tomcat/index.html">70. Tomcat Spring 运行环境</a></span></dt><dd><dl><dt><span class="section"><a href="framework/tomcat/index.html#spring.maven">70.1. Maven</a></span></dt><dt><span class="section"><a href="framework/tomcat/spring.xml.html">70.2. Spring MVC configuration</a></span></dt><dt><span class="section"><a href="framework/tomcat/tomcat.html">70.3. Tomcat</a></span></dt><dt><span class="section"><a href="framework/tomcat/mybatis.html">70.4. 集成 Mybatis</a></span></dt><dd><dl><dt><span class="section"><a href="framework/tomcat/mybatis.html#id1405">70.4.1. pom.xml</a></span></dt><dt><span class="section"><a href="framework/tomcat/mybatis.html#id1406">70.4.2. properties</a></span></dt><dt><span class="section"><a href="framework/tomcat/mybatis.html#id1407">70.4.3. dataSource</a></span></dt><dt><span class="section"><a href="framework/tomcat/mybatis.html#id1408">70.4.4. SqlSessionFactory</a></span></dt><dt><span class="section"><a href="framework/tomcat/mybatis.html#id1409">70.4.5. Mapper 扫描</a></span></dt><dt><span class="section"><a href="framework/tomcat/mybatis.html#id1410">70.4.6. Mapper 单一class映射</a></span></dt><dt><span class="section"><a href="framework/tomcat/mybatis.html#id1411">70.4.7. Service</a></span></dt><dt><span class="section"><a href="framework/tomcat/mybatis.html#id1412">70.4.8. 测试实例</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="data/index.html">VI. Spring Data</a></span></dt><dd><dl><dt><span class="chapter"><a href="data/EntityManager.html">71. EntityManager</a></span></dt><dt><span class="chapter"><a href="data/JdbcTemplate/index.html">72. Spring Data with JdbcTemplate</a></span></dt><dd><dl><dt><span class="section"><a href="data/JdbcTemplate/index.html#execute">72.1. execute</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForInt.html">72.2. queryForInt</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/jdbcTemplate.queryForLong.html">72.3. queryForLong</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForObject.html">72.4. queryForObject</a></span></dt><dd><dl><dt><span class="section"><a href="data/JdbcTemplate/queryForObject.html#id1413">72.4.1. 返回整形与字符型</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForObject.html#id1414">72.4.2. 查询 Double 类型数据库</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForObject.html#id1415">72.4.3. 返回日期</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForObject.html#id1416">72.4.4. 返回结果集</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForObject.html#id1417">72.4.5. 通过 "?" 向SQL传递参数</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForObject.html#id1418">72.4.6. RowMapper 记录映射</a></span></dt></dl></dd><dt><span class="section"><a href="data/JdbcTemplate/queryForList.html">72.5. queryForList</a></span></dt><dd><dl><dt><span class="section"><a href="data/JdbcTemplate/queryForList.html#id1419">72.5.1. Iterator 用法</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForList.html#id1420">72.5.2. for 循环</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/queryForList.html#id1421">72.5.3. forEach 用法</a></span></dt></dl></dd><dt><span class="section"><a href="data/JdbcTemplate/queryForMap.html">72.6. queryForMap</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/query.html">72.7. query</a></span></dt><dd><dl><dt><span class="section"><a href="data/JdbcTemplate/query.html#id1422">72.7.1. ResultSet</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/query.html#id1423">72.7.2. ResultSetExtractor</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/query.html#id1424">72.7.3. RowMapper</a></span></dt></dl></dd><dt><span class="section"><a href="data/JdbcTemplate/queryForRowSet.html">72.8. queryForRowSet</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/update.html">72.9. update</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/MapSqlParameterSource.html">72.10. MapSqlParameterSource</a></span></dt><dt><span class="section"><a href="data/JdbcTemplate/jdbc.example.html">72.11. 实例参考</a></span></dt><dd><dl><dt><span class="section"><a href="data/JdbcTemplate/jdbc.example.html#">72.11.1. 参数传递技巧</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="data/mysql/index.html">73. Spring Data with MySQL</a></span></dt><dd><dl><dt><span class="section"><a href="data/mysql/index.html#engine">73.1. 选择数据库表引擎</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html">73.2. 声明实体</a></span></dt><dd><dl><dt><span class="section"><a href="data/mysql/@Entity.html#id1425">73.2.1. @Entity 声明实体</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Table">73.2.2. @Table 定义表名</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Id">73.2.3. @Id 定义主键</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Column">73.2.4. @Column 定义字段:</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Transient">73.2.5. 非数据库字段</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Lob">73.2.6. @Lob 注解属性将被持久化为 Blog 或 Clob 类型</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@NotNull">73.2.7. @NotNull 不能为空声明</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Temporal">73.2.8. @Temporal 日期定义</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@CreateDate">73.2.9. 创建日期</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@DateTimeFormat">73.2.10. @DateTimeFormat 处理日期时间格式</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#enum">73.2.11. Enum 枚举数据类型</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#set">73.2.12. SET 数据结构</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#json">73.2.13. JSON 数据类型</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Embeddable">73.2.14. 嵌入</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@JsonIgnore">73.2.15. @JsonIgnore</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@EnableJpaAuditing">73.2.16. @EnableJpaAuditing 开启 JPA 审计功能</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Comment">73.2.17. 注释 @Comment</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#@Pattern">73.2.18. @Pattern 数据匹配</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#Inheritance">73.2.19. 实体继承</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#Column.GENERATED">73.2.20. 虚拟列</a></span></dt><dt><span class="section"><a href="data/mysql/@Entity.html#Entity.Locale">73.2.21. 语言区域</a></span></dt></dl></dd><dt><span class="section"><a href="data/mysql/@ElementCollection.html">73.3. 映射集合属性</a></span></dt><dd><dl><dt><span class="section"><a href="data/mysql/@ElementCollection.html#id1437">73.3.1. List 集合</a></span></dt><dt><span class="section"><a href="data/mysql/@ElementCollection.html#id1438">73.3.2. 数组集合</a></span></dt><dt><span class="section"><a href="data/mysql/@ElementCollection.html#id1439">73.3.3. Map 集合</a></span></dt><dt><span class="section"><a href="data/mysql/@ElementCollection.html#Set">73.3.4. Set 集合</a></span></dt><dt><span class="section"><a href="data/mysql/@ElementCollection.html#id1440">73.3.5. 外键名称</a></span></dt><dt><span class="section"><a href="data/mysql/@ElementCollection.html#id1441">73.3.6. 集合表子查询</a></span></dt></dl></dd><dt><span class="section"><a href="data/mysql/ForeignKey.html">73.4. 外键</a></span></dt><dd><dl><dt><span class="section"><a href="data/mysql/ForeignKey.html#JoinColumn">73.4.1. @JoinColumn</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#OneToOne">73.4.2. @OneToOne</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#OneToMany">73.4.3. OneToMany 一对多</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#ManyToMany">73.4.4. ManyToMany 多对多</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#orphanRemoval">73.4.5. 外键级联删除</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#CascadeType">73.4.6. 外键级联操作</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#@JoinTable">73.4.7. @JoinTable</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#@OrderBy">73.4.8. @OrderBy</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#@JsonIgnoreProperties">73.4.9. @JsonIgnoreProperties</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#id1449">73.4.10. 允许外键为 NULL</a></span></dt><dt><span class="section"><a href="data/mysql/ForeignKey.html#id1450">73.4.11. 只要外键,不要数据结构</a></span></dt></dl></dd><dt><span class="section"><a href="data/mysql/indexes.html">73.5. 索引</a></span></dt><dd><dl><dt><span class="section"><a href="data/mysql/indexes.html# @Index">73.5.1. 普通索引</a></span></dt><dt><span class="section"><a href="data/mysql/indexes.html#id1451">73.5.2. 组合索引</a></span></dt><dt><span class="section"><a href="data/mysql/indexes.html#unique">73.5.3. 唯一索引</a></span></dt></dl></dd><dt><span class="section"><a href="data/mysql/Repository.html">73.6. Repository/CrudRepository/PagingAndSortingRepository/JpaRepository
</a></span></dt><dd><dl><dt><span class="section"><a href="data/mysql/Repository.html#JpaRepository">73.6.1. JpaRepository</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#CrudRepository">73.6.2. CrudRepository</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#PagingAndSortingRepository">73.6.3. PagingAndSortingRepository</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#jpa.find">73.6.4. findByXXX</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#jpa.count">73.6.5. count 操作</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#jpa.delete">73.6.6. delete 删除操作</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#IsNull">73.6.7. IsNull</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#jpa.InNotIn">73.6.8. In/NotIn</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#find.true">73.6.9. TRUE / FALSE</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#find.GreaterThan">73.6.10. 比较数值大小</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#BeforeAfter">73.6.11. 判断日期和时间 Before / After</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#jpa.Between">73.6.12. Between</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#jpa.Exists">73.6.13. Exists</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#OrderBy">73.6.14. OrderBy</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#GreaterThan">73.6.15. GreaterThan</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#sort">73.6.16. Sort 排序操作操作</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#pageable">73.6.17. Pageable 翻页操作</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#@DynamicInsert">73.6.18. @DynamicInsert 与 @DynamicUpdate</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#id1462">73.6.19. 继承已存在的 Repository</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#JPA.Optional">73.6.20. Optional</a></span></dt><dt><span class="section"><a href="data/mysql/Repository.html#jpa.stream">73.6.21. stream 用法</a></span></dt></dl></dd><dt><span class="section"><a href="data/mysql/TransactionTemplate.html">73.7. TransactionTemplate</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html">73.8. JPQL @Query</a></span></dt><dd><dl><dt><span class="section"><a href="data/mysql/JPQL.html#@Modifying">73.8.1. @Modifying 更新/删除</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#@Param">73.8.2. 参数传递</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#Query.nativeQuery">73.8.3. 原生 SQL 操作</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#Pageagble">73.8.4. @Query 与 Pageagble</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#id1465">73.8.5. 自定义返回字段</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#返回指定字段">73.8.6. 返回指定字段</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#返回指定的模型">73.8.7. 返回指定的模型</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#通过定义接口返回指定字段">73.8.8. 通过定义接口,返回指定字段</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#id1469">73.8.9. 修改返回数据</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#@Transactional">73.8.10. 事务 @Transactional</a></span></dt><dt><span class="section"><a href="data/mysql/JPQL.html#jpql.in">73.8.11. IN / NOT 子查询</a></span></dt></dl></dd><dt><span class="section"><a href="data/mysql/jpa.mysql.faq.html">73.9. FAQ 常见问题</a></span></dt><dd><dl><dt><span class="section"><a href="data/mysql/jpa.mysql.faq.html#id1479">73.9.1. Could not write JSON: failed to lazily initialize a collection
of role
</a></span></dt><dt><span class="section"><a href="data/mysql/jpa.mysql.faq.html#id1480">73.9.2. Query did not return a unique result: 2 results were returned
</a></span></dt><dt><span class="section"><a href="data/mysql/jpa.mysql.faq.html#id1481">73.9.3. Executing an update/delete query</a></span></dt><dt><span class="section"><a href="data/mysql/jpa.mysql.faq.html#id1482">73.9.4. could not initialize proxy [cn.netkiller.domain.Device#16] -
no Session
</a></span></dt><dt><span class="section"><a href="data/mysql/jpa.mysql.faq.html#id1483">73.9.5. this is incompatible with sql_mode=only_full_group_by</a></span></dt><dt><span class="section"><a href="data/mysql/jpa.mysql.faq.html#id1484">73.9.6. A TupleBackedMap cannot be modified</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="data/redis/index.html">74. Spring Data with Redis</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/index.html#springdata.redis.exmaple">74.1. 集成 Redis XML 方式</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/index.html#id1485">74.1.1. pom.xml</a></span></dt><dt><span class="section"><a href="data/redis/index.html#id1486">74.1.2. springframework-servlet.xml</a></span></dt><dt><span class="section"><a href="data/redis/index.html#id1487">74.1.3. Controller</a></span></dt><dt><span class="section"><a href="data/redis/index.html#id1488">74.1.4. index.jsp</a></span></dt><dt><span class="section"><a href="data/redis/index.html#id1489">74.1.5. 测试</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/ch74s02.html">74.2. 通过构造方法实例化 Redis</a></span></dt><dt><span class="section"><a href="data/redis/StringRedisTemplate.html">74.3. StringRedisTemplate 基本用法</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/StringRedisTemplate.html#id1490">74.3.1. 存储数据</a></span></dt><dt><span class="section"><a href="data/redis/StringRedisTemplate.html#stringRedisTemplate.getAndDelete">74.3.2. 获取值并删除</a></span></dt><dt><span class="section"><a href="data/redis/StringRedisTemplate.html#id1491">74.3.3. 取出数据</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/RedisTemplate.html">74.4. RedisTemplate</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/RedisTemplate.html#redisTemplate.set.TimeUnit">74.4.1. 设置缓存时间</a></span></dt><dt><span class="section"><a href="data/redis/RedisTemplate.html#redisTemplate.increment">74.4.2. increment</a></span></dt><dt><span class="section"><a href="data/redis/RedisTemplate.html#redisTemplate.delete">74.4.3. 删除 key </a></span></dt><dt><span class="section"><a href="data/redis/RedisTemplate.html#redisTemplate.object">74.4.4. 对象存储</a></span></dt><dt><span class="section"><a href="data/redis/RedisTemplate.html#redisTemplate.getExpire">74.4.5. 获取过期时间</a></span></dt><dt><span class="section"><a href="data/redis/RedisTemplate.html#redisTemplate.expire">74.4.6. 过期时间未执行</a></span></dt><dt><span class="section"><a href="data/redis/RedisTemplate.html#redisTemplate.hasKey">74.4.7. 判断 key 是否存在</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/ValueOperations.html">74.5. ValueOperations</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/ValueOperations.html#redisTemplate.substring">74.5.1. 字符串截取</a></span></dt><dt><span class="section"><a href="data/redis/ValueOperations.html#redisTemplate.append">74.5.2. 追加字符串</a></span></dt><dt><span class="section"><a href="data/redis/ValueOperations.html#redisTemplate.getAndSet">74.5.3. 设置键的字符串值并返回其旧值</a></span></dt><dt><span class="section"><a href="data/redis/ValueOperations.html#size">74.5.4. 返回字符串长度</a></span></dt><dt><span class="section"><a href="data/redis/ValueOperations.html#setIfAbsent">74.5.5. 如果key不存便缓存。</a></span></dt><dt><span class="section"><a href="data/redis/ValueOperations.html#multiSet">74.5.6. 缓存多个值 /获取多个值 multiSet / multiGet</a></span></dt><dt><span class="section"><a href="data/redis/ValueOperations.html#redisTemplate.bit">74.5.7. setBit / getBit 二进制位操作</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/ListOperations.html">74.6. 列表操作</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/ListOperations.html#id1492">74.6.1. rightPush</a></span></dt><dt><span class="section"><a href="data/redis/ListOperations.html#id1493">74.6.2. rightPushAll</a></span></dt><dt><span class="section"><a href="data/redis/ListOperations.html#id1494">74.6.3. rightPushIfPresent</a></span></dt><dt><span class="section"><a href="data/redis/ListOperations.html#id1495">74.6.4. leftPush</a></span></dt><dt><span class="section"><a href="data/redis/ListOperations.html#id1496">74.6.5. leftPushAll</a></span></dt><dt><span class="section"><a href="data/redis/ListOperations.html#id1497">74.6.6. range</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/SetOperations.html">74.7. SetOperations 数据类型</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/SetOperations.html#id1498">74.7.1. 返回集合中的所有成员</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1499">74.7.2. 取出一个成员</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1500">74.7.3. 随机获取无序集合中的一个元素</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1501">74.7.4. 随机获取 n 个成员(存在重复数据)</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1502">74.7.5. 随机获取 n 个不重复成员</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1503">74.7.6. 在两个 SET 间移动数据</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1504">74.7.7. 成员删除</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1505">74.7.8. 返回集合数量</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1506">74.7.9. 判断元素是否在集合成员中</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1507">74.7.10. 对比两个集合求交集</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1508">74.7.11. 对比两个集合求交集,然后存储到新的 key 中</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1509">74.7.12. 合并两个集合,并去处重复数据</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1510">74.7.13. 合并两个集合去重复后保存到新的 key 中</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1511">74.7.14. 计算两个合集的差集</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1512">74.7.15. 计算两个合集的差集,然后保存到新的 key 中</a></span></dt><dt><span class="section"><a href="data/redis/SetOperations.html#id1513">74.7.16. 遍历 SET 集合</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/ZSetOperations.html">74.8. ZSetOperations 有序的 set 集合</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html">74.9. HashOperations</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/HashOperations.html#id1514">74.9.1. put</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1515">74.9.2. putAll</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1516">74.9.3. 从键中的哈希获取给定hashKey的值</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1517">74.9.4. delete</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1518">74.9.5. 确定哈希hashKey是否存在</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1519">74.9.6. 从哈希中获取指定的多个 hashKey 的值</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1520">74.9.7. 只有hashKey不存在时才能添加值</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1521">74.9.8. 获取整个Hash</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1522">74.9.9. 获取所有key</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1523">74.9.10. 通过 hashKey 获取所有值</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1524">74.9.11. 值加法操作</a></span></dt><dt><span class="section"><a href="data/redis/HashOperations.html#id1525">74.9.12. 遍历 Hash 表</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/JsonRedisTemplate.html">74.10. 存储 Json 对象</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/JsonRedisTemplate.html#id1526">74.10.1. 集成 RedisTemplate 定义新类 JsonRedisTemplate</a></span></dt><dt><span class="section"><a href="data/redis/JsonRedisTemplate.html#id1527">74.10.2. 配置 Redis</a></span></dt><dt><span class="section"><a href="data/redis/JsonRedisTemplate.html#id1528">74.10.3. 测试</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/RedisRepository.html">74.11. Spring Data Redis - Repository Examples</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/RedisRepository.html#id1529">74.11.1. @EnableRedisRepositories 启动 Redis 仓库</a></span></dt><dt><span class="section"><a href="data/redis/RedisRepository.html#id1530">74.11.2. 定义 Domain 类</a></span></dt><dt><span class="section"><a href="data/redis/RedisRepository.html#id1531">74.11.3. Repository 接口</a></span></dt><dt><span class="section"><a href="data/redis/RedisRepository.html#id1532">74.11.4. 测试代码</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/spring.data.redis.pubsub.html">74.12. Redis Pub/Sub</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/spring.data.redis.pubsub.html#id1533">74.12.1. MessageListener 方案</a></span></dt><dt><span class="section"><a href="data/redis/spring.data.redis.pubsub.html#id1538">74.12.2. @RedisListener 注解方案</a></span></dt><dt><span class="section"><a href="data/redis/spring.data.redis.pubsub.html#id1539">74.12.3. 线程池</a></span></dt></dl></dd><dt><span class="section"><a href="data/redis/CacheService.html">74.13. CacheService</a></span></dt><dt><span class="section"><a href="data/redis/spring.data.redis.faq.html">74.14. FAQ</a></span></dt><dd><dl><dt><span class="section"><a href="data/redis/spring.data.redis.faq.html#id1540">74.14.1. Spring Data Redis</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="data/spring-data-mongodb.html">75. Spring Data with MongoDB</a></span></dt><dd><dl><dt><span class="section"><a href="data/spring-data-mongodb.html#SpringDataMongoDB">75.1. Example Spring Data MongoDB</a></span></dt><dd><dl><dt><span class="section"><a href="data/spring-data-mongodb.html#id1541">75.1.1. pom.xml</a></span></dt><dt><span class="section"><a href="data/spring-data-mongodb.html#id1542">75.1.2. springframework-servlet.xml</a></span></dt><dt><span class="section"><a href="data/spring-data-mongodb.html#id1543">75.1.3. POJO</a></span></dt><dt><span class="section"><a href="data/spring-data-mongodb.html#id1544">75.1.4. Controller</a></span></dt><dt><span class="section"><a href="data/spring-data-mongodb.html#id1545">75.1.5. 查看测试结果</a></span></dt><dt><span class="section"><a href="data/spring-data-mongodb.html#id1546">75.1.6. 条件查询</a></span></dt></dl></dd><dt><span class="section"><a href="data/ch75s02.html">75.2. MongoDB 多数据源</a></span></dt><dd><dl><dt><span class="section"><a href="data/ch75s02.html#id1547">75.2.1. Maven</a></span></dt><dt><span class="section"><a href="data/ch75s02.html#id1548">75.2.2. Application 禁止自动配置 MongoDB</a></span></dt><dt><span class="section"><a href="data/ch75s02.html#id1549">75.2.3. application.properties 新增配置项</a></span></dt><dt><span class="section"><a href="data/ch75s02.html#id1550">75.2.4. MongoDB 配置类</a></span></dt><dt><span class="section"><a href="data/ch75s02.html#id1551">75.2.5. 创建 Document 关系映射类 </a></span></dt><dt><span class="section"><a href="data/ch75s02.html#id1552">75.2.6. 测试控制器</a></span></dt><dt><span class="section"><a href="data/ch75s02.html#id1553">75.2.7. 测试</a></span></dt></dl></dd><dt><span class="section"><a href="data/@Document.html">75.3. @Document</a></span></dt><dd><dl><dt><span class="section"><a href="data/@Document.html#@Document">75.3.1. 指定表名</a></span></dt><dt><span class="section"><a href="data/@Document.html#@Id">75.3.2. @Id</a></span></dt><dt><span class="section"><a href="data/@Document.html#@Version">75.3.3. @Version</a></span></dt><dt><span class="section"><a href="data/@Document.html#@Field">75.3.4. @Field 定义字段名</a></span></dt><dt><span class="section"><a href="data/@Document.html#@Indexed">75.3.5. @Indexed</a></span></dt><dt><span class="section"><a href="data/@Document.html#@CompoundIndex">75.3.6. @CompoundIndex 复合索引</a></span></dt><dt><span class="section"><a href="data/@Document.html#@TextIndexed">75.3.7. @TextIndexed</a></span></dt><dt><span class="section"><a href="data/@Document.html#@GeoSpatialIndex">75.3.8. @GeoSpatialIndex 地理位置索引</a></span></dt><dt><span class="section"><a href="data/@Document.html#@Transient">75.3.9. @Transient 丢弃数据,不存到 mongodb</a></span></dt><dt><span class="section"><a href="data/@Document.html#@DBRef">75.3.10. @DBRef 做外外键引用</a></span></dt><dt><span class="section"><a href="data/@Document.html#DateTimeFormat">75.3.11. @DateTimeFormat</a></span></dt><dt><span class="section"><a href="data/@Document.html#NumberFormat">75.3.12. @NumberFormat</a></span></dt><dt><span class="section"><a href="data/@Document.html#Enum">75.3.13. 在 @Document 中使用 Enum 类型</a></span></dt><dt><span class="section"><a href="data/@Document.html#document.list">75.3.14. 在 @Document 中定义数据结构 List/Map</a></span></dt><dt><span class="section"><a href="data/@Document.html#mongodb.geojson">75.3.15. GeoJson 数据类型</a></span></dt></dl></dd><dt><span class="section"><a href="data/MongoRepository.html">75.4. MongoRepository</a></span></dt><dd><dl><dt><span class="section"><a href="data/MongoRepository.html#id1566">75.4.1. 扫描仓库接口</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#findAll">75.4.2. findAll()</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#deleteAll">75.4.3. deleteAll()</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#save">75.4.4. save()</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#count">75.4.5. count()</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#Repository.exists">75.4.6. exists() 判断是否存在</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#existsById">75.4.7. existsById()</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#findByXXXX">75.4.8. findByXXXX</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#findAllOrderBy">75.4.9. findAll with OrderBy</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#findsort">75.4.10. findAll with Sort</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#findpage">75.4.11. FindAll with Pageable</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#StartingWith">75.4.12. StartingWith 和 EndingWith</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#Between">75.4.13. Between</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#Before.After">75.4.14. Before / After</a></span></dt><dt><span class="section"><a href="data/MongoRepository.html#@Query">75.4.15. @Query</a></span></dt></dl></dd><dt><span class="section"><a href="data/mongoTemplate.html">75.5. mongoTemplate</a></span></dt><dd><dl><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.save">75.5.1. Save 保存</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.insert">75.5.2. Insert</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.updateFirst">75.5.3. updateFirst 修改符合条件第一条记录</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.updateMulti">75.5.4. updateMulti 修改符合条件的所有</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.findAndModify">75.5.5. 查找并保存</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.upsert">75.5.6. upsert - 修改符合条件时如果不存在则添加</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.remove">75.5.7. 删除</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.findOne">75.5.8. 查找一条数据</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.find">75.5.9. 查找所有数据</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.query">75.5.10. Query</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#Criteria">75.5.11. Criteria</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#Update">75.5.12. Update</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#BasicUpdate">75.5.13. BasicUpdate</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#sort">75.5.14. Sort</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#PageRequest">75.5.15. Query + PageRequest</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#newAggregation">75.5.16. newAggregation</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#indexOps">75.5.17. 创建索引</a></span></dt><dt><span class="section"><a href="data/mongoTemplate.html#mongoTemplate.subobject">75.5.18. 子对象操作</a></span></dt></dl></dd><dt><span class="section"><a href="data/GeoJsonDeserializer.html">75.6. GeoJson 反序列化</a></span></dt><dt><span class="section"><a href="data/springbot.mongodb.faq.html">75.7. FAQ</a></span></dt><dd><dl><dt><span class="section"><a href="data/springbot.mongodb.faq.html#id1569">75.7.1. location object expected, location array not in correct format; nested exception is com.mongodb.MongoWriteException: location object expected, location array not in correct format</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="data/elasticsearch.html">76. Spring Data with Elasticsearch</a></span></dt><dd><dl><dt><span class="section"><a href="data/elasticsearch.html#id1576">76.1. 内嵌 Elasticsearch</a></span></dt><dd><dl><dt><span class="section"><a href="data/elasticsearch.html#id1570">76.1.1. Maven</a></span></dt><dt><span class="section"><a href="data/elasticsearch.html#id1571">76.1.2. src/main/resources/application.properties</a></span></dt><dt><span class="section"><a href="data/elasticsearch.html#id1572">76.1.3. Domain Class</a></span></dt><dt><span class="section"><a href="data/elasticsearch.html#id1573">76.1.4. ElasticsearchRepository</a></span></dt><dt><span class="section"><a href="data/elasticsearch.html#id1574">76.1.5. SearchRestController</a></span></dt><dt><span class="section"><a href="data/elasticsearch.html#id1575">76.1.6. 测试</a></span></dt></dl></dd><dt><span class="section"><a href="data/ch76s02.html">76.2. 集群模式</a></span></dt><dt><span class="section"><a href="data/ch76s03.html">76.3. Document</a></span></dt><dt><span class="section"><a href="data/ch76s04.html">76.4. Elasticsearch 删除操作</a></span></dt><dt><span class="section"><a href="data/faq.html">76.5. FAQ</a></span></dt><dd><dl><dt><span class="section"><a href="data/faq.html#id1577">76.5.1. java.lang.IllegalStateException: Received message from unsupported version: [2.0.0] minimal compatible version is: [5.0.0]</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="data/data.restful.html">77. Spring boot with Data restful</a></span></dt><dd><dl><dt><span class="section"><a href="data/data.restful.html#id1578">77.1. Maven</a></span></dt></dl></dd><dt><span class="chapter"><a href="data/shardingsphere.html">78. Apache ShardingSphere</a></span></dt><dd><dl><dt><span class="section"><a href="data/shardingsphere.html#id1581">78.1. 微服务集群环境,雪花算法出现重复ID</a></span></dt><dd><dl><dt><span class="section"><a href="data/shardingsphere.html#id1579">78.1.1. 方案一、配置实现</a></span></dt><dt><span class="section"><a href="data/shardingsphere.html#id1580">78.1.2. 方案二、代码实现</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="security/index.html">VII. Spring Security</a></span></dt><dd><dl><dt><span class="chapter"><a href="security/security.html">79. Springboot 3 + Security 6</a></span></dt><dd><dl><dt><span class="section"><a href="security/security.html#spring.security.user.name">79.1. Spring Security with HTTP Auth</a></span></dt><dd><dl><dt><span class="section"><a href="security/security.html#id1582">79.1.1. 默认配置</a></span></dt><dt><span class="section"><a href="security/security.html#id1583">79.1.2. 设置用户名和密码</a></span></dt><dt><span class="section"><a href="security/security.html#禁用 Security">79.1.3. 禁用 Security</a></span></dt><dt><span class="section"><a href="security/security.html#id1584">79.1.4. 设置角色</a></span></dt></dl></dd><dt><span class="section"><a href="security/OncePerRequestFilter.html">79.2. Springboot 3 Security + OncePerRequestFilter</a></span></dt><dd><dl><dt><span class="section"><a href="security/OncePerRequestFilter.html#OncePerRequestFilter">79.2.1. OncePerRequestFilter</a></span></dt><dt><span class="section"><a href="security/OncePerRequestFilter.html#SecurityConfiguration">79.2.2. SecurityConfiguration</a></span></dt></dl></dd><dt><span class="section"><a href="security/SecurityFilterChain.html">79.3. SecurityFilterChain</a></span></dt><dt><span class="section"><a href="security/@PreAuthorize.html">79.4. @PreAuthorize</a></span></dt><dd><dl><dt><span class="section"><a href="security/@PreAuthorize.html#id1585">79.4.1. hasRole</a></span></dt><dt><span class="section"><a href="security/@PreAuthorize.html#id1586">79.4.2. hasAnyRole</a></span></dt><dt><span class="section"><a href="security/@PreAuthorize.html#id1587">79.4.3. 从 HttpServletRequest 返回的 request 变量中判断角色</a></span></dt><dt><span class="section"><a href="security/@PreAuthorize.html#id1588">79.4.4. getAuthentication() 获得角色</a></span></dt><dt><span class="section"><a href="security/@PreAuthorize.html#id1589">79.4.5. UserDetailsService</a></span></dt></dl></dd><dt><span class="section"><a href="security/httpBasic.html">79.5. httpBasic 配置</a></span></dt><dd><dl><dt><span class="section"><a href="security/httpBasic.html#id1590">79.5.1. 禁止 HTTP Auth</a></span></dt></dl></dd><dt><span class="section"><a href="security/security.ipaddress.html">79.6. 指定 URL 限制 IP 访问</a></span></dt><dt><span class="section"><a href="security/securtiy.authorization.html">79.7. Authorization Bearer</a></span></dt><dt><span class="section"><a href="security/ch79s08.html">79.8. InvalidClaimException: The Token can't be used before</a></span></dt></dl></dd><dt><span class="chapter"><a href="security/SpringAuthorizationServer.html">80. Spring Authorization Server</a></span></dt><dd><dl><dt><span class="section"><a href="security/SpringAuthorizationServer.html#oauth2.doc">80.1. Oauth2 协议</a></span></dt><dd><dl><dt><span class="section"><a href="security/SpringAuthorizationServer.html#oauth.token">80.1.1. token</a></span></dt><dt><span class="section"><a href="security/SpringAuthorizationServer.html#grant_type">80.1.2. grant_type</a></span></dt><dt><span class="section"><a href="security/SpringAuthorizationServer.html#id1591">80.1.3. 授权码授权模式(Authorization Code Grant)</a></span></dt><dt><span class="section"><a href="security/SpringAuthorizationServer.html#id1592">80.1.4. 密码模式(Resource Owner Password Credentials Grant)</a></span></dt><dt><span class="section"><a href="security/SpringAuthorizationServer.html#id1593">80.1.5. 客户端凭证模式(Client Credentials Grant)</a></span></dt><dt><span class="section"><a href="security/SpringAuthorizationServer.html#id1594">80.1.6. 刷新 TOKEN 方式</a></span></dt></dl></dd><dt><span class="section"><a href="security/spring-security-oauth2-authorization-server.html">80.2. Maven 依赖</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html">80.3. Spring cloud with Oauth2</a></span></dt><dd><dl><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2.authorization_code">80.3.1. authorization_code</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2.password">80.3.2. Spring boot with Oauth2 - Password</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2.jwt">80.3.3. Spring boot with Oauth2 jwt</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2.jwt.keypair">80.3.4. Spring boot with Oauth2 jwt 非对称证书</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2.ios">80.3.5. Apple iOS 访问 Oauth2</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#id1629">80.3.6. Oauth2 客户端</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2.android">80.3.7. Android Oauth2 + Jwt example</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2.RestTemplate">80.3.8. RestTemplate 使用 HttpClient</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth.self-sign">80.3.9. 自签名证书信任问题</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2">80.3.10. Principal</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#id1634">80.3.11. SecurityContextHolder 对象</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#id1638">80.3.12. 资源服务器配置</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#id1640">80.3.13. Client</a></span></dt><dt><span class="section"><a href="security/spring-cloud-starter-oauth2.html#oauth2.faq">80.3.14. Oauth2 常见问题</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="security/2.x/index.html">81. Spring boot with Spring security(2.x)</a></span></dt><dd><dl><dt><span class="section"><a href="security/2.x/index.html#spring-boot-starter-security">81.1. Spring security 静态配置例子</a></span></dt><dd><dl><dt><span class="section"><a href="security/2.x/index.html#id1643">81.1.1. Maven</a></span></dt><dt><span class="section"><a href="security/2.x/index.html#id1644">81.1.2. Reource</a></span></dt><dt><span class="section"><a href="security/2.x/index.html#id1645">81.1.3. Application</a></span></dt><dt><span class="section"><a href="security/2.x/index.html#id1646">81.1.4. WebSecurityConfigurer</a></span></dt><dt><span class="section"><a href="security/2.x/index.html#id1647">81.1.5. RestController</a></span></dt><dt><span class="section"><a href="security/2.x/index.html#id1648">81.1.6. 测试</a></span></dt></dl></dd><dt><span class="section"><a href="security/2.x/spring.security.mongodb.html">81.2. Spring + Security + MongoDB</a></span></dt><dd><dl><dt><span class="section"><a href="security/2.x/spring.security.mongodb.html#id1649">81.2.1. Account</a></span></dt><dt><span class="section"><a href="security/2.x/spring.security.mongodb.html#id1650">81.2.2. AccountRepository</a></span></dt><dt><span class="section"><a href="security/2.x/spring.security.mongodb.html#id1651">81.2.3. WebSecurityConfiguration</a></span></dt></dl></dd><dt><span class="section"><a href="security/2.x/WebSecurity.html">81.3. Spring Boot with Web Security(2.x)</a></span></dt><dd><dl><dt><span class="section"><a href="security/2.x/WebSecurity.html#EnableWebSecurity">81.3.1. EnableWebSecurity</a></span></dt><dt><span class="section"><a href="security/2.x/WebSecurity.html#id1652">81.3.2. Web静态资源</a></span></dt><dt><span class="section"><a href="security/2.x/WebSecurity.html#id1653">81.3.3. 正则匹配</a></span></dt><dt><span class="section"><a href="security/2.x/WebSecurity.html#id1654">81.3.4. 登陆页面,失败页面,登陆中页面</a></span></dt><dt><span class="section"><a href="security/2.x/WebSecurity.html#corsConfigurationSource()">81.3.5. CORS</a></span></dt><dt><span class="section"><a href="security/2.x/WebSecurity.html#frameOptions">81.3.6. X-Frame-Options 安全</a></span></dt></dl></dd><dt><span class="section"><a href="security/2.x/HttpSecurity.html">81.4. 访问控制列表(Access Control List,ACL)</a></span></dt><dd><dl><dt><span class="section"><a href="security/2.x/HttpSecurity.html#antMatchers">81.4.1. antMatchers</a></span></dt><dt><span class="section"><a href="security/2.x/HttpSecurity.html#httpBasic">81.4.2. HTTP Auth</a></span></dt><dt><span class="section"><a href="security/2.x/HttpSecurity.html#HttpMethod">81.4.3. Rest</a></span></dt><dt><span class="section"><a href="security/2.x/HttpSecurity.html#hasRole">81.4.4. hasRole</a></span></dt><dt><span class="section"><a href="security/2.x/HttpSecurity.html#hasAnyRole">81.4.5. hasAnyRole()</a></span></dt><dt><span class="section"><a href="security/2.x/HttpSecurity.html#withUser">81.4.6. withUser</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="cloud/index.html">VIII. Spring Cloud</a></span></dt><dd><dl><dt><span class="chapter"><a href="cloud/cloud.html">82. 云服务</a></span></dt><dd><dl><dt><span class="section"><a href="cloud/cloud.html#xfyun">82.1. 讯飞云</a></span></dt><dd><dl><dt><span class="section"><a href="cloud/cloud.html#id1661">82.1.1. AIUI</a></span></dt><dt><span class="section"><a href="cloud/cloud.html#tts">82.1.2. 讯飞 TTS</a></span></dt><dt><span class="section"><a href="cloud/cloud.html#id1665">82.1.3. 语音唤醒</a></span></dt></dl></dd><dt><span class="section"><a href="cloud/aliyun.html">82.2. 阿里云</a></span></dt><dd><dl><dt><span class="section"><a href="cloud/aliyun.html#id1666">82.2.1. nuisdk-release.aar 版本问题</a></span></dt><dt><span class="section"><a href="cloud/aliyun.html#id1667">82.2.2. 获取 Token</a></span></dt><dt><span class="section"><a href="cloud/aliyun.html#id1668">82.2.3. 语音唤醒</a></span></dt><dt><span class="section"><a href="cloud/aliyun.html#id1670">82.2.4. CosyVoice 语音合成</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="integration/index.html">83. Spring Integration</a></span></dt><dd><dl><dt><span class="section"><a href="integration/index.html#RedisLockRegistry">83.1. Spring Redis Lock</a></span></dt><dd><dl><dt><span class="section"><a href="integration/index.html#id1671">83.1.1. Maven 依赖</a></span></dt><dt><span class="section"><a href="integration/index.html#id1672">83.1.2. 配置锁</a></span></dt><dt><span class="section"><a href="integration/index.html#id1673">83.1.3. 使用方法</a></span></dt><dt><span class="section"><a href="integration/index.html#id1674">83.1.4. Service 中使用方法</a></span></dt><dt><span class="section"><a href="integration/index.html#id1675">83.1.5. 在定时任务中使用</a></span></dt><dt><span class="section"><a href="integration/index.html#id1676">83.1.6. 在Controller中使用</a></span></dt><dt><span class="section"><a href="integration/index.html#id1677">83.1.7. 使用模板方法模式封装</a></span></dt><dt><span class="section"><a href="integration/index.html#id1678">83.1.8. 读取锁过期时间</a></span></dt></dl></dd><dt><span class="section"><a href="integration/Mqtt.html">83.2. MQTT Support</a></span></dt><dd><dl><dt><span class="section"><a href="integration/Mqtt.html#Inbound">83.2.1. 入站消息通道适配器</a></span></dt><dt><span class="section"><a href="integration/Mqtt.html#Outbound">83.2.2. 出站通道适配器</a></span></dt><dt><span class="section"><a href="integration/Mqtt.html#id1679">83.2.3. @MessagingGateway 定义消息网管接口</a></span></dt><dt><span class="section"><a href="integration/Mqtt.html#ACK">83.2.4. 手动 ACK 应答</a></span></dt><dt><span class="section"><a href="integration/Mqtt.html#id1680">83.2.5. Spring boot with Mqtt v5</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="mybatis/index.html">84. MyBatis</a></span></dt><dd><dl><dt><span class="section"><a href="mybatis/index.html#id1681">84.1. Mybatis 入门</a></span></dt><dt><span class="section"><a href="mybatis/mapper.html">84.2. 接口注解</a></span></dt></dl></dd><dt><span class="chapter"><a href="struts/index.html">85. Apache Struts</a></span></dt><dd><dl><dt><span class="section"><a href="struts/index.html#struts.xml">85.1. struts.xml</a></span></dt><dd><dl><dt><span class="section"><a href="struts/index.html#id1682">85.1.1. include</a></span></dt></dl></dd><dt><span class="section"><a href="struts/tags.html">85.2. Struts Tags</a></span></dt><dd><dl><dt><span class="section"><a href="struts/tags.html#property">85.2.1. property</a></span></dt><dt><span class="section"><a href="struts/tags.html#set">85.2.2. set</a></span></dt><dt><span class="section"><a href="struts/tags.html#url">85.2.3. url</a></span></dt><dt><span class="section"><a href="struts/tags.html#include">85.2.4. s:include</a></span></dt><dt><span class="section"><a href="struts/tags.html#action">85.2.5. s:action</a></span></dt><dt><span class="section"><a href="struts/tags.html#form">85.2.6. HTML Form</a></span></dt><dt><span class="section"><a href="struts/tags.html#iterator">85.2.7. iterator</a></span></dt><dt><span class="section"><a href="struts/tags.html#if">85.2.8. if elseif else</a></span></dt></dl></dd><dt><span class="section"><a href="struts/action.html">85.3. Action</a></span></dt><dd><dl><dt><span class="section"><a href="struts/action.html#redirect">85.3.1. redirect</a></span></dt><dt><span class="section"><a href="struts/action.html#redirectAction">85.3.2. redirectAction</a></span></dt><dt><span class="section"><a href="struts/action.html#interceptor-ref-json">85.3.3. JSON</a></span></dt><dt><span class="section"><a href="struts/action.html#timestamp">85.3.4. 传递 Timestamp 变量</a></span></dt></dl></dd><dt><span class="section"><a href="struts/ajax.html">85.4. Ajax + JSON</a></span></dt><dd><dl><dt><span class="section"><a href="struts/ajax.html#id1687">85.4.1. GET/POST JSON</a></span></dt></dl></dd><dt><span class="section"><a href="struts/json.html">85.5. Json 内容展示</a></span></dt><dd><dl><dt><span class="section"><a href="struts/json.html#id1688">85.5.1. 禁止方法</a></span></dt><dt><span class="section"><a href="struts/json.html#id1689">85.5.2. 格式化日期</a></span></dt><dt><span class="section"><a href="struts/json.html#id1690">85.5.3. 重命名变量名</a></span></dt><dt><span class="section"><a href="struts/json.html#id1691">85.5.4. org.apache.struts2.json</a></span></dt></dl></dd><dt><span class="section"><a href="struts/interceptor.html">85.6. Interceptor</a></span></dt><dd><dl><dt><span class="section"><a href="struts/interceptor.html#id1692">85.6.1. Session </a></span></dt></dl></dd><dt><span class="section"><a href="struts/thread.html">85.7. Action 中使用线程</a></span></dt><dt><span class="section"><a href="struts/log4j.properties.html">85.8. 日志</a></span></dt><dt><span class="section"><a href="struts/faq.html">85.9. FAQ</a></span></dt><dd><dl><dt><span class="section"><a href="struts/faq.html#id1693">85.9.1. Struts 怎样判断用户来自电脑还是移动设备</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="tiles/index.html">86. Apache Tiles</a></span></dt><dd><dl><dt><span class="section"><a href="tiles/index.html#configure">86.1. 配置 Tiles</a></span></dt><dd><dl><dt><span class="section"><a href="tiles/index.html#id1694">86.1.1. Maven</a></span></dt><dt><span class="section"><a href="tiles/index.html#id1695">86.1.2. web.xml</a></span></dt></dl></dd><dt><span class="section"><a href="tiles/template.html">86.2. Template 配置模板</a></span></dt><dt><span class="section"><a href="tiles/struts-tiles.html">86.3. Struts tiles</a></span></dt></dl></dd><dt><span class="chapter"><a href="play.html">87. Play</a></span></dt><dt><span class="chapter"><a href="javax/servlet/index.html">88. Servlet</a></span></dt><dd><dl><dt><span class="section"><a href="javax/servlet/index.html#example">88.1. Example</a></span></dt><dt><span class="section"><a href="javax/servlet/session.html">88.2. Session</a></span></dt><dt><span class="section"><a href="javax/servlet/httpservletrequest.html">88.3. HttpServletRequest</a></span></dt><dt><span class="section"><a href="javax/servlet/filter.html">88.4. Filter</a></span></dt><dd><dl><dt><span class="section"><a href="javax/servlet/filter.html#id1696">88.4.1. web.xml</a></span></dt><dt><span class="section"><a href="javax/servlet/filter.html#id1697">88.4.2. Filter 类</a></span></dt></dl></dd><dt><span class="section"><a href="javax/servlet/listener.html">88.5. Listener</a></span></dt><dd><dl><dt><span class="section"><a href="javax/servlet/listener.html#id1698">88.5.1. web.xml</a></span></dt><dt><span class="section"><a href="javax/servlet/listener.html#id1699">88.5.2. NewsListener 类</a></span></dt><dt><span class="section"><a href="javax/servlet/listener.html#id1700">88.5.3. NewsTask 类</a></span></dt><dt><span class="section"><a href="javax/servlet/listener.html#id1701">88.5.4. JSP 中心显示</a></span></dt></dl></dd><dt><span class="section"><a href="javax/servlet/jsp/index.html">88.6. JSP</a></span></dt><dd><dl><dt><span class="section"><a href="javax/servlet/jsp/index.html#common">88.6.1. 注释</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#pageContext">88.6.2. pageContext</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#request">88.6.3. request</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#response">88.6.4. </a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#cookie">88.6.5. cookie</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#session">88.6.6. session</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#page">88.6.7. page</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#trimDirectiveWhitespaces">88.6.8. trimDirectiveWhitespaces</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#include">88.6.9. include</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#jsp">88.6.10. jsp</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#error-page">88.6.11. error-page</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#program">88.6.12. JSP 编程</a></span></dt><dt><span class="section"><a href="javax/servlet/jsp/index.html#faq">88.6.13. FAQ</a></span></dt></dl></dd><dt><span class="section"><a href="javax/servlet/jstl.html">88.7. JSTL(JavaServer Pages Standard Tag Library)</a></span></dt><dd><dl><dt><span class="section"><a href="javax/servlet/jstl.html#set">88.7.1. c:set</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#out">88.7.2. c:out</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#url">88.7.3. c:url</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#id1706">88.7.4. c:redirect</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#import">88.7.5. c:import</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#if">88.7.6. c:if</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#choose">88.7.7. c:choose</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#forEach">88.7.8. c:forEach</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#empty">88.7.9. empty 判断是否为空</a></span></dt><dt><span class="section"><a href="javax/servlet/jstl.html#fmt">88.7.10. JSTL fmt Tag setBundle Example</a></span></dt></dl></dd><dt><span class="section"><a href="javax/servlet/websocket.html">88.8. WebSocket</a></span></dt><dd><dl><dt><span class="section"><a href="javax/servlet/websocket.html#server">88.8.1. Server</a></span></dt><dt><span class="section"><a href="javax/servlet/websocket.html#client">88.8.2. Client</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="log/index.html">89. Log</a></span></dt><dd><dl><dt><span class="section"><a href="log/index.html#logback">89.1. Logback</a></span></dt><dd><dl><dt><span class="section"><a href="log/index.html#id1713">89.1.1. Maven 包</a></span></dt><dt><span class="section"><a href="log/index.html#id1714">89.1.2. Example</a></span></dt></dl></dd><dt><span class="section"><a href="log/slf4j.html">89.2. slf4j</a></span></dt><dt><span class="section"><a href="log/log4j.html">89.3. log4j</a></span></dt><dd><dl><dt><span class="section"><a href="log/log4j.html#id1717">89.3.1. 安装 Log4j</a></span></dt><dt><span class="section"><a href="log/log4j.html#variable">89.3.2. log4j 环境变量</a></span></dt><dt><span class="section"><a href="log/log4j.html#log4j.example">89.3.3. Log4j Example</a></span></dt><dt><span class="section"><a href="log/log4j.html#log4j.properties">89.3.4. log4j.properties</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ampq.html">90. AMQP(Advanced Message Queuing Protocol)</a></span></dt><dd><dl><dt><span class="section"><a href="ampq.html#id1718">90.1. Send and Recv</a></span></dt><dt><span class="section"><a href="direct.html">90.2. direct</a></span></dt></dl></dd><dt><span class="chapter"><a href="nosql.html">91. NoSQL</a></span></dt><dd><dl><dt><span class="section"><a href="nosql.html#id1722">91.1. MongoDB</a></span></dt><dd><dl><dt><span class="section"><a href="nosql.html#id1719">91.1.1. pom.xml</a></span></dt><dt><span class="section"><a href="nosql.html#id1720">91.1.2. 插入操作</a></span></dt><dt><span class="section"><a href="nosql.html#id1721">91.1.3. 读取操作</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="elasticsearch/index.html">92. Elasticsearch API</a></span></dt><dd><dl><dt><span class="section"><a href="elasticsearch/index.html#client">92.1. Client</a></span></dt><dt><span class="section"><a href="elasticsearch/insert.html">92.2. insert</a></span></dt><dt><span class="section"><a href="elasticsearch/select.html">92.3. Get</a></span></dt><dt><span class="section"><a href="elasticsearch/delete.html">92.4. delete</a></span></dt><dt><span class="section"><a href="elasticsearch/search.html">92.5. Search</a></span></dt><dt><span class="section"><a href="elasticsearch/query.html">92.6. Query 查询</a></span></dt><dd><dl><dt><span class="section"><a href="elasticsearch/query.html#matchAllQuery">92.6.1. match all 匹配所有数据</a></span></dt><dt><span class="section"><a href="elasticsearch/query.html#matchQuery">92.6.2. match 匹配查询</a></span></dt><dt><span class="section"><a href="elasticsearch/query.html#matchPhraseQuery">92.6.3. match phrase 短语精准匹配</a></span></dt></dl></dd><dt><span class="section"><a href="elasticsearch/filter.html">92.7. Filter 过滤</a></span></dt><dd><dl><dt><span class="section"><a href="elasticsearch/filter.html#id1723">92.7.1. term</a></span></dt><dt><span class="section"><a href="elasticsearch/filter.html#id1724">92.7.2. range</a></span></dt></dl></dd><dt><span class="section"><a href="elasticsearch/sort.html">92.8. Sorting</a></span></dt><dt><span class="section"><a href="elasticsearch/source.html">92.9. 返回 Source 字段</a></span></dt><dt><span class="section"><a href="elasticsearch/count.html">92.10. Count</a></span></dt><dt><span class="section"><a href="elasticsearch/example.html">92.11. Example 范例</a></span></dt><dd><dl><dt><span class="section"><a href="elasticsearch/example.html#id1725">92.11.1. Spring boot 案例</a></span></dt></dl></dd><dt><span class="section"><a href="elasticsearch/faq.html">92.12. FAQ</a></span></dt><dd><dl><dt><span class="section"><a href="elasticsearch/faq.html#id1726">92.12.1. 显示查询 JSON 字符串</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="org/glassfish/jersey/index.html">93. Jersey - RESTful Web Services in Java.</a></span></dt><dd><dl><dt><span class="section"><a href="org/glassfish/jersey/index.html#client">93.1. Client 2.x</a></span></dt><dd><dl><dt><span class="section"><a href="org/glassfish/jersey/index.html#id1727">93.1.1. Maven 版本</a></span></dt><dt><span class="section"><a href="org/glassfish/jersey/index.html#id1728">93.1.2. GET 操作</a></span></dt><dt><span class="section"><a href="org/glassfish/jersey/index.html#id1729">93.1.3. GET + Auth 用户认证</a></span></dt></dl></dd><dt><span class="section"><a href="org/glassfish/jersey/client1.x.html">93.2. Client 1.x</a></span></dt><dd><dl><dt><span class="section"><a href="org/glassfish/jersey/client1.x.html#id1730">93.2.1. Jersey + Auth + HTTP2 + SSL</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="org/apache/index.html">94. Apache HttpComponents</a></span></dt><dd><dl><dt><span class="section"><a href="org/apache/index.html#org.apache.commons.lang3">94.1. org.apache.commons.lang3</a></span></dt><dd><dl><dt><span class="section"><a href="org/apache/index.html#StringEscapeUtils">94.1.1. HTML 标签处理</a></span></dt><dt><span class="section"><a href="org/apache/index.html#StringUtils">94.1.2. StringUtils.join 使用特定字符链接字符串</a></span></dt><dt><span class="section"><a href="org/apache/index.html#RandomStringUtils">94.1.3. RandomStringUtils</a></span></dt></dl></dd><dt><span class="section"><a href="org/apache/commons-text.html">94.2. commons-text</a></span></dt><dd><dl><dt><span class="section"><a href="org/apache/commons-text.html#id1731">94.2.1. 禁止转译 json</a></span></dt></dl></dd><dt><span class="section"><a href="org/apache/httpclient.html">94.3. Apache HttpClient</a></span></dt><dd><dl><dt><span class="section"><a href="org/apache/httpclient.html#maven">94.3.1. Maven</a></span></dt><dt><span class="section"><a href="org/apache/httpclient.html#post">94.3.2. HTTP POST 操作</a></span></dt><dt><span class="section"><a href="org/apache/httpclient.html#ssl">94.3.3. HTTPS</a></span></dt><dt><span class="section"><a href="org/apache/httpclient.html#httpclient.http2">94.3.4. HTTP/2</a></span></dt><dt><span class="section"><a href="org/apache/httpclient.html#httpclient.java11">94.3.5. Java11</a></span></dt><dt><span class="section"><a href="org/apache/httpclient.html#httpclient.faq">94.3.6. Host name 'api.netkiller.cn' does not match the certificate subject provided</a></span></dt><dt><span class="section"><a href="org/apache/httpclient.html#httpclient.HttpStatus">94.3.7. HttpStatus</a></span></dt><dt><span class="section"><a href="org/apache/httpclient.html#id1739">94.3.8. </a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="cache/index.html">95. Cache</a></span></dt><dd><dl><dt><span class="section"><a href="cache/index.html#memcache">95.1. java memcached client</a></span></dt><dt><span class="section"><a href="cache/jedis.html">95.2. Jedis</a></span></dt><dd><dl><dt><span class="section"><a href="cache/jedis.html#id1740">95.2.1. 认证</a></span></dt><dt><span class="section"><a href="cache/jedis.html#id1741">95.2.2. jedis.keys</a></span></dt></dl></dd><dt><span class="section"><a href="cache/ehcache.html">95.3. Ehcache</a></span></dt></dl></dd><dt><span class="chapter"><a href="kafka/index.html">96. Kafka</a></span></dt><dd><dl><dt><span class="section"><a href="kafka/index.html#install">96.1. 安装 Kafka 环境</a></span></dt><dt><span class="section"><a href="kafka/maven.html">96.2. Maven</a></span></dt><dt><span class="section"><a href="kafka/ch96s03.html">96.3. 启动 kafka</a></span></dt><dt><span class="section"><a href="kafka/example.html">96.4. 入门例子</a></span></dt><dd><dl><dt><span class="section"><a href="kafka/example.html#Example.KafkaConsumer">96.4.1. 订阅例子</a></span></dt><dt><span class="section"><a href="kafka/example.html#Example.KafkaProducer">96.4.2. 发布例子</a></span></dt></dl></dd><dt><span class="section"><a href="kafka/kafka.thread.html">96.5. 线程例子</a></span></dt></dl></dd><dt><span class="chapter"><a href="sdk.html">97. Software Development Kit</a></span></dt><dd><dl><dt><span class="section"><a href="sdk.html#id1742">97.1. JAVE(Java Audio Video Encoder)</a></span></dt><dt><span class="section"><a href="google.html">97.2. Google</a></span></dt><dd><dl><dt><span class="section"><a href="google.html#com.google.gson">97.2.1. com.google.gson</a></span></dt><dt><span class="section"><a href="google.html#guava">97.2.2. Guava</a></span></dt></dl></dd><dt><span class="section"><a href="mahout.html">97.3. Mahout</a></span></dt><dd><dl><dt><span class="section"><a href="mahout.html#id1750">97.3.1. 推荐系统</a></span></dt></dl></dd><dt><span class="section"><a href="hessian.html">97.4. Hessian</a></span></dt><dt><span class="section"><a href="quartz-scheduler.html">97.5. quartz-scheduler</a></span></dt><dt><span class="section"><a href="Redisson.html">97.6. Redisson</a></span></dt></dl></dd><dt><span class="part"><a href="android/index.html">IX. Android</a></span></dt><dd><dl><dt><span class="chapter"><a href="android/studio/index.html">98. Android Studio</a></span></dt><dd><dl><dt><span class="section"><a href="android/studio/index.html#android.studio.uninstall">98.1. 卸载 Android Studio</a></span></dt><dt><span class="section"><a href="android/studio/code.format.html">98.2. 代码格式化</a></span></dt><dt><span class="section"><a href="android/studio/android.sdk.html">98.3. 设置兼容最低SDK版本</a></span></dt><dt><span class="section"><a href="android/studio/android.sdkmanager.html">98.4. SDK Tools</a></span></dt><dd><dl><dt><span class="section"><a href="android/studio/android.sdkmanager.html#id1751">98.4.1. 接受 License</a></span></dt><dt><span class="section"><a href="android/studio/android.sdkmanager.html#id1752">98.4.2. 查看 SDK 列表</a></span></dt><dt><span class="section"><a href="android/studio/android.sdkmanager.html#id1753">98.4.3. 按照 Android SDK</a></span></dt></dl></dd><dt><span class="section"><a href="android/studio/android.gradle.html">98.5. 命令行操作</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html">98.6. adb 命令</a></span></dt><dd><dl><dt><span class="section"><a href="android/studio/android.adb.html#id1754">98.6.1. 获得 root 权限</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.devices">98.6.2. 设备管理</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.shell">98.6.3. Shell</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.shell.settings">98.6.4. 设备 ID</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.shell.getprop">98.6.5. 查看安卓版本</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.logcat">98.6.6. Logcat</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.push">98.6.7. 上传文件</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.pull">98.6.8. 下载文件</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.install">98.6.9. 安卓 .apk bk</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.shell.wm">98.6.10. 屏幕尺寸</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.shell.dumpsys">98.6.11. dump 系统信息</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.unlock">98.6.12. 解锁</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#adb.bluetooth">98.6.13. 蓝牙管理</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#id1768">98.6.14. 声卡</a></span></dt><dt><span class="section"><a href="android/studio/android.adb.html#id1772">98.6.15. 摄像头</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/manifest/index.html">99. AndroidManifest.xml</a></span></dt><dd><dl><dt><span class="section"><a href="android/manifest/index.html#android:minSdkVersion">99.1. SDK 版本配置</a></span></dt><dt><span class="section"><a href="android/manifest/android.permission.INTERNET.html">99.2. 开启网络</a></span></dt><dt><span class="section"><a href="android/manifest/manifest.storage.html">99.3. 文件存储权限</a></span></dt><dt><span class="section"><a href="android/manifest/manifest.camera.html">99.4. 相机权限</a></span></dt><dt><span class="section"><a href="android/manifest/manifest.location.html">99.5. GPS 定位权限</a></span></dt><dt><span class="section"><a href="android/manifest/ch99s06.html">99.6. 全屏-无标题</a></span></dt><dt><span class="section"><a href="android/manifest/ch99s07.html">99.7. 设置为默认开机启动</a></span></dt><dt><span class="section"><a href="android/manifest/ch99s08.html">99.8. 开机启动</a></span></dt><dt><span class="section"><a href="android/manifest/ch99s09.html">99.9. 默认横屏</a></span></dt><dt><span class="section"><a href="android/manifest/禁止屏幕旋转.html">99.10. 禁止屏幕旋转变化</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/device/index.html">100. 设备</a></span></dt><dd><dl><dt><span class="section"><a href="android/device/index.html#android.environment">100.1. 环境变量</a></span></dt><dd><dl><dt><span class="section"><a href="android/device/index.html#id1773">100.1.1. 扩展存储</a></span></dt><dt><span class="section"><a href="android/device/index.html#id1774">100.1.2. 下载缓存目录</a></span></dt><dt><span class="section"><a href="android/device/index.html#id1775">100.1.3. 数据目录</a></span></dt></dl></dd><dt><span class="section"><a href="android/device/android.config.html">100.2. 配置文件</a></span></dt><dd><dl><dt><span class="section"><a href="android/device/android.config.html#android.config.properties">100.2.1. *.properties 文件</a></span></dt><dt><span class="section"><a href="android/device/android.config.html#android.config.AndroidManifest.xml">100.2.2. 再 AndroidManifest.xml 使用 meta-data element 定义</a></span></dt><dt><span class="section"><a href="android/device/android.config.html#android.config.build.gradle">100.2.3. 再 build.gradle 文件中配置 productFlavors</a></span></dt><dt><span class="section"><a href="android/device/android.config.html#android.config.assets">100.2.4. 从 assets 目录读取配置文件</a></span></dt></dl></dd><dt><span class="section"><a href="android/device/ch100s03.html">100.3. 设备信息</a></span></dt><dt><span class="section"><a href="android/device/ch100s04.html">100.4. Physical density</a></span></dt><dt><span class="section"><a href="android/device/android.soundcard.html">100.5. 声卡</a></span></dt><dd><dl><dt><span class="section"><a href="android/device/android.soundcard.html#id1777">100.5.1. 播放</a></span></dt><dt><span class="section"><a href="android/device/android.soundcard.html#id1778">100.5.2. 录音</a></span></dt><dt><span class="section"><a href="android/device/android.soundcard.html#id1779">100.5.3. 查看声卡信息</a></span></dt><dt><span class="section"><a href="android/device/android.soundcard.html#id1780">100.5.4. /proc/asound 设备信息</a></span></dt><dt><span class="section"><a href="android/device/android.soundcard.html#id1781">100.5.5. 查看声卡当前占用设备</a></span></dt><dt><span class="section"><a href="android/device/android.soundcard.html#id1782">100.5.6. tinymix 设置声卡参数</a></span></dt><dt><span class="section"><a href="android/device/android.soundcard.html#id1784">100.5.7. 麦克风阵列调试</a></span></dt></dl></dd><dt><span class="section"><a href="android/device/device.phone.tablet.html">100.6. 判断是平板,还是手机</a></span></dt><dt><span class="section"><a href="android/device/device.Bluetooth.html">100.7. 蓝牙设备管理</a></span></dt><dd><dl><dt><span class="section"><a href="android/device/device.Bluetooth.html#id1785">100.7.1. 进入蓝牙设置界面</a></span></dt><dt><span class="section"><a href="android/device/device.Bluetooth.html#id1786">100.7.2. 通过发送广播处理蓝牙</a></span></dt><dt><span class="section"><a href="android/device/device.Bluetooth.html#id1787">100.7.3. 蓝牙禁用/启用</a></span></dt><dt><span class="section"><a href="android/device/device.Bluetooth.html#id1788">100.7.4. 获取蓝牙设备</a></span></dt><dt><span class="section"><a href="android/device/device.Bluetooth.html#id1789">100.7.5. 查询已绑定设备</a></span></dt></dl></dd><dt><span class="section"><a href="android/device/ch100s08.html">100.8. USB 设备</a></span></dt><dd><dl><dt><span class="section"><a href="android/device/ch100s08.html#id1790">100.8.1. USB 音频设备</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/activity/index.html">101. Activity</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/index.html#id1791">101.1. 界面佈局</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/index.html#setContentView">101.1.1. setContentView</a></span></dt><dt><span class="section"><a href="android/activity/index.html#隐藏虚拟键">101.1.2. 隐藏虚拟键</a></span></dt><dt><span class="section"><a href="android/activity/index.html#保持屏幕常开">101.1.3. 保持屏幕常开</a></span></dt><dt><span class="section"><a href="android/activity/index.html#标题栏添加返回按钮">101.1.4. 标题栏添加返回按钮</a></span></dt></dl></dd><dt><span class="section"><a href="android/activity/startActivity.html">101.2. 切换 Activity</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/startActivity.html#startActivity.intent">101.2.1. startActivity()</a></span></dt><dt><span class="section"><a href="android/activity/startActivity.html#App间跳转">101.2.2. App 间跳转</a></span></dt><dt><span class="section"><a href="android/activity/startActivity.html#intentActivityResultLauncher">101.2.3. intentActivityResultLauncher 跳转</a></span></dt><dt><span class="section"><a href="android/activity/startActivity.html#startActivityForResult">101.2.4. startActivityForResult 替代方案</a></span></dt></dl></dd><dt><span class="section"><a href="android/activity/Activity生命周期.html">101.3. 生命周期</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/Activity生命周期.html#定时关闭">101.3.1. 定时关闭</a></span></dt><dt><span class="section"><a href="android/activity/Activity生命周期.html#恢复触发">101.3.2. 恢复触发</a></span></dt><dt><span class="section"><a href="android/activity/Activity生命周期.html#返回触发">101.3.3. 返回触发</a></span></dt><dt><span class="section"><a href="android/activity/Activity生命周期.html#Activity.finish()">101.3.4. Activity 关闭</a></span></dt><dt><span class="section"><a href="android/activity/Activity生命周期.html#id1794">101.3.5. 重启自己</a></span></dt></dl></dd><dt><span class="section"><a href="android/activity/Intent.html">101.4. Activity 间数据传递</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/Intent.html#id1795">101.4.1. Intent 方式</a></span></dt><dt><span class="section"><a href="android/activity/Intent.html#id1796">101.4.2. Bundle 方式</a></span></dt><dt><span class="section"><a href="android/activity/Intent.html#id1798">101.4.3. Flag 属性</a></span></dt><dt><span class="section"><a href="android/activity/Intent.html#id1799">101.4.4. 返回值</a></span></dt></dl></dd><dt><span class="section"><a href="android/activity/activity.DataBinding.html">101.5. DataBinding</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/activity.DataBinding.html#id1800">101.5.1. 启用 DataBinding</a></span></dt><dt><span class="section"><a href="android/activity/activity.DataBinding.html#id1801">101.5.2. MainActivity 中使用 ActivityMainBinding</a></span></dt><dt><span class="section"><a href="android/activity/activity.DataBinding.html#id1802">101.5.3. ViewDataBinding 例子</a></span></dt></dl></dd><dt><span class="section"><a href="android/activity/activity.keyboard.html">101.6. 键盘事件</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/activity.keyboard.html#id1803">101.6.1. onKeyDown 键盘按下事件</a></span></dt><dt><span class="section"><a href="android/activity/activity.keyboard.html#id1804">101.6.2. dispatchKeyEvent</a></span></dt><dt><span class="section"><a href="android/activity/activity.keyboard.html#id1805">101.6.3. 屏蔽 KeyEvent.KEYCODE_BACK</a></span></dt><dt><span class="section"><a href="android/activity/activity.keyboard.html#id1806">101.6.4. 判断按下次数</a></span></dt></dl></dd><dt><span class="section"><a href="android/activity/activity.mouse.html">101.7. 鼠标事件</a></span></dt><dt><span class="section"><a href="android/activity/Intent.ACTION_SEND.html">101.8. 分享</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/Intent.ACTION_SEND.html#id1807">101.8.1. 分享文本内容</a></span></dt><dt><span class="section"><a href="android/activity/Intent.ACTION_SEND.html#id1808">101.8.2. 分享图片</a></span></dt><dt><span class="section"><a href="android/activity/Intent.ACTION_SEND.html#id1809">101.8.3. </a></span></dt></dl></dd><dt><span class="section"><a href="android/activity/ClipboardManager.html">101.9. 剪切板</a></span></dt><dt><span class="section"><a href="android/activity/InputMethodManager.html">101.10. 软键盘控制</a></span></dt><dt><span class="section"><a href="android/activity/activity.event.html">101.11. 自定义事件</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/activity.event.html#id1810">101.11.1. 按钮点击事件</a></span></dt><dt><span class="section"><a href="android/activity/activity.event.html#id1811">101.11.2. OnCheckedChangeListener</a></span></dt><dt><span class="section"><a href="android/activity/activity.event.html#id1812">101.11.3. CustomOnItemSelectedListener</a></span></dt><dt><span class="section"><a href="android/activity/activity.event.html#id1813">101.11.4. CustomOnScrollListener</a></span></dt><dt><span class="section"><a href="android/activity/activity.event.html#id1814">101.11.5. CustomOnTabSelectedListener</a></span></dt></dl></dd><dt><span class="section"><a href="android/activity/ch101s12.html">101.12. Res 资源</a></span></dt><dd><dl><dt><span class="section"><a href="android/activity/ch101s12.html#id1815">101.12.1. 通过名称查找 layout ID</a></span></dt><dt><span class="section"><a href="android/activity/ch101s12.html#id1816">101.12.2. 查找 drawable 资源 ID</a></span></dt><dt><span class="section"><a href="android/activity/ch101s12.html#id1817">101.12.3. 获取 color 颜色 ID</a></span></dt><dt><span class="section"><a href="android/activity/ch101s12.html#id1818">101.12.4. 获取 array.xml 文件下某个字段的 ID</a></span></dt><dt><span class="section"><a href="android/activity/ch101s12.html#id1819">101.12.5. 获取 style.xml 文件下的某个样式的 id</a></span></dt><dt><span class="section"><a href="android/activity/ch101s12.html#id1821">101.12.6. 主题 themes.xml</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/fragment/index.html">102. Fragment</a></span></dt><dd><dl><dt><span class="section"><a href="android/fragment/index.html#id1822">102.1. 启动 Fragment</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s02.html">102.2. 关闭 Fragment</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s03.html">102.3. 在 Fragment 中使用 findViewById</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s04.html">102.4. 在 Fragment 跳转 Activity</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s05.html">102.5. 在 Fragment 跳转 Activity 同时携带 Intent 参数</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s06.html">102.6. Fragment 中调用 getPackageManager()</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s07.html">102.7. 在 Fragment 中使用 runOnUiThread</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s08.html">102.8. Fragment 中调用 findViewById</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s09.html">102.9. 替换 FrameLayout</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s10.html">102.10. Fragment 接收 BroadcastReceiver 广播</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s11.html">102.11. Fragment 加载报错 java.lang.IllegalArgumentException: No view found for id ...</a></span></dt><dt><span class="section"><a href="android/fragment/ch102s12.html">102.12. 使用 TabLayout 切换 Fragment</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/resources/index.html">103. Resources</a></span></dt><dd><dl><dt><span class="section"><a href="android/resources/index.html#id1827">103.1. strings.xml</a></span></dt><dd><dl><dt><span class="section"><a href="android/resources/index.html#id1823">103.1.1. 字符串</a></span></dt><dt><span class="section"><a href="android/resources/index.html#id1824">103.1.2. 定义数组</a></span></dt><dt><span class="section"><a href="android/resources/index.html#id1825">103.1.3. 获取 Resource</a></span></dt><dt><span class="section"><a href="android/resources/index.html#id1826">103.1.4. Fragment 获取 Resource</a></span></dt></dl></dd><dt><span class="section"><a href="android/resources/ch103s02.html">103.2. dimens.xml</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/palette/index.html">104. Palette 视觉设计</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/index.html#id1828">104.1. 禁止屏幕休眠</a></span></dt><dt><span class="section"><a href="android/palette/ch104s02.html">104.2. 颜色设置</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/ch104s02.html#id1832">104.2.1. 颜色设置</a></span></dt></dl></dd><dt><span class="section"><a href="android/palette/layout.html">104.3. 样式布局</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/layout.html#ConstraintLayout">104.3.1. ConstraintLayout</a></span></dt><dt><span class="section"><a href="android/palette/layout.html#LinearLayout">104.3.2. LinearLayout</a></span></dt><dt><span class="section"><a href="android/palette/layout.html#FrameLayout">104.3.3. FrameLayout</a></span></dt><dt><span class="section"><a href="android/palette/layout.html#soundwave">104.3.4. 声音波形图</a></span></dt></dl></dd><dt><span class="section"><a href="android/palette/ui/index.html">104.4. UI 界面</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/ui/index.html#Toast.default">104.4.1. Toast</a></span></dt><dt><span class="section"><a href="android/palette/ui/index.html#Dialog">104.4.2. Dialog</a></span></dt><dt><span class="section"><a href="android/palette/ui/index.html#DatePicker">104.4.3. DatePicker</a></span></dt><dt><span class="section"><a href="android/palette/ui/index.html#Snackbar">104.4.4. Snackbar - Toast 的替代者</a></span></dt></dl></dd><dt><span class="section"><a href="android/palette/Text.html">104.5. Text</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/Text.html#id1843">104.5.1. Text 相关属性</a></span></dt><dt><span class="section"><a href="android/palette/Text.html#TextView">104.5.2. TextView</a></span></dt><dt><span class="section"><a href="android/palette/Text.html#EditText">104.5.3. EditText</a></span></dt><dt><span class="section"><a href="android/palette/Text.html#id1849">104.5.4. 光标移动到行尾</a></span></dt><dt><span class="section"><a href="android/palette/Text.html#id1850">104.5.5. 禁止选择文本</a></span></dt><dt><span class="section"><a href="android/palette/Text.html#id1851">104.5.6. 设置 app:backgroundTint</a></span></dt><dt><span class="section"><a href="android/palette/Text.html#id1852">104.5.7. 禁止滚动条</a></span></dt></dl></dd><dt><span class="section"><a href="android/palette/Button.html">104.6. Button</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/Button.html#Button.setEnabled">104.6.1. 启用禁用</a></span></dt><dt><span class="section"><a href="android/palette/Button.html#OnClickListener">104.6.2. 实现 OnClickListener 接口</a></span></dt><dt><span class="section"><a href="android/palette/Button.html#Fragment 中使用 Button">104.6.3. Fragment 中使用 Button</a></span></dt><dt><span class="section"><a href="android/palette/Button.html#圆形按钮">104.6.4. 圆形按钮</a></span></dt><dt><span class="section"><a href="android/palette/Button.html#ImageButton">104.6.5. ImageButton</a></span></dt><dt><span class="section"><a href="android/palette/Button.html#FloatingActionButton">104.6.6. 添加悬浮操作按钮</a></span></dt></dl></dd><dt><span class="section"><a href="android/palette/Switch.html">104.7. Switch</a></span></dt><dt><span class="section"><a href="android/palette/ch104s08.html">104.8. Widgets</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/ch104s08.html#ImageView">104.8.1. ImageView</a></span></dt><dt><span class="section"><a href="android/palette/ch104s08.html#TextClock">104.8.2. TextClock</a></span></dt><dt><span class="section"><a href="android/palette/ch104s08.html#widgets.ProgressBar">104.8.3. 进度条</a></span></dt><dt><span class="section"><a href="android/palette/ch104s08.html#NestedScrollView">104.8.4. NestedScrollView + </a></span></dt></dl></dd><dt><span class="section"><a href="android/palette/android.containers.html">104.9. Containers</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/android.containers.html#CardView">104.9.1. CardView</a></span></dt><dt><span class="section"><a href="android/palette/android.containers.html#RecyclerView">104.9.2. RecyclerView</a></span></dt><dt><span class="section"><a href="android/palette/android.containers.html#NavigationView">104.9.3. NavigationView</a></span></dt><dt><span class="section"><a href="android/palette/android.containers.html#BottomNavigationView">104.9.4. 底部导航</a></span></dt><dt><span class="section"><a href="android/palette/android.containers.html#TabLayout">104.9.5. TabLayout</a></span></dt><dt><span class="section"><a href="android/palette/android.containers.html#ViewPager2">104.9.6. ViewPager2</a></span></dt><dt><span class="section"><a href="android/palette/android.containers.html#Navigation">104.9.7. Navigation</a></span></dt></dl></dd><dt><span class="section"><a href="android/palette/android.display.html">104.10. 屏幕</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/android.display.html#id1880">104.10.1. </a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#id1881">104.10.2. 媒体路由</a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#id1882">104.10.3. 分辨率</a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#id1883">104.10.4. 尺寸</a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#全屏显示">104.10.5. 全屏显示</a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#音频处理">104.10.6. 音频处理</a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#屏幕触摸事件">104.10.7. 屏幕触摸事件 onTouch(View view, MotionEvent motionEvent)</a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#android.Gesture">104.10.8. 手势事件</a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#SimpleOnGestureListener">104.10.9. SimpleOnGestureListener</a></span></dt><dt><span class="section"><a href="android/palette/android.display.html#SimpleOnScaleGestureListener">104.10.10. SimpleOnScaleGestureListener</a></span></dt></dl></dd><dt><span class="section"><a href="android/palette/ch104s11.html">104.11. 带有小三角指示的消息框</a></span></dt><dd><dl><dt><span class="section"><a href="android/palette/ch104s11.html#id1889">104.11.1. 左侧三角</a></span></dt><dt><span class="section"><a href="android/palette/ch104s11.html#id1890">104.11.2. 右侧三角</a></span></dt><dt><span class="section"><a href="android/palette/ch104s11.html#id1891">104.11.3. 正三角</a></span></dt><dt><span class="section"><a href="android/palette/ch104s11.html#id1892">104.11.4. 倒三角</a></span></dt><dt><span class="section"><a href="android/palette/ch104s11.html#id1893">104.11.5. 文本边框</a></span></dt><dt><span class="section"><a href="android/palette/ch104s11.html#id1894">104.11.6. 布局</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/schedule/index.html">105. Schedule 计划任务</a></span></dt><dd><dl><dt><span class="section"><a href="android/schedule/index.html#Handler">105.1. 使用 Runnable 和 Handler 实现定时执行</a></span></dt><dd><dl><dt><span class="section"><a href="android/schedule/index.html#Handler.Runnable">105.1.1. 循环执行</a></span></dt><dt><span class="section"><a href="android/schedule/index.html#延迟执行">105.1.2. 延迟执行</a></span></dt></dl></dd><dt><span class="section"><a href="android/schedule/Timer.html">105.2. TimerTask 实现循环播放</a></span></dt><dd><dl><dt><span class="section"><a href="android/schedule/Timer.html#time.timetask">105.2.1. Time 和 TimerTask 定时刷新</a></span></dt><dt><span class="section"><a href="android/schedule/Timer.html#TimerTask">105.2.2. TimerTask 更新 UI</a></span></dt></dl></dd><dt><span class="section"><a href="android/schedule/ScheduledExecutorService.html">105.3. ScheduledExecutorService</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/i18n/index.html">106. Internationalization i18n with Android (国际化)</a></span></dt><dd><dl><dt><span class="section"><a href="android/i18n/index.html#android.i18n.new">106.1. 创建国际化文件</a></span></dt><dt><span class="section"><a href="android/i18n/locale.strings.xml.html">106.2. strings.xml 文件</a></span></dt><dt><span class="section"><a href="android/i18n/locale.translations.html">106.3. 翻译语言</a></span></dt><dt><span class="section"><a href="android/i18n/locale.getString.html">106.4. 引用国际化文件</a></span></dt><dt><span class="section"><a href="android/i18n/android.i18n.switch.html">106.5. 切换语言</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/storage/index.html">107. 存储</a></span></dt><dd><dl><dt><span class="section"><a href="android/storage/index.html#storage.directory">107.1. 获得存储目录</a></span></dt><dd><dl><dt><span class="section"><a href="android/storage/index.html#id1895">107.1.1. 用户存储目录</a></span></dt><dt><span class="section"><a href="android/storage/index.html#storage.Assets">107.1.2. Assets 目录</a></span></dt><dt><span class="section"><a href="android/storage/index.html#id1896">107.1.3. 公共存储目录</a></span></dt><dt><span class="section"><a href="android/storage/index.html#id1897">107.1.4. 内部存储</a></span></dt><dt><span class="section"><a href="android/storage/index.html#id1898">107.1.5. 扩展存储</a></span></dt><dt><span class="section"><a href="android/storage/index.html#id1899">107.1.6. 文件夹类型</a></span></dt></dl></dd><dt><span class="section"><a href="android/storage/FileProvider.html">107.2. FileProvider 配置</a></span></dt><dt><span class="section"><a href="android/storage/android.sdcard.html">107.3. SD Card</a></span></dt><dd><dl><dt><span class="section"><a href="android/storage/android.sdcard.html#id1900">107.3.1. SD Card 状态</a></span></dt><dt><span class="section"><a href="android/storage/android.sdcard.html#id1901">107.3.2. Android 11 申请 sdcard 权限</a></span></dt></dl></dd><dt><span class="section"><a href="android/storage/android.download.html">107.4. 下载管理</a></span></dt><dd><dl><dt><span class="section"><a href="android/storage/android.download.html#id1902">107.4.1. 从 URL 下来文件</a></span></dt><dt><span class="section"><a href="android/storage/android.download.html#id1903">107.4.2. 安装 APK</a></span></dt><dt><span class="section"><a href="android/storage/android.download.html#id1904">107.4.3. 下载后接收广播通知</a></span></dt></dl></dd><dt><span class="section"><a href="android/storage/ch107s05.html">107.5. android.os.FileUriExposedException</a></span></dt><dt><span class="section"><a href="android/storage/storage.download.html">107.6. 下载工具类</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/network/index.html">108. 网络</a></span></dt><dd><dl><dt><span class="section"><a href="android/network/index.html#id1905">108.1. Wifi 配置</a></span></dt><dt><span class="section"><a href="android/network/ch108s02.html">108.2. WI-FI 与 蜂窝网络 信号强度检测</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html">108.3. OkHttp - An HTTP & HTTP/2 client for Android and Java
applications
</a></span></dt><dd><dl><dt><span class="section"><a href="android/network/okhttp.html#okhttp.Gradle">108.3.1. Gradle</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.AndroidManifest.xml">108.3.2. AndroidManifest.xml 开启网络访问权限</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.https">108.3.3. okhttp 默认是 HTTPS 开启 HTTP</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.ConnectionPool">108.3.4. 连接池</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.HttpUrl">108.3.5. HttpUrl</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.get">108.3.6. GET</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.post">108.3.7. POST</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.put">108.3.8. HTTP PUT 请求</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.addheader">108.3.9. http header 相关设置</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.auth">108.3.10. HTTP Base Auth</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.HttpUrl.Builder">108.3.11. HttpUrl.Builder 组装 URL 地址参数</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.Activity">108.3.12. Android Activity Example</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#oauth2.android">108.3.13. Android Oauth2 + Jwt example</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.h2">108.3.14. HTTP/2</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp3.async">108.3.15. 异步更新 UI</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.sse">108.3.16. SSE 客户端</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.websocket">108.3.17. WebSocket Client</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.EventListener">108.3.18. EventListener</a></span></dt><dt><span class="section"><a href="android/network/okhttp.html#okhttp.download">108.3.19. 文件下来</a></span></dt></dl></dd><dt><span class="section"><a href="android/network/retrofit.html">108.4. Retrofit - https://github.com/square/retrofit</a></span></dt><dd><dl><dt><span class="section"><a href="android/network/retrofit.html#id1914">108.4.1. Gradle 依赖</a></span></dt><dt><span class="section"><a href="android/network/retrofit.html#retrofit.Authorization">108.4.2. Authorization 头</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/camera/index.html">109. 相机与相册</a></span></dt><dd><dl><dt><span class="section"><a href="android/camera/index.html#id1915">109.1. 调用相机</a></span></dt><dd><dl><dt><span class="section"><a href="android/camera/index.html#camera.manifest">109.1.1. manifest 文件</a></span></dt><dt><span class="section"><a href="android/camera/index.html#camera.layout">109.1.2. layout</a></span></dt><dt><span class="section"><a href="android/camera/index.html#camera.activity">109.1.3. Activity</a></span></dt></dl></dd><dt><span class="section"><a href="android/camera/ch109s02.html">109.2. 相机开发</a></span></dt><dd><dl><dt><span class="section"><a href="android/camera/ch109s02.html#id1916">109.2.1. 页面布局</a></span></dt><dt><span class="section"><a href="android/camera/ch109s02.html#id1917">109.2.2. 相机逻辑功能</a></span></dt></dl></dd><dt><span class="section"><a href="android/camera/ledflashlight.html">109.3. LED flash 做手电筒</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/media/index.html">110. 多媒体开发</a></span></dt><dd><dl><dt><span class="section"><a href="android/media/index.html#AudioDeviceInfo">110.1. AudioDeviceInfo</a></span></dt><dt><span class="section"><a href="android/media/MediaPlayer.html">110.2. MediaPlayer</a></span></dt><dd><dl><dt><span class="section"><a href="android/media/MediaPlayer.html#id1918">110.2.1. 播放Raw下的元数据</a></span></dt><dt><span class="section"><a href="android/media/MediaPlayer.html#id1919">110.2.2. 播放assets文件夹中的音乐</a></span></dt><dt><span class="section"><a href="android/media/MediaPlayer.html#id1920">110.2.3. 播放互联网音乐</a></span></dt><dt><span class="section"><a href="android/media/MediaPlayer.html#id1921">110.2.4. 使用单例模式</a></span></dt><dt><span class="section"><a href="android/media/MediaPlayer.html#id1922">110.2.5. 设置速度,快进播放</a></span></dt><dt><span class="section"><a href="android/media/MediaPlayer.html#id1923">110.2.6. OPUS</a></span></dt></dl></dd><dt><span class="section"><a href="android/media/AudioPlayer.html">110.3. AudioPlayer</a></span></dt><dt><span class="section"><a href="android/media/AudioTrack.html">110.4. AudioTrack</a></span></dt><dt><span class="section"><a href="android/media/VideoView.html">110.5. VideoView 开发</a></span></dt><dd><dl><dt><span class="section"><a href="android/media/VideoView.html#id1924">110.5.1. 播放网络视频</a></span></dt><dt><span class="section"><a href="android/media/VideoView.html#MediaController">110.5.2. MediaController 添加翻页事件</a></span></dt><dt><span class="section"><a href="android/media/VideoView.html#id1925">110.5.3. 静音播放视频</a></span></dt><dt><span class="section"><a href="android/media/VideoView.html#id1926">110.5.4. 更新进度条</a></span></dt><dt><span class="section"><a href="android/media/VideoView.html#videoview.example">110.5.5. 完整的例子</a></span></dt><dt><span class="section"><a href="android/media/VideoView.html#id1927">110.5.6. 循环播放</a></span></dt><dt><span class="section"><a href="android/media/VideoView.html#id1928">110.5.7. 静音播放</a></span></dt></dl></dd><dt><span class="section"><a href="android/media/android.media.SoundPool.html">110.6. SoundPool</a></span></dt><dt><span class="section"><a href="android/media/AudioManager.html">110.7. 音量控制</a></span></dt><dt><span class="section"><a href="android/media/microphone.html">110.8. 麦克风</a></span></dt><dd><dl><dt><span class="section"><a href="android/media/microphone.html#AudioRecord">110.8.1. AudioRecord</a></span></dt><dt><span class="section"><a href="android/media/microphone.html#id1929">110.8.2. 远端录音</a></span></dt><dt><span class="section"><a href="android/media/microphone.html#AudioRecord.setPreferredDevice">110.8.3. 选择麦克风</a></span></dt><dt><span class="section"><a href="android/media/microphone.html#id1930">110.8.4. 设置蓝牙麦克风为默认麦克风</a></span></dt><dt><span class="section"><a href="android/media/microphone.html#AudioRecord.file">110.8.5. 录音例子</a></span></dt><dt><span class="section"><a href="android/media/microphone.html#Microphone.bluetooth">110.8.6. Microphone 录音,蓝牙,增益</a></span></dt></dl></dd><dt><span class="section"><a href="android/media/android.record.html">110.9. 麦克风与录音例子</a></span></dt><dd><dl><dt><span class="section"><a href="android/media/android.record.html#RECORD_AUDIO">110.9.1. 开启麦克风和SD卡权限</a></span></dt><dt><span class="section"><a href="android/media/android.record.html#android.voice.layout">110.9.2. layout</a></span></dt><dt><span class="section"><a href="android/media/android.record.html#android.voice.Activity">110.9.3. Activity</a></span></dt></dl></dd><dt><span class="section"><a href="android/media/MediaRecorder.html">110.10. MediaRecorder 录音例子</a></span></dt><dt><span class="section"><a href="android/media/MediaCodec.html">110.11. MediaCodec</a></span></dt><dt><span class="section"><a href="android/media/ExoPlayer.html">110.12. ExoPlayer</a></span></dt><dd><dl><dt><span class="section"><a href="android/media/ExoPlayer.html#id1934">110.12.1. Opus</a></span></dt></dl></dd><dt><span class="section"><a href="android/media/ch110s13.html">110.13. Opus</a></span></dt><dd><dl><dt><span class="section"><a href="android/media/ch110s13.html#id1935">110.13.1. Kopus - A Kotlin Multiplatform library providing OPUS audio codec functionality for Android and iOS platforms.</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/location/index.html">111. 定位</a></span></dt><dd><dl><dt><span class="section"><a href="android/location/index.html#id1936">111.1. GPS + 网络 定位</a></span></dt><dd><dl><dt><span class="section"><a href="android/location/index.html#location.manifest">111.1.1. manifest 权限配置</a></span></dt><dt><span class="section"><a href="android/location/index.html#location.layout">111.1.2. layout</a></span></dt><dt><span class="section"><a href="android/location/index.html#location.Activity">111.1.3. Activity</a></span></dt></dl></dd><dt><span class="section"><a href="android/location/ch111s02.html">111.2. 只从 GPS 获取定位</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/phone/index.html">112. 电话</a></span></dt><dd><dl><dt><span class="section"><a href="android/phone/index.html#android.phone.sim">112.1. SIM 卡状态</a></span></dt><dt><span class="section"><a href="android/phone/android.phone.call.html">112.2. 通信录与拨打电话</a></span></dt><dt><span class="section"><a href="android/phone/android.phone.sms.html">112.3. 发送短信</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/broadcast/index.html">113. 消息广播</a></span></dt><dd><dl><dt><span class="section"><a href="android/broadcast/index.html#broadcast.registerReceiver">113.1. 动态注册</a></span></dt><dt><span class="section"><a href="android/broadcast/broadcast.static.html">113.2. 静态注册</a></span></dt><dd><dl><dt><span class="section"><a href="android/broadcast/broadcast.static.html#电源管理">113.2.1. 电源管理</a></span></dt><dt><span class="section"><a href="android/broadcast/broadcast.static.html#id1937">113.2.2. 接收不到消息</a></span></dt><dt><span class="section"><a href="android/broadcast/broadcast.static.html#id1938">113.2.3. StaticBroadcastReceiver 完整的例子</a></span></dt></dl></dd><dt><span class="section"><a href="android/broadcast/broadcast.user.html">113.3. 自定义用户消息广播</a></span></dt><dt><span class="section"><a href="android/broadcast/broadcast.local.html">113.4. 本地广播</a></span></dt><dt><span class="section"><a href="android/broadcast/动态监听广播.html">113.5. 动态监听广播</a></span></dt><dt><span class="section"><a href="android/broadcast/广播重复接收.html">113.6. 广播重复接收</a></span></dt><dt><span class="section"><a href="android/broadcast/指定静态广播接收者.html">113.7. 指定静态广播接收者</a></span></dt><dt><span class="section"><a href="android/broadcast/异步执行广播.html">113.8. 异步执行广播</a></span></dt><dt><span class="section"><a href="android/broadcast/静态广播接收不到信息.html">113.9. 静态广播接收不到信息</a></span></dt><dt><span class="section"><a href="android/broadcast/接受蓝牙广播.html">113.10. 接受蓝牙广播</a></span></dt><dt><span class="section"><a href="android/broadcast/broadcast.usb.html">113.11. 接收 USB 设备广播</a></span></dt><dd><dl><dt><span class="section"><a href="android/broadcast/broadcast.usb.html#id1939">113.11.1. </a></span></dt></dl></dd><dt><span class="section"><a href="android/broadcast/broadcast.wifi.html">113.12. Wifi 广播</a></span></dt><dt><span class="section"><a href="android/broadcast/LiveDataBus.html">113.13. LiveDataBus - 官方 AndroidX jetpack</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/service/index.html">114. Service 服务</a></span></dt><dd><dl><dt><span class="section"><a href="android/service/index.html#service.startService">114.1. Service的基本用法</a></span></dt><dd><dl><dt><span class="section"><a href="android/service/index.html#service.manifest">114.1.1. manifest 文件</a></span></dt><dt><span class="section"><a href="android/service/index.html#service.myservice">114.1.2. 创建 Service</a></span></dt><dt><span class="section"><a href="android/service/index.html#service.layout">114.1.3. Layout 代码</a></span></dt><dt><span class="section"><a href="android/service/index.html#service.activity">114.1.4. Activity 代码</a></span></dt></dl></dd><dt><span class="section"><a href="android/service/sevice.bindService.html">114.2. bindService</a></span></dt><dt><span class="section"><a href="android/service/service.thread.html">114.3. Service 中启动线程</a></span></dt><dt><span class="section"><a href="android/service/service.activity.html">114.4. Service 和 Activity 通信</a></span></dt><dd><dl><dt><span class="section"><a href="android/service/service.activity.html#id1940">114.4.1. Layout</a></span></dt><dt><span class="section"><a href="android/service/service.activity.html#id1941">114.4.2. Service</a></span></dt><dt><span class="section"><a href="android/service/service.activity.html#id1942">114.4.3. Activity</a></span></dt></dl></dd><dt><span class="section"><a href="android/service/Service 和 Toast.html">114.5. Service 和 Toast</a></span></dt><dt><span class="section"><a href="android/service/Service 中启动 Activity.html">114.6. Service 中启动 Activity</a></span></dt><dt><span class="section"><a href="android/service/Service 中更新 UI.html">114.7. Service 中更新 UI</a></span></dt><dt><span class="section"><a href="android/service/service.startForegroundService.html">114.8. 前台启动 Service</a></span></dt><dt><span class="section"><a href="android/service/service.Fragment.html">114.9. 在 Fragment 中启动 Service</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/thread/index.html">115. Android 多线程</a></span></dt><dd><dl><dt><span class="section"><a href="android/thread/index.html#android.thread">115.1. Thread</a></span></dt><dd><dl><dt><span class="section"><a href="android/thread/index.html#id1943">115.1.1. 线程名称</a></span></dt><dt><span class="section"><a href="android/thread/index.html#id1944">115.1.2. 线程名称</a></span></dt><dt><span class="section"><a href="android/thread/index.html#thread.sleep">115.1.3. Sleep</a></span></dt></dl></dd><dt><span class="section"><a href="android/thread/android.Handler.html">115.2. Handler</a></span></dt><dt><span class="section"><a href="android/thread/HandlerThread.html">115.3. HandlerThread</a></span></dt><dd><dl><dt><span class="section"><a href="android/thread/HandlerThread.html#Handler.post">115.3.1. Handler post</a></span></dt><dt><span class="section"><a href="android/thread/HandlerThread.html#Handler.SendMessage">115.3.2. 发送消息</a></span></dt><dt><span class="section"><a href="android/thread/HandlerThread.html#id1945">115.3.3. 完整例子</a></span></dt><dt><span class="section"><a href="android/thread/HandlerThread.html#id1946">115.3.4. 获取线程名称</a></span></dt><dt><span class="section"><a href="android/thread/HandlerThread.html#HandlerThread.post.sleep">115.3.5. HandlerThread 队列</a></span></dt><dt><span class="section"><a href="android/thread/HandlerThread.html#id1947">115.3.6. Token 应用</a></span></dt></dl></dd><dt><span class="section"><a href="android/thread/android.queue.html">115.4. 消息队列</a></span></dt><dd><dl><dt><span class="section"><a href="android/thread/android.queue.html#ConcurrentLinkedQueue">115.4.1. 非阻塞队列 ConcurrentLinkedQueue</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/notification/index.html">116. Notification 通知中心</a></span></dt><dd><dl><dt><span class="section"><a href="android/notification/index.html#id1948">116.1. 文本通知</a></span></dt><dt><span class="section"><a href="android/notification/ch116s02.html">116.2. 添加点击操作</a></span></dt><dt><span class="section"><a href="android/notification/ch116s03.html">116.3. Notification 给 Activity 传值</a></span></dt><dt><span class="section"><a href="android/notification/ch116s04.html">116.4. 通过 isNotification 判断是否需要执行 onStop() 和 onDestroy()</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/nfc/index.html">117. NFC (Near field communication)</a></span></dt><dd><dl><dt><span class="section"><a href="android/nfc/index.html#nfc.AndroidManifest.xml">117.1. AndroidManifest.xml 文件配置</a></span></dt><dt><span class="section"><a href="android/nfc/nfc.loyout.html">117.2. Loyout 文件</a></span></dt><dt><span class="section"><a href="android/nfc/nfc.Activity.html">117.3. Activity 文件</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/graphics/index.html">118. 图形开发</a></span></dt><dd><dl><dt><span class="section"><a href="android/graphics/index.html#graphics.paint">118.1. Paint</a></span></dt><dd><dl><dt><span class="section"><a href="android/graphics/index.html#id1949">118.1.1. Paint.setTextSize() SP to PX</a></span></dt></dl></dd><dt><span class="section"><a href="android/graphics/ch118s02.html">118.2. AnimationDrawable</a></span></dt><dt><span class="section"><a href="android/graphics/ch118s03.html">118.3. 矩形</a></span></dt><dt><span class="section"><a href="android/graphics/ch118s04.html">118.4. 路径</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/eventbus/index.html">119. EventBus</a></span></dt><dd><dl><dt><span class="section"><a href="android/eventbus/index.html#EventBus.Gradle">119.1. 添加 EventBus 依赖到项目Gradle文件</a></span></dt><dt><span class="section"><a href="android/eventbus/EventBus.getingstart.html">119.2. 快速开始一个演示例子</a></span></dt><dd><dl><dt><span class="section"><a href="android/eventbus/EventBus.getingstart.html#id1950">119.2.1. 创建 MessageEvent 类</a></span></dt><dt><span class="section"><a href="android/eventbus/EventBus.getingstart.html#id1951">119.2.2. Layout</a></span></dt><dt><span class="section"><a href="android/eventbus/EventBus.getingstart.html#id1952">119.2.3. Activity</a></span></dt></dl></dd><dt><span class="section"><a href="android/eventbus/StickyEvents.html">119.3. Sticky Events</a></span></dt><dd><dl><dt><span class="section"><a href="android/eventbus/StickyEvents.html#id1953">119.3.1. MainActivity</a></span></dt><dt><span class="section"><a href="android/eventbus/StickyEvents.html#id1954">119.3.2. StickyActivity</a></span></dt><dt><span class="section"><a href="android/eventbus/StickyEvents.html#id1955">119.3.3. MessageEvent</a></span></dt><dt><span class="section"><a href="android/eventbus/StickyEvents.html#removeStickyEvent">119.3.4. 删除粘性事件</a></span></dt></dl></dd><dt><span class="section"><a href="android/eventbus/ThreadMode.html">119.4. 线程模型</a></span></dt><dt><span class="section"><a href="android/eventbus/EventBus.builder.html">119.5. 配置 EventBus </a></span></dt><dt><span class="section"><a href="android/eventbus/EventBus.priority.html">119.6. 事件优先级</a></span></dt><dt><span class="section"><a href="android/eventbus/ThrowableFailureEvent.html">119.7. 捕获异常事件</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/mqtt/index.html">120. Android MQTT</a></span></dt><dd><dl><dt><span class="section"><a href="android/mqtt/index.html#id1956">120.1. build.gradle 添加依赖包</a></span></dt><dt><span class="section"><a href="android/mqtt/ch120s02.html">120.2. AndroidManifest.xml</a></span></dt><dt><span class="section"><a href="android/mqtt/ch120s03.html">120.3. Android Mqtt v5 例子</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/database/index.html">121. 数据库</a></span></dt><dd><dl><dt><span class="section"><a href="android/database/index.html#SharedPreferences">121.1. SharedPreferences</a></span></dt><dd><dl><dt><span class="section"><a href="android/database/index.html#SharedPreferences.Mode">121.1.1. 操作模式</a></span></dt><dt><span class="section"><a href="android/database/index.html#SharedPreferences.Put">121.1.2. 保存数据</a></span></dt><dt><span class="section"><a href="android/database/index.html#SharedPreferences.Get">121.1.3. 读取数据</a></span></dt><dt><span class="section"><a href="android/database/index.html#sharedPreferences.contains">121.1.4. 通过 key 查询数据是否存在</a></span></dt><dt><span class="section"><a href="android/database/index.html#SharedPreferences.editor.remove">121.1.5. 删除数据</a></span></dt><dt><span class="section"><a href="android/database/index.html#SharedPreferences.editor.clear">121.1.6. 清空数据</a></span></dt><dt><span class="section"><a href="android/database/index.html#SharedPreferences.object">121.1.7. 对象存储</a></span></dt><dt><span class="section"><a href="android/database/index.html#SharedPreferences.xml">121.1.8. SharedPreferences 读取物理存储文件</a></span></dt></dl></dd><dt><span class="section"><a href="android/database/Room.html">121.2. Room</a></span></dt><dd><dl><dt><span class="section"><a href="android/database/Room.html#id1957">121.2.1. 快速开始并掌握 Room 数据库</a></span></dt><dt><span class="section"><a href="android/database/Room.html#id1958">121.2.2. 组合唯一索引</a></span></dt></dl></dd><dt><span class="section"><a href="android/database/PreferencesDataStore.html">121.3. Preferences DataStore</a></span></dt><dt><span class="section"><a href="android/database/ProtoDataStore.html">121.4. Proto DataStore</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/misc/index.html">122. 杂项</a></span></dt><dd><dl><dt><span class="section"><a href="android/misc/index.html#id1959">122.1. Caused by: java.net.UnknownServiceException: CLEARTEXT
communication to 47.100.253.187 not permitted by network security
policy
</a></span></dt><dt><span class="section"><a href="android/misc/Design-pattern.html">122.2. 设计模式</a></span></dt><dd><dl><dt><span class="section"><a href="android/misc/Design-pattern.html#Singleton">122.2.1. 单例模式</a></span></dt></dl></dd><dt><span class="section"><a href="android/misc/android.os.html">122.3. Android OS 包</a></span></dt><dd><dl><dt><span class="section"><a href="android/misc/android.os.html#android.os.Process.myTid">122.3.1. 进程ID</a></span></dt><dt><span class="section"><a href="android/misc/android.os.html#id1960">122.3.2. handler</a></span></dt></dl></dd><dt><span class="section"><a href="android/misc/ch122s04.html">122.4. fastjson android</a></span></dt><dd><dl><dt><span class="section"><a href="android/misc/ch122s04.html#id1961">122.4.1. 对象转字符串</a></span></dt><dt><span class="section"><a href="android/misc/ch122s04.html#id1962">122.4.2. JsonObject 转对象</a></span></dt><dt><span class="section"><a href="android/misc/ch122s04.html#id1963">122.4.3. 字符串 与 json 互转</a></span></dt><dt><span class="section"><a href="android/misc/ch122s04.html#id1964">122.4.4. json 转 数组</a></span></dt><dt><span class="section"><a href="android/misc/ch122s04.html#id1965">122.4.5. JSON数组转List</a></span></dt><dt><span class="section"><a href="android/misc/ch122s04.html#id1966">122.4.6. Map 与 Json 互转</a></span></dt></dl></dd><dt><span class="section"><a href="android/misc/ButterKnife.html">122.5. Butter Knife</a></span></dt><dt><span class="section"><a href="android/misc/things.html">122.6. Android Things</a></span></dt><dd><dl><dt><span class="section"><a href="android/misc/things.html#id1967">122.6.1. GPIO</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/android.faq.html">123. FAQ</a></span></dt><dd><dl><dt><span class="section"><a href="android/android.faq.html#CLEARTEXT">123.1. java.net.UnknownServiceException: CLEARTEXT communication to 192.168.0.185 not permitted by network security policy</a></span></dt><dt><span class="section"><a href="android/android.os.NetworkOnMainThreadException.html">123.2. Caused by: android.os.NetworkOnMainThreadException</a></span></dt><dt><span class="section"><a href="android/ch123s03.html">123.3. java.lang.IllegalStateException: Player is accessed on the wrong thread.</a></span></dt><dt><span class="section"><a href="android/ch123s04.html">123.4. Manifest merger failed with multiple errors, see logs</a></span></dt><dt><span class="section"><a href="android/ch123s05.html">123.5. android.os.NetworkOnMainThreadException</a></span></dt><dt><span class="section"><a href="android/ch123s06.html">123.6. package does not have vibrate permission</a></span></dt><dt><span class="section"><a href="android/ch123s07.html">123.7. Can't create handler inside thread Thread[...,5,main] that has not called Looper.prepare()</a></span></dt><dt><span class="section"><a href="android/ch123s08.html">123.8. java.lang.SecurityException: Permission denied (missing INTERNET permission?)</a></span></dt><dt><span class="section"><a href="android/ch123s09.html">123.9. java.io.IOException: Cleartext HTTP traffic to **** not permitted</a></span></dt><dt><span class="section"><a href="android/ch123s10.html">123.10. 调试技巧,找不到哪里调用</a></span></dt></dl></dd><dt><span class="chapter"><a href="android/kotlin/index.html">124. 从 Java 到 Kotlin</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/index.html#kotlin.data">124.1. 数据类型与数据结构</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/index.html#kotlin.string">124.1.1. 字符串</a></span></dt><dt><span class="section"><a href="android/kotlin/index.html#kotlin.date">124.1.2. 日期时间</a></span></dt><dt><span class="section"><a href="android/kotlin/index.html#kotlin.array">124.1.3. 数组</a></span></dt><dt><span class="section"><a href="android/kotlin/index.html#kotlin.list">124.1.4. List 列表</a></span></dt><dt><span class="section"><a href="android/kotlin/index.html#kotlin.map">124.1.5. Map 图</a></span></dt><dt><span class="section"><a href="android/kotlin/index.html#id1982">124.1.6. let</a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/kotlin.class.html">124.2. Class</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/kotlin.class.html#id1983">124.2.1. 枚举</a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/kotlin.loop.html">124.3. 流程控制</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/kotlin.loop.html#id1984">124.3.1. </a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.loop.html#id1985">124.3.2. 循环</a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/kotlin.callback.html">124.4. Callback 回调</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/kotlin.callback.html#id1986">124.4.1. Consumer</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.callback.html#id1987">124.4.2. callback</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.callback.html#id1988">124.4.3. 定义接口方式</a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/kotlin.ui.html">124.5. 界面操作</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/kotlin.ui.html#findViewById">124.5.1. findViewById</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.ui.html#runOnUiThread">124.5.2. runOnUiThread</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.ui.html#kotlin.Fragment">124.5.3. Fragment</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.ui.html#kotlin">124.5.4. ImageView</a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/kotlin.thread.html">124.6. Thread</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/kotlin.thread.html#kotlin.Handler">124.6.1. Handler</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.thread.html#id1990">124.6.2. </a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/kotlin.timer.html">124.7. 定时与延迟执行</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/kotlin.timer.html#id1991">124.7.1. Timer</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.timer.html#id1992">124.7.2. </a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/MutableLiveData.html">124.8. MutableLiveData</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/MutableLiveData.html#id1993">124.8.1. MutableLiveData 使用 Pair 传 key, value 两个值</a></span></dt><dt><span class="section"><a href="android/kotlin/MutableLiveData.html#id1994">124.8.2. MutableLiveData 传自定义对象</a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/kotlin.Flow.html">124.9. Flow</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/kotlin.Flow.html#id1995">124.9.1. MutableSharedFlow</a></span></dt></dl></dd><dt><span class="section"><a href="android/kotlin/kotlin.Coroutine.html">124.10. 协程</a></span></dt><dd><dl><dt><span class="section"><a href="android/kotlin/kotlin.Coroutine.html#GlobalScope">124.10.1. GlobalScope</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.Coroutine.html#MainScope">124.10.2. MainScope</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.Coroutine.html#lifecycleScope">124.10.3. lifecycleScope</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.Coroutine.html#id2007">124.10.4. </a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.Coroutine.html#viewModelScope">124.10.5. viewModelScope</a></span></dt><dt><span class="section"><a href="android/kotlin/kotlin.Coroutine.html#id2008">124.10.6. 协程上下文与继承关系</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="android/cloud.html">125. 云服务</a></span></dt><dd><dl><dt><span class="section"><a href="android/cloud.html#xfyun">125.1. 讯飞云</a></span></dt><dd><dl><dt><span class="section"><a href="android/cloud.html#id2014">125.1.1. AIUI</a></span></dt><dt><span class="section"><a href="android/cloud.html#tts">125.1.2. 讯飞 TTS</a></span></dt><dt><span class="section"><a href="android/cloud.html#id2018">125.1.3. 语音唤醒</a></span></dt></dl></dd><dt><span class="section"><a href="android/aliyun.html">125.2. 阿里云</a></span></dt><dd><dl><dt><span class="section"><a href="android/aliyun.html#id2019">125.2.1. nuisdk-release.aar 版本问题</a></span></dt><dt><span class="section"><a href="android/aliyun.html#id2020">125.2.2. 获取 Token</a></span></dt><dt><span class="section"><a href="android/aliyun.html#id2021">125.2.3. 语音唤醒</a></span></dt><dt><span class="section"><a href="android/aliyun.html#id2023">125.2.4. CosyVoice 语音合成</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix.html">1. 附录</a></span></dt><dd><dl><dt><span class="section"><a href="appendix.html#id2024">1.1. 一致性算法</a></span></dt></dl></dd></dl></div><div class="list-of-examples"><p><strong>范例清单</strong></p><dl><dt>1.1. <a href="java/jvm/jdk6.html#id2025">/etc/profile.d/java.sh</a></dt><dt>23.1. <a href="build/pom.xml.html#id2026">Maven properties</a></dt><dt>23.2. <a href="build/pom.xml.html#id2027">将本地 lib/*.jar 包添加到项目中</a></dt><dt>23.3. <a href="build/pom.xml.html#id2028">将本地 src/resources 打包到项目</a></dt><dt>23.4. <a href="build/maven.module.html#id2029">Maven parent</a></dt><dt>23.5. <a href="build/maven.module.html#id2030">watir-webdriver example</a></dt><dt>35.1. <a href="boot/oracle/index.html#id2031">Example Spring boot with Oracle </a></dt><dt>8. <a href="boot/index.html#id2032">RedisTemplate</a></dt><dt>43.1. <a href="boot/queue/kafka.html#id2033">Spring boot with Apache kafka.</a></dt><dt>43.2. <a href="boot/queue/kafka.html#id2034">Spring boot with Apache kafka.</a></dt><dt>43.3. <a href="boot/queue/kafka.html#id2035">Test Spring Kafka</a></dt><dt>58.1. <a href="boot/email/spring-boot-starter-mail.html#id2036">Spring boot with Email (pom.xml)</a></dt><dt>66.1. <a href="framework/mvc/velocity/index.html#id2037">Spring boot with Velocity template (pom.xml)</a></dt><dt>70.1. <a href="framework/tomcat/mybatis.html#id2038">MyBatis</a></dt><dt>74.1. <a href="data/redis/index.html#id2039">Spring Data Redis Example</a></dt><dt>75.1. <a href="data/spring-data-mongodb.html#id2040">Spring Data MongoDB - springframework-servlet.xml</a></dt><dt>95.1. <a href="cache/index.html#id2041">memcached.java</a></dt><dt>105.1. <a href="android/schedule/Timer.html#id2042"></a></dt></dl></div>
</div><script xmlns="" type="text/javascript" id="clustrmaps" src="//cdn.clustrmaps.com/map_v2.js?u=r5HG&d=9mi5r_kkDC8uxG8HuY3p4-2qgeeVypAK9vMD-2P6BYM"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="preface.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> 自述</td></tr></table></div><script xmlns="">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-11694057-1', 'auto');
ga('send', 'pageview');
</script><script xmlns="" async="async">
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?93967759a51cda79e49bf4e34d0b0f2c";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script xmlns="" async="async">
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script></body></html>