<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>浅悦的编程时光</title>
  
  <subtitle>今天的努力，明天的美好。</subtitle>
  <link href="https://nate-lin.github.io/atom.xml" rel="self"/>
  
  <link href="https://nate-lin.github.io/"/>
  <updated>2021-03-21T13:56:57.819Z</updated>
  <id>https://nate-lin.github.io/</id>
  
  <author>
    <name>浅  悦</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>线程</title>
    <link href="https://nate-lin.github.io/2021/03/21/xian-cheng/"/>
    <id>https://nate-lin.github.io/2021/03/21/xian-cheng/</id>
    <published>2021-03-21T03:11:06.000Z</published>
    <updated>2021-03-21T13:56:57.819Z</updated>
    
    <content type="html"><![CDATA[<h3 id="线程基本要求"><a href="#线程基本要求" class="headerlink" title="线程基本要求"></a>线程基本要求</h3><ul><li>能够描述Java中多线程运行原理</li><li>能够使用继承类的方式创建多线程</li><li>能够使用实现接口的方式创建多线程</li><li>能够解释安全问题的出现的原因</li><li>能够使用同步代码解决线程安全问题</li><li>能够说出线程6个状态的名称</li></ul><h3 id="第一章-线程"><a href="#第一章-线程" class="headerlink" title="第一章 线程"></a>第一章 线程</h3><blockquote><p>先画个多线程执行时序图来体验一下多线程程序的执行流程。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210321151737917.png"></p><p>代码如下</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo06<span class="token punctuation">.</span></span><span class="token class-name">Thread</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/3/17 22:11 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    创建多线程程序的第一种方式：创建Thread类的子类    java.lang.Thread类：是描述线程的类，我们想要实现多线程程序，就必须继承Thread类    实现步骤：        1.创建一个Thread类的子类        2.在Thread类中的子类中重写Thread类中的run方法，设置线程任务（开启线程要做什么？）        3.创建Thread类的子类对象        4.调用Thread类中的方法，开启新的线程，执行run方法            void start()使该线程开始执行；java虚拟机调用该线程的run()方法。            结果是两个线程并发地运行；当前线程（main线程）和另一个线程（创建的新的线程，执行其run方法）            多次启动一个线程是非法的。特别是当前线程已经结束执行后，不能再重新启动。        java程序属于抢占式调度，那个线程的优先级高，那么线程优先执行，同一个优先级，随机选择一个执行。        */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01Thread</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token comment">//3.创建Thread类的子类对象</span>        <span class="token class-name">MyThread</span> mt<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">MyThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token comment">//4.调用Thread类中的方法，开启新的线程，执行run方法</span>        mt<span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span><span class="token number">10</span> <span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"main:"</span><span class="token operator">+</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>  <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo06<span class="token punctuation">.</span></span><span class="token class-name">Thread</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/3/17 22:30 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">//1.创建一个Thread类的子类</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyThread</span> <span class="token keyword">extends</span> <span class="token class-name">Thread</span><span class="token punctuation">{</span>    <span class="token comment">//2.在Thread类中的子类中重写Thread类中的run方法，设置线程任务（开启线程要做什么？）</span>    <span class="token annotation punctuation">@Override</span>    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span><span class="token number">10</span> <span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"run:"</span><span class="token operator">+</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>                    <span class="token punctuation">}</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>效果如下</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210317224736686.png"></p><h4 id="1-1、多线程原理"><a href="#1-1、多线程原理" class="headerlink" title="1.1、多线程原理"></a>1.1、多线程原理</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210321152450786.png" alt="image-20210321152450786"></p><h4 id="1-2、多线程内存图解"><a href="#1-2、多线程内存图解" class="headerlink" title="1.2、多线程内存图解"></a>1.2、多线程内存图解</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210321154137970.png" alt="image-20210321154137970"></p><h4 id="1-3、Thread类"><a href="#1-3、Thread类" class="headerlink" title="1.3、Thread类"></a>1.3、Thread类</h4><blockquote><p> 我们完成操作过程中用到了<code>java.lang.Thread</code>类，API中该类中定义了有关线程的一些方法，具体如下：</p></blockquote><p><strong>构造方法：</strong></p><ul><li><code>public Thread()</code>:分配一个新的线程对象。</li><li><code>public Thread(String name)</code>:分配一个指定名字的新的线程对象。</li><li><code>public Thread(Runnable target)</code>:分配一个带有指定目标新的线程对象。</li><li><code>public Thread(Runnable target,String name)</code>:分配一个带有指定目标新的线程对象并指定名字。</li></ul><p><strong>常用方法：</strong></p><ul><li><code>public String getName()</code>:获取当前线程名字。</li><li><code>public void start()</code>:导致此线程开始执行；Java虚拟机调用此线程对象。</li><li><code>public void run()</code>:此线程要执行的任务在此处定义代码。</li><li><code>public static void sleep(long millis)</code>:使当前正在执行的线程以指定的毫秒数暂停（暂停停止执行）。</li><li><code>public static Thread currentThread()</code>:返回对当前正在执行的线程对象引用。</li></ul><blockquote><p>翻阅API后得知创建线程的方式总共有两种，一种是继承Thread类方式，一种是实现Runnable接口方式。</p></blockquote><p>代码如下</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo01<span class="token punctuation">.</span>getName</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/3/21 16:58 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01GetThreadName</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token comment">//创建Thread类的子类对象</span>        <span class="token class-name">MyThread</span> mt<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">MyThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token comment">//调用start方法，开启新线程，执行run方法</span>        mt<span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">new</span> <span class="token class-name">MyThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">new</span> <span class="token class-name">MyThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token comment">//链式编程</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token class-name">Thread</span><span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo01<span class="token punctuation">.</span>getName</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/3/21 16:58 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    获取线程的名称：        1.使用Thread类中的方法GetName()            String getName()返回该线程的名称        2.可以先获取到当前正在执行的线程，使用线程中的方法getName()获取线程的名称            static Thread currentThread()返回当前正在执行的线程对象的引用。*/</span><span class="token comment">//定义一个Thread类的子类</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyThread</span> <span class="token keyword">extends</span> <span class="token class-name">Thread</span><span class="token punctuation">{</span>    <span class="token comment">//重写Thread类中的run方法，设置线程任务</span>    <span class="token annotation punctuation">@Override</span>    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token comment">//获取线程名称</span>        <span class="token comment">//String name=getName();</span>        <span class="token comment">//System.out.println(name);</span>        <span class="token class-name">Thread</span> t<span class="token operator">=</span><span class="token class-name">Thread</span><span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">String</span> name<span class="token operator">=</span>t<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token comment">//链式编程</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token class-name">Thread</span><span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>效果如下</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210321191149083.png" alt="image-20210321191149083"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;线程基本要求&quot;&gt;&lt;a href=&quot;#线程基本要求&quot; class=&quot;headerlink&quot; title=&quot;线程基本要求&quot;&gt;&lt;/a&gt;线程基本要求&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;能够描述Java中多线程运行原理&lt;/li&gt;
&lt;li&gt;能够使用继承类的方式创建多线程&lt;/li&gt;
&lt;</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>Java-多线程</title>
    <link href="https://nate-lin.github.io/2021/02/08/java-duo-xian-cheng/"/>
    <id>https://nate-lin.github.io/2021/02/08/java-duo-xian-cheng/</id>
    <published>2021-02-08T15:07:07.000Z</published>
    <updated>2021-03-21T07:23:07.893Z</updated>
    
    <content type="html"><![CDATA[<h3 id="多线程"><a href="#多线程" class="headerlink" title="多线程"></a>多线程</h3><h4 id="1-1、并发与并行"><a href="#1-1、并发与并行" class="headerlink" title="1.1、并发与并行"></a>1.1、并发与并行</h4><hr><ul><li><strong>并发</strong>:指两个或者多个事件在<strong>同一时间段内</strong>发生的。</li><li><strong>并行</strong>：指两个或者多个事件在<strong>同一时刻</strong>发生（同时发生）。</li></ul><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210208221317571.png"></p><blockquote><p>注意：单核处理器的计算机肯定是不能并行的处理多个任务的，只能是多个任务在单个CPU上并行运行。同理，线程也是一样，从宏观角度上理解线程是并行运行的，但是从微观角度上分析却是串行运行的，即一个线程一个线程的去运行，当系统只有一个CPU时，线程会以某种顺序执行多个线程，我们把这种情况称之为线程调度。</p></blockquote><h4 id="1-2、进程与线程"><a href="#1-2、进程与线程" class="headerlink" title="1.2、进程与线程"></a>1.2、进程与线程</h4><hr><ul><li><p><strong>进程</strong>：是指一个内存中运行的应用程序，每个进程都有一个独立的内存空间，一个应用程序可以同时运行多个进程；进程也是程序的一次执行过程，是系统运行程序的基本单位；系统运行一个程序即是一个进程从创建、运行到消亡的过程。</p></li><li><p><strong>线程</strong>：线程是进程中的一个执行单位，负责当前进程中的程序的执行，一个进程中至少有一个线程。一个进程中是可以有多个线程的，这个应用程序也可以称之为多线程程序。</p><p>简而言之：一个程序运行后至少有一个进程，一个进程中可以包含多个线程。</p></li></ul><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210208223622305.png" alt="进程的概念"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210208223917448.png" alt="电脑任务栏进程示意图"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/8ac4a392aef9575051bc5ee86fa53cf.png"></p><p><strong>线程调度：</strong></p><hr><ul><li><p>分时调度</p><p>所有线程轮流使用CPU的使用权，平均分配每个线程占用CPU的时间。</p></li><li><p>抢占式调度</p><p>优先让优先级高的线程使用CPU，如果线程的优先级相同，那么会随机选择一个（线程随机性），Java使用的为抢先式调度。</p></li></ul><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210208230121623.png" alt="设置线程的优先级"></p><h4 id="1-3、创建线程类"><a href="#1-3、创建线程类" class="headerlink" title="1.3、创建线程类"></a>1.3、创建线程类</h4><hr><p>Java使用<code>java.lang.Thread</code>类代表<strong>线程</strong>，所有的线程对象都必须是Thread类或者其子类的实例。每个线程的作用是完成一定的任务，实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。Java中通过继承Thread类来<strong>创建</strong>并<strong>启动多线程</strong>的步骤如下：</p><p>​    1.定义Thread类的子类，并重写该类的run()方法，该run()方法的方法体就代表了线程需要完成的任务，因此把run()方法称为线程执行体。</p><p>​    2.创建Thread子类的实例，即创建了线程对象 。</p><p>​    3.调用线程对象的start()方法来启动该线程。</p><p>代码如下：</p><p>主线程测试类：</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo05<span class="token punctuation">.</span></span><span class="token class-name">Thread</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/2/9 23:20 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Person</span> <span class="token punctuation">{</span>    <span class="token keyword">private</span> <span class="token class-name">String</span> name<span class="token punctuation">;</span>    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token comment">//定义循环，执行20次</span>        <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">20</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>name<span class="token operator">+</span><span class="token string">"--&gt;"</span><span class="token operator">+</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>            <span class="token keyword">public</span> <span class="token class-name">Person</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token punctuation">}</span>    <span class="token keyword">public</span> <span class="token class-name">Person</span><span class="token punctuation">(</span><span class="token class-name">String</span> name<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token keyword">this</span><span class="token punctuation">.</span>name <span class="token operator">=</span> name<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">public</span> <span class="token class-name">String</span> <span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token keyword">return</span> name<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">setName</span><span class="token punctuation">(</span><span class="token class-name">String</span> name<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token keyword">this</span><span class="token punctuation">.</span>name <span class="token operator">=</span> name<span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo05<span class="token punctuation">.</span></span><span class="token class-name">Thread</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/2/9 23:16 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Arrays</span><span class="token punctuation">;</span><span class="token comment">/** *  主线程：执行主（main）方法的线程 * *  单线程程序：java程序中只有一个线程 *  执行从main方法开始，从上到下依次执行 * *  JVM执行main方法，main方法会进入到栈内存 * JVM会栈操作系统开辟一条main方法通向cpu的执行路径 * cpu就可以通过这个路径来执行main方法 * 而这个路径有一个名字叫main（主）线程 */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01MainThread</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token class-name">Person</span> p1<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">Person</span><span class="token punctuation">(</span><span class="token string">"浅悦"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        p1<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token operator">/</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//ArithmeticException: / by zero</span>        <span class="token comment">//出现异常时，后面的“林春燕”不能执行，这就是单线程。</span>        <span class="token class-name">Person</span> p2<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">Person</span><span class="token punctuation">(</span><span class="token string">"林春燕"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        p2<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>效果如下</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210210000041757.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/1%E6%9C%AC.png" alt="主线程的概念分析图"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;多线程&quot;&gt;&lt;a href=&quot;#多线程&quot; class=&quot;headerlink&quot; title=&quot;多线程&quot;&gt;&lt;/a&gt;多线程&lt;/h3&gt;&lt;h4 id=&quot;1-1、并发与并行&quot;&gt;&lt;a href=&quot;#1-1、并发与并行&quot; class=&quot;headerlink&quot; title=&quot;1.1</summary>
      
    
    
    
    <category term="基础知识" scheme="https://nate-lin.github.io/categories/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/"/>
    
    
    <category term="Java笔记" scheme="https://nate-lin.github.io/tags/Java%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Hexo-Could not read from remote repository的解决方法</title>
    <link href="https://nate-lin.github.io/2020/12/25/hexo-could-not-read-from-remote-repository-de-jie-jue-fang-fa/"/>
    <id>https://nate-lin.github.io/2020/12/25/hexo-could-not-read-from-remote-repository-de-jie-jue-fang-fa/</id>
    <published>2020-12-25T05:20:45.000Z</published>
    <updated>2020-12-25T06:30:12.218Z</updated>
    
    <content type="html"><![CDATA[<h3 id="1-问题"><a href="#1-问题" class="headerlink" title="1.问题"></a>1.问题</h3><p>当<code>hexo g -d</code>就报以下错误，解决方式如下</p><blockquote><p>Disconnected from 18.140.96.234 port 443<br>fatal: Could not read from remote repository.</p><p>Please make sure you have the correct access rights<br>and the repository exists.</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201225134447293.png"></p><h3 id="2-解决方法"><a href="#2-解决方法" class="headerlink" title="2.解决方法"></a>2.解决方法</h3><pre class="line-numbers language-java" data-language="java"><code class="language-java">git initgit add <span class="token punctuation">.</span>git commit <span class="token operator">-</span>m “修改”git remote add origin url <span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201225135043871.png"></p><pre class="line-numbers language-java" data-language="java"><code class="language-java">git push origin master <span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201225135735972.png" alt="正确图片"></p><blockquote><p>输入以上命令出现以下图片的，则问题解决完毕；如出现以下错误图片的，则继续操作命令。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201225135425451.png" alt="错误图片"></p><pre class="line-numbers language-java" data-language="java"><code class="language-java">git push <span class="token operator">-</span>f origin master  <span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><blockquote><p> 如出现错误图片，再执行一次，直至出现正确图片为止</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201225135459644.png" alt="错误图片"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201225135553405.png" alt="正确图片"></p><pre class="line-numbers language-java" data-language="java"><code class="language-java">git push origin master<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201225135735972.png"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;1-问题&quot;&gt;&lt;a href=&quot;#1-问题&quot; class=&quot;headerlink&quot; title=&quot;1.问题&quot;&gt;&lt;/a&gt;1.问题&lt;/h3&gt;&lt;p&gt;当&lt;code&gt;hexo g -d&lt;/code&gt;就报以下错误，解决方式如下&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Disco</summary>
      
    
    
    
    <category term="笔记" scheme="https://nate-lin.github.io/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="技术笔记" scheme="https://nate-lin.github.io/tags/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Hexo-添加板娘和有趣Title</title>
    <link href="https://nate-lin.github.io/2020/12/24/hexo-tian-jia-ban-niang-he-you-qu-title/"/>
    <id>https://nate-lin.github.io/2020/12/24/hexo-tian-jia-ban-niang-he-you-qu-title/</id>
    <published>2020-12-24T15:35:13.000Z</published>
    <updated>2020-12-26T09:49:06.790Z</updated>
    
    <content type="html"><![CDATA[<h3 id="1、添加板娘"><a href="#1、添加板娘" class="headerlink" title="1、添加板娘"></a>1、添加板娘</h3><blockquote><p>1.在主题下的<code>layout.ejs</code>文件添加如下内容</p></blockquote><pre class="line-numbers language-ejs" data-language="ejs"><code class="language-ejs"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/autoload.js<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><blockquote><p>2.在主题下的<code>head.ejs</code>文件添加如下内容</p></blockquote><ul><li>作用：把板娘固定在右边（设置在固定位置）</li></ul><pre class="line-numbers language-ejs" data-language="ejs"><code class="language-ejs"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>style</span><span class="token punctuation">&gt;</span></span><span class="token style"><span class="token language-css">    <span class="token selector">#waifu</span><span class="token punctuation">{</span>    <span class="token property">left</span><span class="token punctuation">:</span> auto <span class="token important">!important</span><span class="token punctuation">;</span>    <span class="token property">right</span><span class="token punctuation">:</span> 440px <span class="token important">!important</span><span class="token punctuation">;</span><span class="token punctuation">}</span></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>style</span><span class="token punctuation">&gt;</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201226111626436.png" alt="板娘效果显示图"></p><h3 id="2、添加有趣Title"><a href="#2、添加有趣Title" class="headerlink" title="2、添加有趣Title"></a>2、添加有趣Title</h3><p>1.在主题下的<code>layout.ejs</code>文件添加如下内容</p><pre class="line-numbers language-ejs" data-language="ejs"><code class="language-ejs"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token ejs language-ejs"><span class="token delimiter punctuation">&lt;%-</span><span class="token language-javascript"> theme<span class="token punctuation">.</span>jsDelivr<span class="token punctuation">.</span>url </span><span class="token delimiter punctuation">%&gt;</span></span><span class="token ejs language-ejs"><span class="token delimiter punctuation">&lt;%-</span><span class="token language-javascript"> <span class="token function">url_for</span><span class="token punctuation">(</span><span class="token string">'/js/FunnyTitle.js'</span><span class="token punctuation">)</span> </span><span class="token delimiter punctuation">%&gt;</span></span><span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>2.在主题下的<code>source</code>/<code>js</code>的文件夹创建一个<code>FunnyTitle.js</code>文件，文件里面内容如下</p><pre class="line-numbers language-js" data-language="js"><code class="language-js"><span class="token keyword">var</span> OriginTitle <span class="token operator">=</span> document<span class="token punctuation">.</span>title<span class="token punctuation">;</span><span class="token keyword">var</span> titleTime<span class="token punctuation">;</span>document<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'visibilitychange'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>    <span class="token keyword">if</span> <span class="token punctuation">(</span>document<span class="token punctuation">.</span>hidden<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'[rel="icon"]'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'href'</span><span class="token punctuation">,</span> <span class="token string">"https://i.loli.net/2020/12/20/BZhvzONd8lgoFAI.png"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        document<span class="token punctuation">.</span>title <span class="token operator">=</span> <span class="token string">'ヾ(❀╹◡╹)ﾉ~我藏好了哦'</span><span class="token punctuation">;</span>        <span class="token function">clearTimeout</span><span class="token punctuation">(</span>titleTime<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">else</span> <span class="token punctuation">{</span>        <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'[rel="icon"]'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'href'</span><span class="token punctuation">,</span> <span class="token string">"https://i.loli.net/2020/12/20/BZhvzONd8lgoFAI.png"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        document<span class="token punctuation">.</span>title <span class="token operator">=</span> <span class="token string">'（*＾ワ＾*）被你发现啦'</span> <span class="token operator">+</span> OriginTitle<span class="token punctuation">;</span>        titleTime <span class="token operator">=</span> <span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>            document<span class="token punctuation">.</span>title <span class="token operator">=</span> OriginTitle<span class="token punctuation">;</span>        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201226111334530.png" alt="离开页面的效果"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201226111408673.png" alt="回到页面的效果"></p><h3 id="操作完毕后，保存，hexo-g-d即可查看效果。"><a href="#操作完毕后，保存，hexo-g-d即可查看效果。" class="headerlink" title="操作完毕后，保存，hexo g -d即可查看效果。"></a>操作完毕后，保存，<code>hexo g -d</code>即可查看效果。</h3>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;1、添加板娘&quot;&gt;&lt;a href=&quot;#1、添加板娘&quot; class=&quot;headerlink&quot; title=&quot;1、添加板娘&quot;&gt;&lt;/a&gt;1、添加板娘&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;1.在主题下的&lt;code&gt;layout.ejs&lt;/code&gt;文件添加如下内容&lt;/p</summary>
      
    
    
    
    <category term="笔记" scheme="https://nate-lin.github.io/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="技术笔记" scheme="https://nate-lin.github.io/tags/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Hexo-动态灯笼挂件</title>
    <link href="https://nate-lin.github.io/2020/12/24/hexo-dong-tai-deng-long-gua-jian/"/>
    <id>https://nate-lin.github.io/2020/12/24/hexo-dong-tai-deng-long-gua-jian/</id>
    <published>2020-12-24T14:35:54.000Z</published>
    <updated>2020-12-25T06:30:32.089Z</updated>
    
    <content type="html"><![CDATA[<h3 id="添加动态灯笼挂件"><a href="#添加动态灯笼挂件" class="headerlink" title="添加动态灯笼挂件"></a>添加动态灯笼挂件</h3><blockquote><p>建议添加在主题下的header.ejs里面,我的是hexo-theme-matery主题，所以我放在<code>hexo-theme-matery</code>/<code>layout</code>/<code>_partial</code>/<code>header.ejs</code></p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201224224021407.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201224224604555.png"></p><h4 id="header-ejs"><a href="#header-ejs" class="headerlink" title="header.ejs"></a>header.ejs</h4><pre class="line-numbers language-ejs" data-language="ejs"><code class="language-ejs"><span class="token comment">&lt;!-- 元宵节灯笼样式开始 --&gt;</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>style</span><span class="token punctuation">&gt;</span></span><span class="token style"><span class="token language-css">    <span class="token atrule"><span class="token rule">@media</span> <span class="token keyword">only</span> screen <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token property">min-width</span><span class="token punctuation">:</span> 1124px<span class="token punctuation">)</span></span> <span class="token punctuation">{</span>        <span class="token selector">.nav-menu</span> <span class="token punctuation">{</span>            <span class="token property">padding-right</span><span class="token punctuation">:</span> 96px<span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token atrule"><span class="token rule">@media</span> <span class="token keyword">only</span> screen <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token property">max-width</span><span class="token punctuation">:</span> 760px<span class="token punctuation">)</span></span> <span class="token punctuation">{</span>        <span class="token selector">.deng-box, .deng-box1</span> <span class="token punctuation">{</span>            <span class="token property">width</span><span class="token punctuation">:</span> 40%<span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token selector">.right</span> <span class="token punctuation">{</span>            <span class="token property">float</span><span class="token punctuation">:</span> left<span class="token important">!important</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token atrule"><span class="token rule">@media</span> <span class="token keyword">only</span> screen <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token property">min-width</span><span class="token punctuation">:</span> 768px<span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token punctuation">(</span><span class="token property">max-width</span><span class="token punctuation">:</span> 1024px<span class="token punctuation">)</span></span> <span class="token punctuation">{</span>        <span class="token selector">.right</span> <span class="token punctuation">{</span>            <span class="token property">float</span><span class="token punctuation">:</span> left<span class="token important">!important</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng-box</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> fixed<span class="token punctuation">;</span>        <span class="token property">top</span><span class="token punctuation">:</span> -40px<span class="token punctuation">;</span>        <span class="token property">right</span><span class="token punctuation">:</span> -20px<span class="token punctuation">;</span>        <span class="token property">z-index</span><span class="token punctuation">:</span> 999<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng-box1</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> fixed<span class="token punctuation">;</span>        <span class="token property">top</span><span class="token punctuation">:</span> -30px<span class="token punctuation">;</span>        <span class="token property">right</span><span class="token punctuation">:</span> 10px<span class="token punctuation">;</span>        <span class="token property">z-index</span><span class="token punctuation">:</span> 999<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng-box1 .deng</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> relative<span class="token punctuation">;</span>        <span class="token property">width</span><span class="token punctuation">:</span> 120px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 90px<span class="token punctuation">;</span>        <span class="token property">margin</span><span class="token punctuation">:</span> 50px<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #d8000f<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> <span class="token function">rgba</span><span class="token punctuation">(</span>216<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 15<span class="token punctuation">,</span> 0.8<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 50% 50%<span class="token punctuation">;</span>        <span class="token property">-webkit-transform-origin</span><span class="token punctuation">:</span> 50% -100px<span class="token punctuation">;</span>        <span class="token property">-webkit-animation</span><span class="token punctuation">:</span> swing 5s infinite ease-in-out<span class="token punctuation">;</span>        <span class="token property">box-shadow</span><span class="token punctuation">:</span> -5px 5px 30px 4px <span class="token function">rgba</span><span class="token punctuation">(</span>252<span class="token punctuation">,</span> 144<span class="token punctuation">,</span> 61<span class="token punctuation">,</span> 1<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> relative<span class="token punctuation">;</span>        <span class="token property">width</span><span class="token punctuation">:</span> 120px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 90px<span class="token punctuation">;</span>        <span class="token property">margin</span><span class="token punctuation">:</span> 50px<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #d8000f<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> <span class="token function">rgba</span><span class="token punctuation">(</span>216<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 15<span class="token punctuation">,</span> 0.8<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 50% 50%<span class="token punctuation">;</span>        <span class="token property">-webkit-transform-origin</span><span class="token punctuation">:</span> 50% -100px<span class="token punctuation">;</span>        <span class="token property">-webkit-animation</span><span class="token punctuation">:</span> swing 3s infinite ease-in-out<span class="token punctuation">;</span>        <span class="token property">box-shadow</span><span class="token punctuation">:</span> -5px 5px 50px 4px <span class="token function">rgba</span><span class="token punctuation">(</span>250<span class="token punctuation">,</span> 108<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 1<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng-a</span> <span class="token punctuation">{</span>        <span class="token property">width</span><span class="token punctuation">:</span> 100px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 90px<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #d8000f<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> <span class="token function">rgba</span><span class="token punctuation">(</span>216<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 15<span class="token punctuation">,</span> 0.1<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token property">margin</span><span class="token punctuation">:</span> 12px 8px 8px 10px<span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 50% 50%<span class="token punctuation">;</span>        <span class="token property">border</span><span class="token punctuation">:</span> 2px solid #dc8f03<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng-b</span> <span class="token punctuation">{</span>        <span class="token property">width</span><span class="token punctuation">:</span> 45px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 90px<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #d8000f<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> <span class="token function">rgba</span><span class="token punctuation">(</span>216<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 15<span class="token punctuation">,</span> 0.1<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token property">margin</span><span class="token punctuation">:</span> -4px 8px 8px 26px<span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 50% 50%<span class="token punctuation">;</span>        <span class="token property">border</span><span class="token punctuation">:</span> 2px solid #dc8f03<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.xian</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> absolute<span class="token punctuation">;</span>        <span class="token property">top</span><span class="token punctuation">:</span> -20px<span class="token punctuation">;</span>        <span class="token property">left</span><span class="token punctuation">:</span> 60px<span class="token punctuation">;</span>        <span class="token property">width</span><span class="token punctuation">:</span> 2px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 20px<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #dc8f03<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.shui-a</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> relative<span class="token punctuation">;</span>        <span class="token property">width</span><span class="token punctuation">:</span> 5px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 20px<span class="token punctuation">;</span>        <span class="token property">margin</span><span class="token punctuation">:</span> -5px 0 0 59px<span class="token punctuation">;</span>        <span class="token property">-webkit-animation</span><span class="token punctuation">:</span> swing 4s infinite ease-in-out<span class="token punctuation">;</span>        <span class="token property">-webkit-transform-origin</span><span class="token punctuation">:</span> 50% -45px<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #ffa500<span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 0 0 5px 5px<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.shui-b</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> absolute<span class="token punctuation">;</span>        <span class="token property">top</span><span class="token punctuation">:</span> 14px<span class="token punctuation">;</span>        <span class="token property">left</span><span class="token punctuation">:</span> -2px<span class="token punctuation">;</span>        <span class="token property">width</span><span class="token punctuation">:</span> 10px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 10px<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #dc8f03<span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 50%<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.shui-c</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> absolute<span class="token punctuation">;</span>        <span class="token property">top</span><span class="token punctuation">:</span> 18px<span class="token punctuation">;</span>        <span class="token property">left</span><span class="token punctuation">:</span> -2px<span class="token punctuation">;</span>        <span class="token property">width</span><span class="token punctuation">:</span> 10px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 35px<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #ffa500<span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 0 0 0 5px<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng:before</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> absolute<span class="token punctuation">;</span>        <span class="token property">top</span><span class="token punctuation">:</span> -7px<span class="token punctuation">;</span>        <span class="token property">left</span><span class="token punctuation">:</span> 29px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 12px<span class="token punctuation">;</span>        <span class="token property">width</span><span class="token punctuation">:</span> 60px<span class="token punctuation">;</span>        <span class="token property">content</span><span class="token punctuation">:</span> <span class="token string">" "</span><span class="token punctuation">;</span>        <span class="token property">display</span><span class="token punctuation">:</span> block<span class="token punctuation">;</span>        <span class="token property">z-index</span><span class="token punctuation">:</span> 999<span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 5px 5px 0 0<span class="token punctuation">;</span>        <span class="token property">border</span><span class="token punctuation">:</span> solid 1px #dc8f03<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #ffa500<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> <span class="token function">linear-gradient</span><span class="token punctuation">(</span>to right<span class="token punctuation">,</span> #dc8f03<span class="token punctuation">,</span> #ffa500<span class="token punctuation">,</span> #dc8f03<span class="token punctuation">,</span> #ffa500<span class="token punctuation">,</span> #dc8f03<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng:after</span> <span class="token punctuation">{</span>        <span class="token property">position</span><span class="token punctuation">:</span> absolute<span class="token punctuation">;</span>        <span class="token property">bottom</span><span class="token punctuation">:</span> -7px<span class="token punctuation">;</span>        <span class="token property">left</span><span class="token punctuation">:</span> 10px<span class="token punctuation">;</span>        <span class="token property">height</span><span class="token punctuation">:</span> 12px<span class="token punctuation">;</span>        <span class="token property">width</span><span class="token punctuation">:</span> 60px<span class="token punctuation">;</span>        <span class="token property">content</span><span class="token punctuation">:</span> <span class="token string">" "</span><span class="token punctuation">;</span>        <span class="token property">display</span><span class="token punctuation">:</span> block<span class="token punctuation">;</span>        <span class="token property">margin-left</span><span class="token punctuation">:</span> 20px<span class="token punctuation">;</span>        <span class="token property">border-radius</span><span class="token punctuation">:</span> 0 0 5px 5px<span class="token punctuation">;</span>        <span class="token property">border</span><span class="token punctuation">:</span> solid 1px #dc8f03<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> #ffa500<span class="token punctuation">;</span>        <span class="token property">background</span><span class="token punctuation">:</span> <span class="token function">linear-gradient</span><span class="token punctuation">(</span>to right<span class="token punctuation">,</span> #dc8f03<span class="token punctuation">,</span> #ffa500<span class="token punctuation">,</span> #dc8f03<span class="token punctuation">,</span> #ffa500<span class="token punctuation">,</span> #dc8f03<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token atrule"><span class="token rule">@font-face</span></span> <span class="token punctuation">{</span>        <span class="token property">font-family</span><span class="token punctuation">:</span> <span class="token string">"华文行楷"</span><span class="token punctuation">;</span>        <span class="token property">src</span><span class="token punctuation">:</span> <span class="token url"><span class="token function">url</span><span class="token punctuation">(</span><span class="token string url">'/fonts/华文行楷.ttf'</span><span class="token punctuation">)</span></span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.deng-t</span> <span class="token punctuation">{</span>        <span class="token property">font-family</span><span class="token punctuation">:</span> 华文行楷<span class="token punctuation">;</span>        <span class="token property">font-size</span><span class="token punctuation">:</span> 26px<span class="token punctuation">;</span>        <span class="token property">color</span><span class="token punctuation">:</span> #dc8f03<span class="token punctuation">;</span>        <span class="token property">font-weight</span><span class="token punctuation">:</span> bold<span class="token punctuation">;</span>        <span class="token property">line-height</span><span class="token punctuation">:</span> 44px<span class="token punctuation">;</span>        <span class="token property">text-align</span><span class="token punctuation">:</span> center<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token selector">.night .deng-t,    .night .deng-box,    .night .deng-box1</span> <span class="token punctuation">{</span>        <span class="token property">background</span><span class="token punctuation">:</span> transparent <span class="token important">!important</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token atrule"><span class="token rule">@-moz-keyframes</span> swing</span> <span class="token punctuation">{</span>        <span class="token selector">0%</span> <span class="token punctuation">{</span>                <span class="token property">-moz-transform</span><span class="token punctuation">:</span> <span class="token function">rotate</span><span class="token punctuation">(</span>-10deg<span class="token punctuation">)</span>        <span class="token punctuation">}</span>        <span class="token selector">50%</span> <span class="token punctuation">{</span>             <span class="token property">-moz-transform</span><span class="token punctuation">:</span> <span class="token function">rotate</span><span class="token punctuation">(</span>10deg<span class="token punctuation">)</span>        <span class="token punctuation">}</span>        <span class="token selector">100%</span> <span class="token punctuation">{</span>                <span class="token property">-moz-transform</span><span class="token punctuation">:</span> <span class="token function">rotate</span><span class="token punctuation">(</span>-10deg<span class="token punctuation">)</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token atrule"><span class="token rule">@-webkit-keyframes</span> swing</span> <span class="token punctuation">{</span>        <span class="token selector">0%</span> <span class="token punctuation">{</span>                <span class="token property">-webkit-transform</span><span class="token punctuation">:</span> <span class="token function">rotate</span><span class="token punctuation">(</span>-10deg<span class="token punctuation">)</span>        <span class="token punctuation">}</span>        <span class="token selector">50%</span> <span class="token punctuation">{</span>                <span class="token property">-webkit-transform</span><span class="token punctuation">:</span> <span class="token function">rotate</span><span class="token punctuation">(</span>10deg<span class="token punctuation">)</span>        <span class="token punctuation">}</span>        <span class="token selector">100%</span> <span class="token punctuation">{</span>                <span class="token property">-webkit-transform</span><span class="token punctuation">:</span> <span class="token function">rotate</span><span class="token punctuation">(</span>-10deg<span class="token punctuation">)</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>style</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng-box<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xian<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng-a<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>            <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng-b<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng-t<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>喜迎<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>shui shui-a<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>shui-c<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>shui-b<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng-box1<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xian<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng-a<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>            <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng-b<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>deng-t<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>元旦<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>shui shui-a<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>shui-c<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>shui-b<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span><span class="token comment">&lt;!-- 元宵节灯笼样式结束 --&gt;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="保存后hexo-g-d，即可看见效果"><a href="#保存后hexo-g-d，即可看见效果" class="headerlink" title="保存后hexo g -d，即可看见效果"></a>保存后<code>hexo g -d</code>，即可看见效果</h3>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;添加动态灯笼挂件&quot;&gt;&lt;a href=&quot;#添加动态灯笼挂件&quot; class=&quot;headerlink&quot; title=&quot;添加动态灯笼挂件&quot;&gt;&lt;/a&gt;添加动态灯笼挂件&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;建议添加在主题下的header.ejs里面,我的是hexo-the</summary>
      
    
    
    
    <category term="笔记" scheme="https://nate-lin.github.io/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="技术笔记" scheme="https://nate-lin.github.io/tags/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>SQL Server 2008安装教程</title>
    <link href="https://nate-lin.github.io/2020/12/22/sql-server-2008-an-zhuang-jiao-cheng/"/>
    <id>https://nate-lin.github.io/2020/12/22/sql-server-2008-an-zhuang-jiao-cheng/</id>
    <published>2020-12-22T13:49:08.000Z</published>
    <updated>2020-12-22T14:15:45.378Z</updated>
    
    <content type="html"><![CDATA[<h3 id="SQL-Server-2008安装教程"><a href="#SQL-Server-2008安装教程" class="headerlink" title="SQL Server 2008安装教程"></a>SQL Server 2008安装教程</h3><blockquote><p>压缩包文件地址:</p><p>链接：<a href="https://pan.baidu.com/s/1C1zDe6k_6LLLvZrf-e8Q4A">https://pan.baidu.com/s/1C1zDe6k_6LLLvZrf-e8Q4A</a> </p><p>提取码：oui6</p></blockquote><h4 id="1、打开下载后的文件夹，双击-exe文件"><a href="#1、打开下载后的文件夹，双击-exe文件" class="headerlink" title="1、打开下载后的文件夹，双击.exe文件"></a>1、打开下载后的文件夹，双击<code>.exe</code>文件</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222215454204.png"></p><h4 id="2、点击左侧安装"><a href="#2、点击左侧安装" class="headerlink" title="2、点击左侧安装"></a>2、点击左侧<code>安装</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222172805753.png"></p><h4 id="3、选择右侧第一项：全新安装"><a href="#3、选择右侧第一项：全新安装" class="headerlink" title="3、选择右侧第一项：全新安装"></a>3、选择右侧第一项：<code>全新安装</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222172852602.png"></p><h4 id="4、等待程序"><a href="#4、等待程序" class="headerlink" title="4、等待程序"></a>4、等待程序</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222172910729.png"></p><h4 id="5、对安装规则进行检测，显示通过后点击确定"><a href="#5、对安装规则进行检测，显示通过后点击确定" class="headerlink" title="5、对安装规则进行检测，显示通过后点击确定"></a>5、对安装规则进行检测，显示通过后点击<code>确定</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222172931976.png"></p><h4 id="6、关于产品秘钥，下载程序中会自动填写秘钥，点击下一步即可"><a href="#6、关于产品秘钥，下载程序中会自动填写秘钥，点击下一步即可" class="headerlink" title="6、关于产品秘钥，下载程序中会自动填写秘钥，点击下一步即可"></a>6、关于产品秘钥，下载程序中会自动填写秘钥，点击<code>下一步</code>即可</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222173036315.png"></p><h4 id="7、勾选我接受，然后点击下一步"><a href="#7、勾选我接受，然后点击下一步" class="headerlink" title="7、勾选我接受，然后点击下一步"></a>7、勾选我接受，然后点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222173107529.png"></p><h4 id="8、对于程序支持文件，点击安装"><a href="#8、对于程序支持文件，点击安装" class="headerlink" title="8、对于程序支持文件，点击安装"></a>8、对于程序支持文件，点击<code>安装</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222173134718.png"></p><p>9、安装通过，点击<code>下一步</code></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222181839729.png"></p><h4 id="10、选择功能安装，点击下一步"><a href="#10、选择功能安装，点击下一步" class="headerlink" title="10、选择功能安装，点击下一步"></a>10、选择功能安装，点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222181934577.png"></p><h4 id="11、对功能可以点击全选，也可以根据需求自己选择，选择完毕后点击下一步"><a href="#11、对功能可以点击全选，也可以根据需求自己选择，选择完毕后点击下一步" class="headerlink" title="11、对功能可以点击全选，也可以根据需求自己选择，选择完毕后点击下一步"></a>11、对功能可以点击全选，也可以根据需求自己选择，选择完毕后点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182037685.png"></p><h4 id="12、规则检测完成后，继续点击下一步"><a href="#12、规则检测完成后，继续点击下一步" class="headerlink" title="12、规则检测完成后，继续点击下一步"></a>12、规则检测完成后，继续点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182106917.png"></p><h4 id="13、安装配置页面，选择默认实例，点击下一步"><a href="#13、安装配置页面，选择默认实例，点击下一步" class="headerlink" title="13、安装配置页面，选择默认实例，点击下一步"></a>13、安装配置页面，选择默认实例，点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182151565.png"></p><h4 id="14、保证所在磁盘有对应的空间，点击下一步"><a href="#14、保证所在磁盘有对应的空间，点击下一步" class="headerlink" title="14、保证所在磁盘有对应的空间，点击下一步"></a>14、保证所在磁盘有对应的空间，点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182238572.png"></p><h4 id="15、服务账户按图中勾选，点击下一步"><a href="#15、服务账户按图中勾选，点击下一步" class="headerlink" title="15、服务账户按图中勾选，点击下一步"></a>15、服务账户按图中勾选，点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182436425.png"></p><h4 id="16、选择混合模式，输入sa的密码，然后点击添加当前用户，添加用户后点击下一步"><a href="#16、选择混合模式，输入sa的密码，然后点击添加当前用户，添加用户后点击下一步" class="headerlink" title="16、选择混合模式，输入sa的密码，然后点击添加当前用户，添加用户后点击下一步"></a>16、选择混合模式，输入sa的密码，然后点击添加当前用户，添加用户后点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182616256.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182647858.png"></p><h4 id="17、点击添加当前用户，然后点击下一步"><a href="#17、点击添加当前用户，然后点击下一步" class="headerlink" title="17、点击添加当前用户，然后点击下一步"></a>17、点击添加当前用户，然后点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182717774.png"></p><h4 id="18、配置和错误报告直接点击下一步即可"><a href="#18、配置和错误报告直接点击下一步即可" class="headerlink" title="18、配置和错误报告直接点击下一步即可"></a>18、配置和错误报告直接点击<code>下一步</code>即可</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182738681.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182759769.png"></p><h4 id="19、安装配置规则通过后点击下一步"><a href="#19、安装配置规则通过后点击下一步" class="headerlink" title="19、安装配置规则通过后点击下一步"></a>19、安装配置规则通过后点击<code>下一步</code></h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182825015.png"></p><h4 id="20、点击安装，然后开始安装，等待10分钟左右"><a href="#20、点击安装，然后开始安装，等待10分钟左右" class="headerlink" title="20、点击安装，然后开始安装，等待10分钟左右"></a>20、点击安装，然后开始安装，等待10分钟左右</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222182939938.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222183047121.png"></p><h4 id="21、安装完成，重启电脑"><a href="#21、安装完成，重启电脑" class="headerlink" title="21、安装完成，重启电脑"></a>21、安装完成，重启电脑</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222184640792.png"></p><h4 id="22、打开软件"><a href="#22、打开软件" class="headerlink" title="22、打开软件"></a>22、打开软件</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/1a1e9c94285b4e446223c6d8e9b07f0.png"></p><h4 id="23、打开新安装的软件，按照图中填写，注意密码填写设置的sa的密码，点击登录"><a href="#23、打开新安装的软件，按照图中填写，注意密码填写设置的sa的密码，点击登录" class="headerlink" title="23、打开新安装的软件，按照图中填写，注意密码填写设置的sa的密码，点击登录"></a>23、打开新安装的软件，按照图中填写，注意密码填写设置的sa的密码，点击登录</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/f33a48cf96e5481d53e597a42c03c76.png"></p><h4 id="24、如果出现图中错误，请开启对应服务。"><a href="#24、如果出现图中错误，请开启对应服务。" class="headerlink" title="24、如果出现图中错误，请开启对应服务。"></a>24、如果出现图中错误，请开启对应服务。</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/5d93f3c0393226e3f77cf29e2826d03.png"></p><h4 id="25、点击开始，选择所有程序，点击Sqlserver-2008-R2"><a href="#25、点击开始，选择所有程序，点击Sqlserver-2008-R2" class="headerlink" title="25、点击开始，选择所有程序，点击Sqlserver 2008 R2"></a>25、点击开始，选择所有程序，点击Sqlserver 2008 R2</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201222221124471.png"></p><p>26、选择配置工具，接着点击配置管理器</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/3745b81f8e62c3d0370c40d6a20268b.png"></p><h4 id="27、在弹出的页面中，点击SQLserver服务"><a href="#27、在弹出的页面中，点击SQLserver服务" class="headerlink" title="27、在弹出的页面中，点击SQLserver服务"></a>27、在弹出的页面中，点击SQLserver服务</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/6c4d25f86bfe8dfa299b2e7d3ace66b.png"></p><h4 id="28、选择MSSQLSERVER，启动这个服务，然后就可以的登陆。"><a href="#28、选择MSSQLSERVER，启动这个服务，然后就可以的登陆。" class="headerlink" title="28、选择MSSQLSERVER，启动这个服务，然后就可以的登陆。"></a>28、选择MSSQLSERVER，启动这个服务，然后就可以的登陆。</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/dcb521e53713d5a9cdfd31f224ff539.png"></p><h4 id="29、输入登录名和密码"><a href="#29、输入登录名和密码" class="headerlink" title="29、输入登录名和密码"></a>29、输入登录名和密码</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/226088e438652c1a1e49aeb23a4d21b.png"></p><h4 id="30、安装成功"><a href="#30、安装成功" class="headerlink" title="30、安装成功"></a>30、安装成功</h4><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/8677e8e4297df03f47ed0862db92519.png"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;SQL-Server-2008安装教程&quot;&gt;&lt;a href=&quot;#SQL-Server-2008安装教程&quot; class=&quot;headerlink&quot; title=&quot;SQL Server 2008安装教程&quot;&gt;&lt;/a&gt;SQL Server 2008安装教程&lt;/h3&gt;&lt;bloc</summary>
      
    
    
    
    <category term="笔记" scheme="https://nate-lin.github.io/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="技术笔记" scheme="https://nate-lin.github.io/tags/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>解决-github.com** 的响应时间过长的问题</title>
    <link href="https://nate-lin.github.io/2020/12/19/jie-jue-github.com-de-xiang-ying-shi-jian-guo-chang-de-wen-ti/"/>
    <id>https://nate-lin.github.io/2020/12/19/jie-jue-github.com-de-xiang-ying-shi-jian-guo-chang-de-wen-ti/</id>
    <published>2020-12-19T02:09:23.000Z</published>
    <updated>2020-12-24T15:34:27.124Z</updated>
    
    <content type="html"><![CDATA[<h4 id="1-问题"><a href="#1-问题" class="headerlink" title="1.问题"></a>1.问题</h4><blockquote><p>当打开自己的Github博客时，显示无法访问此网站（可以尝试更换网络，比如现在用的是联通网络，更换为电信或者移动网络）。</p></blockquote><a id="more"></a><pre class="line-numbers language-java" data-language="java"><code class="language-java">无法访问此网站github<span class="token punctuation">.</span>com<span class="token operator">*</span><span class="token operator">*</span> 的响应时间过长。请试试以下办法：检查网络连接检查代理服务器和防火墙<span class="token punctuation">]</span><span class="token punctuation">(</span>chrome<span class="token operator">-</span>error<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>chromewebdata<span class="token operator">/</span>#buttons<span class="token punctuation">)</span>运行 <span class="token class-name">Windows</span> 网络诊断<span class="token punctuation">]</span><span class="token punctuation">(</span>javascript<span class="token operator">:</span><span class="token function">diagnoseErrors</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>ERR_CONNECTION_TIMED_OUT<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201219100937331.png"></p><h4 id="2-分析"><a href="#2-分析" class="headerlink" title="2.分析"></a>2.分析</h4><blockquote><p>刚刚无法访问，我用的是联通网络，然后换了电信网络完美解决，希望能帮助到您。</p></blockquote><h4 id="3-解决方法"><a href="#3-解决方法" class="headerlink" title="3.解决方法"></a>3.解决方法</h4><blockquote><p>更换网络试试，换成电信网络。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201219101145953.png"></p>]]></content>
    
    
    <summary type="html">&lt;h4 id=&quot;1-问题&quot;&gt;&lt;a href=&quot;#1-问题&quot; class=&quot;headerlink&quot; title=&quot;1.问题&quot;&gt;&lt;/a&gt;1.问题&lt;/h4&gt;&lt;blockquote&gt;
&lt;p&gt;当打开自己的Github博客时，显示无法访问此网站（可以尝试更换网络，比如现在用的是联通网络，更换为电信或者移动网络）。&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="笔记" scheme="https://nate-lin.github.io/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="技术笔记" scheme="https://nate-lin.github.io/tags/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>解决-git连接github超时问题Connection timed out</title>
    <link href="https://nate-lin.github.io/2020/12/19/jie-jue-git-lian-jie-github-chao-shi-wen-ti-connection-timed-out/"/>
    <id>https://nate-lin.github.io/2020/12/19/jie-jue-git-lian-jie-github-chao-shi-wen-ti-connection-timed-out/</id>
    <published>2020-12-19T01:49:15.000Z</published>
    <updated>2020-12-20T05:34:28.123Z</updated>
    
    <content type="html"><![CDATA[<h3 id="亲测有效解决ssh-connect-to-host-github-com-port-22-Connection-timed-out问题"><a href="#亲测有效解决ssh-connect-to-host-github-com-port-22-Connection-timed-out问题" class="headerlink" title="亲测有效解决ssh: connect to host github.com port 22: Connection timed out问题"></a>亲测有效解决ssh: connect to host github.com port 22: Connection timed out问题</h3><ul><li>百度一直说的密钥问题，修改了依然没解决，后来发现添加几行代码到Git的位置就好了，话不多说上解决方案。</li></ul><a id="more"></a><h4 id="1-问题"><a href="#1-问题" class="headerlink" title="1.问题"></a>1.问题</h4><p>运行<code>hexo g -d</code>就报如下错误</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201219095101959.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201219085748492.png"></p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token class-name">On</span> branch masternothing <span class="token keyword">to</span> <span class="token namespace">commit</span><span class="token punctuation">,</span> working tree cleanssh<span class="token operator">:</span> connect <span class="token keyword">to</span> <span class="token namespace">host</span> github<span class="token punctuation">.</span>com port <span class="token number">22</span><span class="token operator">:</span> <span class="token class-name">Connection</span> timed outfatal<span class="token operator">:</span> <span class="token class-name">Could</span> not read from remote repository<span class="token punctuation">.</span><span class="token class-name">Please</span> make sure you have the correct access rightsand the repository exists<span class="token punctuation">.</span>FATAL <span class="token punctuation">{</span>  err<span class="token operator">:</span> <span class="token class-name">Error</span><span class="token operator">:</span> <span class="token class-name">Spawn</span> failed      at <span class="token class-name">ChildProcess</span><span class="token punctuation">.</span><span class="token generics"><span class="token punctuation">&lt;</span>anonymous<span class="token punctuation">&gt;</span></span> <span class="token punctuation">(</span><span class="token class-name">D</span><span class="token operator">:</span>\hexo\<span class="token class-name">GitHub</span>\blog\node_modules\hexo<span class="token operator">-</span>deployer<span class="token operator">-</span>git\node_modules\hexo<span class="token operator">-</span>util\lib\spawn<span class="token punctuation">.</span>js<span class="token operator">:</span><span class="token number">51</span><span class="token operator">:</span><span class="token number">21</span><span class="token punctuation">)</span>      at <span class="token class-name">ChildProcess</span><span class="token punctuation">.</span>emit <span class="token punctuation">(</span>events<span class="token punctuation">.</span>js<span class="token operator">:</span><span class="token number">315</span><span class="token operator">:</span><span class="token number">20</span><span class="token punctuation">)</span>      at <span class="token class-name">ChildProcess</span><span class="token punctuation">.</span>cp<span class="token punctuation">.</span>emit <span class="token punctuation">(</span><span class="token class-name">D</span><span class="token operator">:</span>\hexo\<span class="token class-name">GitHub</span>\blog\node_modules\cross<span class="token operator">-</span>spawn\lib\enoent<span class="token punctuation">.</span>js<span class="token operator">:</span><span class="token number">34</span><span class="token operator">:</span><span class="token number">29</span><span class="token punctuation">)</span>      at <span class="token class-name">Process</span><span class="token punctuation">.</span><span class="token class-name">ChildProcess</span><span class="token punctuation">.</span>_handle<span class="token punctuation">.</span>onexit <span class="token punctuation">(</span>internal<span class="token operator">/</span>child_process<span class="token punctuation">.</span>js<span class="token operator">:</span><span class="token number">276</span><span class="token operator">:</span><span class="token number">12</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>    code<span class="token operator">:</span> <span class="token number">128</span>  <span class="token punctuation">}</span><span class="token punctuation">}</span> <span class="token class-name">Something</span><span class="token string">'s wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.htmlxxxxxxxxxx On branch masternothing to commit, working tree cleanssh: connect to host github.com port 22: Connection timed outfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.FATAL {  err: Error: Spawn failed      at ChildProcess.&lt;anonymous&gt; (D:\hexo\GitHub\blog\node_modules\hexo-deployer-git\node_modules\hexo-util\lib\spawn.js:51:21)      at ChildProcess.emit (events.js:315:20)      at ChildProcess.cp.emit (D:\hexo\GitHub\blog\node_modules\cross-spawn\lib\enoent.js:34:29)      at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12) {    code: 128  }} Something'</span>s wrong<span class="token punctuation">.</span> <span class="token class-name">Maybe</span> you can find the solution here<span class="token operator">:</span> <span class="token operator">%</span>s https<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>hexo<span class="token punctuation">.</span>io<span class="token operator">/</span>docs<span class="token operator">/</span>troubleshooting<span class="token punctuation">.</span>htmlhexo g <span class="token operator">-</span>djava<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h4 id="2-分析"><a href="#2-分析" class="headerlink" title="2.分析"></a>2.分析</h4><blockquote><p>当出现：ssh: connect to host github.com port 22: Connection timed out时，这表明连接超时</p></blockquote><h4 id="3-解决方法"><a href="#3-解决方法" class="headerlink" title="3.解决方法"></a>3.解决方法</h4><blockquote><p>连接超时，首先找到git的安装目录，找到/etc/ssh/ssh_config文件,使用记事本打开它。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201219100146983.png"></p><blockquote><p>把如下内容复制到ssh_config文件的末尾处：并记得保存。</p></blockquote><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token class-name">Host</span> github<span class="token punctuation">.</span>com<span class="token class-name">User</span> git<span class="token class-name">Hostname</span> ssh<span class="token punctuation">.</span>github<span class="token punctuation">.</span>com<span class="token class-name">PreferredAuthentications</span> publickey<span class="token class-name">IdentityFile</span> <span class="token operator">~</span><span class="token operator">/</span><span class="token punctuation">.</span>ssh<span class="token operator">/</span>id_rsa<span class="token class-name">Port</span> <span class="token number">443</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><blockquote><p>添加完成后如下图</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201219100409233.png"></p><blockquote><p>再输入<code>hexo g -d</code>,完美解决。希望能帮到你</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201219095101959.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201219085845887.png"></p>]]></content>
    
    
    <summary type="html">&lt;h3 id=&quot;亲测有效解决ssh-connect-to-host-github-com-port-22-Connection-timed-out问题&quot;&gt;&lt;a href=&quot;#亲测有效解决ssh-connect-to-host-github-com-port-22-Connection-timed-out问题&quot; class=&quot;headerlink&quot; title=&quot;亲测有效解决ssh: connect to host github.com port 22: Connection timed out问题&quot;&gt;&lt;/a&gt;亲测有效解决ssh: connect to host github.com port 22: Connection timed out问题&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;百度一直说的密钥问题，修改了依然没解决，后来发现添加几行代码到Git的位置就好了，话不多说上解决方案。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="笔记" scheme="https://nate-lin.github.io/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="技术笔记" scheme="https://nate-lin.github.io/tags/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Hexo博客matery主题</title>
    <link href="https://nate-lin.github.io/2020/12/16/hexo-bo-ke-matery-zhu-ti/"/>
    <id>https://nate-lin.github.io/2020/12/16/hexo-bo-ke-matery-zhu-ti/</id>
    <published>2020-12-16T11:57:53.000Z</published>
    <updated>2020-12-20T05:34:28.080Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>这是一个采用 <code>Material Design</code> 和响应式设计的 Hexo 博客主题。</p></blockquote><h2 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h2><ul><li>简单漂亮，文章内容美观易读</li><li><a href="https://material.io/">Material Design</a> 设计</li><li>响应式设计，博客在桌面端、平板、手机等设备上均能很好的展现</li><li>首页轮播文章及每天动态切换 <code>Banner</code> 图片</li></ul><a id="more"></a><ul><li>瀑布流式的博客文章列表（文章无特色图片时会有 <code>24</code> 张漂亮的图片代替）</li><li>时间轴式的归档页</li><li><strong>词云</strong>的标签页和<strong>雷达图</strong>的分类页</li><li>丰富的关于我页面（包括关于我、文章统计图、我的项目、我的技能、相册等）</li><li>可自定义的数据的友情链接页面</li><li>支持文章置顶和文章打赏</li><li>支持 <code>MathJax</code></li><li><code>TOC</code> 目录</li><li>可设置复制文章内容时追加版权信息</li><li>可设置阅读文章时做密码验证</li><li><a href="https://gitalk.github.io/">Gitalk</a>、<a href="https://imsun.github.io/gitment/">Gitment</a>、<a href="https://valine.js.org/">Valine</a> 和 <a href="https://disqus.com/">Disqus</a> 评论模块（推荐使用 <code>Gitalk</code>）</li><li>集成了<a href="http://busuanzi.ibruce.info/">不蒜子统计</a>、谷歌分析（<code>Google Analytics</code>）和文章字数统计等功能</li><li>支持在首页的音乐播放和视频播放功能</li><li>支持<code>emoji</code>表情，用<code>markdown emoji</code>语法书写直接生成对应的能<strong>跳跃</strong>的表情。</li><li>支持 <a href="http://www.daovoice.io/">DaoVoice</a>、<a href="https://www.tidio.com/">Tidio</a> 在线聊天功能。</li></ul><h2 id="贡献者"><a href="#贡献者" class="headerlink" title="贡献者"></a>贡献者</h2><p>感谢下面列出的贡献者，没有他们，hexo-theme-matery 不会这么完美。</p><ul><li><a href="https://github.com/HarborZeng">@HarborZeng</a></li><li><a href="https://github.com/shw2018">@shw2018</a></li><li><a href="https://github.com/L1cardo">@L1cardo</a></li><li><a href="https://github.com/Five-great">@Five-great</a></li></ul><h2 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h2><p>本主题<strong>推荐你使用 Hexo 5.0.0 及以上的版本</strong>。如果，你已经有一个自己的 <a href="https://hexo.io/zh-cn/">Hexo</a> 博客了，建议你将 Hexo 升级到最新稳定的版本。</p><p>点击 <a href="https://codeload.github.com/blinkfox/hexo-theme-matery/zip/master">这里</a> 下载 <code>master</code> 分支的最新稳定版的代码，解压缩后，将 <code>hexo-theme-matery</code> 的文件夹复制到你 Hexo 的 <code>themes</code> 文件夹中即可。</p><p>当然你也可以在你的 <code>themes</code> 文件夹下使用 <code>git clone</code> 命令来下载:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">git</span> clone https://github.com/nate-lin/hexo-theme-matery.git<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h2 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h2><h3 id="切换主题"><a href="#切换主题" class="headerlink" title="切换主题"></a>切换主题</h3><p>修改 Hexo 根目录下的 <code>_config.yml</code> 的  <code>theme</code> 的值：<code>theme: hexo-theme-matery</code></p><h4 id="config-yml-文件的其它修改建议"><a href="#config-yml-文件的其它修改建议" class="headerlink" title="_config.yml 文件的其它修改建议:"></a><code>_config.yml</code> 文件的其它修改建议:</h4><ul><li>请修改 <code>_config.yml</code> 的 <code>url</code> 的值为你的网站主 <code>URL</code>（如：<code>http://xxx.github.io</code>）。</li><li>建议修改两个 <code>per_page</code> 的分页条数值为 <code>6</code> 的倍数，如：<code>12</code>、<code>18</code> 等，这样文章列表在各个屏幕下都能较好的显示。</li><li>如果你是中文用户，则建议修改 <code>language</code> 的值为 <code>zh-CN</code>。</li></ul><h3 id="新建分类-categories-页"><a href="#新建分类-categories-页" class="headerlink" title="新建分类 categories 页"></a>新建分类 categories 页</h3><p><code>categories</code> 页是用来展示所有分类的页面，如果在你的博客 <code>source</code> 目录下还没有 <code>categories/index.md</code> 文件，那么你就需要新建一个，命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo new page <span class="token string">"categories"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/categories/index.md</code>，至少需要以下内容：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> categories<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2020-09-30 19:15:33</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"categories"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"categories"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="新建标签-tags-页"><a href="#新建标签-tags-页" class="headerlink" title="新建标签 tags 页"></a>新建标签 tags 页</h3><p><code>tags</code> 页是用来展示所有标签的页面，如果在你的博客 <code>source</code> 目录下还没有 <code>tags/index.md</code> 文件，那么你就需要新建一个，命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo new page <span class="token string">"tags"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/tags/index.md</code>，至少需要以下内容：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> tags<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2020-09-30 19:15:33</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"tags"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"tags"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="新建关于我-about-页"><a href="#新建关于我-about-页" class="headerlink" title="新建关于我 about 页"></a>新建关于我 about 页</h3><p><code>about</code> 页是用来展示<strong>关于我和我的博客</strong>信息的页面，如果在你的博客 <code>source</code> 目录下还没有 <code>about/index.md</code> 文件，那么你就需要新建一个，命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo new page <span class="token string">"about"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/about/index.md</code>，至少需要以下内容：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> about<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2020-09-30 19:15:33</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"about"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"about"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="新建留言板-contact-页（可选的）"><a href="#新建留言板-contact-页（可选的）" class="headerlink" title="新建留言板 contact 页（可选的）"></a>新建留言板 contact 页（可选的）</h3><p><code>contact</code> 页是用来展示<strong>留言板</strong>信息的页面，如果在你的博客 <code>source</code> 目录下还没有 <code>contact/index.md</code> 文件，那么你就需要新建一个，命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo new page <span class="token string">"contact"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/contact/index.md</code>，至少需要以下内容：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> contact<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2020-09-30 19:15:33</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"contact"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"contact"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><blockquote><p><strong>注</strong>：本留言板功能依赖于第三方评论系统，请<strong>激活</strong>你的评论系统才有效果。并且在主题的 <code>_config.yml</code> 文件中，第 <code>19</code> 至 <code>21</code> 行的“<strong>菜单</strong>”配置，取消关于留言板的注释即可。</p></blockquote><h3 id="新建友情链接-friends-页（可选的）"><a href="#新建友情链接-friends-页（可选的）" class="headerlink" title="新建友情链接 friends 页（可选的）"></a>新建友情链接 friends 页（可选的）</h3><p><code>friends</code> 页是用来展示<strong>友情链接</strong>信息的页面，如果在你的博客 <code>source</code> 目录下还没有 <code>friends/index.md</code> 文件，那么你就需要新建一个，命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo new page <span class="token string">"friends"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/friends/index.md</code>，至少需要以下内容：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> friends<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2020-09-30 19:15:33</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"friends"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"friends"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>同时，在你的博客 <code>source</code> 目录下新建 <code>_data</code> 目录，在 <code>_data</code> 目录中新建 <code>friends.json</code> 文件，文件内容如下所示：</p><pre class="line-numbers language-json" data-language="json"><code class="language-json"><span class="token punctuation">[</span><span class="token punctuation">{</span>    <span class="token property">"avatar"</span><span class="token operator">:</span> <span class="token string">"http://image.luokangyuan.com/1_qq_27922023.jpg"</span><span class="token punctuation">,</span>    <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"码酱"</span><span class="token punctuation">,</span>    <span class="token property">"introduction"</span><span class="token operator">:</span> <span class="token string">"我不是大佬，只是在追寻大佬的脚步"</span><span class="token punctuation">,</span>    <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"http://luokangyuan.com/"</span><span class="token punctuation">,</span>    <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"前去学习"</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>    <span class="token property">"avatar"</span><span class="token operator">:</span> <span class="token string">"http://image.luokangyuan.com/4027734.jpeg"</span><span class="token punctuation">,</span>    <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"闪烁之狐"</span><span class="token punctuation">,</span>    <span class="token property">"introduction"</span><span class="token operator">:</span> <span class="token string">"编程界大佬，技术牛，人还特别好，不懂的都可以请教大佬"</span><span class="token punctuation">,</span>    <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"https://blinkfox.github.io/"</span><span class="token punctuation">,</span>    <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"前去学习"</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>    <span class="token property">"avatar"</span><span class="token operator">:</span> <span class="token string">"http://image.luokangyuan.com/avatar.jpg"</span><span class="token punctuation">,</span>    <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ja_rome"</span><span class="token punctuation">,</span>    <span class="token property">"introduction"</span><span class="token operator">:</span> <span class="token string">"平凡的脚步也可以走出伟大的行程"</span><span class="token punctuation">,</span>    <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"https://me.csdn.net/jlh912008548"</span><span class="token punctuation">,</span>    <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"前去学习"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="新建-404-页"><a href="#新建-404-页" class="headerlink" title="新建 404 页"></a>新建 404 页</h3><p>如果在你的博客 <code>source</code> 目录下还没有 <code>404.md</code> 文件，那么你就需要新建一个</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo new page <span class="token number">404</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/404/index.md</code>，至少需要以下内容：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> <span class="token number">404</span><span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2018-09-30 17:25:30</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"404"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"404"</span><span class="token key atrule">description</span><span class="token punctuation">:</span> <span class="token string">"Oops～，我崩溃了！找不到你想要的页面 :("</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="菜单导航配置"><a href="#菜单导航配置" class="headerlink" title="菜单导航配置"></a>菜单导航配置</h3><h4 id="配置基本菜单导航的名称、路径url和图标icon"><a href="#配置基本菜单导航的名称、路径url和图标icon" class="headerlink" title="配置基本菜单导航的名称、路径url和图标icon."></a>配置基本菜单导航的名称、路径url和图标icon.</h4><p>1.菜单导航名称可以是中文也可以是英文(如：<code>Index</code>或<code>主页</code>)<br>2.图标icon 可以在<a href="https://fontawesome.com/icons">Font Awesome</a> 中查找   </p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">menu</span><span class="token punctuation">:</span>  <span class="token key atrule">Index</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>home  <span class="token key atrule">Tags</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /tags    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>tags  <span class="token key atrule">Categories</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /categories    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>bookmark  <span class="token key atrule">Archives</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /archives    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>archive  <span class="token key atrule">About</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /about    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>user<span class="token punctuation">-</span>circle  <span class="token key atrule">Friends</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /friends    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>address<span class="token punctuation">-</span>book<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h4 id="二级菜单配置方法"><a href="#二级菜单配置方法" class="headerlink" title="二级菜单配置方法"></a>二级菜单配置方法</h4><p>如果你需要二级菜单则可以在原基本菜单导航的基础上如下操作</p><ol><li>在需要添加二级菜单的一级菜单下添加<code>children</code>关键字(如:<code>About</code>菜单下添加<code>children</code>)     </li><li>在<code>children</code>下创建二级菜单的 名称name,路径url和图标icon.      </li><li>注意每个二级菜单模块前要加 <code>-</code>.     </li><li>注意缩进格式  </li></ol><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">menu</span><span class="token punctuation">:</span>  <span class="token key atrule">Index</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>home  <span class="token key atrule">Tags</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /tags    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>tags  <span class="token key atrule">Categories</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /categories    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>bookmark  <span class="token key atrule">Archives</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /archives    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>archive  <span class="token key atrule">About</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /about    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>user<span class="token punctuation">-</span>circle<span class="token punctuation">-</span>o  <span class="token key atrule">Friends</span><span class="token punctuation">:</span>    <span class="token key atrule">url</span><span class="token punctuation">:</span> /friends    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>address<span class="token punctuation">-</span>book  <span class="token key atrule">Medias</span><span class="token punctuation">:</span>    <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>list    <span class="token key atrule">children</span><span class="token punctuation">:</span>      <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Music        <span class="token key atrule">url</span><span class="token punctuation">:</span> /music        <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>music      <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Movies        <span class="token key atrule">url</span><span class="token punctuation">:</span> /movies        <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>film      <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Books        <span class="token key atrule">url</span><span class="token punctuation">:</span> /books        <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>book      <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Galleries        <span class="token key atrule">url</span><span class="token punctuation">:</span> /galleries        <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>image<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>执行 <code>hexo clean &amp;&amp; hexo g</code> 重新生成博客文件，然后就可以在文章中对应位置看到你用<code>emoji</code>语法写的表情了。</p><h3 id="代码高亮"><a href="#代码高亮" class="headerlink" title="代码高亮"></a>代码高亮</h3><p>从 Hexo5.0 版本开始自带了 <code>prismjs</code> 代码语法高亮的支持，本主题对此进行了改造支持。</p><p>如果你的博客中曾经安装过 <code>hexo-prism-plugin</code> 的插件，那么你须要执行 <code>npm uninstall hexo-prism-plugin</code> 来卸载掉它，否则生成的代码中会有 <code>&amp;#123;</code> 和 <code>&amp;#125;</code> 的转义字符。</p><p>然后，修改 Hexo 根目录下 <code>_config.yml</code> 文件中 <code>highlight.enable</code> 的值为 <code>false</code>，并将 <code>prismjs.enable</code> 的值设置为 <code>true</code>，主要配置如下：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">highlight</span><span class="token punctuation">:</span>  <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>  <span class="token key atrule">line_number</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">auto_detect</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>  <span class="token key atrule">tab_replace</span><span class="token punctuation">:</span> <span class="token string">''</span>  <span class="token key atrule">wrap</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">hljs</span><span class="token punctuation">:</span> <span class="token boolean important">false</span><span class="token key atrule">prismjs</span><span class="token punctuation">:</span>  <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">preprocess</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">line_number</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">tab_replace</span><span class="token punctuation">:</span> <span class="token string">''</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>主题中默认的 <code>prismjs</code> 主题是 <code>Tomorrow Night</code>，如果你想定制自己的主题，可以前往 <a href="https://prismjs.com/download.html">prismjs 下载页面</a> 定制下载自己喜欢的主题 <code>css</code> 文件，然后将此 css 主题文件取名为 <code>prism.css</code>，替换掉 <code>hexo-theme-matery</code> 主题文件夹中的 <code>source/libs/prism/prism.css</code> 文件即可。</p><h3 id="搜索"><a href="#搜索" class="headerlink" title="搜索"></a>搜索</h3><p>本主题中还使用到了 <a href="https://github.com/wzpan/hexo-generator-search">hexo-generator-search</a> 的 Hexo 插件来做内容搜索，安装命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> hexo-generator-search --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216172754552.png"></p><p>在 Hexo 根目录下的 <code>_config.yml</code> 文件中，新增以下的配置项：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">search</span><span class="token punctuation">:</span>  <span class="token key atrule">path</span><span class="token punctuation">:</span> search.xml  <span class="token key atrule">field</span><span class="token punctuation">:</span> post<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><h3 id="中文链接转拼音（建议安装）"><a href="#中文链接转拼音（建议安装）" class="headerlink" title="中文链接转拼音（建议安装）"></a>中文链接转拼音（建议安装）</h3><p>如果你的文章名称是中文的，那么 Hexo 默认生成的永久链接也会有中文，这样不利于 <code>SEO</code>，且 <code>gitment</code> 评论对中文链接也不支持。我们可以用 <a href="https://github.com/viko16/hexo-permalink-pinyin">hexo-permalink-pinyin</a> Hexo 插件使在生成文章时生成中文拼音的永久链接。</p><p>安装命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">npm</span> i hexo-permalink-pinyin --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216180014212.png"></p><p>在 Hexo 根目录下的 <code>_config.yml</code> 文件中，新增以下的配置项：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">permalink_pinyin</span><span class="token punctuation">:</span>  <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">separator</span><span class="token punctuation">:</span> <span class="token string">'-'</span> <span class="token comment"># default: '-'</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><blockquote><p><strong>注</strong>：除了此插件外，<a href="https://github.com/rozbo/hexo-abbrlink">hexo-abbrlink</a> 插件也可以生成非中文的链接。</p></blockquote><h3 id="文章字数统计插件（建议安装）"><a href="#文章字数统计插件（建议安装）" class="headerlink" title="文章字数统计插件（建议安装）"></a>文章字数统计插件（建议安装）</h3><p>如果你想要在文章中显示文章字数、阅读时长信息，可以安装 <a href="https://github.com/willin/hexo-wordcount">hexo-wordcount</a>插件。</p><p>安装命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">npm</span> i --save hexo-wordcount<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216172601931.png"></p><p>然后只需在本主题下的 <code>_config.yml</code> 文件中，将各个文章字数相关的配置激活即可：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">postInfo</span><span class="token punctuation">:</span>  <span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">update</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>  <span class="token key atrule">wordCount</span><span class="token punctuation">:</span> <span class="token boolean important">false</span> <span class="token comment"># 设置文章字数统计为 true.</span>  <span class="token key atrule">totalCount</span><span class="token punctuation">:</span> <span class="token boolean important">false</span> <span class="token comment"># 设置站点文章总字数统计为 true.</span>  <span class="token key atrule">min2read</span><span class="token punctuation">:</span> <span class="token boolean important">false</span> <span class="token comment"># 阅读时长.</span>  <span class="token key atrule">readCount</span><span class="token punctuation">:</span> <span class="token boolean important">false</span> <span class="token comment"># 阅读次数.</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="添加emoji表情支持（可选的）"><a href="#添加emoji表情支持（可选的）" class="headerlink" title="添加emoji表情支持（可选的）"></a>添加emoji表情支持（可选的）</h3><p>本主题新增了对<code>emoji</code>表情的支持，使用到了 <a href="https://npm.taobao.org/package/hexo-filter-github-emojis">hexo-filter-github-emojis</a> 的 Hexo 插件来支持 <code>emoji</code>表情的生成，把对应的<code>markdown emoji</code>语法（<code>::</code>,例如：<code>:smile:</code>）转变成会跳跃的<code>emoji</code>表情，安装命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> hexo-filter-github-emojis --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216175948561.png"></p><p>在 Hexo 根目录下的 <code>_config.yml</code> 文件中，新增以下的配置项：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">githubEmojis</span><span class="token punctuation">:</span>  <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">className</span><span class="token punctuation">:</span> github<span class="token punctuation">-</span>emoji  <span class="token key atrule">inject</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">styles</span><span class="token punctuation">:</span>  customEmojis<span class="token punctuation">:</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="添加-RSS-订阅支持（可选的）"><a href="#添加-RSS-订阅支持（可选的）" class="headerlink" title="添加 RSS 订阅支持（可选的）"></a>添加 RSS 订阅支持（可选的）</h3><p>本主题中还使用到了 <a href="https://github.com/hexojs/hexo-generator-feed">hexo-generator-feed</a> 的 Hexo 插件来做 <code>RSS</code>，安装命令如下：</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> hexo-generator-feed --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>在 Hexo 根目录下的 <code>_config.yml</code> 文件中，新增以下的配置项：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">feed</span><span class="token punctuation">:</span>  <span class="token key atrule">type</span><span class="token punctuation">:</span> atom  <span class="token key atrule">path</span><span class="token punctuation">:</span> atom.xml  <span class="token key atrule">limit</span><span class="token punctuation">:</span> <span class="token number">20</span>  <span class="token key atrule">hub</span><span class="token punctuation">:</span>  <span class="token key atrule">content</span><span class="token punctuation">:</span>  <span class="token key atrule">content_limit</span><span class="token punctuation">:</span> <span class="token number">140</span>  <span class="token key atrule">content_limit_delim</span><span class="token punctuation">:</span> <span class="token string">' '</span>  <span class="token key atrule">order_by</span><span class="token punctuation">:</span> <span class="token punctuation">-</span>date<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>执行 <code>hexo clean &amp;&amp; hexo g</code> 重新生成博客文件，然后在 <code>public</code> 文件夹中即可看到 <code>atom.xml</code> 文件，说明你已经安装成功了。</p><h3 id="添加-DaoVoice-在线聊天功能（可选的）"><a href="#添加-DaoVoice-在线聊天功能（可选的）" class="headerlink" title="添加 DaoVoice 在线聊天功能（可选的）"></a>添加 <a href="http://www.daovoice.io/">DaoVoice</a> 在线聊天功能（可选的）</h3><p>前往 <a href="http://www.daovoice.io/">DaoVoice</a> 官网注册并且获取 <code>app_id</code>，并将 <code>app_id</code> 填入主题的 <code>_config.yml</code> 文件中。</p><h3 id="添加-Tidio-在线聊天功能（可选的）"><a href="#添加-Tidio-在线聊天功能（可选的）" class="headerlink" title="添加 Tidio 在线聊天功能（可选的）"></a>添加 <a href="https://www.tidio.com/">Tidio</a> 在线聊天功能（可选的）</h3><p>前往 <a href="https://www.tidio.com/">Tidio</a> 官网注册并且获取 <code>Public Key</code>，并将 <code>Public Key</code> 填入主题的 <code>_config.yml</code> 文件中。</p><h3 id="修改页脚"><a href="#修改页脚" class="headerlink" title="修改页脚"></a>修改页脚</h3><p>页脚信息可能需要做定制化修改，而且它不便于做成配置信息，所以可能需要你自己去再修改和加工。修改的地方在主题文件的 <code>/layout/_partial/footer.ejs</code> 文件中，包括站点、使用的主题、访问量等。</p><h3 id="修改社交链接"><a href="#修改社交链接" class="headerlink" title="修改社交链接"></a>修改社交链接</h3><p>在主题的 <code>_config.yml</code> 文件中，默认支持 <code>QQ</code>、<code>GitHub</code> 和邮箱等的配置，你可以在主题文件的 <code>/layout/_partial/social-link.ejs</code> 文件中，新增、修改你需要的社交链接地址，增加链接可参考如下代码：</p><pre class="line-numbers language-html" data-language="html"><code class="language-html">&lt;% if (theme.socialLink.github) { %&gt;    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>&lt;%= theme.socialLink.github %&gt;<span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>tooltipped<span class="token punctuation">"</span></span> <span class="token attr-name">target</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_blank<span class="token punctuation">"</span></span> <span class="token attr-name">data-tooltip</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>访问我的GitHub<span class="token punctuation">"</span></span> <span class="token attr-name">data-position</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>top<span class="token punctuation">"</span></span> <span class="token attr-name">data-delay</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>i</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fab fa-github<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>i</span><span class="token punctuation">&gt;</span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">&gt;</span></span>&lt;% } %&gt;<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>其中，社交图标（如：<code>fa-github</code>）你可以在 <a href="https://fontawesome.com/icons">Font Awesome</a> 中搜索找到。以下是常用社交图标的标识，供你参考：</p><ul><li>Facebook: <code>fab fa-facebook</code></li><li>Twitter: <code>fab fa-twitter</code></li><li>Google-plus: <code>fab fa-google-plus</code></li><li>Linkedin: <code>fab fa-linkedin</code></li><li>Tumblr: <code>fab fa-tumblr</code></li><li>Medium: <code>fab fa-medium</code></li><li>Slack: <code>fab fa-slack</code></li><li>Sina Weibo: <code>fab fa-weibo</code></li><li>Wechat: <code>fab fa-weixin</code></li><li>QQ: <code>fab fa-qq</code></li><li>Zhihu: <code>fab fa-zhihu</code></li></ul><blockquote><p><strong>注意</strong>: 本主题中使用的 <code>Font Awesome</code> 版本为 <code>5.11.0</code>。</p></blockquote><h3 id="修改打赏的二维码图片"><a href="#修改打赏的二维码图片" class="headerlink" title="修改打赏的二维码图片"></a>修改打赏的二维码图片</h3><p>在主题文件的 <code>source/medias/reward</code> 文件中，你可以替换成你的的微信和支付宝的打赏二维码图片。</p><h3 id="配置音乐播放器（可选的）"><a href="#配置音乐播放器（可选的）" class="headerlink" title="配置音乐播放器（可选的）"></a>配置音乐播放器（可选的）</h3><p>要支持音乐播放，在主题的 <code>_config.yml</code> 配置文件中激活music配置即可：</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token comment"># 是否在首页显示音乐</span><span class="token key atrule">music</span><span class="token punctuation">:</span>  <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token key atrule">title</span><span class="token punctuation">:</span>         <span class="token comment"># 非吸底模式有效</span>    <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>    <span class="token key atrule">show</span><span class="token punctuation">:</span> 听听音乐  <span class="token key atrule">server</span><span class="token punctuation">:</span> netease   <span class="token comment"># require music platform: netease, tencent, kugou, xiami, baidu</span>  <span class="token key atrule">type</span><span class="token punctuation">:</span> playlist    <span class="token comment"># require song, playlist, album, search, artist</span>  <span class="token key atrule">id</span><span class="token punctuation">:</span> <span class="token number">503838841</span>     <span class="token comment"># require song id / playlist id / album id / search keyword</span>  <span class="token key atrule">fixed</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>      <span class="token comment"># 开启吸底模式</span>  <span class="token key atrule">autoplay</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>   <span class="token comment"># 是否自动播放</span>  <span class="token key atrule">theme</span><span class="token punctuation">:</span> <span class="token string">'#42b983'</span>  <span class="token key atrule">loop</span><span class="token punctuation">:</span> <span class="token string">'all'</span>       <span class="token comment"># 音频循环播放, 可选值: 'all', 'one', 'none'</span>  <span class="token key atrule">order</span><span class="token punctuation">:</span> <span class="token string">'random'</span>   <span class="token comment"># 音频循环顺序, 可选值: 'list', 'random'</span>  <span class="token key atrule">preload</span><span class="token punctuation">:</span> <span class="token string">'auto'</span>   <span class="token comment"># 预加载，可选值: 'none', 'metadata', 'auto'</span>  <span class="token key atrule">volume</span><span class="token punctuation">:</span> <span class="token number">0.7</span>       <span class="token comment"># 默认音量，请注意播放器会记忆用户设置，用户手动设置音量后默认音量即失效</span>  <span class="token key atrule">listFolded</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>  <span class="token comment"># 列表默认折叠</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><blockquote><p><code>server</code>可选<code>netease</code>（网易云音乐），<code>tencent</code>（QQ音乐），<code>kugou</code>（酷狗音乐），<code>xiami</code>（虾米音乐），</p><p><code>baidu</code>（百度音乐）。</p><p><code>type</code>可选<code>song</code>（歌曲），<code>playlist</code>（歌单），<code>album</code>（专辑），<code>search</code>（搜索关键字），<code>artist</code>（歌手）</p><p><code>id</code>获取方法示例: 浏览器打开网易云音乐，点击我喜欢的音乐歌单，浏览器地址栏后面会有一串数字，<code>playlist</code>的<code>id</code></p><p>即为这串数字。</p></blockquote><h2 id="文章-Front-matter-介绍"><a href="#文章-Front-matter-介绍" class="headerlink" title="文章 Front-matter 介绍"></a>文章 Front-matter 介绍</h2><h3 id="Front-matter-选项详解"><a href="#Front-matter-选项详解" class="headerlink" title="Front-matter 选项详解"></a>Front-matter 选项详解</h3><p><code>Front-matter</code> 选项中的所有内容均为<strong>非必填</strong>的。但我仍然建议至少填写 <code>title</code> 和 <code>date</code> 的值。</p><table><thead><tr><th>配置选项</th><th>默认值</th><th>描述</th></tr></thead><tbody><tr><td>title</td><td><code>Markdown</code> 的文件标题</td><td>文章标题，强烈建议填写此选项</td></tr><tr><td>date</td><td>文件创建时的日期时间</td><td>发布时间，强烈建议填写此选项，且最好保证全局唯一</td></tr><tr><td>author</td><td>根 <code>_config.yml</code> 中的 <code>author</code></td><td>文章作者</td></tr><tr><td>img</td><td><code>featureImages</code> 中的某个值</td><td>文章特征图，推荐使用图床(腾讯云、七牛云、又拍云等)来做图片的路径.如: <code>http://xxx.com/xxx.jpg</code></td></tr><tr><td>top</td><td><code>true</code></td><td>推荐文章（文章是否置顶），如果 <code>top</code> 值为 <code>true</code>，则会作为首页推荐文章</td></tr><tr><td>cover</td><td><code>false</code></td><td><code>v1.0.2</code>版本新增，表示该文章是否需要加入到首页轮播封面中</td></tr><tr><td>coverImg</td><td>无</td><td><code>v1.0.2</code>版本新增，表示该文章在首页轮播封面需要显示的图片路径，如果没有，则默认使用文章的特色图片</td></tr><tr><td>password</td><td>无</td><td>文章阅读密码，如果要对文章设置阅读验证密码的话，就可以设置 <code>password</code> 的值，该值必须是用 <code>SHA256</code> 加密后的密码，防止被他人识破。前提是在主题的 <code>config.yml</code> 中激活了 <code>verifyPassword</code> 选项</td></tr><tr><td>toc</td><td><code>true</code></td><td>是否开启 TOC，可以针对某篇文章单独关闭 TOC 的功能。前提是在主题的 <code>config.yml</code> 中激活了 <code>toc</code> 选项</td></tr><tr><td>mathjax</td><td><code>false</code></td><td>是否开启数学公式支持 ，本文章是否开启 <code>mathjax</code>，且需要在主题的 <code>_config.yml</code> 文件中也需要开启才行</td></tr><tr><td>summary</td><td>无</td><td>文章摘要，自定义的文章摘要内容，如果这个属性有值，文章卡片摘要就显示这段文字，否则程序会自动截取文章的部分内容作为摘要</td></tr><tr><td>categories</td><td>无</td><td>文章分类，本主题的分类表示宏观上大的分类，只建议一篇文章一个分类</td></tr><tr><td>tags</td><td>无</td><td>文章标签，一篇文章可以多个标签</td></tr><tr><td>keywords</td><td>文章标题</td><td>文章关键字，SEO 时需要</td></tr><tr><td>reprintPolicy</td><td>cc_by</td><td>文章转载规则， 可以是 cc_by, cc_by_nd, cc_by_sa, cc_by_nc, cc_by_nc_nd, cc_by_nc_sa, cc0, noreprint 或 pay 中的一个</td></tr></tbody></table><blockquote><p><strong>注意</strong>:</p><ol><li>如果 <code>img</code> 属性不填写的话，文章特色图会根据文章标题的 <code>hashcode</code> 的值取余，然后选取主题中对应的特色图片，从而达到让所有文章的特色图<strong>各有特色</strong>。</li><li><code>date</code> 的值尽量保证每篇文章是唯一的，因为本主题中 <code>Gitalk</code> 和 <code>Gitment</code> 识别 <code>id</code> 是通过 <code>date</code> 的值来作为唯一标识的。</li><li>如果要对文章设置阅读验证密码的功能，不仅要在 Front-matter 中设置采用了 SHA256 加密的 password 的值，还需要在主题的 <code>_config.yml</code> 中激活了配置。有些在线的 SHA256 加密的地址，可供你使用：<a href="http://tool.oschina.net/encrypt?type=2">开源中国在线工具</a>、<a href="http://encode.chahuo.com/">chahuo</a>、<a href="http://tool.chinaz.com/tools/hash.aspx">站长工具</a>。</li><li>您可以在文章md文件的 front-matter 中指定 reprintPolicy 来给单个文章配置转载规则</li></ol></blockquote><p>以下为文章的 <code>Front-matter</code> 示例。</p><h3 id="最简示例"><a href="#最简示例" class="headerlink" title="最简示例"></a>最简示例</h3><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> typora<span class="token punctuation">-</span>vue<span class="token punctuation">-</span>theme主题介绍<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2020-09-07 09:25:00</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><h3 id="最全示例"><a href="#最全示例" class="headerlink" title="最全示例"></a>最全示例</h3><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> typora<span class="token punctuation">-</span>vue<span class="token punctuation">-</span>theme主题介绍<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2018-09-07 09:25:00</span><span class="token key atrule">author</span><span class="token punctuation">:</span> 赵奇<span class="token key atrule">img</span><span class="token punctuation">:</span> /source/images/xxx.jpg<span class="token key atrule">top</span><span class="token punctuation">:</span> <span class="token boolean important">true</span><span class="token key atrule">cover</span><span class="token punctuation">:</span> <span class="token boolean important">true</span><span class="token key atrule">coverImg</span><span class="token punctuation">:</span> /images/1.jpg<span class="token key atrule">password</span><span class="token punctuation">:</span> 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92<span class="token key atrule">toc</span><span class="token punctuation">:</span> <span class="token boolean important">false</span><span class="token key atrule">mathjax</span><span class="token punctuation">:</span> <span class="token boolean important">false</span><span class="token key atrule">summary</span><span class="token punctuation">:</span> 这是你自定义的文章摘要内容，如果这个属性有值，文章卡片摘要就显示这段文字，否则程序会自动截取文章的部分内容作为摘要<span class="token key atrule">categories</span><span class="token punctuation">:</span> Markdown<span class="token key atrule">tags</span><span class="token punctuation">:</span>  <span class="token punctuation">-</span> Typora  <span class="token punctuation">-</span> Markdown<span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="效果截图"><a href="#效果截图" class="headerlink" title="效果截图"></a>效果截图</h2><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216200528487.png" alt="首页"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216201005473.png" alt="首页文章列表"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216201903276.png" alt="首页文章列表"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216201932007.png" alt="首页文章列表"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216200745007.png" alt="首页文章列表"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201216200859752.png" alt="首页文章列表"></p><h2 id="自定制修改"><a href="#自定制修改" class="headerlink" title="自定制修改"></a>自定制修改</h2><p>在本主题的 <code>_config.yml</code> 中可以修改部分自定义信息，有以下几个部分：</p><ul><li>菜单</li><li>我的梦想</li><li>首页的音乐播放器和视频播放器配置</li><li>是否显示推荐文章名称和按钮配置</li><li><code>favicon</code> 和 <code>Logo</code></li><li>个人信息</li><li>TOC 目录</li><li>文章打赏信息</li><li>复制文章内容时追加版权信息</li><li>MathJax</li><li>文章字数统计、阅读时长</li><li>点击页面的’爱心’效果</li><li>我的项目</li><li>我的技能</li><li>我的相册</li><li><code>Gitalk</code>、<code>Gitment</code>、<code>Valine</code> 和 <code>disqus</code> 评论配置</li><li><a href="http://busuanzi.ibruce.info/">不蒜子统计</a>和谷歌分析（<code>Google Analytics</code>）</li><li>默认特色图的集合。当文章没有设置特色图时，本主题会根据文章标题的 <code>hashcode</code> 值取余，来选择展示对应的特色图</li></ul><p><strong>我认为个人博客应该都有自己的风格和特色</strong>。如果本主题中的诸多功能和主题色彩你不满意，可以在主题中自定义修改，很多更自由的功能和细节点的修改难以在主题的 <code>_config.yml</code> 中完成，需要修改源代码才来完成。以下列出了可能对你有用的地方：</p><h3 id="修改主题颜色"><a href="#修改主题颜色" class="headerlink" title="修改主题颜色"></a>修改主题颜色</h3><p>在主题文件的 <code>/source/css/matery.css</code> 文件中，搜索 <code>.bg-color</code> 来修改背景颜色：</p><pre class="line-numbers language-css" data-language="css"><code class="language-css"><span class="token comment">/* 整体背景颜色，包括导航、移动端的导航、页尾、标签页等的背景颜色. */</span><span class="token selector">.bg-color</span> <span class="token punctuation">{</span>    <span class="token property">background-image</span><span class="token punctuation">:</span> <span class="token function">linear-gradient</span><span class="token punctuation">(</span>to right<span class="token punctuation">,</span> #4cbf30 0%<span class="token punctuation">,</span> #0f9d58 100%<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token atrule"><span class="token rule">@-webkit-keyframes</span> rainbow</span> <span class="token punctuation">{</span>   <span class="token comment">/* 动态切换背景颜色. */</span><span class="token punctuation">}</span><span class="token atrule"><span class="token rule">@keyframes</span> rainbow</span> <span class="token punctuation">{</span>    <span class="token comment">/* 动态切换背景颜色. */</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="修改-banner-图和文章特色图"><a href="#修改-banner-图和文章特色图" class="headerlink" title="修改 banner 图和文章特色图"></a>修改 banner 图和文章特色图</h3><p>你可以直接在 <code>/source/medias/banner</code> 文件夹中更换你喜欢的 <code>banner</code> 图片，主题代码中是每天动态切换一张，只需 <code>7</code> 张即可。如果你会 <code>JavaScript</code> 代码，可以修改成你自己喜欢切换逻辑，如：随机切换等，<code>banner</code> 切换的代码位置在 <code>/layout/_partial/bg-cover-content.ejs</code> 文件的 <code>&lt;script&gt;&lt;/script&gt;</code> 代码中：</p><pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'.bg-cover'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span><span class="token string">'background-image'</span><span class="token punctuation">,</span> <span class="token string">'url(/medias/banner/'</span> <span class="token operator">+</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getDay</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'.jpg)'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>在 <code>/source/medias/featureimages</code> 文件夹中默认有 24 张特色图片，你可以再增加或者减少，并需要在 <code>_config.yml</code> 做同步修改。</p><h2 id="版本变更记录"><a href="#版本变更记录" class="headerlink" title="版本变更记录"></a>版本变更记录</h2><p>参见 <a href="https://github.com/blinkfox/hexo-theme-matery/blob/master/README.md">CHANGELOG.md</a></p>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;这是一个采用 &lt;code&gt;Material Design&lt;/code&gt; 和响应式设计的 Hexo 博客主题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;特性&quot;&gt;&lt;a href=&quot;#特性&quot; class=&quot;headerlink&quot; title=&quot;特性&quot;&gt;&lt;/a&gt;特性&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;简单漂亮，文章内容美观易读&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://material.io/&quot;&gt;Material Design&lt;/a&gt; 设计&lt;/li&gt;
&lt;li&gt;响应式设计，博客在桌面端、平板、手机等设备上均能很好的展现&lt;/li&gt;
&lt;li&gt;首页轮播文章及每天动态切换 &lt;code&gt;Banner&lt;/code&gt; 图片&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="HEXO" scheme="https://nate-lin.github.io/categories/HEXO/"/>
    
    
    <category term="个人博客" scheme="https://nate-lin.github.io/tags/%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/"/>
    
  </entry>
  
  <entry>
    <title>Java-自定义异常</title>
    <link href="https://nate-lin.github.io/2020/12/15/java-zi-ding-yi-yi-chang/"/>
    <id>https://nate-lin.github.io/2020/12/15/java-zi-ding-yi-yi-chang/</id>
    <published>2020-12-15T10:46:35.000Z</published>
    <updated>2021-02-07T15:40:31.926Z</updated>
    
    <content type="html"><![CDATA[<h3 id="1-1、概述"><a href="#1-1、概述" class="headerlink" title="1.1、概述"></a>1.1、概述</h3><blockquote><p>为什么需要自定义异常类</p></blockquote><ul><li>我们说了Java中不同的异常类，分别表示着某一种具体的异常情况，那么在开发中总是有些异常情况是SUN没有定义好的，此时我们根据自己业务的异常情况来定义异常。例如年龄负数问题，考试成绩负数问题等等。</li></ul><a id="more"></a><ul><li>在上述代码中，发现这些异常都是JDK内部定义好的，但是实际开发也会出现很多异常，这些异常很有可能在JDK中没有定义过的，那么能不能自己定义异常呢？</li></ul><blockquote><p>什么是定义异常类</p></blockquote><ul><li>在开发中根据自己业务的异常情况来定义异常类。</li><li>自定义一个业务逻辑异常：<code>RegisterException</code>。一个注册异常类。</li></ul><blockquote><p>异常类如何定义</p></blockquote><ul><li>自定义一个编译期异常：自定义类并继承于<code>java.lang.Exception</code>。</li><li>自定义一个运行时期异常类：自定义类并继承于<code>java.lang.RuntimeException</code>。</li></ul><p><strong>使用格式</strong></p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> xxxException <span class="token keyword">extends</span> <span class="token class-name">Exception</span> <span class="token operator">|</span> <span class="token class-name">RuntimeException</span><span class="token punctuation">{</span>    添加一个空函数的构造方法    添加一个带异常信息的构造方法<span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><blockquote><p>注意：<br>   1.自定义异常一般都是以Exception结尾。说明类是一个异常类<br>   2.自定义异常类，必须的继承Exception或者RuntimeException<br>       继承Exception：那么自定义的异常类就是一个运行期异常，无需处理，交给虚拟机处理（中断处理）</p></blockquote><h3 id="1-2、自定义异常–例子"><a href="#1-2、自定义异常–例子" class="headerlink" title="1.2、自定义异常–例子"></a>1.2、自定义异常–例子</h3><p><strong>要求：我们模拟注册操作，如果用户名已存在，则抛出异常提示：亲，该用户名已经被注册。</strong></p><blockquote><p>分析：<br>   1.使用数组保存已经注册过的用户名（数据库）<br>   2.使用Scanner获取用户输入的注册的用户名（前端，页面）<br>   3.定义一个方法，对输入中的注册的用户名进行判断<br>     遍历存储已经注册过用户名和用户输入的用户名比较<br>         true:<br>             用户名已经存在，抛出RegisterException异常，告知用户“亲，该用户名已经被注册”；<br>         false:<br>             继续遍历比较<br>      如果循环结束了，还没有找到重复的用户名，提示“恭喜您，注册成功！”；</p></blockquote><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo04<span class="token punctuation">.</span></span><span class="token class-name">MyException</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/2/7 21:57 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    自定义异常类：        java提供的异常类，不够我们使用，需要自己自定义一些异常类    格式：        public class xxxException extends Exception | RuntimeException{            添加一个空函数的构造方法            添加一个带异常信息的构造方法        }     注意：        1.自定义异常一般都是以Exception结尾。说明类是一个异常类        2.自定义异常类，必须的继承Exception或者RuntimeException            继承Exception：那么自定义的异常类就是一个运行期异常，无需处理，交给虚拟机处理（中断处理）*/</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">RegisterException</span> <span class="token keyword">extends</span> <span class="token comment">/*Exception*/</span><span class="token class-name">RuntimeException</span><span class="token punctuation">{</span>    <span class="token comment">//添加一个空参数的构造方法</span>    <span class="token keyword">public</span> <span class="token class-name">RegisterException</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token keyword">super</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token comment">/*    添加一个带异常信息的构造方法    查看源码发现，所有的异常类都会一个带有异常信息的构造方法，方法内部会调用父类带异常信息的构造方法，让父类来处理这个异常信息*/</span>    <span class="token keyword">public</span> <span class="token class-name">RegisterException</span><span class="token punctuation">(</span><span class="token class-name">String</span> message<span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token keyword">super</span><span class="token punctuation">(</span>message<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo04<span class="token punctuation">.</span></span><span class="token class-name">MyException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Arrays</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Scanner</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/2/7 21:56 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*   要求：我们模拟注册操作，如果用户名已存在，则抛出异常提示：亲，该用户名已经被注册。   分析：      1.使用数组保存已经注册过的用户名（数据库）      2.使用Scanner获取用户输入的注册的用户名（前端，页面）      3.定义一个方法，对输入中的注册的用户名进行判断        遍历存储已经注册过用户名和用户输入的用户名比较            true:                用户名已经存在，抛出RegisterException异常，告知用户“亲，该用户名已经被注册”；            false:                继续遍历比较         如果循环结束了，还没有找到重复的用户名，提示“恭喜您，注册成功！”； */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01RegisterException</span> <span class="token punctuation">{</span>    <span class="token comment">//1.使用数组保存已经注册过的用户吗名（数据库）</span>    <span class="token keyword">static</span>  <span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> usernames<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">"张三"</span><span class="token punctuation">,</span><span class="token string">"李四"</span><span class="token punctuation">,</span><span class="token string">"王五"</span><span class="token punctuation">}</span><span class="token punctuation">;</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token comment">/*throws RegisterException*/</span> <span class="token punctuation">{</span>        <span class="token comment">//2.使用Scanner获取用户输入的注册的用户名（前端，页面）</span>        <span class="token class-name">Scanner</span> sc<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">Scanner</span><span class="token punctuation">(</span><span class="token class-name">System</span><span class="token punctuation">.</span>in<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"请输入您要注册的用户名"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">String</span> username<span class="token operator">=</span>sc<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token function">checkUsername</span><span class="token punctuation">(</span>username<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">//3.定义一个方法，对用户输入中的注册的用户名进行判断</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">checkUsername</span><span class="token punctuation">(</span><span class="token class-name">String</span> username<span class="token punctuation">)</span> <span class="token comment">/*throws RegisterException*/</span> <span class="token punctuation">{</span>        <span class="token comment">//遍历存储已经注册过用户名的数组，获取每一个用户名</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token class-name">String</span> name<span class="token operator">:</span>usernames<span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token comment">//使用获取到的用户名和用户输入的用户名比较</span>            <span class="token keyword">if</span> <span class="token punctuation">(</span>name<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span>username<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>                <span class="token comment">//true:用户名已经存在，抛出RegisterException异常，告知用户“亲，该用户名已经被注册”；</span>                <span class="token keyword">try</span> <span class="token punctuation">{</span>                    <span class="token keyword">throw</span> <span class="token keyword">new</span>  <span class="token class-name">RegisterException</span><span class="token punctuation">(</span><span class="token string">"亲，该用户名已经被注册"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">RegisterException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>                    e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                    <span class="token keyword">return</span><span class="token punctuation">;</span><span class="token comment">//结束方法</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>        <span class="token comment">//如果循环结束了，还没有找到重复的用户名，提示“恭喜您，注册成功！”；</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"恭喜您，注册成功！"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210207225152908.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210207225607799.png"></p><p><strong>Demo01RegisterException改为Demo02RegisterException</strong></p><blockquote><p>发现是效果一样的</p></blockquote><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo04<span class="token punctuation">.</span></span><span class="token class-name">MyException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Scanner</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2021/2/7 21:56 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*   要求：我们模拟注册操作，如果用户名已存在，则抛出异常提示：亲，该用户名已经被注册。   分析：      1.使用数组保存已经注册过的用户名（数据库）      2.使用Scanner获取用户输入的注册的用户名（前端，页面）      3.定义一个方法，对输入中的注册的用户名进行判断        遍历存储已经注册过用户名和用户输入的用户名比较            true:                用户名已经存在，抛出RegisterException异常，告知用户“亲，该用户名已经被注册”；            false:                继续遍历比较         如果循环结束了，还没有找到重复的用户名，提示“恭喜您，注册成功！”； */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo02RegisterException</span> <span class="token punctuation">{</span>    <span class="token comment">//1.使用数组保存已经注册过的用户吗名（数据库）</span>    <span class="token keyword">static</span>  <span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> usernames<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">"张三"</span><span class="token punctuation">,</span><span class="token string">"李四"</span><span class="token punctuation">,</span><span class="token string">"王五"</span><span class="token punctuation">}</span><span class="token punctuation">;</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token comment">/*throws RegisterException*/</span> <span class="token punctuation">{</span>        <span class="token comment">//2.使用Scanner获取用户输入的注册的用户名（前端，页面）</span>        <span class="token class-name">Scanner</span> sc<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">Scanner</span><span class="token punctuation">(</span><span class="token class-name">System</span><span class="token punctuation">.</span>in<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"请输入您要注册的用户名"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">String</span> username<span class="token operator">=</span>sc<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token function">checkUsername</span><span class="token punctuation">(</span>username<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">//3.定义一个方法，对用户输入中的注册的用户名进行判断</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">checkUsername</span><span class="token punctuation">(</span><span class="token class-name">String</span> username<span class="token punctuation">)</span> <span class="token comment">/*throws RegisterException*/</span> <span class="token punctuation">{</span>        <span class="token comment">//遍历存储已经注册过用户名的数组，获取每一个用户名</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token class-name">String</span> name<span class="token operator">:</span>usernames<span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token comment">//使用获取到的用户名和用户输入的用户名比较</span>            <span class="token keyword">if</span> <span class="token punctuation">(</span>name<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span>username<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>                <span class="token comment">//true:用户名已经存在，抛出RegisterException异常，告知用户“亲，该用户名已经被注册”；</span>                    <span class="token keyword">throw</span> <span class="token keyword">new</span>  <span class="token class-name">RegisterException</span><span class="token punctuation">(</span><span class="token string">" 亲，该用户名已经被注册！ "</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//运行期异常无需处理，交给JVM处理，中断处理</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>        <span class="token comment">//如果循环结束了，还没有找到重复的用户名，提示“恭喜您，注册成功！”；</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"恭喜您，注册成功！"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210207230433077.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210207230459446.png"></p>]]></content>
    
    
    <summary type="html">&lt;h3 id=&quot;1-1、概述&quot;&gt;&lt;a href=&quot;#1-1、概述&quot; class=&quot;headerlink&quot; title=&quot;1.1、概述&quot;&gt;&lt;/a&gt;1.1、概述&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;为什么需要自定义异常类&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;我们说了Java中不同的异常类，分别表示着某一种具体的异常情况，那么在开发中总是有些异常情况是SUN没有定义好的，此时我们根据自己业务的异常情况来定义异常。例如年龄负数问题，考试成绩负数问题等等。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="基础知识" scheme="https://nate-lin.github.io/categories/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/"/>
    
    
    <category term="Java笔记" scheme="https://nate-lin.github.io/tags/Java%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Java-异常的处理</title>
    <link href="https://nate-lin.github.io/2020/12/13/java-yi-chang-de-chu-li/"/>
    <id>https://nate-lin.github.io/2020/12/13/java-yi-chang-de-chu-li/</id>
    <published>2020-12-13T13:34:21.000Z</published>
    <updated>2021-02-07T15:25:02.445Z</updated>
    
    <content type="html"><![CDATA[<ul><li>Java异常处理的五个关键字：<strong>try、catch、finally、throw、throws</strong></li></ul><h3 id="1-1、抛出异常throw"><a href="#1-1、抛出异常throw" class="headerlink" title="1.1、抛出异常throw"></a>1.1、抛出异常throw</h3><blockquote><p>在编写程序时，我们必须要考虑程序出现的情况。比如，在定义方法时，方法需要接受参数。那么，当调用方法接受的参数时，首先需要先对参数数据进行合法的判断，数据若不合法，就应该告诉调用者，传递合法的数据进来。这时需要使用抛出异常的方式告诉调用者。</p></blockquote><a id="more"></a><p>在java中，提供一个throw关键字，它用来抛出一个指定的异常对象。那么，一个抛出异常具体如何操作呢？</p><ul><li>创建一个异常对象。封装一些提示信息（信息内容可以自己编写）。</li><li>需要将这个异常对象告知给调用者。怎么告知呢？怎么将这个异常对象传递到调用者呢?通过关键字throw就可以完成。throw异常对象。</li></ul><blockquote><p>throw用在方法内，用来抛出一个异常对象，将这个异常对象传递到调用者处，并结束当前方法的执行。</p></blockquote><p><strong>使用格式：</strong></p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">throw</span> <span class="token keyword">new</span> 异常类名<span class="token punctuation">(</span>参数<span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>例如：</p><p><strong>传递的数组的值是null</strong></p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo01<span class="token punctuation">.</span></span><span class="token class-name">Exception</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Arrays</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2020/12/13 21:51 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    throw关键字    作用：        可以使用throw关键字在指定的方法中抛出指定的异常    使用格式：        throw new xxxException("异常产生的原因");    注意：        1.throw关键字必须写在方法内部        2.throw关键字后边new的对象必须是Exception或者Exception的子类对象        3.throw关键字抛出指定的异常对象，我们就必须处理这个异常对象            throw关键字后边创建的是RuntimeException或者是RuntimeExcetion的子类对象，            我们可以不处理，默认交给JVM处理（打印异常对象，中断程序）            throw关键字后创建的是编程异常（写代码的时候报错），我们就必须处理这个异常。要么throws,要么try...catch */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo03Throw</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token operator">=</span><span class="token keyword">null</span><span class="token punctuation">;</span>       <span class="token keyword">int</span> e<span class="token operator">=</span><span class="token function">getElement</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">/**     * 定义一个方法，获取数组指定索引的元素     * 参数：     *  int[] arr     *  int index     *  以后（工作中）我们首先必须对方法传递过来的参数进行合法性的校验     *  如果参数不合法。那么我们就必须使用抛出异常的方式，告知方法的调用者，传递的参数有问题     */</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">int</span> <span class="token function">getElement</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token punctuation">,</span> <span class="token keyword">int</span> index<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token comment">/*            我们可以对传递过来的参数数组，进行合法性校验            如果数组arr的值是null            那么我们就抛出空指针异常，告知方法的调用者“传递的数组的值null”         */</span>        <span class="token keyword">if</span> <span class="token punctuation">(</span>arr<span class="token operator">==</span><span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">NullPointerException</span><span class="token punctuation">(</span><span class="token string">"传递的数组的值是null"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">int</span> ele<span class="token operator">=</span>arr<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token keyword">return</span> ele<span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201213221130986.png"></p><p><strong>传递的索引超出了数组的使用范围</strong></p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo01<span class="token punctuation">.</span></span><span class="token class-name">Exception</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Arrays</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2020/12/13 21:51 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    throw关键字    作用：        可以使用throw关键字在指定的方法中抛出指定的异常    使用格式：        throw new xxxException("异常产生的原因");    注意：        1.throw关键字必须写在方法内部        2.throw关键字后边new的对象必须是Exception或者Exception的子类对象        3.throw关键字抛出指定的异常对象，我们就必须处理这个异常对象            throw关键字后边创建的是RuntimeException或者是RuntimeExcetion的子类对象，            我们可以不处理，默认交给JVM处理（打印异常对象，中断程序）            throw关键字后创建的是编程异常（写代码的时候报错），我们就必须处理这个异常。要么throws,要么try...catch */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo03Throw</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token comment">//int[] arr=null;</span>        <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token operator">=</span><span class="token keyword">new</span> <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token keyword">int</span> e<span class="token operator">=</span><span class="token function">getElement</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">/**     * 定义一个方法，获取数组指定索引的元素     * 参数：     *  int[] arr     *  int index     *  以后（工作中）我们首先必须对方法传递过来的参数进行合法性的校验     *  如果参数不合法。那么我们就必须使用抛出异常的方式，告知方法的调用者，传递的参数有问题     *  注意：     *      NullPointerException是一个运行异常，我们不用处理，默认交给JVM处理     */</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">int</span> <span class="token function">getElement</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token punctuation">,</span> <span class="token keyword">int</span> index<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token comment">/*            我们可以对传递过来的参数数组，进行合法性校验            如果数组arr的值是null            那么我们就抛出空指针异常，告知方法的调用者“传递的数组的值null”         */</span>        <span class="token keyword">if</span> <span class="token punctuation">(</span>arr<span class="token operator">==</span><span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">NullPointerException</span><span class="token punctuation">(</span><span class="token string">"传递的数组的值是null"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token comment">/*            我们可以对传递过来的参数数组，进行合法性校验            如果数组arr的值是null            那么我们就抛出索引越界异常，告知方法的调用者“传递的索引超出了数组的使用范围”         */</span>        <span class="token keyword">if</span> <span class="token punctuation">(</span>index<span class="token operator">&lt;</span><span class="token number">0</span><span class="token operator">||</span>index<span class="token operator">&gt;</span>arr<span class="token punctuation">.</span>length<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">ArrayIndexOutOfBoundsException</span><span class="token punctuation">(</span><span class="token string">"传递的索引超出了数组的使用范围"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">int</span> ele<span class="token operator">=</span>arr<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token keyword">return</span> ele<span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201213221949000.png"></p><h3 id="1-2、Object非空判断"><a href="#1-2、Object非空判断" class="headerlink" title="1.2、Object非空判断"></a>1.2、Object非空判断</h3><blockquote><p>还记得我们学习过一个类Object吗,曾经提过它由一些静态的实用方法组成，这些方法是null-save(空指针安全的)或者null-tolerant(容忍空指针的)，那么在它的源码中，对对象为null的值进行了抛出异常操作。</p></blockquote><ul><li><code>public static &lt;T&gt; T requireNonNull(T obj)</code>:查看指定引用对象不是null.</li></ul><p>查看源码发现这里对null的进行了抛出异常操作：</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">T</span><span class="token punctuation">&gt;</span></span> <span class="token class-name">T</span> <span class="token function">requireNonNull</span><span class="token punctuation">(</span><span class="token class-name">T</span> obj<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>obj<span class="token operator">==</span><span class="token keyword">null</span><span class="token punctuation">)</span>        <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">NullPointerException</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> obj<span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>Object非空判断的代码演示</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo01<span class="token punctuation">.</span></span><span class="token class-name">Exception</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Objects</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2020/12/13 22:59 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    Object类中的静态方法    public static &lt;T&gt; T requireNonNull(T obj)`:查看指定引用对象不是null.    源码：        public static &lt;T&gt; T requireNonNull(T obj){        if(obj==null)            throw new NullPointerException();        return obj;        } */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo04Object</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token function">method</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">method</span><span class="token punctuation">(</span><span class="token class-name">Object</span> obj<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token comment">//对传递过来的参数进行合法性判断，判断是否为null</span>       <span class="token comment">/*        if(obj==null){            throw new NullPointerException("传递的对象是null")        }*/</span>        <span class="token comment">//Objects.requireNonNull(obj);</span>         <span class="token class-name">Objects</span><span class="token punctuation">.</span><span class="token function">requireNonNull</span><span class="token punctuation">(</span>obj<span class="token punctuation">,</span><span class="token string">"传递的对象是null"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201213231123279.png"></p><h3 id="1-3、声明异常throws"><a href="#1-3、声明异常throws" class="headerlink" title="1.3、声明异常throws"></a>1.3、声明异常throws</h3><p><strong>声明异常</strong>：将问题标识出来，报告给调用者。如果方法内通过throw抛出了编译时异常，而没有捕获处理，那么必须通过throws进行声明，让调用者去处理。</p><p>关键字<strong>throws</strong>运用于方法声明之上，用于表示当前方法不处理异常，而是提醒该方法的调用者来处理异常（抛出异常）。</p><p><strong>声明异常格式：</strong></p><pre class="line-numbers language-java" data-language="java"><code class="language-java">修饰符 返回值 方法名（参数） <span class="token keyword">throws</span> 异常类名<span class="token number">1</span>，异常类名<span class="token number">2.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>声明异常的代码演示：</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo01<span class="token punctuation">.</span></span><span class="token class-name">Exception</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">javax<span class="token punctuation">.</span>security<span class="token punctuation">.</span>auth<span class="token punctuation">.</span>login<span class="token punctuation">.</span></span><span class="token class-name">FailedLoginException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">IOException</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2020/12/14 15:09 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    throws关键字：异常处理的第一种方式，交给别人处理    作用：        当方法内部异常对象的时候，那么我们就必须处理这个异常        可以使用throws关键字处理异常对象，会把异常对象声明抛出给方法的调用者处理        （自己不处理，给别处理），最终交给JVM处理--&gt;中断处理        使用格式：在方法声明时使用            修饰符 返回值类型 方法名（参数列表） throws AAAException,BBBException...{                throws new AAAException("产生原因");                throws new AAAException("产生原因");                ...            }         注意：            1.throws关键字必须写在方法声明处            2.throws关键字后面声明的异常必须是Exception或者是Exception的子类            3.方法内部如果抛出了多个异常对象，那么throws后面必须也声明多个异常                如果抛出了多个异常对象有父类关系，那么直接声明父类异常即可            4.调用了一个声明抛出异常的方法，我们就必须的处理声明的异常                要么继续使用throws声明抛出，交给方法的调用者处理，最终交给JVM                要么try...catch自己处理异常 */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo05Throws</span> <span class="token punctuation">{</span>    <span class="token comment">/*        FailedLoginException extends IOException        如果抛出的多个异常对象有子父类关系，那么直接声明父类异常即可     */</span>    <span class="token comment">//public static void main(String[] args) throws FailedLoginException ,IOException{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span><span class="token punctuation">{</span>        <span class="token function">readFile</span><span class="token punctuation">(</span><span class="token string">"c:\\a.txt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">/*    定义一个方法，对文件的路径进行合法判断    如果路径不是“c:\\a.txt”,那么我们就抛出文件找不到异常对象，告知方法的调用者     注意：       FailedLoginException 是编译异常，抛出了编译异常，就必须处理这个异常       可以使用throws继续声明抛出FailedLoginException这个异常对象，让方法的调用者处理     */</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">readFile</span><span class="token punctuation">(</span><span class="token class-name">String</span> fileName<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">FailedLoginException</span> <span class="token punctuation">,</span><span class="token class-name">IOException</span><span class="token punctuation">{</span>        <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>fileName<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token string">"d:\\a.txt"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">FailedLoginException</span><span class="token punctuation">(</span><span class="token string">"传递的文件路径不是c:\\a.txt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token comment">/*            如果传递的路径不是txt结尾            那么我们就抛出IO异常对象，告知方法的调用者，文件的后缀名不对         */</span>        <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>fileName<span class="token punctuation">.</span><span class="token function">endsWith</span><span class="token punctuation">(</span><span class="token string">".txt"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">IOException</span><span class="token punctuation">(</span><span class="token string">"文件的后缀名不对"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"路径没有问题，读取文件"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201214202034961.png"></p><h3 id="1-4、捕获异常try…catch"><a href="#1-4、捕获异常try…catch" class="headerlink" title="1.4、捕获异常try…catch"></a>1.4、捕获异常try…catch</h3><blockquote><ul><li>try中可能会抛出多个异常对象，那么就可以使用多个catch来处理这些异常对象</li><li>如果try中产生了异常，那么就会执行catch中异常处理逻辑，执行完try的代码，继续执行try…catch之后的代码</li></ul></blockquote><p>try…catch的代码演示：</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo02<span class="token punctuation">.</span></span><span class="token class-name">Exception</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">javax<span class="token punctuation">.</span>security<span class="token punctuation">.</span>auth<span class="token punctuation">.</span>login<span class="token punctuation">.</span></span><span class="token class-name">FailedLoginException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">IOException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Arrays</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2020/12/14 19:42 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    try...catch:异常处理的第二种方式，自己处理异常    格式：        try{            可能产生异常的代码        }catch(){            异常的处理逻辑，异常对象之后，怎么处理异常对象            一般在工作中，会把异常的信息记录到一个日志中        }        ...        catch(异常类名 变量名){        }     注意：        1.try中可能会抛出多个异常对象，那么就可以使用多个catch来处理这些异常对象        2.如果try中产生了异常，那么就会执行catch中异常处理逻辑，执行完try的代码，继续执行try...catch之后的代码 */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01TryCatch</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token keyword">try</span> <span class="token punctuation">{</span>            <span class="token comment">//可能产生异常的代码</span>            <span class="token function">readFile</span><span class="token punctuation">(</span><span class="token string">"d:\\a.txt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token comment">//try中抛出什么异常对象，catch就定义什么异常变量，用来接收这个异常对象</span>        <span class="token punctuation">}</span><span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">IOException</span> e<span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token comment">//异常的处理逻辑，异常对象之后，怎么处理异常对象</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"catch-传递的文件后缀不是.txt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"后续代码"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">/*        如果传递的路径不是txt结尾        那么我们就抛出IO异常对象，告知方法的调用者，文件的后缀名不对     */</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">readFile</span><span class="token punctuation">(</span><span class="token class-name">String</span> fileName<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">IOException</span><span class="token punctuation">{</span>        <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>fileName<span class="token punctuation">.</span><span class="token function">endsWith</span><span class="token punctuation">(</span><span class="token string">".txt"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">IOException</span><span class="token punctuation">(</span><span class="token string">"文件的后缀名不对"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"路径没有问题，读取文件"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201214202150771.png"></p><h3 id="1-5、Throwable"><a href="#1-5、Throwable" class="headerlink" title="1.5、Throwable"></a>1.5、Throwable</h3><p>如何获取异常信息：</p><p>Throwable类中定义了一些查看方法：</p><ul><li><code>public String getMessage()</code>:获取异常的描述信息，原因（提示给用户的时候，就提示错误原因）</li><li><code>public String toString()</code>:获取异常的类型和描述信息（不用）</li><li><code>public void printStackTrace()</code>:打印异常的跟踪栈信息并输出到控制台。</li></ul><p>包含了异常的类型，异常的原因还包括异常出现的位置，在开发和调试阶段都得使用printStackTrace。在开发中呢，也是可以在catch将编译期异常转换运行期异常处理</p><p>多个异常使用捕获又该如何处理呢？</p><ul><li><p>1.多个异常分别处理</p></li><li><p>2.多个异常一次捕获一次处理</p></li><li><p>3.多个异常一次捕获，多次处理</p></li></ul><p>代码如下：</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo02<span class="token punctuation">.</span></span><span class="token class-name">Exception</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">javax<span class="token punctuation">.</span>security<span class="token punctuation">.</span>auth<span class="token punctuation">.</span>login<span class="token punctuation">.</span></span><span class="token class-name">FailedLoginException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">IOException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>sql<span class="token punctuation">.</span></span><span class="token class-name">SQLOutput</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Arrays</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2020/12/14 19:42 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    try...catch:异常处理的第二种方式，自己处理异常    格式：        try{            可能产生异常的代码        }catch(){            异常的处理逻辑，异常对象之后，怎么处理异常对象            一般在工作中，会把异常的信息记录到一个日志中        }        ...        catch(异常类名 变量名){        }     注意：        1.try中可能会抛出多个异常对象，那么就可以使用多个catch来处理这些异常对象        2.如果try中产生了异常，那么就会执行catch中异常处理逻辑，执行完try的代码，继续执行try...catch之后的代码 */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01TryCatch</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token keyword">try</span> <span class="token punctuation">{</span>            <span class="token comment">//可能产生异常的代码</span>            <span class="token function">readFile</span><span class="token punctuation">(</span><span class="token string">"d:\\a.tx"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token comment">//try中抛出什么异常对象，catch就定义什么异常变量，用来接收这个异常对象</span>        <span class="token punctuation">}</span><span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">IOException</span> e<span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token comment">//异常的处理逻辑，异常对象之后，怎么处理异常对象</span>            <span class="token comment">// System.out.println("catch-传递的文件后缀不是.txt");</span>        <span class="token comment">/*            Throwable类中定义了3个异常处理的方法                String getMessage() 返回此throwable的简短描述                String toString() 返回此throwable的详细消息字符串                void printStackTrace() JVM打印异常对象，默认此方法，打印的异常信息是最全面的        */</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//文件的后缀名不对</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//java.io.IOException: 文件的后缀名不对</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//java.io.IOException: 文件的后缀名不对</span>            <span class="token comment">/*                java.io.IOException: 文件的后缀名不对            at com.itheima.demo02.Exception.Demo01TryCatch.readFile(Demo01TryCatch.java:62)            at com.itheima.demo02.Exception.Demo01TryCatch.main(Demo01TryCatch.java:36)             */</span>            e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"后续代码"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">/*        如果传递的路径不是txt结尾        那么我们就抛出IO异常对象，告知方法的调用者，文件的后缀名不对     */</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">readFile</span><span class="token punctuation">(</span><span class="token class-name">String</span> fileName<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">IOException</span><span class="token punctuation">{</span>        <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>fileName<span class="token punctuation">.</span><span class="token function">endsWith</span><span class="token punctuation">(</span><span class="token string">".txt"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">IOException</span><span class="token punctuation">(</span><span class="token string">"文件的后缀名不对"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"路径没有问题，读取文件"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201214205639479.png"></p><h3 id="1-6、finally代码块"><a href="#1-6、finally代码块" class="headerlink" title="1.6、finally代码块"></a>1.6、finally代码块</h3><p><strong>finally</strong>：有一些特定的代码无论异常是否发生，都需要执行。另外，因为异常会引发程序跳转，导致有些语句执行不到。而finally代码块中存放的代码都是一定会执行的。</p><p>什么时候的代码必须最终执行？</p><p>当我们在try语句中打开了一些物理资源（磁盘文件/网络连接/数据库连接等），我们都得在使用完之后，最终关闭打开的资源。</p><p>finally的语法：</p><p>try…catch…finally:自身需要处理异常，最终还得关闭资源。</p><blockquote><p>注意：finally不能单独使用</p></blockquote><p>比如在我们之后学习的IO流中，当打开了一个关联文件的资源，最后程序不管结果如何，都需要把这个资源关闭掉</p><p>finally代码参考如下：</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo02<span class="token punctuation">.</span></span><span class="token class-name">Exception</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">IOException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Arrays</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2020/12/14 21:09 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token comment">/*    finally代码块    格式：        try{            可能产生异常的代码        }catch(){            异常的处理逻辑，异常对象之后，怎么处理异常对象            一般在工作中，会把异常的信息记录到一个日志中        }        ...        catch(异常类名 变量名){        }finally{            无论是否出现异常都会执行        }       注意：        1.finally不能单独使用，必须和try一起使用        2.finally一般用于资源释放（资源回收），无论程序是否出现异常，最后都要资源释放（IO） */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo02TryCatchFinally</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token keyword">try</span> <span class="token punctuation">{</span>            <span class="token comment">//可能会产生异常的代码</span>            <span class="token function">readFile</span><span class="token punctuation">(</span><span class="token string">"c:\\a.tx"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">IOException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>            <span class="token comment">//异常的处理逻辑</span>            e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span><span class="token keyword">finally</span> <span class="token punctuation">{</span>            <span class="token comment">//无论是否出现异常，都会执行</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"资源释放"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token comment">/*           如果传递的路径不是txt结尾           那么我们就抛出IO异常对象，告知方法的调用者，文件的后缀名不对        */</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">readFile</span><span class="token punctuation">(</span><span class="token class-name">String</span> fileName<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">IOException</span> <span class="token punctuation">{</span>        <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>fileName<span class="token punctuation">.</span><span class="token function">endsWith</span><span class="token punctuation">(</span><span class="token string">".txt"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">IOException</span><span class="token punctuation">(</span><span class="token string">"文件的后缀名不对"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"路径没有问题，读取文件"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201214211821401.png"></p><h3 id="1-7、异常注意事项"><a href="#1-7、异常注意事项" class="headerlink" title="1.7、异常注意事项"></a>1.7、异常注意事项</h3><ul><li><p>多个异常使用捕获又该如何处理呢？</p><ul><li><p>1.多个异常分别处理</p></li><li><p>2.多个异常一次捕获一次处理</p></li><li><p>3.多个异常一次捕获，多次处理</p></li></ul></li></ul><p>一般我们是使用一次捕获多次处理方式，格式如下：</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">try</span><span class="token punctuation">{</span>    编写可能会出现异常的代码<span class="token punctuation">}</span><span class="token keyword">catch</span><span class="token punctuation">(</span>异常类型<span class="token class-name">A</span> e<span class="token punctuation">)</span><span class="token punctuation">{</span>当<span class="token keyword">try</span>中出现<span class="token class-name">A</span>类异常，就用该<span class="token keyword">catch</span>来捕获。    处理异常的代码    <span class="token comment">//记录日志/打印异常信息/继续抛出异常</span><span class="token punctuation">}</span><span class="token keyword">catch</span><span class="token punctuation">(</span>异常类型<span class="token class-name">B</span> e<span class="token punctuation">)</span><span class="token punctuation">{</span>当<span class="token keyword">try</span>中出现<span class="token class-name">B</span>类异常，就用该<span class="token keyword">catch</span>来捕获。    处理异常的代码    <span class="token comment">//记录日志/打印异常信息/继续抛出异常</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><blockquote><p>注意：这种异常处理方式，要求多个catch中的异常不能相同，并且若catch中的多个异常之间有子父类异常的关系，那么子类异常要求在上面的catch处理，父类异常在下面的catch处理。</p></blockquote><ul><li>运行时异常被抛出可以不处理。即不捕获也不声明抛出。</li><li>如果父类抛出了多个异常，子类覆盖父类方法时，只能抛出相同的异常或者是他的子集。</li><li>父类方法没有抛出异常，子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常，只能捕获处理，不能声明抛出。</li><li>在try/catch后可以追加finally代码块，其中的代码一定会执行，通常用于资源回收。</li><li>如果finally有return语句，永远返回finally中的结果，避免该情况。</li></ul>]]></content>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;Java异常处理的五个关键字：&lt;strong&gt;try、catch、finally、throw、throws&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;1-1、抛出异常throw&quot;&gt;&lt;a href=&quot;#1-1、抛出异常throw&quot; class=&quot;headerlink&quot; title=&quot;1.1、抛出异常throw&quot;&gt;&lt;/a&gt;1.1、抛出异常throw&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;在编写程序时，我们必须要考虑程序出现的情况。比如，在定义方法时，方法需要接受参数。那么，当调用方法接受的参数时，首先需要先对参数数据进行合法的判断，数据若不合法，就应该告诉调用者，传递合法的数据进来。这时需要使用抛出异常的方式告诉调用者。&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="基础知识" scheme="https://nate-lin.github.io/categories/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/"/>
    
    
    <category term="Java笔记" scheme="https://nate-lin.github.io/tags/Java%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>网络排查故障思路</title>
    <link href="https://nate-lin.github.io/2020/12/06/wang-luo-pai-cha-gu-zhang-si-lu/"/>
    <id>https://nate-lin.github.io/2020/12/06/wang-luo-pai-cha-gu-zhang-si-lu/</id>
    <published>2020-12-06T11:32:40.000Z</published>
    <updated>2021-07-10T14:28:34.378Z</updated>
    
    <content type="html"><![CDATA[<h3 id="故障思路"><a href="#故障思路" class="headerlink" title="故障思路"></a>故障思路</h3><ul><li>网络巡查故障的思路**网络故障是指网络因为某些原因而不能正常、有效地工作，或者网络连接出现中断。</li></ul><p><strong>以下是故障查思路</strong></p><hr><a id="more"></a><ul><li><p>1.网络图标不见了</p><ul><li>网卡驱动没有安装</li><li>网络重置</li></ul></li><li><p>2.正常</p><ul><li>是否登录账号</li><li>是否获取的ip不正常</li></ul></li><li><p>3.感叹号</p><ul><li>查看DNS、IP是否正常</li></ul></li><li><p>4.红叉</p><ul><li><p>查看交换机是否正常</p></li><li><p>查看软件是否冲突</p></li><li><p>查看物理链路是否正常通信</p></li></ul></li></ul><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206193507867.png"></p><h4 id="1、网络图标消失时"><a href="#1、网络图标消失时" class="headerlink" title="1、网络图标消失时"></a><strong>1、网络图标消失时</strong></h4><hr><blockquote><p>网卡驱动没有安装</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206194319022.png"></p><blockquote><p>网络重置</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201208142318378.png"></p><blockquote><p>以管理员权限打开cmd 并输入命令行：<code>netsh winsock reset</code></p><p>然后重启电脑</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206195313756.png"></p><h4 id="2、网络图标正常时"><a href="#2、网络图标正常时" class="headerlink" title="2、网络图标正常时"></a><strong>2、网络图标正常时</strong></h4><hr><blockquote><p>由于办公老师私接路由器，并且没有设置好，导致路由器的dhcp功能与交换机的dhcp功能冲突，导致连接交换机的电脑可能获取到路由器分配的地址而不是交换机</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206195530308.png"></p><h4 id="3、网络图标感叹号时"><a href="#3、网络图标感叹号时" class="headerlink" title="3、网络图标感叹号时"></a><strong>3、网络图标感叹号时</strong></h4><hr><blockquote><p><strong>查看步骤</strong></p><p>1.使用win+r 调出命令窗口</p><p>2.使用ipconfig/(all)查看ip 网关 dns等</p><p>3.看看ip、dns是否异常</p><p>4.或者右键网络图标，从属性上查看ip等相关信息，以及是否是静态ip等</p><p><strong>异常状态</strong></p><p>1.169开头的ip没获取到正确的ip</p><p>2.192.168.1.x等是路由器分配的ip</p><p><strong>处理方法</strong></p><p>1.使用ipconfig/release释放配置，ipconfig/renew重新获取</p><p>2.使用自带的网络检测功能尝试处理</p><p>3.重启交换机</p><p>4.静态固定ip地址</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206200220870.png"></p><h4 id="4、网络图标红叉时"><a href="#4、网络图标红叉时" class="headerlink" title="4、网络图标红叉时"></a><strong>4、网络图标红叉时</strong></h4><hr><blockquote><p><strong>查看步骤</strong></p><p>1.查看主机后面的网络插口是否亮灯</p><p>2.win+r 使用ping 127.0.0.1查看TCP/IP协议是否正常</p><p>3.右键电脑，查看设备管理器网卡驱动是否异常</p><p>4.查看主机连接交换机这一链路是否正常</p><p><strong>处理方法</strong></p><p>1.灯不亮，网卡损坏或松动，可找专业人员修理</p><p>2.Ping 不通，代表本地机TCP/IP协议不能正常工作，重装协议</p><p>3.重装网卡驱动</p><p>4.网线损坏就换，端口损坏更换，如果是墙内的线至交换机出问题就更换。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206200829255.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206200925028.png" alt="image-20201206200925028"></p><blockquote><p><strong>总体而言就是检查物理链路是否通畅</strong></p></blockquote><blockquote><p><strong>查看步骤</strong></p><p>找到“服务”的“WLAN AutoConfig”和“WLAN Direct服务连接管理服务”</p><p><strong>处理方法</strong></p><p>设置为自动就行</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206203123599.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206203448237.png"></p><blockquote><p><strong>查看步骤</strong></p><p>win+调出调试窗口，输入<code>regedit</code>弹出注册表编辑器</p><p>选择路径为：计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ndisuio</p><p><strong>处理方法</strong></p><p>查看Start的值，正常值为：2</p><p>查看DisplayName的值，正常值为：NDIS Usermode I/O Protocol</p><p>设置后，F5刷新，以管理员权限打开cmd在里面输入<code>netsh winsock reset</code>,(重置Winsock目录)，回车后开启无线服务，然后重启电脑。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206203828212.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206203935413.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206204143216.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206204112917.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206195313756.png"></p><h4 id="5、电话故障排查"><a href="#5、电话故障排查" class="headerlink" title="5、电话故障排查"></a><strong>5、电话故障排查</strong></h4><hr><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206201029355.png"></p>]]></content>
    
    
    <summary type="html">&lt;h3 id=&quot;故障思路&quot;&gt;&lt;a href=&quot;#故障思路&quot; class=&quot;headerlink&quot; title=&quot;故障思路&quot;&gt;&lt;/a&gt;故障思路&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;网络巡查故障的思路**网络故障是指网络因为某些原因而不能正常、有效地工作，或者网络连接出现中断。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;以下是故障查思路&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;</summary>
    
    
    
    <category term="网络" scheme="https://nate-lin.github.io/categories/%E7%BD%91%E7%BB%9C/"/>
    
    
    <category term="网络故障" scheme="https://nate-lin.github.io/tags/%E7%BD%91%E7%BB%9C%E6%95%85%E9%9A%9C/"/>
    
  </entry>
  
  <entry>
    <title>Windows系统常见网络故障解决方法</title>
    <link href="https://nate-lin.github.io/2020/12/06/windows-xi-tong-chang-jian-wang-luo-gu-zhang-jie-jue-fang-fa/"/>
    <id>https://nate-lin.github.io/2020/12/06/windows-xi-tong-chang-jian-wang-luo-gu-zhang-jie-jue-fang-fa/</id>
    <published>2020-12-06T07:45:57.000Z</published>
    <updated>2021-02-07T15:33:08.283Z</updated>
    
    <content type="html"><![CDATA[<h3 id="Windows系统常见网络故障解决方法"><a href="#Windows系统常见网络故障解决方法" class="headerlink" title="Windows系统常见网络故障解决方法"></a>Windows系统常见网络故障解决方法</h3><ul><li>网络是一个很复杂，牵涉很多方面的东西。硬件的问题、软件的漏洞、病毒的侵入等等都可以引起网络的故障。对于硬件一般都是由架构网络的设备，包括网卡、网线、路由、交换机、调治解调器等设备引起的的网络故障。对于这种故障，一般可以通过PING命令查看的出来。关于软件，这是一个很复杂的东西。系统：一般TCP/IP协议如果出现鼓掌的话，网络肯定是会出现问题了。还有可能就是对用户管理出现了问题。有时候防火墙的设置也会影响网络。<strong>网络故障</strong>是指网络因为某些原因而不能正常、有效地工作，或者网络连接出现<strong>中断</strong>。</li></ul><a id="more"></a><p><strong>其中网络的解决思路可分为以下6个方面：</strong></p><hr><ul><li>1、硬件问题</li><li>2、驱动问题</li><li>3、IP问题</li><li>4、DNS问题</li><li>5、代理问题</li><li>6、系统问题</li></ul><h4 id="1、硬件问题"><a href="#1、硬件问题" class="headerlink" title="1、硬件问题"></a>1、硬件问题</h4><hr><p><strong>问题</strong></p><blockquote><p>无法连接，显示无网络状态。</p></blockquote><p><strong>原因1</strong></p><blockquote><p>可能网线没连接、网线接口松动。</p></blockquote><p><strong>解决方法</strong></p><blockquote><p>按照如下查看是否为硬件问题(<strong>操作中心–&gt;网络和Internet–&gt;更改适配器选项</strong>),查看是否网线没插好，如是请重新插一下。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206162119270.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206162228775.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206162306613.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206162336728.png"></p><p><strong>原因2</strong></p><blockquote><p>可能网络被禁用了。</p></blockquote><p><strong>解决方法</strong></p><blockquote><p>把网络启用即可。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206162119270.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206162228775.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/c6019ce460853fea6eef89d38745eb2.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206170543353.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206170656167.png"></p><h4 id="2、驱动问题"><a href="#2、驱动问题" class="headerlink" title="2、驱动问题"></a>2、驱动问题</h4><hr><p><strong>问题</strong></p><blockquote><p>刚可正常上网，突然就不能上网了,而且进适配器也不管用。</p></blockquote><p><strong>原因</strong></p><blockquote><p>可能驱动出现问题</p></blockquote><p><strong>解决方法</strong></p><blockquote><p>找到网卡卸载了，再由系统重新扫描加载回来后重启电脑即可。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206171405709.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206171438639.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206171540141.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206171608046.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206171629260.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206171717034.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206171837576.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206171912311.png"></p><h4 id="3、IP问题"><a href="#3、IP问题" class="headerlink" title="3、IP问题"></a>3、IP问题</h4><hr><p><strong>问题</strong></p><blockquote><p>无法上网</p></blockquote><p><strong>原因</strong></p><blockquote><p>可能IP地址被占用</p></blockquote><p><strong>解决方法</strong></p><blockquote><p>修改正确的IP地址，使用下面的IP地址DNS服务器地址</p><p>常用的DNS IP地址：首选114.114.114.114   备用：8.8.8.8</p><p>注意查看不了ip地址的随意写，如192.168.** . **  (**代表1-253数字内)</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206162119270.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206162228775.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/c6019ce460853fea6eef89d38745eb2.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206173441753.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206173245587.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206173008346.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206173410466.png"></p><blockquote><p>或者用cmd命令查看自己的ip是否和自己设置的一致</p><p>调出命令：Win+R  输入ipconfig/all,即可查看</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206174006044.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206174216928.png"></p><h4 id="4、DNS问题"><a href="#4、DNS问题" class="headerlink" title="4、DNS问题"></a>4、DNS问题</h4><hr><p><strong>问题</strong></p><blockquote><p>qq能登上，但网页打不开</p></blockquote><p><strong>原因</strong></p><blockquote><p>有ip的情况也有可能出现没获取到DNS的情况，对于qq能登上，但网页打不开，概率是没获取到dns问题导致的.</p></blockquote><p><strong>解决方法</strong></p><blockquote><p>这种情况按照上面第4的ip方式设置一个dns就可以了。</p></blockquote><h4 id="5、代理问题"><a href="#5、代理问题" class="headerlink" title="5、代理问题"></a>5、代理问题</h4><hr><p><strong>问题</strong></p><blockquote><p>获取不了网络，电脑无法上网</p></blockquote><p><strong>原因</strong></p><blockquote><p>可能之前开过VPN，由于VNP程序异常导致电脑无法上网</p></blockquote><p><strong>解决方法</strong></p><blockquote><p>点击IE浏览器设置图标–&gt;Internet选项–&gt;高级，下面有一个重置按钮，选择重置即可，重置后会提示重启，重启后代理导致的问题就解决了。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206192212595.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206192315092.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206192358104.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206192417419.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201206192453358.png"></p><h4 id="6、系统问题"><a href="#6、系统问题" class="headerlink" title="6、系统问题"></a>6、系统问题</h4><hr><blockquote><p>重启电脑，实在不行就换系统</p></blockquote>]]></content>
    
    
    <summary type="html">&lt;h3 id=&quot;Windows系统常见网络故障解决方法&quot;&gt;&lt;a href=&quot;#Windows系统常见网络故障解决方法&quot; class=&quot;headerlink&quot; title=&quot;Windows系统常见网络故障解决方法&quot;&gt;&lt;/a&gt;Windows系统常见网络故障解决方法&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;网络是一个很复杂，牵涉很多方面的东西。硬件的问题、软件的漏洞、病毒的侵入等等都可以引起网络的故障。对于硬件一般都是由架构网络的设备，包括网卡、网线、路由、交换机、调治解调器等设备引起的的网络故障。对于这种故障，一般可以通过PING命令查看的出来。关于软件，这是一个很复杂的东西。系统：一般TCP/IP协议如果出现鼓掌的话，网络肯定是会出现问题了。还有可能就是对用户管理出现了问题。有时候防火墙的设置也会影响网络。&lt;strong&gt;网络故障&lt;/strong&gt;是指网络因为某些原因而不能正常、有效地工作，或者网络连接出现&lt;strong&gt;中断&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="网络" scheme="https://nate-lin.github.io/categories/%E7%BD%91%E7%BB%9C/"/>
    
    
    <category term="网络故障" scheme="https://nate-lin.github.io/tags/%E7%BD%91%E7%BB%9C%E6%95%85%E9%9A%9C/"/>
    
  </entry>
  
  <entry>
    <title>Hexo:command not found的解决方法</title>
    <link href="https://nate-lin.github.io/2020/12/05/hexo-command-not-found-de-jie-jue-fang-fa/"/>
    <id>https://nate-lin.github.io/2020/12/05/hexo-command-not-found-de-jie-jue-fang-fa/</id>
    <published>2020-12-05T03:39:09.000Z</published>
    <updated>2020-12-25T06:30:52.289Z</updated>
    
    <content type="html"><![CDATA[<h4 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h4><p><code>hexo g -d</code>出现这种情况，主要是node的版本问题 可以通过nvm来控制一下node的版本来解决。</p><pre class="line-numbers language-java" data-language="java"><code class="language-java">hexo g <span class="token operator">-</span>d<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><blockquote><p>报错：bash: hexo: command not found</p></blockquote><a id="more"></a><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205114012331.png"></p><h4 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h4><pre class="line-numbers language-java" data-language="java"><code class="language-java">npm install <span class="token operator">-</span>g hexo<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205114038410.png"></p><p>后再<code>hexo g -d</code>就正常使用啦。</p><pre class="line-numbers language-java" data-language="java"><code class="language-java">hexo g <span class="token operator">-</span>d<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205114920646.png"></p>]]></content>
    
    
    <summary type="html">&lt;h4 id=&quot;问题&quot;&gt;&lt;a href=&quot;#问题&quot; class=&quot;headerlink&quot; title=&quot;问题&quot;&gt;&lt;/a&gt;问题&lt;/h4&gt;&lt;p&gt;&lt;code&gt;hexo g -d&lt;/code&gt;出现这种情况，主要是node的版本问题 可以通过nvm来控制一下node的版本来解决。&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-java&quot; data-language=&quot;java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;hexo g &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;d&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;报错：bash: hexo: command not found&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="笔记" scheme="https://nate-lin.github.io/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="技术笔记" scheme="https://nate-lin.github.io/tags/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>WIN10系统安装教程-PE辅助安装</title>
    <link href="https://nate-lin.github.io/2020/12/04/win10-xi-tong-an-zhuang-jiao-cheng-pe-fu-zhu-an-zhuang/"/>
    <id>https://nate-lin.github.io/2020/12/04/win10-xi-tong-an-zhuang-jiao-cheng-pe-fu-zhu-an-zhuang/</id>
    <published>2020-12-04T08:56:23.000Z</published>
    <updated>2021-02-25T10:40:04.261Z</updated>
    
    <content type="html"><![CDATA[<h4 id="一、如何使用PE辅助进行安装"><a href="#一、如何使用PE辅助进行安装" class="headerlink" title="一、如何使用PE辅助进行安装"></a>一、如何使用PE辅助进行安装</h4><ul><li>为什么要用PE，官方IOS虽然简单方便，步骤少，但是相应的功能也是最少的，除了装系统给磁盘格式化分区之外，什么功能都没有，况且U盘的三种格式的方法也比较僵硬，NTFS和exFAT在某些主板上不能启动，而FA32是不支持32G以上的单个硬盘分区，且不允许存放单个文件体积大于4G的文件，所以这就衍生出来了另一种安装方法，使用PE便携式操作系统辅助进行安装。</li></ul><a id="more"></a><h5 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h5><hr><ul><li>PE辅助</li><li>WIN10系统安装包</li><li>驱动</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204203058329.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204170915873.png"></p><h4 id="二、PE是什么呢？"><a href="#二、PE是什么呢？" class="headerlink" title="二、PE是什么呢？"></a>二、PE是什么呢？</h4><blockquote><p>大家都知道我们的操作系统是安装到磁盘内的，磁盘是一种存储数据的J介质，我们的U盘同样是一种存储数据的介质，那我们是不是可以把系统装进U盘里呢？答案是可以的，但是由于目前大部分的U盘性能都实在是弱鸡，你把完整版的系统装进U盘，就算能成功开启也会卡的不行。所以有些人就把我们的操作系统精简掉，绝大多数用不到的功能只保留下来一些基本的运行环境和驱动，整理出来一个简化版的操作系统，这个操作系统就可以非常流畅的在U盘的运行了，这种装在U盘内的简化的操作系统就被我们称之为<strong>便携式操作系统</strong>，简称<strong>PE</strong>。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204171400383.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204171823628.png"></p><blockquote><p>既然是操作系统，就意味着如果你进入了PE,也是可以进行很多软件的运行的，你就可以运行各种系统的检测的软件，硬件检测的工具，此外，你还可以直接访问电脑的磁盘，在主系统不能正常开机启动的情况下，你还可以进行系统文件的修复或者重要数据的拷贝，这些功能都是官方ISO无法提供给你的。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204172912033.png"></p><blockquote><p>此外，由于PE本身是可以直接读取ISO安装文件呢，那所有安装包，你都不需要解压，你可以自己整理好在一个文件夹里放好，这样U盘内的文件就不会显示的很乱啊。你拿来当普通U盘用都是毫无问题的，而且你还可以在U盘内。放上各种不同版本的系统，根据不同的情况去选择，想装哪个就选择装哪个，所以我个人还是比较推崇使用PE是辅助进行安装的。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204231331414.png"></p><blockquote><p>所以如果你就是打算装个win10,你就需要的只是一个win10安装其他的操作系统，也不在乎一堆文件散在U盘里或者你新建一个文件夹（使用拉扯出来），那你就用官方ISO安装的方法就可以，而如果你是希望在U盘里保留一个简化版的PC操作系统，在主系统出现问题的时候，你能用PE进行文件修复和文件拷贝的，也打算在U盘内放上不同版本的系统,以下是存放多版本的图片。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204174557587.png"></p><blockquote><p>以应对各种情况，除了win10,你还想装win7,XP等其他系统的，你需要的是一个工具类的U盘，而不是只有一个安装包的U盘，那你就用PE辅助的安装方法，还是和PE一样，你需要准备一个8G容量以上的U盘和另外一台电脑，来制作启动盘，再次提醒请务必正确使用正规的一线品牌的U盘，不要使用路边摊手机店买的假冒劣质U盘，准备好U盘和电脑以后，现在正式教大家如何使用PE辅助安装系统，既然是使用PE辅助安装系统的话，那么首先把PE安装进U盘内。</p></blockquote><h4 id="三、安装微PE辅助"><a href="#三、安装微PE辅助" class="headerlink" title="三、安装微PE辅助"></a>三、安装微PE辅助</h4><h5 id="3-1、微PE官网"><a href="#3-1、微PE官网" class="headerlink" title="3.1、微PE官网"></a>3.1、微PE官网</h5><hr><blockquote><p>首先，我们打开浏览器进入百度，在百度的搜索栏中输入**<code>微PE官网</code>**</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204180301952.png"></p><h5 id="3-2、下载"><a href="#3-2、下载" class="headerlink" title="3.2、下载"></a>3.2、下载</h5><hr><blockquote><p>进入微PE的官网，在微PE官网的右上角有一个**<code>下载</code>**标签点进去</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204180350280.png"></p><h5 id="3-3、版本选择"><a href="#3-3、版本选择" class="headerlink" title="3.3、版本选择"></a>3.3、版本选择</h5><hr><blockquote><p>这里有很多不同版本的微PE工具箱，下载微PE工具箱V2.0 64位点击下载再打开的新页面中,点击**<code>查看2.0版本下载地址列表</code>**</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204180649320.png"></p><blockquote><p>点击**<code>我已捐赠，继续查看下载地址</code>**</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204185041364.png"></p><h5 id="3-4、选择下载方式"><a href="#3-4、选择下载方式" class="headerlink" title="3.4、选择下载方式"></a>3.4、选择下载方式</h5><hr><blockquote><p>点击**<code>PC6下载</code>**</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204184417415.png"></p><blockquote><p>点击**<code>PC6下载</code>**</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204183730154.png"></p><blockquote><p>选择自己的网络自行下载</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204183439402.png"></p><h5 id="3-5、下载微PE安装包"><a href="#3-5、下载微PE安装包" class="headerlink" title="3.5、下载微PE安装包"></a>3.5、下载微PE安装包</h5><hr><blockquote><p>普通下载将微PE的安装包下载到电脑内</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204185922159.png"></p><blockquote><p>下载后，点击等待安装</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204190016109.png"></p><h5 id="3-6、插入U盘"><a href="#3-6、插入U盘" class="headerlink" title="3.6、插入U盘"></a>3.6、插入U盘</h5><hr><blockquote><p>将U盘插入到这台电脑上，最好接到主板后面的USB接口上，笔记本的话就随意找一个USB就可以。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204190326099.png"></p><blockquote><p>插好U盘后，打开刚才下载好的微PE安装包</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204190150577.png"></p><h5 id="3-7、把PE工具箱安装到U盘"><a href="#3-7、把PE工具箱安装到U盘" class="headerlink" title="3.7、把PE工具箱安装到U盘"></a>3.7、把PE工具箱安装到U盘</h5><hr><blockquote><p>在安装的右下角有一个USB形状的图标，这个就是把PE安装进U盘，选择它。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204190909634.png"></p><blockquote><p>U盘卷标可以修改自己喜欢的名字</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204191118270.png"></p><blockquote><p>把下面两个勾选上，然后点击立即安装进U盘</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204191303959.png"></p><h5 id="3-8、准备空U盘"><a href="#3-8、准备空U盘" class="headerlink" title="3.8、准备空U盘"></a>3.8、准备空U盘</h5><blockquote><p><strong>注意</strong>：**<code>强调一下</code>**，制作PE以后会把U盘内的数据全部清空，如果你用的不是空U盘，而且U盘里面包含重要的文件，切记务必提前拷贝出来，点击开始制作就会自动进行PE的安装了。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204191425704.png"></p><blockquote><p>这里大概会花费3-10分钟，请耐心等待。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204191711586.png"></p><blockquote><p>最后点击完成安装PE就已经成功的安装进U盘内了</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204192024294.png"></p><h5 id="3-9、检查"><a href="#3-9、检查" class="headerlink" title="3.9、检查"></a>3.9、检查</h5><hr><blockquote><p>这是打开你的电脑，你就发现你的U盘被分割成了两个分区，其中一个为EFI分区，这个分区就是PE本身所在的分区不要动里面的文件也不要往里面放东西，另外一个分区就是一个空白分区，这个空白分区你可以拿来当普通U盘使用了。有的时候EFI分区会被自动隐藏，你只看见一个空白分区，这个也是正常的现象。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204192237552.png"></p><h4 id="四、下载win10的安装包"><a href="#四、下载win10的安装包" class="headerlink" title="四、下载win10的安装包"></a>四、下载win10的安装包</h4><h4 id="方法一：MSDM"><a href="#方法一：MSDM" class="headerlink" title="方法一：MSDM"></a>方法一：MSDM</h4><hr><h5 id="4-1、下载ISO镜像"><a href="#4-1、下载ISO镜像" class="headerlink" title="4.1、下载ISO镜像"></a>4.1、下载ISO镜像</h5><hr><p>百度搜索<strong>“<code>MSDM我告诉你</code>”</strong>，这里可以下载到微软官方的纯净版ISO镜像文件，而且版本和更新补丁包非常的详细，接下来教大家如何去MSDM下载系统。</p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204193029410.png"></p><h5 id="4-2、选择-操作系统"><a href="#4-2、选择-操作系统" class="headerlink" title="4.2、选择**操作系统**"></a>4.2、选择**<code>操作系统</code>**</h5><hr><p><strong>下面以Win10 1909版本为例实行操作。</strong></p><blockquote><p>选择**<code>操作系统</code>**</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204193123494.png"></p><blockquote><p>右键复制ed2k链接</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204211344842.png"></p><h5 id="4-3、选择下载方式"><a href="#4-3、选择下载方式" class="headerlink" title="4.3、选择下载方式"></a>4.3、选择下载方式</h5><hr><blockquote><p>可选择迅雷，或者其它方式，次用迅雷为演示，打开迅雷界面的左上角，我们点击新建任务，迅雷会自动识别你的剪切板内的ed2K链接，点击立即下载就可以。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204212137615.png"></p><blockquote><p>点击”<strong><code>立即下载</code></strong>“</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204212241347.png"></p><blockquote><p>耐心等待即可</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204212315176.png"></p><h5 id="4-4、检查"><a href="#4-4、检查" class="headerlink" title="4.4、检查"></a>4.4、检查</h5><hr><blockquote><p>查看文件类型为iso</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20210225183615421.png" alt="image-20210225183615421"></p><ul><li>注意：如不想装win10,想安装win7或者更老的VISIA或者是XP系统，那你只需要在MSDN的操作系统界面选择你要下载的就可以了，下载的过程和Win10 1909是一模一样的。</li></ul><h5 id="4-5、黏贴"><a href="#4-5、黏贴" class="headerlink" title="4.5、黏贴"></a>4.5、黏贴</h5><hr><blockquote><p>把刚下载的iso镜像文件黏贴到做好PE的U盘内的空白分区中</p></blockquote><h4 id="方法二：微软官网下载ISO镜像"><a href="#方法二：微软官网下载ISO镜像" class="headerlink" title="方法二：微软官网下载ISO镜像"></a>方法二：微软官网下载ISO镜像</h4><hr><h5 id="4-1、微软官方下载win10"><a href="#4-1、微软官方下载win10" class="headerlink" title="4.1、微软官方下载win10"></a>4.1、微软官方下载win10</h5><hr><blockquote><p>接下来下载win10的安装包，微软官网的启动盘制作工具下载,百度搜索**<code>微软官方下载win10</code>**</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204203343616.png"></p><blockquote><p>下载完成后点击它安装</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204210051892.png"></p><blockquote><p>等待一会</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204204625540.png"></p><h5 id="4-2、接受条款"><a href="#4-2、接受条款" class="headerlink" title="4.2、接受条款"></a>4.2、接受条款</h5><hr><blockquote><p>微软声明和许可条款点击“接受”</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204204537417.png"></p><blockquote><p>稍等片刻</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204204625540.png"></p><blockquote><p>勾选“为另一台电脑创建安装介质”</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204204759855.png"></p><blockquote><p>不勾选“对这台电脑使用推荐的选项”</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204204900327.png"></p><h5 id="方法一"><a href="#方法一" class="headerlink" title="方法一"></a>方法一</h5><hr><h5 id="4-3、点击下载ISO镜像文件"><a href="#4-3、点击下载ISO镜像文件" class="headerlink" title="4.3、点击下载ISO镜像文件"></a>4.3、点击下载ISO镜像文件</h5><hr><blockquote><p>不要直接把它写入到U盘内，点击下载ISO镜像文件</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205102713112.png"></p><h5 id="4-4、选择下载路径"><a href="#4-4、选择下载路径" class="headerlink" title="4.4、选择下载路径"></a>4.4、选择下载路径</h5><hr><blockquote><p>选择下载路径，待会下载完成就会在下载路径得到一个win10的安装包了。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205103038111.png"></p><blockquote><p>等待安装,时间蛮长的大概10+分钟，耐心等待即可。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205103243385.png"></p><blockquote><p>下载完成</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205120130176.png"></p><blockquote><p>查看属性</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205122529108.png" alt="img"></p><blockquote><p>查看文件</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205123755938.png"></p><h5 id="4-5、拽到自己的U盘–-gt-微PE工具箱"><a href="#4-5、拽到自己的U盘–-gt-微PE工具箱" class="headerlink" title="4.5、拽到自己的U盘–>微PE工具箱"></a>4.5、拽到自己的U盘–&gt;微PE工具箱</h5><hr><blockquote><p>把它拖拽到自己的U盘–&gt;空白分区盘（微PE工具箱）即可</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205123924056.png"></p><blockquote><p>等待黏贴即可，即将大功告成！</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205124348293.png"></p><h5 id="方法二"><a href="#方法二" class="headerlink" title="方法二"></a>方法二</h5><hr><h5 id="4-3、点击U盘"><a href="#4-3、点击U盘" class="headerlink" title="4.3、点击U盘"></a>4.3、点击U盘</h5><hr><blockquote><p>选择的介质</p></blockquote><ul><li><p>U盘的话就是直接把安装程序写进U盘内</p></li><li><p>ISO文件就只是单纯的把安装包下载到电脑上</p></li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204205215323.png"></p><blockquote><p>选择你要安装的U盘,选定后点击下一步，等待一下</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205113032228.png"></p><h5 id="4-4、win10启动盘制作工具"><a href="#4-4、win10启动盘制作工具" class="headerlink" title="4.4、win10启动盘制作工具"></a>4.4、win10启动盘制作工具</h5><hr><blockquote><p>接下来win10启动盘制作工具，会自动将你的U盘格式化为FAT32格式，并开始下载安装包，请耐心等待下载完成，下载完成后，win10启动盘制作工具，会开始将安装包写入进U盘内再等待一会即可。</p></blockquote><ul><li>注意：我们的U盘内被零零散散的装了一堆win10的安装文件，可创建一个文件夹把它们装在一个文件夹里，到时安装系统时，再把它们放在U盘的<strong>根目录</strong>下，安装成功后再把它们放回去文件夹里，所以每次装系统你得把它们挪出来，装好系统后再把它们放回去。</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201204205832234.png"></p><h4 id="五、重装系统"><a href="#五、重装系统" class="headerlink" title="五、重装系统"></a>五、重装系统</h4><ul><li>接下来拔下制好启动盘的U盘，把它插到带安装系统的电脑上</li><li>注意：台式机请务必插到主板后面的USB接口上，不要接到机箱的前面板或者延长线，还有笔记本的话，随意找一个借口就可以，然后按下开机按钮后不断的按键盘上的**<code>del</code><strong>按键，直至屏幕上显示主板BIOS的画面，笔记本进BIOS的按键可能和台式机有些不一样，有的按</strong><code>F2</code><strong>,有的按</strong><code>F10</code><strong>也有的按</strong><code>F12</code>**，具体进入BIOS的按钮，请自行查阅笔记本的官网。</li></ul><p>修改启动项PE本身也是支持UEFI加Legacy双模式启动项的</p><ul><li>UEFI对应GPT </li><li>Legacy对应MBR</li></ul><blockquote><p>由于本人没有重装系统的照片，去b站找了以华硕品牌电脑为例效果图展示给大家。</p></blockquote><h5 id="5-1、成功进入BIOS画面"><a href="#5-1、成功进入BIOS画面" class="headerlink" title="5.1、成功进入BIOS画面"></a>5.1、成功进入BIOS画面</h5><hr><blockquote><p>按下开机按钮后不断的按键盘上的**<code>del</code>**按键，直至屏幕上显示主板BIOS的画面。</p></blockquote><blockquote><p>其实每台电脑的操作系统都大同小异的，要学会随机应变。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205004011549.png"></p><blockquote><p>把UEFI拖拽到第一位置</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205004117296.png"></p><h5 id="5-2、保存并重启"><a href="#5-2、保存并重启" class="headerlink" title="5.2、保存并重启"></a>5.2、保存并重启</h5><hr><blockquote><p>按中下角位置的**<code>F10</code>**,直接保存并重启。注意：每台电脑可能不一样，具体看提示。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205004243416.png"></p><blockquote><p>确定保存</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205004450335.png"></p><blockquote><p>或者按**<code>F7</code>**进入启动项修改UEFI</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205004542249.png"></p><blockquote><p>选择Boot,选择UEFI</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205004730078.png"></p><blockquote><p>点击保存，并重启电脑即可。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205004801061.png"></p><blockquote><p>出现这个页面，不要按DEL按键，再按得话，还会进入BIOS内，直接撒手不管</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205004841090.png"></p><h5 id="5-3、进入winPE的桌面"><a href="#5-3、进入winPE的桌面" class="headerlink" title="5.3、进入winPE的桌面"></a>5.3、进入winPE的桌面</h5><hr><blockquote><p>由于你的第一启动项刚才更改了U盘，而U盘内有PE便携式操作系统，所以你会自动进入winPE的桌面</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005258284.png"></p><blockquote><p>打开我的电脑</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005442105.png"></p><h5 id="5-4、安装WIN10过程"><a href="#5-4、安装WIN10过程" class="headerlink" title="5.4、安装WIN10过程"></a>5.4、安装WIN10过程</h5><hr><blockquote><p>找到U盘的WIN10安装包</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005505604.png"></p><blockquote><p>右键“装卸”</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005527068.png"></p><blockquote><p>打开SET UP安装程序</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005551718.png"></p><blockquote><p>选择语言</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005620656.png"></p><blockquote><p>点击”确定”</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005732437.png"></p><blockquote><p>等待</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005833635.png"></p><blockquote><p>安装成功后怕主板犯傻，还是建议10秒内拔U盘。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205005859829.png"></p><blockquote><p>拔掉之后不要动你的电脑、不要开关、不要重启、也不要断电，耐心等待即可。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010024961.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010123092.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010145244.png"></p><blockquote><p>进入win10初始化的主页面，后面的都是下一步或者跳过。</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010203300.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010232715.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010306972.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010332330.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010403702.png"></p><blockquote><p>因为出现中文可能会在某些软件里出现BUG</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010508156.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010602510.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010633364.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010656320.png"></p><blockquote><p>显示电脑和控制面板</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010915415.png"></p><blockquote><p>右键电脑桌面</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010934955.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205011026174.png"></p><blockquote><p>选择“桌面图标设置”</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205011139236.png"></p><blockquote><p>勾选“计算机”和“控制面板”</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205010830746.png"></p><blockquote><p>成功</p></blockquote><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205011224134.png"></p><h4 id="六、驱动"><a href="#六、驱动" class="headerlink" title="六、驱动"></a>六、驱动</h4><blockquote><p>什么是驱动程序，看以下图片你会一目了然</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205173022649.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205173109283.png"></p><h5 id="目前安装驱动的方法有三个"><a href="#目前安装驱动的方法有三个" class="headerlink" title="目前安装驱动的方法有三个"></a>目前安装驱动的方法有三个</h5><hr><h5 id="方法一：系统自动安装驱动"><a href="#方法一：系统自动安装驱动" class="headerlink" title="方法一：系统自动安装驱动"></a>方法一：系统自动安装驱动</h5><hr><blockquote><p>让WIN10联网后自动帮你安装，这个仅限于win10,win7和XP是不行的，在你第一次开机以后，win10如果检测到你的电脑是联网的状态，而且集成的网卡驱动可以正常驱使网卡联网，那win10就会自动帮你开始下载安装驱动，所以你只需要把电脑丢在那放半小时或者一小时，它就自动帮你把所有的驱动全部安装好。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205174220882.png"></p><blockquote><p>但是这个方法有很多问题，第一个问题就是它只会帮你补齐必备硬件的驱动，其它驱动不会帮你装，还有你自己加的附属配件都不会帮你装。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205174249498.png"></p><blockquote><p>第二个问题是它的型号识别不一定有那么准，很多的硬件驱动，同一系列的产品驱动是通用的，但针对不同型号有专有的优化，A型号可以用A驱动也可以用B驱动，但A驱动是它的专属，有针对它们的专门优化，如果win10不小心给你装上了B驱动你确实可以用，但性能不一定是最大化。然后它还有个比较大的问题，就是驱动版本不是最新的，给你装的确实版本太老了，所以放在那让win10自动安装这个方法，我个人不推荐。</p></blockquote><h5 id="方法二：使用第三方软件安装"><a href="#方法二：使用第三方软件安装" class="headerlink" title="方法二：使用第三方软件安装"></a>方法二：使用第三方软件安装</h5><hr><blockquote><p>使用第三方软件去帮你安装，比如：<strong>驱动精灵、驱动人生、鲁大师、360</strong>等等第三方软件，这些软件都可以一键帮你安装驱动。它的好处是驱动版本肯定是最新的，如果驱动软件不及时更新，基本没什么人用了，但是它依旧和win自带的那个方法存在同样的问题，就是型号识别不是百分百准确的。此方法有一个致命的就是携带流氓捆绑，会给你安装一堆得软件广告。</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205194338916.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205195131041.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205195158270.png"></p><h5 id="方法三：官网找驱动"><a href="#方法三：官网找驱动" class="headerlink" title="方法三：官网找驱动"></a>方法三：官网找驱动</h5><hr><blockquote><p>自己去手动找驱动自己装，由于驱动程序是硬件厂商从官网提供给你的，版本肯定是最新的，这个麻烦就是要自己去找型号进行下载，型号肯定是百分百对得上的，最后驱动来自官方，也不用担心流氓捆绑软件，也不用担心驱动是不是纯净版的，所以强烈推荐这种方式安装驱动。</p></blockquote><p><strong>根据自己的核显驱动型号请自行到官网下载</strong></p><hr><blockquote><p>英伟达显卡驱动</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205192132203.png"></p><blockquote><p>AMD官网</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205192349519.png"></p><blockquote><p>Intel官网</p></blockquote><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201205193649578.png"></p><blockquote><p>驱动下载完成后一般都是双击或者解压后即可安装，安装步骤简单，认真操作即可。</p></blockquote><h4 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h4><hr><blockquote><p>这篇文章包括安装电脑的整个流程，其中分为三个步骤，<strong>装机</strong>，<strong>装系统</strong>，<strong>装驱动</strong>。</p></blockquote>]]></content>
    
    
    <summary type="html">&lt;h4 id=&quot;一、如何使用PE辅助进行安装&quot;&gt;&lt;a href=&quot;#一、如何使用PE辅助进行安装&quot; class=&quot;headerlink&quot; title=&quot;一、如何使用PE辅助进行安装&quot;&gt;&lt;/a&gt;一、如何使用PE辅助进行安装&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;为什么要用PE，官方IOS虽然简单方便，步骤少，但是相应的功能也是最少的，除了装系统给磁盘格式化分区之外，什么功能都没有，况且U盘的三种格式的方法也比较僵硬，NTFS和exFAT在某些主板上不能启动，而FA32是不支持32G以上的单个硬盘分区，且不允许存放单个文件体积大于4G的文件，所以这就衍生出来了另一种安装方法，使用PE便携式操作系统辅助进行安装。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="网络" scheme="https://nate-lin.github.io/categories/%E7%BD%91%E7%BB%9C/"/>
    
    
    <category term="重装系统" scheme="https://nate-lin.github.io/tags/%E9%87%8D%E8%A3%85%E7%B3%BB%E7%BB%9F/"/>
    
  </entry>
  
  <entry>
    <title>英语四级资料</title>
    <link href="https://nate-lin.github.io/2020/12/03/ying-yu-si-ji-zi-liao/"/>
    <id>https://nate-lin.github.io/2020/12/03/ying-yu-si-ji-zi-liao/</id>
    <published>2020-12-03T14:07:09.000Z</published>
    <updated>2021-02-07T15:20:02.117Z</updated>
    
    <content type="html"><![CDATA[<h3 id="英语四级资料及技巧"><a href="#英语四级资料及技巧" class="headerlink" title="英语四级资料及技巧"></a>英语四级资料及技巧</h3><hr><h4 id="2019-年-6-月-英语四级讲义及备考技巧"><a href="#2019-年-6-月-英语四级讲义及备考技巧" class="headerlink" title="2019 年 6 月 英语四级讲义及备考技巧"></a>2019 年 6 月 英语四级讲义及备考技巧</h4><a id="more"></a> <div class="row">    <embed src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/%E5%9B%9B%E7%BA%A7%E4%BF%9D%E5%91%BD%E7%8F%AD%E8%AE%B2%E4%B9%89.pdf" width="100%" height="550" type="application/pdf"></div>  <h3 id="一、写作"><a href="#一、写作" class="headerlink" title="一、写作"></a>一、写作</h3><p>①14 6 四级</p><p>Suppose a foreign friend of yours is going to visit your hometown/your campus/China （多题多卷的三个不同）, what is the most interesting place you would like to take him/her to see and why? </p><p>②13.12 父亲和男孩子的对话，孩子说“ Dad，I am a bit worried about disposing of nuclear </p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/clip_image002.jpg"></p><p>weapon. 父亲则回答“ If you can empty the dustbin, you can do anything. 说话间，</p><p>手指着垃圾桶。 </p><p>③ </p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/clip_image004.jpg"></p><p>④2013 6 </p><p>Directions: For this part, you are allowed 30 minutes to write an essay commenting on the remark “A smile is the shortest distance between two people”. You may cite some examples to support your view. You should write at least 150 words but no more than </p><p>200 words. </p><p>⑤2014 6 </p><p>不要以貌取人不要把鸡蛋都放在一个篮子里不要草率写决定 </p><h4 id="常见土单词排行榜："><a href="#常见土单词排行榜：" class="headerlink" title="常见土单词排行榜："></a>常见土单词排行榜：</h4><p>1）think    have been convinced that    be of the opinion that    cling to the perspective that    maintain  contend  assert      argue  assume  claim </p><ol start="2"><li>many   a sea of   multitudes of   immense amounts of numerous  innumerable  plentiful </li></ol><ol start="3"><li>people we us private individuals youngsters and teenagers all children and adults experts and professors parents  kids  offspring businessman   youngsters on campus </li></ol><ol start="4"><li>very   exceedingly   distinctly       strikingly   more than     extraordinarily   outstandingly </li></ol><ol start="5"><li>important   significant   crucial    critical   indispensable   play a crucial role in sth. </li></ol><p>6） And </p><p>similarly equally likewise at the same time in the meanwhile </p><h4 id="写作中可用的万能句型："><a href="#写作中可用的万能句型：" class="headerlink" title="写作中可用的万能句型："></a>写作中可用的万能句型：</h4><p>1、主语从句：</p><hr><p>It proves self-evident that It has been found that </p><p>It seems beyond dispute that </p><p>It seems universally acknowledged that </p><p>It has been widely accepted that It becomes generally agreed that it keeps my argument that </p><p>2、定语从句他是一个色狼，是显而易见的。</p><hr><p>He is a lady killer, a which is really beyond dispute. b which has been widely accepted. </p><p>c which has provoked the public’s widespread concern.</p><p>3、万能状语 </p><hr><ol><li><p>as every one can see  </p></li><li><p>with the rapid advance of science and technology </p></li><li><p>in our contemporary society </p></li><li><p>in the general routine of everyday living </p></li></ol><p>4、插入语 </p><hr><p>to be frank needless to say in my judgment from my perspective </p><p>to tell the truth as a matter of fact </p><p>5、强调句型 </p><hr><p>It is … that… </p><p>I met a crazy dog in the street yesterday. </p><h4 id="段落写长的原则："><a href="#段落写长的原则：" class="headerlink" title="段落写长的原则："></a>段落写长的原则：</h4><h4 id=""><a href="#" class="headerlink" title=""></a></h4><p>1）句子扩写： </p><hr><p>【定语】</p><hr><p>①Keeping pets can reduce loneliness; </p><p>Keeping pets which look pretty cute and lovely can reduce loneliness of the old citizens having no children to take care of them. </p><p>②I would like to recommend you a place which is quite popular with visitors from China and other nations.  </p><p>【同位语】 </p><hr><p>​    ①I love you.</p><p>I, a university student from Beijing, love you, the most graceful and elegant English teacher I have ever seen. </p><p>​    ②Smile makes people love you. </p><p>Smile, the best means for communicating, makes people who may look serious and distant love you, a university student who is about to graduate from school. </p><p>​    ①Pollution keeps exceedingly serious for years. </p><p>Pollution, a global issue which threatens almost every one, keeps exceedingly serious for years. </p><p>【状语】何为状语？ </p><hr><p>​    ①We are having class. </p><p>​    ②Keeping pets can cultivate the love heart of children although they sometimes bring much trouble for their owners. </p><p>or because taking care of those little animals needs patience and care. </p><p>or when there exists only a child in one family. </p><p>or by taking a shower or talking with those little animals.  </p><p>​    ③They are singing songs. </p><p>Although they have had class for the whole day, they, a group of young men, </p><p>who will take part in the examination of CET 4 are singing songs, </p><p>Two Butterflies and Little Swallow  which were once popular when we were young. </p><h4 id="谚语警句类"><a href="#谚语警句类" class="headerlink" title="谚语警句类"></a>谚语警句类</h4><hr><h5 id="第一段引出主题-解释你对这句话的理解"><a href="#第一段引出主题-解释你对这句话的理解" class="headerlink" title="第一段引出主题+ 解释你对这句话的理解"></a><strong>第一段引出主题+</strong> <strong>解释你对这句话的理解</strong></h5><p>第一句 </p><hr><ol><li><p>Nowadays, there remains an increasing interest in the topic about…; </p></li><li><p>Recently the issue of…has been in the limelight / brought into focus; </p></li><li><p>What is your idea as to the topic about…? It is my belief that …; 4. It looks beyond dispute that the issue about … has caused wide public attention. </p></li></ol><p>第二、三句：解释这句话的意思 </p><hr><p>the meaning of the saying seems that … </p><p>比如：不要草率做决定 </p><p>It seems that if you hope to do something successfully, please think it carefully. </p><p>That is to say, it is foolish to decide it quickly. </p><h5 id="第二段举例"><a href="#第二段举例" class="headerlink" title="第二段举例"></a>第二段举例</h5><p>A    Although so abundant cases can support my simple view, the following one is most favorable. </p><p>B    Examples to prove the view are abundant. The most persuasive one is the case of sb. </p><p>Such impressive cases/stories are not rare in our daily life, yet the following one is definitely typical. </p><h5 id="第三段总结段"><a href="#第三段总结段" class="headerlink" title="第三段总结段"></a>第三段总结段</h5><p>第一句 </p><hr><ol><li><p>Under no circumstances can we fail to pour attention into the importance </p><p>seriousness of the fact that </p></li><li><p>It is really high time that due attention cannot have failed to paid to the issue. </p></li><li><p>So crucial/grave is sth that it should have caused our attention. </p></li><li><p>It is the fact of sth that really has a great influence on our study and life. </p></li></ol><p>第二、三句话具体措施 </p><hr><p>for one thing / for another; on one hand / on the other hand; </p><p>Eg. Write an essay on happiness by referring to the saying “Happiness is not the absence of problems, but the ability to deal with them.” You can cite examples to illustrate your points and then explain how you can develop your ability to deal with problem and be happy.  </p><p>措施一父母采取措施 </p><hr><p>Parents are supposed to spend more time educating their kids to do sth Eg. to be happy facing difficulties. </p><p>to put eggs in different baskets. </p><p>措施二 </p><hr><p>Awareness about sth could be cultivated to make ourselves lead a healthy and favorable life. </p><p>最后一句：喊口号！ </p><hr><ol><li><p>Only by taking these action can people have a more brilliant and glorious future. </p></li><li><p>So shouldn’t human beings pay much attention to the meaningful saying/problem?</p></li><li><p>So under no account could people divert attention from the issue of sth. </p></li><li><p>The more actively people face the issue, the more happily they will lead their life. </p></li></ol>]]></content>
    
    
    <summary type="html">&lt;h3 id=&quot;英语四级资料及技巧&quot;&gt;&lt;a href=&quot;#英语四级资料及技巧&quot; class=&quot;headerlink&quot; title=&quot;英语四级资料及技巧&quot;&gt;&lt;/a&gt;英语四级资料及技巧&lt;/h3&gt;&lt;hr&gt;
&lt;h4 id=&quot;2019-年-6-月-英语四级讲义及备考技巧&quot;&gt;&lt;a href=&quot;#2019-年-6-月-英语四级讲义及备考技巧&quot; class=&quot;headerlink&quot; title=&quot;2019 年 6 月 英语四级讲义及备考技巧&quot;&gt;&lt;/a&gt;2019 年 6 月 英语四级讲义及备考技巧&lt;/h4&gt;</summary>
    
    
    
    <category term="英语四级" scheme="https://nate-lin.github.io/categories/%E8%8B%B1%E8%AF%AD%E5%9B%9B%E7%BA%A7/"/>
    
    
    <category term="英语" scheme="https://nate-lin.github.io/tags/%E8%8B%B1%E8%AF%AD/"/>
    
  </entry>
  
  <entry>
    <title>Hexo右上角Github图标</title>
    <link href="https://nate-lin.github.io/2020/12/03/hexo-you-shang-jiao-github-tu-biao/"/>
    <id>https://nate-lin.github.io/2020/12/03/hexo-you-shang-jiao-github-tu-biao/</id>
    <published>2020-12-02T23:59:03.000Z</published>
    <updated>2021-02-07T15:22:59.784Z</updated>
    
    <content type="html"><![CDATA[<h4 id="右上角Github图标"><a href="#右上角Github图标" class="headerlink" title="右上角Github图标"></a>右上角Github图标</h4><hr><p><strong>对于这个<code>Github图标</code>文件具体加在哪里，要根据自己的主题，添加到适应的位置。</strong></p><p>比如我的是hexo-theme-yilia主题，我添加在hexo-theme-yilia/layout/layout.ejs文件的<code>&lt;div class="mid-col" q-class="show:isShow,hide:isShow|isFalse"&gt;</code>div下</p><a id="more"></a><p>添加在layout.ejs文件</p><pre class="line-numbers language-html" data-language="html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://github.com/nat-lin<span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>github-corner<span class="token punctuation">"</span></span> <span class="token attr-name">aria-label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>View source on GitHub<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>svg</span> <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span>         <span class="token attr-name">height</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span>         <span class="token attr-name">viewBox</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0 0 250 250<span class="token punctuation">"</span></span><span class="token style-attr language-css"><span class="token attr-name">         <span class="token attr-name">style</span></span><span class="token punctuation">="</span><span class="token attr-value"><span class="token property">fill</span><span class="token punctuation">:</span>#151513<span class="token punctuation">;</span> <span class="token property">color</span><span class="token punctuation">:</span>#fff<span class="token punctuation">;</span> <span class="token property">position</span><span class="token punctuation">:</span> absolute<span class="token punctuation">;</span> <span class="token property">top</span><span class="token punctuation">:</span> 0<span class="token punctuation">;</span> <span class="token property">border</span><span class="token punctuation">:</span> 0<span class="token punctuation">;</span> <span class="token property">right</span><span class="token punctuation">:</span> 0<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span>         <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>path</span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2<span class="token punctuation">"</span></span> <span class="token attr-name">fill</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>currentColor<span class="token punctuation">"</span></span><span class="token style-attr language-css"><span class="token attr-name"> <span class="token attr-name">style</span></span><span class="token punctuation">="</span><span class="token attr-value"><span class="token property">transform-origin</span><span class="token punctuation">:</span> 130px 106px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>octo-arm<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>path</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z<span class="token punctuation">"</span></span>                                                                                                                                                                                                                                                                                                    <span class="token attr-name">fill</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>currentColor<span class="token punctuation">"</span></span>                                                                                                                                                                                                                                                                                                    <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>octo-body<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>path</span><span class="token punctuation">&gt;</span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>svg</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>style</span><span class="token punctuation">&gt;</span></span><span class="token style"><span class="token language-css"><span class="token selector">.github-corner:hover .octo-arm</span><span class="token punctuation">{</span><span class="token property">animation</span><span class="token punctuation">:</span>octocat-wave 560ms ease-in-out<span class="token punctuation">}</span><span class="token atrule"><span class="token rule">@keyframes</span> octocat-wave</span><span class="token punctuation">{</span><span class="token selector">0%,100%</span><span class="token punctuation">{</span><span class="token property">transform</span><span class="token punctuation">:</span><span class="token function">rotate</span><span class="token punctuation">(</span>0<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token selector">20%,60%</span><span class="token punctuation">{</span><span class="token property">transform</span><span class="token punctuation">:</span><span class="token function">rotate</span><span class="token punctuation">(</span>-25deg<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token selector">40%,80%</span><span class="token punctuation">{</span><span class="token property">transform</span><span class="token punctuation">:</span><span class="token function">rotate</span><span class="token punctuation">(</span>10deg<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token atrule"><span class="token rule">@media</span> <span class="token punctuation">(</span><span class="token property">max-width</span><span class="token punctuation">:</span>500px<span class="token punctuation">)</span></span><span class="token punctuation">{</span><span class="token selector">.github-corner:hover .octo-arm</span><span class="token punctuation">{</span><span class="token property">animation</span><span class="token punctuation">:</span>none<span class="token punctuation">}</span><span class="token selector">.github-corner .octo-arm</span><span class="token punctuation">{</span><span class="token property">animation</span><span class="token punctuation">:</span>octocat-wave 560ms ease-in-out<span class="token punctuation">}</span><span class="token punctuation">}</span></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>style</span><span class="token punctuation">&gt;</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p><strong>代码存放位置</strong></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201203081354193.png"></p><p><strong>显示效果如下</strong></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201203081742013.png"></p>]]></content>
    
    
    <summary type="html">&lt;h4 id=&quot;右上角Github图标&quot;&gt;&lt;a href=&quot;#右上角Github图标&quot; class=&quot;headerlink&quot; title=&quot;右上角Github图标&quot;&gt;&lt;/a&gt;右上角Github图标&lt;/h4&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;对于这个&lt;code&gt;Github图标&lt;/code&gt;文件具体加在哪里，要根据自己的主题，添加到适应的位置。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比如我的是hexo-theme-yilia主题，我添加在hexo-theme-yilia/layout/layout.ejs文件的&lt;code&gt;&amp;lt;div class=&quot;mid-col&quot; q-class=&quot;show:isShow,hide:isShow|isFalse&quot;&amp;gt;&lt;/code&gt;div下&lt;/p&gt;</summary>
    
    
    
    <category term="HEXO" scheme="https://nate-lin.github.io/categories/HEXO/"/>
    
    
    <category term="个人博客" scheme="https://nate-lin.github.io/tags/%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/"/>
    
  </entry>
  
  <entry>
    <title>IDEA 2020.1.2 安装教程附破解教程详解</title>
    <link href="https://nate-lin.github.io/2020/11/28/idea-2020.1.2-an-zhuang-jiao-cheng-fu-po-jie-jiao-cheng-xiang-jie/"/>
    <id>https://nate-lin.github.io/2020/11/28/idea-2020.1.2-an-zhuang-jiao-cheng-fu-po-jie-jiao-cheng-xiang-jie/</id>
    <published>2020-11-28T08:21:35.000Z</published>
    <updated>2021-02-07T15:23:43.893Z</updated>
    
    <content type="html"><![CDATA[<h4 id="IDEA-2020-1-2-安装-破解"><a href="#IDEA-2020-1-2-安装-破解" class="headerlink" title="IDEA 2020.1.2 安装+破解"></a>IDEA 2020.1.2 安装+破解</h4><p>链接：<a href="https://pan.baidu.com/s/1X1XNL6dqFES_fFN0SrRjDg">https://pan.baidu.com/s/1X1XNL6dqFES_fFN0SrRjDg</a><br>提取码：k7io </p><h4 id="1：IDEA安装教程"><a href="#1：IDEA安装教程" class="headerlink" title="1：IDEA安装教程"></a>1：IDEA安装教程</h4><ul><li>1.1、开始安装Idea，点击next</li></ul><a id="more"></a><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128151445392.png"></p><ul><li>1.2、点击Browse选择好安装文件夹，点击next</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128151644621.png"></p><ul><li>1.3、根据电脑选择几位，我的电脑是64位选择64bit，Update PATH variable：是否将IDEA启动目录添加到环境变量中，即可以从cmd命令行中启动IDEA，根据需要勾选</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128151754750.png"></p><ul><li>1.4、点击Install即可，开始安装</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128151821498.png"></p><ul><li>1.5、等待安装</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128151900690.png"></p><ul><li>1.6、安装完成</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128152311891.png"></p><ul><li>1.7、安装完成后，打开页面</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128152517009.png"></p><ul><li>1.8、查看页面</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128155604070.png"></p><ul><li>1.9、显示如下页面表示没有激活</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128153432593.png"></p><ul><li>1.10、发现只有15天的试用期</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128160101193.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128153410284.png"></p><h4 id="2-破解教程"><a href="#2-破解教程" class="headerlink" title="2.破解教程"></a>2.破解教程</h4><ul><li>2.1进入启动页，把jetbrains-agent.jar拖入到启动页</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128160556753.png"></p><ul><li>2.2、jetbrains-agent.jar拖入到启动页的效果图</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128160421270.png"></p><p><img src="http://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/a31e72dbdf53c5044cc345713b3267e.png"></p><ul><li>2.3、按照这个路径查看是否激活成功</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128155604070.png"></p><ul><li>2.4、显示如下效果证明激活成功。</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128155413902.png"></p><ul><li>2.5、按照这个路径查看是否激活成功</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128160101193.png"></p><ul><li>2.6、显示2089年过期，证明激活成功。</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201128155632474.png"></p>]]></content>
    
    
    <summary type="html">&lt;h4 id=&quot;IDEA-2020-1-2-安装-破解&quot;&gt;&lt;a href=&quot;#IDEA-2020-1-2-安装-破解&quot; class=&quot;headerlink&quot; title=&quot;IDEA 2020.1.2 安装+破解&quot;&gt;&lt;/a&gt;IDEA 2020.1.2 安装+破解&lt;/h4&gt;&lt;p&gt;链接：&lt;a href=&quot;https://pan.baidu.com/s/1X1XNL6dqFES_fFN0SrRjDg&quot;&gt;https://pan.baidu.com/s/1X1XNL6dqFES_fFN0SrRjDg&lt;/a&gt;&lt;br&gt;提取码：k7io &lt;/p&gt;
&lt;h4 id=&quot;1：IDEA安装教程&quot;&gt;&lt;a href=&quot;#1：IDEA安装教程&quot; class=&quot;headerlink&quot; title=&quot;1：IDEA安装教程&quot;&gt;&lt;/a&gt;1：IDEA安装教程&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;1.1、开始安装Idea，点击next&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="笔记" scheme="https://nate-lin.github.io/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="技术笔记" scheme="https://nate-lin.github.io/tags/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Java-异常的产生过程解析</title>
    <link href="https://nate-lin.github.io/2020/11/27/java-yi-chang-de-chan-sheng-guo-cheng-jie-xi/"/>
    <id>https://nate-lin.github.io/2020/11/27/java-yi-chang-de-chan-sheng-guo-cheng-jie-xi/</id>
    <published>2020-11-27T12:48:29.000Z</published>
    <updated>2021-02-07T15:24:20.610Z</updated>
    
    <content type="html"><![CDATA[<h4 id="异常的产生过程解析"><a href="#异常的产生过程解析" class="headerlink" title="异常的产生过程解析"></a>异常的产生过程解析</h4><hr><p>首先，ele访问了数组中的3索引，但是数组是没有3索引的，这时候，JVM就会检测出程序会出现异常</p><p><strong>JVM会做两件事情：</strong></p><ul><li>1、JVM会根据异常产生的原因创建一个异常对象，这个异常对象包含了异常产生的（内容，原因，位置）。</li></ul><a id="more"></a> <p>new ArrayIndexOutOfBoundsException(“3”)</p><ul><li>2、在getElement方法中，没有异常的处理逻辑（try…catch），那么JVM就会把异常对象抛出给方法的调用者main方法来处理这个异常。<ul><li>main方法接收到了这个异常对象new ArrayIndexOutOfBoundsException(“3”)，main方法也没有异常的处理逻辑继续把对象抛出给main方法的调用者JVM来处理。</li></ul></li></ul><p><strong>JVM再一次接收到这个异常对象，做了两件事情。</strong></p><p>JVM接收到了这个异常new ArrayIndexOutOfBoundsException(“3”)</p><ul><li>1、把异常对象（内容，原因，位置）以红色的字体打印到控制台。</li><li>2、JVM会终止当前正在执行的JAVA程序–&gt;中断处理。</li></ul><p>示例</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">package</span> <span class="token namespace">com<span class="token punctuation">.</span>itheima<span class="token punctuation">.</span>demo01<span class="token punctuation">.</span></span><span class="token class-name">Exception</span><span class="token punctuation">;</span><span class="token comment">/** * @date Created by 林春燕 on 2020/11/27 20:26 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo02Exception</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token comment">//创建int类型的数组，并赋值</span>        <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">}</span><span class="token punctuation">;</span>        <span class="token keyword">int</span> e <span class="token operator">=</span> <span class="token function">getElement</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//数组越界</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>        <span class="token comment">/**         * 定义一个方法，获取数组指定索引的元素         * 参数：         *  int[] arr         *  int index         */</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">int</span> <span class="token function">getElement</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token punctuation">,</span> <span class="token keyword">int</span> index<span class="token punctuation">)</span> <span class="token punctuation">{</span>        <span class="token keyword">int</span> ele<span class="token operator">=</span>arr<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token keyword">return</span> ele<span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>运行效果图</p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201127221737252.png"></p><p>异常的产生过程解析图</p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201127221551654.png"></p>]]></content>
    
    
    <summary type="html">&lt;h4 id=&quot;异常的产生过程解析&quot;&gt;&lt;a href=&quot;#异常的产生过程解析&quot; class=&quot;headerlink&quot; title=&quot;异常的产生过程解析&quot;&gt;&lt;/a&gt;异常的产生过程解析&lt;/h4&gt;&lt;hr&gt;
&lt;p&gt;首先，ele访问了数组中的3索引，但是数组是没有3索引的，这时候，JVM就会检测出程序会出现异常&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JVM会做两件事情：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1、JVM会根据异常产生的原因创建一个异常对象，这个异常对象包含了异常产生的（内容，原因，位置）。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="基础知识" scheme="https://nate-lin.github.io/categories/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/"/>
    
    
    <category term="Java笔记" scheme="https://nate-lin.github.io/tags/Java%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Java-异常体系与分类</title>
    <link href="https://nate-lin.github.io/2020/11/26/java-yi-chang-ti-xi-yu-fen-lei/"/>
    <id>https://nate-lin.github.io/2020/11/26/java-yi-chang-ti-xi-yu-fen-lei/</id>
    <published>2020-11-26T13:42:29.000Z</published>
    <updated>2021-02-07T15:25:25.445Z</updated>
    
    <content type="html"><![CDATA[<h4 id="1-1异常概念"><a href="#1-1异常概念" class="headerlink" title="1.1异常概念"></a>1.1异常概念</h4><p>异常，就是不正常的意思。在生活中：医生说，你的身体某个部位异常，该部位和正常相比有点不同，该部位的功能将受影响，在程序中的意思是：</p><ul><li><strong>异常</strong>：指的是程序在执行过程中，出现非正常的情况，最终导致JVM的非正常停止。</li></ul><a id="more"></a><p>在java等面向对象的编程语言中，异常本身是一个类，产生异常就是创建异常对象并抛出一个异常对象。Java处理异常的方法是中断处理。</p><blockquote><p>异常指的是并不是语法错误，语法错了，编译不通过，不会产生字节码文件，根本不能运行。</p></blockquote><h4 id="1-2异常体系"><a href="#1-2异常体系" class="headerlink" title="1.2异常体系"></a>1.2异常体系</h4><p>异常体制其实是帮助我们找到程序中的问题，异常的根类是<code>java.lang.Throwable</code>,其下有两个子类：<code> java.lang.Error</code> 与<code>java.lang.Exception</code>,平常所说的异常指<code>java.lang.Exception</code>.</p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201126200634985.png"></p><p><strong>Throwable体系：</strong></p><ul><li><strong>Error</strong>:严重错误Error，无法通过处理的错误，只能事先避免，好比绝症。</li><li><strong>Exception</strong>:表示异常，异常产生后程序员可以通过代码的方法纠正，使程序继续运行，是必须要处理好的。好比感冒，阑尾炎。</li></ul><p><strong>Throwable中的常用方法：</strong></p><ul><li><p><code>public void prinStackTrace()</code>:打印异常的详细信息。</p><p>包括了异常的类型，异常的原因，还包括异常出现的位置，在开发和调试阶段，都使用<code>prinStackTrace</code>。</p></li><li><p><code>public String getMassage()</code>:获取发生异常的原因。</p><p>提示给用户的时候，就提示错误原因。</p></li><li><p><code>public String toString()</code>:获取异常的类型和异常描述信息（不用）。</p></li></ul><p><strong>出现异常，不要紧张，把异常的简单类名，拷贝到API中去查。</strong></p><h4 id="1-3异常分类"><a href="#1-3异常分类" class="headerlink" title="1.3异常分类"></a>1.3异常分类</h4><p>我们平常说的异常就是Exception,因为这异常一旦出现，我们就要对代码进行更正，修复程序。</p><p><strong>异常（Exception）的分类</strong>：根据在编译时期还是运行时期去检查异常？</p><ul><li><strong>编译时期异常</strong>：checked异常。在编译时期，就会检查，如果没有处理异常，则编译失败。（如日期格式异常）</li><li><strong>运行时期异常</strong>：runtime异常。在运行期间，检查异常，在编译时期，运行异常不会编译器检测（不报错）。（如数学异常）</li></ul><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201126203422927.png"></p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/20180920165502957.png"></p><ul><li>上图可以简单展示一下异常类实现结构图，当然上图不是所有的异常，用户自己也可以自定义异常实现。上图已经足够帮我们解释和理解异常实现了</li></ul><h5 id="编译时期异常"><a href="#编译时期异常" class="headerlink" title="编译时期异常"></a>编译时期异常</h5><p>示例</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token comment">/** * @date Created by 林春燕 on 2020/11/26 20:48 * @微信公众号 浅悦的编程时光 * @博客 https://nate-lin.gitee.io * @GitHub https://github.com/nate-lin * @Gitee https://gitee.com/nate-lin */</span><span class="token keyword">import</span> <span class="token namespace">com<span class="token punctuation">.</span>sun<span class="token punctuation">.</span>scenario<span class="token punctuation">.</span>effect<span class="token punctuation">.</span>impl<span class="token punctuation">.</span>sw<span class="token punctuation">.</span>sse<span class="token punctuation">.</span></span><span class="token class-name">SSEBlend_SRC_OUTPeer</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>text<span class="token punctuation">.</span></span><span class="token class-name">ParseException</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>text<span class="token punctuation">.</span></span><span class="token class-name">SimpleDateFormat</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Arrays</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Date</span><span class="token punctuation">;</span><span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>logging<span class="token punctuation">.</span></span><span class="token class-name">SimpleFormatter</span><span class="token punctuation">;</span><span class="token comment">/**     java.lang.Throwable:类是java语言所有错误或异常的超类。        Exception:编译期异常，进行编译（写代码）java程序出现的问题        RuntimeException:运行异常，java程序运行过程中出现的问题            异常就相当于程序得了一个小毛病（感冒，发烧），把异常处理掉。程序就可以继续执行（吃点药，继续革命工作）        Error：错误            错误就相当于程序得了一个无法治愈的毛病（非典，艾滋），必须修改源代码，程序才能继续执行 */</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01Exception</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token comment">//Exception:编译期异常，进行编译（写代码）java程序出现的问题</span>        <span class="token class-name">SimpleDateFormat</span> sdf<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">SimpleDateFormat</span><span class="token punctuation">(</span><span class="token string">"yyy-MM-dd"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//用来格式化日期</span>        <span class="token class-name">Date</span> date<span class="token operator">=</span><span class="token keyword">null</span><span class="token punctuation">;</span>        <span class="token keyword">try</span> <span class="token punctuation">{</span>            <span class="token comment">//故意将日期格式写错，验证异常</span>            date<span class="token operator">=</span>sdf<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span><span class="token string">"2020-1126"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//把字符串格式的日期，解析为Date格式的日期（年-月-日）</span>        <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">ParseException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>            e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>date<span class="token punctuation">)</span><span class="token punctuation">;</span>           <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>Exception:编译期异常–运行结果图</p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201126211411642.png"></p><h5 id="运行时期异常"><a href="#运行时期异常" class="headerlink" title="运行时期异常"></a>运行时期异常</h5><p>示例</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01Exception</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span><span class="token punctuation">{</span>              <span class="token comment">//RuntimeException:运行异常，java程序运行过程中出现的问题</span>        <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token operator">=</span><span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">}</span><span class="token punctuation">;</span>        <span class="token comment">//System.out.println(arr[0]);</span>        <span class="token keyword">try</span><span class="token punctuation">{</span>            <span class="token comment">//可能会出现异常的代码</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>arr<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span><span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span><span class="token punctuation">{</span>            <span class="token comment">//异常处理逻辑</span>            <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>RuntimeException:运行异常–运行结果图</p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201126213204525.png"></p><h5 id="Error：错误"><a href="#Error：错误" class="headerlink" title="Error：错误"></a>Error：错误</h5><p>示例</p><pre class="line-numbers language-java" data-language="java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Demo01Exception</span> <span class="token punctuation">{</span>    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span><span class="token punctuation">{</span>        <span class="token comment">//Error：错误</span>        <span class="token comment">/**         * OutOfMemoryError:java heap space         * 内存溢出的错误，创建的数组太大了，超出了给JVM分配的内存         */</span>        <span class="token comment">//必须修改代码，创建的数组小一点</span>        <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token operator">=</span><span class="token keyword">new</span> <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token number">1024</span><span class="token operator">*</span><span class="token number">1024</span><span class="token operator">*</span><span class="token number">1024</span><span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>Error：错误–运行结果图</p><p><img src="https://blog-lin1.oss-cn-shenzhen.aliyuncs.com/img/image-20201126213924375.png"></p>]]></content>
    
    
    <summary type="html">&lt;h4 id=&quot;1-1异常概念&quot;&gt;&lt;a href=&quot;#1-1异常概念&quot; class=&quot;headerlink&quot; title=&quot;1.1异常概念&quot;&gt;&lt;/a&gt;1.1异常概念&lt;/h4&gt;&lt;p&gt;异常，就是不正常的意思。在生活中：医生说，你的身体某个部位异常，该部位和正常相比有点不同，该部位的功能将受影响，在程序中的意思是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;异常&lt;/strong&gt;：指的是程序在执行过程中，出现非正常的情况，最终导致JVM的非正常停止。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="基础知识" scheme="https://nate-lin.github.io/categories/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/"/>
    
    
    <category term="Java笔记" scheme="https://nate-lin.github.io/tags/Java%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
</feed>
