<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>2016 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/2016/</link><description>Recent content in 2016 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 15 Nov 2016 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/2016/index.xml" rel="self" type="application/rss+xml"/><item><title>Windows 数据库客户端实战：MySQL / Redis / SQLite / MQTTX / Elasticsearch</title><link>https://liangweidonggood.github.io/p/windows-shu-ju-ku-ke-hu-duan/</link><pubDate>Tue, 15 Nov 2016 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/windows-shu-ju-ku-ke-hu-duan/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/windows-shu-ju-ku-ke-hu-duan/image/cover.jpg" alt="Featured image of post Windows 数据库客户端实战：MySQL / Redis / SQLite / MQTTX / Elasticsearch" /&gt;&lt;h2 id="一2016-年数据库客户端格局"&gt;一、2016 年数据库客户端格局
&lt;/h2&gt;&lt;p&gt;2016 年的数据库世界：&lt;strong&gt;MySQL 仍是事实 OLTP 之王&lt;/strong&gt;、&lt;strong&gt;Redis 已经是缓存标配&lt;/strong&gt;、&lt;strong&gt;SQLite 在移动端大杀四方&lt;/strong&gt;、&lt;strong&gt;MQTT 协议在 IoT 崛起&lt;/strong&gt;、&lt;strong&gt;Elasticsearch 2.x 到 5.x 跨大版本&lt;/strong&gt;。本文整理 5 款数据库 / 消息客户端的实战用法。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;阅读建议&lt;/strong&gt;：本文面向&lt;strong&gt;全栈 / 后端开发者&lt;/strong&gt;，&lt;strong&gt;重点在工具选型 + 性能调优&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二mysql-客户端"&gt;二、MySQL 客户端
&lt;/h2&gt;&lt;h3 id="21-命令行"&gt;2.1 命令行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -h &amp;lt;HOST&amp;gt; -P &lt;span class="m"&gt;3306&lt;/span&gt; -u root -p&amp;lt;password&amp;gt; &amp;lt;DB&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 常用命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SHOW DATABASES&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;USE mydb&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SHOW TABLES&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DESCRIBE users&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT * FROM users LIMIT 10&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 导出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysqldump -h &amp;lt;HOST&amp;gt; -u root -p&amp;lt;password&amp;gt; mydb &amp;gt; backup.sql
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 导入&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -h &amp;lt;HOST&amp;gt; -u root -p&amp;lt;password&amp;gt; mydb &amp;lt; backup.sql
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 执行 SQL 文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -h &amp;lt;HOST&amp;gt; -u root -p&amp;lt;password&amp;gt; mydb &amp;lt; init.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="22-gui-工具对比"&gt;2.2 GUI 工具对比
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
					&lt;th&gt;价格&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Navicat&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;多数据库 / 完整&lt;/td&gt;
					&lt;td&gt;商业付费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;DBeaver&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;免费开源&lt;/strong&gt; / 多数据库&lt;/td&gt;
					&lt;td&gt;开源（&lt;strong&gt;EE 收费&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;MySQL Workbench&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;官方 / 建模&lt;/td&gt;
					&lt;td&gt;免费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;HeidiSQL&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;轻量&lt;/td&gt;
					&lt;td&gt;免费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;phpMyAdmin&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Web&lt;/td&gt;
					&lt;td&gt;免费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;DataGrip&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;JetBrains / 最强&lt;/td&gt;
					&lt;td&gt;商业付费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Sequel Ace&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Mac 开源&lt;/td&gt;
					&lt;td&gt;免费&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="23-mysql-80-新特性"&gt;2.3 MySQL 8.0 新特性
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;窗口函数&lt;/strong&gt;（&lt;code&gt;ROW_NUMBER() OVER&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CTE 公共表表达式&lt;/strong&gt;（&lt;code&gt;WITH&lt;/code&gt; 子句）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JSON 增强&lt;/strong&gt;（&lt;code&gt;JSON_TABLE&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;降序索引&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;caching_sha2_password&lt;/strong&gt;（&lt;strong&gt;默认鉴权插件&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="24-性能调优"&gt;2.4 性能调优
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;慢查询日志&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# /etc/my.cnf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;slow_query_log&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;slow_query_log_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;/var/log/mysql/slow.log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;long_query_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;log_queries_not_using_indexes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;索引优化&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 查看执行计划
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;EXPLAIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;foo@bar.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 关键字段：type, key, rows, Extra
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- type = ALL: 全表扫描
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- type = ref: 索引扫描
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- type = const: 主键/唯一索引等值
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;连接数&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 当前连接
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SHOW&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;STATUS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIKE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Threads_connected&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 最大连接
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SHOW&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VARIABLES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIKE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;max_connections&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="三redis-客户端"&gt;三、Redis 客户端
&lt;/h2&gt;&lt;h3 id="31-命令行"&gt;3.1 命令行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;redis-cli -h &amp;lt;HOST&amp;gt; -p &lt;span class="m"&gt;6379&lt;/span&gt; -a &amp;lt;password&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 常用命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SET user:1 &lt;span class="s2"&gt;&amp;#34;alice&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GET user:1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DEL user:1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EXISTS user:1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EXPIRE user:1 &lt;span class="m"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 哈希&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HSET user:1 name &lt;span class="s2"&gt;&amp;#34;alice&amp;#34;&lt;/span&gt; age &lt;span class="m"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HGETALL user:1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LPUSH queue:msg &lt;span class="s2"&gt;&amp;#34;msg1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RPOP queue:msg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 集合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SADD tags &lt;span class="s2"&gt;&amp;#34;java&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SMEMBERS tags
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 有序集合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ZADD rank &lt;span class="m"&gt;100&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;alice&amp;#34;&lt;/span&gt; &lt;span class="m"&gt;95&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;bob&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ZRANGE rank &lt;span class="m"&gt;0&lt;/span&gt; -1 WITHSCORES
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 管道&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PING\nSET k v\nGET k&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; redis-cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="32-gui-工具对比"&gt;3.2 GUI 工具对比
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;平台&lt;/th&gt;
					&lt;th&gt;价格&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Redis Desktop Manager (RDM)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;现改名 RESP.app&lt;/strong&gt; / 商业&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Medis&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Mac&lt;/td&gt;
					&lt;td&gt;开源&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Another Redis Desktop Manager&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;开源免费&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;RedisInsight&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台&lt;/td&gt;
					&lt;td&gt;官方 / 免费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;FastoRedis&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台&lt;/td&gt;
					&lt;td&gt;开源 / 商业&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Tiny RDM&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;新兴&lt;/td&gt;
					&lt;td&gt;国产 / 开源&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="33-实战string-缓存"&gt;3.3 实战：String 缓存
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 设置 5 分钟过期&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SET session:user:1001 &lt;span class="s2"&gt;&amp;#34;&amp;lt;json&amp;gt;&amp;#34;&lt;/span&gt; EX &lt;span class="m"&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 获取&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GET session:user:1001
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 原子递增&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;INCR counter:views:article:123
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="34-实战list-消息队列"&gt;3.4 实战：List 消息队列
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 生产者&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LPUSH queue:email &lt;span class="s2"&gt;&amp;#34;{\&amp;#34;to\&amp;#34;:\&amp;#34;a@x.com\&amp;#34;,\&amp;#34;subject\&amp;#34;:\&amp;#34;hi\&amp;#34;}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 消费者&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;BRPOP queue:email &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="c1"&gt;# 阻塞 0 秒直到有数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="35-性能监控"&gt;3.5 性能监控
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 实时命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;redis-cli MONITOR
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 慢查询&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;redis-cli SLOWLOG GET &lt;span class="m"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 内存分析&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;redis-cli MEMORY USAGE mykey
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;redis-cli INFO MEMORY
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="四sqlite-客户端"&gt;四、SQLite 客户端
&lt;/h2&gt;&lt;h3 id="41-命令行"&gt;4.1 命令行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 打开 / 创建数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sqlite3 mydb.db
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 常用命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.tables
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.schema users
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.headers on
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.mode column
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT * FROM users LIMIT 10&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sqlite3 mydb.db &lt;span class="s2"&gt;&amp;#34;.dump&amp;#34;&lt;/span&gt; &amp;gt; backup.sql
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 恢复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sqlite3 newdb.db &amp;lt; backup.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="42-gui-工具"&gt;4.2 GUI 工具
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;平台&lt;/th&gt;
					&lt;th&gt;价格&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;DB Browser for SQLite&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;免费开源&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;SQLiteStudio&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台&lt;/td&gt;
					&lt;td&gt;免费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Navicat for SQLite&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台&lt;/td&gt;
					&lt;td&gt;商业&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;DBeaver&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台&lt;/td&gt;
					&lt;td&gt;开源（&lt;strong&gt;EE 收费&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="43-db-browser-for-sqlite-实战"&gt;4.3 DB Browser for SQLite 实战
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;https://sqlitebrowser.org/&lt;/code&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 .db 文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Browse Data&lt;/code&gt; → 看表数据&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Execute SQL&lt;/code&gt; → 写 SQL&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Database Structure&lt;/code&gt; → 改表结构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export&lt;/strong&gt; → CSV / JSON / SQL&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="44-实战移动端加密数据库"&gt;4.4 实战：移动端加密数据库
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Python + SQLite 加密&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;sqlite3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;pysqlcipher3&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;dbapi2&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;sqlcipher&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sqlcipher&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;encrypted.db&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;PRAGMA key = &amp;#39;my-secret-password&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cursor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;commit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;实战&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;密码管理器&lt;/strong&gt;（&lt;strong&gt;如 1Password / Bitwarden&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地缓存&lt;/strong&gt;（&lt;strong&gt;Chrome 历史&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;小工具数据&lt;/strong&gt;（&lt;strong&gt;如 RSS 阅读器&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="五mqttx-客户端"&gt;五、MQTTX 客户端
&lt;/h2&gt;&lt;h3 id="51-mqtt-协议背景"&gt;5.1 MQTT 协议背景
&lt;/h3&gt;&lt;p&gt;MQTT 1999 年由 IBM 发布，&lt;strong&gt;IoT 领域事实标准&lt;/strong&gt;。&lt;strong&gt;核心概念&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Broker&lt;/strong&gt;：消息代理（&lt;strong&gt;EMQX / Mosquitto&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Client&lt;/strong&gt;：发布 / 订阅&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Topic&lt;/strong&gt;：主题（&lt;strong&gt;层级 / 通配符&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QoS&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0&lt;/code&gt;：最多一次&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1&lt;/code&gt;：至少一次&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2&lt;/code&gt;：恰好一次&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retain&lt;/strong&gt;：保留消息&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="52-mqttx-介绍"&gt;5.2 MQTTX 介绍
&lt;/h3&gt;&lt;p&gt;MQTTX 是 EMQX 团队开发的&lt;strong&gt;跨平台 MQTT 桌面客户端&lt;/strong&gt;。&lt;strong&gt;优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;跨平台&lt;/strong&gt;（&lt;strong&gt;Win / Mac / Linux&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持 MQTT 5.0&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多连接 / 多主题&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;消息格式化（&lt;/strong&gt; JSON / Hex**）**&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;脚本化&lt;/strong&gt;（&lt;strong&gt;自动测试&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="53-安装与连接"&gt;5.3 安装与连接
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;https://mqttx.app/&lt;/code&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新建连接
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Host&lt;/strong&gt;：&lt;code&gt;broker.emqx.io&lt;/code&gt;（&lt;strong&gt;公共测试&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Port&lt;/strong&gt;：&lt;code&gt;1883&lt;/code&gt;（&lt;strong&gt;TCP&lt;/strong&gt;）/ &lt;code&gt;8883&lt;/code&gt;（&lt;strong&gt;TLS&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Client ID&lt;/strong&gt;：随机生成&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;订阅：&lt;code&gt;test/topic&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;发布：同主题发 &lt;code&gt;{&amp;quot;hello&amp;quot;: &amp;quot;world&amp;quot;}&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="54-实战本地-mosquitto-调试"&gt;5.4 实战：本地 Mosquitto 调试
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动 Mosquitto&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mosquitto -p &lt;span class="m"&gt;1883&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 订阅&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mosquitto_sub -h 127.0.0.1 -t &lt;span class="s2"&gt;&amp;#34;test/#&amp;#34;&lt;/span&gt; -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 发布&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mosquitto_pub -h 127.0.0.1 -t &lt;span class="s2"&gt;&amp;#34;test/foo&amp;#34;&lt;/span&gt; -m &lt;span class="s2"&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;MQTTX 中&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Host&lt;/strong&gt;：&lt;code&gt;127.0.0.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;订阅&lt;/strong&gt;：&lt;code&gt;test/#&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发布&lt;/strong&gt;：&lt;code&gt;test/foo&lt;/code&gt; + &lt;code&gt;hello&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="55-实战tls--证书"&gt;5.5 实战：TLS / 证书
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MQTTX 高级设置：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- CA File: ca.crt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Client Cert: client.crt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Client Key: client.key
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Verify: true
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="56-脚本化自动化测试"&gt;5.6 脚本化（&lt;strong&gt;自动化测试&lt;/strong&gt;）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// MQTTX 脚本：连接 + 订阅 + 验证
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mqtt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;mqtt&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mqtt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;mqtt://broker.emqx.io:1883&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;connect&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test/topic&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test/topic&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;hello mqtt&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;message&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`收到: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="六elasticsearch-客户端"&gt;六、Elasticsearch 客户端
&lt;/h2&gt;&lt;h3 id="61-协议背景"&gt;6.1 协议背景
&lt;/h3&gt;&lt;p&gt;Elasticsearch 2010 年发布，&lt;strong&gt;基于 Lucene 的分布式搜索&lt;/strong&gt;。&lt;strong&gt;2016 年发布 5.0&lt;/strong&gt;（&lt;strong&gt;重大重构&lt;/strong&gt;）。&lt;strong&gt;核心概念&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Index&lt;/strong&gt;：索引（&lt;strong&gt;类比 MySQL 数据库&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Type&lt;/strong&gt;（&lt;strong&gt;5.x&lt;/strong&gt;）/&lt;strong&gt;Document&lt;/strong&gt;（&lt;strong&gt;6.x 起弱化 Type&lt;/strong&gt;）：文档&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mapping&lt;/strong&gt;：字段类型定义&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shard / Replica&lt;/strong&gt;：分片 / 副本&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="62-http-api"&gt;6.2 HTTP API
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 创建索引&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -X PUT &lt;span class="s2"&gt;&amp;#34;localhost:9200/my_index&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 索引文档&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -X PUT &lt;span class="s2"&gt;&amp;#34;localhost:9200/my_index/_doc/1&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -H &lt;span class="s2"&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -d &lt;span class="s1"&gt;&amp;#39;{&amp;#34;title&amp;#34;: &amp;#34;Hello&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;World&amp;#34;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 搜索&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -X GET &lt;span class="s2"&gt;&amp;#34;localhost:9200/my_index/_search?q=hello&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 复杂搜索（DSL）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -X GET &lt;span class="s2"&gt;&amp;#34;localhost:9200/my_index/_search&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -H &lt;span class="s2"&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -d &lt;span class="s1"&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;query&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;bool&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;must&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; { &amp;#34;match&amp;#34;: { &amp;#34;content&amp;#34;: &amp;#34;hello&amp;#34; } },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; { &amp;#34;range&amp;#34;: { &amp;#34;date&amp;#34;: { &amp;#34;gte&amp;#34;: &amp;#34;2020-01-01&amp;#34; } } }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="63-gui-工具"&gt;6.3 GUI 工具
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Kibana&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;官方 / &lt;strong&gt;必备&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ElasticHD&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;国产 / 轻量&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Elasticsearch Head&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;老牌 / Chrome 插件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Dejavu&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台 / 现代&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Cerebro&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;集群管理&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="64-kibana-dev-tools"&gt;6.4 Kibana Dev Tools
&lt;/h3&gt;&lt;p&gt;Kibana 装好后 → &lt;code&gt;Dev Tools&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="err"&gt;索引文档&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST&lt;/span&gt; &lt;span class="err"&gt;/my_index/_doc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;World&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2024-01-01&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="err"&gt;搜索&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;GET&lt;/span&gt; &lt;span class="err"&gt;/my_index/_search&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;query&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;match&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="65-实战日志搜索"&gt;6.5 实战：日志搜索
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="err"&gt;创建索引模板（自动&lt;/span&gt; &lt;span class="err"&gt;mapping）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;PUT&lt;/span&gt; &lt;span class="err"&gt;/_index_template/logs-template&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;index_patterns&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;logs-*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;template&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;number_of_shards&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mappings&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;@timestamp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;date&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;keyword&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;text&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;service&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;keyword&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="err"&gt;批量导入&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST&lt;/span&gt; &lt;span class="err"&gt;/logs&lt;/span&gt;&lt;span class="mf"&gt;-2024.01&lt;/span&gt;&lt;span class="err"&gt;/_bulk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;index&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;@timestamp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2024-01-01T10:00:00&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;INFO&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;started&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;service&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;api&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="66-性能调优"&gt;6.6 性能调优
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 索引设置&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;index.number_of_shards&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;index.number_of_replicas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;index.refresh_interval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;30s &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 默认 1s → 30s 减少 IO&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 字段类型优化&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;#34;message&amp;#34;: &lt;/span&gt;{&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;fields&amp;#34;: &lt;/span&gt;{&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;keyword&amp;#34;: { &amp;#34;type&amp;#34;: &amp;#34;keyword&amp;#34;, &amp;#34;ignore_above&amp;#34;: &lt;/span&gt;&lt;span class="m"&gt;256&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;}&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;}&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="七组合实战"&gt;七、组合实战
&lt;/h2&gt;&lt;h3 id="71-全栈后端开发环境"&gt;7.1 全栈后端开发环境
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;代码：IntelliJ IDEA + VSCode
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;本地 DB：MySQL / Redis / SQLite
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;消息：EMQX + MQTTX
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;搜索：Elasticsearch + Kibana
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;工具：Navicat / DBeaver / Redis Desktop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="72-iot-设备监控"&gt;7.2 IoT 设备监控
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;设备：MQTT Publish（sensor/data）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ EMQX Broker
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MQTTX 订阅
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 规则引擎
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;InfluxDB 时序存储
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ Grafana 看板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 告警 → 钉钉
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="73-日志分析系统"&gt;7.3 日志分析系统
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;应用 → Filebeat → Kafka
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ Logstash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Elasticsearch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ Kibana
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;可视化 / 告警
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="八常见问题"&gt;八、常见问题
&lt;/h2&gt;&lt;h3 id="81-mysql-80-caching_sha2_password-鉴权"&gt;8.1 MySQL 8.0 caching_sha2_password 鉴权
&lt;/h3&gt;&lt;p&gt;旧客户端连接失败。&lt;strong&gt;解决&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;root&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;IDENTIFIED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WITH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mysql_native_password&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;lt;PASSWORD&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="82-redis-公网暴露被攻击"&gt;8.2 Redis 公网暴露被攻击
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;bind 127.0.0.1&lt;/strong&gt;：只本地访问&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;requirepass&lt;/strong&gt;：开密码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rename-command CONFIG &amp;ldquo;&amp;rdquo;&lt;/strong&gt;：禁 CONFIG 命令&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防火墙规则&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="83-sqlite-锁库问题"&gt;8.3 SQLite 锁库问题
&lt;/h3&gt;&lt;p&gt;SQLite 写操作会&lt;strong&gt;全库锁&lt;/strong&gt;。&lt;strong&gt;解决&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WAL 模式&lt;/strong&gt;：&lt;code&gt;PRAGMA journal_mode=WAL;&lt;/code&gt;（&lt;strong&gt;读写并发&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;超时设置&lt;/strong&gt;：&lt;code&gt;PRAGMA busy_timeout=5000;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多连接 + 短事务&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="84-mqttx-连接失败"&gt;8.4 MQTTX 连接失败
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;端口&lt;/strong&gt;：&lt;code&gt;1883&lt;/code&gt;（&lt;strong&gt;TCP&lt;/strong&gt;）/ &lt;code&gt;8883&lt;/code&gt;（&lt;strong&gt;TLS&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Client ID 冲突&lt;/strong&gt;：自动生成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;认证&lt;/strong&gt;：填 username / password&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TLS 证书&lt;/strong&gt;：自签名需要勾&amp;quot;允许自签名&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="85-elasticsearch-启动报错"&gt;8.5 Elasticsearch 启动报错
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JVM 堆不够&lt;/strong&gt;：调 &lt;code&gt;-Xms&lt;/code&gt; / &lt;code&gt;-Xmx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;root 用户&lt;/strong&gt;：需要 &lt;code&gt;-Ediscovery.type=single-node&lt;/code&gt; + 创建 &lt;code&gt;elasticsearch&lt;/code&gt; 用户&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;max_map_count&lt;/strong&gt;：&lt;code&gt;sysctl -w vm.max_map_count=262144&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="九下一步"&gt;九、下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想看消息队列：&lt;strong&gt;[2023-12-15 消息队列镜像实战：RabbitMQ / EMQX / ActiveMQ]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看监控告警：&lt;strong&gt;[2025-03-15 Prometheus 监控告警体系]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看时序数据库：&lt;strong&gt;[2023-09-15 时序数据库三剑客]&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2016 年，回看当时&lt;/strong&gt;：MySQL 8.0 还未发布（&lt;strong&gt;2018-04&lt;/strong&gt;）；Redis 4.0 时代，&lt;strong&gt;模块系统&lt;/strong&gt;才刚上；&lt;strong&gt;MQTT 5.0 还在草案&lt;/strong&gt;（&lt;strong&gt;2019 发布&lt;/strong&gt;）；&lt;strong&gt;Elasticsearch 5.0 重构了 Type 概念&lt;/strong&gt;——&lt;strong&gt;10 年后 5 款工具仍是同类最强&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;</description></item><item><title>Android 工具链实战：Jadx 反编译 / JD-GUI / Auto.js / Nox 模拟器</title><link>https://liangweidonggood.github.io/p/windows-android-gong-ju-lian/</link><pubDate>Sun, 15 May 2016 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/windows-android-gong-ju-lian/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/windows-android-gong-ju-lian/image/cover.jpg" alt="Featured image of post Android 工具链实战：Jadx 反编译 / JD-GUI / Auto.js / Nox 模拟器" /&gt;&lt;h2 id="一android-工具链的开发--逆向双面"&gt;一、Android 工具链的&amp;quot;开发 + 逆向&amp;quot;双面
&lt;/h2&gt;&lt;p&gt;2016 年的 Android 工具链呈&amp;quot;两极分化&amp;quot;——&lt;strong&gt;开发向&lt;/strong&gt; 走 Android Studio / Gradle，&lt;strong&gt;逆向向&lt;/strong&gt;走 Smali / APK 反编译 / Hook；&lt;strong&gt;自动化向&lt;/strong&gt;走 Auto.js / UIAutomator；&lt;strong&gt;调试向&lt;/strong&gt;走模拟器 / 真机 + Fiddler 抓包。本文整理 4 款&lt;strong&gt;逆向 / 自动化&lt;/strong&gt;专用工具。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;阅读建议&lt;/strong&gt;：本文面向&lt;strong&gt;Android 安全研究员 / 移动测试工程师 / 自动化玩家&lt;/strong&gt;。&lt;strong&gt;仅讨论开源 / 免费 / 公开技术&lt;/strong&gt;，&lt;strong&gt;不涉及任何非法破解&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二jadxapk-反编译利器"&gt;二、Jadx：APK 反编译利器
&lt;/h2&gt;&lt;h3 id="21-定位"&gt;2.1 定位
&lt;/h3&gt;&lt;p&gt;Jadx 2014 年开源，&lt;strong&gt;把 APK 里的 .dex 反编译成 .java&lt;/strong&gt;。&lt;strong&gt;优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GUI + CLI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反编译质量高&lt;/strong&gt;（&lt;strong&gt;比 d2j-dex2jar + jd-gui 强&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持资源和 AndroidManifest.xml&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;免费开源&lt;/strong&gt;（&lt;strong&gt;Apache 2.0&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-安装"&gt;2.2 安装
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt;：&lt;code&gt;https://github.com/skylot/jadx/releases&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;平台&lt;/strong&gt;：Windows / macOS / Linux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解压即用&lt;/strong&gt;（&lt;strong&gt;无安装&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-gui-使用"&gt;2.3 GUI 使用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/jadx-gui.bat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;File → Open&lt;/code&gt; → 选 APK&lt;/li&gt;
&lt;li&gt;左侧树：包名 / 类名 / 资源&lt;/li&gt;
&lt;li&gt;中间：&lt;code&gt;Decompiled code&lt;/code&gt; 视图&lt;/li&gt;
&lt;li&gt;顶部：搜索类 / 方法 / 字段&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;实战&lt;/strong&gt;：&lt;strong&gt;找登录逻辑&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;搜索关键字：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;password&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;login&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;api/&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;https://&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;常见加密识别：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Base64 / AES / RSA / MD5
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 自定义算法（看类名含 Cipher/Encrypt/Hash）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="24-命令行"&gt;2.4 命令行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 完整反编译&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/jadx --output-dir out app.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 只反编译部分类&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/jadx --output-dir out --show-bad-code app.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 不导出资源&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/jadx --output-dir out --no-res app.apk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="25-高级选项"&gt;2.5 高级选项
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 显示行号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--show-bad-code
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 调试信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--export-gradle &lt;span class="c1"&gt;# 导出 Gradle 项目&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--no-imports &lt;span class="c1"&gt;# 不自动 import&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="26-替代品"&gt;2.6 替代品
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Jadx&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;开源 / 高质量&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;JEB&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;最强反混淆&lt;/strong&gt;（&lt;strong&gt;商业付费&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Bytecode Viewer&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;多引擎（&lt;strong&gt;Krakatau / Procyon&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;APKTool&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;资源 + Smali 反编译&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;d2j-dex2jar + jd-gui&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;老牌组合（&lt;strong&gt;质量差&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="三jd-guijava-class-查看器"&gt;三、JD-GUI：Java class 查看器
&lt;/h2&gt;&lt;h3 id="31-定位"&gt;3.1 定位
&lt;/h3&gt;&lt;p&gt;JD-GUI 2008 年发布，&lt;strong&gt;用 Java 写的小工具&lt;/strong&gt;，&lt;strong&gt;专门看 .class 文件的反编译源码&lt;/strong&gt;。&lt;strong&gt;比 Jadx 简单&lt;/strong&gt;（&lt;strong&gt;只支持 JAR/class，不支持 APK&lt;/strong&gt;）。&lt;/p&gt;
&lt;h3 id="32-安装"&gt;3.2 安装
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;http://java-decompiler.github.io/&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跨平台 JAR 包&lt;/li&gt;
&lt;li&gt;启动：&lt;code&gt;java -jar jd-gui.jar&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="33-实战"&gt;3.3 实战
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;反编译 .class&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;File → Open&lt;/code&gt; → 选 JAR / class&lt;/li&gt;
&lt;li&gt;左侧：包结构&lt;/li&gt;
&lt;li&gt;中间：反编译代码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可以搜索类 / 方法&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;实战&lt;/strong&gt;：看 Spring AOP 生成的 class：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;目标：理解 Spring 事务代理
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 找到 service 类的 $$FastClassByCGLIB$$xxx 文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 反编译看 invoke 方法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 看到 MethodInterceptor.invoke
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 理解 AOP 链
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="34-替代品"&gt;3.4 替代品
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;JD-GUI&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;经典 / Java 写&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CFR&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;命令行&lt;/strong&gt; / 高质量&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Procyon&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;现代 Java 8+&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;JD-Eclipse&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Eclipse 插件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;IntelliJ IDEA 内置&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;内置（&lt;strong&gt;已足够用&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="35-cfr-命令行"&gt;3.5 CFR 命令行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 反编译一个 class&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;java -jar cfr.jar MyClass.class
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 反编译整个 JAR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;java -jar cfr.jar my-app.jar --outputdir out/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Java 8 lambda&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;java -jar cfr.jar MyClass.class --usenametable &lt;span class="nb"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="四autojsandroid-自动化脚本"&gt;四、Auto.js：Android 自动化脚本
&lt;/h2&gt;&lt;h3 id="41-定位"&gt;4.1 定位
&lt;/h3&gt;&lt;p&gt;Auto.js 是 &lt;strong&gt;hyb1996&lt;/strong&gt; 个人开发的 Android 自动化工具，&lt;strong&gt;用 JavaScript 写脚本&lt;/strong&gt;。&lt;strong&gt;2017 年停更&lt;/strong&gt;（&lt;strong&gt;作者被抓&lt;/strong&gt;），&lt;strong&gt;但代码开源&lt;/strong&gt;：hyb1996/Auto.js。&lt;strong&gt;有 6.0+ 商业继承者&lt;/strong&gt;（&lt;strong&gt;AutoX / AutoJs6 / Hamibot&lt;/strong&gt;）。&lt;/p&gt;
&lt;h3 id="42-优势"&gt;4.2 优势
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用 JS 写&lt;/strong&gt;（&lt;strong&gt;门槛低&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完整 Android API&lt;/strong&gt;（&lt;strong&gt;UI / 网络 / 文件 / 数据库&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无障碍服务&lt;/strong&gt;（&lt;strong&gt;模拟点击&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OCR / 截图 / 录屏&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="43-安装与开发环境"&gt;4.3 安装与开发环境
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt;：&lt;code&gt;https://github.com/hyb1996/Auto.js&lt;/code&gt;（&lt;strong&gt;v4 / 早期版本&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Android 7+&lt;/strong&gt;：装 APK&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pro&lt;/strong&gt; 版（&lt;strong&gt;hyb1996 大神&lt;/strong&gt;）：有 VSCode 插件&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="44-第一个脚本自动点赞"&gt;4.4 第一个脚本：自动点赞
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 点赞脚本
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;waitFor&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// 等待无障碍服务开启
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 打开抖音
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;launchApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;抖音&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 模拟点击第一个视频
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;540&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 双击点赞
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;540&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;540&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;toast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;点赞完成！&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="45-进阶ui-自动化"&gt;4.5 进阶：UI 自动化
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 找特定控件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;登录&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;findOne&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 找带 className 的控件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;editText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;EditText&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;findOne&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;editText&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;hello world&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 滑动
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;swipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="46-ocr--点击"&gt;4.6 OCR + 点击
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 调用 OCR API 识别文字
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;ocrText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ocr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recognizeText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;captureScreen&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;toast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ocrText&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 找文字位置
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ocr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recognize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;captureScreen&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;登录&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pos&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;centerX&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nx"&gt;pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;centerY&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="47-实战自动签到"&gt;4.7 实战：自动签到
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 早 9 点自动签到
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;waitFor&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getHours&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getMinutes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;launchApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;某 App&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;btn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;签到&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;findOne&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;btn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;btn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;toast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;签到完成&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;60000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="48-autojs-6开源继承者"&gt;4.8 Auto.js 6（开源继承者）
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;https://github.com/aiselp/AutoX&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;兼容 Auto.js v4 API&lt;/li&gt;
&lt;li&gt;持续维护&lt;/li&gt;
&lt;li&gt;装好后&lt;strong&gt;直接跑老脚本&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="五nox-夜神模拟器android-模拟器"&gt;五、Nox 夜神模拟器：Android 模拟器
&lt;/h2&gt;&lt;h3 id="51-定位"&gt;5.1 定位
&lt;/h3&gt;&lt;p&gt;Nox 夜神模拟器 2015 年发布，&lt;strong&gt;国产最强 Android 模拟器&lt;/strong&gt;。&lt;strong&gt;比 BlueStacks / Andy&lt;/strong&gt; 强：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;国产 / 中文&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持 Android 5/7/9/12 多版本&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多开（&lt;/strong&gt; 1 台 PC 开 5+ 模拟器**）**&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Root 权限（&lt;/strong&gt; 默认开启**）**&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;游戏优化（&lt;/strong&gt; 键位映射**）**&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="52-安装"&gt;5.2 安装
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;https://www.yeshen.com/&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;装好&lt;strong&gt;首次启动自动装虚拟设备&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需要开启 VT-x&lt;/strong&gt;（&lt;strong&gt;BIOS&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="53-关键设置"&gt;5.3 关键设置
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;设置 → 高级&lt;/code&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;配置&lt;/th&gt;
					&lt;th&gt;推荐&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;性能&lt;/td&gt;
					&lt;td&gt;4 核 / 4 GB（&lt;strong&gt;看 CPU&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;分辨率&lt;/td&gt;
					&lt;td&gt;1920×1080（&lt;strong&gt;默认&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;帧数&lt;/td&gt;
					&lt;td&gt;60 FPS（&lt;strong&gt;游戏&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Root&lt;/td&gt;
					&lt;td&gt;开启（&lt;strong&gt;测试&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;ADB&lt;/td&gt;
					&lt;td&gt;远程连接（&lt;strong&gt;默认 62001 端口&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="54-adb-连接"&gt;5.4 ADB 连接
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 列出设备&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb devices
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 127.0.0.1:62001 device&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb connect 127.0.0.1:62001
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安装 APK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb install app.apk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 进入 shell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="55-多开"&gt;5.5 多开
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;多开管理器 → &lt;code&gt;新建模拟器&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 开&lt;/strong&gt;：i5 + 16 GB 内存基本够用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;i7 + 32 GB&lt;/strong&gt;：&lt;strong&gt;10 开&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="56-键位映射游戏"&gt;5.6 键位映射（游戏）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;右侧 &lt;code&gt;键盘操控&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;拖动按键到屏幕&lt;/li&gt;
&lt;li&gt;配 &lt;code&gt;WASD&lt;/code&gt; 等键&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FPS 游戏必备&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="57-替代品对比"&gt;5.7 替代品对比
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Nox&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;国产 / 中文&lt;/strong&gt; / 多开&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;BlueStacks&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;老牌 / 国际版&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;LDPlayer&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;轻量 / 雷电&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;MuMu 模拟器&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;网易系 / 游戏优化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Android Studio AVD&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;官方 / 慢&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Genymotion&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;商业 / 性能强&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;WSA&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Win 11 / Android 子系统&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="六fiddler--nox-抓包"&gt;六、Fiddler + Nox 抓包
&lt;/h2&gt;&lt;h3 id="61-准备"&gt;6.1 准备
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Nox 启动 + 装目标 App&lt;/li&gt;
&lt;li&gt;Fiddler 启动 + 设代理&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="62-fiddler-配置"&gt;6.2 Fiddler 配置
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Tools → Options → Connections&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fiddler listens on port&lt;/strong&gt;：&lt;code&gt;8888&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Allow remote computers to connect&lt;/code&gt;：&lt;strong&gt;勾选&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Tools → Options → HTTPS&lt;/code&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Capture HTTPS CONNECTs&lt;/code&gt;：&lt;strong&gt;勾选&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Decrypt HTTPS traffic&lt;/code&gt;：&lt;strong&gt;勾选&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;... from all processes&lt;/code&gt;：&lt;strong&gt;勾选&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="63-nox-代理配置"&gt;6.3 Nox 代理配置
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方法 1：Nox 设置 → Wi-Fi&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长按已连接 Wi-Fi → 修改网络&lt;/li&gt;
&lt;li&gt;代理：&lt;code&gt;127.0.0.1:8888&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方法 2：Root + adb 命令&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 推 Fiddler 证书到系统证书&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb push FiddlerRoot.cer /sdcard/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;su
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o rw,remount /system
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /sdcard/FiddlerRoot.cer /system/etc/security/cacerts/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;644&lt;/span&gt; /system/etc/security/cacerts/FiddlerRoot.cer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;方法 3：透明代理（&lt;/strong&gt; App 不开代理**）**&lt;/p&gt;
&lt;p&gt;用 &lt;code&gt;postern&lt;/code&gt; / &lt;code&gt;Drony&lt;/code&gt; 等 VPN 类工具。&lt;/p&gt;
&lt;h3 id="64-抓包实战"&gt;6.4 抓包实战
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Nox 启动 App&lt;/li&gt;
&lt;li&gt;Fiddler 看 HTTP/HTTPS 请求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关注&lt;/strong&gt;：URL、Header、Body、Response&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;典型抓包场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;登录流程&lt;/strong&gt; → 看 token / cookie&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支付流程&lt;/strong&gt; → 看签名算法&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;资源加载&lt;/strong&gt; → 找 CDN 域名&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="65-替代品"&gt;6.5 替代品
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Fiddler&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;老牌 / 强大 / 需 root&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Charles&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台 / 简单&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;mitmproxy&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;命令行 / 脚本化&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Wireshark&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;抓 TCP/UDP（&lt;strong&gt;无需代理&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;HttpCanary&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Android 直接抓（&lt;strong&gt;无需 PC&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="七组合实战"&gt;七、组合实战
&lt;/h2&gt;&lt;h3 id="71-android-应用安全审计"&gt;7.1 Android 应用安全审计
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;目标 APK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ Jadx 反编译
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;源码（Java）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 静态分析
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;找硬编码密码 / API key / 加密算法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 动态调试
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Fiddler / mitmproxy 抓 HTTPS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ Frida / Xposed Hook
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 完整安全报告
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="72-自动化测试"&gt;7.2 自动化测试
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Nox 多开（5 设备）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Airtest / Auto.js 脚本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;执行登录、签到、点击等操作
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Fiddler 抓包 + Logcat 看日志
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;性能 / 稳定性报告
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="73-移动爬虫"&gt;7.3 移动爬虫
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Auto.js 写脚本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 模拟滑动 / 点击
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Nox 跑模拟器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 截图
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jadx 看协议
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ Fiddler 抓 API
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;直接 HTTP 调 API
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="八常见问题"&gt;八、常见问题
&lt;/h2&gt;&lt;h3 id="81-jadx-反编译失败"&gt;8.1 Jadx 反编译失败
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;APK 加固（&lt;strong&gt;360 / 腾讯乐固 / 梆梆&lt;/strong&gt;）→ &lt;strong&gt;用 FDex2 / dumpDex 先脱壳&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;混淆严重 → &lt;strong&gt;用 JEB / GDA 替代&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--show-bad-code&lt;/code&gt; 强制显示&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="82-nox-卡顿"&gt;8.2 Nox 卡顿
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU 没开 VT&lt;/strong&gt;：BIOS 开启&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;显卡驱动升级&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关闭杀毒软件&lt;/strong&gt;（&lt;strong&gt;Hyper-V 冲突&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;改用 Android 5 版本&lt;/strong&gt;（&lt;strong&gt;比 7 快&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="83-fiddler-抓不到-https"&gt;8.3 Fiddler 抓不到 HTTPS
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;证书没装到系统证书&lt;/strong&gt;：用上述方法 2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App 用了 SSL Pinning&lt;/strong&gt;：需 &lt;strong&gt;JustTrustMe / SSLUnpinning&lt;/strong&gt; Xposed 模块&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App 用了双向认证&lt;/strong&gt;：需要 App 客户端证书&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="84-autojs-脚本不执行"&gt;8.4 Auto.js 脚本不执行
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无障碍服务&lt;/strong&gt;没开&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Android 版本不兼容&lt;/strong&gt;（&lt;strong&gt;v4 最高 9&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后台被杀&lt;/strong&gt; → 改用 ForegroundService&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="85-模拟器被检测"&gt;8.5 模拟器被检测
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;物理 MAC 改写&lt;/strong&gt;（&lt;strong&gt;Nox 支持&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IMEI 修改&lt;/strong&gt;（&lt;strong&gt;需 root + Xposed&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定位模拟&lt;/strong&gt;（&lt;strong&gt;Nox 自带&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPU 信息&lt;/strong&gt;（&lt;strong&gt;Nox 已优化&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="九下一步"&gt;九、下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想看抓包工具：&lt;strong&gt;[2016-11-15 数据库客户端实战：MySQL / Redis / ES / MQTT]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看 Fiddler 完整实战：&lt;strong&gt;[2018-09-15 Fiddler + Charles 抓包]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看 APK 自动化：&lt;strong&gt;App 自动化测试&lt;/strong&gt; 章节&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2016 年，回看当时&lt;/strong&gt;：Jadx 2014 开源，&lt;strong&gt;已取代老牌 d2j-dex2jar&lt;/strong&gt;；Auto.js 作者 2017 被抓后&lt;strong&gt;社区分裂&lt;/strong&gt;为多个 fork；Nox 至今仍是国产模拟器老大；&lt;strong&gt;这 4 款工具 10 年后仍是最常用的 Android 逆向 / 自动化组合&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;</description></item><item><title>Windows 工业通讯工具：OPC / Modbus / 串口 / Kepware / 模拟器</title><link>https://liangweidonggood.github.io/p/windows-gong-ye-tong-xun-opc-modbus/</link><pubDate>Fri, 15 Apr 2016 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/windows-gong-ye-tong-xun-opc-modbus/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/windows-gong-ye-tong-xun-opc-modbus/image/cover.jpg" alt="Featured image of post Windows 工业通讯工具：OPC / Modbus / 串口 / Kepware / 模拟器" /&gt;&lt;h2 id="一工控领域-windows-通讯工具背景"&gt;一、工控领域 Windows 通讯工具背景
&lt;/h2&gt;&lt;p&gt;2016 年是&lt;strong&gt;工业 4.0 / 智能制造&lt;/strong&gt;概念在国内开始落地的关键年份。&lt;strong&gt;传统 PLC 厂商&lt;/strong&gt;（西门子 S7、三菱 FX、欧姆龙 CP1H）通过&lt;strong&gt;OPC Server&lt;/strong&gt;暴露数据，&lt;strong&gt;SCADA / MES 系统&lt;/strong&gt;通过 &lt;strong&gt;Modbus / OPC DA / OPC UA&lt;/strong&gt;采集。本文整理 5 款工控专用工具。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;阅读建议&lt;/strong&gt;：本文面向&lt;strong&gt;工控开发者 / 自动化工程师 / SCADA 集成商&lt;/strong&gt;，重点在&lt;strong&gt;协议 + 工具选型&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二modbus-pollmodbus-主站模拟"&gt;二、Modbus Poll：Modbus 主站模拟
&lt;/h2&gt;&lt;h3 id="21-协议背景"&gt;2.1 协议背景
&lt;/h3&gt;&lt;p&gt;Modbus 1979 年由 Modicon（现 Schneider）发布，&lt;strong&gt;工业领域事实标准&lt;/strong&gt;。&lt;strong&gt;两类&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modbus RTU&lt;/strong&gt;：串口（RS-232/485），&lt;strong&gt;紧凑二进制&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modbus ASCII&lt;/strong&gt;：串口，&lt;strong&gt;可读文本&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modbus TCP&lt;/strong&gt;：以太网（&lt;strong&gt;默认 502 端口&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modbus RTU over TCP&lt;/strong&gt;：&lt;strong&gt;Modbus TCP 上跑 RTU 帧&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-modbus-poll-介绍"&gt;2.2 Modbus Poll 介绍
&lt;/h3&gt;&lt;p&gt;Modbus Poll 是 Witte Software 公司的商业 Modbus 主站工具，&lt;strong&gt;30 天试用&lt;/strong&gt;。&lt;strong&gt;功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;读写 Holding / Input / Coil 寄存器&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多窗口并发&lt;/strong&gt;（&lt;strong&gt;多设备&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史曲线 / 表格&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模拟从站&lt;/strong&gt;（&lt;strong&gt;自带 slave simulator&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-基本使用"&gt;2.3 基本使用
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Connection → Connect&lt;/code&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RTU&lt;/strong&gt;：&lt;code&gt;COM1 / 9600 / 8N1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TCP&lt;/strong&gt;：&lt;code&gt;IP:502&lt;/code&gt;（&lt;strong&gt;默认&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Setup → Read/Write Definition&lt;/code&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Slave ID&lt;/strong&gt;：1（&lt;strong&gt;默认&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Function&lt;/strong&gt;：03（&lt;strong&gt;Holding Register&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Address&lt;/strong&gt;：0&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quantity&lt;/strong&gt;：10&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;轮询&lt;/strong&gt;：每 1000 ms 自动读一次&lt;/li&gt;
&lt;li&gt;表格 + 曲线双视图&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="24-常用功能码"&gt;2.4 常用功能码
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;功能码&lt;/th&gt;
					&lt;th&gt;名称&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;01&lt;/td&gt;
					&lt;td&gt;Read Coils&lt;/td&gt;
					&lt;td&gt;读线圈（&lt;strong&gt;只读位&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;02&lt;/td&gt;
					&lt;td&gt;Read Discrete Inputs&lt;/td&gt;
					&lt;td&gt;读离散输入&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;03&lt;/td&gt;
					&lt;td&gt;Read Holding Registers&lt;/td&gt;
					&lt;td&gt;读保持寄存器（&lt;strong&gt;最常用&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;04&lt;/td&gt;
					&lt;td&gt;Read Input Registers&lt;/td&gt;
					&lt;td&gt;读输入寄存器&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;05&lt;/td&gt;
					&lt;td&gt;Write Single Coil&lt;/td&gt;
					&lt;td&gt;写单线圈&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;06&lt;/td&gt;
					&lt;td&gt;Write Single Register&lt;/td&gt;
					&lt;td&gt;写单寄存器&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;15&lt;/td&gt;
					&lt;td&gt;Write Multiple Coils&lt;/td&gt;
					&lt;td&gt;写多线圈&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;16&lt;/td&gt;
					&lt;td&gt;Write Multiple Registers&lt;/td&gt;
					&lt;td&gt;写多寄存器（&lt;strong&gt;最常用&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="25-实战读温度"&gt;2.5 实战：读温度
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;从站：温湿度传感器（Modbus RTU）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;寄存器 0x0000：温度值 × 10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;寄存器 0x0001：湿度值 × 10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Modbus Poll：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Slave ID: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Function: 03 (Holding)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Address: 0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Quantity: 2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Poll: 1000 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 解析：寄存器 0 = 0x0123 = 291 / 10 = 29.1 ℃
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="26-modbus-slave-模拟从站"&gt;2.6 Modbus Slave 模拟从站
&lt;/h3&gt;&lt;p&gt;Modbus Poll 自带 &lt;code&gt;Modbus Slave&lt;/code&gt; 工具（&lt;strong&gt;单独安装&lt;/strong&gt;）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Connection → Connect&lt;/code&gt; 选串口 / TCP&lt;/li&gt;
&lt;li&gt;配 Slave ID&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;双击单元格写值&lt;/strong&gt;（&lt;strong&gt;模拟设备数据&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;用 Modbus Poll 读&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;实战&lt;/strong&gt;：&lt;strong&gt;没设备时开发测试&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="27-替代品"&gt;2.7 替代品
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Modbus Poll&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;商业 / 图形化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;libmodbus&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;开源 C 库&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;pymodbus&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Python 库（&lt;strong&gt;最适合开发者&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ModbusTools&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;免费 / 功能弱&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ModbusME&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Android 上的 Modbus 工具&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;QModBus&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;开源 / 跨平台&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="三kepware-opc-server工业数据中枢"&gt;三、Kepware OPC Server：工业数据中枢
&lt;/h2&gt;&lt;h3 id="31-定位"&gt;3.1 定位
&lt;/h3&gt;&lt;p&gt;Kepware 是 PTC 旗下（2016 被收购）的 &lt;strong&gt;OPC Server 标准&lt;/strong&gt;。&lt;strong&gt;国内 80% 大型工控项目&lt;/strong&gt;用 Kepware 做&lt;strong&gt;数据网关&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;支持设备&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主流 PLC：西门子 S7、三菱 MC、欧姆龙 FINS、罗克韦尔 ControlLogix&lt;/li&gt;
&lt;li&gt;工业协议：Modbus、OPC UA、MQTT、Sparkplug B&lt;/li&gt;
&lt;li&gt;串口：以太网设备&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-安装与初始配置"&gt;3.2 安装与初始配置
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;商业付费（&lt;strong&gt;License 文件激活&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;装好 &lt;code&gt;KEPServerEX&lt;/code&gt; 主程序 + &lt;code&gt;Configuration&lt;/code&gt; 工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Configuration&lt;/code&gt; → &lt;code&gt;Project → Add Channel&lt;/code&gt; 选设备驱动&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="33-添加设备示例西门子-s7"&gt;3.3 添加设备示例（西门子 S7）
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;添加 Channel&lt;/strong&gt;：&lt;code&gt;Siemens TCP/IP Ethernet&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;添加 Device&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Device ID&lt;/strong&gt;：&lt;code&gt;S7-1500&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP&lt;/strong&gt;：&lt;code&gt;192.168.1.100&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Port&lt;/strong&gt;：&lt;code&gt;102&lt;/code&gt;（&lt;strong&gt;默认 S7 端口&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CPU Model&lt;/strong&gt;：&lt;code&gt;S7-1500&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;添加 Tag&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Address&lt;/strong&gt;：&lt;code&gt;DB1.DBD0&lt;/code&gt;（&lt;strong&gt;DB1 块偏移 0 的 DWORD&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Type&lt;/strong&gt;：&lt;code&gt;Float&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scan Rate&lt;/strong&gt;：&lt;code&gt;100 ms&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="34-客户端连接"&gt;3.4 客户端连接
&lt;/h3&gt;&lt;p&gt;Kepware 自带 &lt;code&gt;OPC Quick Client&lt;/code&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Tools → Launch OPC Quick Client&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;选 Kepware Server&lt;/li&gt;
&lt;li&gt;展开设备 → 看 Tag 实时值&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="35-modbus-驱动"&gt;3.5 Modbus 驱动
&lt;/h3&gt;&lt;p&gt;Kepware 也支持 Modbus 设备：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Channel&lt;/strong&gt;：&lt;code&gt;Modbus TCP/IP Ethernet&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Device ID&lt;/strong&gt;：&lt;code&gt;Modbus-Device-1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Port&lt;/strong&gt;：&lt;code&gt;502&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tag&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;400001&lt;/code&gt;（&lt;strong&gt;Holding Register 0&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;400002&lt;/code&gt;（&lt;strong&gt;Holding Register 1&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="36-高级功能"&gt;3.6 高级功能
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;IoT Gateway&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MQTT&lt;/strong&gt;：把数据推到云（&lt;strong&gt;Sparkplug B 格式&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST Client&lt;/strong&gt;：HTTP POST 到 API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS IoT Core / Azure IoT Hub&lt;/strong&gt;：直接对接云平台&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;冗余&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Master / Backup Server&lt;/strong&gt;：主备切换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration API&lt;/strong&gt;：动态加 Tag&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;安全&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OPC UA 加密&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户认证&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;审计日志&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="37-替代品对比"&gt;3.7 替代品对比
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Kepware&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;事实标准&lt;/strong&gt; / 商业付费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Matrikon OPC&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;加拿大 Matrikon / 强冗余&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;OpenOPC&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;开源 Python 库&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Prosys OPC UA&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨平台 / 工业级&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Siemens SIMATIC NET&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;西门子官方（&lt;strong&gt;强绑 S7&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Indusoft Web Studio&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;SCADA 自带 OPC&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="四matrikon-opcopc-冗余"&gt;四、Matrikon OPC：OPC 冗余
&lt;/h2&gt;&lt;h3 id="41-定位"&gt;4.1 定位
&lt;/h3&gt;&lt;p&gt;MatrikonOPC（&lt;strong&gt;Honeywell 收购&lt;/strong&gt;）是 OPC 领域的另一大厂。&lt;strong&gt;与 Kepware 区别&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Matrikon&lt;/strong&gt;：&lt;strong&gt;强冗余 + 强 OPC UA&lt;/strong&gt; + 加拿大本土&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kepware&lt;/strong&gt;：&lt;strong&gt;设备驱动最全&lt;/strong&gt;（&lt;strong&gt;200+ 设备&lt;/strong&gt;） + 美国 PTC&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="42-核心产品"&gt;4.2 核心产品
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;产品&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Matrikon OPC Server&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;多协议 OPC Server&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Matrikon OPC Tunneller&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;跨网段 OPC 代理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Matrikon OPC Explorer&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;OPC 客户端测试&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Matrikon FLEX&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;冗余 + 容错&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Matrikon Security&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;OPC 安全加固&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="43-典型架构"&gt;4.3 典型架构
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PLC1 ─┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├─→ Matrikon OPC Server ─→ SCADA / MES
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PLC2 ─┘ (FLEX 冗余)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; OPC Tunneller（穿透防火墙）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 远程客户端
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="44-选型对比"&gt;4.4 选型对比
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;Kepware&lt;/th&gt;
					&lt;th&gt;Matrikon OPC&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;设备驱动&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;200+&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;100+&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;OPC UA&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;✓（更早支持）&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;冗余&lt;/td&gt;
					&lt;td&gt;✓&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;✓（更强）&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;价格&lt;/td&gt;
					&lt;td&gt;商业付费&lt;/td&gt;
					&lt;td&gt;商业付费（&lt;strong&gt;通常更贵&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;国内用户&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;多&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;中等&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;学习曲线&lt;/td&gt;
					&lt;td&gt;中等&lt;/td&gt;
					&lt;td&gt;较陡&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="五graysimulatormodbus-模拟器"&gt;五、GraySimulator：Modbus 模拟器
&lt;/h2&gt;&lt;h3 id="51-定位"&gt;5.1 定位
&lt;/h3&gt;&lt;p&gt;GraySimulator 是国内团队开发的&lt;strong&gt;Modbus 设备模拟器&lt;/strong&gt;。&lt;strong&gt;比 Modbus Slave 强&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;支持 Modbus RTU / TCP / ASCII&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;批量模拟&lt;/strong&gt;（&lt;strong&gt;脚本&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据曲线 / 报警&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国产 / 中文&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="52-安装"&gt;5.2 安装
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;http://www.simway.com/&lt;/code&gt;（&lt;strong&gt;国内厂商&lt;/strong&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单文件绿色版&lt;/li&gt;
&lt;li&gt;装好&lt;strong&gt;启动 → 添加设备&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="53-实战模拟温湿度"&gt;5.3 实战：模拟温湿度
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;设备 → 新建 Modbus TCP 从站&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP&lt;/strong&gt;：&lt;code&gt;127.0.0.1:502&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;寄存器 0：温度 25-30 范围波动&lt;/li&gt;
&lt;li&gt;寄存器 1：湿度 40-60 范围波动&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保存 → 启动&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="54-批量模拟"&gt;5.4 批量模拟
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;脚本 → 加载 Python 脚本&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 模拟温度上升&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;write_register&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;实战&lt;/strong&gt;：&lt;strong&gt;模拟一年数据&lt;/strong&gt;用于压测。&lt;/p&gt;
&lt;h2 id="六virtual-serial-port-driver虚拟串口"&gt;六、Virtual Serial Port Driver：虚拟串口
&lt;/h2&gt;&lt;h3 id="61-定位"&gt;6.1 定位
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Virtual Serial Port Driver (VSPD)&lt;/strong&gt; 是 Eltima 公司的&lt;strong&gt;虚拟串口工具&lt;/strong&gt;。&lt;strong&gt;核心价值&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;创建虚拟 COM 端口对&lt;/strong&gt;（&lt;code&gt;COM3 ↔ COM4&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一端写 / 另一端读&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无需硬件&lt;/strong&gt;测试串口程序&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="62-安装与配置"&gt;6.2 安装与配置
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;商业付费（&lt;strong&gt;$140 起&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;安装时&lt;strong&gt;装驱动&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;启动 VSPD → &lt;code&gt;Add pair&lt;/code&gt;：
&lt;ul&gt;
&lt;li&gt;选 &lt;code&gt;COM3&lt;/code&gt; 和 &lt;code&gt;COM4&lt;/code&gt;（&lt;strong&gt;成对&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Create&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="63-实战测试串口程序"&gt;6.3 实战：测试串口程序
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;串口工具1（COM3 写）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 数据
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VSPD 虚拟串口对（COM3 ↔ COM4）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 透传
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;串口工具2（COM4 读）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;测试场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;串口调试助手&lt;/strong&gt; 写 → 自己的程序读&lt;/li&gt;
&lt;li&gt;自己的程序写 → &lt;strong&gt;串口调试助手&lt;/strong&gt; 读&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="64-替代品"&gt;6.4 替代品
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;VSPD&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;商业 / 稳定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;com0com&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;开源 / 经典&lt;/strong&gt;（&lt;strong&gt;Win 10+ 要手动签驱动&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;HHD Software Virtual Serial Port&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;商业 / 简单&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Linux socat&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;开源 / 跨平台&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="65-com0com开源替代"&gt;6.5 com0com（开源替代）
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;https://sourceforge.net/projects/com0com/&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 创建 COM5 ↔ COM6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;setupc.exe install &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="m"&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：&lt;strong&gt;Win 10/11 要禁用驱动强制签名&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;设置 → 更新与安全 → 恢复 → 高级启动 → 重启 → 疑难解答 → 高级 → 启动设置 → 重启 → 按 7 禁用驱动签名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="七组合实战"&gt;七、组合实战
&lt;/h2&gt;&lt;h3 id="71-工控数据采集"&gt;7.1 工控数据采集
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PLC 设备（西门子 S7-1500）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ Modbus TCP / S7
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Kepware OPC Server
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ OPC DA / OPC UA
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SCADA 系统（WinCC / iFIX）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 数据库
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MES / ERP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="72-测试环境"&gt;7.2 测试环境
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;电脑 A：VSPD 创建 COM3 ↔ COM4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;电脑 B：Modbus Slave 模拟从站（COM3）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;电脑 A：Modbus Poll 读（COM4）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="73-物联网网关"&gt;7.3 物联网网关
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Modbus 设备
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ Modbus TCP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Kepware IoT Gateway
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ MQTT (Sparkplug B)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;云平台（AWS IoT / 阿里云 IoT）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 时间序列数据库
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;可视化（Grafana / ThingsBoard）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="八常见问题"&gt;八、常见问题
&lt;/h2&gt;&lt;h3 id="81-modbus-通信失败"&gt;8.1 Modbus 通信失败
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;检查波特率 / 数据位 / 停止位 / 校验&lt;/strong&gt;（&lt;strong&gt;9600/8N1 是最常见&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检查 502 端口&lt;/strong&gt;：防火墙放行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检查从站地址&lt;/strong&gt;（&lt;strong&gt;不要和 0 / 255 冲突&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="82-kepware-找不到设备"&gt;8.2 Kepware 找不到设备
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;License 过期&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设备 IP 错&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防火墙&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;驱动版本不匹配&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="83-opc-ua-安全"&gt;8.3 OPC UA 安全
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;认证模式&lt;/strong&gt;：选 &lt;code&gt;Certificate&lt;/code&gt;（&lt;strong&gt;强&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加密&lt;/strong&gt;：&lt;code&gt;Basic256Sha256&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户管理&lt;/strong&gt;：&lt;code&gt;Admin&lt;/code&gt; 改密&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;审计日志&lt;/strong&gt;：开启&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="84-vspd-在-win-10-报错"&gt;8.4 VSPD 在 Win 10 报错
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;驱动签名问题&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 启动 → 设置 → 安全模式启动
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 启动时按 F7 禁用驱动强制签名
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 安装 VSPD
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="九下一步"&gt;九、下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想看物联网 MQTT 实战：&lt;strong&gt;[2016-11-15 数据库客户端实战：MySQL / Redis / ES / MQTT]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看 SCADA 集成：&lt;strong&gt;项目全流程&lt;/strong&gt; 章节&lt;/li&gt;
&lt;li&gt;想看 PLC 通信：&lt;strong&gt;[2017-10-15 ProtoBuf &amp;amp; gRPC 实战]&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2016 年，回看当时&lt;/strong&gt;：Kepware 2016 被 PTC 收购，&lt;strong&gt;中国区业务大涨&lt;/strong&gt;；Matrikon 2010 被 Honeywell 收购；&lt;strong&gt;Modbus 协议 40 年了仍是工业事实标准&lt;/strong&gt;——&lt;strong&gt;5 款工具 10 年后仍是工控领域最常用的&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;</description></item><item><title>Windows 视频与录制工具：PotPlayer / OBS Studio / YoloMouse</title><link>https://liangweidonggood.github.io/p/windows-mei-ti-shi-pin-lu-zhi/</link><pubDate>Mon, 15 Feb 2016 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/windows-mei-ti-shi-pin-lu-zhi/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/windows-mei-ti-shi-pin-lu-zhi/image/cover.jpg" alt="Featured image of post Windows 视频与录制工具：PotPlayer / OBS Studio / YoloMouse" /&gt;&lt;h2 id="一2016-年的-windows-媒体工具"&gt;一、2016 年的 Windows 媒体工具
&lt;/h2&gt;&lt;p&gt;2016 年是&lt;strong&gt;直播元年&lt;/strong&gt;——斗鱼 / 熊猫 TV / 虎牙崛起，&lt;strong&gt;OBS Studio 2016-09 取代 OBS Classic&lt;/strong&gt; 成为新标准；PotPlayer 在 Daum 团队手里已经迭代到 1.6；&lt;strong&gt;YoloMouse 解决跨游戏鼠标灵敏度问题&lt;/strong&gt;。本文整理三件套的实战用法。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;阅读建议&lt;/strong&gt;：本文面向&lt;strong&gt;视频制作 / 直播 / 录屏&lt;/strong&gt;用户，重点在&lt;strong&gt;PotPlayer 调优 + OBS Studio 编码&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二potplayer万能播放器"&gt;二、PotPlayer：万能播放器
&lt;/h2&gt;&lt;h3 id="21-定位"&gt;2.1 定位
&lt;/h3&gt;&lt;p&gt;PotPlayer 2008 年由 KMPlayer 团队（后被 Daum 收购）开发，&lt;strong&gt;Windows 平台上最强本地播放器&lt;/strong&gt;。&lt;strong&gt;优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;几乎所有格式&lt;/strong&gt;（&lt;strong&gt;含蓝光原盘&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;硬件解码&lt;/strong&gt;（&lt;strong&gt;DXVA2 / NVDec / Quick Sync&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自定义滤镜链&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字幕外挂 / 内嵌&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完全免费&lt;/strong&gt;（&lt;strong&gt;无广告 / 无捆绑&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-安装"&gt;2.2 安装
&lt;/h3&gt;&lt;p&gt;官方 &lt;code&gt;https://potplayer.daum.net/&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;64 位版（&lt;strong&gt;推荐&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;安装时&lt;strong&gt;取消勾选&amp;quot;OpenCandy&amp;quot;广告插件&lt;/strong&gt;（&lt;strong&gt;装好会自动取消&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-首次配置"&gt;2.3 首次配置
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;F5&lt;/code&gt; → 选项 → 关键项：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;配置&lt;/th&gt;
					&lt;th&gt;推荐&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;视频 → 渲染器&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;EVR / EVR CP&lt;/code&gt;（&lt;strong&gt;兼容性最好&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;视频 → 解码器&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;内置解码器 / LAV Filter&lt;/code&gt;（&lt;strong&gt;LAV 更强&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;视频 → 硬件加速&lt;/td&gt;
					&lt;td&gt;☑ DXVA2 / NVDec&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;视频 → 倍帧&lt;/td&gt;
					&lt;td&gt;关闭（&lt;strong&gt;省电&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;字幕 → 字体&lt;/td&gt;
					&lt;td&gt;微软雅黑 18px&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;字幕 → 自动加载&lt;/td&gt;
					&lt;td&gt;☑ 同名字幕&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;声音&lt;/td&gt;
					&lt;td&gt;音轨 1 / 立体声&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="24-关键快捷键"&gt;2.4 关键快捷键
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;快捷键&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;空格&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;播放/暂停&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;→&lt;/code&gt; / &lt;code&gt;←&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;前进/后退 5 秒&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;↑&lt;/code&gt; / &lt;code&gt;↓&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;音量 +/-&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;D&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;下一字幕&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;F&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;全屏&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;B&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;章节列表&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;J&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;跳到下一文件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Tab&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;显示时间轴&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Z&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;0.5x 速度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;X&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;1.5x 速度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;2x 速度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Shift + S&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;截图（&lt;strong&gt;当前帧&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="25-高级功能"&gt;2.5 高级功能
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;3D 视频&lt;/strong&gt;：左右半宽、上下半高、蓝光 3D（&lt;strong&gt;需要 3D 显示器&lt;/strong&gt;）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;画面处理&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl + E&lt;/code&gt;：去交错&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + I&lt;/code&gt;：锐化&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + M&lt;/code&gt;：字幕缩放&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + D&lt;/code&gt;：去噪&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;TV 录制源&lt;/strong&gt;：支持 &lt;code&gt;.ts&lt;/code&gt;/&lt;code&gt;.wtv&lt;/code&gt; 文件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;字幕翻译&lt;/strong&gt;：右键 → 字幕 → 在线翻译（&lt;strong&gt;依赖 Google 翻译 API&lt;/strong&gt;）。&lt;/p&gt;
&lt;h3 id="26-lav-filter-替代内置"&gt;2.6 LAV Filter 替代内置
&lt;/h3&gt;&lt;p&gt;LAV Filter 是开源的解码器集合，&lt;strong&gt;比 PotPlayer 内置解码器强&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;https://github.com/Nevcairiel/LAVFilters/releases&lt;/code&gt; 下载安装&lt;/li&gt;
&lt;li&gt;PotPlayer &lt;code&gt;F5 → 内置视频解码器/音频解码器 → 全部禁用&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装 LAV Filter → 自动接管&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;更好的色彩&lt;/strong&gt;（&lt;strong&gt;10bit&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更准的字幕&lt;/strong&gt;（&lt;strong&gt;PGS 字幕&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更强的硬件加速&lt;/strong&gt;（&lt;strong&gt;NVDec 0.9+&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="27-常见问题"&gt;2.7 常见问题
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;画面卡顿&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;关闭硬件加速&lt;/li&gt;
&lt;li&gt;切换到 VMR9 渲染器&lt;/li&gt;
&lt;li&gt;升级显卡驱动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;字幕乱码&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;字体编码选 &lt;code&gt;UTF-8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;字幕文件另存为 UTF-8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;播放 4K 卡&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;强制硬件解码&lt;/li&gt;
&lt;li&gt;升 SSD&lt;/li&gt;
&lt;li&gt;用 PotPlayer 1.7+（&lt;strong&gt;NVDec 优化&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="三obs-studio直播录屏标准"&gt;三、OBS Studio：直播录屏标准
&lt;/h2&gt;&lt;h3 id="31-定位"&gt;3.1 定位
&lt;/h3&gt;&lt;p&gt;OBS Studio 2012 年起开源，&lt;strong&gt;2016-09 取代 OBS Classic&lt;/strong&gt;。&lt;strong&gt;完全免费开源&lt;/strong&gt;，&lt;strong&gt;支持所有主流直播平台&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="32-安装"&gt;3.2 安装
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;https://obsproject.com/&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Windows 10/11 64 位&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;安装时&lt;strong&gt;选好&amp;quot;安装 VS 2019 运行时&amp;quot;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;装好&lt;strong&gt;首次启动会跑自动配置向导&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="33-核心概念"&gt;3.3 核心概念
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;场景（Scene）&lt;/strong&gt;：一个完整画面。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;来源（Source）&lt;/strong&gt;：场景里的元素：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;显示器捕获&lt;/code&gt;：整个屏幕&lt;/li&gt;
&lt;li&gt;&lt;code&gt;窗口捕获&lt;/code&gt;：单个应用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;摄像头&lt;/code&gt;：本地摄像头&lt;/li&gt;
&lt;li&gt;&lt;code&gt;音频&lt;/code&gt;：麦克风 / 系统声音&lt;/li&gt;
&lt;li&gt;&lt;code&gt;图片 / 视频 / 文本&lt;/code&gt;：贴图&lt;/li&gt;
&lt;li&gt;&lt;code&gt;浏览器&lt;/code&gt;：网页 + CSS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;输出&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;录制&lt;/strong&gt;：保存到本地&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;推流&lt;/strong&gt;：推送到 B 站 / 斗鱼 / Twitch&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="34-关键配置"&gt;3.4 关键配置
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;设置 → 输出&lt;/code&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;配置&lt;/th&gt;
					&lt;th&gt;推荐&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;输出模式&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;高级&lt;/code&gt;（&lt;strong&gt;控制更细&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;录像格式&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;MKV&lt;/code&gt;（&lt;strong&gt;稳定&lt;/strong&gt;）→ 转封装为 MP4&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;录像编码器&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;x264&lt;/code&gt; / &lt;code&gt;NVENC H.264&lt;/code&gt;（&lt;strong&gt;GPU 加速&lt;/strong&gt;）/ &lt;code&gt;NVENC HEVC&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;录像质量&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;CQP 18-23&lt;/code&gt;（&lt;strong&gt;质量优先&lt;/strong&gt;）/ &lt;code&gt;CBR 8000 kbps&lt;/code&gt;（&lt;strong&gt;稳定&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;录像路径&lt;/td&gt;
					&lt;td&gt;D:\videos\obs\&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;设置 → 视频&lt;/code&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;配置&lt;/th&gt;
					&lt;th&gt;推荐&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;基础分辨率&lt;/td&gt;
					&lt;td&gt;1920×1080（&lt;strong&gt;显示器原生&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;输出分辨率&lt;/td&gt;
					&lt;td&gt;1920×1080 / 1280×720&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;FPS&lt;/td&gt;
					&lt;td&gt;30（&lt;strong&gt;够用&lt;/strong&gt;） / 60（&lt;strong&gt;游戏直播&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;设置 → 推流&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;B 站&lt;/strong&gt;：&lt;code&gt;rtmp://live-push.bilivideo.com/live-bvc/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;斗鱼&lt;/strong&gt;：&lt;code&gt;rtmp://sendtc3.douyu.com/live/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Twitch&lt;/strong&gt;：&lt;code&gt;rtmp://live.twitch.tv/app/&amp;lt;STREAM_KEY&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="35-直播场景示例"&gt;3.5 直播场景示例
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;游戏直播&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;场景：游戏画面 + 摄像头 + 弹幕 + 字幕&lt;/li&gt;
&lt;li&gt;来源：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;游戏捕获&lt;/code&gt;（&lt;strong&gt;全屏&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;摄像头&lt;/code&gt;（&lt;strong&gt;小窗 200×150&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;文本&lt;/code&gt;（&lt;strong&gt;房间信息&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;编码：NVENC H.264 / CQP 20&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;会议 / 培训&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;场景：演讲者画面 + 屏幕共享&lt;/li&gt;
&lt;li&gt;来源：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;窗口捕获&lt;/code&gt;（PPT）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;摄像头&lt;/code&gt;（&lt;strong&gt;主讲人&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;音频&lt;/code&gt;（&lt;strong&gt;麦克风&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="36-录制--转封装为-mp4"&gt;3.6 录制 + 转封装为 MP4
&lt;/h3&gt;&lt;p&gt;OBS 的 MP4 录制&lt;strong&gt;崩溃会损坏文件&lt;/strong&gt;，&lt;strong&gt;推荐 MKV → MP4&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;录制时选 &lt;code&gt;MKV&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;完成 → &lt;code&gt;文件 → 录制转封装&lt;/code&gt; → 选 MKV → 输出 MP4&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 命令行转封装（FFmpeg）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ffmpeg -i input.mkv -c copy output.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="37-常见问题"&gt;3.7 常见问题
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;黑屏&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;显示器捕获&lt;/code&gt; 替代 &lt;code&gt;游戏捕获&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;显卡驱动升级&lt;/li&gt;
&lt;li&gt;OBS &lt;code&gt;用管理员身份运行&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;音频卡顿&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;采样率统一 &lt;code&gt;48 kHz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;麦克风/桌面音频&lt;/code&gt; 单独源&lt;/li&gt;
&lt;li&gt;关掉 OBS 内的&amp;quot;噪音抑制&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CPU 占用高&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;换 NVENC / Quick Sync 硬件编码&lt;/li&gt;
&lt;li&gt;降低分辨率 / FPS&lt;/li&gt;
&lt;li&gt;关闭 &lt;code&gt;Psycho Visual Tuning&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;推流掉帧&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;网络测试&lt;/code&gt; 检查带宽&lt;/li&gt;
&lt;li&gt;升级到企业宽带&lt;/li&gt;
&lt;li&gt;换 CDN 平台&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="四yolomouse跨游戏鼠标锁定"&gt;四、YoloMouse：跨游戏鼠标锁定
&lt;/h2&gt;&lt;h3 id="41-定位"&gt;4.1 定位
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;YoloMouse 解决&amp;quot;每个游戏鼠标灵敏度不同&amp;quot;问题&lt;/strong&gt;——FPS 玩家经常在多个游戏间切换，&lt;strong&gt;每个游戏的视角转换比例不同&lt;/strong&gt;。YoloMouse 可以在&lt;strong&gt;每款游戏启动时自动设置鼠标加速度 / DPI&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="42-安装"&gt;4.2 安装
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;https://store.steampowered.com/app/560160/YoloMouse/&lt;/code&gt;（&lt;strong&gt;Steam 平台&lt;/strong&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;免费版：基础功能&lt;/li&gt;
&lt;li&gt;付费版（$5）：多配置文件 + 启动器集成&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="43-核心功能"&gt;4.3 核心功能
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Per-Game Profiles&lt;/strong&gt;：每款游戏独立配置&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;加速曲线&lt;/strong&gt;：自定义鼠标加速度&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DPI 切换&lt;/strong&gt;：自动切到游戏的最佳 DPI&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;指针加速&lt;/strong&gt;：&lt;code&gt;enhance pointer precision&lt;/code&gt; 强制开关&lt;/p&gt;
&lt;h3 id="44-实战csgo--守望先锋双修"&gt;4.4 实战：CS:GO + 守望先锋双修
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;游戏&lt;/th&gt;
					&lt;th&gt;鼠标加速度&lt;/th&gt;
					&lt;th&gt;DPI&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;CS:GO&lt;/td&gt;
					&lt;td&gt;0.0（&lt;strong&gt;纯线性&lt;/strong&gt;）&lt;/td&gt;
					&lt;td&gt;800&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;守望先锋&lt;/td&gt;
					&lt;td&gt;0.0&lt;/td&gt;
					&lt;td&gt;1600&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Apex 英雄&lt;/td&gt;
					&lt;td&gt;0.5&lt;/td&gt;
					&lt;td&gt;800&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;瓦罗兰特&lt;/td&gt;
					&lt;td&gt;0.0&lt;/td&gt;
					&lt;td&gt;800&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;保存为 4 个 Profile&lt;/strong&gt;，&lt;strong&gt;启动时自动切换&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="45-替代品"&gt;4.5 替代品
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;YoloMouse&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Per-Game + 启动器集成&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;RawAccel&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;开源 + 高度可定制度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;MarkC 鼠标修复&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Win 7/10 加速曲线&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Logitech G HUB&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;鼠标自带（&lt;strong&gt;只对罗技&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Razer Synapse&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;雷蛇鼠标自带&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="五组合实战"&gt;五、组合实战
&lt;/h2&gt;&lt;h3 id="51-录播课程"&gt;5.1 录播课程
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PowerPoint 讲稿
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ PowerPoint 放映
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OBS 录制（窗口捕获 + 麦克风 + 摄像头）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 输出 MKV
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FFmpeg 转 MP4 + 抽音轨
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 上传 B 站
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 字幕（飞书妙记 / whisper）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="52-游戏直播"&gt;5.2 游戏直播
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;游戏（CS:GO / LOL / 原神）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 全屏运行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;YoloMouse 自动切换 Profile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OBS 采集（游戏捕获 + 摄像头 + 弹幕）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 推流 B 站 RTMP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 直播平台
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PotPlayer 录制本地留档
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="53-视频后期"&gt;5.3 视频后期
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OBS 录 MKV
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ FFmpeg 抽帧 + 转码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Premiere / DaVinci Resolve 剪辑
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 输出 H.264 / H.265
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;YouTube / B 站发布
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;h3 id="61-obs-黑屏"&gt;6.1 OBS 黑屏
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;最常见&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显卡驱动不兼容（&lt;strong&gt;特别是 AMD&lt;/strong&gt;）→ 升级到最新&lt;/li&gt;
&lt;li&gt;显示器多屏时 &lt;code&gt;显示器捕获&lt;/code&gt; 选错&lt;/li&gt;
&lt;li&gt;用 DX11 游戏时 &lt;code&gt;游戏捕获&lt;/code&gt; 选&amp;quot;捕获全屏&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 设置 → 视频 → 渲染器 → Direct3D 11
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 用管理员身份运行 OBS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 关掉 GPU 加速（兼容模式）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="62-potplayer-4k-卡顿"&gt;6.2 PotPlayer 4K 卡顿
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. F5 → 视频 → 解码器 → 全部用 LAV
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 视频 → 硬件加速 → 选 NVDec
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 关闭&amp;#34;倍帧&amp;#34;和&amp;#34;图像增强&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 用 PotPlayer 1.7+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="63-yolomouse-不生效"&gt;6.3 YoloMouse 不生效
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;装&lt;strong&gt;付费版&lt;/strong&gt;才有完整 Per-Game&lt;/li&gt;
&lt;li&gt;杀毒软件会拦截&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需要以管理员身份启动游戏&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="64-obs-输出-0-kb"&gt;6.4 OBS 输出 0 KB
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;路径没有写权限&lt;/li&gt;
&lt;li&gt;磁盘空间满&lt;/li&gt;
&lt;li&gt;编码器失败 → 切到 &lt;code&gt;x264&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="七下一步"&gt;七、下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想看直播 / 录屏工程化：&lt;strong&gt;[2014-12-15 流媒体与 WebRTC 实时视频]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看视频处理 / 转码：&lt;strong&gt;[2024-12-15 FFmpeg 实战]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看 GPU 加速：&lt;strong&gt;Nvidia / CUDA 章节&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2016 年，回看当时&lt;/strong&gt;：OBS Studio 2016-09 取代 Classic 是分水岭；PotPlayer 1.6 已稳定多年；&lt;strong&gt;YoloMouse 至今仍是小众但 FPS 玩家必备&lt;/strong&gt;——&lt;strong&gt;这三款工具 10 年后仍是同类最强&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;</description></item></channel></rss>