<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>初心</title>
  
  <subtitle>Never forget why you started, and your mission can be accomplished.</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://whyyoustarted.github.io/"/>
  <updated>2020-03-08T07:04:07.284Z</updated>
  <id>https://whyyoustarted.github.io/</id>
  
  <author>
    <name>Liu zhimin</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>sysctl -p 报错问题的解决方法</title>
    <link href="https://whyyoustarted.github.io/2020/0307/solution-to-sysctl-p-error.html"/>
    <id>https://whyyoustarted.github.io/2020/0307/solution-to-sysctl-p-error.html</id>
    <published>2020-03-07T00:43:27.000Z</published>
    <updated>2020-03-08T07:04:07.284Z</updated>
    
    <content type="html"><![CDATA[<p>转载于:<a href="https://www.cnblogs.com/chenkeyu/p/6852608.html" target="_blank" rel="noopener">https://www.cnblogs.com/chenkeyu/p/6852608.html</a></p><p>最近执行sysctl -p 命令时一直报错，类似这种格式：</p><p>error: permission denied on key……</p><p>经过网上搜索，</p><p>原来这些问题都是因为openvz模版的问题，要进行修复操作：<br>修复modprobe的：<br>  代码如下       复制代码<br><code>sudo rm -f /sbin/modprobe</code><br><code>sudo ln -s /bin/true /sbin/modprobe</code><br>修复sysctl的：<br>  代码如下       复制代码<br><code>sudo rm -f /sbin/sysctl</code><br><code>sudo ln -s /bin/true /sbin/sysctl</code></p><p>再次执行<code>sysctl -p</code> 没有报错~</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;转载于:&lt;a href=&quot;https://www.cnblogs.com/chenkeyu/p/6852608.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.cnblogs.com/chenkeyu/p/6852608.h
      
    
    </summary>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/categories/Ubuntu/"/>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/tags/Ubuntu/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu 16.04下安装Oracle 11g</title>
    <link href="https://whyyoustarted.github.io/2020/0307/install-oracle-11g-under-ubuntu-1604.html"/>
    <id>https://whyyoustarted.github.io/2020/0307/install-oracle-11g-under-ubuntu-1604.html</id>
    <published>2020-03-07T00:42:43.000Z</published>
    <updated>2020-03-08T08:30:41.041Z</updated>
    
    <content type="html"><![CDATA[<h2 id="1-前言"><a href="#1-前言" class="headerlink" title="1. 前言"></a>1. 前言</h2><p>本篇只是简单安装，满足学习Oracle的使用</p><h2 id="2-环境"><a href="#2-环境" class="headerlink" title="2. 环境"></a>2. 环境</h2><p>​    Ubuntu：16.04</p><p>​    Oracle： linux.x64_11gR2_database</p><p>​    JDK：    jdk-8u144-linux-x64.tar</p><p>​    这些东西我会放在文末的百度云中，有需要可以自取</p><h2 id="3-安装Oracle前的准备"><a href="#3-安装Oracle前的准备" class="headerlink" title="3. 安装Oracle前的准备"></a>3. 安装Oracle前的准备</h2><ol><li><p>安装并配置JDK</p><p> 安装JDK之前我需要先下载一个vim，方便我们编辑文档。</p><p> 使用命令：<code>sudo apt-get install vim</code>等待它自动安装即可</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%889.18.31.png" alt=""></p><p> 使用命令<code>mkdir software</code>和<code>mkdir module</code>创建两个文件夹，然后将jdk拖到software中</p><p> 使用命令<code>tar -zxf software/jdk-8u144-linux-x64.tar.gz -C module/</code>安装JDK</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%889.32.25.png" alt=""></p><p> 在家目录下使用命令<code>vim .bash_profile</code>在英文状态下按<code>i</code>进入编辑模式后在里面添加如下内容</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">#将lzm改成你自己的用户名</span><br><span class="line">export JAVA_HOME=/home/lzm/module/jdk1.8.0_144</span><br><span class="line"></span><br><span class="line">export JRE_HOME=$&#123;JAVA_HOME&#125;/jre</span><br><span class="line"></span><br><span class="line">export CLASSPATH=.:$&#123;JAVA_HOME&#125;/lib:$&#123;JRE_HOME&#125;/lib</span><br><span class="line"></span><br><span class="line">export PATH=$&#123;JAVA_HOME&#125;/bin:$PATH</span><br></pre></td></tr></table></figure><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%889.39.12.png" alt=""></p><p> 添加好后esc，在英文状态下输入<code>:wq</code>进行保存</p><p> 然后使用命令<code>source .bash_profile</code>来是配置生效</p><p> 使用命令<code>java -version</code>如果出现如下的信息就代表配置成功了</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%889.49.08.png" alt=""></p></li><li><p>安装依赖</p><p> 因为依赖是32位的所以需要换源安装，并且需要以管理员模式来操作</p><p> <code>su</code></p><p> <code>cd /etc/apt/sources.list.d</code></p><p> <code>echo &quot;deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse&quot; &gt; ia32-libs-raring.list</code></p><p> <code>apt update</code></p><p> <code>apt-get -y install lesstif2 lesstif2-dev</code></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%889.55.20.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%8810.18.43.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%8810.20.26.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%8810.24.24.png" alt=""></p><p> 这样我需要安装的依赖就安装好了，现在我们需要将其还原</p><p> <code>rm -rf ia32-libs-raring.list</code></p><p> <code>apt update</code></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%8810.25.42.png" alt=""></p><p> 现在我们可以退出管理员账户了使用命令<code>exit</code></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8A%E5%8D%8810.28.14.png" alt=""></p><p> 然后我们安装其余的依赖</p><p> sudo apt-get -y install automake autotools-dev binutils bzip2 elfutils expat gawk gcc gcc-multilib g++-multilib lib32ncurses5 lib32z1 ksh less lib32z1 libaio1 libaio-dev libc6-dev libc6-dev-i386 libc6-i386 libelf-dev libltdl-dev libxm4 libodbcinstq4-1 libodbcinstq4-1:i386 libpth-dev libpthread-stubs0-dev libstdc++5 make openssh-server rlwrap rpm sysstat unixodbc unixodbc-dev unzip x11-utils zlibc</p></li></ol><pre><code>![](https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/截屏2020-03-07上午10.31.34.png)![](https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/截屏2020-03-07上午10.55.08.png)等待安装就行了</code></pre><ol start="3"><li><p>配置环境</p><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></pre></td><td class="code"><pre><span class="line">/sbin/sysctl -a | grep sem</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep file-max</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep aio-max</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep ip_local_port_range</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep rmem_default</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep rmem_max</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep wmem_default</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep wmem_max</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep shmall</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep shmmax</span><br><span class="line"></span><br><span class="line">/sbin/sysctl -a | grep shmmni</span><br></pre></td></tr></table></figure><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></pre></td><td class="code"><pre><span class="line">kernel.sem = 32000 1024000000 500 32000</span><br><span class="line">fs.file-max = 242293</span><br><span class="line">fs.aio-max-nr = 65536</span><br><span class="line">net.ipv4.ip_local_port_range = 32768 60999</span><br><span class="line">net.core.rmem_default = 212992</span><br><span class="line">net.core.rmem_max = 212992</span><br><span class="line">net.core.wmem_default = 212992</span><br><span class="line">net.core.wmem_max = 212992</span><br><span class="line">kernel.shmall = 18446744073692774399</span><br><span class="line">kernel.shmmax = 18446744073692774399</span><br><span class="line">kernel.shmmni = 4096</span><br></pre></td></tr></table></figure><p> 如果版本一样可以直接复制</p><p> 修改sysctl.conf文件，使用命令<code>sudo vim /etc/sysctl.conf</code></p><p> 将上面的内容添加到文件中</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-08%E4%B8%8B%E5%8D%882.46.10.png" alt=""></p><p> 更新内核参数</p><p> <code>sysctl –p</code></p><p> 如果这里报<code>sysctl: cannot stat /proc/sys/–p</code>可以参考一下··········</p><p> 添加用户的内核限制（我的用户名是lzm）</p><p> <code>sudo vim /etc/security/limits.conf</code></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></pre></td><td class="code"><pre><span class="line">lzm soft nproc 2047</span><br><span class="line">lzm hard nproc 16384</span><br><span class="line">lzm soft nofile 1024</span><br><span class="line">lzm hard nofile 65536</span><br><span class="line">lzm soft stack 10240</span><br></pre></td></tr></table></figure><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8B%E5%8D%8812.44.09.png" alt=""></p><p> 创建文件夹</p><p> mkdir module/oracle11g</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8B%E5%8D%8812.49.02.png" alt=""></p><p> 配置Oracle的环境变量</p><p> <code>vim .bash_profile</code></p><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></pre></td><td class="code"><pre><span class="line">export ORACLE_BASE=/home/lzm/module/oracle11g</span><br><span class="line"></span><br><span class="line">export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1</span><br><span class="line"></span><br><span class="line">export ORACLE_SID=orcl</span><br><span class="line"></span><br><span class="line">export ORACLE_UNQNAME=orcl</span><br><span class="line"></span><br><span class="line">export NLS_LANG=.AL32UTF8</span><br><span class="line"></span><br><span class="line">export PATH=$&#123;PATH&#125;:$&#123;ORACLE_HOME&#125;/bin/:$ORACLE_HOME/lib64</span><br></pre></td></tr></table></figure><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8B%E5%8D%881.08.10.png" alt=""></p><p> 然后使用命令<code>source .bash_profile</code>来是配置生效</p><p> 欺骗oracle的安装设置</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></pre></td><td class="code"><pre><span class="line">sudo mkdir /usr/lib64</span><br><span class="line">sudo ln -s /etc /etc/rc.d</span><br><span class="line">sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/</span><br><span class="line">sudo ln -s /usr/bin/awk /bin/awk</span><br><span class="line">sudo ln -s /usr/bin/basename /bin/basename</span><br><span class="line">sudo ln -s /usr/bin/rpm /bin/rpm</span><br><span class="line">sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/</span><br><span class="line">sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/</span><br><span class="line">sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/</span><br><span class="line">sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/</span><br></pre></td></tr></table></figure><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8B%E5%8D%881.01.39.png" alt=""></p><p> 切换root账户</p><p> <code>su</code></p><p> <code>echo &#39;Red Hat Linux release 5&#39; &gt; /etc/RedHat-release</code></p><p> <code>exit</code></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-07%E4%B8%8B%E5%8D%881.02.06.png" alt=""></p></li></ol><h2 id="4-安装Oracle"><a href="#4-安装Oracle" class="headerlink" title="4. 安装Oracle"></a>4. 安装Oracle</h2><ol><li><p>解压</p><p> 将压缩包拖到software中</p><p> 使用命令</p><p> <code>unzip -d module/oracle11g software/linux.x64_11gR2_database_1of2.zip</code></p><p> <code>unzip -d module/oracle11g software/linux.x64_11gR2_database_2of2.zip</code></p></li><li><p>安装(这里要在虚拟机内进行，shell工具不行)</p><p> <code>cd module/oracle11g/database/</code></p><p> <code>LANG=en_US ./runInstaller</code></p></li></ol><pre><code>./runInstaller -jreLoc ~/module/jdk1.8.0_144/jre</code></pre><p>cd /tmp/CVU_11.2.0.1.0_lzm/</p><p>sudo ./runfixup.sh </p><p>sudo sed -i ‘s/^(TNSLSNR_LINKLINE.*$(TNSLSNR_OFILES)) ($(LINKTTLIBS))/\1 -Wl,–no-as-needed \2/g’  tool/oracle11g/product/11.2.0/dbhome_1/network/lib/env_network.mk</p><p>sudo sed -i ‘s/^(ORACLE_LINKLINE.*$(ORACLE_LINKER)) ($(PL_FLAGS))/\1 -Wl,–no-as-needed \2/g’  tool/oracle11g/product/11.2.0/dbhome_1/rdbms/lib/env_rdbms.mk</p><p>sudo sed -i ‘s/^($LD $LD_RUNTIME) ($LD_OPT)/\1 -Wl,–no-as-needed \2/g’   tool/oracle11g/product/11.2.0/dbhome_1/bin/genorasdksh</p><p>sudo sed -i ‘s/^(\s*)($(OCRLIBS_DEFAULT))/\1 -Wl,–no-as-needed \2/g’  tool/oracle11g/product/11.2.0/dbhome_1/srvm/lib/ins_srvm.mk</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本篇只是简单安装，满足学习Oracle的使用&lt;/p&gt;
&lt;h2 id=&quot;2-环境&quot;&gt;&lt;a href=&quot;#2-环境&quot; cla
      
    
    </summary>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/categories/Ubuntu/"/>
    
    
      <category term="Oracle" scheme="https://whyyoustarted.github.io/tags/Oracle/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu下搭建完全分布式Hadoop集群</title>
    <link href="https://whyyoustarted.github.io/2020/0221/build-a-fully-distributed-hadoop-cluster-under-ubuntu.html"/>
    <id>https://whyyoustarted.github.io/2020/0221/build-a-fully-distributed-hadoop-cluster-under-ubuntu.html</id>
    <published>2020-02-21T02:10:27.000Z</published>
    <updated>2020-03-16T13:41:38.018Z</updated>
    
    <content type="html"><![CDATA[<ol><li><p>Hadoop的运行环境介绍</p><p> hadoop主要有三种运行模式：单机模式、伪分布模式、完全分布模式。</p><ul><li><p>其中在单机模式下所有3个XML文件均为空，当配置文件为空时，Hadoop会完全运行在本地，因为不需要与其他节点交互，单机模式就不使用HDFS，也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。</p></li><li><p>在伪分布式模式下是指在“单节点集群”上运行Hadoop，其中所有的守护进程都运行在同一台机器上，即Jobtracker、Tasktracker、Namenode、Datanode、Secondarynamenode进程都运行在同一台主机上。该模式在单机模式之上增加了代码调试功能，允许你检查内存使用情况，HDFS输入输出，以及其他的守护进程交互。</p></li><li><p>完全分布式模式是将hadoop运行在了一个真正的集群上，该集群内含有一个主节点master，及至少两个的从节点slave；其中主节点上主要运行Namenode、Jobtracker、Secondarynamenode进程，从节点主要运行Datanode、Tasketracker进程。这种模式下可以真正实现hadoop的分布式处理，有主节点对从节点的任务分配调度以及HDFS在主机间的输入输出。</p></li></ul></li><li><p>Hadoop集群搭建准备工作</p><p> 需要提前下载好的文件：</p><ul><li>ubuntu-16.04.5-desktop-amd64.iso</li><li>jdk-8u144-linux-x64.tar</li><li>hadoop-2.7.2.tar</li></ul></li><li><p>虚拟机准备</p><p> 在Parallels Desktop中新建一台虚拟机，快照并克隆三次，得到了三台虚拟机</p><p> 注意：快照的是为了节省自己的硬盘空间</p></li><li><p>使三台虚拟机连通</p><p> 先使用命令<code>ifconfig</code>查看三台虚拟机的ip地址</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-21%E4%B8%8A%E5%8D%8810.49.33.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-21%E4%B8%8A%E5%8D%8810.49.40.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-21%E4%B8%8A%E5%8D%8810.49.49.png" alt=""></p><p> 然后使用命令<code>sudo vim /etc/hostname</code>修改主机名</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-21%E4%B8%8A%E5%8D%8811.01.17.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-21%E4%B8%8A%E5%8D%8811.00.52.png" alt=""></p><p> 这里就拿一个演示，<strong>剩下的两台也改</strong></p><p> 注意：我是以ip地址末尾来命名的，你也可以使用master，slave1，slave2命名，只要自己可以分辨出虚拟机是哪台就行</p><p> 然后我们添加该局域网内的集群中其他虚拟主机ip</p><p> 使用命令<code>sudo vim /etc/hosts</code>将和主机名一样的ip地址注释掉并添加三台主机的ip和主机名，修改具体情况如下：</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-22%E4%B8%8A%E5%8D%889.18.42.png" alt=""></p><p> 三台虚拟机都需要这样配置</p><p> 然后使用命令<code>ping -c 3 hadoop7</code>测试互相可以ping通</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-22%E4%B8%8A%E5%8D%889.22.19.png" alt=""></p></li><li><p>配置免密登陆</p><p> 先使用命令<code>ssh localhost</code>，如果提示输入密码那么就代表你有ssh，如果出现<code>connect to host localhost port 22:Connection refused</code>那么请参考：<a href="https://whyyoustarted.github.io/2020/0216/ssh-under-ubuntu-connect-to-host-localhost-port-22-connection-refused.html">Ubuntu下 ssh : connect to host localhost port 22:Connection refused</a></p><p> 安装好ssh后可以使用命令<code>ssh-keygen -t rsa -P &#39;&#39;</code>，提示输入密钥保存的路径，直接按enter键使用默认值即可</p><p> 然后使用命令<code>ssh-copy-id hadoop6</code>将空钥发到本机，同样需要发到hadoop7，hadoop8</p><p> 然后另两台服务器也需要这样配置</p><p> 配置好后可以使用<code>ssh hadoop6</code>登录虚拟机，使用<code>exit</code>可以推出登录</p></li><li><p>安装JDK和Hadoop</p><p> 使用命令<code>mkdir /opt/module /opt/software</code>在/opt下创建software和module文件夹</p><p> 并使用命令<code>chown lzm:lzm /opt/module /opt/software</code>将所有权赋给当前用户</p><p> 可以使用<code>ls -l</code>来进行查看</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-22%E4%B8%8A%E5%8D%889.41.35.png" alt=""></p><p> 将JDK和Hadoop的安装包复制到software文件夹，然后使用命令<code>tar -zxf hadoop-2.7.2.tar.gz -C /opt/module</code>，<code>tar -zxf jdk-8u144-linux-x64.tar.gz -C /opt/module</code>将其安装到module目录下</p><p> 同样两台都进行配置</p></li><li><p>配置环境变量</p><p> 使用命令<code>sudo vim /etc/profile</code>在文件后面添加</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></pre></td><td class="code"><pre><span class="line">#JAVA_HOME</span><br><span class="line">export JAVA_HOME=/opt/module/jdk1.8.0_144</span><br><span class="line">export PATH=$PATH:$JAVA_HOME/bin</span><br><span class="line"></span><br><span class="line">#HADOOP_HOME</span><br><span class="line">export HADOOP_HOME=/opt/module/hadoop-2.7.2</span><br><span class="line">export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin</span><br></pre></td></tr></table></figure><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-25%E4%B8%8B%E5%8D%887.33.27.png" alt=""></p><p> 保存后使用命令<code>source /etc/profile</code>重新启动一下配置，然后使用<code>java -version</code>和<code>hadoop version</code>来测试一下环境变量是否配置完成</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-25%E4%B8%8B%E5%8D%887.34.08.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-25%E4%B8%8B%E5%8D%887.32.34.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-25%E4%B8%8B%E5%8D%887.32.43.png" alt=""></p><p> 另外两个虚拟机也是同样的</p></li><li><p>配置Hadoop</p><ul><li>注意：所有配置文件都在<code>$HADOOP_HOME/etc/hadoop</code></li></ul><ol><li><p>首先配置<code>hadoop-env.sh</code>,<code>yarn-env.sh</code>,<code>mapred-env.sh</code>文件，在每个文件第二行添加 <code>export JAVA_HOME=/opt/module/jdk1.8.0_144</code></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-25%E4%B8%8B%E5%8D%888.07.15.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-25%E4%B8%8B%E5%8D%888.07.40.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-02-25%E4%B8%8B%E5%8D%888.08.01.png" alt=""></p></li></ol></li></ol><pre><code>2. 配置`core-site.xml`，在文档中添加    <figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 指定HDFS中NameNode的地址 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">name</span>&gt;</span>fs.defaultFS<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">value</span>&gt;</span>hdfs://hadoop6:9000<span class="tag">&lt;/<span class="name">value</span>&gt;</span><span class="comment">&lt;!-- 这里改成自己的主机名 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">&lt;!-- 指定Hadoop运行时产生文件的存储目录 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">name</span>&gt;</span>hadoop.tmp.dir<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">value</span>&gt;</span>/opt/module/hadoop-2.7.2/data/tmp<span class="tag">&lt;/<span class="name">value</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br></pre></td></tr></table></figure>    ![](https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/截屏2020-02-25下午8.11.02.png)3. 配置`hdfs-site.xml`，在文档中添加    <figure class="highlight xml"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 数据的副本数量 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">name</span>&gt;</span>dfs.replication<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">value</span>&gt;</span>3<span class="tag">&lt;/<span class="name">value</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br><span class="line">        <span class="comment">&lt;!-- 指定Hadoop辅助名称节点主机配置 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">              <span class="tag">&lt;<span class="name">name</span>&gt;</span>dfs.namenode.secondary.http-address<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">              <span class="tag">&lt;<span class="name">value</span>&gt;</span>hadoop8:50090<span class="tag">&lt;/<span class="name">value</span>&gt;</span><span class="comment">&lt;!-- 这里改成自己的主机名 --&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br></pre></td></tr></table></figure>    ![](https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/截屏2020-02-25下午8.39.01.png)4. 配置`yarn-site.xml`，在文档中添加    <figure class="highlight xml"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- Site specific YARN configuration properties --&gt;</span></span><br><span class="line">       <span class="comment">&lt;!-- Reducer获取数据的方式 --&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">               <span class="tag">&lt;<span class="name">name</span>&gt;</span>yarn.nodemanager.aux-services<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">               <span class="tag">&lt;<span class="name">value</span>&gt;</span>mapreduce_shuffle<span class="tag">&lt;/<span class="name">value</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br><span class="line">        </span><br><span class="line">       <span class="comment">&lt;!-- 指定YARN的ResourceManager的地址 --&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">           <span class="tag">&lt;<span class="name">name</span>&gt;</span>yarn.resourcemanager.hostname<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">           <span class="tag">&lt;<span class="name">value</span>&gt;</span>hadoop7<span class="tag">&lt;/<span class="name">value</span>&gt;</span><span class="comment">&lt;!-- 这里改成自己的主机名 --&gt;</span></span><br><span class="line">       <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br><span class="line">       <span class="comment">&lt;!-- 日志聚集功能使能 --&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">           <span class="tag">&lt;<span class="name">name</span>&gt;</span>yarn.log-aggregation-enable<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">           <span class="tag">&lt;<span class="name">value</span>&gt;</span>true<span class="tag">&lt;/<span class="name">value</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br><span class="line">        </span><br><span class="line">       <span class="comment">&lt;!-- 日志保留时间设置7天 --&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">           <span class="tag">&lt;<span class="name">name</span>&gt;</span>yarn.log-aggregation.retain-seconds<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">           <span class="tag">&lt;<span class="name">value</span>&gt;</span>604800<span class="tag">&lt;/<span class="name">value</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br></pre></td></tr></table></figure>    ![](https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/截屏2020-02-25下午8.11.35.png)5. 配置`mapred-site.xml`，这个文档先需要使用命令`cp mapred-site.xml.template mapred-site.xml`复制一份然后在文档中添加    <figure class="highlight xml"><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></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">name</span>&gt;</span>mapreduce.framework.name<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">value</span>&gt;</span>yarn<span class="tag">&lt;/<span class="name">value</span>&gt;</span></span><br><span class="line">   <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br><span class="line">   <span class="comment">&lt;!-- 历史服务器端地址 --&gt;</span></span><br><span class="line">   <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">name</span>&gt;</span>mapreduce.jobhistory.address<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">value</span>&gt;</span>hadoop8:10020<span class="tag">&lt;/<span class="name">value</span>&gt;</span></span><br><span class="line">   <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br><span class="line">   <span class="comment">&lt;!-- 历史服务器web端地址 --&gt;</span></span><br><span class="line">   <span class="tag">&lt;<span class="name">property</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">name</span>&gt;</span>mapreduce.jobhistory.webapp.address<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line">       <span class="tag">&lt;<span class="name">value</span>&gt;</span>hadoop8:19888<span class="tag">&lt;/<span class="name">value</span>&gt;</span></span><br><span class="line">   <span class="tag">&lt;/<span class="name">property</span>&gt;</span></span><br></pre></td></tr></table></figure>    ![](https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/截屏2020-02-25下午8.12.08.png)6. 配置`slaves`，在文档中添加    <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">hadoop6</span><br><span class="line">hadoop7</span><br><span class="line">hadoop8</span><br></pre></td></tr></table></figure>    ![](https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/截屏2020-02-25下午8.40.16.png)这样一台虚拟机就配置好了，我们可以讲以上步骤重复一遍或者使用命令`rsync -av/opt/module/hadoop-2.7.2/etc  lzm@hadoop7:/opt/module/hadoop-2.7.2/etc`，hadoop8也是一样（如果使用命令操作的话，更换`lzm@hadoop7`为自己的）</code></pre><ol start="9"><li><p>启动hadoop集群</p><p> 完成了上述的步骤，伪分布式hadoop集群就搭建好了，下面我们启动集群</p><p> 第一步：</p><p> 在hadoop6上输入命令<code>hdfs namenode -format</code>，这一步是初始化Namenode</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-16%E4%B8%8B%E5%8D%889.19.00.png" alt=""></p><p> 第二步：</p><p> 格式化完成后在hadoop6上输入命令<code>start-dfs.sh</code>启动HDFS</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-16%E4%B8%8B%E5%8D%889.23.23.png" alt=""></p><p> 第三步：</p><p> 然后在hadoop7（配置Resourcemanager的机器）上启动yarn，使用命令<code>start-yarn.sh</code></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-16%E4%B8%8B%E5%8D%889.25.40.png" alt=""></p><p> 这是可以使用<code>jps</code>来查看一下启动的服务是否正确，如果和下图一样就是安装完成了</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-16%E4%B8%8B%E5%8D%889.27.22.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-16%E4%B8%8B%E5%8D%889.27.27.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-16%E4%B8%8B%E5%8D%889.27.31.png" alt=""></p><p> 这样我就可以在浏览器中输入10.211.55.6:50070和10.211.55.7:8088来查看hadoop的页面</p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-16%E4%B8%8B%E5%8D%889.35.00.png" alt=""></p><p> <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Hadoop/%E6%88%AA%E5%B1%8F2020-03-16%E4%B8%8B%E5%8D%889.35.10.png" alt=""></p></li></ol>]]></content>
    
    <summary type="html">
    
      
      
        &lt;ol&gt;
&lt;li&gt;&lt;p&gt;Hadoop的运行环境介绍&lt;/p&gt;
&lt;p&gt; hadoop主要有三种运行模式：单机模式、伪分布模式、完全分布模式。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;其中在单机模式下所有3个XML文件均为空，当配置文件为空时，Hadoop会完全运行在本地，因为不需要与其他节点
      
    
    </summary>
    
    
      <category term="Hadoop" scheme="https://whyyoustarted.github.io/categories/Hadoop/"/>
    
    
      <category term="Hadoop" scheme="https://whyyoustarted.github.io/tags/Hadoop/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu下vim的安装以及配置</title>
    <link href="https://whyyoustarted.github.io/2020/0218/installation-and-configuration-of-vim-under-ubuntu.html"/>
    <id>https://whyyoustarted.github.io/2020/0218/installation-and-configuration-of-vim-under-ubuntu.html</id>
    <published>2020-02-18T06:37:54.000Z</published>
    <updated>2020-02-18T07:12:22.043Z</updated>
    
    <content type="html"><![CDATA[<p>vim工具可以方便的从liunx终端打开编辑修改文件，是一款在Ubuntu系统下必备的工具</p><p>首先是安装：</p><p>在终端中输入<code>sudo apt-get install vim-gtk</code>，然后根据提示安装即可</p><p>安装完成后可以使用命令<code>vim --version</code>来测试一下，如果出现类似下图的信息，就是安装成功了</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/ubuntu/%E6%88%AA%E5%B1%8F2020-02-18%E4%B8%8B%E5%8D%882.58.01.png" alt=""></p><p>安装成功我们就需要配置一下vim，使其美观</p><p>如果只对各个用户在自己的当前目录下的.vimrc修改的话，修改内容只对本用户有效,要想全部有效，可以修改/etc/vim/vimrc。</p><p>在终端下使用vim进行编辑时，默认情况下，编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作，需要手动设置一个配置文件：<code>.vimrc</code>。</p><p>启动vim时，当前用户根目录下的.vimrc文件会被自动读取，该文件可以包含一些设置甚至脚本，所以，一般情况下把.vimrc文件创建在当前用户的根目录下比较方便。</p><p>只对本用户有效：<code>vim ~/.vimrc</code></p><p>对所有用户有效：<code>sudo vim /etc/vim/vimrc</code> </p><p>这是我使用的，可以根据需要将其复制到vimrc中</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></pre></td><td class="code"><pre><span class="line">&quot; 设置外观 -------------------------------------</span><br><span class="line">set number                      &quot;显示行号</span><br><span class="line">set showtabline=0               &quot;隐藏顶部标签栏&quot;</span><br><span class="line">set guioptions-=r               &quot;隐藏右侧滚动条&quot;</span><br><span class="line">set guioptions-=L               &quot;隐藏左侧滚动条&quot;</span><br><span class="line">set guioptions-=b               &quot;隐藏底部滚动条&quot;</span><br><span class="line">set cursorline                  &quot;突出显示当前行&quot;</span><br><span class="line">&quot;set cursorcolumn                &quot;突出显示当前列&quot;</span><br><span class="line">set langmenu=zh_CN.UTF-8        &quot;显示中文菜单</span><br><span class="line">&quot; 变成辅助 -------------------------------------</span><br><span class="line">syntax on                       &quot;开启语法高亮</span><br><span class="line">set nowrap                      &quot;设置代码不折行&quot;</span><br><span class="line">set fileformat=unix             &quot;设置以unix的格式保存文件&quot;</span><br><span class="line">set cindent                     &quot;设置C样式的缩进格式&quot;</span><br><span class="line">set tabstop=4                   &quot;一个 tab 显示出来是多少个空格，默认 8</span><br><span class="line">set shiftwidth=4                &quot;每一级缩进是多少个空格</span><br><span class="line">set backspace+=indent,eol,start &quot;set backspace&amp;可以对其重置</span><br><span class="line">set showmatch                   &quot;显示匹配的括号&quot;</span><br><span class="line">set scrolloff=5                 &quot;距离顶部和底部5行&quot;</span><br><span class="line">set laststatus=2                &quot;命令行为两行&quot;</span><br><span class="line">&quot; 其他杂项 -------------------------------------</span><br><span class="line">set mouse=a                     &quot;启用鼠标&quot;</span><br><span class="line">set selection=exclusive</span><br><span class="line">set selectmode=mouse,key</span><br><span class="line">set matchtime=5</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;vim工具可以方便的从liunx终端打开编辑修改文件，是一款在Ubuntu系统下必备的工具&lt;/p&gt;
&lt;p&gt;首先是安装：&lt;/p&gt;
&lt;p&gt;在终端中输入&lt;code&gt;sudo apt-get install vim-gtk&lt;/code&gt;，然后根据提示安装即可&lt;/p&gt;
&lt;p&gt;安装完成
      
    
    </summary>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/categories/Ubuntu/"/>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/tags/Ubuntu/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu16.04 sudo:无法解析主机 解决方案</title>
    <link href="https://whyyoustarted.github.io/2020/0218/ubuntu-1604-sudo-cannot-resolve-host-solution.html"/>
    <id>https://whyyoustarted.github.io/2020/0218/ubuntu-1604-sudo-cannot-resolve-host-solution.html</id>
    <published>2020-02-18T06:34:13.000Z</published>
    <updated>2020-02-18T07:12:21.836Z</updated>
    
    <content type="html"><![CDATA[<p>本文转载自：<a href="https://blog.csdn.net/lanhaixuanvv/article/details/78387580" target="_blank" rel="noopener">https://blog.csdn.net/lanhaixuanvv/article/details/78387580</a></p><p>在使用linux的sudo命令时候可能有些人会遇到这样的问题：“sudo:无法解析主机:xxxxx(您的主机名)，我也遇到了这种问题，我的解决方案：</p><p>出现这种问题是hosts文件没有配置好所导致的，linux无法解析到您的主机地址，解决方案如下：</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">$ sudo vim /etc/hosts</span><br></pre></td></tr></table></figure><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">127.0.1.1  xxxxx</span><br></pre></td></tr></table></figure><p>后面的xxxx替换为你的电脑主机名字，也就是错误中最后那串字符。如果没有的话就将其添加进去。</p><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">$ hostname</span><br></pre></td></tr></table></figure><p>将查看的主机名代替xxxx即可</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;本文转载自：&lt;a href=&quot;https://blog.csdn.net/lanhaixuanvv/article/details/78387580&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.csdn.net/lanhaixu
      
    
    </summary>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/categories/Ubuntu/"/>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/tags/Ubuntu/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu apt update一直等待的解决办法</title>
    <link href="https://whyyoustarted.github.io/2020/0216/solution-that-ubuntu-apt-update-has-been-waiting-for.html"/>
    <id>https://whyyoustarted.github.io/2020/0216/solution-that-ubuntu-apt-update-has-been-waiting-for.html</id>
    <published>2020-02-16T07:33:33.000Z</published>
    <updated>2020-02-16T07:39:54.345Z</updated>
    
    <content type="html"><![CDATA[<p>本文转载自：<a href="https://blog.csdn.net/notacoder/article/details/102680465" target="_blank" rel="noopener">https://blog.csdn.net/notacoder/article/details/102680465</a></p><p>需要删除以下几个lock file就OK了</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></pre></td><td class="code"><pre><span class="line">sudo rm /var/lib/apt/lists/lock</span><br><span class="line">sudo rm /var/cache/apt/archives/lock</span><br><span class="line">sudo rm /var/lib/dpkg/lock</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;本文转载自：&lt;a href=&quot;https://blog.csdn.net/notacoder/article/details/102680465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.csdn.net/notacoder/
      
    
    </summary>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/categories/Ubuntu/"/>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/tags/Ubuntu/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu安装openssh-server遇到的问题</title>
    <link href="https://whyyoustarted.github.io/2020/0216/problems-encountered-in-installing-opensshserver-ubuntu.html"/>
    <id>https://whyyoustarted.github.io/2020/0216/problems-encountered-in-installing-opensshserver-ubuntu.html</id>
    <published>2020-02-16T07:16:14.000Z</published>
    <updated>2020-02-16T09:23:26.086Z</updated>
    
    <content type="html"><![CDATA[<p>使用命令<code>sudo apt-get install openssh-server</code>但是报如下结果</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></pre></td><td class="code"><pre><span class="line">完成正在分析软件包的依赖关系树正在读取状态信息...</span><br><span class="line">完成现在没有可用的软件包 openssh-server，</span><br><span class="line">但是他被其他的软件包引用了这可能意味着这个缺失的软件包可能已被废弃，或者只能在其他发布源中找到</span><br><span class="line">E:软件包 openssh-server 还没有可供安装的候选者</span><br></pre></td></tr></table></figure><p>上网查到的资料原因是：Ubuntu的软件源问题</p><p>所以需要我们更换源，我们可以使用电脑自带的寻找服务器的方法。</p><ol><li><p>在Ubuntu的设置中的软件和更新</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/ubuntu/%E6%88%AA%E5%B1%8F2020-02-16%E4%B8%8B%E5%8D%883.22.22.png" alt=""></p></li><li><p>下载自下拉框中的其他站点</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/ubuntu/%E6%88%AA%E5%B1%8F2020-02-16%E4%B8%8B%E5%8D%883.23.02.png" alt=""></p></li><li><p>选择阿里云的镜像源，选择服务器，这里需要权限密码 </p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/ubuntu/%E6%88%AA%E5%B1%8F2020-02-16%E4%B8%8B%E5%8D%883.24.30.png" alt="截屏2020-02-16下午3.24.30"></p></li><li><p>关闭的时候需要重新载入一下，如果这里卡在waiting for unattended-upgr to exit不动到话请参考<a href="https://whyyoustarted.github.io/2020/0216/solution-that-ubuntu-apt-update-has-been-waiting-for.html">Ubuntu apt update一直等待的解决办法</a></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/ubuntu/%E6%88%AA%E5%B1%8F2020-02-16%E4%B8%8B%E5%8D%883.24.58.png" alt="截屏2020-02-16下午3.24.58"></p></li></ol><ol start="5"><li>等待进度条走完后，执行<code>sudo apt-get update</code></li></ol><p>注意：如果还是没解决的话可以看一下下面的参考博客</p><p>参考博客：<a href="https://www.cnblogs.com/liangyue/p/8231556.html" target="_blank" rel="noopener">https://www.cnblogs.com/liangyue/p/8231556.html</a></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;使用命令&lt;code&gt;sudo apt-get install openssh-server&lt;/code&gt;但是报如下结果&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span 
      
    
    </summary>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/categories/Ubuntu/"/>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/tags/Ubuntu/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu下 ssh : connect to host localhost port 22:Connection refused</title>
    <link href="https://whyyoustarted.github.io/2020/0216/ssh-under-ubuntu-connect-to-host-localhost-port-22-connection-refused.html"/>
    <id>https://whyyoustarted.github.io/2020/0216/ssh-under-ubuntu-connect-to-host-localhost-port-22-connection-refused.html</id>
    <published>2020-02-16T06:50:20.000Z</published>
    <updated>2020-02-16T07:44:53.532Z</updated>
    
    <content type="html"><![CDATA[<p>Ubuntu下测试ssh时使用ssh localhost 命令，出现错误提示connect to host localhost port 22:Connection refused</p><p>造成这个错误的原因可能是ssh-server未安装或者未启动。ubuntu 16.04 默认安装openssh-client，但是没有安装server</p><p>所以使用<code>ps -e | grep ssh</code>来查看是否有sshd进程，如果没有出现类似下图的信息，那么说明server没启动，通过命令 <code>/etc/init.d/ssh -start</code> 来启动server进程，如果提示ssh不存在 那么就是没安装server</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/ubuntu/%E6%88%AA%E5%B1%8F2020-02-16%E4%B8%8B%E5%8D%882.57.30.png" alt=""></p><p>可以使用命令<code>sudo apt-get install openssh-server</code>进行安装，如果出现如下错误可以参考<a href="https://whyyoustarted.github.io/2020/0216/problems-encountered-in-installing-opensshserver-ubuntu.html">Ubuntu安装openssh-server遇到的问题</a></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></pre></td><td class="code"><pre><span class="line">完成正在分析软件包的依赖关系树正在读取状态信息...</span><br><span class="line">完成现在没有可用的软件包 openssh-server，</span><br><span class="line">但是他被其他的软件包引用了这可能意味着这个缺失的软件包可能已被废弃，或者只能在其他发布源中找到</span><br><span class="line">E:软件包 openssh-server 还没有可供安装的候选者</span><br></pre></td></tr></table></figure><p>本文参考：<a href="http://asyty.iteye.com/blog/1440141" target="_blank" rel="noopener">http://asyty.iteye.com/blog/1440141</a></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;Ubuntu下测试ssh时使用ssh localhost 命令，出现错误提示connect to host localhost port 22:Connection refused&lt;/p&gt;
&lt;p&gt;造成这个错误的原因可能是ssh-server未安装或者未启动。ubuntu 1
      
    
    </summary>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/categories/Ubuntu/"/>
    
    
      <category term="Ubuntu" scheme="https://whyyoustarted.github.io/tags/Ubuntu/"/>
    
  </entry>
  
  <entry>
    <title>MAC下安装JDK以及配置环境</title>
    <link href="https://whyyoustarted.github.io/2020/0108/install-jdk-and-configure-environment-under-mac.html"/>
    <id>https://whyyoustarted.github.io/2020/0108/install-jdk-and-configure-environment-under-mac.html</id>
    <published>2020-01-08T11:53:54.000Z</published>
    <updated>2020-01-11T11:19:41.064Z</updated>
    
    <content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><ul><li>本文将展示如何在MAC系统下安装并配置JDK</li></ul><h2 id="下载JDK"><a href="#下载JDK" class="headerlink" title="下载JDK"></a>下载JDK</h2><p>前往<a href="https://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank" rel="noopener">Oracle官网</a>选择JDK1.8并进行下载</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/jdk/%E6%88%AA%E5%B1%8F2020-01-08%E4%B8%8B%E5%8D%888.09.25.png" alt="截屏2020-01-08下午8.09.25"></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/jdk/%E6%88%AA%E5%B1%8F2020-01-08%E4%B8%8B%E5%8D%888.10.53.png" alt="截屏2020-01-08下午8.10.53"></p><p>下载完成后点击安装包，按提示即可完成安装。</p><h2 id="配置JDK"><a href="#配置JDK" class="headerlink" title="配置JDK"></a>配置JDK</h2><p>现在我们只是将JDK按照到了MAC上，但是现在只能在JAVA安装目录下运行JAVA的命令，现在需要配置环境变量，方便我们随时的运行JAVA命令。</p><p>jdk安装好的路径可以在访达中的<code>资源库/Java/JavaVirtualMachines//jdk1.8.0_231.jdk/Contents/Home</code>，具体路径可以自己查看一下，如果不一样一般也是JDK版本不一样。</p><p>在终端中输入<code>cd ~</code>，回车在输入<code>vim .bash_profile</code></p><p>在英文状态下按<code>i</code>，进入编辑模式 </p><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">export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home</span><br></pre></td></tr></table></figure><p>在英文状态下，点击Esc结束输入模式，输入 :wq 回车保存并推出。</p><p>验证JDK是否安装成功可以在终端输入<code>javac</code>，如果出现如下信息就配置成功了。</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/jdk/%E6%88%AA%E5%B1%8F2020-01-11%E4%B8%8B%E5%8D%887.05.42.png" alt=""></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;本文将展示如何在MAC系统下安装并配置JDK&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;下载JDK&quot;&gt;&lt;a href=&quot;#下载JDK
      
    
    </summary>
    
    
      <category term="系统" scheme="https://whyyoustarted.github.io/categories/%E7%B3%BB%E7%BB%9F/"/>
    
    
      <category term="JDK" scheme="https://whyyoustarted.github.io/tags/JDK/"/>
    
  </entry>
  
  <entry>
    <title>Mac 每次打开终端要再次执行source ~/.bash_profile 配置的环境变量才生效</title>
    <link href="https://whyyoustarted.github.io/2019/1225/every-time-you-open-a-mac-must-execute-the-source-bashprofile-environment-variable-configuration-again-to-take-effect.html"/>
    <id>https://whyyoustarted.github.io/2019/1225/every-time-you-open-a-mac-must-execute-the-source-bashprofile-environment-variable-configuration-again-to-take-effect.html</id>
    <published>2019-12-25T03:06:50.000Z</published>
    <updated>2020-02-16T07:06:16.771Z</updated>
    
    <content type="html"><![CDATA[<h2 id="出现问题"><a href="#出现问题" class="headerlink" title="出现问题"></a>出现问题</h2><p>自己在 <code>~/.bash_profile</code> 中配置环境变量, 可是每次重启终端后配置的不生效.需要使用命令 <code>source ~/.bash_profile</code>使<code>.bash_profile</code>生效</p><h2 id="解决"><a href="#解决" class="headerlink" title="解决"></a>解决</h2><p>发现zsh加载的是<code>~/.zshrc</code>文件，而 <code>.zshrc</code> 文件中并没有定义任务环境变量。</p><p>在<code>~/.zshrc</code>文件最后，增加一行：<code>source ~/.bash_profile</code>，即可</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;出现问题&quot;&gt;&lt;a href=&quot;#出现问题&quot; class=&quot;headerlink&quot; title=&quot;出现问题&quot;&gt;&lt;/a&gt;出现问题&lt;/h2&gt;&lt;p&gt;自己在 &lt;code&gt;~/.bash_profile&lt;/code&gt; 中配置环境变量, 可是每次重启终端后配置的不生效.需要使用
      
    
    </summary>
    
    
      <category term="系统" scheme="https://whyyoustarted.github.io/categories/%E7%B3%BB%E7%BB%9F/"/>
    
    
      <category term="环境变量" scheme="https://whyyoustarted.github.io/tags/%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F/"/>
    
  </entry>
  
  <entry>
    <title>Mac下Maven出现JAVA_HOME is not defined correctly问题</title>
    <link href="https://whyyoustarted.github.io/2019/1216/javahome-is-not-defined-correctly-with-maven-on-mac.html"/>
    <id>https://whyyoustarted.github.io/2019/1216/javahome-is-not-defined-correctly-with-maven-on-mac.html</id>
    <published>2019-12-16T03:48:21.000Z</published>
    <updated>2019-12-16T11:32:09.763Z</updated>
    
    <content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>在配置好Maven后在终端中输入<code>mvn -v</code>终端显示<code>JAVA_HOME is not defined correctly</code></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8B%E5%8D%887.13.28.png" alt="截屏2019-12-16下午7.13.28"></p><h2 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h2><p>编辑<code>.bash_profile</code>，在此文件中添加一行<code>export JAVA_HOME=$(/usr/libexec/java_home)</code>，可以解决此问题</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8B%E5%8D%887.26.08.png" alt="截屏2019-12-16下午7.26.08"></p><p>使用<code>mvn -v</code>正常</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8B%E5%8D%887.26.57.png" alt="截屏2019-12-16下午7.26.57"></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h2&gt;&lt;p&gt;在配置好Maven后在终端中输入&lt;code&gt;mvn -v&lt;/code&gt;终端显示&lt;code&gt;JAVA_HOME is not defined 
      
    
    </summary>
    
    
      <category term="Maven" scheme="https://whyyoustarted.github.io/categories/Maven/"/>
    
    
      <category term="Maven" scheme="https://whyyoustarted.github.io/tags/Maven/"/>
    
  </entry>
  
  <entry>
    <title>Mac下安装Maven</title>
    <link href="https://whyyoustarted.github.io/2019/1216/install-maven-on-mac.html"/>
    <id>https://whyyoustarted.github.io/2019/1216/install-maven-on-mac.html</id>
    <published>2019-12-16T02:07:39.000Z</published>
    <updated>2020-01-11T11:16:56.138Z</updated>
    
    <content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>本篇博客将在MAC上安装Maven，配置Maven</p><p>注意：</p><ol><li>在mac下安装Maven必须以及安装了JDK，如果没有安装JDK请参考<a href="https://whyyoustarted.github.io/2020/0108/install-jdk-and-configure-environment-under-mac.html">MAC下安装JDK以及配置环境</a></li><li>本文安装的是maven3.3.9，JDK必须在1.7及以上</li></ol><h2 id="1-下载Maven"><a href="#1-下载Maven" class="headerlink" title="1.下载Maven"></a>1.下载Maven</h2><p>在MAVEN的官网<a href="https://maven.apache.org/download.cgi" target="_blank" rel="noopener">https://maven.apache.org/download.cgi</a>进行下载MAVEN</p><p>本人下载的是3.3.9，在archives下的<code>3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz</code></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8A%E5%8D%889.21.53.png" alt="截屏2019-12-16上午9.21.53"></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8A%E5%8D%889.23.30.png" alt="截屏2019-12-16上午9.23.30"></p><h2 id="2-配置Maven"><a href="#2-配置Maven" class="headerlink" title="2.配置Maven"></a>2.配置Maven</h2><ol><li>安装：<ul><li>将下载好的文件解压到user目录下</li></ul></li></ol><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8A%E5%8D%889.51.49.png" alt="截屏2019-12-16上午9.51.49"></p><ol start="2"><li><p>配置：</p><ol><li>在终端中输入 <code>vim ~/.bash_profile</code></li><li>在<strong>英文状态</strong>下按下<code>i</code>，进入编辑模式</li><li>在环境变量文件中加上如下的配置</li></ol><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">export MAVEN_HOME=/Users/你的users名字/apache-maven-3.3.9 </span><br><span class="line">export PATH=$PATH:$MAVEN_HOME/bin</span><br></pre></td></tr></table></figure><ol><li><p>添加完以后按<code>esc</code>键并在<strong>英文状态</strong>下输入<code>:wq</code>进行保存</p></li><li><p>将<code>~/.bash_profile</code>编辑完后在终端输入<code>source .bash_profile</code>使<code>bash_profile</code>配置文件生效</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8A%E5%8D%889.48.55.png" alt="截屏2019-12-16上午9.48.55"></p></li></ol></li></ol><p>   ​    <img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8A%E5%8D%889.47.32.png" alt="截屏2019-12-16上午9.47.32"></p><h2 id="3-测试Maven"><a href="#3-测试Maven" class="headerlink" title="3. 测试Maven"></a>3. 测试Maven</h2><ul><li><p>在终端中输入<code>mvn -v</code>，如果出现以下信息就说明配置完成了。</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/Maven/%E6%88%AA%E5%B1%8F2019-12-16%E4%B8%8A%E5%8D%8810.02.37.png" alt="截屏2019-12-16上午10.02.37"></p></li></ul><ul><li><p>如果在终端中输入<code>mvn -v</code>出现<code>JAVA_HOME is not defined correctly.</code>,请参考<a href="https://whyyoustarted.github.io/2019/1216/javahome-is-not-defined-correctly-with-maven-on-mac.html">Mac下Maven出现JAVA_HOME is not defined correctly问题</a></p></li><li><p>这时当你关闭终端后再开启后输入<code>mvn -v</code>有可能会出现<code>zsh: command not found: mvn -v</code>，请参考<a href="https://whyyoustarted.github.io/2019/1225/every-time-you-open-the-mac-must-execute-source-bashprofile-environment-variable-configuration-again-to-take-effect.html">Mac 每次打开终端要再次执行source ~/.bash_profile 配置的环境变量才生效</a></p></li></ul>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h2&gt;&lt;p&gt;本篇博客将在MAC上安装Maven，配置Maven&lt;/p&gt;
&lt;p&gt;注意：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在mac下安装Maven必须以及安装了J
      
    
    </summary>
    
    
      <category term="Maven" scheme="https://whyyoustarted.github.io/categories/Maven/"/>
    
    
      <category term="Maven" scheme="https://whyyoustarted.github.io/tags/Maven/"/>
    
  </entry>
  
  <entry>
    <title>在MAC下搭建专属你的hexo博客(二)</title>
    <link href="https://whyyoustarted.github.io/2019/1207/build-your-own-hexo-blog-under-mac-2.html"/>
    <id>https://whyyoustarted.github.io/2019/1207/build-your-own-hexo-blog-under-mac-2.html</id>
    <published>2019-12-07T02:18:21.000Z</published>
    <updated>2020-02-16T07:06:16.825Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>上一篇已经为大家介绍了如何在创建一个博客，那么接下来展示如何将本地的博客部署在免费的GitHub仓库上，这样你就可以通过GitHub地址来访问博客</p><h2 id="1-注册GitHub"><a href="#1-注册GitHub" class="headerlink" title="1. 注册GitHub"></a>1. 注册GitHub</h2><p>GitHub可以说是程序员的天堂，里面有很多开源免费的软件或者项目，都9102年了，你还没有GitHub你就out了，当然你如果有GitHub请跳过前几步。</p><p><a href="https://github.com" target="_blank" rel="noopener">GitHub官网https://github.com</a></p><p>1.注册</p><p>进入官网后点击<code>Sign up</code>，进行注册</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%88110.54.png" alt=""></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%8811.04.04.png" alt=""></p><p>填完信息以后你需要验证</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%8811.12.23.png" alt=""></p><p>验证完成后点击next，然后出现让你选择免费版和付费版，这里我们选择免费版（当然大佬有钱随意选择）</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%88111.14.03.png" alt=""></p><p>然后是一些问卷，如实填写就行</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%8811.20.41.png" alt=""></p><p>填完后选择Complete setup 或者选择skip this step跳过问卷，然后会验证你的邮箱</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%8811.24.45.png" alt=""></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%8811.26.31.png" alt=""></p><p>点击验证后会跳转到你的GitHub，在这里我们创建存放我们博客的仓库。</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%8811.33.49.png" alt=""></p><p>填完以后点击Create repository，跳转到以下界面</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8A%E5%8D%8811.40.33.png" alt=""></p><p>这样你的GitHub仓库就准备好了，下面开始将博客部署到GitHub上。</p><h2 id="2-将hexo博客推送到GitHub上"><a href="#2-将hexo博客推送到GitHub上" class="headerlink" title="2. 将hexo博客推送到GitHub上"></a>2. 将hexo博客推送到GitHub上</h2><p>在终端中输入<code>sudo su</code> 并输入密码进入超级管理员，在终端上输入pwd 看看自己是不是在<code>myblog</code>目录下，如果不在就进入<code>myblog</code>,然后终端输入<code>cnpm install --save hexo-deployer-git</code></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.25.52.png" alt=""></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.04.09.png" alt=""></p><p>现在我们需要设置mybolg下的<code>_config.yml</code>文件，找到最下面的<code>Deployment</code></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.10.09.png" alt=""></p><p>将其修改为如下图并保存</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%8821.12.07.png" alt=""></p><p><font color='red'><strong>注意有<code>:</code>后有空格</strong></font></p><p>在终端中输入<code>hexo g</code>构建博客</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.28.18.png" alt=""></p><p>现在可以输入<code>hexo s</code>里本地预览你博客的样子</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.30.31.png" alt=""></p><p>在浏览器的搜索栏中输入<code>http://localhost:4000/</code>就可以看到了</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.32.16.png" alt=""></p><p>使用<code>control + c</code>结束本地预览</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.35.29.png" alt=""></p><p>在终端中输入<code>hexo d</code>，输入GitHub账号和密码</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.49.34.png" alt=""></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.50.35.png" alt=""></p><p>出现了<code>Deploy done: git</code>就说明部署上去了</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.56.20.png" alt=""></p><p>现在我们只需要在网址栏输入<code>GitHub账号.github.io</code>就可以访问你的博客了。</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-07%E4%B8%8B%E5%8D%882.59.17.png" alt=""></p><p>这样我们就成功把博客部署到了GitHub上了，下一篇将展示如何配置pure主题</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;上一篇已经为大家介绍了如何在创建一个博客，那么接下来展示如何将本地的博客部署在免费的GitHub仓库上，这样你就可以通过GitHub地址来访
      
    
    </summary>
    
    
      <category term="hexo" scheme="https://whyyoustarted.github.io/categories/hexo/"/>
    
    
      <category term="教程" scheme="https://whyyoustarted.github.io/tags/%E6%95%99%E7%A8%8B/"/>
    
  </entry>
  
  <entry>
    <title>在MAC下搭建专属你的hexo博客(一)</title>
    <link href="https://whyyoustarted.github.io/2019/1206/set-up-your-own-hexo-blog-under-mac-1.html"/>
    <id>https://whyyoustarted.github.io/2019/1206/set-up-your-own-hexo-blog-under-mac-1.html</id>
    <published>2019-12-06T12:29:08.000Z</published>
    <updated>2019-12-08T07:25:52.820Z</updated>
    
    <content type="html"><![CDATA[<h1 id="写在前面"><a href="#写在前面" class="headerlink" title="写在前面"></a>写在前面</h1><p>在接下来几篇博客中将展示在MAC下搭建，并配置hexo博客。</p><p>​        本人也是一个算是个电脑小白，从打算有搭建一个博客的想法到现在大致搭建出一个博客一共花费了一个月，其中有一段时间都以为自己搞不出来了，一度想放弃，后来重拾信心，经过了一个星期时间总结别的前辈写的文章，总算是写出来一个初步的博客，将自己搭建博客的全过程记录下来，也希望可以为以后搭建博客的博友解决一点点迷茫，当然，本人技术也不怎么样，并且刚开始写博客，希望有什么错误或者不妥的地方希望大佬指出来，我会及时改正。让我们进入正题吧，Let’s go!</p><h2 id="1-搭建hexo博客"><a href="#1-搭建hexo博客" class="headerlink" title="1.搭建hexo博客"></a>1.搭建hexo博客</h2><p>我选择了hexo博客的主要原因是hexo时间比较长了，网上的问题解决方法也比较全面。</p><p>首先我们需要下载nodejs，我们可以去<code>nodejs.org</code>进行下载</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8810.20.44.png" alt=""></p><p>下载好后直接安装就行了。</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8810.32.56.png" alt=""></p><p>在终端上分别输入一下<code>node -v</code>和<code>npm -v</code> 如果有显示版本号，那么就说明你安装成功了。</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8810.36.41.png" alt=""></p><p>下面在终端中输入<code>sudo su</code> 并输入开机密码 进入超级管理员模式</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8810.55.10.png" alt=""></p><p>利用npm安装一个淘宝源cnpm，这样会快一点,在终端中输入<code>npm install -g cnpm --registry=https://registry.npm.taobao.org</code></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8810.57.42.png" alt=""></p><p>在终端中输入<code>cnpm -v</code>测试一下有没有安装成功，如果出现了以下信息就说明安装成功了</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8811.00.53.png" alt=""></p><p>接下来使用cnpm来安装hexo框架，在终端中输入<code>cnpm install -g hexo-cli</code> </p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8811.04.35.png" alt=""></p><p>我们再使用<code>hexo -v</code>来检测一下是否安装成功</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8811.05.39.png" alt=""></p><p>接下来在终端中输入<code>mkdir myblog</code>,在用户文件夹中创建一个myblog文件夹。如果在接下来的操作有什么出现什么错误，可以将这个文件夹删除了再重新创建就行了。</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8811.11.25.png" alt=""></p><p>先输入<code>cd myblog</code> 进入myblog文件夹再输入<code>sudo hexo init</code>初始化一个博客，速度会有点慢，出现了<code>Start blogging with Hexo!</code> 就可以用了，中间出现warn可以忽略。</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8811.32.06.png" alt=""></p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8811.32.18.png" alt=""></p><p>然后我们可以打开访达，用户文件夹下的myblog文件夹下发现了hexo为你自动生成了一些博客基础框架的内容</p><p><img src="https://cdn.jsdelivr.net/gh/WhyYouStarted/PhotoGallery@master/images/BuildBlog/%E6%88%AA%E5%B1%8F2019-12-06%E4%B8%8B%E5%8D%8811.40.44.png" alt=""></p><p>下面为一些hexo博客常用操作的命令，这些会在后面的文章进行演示，这里就不一一演示了。</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></pre></td><td class="code"><pre><span class="line">1.新建一个名为My New Post的文章</span><br><span class="line">hexo new &quot;My New Post&quot;</span><br><span class="line">2.启动本地服务器</span><br><span class="line">hexo server或hexo s</span><br><span class="line">3.清理缓存文件</span><br><span class="line">hexo clean</span><br><span class="line">4.生成静态文件</span><br><span class="line">hexo generate或 hexo g</span><br><span class="line">5.部署网站</span><br><span class="line">hexo deploy或hexo d</span><br></pre></td></tr></table></figure><p>好了，hexo博客就算是构建成功，下一篇展示如何把它保存到Github仓库上。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h1 id=&quot;写在前面&quot;&gt;&lt;a href=&quot;#写在前面&quot; class=&quot;headerlink&quot; title=&quot;写在前面&quot;&gt;&lt;/a&gt;写在前面&lt;/h1&gt;&lt;p&gt;在接下来几篇博客中将展示在MAC下搭建，并配置hexo博客。&lt;/p&gt;
&lt;p&gt;​        本人也是一个算是个电脑小白，从
      
    
    </summary>
    
    
      <category term="hexo" scheme="https://whyyoustarted.github.io/categories/hexo/"/>
    
    
      <category term="教程" scheme="https://whyyoustarted.github.io/tags/%E6%95%99%E7%A8%8B/"/>
    
  </entry>
  
  <entry>
    <title>xml笔记</title>
    <link href="https://whyyoustarted.github.io/2019/1203/xml-notes.html"/>
    <id>https://whyyoustarted.github.io/2019/1203/xml-notes.html</id>
    <published>2019-12-03T09:49:14.000Z</published>
    <updated>2019-12-06T16:27:25.744Z</updated>
    
    <content type="html"><![CDATA[<h2 id="1-XML概述"><a href="#1-XML概述" class="headerlink" title="1. XML概述"></a>1. XML概述</h2><ol><li><p>历史：</p><ol><li>GML ：Generalized Markup Language  通用标记语言</li><li>SGML ：Standard Generalized Markup Language 标准通用标记语言，对GML的完善</li><li>HTML ：Hyper Test Markup Language 超文本标记语言</li><li>GML ：Extensible Markup Language可拓展标记语言</li></ol></li><li><p>概念：Extensible Markup Language 可扩展标记语言</p><ul><li><p>可拓展性：标签都是自定义的。</p></li><li><p>功能</p><ul><li>储蓄数据<ol><li>配置文件</li><li>在网络中传输</li></ol></li></ul></li><li><p>xml和html的区别</p><ol><li><p>xml标签都是自定义的，html标签都是预定义的</p></li><li><p>xml的语法严格，html语法松散</p></li><li><p>xml是储存数据的，html是展示数据的。</p></li></ol></li></ul></li></ol><h2 id="2-基本语法"><a href="#2-基本语法" class="headerlink" title="2. 基本语法"></a>2. 基本语法</h2><ol><li><p>文档声明</p><ul><li>以<code>.xml</code>结尾的</li><li>以<code>&lt;?xml version=&#39;XX&#39; [encoding= &quot;XXX&quot;] [standalone=&quot;XX&quot;]?&gt;</code>开头，包括版本类型，编码格式。</li><li>version：版本号，必须的属性</li><li>encoding：编码方式。告知解析引擎当前文档使用的字符集，默认值：ISO-8859-1</li><li>standalone：是否独立<ul><li>取值：<ul><li>yes：不依赖其他文件</li><li>no：依赖其他文件</li></ul></li></ul></li></ul></li><li><p>标签 Tag</p><ol><li>标记标签：XML文档的主要组成部分</li><li>语法<code>&lt;标签名&gt;....&lt;/标签名&gt;</code></li><li>标签必须成对存在：包含一个开始标签和一个结束标签</li><li>开始标签：<code>&lt;标签名&gt;</code></li><li>结束标签：<code>&lt;/标签名&gt;</code></li><li>开始标签和结束标签标签名必须相同。</li><li>开始标签和结束标签范围之间的部分叫做标签体，可以包含一些内容。</li><li>标签体中可以出现子标签，也可以出现纯文本的信息。</li></ol></li><li><p>元素Element</p><ol><li><p>根元素</p></li><li><p>标签(元素,节点)：只强调开始标签和结束标签以及属性，并不重视标签体中包含什么信息</p></li><li><p>标签内容</p></li><li><p>元素：代表从开始标签开始、到结束标签之间所包含的所有内容，称之为一个元素。</p></li><li><p>元素命名规则</p><ul><li><p>以字母或<code>_</code>开头</p></li><li><p>后面可以根字母,数字,<code>_</code>,<code>-</code>或<code>.</code></p></li><li><p>大小写敏感</p></li><li><p>不能是保留字</p></li><li><p>没有长度限制</p></li></ul></li></ol></li><li><p>属性 Attribute </p><ol><li><p>对标签/元素进行额外的附加说明。</p></li><li><p>属性声明在标签的头部（开始标签）。</p></li><li><p>id属性值唯一</p></li><li><p>以键值对的形式存在。</p></li><li><p>属性值必须要加双引号。</p></li><li><p>可有有多组属性，每组属性之间使用空格分隔</p><figure class="highlight xml"><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></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">student</span> <span class="attr">id</span>=<span class="string">"1001"</span> <span class="attr">age</span>=<span class="string">"22"</span> <span class="attr">teacher</span>=<span class="string">"2001,tom,22,male"</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">name</span>&gt;</span>tom<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">gender</span>&gt;</span>male<span class="tag">&lt;/<span class="name">gender</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">teacher</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">id</span>&gt;</span>2001<span class="tag">&lt;/<span class="name">id</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">name</span>&gt;</span>tom<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">age</span>&gt;</span>22<span class="tag">&lt;/<span class="name">age</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">gender</span>&gt;</span>male<span class="tag">&lt;/<span class="name">gender</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">teacher</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">student</span>&gt;</span></span><br></pre></td></tr></table></figure></li></ol></li><li><p>注释</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!--    单行注释    --&gt;</span> </span><br><span class="line"><span class="comment">&lt;!--    </span></span><br><span class="line"><span class="comment">多行注释</span></span><br><span class="line"><span class="comment">多行注释</span></span><br><span class="line"><span class="comment">--&gt;</span></span><br></pre></td></tr></table></figure></li><li><p>实体</p><ol><li>概念：XML文件中的有些字符不能直接表示出来例如：<code>&lt;</code>，为了表示他们我们可以借助实体来完成<ul><li><code>&amp;lt;</code> ———-&gt; <code>&lt;</code></li><li><code>&amp;gt;</code>———-&gt; <code>&gt;</code>  </li><li><code>&amp;apos;</code>———-&gt; <code>&#39;</code> </li><li><code>&amp;quot;</code>———-&gt; <code>&quot;</code></li><li><code>&amp;amp;</code>———-&gt; <code>&amp;</code></li></ul></li></ol></li><li><p>文本</p><ul><li><p>CDATA区：在该区域中的数据会被原样展示</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;![CDATA[ 数据 ]]&gt;</span><br></pre></td></tr></table></figure></li></ul></li><li><p>如何编写一个有效的XML文档<br>两点要求：</p><ol><li>必须是一个结构良好的XML文档</li><li>必须使用DTD或者XSD约束文档语义</li></ol></li><li><p>DTD文档约束</p><ul><li><p>xml本身存在很高的灵活度，所以导致每个程序编写的xml文件差异较大，导致标准不能得到统一，解析的时候难度较大。</p></li><li><p>需要使用DTD对文档内容进行约束。</p></li><li><p>约束：制定规则，哪些内容可以出现，哪些内容不能出现….</p><ol><li><p>内部式</p><ol><li><p>内部：被约束的xml文件的内部,DTD代码全部定义在xml文件中</p><p>语法</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE 根元素 [元素声明]&gt;</span></span><br></pre></td></tr></table></figure><p>元素声明：允许出现哪些元素、不允许出现哪些元素、元素必须按照什么顺序排列、每种元素能够出现多少次、元素中必须拥有哪些属性、属性是什么类型、有无默认值、是否必要……</p></li><li><p>使用ELEMENT来定义元素</p><ul><li>语法</li></ul><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">!ELEMENT</span> 元素名称 类型&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">!ELEMENT</span> 元素名称 内容&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">!ELEMENT</span> <span class="attr">note</span> (<span class="attr">to</span>,<span class="attr">from</span>,<span class="attr">heading</span>,<span class="attr">body</span>)&gt;</span></span><br><span class="line"><span class="comment">&lt;!--在node元素中只能出现to、from、heading、body子元素--&gt;</span></span><br></pre></td></tr></table></figure><ul><li><p>数量词：用于定义某个元素可以出现多次 加在元素名称后边，代表该元素可以出现多少次</p><p><code>+</code>    :可以出现一次或者多次，至少出现一次</p><p><code>?</code>    :可以出现零次或者一次</p><p><code>*</code>    :可以出现零次或多次，任意次数</p><p><code>|</code>    :多个元素中选一个</p></li><li><p>#PCDATA：元素内容必须是解析器会解析的文本字符串信息约束元素不能有子元素，只能包含纯文本如果给某一个元素声明了#PCDATA类型的约束，那么这个元素不再能够拥有子元素。</p></li><li><p>EMPTY和ANY</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">!ELEMENT</span> 元素名称 <span class="attr">EMPTY</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!--元素必须是空元素。</span></span><br><span class="line"><span class="comment">空元素：开始标签和结束标签之间没有任何内容</span></span><br><span class="line"><span class="comment">--&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">hello</span>&gt;</span><span class="tag">&lt;/<span class="name">hello</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">!ELEMENT</span> 元素名称 <span class="attr">ANY</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!--元素中包含的可以使任意内容。--&gt;</span></span><br></pre></td></tr></table></figure></li></ul></li><li><p>ATTLIST用来定义属性</p><ul><li>格式：<code>&lt;!ATTLIST 元素名 属性名 属性类型 默认值&gt;</code></li><li>属性类型<ol><li><code>ID</code>：属性值必须唯一，属性值必须满足命名规则</li><li><code>enumerated</code>：(枚举值1|枚举值2|枚举值3….)属性</li><li><code>CDATA</code>：属性值为字符</li></ol></li><li>属性默认值<ol><li><code>#REQUIRED</code>：属性值必须出现在元素的开头标签中</li><li><code>#IMPLIED</code>：属性可以不出去，并且当他不出现的时候没有默认值implied</li><li><code>default-value</code>：属性可以不出现，并且当他不出现的时候有默认值的，二该属性的默认值就是<code>atttibute-value</code></li><li><code>#FIXED</code>:属性可以不出现，但是如果出现的话必须是指定的属性值，不出现的话也是指定的默认值</li></ol></li></ul></li></ol></li><li><p>外部式</p><ul><li><p>把DTD单独定义在一个独立<code>.dtd</code>的文件中</p></li><li><p>在xml文件中通过简要的声明将这个外置的DTD文件引入进来。</p><p><code>&lt;!DOCTYPE 根标签名 PUBLIC &quot;dtd文件名字&quot; &quot;dtd文件的位置URL&quot;&gt;</code></p></li></ul></li></ol></li></ul></li><li><p>使用Java程序解析xml文档的方式</p><ol><li><p>SAX 基于事件驱动式、类似爬虫式的解析方式</p><ul><li>SAX弊端是不方便对整个文档进行随机访问</li><li>优点是节省内存</li></ul></li><li><p>DOM  Document Object Model</p></li></ol><p>在开始读取数据之前，先把整个xml文档解析一遍，加载到内存中，变成一棵文档树形结构。</p><ul><li><p>优点：操作方便，可以对文档进行CRUD的所有操作</p></li><li><p>缺点：占内存</p><p> 这两种解析方式都是JDK中原生的解析方式</p></li></ul></li><li><p>xml常见的解析器：</p><ol><li>JAXP：sun公司提供的解析器，支持dom和sax两种思想</li><li>DOM4J：一款非常优秀的解析器</li><li>Jsoup：jsoup 是一款Java 的HTML解析器，可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API，可通过DOM，CSS以及类似于jQuery的操作方法来取出和操作数据。</li><li>PULL：Android操作系统内置的解析器，sax方式的。</li></ol></li><li><p>dom4j   Dom for Java</p><ul><li><p>第三方的解析xml的工具，开源、免费</p></li><li><p>如果需要使用第三方的工具或者框架，首先需要导入依赖。</p><ol><li>先把jar文件复制到工程目录下，放在哪里都可以</li><li>想把这个jar文件真正当成依赖文件使用，还需要把他添加到类加载路径中。<br><code>jar右击--&gt;Build Path--&gt;Add to Build Path</code></li></ol></li><li><p>语法</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.List;</span><br><span class="line"><span class="keyword">import</span> org.dom4j.Document;</span><br><span class="line"><span class="keyword">import</span> org.dom4j.DocumentException;</span><br><span class="line"><span class="keyword">import</span> org.dom4j.Element;</span><br><span class="line"><span class="comment">// import的时候注意：可能出现很多类名重复的情况</span></span><br><span class="line"><span class="comment">//导的所有的包都是org.dom4j包下</span></span><br><span class="line"><span class="keyword">import</span> org.dom4j.io.SAXReader;</span><br><span class="line"><span class="comment">// 解析cities.xml</span></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Dom4jDemo</span> </span>&#123;</span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> Exception </span>&#123;</span><br><span class="line"><span class="comment">// 第一步、创建Dom4j解析器对象SAXReader</span></span><br><span class="line">SAXReader reader = <span class="keyword">new</span> SAXReader();</span><br><span class="line"><span class="comment">// 第二步、让reader读取文档，能够把一个文档读取成一个树形结构对象</span></span><br><span class="line"><span class="comment">//  这个doc对象已经包含了文档当中所有的内容</span></span><br><span class="line">Document doc = reader.read(<span class="string">"src/com/briup/xml/cities.xml"</span>);</span><br><span class="line"><span class="comment">// 第三步、获取文档的根元素</span></span><br><span class="line">Element root = doc.getRootElement();</span><br><span class="line"><span class="comment">// 第四步、获取根元素下的所有直接子元素也就是要获取所有的&lt;city&gt;</span></span><br><span class="line">List&lt;Element&gt; elements = root.elements();</span><br><span class="line"><span class="comment">// 第五步、遍历这个集合，操作每一个&lt;city&gt;</span></span><br><span class="line"><span class="keyword">for</span>(Element element:elements) &#123;</span><br><span class="line">Element nameEle = element.element(<span class="string">"name"</span>);</span><br><span class="line">Element codeEle = element.element(<span class="string">"area-code"</span>);</span><br><span class="line">String name = nameEle.getText();</span><br><span class="line">String code = codeEle.getText();</span><br><span class="line">System.out.println(<span class="string">"城市名："</span> + name + <span class="string">","</span></span><br><span class="line">+ <span class="string">"区号："</span> + code);</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><figure class="highlight xml"><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></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">cities</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">city</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">name</span>&gt;</span>北京市<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">area-code</span>&gt;</span>010<span class="tag">&lt;/<span class="name">area-code</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">city</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">city</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">name</span>&gt;</span>上海市<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">area-code</span>&gt;</span>021<span class="tag">&lt;/<span class="name">area-code</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">city</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">city</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">name</span>&gt;</span>天津市<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">area-code</span>&gt;</span>022<span class="tag">&lt;/<span class="name">area-code</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">city</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">city</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">name</span>&gt;</span>重庆市<span class="tag">&lt;/<span class="name">name</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">area-code</span>&gt;</span>023<span class="tag">&lt;/<span class="name">area-code</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">city</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">cities</span>&gt;</span></span><br></pre></td></tr></table></figure></li></ul></li></ol>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;1-XML概述&quot;&gt;&lt;a href=&quot;#1-XML概述&quot; class=&quot;headerlink&quot; title=&quot;1. XML概述&quot;&gt;&lt;/a&gt;1. XML概述&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;历史：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;GML ：Generalized Marku
      
    
    </summary>
    
    
      <category term="XML" scheme="https://whyyoustarted.github.io/categories/XML/"/>
    
    
      <category term="笔记" scheme="https://whyyoustarted.github.io/tags/%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Hello World</title>
    <link href="https://whyyoustarted.github.io/2019/1113/hello-world.html"/>
    <id>https://whyyoustarted.github.io/2019/1113/hello-world.html</id>
    <published>2019-11-13T01:13:11.068Z</published>
    <updated>2019-12-06T16:27:25.227Z</updated>
    
    <content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/" target="_blank" rel="noopener">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html" target="_blank" rel="noopener">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues" target="_blank" rel="noopener">GitHub</a>.</p><h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><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><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/one-command-deployment.html" target="_blank" rel="noopener">Deployment</a></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;Welcome to &lt;a href=&quot;https://hexo.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hexo&lt;/a&gt;! This is your very first post. Check &lt;a href=&quot;https://hexo.
      
    
    </summary>
    
    
    
  </entry>
  
</feed>
