<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>工具 - 分类 - ISLAND</title><link>https://youngxhui.top/categories/%E5%B7%A5%E5%85%B7/</link><description>工具 - 分类 - ISLAND</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>youngxhui@gmail.com (youngxhui)</managingEditor><webMaster>youngxhui@gmail.com (youngxhui)</webMaster><copyright>本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。</copyright><lastBuildDate>Sun, 18 Sep 2022 16:25:17 +0800</lastBuildDate><atom:link href="https://youngxhui.top/categories/%E5%B7%A5%E5%85%B7/" rel="self" type="application/rss+xml"/><item><title>vim 学习路径</title><link>https://youngxhui.top/2022/09/vim%E5%85%A5%E9%97%A8/</link><pubDate>Sun, 18 Sep 2022 16:25:17 +0800</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2022/09/vim%E5%85%A5%E9%97%A8/</guid><description><![CDATA[<p>说起来已经很久很久都没有写博客了。从毕业到工作，这段时间感觉很忙很忙，失去了自己思考的时间，每天感觉像流水线上的机器，不停的写代码写代码，自己本身却没有多大的提升。</p>
<p>新手不要使用终端 vim。</p>
<h2 id="入门建议" class="headerLink">
    <a href="#%e5%85%a5%e9%97%a8%e5%bb%ba%e8%ae%ae" class="header-mark"></a>入门建议</h2><p>之前断断续续的写过一些 vim 的相关文章，和断断续续的使用 vim。 之前一直想着把 vim 当作 IDE 使用。但是繁琐的配置和一些不敬如人意的地方，导致在使用过程中会逐步的放弃。</p>
<p>而最近两个月，我开始使用了 vim。使用 vim 来说，就像打字盲打一样，主要靠肌肉记忆，而不是思考。</p>
<p><strong>不是把 vim 当作 IDE，而是把 IDE 当 vim</strong>。 目前，大多数的 IDE 都会有 vim 的相关 keymap 设置，而我目前使用的工具主要是 Vscode 和 Goland。 这两款工具都对 vim 有良好的支持。</p>
<h2 id="vim-的模式" class="headerLink">
    <a href="#vim-%e7%9a%84%e6%a8%a1%e5%bc%8f" class="header-mark"></a>Vim 的模式</h2><p>针对 vim 上手困难，首先的一个困难我觉得来自于它的模式，说实话，从我接触电脑来说，无模式感觉是一种正常的情况。打开 word，可以直接进行编辑，打开 IDE，可以直接进行编码，这种情况对与我来说那就是理所当然，就应该是这样。</p>
<p>而这些对于 vim 来看，有显示的那么反直觉，打开后无从下手，但是当你学会编辑，需要移动的时候，不停的在 normal 和 insert 两个模式换来换去。</p>
<p>这些对于刚刚入手 vim 来说，都将成为放弃的理由。</p>
<h2 id="命令" class="headerLink">
    <a href="#%e5%91%bd%e4%bb%a4" class="header-mark"></a>命令</h2><p>当你逐渐了解了 vim 的模式之后，剩下的就是 vim 的命令，或者说是快捷键。</p>
<p>首先就是移动，通过 <code>h</code>,<code>j</code>,<code>k</code>,<code>l</code> 四个键来进行光标移动，而不是我们习惯的方向键(虽然方向键也可以移动)，熟练使用这四个键进行光标移动绝对是入门 vim 的重要点，刚刚开始的时候是在强迫自己使用这四个键来进行移动，下意识的练习才能使自己不断的掌握 vim 的基本操作。</p>
<p>除了光标的移动，那么剩下的最重要的功能就是编辑了。在编辑过程中，单单就插入来说就有多个快捷键，例如 <code>i</code>，<code>I</code>，<code>a</code>，<code>A</code>，<code>o</code>，<code>O</code> 等，都可以从 normal 模式转化为 insert 模式，但是每个命令又有细微的差别，例如 <code>a</code> 可以理解为 <strong>append</strong> ，那么就是在光标都追加单词，而 <code>i</code> 可以记忆为 <strong>insert</strong> ，表示为光标前添加。</p>
<p>为了熟练的掌握这些命令，在刚刚开始使用的时候，嘴里或者心里都会默念一些 <strong>“口诀”</strong> 。</p>
<p>例如我修改引号内代码，就念 <strong>c</strong>hange <strong>i</strong>nner <strong>&quot;</strong> 手上对应的 <code>c</code>，<code>i</code>，<code>⇧ '</code>。</p>
<p>但是还有一个问题，你需要知道这些快捷键，你才能在心中默念出相关“口诀”，vim的相关命令比较多，而且同一键在不同的情况下代表的含义是不一样的，比如上述提到的 <code>i</code>，可以是 <code>insert</code>，还可以是 <code>inner</code>。</p>
<p>这些操作都不需要任何的插件，也不需要任何的设置，对于 vim 来说，这些操作都是一致的。</p>
<h2 id="配置" class="headerLink">
    <a href="#%e9%85%8d%e7%bd%ae" class="header-mark"></a>配置</h2><p>这里我贴出我的 vim 配置。分别是 vscode 和 goland 的。</p>
<h3 id="vscode" class="headerLink">
    <a href="#vscode" class="header-mark"></a>Vscode</h3><div class="code-block highlight is-closed show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">json</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-5" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.easymotion&#34;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.incsearch&#34;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.useSystemClipboard&#34;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.useCtrlKeys&#34;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.hlsearch&#34;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.insertModeKeyBindings&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;before&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;j&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;j&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;after&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;&lt;Esc&gt;&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.normalModeKeyBindingsNonRecursive&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;before&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;&lt;leader&gt;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;d&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;after&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;d&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;d&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;before&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;&lt;C-n&gt;&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;commands&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;:nohl&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;before&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;K&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;commands&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;lineBreakInsert&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;silent&#34;</span><span class="p">:</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;before&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;leader&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;=&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;commands&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;editor.action.formatDocument&#34;</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;before&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;leader&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;g&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">],</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&#34;commands&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;go.test.generate.function&#34;</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.leader&#34;</span><span class="p">:</span> <span class="s2">&#34;&lt;space&gt;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;vim.handleKeys&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;&lt;C-a&gt;&#34;</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;&lt;C-f&gt;&#34;</span><span class="p">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;editor.lineNumbers&#34;</span><span class="p">:</span> <span class="s2">&#34;relative&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</div>
<h3 id="goland-idea" class="headerLink">
    <a href="#goland-idea" class="header-mark"></a>Goland (IDEA)</h3><div class="code-block highlight is-closed show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">text</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-6" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="s2">&#34;&#34;</span> <span class="n">Source</span> <span class="n">your</span> <span class="o">.</span><span class="n">vimrc</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;source ~/.vimrc</span>
</span></span><span class="line"><span class="cl"><span class="n">let</span> <span class="n">mapleader</span><span class="o">=</span><span class="s2">&#34; &#34;</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;</span> <span class="o">--</span> <span class="n">Suggested</span> <span class="n">options</span> <span class="o">--</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34; Show a few lines of context around the cursor. Note that this makes the</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34; text scroll if you mouse-click near the start or end of the window.</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">scrolloff</span><span class="o">=</span><span class="mi">5</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">so</span><span class="o">=</span><span class="mi">5</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;set ideajoin</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;set idearefactormode=keep</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;set relativenumber</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">nu</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">showmode</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">relativenumber</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">clipboard</span><span class="o">+=</span><span class="n">unnamed</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">clipboard</span><span class="o">+=</span><span class="n">ideaput</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">virtualedit</span><span class="o">=</span><span class="n">onemore</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;set cursorline</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">keep</span><span class="o">-</span><span class="n">english</span><span class="o">-</span><span class="ow">in</span><span class="o">-</span><span class="n">normal</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s2">&#34; Do incremental searching.</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">incsearch</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s2">&#34; Don&#39;t use Ex mode, use Q for formatting.</span>
</span></span><span class="line"><span class="cl"><span class="n">map</span> <span class="n">Q</span> <span class="n">gq</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">surround</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">multiple</span><span class="o">-</span><span class="n">cursors</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">commentary</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">argtextobj</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34; set easymotion</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">textobj</span><span class="o">-</span><span class="n">entire</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">ReplaceWithRegister</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">exchange</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;</span> <span class="o">--</span> <span class="n">Map</span> <span class="n">IDE</span> <span class="n">actions</span> <span class="n">to</span> <span class="n">IdeaVim</span> <span class="o">--</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">jb</span><span class="o">.</span><span class="n">gg</span><span class="o">/</span><span class="n">abva4t</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;</span> <span class="n">Map</span> \<span class="n">r</span> <span class="n">to</span> <span class="n">the</span> <span class="n">Reformat</span> <span class="n">Code</span> <span class="n">action</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;</span> <span class="n">Map</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">d</span> <span class="n">to</span> <span class="n">start</span> <span class="n">debug</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;map &lt;leader&gt;d &lt;Action&gt;(Debug)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;</span> <span class="n">Map</span> \<span class="n">b</span> <span class="n">to</span> <span class="n">toggle</span> <span class="n">the</span> <span class="k">breakpoint</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span> <span class="n">line</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;map </span><span class="se">\b</span><span class="s2"> &lt;Action&gt;(ToggleLineBreakpoint)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s2">&#34; map &lt;leader&gt;f &lt;Plug&gt;(easymotion-s)</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34; map &lt;leader&gt;e &lt;Plug&gt;(easymotion-f)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">nmap</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">d</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">Debug</span><span class="p">)</span> <span class="s2">&#34; Debug 当前方法</span>
</span></span><span class="line"><span class="cl"><span class="n">map</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">r</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">RenameElement</span><span class="p">)</span> <span class="s2">&#34; 重命名变量</span>
</span></span><span class="line"><span class="cl"><span class="n">noremap</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">c</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">Stop</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">noremap</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">z</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">ToggleDistractionFreeMode</span><span class="p">)</span> <span class="s2">&#34; 禅模式</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">map</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">SelectInProjectView</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">map</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">a</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">Annotate</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">map</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">Vcs</span><span class="o">.</span><span class="n">ShowTabbedFileHistory</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">map</span> <span class="o">&lt;</span><span class="n">S</span><span class="o">-</span><span class="n">Space</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">GotoNextError</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">map</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">b</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">ToggleLineBreakpoint</span><span class="p">)</span> <span class="s2">&#34; 打断点</span>
</span></span><span class="line"><span class="cl"><span class="n">map</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">o</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">FileStructurePopup</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34; Editor</span>
</span></span><span class="line"><span class="cl"><span class="n">nmap</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;=</span> <span class="o">&lt;</span><span class="n">Action</span><span class="o">&gt;</span><span class="p">(</span><span class="n">ReformatCode</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s2">&#34; Find more examples here: https://jb.gg/share-ideavimrc</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34; 全局查找</span>
</span></span><span class="line"><span class="cl"><span class="n">noremap</span> <span class="n">g</span><span class="o">/</span> <span class="o">&lt;</span><span class="n">ESC</span><span class="o">&gt;</span><span class="p">:</span><span class="n">action</span> <span class="n">FindInPath</span><span class="o">&lt;</span><span class="n">CR</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">noremap</span> <span class="o">/</span> <span class="o">&lt;</span><span class="n">ESC</span><span class="o">&gt;</span><span class="p">:</span><span class="n">action</span> <span class="n">Find</span><span class="o">&lt;</span><span class="n">CR</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="n">noremap</span> <span class="o">&lt;</span><span class="n">leader</span><span class="o">&gt;</span><span class="n">g</span> <span class="o">&lt;</span><span class="n">ESC</span><span class="o">&gt;</span><span class="p">:</span><span class="n">action</span> <span class="n">Generate</span><span class="o">&lt;</span><span class="n">CR</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="n">set</span> <span class="n">ideajoin</span></span></span></code></pre>
</div>
]]></description></item><item><title>Nvim配置</title><link>https://youngxhui.top/2021/10/nvim%E9%85%8D%E7%BD%AE/</link><pubDate>Tue, 26 Oct 2021 16:23:17 +0800</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2021/10/nvim%E9%85%8D%E7%BD%AE/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://island-hexo.oss-cn-beijing.aliyuncs.com/post/neovim.png" referrerpolicy="no-referrer">
            </div><div class="details admonition tip open">
    <div class="details-summary admonition-title">
        <span class="icon"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"/></svg></span>阅读建议<span class="details-icon"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"/></svg></span>
    </div>
    <div class="details-content">
        <div class="admonition-content">当前文章过于粗糙，建议阅读 <a href="https://youngxhui.top/categories/neovim/" target="_blank" rel="noopener noreferrer">neovim 使用指南系列文章</a></div></div></div>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/nvim%E6%95%88%E6%9E%9C.png'     ></p>
<p>这已经是我第 N + 1 次尝试 vim 了。这是之前的 <a href="./vim-%e5%9f%ba%e7%a1%80%e5%ad%a6%e4%b9%a0.md" rel="">基础教程</a></p>
<p>个人认为学习 vim 的曲线是比较陡峭的，尤其是刚刚开始的时候，各种指令让人根本记不住。就连熟悉的 Ctrl c/v 大法都不能用了。</p>
<p>这里我安装的是 <a href="https://neovim.io/" target="_blank" rel="noopener noreferrer">neovim</a></p>
<h2 id="命令" class="headerLink">
    <a href="#%e5%91%bd%e4%bb%a4" class="header-mark"></a>命令</h2><p>后来开始慢慢的尝试，发现要学会 vim 的各种命令，首先要明白各种命令代表着是什么意思。</p>
<table>
  <thead>
      <tr>
          <th>命令</th>
          <th>操作</th>
          <th>解释</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>a</td>
          <td>在光标尾部进行编辑</td>
          <td>append</td>
      </tr>
      <tr>
          <td>i</td>
          <td>在光标首部进行编辑</td>
          <td>insert</td>
      </tr>
      <tr>
          <td>o</td>
          <td>在光标下一行进行编辑</td>
          <td>-</td>
      </tr>
      <tr>
          <td>y</td>
          <td>复制</td>
          <td>yank</td>
      </tr>
      <tr>
          <td>p</td>
          <td>粘贴</td>
          <td>pates</td>
      </tr>
      <tr>
          <td>u</td>
          <td>撤销</td>
          <td>undo</td>
      </tr>
      <tr>
          <td>ctrl+r</td>
          <td>反撤销</td>
          <td>redu</td>
      </tr>
  </tbody>
</table>
<p>命令实在太多了，需要慢慢记忆和使用。</p>
<h2 id="插件" class="headerLink">
    <a href="#%e6%8f%92%e4%bb%b6" class="header-mark"></a>插件</h2><p>任何一款强大的编辑器都离不开插件系统的支持，有插件的支持可以使得任何文本编辑器逐渐媲美IDE。</p>
<p>在vim中安装插件要麻烦一点，毕竟原有的 vim 本身并没有插件系统，需要其他程序来实现。</p>
<p>neovim 在 windows 中的配置文件在 <code>~/AppData/Local/nvim</code> 中的 init.vim （如果没有该文件自己新建一个即可）。</p>
<p>首先安装插件系统，对于 vim 中的插件系统是很多的。例如 Vundle、NeoBundle、VimPlug等。</p>
<p>我使用的是 vimPlug 。首先要安装 VimPlug 。对于 Vimplug 在windows上的安装只需要一行命令。</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">bash</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-5" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl">iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim <span class="p">|</span><span class="sb">`</span>
</span></span><span class="line"><span class="cl">    ni <span class="s2">&#34;</span><span class="k">$(</span>@<span class="o">(</span><span class="nv">$env</span>:XDG_DATA_HOME, <span class="nv">$env</span>:LOCALAPPDATA<span class="k">)</span><span class="s2">[</span><span class="nv">$null</span><span class="s2"> -eq </span><span class="nv">$env</span><span class="s2">:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim&#34;</span> -Force</span></span></code></pre>
</div>
<p>安装完成需要将下面配置添加到 init.vim 中的插件系统是很多的。例如</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">vim</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-6" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="nx">call</span> <span class="nx">plug</span>#<span class="nx">begin</span><span class="p">(</span><span class="s1">&#39;~/AppData/Local/nvim/plugged&#39;</span><span class="p">)</span> 
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">call</span> <span class="nx">plug</span>#<span class="nx">end</span><span class="p">()</span></span></span></code></pre>
</div>
<p>插件将在这个块中进行配置。</p>
<p>新增插件后只需要保存后，通过命令 <code>:PlugInstall</code> 命令进行安装即可。</p>
<h2 id="golang-环境" class="headerLink">
    <a href="#golang-%e7%8e%af%e5%a2%83" class="header-mark"></a>Golang 环境</h2><h3 id="对-golang-的支持" class="headerLink">
    <a href="#%e5%af%b9-golang-%e7%9a%84%e6%94%af%e6%8c%81" class="header-mark"></a>对 Golang 的支持</h3><p><a href="https://github.com/fatih/vim-go" target="_blank" rel="noopener noreferrer">vim-go</a> 是一个很好的插件，安装即可完成对 golang 的支持。其中第一次使用的时候需要安装一些配置。通过命令 <code>:GoInstallBinaries</code> 安装必要的包。等待安装完成后就有了基本的对 Golang 的支持了，比如运行代码等。通过 <code>:GoRun</code> 就可以完成代码的运行，但是目前还有问题，下方的输出会看不到多余的输出代码，这个问题还要继续研究研究。</p>
<p>vim-go 还有很多功能，日后逐渐熟悉了再介绍。</p>
<h3 id="自动补全" class="headerLink">
    <a href="#%e8%87%aa%e5%8a%a8%e8%a1%a5%e5%85%a8" class="header-mark"></a>自动补全</h3><p>自从微软提出了 LSP 服务，自动补全变得比较统一。通过安装 <a href="https://github.com/neoclide/coc.nvim" target="_blank" rel="noopener noreferrer">coc-nvim</a> 来进行自动补全。我这里主要是 Golang 的自动补全。</p>
<p>需要 nodejs 环境进行自动补全。 Coc 是 vim 的插件，同时 Coc 又有自己的插件（套娃组合）</p>
<p>通过 <code>:CocInstall</code> 进行安装服务。</p>
<p>在完成 Golang 的 LSP 服务后，就可以完成自动补全了。</p>
<p>效果如下所示</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8.png'     ></p>
<p>有自动补全的提示和文档提示。</p>
]]></description></item><item><title>vscode 配置c/c++环境</title><link>https://youngxhui.top/2018/05/vscode-%E9%85%8D%E7%BD%AEc-c-%E7%8E%AF%E5%A2%83/</link><pubDate>Mon, 07 May 2018 20:50:56 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2018/05/vscode-%E9%85%8D%E7%BD%AEc-c-%E7%8E%AF%E5%A2%83/</guid><description><![CDATA[<h1 id="前言" class="headerLink">
    <a href="#%e5%89%8d%e8%a8%80" class="header-mark"></a>前言</h1><blockquote>
  <p>工欲善其事，必先利其器</p>

</blockquote><p>最近重新开始了学习c语言和数据结构的过程，毕竟考研要用，所以 clon 在windows上的表现一直感觉不如在linux上，而且也重量，所以不打算使用 clon,而是打算用微软的vscode+gcc完成。</p>
<h1 id="-基于命令行运行" class="headerLink">
    <a href="#-%e5%9f%ba%e4%ba%8e%e5%91%bd%e4%bb%a4%e8%a1%8c%e8%bf%90%e8%a1%8c" class="header-mark"></a># 基于命令行运行</h1><p>首先肯定要下载和安装好 <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">visual studio code</a> 和下载 <a href="http://www.mingw.org/" target="_blank" rel="noopener noreferrer">minGW</a>。这里不在赘述，安装好 <code>minGW</code> 记得配置环境变量。在终端中敲入 gcc -v 查看<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/gcc.png'     ></p>
<p>然后我们新建一个文件夹并且在文件夹里新建一个 <code>Hello.cpp</code> 文件并且用 <code>vscode</code> 打开，此时 <code>vscode</code> 会提示你安装插件。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/vscgcc.png'     ></p>
<p>此时我们在Hello.cpp中书写我们的代码</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">c</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-1" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&#34;stdio.h&#34;</span><span class="cp">
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="nf">printf</span><span class="p">(</span><span class="s">&#34;Hello World </span><span class="se">\n</span><span class="s">&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</div>
<p>打开终端，使用 gcc Hello.cpp 进行编译，会形成一个a.exe的文件。然后输入 a.exe 就可以运行</p>
<blockquote>
  <p>gcc Hello.cpp</p>
<p>a.exe</p>

</blockquote><p>这样就会编译和运行一个HelloWorld</p>
]]></description></item><item><title>Git教程及使用经验</title><link>https://youngxhui.top/2017/04/git%E6%95%99%E7%A8%8B%E5%8F%8A%E4%BD%BF%E7%94%A8%E7%BB%8F%E9%AA%8C/</link><pubDate>Sun, 30 Apr 2017 20:49:21 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2017/04/git%E6%95%99%E7%A8%8B%E5%8F%8A%E4%BD%BF%E7%94%A8%E7%BB%8F%E9%AA%8C/</guid><description><![CDATA[<h2 id="前言" class="headerLink">
    <a href="#%e5%89%8d%e8%a8%80" class="header-mark"></a>前言</h2><p>经过一周的准备，完成了 Git 的一些使用经验及教程。</p>
<p>主要是从命令行的角度来讲解。</p>
<h2 id="git-是什么" class="headerLink">
    <a href="#git-%e6%98%af%e4%bb%80%e4%b9%88" class="header-mark"></a>Git 是什么</h2><p>git 在维基百科上的解释是这样的</p>
<blockquote>
  <p>git是一个分布式版本控制软件，最初由林纳斯·托瓦兹（Linus Torvalds）创作，于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是，这与GNU Interactive Tools（一个类似Norton Commander界面的文件管理器）有所不同。</p>

</blockquote><p>在我看来 Git 是一个 版本控制工具 和 团队协作 软件。</p>
<h2 id="git-版本控制" class="headerLink">
    <a href="#git-%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6" class="header-mark"></a>Git 版本控制</h2><p>简单的使用看这个博客 <a href="http://youngxhui.github.io/2016/08/13/Git%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/" target="_blank" rel="noopener noreferrer">Git教程操作</a></p>
<p>这个博客会在这个基础上更加详细的讲解命令行的使用，以及一些操作原理。</p>
<h3 id="git-status" class="headerLink">
    <a href="#git-status" class="header-mark"></a>git status</h3><p>当我们通过 <code>git add</code> 命令添加文件到 git 中的时候，可以通过 <code>git status</code> 来了解当前代码库的情况。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/git%20status.png'     ></p>
<p>通过 <code>git status</code>这个命令我们可以知道当前代码库的状态</p>
<h3 id="git-add--" class="headerLink">
    <a href="#git-add--" class="header-mark"></a>git add -?</h3><p>为什么每次都要使用 <code>git add</code> 把修改文件添加，之后在提交。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/git%E4%BB%93%E5%BA%93.png'     ></p>
<p>这就是 git 的一个原理图。</p>
<p>git 工作时候分为工作区和版本库。工作区就是我们自己本地编辑的区域。而代码库又有一个 暂存区/缓存区。我们每次提交版本(<code>commit</code>) 都是在暂存区向代码库提交。所以我们每次都要通过 <code>add</code> 命令进行对修改的添加。</p>
<p>在给 git 添加文件的时候，我们使用的是 <code>git add &lt;filename&gt;</code>,但是当我们要添加大量的文件的时候，采用 <code>git add</code> 不仅浪费时间，而且还容易出错。此时我们使用 <code>git add -A</code> 会把所更改(包括文件的添加，删除，修改)的文件添加到代码库中。</p>
<p><code>git add -i</code> 会进入一个命令的子系统，提供我们选择。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/git%20add%20-i.png'     ></p>
<h3 id="git-diff" class="headerLink">
    <a href="#git-diff" class="header-mark"></a>git diff</h3><p><code>git diff</code> 是一个比较代码的命令，如果不加参数表示本次和上一次的比较。我们可以添加要比较的两个版本的哈希值。</p>
<p><code>git diff 01df58 6e1baa</code></p>
<h2 id="git-协作开发" class="headerLink">
    <a href="#git-%e5%8d%8f%e4%bd%9c%e5%bc%80%e5%8f%91" class="header-mark"></a>Git 协作开发</h2><p>之前的 Git 是用来用做简单的 版本控制，记录了每一个版本。下面我们进行团队协作开发。</p>
<h3 id="git-分支" class="headerLink">
    <a href="#git-%e5%88%86%e6%94%af" class="header-mark"></a>Git 分支</h3><p>当一个人开发功能 A 而另一个人开发功能 B ，之后代码进行整合的时候，使代码既有功能 A 也有功能 B 。在 Git 中，Git 给了我们分支的概念。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/git%20branch-a.png'     ></p>
<p>分支可以使用我们快速的开发协作，并且快速的合并。</p>
<h3 id="分支的使用" class="headerLink">
    <a href="#%e5%88%86%e6%94%af%e7%9a%84%e4%bd%bf%e7%94%a8" class="header-mark"></a>分支的使用</h3><p>通过命令 <code>git branch</code> 来查看分支情况，当前分支会前面带 * 标识。<code>git branch &lt;branch name&gt;</code> 来创建分支。
分支创建会拷贝当前的内容到新的分支。通过 <code>git checkout &lt;branch name&gt;</code> 来切换到我们需要切换的分支。</p>
<p>我们也可以通过 <code>git checkout -b &lt;filename&gt;</code> 来创建分支并且切换到该分支。</p>
<h3 id="分支的合并" class="headerLink">
    <a href="#%e5%88%86%e6%94%af%e7%9a%84%e5%90%88%e5%b9%b6" class="header-mark"></a>分支的合并</h3><p>当我们创建出新的分支的时候，就可以对这个分支进行版本的迭代。当我们做完版本迭代，版本更新的时候，就会向我们的 <code>master</code> 分支上就行合并。</p>
<p>如果我们要向 <code>master</code> 分支上合并我们新创建的分支叫 <code>dev</code> ，那么我们先切换分支到 <code>master</code>，在通过 <code>git merge dev</code> 进行合并两个分支。期间会有合并冲突，通过修改来进行保留。</p>
<h2 id="git-flow" class="headerLink">
    <a href="#git-flow" class="header-mark"></a>Git flow</h2><p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/git%20flow.png'     ></p>
<p>如上图，git flow 是 <code>git</code> 给我们的一个协作的开发流程，<code>master</code> 分支一般是用于上线产品的发布，<code>develop</code> 分支使用开发， 在他的支线上我们一般会创建功能分支。我们在功能分支上开发完成后合并到 <code>develop</code> 分支上。这样就完成了我们的 git flow 开发。</p>
<p><a href="https://island-hexo.oss-cn-beijing.aliyuncs.com/Git&amp;Github.pptx" target="_blank" rel="noopener noreferrer">PPT下载</a></p>
]]></description></item><item><title>Junit单元测试</title><link>https://youngxhui.top/2017/01/junit%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/</link><pubDate>Thu, 19 Jan 2017 16:14:08 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2017/01/junit%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/</guid><description><![CDATA[<h1 id="什么是junit" class="headerLink">
    <a href="#%e4%bb%80%e4%b9%88%e6%98%afjunit" class="header-mark"></a>什么是Junit</h1><p>什么是Junit，Junit是用于java代码单元测试的框架。</p>
<h1 id="为什么要用junit" class="headerLink">
    <a href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e7%94%a8junit" class="header-mark"></a>为什么要用Junit</h1><p>简单的说，我们在写java代码的时候每次写完一个类，都要写一个<code>public static void main(String args[])</code>的方法来进行方法的调用，写完之后再删除，如果类比较多那么我们所创建的方法也比较多，操作起来比较麻烦。而Junit就是为了解决这种情况，他可以在一个类里面创建多个可运行的方法，来进行测试，这便是我们所使用Junit的原因。</p>
<h1 id="如何使用" class="headerLink">
    <a href="#%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8" class="header-mark"></a>如何使用</h1><p>我们在我们的项目中使用Junit需要先下载<code>junit.jar</code>包和<code>hamcrest-core.jar</code>并添加<a href="https://github.com/junit-team/junit4/wiki/Download-and-Install" target="_blank" rel="noopener noreferrer">Github地址</a>。
这样我们就可以进行使用了。</p>
<h2 id="示例代码" class="headerLink">
    <a href="#%e7%a4%ba%e4%be%8b%e4%bb%a3%e7%a0%81" class="header-mark"></a>示例代码</h2><p>我们创建了一个<code>HelloWorld</code>的类，类里面有<code>sayHello</code>这个方法，我们要对这个方法进行测试。</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">java</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-1" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">HelloWorld</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">sayHello</span><span class="p">(){</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;Hello&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</div>
<p>我们写一个类进行测试。</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">java</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-2" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">HelloWorldTest</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nd">@Test</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">sayHello</span><span class="p">()</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">HelloWorld</span><span class="w"> </span><span class="n">helloWorld</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HelloWorld</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">helloWorld</span><span class="p">.</span><span class="na">sayHello</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</div>
<p>我们可以这样对<code>sayHello</code>方法就行测试。</p>
<p>但是，我们创建这个方法要满足一下要求。</p>
<ol>
<li>方法必须是公用且无返回值(<code>public void</code>)</li>
<li>方法必须可以抛出异常<code>throws Exception</code></li>
<li>方法必须用<code>@test</code>注解</li>
</ol>
<p>这样我们就创建好了一个测试方法，并且我们可以在该类下写无数个这个的方法用于不同的测试。</p>
<h1 id="idea演示" class="headerLink">
    <a href="#idea%e6%bc%94%e7%a4%ba" class="header-mark"></a>IDEA演示</h1><ul>
<li>版本IDEA U 2016.3.1</li>
</ul>
<p>首先我们先写好我们的<code>HelloWorld</code>类
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/helloworld.png'     >
针对我们的sayHello方法进行测试，快捷键<code>ctrl+shift+t</code>
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/GIF.gif'     >
这样我们就可以测试我们的方法了。</p>
<p>一般为了方便，我们会新建一个test文件夹。标记为test目录，这样自动生成的test类就会放到test目录中，不影响我们正常编写的代码。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E6%A0%87%E8%AE%B0%E7%9B%AE%E5%BD%95.png'     ></p>
<p>结果如下
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E7%94%9F%E6%88%90test.png'     ></p>
]]></description></item><item><title>Maven入门</title><link>https://youngxhui.top/2017/01/maven%E5%85%A5%E9%97%A8/</link><pubDate>Tue, 10 Jan 2017 11:04:44 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2017/01/maven%E5%85%A5%E9%97%A8/</guid><description><![CDATA[<h1 id="什么是maven" class="headerLink">
    <a href="#%e4%bb%80%e4%b9%88%e6%98%afmaven" class="header-mark"></a>什么是Maven</h1><p><code>Maven</code>是一个<strong>跨平台</strong>的项目管理工具，主要用于基于<code>Java</code>平台的项目构建，依赖管理。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/maven%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.png'   alt="maven的生命周期和功能"  ></p>
<p>maven之前的项目管理一般为 <code>ant</code>。</p>
<h1 id="maven的作用" class="headerLink">
    <a href="#maven%e7%9a%84%e4%bd%9c%e7%94%a8" class="header-mark"></a>Maven的作用</h1><p><code>Maven</code>的出现时为了解决项目的一些问题：</p>
<ol>
<li>如果有好几个项目，这好几个项目中，需要用到很多相同的jar包，
能不能只建立一个仓库来解决这个问题？</li>
<li>测试方法能不能全部运行呢？</li>
<li>怎么样把一个模块的功能放入到仓库中</li>
</ol>
<h1 id="maven的安装和配置" class="headerLink">
    <a href="#maven%e7%9a%84%e5%ae%89%e8%a3%85%e5%92%8c%e9%85%8d%e7%bd%ae" class="header-mark"></a>Maven的安装和配置</h1><h2 id="maven的安装" class="headerLink">
    <a href="#maven%e7%9a%84%e5%ae%89%e8%a3%85" class="header-mark"></a>Maven的安装</h2><h3 id="jdk要求" class="headerLink">
    <a href="#jdk%e8%a6%81%e6%b1%82" class="header-mark"></a>Jdk要求</h3><p>jdk要求1.7+</p>
<h3 id="下载maven" class="headerLink">
    <a href="#%e4%b8%8b%e8%bd%bdmaven" class="header-mark"></a>下载Maven</h3><p>从<a href="http://maven.apache.org/" target="_blank" rel="noopener noreferrer">Maven官网</a>上下载最新版本的<code>Maven</code></p>
<h3 id="设定环境变量" class="headerLink">
    <a href="#%e8%ae%be%e5%ae%9a%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f" class="header-mark"></a>设定环境变量</h3><p>将下载好的<code>Maven</code>的<code>bin</code>追加到环境变量<code>path</code>中。</p>
<h3 id="检查maven是否配置成功" class="headerLink">
    <a href="#%e6%a3%80%e6%9f%a5maven%e6%98%af%e5%90%a6%e9%85%8d%e7%bd%ae%e6%88%90%e5%8a%9f" class="header-mark"></a>检查Maven是否配置成功</h3><p>在cmd中运行<code>mvn -v</code>，当出现下面的提示证明配置正确</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/mvn-v.png'     ></p>
<p><strong>注意：要用管理员权限运行cmd，否则会报错</strong></p>
<h2 id="建库" class="headerLink">
    <a href="#%e5%bb%ba%e5%ba%93" class="header-mark"></a>建库</h2><p><code>Maven</code>的很大作用就是导入<code>jar</code>包,所以我们建立一个仓库来放置项目所用的jar包，在需要的时候进行管理。</p>
<h3 id="路径" class="headerLink">
    <a href="#%e8%b7%af%e5%be%84" class="header-mark"></a>路径</h3><p>Maven的仓库默认路径是<code>C:\Users\UserName\.m2</code> ,<strong>注：UserName为个人电脑名称</strong></p>
<h1 id="maven的约定" class="headerLink">
    <a href="#maven%e7%9a%84%e7%ba%a6%e5%ae%9a" class="header-mark"></a>Maven的约定</h1><table>
  <thead>
      <tr>
          <th>路径</th>
          <th>作用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>src/main/java</td>
          <td>存放项目的java文件</td>
      </tr>
      <tr>
          <td>src/main/resources</td>
          <td>存放项目的资源文件，如spring，hibernate的配置文件</td>
      </tr>
      <tr>
          <td>src/test/java</td>
          <td>存放所有的测试的java文件</td>
      </tr>
      <tr>
          <td>src/test/resources</td>
          <td>存放测试用的资源文件</td>
      </tr>
      <tr>
          <td>target</td>
          <td>项目输出位置</td>
      </tr>
      <tr>
          <td>pom.xml</td>
          <td>文件</td>
      </tr>
  </tbody>
</table>
<p>必须按照这个约定放置</p>
<h1 id="maven项目" class="headerLink">
    <a href="#maven%e9%a1%b9%e7%9b%ae" class="header-mark"></a>Maven项目</h1><p>知道了Maven的约定，那么我们就可以根据约定来进行创建第一个项目。
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E7%9B%AE%E5%BD%95.png'     >
在<code>HelloWorld.java</code>文件</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">java</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-11" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="kn">package</span><span class="w"> </span><span class="nn">com.young.maven.model</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">HelloWorld</span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">sayHello</span><span class="p">(){</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="s">&#34;HelloWorld&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</div>
<p><code>HelloWorldTest.java</code>文件</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">java</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-12" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="kn">package</span><span class="w"> </span><span class="nn">com.young.maven.model</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">org.junit.*</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">org.junit.Assert.*</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">HelloWorldTest</span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nd">@Test</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">testHello</span><span class="p">(){</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">Assert</span><span class="p">.</span><span class="na">assertEquals</span><span class="p">(</span><span class="s">&#34;HelloWorld&#34;</span><span class="p">,</span><span class="k">new</span><span class="w"> </span><span class="n">HelloWorld</span><span class="p">().</span><span class="na">sayHello</span><span class="p">());</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</div>
<p>pom.xml文件</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">xml</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-13" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="cp">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;project</span> <span class="na">xmlns=</span><span class="s">&#34;http://maven.apache.org/POM/4.0.0&#34;</span>
</span></span><span class="line"><span class="cl">         <span class="na">xmlns:xsi=</span><span class="s">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
</span></span><span class="line"><span class="cl">         <span class="na">xsi:schemaLocation=</span><span class="s">&#34;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&#34;</span><span class="nt">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;modelVersion&gt;</span>4.0.0<span class="nt">&lt;/modelVersion&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;groupId&gt;</span>com.young.maven<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;artifactId&gt;</span>maven-model<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;version&gt;</span>1.0-SNAPSHOT<span class="nt">&lt;/version&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;groupId&gt;</span>junit<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;artifactId&gt;</span>junit<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;version&gt;</span>4.10<span class="nt">&lt;/version&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/dependencies&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/project&gt;</span></span></span></code></pre>
</div>
<p>在根目录下执行命令<code>mvn compile</code>
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/comile.png'     >
这样就会编译成功。</p>
<h1 id="maven构建命令" class="headerLink">
    <a href="#maven%e6%9e%84%e5%bb%ba%e5%91%bd%e4%bb%a4" class="header-mark"></a>Maven构建命令</h1><table>
  <thead>
      <tr>
          <th>命令</th>
          <th>作用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>mvn -v</td>
          <td>查看maven版本</td>
      </tr>
      <tr>
          <td>compile</td>
          <td>编译</td>
      </tr>
      <tr>
          <td>test</td>
          <td>测试</td>
      </tr>
      <tr>
          <td>package</td>
          <td>打包</td>
      </tr>
      <tr>
          <td>clean</td>
          <td>删除target</td>
      </tr>
      <tr>
          <td>install</td>
          <td>安装jar到本地仓库</td>
      </tr>
  </tbody>
</table>
<h1 id="maven坐标" class="headerLink">
    <a href="#maven%e5%9d%90%e6%a0%87" class="header-mark"></a>Maven坐标</h1><div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">xml</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-14" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="nt">&lt;groupId&gt;&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;artifactId&gt;&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;version&gt;&lt;/version&gt;</span></span></span></code></pre>
</div>
<p>在Mevan中这三个就是基础坐标也是唯一的表示，可以快速定位到任何一个包</p>
<h1 id="仓库" class="headerLink">
    <a href="#%e4%bb%93%e5%ba%93" class="header-mark"></a>仓库</h1><ul>
<li>本地仓库</li>
<li>远程仓库</li>
<li>镜像仓库</li>
<li></li>
</ul>
<p>如果<code>Maven</code>在本地仓库找不到构建，那么就会去<code>Maven</code>的中央仓库去寻找，如果<code>Maven</code>的中央仓库没有，就会报错。因为Maven的远程仓库在国外,常常无法访问或者很慢,这是我们就要使用一些镜像仓库,来帮助我们。
在&quot;~\apache-maven-3.3.9\conf\settings.xml&quot;文件中，找到<code>mirrors</code>,我们可以修改这里进行镜像设置。</p>
<p><a href="http://mvnrepository.com/" target="_blank" rel="noopener noreferrer">Maven中央仓库</a></p>
<blockquote>
  <p>中央仓库地址: <a href="http://repo.maven.apache.org/" target="_blank" rel="noopener noreferrer">http://repo.maven.apache.org/</a></p>

</blockquote><h1 id="pomxml" class="headerLink">
    <a href="#pomxml" class="header-mark"></a>pom.xml</h1><ul>
<li><code>project</code>是包含了pom的约束信息</li>
<li><code>modelVersion</code>指定了当前pom的版本</li>
<li><code>groupId</code>当前maven输入那个项目，包名+项目名</li>
<li><code>artifactId</code>项目名+模块名
<code>version</code>版本号，第一个0表示大版本号，第二个0表示分支版本号，第三个0表示小版本号。<code>snapshot</code>快照，<code>alpha</code>内部测试版本，<code>beta</code>公测版本，<code>Relese</code>稳定版本，<code>GA</code>正式发布版本。</li>
<li><code>packaging</code>打包方式，默认为jar包，可以为war，zip</li>
<li><code>name</code> 项目描述</li>
<li><code>url</code>项目地址，项目描述</li>
<li><code>developers</code> 开发人员信息</li>
<li><code>licenses</code> 许可信息</li>
<li><code>organization</code>组织信息</li>
</ul>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">xml</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-15" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;groupId&gt;&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;artifactId&gt;&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;version&gt;&lt;/version&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;type&gt;&lt;/type&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;scope&gt;</span>依赖范围<span class="nt">&lt;/scope&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="c">&lt;!--设置依赖是否可选--&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;optional&gt;&lt;/optional&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="c">&lt;!--排除依赖传递列表--&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;exclusions&gt;</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&lt;exclusion&gt;</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&lt;/exclusion&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;/exclusions&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/dependencies&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;dependencyManagement&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;/dependencies&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/dependencyManagement&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;build&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;plugins&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;groupId&gt;&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;artifactId&gt;&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;/plugins&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/build&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;parent&gt;&lt;/parent&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;modules&gt;&lt;/modules&gt;</span></span></span></code></pre>
</div>
<h1 id="maven依赖" class="headerLink">
    <a href="#maven%e4%be%9d%e8%b5%96" class="header-mark"></a>Maven依赖</h1><h2 id="依赖范围" class="headerLink">
    <a href="#%e4%be%9d%e8%b5%96%e8%8c%83%e5%9b%b4" class="header-mark"></a>依赖范围</h2><p><code>scope</code> 控制依赖和三种classpath的关系。</p>
<blockquote>
  <p>三种classpath</p>

</blockquote><ol>
<li>编译</li>
<li>测试</li>
<li>运行</li>
</ol>
<p><code>scope</code>一共有6个值分别为<code>compile</code>,<code>provided</code>,<code>runtime</code>,<code>test</code>,<code>system</code>,<code>import</code>。</p>
<table>
  <thead>
      <tr>
          <th>名称</th>
          <th>范围</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>compile</code></td>
          <td>默认的范围，编译测试运行都要效。</td>
      </tr>
      <tr>
          <td><code>provided</code></td>
          <td>在编译和测试有效，运行时无效。</td>
      </tr>
      <tr>
          <td><code>runtime</code></td>
          <td>在测试和运行时有效</td>
      </tr>
      <tr>
          <td><code>test</code></td>
          <td>仅仅在测试有效</td>
      </tr>
      <tr>
          <td><code>system</code></td>
          <td>在本系统有效，移植性非常差</td>
      </tr>
      <tr>
          <td><code>improt</code></td>
          <td>导入范围，它只是用在dependencyManagement中，表示从其他pom.xml继承的依赖。</td>
      </tr>
  </tbody>
</table>
<h2 id="依赖传递" class="headerLink">
    <a href="#%e4%be%9d%e8%b5%96%e4%bc%a0%e9%80%92" class="header-mark"></a>依赖传递</h2><p>例如<code>MavenB</code>项目依赖<code>MavenA</code>,而<code>MavenC</code>依赖于<code>MavenB</code>，这样的活那么<code>MavenC</code>就会依赖于<code>MavenA</code>。</p>
<h2 id="依赖冲突" class="headerLink">
    <a href="#%e4%be%9d%e8%b5%96%e5%86%b2%e7%aa%81" class="header-mark"></a>依赖冲突</h2><p>A和B依赖不同版本但是相同的构建，就会出现冲突。</p>
<p>处理原则：</p>
<ul>
<li>断路优先
A-&gt;B -&gt; C -&gt;X(jar)
A-&gt;D-&gt;X(jar)
会优先解析路径短的。</li>
<li>先声明先优先
如果两条路径一样，那么先声明的会先依赖。</li>
</ul>
<h1 id="maven创建javaweb" class="headerLink">
    <a href="#maven%e5%88%9b%e5%bb%bajavaweb" class="header-mark"></a>Maven创建JavaWeb</h1><ul>
<li>Maven</li>
<li>IDEA</li>
</ul>
<p>创建Maven项目,选择webapp
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/ideawebapp.png'     >
填写好 <code>GroupId</code>和<code>ArtifacetId</code>之后next。
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/id%E5%A1%AB%E5%86%99.png'     >
这样我们就完成了一次创建。
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E5%AE%8C%E6%88%90.png'     >
因为只为我们创建了resource目录，按照Maven的约定，我们需要创建其他目录。</p>
]]></description></item><item><title>Git基本操作</title><link>https://youngxhui.top/2016/08/git%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/</link><pubDate>Sat, 13 Aug 2016 17:09:57 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2016/08/git%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/</guid><description><![CDATA[<h2 id="下载安装git客户端" class="headerLink">
    <a href="#%e4%b8%8b%e8%bd%bd%e5%ae%89%e8%a3%85git%e5%ae%a2%e6%88%b7%e7%ab%af" class="header-mark"></a>下载安装Git客户端</h2><p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/git.png'   alt="Git"  ></p>
<p><a href="https://git-scm.com/download" target="_blank" rel="noopener noreferrer">git</a>下载</p>
<h2 id="安装教程" class="headerLink">
    <a href="#%e5%ae%89%e8%a3%85%e6%95%99%e7%a8%8b" class="header-mark"></a>安装教程</h2><p>装完成后，还需要最后一步设置，在命令行输入：</p>
<blockquote>
  <p>$ git config &ndash;global user.name &ldquo;Your Name&rdquo;
$ git config &ndash;global user.email &ldquo;<a href="mailto:email@example.com" rel="">email@example.com</a>&rdquo;</p>

</blockquote><p>因为Git是分布式版本控制系统，所以，每个机器都必须自报家门：你的名字和Email地址。</p>
<h2 id="创建本地仓库" class="headerLink">
    <a href="#%e5%88%9b%e5%bb%ba%e6%9c%ac%e5%9c%b0%e4%bb%93%e5%ba%93" class="header-mark"></a>创建本地仓库</h2><blockquote>
  <p>$ git init</p>

</blockquote><h2 id="添加-add" class="headerLink">
    <a href="#%e6%b7%bb%e5%8a%a0-add" class="header-mark"></a>添加 add</h2><h3 id="把文件添加到仓库" class="headerLink">
    <a href="#%e6%8a%8a%e6%96%87%e4%bb%b6%e6%b7%bb%e5%8a%a0%e5%88%b0%e4%bb%93%e5%ba%93" class="header-mark"></a>把文件添加到仓库：</h3><blockquote>
  <p>$ git add readme.txt</p>

</blockquote><p>执行上面的命令，没有任何显示，这就对了，Unix的哲学是“没有消息就是好消息”，说明添加成功。</p>
<h3 id="把文件提交到仓库" class="headerLink">
    <a href="#%e6%8a%8a%e6%96%87%e4%bb%b6%e6%8f%90%e4%ba%a4%e5%88%b0%e4%bb%93%e5%ba%93" class="header-mark"></a>把文件提交到仓库：</h3><blockquote>
  <p>$ git commit -m &ldquo;add readme&rdquo;</p>

</blockquote><p><code>git commit</code>命令，<code>-m</code>后面输入的是本次提交的说明，可以输入任意内容，当然最好是有意义的，这样你就能从历史记录里方便地找到改动记录。</p>
<h2 id="同步到github" class="headerLink">
    <a href="#%e5%90%8c%e6%ad%a5%e5%88%b0github" class="header-mark"></a>同步到Github</h2><h3 id="上传到github" class="headerLink">
    <a href="#%e4%b8%8a%e4%bc%a0%e5%88%b0github" class="header-mark"></a>上传到github</h3><p>例如我们给一个叫Test的仓库同步</p>
<blockquote>
  <p>$ git remote add origin <a href="mailto:git@github.com" rel="">git@github.com</a>:youngxhui/Test.git</p>

</blockquote><p>现在可以push到你的仓库了</p>
<blockquote>
  <p>$ git push -u origin master</p>

</blockquote><p>第一次推送时，我们要添加<code>-u</code></p>
<p>之后我们可以这条命令</p>
<blockquote>
  <p>$ git push origin master</p>

</blockquote><h3 id="下载到github" class="headerLink">
    <a href="#%e4%b8%8b%e8%bd%bd%e5%88%b0github" class="header-mark"></a>下载到github</h3><p>从github上下载到本地</p>
<blockquote>
  <pre><code>$ git clone git@github.com:youngxhui/nuc_JavaLab.git
</code></pre>

</blockquote><h2 id="分支的操作" class="headerLink">
    <a href="#%e5%88%86%e6%94%af%e7%9a%84%e6%93%8d%e4%bd%9c" class="header-mark"></a>分支的操作</h2><h3 id="分支的创建" class="headerLink">
    <a href="#%e5%88%86%e6%94%af%e7%9a%84%e5%88%9b%e5%bb%ba" class="header-mark"></a>分支的创建</h3><p>创建分支</p>
<blockquote>
  <p>$ git checkout -b dev</p>

</blockquote><p><code>-b</code> 参数表示创建并切换</p>
<h3 id="查看分支" class="headerLink">
    <a href="#%e6%9f%a5%e7%9c%8b%e5%88%86%e6%94%af" class="header-mark"></a>查看分支</h3><p>用git branch命令查看当前分支：</p>
<blockquote>
  <pre><code>   $ git branch
   * dev
   master
</code></pre>

</blockquote><p>git branch命令会列出所有分支，<strong>当前分支</strong>前面会标一个<code>*</code>号。</p>
<p>我们就可以在dev分支上正常提交</p>
<blockquote>
  <p>$ git add readme.txt</p>

</blockquote><blockquote>
  <p>$ git commit -m &ldquo;branch test&rdquo;</p>

</blockquote><h3 id="切换分支" class="headerLink">
    <a href="#%e5%88%87%e6%8d%a2%e5%88%86%e6%94%af" class="header-mark"></a>切换分支</h3><p>切换回master分支：</p>
<blockquote>
  <p>$ git checkout master</p>

</blockquote><h3 id="合并分支" class="headerLink">
    <a href="#%e5%90%88%e5%b9%b6%e5%88%86%e6%94%af" class="header-mark"></a>合并分支</h3><p>把<code>dev</code>分支合并到<code>master</code></p>
<blockquote>
  <p>$ git merge dev</p>

</blockquote><h3 id="删除分支" class="headerLink">
    <a href="#%e5%88%a0%e9%99%a4%e5%88%86%e6%94%af" class="header-mark"></a>删除分支</h3><blockquote>
  <p>$ git branch -d dev</p>

</blockquote><hr>
]]></description></item><item><title>如何提高Android虚拟机的运行速度</title><link>https://youngxhui.top/2016/07/%E5%A6%82%E4%BD%95%E6%8F%90%E9%AB%98android%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E8%BF%90%E8%A1%8C%E9%80%9F%E5%BA%A6/</link><pubDate>Sun, 17 Jul 2016 08:59:24 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2016/07/%E5%A6%82%E4%BD%95%E6%8F%90%E9%AB%98android%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E8%BF%90%E8%A1%8C%E9%80%9F%E5%BA%A6/</guid><description><![CDATA[<h1 id="关于android-virtual-device" class="headerLink">
    <a href="#%e5%85%b3%e4%ba%8eandroid-virtual-device" class="header-mark"></a>关于Android virtual Device</h1><p>Android virtual Device（AVD）是Google推出的可以在x86,x64,AMD设备上运行的虚拟机。我们可以在Android Studio中创建并且使用。</p>
<p><img class="tw-inline" loading="lazy" src=''   alt="AVD Manager"  ></p>
<p>在我们一般创建时，都再用默认的设置，这样会导致AVD使用时很卡，卡到爆……</p>
<p>下面我们就来一起设置，使它流畅的运行起来。</p>
<h1 id="下载安装intel-haxm" class="headerLink">
    <a href="#%e4%b8%8b%e8%bd%bd%e5%ae%89%e8%a3%85intel-haxm" class="header-mark"></a>下载安装Intel HAXM</h1><ol>
<li>打开SDK Manger，在SDK Tools目录下，选择并下载Intel HAXM。</li>
</ol>
<p><img class="tw-inline" loading="lazy" src='leanote://file/getImage?fileId=5782246bc2c9522ae1000001'   alt="Inter HAXM"  ></p>
<ol start="2">
<li>下载好并不代表安装，我们需要打卡SDK目录进行安装。</li>
</ol>
<blockquote>
  <p>&hellip;\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe</p>

</blockquote><p>安装只需要next就好。也可以适当的分配一点大的内存。</p>
<ol start="3">
<li>重启你的电脑。</li>
</ol>
<h1 id="添加avd" class="headerLink">
    <a href="#%e6%b7%bb%e5%8a%a0avd" class="header-mark"></a>添加AVD</h1><p>我们打开AVD Manager。行创建一个AVD</p>
<p><img class="tw-inline" loading="lazy" src='http://7xt81u.com1.z0.glb.clouddn.com/16-7-17/68978086.jpg'     ></p>
<p>行创建一个AVD</p>
<p><img class="tw-inline" loading="lazy" src='http://7xt81u.com1.z0.glb.clouddn.com/16-7-17/27837587.jpg'     ></p>
<p>选择一个你喜欢的机型，我在这里选择6P。</p>
<p><img class="tw-inline" loading="lazy" src='leanote://file/getImage?fileId=578226dbc2c9522ae1000004'     ></p>
<p>按照你的电脑选择API和ABI</p>
<p><img class="tw-inline" loading="lazy" src='leanote://file/getImage?fileId=57822739c2c9522ae1000005'     ></p>
<p>Next-&gt;Finish</p>
<p>此时我们就添加好一个虚拟机了。</p>
<h2 id="运行并修改参数" class="headerLink">
    <a href="#%e8%bf%90%e8%a1%8c%e5%b9%b6%e4%bf%ae%e6%94%b9%e5%8f%82%e6%95%b0" class="header-mark"></a>运行并修改参数</h2><p>我们点击运行
<img class="tw-inline" loading="lazy" src='http://7xt81u.com1.z0.glb.clouddn.com/16-7-17/59566680.jpg'     ></p>
<p>此时我们需要观察Android Studio的输出日志。其中有一条值得我们注意</p>
<p><img class="tw-inline" loading="lazy" src='http://7xt81u.com1.z0.glb.clouddn.com/16-7-17/65640645.jpg'     ></p>
<p>这一条警告提示我们VM heap低于最低值384M，要求我们去设置为384M。</p>
<p>此时我们打开编辑，修改VM heap为他所要求的值，我们的AVD就可以流畅的运行了。</p>
<p><strong>基于Android　Studio 2.1，Intel X64 RAM 8G</strong></p>
]]></description></item><item><title>GitHub for Windows使用教程(四)</title><link>https://youngxhui.top/2016/05/github-for-windows%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E5%9B%9B/</link><pubDate>Mon, 16 May 2016 19:01:13 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2016/05/github-for-windows%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E5%9B%9B/</guid><description><![CDATA[<h2 id="前言" class="headerLink">
    <a href="#%e5%89%8d%e8%a8%80" class="header-mark"></a>前言</h2><p>在上述的几个教程里讲解了一些Github的基础使用，现在开始讲解一些使用技巧。</p>
<h2 id="查找内容" class="headerLink">
    <a href="#%e6%9f%a5%e6%89%be%e5%86%85%e5%ae%b9" class="header-mark"></a>查找内容</h2><p>在github页面上是没有搜索的按钮，如何搜索呢。
在网页上按  <code>T</code> 就会出现。
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E6%9F%A5%E6%89%BET.png'     >
这样我们就能很方便的查找到我们需要的代码了。</p>
<h2 id="评论小表情" class="headerLink">
    <a href="#%e8%af%84%e8%ae%ba%e5%b0%8f%e8%a1%a8%e6%83%85" class="header-mark"></a>评论小表情</h2><p>常常在<strong>版本描述</strong>或者<strong>pull request</strong>时我们需要对伙伴的代码进行一下评论与说明，光是文字有点很死板，其实github给我有<strong>emoji</strong>，如何使用呢？其实很简单，只需要<strong>冒号</strong>就可以 <code>：</code>，这样我们就可以看到emoji表情，当然默认会显示五个常用的，你也可以继续敲下emoji的名字，出现更多（<a href="http://www.webpagefx.com/tools/emoji-cheat-sheet/" target="_blank" rel="noopener noreferrer">这里有所有的表情</a>）。
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E5%AE%A2%E6%88%B7%E7%AB%AFemoji.png'     >
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/emoji.png'     ></p>
<h2 id="忽略不想上传的文件" class="headerLink">
    <a href="#%e5%bf%bd%e7%95%a5%e4%b8%8d%e6%83%b3%e4%b8%8a%e4%bc%a0%e7%9a%84%e6%96%87%e4%bb%b6" class="header-mark"></a>忽略不想上传的文件</h2><p>有些在github中的文件我们是不想上传的，我们如何过滤掉它们呢？
在github中对不想上传的文件点击右键。就会出现下面选项。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E5%BF%BD%E7%95%A5.png'     >
<strong>Ignore file</strong>忽略这个文件
<strong>Ignore all.txt files</strong> 忽略所有的以.txt结尾的文件
这样就可以过滤掉你不想上传的文件</p>
<h2 id="搜索项目" class="headerLink">
    <a href="#%e6%90%9c%e7%b4%a2%e9%a1%b9%e7%9b%ae" class="header-mark"></a>搜索项目</h2><p>如何高效的搜索一个你想要的库呢？
我们常常评判一个项目的标准有star数目，fork数目和跟新时间。
通过搜索命令</p>
<p><strong>stars</strong></p>
<pre><code>stars:&gt;1000
</code></pre>
<p>表示star数目大于1000。</p>
<p><strong>fork</strong></p>
<pre><code>fork:&gt;1000
</code></pre>
<p>表示fork数目大于1000。</p>
<p><strong>语言搜索</strong></p>
<p>java，html等等</p>
<p>综合一下就是，比如你要查找一个stars大于1000的，fork大于200的java代码。</p>
<pre><code>stars:&gt;1000 fork:&gt;200 java
</code></pre>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E6%90%9C%E7%B4%A2.png'     ></p>
<p>就是这样。</p>
<h2 id="查看项目中的语言类型" class="headerLink">
    <a href="#%e6%9f%a5%e7%9c%8b%e9%a1%b9%e7%9b%ae%e4%b8%ad%e7%9a%84%e8%af%ad%e8%a8%80%e7%b1%bb%e5%9e%8b" class="header-mark"></a>查看项目中的语言类型</h2><p>一个项目中，可能使用了多种语言，我们如何一下子就能看到一个项目使用了什么语言？其实很简单，Github已经为我们统计好了。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/%E7%9C%8B.png'     ></p>
<p>也行你注意过，但是没有发现它有什么用。
点击下面的彩条</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/BaiduShurufa_2016-9-4_22-25-50.png'     ></p>
<p>github已经为我们统计好这个项目所有的语言及其比例。</p>
<p>一些常见的代码表示颜色</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/BaiduShurufa_2016-9-24_17-7-2.png'     ></p>
<h2 id="总结" class="headerLink">
    <a href="#%e6%80%bb%e7%bb%93" class="header-mark"></a>总结</h2><p>码字不易，终于写完了，如果觉得对你有帮助，我的目的就达到了。
谢谢
如有错误，还望指正。</p>
]]></description></item><item><title>GitHub for windows使用教程（三）</title><link>https://youngxhui.top/2016/05/github-for-windows%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E4%B8%89/</link><pubDate>Sun, 15 May 2016 00:41:41 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2016/05/github-for-windows%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E4%B8%89/</guid><description><![CDATA[<h2 id="认识flow" class="headerLink">
    <a href="#%e8%ae%a4%e8%af%86flow" class="header-mark"></a>认识Flow</h2><p>**<a href="https://guides.github.com/introduction/flow/" target="_blank" rel="noopener noreferrer">GitHub Flow</a>**是一个轻量级的，基于分支的工作流程，支持团队和部署在那里的定期做项目。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/1.png'     ></p>
<h2 id="为团队成员写入权限" class="headerLink">
    <a href="#%e4%b8%ba%e5%9b%a2%e9%98%9f%e6%88%90%e5%91%98%e5%86%99%e5%85%a5%e6%9d%83%e9%99%90" class="header-mark"></a>为团队成员写入权限</h2><p>在我们的队友添加一个写的权限，这样我们的队友才能很好的修改代码。
我们打开网页上的<a href="http://www.github.com" target="_blank" rel="noopener noreferrer">GitHub</a>,点击<strong>settings</strong>,</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/2.png'     ></p>
<p>之后我们找到<strong>collaborators</strong>，这里会让我们验证密码，之后就有添加合作者的选项。这样我们就能添加我们的小伙伴了！</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/3.png'     ></p>
<p>这样我们就添加了新的小伙伴，新的小伙伴有着同样的权限去修改和管理代码。
此时我们就会看到我的小伙伴wevan的github主页上就会出现关于我创建的First的各种通知。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/9.png'     ></p>
<h2 id="创建分支" class="headerLink">
    <a href="#%e5%88%9b%e5%bb%ba%e5%88%86%e6%94%af" class="header-mark"></a>创建分支</h2><p>在我们创建一个叫<strong>add new function</strong>的分支。</p>
<p>创建一个分支</p>
<blockquote>
  <p><em>Create a branch</em></p>

</blockquote><p>当您在进行项目时，在任何给定的时间都会有许多不同的功能或想法在进行中-其中一些已准备就绪，而另一些则没有。存在分支可帮助您管理此工作流程。</p>
<blockquote>
  <p><em>When you&rsquo;re working on a project, you&rsquo;re going to have a bunch of different features or ideas in progress at any given time – some of which are ready to go, and others which are not. Branching exists to help you manage this workflow.</em></p>

</blockquote><p>在项目中创建分支时，正在创建一个环境，您可以在其中尝试新的想法。您在分支机构上所做的更改不会影响主分支，因此您可以自由地进行试验和提交更改，并且可以知道，在准备好与您的协作者进行审核之前，您的分支机构不会被合并，这是安全的。</p>
<blockquote>
  <p><em>When you create a branch in your project, you&rsquo;re creating an environment where you can try out new ideas. Changes you make on a branch don&rsquo;t affect the master branch, so you&rsquo;re free to experiment and commit changes, safe in the knowledge that your branch won&rsquo;t be merged until it&rsquo;s ready to be reviewed by someone you&rsquo;re collaborating with.</em></p>

</blockquote><p><strong>ProTip</strong></p>
<p>分支在Git中是一个核心概念，整个GitHub的流量是基于它。这里只有一个规则：在任何主分支总是部署。</p>
<blockquote>
  <p><em>Branching is a core concept in Git, and the entire GitHub Flow is based upon it. There&rsquo;s only one rule: anything in the master branch is always deployable.</em></p>

</blockquote><p>正因为如此，这是非常重要的一个功能或修复工作时，你的新分支关老爷的创建。您的分支名应该是描述（例如，重构的身份验证，用户的内容缓存键，使视网膜-化身），以便其他人可以看到正在处理。</p>
<blockquote>
  <p><em>Because of this, it&rsquo;s extremely important that your new branch is created off of master when working on a feature or a fix. Your branch name should be descriptive (e.g., refactor-authentication, user-content-cache-key, make-retina-avatars), so that others can see what is being worked on.</em>
<strong><a href="https://guides.github.com/introduction/flow/" target="_blank" rel="noopener noreferrer">来自GitHub Flow</a></strong></p>

</blockquote><h2 id="添加提交" class="headerLink">
    <a href="#%e6%b7%bb%e5%8a%a0%e6%8f%90%e4%ba%a4" class="header-mark"></a>添加提交</h2><p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/4.png'     ></p>
<p>我们首先把分支切换到新的分支上<strong>add new function</strong></p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/5.png'     ></p>
<p>修改新的版本</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/6.png'     ></p>
<p>填写好新的<strong>Summary</strong>和<strong>Description</strong>，提交新的版本并同步。
这样小伙伴登陆到<strong>GitHub</strong>上就看到了就可以清楚的看到一切的修改。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/7.png'     ></p>
<p>添加提交</p>
<blockquote>
  <p><em>Add commits</em></p>

</blockquote><p>一旦你的分支已经建立，现在是时候开始进行更改。无论何时添加，编辑或删除一个文件，你作出承诺，并将其添加到您的分支。提交加入这一过程保持你的进步轨迹，你在一个特性分支工作。</p>
<blockquote>
  <p><em>Once your branch has been created, it&rsquo;s time to start making changes. Whenever you add, edit, or delete a file, you&rsquo;re making a commit, and adding them to your branch. This process of adding commits keeps track of your progress as you work on a feature branch.</em></p>

</blockquote><p>还承诺创建工作的透明历史，其他人可以按照理解你做了什么，以及为什么。每次提交都有一个关联的提交信息，这是解释为什么一个特定的变化作出了说明。此外，每次提交被认为是变革的一个独立单元。这使您可以回滚的变化，如果发现错误，或者如果你决定在一个不同的方向前进。</p>
<blockquote>
  <p><em>Commits also create a transparent history of your work that others can follow to understand what you&rsquo;ve done and why. Each commit has an associated commit message, which is a description explaining why a particular change was made. Furthermore, each commit is considered a separate unit of change. This lets you roll back changes if a bug is found, or if you decide to head in a different direction.</em></p>

</blockquote><p><strong>ProTip</strong></p>
<p>提交信息是重要的，特别是因为Git跟踪更改，然后将它们显示为承诺一旦他们推到服务器。通过字迹清晰提交信息，你可以更容易为其他人跟着，并提供反馈。</p>
<blockquote>
  <p><em>Commit messages are important, especially since Git tracks your changes and then displays them as commits once they&rsquo;re pushed to the server. By writing clear commit messages, you can make it easier for other people to follow along and provide feedback.</em>
<strong><a href="https://guides.github.com/introduction/flow/" target="_blank" rel="noopener noreferrer">来自GitHub Flow</a></strong></p>

</blockquote><h2 id="打开一个pull请求" class="headerLink">
    <a href="#%e6%89%93%e5%bc%80%e4%b8%80%e4%b8%aapull%e8%af%b7%e6%b1%82" class="header-mark"></a>打开一个pull请求</h2><p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/8.png'     >
这个是整个流程中比较关键的一步，发布<strong>Pull Request</strong>。</p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/10.png'     ></p>
<p>点击客户端或者网页上的<strong>Pull Request</strong>发布。
我们这里点击<strong>Pull Request</strong></p>
<p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/11.png'   alt="客户端/网页版"  >
我们填写好必要的说明性文字
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/12.png'     >
点击<strong>Send Pull Request</strong>
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/13.png'     >
他既然让我们到GitHub上看，我们就听他的，点击，进入。
<img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/14.png'     >
我们发现小伙伴已经在下面留言了！</p>
<h3 id="讨论和审核你的代码" class="headerLink">
    <a href="#%e8%ae%a8%e8%ae%ba%e5%92%8c%e5%ae%a1%e6%a0%b8%e4%bd%a0%e7%9a%84%e4%bb%a3%e7%a0%81" class="header-mark"></a>讨论和审核你的代码</h3><p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/15.png'     ></p>
<p>你的小伙伴开始对你的代码讨论，修改，迭代。</p>
<p>讨论和审查你的代码</p>
<blockquote>
  <p><em>Discuss and review your code</em></p>

</blockquote><p>一旦拉入请求已被打开，人或团队审查您的变化可能有疑问或意见。也许编码风格不匹配项目的指导方针，改变缺少单元测试，或者也许一切看起来不错，道具都是为了。引入请求旨在鼓励并捕获这种类型的对话。</p>
<blockquote>
  <p><em>Once a Pull Request has been opened, the person or team reviewing your changes may have questions or comments. Perhaps the coding style doesn&rsquo;t match project guidelines, the change is missing unit tests, or maybe everything looks great and props are in order. Pull Requests are designed to encourage and capture this type of conversation.</em></p>

</blockquote><p>您还可以继续推送到你的分支在你提交的讨论和反馈光。如果有人评论说，你忘了做某件事，或者如果在代码中的错误，你可以在你的分支修复它，推高的变化。GitHub上会显示新的提交和其他任何意见，你可能会收到统一拉请求视图。</p>
<blockquote>
  <p><em>You can also continue to push to your branch in light of discussion and feedback about your commits. If someone comments that you forgot to do something or if there is a bug in the code, you can fix it in your branch and push up the change. GitHub will show your new commits and any additional feedback you may receive in the unified Pull Request view.</em></p>

</blockquote><p><strong>ProTip</strong></p>
<p>拉请求的意见都写在降价，所以你可以插入图片和表情符，使用预先格式化的文本块，等轻质格式。</p>
<blockquote>
  <p><em>Pull Request comments are written in Markdown, so you can embed images and emoji, use pre-formatted text blocks, and other lightweight formatting.</em></p>

</blockquote><h2 id="部署" class="headerLink">
    <a href="#%e9%83%a8%e7%bd%b2" class="header-mark"></a>部署</h2><p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/16.png'     ></p>
<p>部署</p>
<blockquote>
  <p><em>Deploy</em></p>

</blockquote><p>一旦你拉的请求进行了审查和部门通过你的测试，您可以部署您的更改，以验证他们的生产。如果你的分支造成的问题，您可以通过部署现有的主投产回滚</p>
<blockquote>
  <p><em>Once your pull request has been reviewed and the branch passes your tests, you can deploy your changes to verify them in production. If your branch causes issues, you can roll it back by deploying the existing master into production.</em></p>

</blockquote><h2 id="合并" class="headerLink">
    <a href="#%e5%90%88%e5%b9%b6" class="header-mark"></a>合并</h2><p><img class="tw-inline" loading="lazy" src='https://island-hexo.oss-cn-beijing.aliyuncs.com/17.png'     ></p>
<p>合并分支我们之前已经说过，这里就不再赘述。</p>
<p>合并</p>
<blockquote>
  <p><em>Merge</em></p>

</blockquote><p>现在，您的更改在生产中得到了验证，现在是时候你的代码合并到主分支。</p>
<blockquote>
  <p><em>Now that your changes have been verified in production, it is time to merge your code into the master branch.</em></p>

</blockquote><p>合并后，引入请求保护的历史变迁到您的代码记录。因为他们是搜索的，他们不让任何人回去的时间理解为什么以及如何决定了。</p>
<blockquote>
  <p><em>Once merged, Pull Requests preserve a record of the historical changes to your code. Because they&rsquo;re searchable, they let anyone go back in time to understand why and how a decision was made.</em></p>

</blockquote><p><strong>ProTip</strong></p>
<p>通过将某些关键字到您的拉请求的文本，你可以用代码相关联的问题。当你拉入请求合并，相关问题也将被关闭。例如，输入短语关闭＃32将关闭在仓库中发行数量32。欲了解更多信息，请查看我们的帮助文章。</p>
<blockquote>
  <p><em>By incorporating certain keywords into the text of your Pull Request, you can associate issues with code. When your Pull Request is merged, the related issues are also closed. For example, entering the phrase Closes #32 would close issue number 32 in the repository. For more information, check out our help article.</em></p>

</blockquote><p><strong>注意：英文翻译为机器翻译，可能有翻译错误的地方，建议大家尽可能看英文</strong></p>
<h1 id="总结" class="headerLink">
    <a href="#%e6%80%bb%e7%bb%93" class="header-mark"></a>总结</h1><p>基本的GitHub教程就算写完了，已有如果在有就是一些GitHub上的一些使用小技巧了。</p>
]]></description></item></channel></rss>