<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>白茶清欢的个人技术分享</title><link>https://ayumz.com/</link><description></description><item><title>在Windows11中的安装nvm管理node</title><link>https://ayumz.com/post/18.html</link><description>&lt;p class=&quot;huise&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;安装NVM-Windows&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm-windows 是 Windows 系统下用于管理 Node.js 版本的工具，类似于 Linux 和 macOS 系统上的 nvm。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;lvse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;安装步骤&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;下载安装程序&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;访问 &lt;/span&gt;&lt;a href=&quot;https://github.com/coreybutler/nvm-windows/releases&quot; style=&quot;text-decoration: underline; font-size: 18px;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm-windows 的 GitHub 仓库&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;，下载 &lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm-setup.zip&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt; 文件。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236280632452.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;安装NVM&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;（注：安装NVM前，建议先卸载电脑上现有的NodeJS，避免冗余）&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;解压下载的文件并运行 &lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm-setup.exe&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt; 安装程序 。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1.选择接受，下一步next&lt;/span&gt;&lt;/p&gt;&lt;ol style=&quot;box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style-position: initial; list-style-image: initial; font-size: 16px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; color: rgba(0, 0, 0, 0.75); font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236391308004.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2.选择安装路径，下一步&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;建议不装C盘，或者C盘足够大不用考虑路径，直接下一步&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236453177650.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;/span&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;3.选择设置NodeJS的Symlink存放的文件夹的位置&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;主要用于配置 Node.js 活动版本的存储位置，默认路径为 C:\nvm4w\nodejs，可手动选择其他文件夹，自定义存储路径注意：Symlink文件夹所在的路径不存在，否则报错&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236516802588.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;/span&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;4.桌面通知设置：默认即可，下一步&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;通知选项：&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Node.js LTS releases：勾选后，会接收 Node.js 长期支持版（LTS，稳定版） 发布的通知。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Node.js Current releases：勾选后，会接收 Node.js 当前版本（最新版 / 测试版） 发布的通知。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;NVM For Windows releases：勾选后，会接收 NVM for Windows 自身新版本更新通知。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Author updates and releases：勾选后，会接收 作者更新及后续 NVM for Windows 继任版本的通知&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236621661370.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;5.作者进度邮件订阅，留空，下一步&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;NVM for Windows 的后续版本邮件订阅，如果不想订阅，可留空。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236655731417.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;6.确认安装，点击安装&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236697461786.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;7.完成安装&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;s配置NVM的环境变量&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;默认情况下，NVM会自动帮我们配置环境变量，同时配置了用户变量和系统变量的NVM_HOME和NVM_SYMLINK，也配置了Path里的环境变量，如没有配置可自行写入用户变量配置和系统变量配置&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;打开 设置-&amp;gt;系统-&amp;gt;系统信息-&amp;gt;高级系统设置&amp;nbsp;-&amp;gt;环境变量&lt;br style=&quot;box-sizing: border-box; outline: 0px; font-synthesis-style: auto; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-size: 16px; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;/&gt;或者 右击win图标-&amp;gt;系统-&amp;gt;高级系统设置-&amp;gt;环境变量&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236851357238.png&quot; alt=&quot;image.png&quot; width=&quot;975&quot; height=&quot;356&quot; style=&quot;width: 975px; height: 356px;&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236920877441.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;putong&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;用户变量配置&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236943390323.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;putong&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;系统变量配置&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783236965393008.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;h3 style=&quot;box-sizing: border-box; outline: 0px; margin: 24px 0px 8px; padding: 0px; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, SimHei, Arial, SimSun; font-size: 18px; color: rgb(79, 79, 79); line-height: 28px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;/h3&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;验证NVM是否安装成功&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;打开命令运行窗口运行以下命令验证&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm&amp;nbsp;-v&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237022421873.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lvse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;在NVM中安装NodeJS&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;h3 style=&quot;box-sizing: border-box; outline: 0px; margin: 24px 0px 8px; padding: 0px; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, SimHei, Arial, SimSun; font-size: 18px; color: rgb(79, 79, 79); line-height: 28px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;/h3&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;在线安装&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;putong&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;查看可安装版本&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;建议选择LTS中的版本进行安装（LTS，即Long Term Support，长期支持版本）&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm&amp;nbsp;list&amp;nbsp;available&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237110388131.png&quot; alt=&quot;image.png&quot; width=&quot;795&quot; height=&quot;449&quot; style=&quot;width: 795px; height: 449px;&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;p class=&quot;hongse&quot;&gt;注：若要查看完整的可安装版本列表，可访问官网：https://nodejs.org/en/download/releases&lt;/p&gt;&lt;/span&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm的配置（不建议配置）&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm 在下载NPM的时候速度相对来说较慢，可以修改NVM安装文件夹下的settings.txt文件，追加两行代码，目的是使用国内的镜像下载&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;root:&amp;nbsp;C:\Program&amp;nbsp;Files\nvm&lt;br/&gt;path:&amp;nbsp;C:\nvm4w\nodejs&lt;br/&gt;#下面的是追加的镜像地址&lt;br/&gt;node_mirror:&amp;nbsp;https://npmmirror.com/mirrors/node/&lt;br/&gt;npm_mirror:&amp;nbsp;https://npmmirror.com/mirrors/npm/&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;可直接使用：如遇安装nodejs缓慢，再使用–registry的方法替代方便&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm&amp;nbsp;install&amp;nbsp;xxx&amp;nbsp;--registry=https://registry.npmmirror.com&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;使用NVM命令安装&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;hongse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;注意：如遇安装、卸载、使用报错，请使用管理员命令面板操作以下命令&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;安装命令&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm&amp;nbsp;install&amp;nbsp;22.14.0&lt;br/&gt;#&amp;nbsp;可加国内的镜像提速下载，二选一&lt;br/&gt;nvm&amp;nbsp;install&amp;nbsp;22.14.0&amp;nbsp;--registry=https://registry.npmmirror.com&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237306102146.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;/span&gt;&lt;li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237317379188.png&quot; alt=&quot;image.png&quot; width=&quot;858&quot; height=&quot;158&quot; style=&quot;width: 858px; height: 158px;&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;卸载命令&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm uninstall 22.14.0&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;使用版本命令&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm use 22.14.0&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237405679857.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lvse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;离线安装&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;从官网下载指定版本NodeJS的免安装版离线安装包，下载地址：&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://nodejs.org/en/about/previous-releases&quot; rel=&quot;nofollow&quot; style=&quot;font-size: 18px; text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;https://nodejs.org/en/about/previous-releases&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1.点击对应版本后面的&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Releases&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;跳转进入下载链接&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237468467732.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2.选择对应系统的压缩包：&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://nodejs.org/download/release/&quot; rel=&quot;nofollow&quot; style=&quot;font-size: 18px; text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;https://nodejs.org/download/release/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;这边以64位系统为例，32位的选对应的x84即可&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237504199634.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;3.下载完成后解压缩，移动到安装NVM的目录下，文件夹改成版本名即可&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237525509249.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;h3 style=&quot;box-sizing: border-box; outline: 0px; margin: 24px 0px 8px; padding: 0px; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, SimHei, Arial, SimSun; font-size: 18px; color: rgb(79, 79, 79); line-height: 28px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;/h3&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;查看已安装版本&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm ls&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237574255054.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;安装最新版本&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;执行以下指令可以直接安装最新版本&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;nvm install latest&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237620627813.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/li&gt;&lt;li&gt;&lt;h3 style=&quot;box-sizing: border-box; outline: 0px; margin: 24px 0px 8px; padding: 0px; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, SimHei, Arial, SimSun; font-size: 18px; color: rgb(79, 79, 79); line-height: 28px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;/h3&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;lanse&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;验证node和npm&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;安装完成后使用版本号，验证node和npm是否安装成功&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;#使用版本&lt;br/&gt;nvm use 22.14.0&lt;br/&gt;#查看node版本&lt;br/&gt;node -v&lt;br/&gt;#查看npm版本&lt;br/&gt;npm -v&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237659604887.png&quot; alt=&quot;image.png&quot;/&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2026/07/202607051783237668144517.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;npm安装淘宝镜像&amp;nbsp;，更换为国内镜像源&lt;/span&gt;&lt;/h3&gt;&lt;/li&gt;&lt;li&gt;&lt;h5&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;方法一，安装时使用–registry替换源（推荐）&lt;/span&gt;&lt;/h5&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;npm install xxx --registry=https://registry.npmmirror.com&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;h5 style=&quot;box-sizing: border-box; outline: 0px; margin: 24px 0px 8px; padding: 0px; font-weight: 600; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, SimHei, Arial, SimSun; font-size: 16px; color: rgb(79, 79, 79); line-height: 24px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;方法二，直接替换镜像源&lt;/span&gt;&lt;/h5&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); line-height: 26px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;查询源&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;// 查询源&lt;br/&gt;npm config get registry&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-variant-ligatures: no-common-ligatures; background-color: #FFFFFF; font-size: 18px;&quot;&gt;更换国内源&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;// 更换国内源&lt;br/&gt;npm config set registry https://registry.npmmirror.com&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-variant-ligatures: no-common-ligatures; background-color: #FFFFFF; font-size: 18px;&quot;&gt;设置默认源&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;npm config set registry https://registry.npmjs.org&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;h5 style=&quot;box-sizing: border-box; outline: 0px; margin: 24px 0px 8px; padding: 0px; font-weight: 600; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, SimHei, Arial, SimSun; font-size: 16px; color: rgb(79, 79, 79); line-height: 24px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;方法二，全局安装&lt;span class=&quot;words-blog hl-git-1&quot; data-tit=&quot;cnpm&quot; data-pretit=&quot;cnpm&quot; style=&quot;box-sizing: border-box; outline: 0px; margin: 0px 3px 0px 0px; padding: 0px 18px 0px 0px; font-weight: normal; font-synthesis-style: auto; overflow-wrap: break-word; cursor: pointer; background: url(&amp;quot;../img/gitcode-key.png&amp;quot;) right center / 14px 14px no-repeat transparent; box-shadow: none; font-size: 18px; color: #4EA1DB !important;&quot;&gt;cnpm&lt;/span&gt;（推荐）&lt;/span&gt;&lt;/h5&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt; # -g 全局配置&lt;br/&gt; npm install -g cnpm --registry=https://registry.npmmirror.com #新&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-variant-ligatures: no-common-ligatures; background-color: #FFFFFF; font-size: 18px;&quot;&gt;安装完cnpm可以使用cnpm -v查看版本，并替换npm命令位cnpm。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;cnpm -v&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;h5 style=&quot;box-sizing: border-box; outline: 0px; margin: 24px 0px 8px; padding: 0px; font-weight: 600; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, SimHei, Arial, SimSun; font-size: 16px; color: rgb(79, 79, 79); line-height: 24px; font-synthesis-style: auto; overflow-wrap: break-word; font-variant-ligatures: no-common-ligatures; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;方法四，使用Yarn或者pnpm（推荐）&lt;/span&gt;&lt;/h5&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;npm install -g yarn pnpm&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;</description><pubDate>Sun, 05 Jul 2026 15:21:48 +0800</pubDate></item><item><title>SM2签名算法</title><link>https://ayumz.com/post/17.html</link><description>&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;package&amp;nbsp;org.chemical;

import&amp;nbsp;cn.hutool.core.codec.Base64;
import&amp;nbsp;cn.hutool.crypto.SmUtil;
import&amp;nbsp;cn.hutool.crypto.asymmetric.SM2;
import&amp;nbsp;com.alibaba.fastjson.JSON;
import&amp;nbsp;lombok.extern.slf4j.Slf4j;

import&amp;nbsp;java.io.IOException;
import&amp;nbsp;java.nio.charset.StandardCharsets;
import&amp;nbsp;java.security.SecureRandom;
import&amp;nbsp;java.util.Arrays;
import&amp;nbsp;java.util.HashMap;
import&amp;nbsp;java.util.Map;
import&amp;nbsp;java.util.Random;

/**
&amp;nbsp;*
&amp;nbsp;*/
@Slf4j
public&amp;nbsp;class&amp;nbsp;Sm2Demo&amp;nbsp;{


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;String&amp;nbsp;publicKey;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;String&amp;nbsp;privateKey;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;依赖
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;cn.hutool&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;hutool-all&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;5.8.0&amp;lt;/version&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;***********************第一部分：生成密钥******************************
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//1.生成新的公私钥
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SM2&amp;nbsp;sm2&amp;nbsp;=&amp;nbsp;SmUtil.sm2().initKeys();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//2.&amp;nbsp;获取公钥
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;publicKey&amp;nbsp;=&amp;nbsp;sm2.getPublicKeyBase64();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&amp;quot;生成了公私钥，公钥为：{}&amp;quot;,&amp;nbsp;publicKey);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//3.&amp;nbsp;获取私钥
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;privateKey&amp;nbsp;=&amp;nbsp;sm2.getPrivateKeyBase64();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&amp;quot;生成了公私钥，私钥为：{}&amp;quot;,&amp;nbsp;privateKey);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;throws&amp;nbsp;IOException&amp;nbsp;{


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;***********************第二部分：请求发起方-处理请求数据&amp;nbsp;******************************
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;1.&amp;nbsp;构造业务数据
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Map&amp;lt;String,&amp;nbsp;Object&amp;gt;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;new&amp;nbsp;HashMap&amp;lt;&amp;gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body.put(&amp;quot;key1&amp;quot;,&amp;nbsp;System.nanoTime());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body.put(&amp;quot;key2&amp;quot;,&amp;nbsp;&amp;quot;value2&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body.put(&amp;quot;key3&amp;quot;,&amp;nbsp;Arrays.asList(&amp;quot;1.1&amp;quot;,&amp;quot;1.2&amp;quot;));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;2.&amp;nbsp;转成JSON字符串
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;bodyJson&amp;nbsp;=&amp;nbsp;JSON.toJSONString(body);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&amp;quot;请求体的json数据:&amp;nbsp;{}&amp;quot;,&amp;nbsp;bodyJson);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;3.&amp;nbsp;转成base64字符串

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;bodyValue&amp;nbsp;=&amp;nbsp;Base64.encode(bodyJson);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&amp;quot;请求体:&amp;nbsp;{}&amp;quot;,&amp;nbsp;toLog(bodyValue));


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;***********************第三部分：请求发起方-生成签名&amp;nbsp;******************************

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;获取当前时间戳（毫秒）&amp;nbsp;接收方会校验该值,&amp;nbsp;收到数据时不可超过1分钟
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long&amp;nbsp;currentMillis&amp;nbsp;=&amp;nbsp;System.currentTimeMillis();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;获取随机数
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Random&amp;nbsp;random&amp;nbsp;=&amp;nbsp;new&amp;nbsp;SecureRandom();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;nonce&amp;nbsp;=&amp;nbsp;random.nextInt(1000000);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;拼接需要生成签名的数据
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;value1&amp;nbsp;=&amp;nbsp;String.format(&amp;quot;%s%s%s&amp;quot;,&amp;nbsp;bodyValue,&amp;nbsp;currentMillis,&amp;nbsp;nonce);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;获取数据摘要
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;content1&amp;nbsp;=&amp;nbsp;value1.getBytes(StandardCharsets.UTF_8);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;获取签名
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SM2&amp;nbsp;privateSm2&amp;nbsp;=&amp;nbsp;SmUtil.sm2(privateKey,&amp;nbsp;null);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;signature&amp;nbsp;=&amp;nbsp;Base64.encode(privateSm2.sign(content1));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;将时间戳、随机数、签名值，放到请求头中
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.setHeader(&amp;quot;X-millis&amp;quot;,&amp;nbsp;currentMillis&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.setHeader(&amp;quot;X-nonce&amp;quot;,&amp;nbsp;nonce&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.setHeader(&amp;quot;X-signature&amp;quot;,&amp;nbsp;signature);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.setHeader(&amp;quot;X-digest&amp;quot;,&amp;nbsp;digest);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&amp;quot;签名结果:&amp;nbsp;{},&amp;nbsp;value1={}&amp;quot;,&amp;nbsp;signature,&amp;nbsp;toLog(value1));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;***********************第四部分：请求接收方-验证签名&amp;nbsp;******************************

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;1.&amp;nbsp;从请求头获取&amp;nbsp;时间戳、随机数、签名值，从请求体获取base64的数据
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;millisFromRequestHeader&amp;nbsp;=&amp;nbsp;currentMillis+&amp;quot;&amp;quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;nonceFromRequestHeader&amp;nbsp;=&amp;nbsp;nonce+&amp;quot;&amp;quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;signatureFromRequestHeader&amp;nbsp;=&amp;nbsp;signature;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;valueFromRequestBody&amp;nbsp;=&amp;nbsp;bodyValue;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;2.&amp;nbsp;拼接数据
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;value2&amp;nbsp;=&amp;nbsp;String.format(&amp;quot;%s%s%s&amp;quot;,&amp;nbsp;bodyValue,&amp;nbsp;millisFromRequestHeader,&amp;nbsp;nonceFromRequestHeader);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;content2&amp;nbsp;=&amp;nbsp;value2.getBytes(StandardCharsets.UTF_8);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;3.&amp;nbsp;验证签名
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;signatureBytes&amp;nbsp;=&amp;nbsp;Base64.decode(signatureFromRequestHeader);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SM2&amp;nbsp;publicSm2&amp;nbsp;=&amp;nbsp;SmUtil.sm2(null,&amp;nbsp;publicKey);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long&amp;nbsp;startTime&amp;nbsp;=&amp;nbsp;System.currentTimeMillis();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boolean&amp;nbsp;verify&amp;nbsp;=&amp;nbsp;publicSm2.verify(content2,&amp;nbsp;signatureBytes);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long&amp;nbsp;endTime&amp;nbsp;=&amp;nbsp;System.currentTimeMillis();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;jsonParam&amp;nbsp;=&amp;nbsp;Base64.decodeStr(valueFromRequestBody);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&amp;quot;签名验证结果:&amp;nbsp;{},&amp;nbsp;耗时:&amp;nbsp;{}ms,&amp;nbsp;请求体的json数据:&amp;nbsp;{}&amp;quot;,&amp;nbsp;verify,&amp;nbsp;(endTime&amp;nbsp;-&amp;nbsp;startTime),&amp;nbsp;toLog(jsonParam));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(verify){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;验签通过，继续业务处理
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;do&amp;nbsp;something&amp;nbsp;...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}else&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;验签失败,&amp;nbsp;返回失败信息
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;do&amp;nbsp;something&amp;nbsp;...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;String&amp;nbsp;toLog(String&amp;nbsp;bodyValue){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;bodyValue.length()&amp;nbsp;&amp;gt;&amp;nbsp;100&amp;nbsp;?&amp;nbsp;bodyValue.substring(0,&amp;nbsp;100)&amp;nbsp;:&amp;nbsp;bodyValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 17 Mar 2026 16:00:32 +0800</pubDate></item><item><title>重装电脑后，git拉取文件出现异常</title><link>https://ayumz.com/post/16.html</link><description>&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;最近重装了一下系统，发现重装电脑后，git拉取文件出现异常提示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;To add an exception for this directory, call:git config --global --add safe.directory&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;打开windows-powershell命令窗口：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;输入如下命令： git config --global --add safe.directory &amp;quot;*&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;回车，执行结束。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 18 Nov 2025 09:55:04 +0800</pubDate></item><item><title>Inno Setup 系列之自定义卸载文件名称的脚本</title><link>https://ayumz.com/post/15.html</link><description>&lt;p class=&quot;putong&quot;&gt;需求&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;Inno Setup 默认的自动生成的卸载程序名称为unins000，还包括一个同样名字的DAT格式文件。我想修改卸载程序Unins000的名称及其图标，但是却始终找不到该修改哪里！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;Inno Setup 支持在同一个目录中安装多个应用程序，所以根据安装的先后次序自动将卸载程序文件命名为 unins000.exe，unins001.exe，unins002.exe 等等。这是 Inno Setup 自身的功能。请参阅 http://www.jrsoftware.org/iskb.php?uninstallername 。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;UninstallDisplayName与UninstallDisplayIcon 这两个修改的只是程序在“添加\删除程序”控制面板里的名称与图标。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;一旦安装过程结束后，你当然可以将卸载文件的名称改成任意其它的文件名，注意的是你除了要更改安装目录里面的 unins00X.exe 和 unins00X.dat，还要更改注册表中的相关卸载信息。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;由于卸载程序文件的实际位置和名称可以用常量 {uninstallexe} 表示，所以你可以让你的安装程序自动进行这些修改，见示例脚本。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;putong&quot;&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif; font-size: 16px; font-variant-ligatures: no-common-ligatures; text-wrap-mode: wrap; background-color: #FFFFFF;&quot;&gt;[Setup]&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;AppName=自定义卸载文件名示例程序
AppVerName=自定义卸载文件名示例程序&amp;nbsp;1.0
DefaultDirName={pf}\自定义卸载文件名示例程序
DefaultGroupName=自定义卸载文件名示例程序&lt;/pre&gt;&lt;p class=&quot;putong&quot;&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif; font-size: 16px; font-variant-ligatures: no-common-ligatures; text-wrap-mode: wrap; background-color: #FFFFFF;&quot;&gt;[Files]&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;Source:&amp;nbsp;&amp;quot;MyTest.exe&amp;quot;;&amp;nbsp;DestDir:&amp;nbsp;&amp;quot;{app}&amp;quot;
Source:&amp;nbsp;&amp;quot;Readme.txt&amp;quot;;&amp;nbsp;DestDir:&amp;nbsp;&amp;quot;{app}&amp;quot;&lt;/pre&gt;&lt;p class=&quot;putong&quot;&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif; font-size: 16px; font-variant-ligatures: no-common-ligatures; text-wrap-mode: wrap; background-color: #FFFFFF;&quot;&gt;[Code]&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;procedure&amp;nbsp;CurStepChanged(CurStep:&amp;nbsp;TSetupStep);
var
uninspath,&amp;nbsp;uninsname,&amp;nbsp;NewUninsName,&amp;nbsp;MyAppName:&amp;nbsp;string;
begin
if&amp;nbsp;CurStep=ssDone&amp;nbsp;then
begin
//&amp;nbsp;指定新的卸载文件名（不包含扩展名），请相应修改！
NewUninsName&amp;nbsp;:=&amp;nbsp;&amp;#39;卸载&amp;#39;;
//&amp;nbsp;应用程序名称，与&amp;nbsp;[Setup]&amp;nbsp;段的&amp;nbsp;AppName&amp;nbsp;必须一致，请相应修改！
MyAppName&amp;nbsp;:=&amp;nbsp;&amp;#39;自定义卸载文件名示例程序&amp;#39;;
//&amp;nbsp;以下重命名卸载文件
uninspath:=&amp;nbsp;ExtractFilePath(ExpandConstant(&amp;#39;{uninstallexe}&amp;#39;));
uninsname:=&amp;nbsp;Copy(ExtractFileName(ExpandConstant(&amp;#39;{uninstallexe}&amp;#39;)),1,8);
RenameFile(uninspath&amp;nbsp;+&amp;nbsp;uninsname&amp;nbsp;+&amp;nbsp;&amp;#39;.exe&amp;#39;,&amp;nbsp;uninspath&amp;nbsp;+&amp;nbsp;NewUninsName&amp;nbsp;+&amp;nbsp;&amp;#39;.exe&amp;#39;);
RenameFile(uninspath&amp;nbsp;+&amp;nbsp;uninsname&amp;nbsp;+&amp;nbsp;&amp;#39;.dat&amp;#39;,&amp;nbsp;uninspath&amp;nbsp;+&amp;nbsp;NewUninsName&amp;nbsp;+&amp;nbsp;&amp;#39;.dat&amp;#39;);
//&amp;nbsp;以下修改相应的注册表内容
if&amp;nbsp;RegKeyExists(HKEY_LOCAL_MACHINE,&amp;nbsp;&amp;#39;SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\&amp;#39;&amp;nbsp;+&amp;nbsp;MyAppName&amp;nbsp;+&amp;nbsp;&amp;#39;_is1&amp;#39;)&amp;nbsp;then
begin
RegWriteStringValue(HKEY_LOCAL_MACHINE,&amp;nbsp;&amp;#39;SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\&amp;#39;&amp;nbsp;+&amp;nbsp;MyAppName&amp;nbsp;+&amp;nbsp;&amp;#39;_is1&amp;#39;,&amp;nbsp;&amp;#39;UninstallString&amp;#39;,&amp;nbsp;&amp;#39;&amp;quot;&amp;#39;&amp;nbsp;+&amp;nbsp;uninspath&amp;nbsp;+&amp;nbsp;NewUninsName&amp;nbsp;+&amp;nbsp;&amp;#39;.exe&amp;quot;&amp;#39;);
RegWriteStringValue(HKEY_LOCAL_MACHINE,&amp;nbsp;&amp;#39;SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\&amp;#39;&amp;nbsp;+&amp;nbsp;MyAppName&amp;nbsp;+&amp;nbsp;&amp;#39;_is1&amp;#39;,&amp;nbsp;&amp;#39;QuietUninstallString&amp;#39;,&amp;nbsp;&amp;#39;&amp;quot;&amp;#39;&amp;nbsp;+&amp;nbsp;uninspath&amp;nbsp;+&amp;nbsp;NewUninsName&amp;nbsp;+&amp;nbsp;&amp;#39;.exe&amp;quot;&amp;nbsp;/silent&amp;#39;);
end;
end;
end;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 11 Oct 2025 14:38:37 +0800</pubDate></item><item><title>计算机磁盘旁黄色警示标志消除|BitLocker关闭方法</title><link>https://ayumz.com/post/14.html</link><description>&lt;p class=&quot;chunse&quot;&gt;现在新电脑都普遍默认都自动设置了磁盘锁BitLocker，导致无法重装系统，无法搜索到磁盘。这时候就要解锁了，不解锁的话在线重装系统也可以试试看。另外这个一直是感叹号的在哪里显示也让人膈应，有强迫症的人就必须要把它消除掉它。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509241758678939774487.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p class=&quot;lanse&quot;&gt;解决办法&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509241758678964899363.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;以管理员运行CMD，敲击回车键，如下窗口所示。然后输入&lt;span style=&quot;box-sizing: border-box; outline: 0px; font-weight: 700; font-synthesis-style: auto; overflow-wrap: break-word;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-synthesis-style: auto; overflow-wrap: break-word; background-color: #FFD900;&quot;&gt;manage-bde -status&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; font-weight: 700; font-synthesis-style: auto; overflow-wrap: break-word;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-synthesis-style: auto; overflow-wrap: break-word; background-color: #4DA8EE;&quot;&gt;下图是已经分区，并解锁后的状态&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; font-weight: 700; font-synthesis-style: auto; overflow-wrap: break-word;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-synthesis-style: auto; overflow-wrap: break-word; background-color: #4DA8EE;&quot;&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509241758679017395949.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; font-weight: 700; font-synthesis-style: auto; overflow-wrap: break-word;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-synthesis-style: auto; overflow-wrap: break-word; background-color: #4DA8EE;&quot;&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509241758679081775483.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;例如：&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;manage-bde –off d:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 解密d盘的，如下图所示&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509241758679140496312.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; font-weight: 700; font-synthesis-style: auto; overflow-wrap: break-word;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-synthesis-style: auto; overflow-wrap: break-word; background-color: #4DA8EE;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 24 Sep 2025 09:54:41 +0800</pubDate></item><item><title>idea 2025.2.2 maven打包控制台乱码问题解决</title><link>https://ayumz.com/post/13.html</link><description>&lt;p&gt;升级到 idea 2025.2.2 后发现之前的 maven 工程打包出现乱码, 这里记录下如何配置编码&lt;/p&gt;&lt;p class=&quot;lvse&quot;&gt;1.先确保工程编码是UTF-8&lt;/p&gt;&lt;p&gt;打开 idea, 点击 File -&amp;gt; Settings 搜索 encoding, 将搜索结果出现的位置 全部设置为 UTF-8&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509181758182381624277.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p class=&quot;lvse&quot;&gt;2.设置 maven 编译参数&lt;/p&gt;&lt;p&gt;打开 idea, 点击 File -&amp;gt; Settings -&amp;gt; Build,Execution,Deployment -&amp;gt; Build Tools -&amp;gt; Maven -&amp;gt; Runner&lt;/p&gt;&lt;p&gt;(也可以在操作系统的环境变量里设置)&lt;/p&gt;&lt;p&gt;Name=MAVEN_OPTS&lt;/p&gt;&lt;p&gt;Value=-Dsun.stdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 -Dconsole.encoding=UTF-8 -Dfile.encoding=UTF-8&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509181758182426275320.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Thu, 18 Sep 2025 15:59:10 +0800</pubDate></item><item><title>解决：Error updating changes: detected dubious ownership in repository at</title><link>https://ayumz.com/post/12.html</link><description>&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;在通过 Git Bash 提交项目代码时输入 git add . 命令后，报错：Error updating changes: detected dubious ownership in repository at ...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;这是因为 该项目的所有者 与 现在的用户 不一致&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;比如说： 该项目的所有者是 Administrator，而当前用户是 QIN, 那么就会导致上面的错误&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;解决的办法也很简单在终端命令 git bash 中输入&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;git&amp;nbsp;config&amp;nbsp;--global&amp;nbsp;--add&amp;nbsp;safe.directory&amp;nbsp;&amp;quot;*&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-size: 16px; text-wrap-mode: wrap; background-color: #FFFFFF;&quot;&gt;赋予权限，即可解决这个异常。&lt;/span&gt;&lt;/p&gt;</description><pubDate>Thu, 18 Sep 2025 15:47:23 +0800</pubDate></item><item><title>一条命令永久激活windows11</title><link>https://ayumz.com/post/11.html</link><description>&lt;p&gt;右键开始，选择终端管理员打开&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509111757555352464036.png&quot; alt=&quot;image.png&quot; style=&quot;text-wrap-mode: wrap;&quot;/&gt;&lt;/p&gt;&lt;p&gt;输入命令（win7系统用第一条，win10、win11用第二条）&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;irm&amp;nbsp;https://massgrave.dev/get&amp;nbsp;|&amp;nbsp;iex

irm&amp;nbsp;https://get.activated.win&amp;nbsp;|&amp;nbsp;iex&lt;/pre&gt;&lt;p&gt;输完命令回车以后，等待一会，会出现一个弹窗，如下图：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509111757555607539435.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;然后输入1回车，等待激活&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://ayumz.com/zb_users/upload/2025/09/202509111757555677822729.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Thu, 11 Sep 2025 09:47:14 +0800</pubDate></item><item><title>fastreport四则运算</title><link>https://ayumz.com/post/10.html</link><description>&lt;article data-clipboard-cangjie=&quot;[&amp;quot;root&amp;quot;,{&amp;quot;copyFrom&amp;quot;:&amp;quot;im-native&amp;quot;},[&amp;quot;p&amp;quot;,{},[&amp;quot;span&amp;quot;,{&amp;quot;data-type&amp;quot;:&amp;quot;text&amp;quot;},[&amp;quot;span&amp;quot;,{&amp;quot;data-type&amp;quot;:&amp;quot;leaf&amp;quot;,&amp;quot;color&amp;quot;:&amp;quot;#171A1D&amp;quot;},&amp;quot;[FormatNumber([netWeight]-[priNetWeight],2)]&amp;quot;]]]]&quot;&gt;&lt;p class=&quot;putong&quot;&gt;两个数据相减，保留两位小数&lt;/p&gt;&lt;br/&gt;&lt;p&gt;[FormatNumber([netWeight]-[priNetWeight],2)]&lt;/p&gt;&lt;p class=&quot;putong&quot;&gt;两个数据相除，保留两位小数&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-size: 16px; text-wrap-mode: wrap; background-color: #FFFFFF;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-size: 16px; text-wrap-mode: wrap; background-color: #FFFFFF;&quot;&gt;[FormatNumber([X1]/[X2],2)]&lt;/span&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;putong&quot;&gt;两个数做加法运算&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;[[X1]+[X2]]&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-size: 16px; overflow: auto hidden; font-synthesis-style: auto; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;span style=&quot;color: #4D4D4D;&quot;&gt;乘法和减法与上面算法&lt;/span&gt;&lt;font color=&quot;#4d4d4d&quot;&gt;一致&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4D4D4D; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; font-size: 16px; text-wrap-mode: wrap; background-color: #FFFFFF;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;/article&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 04 Mar 2025 11:08:05 +0800</pubDate></item><item><title>对接XK3168仪表</title><link>https://ayumz.com/post/9.html</link><description>&lt;p class=&quot;putong&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun; font-size: 18px;&quot;&gt;XK3168仪表通讯说明&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ayumz.com/zb_users/upload/2024/08/202408151723689282692939.png&quot; title=&quot;Snipaste_2024-08-15_10-26-14.png&quot; alt=&quot;Snipaste_2024-08-15_10-26-14.png&quot;/&gt;&lt;/p&gt;&lt;p class=&quot;putong&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun; font-size: 18px;&quot;&gt;Java对接仪表&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun; font-size: 16px;&quot;&gt;这边用的串口服务，将串口转成TCP通讯，但是解析方式是一样的。&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(ips.read(bytes)&amp;nbsp;!=&amp;nbsp;-1)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread.sleep(300);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;length&amp;nbsp;=&amp;nbsp;ips.read(bytes);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;readBuffer&amp;nbsp;=&amp;nbsp;new&amp;nbsp;byte[length];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.arraycopy(bytes,&amp;nbsp;0,&amp;nbsp;readBuffer,&amp;nbsp;0,&amp;nbsp;length);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&amp;nbsp;valueToFind&amp;nbsp;=&amp;nbsp;(byte)&amp;nbsp;0xff;&amp;nbsp;//&amp;nbsp;要查找的值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boolean&amp;nbsp;found&amp;nbsp;=&amp;nbsp;findValue(readBuffer,&amp;nbsp;valueToFind);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(found)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.info(&amp;quot;仪表&amp;quot;,&amp;nbsp;this.config.getIp(),&amp;nbsp;&amp;quot;地磅数据&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;Arrays.toString(readBuffer));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;0xff&amp;nbsp;出现的位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;bytes1&amp;nbsp;=&amp;nbsp;new&amp;nbsp;byte[5];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;index&amp;nbsp;=&amp;nbsp;lastIndexOf(readBuffer,valueToFind);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//LogUtils.info(&amp;quot;仪表&amp;quot;,&amp;nbsp;this.config.getIp(),&amp;nbsp;&amp;quot;地磅数据FF的最后一次出现位置&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;index);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;indexed&amp;nbsp;=&amp;nbsp;indexOf(readBuffer,valueToFind);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//LogUtils.info(&amp;quot;仪表&amp;quot;,&amp;nbsp;this.config.getIp(),&amp;nbsp;&amp;quot;地磅数据FF的第一次出现位置&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;indexed);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(index&amp;nbsp;&amp;gt;&amp;nbsp;-1){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;len=&amp;nbsp;readBuffer.length&amp;nbsp;-&amp;nbsp;index;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//LogUtils.info(&amp;quot;仪表&amp;quot;,&amp;nbsp;this.config.getIp(),&amp;nbsp;&amp;quot;地磅数据FF的最后一次出现时是否够截取的长度&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;len);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(len&amp;gt;=5)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.arraycopy(readBuffer,&amp;nbsp;index,&amp;nbsp;bytes1,&amp;nbsp;0,&amp;nbsp;5);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.info(&amp;quot;仪表&amp;quot;,&amp;nbsp;this.config.getIp(),&amp;nbsp;&amp;quot;要解析的数据&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;Arrays.toString(bytes1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;weight&amp;nbsp;=&amp;nbsp;MeterDadaParser.TF5ParseData(bytes1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sendWeightData(weight);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}else&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(indexed&amp;nbsp;&amp;gt;&amp;nbsp;-1)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;len1&amp;nbsp;=&amp;nbsp;readBuffer.length&amp;nbsp;-&amp;nbsp;indexed;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//LogUtils.info(&amp;quot;仪表&amp;quot;,&amp;nbsp;this.config.getIp(),&amp;nbsp;&amp;quot;地磅数据FF的第一次出现时是否够截取的长度&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;len1&amp;nbsp;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(len1&amp;nbsp;&amp;gt;=&amp;nbsp;5)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.arraycopy(readBuffer,&amp;nbsp;indexed,&amp;nbsp;bytes1,&amp;nbsp;0,&amp;nbsp;5);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.info(&amp;quot;仪表&amp;quot;,&amp;nbsp;this.config.getIp(),&amp;nbsp;&amp;quot;要解析的数据&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;Arrays.toString(bytes1));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;weight&amp;nbsp;=&amp;nbsp;MeterDadaParser.TF5ParseData(bytes1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sendWeightData(weight);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
		}
}&lt;/pre&gt;&lt;pre class=&quot;prism-highlight prism-language-java&quot;&gt;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;int&amp;nbsp;TF5ParseData(byte[]&amp;nbsp;data)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;d5&amp;nbsp;=&amp;nbsp;(data[1]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;5)&amp;nbsp;&amp;amp;&amp;nbsp;0x01;&amp;nbsp;//符号
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&amp;nbsp;GE&amp;nbsp;=&amp;nbsp;(byte)&amp;nbsp;(data[2]&amp;nbsp;&amp;amp;&amp;nbsp;0x0F);&amp;nbsp;//个位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;intGE=&amp;nbsp;Math.abs(GE);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&amp;nbsp;SHI&amp;nbsp;=&amp;nbsp;(byte)&amp;nbsp;(data[2]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4);&amp;nbsp;//十位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;intSHI&amp;nbsp;=&amp;nbsp;&amp;nbsp;Math.abs(SHI)*&amp;nbsp;10;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&amp;nbsp;BAI&amp;nbsp;=&amp;nbsp;(byte)&amp;nbsp;(data[3]&amp;nbsp;&amp;amp;&amp;nbsp;0x0F);&amp;nbsp;//百位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;intBAI&amp;nbsp;=&amp;nbsp;&amp;nbsp;Math.abs(BAI)&amp;nbsp;*&amp;nbsp;100;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&amp;nbsp;QIAN&amp;nbsp;=&amp;nbsp;(byte)&amp;nbsp;(data[3]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4);&amp;nbsp;//千位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;intQIAN&amp;nbsp;=&amp;nbsp;Math.abs(QIAN)&amp;nbsp;*&amp;nbsp;1000;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&amp;nbsp;WAN&amp;nbsp;=&amp;nbsp;(byte)&amp;nbsp;(data[4]&amp;nbsp;&amp;amp;&amp;nbsp;0x0F);&amp;nbsp;//万位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;intWAN&amp;nbsp;=&amp;nbsp;Math.abs(WAN)&amp;nbsp;*&amp;nbsp;10000;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&amp;nbsp;SHIWAN&amp;nbsp;=&amp;nbsp;(byte)&amp;nbsp;(data[4]&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;4);&amp;nbsp;//十万位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;intSHIWAN&amp;nbsp;=&amp;nbsp;Math.abs(SHIWAN)&amp;nbsp;*&amp;nbsp;100000;
//
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;number&amp;nbsp;=&amp;nbsp;intGE&amp;nbsp;+&amp;nbsp;intSHI&amp;nbsp;+&amp;nbsp;intBAI&amp;nbsp;+&amp;nbsp;intQIAN&amp;nbsp;+&amp;nbsp;intWAN&amp;nbsp;+&amp;nbsp;intSHIWAN;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;sign&amp;nbsp;=&amp;nbsp;&amp;quot;+&amp;quot;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;截取符号位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;reading&amp;nbsp;=&amp;nbsp;String.valueOf(number),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;截取数据位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fraction&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;截取小数位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(Cache.isDebug)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;StrUtil.format(&amp;quot;数据位:{},符号位:{},读数为:{},小数位:{}\r\n&amp;quot;,&amp;nbsp;data,&amp;nbsp;sign,&amp;nbsp;reading,&amp;nbsp;fraction));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;d5&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;nbsp;符号&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;intGE&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;nbsp;个位&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;intSHI&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;nbsp;十位&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;intBAI&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;nbsp;百位&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;intQIAN&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;nbsp;千位&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;intWAN&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;nbsp;万位&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;intSHIWAN&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;nbsp;十万位&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogUtils.warn(LogUtils.DEVICE_TYPE_YB,&amp;nbsp;number&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;nbsp;KG&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;Integer.parseInt(MeterDataUtil.packageData(sign,&amp;nbsp;reading));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 15 Aug 2024 10:34:16 +0800</pubDate></item></channel></rss>