<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Windows on Coder_Studio</title>
        <link>https://iamxurulin.github.io/tags/windows/</link>
        <description>Recent content in Windows on Coder_Studio</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>iamxurulin</copyright>
        <lastBuildDate>Sun, 23 Aug 2026 17:21:42 +0000</lastBuildDate><atom:link href="https://iamxurulin.github.io/tags/windows/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>机器人Java后端算法笔试题解析</title>
        <link>https://iamxurulin.github.io/p/%E6%9C%BA%E5%99%A8%E4%BA%BAjava%E5%90%8E%E7%AB%AF%E7%AE%97%E6%B3%95%E7%AC%94%E8%AF%95%E9%A2%98%E8%A7%A3%E6%9E%90/</link>
        <pubDate>Fri, 22 May 2026 23:01:24 +0000</pubDate>
        
        <guid>https://iamxurulin.github.io/p/%E6%9C%BA%E5%99%A8%E4%BA%BAjava%E5%90%8E%E7%AB%AF%E7%AE%97%E6%B3%95%E7%AC%94%E8%AF%95%E9%A2%98%E8%A7%A3%E6%9E%90/</guid>
        <description>&lt;ol&gt;
&lt;li&gt;如何判断一个字符串变量a为空，包括null、空字符串、一个或多个空格、一个或多个whitespace?&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;if (a == null || a.isBlank()) {&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Java新版本为什么要添加Instant?&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Java 8 引入 &lt;code&gt;Instant&lt;/code&gt; 主要是为了修复旧版日期时间类（如 &lt;code&gt;java.util.Date&lt;/code&gt;）的设计缺陷，&lt;/p&gt;
&lt;p&gt;原因如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不可变性与线程安全&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;Instant&lt;/code&gt; 是不可变的（Immutable），天然线程安全；&lt;/p&gt;
&lt;p&gt;而 &lt;code&gt;Date&lt;/code&gt; 是可变的，在多线程环境下容易产生并发问题。&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;&lt;strong&gt;更高精度&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;Instant&lt;/code&gt; 支持&lt;strong&gt;纳秒级&lt;/strong&gt;（$ 10^{-9} $ 秒）精度；&lt;/p&gt;
&lt;p&gt;而 &lt;code&gt;Date&lt;/code&gt; 只能精确到毫秒。&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;&lt;strong&gt;语义清晰（机器时间）&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Instant 明确表示 UTC 时间线上的瞬时点（timestamp），语义清晰，适合机器时间处理（日志、分布式时间戳、事件时间）；&lt;/p&gt;
&lt;p&gt;而 Date API 设计混乱，日期计算与格式化常依赖 Calendar、TimeZone 等类，易产生时区问题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;如何判断两个double类型的变量是否相等?例如&lt;code&gt;doublea=1.2;doubleb=1.1 +0.1; &lt;/code&gt;比较a和b是否相等。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;boolean&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nearlyEqual&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;epsilon&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;epsilon&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 使用&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;boolean&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;equal&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nearlyEqual&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;1e&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;//epsilon 的取值取决于业务精度要求，常见取 1e-9 到 1e-6。&lt;/span&gt;&lt;span class=&#34;w&#34;&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;ol start=&#34;4&#34;&gt;
&lt;li&gt;下面三条语句是否是合法的,如果不是原因是什么?&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArrayList&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Object&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArrayList&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;?&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArrayList&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//3&lt;/span&gt;&lt;span class=&#34;w&#34;&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;blockquote&gt;
&lt;p&gt;1.合法：左右类型完全匹配。&lt;/p&gt;
&lt;p&gt;2.不合法：Java 泛型具有不变性，List&lt;String&gt; 与 List&lt;Object&gt; 不存在父子关系。&lt;/p&gt;
&lt;p&gt;若允许赋值，可通过 List&lt;Object&gt; 写入非 String 类型，破坏类型安全。&lt;/p&gt;
&lt;p&gt;3.合法：? 是无界通配符，代表未知类型，ArrayList&lt;String&gt; 是 List&lt;?&gt; 的子类型。&lt;/p&gt;
&lt;p&gt;但由于类型未知，只能读取不能写入（null 除外），因此编译器允许。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;一个字符串String,如何转换为字节数组。反过来呢?&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;//1.String → byte[]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;CodeEdge_Xu&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 显式指定编码（避免平台差异）&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;byte&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getBytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;StandardCharsets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;UTF_8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;//2.byte[] → String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;byte&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;...;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 与编码时保持一致&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;StandardCharsets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;UTF_8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&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;ol start=&#34;6&#34;&gt;
&lt;li&gt;Java中,如果对象有循环引用,能否被GC。比如Path类里面有个字段reversedPath反向字段。两个Path对象因为这个字段相互引用。如果不能被GC,怎么解决。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;能。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Java 主流 GC（G1、ZGC、CMS）用的是&lt;strong&gt;可达性分析&lt;/strong&gt;，不是引用计数。&lt;/p&gt;
&lt;p&gt;只要这两个 Path 对象整体从 GC Roots 不可达，循环引用不影响回收。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真正导致不能 GC 的是外部强引用&lt;/strong&gt;，比如：静态字段持有，ThreadLocal 未 remove，未注销的监听器。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决办法&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;一般不需要特殊处理。&lt;/p&gt;
&lt;p&gt;只要外部强引用断开，对象整体从 GC Roots 不可达即可回收。&lt;/p&gt;
&lt;p&gt;真正的问题是被静态变量、线程、缓存、监听器等长期持有。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;写正则表达式,从类似&amp;quot;10,12;A1@12|12:23|p=1|f=2&amp;quot;字符串中抽出变量:&amp;quot;{x},{y};{name}@{index}|{timeStart}|{timeEnd}p={id}&amp;quot;。其中,除了name外其余均是数字,name中有数字、字母、中划线、下划线。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Pattern&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pattern&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Pattern&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;compile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;^(\\d+),(\\d+);([A-Za-z0-9_-]+)@(\\d+)\\|(\\d+:\\d+)(?:\\|(\\d+:\\d+))?\\|p=(\\d+)\\|f=(\\d+)$&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&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;ol start=&#34;8&#34;&gt;
&lt;li&gt;什么是大端(Big-endian),什么小端(Little-endian)?网络传输一般是大端还是小端?&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;大端&lt;/strong&gt;：高位字节放前面，低位放后面。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;小端&lt;/strong&gt;：低位字节放前面，高位放后面。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;网络传输一般是大端&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;TCP/IP 协议规定数据包中的多字节整数必须按大端传输。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;9&#34;&gt;
&lt;li&gt;一个整数变量,如果只有一个线程修改它,但有多个线程读取它,有线程安全问题吗?&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;有线程安全问题，主要是可见性问题。&lt;/p&gt;
&lt;p&gt;写线程修改后的值，其他线程不一定能立刻看到，可能一直读取旧值，因此通常需要使用 volatile 或同步机制保证可见性。&lt;/p&gt;
&lt;p&gt;对于 long/double，早期 JVM 还存在非原子读写问题（现代 JVM 通常已解决）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;10 .  Java的线程能被强制杀死吗？&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不能安全地强制杀死。&lt;/p&gt;
&lt;p&gt;Thread.stop() 可以强制终止，但已废弃（deprecated），因为会立即释放锁，导致对象状态损坏、资源泄漏。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;11 .  如果想要一个线程安全的List,可以用List的哪些实现，或通过什么手段实现。&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;code&gt;Vector&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;古老类，所有方法 &lt;code&gt;synchronized&lt;/code&gt;，已不推荐&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Collections.synchronizedList(new ArrayList&amp;lt;&amp;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;CopyOnWriteArrayList&lt;/code&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;手动加锁&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;synchronized&lt;/code&gt; 或 &lt;code&gt;ReentrantReadWriteLock&lt;/code&gt;，灵活但代码重&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;12 .  有一个List，其中的元素是监听器对象。在多线程环境下，需要对这个List进行添加、删除和遍历三个操作，如何线程安全地进行?除了对添加、删除和遍历加锁或同步的方式——因为如果对遍历加同步，可能会阻塞很长时间，因为遍历一遍可能要很久，会阻塞添加、删除等操作，也会阻塞其他线程的遍历操作。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;用 &lt;strong&gt;&lt;code&gt;CopyOnWriteArrayList&lt;/code&gt;&lt;/strong&gt;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它内部写操作（add/remove）时复制一份新数组，修改完后替换引用；&lt;/p&gt;
&lt;p&gt;读/遍历直接读当前数组快照，&lt;strong&gt;完全不加锁&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;所以遍历不会阻塞添加、删除，也不会阻塞其他线程遍历。&lt;/p&gt;
&lt;p&gt;迭代器基于快照，不会抛 &lt;code&gt;ConcurrentModificationException&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;13 . Java核心库中创建线程池的方法是?通过核心库的线程池实现并发，比new Thread有哪些好处?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;工具类工厂方法&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;java.util.concurrent.Executors&lt;/code&gt; 提供的静态方法（如 &lt;code&gt;newFixedThreadPool&lt;/code&gt;、&lt;code&gt;newCachedThreadPool&lt;/code&gt;、&lt;code&gt;newSingleThreadExecutor&lt;/code&gt; 等）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;直接构造对象&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;通过 &lt;code&gt;new ThreadPoolExecutor(...)&lt;/code&gt; 手动创建。&lt;/p&gt;
&lt;p&gt;推荐直接使用 ThreadPoolExecutor 手动指定核心线程数、最大线程数、队列长度和拒绝策略，而不是直接使用 Executors 工厂方法，因为部分默认实现可能导致 OOM。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;比 &lt;strong&gt;&lt;code&gt;new Thread&lt;/code&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;已创建的线程，减少频繁创建和销毁线程的 CPU 和内存开销。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提高响应速度&lt;/strong&gt;：任务到达时，无需等待线程创建即可立即执行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提高线程可管理性&lt;/strong&gt;：能统一分配、调优和监控线程，防止无限制创建线程导致系统资源耗尽（如 OOM）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;14 .  MySQL中，varchar(100)的列，能存多少个英文字母?多少个汉字?使用utf8mb4字符集。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;100 个英文字母，100 个汉字。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MySQL 的 &lt;code&gt;varchar(100)&lt;/code&gt; 中 &lt;strong&gt;100 是字符数，不是字节数&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;utf8mb4 下英文字母通常 1 字节，中文常见汉字一般 3 字节，部分扩展字符可能占 4 字节，但 varchar(100) 限制的是字符数，因此最多依然存 100 个字符。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;15 .  MySQL中，datetime和timestamp有何不同，精度分别是毫秒还是秒，是否有时区?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;datetime：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;范围大（1000~9999 年）&lt;/li&gt;
&lt;li&gt;不涉及时区&lt;/li&gt;
&lt;li&gt;默认精度到秒&lt;/li&gt;
&lt;li&gt;支持小数秒 datetime(fsp)，最多微秒（6位）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;timestamp：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;范围小（1970~2038 年）&lt;/li&gt;
&lt;li&gt;有时区语义（存 UTC，读时按 session timezone 转换）&lt;/li&gt;
&lt;li&gt;默认精度到秒&lt;/li&gt;
&lt;li&gt;支持 timestamp(fsp)，最多微秒（6位）&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;16 . 写SQL：&lt;/p&gt;
&lt;p&gt;订单表wms_order，单行表wms_order_line，一对多关系。&lt;/p&gt;
&lt;p&gt;wms_order表有列id(单号)、create_on(创建时间)等字段，&lt;/p&gt;
&lt;p&gt;wms_order_line有id、order_id(所属订单)、line_no(行号)、product_id (商品 ID)。&lt;/p&gt;
&lt;p&gt;如何查询2021年12月内发生的含有A、B、C三个商品的订单。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_on&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wms_order&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INNER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;JOIN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wms_order_line&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ol&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ol&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;-- 筛选2021年12月的订单
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_on&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2021-12-01&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AND&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_on&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2022-01-01&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;-- 筛选包含A、B、C任意一个商品的行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AND&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ol&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;product_id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;C&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;GROUP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_on&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- 确保订单同时包含这3个不同的商品
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;HAVING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;COUNT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DISTINCT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ol&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;product_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&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;17 .  如果有一张订单表,查询量最大的查询条件有两种:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根据某个创建人和创建时间(范围)查询。&lt;/li&gt;
&lt;li&gt;根据某个类型和创建时间(范围)查询。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建议如何建立索引?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;建立两个&lt;strong&gt;联合索引&lt;/strong&gt;，并遵循“等值查询字段在前，范围查询字段在后”的原则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;索引一&lt;/strong&gt;：&lt;code&gt;(创建人, 创建时间)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;索引二&lt;/strong&gt;：&lt;code&gt;(类型, 创建时间)&lt;/code&gt;&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;/li&gt;
&lt;li&gt;&lt;strong&gt;覆盖查询&lt;/strong&gt;：联合索引可提高过滤效率；若查询字段被索引完全覆盖，还可减少回表。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;18 .  &lt;code&gt;@Resource&lt;/code&gt;、&lt;code&gt;@Autowired&lt;/code&gt;、&lt;code&gt;@Inject&lt;/code&gt;的区别?&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;特性&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;@Autowired&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;@Resource&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;@Inject&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;来源&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Spring 框架专用&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;JSR-250&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;JSR-330&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;默认匹配方式&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;按类型 (byType)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;先 byName，再 byType&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;按类型 (byType)&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;找不到对应 Bean&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;报错（可设置 &lt;code&gt;required=false&lt;/code&gt;）&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;报错&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;报错&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;指定特定名称&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;配合 &lt;code&gt;@Qualifier&lt;/code&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;使用 &lt;code&gt;name&lt;/code&gt; 属性&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;配合 &lt;code&gt;@Named&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;注入位置&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;构造器、字段、Setter、方法&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;字段、Setter&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;构造器、字段、Setter&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;19 .  &lt;code&gt;@Transactional&lt;/code&gt;可以用于private方法吗，为什么?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;private 方法不能生效，因为 Spring AOP 无法代理 private 方法；&lt;/p&gt;
&lt;p&gt;其不能被子类覆盖，因此代理对象无法拦截。&lt;/p&gt;
&lt;p&gt;同类内部 this.xxx() 调用也会绕过代理，因此事务同样不生效。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;20 .  支付宝等接口，要求请求中对字段做签名，目的是什么?常见的签名算法有哪些?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;保证请求数据&lt;strong&gt;不被篡改&lt;/strong&gt;，并&lt;strong&gt;证明请求方身份&lt;/strong&gt;（只有持有密钥的一方才能生成有效签名）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;常见签名算法&lt;/strong&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;strong&gt;RSA2&lt;/strong&gt; / &lt;code&gt;SHA256withRSA&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;主流，支付宝等常用，私钥签名、公钥验签&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;RSA&lt;/strong&gt; / &lt;code&gt;SHA1withRSA&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;旧版兼容，安全性弱于 RSA2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;HMAC-SHA256&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;双方共享密钥，常用于微信支付等&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;MD5&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;早期接口（如旧版支付宝），已不推荐，不安全&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;SM2&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;国密算法，政务/金融国产化场景&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;21 . 一种常见的攻击手段是huge body，比如请求报文是JSON，但构造一个很大的JSON字符串，几百M甚至几个G，解析JSON会把CPU干爆，甚至把内存用光。在Java体系下(Java Servlet、使用Spriing或不使用)，在哪一层怎么解决这个问题。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;huge body 应采用分层治理，越靠前拦截越好：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;网关 / Nginx 层（优先级最高）&lt;br&gt;
限制请求体大小，例如：&lt;br&gt;
client_max_body_size 10m;&lt;br&gt;
超限直接返回 413，避免请求进入 Java 应用。&lt;/li&gt;
&lt;li&gt;容器层（Tomcat/Jetty/Undertow）&lt;br&gt;
限制 HTTP 请求体大小，例如 Tomcat：&lt;br&gt;
maxPostSize=&amp;ldquo;10485760&amp;rdquo;&lt;br&gt;
防止超大 body 被 Servlet 容器接收。&lt;/li&gt;
&lt;li&gt;应用层（Spring / Servlet）&lt;br&gt;
避免 @RequestBody 直接全量反序列化大 JSON。&lt;br&gt;
可先检查 Content-Length，&lt;br&gt;
或使用 Jackson JsonParser 流式解析（Streaming API），边读边处理，避免一次性占用大量内存。&lt;/li&gt;
&lt;li&gt;安全治理&lt;br&gt;
结合限流、超时、熔断，防止 DoS 攻击持续消耗 CPU 与内存。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;22 .  把用户的密码明文存储到数据库里是不好的，那么如何存储比较好?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;采用 &lt;strong&gt;加盐哈希 (Salted Hashing)&lt;/strong&gt; 存储，具体做法如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;使用强散列算法&lt;/strong&gt;：不要使用 MD5 或 SHA-1（易破解），推荐使用 &lt;strong&gt;Argon2&lt;/strong&gt;、&lt;strong&gt;BCrypt&lt;/strong&gt; 或 &lt;strong&gt;SCrypt&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;添加随机盐值 (Salt)&lt;/strong&gt;：为每个用户生成一个唯一的、随机的“盐”，与密码拼接后再哈希。防止彩虹表攻击。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增加工作因子 (Work Factor)&lt;/strong&gt;：通过调整迭代次数增加计算耗时，抵御暴力破解。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;禁止可逆加密&lt;/strong&gt;：密码应单向加密，不可被还原。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;某些高安全场景还会增加 pepper（系统级密钥），保存在服务端配置或密钥系统中，而不是数据库。&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>解决 Windows 虚拟内存迁移失败的全过程实录</title>
        <link>https://iamxurulin.github.io/p/%E8%A7%A3%E5%86%B3-windows-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%E8%BF%81%E7%A7%BB%E5%A4%B1%E8%B4%A5%E7%9A%84%E5%85%A8%E8%BF%87%E7%A8%8B%E5%AE%9E%E5%BD%95/</link>
        <pubDate>Wed, 29 Apr 2026 23:49:57 +0000</pubDate>
        
        <guid>https://iamxurulin.github.io/p/%E8%A7%A3%E5%86%B3-windows-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%E8%BF%81%E7%A7%BB%E5%A4%B1%E8%B4%A5%E7%9A%84%E5%85%A8%E8%BF%87%E7%A8%8B%E5%AE%9E%E5%BD%95/</guid>
        <description>&lt;p&gt;最近发现C 盘空间告急，看了一下，有一个十几GB的虚拟内存（&lt;code&gt;pagefile.sys&lt;/code&gt;）文件，于是，我打算把它搬到D盘去，给C盘腾出点空间来。&lt;/p&gt;
&lt;p&gt;但是呢，我在【系统属性】里设置了N次，每次重启后都是弹出那句令人崩溃的：“&lt;strong&gt;由于启动计算机时出现了页面文件配置问题，Windows 在你的计算机上创建了一个临时页面文件&amp;hellip;&lt;/strong&gt;”&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://iamxurulin.github.io/images/c68cafd12441ab09e618353daeefde98-17c15ec4.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;本文，主要是为了复盘一下这次的排坑经历，从底层彻底解决这个顽疾。&lt;/p&gt;
&lt;h3 id=&#34;为什么常规迁移会失败&#34;&gt;为什么常规迁移会失败？
&lt;/h3&gt;&lt;p&gt;通常我们通过【高级系统设置】➡️【性能】➡️【虚拟内存】来修改，但系统依然反复跳回 C 盘。
&lt;img src=&#34;https://iamxurulin.github.io/images/3b72e86e6da77140ddca8813576cf03a-82872650.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;
其中的原因往往不在于你没点那个【设置】按钮：
&lt;img src=&#34;https://iamxurulin.github.io/images/2fff6d2759b25e78a5d7a657748b0d29-76312f9a.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;而在于以下两点底层逻辑：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;注册表强制开启了“仅在系统盘创建分页文件”的开关。&lt;/li&gt;
&lt;li&gt;Windows 启动早期需要一个微小的空间记录崩溃日志，如果 C 盘完全消失，系统会感到“不安全”而强制回滚。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;解决方案&#34;&gt;解决方案
&lt;/h3&gt;&lt;p&gt;如果你发现常规设置无效，请执行以下步骤：&lt;/p&gt;
&lt;p&gt;1.按 &lt;code&gt;Win + R&lt;/code&gt; 输入 &lt;code&gt;regedit&lt;/code&gt;，定位到：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在右侧找到并修改以下三项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TempPageFile&lt;/code&gt;：数值改为 &lt;code&gt;0&lt;/code&gt;（防止系统自作主张创建临时文件）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PagefileOnOsVolume&lt;/code&gt;：数值改为 &lt;code&gt;0&lt;/code&gt;（解锁“必须在系统盘”的限制）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PagingFiles&lt;/code&gt;：检查数值，确保路径指向你的目标盘，例如 &lt;code&gt;D:\pagefile.sys 16384 16384&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2.不要让 C 盘完全没有分页文件。&lt;/p&gt;
&lt;p&gt;给C 盘手动设为自定义大小，初始 800MB，最大 800MB。&lt;/p&gt;
&lt;p&gt;给D 盘手动设为你的目标大小，比如 16384MB。&lt;/p&gt;
&lt;p&gt;这一步主要是给 C 盘留 800MB 作为“诱饵”，满足系统记录内核日志的刚需，系统就不会因为“无处落脚”而把整个 16GB 的大文件重新塞回 C 盘。&lt;/p&gt;
&lt;p&gt;之后，我再重启电脑就没再出现那个烦人的页面了。&lt;/p&gt;
&lt;h3 id=&#34;小贴士&#34;&gt;小贴士
&lt;/h3&gt;&lt;p&gt;有时候，如果你反复通过UI 界面的设置都解决不了的问题，可能就要考虑一下注册表中的设置了。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
