<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Kevin&#39;Blog</title>
  
  <subtitle>code builds word !</subtitle>
  <link href="http://example.com/atom.xml" rel="self"/>
  
  <link href="http://example.com/"/>
  <updated>2023-07-27T08:09:19.884Z</updated>
  <id>http://example.com/</id>
  
  <author>
    <name>Kevin</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>设计模式-单例模式</title>
    <link href="http://example.com/posts/69e7b86f.html"/>
    <id>http://example.com/posts/69e7b86f.html</id>
    <published>2023-07-27T06:18:58.000Z</published>
    <updated>2023-07-27T08:09:19.884Z</updated>
    
    <content type="html"><![CDATA[<h1 id="单例模式"><a href="#单例模式" class="headerlink" title="单例模式"></a>单例模式</h1><p><code>单例-保证一个类的具体的实例在整个应用程序中只有唯一的一个</code></p><ol><li>构造私有化</li><li>提供这个类的唯一(静态)实例</li><li>提供一个公开的静态方法来返回这个实例</li></ol><h3 id="1-饿汉式"><a href="#1-饿汉式" class="headerlink" title="1. 饿汉式"></a>1. 饿汉式</h3><p><strong>单线程&#x2F;多线程场景下都是安全的</strong></p><div class="highlight-container" data-rel="Java"><figure class="iseeu highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> tech.aistar.design.Singleton.v1;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Description</span> 饿汉式单例</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Author</span>: kevin</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Date</span>: 2023-07-27</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Singleton</span> &#123;</span><br><span class="line">    <span class="comment">//提供唯一的一个实例</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="type">Singleton</span> <span class="variable">singleton</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">Singleton</span>();</span><br><span class="line"></span><br><span class="line">    <span class="comment">//1. 构造私有化</span></span><br><span class="line">    <span class="keyword">private</span> <span class="title function_">Singleton</span><span class="params">()</span> &#123;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//提供一个接口</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> Singleton <span class="title function_">getInstance</span><span class="params">()</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> singleton;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SingletonTest</span> &#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> &#123;</span><br><span class="line">        <span class="type">Singleton</span> <span class="variable">singleton</span> <span class="operator">=</span> Singleton.getInstance();</span><br><span class="line">        <span class="type">Singleton</span> <span class="variable">singleton2</span> <span class="operator">=</span> Singleton.getInstance();</span><br><span class="line">        System.out.println(singleton2 == singleton);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure></div><h3 id="2-懒汉式"><a href="#2-懒汉式" class="headerlink" title="2. 懒汉式"></a>2. 懒汉式</h3><p><strong>单线程下是ok的,多线程下是不ok的 <em>无法在多线程下保证这个实例是唯一的</em></strong></p><div class="highlight-container" data-rel="Java"><figure class="iseeu highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> tech.aistar.design.Singleton.v2;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Description</span> 懒汉式</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Author</span>: kevin</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Date</span>: 2023-07-27</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Singleton</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> Singleton singleton;</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 构造私有化</span></span><br><span class="line">    <span class="keyword">private</span> <span class="title function_">Singleton</span><span class="params">()</span> &#123;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 懒汉式,当getSingleton第一次被调用的时候才去创建实例</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> Singleton <span class="title function_">getSingleton</span><span class="params">()</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> singleton == <span class="literal">null</span> ? singleton = <span class="keyword">new</span> <span class="title class_">Singleton</span>() : singleton;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SingletonTest</span> &#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> &#123;</span><br><span class="line">        <span class="type">Singleton</span> <span class="variable">singleton</span> <span class="operator">=</span> Singleton.getSingleton();</span><br><span class="line">        <span class="type">Singleton</span> <span class="variable">singleton2</span> <span class="operator">=</span> Singleton.getSingleton();</span><br><span class="line">        System.out.println(singleton2 == singleton);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure></div><h3 id="3-剖析线程不安全"><a href="#3-剖析线程不安全" class="headerlink" title="3. 剖析线程不安全"></a>3. 剖析线程不安全</h3><div class="highlight-container" data-rel="Java"><figure class="iseeu highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> tech.aistar.design.Singleton.v2;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Description</span> 懒汉式</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Author</span>: kevin</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Date</span>: 2023-07-27</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Singleton</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> Singleton instance;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="title function_">Singleton</span><span class="params">()</span> &#123;</span><br><span class="line">        System.out.println(<span class="string">&quot;构造块&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 懒汉式,当getSingleton第一次被调用的时候才去创建实例</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span>  Singleton <span class="title function_">getInstance</span><span class="params">()</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> instance == <span class="literal">null</span> ? instance = <span class="keyword">new</span> <span class="title class_">Singleton</span>() : instance;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SingletonTest</span> &#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> &#123;</span><br><span class="line"><span class="comment">//模拟一个多线程的场景</span></span><br><span class="line">        <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; <span class="number">100</span>; i++) &#123;</span><br><span class="line">            <span class="type">Thread</span> <span class="variable">t</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">Thread</span>(() -&gt; &#123;</span><br><span class="line">                <span class="type">Singleton</span> <span class="variable">s1</span> <span class="operator">=</span> Singleton.getInstance();</span><br><span class="line">            &#125;);</span><br><span class="line">            t.start();</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure></div><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">构造块</span><br><span class="line">构造块</span><br><span class="line">构造块</span><br><span class="line">构造块</span><br><span class="line">构造块</span><br><span class="line">构造块</span><br><span class="line">构造块</span><br></pre></td></tr></table></figure></div><h3 id="4-懒汉式-线程安全"><a href="#4-懒汉式-线程安全" class="headerlink" title="4. 懒汉式-线程安全"></a>4. 懒汉式-线程安全</h3><p><em><strong>使用同步锁</strong></em>– <code>synchronized</code></p><div class="highlight-container" data-rel="Java"><figure class="iseeu highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> tech.aistar.design.Singleton.v2;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Description</span> 懒汉式</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Author</span>: kevin</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Date</span>: 2023-07-27</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Singleton</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> Singleton singleton;</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 构造私有化</span></span><br><span class="line">    <span class="keyword">private</span> <span class="title function_">Singleton</span><span class="params">()</span> &#123;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 懒汉式,当getSingleton第一次被调用的时候才去创建实例</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">synchronized</span> Singleton <span class="title function_">getSingleton</span><span class="params">()</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> singleton == <span class="literal">null</span> ? singleton = <span class="keyword">new</span> <span class="title class_">Singleton</span>() : singleton;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SingletonTest</span> &#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> &#123;</span><br><span class="line">        <span class="type">Singleton</span> <span class="variable">singleton</span> <span class="operator">=</span> Singleton.getSingleton();</span><br><span class="line">        <span class="type">Singleton</span> <span class="variable">singleton2</span> <span class="operator">=</span> Singleton.getSingleton();</span><br><span class="line">        System.out.println(singleton2 == singleton);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></div><h3 id="5-饿汉式-懒汉式的区别"><a href="#5-饿汉式-懒汉式的区别" class="headerlink" title="5. 饿汉式&#x2F;懒汉式的区别"></a>5. 饿汉式&#x2F;懒汉式的区别</h3><ol><li><p>线程安全性方面</p><pre><code>饿汉模式 - 单线程/多线程 - 都是线程安全的 - 因为类加载的时候(线程对象还不存在!),就会初始化那个单例的实例.懒汉模式 - 需要通过加锁的方式,来实现多线程安全.</code></pre></li><li><p>效率方面 - 懒汉模式通常是需要加锁的,所以涉及到频繁加锁和释放锁的动作,而”锁”也是一个比较昂贵的资源对象[占内存]</p><p>效率不如饿汉模式.</p></li><li><p>占内存方面 - 饿汉模式比较占内存 - 类加载的时候,它在内存中就存在了.  懒汉模式是你需要使用它实例的时候,它才会第一次实例化.</p></li></ol><h3 id="6-双重检测锁-笔试-面试"><a href="#6-双重检测锁-笔试-面试" class="headerlink" title="6. 双重检测锁-笔试&#x2F;面试"></a>6. 双重检测锁-笔试&#x2F;面试</h3><div class="highlight-container" data-rel="Java"><figure class="iseeu highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> tech.aistar.design.Singleton.v5;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Description</span> 懒汉式- 正真开发中使用的 volatile关键字 禁止指令重排</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Author</span>: kevin</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@Date</span>: 2023-07-27</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Singleton</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">volatile</span> Singleton instance;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="title function_">Singleton</span><span class="params">()</span> &#123;</span><br><span class="line">        System.out.println(<span class="string">&quot;构造块&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> Singleton <span class="title function_">getInstance</span><span class="params">()</span> &#123;</span><br><span class="line"></span><br><span class="line">        <span class="comment">//创建对象的标准的流程 - &quot;自认为的&quot;</span></span><br><span class="line">        <span class="comment">//①申请空间,②初始化,调用构造方法(是一个完整的对象),③将对象在堆空间的内存地址赋值给引用变量</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">//TODO... 实际的顺序,jvm会进行指令重排,重排后的顺序①-③-②</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">//N=100个线程</span></span><br><span class="line">        <span class="comment">//假设10个线程可以同时判断为null</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">//等第一个线程执行①-③之后,另外90个线程进来了,判断不为null,直接return instance</span></span><br><span class="line">        <span class="comment">//但是这个90个线程拿到的是一个不完整对象的引用,然后可能就去使用这个不完整的对象 - 造成不可预期的结果.</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (instance == <span class="literal">null</span>) &#123;</span><br><span class="line"></span><br><span class="line">            <span class="comment">//10个线程竞争锁资源</span></span><br><span class="line">            <span class="keyword">synchronized</span> (Singleton.class) &#123;<span class="comment">//skip</span></span><br><span class="line"></span><br><span class="line">                <span class="comment">//其中的一个线程进入...</span></span><br><span class="line">                <span class="keyword">if</span> (instance == <span class="literal">null</span>) &#123;</span><br><span class="line"></span><br><span class="line">                    <span class="comment">//按照指令重排后的顺序,  第一个线程进入之后按照①-③ , instance已经不为null</span></span><br><span class="line">                    <span class="comment">//此时instance指向的那个对象仍然是一个不完整的对象,因为还没有来得及执行完构造.</span></span><br><span class="line">                    instance = <span class="keyword">new</span> <span class="title class_">Singleton</span>();</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">            <span class="comment">//抢到锁的线程会立即释放锁资源</span></span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> instance;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SingletonTest</span> &#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> &#123;</span><br><span class="line"><span class="comment">//模拟一个多线程的场景</span></span><br><span class="line">        <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; <span class="number">100</span>; i++) &#123;</span><br><span class="line">            <span class="type">Thread</span> <span class="variable">t</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">Thread</span>(() -&gt; &#123;</span><br><span class="line">                <span class="type">Singleton</span> <span class="variable">s1</span> <span class="operator">=</span> Singleton.getInstance();</span><br><span class="line">            &#125;);</span><br><span class="line">            t.start();</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure></div>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;单例模式&quot;&gt;&lt;a href=&quot;#单例模式&quot; class=&quot;headerlink&quot; title=&quot;单例模式&quot;&gt;&lt;/a&gt;单例模式&lt;/h1&gt;&lt;p&gt;&lt;code&gt;单例-保证一个类的具体的实例在整个应用程序中只有唯一的一个&lt;/code&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;构造私有化&lt;</summary>
      
    
    
    
    
    <category term="java" scheme="http://example.com/tags/java/"/>
    
  </entry>
  
  <entry>
    <title>java笔记</title>
    <link href="http://example.com/posts/f9093ac3.html"/>
    <id>http://example.com/posts/f9093ac3.html</id>
    <published>2023-07-18T12:29:09.000Z</published>
    <updated>2023-07-27T07:17:34.387Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>本文主要对Java基础知识点进行总结。 @lsmallice</p></blockquote><h3 id="Java基础知识"><a href="#Java基础知识" class="headerlink" title="Java基础知识"></a>Java基础知识</h3><h3 id="HelloWord案例"><a href="#HelloWord案例" class="headerlink" title="HelloWord案例"></a><strong>HelloWord案例</strong></h3><p><code>HelloWord.java文件</code></p><div class="highlight-container" data-rel="Java"><figure class="iseeu highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//定义一个类</span></span><br><span class="line"><span class="keyword">public</span> Class HelloWord&#123;</span><br><span class="line">  <span class="comment">//类中定义主方法main()</span></span><br><span class="line">  <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">mian</span><span class="params">(String[] args)</span>&#123;</span><br><span class="line">    <span class="comment">//向控制台输出Hello Word!</span></span><br><span class="line">    System.out.println(<span class="string">&quot;Hello Word!&quot;</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></div><h4 id="Q-A"><a href="#Q-A" class="headerlink" title="Q&amp;A"></a>Q&amp;A</h4><ul><li><p>Q:为什么定义类的方式是这样的</p><p>Java语法规定类的定义是如下格式</p><div class="highlight-container" data-rel="Java"><figure class="iseeu highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 类修饰符  Class  类名  &#123;&#125;</span></span><br><span class="line"><span class="keyword">public</span>  Class HelloWord &#123;&#125;</span><br></pre></td></tr></table></figure></div></li><li><p>Q:为什么要定义一个主方法(main)</p><p>在Java中main方法是程序的主入口,程序会执行mian方法中的代码</p></li><li><p>程序中是否可以有多个main方法?</p><p>可以,但是作为主入口的main方法必须按照以下格式</p><div class="highlight-container" data-rel="Java"><figure class="iseeu highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> staic <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span></span><br><span class="line"> <span class="keyword">public</span> staic <span class="keyword">void</span> <span class="title function_">mian</span><span class="params">(String... args)</span></span><br><span class="line"> <span class="comment">// args可以用其他变量代替</span></span><br><span class="line"> <span class="comment">//String...是可以接收多个String类型的参数==String[]</span></span><br></pre></td></tr></table></figure></div></li><li><p>为什么使用 System.out.println(“Hello Word!”)可以在控制台打印出HelloWord!</p><p>这是Java内置的方法,只需要会使用即可.</p><p>其中”Hello Word!”处可以替换为:</p><ul><li>“字符串内容”</li><li>字面量&#x2F;常量&#x2F;变量+”字符串” 拼接而成的内容</li><li>表达式-&gt;将表达式的结果打印出来</li><li>任意的</li><li>变量</li></ul><h3 id="基本数据类型"><a href="#基本数据类型" class="headerlink" title="基本数据类型"></a>基本数据类型</h3></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;本文主要对Java基础知识点进行总结。 @lsmallice&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;Java基础知识&quot;&gt;&lt;a href=&quot;#Java基础知识&quot; class=&quot;headerlink&quot; title=&quot;Java基础知识&quot;&gt;&lt;</summary>
      
    
    
    
    
    <category term="java" scheme="http://example.com/tags/java/"/>
    
  </entry>
  
  <entry>
    <title>Vue学习笔记</title>
    <link href="http://example.com/posts/71513ccb.html"/>
    <id>http://example.com/posts/71513ccb.html</id>
    <published>2023-07-15T08:50:43.000Z</published>
    <updated>2023-07-17T13:47:26.325Z</updated>
    
    <content type="html"><![CDATA[<h3 id="0-Vue简介"><a href="#0-Vue简介" class="headerlink" title="0. Vue简介"></a>0. Vue简介</h3><h4 id="1-Vue是什么"><a href="#1-Vue是什么" class="headerlink" title="1. Vue是什么?"></a>1. Vue是什么?</h4><blockquote><p>是一套用于构建用户界面的<strong>渐进式框架</strong>。与其它大型框架不同的是，Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层，不仅易于上手，还便于与第三方库或既有项目整合。另一方面，当与<a class="link"   href="https://v2.cn.vuejs.org/v2/guide/single-file-components.html" >现代化的工具链 <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a>以及各种<a class="link"   href="https://github.com/vuejs/awesome-vue#libraries--plugins" >支持类库 <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a>结合使用时，Vue 也完全能够为复杂的单页应用提供驱动。</p><ul><li><code>构建用户界面:将手中的数据通过某种方法, 变成用户可以看到的界面</code></li><li><code>渐进式:Vue是可以自底向上逐层的应用.如果为简单应用,只需要一个轻量小巧的核心库,如果为复杂应用,可以引用各式各样的 Vue插件. 也就是从一个轻量小巧的核心库,逐渐递进到Vue插件库</code></li></ul></blockquote><h4 id="2-由谁开发"><a href="#2-由谁开发" class="headerlink" title="2.由谁开发?"></a>2.由谁开发?</h4><p><code>沈雨溪</code></p><h4 id="3-Vue的特点"><a href="#3-Vue的特点" class="headerlink" title="3. Vue的特点"></a>3. Vue的特点</h4><blockquote><ol><li><p>采用组件化模式, 提高代码复用率,且让代码更好维护.</p><p><code>组件化:一个页面中可能有多个模块,可将模块分成不同的XXX.Vue页面书写,封装成组件</code></p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/71513ccb/%E7%BB%84%E4%BB%B6%E5%BC%8F.png"                      class=""                > </li><li><p>​声明式编码,让编码人员无需直接操作DOM, 提高开放效率</p></li><li><p>使用虚拟DOM+优秀的DIff算法,尽量复用DOM节点</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/71513ccb/Diff.png"                      class=""                ></li></ol></blockquote><h4 id="4-Vue2官网指南使用"><a href="#4-Vue2官网指南使用" class="headerlink" title="4. Vue2官网指南使用"></a>4. Vue2官网指南使用</h4><blockquote><p> <a class="link"   href="https://v2.cn.vuejs.org/" >https://v2.cn.vuejs.org/ <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><p>顶部导航——学习——教程&amp;API：最重要的两个部分（API相当于是Vue的字典）；</p><p>顶部导航——学习——风格指南：写出更加优雅的代码，有优先级A（必要的）、B（强烈推荐）、C（推荐）等；</p><p>顶部导航——学习——Cookbook：Vue的使用技巧；</p><p>顶部导航——生态系统——帮助&amp;信息：不重要，可不看；</p><p>顶部导航——生态系统——工具&amp;插件：重要，后期需要，如脚手架、路由等:</p></blockquote><h4 id="5-搭建Vue开发环境"><a href="#5-搭建Vue开发环境" class="headerlink" title="5. 搭建Vue开发环境"></a>5. 搭建Vue开发环境</h4><ol><li><strong>下载引入开发版本的Vue.js</strong></li></ol><p><code>最开始使用Vue不推荐Vue-cli的方式，开始使用的是在.html中引入Vue。</code></p><ol start="2"><li>安装开发者工具</li></ol><p><a class="link"   href="https://gitee.com/link?target=https://devtools.vuejs.org/guide/installation.html" >https://devtools.vuejs.org/guide/installation.html <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><p>关闭提示</p><p><code>全局配置vue.config，去除提示</code></p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Vue.config.productionTip=false</span><br></pre></td></tr></table></figure></div><p><code>未必生效,若不生效,直接修改vue.js源码即可</code></p><h3 id="1-Vue基础部分"><a href="#1-Vue基础部分" class="headerlink" title="1. Vue基础部分"></a>1. Vue基础部分</h3><h4 id="1-1-Vue程序初体验"><a href="#1-1-Vue程序初体验" class="headerlink" title="1.1 Vue程序初体验"></a>1.1 Vue程序初体验</h4><h5 id="01-第一个Vue程序"><a href="#01-第一个Vue程序" class="headerlink" title="01-第一个Vue程序"></a>01-<strong>第一个Vue程序</strong></h5><p><code>hello Word!示例代码</code></p><div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;zh-CN&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">title</span>&gt;</span>第一个Vue程序<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"> <span class="comment">&lt;!-- 安装vue：当你使用script进行Vue安装之后，上下文中就注册了一个全局变量：Vue --&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;../js/vue.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line"> <span class="comment">&lt;!-- 指定Vue实例的挂载位置。 --&gt;</span></span><br><span class="line"> <span class="comment">&lt;!-- &lt;div id=&quot;app&quot;&gt;&lt;/div&gt; --&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">hr</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">   <span class="comment">/* </span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">     第一步：创建Vue实例</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        1. 为什么要new Vue()，直接调用Vue()函数不行吗？</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            不行，因为直接调用Vue()函数，不创建实例的话，会出现以下错误：</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">                Vue is a constructor and should be called with the `new` keyword</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        2. 关于Vue构造函数的参数：options？</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            option翻译为选项</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            options翻译为多个选项</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            Vue框架要求这个options参数必须是一个纯粹的JS对象：&#123;&#125;</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            在&#123;&#125;对象中可以编写大量的key:value对。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            一个key:value对就是一个配置项。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            主要是通过options这个参数来给Vue实例指定多个配置项。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        3. 关于template配置项：</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            template翻译为：模板。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            template配置项用来指定什么？用来指定模板语句，模板语句是一个字符串形式的。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            什么是模板语句？</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">                Vue框架自己制定了一些具有特殊含义的特殊符号。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">                Vue的模板语句是Vue框架自己搞的一套语法规则。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">                我们写Vue模板语句的时候，不能乱写，要遵守Vue框架的模板语法规则。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            模板语句可以是一个纯粹的HTML代码，也可以是Vue中的特殊规则。也可以是HTML代码 + Vue的特殊规则。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            template后面的模板语句会被Vue框架的编译器进行编译，转换成浏览器能够识别的HTML代码。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        */</span></span></span><br><span class="line"><span class="language-javascript">      <span class="keyword">const</span> vm = <span class="keyword">new</span> <span class="title class_">Vue</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">            template : <span class="string">&#x27;&lt;h1&gt;Hello Vue!!!!!&lt;/h1&gt;&#x27;</span></span></span><br><span class="line"><span class="language-javascript">        &#125;)</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        <span class="comment">/* </span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        第二步：将Vue实例挂载到id=&#x27;app&#x27;的元素位置。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        1. Vue实例都有一个$mount()方法，这个方法的作用是什么？</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            将Vue实例挂载到指定位置。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        2. #app 显然是ID选择器。这个语法借鉴了CSS。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        */</span></span></span><br><span class="line"><span class="language-javascript">        myVue.$mount(<span class="string">&#x27;#app&#x27;</span>)</span></span><br><span class="line"><span class="language-javascript">        <span class="comment">//myVue.$mount(document.getElementById(&#x27;app&#x27;))</span></span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure></div><h5 id="02-模版语句的数据来源"><a href="#02-模版语句的数据来源" class="headerlink" title="02-模版语句的数据来源"></a>02-模版语句的数据来源</h5><p>模版语句的数据来源 :</p><ol><li><p>谁可以给模版语句提供数据支持呢? <code>data选项</code></p></li><li><p>data选项的类型是什么? <code>Object</code>  |  <code> Function</code>  (对象或者函数)</p></li><li><p>data配置项的专业叫法: Vue实例的数据对象. (data实际上是给整个Vue实例提供数据来源的.)</p></li><li><p>如果data是对象的话,对象必须是纯粹的对象 (含零个或者多个的 Key &#x2F;value 对)</p></li><li><p>data数据是如何插入到模版语句当中的?</p></li></ol><p>​<code>&#123;&#123;&#125;&#125;</code>这是Vue框架自己搞得一套语法,别的框架看不懂的浏览器也是不能识别的. </p><p>​Vue框架自己能够看懂的,这种语法在Vue框架中被称为: 模版语法中的插值语法.(有人把他叫做胡子语法)</p><p>​怎么用?</p><div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;&#123;data的key&#125;&#125;</span><br></pre></td></tr></table></figure></div><p>​插值语法的小细节</p><p>{<code>这个位置不能够包含其他字符包括空格</code>{}<code>这个位置不能够包含其他字符包括空格</code>}</p><div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>模板语句的数据来源<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 安装Vue --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;../js/vue.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 指定挂载位置 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- vue程序 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-handlebars"><span class="language-xml"></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">         new Vue(&#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            template : `<span class="tag">&lt;<span class="name">h1</span>&gt;</span>最近非常火爆的电视剧</span><span class="template-variable">&#123;&#123;<span class="name">name</span>&#125;&#125;</span><span class="language-xml">，它的上映日期是</span><span class="template-variable">&#123;&#123;<span class="name">releaseTime</span>&#125;&#125;</span><span class="language-xml">。主角是</span><span class="template-variable">&#123;&#123;<span class="name">lead.name</span>&#125;&#125;</span><span class="language-xml">，年龄是</span><span class="template-variable">&#123;&#123;<span class="name">lead.age</span>&#125;&#125;</span><span class="language-xml">岁。</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                其他演员包括：</span><span class="template-variable">&#123;&#123;<span class="name">actors</span>[0].name&#125;&#125;</span><span class="language-xml">(</span><span class="template-variable">&#123;&#123;<span class="name">actors</span>[0].age&#125;&#125;</span><span class="language-xml">岁)，</span><span class="template-variable">&#123;&#123;<span class="name">actors</span>[1].name&#125;&#125;</span><span class="language-xml">(</span><span class="template-variable">&#123;&#123;<span class="name">actors</span>[1].age&#125;&#125;</span><span class="language-xml">岁)。</span><span class="template-variable">&#123;&#123;<span class="name">a.b.c.d.e.name</span>&#125;&#125;</span><span class="language-xml"></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                <span class="tag">&lt;/<span class="name">h1</span>&gt;</span>`,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            data : &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                name : &#x27;狂飙!!!&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                releaseTime : &#x27;2023年1月2日&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                lead : &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                    name : &#x27;高启强&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                    age : 41</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                &#125;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                actors : [</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                    &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                        name : &#x27;安欣&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                        age : 41</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                    &#125;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                    &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                        name : &#x27;高启兰&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                        age : 29</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                    &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                ],</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                a : &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                    b : &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                        c : &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                            d : &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                                e : &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                                    name : &#x27;呵呵&#x27;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                                &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                            &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                        &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                    &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        &#125;).$mount(&#x27;#app&#x27;)</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    </span></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure></div><h5 id="03-template配置项详解"><a href="#03-template配置项详解" class="headerlink" title="03-template配置项详解"></a>03-template配置项详解</h5><p>关于template配置项:</p><ol><li>template 后面指定的是模版语句,但是模版语句中只有一个根节点.</li><li>只有data中的数据发生变化,模版语句一定会重新编译. (只要data变,template就会重新编译,重新渲染)</li><li>如果使用template配置项额话,指定挂载位置的元素会被替换.</li><li>好消息: 目前我们可以不使用template来编写模版语句. 这些模版语句可以直接写到html标签中.Vue框架能够找到并编译,然后渲染.</li><li>如果直接将模版语句先写到HTML标签中,指定的挂载位置就不会被替换了.</li></ol><p>关于$mount(‘#app’)?</p><p>​也可以不使用$mount(“#app”)的方式进行挂载了.</p><p>​在Vue中有一个配置项: el</p><p>​el配置项和$mount()可以达到同样的效果.</p><p>​el配置项的作用?</p><p>​告诉Vue实例去接管哪个容器.</p><p>​el: ‘#app’,表示让Vue实例去接管id&#x3D;’app’的容器</p><p>​el其实是element的缩写.翻译为元素.</p><div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>template配置项详解<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 安装Vue --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;../js/vue.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 指定挂载位置 --&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 注意：以下代码就是只有Vue框架能够看懂的代码了。下面的代码就是一个模板语句。这个代码是需要Vue框架编译，然后渲染的。 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;msg&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;name&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-handlebars"><span class="language-xml"></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        new Vue(&#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            // 错误的</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            //template : &#x27;<span class="tag">&lt;<span class="name">h1</span>&gt;</span></span><span class="template-variable">&#123;&#123;<span class="name">msg</span>&#125;&#125;</span><span class="language-xml"><span class="tag">&lt;/<span class="name">h1</span>&gt;</span><span class="tag">&lt;<span class="name">h1</span>&gt;</span>动力节点老杜<span class="tag">&lt;/<span class="name">h1</span>&gt;</span>&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">             template : `</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            <span class="tag">&lt;<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                <span class="tag">&lt;<span class="name">h1</span>&gt;</span></span><span class="template-variable">&#123;&#123;<span class="name">msg</span>&#125;&#125;</span><span class="language-xml"><span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                <span class="tag">&lt;<span class="name">h1</span>&gt;</span></span><span class="template-variable">&#123;&#123;<span class="name">name</span>&#125;&#125;</span><span class="language-xml"><span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            `, </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            data : &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                msg : &#x27;Hello Vue!!!!!!!&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">                name : &#x27;a动力节点老杜!!!!!!&#x27;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            &#125;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            el : &#x27;#app&#x27;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            //el : document.getElementById(&#x27;app&#x27;)</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        &#125;)</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        //&#125;).$mount(&#x27;#app&#x27;)</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    </span></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure></div><h5 id="Vue实例和容器是一夫一妻制"><a href="#Vue实例和容器是一夫一妻制" class="headerlink" title="Vue实例和容器是一夫一妻制"></a>Vue实例和容器是一夫一妻制</h5><div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>Vue实例 和 容器 的关系是：一夫一妻制<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 安装Vue --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;../js/vue.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 准备容器 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;msg&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;msg&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">&lt;!-- 准备容器 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app2&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;name&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">&lt;!-- vue程序 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        <span class="comment">/* </span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">            验证：一个Vue实例可以接管多个容器吗？</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">                不能。一个Vue实例只能接管一个容器。一旦接管到容器之后，即使后面有相同的容器，Vue也是不管的。因为Vue实例已经“娶到媳妇”了。</span></span></span><br><span class="line"><span class="comment"><span class="language-javascript">        */</span></span></span><br><span class="line"><span class="language-javascript">        <span class="keyword">new</span> <span class="title class_">Vue</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">            el : <span class="string">&#x27;.app&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">            data : &#123;</span></span><br><span class="line"><span class="language-javascript">                msg : <span class="string">&#x27;Hello Vue!&#x27;</span></span></span><br><span class="line"><span class="language-javascript">            &#125;</span></span><br><span class="line"><span class="language-javascript">        &#125;)</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        <span class="keyword">new</span> <span class="title class_">Vue</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">            el : <span class="string">&#x27;#app2&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">            data : &#123;</span></span><br><span class="line"><span class="language-javascript">                name : <span class="string">&#x27;zhangsan&#x27;</span></span></span><br><span class="line"><span class="language-javascript">            &#125;</span></span><br><span class="line"><span class="language-javascript">        &#125;)</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        <span class="comment">// 这个Vue实例想去接管 id=&#x27;app2&#x27;的容器，但是这个容器已经被上面那个Vue接管了。他只能“打光棍”了。</span></span></span><br><span class="line"><span class="language-javascript">        <span class="keyword">new</span> <span class="title class_">Vue</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">            el : <span class="string">&#x27;#app2&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">            data : &#123;</span></span><br><span class="line"><span class="language-javascript">                name : <span class="string">&#x27;jackson&#x27;</span></span></span><br><span class="line"><span class="language-javascript">            &#125;</span></span><br><span class="line"><span class="language-javascript">        &#125;)</span></span><br><span class="line"><span class="language-javascript">        </span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure></div><h4 id="1-2-Vue核心技术"><a href="#1-2-Vue核心技术" class="headerlink" title="1.2 Vue核心技术"></a>1.2 Vue核心技术</h4><h5 id="01-模版语法之插值语法"><a href="#01-模版语法之插值语法" class="headerlink" title="01-模版语法之插值语法"></a>01-模版语法之插值语法</h5><p> 主要研究：<br>           1. 在data中声明的变量、函数等都可以。<br>           2. 常量都可以。<br>           3. 只要是合法的javascript表达式，都可以。<br>           4. 模板表达式都被放在沙盒中，只能访问全局变量的一个白名单，如 Math 和 Date 等。<br>            ‘Infinity,undefined,NaN,isFinite,isNaN,’<br>            ‘parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,’<br>            ‘Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,’<br>            ‘require’</p><div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>模板语法之插值语法&#123;&#123;&#125;&#125;<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 安装Vue --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;../js/vue.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 准备容器 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- 在data中声明的 --&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- 这里就可以看做在使用msg变量。 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;msg&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;sayHello()&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- &lt;h1&gt;&#123;&#123;i&#125;&#125;&lt;/h1&gt; --&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- &lt;h1&gt;&#123;&#123;sum()&#125;&#125;&lt;/h1&gt; --&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- 常量 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;100&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;&#x27;hello vue!&#x27;&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;3.14&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- javascript表达式 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;1 + 1&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;&#x27;hello&#x27; + &#x27;vue&#x27;&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;msg + 1&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;&#x27;msg&#x27; + 1&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;gender ? &#x27;男&#x27; : &#x27;女&#x27;&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;number + 1&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;&#x27;number&#x27; + 1&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;msg.split(&#x27;&#x27;).reverse().join(&#x27;&#x27;)&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- 错误的：不是表达式，这是语句。 --&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- &lt;h1&gt;&#123;&#123;var i = 100&#125;&#125;&lt;/h1&gt; --&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- 在白名单里面的 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;Date&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;Date.now()&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;Math&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;Math.ceil(3.14)&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">&lt;!-- vue程序 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        <span class="comment">// 用户自定义的一个全局变量</span></span></span><br><span class="line"><span class="language-javascript">        <span class="keyword">var</span> i = <span class="number">100</span></span></span><br><span class="line"><span class="language-javascript">        <span class="comment">// 用户自定义的一个全局函数</span></span></span><br><span class="line"><span class="language-javascript">        <span class="keyword">function</span> <span class="title function_">sum</span>(<span class="params"></span>)&#123;</span></span><br><span class="line"><span class="language-javascript">            <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;sum.....&#x27;</span>);</span></span><br><span class="line"><span class="language-javascript">        &#125;</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        <span class="keyword">new</span> <span class="title class_">Vue</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">            el : <span class="string">&#x27;#app&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">            data : &#123;</span></span><br><span class="line"><span class="language-javascript">                number : <span class="number">1</span>,</span></span><br><span class="line"><span class="language-javascript">                gender : <span class="literal">true</span>,</span></span><br><span class="line"><span class="language-javascript">                msg : <span class="string">&#x27;abcdef&#x27;</span>,  <span class="comment">// 为了方便沟通，以后我们把msg叫做变量。（这行代码就可以看做是变量的声明。）</span></span></span><br><span class="line"><span class="language-javascript">                sayHello : <span class="keyword">function</span>(<span class="params"></span>)&#123;</span></span><br><span class="line"><span class="language-javascript">                    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;hello vue!&#x27;</span>);</span></span><br><span class="line"><span class="language-javascript">                &#125;</span></span><br><span class="line"><span class="language-javascript">            &#125;</span></span><br><span class="line"><span class="language-javascript">        &#125;)</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure></div><h5 id="02-模版语法之指令"><a href="#02-模版语法之指令" class="headerlink" title="02-模版语法之指令"></a>02-模版语法之指令</h5><p>指令语法:</p><ol><li><p>指令是什么</p><p>指令的指着是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 Demo</p></li><li><p>Vue框架中的所以指令的名字都以”v-“开始.</p></li><li><p>插值是写在标签体当中的,那么指令写在哪里呢?</p><p>Vue框架中所以得指令都是以HTML标签的属性形式存在的,例如:</p><p>​<code>&lt;span 指令是写在这里的&gt;</code><code>&lt;/span&gt;</code></p><p>​注意：虽然指令是写在标签的属性位置上，但是这个指令浏览器是无法直接看懂的。</p><p>​                    是需要先让Vue框架进行编译的，编译之后的内容浏览器是可以看懂的。</p></li><li><p>指令的语法规则：</p></li></ol><p>​                指令的一个完整的语法格式：</p><p>​                    &lt;HTML标签 v-指令名:参数&#x3D;”javascript表达式”&gt;&lt;&#x2F;HTML标签&gt;</p><p>​                    表达式：</p><p>​                        之前在插值语法中，那么指令中的表达式就可以写什么。实际上是一样的。</p><p>​                        但是需要注意的是：在指令中的表达式位置不能外层再添加一个<code>&#123;&#123;&#125;&#125;</code></p><p>​                    不是所有的指令都有参数和表达式：</p><p>​                        有的指令，不需要参数，也不需要表达式，例如：v-once</p><p>​                        有的指令，不需要参数，但是需要表达式，例如：v-if&#x3D;”表达式”</p><p>​                        有的指令，既需要参数，又需要表达式，例如：v-bind:参数&#x3D;”表达式”</p><ol start="5"><li>v-once 指令</li></ol><p>​                作用：只渲染元素一次。随后的重新渲染，元素及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。     </p><ol start="6"><li>v-if&#x3D;”表达式” 指令</li></ol><p>​                作用：表达式的执行结果需要是一个布尔类型的数据：true或者false</p><p>​                    true：这个指令所在的标签，会被渲染到浏览器当中。</p><p>​                    false：这个指令所在的标签，不会被渲染到浏览器当中。</p><div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>模板语法之指令语法 v-??? <span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 安装Vue --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;../js/vue.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 准备一个容器 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;msg&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span> <span class="attr">v-once</span>&gt;</span>&#123;&#123;msg&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span> <span class="attr">v-if</span>=<span class="string">&quot;a &gt; b&quot;</span>&gt;</span>v-if测试：&#123;&#123;msg&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- vue程序 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        <span class="keyword">new</span> <span class="title class_">Vue</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">            el : <span class="string">&#x27;#app&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">            data : &#123;</span></span><br><span class="line"><span class="language-javascript">                msg : <span class="string">&#x27;Hello Vue!&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                a : <span class="number">10</span>,</span></span><br><span class="line"><span class="language-javascript">                b : <span class="number">11</span></span></span><br><span class="line"><span class="language-javascript">            &#125;</span></span><br><span class="line"><span class="language-javascript">        &#125;)</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure></div><h5 id="03-v-bind指令详解"><a href="#03-v-bind指令详解" class="headerlink" title="03-v-bind指令详解"></a>03-v-bind指令详解</h5><p> v-bind指令详解</p><ol><li><p>这个指令是干啥的？<br>   它可以让HTML标签的某个属性的值产生动态的效果。</p></li><li><p>v-bind指令的语法格式：</p>   <div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">HTML标签</span> <span class="attr">v-bind:参数</span>=<span class="string">&quot;表达式&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">HTML标签</span>&gt;</span></span><br></pre></td></tr></table></figure></div></li><li><p>v-bind指令的编译原理？<br>   编译前：</p><pre><code>   <div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">HTML标签</span> <span class="attr">v-bind:参数</span>=<span class="string">&quot;表达式&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">HTML标签</span>&gt;</span></span><br></pre></td></tr></table></figure></div></code></pre><p>   编译后：<br>   <div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">HTML标签</span> <span class="attr">参数</span>=<span class="string">&quot;表达式的执行结果&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">HTML标签</span>&gt;</span></span><br></pre></td></tr></table></figure></div><br>   注意两项：<br>   第一：在编译的时候v-bind后面的“参数名”会被编译为HTML标签的“属性名”<br>   第二：表达式会关联data，当data发生改变之后，表达式的执行结果就会发生变化。<br>   所以，连带的就会产生动态效果。</p></li><li><p>v-bind因为很常用，所以Vue框架对该指令提供了一种简写方式：<br>   只是针对v-bind提供了以下简写方式：</p><pre><code>  <div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;img:src=&quot;imgPath&quot;&gt;</span><br></pre></td></tr></table></figure></div></code></pre></li><li><p>什么时候使用插值语法？什么时候使用指令？<br>   凡是标签体当中的内容要想动态，需要使用插值语法。<br>   只要向让HTML标签的属性动态，需要使用指令语法。</p></li></ol><div class="highlight-container" data-rel="Html"><figure class="iseeu highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>v-bind指令详解（它是一个负责动态绑定的指令）<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 安装Vue --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;../js/vue.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 准备一个容器 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- 注意：以下代码中 msg 是变量名。 --&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- 注意：原则上v-bind指令后面的这个参数名可以随便写。 --&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- 虽然可以随便写，但大部分情况下，这个参数名还是需要写成该HTML标签支持的属性名。这样才会有意义。 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">span</span> <span class="attr">v-bind:xyz</span>=<span class="string">&quot;msg&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- 这个表达式带有单引号，这个&#x27;msg&#x27;就不是变量了，是常量。 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">span</span> <span class="attr">v-bind:xyz</span>=<span class="string">&quot;&#x27;msg&#x27;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- v-bind实战 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;../img/1.jpg&quot;</span>&gt;</span> <span class="tag">&lt;<span class="name">br</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">img</span> <span class="attr">v-bind:src</span>=<span class="string">&quot;imgPath&quot;</span>&gt;</span> <span class="tag">&lt;<span class="name">br</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- v-bind简写形式 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">img</span> <span class="attr">:src</span>=<span class="string">&quot;imgPath&quot;</span>&gt;</span> <span class="tag">&lt;<span class="name">br</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- 这是一个普通的文本框 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;text&quot;</span> <span class="attr">name</span>=<span class="string">&quot;username&quot;</span> <span class="attr">value</span>=<span class="string">&quot;zhangsan&quot;</span>&gt;</span> <span class="tag">&lt;<span class="name">br</span>&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- 以下文本框可以让value这个数据变成动态的：这个就是典型的动态数据绑定。 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;text&quot;</span> <span class="attr">name</span>=<span class="string">&quot;username&quot;</span> <span class="attr">:value</span>=<span class="string">&quot;username&quot;</span>&gt;</span> <span class="tag">&lt;<span class="name">br</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- 使用v-bind也可以让超链接的地址动态 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;https://www.baidu.com&quot;</span>&gt;</span>走起<span class="tag">&lt;/<span class="name">a</span>&gt;</span> <span class="tag">&lt;<span class="name">br</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">a</span> <span class="attr">:href</span>=<span class="string">&quot;url&quot;</span>&gt;</span>走起2<span class="tag">&lt;/<span class="name">a</span>&gt;</span> <span class="tag">&lt;<span class="name">br</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- 不能采用以下写法吗？ --&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- </span></span><br><span class="line"><span class="comment">            不能这样，报错了，信息如下：</span></span><br><span class="line"><span class="comment">            Interpolation inside attributes has been removed. </span></span><br><span class="line"><span class="comment">            Use v-bind or the colon shorthand instead. For example, </span></span><br><span class="line"><span class="comment">            instead of &lt;div id=&quot;&#123;&#123; val &#125;&#125;&quot;&gt;, use &lt;div :id=&quot;val&quot;&gt;</span></span><br><span class="line"><span class="comment">            </span></span><br><span class="line"><span class="comment">            属性内部插值这种语法已经被移除了。（可能Vue在以前的版本中是支持这种写法的，但是现在不允许了。）</span></span><br><span class="line"><span class="comment">            请使用v-bind或冒号速记来代替。</span></span><br><span class="line"><span class="comment">            请使用 &lt;div :id=&quot;val&quot;&gt; 来代替 &lt;div id=&quot;&#123;&#123; val &#125;&#125;&quot;&gt;</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">         --&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- &lt;a href=&quot;&#123;&#123;url&#125;&#125;&quot;&gt;走起3&lt;/a&gt;  --&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="tag">&lt;<span class="name">h1</span>&gt;</span>&#123;&#123;msg&#125;&#125;<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- vue程序 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        </span></span><br><span class="line"><span class="language-javascript">        <span class="comment">// 赋值的过程就可以看做是一种绑定的过程。</span></span></span><br><span class="line"><span class="language-javascript">        <span class="comment">//let i = 100</span></span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">        <span class="keyword">new</span> <span class="title class_">Vue</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">            el : <span class="string">&#x27;#app&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">            data : &#123;</span></span><br><span class="line"><span class="language-javascript">                msg : <span class="string">&#x27;Hello Vue!&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                imgPath : <span class="string">&#x27;../img/1.jpg&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                username : <span class="string">&#x27;jackson&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                url : <span class="string">&#x27;https://www.baidu.com&#x27;</span></span></span><br><span class="line"><span class="language-javascript">            &#125;</span></span><br><span class="line"><span class="language-javascript">        &#125;)</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure></div>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;0-Vue简介&quot;&gt;&lt;a href=&quot;#0-Vue简介&quot; class=&quot;headerlink&quot; title=&quot;0. Vue简介&quot;&gt;&lt;/a&gt;0. Vue简介&lt;/h3&gt;&lt;h4 id=&quot;1-Vue是什么&quot;&gt;&lt;a href=&quot;#1-Vue是什么&quot; class=&quot;header</summary>
      
    
    
    
    
    <category term="vue" scheme="http://example.com/tags/vue/"/>
    
  </entry>
  
  <entry>
    <title>hexo博客部署云服务器</title>
    <link href="http://example.com/posts/a27e2ba2.html"/>
    <id>http://example.com/posts/a27e2ba2.html</id>
    <published>2023-07-14T05:50:50.000Z</published>
    <updated>2023-07-17T00:59:41.692Z</updated>
    
    <content type="html"><![CDATA[<h2 id="步骤一：本地电脑部署"><a href="#步骤一：本地电脑部署" class="headerlink" title="步骤一：本地电脑部署"></a>步骤一：本地电脑部署</h2><p><strong>1、安装nodeJS</strong></p><p>浏览器进入NodeJS 官网，安装 LTS（Long Term Support）版本。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/bbbbasdas.png"                      class=""                > <p>验证nodeJS是否安装成功：</p><p>按住win+R，输入cmd，进入 cmd 命令行工具，输入node -v查看 node 版本，若出现版本信息（如下图示），则说明 node 安装成功。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/4e2cbd0d0fd849028e53115b790fdb30.png"                      class=""                > <p><strong>2.、安装Hexo</strong></p><p><strong>i. 安装Hexo</strong></p><p>在 cmd 命令行中输入npm install hexo-cli -g，安装 hexo。完成后输入hexo -v查看版本信息，确认安装成功。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/418900ecfc924968967b40adee7263c1.png"                      class=""                > <p><strong>ii. 初始化根目录</strong></p><p>创建文件夹Hexo-Blog，在 cmd 命令行中进入该目录，输入hexo init初始化根目录。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/0fde1dba8163455da0dbbfb981028021.png"                      class=""                > <p><strong>iii. 本地查看</strong></p><p>输入hexo g&amp;&amp;hexo s（生成静态文件，并开启本地服务器）</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/b551a8442ba54d5a979f1f8ae63f5c5e.png"                      class=""                > <p>根据提示，在浏览器中打开<a href="http://localhost:4000，即可看到初始的博客页面。">http://localhost:4000，即可看到初始的博客页面。</a></p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/c.png"                      class=""                > <p><strong>iv. 美化博客</strong></p><p>对自己的博客进行更改样式、美化、增删功能、发布文章等操作，就不展开介绍了。</p><h2 id="步骤二：购买域名"><a href="#步骤二：购买域名" class="headerlink" title="步骤二：购买域名"></a>步骤二：购买域名</h2><p>本教程后续涉及域名处，以test.top为例进行演示；读者在自己学习部署时，应将此域名替换为自己网站的域名。</p><p><strong>1、购买域名</strong></p><p>在阿里云&#x2F;腾讯云&#x2F;华为云上可以购买域名，.com&#x2F;.cn&#x2F;.top&#x2F;.xyz&#x2F;.store等域名一应俱全.</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/al.jpeg"                      class=""                >  <p><strong>2、域名备案</strong></p><p>域名绑定国内的服务器，必须要进行备案操作，否则将无法访问。从提交备案信息，到管局审核通过，备案号下来一共花了不到 10 天的时间。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/5d5ebc1f0d70482599739fd3038eee33.png"                      class=""                > <p><strong>3、域名解析</strong></p><p>域名解析是把域名指向网站空间 IP，让人们通过注册的域名可以方便地访问到网站的一种服务。IP 地址是网络上标识站点的数字地址，为了方便记忆，采用域名来代替 IP 地址标识站点地址。</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://ucc.alicdn.com/pic/developer-ecology/eb41537ce04b4d9db7f94f208b97c0ec.png"                      alt="image017-打码.png"                ></p><p><strong>说明</strong>：</p><p>◾ 主机记录中，www代表域名前加www.，如<a class="link"   href="http://www.test.top%EF%BC%8C@就代表test.top,这样两个地址都能访问到服务器了/" >www.test.top，@就代表test.top，这样两个地址都能访问到服务器了 <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><p>◾ 记录类型A是指，将域名指向一个IPV4地址</p><p>◾ 记录值就是服务器的公网 IP</p><h2 id="步骤三：服务器端配置"><a href="#步骤三：服务器端配置" class="headerlink" title="步骤三：服务器端配置"></a>步骤三：服务器端配置</h2><p><strong>1、购买服务器</strong></p><p>为了让其他用户在自己的客户端访问到自己的博客，就需要将博客部署到服务器上，其他用户通过访问服务器的公网 IP 来访问到服务器上的资源。若绑定了域名，还可以通过域名访问。</p><p>在华为云上购买了云耀云服务器。在系统的选择上，作为服务器系统，CentOS 稳定、强大，所以系统镜像选择了 Linux 系统的 CentOS 7.5 版本。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/llllll.png"                      class="" title="image-20230714144308634"                > <p><strong>2、配置端口</strong></p><p>点击云服务器管理页面的安全组，确保22端口 与 80 端口是开放的 ,没有就点配置规则,然后添加进去.</p><p>使用 HTTP 协议访问服务器，需要在服务器端监听 80 端口，因为 80 端口是服务器的默认端口号。而华为云服务器默认开启80 端口，则不需要需要我们手动打开监听 80 端口。另外，服务器端配置 Git 时需要使用 SSH 协议进行本地与服务器的连接，需要服务器监听 22 端口，也是默认开启,也不需要手动打开。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/WX20230714-144457@2x.png"                      class=""                > <img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/WX20230714-144644@2x.png"                      class=""                > <p><strong>3、服务器环境搭建</strong></p><p>此步骤需要在<strong>轻量应用服务器</strong>上完成。具体方法可以使用远程登陆（如下图示），也可以使用 Xshell 客户端进行连接。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/WX20230714-145005@2x.png"                      class=""                > <p><strong>i. 安装 nginx</strong></p><p>①切换到 root 帐号，输入命令：</p><div class="highlight-container" data-rel="Ebnf"><figure class="iseeu highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">sudo su root</span></span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/cf7151aefbdc4087b7b6cd0780a182d5.png"                      class="" title="image027.png"                >  <p>②需要使用 nginx 作为 Web 服务器，所以我们首先要安装 nginx。可以使用 yum 命令直接进行安装：</p><div class="highlight-container" data-rel="Cmake"><figure class="iseeu highlight cmake"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum <span class="keyword">install</span> -y nginx</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/e0c0dd5cf55e401aa79a8beb6f3c8d09.png"                      class="" title="image028.png"                > <p>③安装完成后启动 nginx 服务器，命令如下：</p><div class="highlight-container" data-rel="Nsis"><figure class="iseeu highlight nsis"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="params">system</span>ctl start nginx</span><br><span class="line"><span class="params">system</span>ctl enable nginx</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/7d6ed2eebaf944c3b45f6ab0adddf160.png"                      class="" title="image030.png"                > <p><strong>ii. 建立博客根目录</strong></p><p>将博客的页面文件放在&#x2F;home&#x2F;www&#x2F;website&#x2F;路径下，需要先创建这些文件。</p><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /home</span><br><span class="line"><span class="built_in">mkdir</span> www</span><br><span class="line"><span class="built_in">cd</span> www</span><br><span class="line"><span class="built_in">mkdir</span> website</span><br></pre></td></tr></table></figure></div><p>查看创建的文件：</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/cd4d98edc0d64dfa9eb7c6bb872ef2b4.png"                      class="" title="image032.png"                > <p><strong>iii. 配置 nginx 路由</strong></p><p>建立了博客的根目录后，需要将 nginx 服务器指向这个根目录地址，才能访问到博客页面，所以需要修改 nginx 的配置文件。</p><p>阿里云默认的库下载的是基于 fedora 的 nginx，查阅资料发现，默认配置文件位于etc&#x2F;nginx&#x2F;下的nginx.conf。</p><p>查看 nginx 的默认配置文件：</p><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> ~</span><br><span class="line"><span class="built_in">cd</span> /etc/nginx</span><br><span class="line"><span class="built_in">ls</span></span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/f1f1d7f1504643c691a8bda76d415cd6.png"                      class="" title="image034.png"                > <p>文件中的nginx.conf就是默认配置文件。</p><p>但不采用直接修改 nginx 配置文件的方式，而是新建一个文件夹，将自己的配置写在新建的文件夹中。再利用include，在配置文件nginx.conf中将文件夹引入进来即可。</p><p>这样若有新的需求时，只需在文件夹中添加新需求的配置文件即可，不会再次修改配置文件nginx.conf，提高效率。</p><p>切换&#x2F;etc&#x2F;nginx&#x2F;目录，在此目录下创建一个文件夹vhost：</p><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /etc/nginx</span><br><span class="line"><span class="built_in">mkdir</span> vhost</span><br><span class="line"><span class="built_in">cd</span> vhost</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/23861111c24f47a0a35be73fee40a2ac.png"                      class="" title="image036.png"                > <p>输入vim blog.conf新建blog.conf文件并编辑内容：</p><div class="highlight-container" data-rel="Abnf"><figure class="iseeu highlight abnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">server&#123;</span><br><span class="line">listen    <span class="number">80</span><span class="comment">;</span></span><br><span class="line">root /home/www/website<span class="comment">;</span></span><br><span class="line">server_name test.top<span class="comment">;</span></span><br><span class="line">location /&#123;        </span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/9688269c399b49d2927958d35720c191.png"                      class="" title="image037-打码.png"                >   <p>其中，listen代表监听 80 端口。root是博客的根目录，页面存放的地址。server_name是服务器名称，填域名test.top，将域名和博客的页面根目录绑定。</p><p>为了让<a class="link"   href="http://www.test.top/?spm=a2c6h.12873639.article-detail.4.1fd01076P6ZqNg" >http://www.test.top/ <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a>也能访问到博客页面，再新建一个配置文件wwwblog.conf，将server_name设置为<a href="http://www.test.top：">www.test.top：</a></p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/1fdbdf1962d24e64b7df3e976af8cb14.png"                      class="" title="image038-打码.png"                >  <p>这样，&#x2F;etc&#x2F;nginx&#x2F;vhost目录下就有两个配置文件，blog.conf和wwwblog.conf：</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/05e6f7dbcf5141ae8a3abe75cbdcb973.png"                      class="" title="image039.png"                >  <p>打开&#x2F;etc&#x2F;nginx&#x2F;目录下的nginx.conf文件，添加下面一行代码，将刚才新建的配置文件引入进来。*.conf的意思是将vhost文件夹下的所有.conf后缀的文件都引入了进来。注意：要写在http{}的里面。</p><p>include &#x2F;etc&#x2F;nginx&#x2F;vhost&#x2F;*.conf;</p><p>至此，完成了 nginx 路由的配置，将域名和云服务器指定路径进行了绑定。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/0d59a1a13e4a41f2b00286447ee285af.png"                      class="" title="image040.png"                >  <p><strong>4、安装nodeJS</strong></p><p>输入输入命令：</p><div class="highlight-container" data-rel="Armasm"><figure class="iseeu highlight armasm"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="symbol">curl</span> -<span class="built_in">sL</span> https:<span class="comment">//rpm.nodesource.com/setup_10.x | bash - yum install -y nodejs</span></span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/025f262b83034293bc84dff4c3df2ae8.png"                      class="" title="image042.png"                > <img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/8821fb7a9e3a49c6a42f2ab4d67aa5af.png"                      class="" title="image044.png"                > <img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/531dfc8e3a9b4178b25788b52011b2c1.png"                      class="" title="image046.png"                > <img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/1eab8e3b93ad4c82a5bf38242d2f75e5.png"                      class="" title="image048.png"                > <p>安装完成后执行 node -v 和 npm -v ，如果打印版本号则安装成功。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/f0b6296bd26d4c7db7ba11a2814dfcfa.png"                      class="" title="image049.png"                >  <h2 id="步骤四：配置服务端Git"><a href="#步骤四：配置服务端Git" class="headerlink" title="步骤四：配置服务端Git"></a>步骤四：配置服务端Git</h2><p>这一部分主要目的是本地电脑可以通过ssh方式连接到云服务器，然后就可以通过命令行方式将博客传到云服务器上。</p><p><strong>1、安装Git</strong></p><p>输入命令：</p><div class="highlight-container" data-rel="Cmake"><figure class="iseeu highlight cmake"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum <span class="keyword">install</span> git</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/7d1a1c9e731748159df6c3e3a9673011.png"                      class="" title="image050.png"                >  <img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/fad66988870e451aa1d8a18f38f16044.png"                      class="" title="image052.png"                > <p><strong>2、配置Git用户</strong></p><p>输入以下命令添加 Git 用户：</p><div class="highlight-container" data-rel="Ebnf"><figure class="iseeu highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">adduser git</span></span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/d06a8a2f288340248edbf04d42f4171d.png"                      class="" title="image055.png"                >  <p>修改用户权限命令：</p><div class="highlight-container" data-rel="Awk"><figure class="iseeu highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chmod <span class="number">740</span> <span class="regexp">/etc/</span>sudoers</span><br></pre></td></tr></table></figure></div><p>打开&#x2F;etc&#x2F;sudoers命令：</p><div class="highlight-container" data-rel="Awk"><figure class="iseeu highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vi <span class="regexp">/etc/</span>sudoers</span><br></pre></td></tr></table></figure></div><p>在这个位置添加语句：</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git ALL=(ALL) ALL</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/3121de144827421b8868e51602cc6bcb.png"                      class="" title="image056.png"                >  <p>保存退出后，将sudoers文件权限改回原样：</p><div class="highlight-container" data-rel="Awk"><figure class="iseeu highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chmod <span class="number">400</span> <span class="regexp">/etc/</span>sudoers</span><br></pre></td></tr></table></figure></div><p>设置 Git 用户的密码：</p><div class="highlight-container" data-rel="Ebnf"><figure class="iseeu highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">sudo passwd git</span></span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/205a99bb425f463482667db8f72d621d.png"                      class="" title="image058.png"                >   <p>切换到 git 用户，然后在~目录下创建.ssh文件夹，命令：</p><div class="highlight-container" data-rel="Jboss-cli"><figure class="iseeu highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">su git</span><br><span class="line"><span class="keyword">cd</span> ~</span><br><span class="line">mkdir <span class="string">.ssh</span></span><br><span class="line"><span class="keyword">cd</span> <span class="string">.ssh</span></span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/4a351860c4e54afd941cd8b33984b8af.png"                      class="" title="image060.png"                >   <p><strong>3、配置Git密钥</strong></p><p>生成公钥密钥文件命令：</p><div class="highlight-container" data-rel="Ebnf"><figure class="iseeu highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ssh-keygen</span></span><br></pre></td></tr></table></figure></div><p>输入后都按回车即可！！！</p><p>此时在目录下就会有两个文件，分别是id_rsa和id_rsa.pub，其中id_rsa.pub就是公钥文件，复制一份：</p><div class="highlight-container" data-rel="Avrasm"><figure class="iseeu highlight avrasm"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">cp</span> id_rsa.pub authorized_keys</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/668f5b52c959499aa03947aa0b8b094c.jpg"                      class="" title="image062.jpg"                >   <p>这样目录下就会有一个authorized_keys文件，修改它的权限：</p><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> 600 ~/.ssh/authorized_keys</span><br><span class="line"><span class="built_in">chmod</span> 700 ~/.ssh</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/75e7d213c50b42d2ae55e6a8e8170ca6.png"                      class="" title="image063.png"                >  <p><strong>客户端生成密钥：</strong></p><p>在本地电脑的CMD命令行工具中输入ssh-keygen -t rsa，都按回车即可！会在本地电脑的用户文件夹下生成密钥：</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/5dfc531f745c469b869a25787345be0e.png"                      class="" title="image065.png"                > <p>接着，将本地电脑的id_rsa.pub文件的内容拷贝到云服务器的authorized_keys文件的末尾！！！！可采用的方法有：</p><p>  •  直接复制内容</p><p>  •  通过Xftp文件传输工具，先将本地电脑的id_rsa.pub文件传输到云服务器某位置，再在云服务器上该位置执行cat id_rsa.pub &gt;&gt; ~&#x2F;.ssh&#x2F;authorized_keys即可</p><p>然后我们在本地电脑上，打开 cmd，使用ssh方式连接云服务器，输入：</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -v git@云服务器的公网IP</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/2523983583564e0a9a0aa63559128c5f.png"                      class="" title="image068-打码.png"                >  <p>最后提示**Welcome to Alibaba Cloud Elastic Compute Service !**，说明不用输入密码也登录成功了，即配置 Git 密钥成功，以后更新博客部署的时候不用输入 Git 密码了！</p><p><strong>如果你之前配置过git，可能你会出现以下这种错误。</strong></p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/WX20230714-145426@2x.png"                      class=""                > <p>可以看到</p><div class="highlight-container" data-rel="Awk"><figure class="iseeu highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Offending ECDSA key <span class="keyword">in</span> <span class="regexp">/c/</span>Users<span class="regexp">/jonty/</span>.ssh/known_hosts:<span class="number">2</span></span><br></pre></td></tr></table></figure></div><p>是.ssh&#x2F;known_hosts 这个文件第二行出现冲突了。只要用笔记本打开，将这个文件的第二行删掉即可。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/WX20230714-145557@2x.png"                      class=""                >  <p>重新执行刚刚的命令</p><div class="highlight-container" data-rel="Angelscript"><figure class="iseeu highlight angelscript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -v <span class="symbol">git@</span>你的服务器ip</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/12-2019-11-30-16-30-12.png"                      class=""                >  <p>这说明已经连接成功了。</p><p><strong>4、创建Git仓库</strong></p><p>创建一个 Git 的仓库，并且新建一个post-receive文件</p><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> ~</span><br><span class="line"><span class="built_in">cd</span> /home/git/</span><br><span class="line">git init --bare blog.git</span><br><span class="line"><span class="built_in">cd</span> blog.git/hooks/</span><br><span class="line">vim post-receive</span><br></pre></td></tr></table></figure></div><p>输入以下内容：</p><div class="highlight-container" data-rel="Awk"><figure class="iseeu highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git --work-tree=<span class="regexp">/home/</span>www<span class="regexp">/website --git-dir=/</span>home<span class="regexp">/git/</span>blog.git checkout -f</span><br></pre></td></tr></table></figure></div><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/06eb1c12927e4d84b9ea3b96ad14d086.png"                      class="" title="image072.png"                > <p>保存退出并授予该文件可执行权限，命令：</p><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x post-receive</span><br><span class="line">sudo <span class="built_in">chown</span> -R git:git /home/www/website</span><br><span class="line">sudo <span class="built_in">chown</span> -R git:git /home/git/</span><br></pre></td></tr></table></figure></div><p>到此服务器端配置完成。</p><h2 id="步骤五：配置Hexo并部署发布"><a href="#步骤五：配置Hexo并部署发布" class="headerlink" title="步骤五：配置Hexo并部署发布"></a>步骤五：配置Hexo并部署发布</h2><p><strong>1、安装插件</strong></p><p>本地电脑和服务器端配置都完成后，在本地电脑的 Hexo 根目录下，输入以下命令安装插件：</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br><span class="line"></span><br><span class="line">npm install hexo-server</span><br></pre></td></tr></table></figure></div><p><strong>2、修改参数</strong></p><p>打开_config.yml文件，修改deploy项目如下：</p><div class="highlight-container" data-rel="Yaml"><figure class="iseeu highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">deploy:</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">repo:</span> <span class="string">git@云服务器公网IP:/home/git/blog.git</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">branch:</span> <span class="string">master</span></span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure></div><p>其中，type项表示部署类型为git，仓库repo地址为git@云服务器公网IP:&#x2F;home&#x2F;git&#x2F;blog.git，分支branch为master主分支。</p><p><strong>3、远程部署</strong></p><p>对博客进行的美化、功能添加、文章拟写等完毕后，命令行输入hexo clean清除本地缓存，输入hexo g -d生成静态文件，并部署到远程仓库。</p><p>此时本地的博客页面已经部署到了服务器的&#x2F;home&#x2F;www&#x2F;website目录下：</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/a27e2ba2/bf1357375faa40659f058c889223031b.png"                      class="" title="image076.png"                >  <p><strong>注意</strong>：</p><p>部署完成后，若打开页面没变化，可以在云服务器输入以下重启nginx即可：</p><p>nginx -s reload</p><p>到此，通过 hexo 搭建博客并部署到华为云云耀云服务器总算完成啦~ </p><p>最后在云服务器控制台解析一下域名就可以通过域名访问了.</p>]]></content>
    
    
      
      
    <summary type="html">&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;p&gt;&lt;strong&gt;1、安装nodeJS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;浏览器</summary>
      
    
    
    
    
    <category term="hexo" scheme="http://example.com/tags/hexo/"/>
    
    <category term="云服务器" scheme="http://example.com/tags/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8/"/>
    
  </entry>
  
  <entry>
    <title>IntelliJ IDEA 2022.1永久破解激活教程</title>
    <link href="http://example.com/posts/75da42b1.html"/>
    <id>http://example.com/posts/75da42b1.html</id>
    <published>2023-07-12T08:04:00.000Z</published>
    <updated>2023-07-14T10:42:06.352Z</updated>
    
    <content type="html"><![CDATA[<h1 id="软件介绍"><a href="#软件介绍" class="headerlink" title="软件介绍"></a>软件介绍</h1><p>JetBrains 是一家专注于创建智能开发工具的前沿软件公司,包括:行业中领头的 Java IDE – IntelliJ IDEA,以及 Kotlin 编程语言。旗下常用的软件有<strong>IntelliJ IDEA、PhpStorm、RubyMine、Rider、WebStorm、goland、CLion、Pycharm，本安装包集成以上8款软件</strong>，用户可根据自己的需求选择安装一款或多款。</p><h1 id="安装步骤"><a href="#安装步骤" class="headerlink" title="安装步骤"></a>安装步骤</h1><blockquote><p><strong>温馨提示</strong>：JetBrains2022压缩包里包含JetBrains旗下8个软件（IntelliJ IDEA、PhpStorm、RubyMine、Rider、WebStorm、goland、CLion、Pycharm），您可以根据自己的需求选择安装一款或多款，8个软件的安装、激活、汉化步骤完全相同，其它产品可完全参考本步骤！</p><p>软件下载:<br>                链接:<code> https://pan.baidu.com/s/1E3wLRkdCtwTWJQ9-JoBMuQ</code><br>                提取码: <code>edvr</code></p><p>如果你已经有了2022.1的IDEA ,可以直接下载破解程序:<br>                链接: <code>https://pan.baidu.com/s/15WMzfmJvD0BkuquFtm35jw</code><br>                提取码: <code>z8t3</code></p></blockquote><h2 id="第一部分：JetBrains软件通用安装步骤"><a href="#第一部分：JetBrains软件通用安装步骤" class="headerlink" title="第一部分：JetBrains软件通用安装步骤"></a><strong>第一部分：JetBrains软件通用安装步骤</strong></h2><ol><li><p>鼠标右击【IntelliJ IDEA2022】压缩包（win11及以上系统需先点击“显示更多选项”）选择【解压到 IntelliJ IDEA2022】。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/asdasldjasdsdasd.png"                      class=""                >    </li><li><p>打开解压后的文件夹，鼠标右击需要安装的软件【如：InteaIU-2022.1.3】选择【以管理员身份运行】。</p></li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/asdasd.png"                      class=""                >   <ol start="3"><li><p>点击【Next】。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/innpjpo.png"                      class=""                >   </li><li><p>修改路径地址中的首字符C可更改安装位置（如：将C改为D表示安装到D盘），点击【Next】。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/nnnn.png"                      class=""                >  </li><li><p>勾选所以项目，点击【Next】。</p></li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/adasdl.png"                      class=""                >   <ol start="6"><li>点击【Install】。</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/vvvv.png"                      class=""                >   <ol start="7"><li>安装中……</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/asdaksdlk.png"                      class=""                >   <ol start="8"><li>点击【Finish】。</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/lllll.png"                      class=""                >  <h2 id="第二部分：JetBrains软件通用激活步骤"><a href="#第二部分：JetBrains软件通用激活步骤" class="headerlink" title="第二部分：JetBrains软件通用激活步骤"></a><strong>第二部分：JetBrains软件通用激活步骤</strong></h2><ol start="9"><li>打开安装包解压后的【IntelliJ IDEA2023】文件夹，鼠标右击【Crack】选择【解压到当前文件夹】。</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/adasdasdsvv.png"                      class=""                >  <ol start="10"><li>双击解压出来的【安装】。</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/oooop.png"                      class=""                >  <ol start="11"><li>点击确定.</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/yyyy.png"                      class=""                > <ol start="12"><li>点击确定.</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/hhhhhjjj.png"                      class=""                >  <ol start="13"><li><p>双击桌面【IntelliJ IDEA 2022.1.3】图标启动软件。</p></li><li><p>勾选【I confirm……】，点击【Continue】。</p></li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/ssssd.png"                      class=""                >  <ol start="15"><li>点击【Don’t Send】。</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/scscscs.png"                      class=""                >  <ol start="16"><li>选择【Activation code】（不要关闭该界面继续后面的步骤）。</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/aajskhfoai.png"                      class=""                >  <p>17.打开安装包解压后的【Carck】文件夹，将【激活码】拖到软件界面（如下图所示）。</p><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/asdasdjasdl.png"                      class=""                >  <ol start="18"><li>点击【Activate】。</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/laksdasdascc.png"                      class=""                >  <ol start="19"><li>点击【Close】（若无法点击“Close”重复步骤13-20，英文版安装成功，中文版继续后面的步骤）。</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/asdhahdoaisdsa.png"                      class=""                >  <h2 id="第三部分：JetBrains通用软件汉化步骤"><a href="#第三部分：JetBrains通用软件汉化步骤" class="headerlink" title="第三部分：JetBrains通用软件汉化步骤"></a><strong>第三部分：JetBrains通用软件汉化步骤</strong></h2><ol start="20"><li>程序员谁用汉化啊</li><li>安装成功！（禁止更新，否则软件无法运行）</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/75da42b1/asdasdh.png"                      class=""                > ]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;软件介绍&quot;&gt;&lt;a href=&quot;#软件介绍&quot; class=&quot;headerlink&quot; title=&quot;软件介绍&quot;&gt;&lt;/a&gt;软件介绍&lt;/h1&gt;&lt;p&gt;JetBrains 是一家专注于创建智能开发工具的前沿软件公司,包括:行业中领头的 Java IDE – IntelliJ </summary>
      
    
    
    
    
    <category term="IDEA" scheme="http://example.com/tags/IDEA/"/>
    
    <category term="JetBrains" scheme="http://example.com/tags/JetBrains/"/>
    
  </entry>
  
  <entry>
    <title>mysql练习</title>
    <link href="http://example.com/posts/c1d94981.html"/>
    <id>http://example.com/posts/c1d94981.html</id>
    <published>2023-07-11T12:21:58.000Z</published>
    <updated>2023-07-14T10:42:13.096Z</updated>
    
    <content type="html"><![CDATA[<p>用于熟悉mysql的基本知识</p><h3 id="导入数据库脚本"><a href="#导入数据库脚本" class="headerlink" title="导入数据库脚本"></a>导入数据库脚本</h3><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br></pre></td><td class="code"><pre><span class="line">/*</span><br><span class="line"> Navicat Premium Data Transfer</span><br><span class="line"></span><br><span class="line"> Source Server         : ali</span><br><span class="line"> Source Server Type    : MySQL</span><br><span class="line"> Source Server Version : 80026 (8.0.26)</span><br><span class="line"> Source Schema         : kd</span><br><span class="line"></span><br><span class="line"> Date: 11/07/2023 20:44:05</span><br><span class="line">*/</span><br><span class="line"></span><br><span class="line">SET NAMES utf8mb4;</span><br><span class="line">SET FOREIGN_KEY_CHECKS = 0;</span><br><span class="line"></span><br><span class="line">-- ----------------------------</span><br><span class="line">-- Table structure for dept</span><br><span class="line">-- ----------------------------</span><br><span class="line">DROP TABLE IF EXISTS `dept`;</span><br><span class="line">CREATE TABLE `dept` (</span><br><span class="line">  `deptno` int NOT NULL,</span><br><span class="line">  `dname` varchar(20) NOT NULL,</span><br><span class="line">  `loc` varchar(20) DEFAULT NULL,</span><br><span class="line">  PRIMARY KEY (`deptno`),</span><br><span class="line">  UNIQUE KEY `dname` (`dname`)</span><br><span class="line">) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;</span><br><span class="line"></span><br><span class="line">-- ----------------------------</span><br><span class="line">-- Records of dept</span><br><span class="line">-- ----------------------------</span><br><span class="line">BEGIN;</span><br><span class="line">INSERT INTO `dept` (`deptno`, `dname`, `loc`) VALUES (10, &#x27;ACCOUNTING&#x27;, &#x27;NEW YORK&#x27;);</span><br><span class="line">INSERT INTO `dept` (`deptno`, `dname`, `loc`) VALUES (20, &#x27;RESEARCH&#x27;, &#x27;shanghai&#x27;);</span><br><span class="line">INSERT INTO `dept` (`deptno`, `dname`, `loc`) VALUES (30, &#x27;SALES&#x27;, &#x27;beijing&#x27;);</span><br><span class="line">INSERT INTO `dept` (`deptno`, `dname`, `loc`) VALUES (40, &#x27;OPERATIONS&#x27;, &#x27;suzhou&#x27;);</span><br><span class="line">INSERT INTO `dept` (`deptno`, `dname`, `loc`) VALUES (50, &#x27;ADMIN&#x27;, &#x27;suzhou&#x27;);</span><br><span class="line">COMMIT;</span><br><span class="line"></span><br><span class="line">-- ----------------------------</span><br><span class="line">-- Table structure for emp</span><br><span class="line">-- ----------------------------</span><br><span class="line">DROP TABLE IF EXISTS `emp`;</span><br><span class="line">CREATE TABLE `emp` (</span><br><span class="line">  `empno` int NOT NULL,</span><br><span class="line">  `ename` varchar(10) DEFAULT NULL,</span><br><span class="line">  `job` varchar(9) DEFAULT NULL,</span><br><span class="line">  `mgr` int DEFAULT NULL,</span><br><span class="line">  `hiredate` date DEFAULT NULL,</span><br><span class="line">  `salary` float DEFAULT NULL,</span><br><span class="line">  `comm` float DEFAULT NULL,</span><br><span class="line">  `deptno` int DEFAULT NULL,</span><br><span class="line">  PRIMARY KEY (`empno`),</span><br><span class="line">  KEY `fk_emp_dept` (`deptno`),</span><br><span class="line">  CONSTRAINT `fk_emp_dept` FOREIGN KEY (`deptno`) REFERENCES `dept` (`deptno`)</span><br><span class="line">) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;</span><br><span class="line"></span><br><span class="line">-- ----------------------------</span><br><span class="line">-- Records of emp</span><br><span class="line">-- ----------------------------</span><br><span class="line">BEGIN;</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7369, &#x27;SMITH&#x27;, &#x27;CLERK&#x27;, 7902, &#x27;1980-12-17&#x27;, 800, NULL, 20);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7499, &#x27;ALLEN&#x27;, &#x27;SALESMAN&#x27;, 7698, &#x27;1981-02-20&#x27;, 1600, 300, 30);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7521, &#x27;WARD&#x27;, &#x27;SALESMAN&#x27;, 7698, &#x27;1981-02-22&#x27;, 1250, 500, 30);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7566, &#x27;JONES&#x27;, &#x27;MANAGER&#x27;, 7839, &#x27;1981-04-02&#x27;, 2975, NULL, 20);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7654, &#x27;MARTIN&#x27;, &#x27;SALESMAN&#x27;, 7698, &#x27;1981-05-01&#x27;, 1250, 1400, 30);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7698, &#x27;BLAKE&#x27;, &#x27;MANAGER&#x27;, 7839, &#x27;1981-06-09&#x27;, 2850, NULL, 30);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7782, &#x27;CLARK&#x27;, &#x27;MANAGER&#x27;, 7839, &#x27;1987-07-01&#x27;, 2450, NULL, 10);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7788, &#x27;SCOTT&#x27;, &#x27;ANALYST&#x27;, 7566, &#x27;1981-11-17&#x27;, 3000, NULL, 20);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7839, &#x27;KING&#x27;, &#x27;PRESIDENT&#x27;, NULL, &#x27;1987-12-03&#x27;, 5000, NULL, 10);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7844, &#x27;TURNER&#x27;, &#x27;SALESMAN&#x27;, 7698, &#x27;1981-03-12&#x27;, 1500, 0, 30);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7876, &#x27;ADAMS&#x27;, &#x27;CLERK&#x27;, 7788, &#x27;1981-02-13&#x27;, 1100, NULL, 20);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7900, &#x27;JAMES&#x27;, &#x27;CLERK&#x27;, 7698, &#x27;1981-12-03&#x27;, 950, NULL, 30);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7902, &#x27;FORD&#x27;, &#x27;ANALYST&#x27;, 7566, &#x27;1981-09-08&#x27;, 3000, NULL, 20);</span><br><span class="line">INSERT INTO `emp` (`empno`, `ename`, `job`, `mgr`, `hiredate`, `salary`, `comm`, `deptno`) VALUES (7934, &#x27;MILLER&#x27;, &#x27;CLERK&#x27;, 7782, &#x27;1981-06-02&#x27;, 1300, NULL, 10);</span><br><span class="line">COMMIT;</span><br><span class="line"></span><br><span class="line">SET FOREIGN_KEY_CHECKS = 1;</span><br><span class="line"></span><br></pre></td></tr></table></figure></div><h3 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h3><h4 id="【0-简单查询】"><a href="#【0-简单查询】" class="headerlink" title="【0. 简单查询】"></a>【0. 简单查询】</h4><ol><li><p>查出在10部门的员工名字,工资</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename,</span><br><span class="line">salary </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">deptno = 10;</span><br></pre></td></tr></table></figure></div></li><li><p>找出工资大于1200元的员工全名、工资、职称</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename,</span><br><span class="line">salary,</span><br><span class="line">job </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">salary &gt; 1200;</span><br></pre></td></tr></table></figure></div></li><li><p>查出在10，30部门的员工名,薪水</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename,</span><br><span class="line">salary </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">deptno IN ( 10, 30 );</span><br></pre></td></tr></table></figure></div></li><li><p>找出工资大于1500并且没有提成的员工</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">salary &gt; 1500 </span><br><span class="line">AND comm IS NULL;</span><br></pre></td></tr></table></figure></div></li><li><p>查出名字是以M打头的员工</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">SUBSTR( ename, 1, 1 ) = &#x27;M&#x27;;</span><br></pre></td></tr></table></figure></div></li><li><p>查出姓名中第三个字母是e的员工</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">SUBSTR( ename, 3, 1 ) = &#x27;e&#x27;;</span><br></pre></td></tr></table></figure></div></li><li><p>找出没有提成率的员工</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">comm IS NULL;</span><br></pre></td></tr></table></figure></div></li><li><p>找出工资在950(含)至1200(含)元的员工姓名、职称</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename,</span><br><span class="line">job </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">salary BETWEEN 950 </span><br><span class="line">AND 1200;</span><br></pre></td></tr></table></figure></div></li><li><p>找出2月份入职的员工名、入职时间、工资</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">ename,</span><br><span class="line">hiredate,</span><br><span class="line">salary</span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">WHERE</span><br><span class="line">MONTH(hiredate) = 2;</span><br></pre></td></tr></table></figure></div></li><li><p>查询出所有员工的职位，不重复</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">DISTINCT job</span><br><span class="line">FROM</span><br><span class="line">emp ;</span><br></pre></td></tr></table></figure></div></li><li><p>查询出各个部门的员工数量</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">SELECT</span><br><span class="line">COUNT( ename ) 员工数量,</span><br><span class="line">dept.dname 部门</span><br><span class="line">FROM</span><br><span class="line">emp</span><br><span class="line">LEFT JOIN dept ON dept.deptno = emp.deptno</span><br><span class="line">GROUP BY</span><br><span class="line">dept.deptno;</span><br></pre></td></tr></table></figure></div></li><li><p>查询出各年份入职的员工情况（年份，员工人数）</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SELECT </span><br><span class="line">YEAR( hiredate ) 年份,</span><br><span class="line">COUNT( empno ) </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">GROUP BY 年份;</span><br></pre></td></tr></table></figure></div></li><li><p>查询出每年每月入职的员工情况（年份月份，员工人数）</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SELECT </span><br><span class="line">DATE_FORMAT(hiredate,&#x27;%Y年%m月&#x27;)年份,</span><br><span class="line">COUNT( empno ) </span><br><span class="line">FROM</span><br><span class="line">emp </span><br><span class="line">GROUP BY 年份;</span><br></pre></td></tr></table></figure></div></li></ol><h4 id="【1-字符函数】"><a href="#【1-字符函数】" class="headerlink" title="【1. 字符函数】"></a>【1. 字符函数】</h4><ol><li><p>获得’goodmorning’ 的字符长度</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT CHAR_LENGTH(&#x27;goodmorning&#x27;);</span><br></pre></td></tr></table></figure></div></li><li><p>将Hello全部转换成小写字母</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT LOWER(&#x27;Hello&#x27;);</span><br></pre></td></tr></table></figure></div></li><li><p>将Hello全部转换成大写字母</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT UPPER(&#x27;Hello&#x27;);</span><br></pre></td></tr></table></figure></div></li><li><p>将hello首字母变为大写字母 </p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT INSERT(&#x27;hello&#x27;,1,1,UPPER(SUBSTR(&#x27;hello&#x27;,1,1)));</span><br></pre></td></tr></table></figure></div></li><li><p>将’hello’ 与 ‘tom’  ,’good’拼接成一个单词</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT CONCAT(&#x27;hello&#x27;,&#x27;tom&#x27;,&#x27;good&#x27;);</span><br></pre></td></tr></table></figure></div></li><li><p>获得’goodmorning’ 的第4 个字母 </p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT SUBSTR(&#x27;goodmorning&#x27;,4,1);</span><br></pre></td></tr></table></figure></div></li><li><p>截取’goodmorning’ 的monring 单词</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT SUBSTR(&#x27;goodmorning&#x27;,POSITION(&#x27;morning&#x27; IN &#x27;goodmorning&#x27;),CHAR_LENGTH(&#x27;morning&#x27;));</span><br></pre></td></tr></table></figure></div></li><li><p>截取’Good  morning ！I’m Tom ‘   中的’o’ 用’A’来替代</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT REPLACE(&#x27;Good  morning ！I\&#x27;m Tom&#x27;,&#x27;o&#x27;,&#x27;A&#x27;)</span><br></pre></td></tr></table></figure></div></li></ol><h4 id="【2-日期函数】"><a href="#【2-日期函数】" class="headerlink" title="【2. 日期函数】"></a>【2. 日期函数】</h4><ol><li><p>获得当前日期</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT NOW()</span><br></pre></td></tr></table></figure></div></li><li><p>获得某一个日期的年份，月份，日期</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT YEAR(NOW()),MONTH(NOW()), DAY(NOW());</span><br></pre></td></tr></table></figure></div></li><li><p>获得某一个日期的星期</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT DAYOFWEEK(NOW())-1;</span><br></pre></td></tr></table></figure></div></li><li><p>获得当前日期的时分秒</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT DATE_FORMAT(NOW(),&#x27;%H:%i:%s&#x27;);</span><br></pre></td></tr></table></figure></div></li><li><p>获得2天后的日期</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT DATE_ADD(NOW(),interval 2 day);</span><br></pre></td></tr></table></figure></div></li><li><p>获得前2天的日期</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT DATE_SUB(NOW(),interval 2 day);</span><br></pre></td></tr></table></figure></div></li><li><p>获得两个日期相差的年份，月份，天数</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT timestampdiff(YEAR,&#x27;2000-11-28&#x27;,NOW()),timestampdiff(MONTH,&#x27;2000-11-28&#x27;,NOW()),timestampdiff(DAY,&#x27;2000-11-28&#x27;,NOW());</span><br></pre></td></tr></table></figure></div></li></ol><h4 id="【3-数值函数】"><a href="#【3-数值函数】" class="headerlink" title="【3. 数值函数】"></a>【3. 数值函数】</h4><ol><li><p>获得38934.4383的整数部分</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT truncate(38934.4383,0)</span><br></pre></td></tr></table></figure></div></li><li><p>将38934.4387的保留2位小数，不需要四舍五入</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT truncate(38934.4383,2)</span><br></pre></td></tr></table></figure></div></li><li><p>将38934.4387的保留2位小数，需要四舍五入</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT ROUND(38934.4383,2);</span><br></pre></td></tr></table></figure></div></li><li><p>获得不小于38934.4383的最小正整数</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT ceiling(38934.4383);</span><br></pre></td></tr></table></figure></div></li><li><p>获得不大于38934.4383的最大的正整数</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT floor(38934.4383);</span><br></pre></td></tr></table></figure></div></li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;用于熟悉mysql的基本知识&lt;/p&gt;
&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;div class=&quot;highlight-container</summary>
      
    
    
    
    
    <category term="mysql" scheme="http://example.com/tags/mysql/"/>
    
  </entry>
  
  <entry>
    <title>mysql的安装和配置</title>
    <link href="http://example.com/posts/14d76352.html"/>
    <id>http://example.com/posts/14d76352.html</id>
    <published>2023-07-11T07:51:56.000Z</published>
    <updated>2023-07-14T10:42:10.180Z</updated>
    
    <content type="html"><![CDATA[<h1 id="1-MySQL介绍"><a href="#1-MySQL介绍" class="headerlink" title="1. MySQL介绍"></a>1. MySQL介绍</h1><blockquote><ol><li>mysql属于瑞典的Mysql AB公司的,隶属于Oracle(甲骨文,主打的产品oracle数据库)旗下产品.</li><li>mysql特点 - 体积小,速度快,特别适合中小型企业,开源,免费的.分成社区版和商业版.</li><li>市面上主流的<strong>关系型数据库</strong> - mysql,oracle,sqlserver(MS-微软)</li><li>mysql软件也是采用c&#x2F;c++编写的.</li></ol><img                       lazyload                     src="/images/loading.svg"                     data-src="/posts/14d76352/mysql.png"                      class=""                ></blockquote><h1 id="2-专业术语"><a href="#2-专业术语" class="headerlink" title="2. 专业术语"></a>2. 专业术语</h1><blockquote><ol><li><p>DB - database 数据库 - 将数据按照一定的<em><strong>数据结构</strong></em>来进行存储,管理和组织的.</p><p>数据的仓库</p></li><li><p>DBMS - database management system - 数据库管理系统.用于操纵和控制数据库的系统.</p><p>用于建立,使用和维护我们的db. 用户通过dbms来访问db中的数据,dba通过dbms来管理和维护</p><p>我们的db. 使用dbms来保证db的安全性和完整性.</p></li><li><p>RDBMS - relational database management system关系型数据库管理系统 - 负责管理关系型数据库</p></li><li><p>关系型数据库 - 数据呈现的方式是一张二维表[行和列] - 表格型数据库</p></li><li><p>非关系型数据库[nosql] - 键值对数据库redis,文档型数据库mongodb</p></li><li><p>DBS - 数据库系统 - 类似”生态概念</p><p>DBS &#x3D; DB + DBA[数据库管理员] + DBMS</p></li></ol></blockquote><h1 id="3-安装MySQL"><a href="#3-安装MySQL" class="headerlink" title="3. 安装MySQL"></a>3. 安装MySQL</h1><blockquote><ol><li><p>访问MySQL官网下载:  <a class="link"   href="https://dev.mysql.com/downloads/mysql/" >https://dev.mysql.com/downloads/mysql/ <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p></li><li><blockquote><p>下载压缩包,并解压在一个 非C盘、非中文、非特殊符号的路径下,例如:</p><div class="highlight-container" data-rel="Apache"><figure class="iseeu highlight apache"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">D</span>:\\soft\\mysql-<span class="number">8</span>.<span class="number">0</span>.<span class="number">30</span>-winx64</span><br></pre></td></tr></table></figure></div></blockquote></li><li><p><strong>进行一个环境变量的配置</strong></p><blockquote><ol><li><p>右击计算机 - 属性 - 高级系统设置 - 环境变量 - 系统变量</p></li><li><p>定位到默认的自带的内置的变量名Path - 编辑 - 新建</p><p>然后将mysql的bin目录的绝对地址拷贝进去即可.</p></li><li><p><strong>以后只要环境变量进行了设置 - 应用 - 确定 - 关闭所有的设置窗口</strong></p><p><strong>一定要重启cmd窗口</strong></p></li><li><p>重新打开cmd - 输入mysql看是否生效</p></li></ol></blockquote></li><li><p>在mysql-8.0.30-winx64下新建一个文件,必须是my.ini</p></li><li><p>my.ini文件中的配置如下</p><p><code>唯一需要修改的只有basedir,把它修改成自己的mysql-8.0.32-winx64的绝对地址</code></p><div class="highlight-container" data-rel="Ini"><figure class="iseeu highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[client]</span></span><br><span class="line"><span class="comment"># 设置mysql客户端默认字符集</span></span><br><span class="line"><span class="attr">default-character-set</span>=utf8</span><br><span class="line"> </span><br><span class="line"><span class="section">[mysqld]</span></span><br><span class="line"><span class="comment"># 设置3306端口</span></span><br><span class="line"><span class="attr">port</span> = <span class="number">3306</span></span><br><span class="line"><span class="comment"># 设置mysql的安装目录</span></span><br><span class="line"><span class="attr">basedir</span>=D:\\soft\\mysql-<span class="number">8.0</span>.<span class="number">32</span>-winx64</span><br><span class="line"><span class="comment"># 设置 mysql数据库的数据的存放目录，MySQL 8+ 不需要以下配置，系统自己生成即可，否则有可能报错</span></span><br><span class="line"><span class="comment"># datadir=C:\\web\\sqldata</span></span><br><span class="line"><span class="comment"># 允许最大连接数</span></span><br><span class="line"><span class="attr">max_connections</span>=<span class="number">20</span></span><br><span class="line"><span class="comment"># 服务端使用的字符集默认为8比特编码的latin1字符集</span></span><br><span class="line"><span class="attr">character-set-server</span>=utf8</span><br><span class="line"><span class="comment"># 创建新表时将使用的默认存储引擎</span></span><br><span class="line"><span class="attr">default-storage-engine</span>=INNODB</span><br></pre></td></tr></table></figure></div></li><li><p>用<strong>管理员的身份</strong>打开cmd</p></li><li><p>从cmd利用dos命令进入到mysql-8.0.30-winx64\bin目录</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">C:\<span class="title">WINDOWS</span>\&gt;<span class="title">d</span>:</span></span><br></pre></td></tr></table></figure></div><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D:\&gt;<span class="title">cd</span> <span class="title">soft</span></span></span><br><span class="line"><span class="function"><span class="title">D</span>:\<span class="title">soft</span>&gt;<span class="title">cd</span> <span class="title">mysql</span>-8.0.30-<span class="title">winx64</span></span></span><br><span class="line"><span class="function"><span class="title">D</span>:\<span class="title">soft</span>\<span class="title">mysql</span>-8.0.30-<span class="title">winx64</span>&gt;<span class="title">cd</span> <span class="title">bin</span></span></span><br><span class="line"><span class="function"><span class="title">D</span>:\<span class="title">soft</span>\<span class="title">mysql</span>-8.0.30-<span class="title">winx64</span>\<span class="title">bin</span>&gt;</span></span><br></pre></td></tr></table></figure></div></li><li><p>初始化DB</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D:\<span class="title">soft</span>\<span class="title">mysql</span>-8.0.30-<span class="title">winx64</span>\<span class="title">bin</span>&gt; <span class="title">mysqld</span> --<span class="title">initialize</span> --<span class="title">console</span></span></span><br></pre></td></tr></table></figure></div><ol><li><strong>分配一个默认的密码</strong></li><li><strong>mysql-8.0.32-winx64是否自动生成了data目录</strong></li></ol></li><li><p>安装</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D:\<span class="title">soft</span>\<span class="title">mysql</span>-8.0.30-<span class="title">winx64</span>\<span class="title">bin</span>&gt; <span class="title">mysqld</span> <span class="title">install</span></span></span><br></pre></td></tr></table></figure></div><p><code>检测一下mysql的服务是否安装成功</code> - 右击计算机 - 管理 - 服务 - 服务和应用程序 - 右边的窗口 - MYSQL</p><p>只有mysql服务处于正在执行的状态,那么mysql才能够正常使用,建议右击MYSQL属性 - 设置成开机自动启动.</p></li><li><p>启动mysql</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D:\<span class="title">soft</span>\<span class="title">mysql</span>-8.0.30-<span class="title">winx64</span>\<span class="title">bin</span>&gt; <span class="title">net</span> <span class="title">start</span> <span class="title">mysql</span></span></span><br></pre></td></tr></table></figure></div><p><code>mysql服务的运行状态 - 正在运行中</code></p></li><li><p>重新开一个cmd窗口</p><p>登陆mysql</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D:\<span class="title">soft</span>\<span class="title">mysql</span>-8.0.30-<span class="title">winx64</span>\<span class="title">bin</span>&gt; <span class="title">mysql</span> -<span class="title">uroot</span> -<span class="title">p</span>临时密码</span></span><br></pre></td></tr></table></figure></div><p>如果登陆失败:</p><ol><li><p>关闭mysql服务 </p><p>重新以<strong>管理员身份</strong>打开cmd</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">C:\<span class="title">User</span>\<span class="title">admin</span>&gt;<span class="title">net</span> <span class="title">stop</span> <span class="title">mysql</span></span></span><br></pre></td></tr></table></figure></div></li><li><p>删除data目录</p></li><li><p>重第八步重新开始</p></li></ol></li><li><p>直接修改密码即可</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">alter user &#x27;root&#x27;@&#x27;localhost&#x27; identified by &#x27;root&#x27;;</span><br></pre></td></tr></table></figure></div></li><li><p>退出mysql登录</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mysql&gt;<span class="keyword">exit</span></span><br></pre></td></tr></table></figure></div></li><li><p>重新登录即可</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mysql -uroot -proot</span><br></pre></td></tr></table></figure></div></li></ol></blockquote><h1 id="4-SQL分类"><a href="#4-SQL分类" class="headerlink" title="4. SQL分类"></a>4. SQL分类</h1><blockquote><p>它同时也是我们的脚本文件的后缀.</p></blockquote><blockquote><p>structured query language结构化查询语言…</p><p>按照功能来划分</p><ol><li>DDL - Data Definition Language - 数据定义语言</li></ol><p>create,drop,alter等等…</p><ol><li><p>DCL - Data Control Language - 数据控制语言</p><p>grant(授权),revoke(取消权限)等等…</p></li><li><p>DQL - Data Query Languge - 数据查询语言</p><p><strong>select - 查询</strong></p></li><li><p>DML - Data Manipution Language - 数据操纵语言</p><p><strong>insert,delete,update</strong></p></li><li><p>TCL - Transaction Control Languge - 事务控制语言</p><p>commit,rollback,savepoint等等…</p></li></ol></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;1-MySQL介绍&quot;&gt;&lt;a href=&quot;#1-MySQL介绍&quot; class=&quot;headerlink&quot; title=&quot;1. MySQL介绍&quot;&gt;&lt;/a&gt;1. MySQL介绍&lt;/h1&gt;&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;mysql属于瑞典的Mysql AB公司的</summary>
      
    
    
    
    
    <category term="mysql" scheme="http://example.com/tags/mysql/"/>
    
  </entry>
  
  <entry>
    <title>Hello World</title>
    <link href="http://example.com/posts/4a17b156.html"/>
    <id>http://example.com/posts/4a17b156.html</id>
    <published>2023-07-10T00:44:42.000Z</published>
    <updated>2023-07-14T10:42:19.015Z</updated>
    
    <content type="html"><![CDATA[<p>Welcome to <a class="link"   href="https://hexo.io/" >Hexo <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a>! This is your very first post. Check <a class="link"   href="https://hexo.io/docs/" >documentation <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a> for more info. If you get any problems when using Hexo, you can find the answer in <a class="link"   href="https://hexo.io/docs/troubleshooting.html" >troubleshooting <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a> or you can ask me on <a class="link"   href="https://github.com/hexojs/hexo/issues" >GitHub <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a>.</p><h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">&quot;My New Post&quot;</span></span><br></pre></td></tr></table></figure></div><p>More info: <a class="link"   href="https://hexo.io/docs/writing.html" >Writing <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure></div><p>More info: <a class="link"   href="https://hexo.io/docs/server.html" >Server <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure></div><p>More info: <a class="link"   href="https://hexo.io/docs/generating.html" >Generating <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><div class="highlight-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure></div><p>More info: <a class="link"   href="https://hexo.io/docs/one-command-deployment.html" >Deployment <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;Welcome to &lt;a class=&quot;link&quot;   href=&quot;https://hexo.io/&quot; &gt;Hexo &lt;i class=&quot;fa-regular fa-arrow-up-right-from-square fa-sm&quot;&gt;&lt;/i&gt;&lt;/a&gt;! This is yo</summary>
      
    
    
    
    
    <category term="Hexo" scheme="http://example.com/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Hello Hexo+GIthub搭建博客服务器</title>
    <link href="http://example.com/posts/50238e86.html"/>
    <id>http://example.com/posts/50238e86.html</id>
    <published>2023-07-09T00:44:42.000Z</published>
    <updated>2023-07-14T10:42:15.693Z</updated>
    
    <content type="html"><![CDATA[<h1 id="hexo-github搭建博客服务器"><a href="#hexo-github搭建博客服务器" class="headerlink" title="hexo+github搭建博客服务器"></a>hexo+github搭建博客服务器</h1><blockquote><ol><li>csdn,简书,有道笔记 - <strong>广告比较多</strong></li><li>hexo+github[比较慢,魔法]&#x2F;gitee[Git pages服务器 - 维护]&#x2F;<strong>阿里云服务器</strong></li></ol></blockquote><h1 id="安装nodejs"><a href="#安装nodejs" class="headerlink" title="安装nodejs"></a>安装nodejs</h1><blockquote><ol><li>非中文的非特殊字符的目录中[目录中不要出现空格或者带有特殊符号的]</li><li>D:&#x2F;node-v14.17.3-win-x64</li></ol></blockquote><h2 id="环境变量的配置"><a href="#环境变量的配置" class="headerlink" title="环境变量的配置"></a>环境变量的配置</h2><blockquote><ol><li><p>桌面计算机 - 右击 - 属性 - 高级系统设置 - 环境变量(N)</p></li><li><p>定位到下方的系统变量</p></li><li><p>定位到变量名 - Path - 编辑 - 新建</p></li><li><p>D:&#x2F;node-v14.17.3-win-x64</p></li><li><p>一定要关闭所有的环境变量配置的窗口 - 确定</p></li><li><p>打开终端[如果终端已经打开了,关闭 - 重新打开]</p><p>win[微软图标]+r - 输入cmd  - 输入如下指令检测nodejs是否配置成功</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">npm -v</span><br><span class="line"><span class="number">6</span>.<span class="number">14</span>.<span class="number">5</span> 出现版本号,则说明配置成功</span><br><span class="line">                                                               </span><br><span class="line">如果出现了不是内部或者外部的命令的同学,请检查自己的nodejs解压缩之后的路径是否</span><br><span class="line">成功配置到了<span class="built_in">path</span>中</span><br></pre></td></tr></table></figure></div></li></ol></blockquote><h2 id="简单认识npm"><a href="#简单认识npm" class="headerlink" title="简单认识npm"></a>简单认识npm</h2><blockquote><p>npm是javascript的一个**包[前端框架]**管理工具,并且是nodejs平台默认的包管理工具.</p><p>通过npm可以安装,共享,分发代码,管理项目依赖关系.</p><p>类似于java中的maven或者gradle[强大的项目构建工具以及项目依赖管理工具]</p></blockquote><h2 id="npm简单使用"><a href="#npm简单使用" class="headerlink" title="npm简单使用"></a>npm简单使用</h2><h3 id="修改镜像"><a href="#修改镜像" class="headerlink" title="修改镜像"></a>修改镜像</h3><blockquote><p>为了下载速度变快,修改npm的镜像</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm config <span class="built_in">set</span> registry https://registry.npm.taobao.org</span><br></pre></td></tr></table></figure></div><p>验证一下,镜像是否成功修改了</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">npm config get registry</span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">https://<span class="title">registry.npm.taobao.org</span>/</span></span><br></pre></td></tr></table></figure></div></blockquote><h2 id="简单使用-不需要操作"><a href="#简单使用-不需要操作" class="headerlink" title="简单使用 - 不需要操作"></a>简单使用 - 不需要操作</h2><blockquote><ol><li><p>下载bootstrap</p><p>npm install 框架名称  - 默认下载的是最新的版本</p><div class="highlight-container" data-rel="Js"><figure class="iseeu highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install bootstrap@<span class="number">3</span></span><br></pre></td></tr></table></figure></div></li></ol></blockquote><h1 id="Hexo官网"><a href="#Hexo官网" class="headerlink" title="Hexo官网"></a>Hexo官网</h1><blockquote><p><a class="link"   href="https://hexo.io/zh-cn/docs/" >https://hexo.io/zh-cn/docs/ <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p></blockquote><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><blockquote><ol><li><p>假设你在D盘根目录下新建了一个文件夹hello-hexo[博客项目的根目录]</p></li><li><p>win+r - 打开终端</p></li><li><p>通过dos命令进入到hello-hexo目录中</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">C:/<span class="title">User</span>/<span class="title">admin</span>&gt;<span class="title">d</span>:</span></span><br><span class="line"><span class="function"><span class="title">D</span>:&gt;<span class="title">cd</span> <span class="title">hello</span>-<span class="title">hexo</span></span></span><br><span class="line"><span class="function"><span class="title">D</span>:/<span class="title">hello</span>-<span class="title">hexo</span>&gt;<span class="title">npm</span> <span class="title">install</span> <span class="title">hexo</span>-<span class="title">cli</span> -<span class="title">g</span></span></span><br></pre></td></tr></table></figure></div></li></ol></blockquote><h2 id="创建真正的博客目录"><a href="#创建真正的博客目录" class="headerlink" title="创建真正的博客目录"></a>创建真正的博客目录</h2><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D:/<span class="title">hello</span>-<span class="title">hexo</span>&gt;<span class="title">hexo</span> <span class="title">init</span> <span class="title">hello</span>-<span class="title">blog</span></span></span><br></pre></td></tr></table></figure></div><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> hello-blog</span><br><span class="line"><span class="function">D:/<span class="title">hello</span>-<span class="title">hexo</span>/<span class="title">hello</span>-<span class="title">blog</span>&gt;<span class="title">npm</span> <span class="title">install</span></span></span><br></pre></td></tr></table></figure></div><h2 id="测试-启动博客服务器"><a href="#测试-启动博客服务器" class="headerlink" title="测试 - 启动博客服务器"></a>测试 - 启动博客服务器</h2><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D:/<span class="title">hello</span>-<span class="title">hexo</span>/<span class="title">hello</span>-<span class="title">blog</span>&gt;<span class="title">hexo</span> <span class="title">s</span></span></span><br></pre></td></tr></table></figure></div><p><code>关闭服务器</code></p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ctrl+c</span><br></pre></td></tr></table></figure></div><p><em><strong>打开浏览器输入:localhost:4000</strong></em></p><h2 id="常用主题模板"><a href="#常用主题模板" class="headerlink" title="常用主题模板"></a>常用主题模板</h2><blockquote><p><a class="link"   href="https://blog.csdn.net/zgd826237710/article/details/99671027" >https://blog.csdn.net/zgd826237710/article/details/99671027 <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><p>使用git命令来进行克隆,需要提前安装好git,检测git是否安装成功,<strong>重新打开终端</strong></p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git --version</span><br></pre></td></tr></table></figure></div></blockquote><h2 id="注册码云账号"><a href="#注册码云账号" class="headerlink" title="注册码云账号"></a>注册码云账号</h2><blockquote><p>推荐用QQ注册一下</p><p>本地配置码云账号信息 - 配置文件 - 位置windows的用户主目录下</p><p>C:&#x2F;User&#x2F;计算机用户名 - 观察是否存在**.gitconfig**文件,添加如下内容</p><div class="highlight-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[user]</span><br><span class="line">email = 码云的QQ邮箱</span><br><span class="line">name = 用户名</span><br></pre></td></tr></table></figure></div></blockquote><h2 id="安装模板"><a href="#安装模板" class="headerlink" title="安装模板"></a>安装模板</h2><blockquote><p>通过cmd进入到hello-blog目录中的themes目录中</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D:/<span class="title">hello</span>-<span class="title">hexo</span>/<span class="title">hello</span>-<span class="title">blog</span>&gt;<span class="title">cd</span> <span class="title">themes</span></span></span><br><span class="line"><span class="function"><span class="title">D</span>://<span class="title">hello</span>-<span class="title">hexo</span>/<span class="title">hello</span>-<span class="title">blog</span>/<span class="title">themes</span>&gt;<span class="title">git</span> <span class="title">clone</span> <span class="title">https</span>://<span class="title">gitee.com</span>/<span class="title">guancg</span>/<span class="title">hexo</span>-<span class="title">theme</span>-<span class="title">pure.git</span></span></span><br></pre></td></tr></table></figure></div></blockquote><p>或者直接从github上直接clone</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"></span><br></pre></td></tr></table></figure></div><p>以下是一些可供选择的主题</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line">hexo-theme-bamboo</span><br><span class="line">hexo-theme-zhaoo</span><br><span class="line">hexo-theme-keep</span><br><span class="line">hexo-theme-matery</span><br><span class="line">hexo-theme-stun</span><br><span class="line">hexo-theme-apolloZ</span><br><span class="line">hexo-theme-raytaylorism</span><br><span class="line">hexo-theme-spfk</span><br><span class="line">hexo-theme-ochuunn</span><br><span class="line">cactus-dark</span><br><span class="line">cactus-white-cn</span><br><span class="line">hexo-theme-yilia</span><br><span class="line">hexo-theme-even</span><br><span class="line">hexo-theme-random</span><br><span class="line">hexo-theme-volantis</span><br><span class="line">hexo-theme-Cards</span><br><span class="line">Hexo-Theme-Life</span><br><span class="line">hexo-theme-Anisina</span><br><span class="line">hexo-theme-pure</span><br><span class="line">hexo-theme-typing</span><br><span class="line">hexo-theme-pln</span><br><span class="line">hexo-theme-landscape</span><br><span class="line">fexo</span><br><span class="line">hexo-theme-indigo</span><br><span class="line">hexo-theme-Anatole</span><br><span class="line">maupassant-hexo</span><br><span class="line">hexo-theme-mdui</span><br><span class="line">hexo-theme-next</span><br><span class="line">hexo-theme-material</span><br><span class="line">hexo-theme-hueman</span><br><span class="line">hexo-theme-magnetic</span><br><span class="line">hexo-theme-snippet</span><br><span class="line">hexo-theme-casper</span><br><span class="line">hexo-theme-adagio</span><br><span class="line">hexo-theme-fluid</span><br><span class="line">hexo-theme-freemind.bithack</span><br><span class="line">hexo-theme-yun</span><br><span class="line">hexo-theme-arknights</span><br><span class="line">Kratos-Rebirth</span><br><span class="line">hexo-theme-melody</span><br><span class="line">Hexo-Theme-MengD</span><br></pre></td></tr></table></figure></div><h1 id="更新主题配置"><a href="#更新主题配置" class="headerlink" title="更新主题配置"></a>更新主题配置</h1><blockquote><ol><li><p>指定新的主题</p><p>hello-blog目录下的_config.yml文件</p><div class="highlight-container" data-rel="Yml"><figure class="iseeu highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">theme:</span> <span class="string">hexo-theme-pure</span></span><br></pre></td></tr></table></figure></div></li></ol></blockquote><blockquote><ol start="2"><li>重启服务器hexo s</li></ol></blockquote><h1 id="个人信息"><a href="#个人信息" class="headerlink" title="个人信息"></a>个人信息</h1><p>hexo-theme-pure&#x2F;_config.yml文件</p><div class="highlight-container" data-rel="Yml"><figure class="iseeu highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">overriden</span></span><br><span class="line">  <span class="attr">author:</span> <span class="string">亲爱的管管</span></span><br><span class="line">  <span class="attr">author_title:</span> <span class="string">高级打字员</span></span><br><span class="line">  <span class="attr">author_description:</span> <span class="string">个人简介。</span></span><br><span class="line">  <span class="attr">location:</span> <span class="string">SuZhou,</span> <span class="string">China</span></span><br></pre></td></tr></table></figure></div><h1 id="Markdown语法"><a href="#Markdown语法" class="headerlink" title="Markdown语法"></a>Markdown语法</h1><blockquote><p>语法的编辑器 - <a class="link"   href="https://typora.io/" >https://typora.io/ <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><p>文件的后缀是md</p><div class="highlight-container" data-rel="Txt"><figure class="iseeu highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line">常用语法如下:</span><br><span class="line"></span><br><span class="line">1. 标题的语法:</span><br><span class="line">1~6标题 - # 一级标题    ## 二级标题   </span><br><span class="line"></span><br><span class="line">2. 代码块 - java,js,mysql...</span><br><span class="line"></span><br><span class="line">​~~~java 敲enter键</span><br><span class="line"></span><br><span class="line">3. 列表</span><br><span class="line">3-1. 无序列表</span><br><span class="line">     * 列表名称</span><br><span class="line">     </span><br><span class="line">     有序列表</span><br><span class="line">     1. 列表名称</span><br><span class="line">     </span><br><span class="line">4. 高亮显示</span><br><span class="line">   `高亮显示内容`</span><br><span class="line">   </span><br><span class="line">5. 加粗字体</span><br><span class="line">   **粗体**</span><br><span class="line">   </span><br><span class="line">6. 斜体</span><br><span class="line">   *斜体*</span><br><span class="line">   </span><br><span class="line">7. 粗+斜</span><br><span class="line">   ***粗斜***</span><br><span class="line">   </span><br><span class="line">8. 段落</span><br><span class="line">   &gt; 空格</span><br><span class="line">   </span><br><span class="line">9. 引入外部图片</span><br><span class="line">   ![](xx.png)</span><br><span class="line">   </span><br><span class="line">10. 表格</span><br></pre></td></tr></table></figure></div></blockquote><h1 id="新建博文"><a href="#新建博文" class="headerlink" title="新建博文"></a>新建博文</h1><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D://<span class="title">hello</span>-<span class="title">hexo</span>/<span class="title">hello</span>-<span class="title">blog</span>&gt;<span class="title">hexo</span> <span class="title">n</span> <span class="title">java</span></span></span><br></pre></td></tr></table></figure></div><p>效果:hello-blog目录下的source&#x2F;_ports&#x2F;自动生成一个java.md文件</p><p>重启blog服务器</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">D://<span class="title">hello</span>-<span class="title">hexo</span>/<span class="title">hello</span>-<span class="title">blog</span>&gt;<span class="title">hexo</span> <span class="title">s</span></span></span><br></pre></td></tr></table></figure></div><h1 id="主题的侧边栏"><a href="#主题的侧边栏" class="headerlink" title="主题的侧边栏"></a>主题的侧边栏</h1><blockquote><p>侧边栏的链接生效</p><p>将&#x2F;hello-blog&#x2F;themes&#x2F;hexo-theme-pure&#x2F;_source&#x2F;下的除了_data文件夹,其余文件夹</p><p>拷贝一份放入到hello-blog目录下的source目录中即可</p></blockquote><h1 id="文章的分类和标签"><a href="#文章的分类和标签" class="headerlink" title="文章的分类和标签"></a>文章的分类和标签</h1><blockquote><p>只需要在文章的.md文件的自动生成的头部添加</p><div class="highlight-container" data-rel="Txt"><figure class="iseeu highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">title: java</span><br><span class="line">date: 2021-07-13 08:44:42</span><br><span class="line">categories: java</span><br><span class="line">tags: </span><br><span class="line">- java</span><br></pre></td></tr></table></figure></div></blockquote><h1 id="博客的语言环境设置"><a href="#博客的语言环境设置" class="headerlink" title="博客的语言环境设置"></a>博客的语言环境设置</h1><blockquote><p>设置中文</p><p>hello-blog下的_config.yml文件中</p><p>language: zh-CN</p></blockquote><h1 id="图片显示问题"><a href="#图片显示问题" class="headerlink" title="图片显示问题"></a>图片显示问题</h1><blockquote><ol><li><p>安装插件 -</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-asset-img --save</span><br></pre></td></tr></table></figure></div></li><li><p>需要到hello-blog&#x2F;_config.yml文件中进行配置</p></li></ol><div class="highlight-container" data-rel="Yml"><figure class="iseeu highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#修改post_asset_folder</span></span><br><span class="line"><span class="attr">post_asset_folder:</span> <span class="literal">true</span></span><br><span class="line"><span class="comment">#添加或者重新以下内容</span></span><br><span class="line"><span class="attr">marked:</span></span><br><span class="line">     <span class="attr">prependRoot:</span> <span class="literal">true</span></span><br><span class="line">     <span class="attr">postAsset:</span> <span class="literal">true</span></span><br><span class="line"></span><br></pre></td></tr></table></figure></div></blockquote><blockquote><ol start="3"><li>hexo n mysql</li></ol><p><code>效果就是除了生成了mysql.md还有一个mysql文件夹,那么这篇文章的所有的图片就可以存储在mysql文件夹中</code></p><p>想要Typora和博客上均能显示图片,必须以以下格式: 两个都试试</p><div class="highlight-container" data-rel="Markdown"><figure class="iseeu highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">#macOS</span></span><br><span class="line">![](<span class="link">mysql/mysql.png</span>)</span><br><span class="line"><span class="code">         </span></span><br><span class="line"><span class="code">#win</span></span><br><span class="line"><span class="code">![](./mysql/mysql.png)</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">Bug: 图片设置缩放后,插件失效.</span><br><span class="line"></span><br><span class="line">原因:md文件中的图片 变成了<span class="language-xml"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;mysql/mysql.peng&quot;</span> <span class="attr">....</span>/&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="bullet">4.</span> hexo s</span><br></pre></td></tr></table></figure></div></blockquote><h1 id="内置搜索的功能"><a href="#内置搜索的功能" class="headerlink" title="内置搜索的功能"></a>内置搜索的功能</h1><blockquote><div class="highlight-container" data-rel="Yml"><figure class="iseeu highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#主题配置文件中</span></span><br><span class="line"><span class="attr">local_search:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  </span><br><span class="line"><span class="comment">#站点配置文件中</span></span><br><span class="line"><span class="attr">search:</span></span><br><span class="line"><span class="attr">path:</span> <span class="string">search.xml</span></span><br><span class="line"><span class="attr">field:</span> <span class="string">post</span></span><br><span class="line"><span class="attr">format:</span> <span class="string">html</span></span><br><span class="line"><span class="attr">limit:</span> <span class="number">10000</span></span><br><span class="line"></span><br></pre></td></tr></table></figure></div><p>安装内置搜索插件</p><p>npm install hexo-generator-searchdb –save</p></blockquote><h1 id="评论"><a href="#评论" class="headerlink" title="评论"></a>评论</h1><blockquote><p>不需要本地数据库进行存储的,用的是第三方的.</p><p>LeanCloud - 官网地址 - <a class="link"   href="https://www.leancloud.cn/" >https://www.leancloud.cn/ <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><p>需要选择国际版</p><p>注册 - 登录 - 控制台 - 创建应用 - 右下设置 - 应用凭证</p><p>appId - sljUq97vUAdLAo7XQdf13aFR-gzGzoHsz</p><p>appKey - 3hn4ijEgSzJeRV4nkmXThmGV</p></blockquote><p><code>在hexo-theme-pure\_config.yml文件中配置</code></p><blockquote><div class="highlight-container" data-rel="Yml"><figure class="iseeu highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">valine:</span> <span class="comment"># Valine. https://valine.js.org</span></span><br><span class="line">  <span class="attr">appid:</span> <span class="string">sljUq97vUAdLAo7XQdf13aFR-gzGzoHsz</span>  <span class="comment"># your leancloud application appid</span></span><br><span class="line">  <span class="attr">appkey:</span> <span class="string">3hn4ijEgSzJeRV4nkmXThmGV#</span> <span class="string">your</span> <span class="string">leancloud</span> <span class="string">application</span> <span class="string">appkey</span></span><br><span class="line">  <span class="attr">notify:</span> <span class="literal">false</span> <span class="comment"># mail notifier , https://github.com/xCss/Valine/wiki</span></span><br><span class="line">  <span class="attr">verify:</span> <span class="literal">false</span> <span class="comment"># Verification code</span></span><br><span class="line">  <span class="attr">placeholder:</span> <span class="string">Just</span> <span class="string">go</span> <span class="string">go</span> <span class="comment"># comment box placeholder</span></span><br><span class="line">  <span class="attr">avatar:</span> <span class="string">mm</span> <span class="comment"># gravatar style</span></span><br><span class="line">  <span class="attr">meta:</span> <span class="string">nick,mail,link</span> <span class="comment"># custom comment header</span></span><br><span class="line">  <span class="attr">pageSize:</span> <span class="number">10</span> <span class="comment"># pagination size</span></span><br><span class="line">  <span class="attr">visitor:</span> <span class="literal">true</span> <span class="comment"># Article reading statistic https://valine.js.org/visitor.html</span></span><br><span class="line">  <span class="attr">serverURLs:</span> <span class="string">https://appID前八位.api.lncldglobal.com</span></span><br></pre></td></tr></table></figure></div></blockquote><p>#字数统计&amp;阅读时长</p><blockquote><ol><li><p>npm i -S hexo-wordcount</p></li><li><p>hexo-theme-pure_config.yml文件中配置</p><div class="highlight-container" data-rel="Yml"><figure class="iseeu highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">postCount:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">wordcount:</span> <span class="literal">true</span>  <span class="comment"># 文章字数统计</span></span><br><span class="line">  <span class="attr">min2read:</span> <span class="literal">true</span>  <span class="comment"># 阅读时长预计 </span></span><br></pre></td></tr></table></figure></div></li></ol></blockquote><p>也可以使用 busuanzi,具体自己csdn</p><h1 id="附件-优秀插件"><a href="#附件-优秀插件" class="headerlink" title="附件-优秀插件"></a>附件-优秀插件</h1><blockquote><ol><li><p>显示图片</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-asset-img --save</span><br></pre></td></tr></table></figure></div></li><li><p>内置搜索</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-generator-searchdb --save</span><br></pre></td></tr></table></figure></div></li><li><p>字数统计&amp;阅读时长</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">npm i -S hexo-wordcount</span><br><span class="line">                  </span><br></pre></td></tr></table></figure></div></li></ol></blockquote><blockquote><ol start="4"><li><p>github部署</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure></div></li></ol></blockquote><h1 id="配置host访问github"><a href="#配置host访问github" class="headerlink" title="配置host访问github"></a>配置host访问github</h1><blockquote><ol><li><p>按照路径<strong>C:&#x2F;Windows&#x2F;System32&#x2F;etc&#x2F;HOSTS</strong>，找到<a class="link"   href="https://so.csdn.net/so/search?q=HOSTS%E6%96%87%E4%BB%B6&spm=1001.2101.3001.7020" >HOSTS文件 <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a>（System32可能会直接看不到etc文件夹，可以在右上角搜索etc文件夹再双击打开</p></li><li><p>站长工具: <a class="link"   href="https://ping.chinaz.com/github.com" >https://ping.chinaz.com/github.com <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a>  ping一下github </p><p>选择一个延迟低的站点: 例如 <a class="link"   href="https://ip.tool.chinaz.com/20.248.137.48" >20.248.137.48 <i class="fa-regular fa-arrow-up-right-from-square fa-sm"></i></a></p><p>a .在终端中 执行</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ping</span> <span class="number">20</span>.<span class="number">248</span>.<span class="number">137</span>.<span class="number">48</span></span><br></pre></td></tr></table></figure></div><p>b.如果能够ping 通就在host文件中添加</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">20</span>.<span class="number">248</span>.<span class="number">137</span>.<span class="number">48</span> github.com</span><br></pre></td></tr></table></figure></div><p>c.释放ip</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ipconfig</span>/release</span><br></pre></td></tr></table></figure></div><p>d. 尝试ping github.com</p><div class="highlight-container" data-rel="Autoit"><figure class="iseeu highlight autoit"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ping</span> github.com</span><br></pre></td></tr></table></figure></div><p>a步骤超时的话换一个节点继续重复abcd.</p><p>至此就可以访问github,如果有魔法就不用这么弄了.</p></li></ol></blockquote><h1 id="部署github"><a href="#部署github" class="headerlink" title="部署github"></a>部署github</h1><blockquote><p> 首先要安装了git,并且注册了Github.</p></blockquote><blockquote><p>在本地终端执行</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name &quot;github用户名&quot; </span><br><span class="line"></span><br><span class="line">git config --global user.email &quot;github邮箱&quot;</span><br></pre></td></tr></table></figure></div></blockquote><blockquote><p>新建的仓库</p><p>名称必须是<strong>Github用户名.github.io</strong></p><p>需要添加README.md</p></blockquote><blockquote><p>安装github部署插件</p><p>在hexo-log目录下执行以下命令</p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure></div></blockquote><blockquote><p>获取一个“Tokens”</p><p>在Github找的 <code>Settings</code> –&gt; 左边栏最下方<code>Developer settings</code> —&gt; 左边栏<code>Personal access tokens</code> 中选择<code>Tokens(classic)</code>  </p><p>新建一个token:  选择<code>Generate new token </code> 选择第二个 </p></blockquote><blockquote><p>note 任意填写, 勾选<code>repo</code> 然后直接创建</p><p>完成后复制创建出来的<code>key</code></p></blockquote><blockquote><p>hello-blog&#x2F;_config.yml文件</p><div class="highlight-container" data-rel="Yml"><figure class="iseeu highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">deploy:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line">  <span class="attr">repo:</span> <span class="string">https://key@github.com/Github用户名/Github用户名.github.io.git</span></span><br><span class="line">  <span class="attr">branch:</span> <span class="string">mian</span></span><br></pre></td></tr></table></figure></div></blockquote><p><code>hexo三连操作</code></p><div class="highlight-container" data-rel="Cmd"><figure class="iseeu highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo cl &amp;&amp; hexo g &amp;&amp; hexo d</span><br></pre></td></tr></table></figure></div><p>浏览器输入 - Github用户名.github.io</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;hexo-github搭建博客服务器&quot;&gt;&lt;a href=&quot;#hexo-github搭建博客服务器&quot; class=&quot;headerlink&quot; title=&quot;hexo+github搭建博客服务器&quot;&gt;&lt;/a&gt;hexo+github搭建博客服务器&lt;/h1&gt;&lt;blockquo</summary>
      
    
    
    
    
    <category term="Hexo" scheme="http://example.com/tags/Hexo/"/>
    
    <category term="Github" scheme="http://example.com/tags/Github/"/>
    
    <category term="Git" scheme="http://example.com/tags/Git/"/>
    
  </entry>
  
</feed>
