<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Chen77&#39;s Blog</title>
  
  <subtitle>愿喜欢跟合适撞个满怀</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="http://mechenjuanjuan.github.io/"/>
  <updated>2020-03-26T09:21:15.017Z</updated>
  <id>http://mechenjuanjuan.github.io/</id>
  
  <author>
    <name>Chen77</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>在windows下安装python常用的库：numpy，Scipy，matplotlib，sklearn，pandas</title>
    <link href="http://mechenjuanjuan.github.io/2019/12/18/chen_07/"/>
    <id>http://mechenjuanjuan.github.io/2019/12/18/chen_07/</id>
    <published>2019-12-18T02:47:33.928Z</published>
    <updated>2020-03-26T09:21:15.017Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images17.png"></center><a id="more"></a>* 系统是windows64位，安装了python3.6。<ul><li>安装顺序就是numpy，Scipy，matplotlib，sklearn，pandas。</li><li>首先是更新一下pip （确保pip能使用）</li><li>然后将setuptools, numpy, python-dateutil, pytz, pyparsing, cycler,matplotlib分别代替最后的pip并运行</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line">PS C:\Users\wenchaoz&gt; python -m pip install --upgrade pip</span><br><span class="line">Collecting pip</span><br><span class="line">  Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB)</span><br><span class="line">    100% |████████████████████████████████| 1.2MB 315kB/s</span><br><span class="line">Installing collected packages: pip</span><br><span class="line">  Found existing installation: pip 7.1.2</span><br><span class="line">    Uninstalling pip-7.1.2:</span><br><span class="line">      Successfully uninstalled pip-7.1.2</span><br><span class="line">Successfully installed pip-8.1.2</span><br><span class="line"></span><br><span class="line">PS C:\Users\wenchaoz&gt; python -m pip install --upgrade numpy</span><br><span class="line">Collecting numpy</span><br><span class="line">  Downloading numpy-1.11.1-cp27-none-win_amd64.whl (7.4MB)</span><br><span class="line">    100% |████████████████████████████████| 7.4MB 138kB/s</span><br><span class="line">Installing collected packages: numpy</span><br><span class="line">  Found existing installation: numpy 1.9.2</span><br><span class="line">    DEPRECATION: Uninstalling a distutils installed project (numpy) has been deprecated and will be removed in a future</span><br><span class="line">version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.</span><br><span class="line">    Uninstalling numpy-1.9.2:</span><br><span class="line">      Successfully uninstalled numpy-1.9.2</span><br><span class="line">Successfully installed numpy-1.11.1</span><br><span class="line"></span><br><span class="line">PS C:\Users\wenchaoz&gt; python -m pip install --upgrade pytz</span><br><span class="line">Collecting pytz</span><br><span class="line">  Downloading pytz-2016.6.1-py2.py3-none-any.whl (481kB)</span><br><span class="line">    100% |████████████████████████████████| 481kB 1.2MB/s</span><br><span class="line">Installing collected packages: pytz</span><br><span class="line">Successfully installed pytz-2016.6.1</span><br><span class="line"></span><br><span class="line">PS C:\Users\wenchaoz&gt; python -m pip install --upgrade pyparsing</span><br><span class="line">Collecting pyparsing</span><br><span class="line">  Downloading pyparsing-2.1.5-py2.py3-none-any.whl (42kB)</span><br><span class="line">    100% |████████████████████████████████| 51kB 122kB/s</span><br><span class="line">Installing collected packages: pyparsing</span><br><span class="line">Successfully installed pyparsing-2.1.5</span><br><span class="line"></span><br><span class="line">PS C:\Users\wenchaoz&gt; python -m pip install --upgrade cycler</span><br><span class="line">Collecting cycler</span><br><span class="line">  Downloading cycler-0.10.0-py2.py3-none-any.whl</span><br><span class="line">Requirement already up-to-date: six in c:\python27\lib\site-packages (from cycler)</span><br><span class="line">Installing collected packages: cycler</span><br><span class="line">Successfully installed cycler-0.10.0</span><br><span class="line"></span><br><span class="line">PS C:\Users\wenchaoz&gt; python -m pip install --upgrade matplotlib</span><br><span class="line">Collecting matplotlib</span><br><span class="line">  Downloading matplotlib-1.5.1-cp27-none-win_amd64.whl (6.1MB)</span><br><span class="line">    100% |████████████████████████████████| 6.1MB 167kB/s</span><br><span class="line">Requirement already up-to-date: cycler in c:\python27\lib\site-packages (from matplotlib)</span><br><span class="line">Requirement already up-to-date: pytz in c:\python27\lib\site-packages (from matplotlib)</span><br><span class="line">Requirement already up-to-date: pyparsing!=2.0.4,&gt;=1.5.6 in c:\python27\lib\site-packages (from matplotlib)</span><br><span class="line">Requirement already up-to-date: numpy&gt;=1.6 in c:\python27\lib\site-packages (from matplotlib)</span><br><span class="line">Requirement already up-to-date: python-dateutil in c:\python27\lib\site-packages (from matplotlib)</span><br><span class="line">Requirement already up-to-date: six in c:\python27\lib\site-packages (from cycler-&gt;matplotlib)</span><br><span class="line">Installing collected packages: matplotlib</span><br><span class="line">  Found existing installation: matplotlib 1.5.0</span><br><span class="line">    Uninstalling matplotlib-1.5.0:</span><br><span class="line">      Successfully uninstalled matplotlib-1.5.0</span><br><span class="line">Successfully installed matplotlib-1.5.1</span><br><span class="line"></span><br><span class="line">PS C:\Users\wenchaoz&gt; python -m pip install --upgrade sklearn</span><br><span class="line">...</span><br><span class="line">PS C:\Users\wenchaoz&gt; python -m pip install --upgrade pandas</span><br></pre></td></tr></table></figure><ul><li>查看安装的库：</li><li>cmd打开黑窗口输入命令</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip list</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images17.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="python" scheme="http://mechenjuanjuan.github.io/categories/python/"/>
    
    
      <category term="python" scheme="http://mechenjuanjuan.github.io/tags/python/"/>
    
  </entry>
  
  <entry>
    <title>关于前端定时器</title>
    <link href="http://mechenjuanjuan.github.io/2019/12/18/chen_06/"/>
    <id>http://mechenjuanjuan.github.io/2019/12/18/chen_06/</id>
    <published>2019-12-18T02:19:03.937Z</published>
    <updated>2020-03-26T09:11:43.920Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images9.png"></center><a id="more"></a>* 定时不停的调用函数<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">1.</span><br><span class="line">var timer；</span><br><span class="line">function time()&#123;</span><br><span class="line">       //定时器，每隔一秒获取一次</span><br><span class="line">       timer = self.setinterval(getSetParam, 1000);   </span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">2.</span><br><span class="line">var interval =self.setinterval(function()&#123;</span><br><span class="line"></span><br><span class="line">&#125;,1000);</span><br></pre></td></tr></table></figure><ul><li>为了防止定时器导致浏览器死掉或者是切换时定时间隔时间变快</li><li>需要清除定时器</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">window.clearInterval(interval);</span><br></pre></td></tr></table></figure><ul><li>推荐以下方法</li><li>在请求操作成功后再定时调用</li><li>避免浏览器死掉/定时间隔时间变快</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">var time;</span><br><span class="line">function fun()&#123;</span><br><span class="line">$.post(&quot;/coalMillRisk/coalPlugging&quot; , &#123;id:id&#125; ,function(data)&#123; </span><br><span class="line">...</span><br><span class="line"></span><br><span class="line">window.clearTimeout(time);   </span><br><span class="line">time = window.setTimeout(fun, 1000);</span><br><span class="line">&#125;);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images9.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="JS" scheme="http://mechenjuanjuan.github.io/categories/JS/"/>
    
    
      <category term="JS" scheme="http://mechenjuanjuan.github.io/tags/JS/"/>
    
  </entry>
  
  <entry>
    <title>关于Maven项目下使用Mybatis时，找不到mapper映射文件的问题</title>
    <link href="http://mechenjuanjuan.github.io/2019/11/15/chen_05/"/>
    <id>http://mechenjuanjuan.github.io/2019/11/15/chen_05/</id>
    <published>2019-11-15T09:44:01.815Z</published>
    <updated>2020-03-26T09:22:34.366Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images13.png"></center><a id="more"></a>* 一般maven项目，dao的mapper映射文件会映射在resources下，创建同包同名的xml，这样是没问题的<center><img src="/post_image/chen_05/1.png"></center><ul><li><p>如下图：如果想在这个地方放xml，就找不到mapper映射文件了</p></li><li><p>可以查看项目下的\target\classes的映射文件，这我就不展示了</p><center><img src="/post_image/chen_05/2.png"></center></li><li><p>解决方法</p></li><li><p>在pom.xml的build里添加</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&lt;plugins&gt;</span><br><span class="line"> &lt;!-- 资源文件拷贝插件 --&gt;</span><br><span class="line">   &lt;plugin&gt;</span><br><span class="line">     &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;</span><br><span class="line">     &lt;artifactId&gt;maven-resources-plugin&lt;/artifactId&gt;</span><br><span class="line">     &lt;version&gt;2.7&lt;/version&gt;</span><br><span class="line">     &lt;configuration&gt;</span><br><span class="line">       &lt;encoding&gt;UTF-8&lt;/encoding&gt;</span><br><span class="line">     &lt;/configuration&gt;</span><br><span class="line">   &lt;/plugin&gt;</span><br><span class="line"> &lt;/plugins&gt;</span><br><span class="line">   &lt;!-- 如果不添加此节点，mybatis的mapper.xml文件都会被漏掉。 --&gt;</span><br><span class="line">   &lt;resources&gt;</span><br><span class="line">     &lt;resource&gt;</span><br><span class="line">       &lt;directory&gt;src/main/java&lt;/directory&gt;</span><br><span class="line">       &lt;includes&gt;</span><br><span class="line">         &lt;include&gt;**/*.properties&lt;/include&gt;</span><br><span class="line">         &lt;include&gt;**/*.xml&lt;/include&gt;</span><br><span class="line">       &lt;/includes&gt;</span><br><span class="line">       &lt;filtering&gt;false&lt;/filtering&gt;</span><br><span class="line">     &lt;/resource&gt;</span><br><span class="line">   &lt;/resources&gt;</span><br></pre></td></tr></table></figure></li><li><p>注意：</p></li><li><p>刷新一下maven，然后clean,install一下，启动项目</p></li><li><p>我启动项目报错了，不知道你们会不会，报错显示找不到spring_mvc.xml</p></li><li><p>我想大概是之前默认映射是在resources目录下，修改映射路径过滤之后就找不到了</p></li><li><p>然后我有添加了一段映射路径，就不报错了</p></li><li><p>代码如下：</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line">&lt;build&gt;</span><br><span class="line">   &lt;plugins&gt;</span><br><span class="line">&lt;!-- 资源文件拷贝插件 --&gt;</span><br><span class="line">      &lt;plugin&gt;</span><br><span class="line">        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;</span><br><span class="line">        &lt;artifactId&gt;maven-resources-plugin&lt;/artifactId&gt;</span><br><span class="line">        &lt;version&gt;2.7&lt;/version&gt;</span><br><span class="line">        &lt;configuration&gt;</span><br><span class="line">          &lt;encoding&gt;UTF-8&lt;/encoding&gt;</span><br><span class="line">        &lt;/configuration&gt;</span><br><span class="line">      &lt;/plugin&gt;</span><br><span class="line">     &lt;/plugins&gt;</span><br><span class="line">      &lt;!-- 如果不添加此节点，mybatis的mapper.xml文件都会被漏掉。 --&gt;</span><br><span class="line">      &lt;resources&gt;</span><br><span class="line">        &lt;resource&gt;</span><br><span class="line">          &lt;directory&gt;src/main/java&lt;/directory&gt;</span><br><span class="line">          &lt;includes&gt;</span><br><span class="line">            &lt;include&gt;**/*.properties&lt;/include&gt;</span><br><span class="line">            &lt;include&gt;**/*.xml&lt;/include&gt;</span><br><span class="line">          &lt;/includes&gt;</span><br><span class="line">          &lt;filtering&gt;false&lt;/filtering&gt;</span><br><span class="line">        &lt;/resource&gt;</span><br><span class="line">        &lt;resource&gt;</span><br><span class="line">          &lt;directory&gt;src/main/resources&lt;/directory&gt;</span><br><span class="line">          &lt;includes&gt;</span><br><span class="line">            &lt;include&gt;**/*.properties&lt;/include&gt;</span><br><span class="line">            &lt;include&gt;**/*.xml&lt;/include&gt;</span><br><span class="line">          &lt;/includes&gt;</span><br><span class="line">          &lt;filtering&gt;false&lt;/filtering&gt;</span><br><span class="line">        &lt;/resource&gt;</span><br><span class="line">      &lt;/resources&gt;</span><br><span class="line">  &lt;/build&gt;</span><br></pre></td></tr></table></figure></li><li><p>以上是我自己的理解，当然是亲自测试过的</p></li><li><p>希望对你们有帮助</p></li></ul>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images13.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="Maven" scheme="http://mechenjuanjuan.github.io/categories/Maven/"/>
    
    
      <category term="Idea" scheme="http://mechenjuanjuan.github.io/tags/Idea/"/>
    
      <category term="Maven" scheme="http://mechenjuanjuan.github.io/tags/Maven/"/>
    
      <category term="Mybatis" scheme="http://mechenjuanjuan.github.io/tags/Mybatis/"/>
    
      <category term="mapper" scheme="http://mechenjuanjuan.github.io/tags/mapper/"/>
    
  </entry>
  
  <entry>
    <title>Idea创建Maven项目</title>
    <link href="http://mechenjuanjuan.github.io/2019/11/15/chen_04/"/>
    <id>http://mechenjuanjuan.github.io/2019/11/15/chen_04/</id>
    <published>2019-11-15T08:44:01.545Z</published>
    <updated>2020-03-26T09:09:53.224Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images7.png"></center><a id="more"></a>## 1、Idea创建<center><img src="/post_image/chen_04/1.png"></center><ul><li><p>填写组名、项目名</p><center><img src="/post_image/chen_04/2.png"></center></li><li><p>选择你的maven和本地仓库</p></li><li><p>注：maven环境，配置，本地仓库就不说了</p><center><img src="/post_image/chen_04/3.png"></center></li><li><p>解决构建maven项目过慢</p><center><img src="/post_image/chen_04/4.png"></center></li><li><p>选择项目地址</p><center><img src="/post_image/chen_04/5.png"></center></li><li><p>看到如下图的信息和目录结构说明构建成功</p><center><img src="/post_image/chen_04/6.png"></center></li><li><p>在src/main下创建java和resources</p><center><img src="/post_image/chen_04/7.png"></center><center><img src="/post_image/chen_04/8.png"></center></li><li><p>在src下创建test文件，再创建java和resources用于测试</p><center><img src="/post_image/chen_04/9.png"></center><center><img src="/post_image/chen_04/10.png"></center></li><li><p>目录结构创建好了，图标颜色样式如下图</p><center><img src="/post_image/chen_04/11.png"></center></li></ul><h2 id="1、maven相关设置"><a href="#1、maven相关设置" class="headerlink" title="1、maven相关设置"></a>1、maven相关设置</h2><ul><li><p>注意：如果maven项目控制台输出的是乱码，可以在这个地方设置，解决乱码</p></li><li><p>-Dfile.encoding=GB2312 -Darchetypecatalog=internal</p><center><img src="/post_image/chen_04/12.png"></center></li><li><p>maven仓库设置，和仓库更新</p><center><img src="/post_image/chen_04/13.png"></center><center><img src="/post_image/chen_04/14.png"></center></li></ul><h2 id="1、maven项目启动"><a href="#1、maven项目启动" class="headerlink" title="1、maven项目启动"></a>1、maven项目启动</h2><p>在pom.xml配置tomcat7,JDK插件</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">&lt;build&gt;</span><br><span class="line">        &lt;!--maven插件--&gt;</span><br><span class="line">        &lt;plugins&gt;</span><br><span class="line">            &lt;!--jdk编译插件--&gt;</span><br><span class="line">            &lt;plugin&gt;</span><br><span class="line">                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;</span><br><span class="line">                &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;</span><br><span class="line">                &lt;configuration&gt;</span><br><span class="line">                    &lt;source&gt;1.8&lt;/source&gt;</span><br><span class="line">                    &lt;target&gt;1.8&lt;/target&gt;</span><br><span class="line">                    &lt;encoding&gt;utf-8&lt;/encoding&gt;</span><br><span class="line">                &lt;/configuration&gt;</span><br><span class="line">            &lt;/plugin&gt;</span><br><span class="line">            &lt;!--tomcat插件--&gt;</span><br><span class="line">            &lt;plugin&gt;</span><br><span class="line">                &lt;groupId&gt;org.apache.tomcat.maven&lt;/groupId&gt;</span><br><span class="line">                &lt;!-- tomcat7的插件， 不同tomcat版本这个也不一样 --&gt;</span><br><span class="line">                &lt;artifactId&gt;tomcat7-maven-plugin&lt;/artifactId&gt;</span><br><span class="line">                &lt;version&gt;2.1&lt;/version&gt;</span><br><span class="line">                &lt;configuration&gt;</span><br><span class="line">                    &lt;!-- 通过maven tomcat7:run运行项目时，访问项目的端口号 --&gt;</span><br><span class="line">                    &lt;port&gt;8080&lt;/port&gt;</span><br><span class="line">                    &lt;!-- 项目访问路径  本例：localhost:9090,  如果配置的aa， 则访问路径为localhost:9090/aa--&gt;</span><br><span class="line">                    &lt;path&gt;/&lt;/path&gt;</span><br><span class="line">                &lt;/configuration&gt;</span><br><span class="line">            &lt;/plugin&gt;</span><br><span class="line"></span><br><span class="line">        &lt;/plugins&gt;</span><br><span class="line">    &lt;/build&gt;</span><br></pre></td></tr></table></figure><ul><li><p>出现如下图，说明配置成功（不成功刷新一下maven）</p></li><li><p>可以直接点击tomcat7：run运行</p><center><img src="/post_image/chen_04/15.png"></center></li><li><p>为了启动方便，可以再配置一下</p><center><img src="/post_image/chen_04/16.png"></center><center><img src="/post_image/chen_04/17.png"></center><center><img src="/post_image/chen_04/18.png"></center></li><li><p>清除一下，安装部署一下</p><center><img src="/post_image/chen_04/19.png"></center><center><img src="/post_image/chen_04/20.png"></center></li><li><p>启动，下面会出现访问地址，点击访问</p></li><li><p>注：访问地址可以在pom.xml的插件里修改</p><center><img src="/post_image/chen_04/21.png"></center><center><img src="/post_image/chen_04/22.png"></center></li><li><p>修改后台代码，配置文件等，尽量clean、install一下再启动</p></li><li><p>未完待续…</p></li></ul>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images7.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="Maven" scheme="http://mechenjuanjuan.github.io/categories/Maven/"/>
    
    
      <category term="Idea" scheme="http://mechenjuanjuan.github.io/tags/Idea/"/>
    
      <category term="Maven" scheme="http://mechenjuanjuan.github.io/tags/Maven/"/>
    
  </entry>
  
  <entry>
    <title>Java调用Python传list(多个list，不同类型list)参数</title>
    <link href="http://mechenjuanjuan.github.io/2019/10/30/chen_03/"/>
    <id>http://mechenjuanjuan.github.io/2019/10/30/chen_03/</id>
    <published>2019-10-30T09:17:37.206Z</published>
    <updated>2020-03-26T09:21:19.607Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images6.png"></center><a id="more"></a>## 1、通过Runtime进行调用#### 1.1 传一个字符串* java文件<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">public class CoalType &#123;</span><br><span class="line">    public static String coalType_list(String data) &#123;</span><br><span class="line">        String arr = null;</span><br><span class="line">        try &#123;</span><br><span class="line">            String[] arg = new String[] &#123; &quot;E:\\Program Files\\Python36\\python.exe&quot;, &quot;E:\\Test\\test\\qiting.py&quot;,data&#125;;</span><br><span class="line">            Process proc = Runtime.getRuntime().exec(arg);// 执行py文件</span><br><span class="line"></span><br><span class="line">            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));</span><br><span class="line">            String line = null;</span><br><span class="line">            while ((line = in.readLine()) != null) &#123;</span><br><span class="line">                arr = line;</span><br><span class="line">            &#125;</span><br><span class="line">            in.close();</span><br><span class="line">            proc.waitFor();</span><br><span class="line">        &#125; catch (IOException e) &#123;</span><br><span class="line">            e.printStackTrace();</span><br><span class="line">        &#125; catch (InterruptedException e) &#123;</span><br><span class="line">            e.printStackTrace();</span><br><span class="line">        &#125;</span><br><span class="line">        return arr;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    public static void main(String[] args) &#123;</span><br><span class="line">        String data = &quot;Lisa&quot;;</span><br><span class="line">        String test_name = CoalType.coalType_list(data);</span><br><span class="line">        System.out.println(test_name);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ul><li>py文件</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">import numpy as np</span><br><span class="line">import sys as ss</span><br><span class="line">        </span><br><span class="line">def main():</span><br><span class="line">print (ss.argv[1])</span><br><span class="line"></span><br><span class="line">if __name__ == &apos;__main__&apos;:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure><ul><li>结果</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Lisa</span><br></pre></td></tr></table></figure><p>如下图：</p><center><img src="/post_image/chen_03/1.jpg"></center><p>&ensp;&ensp;&ensp;在Java中通过Runtime调用Python程序与直接执行Python程序的效果是一样的，可以在Python中读取传递的参数，也可以在Java中读取到Python的执行结果。<br>&ensp;&ensp;&ensp;如上图所示，这样是获取不到数据的，需要输出语句print，StartStopOpt方法在java中也调用不了，需要在.py文件里初始化调用，然后输出，java才能获取到数据<br>&ensp;&ensp;&ensp;需要注意的是，不能在Python中通过return语句返回结果，只能将返回值写入到标准输出流中，然后在Java中通过标准输入流读取Python的输出值。</p><h4 id="1-1-传一个list集合"><a href="#1-1-传一个list集合" class="headerlink" title="1.1 传一个list集合"></a>1.1 传一个list集合</h4><ul><li><p>java文件</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">public class Mogun &#123;</span><br><span class="line">    public static String coalType_list(List&lt;Double&gt; list_one) &#123;</span><br><span class="line">        String arr = null;</span><br><span class="line">        try &#123;</span><br><span class="line">            String sysPython = &quot;E:\\Program Files\\Python36\\python.exe &quot;;</span><br><span class="line">            String filePython = &quot;E:\\Test\\test\\qiting.py &quot;;</span><br><span class="line">            Process proc = Runtime.getRuntime().exec(sysPython + filePython + list_one);// 执行py文件</span><br><span class="line">            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));</span><br><span class="line">            String line = null;</span><br><span class="line">            while ((line = in.readLine()) != null) &#123;</span><br><span class="line">                arr = line;</span><br><span class="line">            &#125;</span><br><span class="line">            in.close();</span><br><span class="line">            proc.waitFor();</span><br><span class="line">        &#125; catch (IOException e) &#123;</span><br><span class="line">            e.printStackTrace();</span><br><span class="line">        &#125; catch (InterruptedException e) &#123;</span><br><span class="line">            e.printStackTrace();</span><br><span class="line">        &#125;</span><br><span class="line">        return arr;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    public static void main(String[] args) throws Exception &#123;</span><br><span class="line">        List&lt;Double&gt; list_one = new ArrayList&lt;&gt;();</span><br><span class="line">        list_one.add(1.222);</span><br><span class="line">        list_one.add(2.888);</span><br><span class="line">        list_one.add(3.888);</span><br><span class="line">        list_one.add(4.888);</span><br><span class="line">        list_one.add(5.888);</span><br><span class="line">        String flag = Mogun.coalType_list(list_one);</span><br><span class="line">        System.out.println(flag);</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></li><li><p>py文件</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">import numpy as np</span><br><span class="line">import sys as ss</span><br><span class="line"></span><br><span class="line">def StartStopOpt(list_str,list_float):</span><br><span class="line">............</span><br><span class="line">...........</span><br><span class="line">return result</span><br><span class="line">        </span><br><span class="line">def main():</span><br><span class="line">list_str = []</span><br><span class="line">    list_float = []</span><br><span class="line">    for i in range(1, len(ss.argv)):</span><br><span class="line">        list_str.append(ss.argv[i].replace(&quot;,&quot;, &quot;&quot;))</span><br><span class="line">    list_str[0] = list_str[0].replace(&quot;[&quot;, &quot;&quot;)</span><br><span class="line">    list_str[len(ss.argv) - 2] = list_str[len(ss.argv) - 2].replace(&quot;]&quot;, &quot;&quot;)</span><br><span class="line">    # 字符串数组</span><br><span class="line">    # print(list_str)</span><br><span class="line">    # 浮点数数组</span><br><span class="line">    list_int = list(map(float, list_str))</span><br><span class="line">    # print(list_int)</span><br><span class="line"># 调用函数传参得到返回值输出</span><br><span class="line">test = StartStopOpt(list_str,list_float)</span><br><span class="line">print(test)</span><br><span class="line"></span><br><span class="line">if __name__ == &apos;__main__&apos;:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure></li><li><p>结果</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">字符串数组</span><br><span class="line">[&apos;1.222&apos;, &apos;2.888&apos;, &apos;3.888&apos;, &apos;4.888&apos;, &apos;5.888&apos;]</span><br><span class="line">浮点数数组</span><br><span class="line">[1.222, 2.888, 3.888, 4.888, 5.888]</span><br><span class="line">调用函数传参得到返回值输出</span><br><span class="line">...省略</span><br></pre></td></tr></table></figure></li></ul><p>注意：一定要记得空格，不然会报错</p><center><img src="/post_image/chen_03/2.jpg"></center><center><img src="/post_image/chen_03/3.jpg"></center><h4 id="1-1-传两个list集合"><a href="#1-1-传两个list集合" class="headerlink" title="1.1 传两个list集合"></a>1.1 传两个list集合</h4><ul><li><p>java文件</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line">public class Mogun &#123;</span><br><span class="line">    public static String coalType_list(List&lt;Double&gt; list_one, List&lt;Integer&gt; list_two) &#123;</span><br><span class="line">        String arr = null;</span><br><span class="line">        try &#123;</span><br><span class="line">            String sysPython = &quot;E:\\Program Files\\Python36\\python.exe &quot;;</span><br><span class="line">            String filePython = &quot;E:\\Test\\test\\qiting.py &quot;;</span><br><span class="line">            Process proc = Runtime.getRuntime().exec(sysPython + filePython + list_one + list_two);// 执行py文件</span><br><span class="line">            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));</span><br><span class="line">            String line = null;</span><br><span class="line">            while ((line = in.readLine()) != null) &#123;</span><br><span class="line">                arr = line;</span><br><span class="line">            &#125;</span><br><span class="line">            in.close();</span><br><span class="line">            proc.waitFor();</span><br><span class="line">        &#125; catch (IOException e) &#123;</span><br><span class="line">            e.printStackTrace();</span><br><span class="line">        &#125; catch (InterruptedException e) &#123;</span><br><span class="line">            e.printStackTrace();</span><br><span class="line">        &#125;</span><br><span class="line">        return arr;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    public static void main(String[] args) throws Exception &#123;</span><br><span class="line">        List&lt;Double&gt; list_one = new ArrayList&lt;&gt;();</span><br><span class="line">        list_one.add(1.222);</span><br><span class="line">        list_one.add(2.888);</span><br><span class="line">        list_one.add(3.888);</span><br><span class="line">        list_one.add(4.888);</span><br><span class="line">        list_one.add(5.888);</span><br><span class="line">        List&lt;Integer&gt; list_two = new ArrayList&lt;&gt;();</span><br><span class="line">        list_two.add(1);</span><br><span class="line">        list_two.add(2);</span><br><span class="line">        list_two.add(3);</span><br><span class="line">        list_two.add(4);</span><br><span class="line">        list_two.add(5);</span><br><span class="line">        String flag = Mogun.coalType_list(list_one, list_two);</span><br><span class="line">        System.out.println(flag);</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></li><li><p>py文件</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">import numpy as np</span><br><span class="line">import sys as ss</span><br><span class="line"></span><br><span class="line">def StartStopOpt(turn,current):</span><br><span class="line">............</span><br><span class="line">...........</span><br><span class="line">return result</span><br><span class="line">        </span><br><span class="line">def main():</span><br><span class="line">#初始数据</span><br><span class="line">    # print (ss.argv[1:])</span><br><span class="line">    list_str = []</span><br><span class="line">    turn = []</span><br><span class="line">    current = []</span><br><span class="line">    for i in range(1, len(ss.argv)):</span><br><span class="line">        list_str.append(ss.argv[i].replace(&quot;,&quot;, &quot;&quot;))</span><br><span class="line">    list_str[0] = list_str[0].replace(&quot;[&quot;, &quot;&quot;)</span><br><span class="line">    list_str[len(ss.argv) - 2] = list_str[len(ss.argv) - 2].replace(&quot;]&quot;, &quot;&quot;)</span><br><span class="line">    str = &apos;,&apos;.join(list_str)</span><br><span class="line">    arr = str.split(&quot;][&quot;)</span><br><span class="line">    turn = arr[0].split(&quot;,&quot;)</span><br><span class="line">    turn = list(map(float, turn))#转换成浮点数数组</span><br><span class="line">    #输出第一个数组</span><br><span class="line">    # print (turn)</span><br><span class="line">    current = arr[1].split(&quot;,&quot;)</span><br><span class="line">    current = list(map(int, current))#转换成整数数组</span><br><span class="line">    #输出第二个数组</span><br><span class="line">    # print (current)</span><br><span class="line"></span><br><span class="line"># 调用函数传参得到返回值输出</span><br><span class="line">test = StartStopOpt(turn,current)</span><br><span class="line">print(test)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">if __name__ == &apos;__main__&apos;:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure></li><li><p>结果</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">初始数据</span><br><span class="line">[&apos;[1.222,&apos;, &apos;2.888,&apos;, &apos;3.888,&apos;, &apos;4.888,&apos;, &apos;5.888][1,&apos;, &apos;2,&apos;, &apos;3,&apos;, &apos;4,&apos;, &apos;5]&apos;]</span><br><span class="line">输出第一个数组</span><br><span class="line">[1, 2, 3, 4, 5]</span><br><span class="line">输出第二个数组</span><br><span class="line">[1.222, 2.888, 3.888, 4.888, 5.888]</span><br><span class="line">调用函数传参得到返回值输出</span><br><span class="line">...省略</span><br></pre></td></tr></table></figure></li></ul><p>问题：数组的长度也是有限制的，我试着添加了8000元素的double类型的集合，就报错了<br>解决：<a href="https://www.cnblogs.com/downmoon/archive/2012/11/18/2775587.html" target="_blank" rel="noopener">https://www.cnblogs.com/downmoon/archive/2012/11/18/2775587.html</a></p>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images6.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="Python" scheme="http://mechenjuanjuan.github.io/categories/Python/"/>
    
    
      <category term="Java" scheme="http://mechenjuanjuan.github.io/tags/Java/"/>
    
      <category term="Python" scheme="http://mechenjuanjuan.github.io/tags/Python/"/>
    
  </entry>
  
  <entry>
    <title>Git使用详情（二）</title>
    <link href="http://mechenjuanjuan.github.io/2019/10/14/chen_02/"/>
    <id>http://mechenjuanjuan.github.io/2019/10/14/chen_02/</id>
    <published>2019-10-14T03:58:41.514Z</published>
    <updated>2020-04-09T09:39:23.480Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images11.png"></center><a id="more"></a>## 1、远程仓库##### 1.1 添加远程库上一篇我们已经在本地创建了一个Git仓库，又想让其他人来协作开发，此时就可以把本地仓库同步到远程仓库，同时还增加了本地仓库的一个备份。常用的远程仓库就是github：https://github.com/，接下来我们演示如何将本地代码同步到github。<h5 id="1-1-1-在github上创建仓库"><a href="#1-1-1-在github上创建仓库" class="headerlink" title="1.1.1 在github上创建仓库"></a>1.1.1 在github上创建仓库</h5><p>首先你得在github上创建一个账号，这个就不演示了。然后在github上创建一个仓库：</p><center><img src="/post_image/chen_02/1.png"></center><center><img src="/post_image/chen_02/2.png"></center>点击“create repository”按钮仓库就创建成功了。Github支持两种同步方式“https”和“ssh”。如果使用https很简单基本不需要配置就可以使用，但是每次提交代码和下载代码时都需要输入用户名和密码。如果使用ssh方式就需要客户端先生成一个密钥对，即一个公钥一个私钥。然后还需要把公钥放到githib的服务器上。这两种方式在实际开发中都用应用，所以我们都需要掌握。接下来我们先看ssh方式。<h5 id="1-1-2-ssh协议"><a href="#1-1-2-ssh协议" class="headerlink" title="1.1.2 ssh协议"></a>1.1.2 ssh协议</h5><h6 id="1-1-2-1-什么是ssh"><a href="#1-1-2-1-什么是ssh" class="headerlink" title="1.1.2.1 什么是ssh?"></a>1.1.2.1 什么是ssh?</h6><p>SSH 为 Secure Shell（安全外壳协议）的缩写，由 IETF 的网络小组（Network Working Group）所制定。SSH 是目前较可靠，专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。</p><h6 id="1-1-2-2-基于密匙的安全验证"><a href="#1-1-2-2-基于密匙的安全验证" class="headerlink" title="1.1.2.2 基于密匙的安全验证"></a>1.1.2.2 基于密匙的安全验证</h6><p>使用ssh协议通信时，推荐使用基于密钥的验证方式。你必须为自己创建一对密匙，并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上，客户端软件就会向服务器发出请求，请求用你的密匙进行安全验证。服务器收到请求之后，先在该服务器上你的主目录下寻找你的公用密匙，然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致，服务器就用公用密匙加密“质询”（challenge）并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。</p><h6 id="1-1-2-3-ssh密钥生成"><a href="#1-1-2-3-ssh密钥生成" class="headerlink" title="1.1.2.3 ssh密钥生成"></a>1.1.2.3 ssh密钥生成</h6><p>在windows下我们可以使用 Git Bash.exe来生成密钥，可以通过开始菜单或者右键菜单打开Git Bash</p><center><img src="/post_image/chen_02/3.png"></center>git bash 执行命令,生命公钥和私钥命令: ssh-keygen -t rsa<center><img src="/post_image/chen_02/4.png"></center>执行命令完成后,在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥:<center><img src="/post_image/chen_02/5.png"></center><h6 id="1-1-2-4-ssh密钥配置"><a href="#1-1-2-4-ssh密钥配置" class="headerlink" title="1.1.2.4 ssh密钥配置"></a>1.1.2.4 ssh密钥配置</h6><p>密钥生成后需要在github上配置密钥本地才可以顺利访问。</p><center><img src="/post_image/chen_02/6.png"></center><center><img src="/post_image/chen_02/7.png"></center>在key部分将id_rsa.pub文件内容添加进去，然后点击“Add SSH key”按钮完成配置。<h5 id="1-1-3-同步到远程仓库"><a href="#1-1-3-同步到远程仓库" class="headerlink" title="1.1.3 同步到远程仓库"></a>1.1.3 同步到远程仓库</h5><p>同步到远程仓库可以使用git bash也可以使用tortoiseGit</p><h6 id="1-1-3-1-使用git-bash"><a href="#1-1-3-1-使用git-bash" class="headerlink" title="1.1.3.1 使用git bash"></a>1.1.3.1 使用git bash</h6><p>在仓库所在的目录（D:\temp\git\repository）点击右键选择“Git Bash Here”，启动git bash程序。</p><center><img src="/post_image/chen_02/8.png"></center>然后在git bash中执行如下语句：git remote add origin git@github.com:sublun/mytest.gitgit push -u origin master注意：其中红色字体部分需要替换成个人的用户名。<p>如何出现如下错误：</p><center><img src="/post_image/chen_02/9.png"></center>可以先执行如下命令，然后再执行上面的命令$ git remote rm origin<center><img src="/post_image/chen_02/10.png"></center><h6 id="1-1-3-2-使用TortoiseGit同步"><a href="#1-1-3-2-使用TortoiseGit同步" class="headerlink" title="1.1.3.2 使用TortoiseGit同步"></a>1.1.3.2 使用TortoiseGit同步</h6><p>一、由于TortoiseGit使用的ssh工具是“PuTTY”git Bash使用的ssh工具是“openSSH”，如果想让TortoiseGit也使用刚才生成的密钥可以做如下配置：</p><center><img src="/post_image/chen_02/11.png"></center><center><img src="/post_image/chen_02/12.png"></center>Url：远程仓库的地址推送URL：也是相同的Putty密钥：选择刚才生成的密钥中的私钥<p>二、同步。在本地仓库的文件夹中单击右键，选择“Git同步”</p><center><img src="/post_image/chen_02/13.png"></center><center><img src="/post_image/chen_02/14.png"></center><h5 id="1-2-从远程仓库克隆"><a href="#1-2-从远程仓库克隆" class="headerlink" title="1.2 从远程仓库克隆"></a>1.2 从远程仓库克隆</h5><p>克隆远程仓库也就是从远程把仓库复制一份到本地，克隆后会创建一个新的本地仓库。选择一个任意部署仓库的目录，然后克隆远程仓库。</p><h6 id="1-2-1-使用git-bash："><a href="#1-2-1-使用git-bash：" class="headerlink" title="1.2.1 使用git bash："></a>1.2.1 使用git bash：</h6><blockquote><p>$ git clone <a href="mailto:git@github.com" target="_blank" rel="noopener">git@github.com</a>:sublun/mytest.git</p></blockquote><h6 id="1-2-2-使用TortoiseGit："><a href="#1-2-2-使用TortoiseGit：" class="headerlink" title="1.2.2 使用TortoiseGit："></a>1.2.2 使用TortoiseGit：</h6><p>在任意目录点击右键:</p><center><img src="/post_image/chen_02/15.png"></center><center><img src="/post_image/chen_02/16.png"></center><center><img src="/post_image/chen_02/17.png"></center><h5 id="1-3-从远程仓库取代码"><a href="#1-3-从远程仓库取代码" class="headerlink" title="1.3 从远程仓库取代码"></a>1.3 从远程仓库取代码</h5><p>Git中从远程的分支获取最新的版本到本地有这样2个命令：<br>1.git fetch：相当于是从远程获取最新版本到本地，不会自动merge（合并代码）<br>2.git pull：相当于是从远程获取最新版本并merge到本地<br>上述命令其实相当于git fetch 和 git merge<br>在实际使用中，git fetch更安全一些<br>因为在merge前，我们可以查看更新情况，然后再决定是否合并<br>如果使用TortoiseGit的话可以从右键菜单中点击“拉取”（pull）或者“获取”（fetch）</p><center><img src="/post_image/chen_02/18.png"></center><h5 id="1-4-搭建私有Git服务器"><a href="#1-4-搭建私有Git服务器" class="headerlink" title="1.4 搭建私有Git服务器"></a>1.4 搭建私有Git服务器</h5><h6 id="1-4-1-服务器搭建"><a href="#1-4-1-服务器搭建" class="headerlink" title="1.4.1 服务器搭建"></a>1.4.1 服务器搭建</h6><p>远程仓库实际上和本地仓库没啥不同，纯粹为了7x24小时开机并交换大家的修改。GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说，既不想公开源代码，又舍不得给GitHub交保护费，那就只能自己搭建一台Git服务器作为私有仓库使用。<br>搭建Git服务器需要准备一台运行Linux的机器，在此我们使用CentOS。以下为安装步骤：<br>yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc<br>2、下载git-2.5.0.tar.gz<br>1）解压缩<br>2）cd git-2.5.0<br>3）autoconf<br>4）./configure<br>5）make<br>6）make install<br>3、添加用户<br>adduser -r -c ‘git version control’ -d /home/git -m git<br>此命令执行后会创建/home/git目录作为git用户的主目录。<br>5、设置密码<br>passwd git<br>输入两次密码<br>6、切换到git用户<br>su git<br>7、创建git仓库<br>git –bare init /home/git/first<br>注意：如果不使用“–bare”参数，初始化仓库后，提交master分支时报错。这是由于git默认拒绝了push操作，需要.git/config添加如下代码：<br>[receive]<br>      denyCurrentBranch = ignore<br>推荐使用：git –bare init初始化仓库。</p><h6 id="1-4-2-连接服务器"><a href="#1-4-2-连接服务器" class="headerlink" title="1.4.2 连接服务器"></a>1.4.2 连接服务器</h6><p>私有git服务器搭建完成后就可以向连接github一样连接使用了，但是我们的git服务器并没有配置密钥登录，所以每次连接时需要输入密码。<br>使用命令连接：<br>$ git remote add origin ssh://git@192.168.25.156/home/git/first<br>这种形式和刚才使用的形式好像不一样，前面有ssh://前缀，好吧你也可以这样写：<br>$ git remote add origin <a href="mailto:git@192.168.25.156" target="_blank" rel="noopener">git@192.168.25.156</a>:first</p><p>使用TortoiseGit同步的话参考上面的使用方法。</p><h2 id="2、分支管理"><a href="#2、分支管理" class="headerlink" title="2、分支管理"></a>2、分支管理</h2><h5 id="2-1-创建合并分支"><a href="#2-1-创建合并分支" class="headerlink" title="2.1 创建合并分支"></a>2.1 创建合并分支</h5><p>在我们每次的提交，Git都把它们串成一条时间线，这条时间线就是一个分支。截止到目前，只有一条时间线，在Git里，这个分支叫主分支，即master分支。HEAD指针严格来说不是指向提交，而是指向master，master才是指向提交的，所以，HEAD指向的就是当前分支。<br>一开始的时候，master分支是一条线，Git用master指向最新的提交，再用HEAD指向master，就能确定当前分支，以及当前分支的提交点：</p><center><img src="/post_image/chen_02/19.png"></center>每次提交，master分支都会向前移动一步，这样，随着你不断提交，master分支的线也越来越长。当我们创建新的分支，例如dev时，Git新建了一个指针叫dev，指向master相同的提交，再把HEAD指向dev，就表示当前分支在dev上：<center><img src="/post_image/chen_02/20.png"></center>你看，Git创建一个分支很快，因为除了增加一个dev指针，改改HEAD的指向，工作区的文件都没有任何变化！<p>不过，从现在开始，对工作区的修改和提交就是针对dev分支了，比如新提交一次后，dev指针往前移动一步，而master指针不变：</p><center><img src="/post_image/chen_02/21.png"></center>假如我们在dev上的工作完成了，就可以把dev合并到master上。Git怎么合并呢？最简单的方法，就是直接把master指向dev的当前提交，就完成了合并：<center><img src="/post_image/chen_02/22.png"></center>所以Git合并分支也很快！就改改指针，工作区内容也不变！<p>合并完分支后，甚至可以删除dev分支。删除dev分支就是把dev指针给删掉，删掉后，我们就剩下了一条master分支：</p><center><img src="/post_image/chen_02/23.png"></center><h5 id="2-2-使用TortoiseGit实现分支管理"><a href="#2-2-使用TortoiseGit实现分支管理" class="headerlink" title="2.2 使用TortoiseGit实现分支管理"></a>2.2 使用TortoiseGit实现分支管理</h5><p>使用TortoiseGit管理分支就很简单了。</p><h6 id="2-2-1-创建分支"><a href="#2-2-1-创建分支" class="headerlink" title="2.2.1 创建分支"></a>2.2.1 创建分支</h6><p>在本地仓库文件夹中点击右键，然后从菜单中选择“创建分支”：</p><center><img src="/post_image/chen_02/24.png"></center>如果想创建完毕后直接切换到新分支可以勾选“切换到新分支”选项或者从菜单中选择“切换/检出”来切换分支：<center><img src="/post_image/chen_02/25.png"></center><h6 id="2-2-2-合并分支"><a href="#2-2-2-合并分支" class="headerlink" title="2.2.2 合并分支"></a>2.2.2 合并分支</h6><p>分支切换到dev后就可以对工作区的文件进行修改，然后提交到dev分支原理的master分支不受影响。例如我们修改mytest.txt中的内容，然后提交到dev分支。</p><center><img src="/post_image/chen_02/26.png"></center><center><img src="/post_image/chen_02/27.png"></center>切换到master分支后还是原理的内容：<center><img src="/post_image/chen_02/28.png"></center>将dev分支的内容合并到master分支，当前分支为master。从右键菜单中选择“合并”：<center><img src="/post_image/chen_02/29.png"></center>再查看mytest.txt的内容就已经更新了：<center><img src="/post_image/chen_02/30.png"></center><h5 id="2-3-解决冲突"><a href="#2-3-解决冲突" class="headerlink" title="2.3 解决冲突"></a>2.3 解决冲突</h5><p>两个分支中编辑的内容都是相互独立互不干扰的，那么如果在两个分支中都对同一个文件进行编辑，然后再合并，就有可能会出现冲突。<br>例如在master分支中对mytest.txt进行编辑：</p><center><img src="/post_image/chen_02/31.png"></center>然后提交到版本库。<center><img src="/post_image/chen_02/32.png"></center>切换到dev分支，对mytest.txt进行编辑：<center><img src="/post_image/chen_02/33.png"></center><center><img src="/post_image/chen_02/34.png"></center>最后进行分支合并，例如将dev分支合并到master分支。需要先切换到master分支然后进行分支合并。<center><img src="/post_image/chen_02/35.png"></center>出现版本冲突。<center><img src="/post_image/chen_02/36.png"></center>冲突需要手动解决。<center><img src="/post_image/chen_02/37.png"></center>在冲突文件上单机右键选择“解决冲突”菜单项：<center><img src="/post_image/chen_02/38.png"></center><center><img src="/post_image/chen_02/39.png"></center>把冲突解决完毕的文件提交到版本库就可以了。<h2 id="3、在IntelliJ-IDEA中使用git"><a href="#3、在IntelliJ-IDEA中使用git" class="headerlink" title="3、在IntelliJ IDEA中使用git"></a>3、在IntelliJ IDEA中使用git</h2><h5 id="3-1-在Idea中配置git"><a href="#3-1-在Idea中配置git" class="headerlink" title="3.1 在Idea中配置git"></a>3.1 在Idea中配置git</h5><p>安装好IntelliJ IDEA后，如果Git安装在默认路径下，那么idea会自动找到git的位置，如果更改了Git的安装位置则需要手动配置下Git的路径。<br>选择File→Settings打开设置窗口，找到Version Control下的git选项：</p><center><img src="/post_image/chen_02/40.png"></center>选择git的安装目录后可以点击“Test”按钮测试是否正确配置。<center><img src="/post_image/chen_02/41.png"></center><h5 id="3-2-将工程添加至git"><a href="#3-2-将工程添加至git" class="headerlink" title="3.2 将工程添加至git"></a>3.2 将工程添加至git</h5><p>1）在idea中创建一个工程，例如创建一个java工程，名称为idea-git-test，如下图所示：</p><center><img src="/post_image/chen_02/42.png"></center>2）创建本地仓库在菜单中选择“vcs”→Import into Version Control→Create Git Repository...<center><img src="/post_image/chen_02/43.png"></center><center><img src="/post_image/chen_02/44.png"></center>选择工程所在的上级目录。本例中应该选择idea-projects目录，然后点击“OK”按钮，在工程的上级目录创建本地仓库，那么idea-projects目录就是本地仓库的工作目录，此目录中的工程就可以添加到本地仓库中。也就是可以把idea-git-test工程添加到本地仓库中。选择之后在工具栏上就多出了git相关工具按钮:<center><img src="/post_image/chen_02/45.png"></center>3）将工程添加至本地仓库直接点击<center><img src="/post_image/chen_02/46.png"></center>commit按钮，将工程提交至本地仓库。<center><img src="/post_image/chen_02/47.png"></center>然后点击“commit”按钮，将工程添加至本地仓库。<p>4）推送到远程<br>在github上创建一个仓库然后将本地仓库推送到远程。<br>在工程上点击右键，选择git→Repository→push，<br>或者在菜单中选择vcs→git→push</p><center><img src="/post_image/chen_02/48.png"></center><center><img src="/post_image/chen_02/49.png"></center>点击“Define remote”链接，配置https形式的URL，git形式的无法通过。然后点击OK<center><img src="/post_image/chen_02/50.png"></center><center><img src="/post_image/chen_02/51.png"></center>点击“push”按钮就讲本地仓库推送到远程，如果是第一次配置推送需要输入github的用户名和密码。<h5 id="3-3-从远程仓库克隆"><a href="#3-3-从远程仓库克隆" class="headerlink" title="3.3 从远程仓库克隆"></a>3.3 从远程仓库克隆</h5><p>关闭工程后，在idea的欢迎页上有“Check out from version control”下拉框，选择git</p><center><img src="/post_image/chen_02/52.png"></center><center><img src="/post_image/chen_02/53.png"></center>此处仍然推荐使用htts形式的url，点击“test”按钮后显示连接成功。点击OK按钮后根据提示将远程仓库克隆下来，然后倒入到idea中。<h5 id="3-4-从服务端拉取代码"><a href="#3-4-从服务端拉取代码" class="headerlink" title="3.4 从服务端拉取代码"></a>3.4 从服务端拉取代码</h5><p>如果需要从服务端同步代码可以使用工具条中的“update”按钮</p><center><img src="/post_image/chen_02/54.png"></center>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images11.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="Git" scheme="http://mechenjuanjuan.github.io/categories/Git/"/>
    
    
      <category term="Git" scheme="http://mechenjuanjuan.github.io/tags/Git/"/>
    
      <category term="Svn" scheme="http://mechenjuanjuan.github.io/tags/Svn/"/>
    
      <category term="Idea" scheme="http://mechenjuanjuan.github.io/tags/Idea/"/>
    
  </entry>
  
  <entry>
    <title>Git使用详情（一）</title>
    <link href="http://mechenjuanjuan.github.io/2019/10/10/chen_01/"/>
    <id>http://mechenjuanjuan.github.io/2019/10/10/chen_01/</id>
    <published>2019-10-10T07:00:22.815Z</published>
    <updated>2020-03-26T09:07:57.096Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images.png"></center><a id="more"></a>## 1、Git与Svn对比##### 1.1    Svn&ensp;&ensp;&ensp;SVN是集中式版本控制系统，版本库是集中放在中央服务器的，而干活的时候，用的都是自己的电脑，所以首先要从中央服务器哪里得到最新的版本，然后干活，干完后，需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作，如果在局域网还可以，带宽够大，速度够快，如果在互联网下，如果网速慢的话，就郁闷了。&ensp;&ensp;&ensp;下图就是标准的集中式版本控制工具管理方式：<center><img src="/post_image/chen_01/1.jpg"></center>&ensp;&ensp;&ensp;集中管理方式在一定程度上看到其他开发人员在干什么，而管理员也可以很轻松掌握每个人的开发权限。 <p>&ensp;&ensp;&ensp;但是相较于其优点而言，集中式版本控制工具缺点很明显：</p><ul><li>服务器单点故障</li><li>容错性差</li></ul><h5 id="1-2-Git"><a href="#1-2-Git" class="headerlink" title="1.2    Git"></a>1.2    Git</h5><p>&ensp;&ensp;&ensp;Git是分布式版本控制系统，那么它就没有中央服务器的，每个人的电脑就是一个完整的版本库，这样，工作的时候就不需要联网了，因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库，那多个人如何协作呢？比如说自己在电脑上改了文件A，其他人也在电脑上改了文件A，这时，你们两之间只需把各自的修改推送给对方，就可以互相看到对方的修改了。<br>&ensp;&ensp;&ensp;下图就是分布式版本控制工具管理方式：</p><center><img src="/post_image/chen_01/2.png"></center><h2 id="2、Git工作流程"><a href="#2、Git工作流程" class="headerlink" title="2、Git工作流程"></a>2、Git工作流程</h2><p>一般工作流程如下：<br>&ensp;&ensp;&ensp;1．从远程仓库中克隆 Git 资源作为本地仓库。<br>&ensp;&ensp;&ensp;2．从本地仓库中checkout代码然后进行代码修改<br>&ensp;&ensp;&ensp;3．在提交前先将代码提交到暂存区。<br>&ensp;&ensp;&ensp;4．提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。<br>&ensp;&ensp;&ensp;5．在修改完成后，需要和团队成员共享代码时，可以将代码push到远程仓库。<br>下图展示了 Git 的工作流程：</p><center><img src="/post_image/chen_01/3.png"></center><h2 id="3、Git的安装"><a href="#3、Git的安装" class="headerlink" title="3、Git的安装"></a>3、Git的安装</h2><p>最早Git是在Linux上开发的，很长一段时间内，Git也只能在Linux和Unix系统上跑。不过，慢慢地有人把它移植到了Windows上。现在，Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。由于开发机大多数情况都是windows，所以本教程只讲解windows下的git的安装及使用。</p><h5 id="3-1-软件下载"><a href="#3-1-软件下载" class="headerlink" title="3.1 软件下载"></a>3.1 软件下载</h5><p>下载地址：<a href="https://git-scm.com/download" target="_blank" rel="noopener">https://git-scm.com/download</a></p><center><img src="/post_image/chen_01/4.png"></center><center><img src="/post_image/chen_01/5.png"></center>参考资料中安装包已经下载完毕，根据不同的操作系统选择对应的安装包。<h5 id="3-2软件安装"><a href="#3-2软件安装" class="headerlink" title="3.2软件安装"></a>3.2软件安装</h5><h6 id="3-2-1-安装git-for-windows"><a href="#3-2-1-安装git-for-windows" class="headerlink" title="3.2.1 安装git for windows"></a>3.2.1 安装git for windows</h6><center><img src="/post_image/chen_01/6.png"></center><center><img src="/post_image/chen_01/7.png"></center>一路“下一步”使用默认选项即可。<h6 id="3-2-2-安装TortoiseGit"><a href="#3-2-2-安装TortoiseGit" class="headerlink" title="3.2.2 安装TortoiseGit"></a>3.2.2 安装TortoiseGit</h6><center><img src="/post_image/chen_01/8.png"></center><center><img src="/post_image/chen_01/9.png"></center>一路“下一步”使用默认选项即可。默认选项下会启动配置画面：<center><img src="/post_image/chen_01/10.png"></center>由于目前只有英文语言包，默认即可继续下一步。配置git.exe，在3.2.1中已经安装过git-for-windows了所以在此找到git.exe所在的目录。<center><img src="/post_image/chen_01/11.png"></center>配置开发者姓名及邮箱，每次提交代码时都会把此信息包含到提交的信息中。<center><img src="/post_image/chen_01/12.png"></center><center><img src="/post_image/chen_01/13.png"></center>使用默认配置，点击“完成”按钮完成配置。完整完毕后在系统右键菜单中会出现git的菜单项。<center><img src="/post_image/chen_01/14.png"></center><h6 id="3-2-3-安装中文语言包"><a href="#3-2-3-安装中文语言包" class="headerlink" title="3.2.3 安装中文语言包"></a>3.2.3 安装中文语言包</h6><p>安装中文语言包并不是必选项。可以根据个人情况来选择安装。</p><center><img src="/post_image/chen_01/15.png"></center><center><img src="/post_image/chen_01/16.png"></center>直接“下一步”完整完毕。语言包安装完毕后可以在TortoiseGit的设置中调整语言<center><img src="/post_image/chen_01/17.png"></center><h2 id="4、使用Git管理文件版本"><a href="#4、使用Git管理文件版本" class="headerlink" title="4、使用Git管理文件版本"></a>4、使用Git管理文件版本</h2><h5 id="4-1-创建版本库"><a href="#4-1-创建版本库" class="headerlink" title="4.1 创建版本库"></a>4.1 创建版本库</h5><p>&ensp;&ensp;&ensp;什么是版本库呢？版本库又名仓库，英文名repository，你可以简单理解成一个目录，这个目录里面的所有文件都可以被Git管理起来，每个文件的修改、删除，Git都能跟踪，以便任何时刻都可以追踪历史，或者在将来某个时刻可以“还原”。由于git是分布式版本管理工具，所以git在不需要联网的情况下也具有完整的版本管理能力。<br>&ensp;&ensp;&ensp;创建一个版本库非常简单，可以使用git bash也可以使用tortoiseGit。首先，选择一个合适的地方，创建一个空目录（D:\temp\git\repository）。</p><h6 id="4-1-1-使用GitBash"><a href="#4-1-1-使用GitBash" class="headerlink" title="4.1.1 使用GitBash"></a>4.1.1 使用GitBash</h6><p>在当前目录中点击右键中选择Git Bash来启动。</p><center><img src="/post_image/chen_01/18.png"></center><center><img src="/post_image/chen_01/19.png"></center><p>或者在开始菜单中启动。注意如果是从开始菜单启动的gitbash需要切换目录到仓库所在的目录。</p><center><img src="/post_image/chen_01/20.png"></center>创建仓库执行命令：$ git init<h6 id="4-1-2-使用GitBash"><a href="#4-1-2-使用GitBash" class="headerlink" title="4.1.2 使用GitBash"></a>4.1.2 使用GitBash</h6><p>使用TortoiseGit时只需要在目录中点击右键菜单选择“在这里创建版本库”</p><center><img src="/post_image/chen_01/21.png"></center><center><img src="/post_image/chen_01/22.png"></center><center><img src="/post_image/chen_01/23.png"></center>版本库创建成功，会在此目录下创建一个.git的隐藏目录，如下所示：<center><img src="/post_image/chen_01/24.png"></center>在windows中如何显示隐藏目录隐藏目录请自行百度 **o(╯□╰)o**<p><strong>概念：</strong><br><strong>版本库：“.git”目录就是版本库，将来文件都需要保存到版本库中。<br>工作目录：包含“.git”目录的目录，也就是.git目录的上一级目录就是工作目录。只有工作目录中的文件才能保存到版本库中。</strong></p><h5 id="4-2-添加文件"><a href="#4-2-添加文件" class="headerlink" title="4.2 添加文件"></a>4.2 添加文件</h5><h6 id="4-2-1-添加文件过程"><a href="#4-2-1-添加文件过程" class="headerlink" title="4.2.1 添加文件过程"></a>4.2.1 添加文件过程</h6><p>在D:\temp\git\repository目录下创建一个mytest.txt文件</p><center><img src="/post_image/chen_01/25.png"></center><center><img src="/post_image/chen_01/26.png"></center><center><img src="/post_image/chen_01/27.png"></center>文本文件变为带“+”号的图标：<center><img src="/post_image/chen_01/28.png"></center>提交文件：在mytest.txt上再次点击右键选择“提交”，此时将文件保存至版本库中。<center><img src="/post_image/chen_01/29.png"></center><center><img src="/post_image/chen_01/30.png"></center><center><img src="/post_image/chen_01/31.png"></center><h6 id="4-2-2-工作区和暂存区"><a href="#4-2-2-工作区和暂存区" class="headerlink" title="4.2.2 工作区和暂存区"></a>4.2.2 工作区和暂存区</h6><p>&ensp;&ensp;&ensp;Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。<br>什么是工作区（Working Directory）？<br>&ensp;&ensp;&ensp;工作区就是你在电脑里能看到的目录，比如我的reporstory文件夹就是一个工作区。<br>&ensp;&ensp;&ensp;有的人可能会说repository不是版本库吗怎么是工作区了？其实repository目录是工作区，在这个目录中的“.git”隐藏文件夹才是版本库。这回概念清晰了吧。<br>&ensp;&ensp;&ensp;Git的版本库里存了很多东西，其中最重要的就是称为stage（或者叫index）的暂存区，还有Git为我们自动创建的第一个分支master，以及指向master的一个指针叫HEAD。<br>如下图所示：</p><center><img src="/post_image/chen_01/2.jpg"></center>分支和HEAD的概念我们稍后再讲。前面讲了我们把文件往Git版本库里添加的时候，是分两步执行的：  <p>&ensp;&ensp;&ensp;第一步是用git add把文件添加进去，实际上就是把文件修改添加到暂存区；<br>&ensp;&ensp;&ensp;第二步是用git commit提交更改，实际上就是把暂存区的所有内容提交到当前分支。<br>&ensp;&ensp;&ensp;因为我们创建Git版本库时，Git自动为我们创建了唯一一个master分支，所以，现在，git commit就是往master分支上提交更改。<br>你可以简单理解为，需要提交的文件修改通通放到暂存区，然后，一次性提交暂存区的所有修改。</p><h5 id="4-3-修改文件"><a href="#4-3-修改文件" class="headerlink" title="4.3 修改文件"></a>4.3 修改文件</h5><h6 id="4-3-1-提交修改"><a href="#4-3-1-提交修改" class="headerlink" title="4.3.1 提交修改"></a>4.3.1 提交修改</h6><p>被版本库管理的文件不可避免的要发生修改，此时只需要直接对文件修改即可。修改完毕后需要将文件的修改提交到版本库。<br>在mytest.txt文件上点击右键，然后选择“提交”</p><center><img src="/post_image/chen_01/32.png"></center><center><img src="/post_image/chen_01/33.png"></center><center><img src="/post_image/chen_01/34.png"></center><h6 id="4-3-2-查看修改历史"><a href="#4-3-2-查看修改历史" class="headerlink" title="4.3.2 查看修改历史"></a>4.3.2 查看修改历史</h6><p>在开发过程中可能会经常查看代码的修改历史，或者叫做修改日志。来查看某个版本是谁修改的，什么时间修改的，修改了哪些内容。<br>可以在文件上点击右键选择“显示日志”来查看文件的修改历史。</p><center><img src="/post_image/chen_01/35.png"></center><center><img src="/post_image/chen_01/36.png"></center><h6 id="4-3-3-差异比较"><a href="#4-3-3-差异比较" class="headerlink" title="4.3.3 差异比较"></a>4.3.3 差异比较</h6><p>当文件内容修改后，需要和修改之前对比一下修改了哪些内容此时可以使用“比较差异功能”</p><center><img src="/post_image/chen_01/37.png"></center><center><img src="/post_image/chen_01/38.png"></center><h6 id="4-3-4-还原修改"><a href="#4-3-4-还原修改" class="headerlink" title="4.3.4 还原修改"></a>4.3.4 还原修改</h6><p>当文件修改后不想把修改的内容提交，还想还原到未修改之前的状态。此时可以使用“还原”功能</p><center><img src="/post_image/chen_01/39.png"></center><center><img src="/post_image/chen_01/40.png"></center><center><img src="/post_image/chen_01/41.png"></center><font color="red">注意：此操作会撤销所有未提交的修改，所以当做还原操作是需要慎重慎重！！！</font><h5 id="4-4-删除文件"><a href="#4-4-删除文件" class="headerlink" title="4.4 删除文件"></a>4.4 删除文件</h5><p>需要删除无用的文件时可以使用git提供的删除功能直接将文件从版本库中删除。</p><center><img src="/post_image/chen_01/42.png"></center><h5 id="4-5-例子：将java工程提交到版本库"><a href="#4-5-例子：将java工程提交到版本库" class="headerlink" title="4.5 例子：将java工程提交到版本库"></a>4.5 例子：将java工程提交到版本库</h5><p>第一步：将参考资料中的java工程project-test复制到工作目录中</p><center><img src="/post_image/chen_01/43.png"></center>第二步：将工程添加到暂存区。<center><img src="/post_image/chen_01/44.png"></center><center><img src="/post_image/chen_01/45.png"></center><center><img src="/post_image/chen_01/46.png"></center>点击确定完成暂存区添加。<p>三、忽略文件或文件夹<br>&ensp;&ensp;&ensp;在此工程中，并不是所有文件都需要保存到版本库中的例如“bin”目录及目录下的文件就可以忽略。好在Git考虑到了大家的感受，这个问题解决起来也很简单，在Git工作区的根目录下创建一个特殊的.gitignore文件，然后把要忽略的文件名填进去，Git就会自动忽略这些文件。<br>如果使用TortoiseGit的话可以使用菜单项直接进行忽略。</p><center><img src="/post_image/chen_01/47.png"></center><center><img src="/post_image/chen_01/48.png"></center><center><img src="/post_image/chen_01/49.png"></center>选择保留本地文件。完成后在此文件夹内会多出一个.gitignore文件，这个文件就是文件忽略文件，当然也可以手工编辑。其中的内容就是把bin目录忽略掉。<center><img src="/post_image/chen_01/50.png"></center>四、提交代码将代码添加到master分支上，其中.gitignore文件也需要添加到暂存区，然后提交到版本库。<h5 id="4-6忽略文件语法规范"><a href="#4-6忽略文件语法规范" class="headerlink" title="4.6忽略文件语法规范"></a>4.6忽略文件语法规范</h5><p>空行或是以 # 开头的行即注释行将被忽略。<br>可以在前面添加正斜杠 / 来避免递归,下面的例子中可以很明白的看出来与下一条的区别。<br>可以在后面添加正斜杠 / 来忽略文件夹，例如 build/ 即忽略build文件夹。<br>可以使用 ! 来否定忽略，即比如在前面用了 *.apk ，然后使用 !a.apk ，则这个a.apk不会被忽略。</p><ul><li><p>用来匹配零个或多个字符，如 *.[oa] 忽略所有以”.o”或”.a”结尾， *~ 忽略所有以 ~ 结尾的文件（这种文件通常被许多编辑器标记为临时文件）； [] 用来匹配括号内的任一字符，如 [abc] ，也可以在括号内加连接符，如 [0-9] 匹配0至9的数； ? 用来匹配单个字符。</p><p>  <strong>看了这么多，还是应该来个栗子：</strong></p></li></ul><ul><li><p>忽略 .a 文件</p><blockquote><p> *.a</p></blockquote></li><li><p>但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件</p><blockquote><p>!lib.a</p></blockquote></li><li><p>仅在当前目录下忽略 TODO 文件， 但不包括子目录下的 subdir/TODO</p><blockquote><p>/TODO</p></blockquote></li><li><p>忽略 build/ 文件夹下的所有文件</p><blockquote><p>build/</p></blockquote></li><li><p>忽略 doc/notes.txt, 不包括 doc/server/arch.txt</p><blockquote><p>doc/*.txt</p></blockquote></li><li><p>忽略所有的 .pdf 文件 在 doc/ directory 下的</p><blockquote><p>doc/<em>*/</em>.pdf</p></blockquote></li></ul>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="Git" scheme="http://mechenjuanjuan.github.io/categories/Git/"/>
    
    
      <category term="Git" scheme="http://mechenjuanjuan.github.io/tags/Git/"/>
    
      <category term="Svn" scheme="http://mechenjuanjuan.github.io/tags/Svn/"/>
    
  </entry>
  
  <entry>
    <title>Hexo 部署到码云</title>
    <link href="http://mechenjuanjuan.github.io/2019/09/09/chen_two/"/>
    <id>http://mechenjuanjuan.github.io/2019/09/09/chen_two/</id>
    <published>2019-09-09T02:01:25.267Z</published>
    <updated>2020-03-26T09:12:29.092Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images14.png"></center><a id="more"></a>### 注册码云* 码云官网：https://gitee.com/* 注册完成后创建一个新仓库，如下图<center><img src="/post_image/chen_two/1.png"></center><center><img src="/post_image/chen_two/2.png"></center><ul><li>创建完成后，查看路径</li></ul><center><img src="/post_image/chen_two/3.png"></center><h3 id="设置密钥"><a href="#设置密钥" class="headerlink" title="设置密钥"></a>设置密钥</h3><center><img src="/post_image/chen_two/4.png"></center><ul><li>我是直接使用https的，ssh我就不详细说了</li></ul><center><img src="/post_image/chen_two/5.png"></center><ul><li>复制到hexo根目录下_config.yml的这个位置</li></ul><center><img src="/post_image/chen_two/6.png"></center><ul><li>然后通过Git Bash Here</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo g</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure><ul><li>上传的时候系统会有弹框叫你输入你的码云用户名和密码</li></ul><h3 id="设置Page服务访问博客"><a href="#设置Page服务访问博客" class="headerlink" title="设置Page服务访问博客"></a>设置Page服务访问博客</h3><ul><li>代码成功上传码云后</li></ul><center><img src="/post_image/chen_two/7.png"></center><ul><li>部署目录和自定义域名可空，右边有免费试用版的</li></ul><center><img src="/post_image/chen_two/8.png"></center><ul><li><p>这个路径访问的时候可能会出现无法访问此网站或者404亦或者图标，样式，图片没效果？</p></li><li><p><strong><em>解决：</em></strong></p></li><li><p>复制这两个地方</p><center><img src="/post_image/chen_two/9.png"></center><center><img src="/post_image/chen_two/8.png"></center></li><li><p>到hexo根目录下_config.yml里的这个位置</p><center><img src="/post_image/chen_two/10.png"></center></li></ul><p>在进行那三条命令，上传到码云，刷新就有了</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">如果还不能出现博客页面，再更新一下pages服务</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images14.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="Hexo" scheme="http://mechenjuanjuan.github.io/categories/Hexo/"/>
    
    
      <category term="Hexo" scheme="http://mechenjuanjuan.github.io/tags/Hexo/"/>
    
      <category term="码云" scheme="http://mechenjuanjuan.github.io/tags/%E7%A0%81%E4%BA%91/"/>
    
  </entry>
  
  <entry>
    <title>Hexo部署到Coding</title>
    <link href="http://mechenjuanjuan.github.io/2019/09/04/chen_one/"/>
    <id>http://mechenjuanjuan.github.io/2019/09/04/chen_one/</id>
    <published>2019-09-04T08:18:04.004Z</published>
    <updated>2020-03-26T09:12:32.408Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images8.png"></center><a id="more"></a>* 需要安装的工具我就不多介绍了<h3 id="注册Coding"><a href="#注册Coding" class="headerlink" title="注册Coding"></a>注册Coding</h3><ul><li>Cdoing官网：<a href="https://coding.net/" target="_blank" rel="noopener">https://coding.net/</a></li><li>注册完成后创建一个新项目，如下图<center><img src="/post_image/chen_one/1.png"><img src="/post_image/chen_one/2.png"></center><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">项目名称、项目描述随意填写。然后点击创建。</span><br></pre></td></tr></table></figure></li></ul><h3 id="配置SSH"><a href="#配置SSH" class="headerlink" title="配置SSH"></a>配置SSH</h3><ul><li>在电脑桌面右键，打开Git Bash Here，检查是否已经有SSH Key，输入<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cd ~/.ssh</span><br></pre></td></tr></table></figure></li></ul><p>出现bash: cd: /c/Users/Administrator/.ssh: No such file or directory 。说明没有.ssh这个目录</p><ul><li><p>如果没有.ssh这个目录，则我们生成一个SSH，输入</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;你的邮箱&quot;</span><br></pre></td></tr></table></figure></li><li><p>接下来几步中系统会要你输入密码 (不设置密码的可以直接按三次回车)<br>Enter passphrase (empty for no passphrase):&lt;输入密码&gt;<br>Enter same passphrase again:&lt;再次输入密码&gt; </p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">这个密码是在你提交项目给服务器的时候使用的，可以为空，如果为空的话提交项目时则不用输入密码就能提交。</span><br></pre></td></tr></table></figure></li><li><p>看到类似这样的界面，就表示成功生成ssh key了</p><center><img src="/post_image/chen_one/3.png"></center></li><li><p>然后查看公钥</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cat ~/.ssh/id_rsa.pub</span><br></pre></td></tr></table></figure></li></ul><center><img src="/post_image/chen_one/4.png"></center><ul><li>将这些内容复制到这个地方，如下图：</li></ul><center><img src="/post_image/chen_one/5.png"><img src="/post_image/chen_one/6.png"><img src="/post_image/chen_one/7.png"></center>然后直接把刚才复制的内容粘贴进去,点击添加即可。<h3 id="测试SSh是否配置成功"><a href="#测试SSh是否配置成功" class="headerlink" title="测试SSh是否配置成功"></a>测试SSh是否配置成功</h3><ul><li>在Git Bash Here 中输入</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -T git@git.coding.net</span><br></pre></td></tr></table></figure><ul><li>如果显示以下则说明coding中的ssh配置成功</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Hello username You&apos;ve connected to Coding.net by SSH successfully!</span><br></pre></td></tr></table></figure><ul><li><p>如下图显示(权限被拒绝)不要慌：</p><center><img src="/post_image/chen_one/8.png"></center></li><li><p>也可能出现无法建立真实性的问题：</p></li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">The authenticity of host &apos;git.coding.net (118.25.166.124)&apos; can&apos;t be established.</span><br><span class="line">RSA key fingerprint is SHA256:jok3FH7q5LJ6qvE7iPNehBgXRw51ErE77S0Dn+Vg/Ik.</span><br><span class="line">Are you sure you want to continue connecting (yes/no)?</span><br></pre></td></tr></table></figure><p>解决：首次建立链接会要求信任主机，在Git Bash Here 中输入</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -T git@e.coding.net</span><br></pre></td></tr></table></figure><p>yes回车</p><h3 id="配置hexo"><a href="#配置hexo" class="headerlink" title="配置hexo"></a>配置hexo</h3><ul><li>打开hexo站点根目录</li></ul><center><img src="/post_image/chen_one/9.png"></center><ul><li>打开Coding新建的项目，找到这个地方，复制路径，如下图</li></ul><center><img src="/post_image/chen_one/10.png"></center><ul><li>然后在_config.yml修改配置</li></ul><center><img src="/post_image/chen_one/11.png"></center><ul><li>配置完，执行以下命令</li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo g</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure><ul><li>成功如下</li></ul><center><img src="/post_image/chen_one/12.png"></center><ul><li>查看部署的成功的代码</li></ul><center><img src="/post_image/chen_one/13.png"></center><ul><li>静态访问</li></ul><center><img src="/post_image/chen_one/14.png"></center><ul><li>网站名称随便取，复制路径在浏览器访问即可</li></ul><center><img src="/post_image/chen_one/15.png"></center><ul><li>自定义域名（有域名者）</li></ul><center><img src="/post_image/chen_one/16.png"></center><center><img src="/post_image/chen_one/17.png"></center>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images8.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="Hexo" scheme="http://mechenjuanjuan.github.io/categories/Hexo/"/>
    
    
      <category term="Coding" scheme="http://mechenjuanjuan.github.io/tags/Coding/"/>
    
      <category term="Hexo" scheme="http://mechenjuanjuan.github.io/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Hello World</title>
    <link href="http://mechenjuanjuan.github.io/2019/08/15/hello-world/"/>
    <id>http://mechenjuanjuan.github.io/2019/08/15/hello-world/</id>
    <published>2019-08-15T03:00:16.843Z</published>
    <updated>2020-03-26T09:12:59.720Z</updated>
    
    <content type="html"><![CDATA[<center><img src="/post_image/img/images16.png"></center><a id="more"></a>Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues).<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">"My New Post"</span></span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/writing.html" target="_blank" rel="noopener">Writing</a></p><h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/server.html" target="_blank" rel="noopener">Server</a></p><!--more--><h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/generating.html" target="_blank" rel="noopener">Generating</a></p><h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/deployment.html" target="_blank" rel="noopener">Deployment</a></p>]]></content>
    
    <summary type="html">
    
      &lt;center&gt;&lt;img src=&quot;/post_image/img/images16.png&quot;&gt;&lt;/center&gt;
    
    </summary>
    
      <category term="Other" scheme="http://mechenjuanjuan.github.io/categories/Other/"/>
    
    
      <category term="Hello" scheme="http://mechenjuanjuan.github.io/tags/Hello/"/>
    
  </entry>
  
</feed>
