<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Mingyu&#39;s Blog</title>
  
  <subtitle>我荒废的今日，正是昨天殒身之人祈求的明日</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://www.mingyugu.com/"/>
  <updated>2018-05-21T05:01:47.000Z</updated>
  <id>https://www.mingyugu.com/</id>
  
  <author>
    <name>Mingyu Gu</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Hexo博客自动部署</title>
    <link href="https://www.mingyugu.com/hexo-auto-deploy.html"/>
    <id>https://www.mingyugu.com/hexo-auto-deploy.html</id>
    <published>2018-05-21T05:01:47.000Z</published>
    <updated>2018-05-21T05:01:47.000Z</updated>
    
    <content type="html"><![CDATA[<!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --><!-- rebuild by neat -->]]></content>
    
    <summary type="html">
    
      
      
        &lt;!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --&gt;&lt;!-- rebuild by neat --&gt;
      
    
    </summary>
    
      <category term="前端" scheme="https://www.mingyugu.com/categories/%E5%89%8D%E7%AB%AF/"/>
    
      <category term="框架" scheme="https://www.mingyugu.com/categories/%E5%89%8D%E7%AB%AF/%E6%A1%86%E6%9E%B6/"/>
    
      <category term="Hexo" scheme="https://www.mingyugu.com/categories/%E5%89%8D%E7%AB%AF/%E6%A1%86%E6%9E%B6/Hexo/"/>
    
    
      <category term="Hexo" scheme="https://www.mingyugu.com/tags/Hexo/"/>
    
      <category term="自动部署" scheme="https://www.mingyugu.com/tags/%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2/"/>
    
  </entry>
  
  <entry>
    <title>后端架构师技术图谱</title>
    <link href="https://www.mingyugu.com/architect-awesome.html"/>
    <id>https://www.mingyugu.com/architect-awesome.html</id>
    <published>2018-05-10T02:34:12.000Z</published>
    <updated>2018-05-10T02:34:12.000Z</updated>
    
    <content type="html"><![CDATA[<!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --><hr><p>文章摘录自：<a href="https://github.com/xingshaocheng/architect-awesome" target="_blank" rel="noopener">《后端架构师技术图谱》</a></p><hr><h1 id="数据结构"><a href="#数据结构" class="headerlink" title="数据结构"></a>数据结构</h1><h2 id="队列"><a href="#队列" class="headerlink" title="队列"></a>队列</h2><ul><li><p><a href="https://www.cnblogs.com/lemon-flm/p/7877898.html" target="_blank" rel="noopener">《java队列——queue详细分析》</a></p><ul><li>非阻塞队列：ConcurrentLinkedQueue(无界线程安全)，采用CAS机制（compareAndSwapObject原子操作）。</li><li>阻塞队列：ArrayBlockingQueue(有界)、LinkedBlockingQueue（无界）、DelayQueue、PriorityBlockingQueue，采用锁机制；使用 ReentrantLock 锁。</li></ul></li><li><p><a href="https://www.cnblogs.com/mantu/p/5802393.html" target="_blank" rel="noopener">《LinkedList、ConcurrentLinkedQueue、LinkedBlockingQueue对比分析》</a></p></li></ul><h2 id="集合"><a href="#集合" class="headerlink" title="集合"></a>集合</h2><ul><li><a href="https://blog.csdn.net/qq_33642117/article/details/52040345" target="_blank" rel="noopener">《Java Set集合的详解》</a></li></ul><h2 id="链表、数组"><a href="#链表、数组" class="headerlink" title="链表、数组"></a>链表、数组</h2><ul><li><a href="https://blog.csdn.net/wz249863091/article/details/52853360" target="_blank" rel="noopener">《Java集合详解–什么是List》</a></li></ul><h2 id="字典、关联数组"><a href="#字典、关联数组" class="headerlink" title="字典、关联数组"></a>字典、关联数组</h2><ul><li><a href="https://baike.xsoftlab.net/view/250.html" target="_blank" rel="noopener">《Java map 详解 - 用法、遍历、排序、常用API等》</a></li></ul><h2 id="栈"><a href="#栈" class="headerlink" title="栈"></a>栈</h2><ul><li><a href="https://blog.csdn.net/javazejian/article/details/53362993" target="_blank" rel="noopener">《java数据结构与算法之栈（Stack）设计与实现》</a></li><li><a href="http://www.runoob.com/java/java-stack-class.html" target="_blank" rel="noopener">《Java Stack 类》</a></li><li><a href="https://blog.csdn.net/f2006116/article/details/51375225" target="_blank" rel="noopener">《java stack的详细实现分析》</a><ul><li>Stack 是线程安全的。</li><li>内部使用数组保存数据，不够时翻倍。</li></ul></li></ul><h2 id="树"><a href="#树" class="headerlink" title="树"></a>树</h2><h3 id="二叉树"><a href="#二叉树" class="headerlink" title="二叉树"></a>二叉树</h3><p>每个节点最多有两个叶子节点。</p><ul><li><a href="https://blog.csdn.net/cai2016/article/details/52589952" target="_blank" rel="noopener">《二叉树》</a></li></ul><h3 id="完全二叉树"><a href="#完全二叉树" class="headerlink" title="完全二叉树"></a>完全二叉树</h3><ul><li><a href="https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91/7773232?fr=aladdin" target="_blank" rel="noopener">《完全二叉树》</a><ul><li>叶节点只能出现在最下层和次下层，并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。</li></ul></li></ul><h3 id="平衡二叉树"><a href="#平衡二叉树" class="headerlink" title="平衡二叉树"></a>平衡二叉树</h3><p>左右两个子树的高度差的绝对值不超过1，并且左右两个子树都是一棵平衡二叉树。</p><ul><li><a href="http://www.cnblogs.com/polly333/p/4798944.html" target="_blank" rel="noopener">《浅谈数据结构-平衡二叉树》</a></li><li><a href="http://www.cnblogs.com/yangecnu/p/Introduce-2-3-Search-Tree.html" target="_blank" rel="noopener">《浅谈算法和数据结构: 八 平衡查找树之2-3树》</a></li></ul><h3 id="二叉查找树（BST）"><a href="#二叉查找树（BST）" class="headerlink" title="二叉查找树（BST）"></a>二叉查找树（BST）</h3><p>二叉查找树（Binary Search Tree），也称有序二叉树（ordered binary tree）,排序二叉树（sorted binary tree）。</p><ul><li><a href="http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html" target="_blank" rel="noopener">《浅谈算法和数据结构: 七 二叉查找树》</a></li></ul><h3 id="红黑树"><a href="#红黑树" class="headerlink" title="红黑树"></a>红黑树</h3><ul><li><a href="https://blog.csdn.net/sun_tttt/article/details/65445754" target="_blank" rel="noopener">《最容易懂得红黑树》</a><ul><li>添加阶段后，左旋或者右旋从而再次达到平衡。</li></ul></li><li><a href="http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html" target="_blank" rel="noopener">《浅谈算法和数据结构: 九 平衡查找树之红黑树》</a></li></ul><h3 id="B-，B-，B-树"><a href="#B-，B-，B-树" class="headerlink" title="B-，B+，B*树"></a>B-，B+，B*树</h3><p>MySQL是基于B+树聚集索引组织表</p><ul><li><a href="https://blog.csdn.net/aqzwss/article/details/53074186" target="_blank" rel="noopener">《B-树，B+树，B*树详解》</a></li><li><a href="https://blog.csdn.net/bigtree_3721/article/details/73632405" target="_blank" rel="noopener">《B-树，B+树与B*树的优缺点比较》</a><ul><li>B+ 树的叶子节点链表结构相比于 B- 树便于扫库，和范围检索。</li></ul></li></ul><h3 id="LSM-树"><a href="#LSM-树" class="headerlink" title="LSM 树"></a>LSM 树</h3><p>LSM（Log-Structured Merge-Trees）和 B+ 树相比，是牺牲了部分读的性能来换取写的性能(通过批量写入)，实现读写之间的。<br>Hbase、LevelDB、Tair（Long DB）、nessDB 采用 LSM 树的结构。LSM可以快速建立索引。</p><ul><li><p><a href="https://blog.csdn.net/dbanote/article/details/8897599" target="_blank" rel="noopener">《LSM树 VS B+树》</a></p><ul><li>B+ 树读性能好，但由于需要有序结构，当key比较分散时，磁盘寻道频繁，造成写性能。</li><li>LSM 是将一个大树拆分成N棵小树，先写到内存（无寻道问题，性能高），在内存中构建一颗有序小树（有序树），随着小树越来越大，内存的小树会flush到磁盘上。当读时，由于不知道数据在哪棵小树上，因此必须遍历（二分查找）所有的小树，但在每颗小树内部数据是有序的。</li></ul></li><li><p><a href="https://blog.csdn.net/u014774781/article/details/52105708" target="_blank" rel="noopener">《LSM树（Log-Structured Merge Tree）存储引擎》</a></p><ul><li>极端的说，基于LSM树实现的HBase的写性能比MySQL高了一个数量级，读性能低了一个数量级。</li><li>优化方式：Bloom filter 替代二分查找；compact 小数位大树，提高查询性能。</li><li>Hbase 中，内存中达到一定阈值后，整体flush到磁盘上、形成一个文件（B+数），HDFS不支持update操作，所以Hbase做整体flush而不是merge update。flush到磁盘上的小树，定期会合并成一个大树。</li></ul></li></ul><h2 id="BitSet"><a href="#BitSet" class="headerlink" title="BitSet"></a>BitSet</h2><p>经常用于大规模数据的排重检查。</p><ul><li><a href="http://www.runoob.com/java/java-bitset-class.html" target="_blank" rel="noopener">《Java Bitset类》</a></li><li><a href="https://blog.csdn.net/caiandyong/article/details/51581160" target="_blank" rel="noopener">《Java BitSet（位集）》</a></li></ul><hr><h1 id="常用算法"><a href="#常用算法" class="headerlink" title="常用算法"></a>常用算法</h1><ul><li><a href="https://blog.csdn.net/gane_cheng/article/details/52652705" target="_blank" rel="noopener">《常见排序算法及对应的时间复杂度和空间复杂度》</a></li></ul><h2 id="排序、查找算法"><a href="#排序、查找算法" class="headerlink" title="排序、查找算法"></a>排序、查找算法</h2><ul><li><a href="https://blog.csdn.net/gane_cheng/article/details/52652705" target="_blank" rel="noopener">《常见排序算法及对应的时间复杂度和空间复杂度》</a></li></ul><h3 id="选择排序"><a href="#选择排序" class="headerlink" title="选择排序"></a>选择排序</h3><ul><li><a href="https://www.cnblogs.com/shen-hua/p/5424059.html" target="_blank" rel="noopener">《Java中的经典算法之选择排序（SelectionSort）》</a><ul><li>每一趟从待排序的记录中选出最小的元素，顺序放在已排好序的序列最后，直到全部记录排序完毕。</li></ul></li></ul><h3 id="冒泡排序"><a href="#冒泡排序" class="headerlink" title="冒泡排序"></a>冒泡排序</h3><ul><li><a href="https://blog.csdn.net/shuaizai88/article/details/73250615" target="_blank" rel="noopener">《冒泡排序的2种写法》</a><ul><li>相邻元素前后交换、把最大的排到最后。</li><li>时间复杂度 O(n²)</li></ul></li></ul><h3 id="插入排序"><a href="#插入排序" class="headerlink" title="插入排序"></a>插入排序</h3><ul><li><a href="https://www.cnblogs.com/hapjin/p/5517667.html" target="_blank" rel="noopener">《排序算法总结之插入排序》</a></li></ul><h3 id="快速排序"><a href="#快速排序" class="headerlink" title="快速排序"></a>快速排序</h3><ul><li><a href="http://developer.51cto.com/art/201403/430986.htm" target="_blank" rel="noopener">《坐在马桶上看算法：快速排序》</a><ul><li>一侧比另外一次都大或小。</li></ul></li></ul><h3 id="归并排序"><a href="#归并排序" class="headerlink" title="归并排序"></a>归并排序</h3><ul><li><a href="http://www.cnblogs.com/chengxiao/p/6194356.html" target="_blank" rel="noopener">《图解排序算法(四)之归并排序》</a><ul><li>分而治之，分成小份排序，在合并(重建一个新空间进行复制)。</li></ul></li></ul><h3 id="希尔排序"><a href="#希尔排序" class="headerlink" title="希尔排序"></a>希尔排序</h3><p>TODO</p><h3 id="堆排序"><a href="#堆排序" class="headerlink" title="堆排序"></a>堆排序</h3><ul><li><a href="https://www.cnblogs.com/chengxiao/p/6129630.html" target="_blank" rel="noopener">《图解排序算法(三)之堆排序》</a><ul><li>排序过程就是构建最大堆的过程，最大堆：每个结点的值都大于或等于其左右孩子结点的值，堆顶元素是最大值。</li></ul></li></ul><h3 id="计数排序"><a href="#计数排序" class="headerlink" title="计数排序"></a>计数排序</h3><ul><li><a href="https://www.cnblogs.com/suvllian/p/5495780.html" target="_blank" rel="noopener">《计数排序和桶排序》</a><ul><li>和桶排序过程比较像，差别在于桶的数量。</li></ul></li></ul><h3 id="桶排序"><a href="#桶排序" class="headerlink" title="桶排序"></a>桶排序</h3><ul><li><a href="http://blog.51cto.com/ahalei/1362789" target="_blank" rel="noopener">《【啊哈！算法】最快最简单的排序——桶排序》</a></li><li><a href="https://blog.csdn.net/sunjinshengli/article/details/70738527" target="_blank" rel="noopener">《排序算法（三）：计数排序与桶排序》</a><ul><li>桶排序将[0,1)区间划分为n个相同的大小的子区间，这些子区间被称为桶。</li><li>每个桶单独进行排序，然后再遍历每个桶。</li></ul></li></ul><h3 id="基数排序"><a href="#基数排序" class="headerlink" title="基数排序"></a>基数排序</h3><p>按照个位、十位、百位、…依次来排。</p><ul><li><a href="https://blog.csdn.net/lemon_tree12138/article/details/51695211" target="_blank" rel="noopener">《排序算法系列：基数排序》</a></li><li><a href="https://www.cnblogs.com/skywang12345/p/3603669.html" target="_blank" rel="noopener">《基数排序》</a></li></ul><h3 id="二分查找"><a href="#二分查找" class="headerlink" title="二分查找"></a>二分查找</h3><ul><li><p><a href="https://www.cnblogs.com/coderising/p/5708632.html" target="_blank" rel="noopener">《二分查找(java实现)》</a></p><ul><li>要求待查找的序列有序。</li><li>时间复杂度 O(logN)。</li></ul></li><li><p><a href="https://blog.csdn.net/maoyuanming0806/article/details/78176957" target="_blank" rel="noopener">《java实现二分查找-两种方式》</a></p><ul><li>while + 递归。</li></ul></li></ul><h3 id="Java-中的排序工具"><a href="#Java-中的排序工具" class="headerlink" title="Java 中的排序工具"></a>Java 中的排序工具</h3><ul><li><a href="https://blog.csdn.net/u011410529/article/details/56668545?locationnum=6&amp;fps=1" target="_blank" rel="noopener">《Arrays.sort和Collections.sort实现原理解析》</a><ul><li>Collections.sort算法调用的是合并排序。</li><li>Arrays.sort() 采用了2种排序算法 – 基本类型数据使用快速排序法，对象数组使用归并排序。</li></ul></li></ul><h2 id="布隆过滤器"><a href="#布隆过滤器" class="headerlink" title="布隆过滤器"></a>布隆过滤器</h2><p>常用于大数据的排重，比如email，url 等。<br>核心原理：将每条数据通过计算产生一个指纹（一个字节或多个字节，但一定比原始数据要少很多），其中每一位都是通过随机计算获得，在将指纹映射到一个大的按位存储的空间中。注意：会有一定的错误率。<br>优点：空间和时间效率都很高。<br>缺点：随着存入的元素数量增加，误算率随之增加。</p><ul><li><a href="https://segmentfault.com/a/1190000002729689" target="_blank" rel="noopener">《布隆过滤器 – 空间效率很高的数据结构》</a></li><li><a href="https://blog.csdn.net/zdxiq000/article/details/57626464" target="_blank" rel="noopener">《大量数据去重：Bitmap和布隆过滤器(Bloom Filter)》</a></li><li><a href="https://blog.csdn.net/qq_30242609/article/details/71024458" target="_blank" rel="noopener">《基于Redis的布隆过滤器的实现》</a><ul><li>基于 Redis 的 Bitmap 数据结构。</li></ul></li><li><a href="https://blog.csdn.net/lemon_tree12138/article/details/47973715" target="_blank" rel="noopener">《网络爬虫：URL去重策略之布隆过滤器(BloomFilter)的使用》</a><ul><li>使用Java中的 BitSet 类 和 加权和hash算法。</li></ul></li></ul><h2 id="字符串比较"><a href="#字符串比较" class="headerlink" title="字符串比较"></a>字符串比较</h2><h3 id="KMP-算法"><a href="#KMP-算法" class="headerlink" title="KMP 算法"></a>KMP 算法</h3><p>KMP：Knuth-Morris-Pratt算法（简称KMP）<br>核心原理是利用一个“部分匹配表”，跳过已经匹配过的元素。</p><ul><li><a href="http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html" target="_blank" rel="noopener">《字符串匹配的KMP算法》</a></li></ul><h2 id="深度优先、广度优先"><a href="#深度优先、广度优先" class="headerlink" title="深度优先、广度优先"></a>深度优先、广度优先</h2><ul><li><a href="https://www.cnblogs.com/0kk470/p/7555033.html" target="_blank" rel="noopener">《广度优先搜索BFS和深度优先搜索DFS》</a></li></ul><h2 id="贪心算法"><a href="#贪心算法" class="headerlink" title="贪心算法"></a>贪心算法</h2><ul><li><a href="https://www.cnblogs.com/MrSaver/p/8641971.html" target="_blank" rel="noopener">《算法：贪婪算法基础》</a></li><li><a href="https://blog.csdn.net/a345017062/article/details/52443781" target="_blank" rel="noopener">《常见算法及问题场景——贪心算法》</a></li></ul><h2 id="回溯算法"><a href="#回溯算法" class="headerlink" title="回溯算法"></a>回溯算法</h2><ul><li><a href="https://blog.csdn.net/qfikh/article/details/51960331" target="_blank" rel="noopener">《 五大常用算法之四：回溯法》</a></li></ul><h2 id="剪枝算法"><a href="#剪枝算法" class="headerlink" title="剪枝算法"></a>剪枝算法</h2><ul><li><a href="https://blog.csdn.net/luningcsdn/article/details/50930276" target="_blank" rel="noopener">《α-β剪枝算法》</a></li></ul><h2 id="动态规划"><a href="#动态规划" class="headerlink" title="动态规划"></a>动态规划</h2><ul><li><a href="https://www.cnblogs.com/little-YTMM/p/5372680.html" target="_blank" rel="noopener">《详解动态规划——邹博讲动态规划》</a></li><li><a href="https://blog.csdn.net/yao_zi_jie/article/details/54580283" target="_blank" rel="noopener">《动态规划算法的个人理解》</a></li></ul><h2 id="朴素贝叶斯"><a href="#朴素贝叶斯" class="headerlink" title="朴素贝叶斯"></a>朴素贝叶斯</h2><ul><li><p><a href="https://blog.csdn.net/amds123/article/details/70173402" target="_blank" rel="noopener">《带你搞懂朴素贝叶斯分类算法》</a></p><ul><li>P(B|A)=P(A|B)P(B)/P(A)</li></ul></li><li><p><a href="http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html" target="_blank" rel="noopener">《贝叶斯推断及其互联网应用1》</a></p></li><li><a href="http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_two.html" target="_blank" rel="noopener">《贝叶斯推断及其互联网应用2》</a></li></ul><h2 id="推荐算法"><a href="#推荐算法" class="headerlink" title="推荐算法"></a>推荐算法</h2><ul><li><a href="http://www.infoq.com/cn/articles/recommendation-algorithm-overview-part01" target="_blank" rel="noopener">《推荐算法综述》</a></li><li><a href="https://www.oschina.net/news/51297/top-10-open-source-recommendation-systems" target="_blank" rel="noopener">《TOP 10 开源的推荐系统简介》</a></li></ul><h2 id="最小生成树算法"><a href="#最小生成树算法" class="headerlink" title="最小生成树算法"></a>最小生成树算法</h2><ul><li><a href="https://blog.csdn.net/luoshixian099/article/details/51908175" target="_blank" rel="noopener">《算法导论–最小生成树（Kruskal和Prim算法）》</a></li></ul><h2 id="最短路径算法"><a href="#最短路径算法" class="headerlink" title="最短路径算法"></a>最短路径算法</h2><ul><li><a href="https://blog.csdn.net/qq_35644234/article/details/60870719" target="_blank" rel="noopener">《Dijkstra算法详解》</a></li></ul><hr><h1 id="并发"><a href="#并发" class="headerlink" title="并发"></a>并发</h1><ol><li><p><strong>基础知识</strong></p><p>1.1 <a href="https://juejin.im/post/5ae6c3ef6fb9a07ab508ac85" target="_blank" rel="noopener">并发编程的优缺点</a></p><p>知识点：（1）为什么要用到并发？（优点）；（2）并发编程的缺点；（3）易混淆的概念</p><p>1.2 <a href="https://juejin.im/post/5ae6cf7a518825670960fcc2" target="_blank" rel="noopener">线程的状态和基本操作</a></p><p>知识点：（1）如何新建线程；（2）线程状态的转换；（3）线程的基本操作；（4）守护线程Daemon；</p></li><li><p><strong>并发理论（JMM）</strong></p><p><a href="https://juejin.im/post/5ae6d309518825673123fd0e" target="_blank" rel="noopener">java内存模型以及happens-before规则</a></p><p>知识点：（1）JMM内存结构；（2）重排序；（3）happens-before规则</p></li><li><p><strong>并发关键字</strong></p><p>3.1 <a href="https://juejin.im/post/5ae6dc04f265da0ba351d3ff" target="_blank" rel="noopener">让你彻底理解Synchronized</a></p><p>知识点：（1）如何使用synchronized；（2）monitor机制；（3）synchronized的happens-before关系；（4）synchronized的内存语义；（5）锁优化；（6）锁升级策略</p><p>3.2 <a href="https://juejin.im/post/5ae9b41b518825670b33e6c4" target="_blank" rel="noopener">让你彻底理解volatile</a></p><p>知识点：（1）实现原理；（2）happens-before的关系推导；（3）内存语义；（4）内存语义的实现</p><p>3.3 <a href="https://juejin.im/post/5ae9b82c6fb9a07ac3634941" target="_blank" rel="noopener">你以为你真的了解final吗？</a></p><p>知识点：（1）如何使用；（2）final的重排序规则；（3）final实现原理；（4）final引用不能从构造函数中“溢出”（this逃逸）</p><p>3.4 <a href="https://juejin.im/post/5aeb022cf265da0b722af7b8" target="_blank" rel="noopener">三大性质总结：原子性，有序性，可见性</a></p><p>知识点：（1）原子性：synchronized；（2）可见性：synchronized，volatile；（3）有序性：synchronized，volatile</p></li><li><p><strong>Lock体系</strong></p><p>4.1 <a href="https://juejin.im/post/5aeb055b6fb9a07abf725c8c" target="_blank" rel="noopener">初识Lock与AbstractQueuedSynchronizer(AQS)</a></p><p>知识点：（1）Lock和synchronized的比较；（2）AQS设计意图；（3）如何使用AQS实现自定义同步组件；（4）可重写的方法；（5）AQS提供的模板方法；</p><p>4.2 <a href="https://juejin.im/post/5aeb07ab6fb9a07ac36350c8" target="_blank" rel="noopener">深入理解AbstractQueuedSynchronizer(AQS)</a></p><p>知识点：（1）AQS同步队列的数据结构；（2）独占式锁；（3）共享式锁；</p><p>4.3 <a href="https://juejin.im/post/5aeb0a8b518825673a2066f0" target="_blank" rel="noopener">再一次理解ReentrantLock</a></p><p>知识点：（1）重入锁的实现原理；（2）公平锁的实现原理；（3）非公平锁的实现原理；（4）公平锁和非公平锁的比较</p><p>4.4 <a href="https://juejin.im/post/5aeb0e016fb9a07ab7740d90" target="_blank" rel="noopener">深入理解读写锁ReentrantReadWriteLock</a></p><p>知识点：（1）如何表示读写状态；（2）WriteLock的获取和释放；（3）ReadLock的获取和释放；（4）锁降级策略；（5）生成Condition等待队列；（6）应用场景</p><p>4.5 <a href="https://juejin.im/post/5aeea5e951882506a36c67f0" target="_blank" rel="noopener">详解Condition的await和signal等待/通知机制</a></p><p>知识点：（1）与Object的wait/notify机制相比具有的特性；（2）与Object的wait/notify相对应的方法；（3）底层数据结构；（4）await实现原理；（5）signal/signalAll实现原理；（6）await和signal/signalAll的结合使用；</p><p>4.6 <a href="https://juejin.im/post/5aeed27f51882567336aa0fa" target="_blank" rel="noopener">LockSupport工具</a></p><p>知识点：（1）主要功能；（2）与synchronized阻塞唤醒相比具有的特色；</p></li><li><p><strong>并发容器</strong></p><p>5.1 <a href="https://juejin.im/post/5aeeaba8f265da0b9d781d16" target="_blank" rel="noopener">并发容器之ConcurrentHashMap(JDK 1.8版本)</a></p><p>知识点：（1）关键属性；（2）重要内部类；（3）涉及到的CAS操作；（4）构造方法；（5）put执行流程；（6）get执行流程；（7）扩容机制；（8）用于统计size的方法的执行流程；（9）1.8版本的ConcurrentHashMap与之前版本的比较</p><p>5.2 <a href="https://juejin.im/post/5aeeb55f5188256715478c21" target="_blank" rel="noopener">并发容器之CopyOnWriteArrayList</a></p><p>知识点：（1）实现原理；（2）COW和ReentrantReadWriteLock的区别；（3）应用场景；（4）为什么具有弱一致性；（5）COW的缺点；</p><p>5.3 <a href="https://juejin.im/post/5aeeae756fb9a07ab11112af" target="_blank" rel="noopener">并发容器之ConcurrentLinkedQueue</a></p><p>知识点：（1）实现原理；（2）数据结构；（3）核心方法；（4）HOPS延迟更新的设计意图</p><p>5.4 <a href="https://juejin.im/post/5aeeb22e6fb9a07aa213404a" target="_blank" rel="noopener">并发容器之ThreadLocal</a></p><p>知识点：（1）实现原理；（2）set方法原理；（3）get方法原理；（4）remove方法原理；（5）ThreadLocalMap</p><p><a href="https://www.jianshu.com/p/dde92ec37bd1" target="_blank" rel="noopener">一篇文章，从源码深入详解ThreadLocal内存泄漏问题</a></p><p>知识点：（1）ThreadLocal内存泄漏原理；（2）ThreadLocal的最佳实践；（3）应用场景</p><p>5.5 <a href="https://juejin.im/post/5aeebd02518825672f19c546" target="_blank" rel="noopener">并发容器之BlockingQueue</a></p><p>知识点：（1）BlockingQueue的基本操作；（2）常用的BlockingQueue；</p><p><a href="https://juejin.im/post/5aeebdb26fb9a07aa83ea17e" target="_blank" rel="noopener">并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解</a></p></li><li><p><strong>线程池（Executor体系）</strong></p><p>6.1 <a href="https://juejin.im/post/5aeec0106fb9a07ab379574f" target="_blank" rel="noopener">线程池实现原理</a></p><p>知识点：（1）为什么要用到线程池？（2）执行流程；（3）构造器各个参数的意义；（4）如何关闭线程池；（5）如何配置线程池；</p><p>6.2 <a href="https://juejin.im/post/5aeec106518825670a10328a" target="_blank" rel="noopener">线程池之ScheduledThreadPoolExecutor</a></p><p>知识点：（1）类结构；（2）常用方法；（3）ScheduledFutureTask；（3）DelayedWorkQueue;</p><p>6.3 <a href="https://juejin.im/post/5aeec249f265da0b886d5101" target="_blank" rel="noopener">FutureTask基本操作总结</a></p><p>知识点：（1）FutureTask的几种状态；（2）get方法；（3）cancel方法；（4）应用场景；（5）实现 Runnable接口</p></li><li><p><strong>原子操作类</strong></p><p>7.1 <a href="https://juejin.im/post/5aeec351518825670a103292" target="_blank" rel="noopener">Java中atomic包中的原子操作类总结</a></p><p>知识点：（1）实现原理；（2）原子更新基本类型；（3）原子更新数组类型；（4）原子更新引用类型；（5）原子更新字段类型</p></li><li><p><strong>并发工具</strong></p><p>8.1 <a href="https://juejin.im/post/5aeec3ebf265da0ba76fa327" target="_blank" rel="noopener">大白话说java并发工具类-CountDownLatch，CyclicBarrier</a></p><p>知识点：（1）倒计时器CountDownLatch；（2）循环栅栏CyclicBarrier；（3）CountDownLatch与CyclicBarrier的比较</p><p>8.2 <a href="https://juejin.im/post/5aeec49b518825673614d183" target="_blank" rel="noopener">大白话说java并发工具类-Semaphore，Exchanger</a></p><p>知识点：（1）资源访问控制Semaphore；（2）数据交换Exchanger</p></li><li><p><strong>并发实践</strong></p><p>9.1 <a href="https://juejin.im/post/5aeec675f265da0b7c072c56" target="_blank" rel="noopener">一篇文章，让你彻底弄懂生产者–消费者问题</a></p></li></ol><blockquote><p>JAVA并发知识图谱</p></blockquote><p><strong>可移动到新窗口，放大查看效果更好或者查看原图</strong></p><p><a href="https://www.processon.com/view/5ab5a979e4b0a248b0e026b3?fromnew=1" target="_blank" rel="noopener">知识图谱原图链接，如果有用，可克隆给自己使用</a></p><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/architect-awesome-1.png-blog.post" alt="JAVA并发知识图谱.png"></div><div class="image-caption">JAVA并发知识图谱.png</div></figure><h2 id="多线程"><a href="#多线程" class="headerlink" title="多线程"></a>多线程</h2><ul><li><a href="http://www.importnew.com/18459.html" target="_blank" rel="noopener">《40个Java多线程问题总结》</a></li></ul><h2 id="线程安全"><a href="#线程安全" class="headerlink" title="线程安全"></a>线程安全</h2><ul><li><a href="https://www.cnblogs.com/zhanht/p/5450325.html" target="_blank" rel="noopener">《Java并发编程——线程安全及解决机制简介》</a></li></ul><h2 id="一致性、事务"><a href="#一致性、事务" class="headerlink" title="一致性、事务"></a>一致性、事务</h2><h3 id="事务-ACID-特性"><a href="#事务-ACID-特性" class="headerlink" title="事务 ACID 特性"></a>事务 ACID 特性</h3><ul><li><a href="https://blog.csdn.net/u012440687/article/details/52116108" target="_blank" rel="noopener">《数据库事务ACID特性》</a></li></ul><h3 id="事务的隔离级别"><a href="#事务的隔离级别" class="headerlink" title="事务的隔离级别"></a>事务的隔离级别</h3><ul><li>未提交读：一个事务可以读取另一个未提交的数据，容易出现脏读的情况。</li><li>读提交：一个事务等另外一个事务提交之后才可以读取数据，但会出现不可重复读的情况（多次读取的数据不一致），读取过程中出现UPDATE操作，会多。（大多数数据库默认级别是RC，比如SQL Server，Oracle），读取的时候不可以修改。</li><li>可重复读： 同一个事务里确保每次读取的时候，获得的是同样的数据，但不保障原始数据被其他事务更新（幻读），Mysql InnoDB 就是这个级别。</li><li><p>序列化：所有事物串行处理（牺牲了效率）</p></li><li><p><a href="https://blog.csdn.net/qq_33290787/article/details/51924963" target="_blank" rel="noopener">《理解事务的4种隔离级别》</a></p></li><li><p><a href="https://www.cnblogs.com/z-sm/p/7245981.html" target="_blank" rel="noopener">数据库事务的四大特性及事务隔离级别</a></p></li><li><p><a href="http://blog.sina.com.cn/s/blog_499740cb0100ugs7.html" target="_blank" rel="noopener">《MySQL的InnoDB的幻读问题 》</a></p><ul><li>幻读的例子非常清楚。</li><li>通过 SELECT … FOR UPDATE 解决。</li></ul></li><li><p><a href="http://database.51cto.com/art/201804/570101.htm" target="_blank" rel="noopener">《一篇文章带你读懂MySQL和InnoDB》</a></p><ul><li>图解脏读、不可重复读、幻读问题。</li></ul></li></ul><h3 id="MVCC"><a href="#MVCC" class="headerlink" title="MVCC"></a>MVCC</h3><ul><li><p><a href="https://www.cnblogs.com/chenpingzhao/p/5065316.html" target="_blank" rel="noopener">《【mysql】关于innodb中MVCC的一些理解》</a></p><ul><li>innodb 中 MVCC 用在 Repeatable-Read 隔离级别。</li><li>MVCC 会产生幻读问题（更新时异常。）</li></ul></li><li><p><a href="https://blog.csdn.net/whoamiyang/article/details/51901888" target="_blank" rel="noopener">《轻松理解MYSQL MVCC 实现机制》</a></p><ul><li>通过隐藏版本列来实现 MVCC 控制，一列记录创建时间、一列记录删除时间，这里的时间</li><li>每次只操作比当前版本小（或等于）的 行。</li></ul></li></ul><h2 id="锁"><a href="#锁" class="headerlink" title="锁"></a>锁</h2><h3 id="Java中的锁和同步类"><a href="#Java中的锁和同步类" class="headerlink" title="Java中的锁和同步类"></a>Java中的锁和同步类</h3><ul><li><p><a href="https://www.cnblogs.com/qifengshi/p/6831055.html" target="_blank" rel="noopener">《Java中的锁分类》</a></p><ul><li>主要包括 synchronized、ReentrantLock、和 ReadWriteLock。</li></ul></li><li><p><a href="https://www.cnblogs.com/waterystone/p/4920797.html" target="_blank" rel="noopener">《Java并发之AQS详解》</a></p></li><li><p><a href="http://cuisuqiang.iteye.com/blog/2020146" target="_blank" rel="noopener">《Java中信号量 Semaphore》</a></p><ul><li>有数量控制</li><li>申请用 acquire，申请不要则阻塞；释放用 release。</li></ul></li><li><p><a href="https://www.cnblogs.com/davidwang456/p/6094947.html" target="_blank" rel="noopener">《java开发中的Mutex vs Semaphore》</a></p><ul><li>简单的说 就是Mutex是排它的，只有一个可以获取到资源， Semaphore也具有排它性，但可以定义多个可以获取的资源的对象。</li></ul></li></ul><h3 id="公平锁-amp-非公平锁"><a href="#公平锁-amp-非公平锁" class="headerlink" title="公平锁 &amp; 非公平锁"></a>公平锁 &amp; 非公平锁</h3><p>公平锁的作用就是严格按照线程启动的顺序来执行的，不允许其他线程插队执行的；而非公平锁是允许插队的。</p><ul><li><a href="https://blog.csdn.net/EthanWhite/article/details/55508357" target="_blank" rel="noopener">《公平锁与非公平锁》</a><ul><li>默认情况下 ReentrantLock 和 synchronized 都是非公平锁。ReentrantLock 可以设置成公平锁。</li></ul></li></ul><h3 id="悲观锁"><a href="#悲观锁" class="headerlink" title="悲观锁"></a>悲观锁</h3><p>悲观锁如果使用不当（锁的条数过多），会引起服务大面积等待。推荐优先使用乐观锁+重试。</p><ul><li><p><a href="https://www.cnblogs.com/zhiqian-ali/p/6200874.html" target="_blank" rel="noopener">《【MySQL】悲观锁&amp;乐观锁》</a></p><ul><li>乐观锁的方式：版本号+重试方式</li><li>悲观锁：通过 select … for update 进行行锁(不可读、不可写，share 锁可读不可写)。</li></ul></li><li><p><a href="https://www.cnblogs.com/Lawson/p/5008741.html" target="_blank" rel="noopener">《Mysql查询语句使用select.. for update导致的数据库死锁分析》</a></p><ul><li>mysql的innodb存储引擎实务锁虽然是锁行，但它内部是锁索引的。</li><li>锁相同数据的不同索引条件可能会引起死锁。</li></ul></li><li><p><a href="https://www.cnblogs.com/zejin2008/p/5262751.html" target="_blank" rel="noopener">《Mysql并发时经典常见的死锁原因及解决方法》</a></p></li></ul><h3 id="乐观锁-amp-CAS"><a href="#乐观锁-amp-CAS" class="headerlink" title="乐观锁 &amp; CAS"></a>乐观锁 &amp; CAS</h3><ul><li><a href="http://www.importnew.com/20472.html" target="_blank" rel="noopener">《乐观锁的一种实现方式——CAS》</a><ul><li>和MySQL乐观锁方式相似，只不过是通过和原值进行比较。</li></ul></li></ul><h3 id="ABA-问题"><a href="#ABA-问题" class="headerlink" title="ABA 问题"></a>ABA 问题</h3><p>由于高并发，在CAS下，更新后可能此A非彼A。通过版本号可以解决，类似于上文Mysql 中提到的的乐观锁。</p><ul><li><a href="https://www.cnblogs.com/549294286/p/3766717.html" target="_blank" rel="noopener">《Java CAS 和ABA问题》</a></li><li><a href="https://blog.csdn.net/li954644351/article/details/50511879" target="_blank" rel="noopener">《Java 中 ABA问题及避免》</a><ul><li>AtomicStampedReference 和 AtomicStampedReference。</li></ul></li></ul><h3 id="CopyOnWrite容器"><a href="#CopyOnWrite容器" class="headerlink" title="CopyOnWrite容器"></a>CopyOnWrite容器</h3><p>可以对CopyOnWrite容器进行并发的读，而不需要加锁。CopyOnWrite并发容器用于读多写少的并发场景。比如白名单，黑名单，商品类目的访问和更新场景，不适合需要数据强一致性的场景。</p><ul><li><p><a href="https://www.cnblogs.com/hapjin/p/4840107.html" target="_blank" rel="noopener">《JAVA中写时复制(Copy-On-Write)Map实现》</a></p><ul><li>实现读写分离，读取发生在原始数据上，写入发生在副本上。</li><li>不用加锁，通过最终一致实现一致性。</li></ul></li><li><p><a href="https://blog.csdn.net/a494303877/article/details/53404623" target="_blank" rel="noopener">《聊聊并发-Java中的Copy-On-Write容器》</a></p></li></ul><h3 id="RingBuffer"><a href="#RingBuffer" class="headerlink" title="RingBuffer"></a>RingBuffer</h3><ul><li><a href="http://www.cnblogs.com/l00l/p/4115001.html" target="_blank" rel="noopener">《线程安全的无锁RingBuffer的实现【一个读线程，一个写线程】》</a></li></ul><h3 id="可重入锁-amp-不可重入锁"><a href="#可重入锁-amp-不可重入锁" class="headerlink" title="可重入锁 &amp; 不可重入锁"></a>可重入锁 &amp; 不可重入锁</h3><ul><li><p><a href="https://www.cnblogs.com/dj3839/p/6580765.html" target="_blank" rel="noopener">《可重入锁和不可重入锁》</a></p><ul><li>通过简单代码举例说明可重入锁和不可重入锁。</li><li>可重入锁指同一个线程可以再次获得之前已经获得的锁。</li><li>可重入锁可以用户避免死锁。</li><li>Java中的可重入锁：synchronized 和 java.util.concurrent.locks.ReentrantLock</li></ul></li><li><p><a href="https://www.cnblogs.com/baizhanshi/p/7211802.html" target="_blank" rel="noopener">《ReenTrantLock可重入锁（和synchronized的区别）总结》</a></p><ul><li>synchronized 使用方便，编译器来加锁，是非公平锁。</li><li>ReenTrantLock 使用灵活，锁的公平性可以定制。</li><li>相同加锁场景下，推荐使用 synchronized。</li></ul></li></ul><h3 id="互斥锁-amp-共享锁"><a href="#互斥锁-amp-共享锁" class="headerlink" title="互斥锁 &amp; 共享锁"></a>互斥锁 &amp; 共享锁</h3><p>互斥锁：同时只能有一个线程获得锁。比如，ReentrantLock 是互斥锁，ReadWriteLock 中的写锁是互斥锁。<br>共享锁：可以有多个线程同时或的锁。比如，Semaphore、CountDownLatch 是共享锁，ReadWriteLock 中的读锁是共享锁。</p><ul><li><a href="https://www.cnblogs.com/liang1101/p/6475555.html" target="_blank" rel="noopener">《ReadWriteLock场景应用》</a></li></ul><h3 id="死锁"><a href="#死锁" class="headerlink" title="死锁"></a>死锁</h3><ul><li><a href="https://blog.csdn.net/yunfenglw/article/details/45950305" target="_blank" rel="noopener">《“死锁”四个必要条件的合理解释》</a><ul><li>互斥、持有、不可剥夺、不可剥夺。</li></ul></li><li><p><a href="https://blog.csdn.net/u014039577/article/details/52351626" target="_blank" rel="noopener">Java如何查看死锁？</a></p><ul><li>JConsole 可以识别死锁。</li></ul></li><li><p><a href="https://blog.csdn.net/bohu83/article/details/51135061" target="_blank" rel="noopener">java多线程系列：死锁及检测</a></p><ul><li>jstack 可以显示死锁。</li></ul></li></ul><hr><h1 id="操作系统"><a href="#操作系统" class="headerlink" title="操作系统"></a>操作系统</h1><h2 id="计算机原理"><a href="#计算机原理" class="headerlink" title="计算机原理"></a>计算机原理</h2><ul><li><a href="https://segmentfault.com/a/1190000003692840" target="_blank" rel="noopener">《操作系统基础知识——操作系统的原理，类型和结构》</a></li></ul><h2 id="CPU"><a href="#CPU" class="headerlink" title="CPU"></a>CPU</h2><h3 id="多级缓存"><a href="#多级缓存" class="headerlink" title="多级缓存"></a>多级缓存</h3><p>典型的 CPU 有三级缓存，距离核心越近，速度越快，空间越小。L1 一般 32k，L2 一般 256k，L3 一般12M。内存速度需要200个 CPU 周期，CPU 缓存需要1个CPU周期。</p><ul><li><a href="https://blog.csdn.net/zero__007/article/details/54089730" target="_blank" rel="noopener">《从Java视角理解CPU缓存和伪共享》</a></li></ul><h2 id="进程"><a href="#进程" class="headerlink" title="进程"></a>进程</h2><p>TODO</p><h2 id="线程"><a href="#线程" class="headerlink" title="线程"></a>线程</h2><ul><li><a href="https://blog.csdn.net/asdf_1024/article/details/78978437" target="_blank" rel="noopener">《线程的生命周期及状态转换详解》</a></li></ul><h2 id="协程"><a href="#协程" class="headerlink" title="协程"></a>协程</h2><ul><li><a href="https://www.thinksaas.cn/group/topic/839375/" target="_blank" rel="noopener">《终结python协程—-从yield到actor模型的实现》</a><ul><li>线程的调度是由操作系统负责，协程调度是程序自行负责</li><li>与线程相比，协程减少了无谓的操作系统切换.</li><li>实际上当遇到IO操作时做切换才更有意义，（因为IO操作不用占用CPU），如果没遇到IO操作，按照时间片切换.</li></ul></li></ul><h2 id="Linux"><a href="#Linux" class="headerlink" title="Linux"></a>Linux</h2><ul><li><a href="http://www.runoob.com/linux/linux-command-manual.html" target="_blank" rel="noopener">《Linux 命令大全》</a></li></ul><hr><h1 id="设计模式"><a href="#设计模式" class="headerlink" title="设计模式"></a>设计模式</h1><h2 id="设计模式的六大原则"><a href="#设计模式的六大原则" class="headerlink" title="设计模式的六大原则"></a>设计模式的六大原则</h2><ul><li><a href="https://blog.csdn.net/q291611265/article/details/48465113" target="_blank" rel="noopener">《设计模式的六大原则》</a><ul><li>开闭原则：对扩展开放,对修改关闭，多使用抽象类和接口。</li><li>里氏代换原则：基类可以被子类替换，使用抽象类继承,不使用具体类继承。</li><li>依赖倒转原则：要依赖于抽象,不要依赖于具体，针对接口编程,不针对实现编程。</li><li>接口隔离原则：使用多个隔离的接口,比使用单个接口好，建立最小的接口。</li><li>迪米特法则：一个软件实体应当尽可能少地与其他实体发生相互作用，通过中间类建立联系。</li><li>合成复用原则：尽量使用合成/聚合,而不是使用继承。</li></ul></li></ul><h2 id="23种常见设计模式"><a href="#23种常见设计模式" class="headerlink" title="23种常见设计模式"></a>23种常见设计模式</h2><ul><li><a href="http://www.runoob.com/design-pattern/design-pattern-tutorial.html" target="_blank" rel="noopener">《设计模式》</a></li><li><a href="https://www.cnblogs.com/susanws/p/5510229.html" target="_blank" rel="noopener">《23种设计模式全解析》</a></li></ul><h2 id="应用场景"><a href="#应用场景" class="headerlink" title="应用场景"></a>应用场景</h2><ul><li><p><a href="http://blog.jobbole.com/62314/" target="_blank" rel="noopener">《细数JDK里的设计模式》</a></p><ul><li><p>结构型模式：</p><ul><li>适配器：用来把一个接口转化成另一个接口，如 java.util.Arrays#asList()。</li><li>桥接模式：这个模式将抽象和抽象操作的实现进行了解耦，这样使得抽象和实现可以独立地变化，如JDBC；</li><li>组合模式：使得客户端看来单个对象和对象的组合是同等的。换句话说，某个类型的方法同时也接受自身类型作为参数，如 Map.putAll，List.addAll、Set.addAll。</li><li>装饰者模式：动态的给一个对象附加额外的功能，这也是子类的一种替代方式，如 java.util.Collections#checkedList|Map|Set|SortedSet|SortedMap。</li><li>享元模式：使用缓存来加速大量小对象的访问时间，如 valueOf(int)。</li><li>代理模式：代理模式是用一个简单的对象来代替一个复杂的或者创建耗时的对象，如 java.lang.reflect.Proxy</li></ul></li><li><p>创建模式:</p><ul><li>抽象工厂模式：抽象工厂模式提供了一个协议来生成一系列的相关或者独立的对象，而不用指定具体对象的类型，如 java.util.Calendar#getInstance()。</li><li>建造模式(Builder)：定义了一个新的类来构建另一个类的实例，以简化复杂对象的创建，如：java.lang.StringBuilder#append()。</li><li>工厂方法：就是 <strong>一个返*</strong> 回具体对象的方法，而不是多个，如 java.lang.Object#toString()、java.lang.Class#newInstance()。</li><li>原型模式：使得类的实例能够生成自身的拷贝、如：java.lang.Object#clone()。</li><li>单例模式：全局只有一个实例，如 java.lang.Runtime#getRuntime()。</li></ul></li><li>行为模式：<ul><li>责任链模式：通过把请求从一个对象传递到链条中下一个对象的方式，直到请求被处理完毕，以实现对象间的解耦。如 javax.servlet.Filter#doFilter()。</li><li>命令模式：将操作封装到对象内，以便存储，传递和返回，如：java.lang.Runnable。</li><li>解释器模式：定义了一个语言的语法，然后解析相应语法的语句，如，java.text.Format，java.text.Normalizer。</li><li>迭代器模式：提供一个一致的方法来顺序访问集合中的对象，如 java.util.Iterator。</li><li>中介者模式：通过使用一个中间对象来进行消息分发以及减少类之间的直接依赖，java.lang.reflect.Method#invoke()。</li><li>空对象模式：如 java.util.Collections#emptyList()。</li><li>观察者模式：它使得一个对象可以灵活的将消息发送给感兴趣的对象，如 java.util.EventListener。</li><li>模板方法模式：让子类可以重写方法的一部分，而不是整个重写，如 java.util.Collections#sort()。</li></ul></li></ul></li><li><p><a href="https://www.cnblogs.com/hwaggLee/p/4510687.html" target="_blank" rel="noopener">《Spring-涉及到的设计模式汇总》</a></p></li><li><a href="https://blog.csdn.net/u012387062/article/details/54719114" target="_blank" rel="noopener">《Mybatis使用的设计模式》</a></li></ul><h2 id="单例模式"><a href="#单例模式" class="headerlink" title="单例模式"></a>单例模式</h2><ul><li><a href="https://blog.csdn.net/YECrazy/article/details/79481964" target="_blank" rel="noopener">《单例模式的三种实现 以及各自的优缺点》</a></li><li><a href="https://www.cnblogs.com/ttylinux/p/6498822.html" target="_blank" rel="noopener">《单例模式－－反射－－防止序列化破坏单例模式》</a><ul><li>使用枚举类型。</li></ul></li></ul><h2 id="责任链模式"><a href="#责任链模式" class="headerlink" title="责任链模式"></a>责任链模式</h2><p>TODO</p><h2 id="MVC"><a href="#MVC" class="headerlink" title="MVC"></a>MVC</h2><ul><li><a href="http://www.runoob.com/design-pattern/mvc-pattern.html" target="_blank" rel="noopener">《MVC 模式》</a><ul><li>模型(model)－视图(view)－控制器(controller)</li></ul></li></ul><h2 id="IOC"><a href="#IOC" class="headerlink" title="IOC"></a>IOC</h2><ul><li><a href="https://www.zhihu.com/question/23277575" target="_blank" rel="noopener">《理解 IOC》</a></li><li><a href="https://www.cnblogs.com/NancyStartOnce/p/6813162.html" target="_blank" rel="noopener">《IOC 的理解与解释》</a><ul><li>正向控制：传统通过new的方式。反向控制，通过容器注入对象。</li><li>作用：用于模块解耦。</li><li>DI：Dependency Injection，即依赖注入，只关心资源使用，不关心资源来源。</li></ul></li></ul><h2 id="AOP"><a href="#AOP" class="headerlink" title="AOP"></a>AOP</h2><ul><li><a href="https://my.oschina.net/yanquan345/blog/203415" target="_blank" rel="noopener">《轻松理解AOP(面向切面编程)》</a></li><li><a href="https://www.cnblogs.com/hongwz/p/5764917.html" target="_blank" rel="noopener">《Spring AOP详解》</a></li><li><a href="http://www.importnew.com/24305.html" target="_blank" rel="noopener">《Spring AOP的实现原理》</a><ul><li>Spring AOP使用的动态代理，主要有两种方式：JDK动态代理和CGLIB动态代理。</li></ul></li><li><a href="https://www.ibm.com/developerworks/cn/java/j-lo-springaopcglib/" target="_blank" rel="noopener">《Spring AOP 实现原理与 CGLIB 应用》</a><ul><li>Spring AOP 框架对 AOP 代理类的处理原则是：如果目标对象的实现类实现了接口，Spring AOP 将会采用 JDK 动态代理来生成 AOP 代理类；如果目标对象的实现类没有实现接口，Spring AOP 将会采用 CGLIB 来生成 AOP 代理类</li></ul></li></ul><h2 id="UML"><a href="#UML" class="headerlink" title="UML"></a>UML</h2><ul><li><a href="https://www.w3cschool.cn/uml_tutorial/" target="_blank" rel="noopener">《UML教程》</a></li></ul><h2 id="微服务思想"><a href="#微服务思想" class="headerlink" title="微服务思想"></a>微服务思想</h2><ul><li><a href="https://www.cnblogs.com/wintersun/p/6219259.html" target="_blank" rel="noopener">《微服务架构设计》</a></li><li><a href="http://www.infoq.com/cn/articles/micro-service-technology-stack" target="_blank" rel="noopener">《微服务架构技术栈选型手册》</a></li></ul><h3 id="康威定律"><a href="#康威定律" class="headerlink" title="康威定律"></a>康威定律</h3><ul><li><p><a href="https://yq.aliyun.com/articles/8611" target="_blank" rel="noopener">《微服务架构的理论基础 - 康威定律》</a></p><ul><li>定律一：组织沟通方式会通过系统设计表达出来，就是说架构的布局和组织结构会有相似。</li><li>定律二：时间再多一件事情也不可能做的完美，但总有时间做完一件事情。一口气吃不成胖子，先搞定能搞定的。</li><li>定律三：线型系统和线型组织架构间有潜在的异质同态特性。种瓜得瓜，做独立自治的子系统减少沟通成本。</li><li>定律四：大的系统组织总是比小系统更倾向于分解。合久必分，分而治之。</li></ul></li><li><p><a href="https://static.geekbang.org/PDF-%E4%BF%AE%E6%94%B9%E7%89%88-%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E5%9B%BE%E7%89%87-%E6%9D%A8%E6%B3%A2-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84.pdf" target="_blank" rel="noopener">《微服务架构核⼼20讲》</a></p></li></ul><hr><h1 id="运维-amp-统计-amp-技术支持"><a href="#运维-amp-统计-amp-技术支持" class="headerlink" title="运维 &amp; 统计 &amp; 技术支持"></a>运维 &amp; 统计 &amp; 技术支持</h1><h2 id="常规监控"><a href="#常规监控" class="headerlink" title="常规监控"></a>常规监控</h2><ul><li><p><a href="https://blog.csdn.net/enweitech/article/details/77849205" target="_blank" rel="noopener">《腾讯业务系统监控的修炼之路》</a></p><ul><li>监控的方式：主动、被动、旁路(比如舆情监控)</li><li>监控类型： 基础监控、服务端监控、客户端监控、<br>监控、用户端监控</li><li>监控的目标：全、块、准</li><li>核心指标：请求量、成功率、耗时</li></ul></li><li><p><a href="https://www.oschina.net/news/67525/monitoring-tools" target="_blank" rel="noopener">《开源还是商用？十大云运维监控工具横评》</a></p><ul><li>Zabbix、Nagios、Ganglia、Zenoss、Open-falcon、监控宝、 360网站服务监控、阿里云监控、百度云观测、小蜜蜂网站监测等。</li></ul></li><li><p><a href="http://developer.51cto.com/art/201612/525373.htm" target="_blank" rel="noopener">《监控报警系统搭建及二次开发经验》</a></p></li></ul><p><strong>命令行监控工具</strong></p><ul><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/44-an-quan-yu-yun-wei/445-fu-wu-qi-zhuang-tai-jian-ce/4451-ming-ling-xing-gong-ju.html" target="_blank" rel="noopener">《常用命令行监控工具》</a></p><ul><li>top、sar、tsar、nload</li></ul></li><li><p><a href="http://blog.jobbole.com/96846/" target="_blank" rel="noopener">《20个命令行工具监控 Linux 系统性能》</a></p></li><li><p><a href="https://my.oschina.net/feichexia/blog/196575" target="_blank" rel="noopener">《JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解》</a></p></li></ul><h2 id="APM"><a href="#APM" class="headerlink" title="APM"></a>APM</h2><p>APM — Application Performance Management</p><ul><li><p><a href="http://bigbully.github.io/Dapper-translation/" target="_blank" rel="noopener">《Dapper，大规模分布式系统的跟踪系统》</a></p></li><li><p><a href="http://opentracing.io" target="_blank" rel="noopener">CNCF OpenTracing</a>，<a href="https://github.com/opentracing-contrib/opentracing-specification-zh" target="_blank" rel="noopener">中文版</a></p></li><li><p>主要开源软件，按字母排序</p><ul><li><a href="https://github.com/apache/incubator-skywalking" target="_blank" rel="noopener">Apache SkyWalking</a></li><li><a href="https://github.com/dianping/cat" target="_blank" rel="noopener">CAT</a></li><li><a href="https://github.com/jaegertracing/jaeger" target="_blank" rel="noopener">CNCF jaeger</a></li><li><a href="https://github.com/naver/pinpoint" target="_blank" rel="noopener">Pinpoint</a></li><li><a href="https://github.com/openzipkin/zipkin" target="_blank" rel="noopener">Zipkin</a></li></ul></li><li><p><a href="http://www.infoq.com/cn/articles/apm-Pinpoint-practice" target="_blank" rel="noopener">《开源APM技术选型与实战》</a></p><ul><li>主要基于 Google的Dapper（大规模分布式系统的跟踪系统） 思想。</li></ul></li></ul><h2 id="统计分析"><a href="#统计分析" class="headerlink" title="统计分析"></a>统计分析</h2><ul><li><p><a href="https://zhuanlan.zhihu.com/p/25195217" target="_blank" rel="noopener">《流量统计的基础：埋点》</a></p><ul><li>常用指标：访问与访客、停留时长、跳出率、退出率、转化率、参与度</li></ul></li><li><p><a href="http://www.25xt.com/company/17066.html" target="_blank" rel="noopener">《APP埋点常用的统计工具、埋点目标和埋点内容》</a></p><ul><li>第三方统计：友盟、百度移动、魔方、App Annie、talking data、神策数据等。</li></ul></li><li><p><a href="https://tech.meituan.com/mt-mobile-analytics-practice.html" target="_blank" rel="noopener">《美团点评前端无痕埋点实践》</a></p><ul><li>所谓无痕、即通过可视化工具配置采集节点，在前端自动解析配置并上报埋点数据，而非硬编码。</li></ul></li></ul><h2 id="持续集成-CI-CD"><a href="#持续集成-CI-CD" class="headerlink" title="持续集成(CI/CD)"></a>持续集成(CI/CD)</h2><ul><li><a href="http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html" target="_blank" rel="noopener">《持续集成是什么？》</a></li><li><a href="https://www.testwo.com/article/1170" target="_blank" rel="noopener">《8个流行的持续集成工具》</a></li></ul><h3 id="Jenkins"><a href="#Jenkins" class="headerlink" title="Jenkins"></a>Jenkins</h3><ul><li><a href="https://www.liaoxuefeng.com/article/001463233913442cdb2d1bd1b1b42e3b0b29eb1ba736c5e000" target="_blank" rel="noopener">《使用Jenkins进行持续集成》</a></li></ul><h3 id="环境分离"><a href="#环境分离" class="headerlink" title="环境分离"></a>环境分离</h3><p>开发、测试、生成环境分离。</p><ul><li><a href="https://my.oschina.net/sancuo/blog/214904" target="_blank" rel="noopener">《开发环境、生产环境、测试环境的基本理解和区》</a></li></ul><h2 id="自动化运维"><a href="#自动化运维" class="headerlink" title="自动化运维"></a>自动化运维</h2><h3 id="Ansible"><a href="#Ansible" class="headerlink" title="Ansible"></a>Ansible</h3><ul><li><a href="http://www.ansible.com.cn/" target="_blank" rel="noopener">《Ansible中文权威指南》</a></li><li><a href="https://www.cnblogs.com/heiye123/articles/7855890.html" target="_blank" rel="noopener">《Ansible基础配置和企业级项目实用案例》</a></li></ul><h3 id="puppet"><a href="#puppet" class="headerlink" title="puppet"></a>puppet</h3><ul><li><a href="https://www.cnblogs.com/keerya/p/8040071.html" target="_blank" rel="noopener">《自动化运维工具——puppet详解》</a></li></ul><h3 id="chef"><a href="#chef" class="headerlink" title="chef"></a>chef</h3><ul><li><a href="https://www.ibm.com/developerworks/cn/cloud/library/1407_caomd_chef/" target="_blank" rel="noopener">《Chef 的安装与使用》</a></li></ul><h2 id="测试"><a href="#测试" class="headerlink" title="测试"></a>测试</h2><h3 id="TDD-理论"><a href="#TDD-理论" class="headerlink" title="TDD 理论"></a>TDD 理论</h3><ul><li><a href="https://www.jianshu.com/p/62f16cd4fef3" target="_blank" rel="noopener">《深度解读 - TDD（测试驱动开发）》</a><ul><li>基于测试用例编码功能代码，XP（Extreme Programming）的核心实践.</li><li>好处：一次关注一个点，降低思维负担；迎接需求变化或改善代码的设计；提前澄清需求；快速反馈；</li></ul></li></ul><h3 id="单元测试"><a href="#单元测试" class="headerlink" title="单元测试"></a>单元测试</h3><ul><li><a href="https://www.cnblogs.com/happyzm/p/6482886.html" target="_blank" rel="noopener">《Java单元测试之JUnit篇》</a></li><li><a href="https://blog.csdn.net/hotdust/article/details/53406086" target="_blank" rel="noopener">《JUnit 4 与 TestNG 对比》</a><ul><li>TestNG 覆盖 JUnit 功能，适用于更复杂的场景。</li></ul></li><li><a href="https://blog.csdn.net/wqetfg/article/details/50900512" target="_blank" rel="noopener">《单元测试主要的测试功能点》</a><ul><li>模块接口测试、局部数据结构测试、路径测试 、错误处理测试、边界条件测试 。</li></ul></li></ul><h3 id="压力测试"><a href="#压力测试" class="headerlink" title="压力测试"></a>压力测试</h3><ul><li><a href="https://blog.csdn.net/blueheart20/article/details/52170790" target="_blank" rel="noopener">《Apache ab 测试使用指南》</a></li><li><a href="https://www.cnblogs.com/binyue/p/6141088.html" target="_blank" rel="noopener">《大型网站压力测试及优化方案》</a></li><li><a href="http://news.chinabyte.com/466/14126966.shtml" target="_blank" rel="noopener">《10大主流压力/负载/性能测试工具推荐》</a></li><li><a href="http://quentinxxz.iteye.com/blog/2249799" target="_blank" rel="noopener">《真实流量压测工具 tcpcopy应用浅析》</a></li><li><a href="https://www.cnblogs.com/jwentest/p/7136727.html" target="_blank" rel="noopener">《nGrinder 简易使用教程》</a></li></ul><h3 id="全链路压测"><a href="#全链路压测" class="headerlink" title="全链路压测"></a>全链路压测</h3><ul><li><a href="http://www.infoq.com/cn/articles/jd-618-upgrade-full-link-voltage-test-program-forcebot" target="_blank" rel="noopener">《京东618：升级全链路压测方案，打造军演机器人ForceBot》</a></li><li><a href="https://zhuanlan.zhihu.com/p/30306892" target="_blank" rel="noopener">《饿了么全链路压测的探索与实践》</a></li><li><a href="https://zhuanlan.zhihu.com/p/28355759" target="_blank" rel="noopener">《四大语言，八大框架｜滴滴全链路压测解决之道》</a></li><li><a href="https://www.jianshu.com/p/27060fd61f72" target="_blank" rel="noopener">《全链路压测经验》</a></li></ul><h3 id="A-B-、灰度、蓝绿测试"><a href="#A-B-、灰度、蓝绿测试" class="headerlink" title="A/B 、灰度、蓝绿测试"></a>A/B 、灰度、蓝绿测试</h3><ul><li><a href="https://testerhome.com/topics/11165" target="_blank" rel="noopener">《技术干货 | AB 测试和灰度发布探索及实践》</a></li><li><p><a href="http://blog.51cto.com/purplegrape/1403123" target="_blank" rel="noopener">《nginx 根据IP 进行灰度发布》</a></p></li><li><p><a href="https://www.v2ex.com/t/344341" target="_blank" rel="noopener">《蓝绿部署、A/B 测试以及灰度发布》</a></p></li></ul><h2 id="虚拟化"><a href="#虚拟化" class="headerlink" title="虚拟化"></a>虚拟化</h2><ul><li><a href="https://blog.csdn.net/enweitech/article/details/52910082" target="_blank" rel="noopener">《VPS的三种虚拟技术OpenVZ、Xen、KVM优缺点比较》</a></li></ul><h3 id="KVM"><a href="#KVM" class="headerlink" title="KVM"></a>KVM</h3><ul><li><a href="http://blog.chinaunix.net/uid-20201831-id-5775661.html" target="_blank" rel="noopener">《KVM详解，太详细太深入了，经典》</a></li><li><a href="https://www.coderxing.com/kvm-install.html" target="_blank" rel="noopener">《【图文】KVM 虚拟机安装详解》</a></li></ul><h3 id="Xen"><a href="#Xen" class="headerlink" title="Xen"></a>Xen</h3><ul><li><a href="https://www.cnblogs.com/sddai/p/5931201.html" target="_blank" rel="noopener">《Xen虚拟化基本原理详解》</a></li></ul><h3 id="OpenVZ"><a href="#OpenVZ" class="headerlink" title="OpenVZ"></a>OpenVZ</h3><ul><li><a href="https://blog.csdn.net/longerzone/article/details/44829255" target="_blank" rel="noopener">《开源Linux容器 OpenVZ 快速上手指南》</a></li></ul><h2 id="容器技术"><a href="#容器技术" class="headerlink" title="容器技术"></a>容器技术</h2><h3 id="Docker"><a href="#Docker" class="headerlink" title="Docker"></a>Docker</h3><ul><li><a href="https://www.cnblogs.com/SzeCheng/p/6822905.html" target="_blank" rel="noopener">《几张图帮你理解 docker 基本原理及快速入门》</a></li><li><a href="https://draveness.me/docker" target="_blank" rel="noopener">《Docker 核心技术与实现原理》</a></li><li><a href="http://www.runoob.com/docker/docker-tutorial.html" target="_blank" rel="noopener">《Docker 教程》</a></li></ul><h2 id="云技术"><a href="#云技术" class="headerlink" title="云技术"></a>云技术</h2><h3 id="OpenStack"><a href="#OpenStack" class="headerlink" title="OpenStack"></a>OpenStack</h3><ul><li><a href="https://www.cnblogs.com/klb561/p/8660264.html" target="_blank" rel="noopener">《OpenStack构架知识梳理》</a></li></ul><h2 id="DevOps"><a href="#DevOps" class="headerlink" title="DevOps"></a>DevOps</h2><ul><li><a href="https://www.cnblogs.com/jetzhang/p/6068773.html" target="_blank" rel="noopener">《一分钟告诉你究竟DevOps是什么鬼？》</a></li><li><a href="http://www.infoq.com/cn/articles/detail-analysis-of-devops" target="_blank" rel="noopener">《DevOps详解》</a></li></ul><h2 id="文档管理"><a href="#文档管理" class="headerlink" title="文档管理"></a>文档管理</h2><ul><li><a href="http://www.confluence.cn/" target="_blank" rel="noopener">Confluence-收费文档管理系统</a></li><li>GitLab?</li><li>Wiki</li></ul><hr><h1 id="中间件"><a href="#中间件" class="headerlink" title="中间件"></a>中间件</h1><h2 id="Web-Server"><a href="#Web-Server" class="headerlink" title="Web Server"></a>Web Server</h2><h3 id="Nginx"><a href="#Nginx" class="headerlink" title="Nginx"></a>Nginx</h3><ul><li><p><a href="https://blog.csdn.net/qq_25797077/article/details/52200722" target="_blank" rel="noopener">《Ngnix的基本学习-多进程和Apache的比较》</a></p><ul><li>Nginx 通过异步非阻塞的事件处理机制实现高并发。Apache 每个请求独占一个线程，非常消耗系统资源。</li><li>事件驱动适合于IO密集型服务(Nginx)，多进程或线程适合于CPU密集型服务(Apache)，所以Nginx适合做反向代理，而非web服务器使用。</li></ul></li><li><p><a href="https://www.cnblogs.com/cunkouzh/p/5410154.html" target="_blank" rel="noopener">《nginx与Apache的对比以及优缺点》</a></p><ul><li>nginx只适合静态和反向代理，不适合处理动态请求。</li></ul></li></ul><h3 id="OpenResty"><a href="#OpenResty" class="headerlink" title="OpenResty"></a>OpenResty</h3><ul><li><a href="http://openresty.org/cn/" target="_blank" rel="noopener">官方网站</a></li><li><a href="http://www.linkedkeeper.com/detail/blog.action?bid=1034" target="_blank" rel="noopener">《浅谈 OpenResty》</a><ul><li>通过 Lua 模块可以在Nginx上进行开发。</li></ul></li></ul><h3 id="Apache-Httpd"><a href="#Apache-Httpd" class="headerlink" title="Apache Httpd"></a>Apache Httpd</h3><ul><li><a href="http://httpd.apache.org/" target="_blank" rel="noopener">官方网站</a></li></ul><h3 id="Tomcat"><a href="#Tomcat" class="headerlink" title="Tomcat"></a>Tomcat</h3><h4 id="架构原理"><a href="#架构原理" class="headerlink" title="架构原理"></a>架构原理</h4><ul><li><a href="https://www.cnblogs.com/hggen/p/6264475.html" target="_blank" rel="noopener">《TOMCAT原理详解及请求过程》</a></li><li><a href="https://www.cnblogs.com/crazylqy/p/4706223.html" target="_blank" rel="noopener">《Tomcat服务器原理详解》</a></li><li><p><a href="https://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/" target="_blank" rel="noopener">《Tomcat 系统架构与设计模式,第 1 部分: 工作原理》</a></p></li><li><p><a href="https://blog.csdn.net/xlgen157387/article/details/79006434" target="_blank" rel="noopener">《四张图带你了解Tomcat系统架构》</a></p></li><li><p><a href="https://www.futurehosting.com/blog/jboss-vs-tomcat-choosing-a-java-application-server/" target="_blank" rel="noopener">《JBoss vs. Tomcat: Choosing A Java Application Server》</a></p><ul><li>Tomcat 是轻量级的 Serverlet 容器，没有实现全部 JEE 特性（比如持久化和事务处理），但可以通过其他组件代替，比如Srping。</li><li>Jboss 实现全部了JEE特性，软件开源免费、文档收费。</li></ul></li></ul><h4 id="调优方案"><a href="#调优方案" class="headerlink" title="调优方案"></a>调优方案</h4><ul><li><p><a href="https://www.cnblogs.com/sunfenqing/p/7339058.html" target="_blank" rel="noopener">《Tomcat 调优方案》</a></p><ul><li>启动NIO模式（或者APR）；调整线程池；禁用AJP连接器（Nginx+tomcat的架构，不需要AJP）；</li></ul></li><li><p><a href="http://blog.chinaunix.net/uid-20662363-id-3012760.html" target="_blank" rel="noopener">《tomcat http协议与ajp协议》</a></p></li><li><a href="http://dmouse.iteye.com/blog/1354527" target="_blank" rel="noopener">《AJP与HTTP比较和分析》</a><ul><li>AJP 协议（8009端口）用于降低和前端Server（如Apache，而且需要支持AJP协议）的连接数(前端)，通过长连接提高性能。</li><li>并发高时，AJP协议优于HTTP协议。</li></ul></li></ul><h3 id="Jetty"><a href="#Jetty" class="headerlink" title="Jetty"></a>Jetty</h3><ul><li><a href="https://www.ibm.com/developerworks/cn/java/j-lo-jetty/" target="_blank" rel="noopener">《Jetty 的工作原理以及与 Tomcat 的比较》</a></li><li><a href="https://blog.csdn.net/doutao6677/article/details/51957288" target="_blank" rel="noopener">《jetty和tomcat优势比较》</a><ul><li>架构比较:Jetty的架构比Tomcat的更为简单。</li><li>性能比较：Jetty和Tomcat性能方面差异不大，Jetty默认采用NIO结束在处理I/O请求上更占优势，Tomcat默认采用BIO处理I/O请求，Tomcat适合处理少数非常繁忙的链接，处理静态资源时性能较差。</li><li>其他方面：Jetty的应用更加快速，修改简单，对新的Servlet规范的支持较好;Tomcat 对JEE和Servlet 支持更加全面。</li></ul></li></ul><h2 id="缓存"><a href="#缓存" class="headerlink" title="缓存"></a>缓存</h2><ul><li><a href="https://blog.csdn.net/clementad/article/details/48229243" target="_blank" rel="noopener">《缓存失效策略（FIFO 、LRU、LFU三种算法的区别）》</a></li></ul><h3 id="本地缓存"><a href="#本地缓存" class="headerlink" title="本地缓存"></a>本地缓存</h3><ul><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/421-ying-yong-ceng-ben-di-huan-cun/4211.html" target="_blank" rel="noopener">《HashMap本地缓存》</a></p></li><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/421-ying-yong-ceng-ben-di-huan-cun/4212-ehcache.html" target="_blank" rel="noopener">《EhCache本地缓存》</a></p><ul><li>堆内、堆外、磁盘三级缓存。</li><li>可按照缓存空间容量进行设置。</li><li>按照时间、次数等过期策略。</li></ul></li><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/421-ying-yong-ceng-ben-di-huan-cun/4213-guava-cache.html" target="_blank" rel="noopener">《Guava Cache》</a></p><ul><li>简单轻量、无堆外、磁盘缓存。</li></ul></li><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/422-fu-wu-duan-ben-di-huan-cun/nginx-ben-di-huan-cun.html" target="_blank" rel="noopener">《Nginx本地缓存》</a></p></li><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/422-fu-wu-duan-ben-di-huan-cun/4222-pagespeed.html" target="_blank" rel="noopener">《Pagespeed—懒人工具，服务器端加速》</a></p></li></ul><h2 id="客户端缓存"><a href="#客户端缓存" class="headerlink" title="客户端缓存"></a>客户端缓存</h2><ul><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/423-ke-hu-duan-huan-cun.html" target="_blank" rel="noopener">《浏览器端缓存》</a></p><ul><li>主要是利用 Cache-Control 参数。</li></ul></li><li><p><a href="https://mp.weixin.qq.com/s/qHm_dJBhVbv0pJs8Crp77w" target="_blank" rel="noopener">《H5 和移动端 WebView 缓存机制解析与实战》</a></p></li></ul><h2 id="服务端缓存"><a href="#服务端缓存" class="headerlink" title="服务端缓存"></a>服务端缓存</h2><h3 id="Web缓存"><a href="#Web缓存" class="headerlink" title="Web缓存"></a>Web缓存</h3><ul><li><a href="https://github.com/jiangwenyuan/nuster" target="_blank" rel="noopener">nuster</a> - nuster cache</li><li><a href="https://github.com/varnishcache/varnish-cache" target="_blank" rel="noopener">varnish</a> - varnish cache</li><li><a href="https://github.com/squid-cache/squid" target="_blank" rel="noopener">squid</a> - squid cache</li></ul><h3 id="Memcached"><a href="#Memcached" class="headerlink" title="Memcached"></a>Memcached</h3><ul><li><a href="http://www.runoob.com/Memcached/Memcached-tutorial.html" target="_blank" rel="noopener">《Memcached 教程》</a></li><li><a href="https://blog.csdn.net/chenleixing/article/details/47035453" target="_blank" rel="noopener">《深入理解Memcached原理》</a><ul><li>采用多路复用技术提高并发性。</li><li>slab分配算法： memcached给Slab分配内存空间，默认是1MB。分配给Slab之后 把slab的切分成大小相同的chunk，Chunk是用于缓存记录的内存空间，Chunk 的大小默认按照1.25倍的速度递增。好处是不会频繁申请内存，提高IO效率，坏处是会有一定的内存浪费。</li></ul></li><li><a href="https://www.jianshu.com/p/36e5cd400580" target="_blank" rel="noopener">《Memcached软件工作原理》</a></li><li><p><a href="http://zhihuzeye.com/archives/2361" target="_blank" rel="noopener">《Memcache技术分享：介绍、使用、存储、算法、优化、命中率》</a></p></li><li><p><a href="https://blog.csdn.net/liu251890347/article/details/37690045" target="_blank" rel="noopener">《memcache 中 add 、 set 、replace 的区别》</a></p><ul><li>区别在于当key存在还是不存在时，返回值是true和false的。</li></ul></li><li><p><a href="https://pan.baidu.com/s/1qX00Lti?errno=0&amp;errmsg=Auth%20Login%20Sucess&amp;&amp;bduss=&amp;ssnerror=0&amp;traceid=" target="_blank" rel="noopener"><strong>《memcached全面剖析》</strong></a></p></li></ul><h3 id="Redis"><a href="#Redis" class="headerlink" title="Redis"></a>Redis</h3><ul><li><a href="http://www.runoob.com/redis/redis-tutorial.html" target="_blank" rel="noopener">《Redis 教程》</a></li><li><a href="https://blog.csdn.net/wcf373722432/article/details/78678504" target="_blank" rel="noopener">《redis底层原理》</a><ul><li>使用 ziplist 存储链表，ziplist是一种压缩链表，它的好处是更能节省内存空间，因为它所存储的内容都是在连续的内存区域当中的。</li><li>使用 skiplist(跳跃表)来存储有序集合对象、查找上先从高Level查起、时间复杂度和红黑树相当，实现容易，无锁、并发性好。</li></ul></li><li><p><a href="http://doc.redisfans.com/topic/persistence.html" target="_blank" rel="noopener">《Redis持久化方式》</a></p><ul><li>RDB方式：定期备份快照，常用于灾难恢复。优点：通过fork出的进程进行备份，不影响主进程、RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。缺点：会丢数据。</li><li>AOF方式：保存操作日志方式。优点：恢复时数据丢失少，缺点：文件大，回复慢。</li><li>也可以两者结合使用。</li></ul></li><li><p><a href="https://blog.csdn.net/chunlongyu/article/details/53346436" target="_blank" rel="noopener">《分布式缓存–序列3–原子操作与CAS乐观锁》</a></p></li></ul><h4 id="架构"><a href="#架构" class="headerlink" title="架构"></a>架构</h4><ul><li><a href="https://blog.csdn.net/sunhuiliang85/article/details/73656830" target="_blank" rel="noopener">《Redis单线程架构》</a></li></ul><h4 id="回收策略"><a href="#回收策略" class="headerlink" title="回收策略"></a>回收策略</h4><ul><li><a href="https://blog.csdn.net/qq_29108585/article/details/63251491" target="_blank" rel="noopener">《redis的回收策略》</a></li></ul><h3 id="Tair"><a href="#Tair" class="headerlink" title="Tair"></a>Tair</h3><ul><li><a href="https://github.com/alibaba/tair" target="_blank" rel="noopener">官方网站</a></li><li><a href="http://blog.csdn.net/farphone/article/details/53522383" target="_blank" rel="noopener">《Tair和Redis的对比》</a></li><li>特点：可以配置备份节点数目，通过异步同步到备份节点</li><li>一致性Hash算法。</li><li>架构：和Hadoop 的设计思想类似，有Configserver，DataServer，Configserver 通过心跳来检测，Configserver也有主备关系。</li></ul><p>几种存储引擎:</p><ul><li>MDB，完全内存性，可以用来存储Session等数据。</li><li>Rdb（类似于Redis），轻量化，去除了aof之类的操作，支持Restfull操作</li><li>LDB（LevelDB存储引擎），持久化存储，LDB 作为rdb的持久化，google实现，比较高效，理论基础是LSM(Log-Structured-Merge Tree)算法，现在内存中修改数据，达到一定量时（和内存汇总的旧数据一同写入磁盘）再写入磁盘，存储更加高效，县比喻Hash算法。</li><li>Tair采用共享内存来存储数据，如果服务挂掉（非服务器），重启服务之后，数据亦然还在。</li></ul><h2 id="消息队列"><a href="#消息队列" class="headerlink" title="消息队列"></a>消息队列</h2><ul><li><p><a href="https://www.cnblogs.com/charlesblc/p/6045238.html" target="_blank" rel="noopener">《消息队列-推/拉模式学习 &amp; ActiveMQ及JMS学习》</a></p><ul><li>RabbitMQ 消费者默认是推模式（也支持拉模式）。</li><li>Kafka 默认是拉模式。</li><li>Push方式：优点是可以尽可能快地将消息发送给消费者，缺点是如果消费者处理能力跟不上，消费者的缓冲区可能会溢出。</li><li>Pull方式：优点是消费端可以按处理能力进行拉去，缺点是会增加消息延迟。</li></ul></li><li><p><a href="https://blog.csdn.net/yunfeng482/article/details/72856762" target="_blank" rel="noopener">《Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和区别》</a></p></li></ul><h3 id="消息总线"><a href="#消息总线" class="headerlink" title="消息总线"></a>消息总线</h3><p>消息总线相当于在消息队列之上做了一层封装，统一入口，统一管控、简化接入成本。</p><ul><li><a href="https://blog.csdn.net/yanghua_kobe/article/details/43877281" target="_blank" rel="noopener">《消息总线VS消息队列》</a></li></ul><h3 id="消息的顺序"><a href="#消息的顺序" class="headerlink" title="消息的顺序"></a>消息的顺序</h3><ul><li><a href="https://www.cnblogs.com/cjsblog/p/8267892.html" target="_blank" rel="noopener">《如何保证消费者接收消息的顺序》</a></li></ul><h3 id="RabbitMQ"><a href="#RabbitMQ" class="headerlink" title="RabbitMQ"></a>RabbitMQ</h3><p>支持事务，推拉模式都是支持、适合需要可靠性消息传输的场景。</p><ul><li><a href="https://blog.csdn.net/whoamiyang/article/details/54954780" target="_blank" rel="noopener">《RabbitMQ的应用场景以及基本原理介绍》</a></li><li><a href="https://www.jianshu.com/p/79ca08116d57" target="_blank" rel="noopener">《消息队列之 RabbitMQ》</a></li><li><a href="https://blog.csdn.net/u013256816/article/details/55515234" target="_blank" rel="noopener">《RabbitMQ之消息确认机制（事务+Confirm）》</a></li></ul><h3 id="RocketMQ"><a href="#RocketMQ" class="headerlink" title="RocketMQ"></a>RocketMQ</h3><p>Java实现，推拉模式都是支持，吞吐量逊于Kafka。可以保证消息顺序。</p><ul><li><a href="https://www.jianshu.com/p/824066d70da8" target="_blank" rel="noopener">《RocketMQ 实战之快速入门》</a></li></ul><h3 id="ActiveMQ"><a href="#ActiveMQ" class="headerlink" title="ActiveMQ"></a>ActiveMQ</h3><p>纯Java实现，兼容JMS，可以内嵌于Java应用中。</p><ul><li><a href="https://www.cnblogs.com/wintersun/p/3962302.html" target="_blank" rel="noopener">《ActiveMQ消息队列介绍》</a></li></ul><h3 id="Kafka"><a href="#Kafka" class="headerlink" title="Kafka"></a>Kafka</h3><p>高吞吐量、采用拉模式。适合高IO场景，比如日志同步。</p><ul><li><a href="http://kafka.apache.org/" target="_blank" rel="noopener">官方网站</a></li><li><a href="https://blog.csdn.net/allthesametome/article/details/47362451" target="_blank" rel="noopener">《各消息队列对比，Kafka深度解析，众人推荐，精彩好文！》</a></li><li><a href="http://lxw1234.com/archives/2015/10/538.htm" target="_blank" rel="noopener">《Kafka分区机制介绍与示例》</a></li></ul><h3 id="Redis-消息推送"><a href="#Redis-消息推送" class="headerlink" title="Redis 消息推送"></a>Redis 消息推送</h3><p>生产者、消费者模式完全是客户端行为，list 和 拉模式实现，阻塞等待采用 blpop 指令。</p><ul><li><a href="https://blog.csdn.net/qq_34212276/article/details/78455004" target="_blank" rel="noopener">《Redis学习笔记之十：Redis用作消息队列》</a></li></ul><h3 id="ZeroMQ"><a href="#ZeroMQ" class="headerlink" title="ZeroMQ"></a>ZeroMQ</h3><p>TODO</p><h2 id="定时调度"><a href="#定时调度" class="headerlink" title="定时调度"></a>定时调度</h2><h3 id="单机定时调度"><a href="#单机定时调度" class="headerlink" title="单机定时调度"></a>单机定时调度</h3><ul><li><p><a href="https://www.cnblogs.com/shuaiqing/p/7742382.html" target="_blank" rel="noopener">《linux定时任务cron配置》</a></p></li><li><p><a href="https://my.oschina.net/daquan/blog/483305" target="_blank" rel="noopener">《Linux cron运行原理》</a></p><ul><li>fork 进程 + sleep 轮询</li></ul></li><li><p><a href="https://www.cnblogs.com/drift-ice/p/3817269.html" target="_blank" rel="noopener">《Quartz使用总结》</a></p></li><li><a href="https://blog.csdn.net/wenniuwuren/article/details/42082981/" target="_blank" rel="noopener">《Quartz源码解析 —- 触发器按时启动原理》</a></li><li><a href="https://www.jianshu.com/p/bab8e4e32952" target="_blank" rel="noopener">《quartz原理揭秘和源码解读》</a><ul><li>定时调度在 QuartzSchedulerThread 代码中，while()无限循环，每次循环取出时间将到的trigger，触发对应的job，直到调度器线程被关闭。</li></ul></li></ul><h3 id="分布式定时调度"><a href="#分布式定时调度" class="headerlink" title="分布式定时调度"></a>分布式定时调度</h3><ul><li><p><a href="https://blog.csdn.net/qq_16216221/article/details/70314337" target="_blank" rel="noopener">《这些优秀的国产分布式任务调度系统，你用过几个？》</a></p><ul><li>opencron、LTS、XXL-JOB、Elastic-Job、Uncode-Schedule、Antares</li></ul></li><li><p><a href="https://www.cnblogs.com/zhenyuyaodidiao/p/4755649.html" target="_blank" rel="noopener">《Quartz任务调度的基本实现原理》</a></p><ul><li>Quartz集群中，独立的Quartz节点并不与另一其的节点或是管理节点通信，而是通过相同的数据库表来感知到另一Quartz应用的</li></ul></li></ul><h2 id="RPC"><a href="#RPC" class="headerlink" title="RPC"></a>RPC</h2><ul><li><p><a href="https://blog.csdn.net/top_code/article/details/54615853" target="_blank" rel="noopener">《从零开始实现RPC框架 - RPC原理及实现》</a></p><ul><li>核心角色：Server: 暴露服务的服务提供方、Client: 调用远程服务的服务消费方、Registry: 服务注册与发现的注册中心。</li></ul></li><li><p><a href="https://blog.csdn.net/testcs_dn/article/details/78050590" target="_blank" rel="noopener">《分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较》</a></p></li></ul><h3 id="Dubbo"><a href="#Dubbo" class="headerlink" title="Dubbo"></a>Dubbo</h3><ul><li><a href="http://dubbo.apache.org/" target="_blank" rel="noopener">官方网站</a></li><li><a href="https://www.cnblogs.com/steven520213/p/7606598.html" target="_blank" rel="noopener">dubbo实现原理简单介绍</a></li></ul><p><strong>SPI</strong><br>TODO</p><h3 id="Thrift"><a href="#Thrift" class="headerlink" title="Thrift"></a>Thrift</h3><ul><li><a href="http://thrift.apache.org/" target="_blank" rel="noopener">官方网站</a></li><li><a href="https://blog.csdn.net/kesonyk/article/details/50924489" target="_blank" rel="noopener">《Thrift RPC详解》</a><ul><li>支持多语言，通过中间语言定义接口。</li></ul></li></ul><h3 id="gRPC"><a href="#gRPC" class="headerlink" title="gRPC"></a>gRPC</h3><p>服务端可以认证加密，在外网环境下，可以保证数据安全。</p><ul><li><a href="https://grpc.io/" target="_blank" rel="noopener">官方网站</a></li><li><a href="https://www.cnblogs.com/LBSer/p/4853234.html" target="_blank" rel="noopener">《你应该知道的RPC原理》</a></li></ul><h2 id="数据库中间件"><a href="#数据库中间件" class="headerlink" title="数据库中间件"></a>数据库中间件</h2><h3 id="Sharding-Jdbc"><a href="#Sharding-Jdbc" class="headerlink" title="Sharding Jdbc"></a>Sharding Jdbc</h3><ul><li><a href="http://shardingjdbc.io/" target="_blank" rel="noopener">官网</a></li></ul><h2 id="日志系统"><a href="#日志系统" class="headerlink" title="日志系统"></a>日志系统</h2><h3 id="日志搜集"><a href="#日志搜集" class="headerlink" title="日志搜集"></a>日志搜集</h3><ul><li><a href="http://cjting.me/misc/build-log-system-with-elkb/" target="_blank" rel="noopener">《从零开始搭建一个ELKB日志收集系统》</a></li><li><a href="https://blog.csdn.net/lzw_2006/article/details/51280058" target="_blank" rel="noopener">《用ELK搭建简单的日志收集分析系统》</a></li><li><a href="https://www.cnblogs.com/beginmind/p/6058194.html" target="_blank" rel="noopener">《日志收集系统-探究》</a></li></ul><h2 id="配置中心"><a href="#配置中心" class="headerlink" title="配置中心"></a>配置中心</h2><ul><li><p><a href="https://github.com/ctripcorp/apollo" target="_blank" rel="noopener">Apollo - 携程开源的配置中心应用</a></p><ul><li>Spring Boot 和 Spring Cloud</li><li>支持推、拉模式更新配置</li><li>支持多种语言</li></ul></li><li><p><a href="https://blog.csdn.net/u011320740/article/details/78742625" target="_blank" rel="noopener">《基于zookeeper实现统一配置管理》</a></p></li><li><p><a href="https://www.cnblogs.com/shamo89/p/8016908.html" target="_blank" rel="noopener">《 Spring Cloud Config 分布式配置中心使用教程》</a></p></li></ul><p>servlet 3.0 异步特性可用于配置中心的客户端</p><ul><li><a href="https://www.cnblogs.com/dogdogwang/p/7151866.html" target="_blank" rel="noopener">《servlet3.0 新特性——异步处理》</a></li></ul><h2 id="API-网关"><a href="#API-网关" class="headerlink" title="API 网关"></a>API 网关</h2><p>主要职责：请求转发、安全认证、协议转换、容灾。</p><ul><li><a href="http://yunlzheng.github.io/2017/03/14/the-things-about-api-gateway/" target="_blank" rel="noopener">《API网关那些儿》</a></li><li><p><a href="http://www.infoq.com/cn/news/2016/07/API-background-architecture-floo" target="_blank" rel="noopener">《谈API网关的背景、架构以及落地方案》</a></p></li><li><p><a href="https://blog.csdn.net/zhanglh046/article/details/78651993" target="_blank" rel="noopener">《使用Zuul构建API Gateway》</a></p></li><li><a href="https://mp.weixin.qq.com/s/LIq2CiXJQmmjBC0yvYLY5A" target="_blank" rel="noopener">《HTTP API网关选择之一Kong介绍》</a></li></ul><hr><h1 id="网络"><a href="#网络" class="headerlink" title="网络"></a>网络</h1><h2 id="协议"><a href="#协议" class="headerlink" title="协议"></a>协议</h2><h3 id="OSI-七层协议"><a href="#OSI-七层协议" class="headerlink" title="OSI 七层协议"></a>OSI 七层协议</h3><ul><li><a href="https://www.cnblogs.com/Robin-YB/p/6668762.html" target="_blank" rel="noopener">《OSI七层协议模型、TCP/IP四层模型学习笔记》</a></li></ul><h3 id="TCP-IP"><a href="#TCP-IP" class="headerlink" title="TCP/IP"></a>TCP/IP</h3><ul><li><a href="https://www.cnblogs.com/onepixel/p/7092302.html" target="_blank" rel="noopener">《深入浅出 TCP/IP 协议》</a></li><li><a href="https://blog.csdn.net/whuslei/article/details/6667471/" target="_blank" rel="noopener">《TCP协议中的三次握手和四次挥手》</a></li></ul><h3 id="HTTP"><a href="#HTTP" class="headerlink" title="HTTP"></a>HTTP</h3><ul><li><a href="https://www.cnblogs.com/wangning528/p/6388464.html" target="_blank" rel="noopener">《http协议详解(超详细)》</a></li></ul><h3 id="HTTP2-0"><a href="#HTTP2-0" class="headerlink" title="HTTP2.0"></a>HTTP2.0</h3><ul><li><a href="https://blog.csdn.net/zhuyiquan/article/details/69257126" target="_blank" rel="noopener">《HTTP 2.0 原理详细分析》</a></li><li><a href="https://blog.csdn.net/u012657197/article/details/77877840" target="_blank" rel="noopener">《HTTP2.0的基本单位为二进制帧》</a><ul><li>利用二进制帧负责传输。</li><li>多路复用。</li></ul></li></ul><h3 id="HTTPS"><a href="#HTTPS" class="headerlink" title="HTTPS"></a>HTTPS</h3><ul><li><p><a href="https://www.cnblogs.com/zhangshitong/p/6478721.html" target="_blank" rel="noopener">《https原理通俗了解》</a></p><ul><li>使用非对称加密协商加密算法</li><li>使用对称加密方式传输数据</li><li>使用第三方机构签发的证书，来加密公钥，用于公钥的安全传输、防止被中间人串改。</li></ul></li><li><p><a href="https://blog.csdn.net/enweitech/article/details/53213862" target="_blank" rel="noopener">《八大免费SSL证书-给你的网站免费添加Https安全加密》</a></p></li></ul><h2 id="网络模型"><a href="#网络模型" class="headerlink" title="网络模型"></a>网络模型</h2><ul><li><p><a href="http://blog.51cto.com/litaotao/1289790" target="_blank" rel="noopener">《web优化必须了解的原理之I/o的五种模型和web的三种工作模式》</a></p><ul><li>五种I/O模型：阻塞I/O，非阻塞I/O，I/O复用、事件(信号)驱动I/O、异步I/O，前四种I/O属于同步操作，I/O的第一阶段不同、第二阶段相同，最后的一种则属于异步操作。</li><li>三种 Web Server 工作方式：Prefork(多进程)、Worker方式(线程方式)、Event方式。</li></ul></li><li><p><a href="http://www.cnblogs.com/Anker/p/3265058.html" target="_blank" rel="noopener">《select、poll、epoll之间的区别总结》</a></p><ul><li>select，poll，epoll本质上都是同步I/O，因为他们都需要在读写事件就绪后自己负责进行读写，也就是说这个读写过程是阻塞的。</li><li>select 有打开文件描述符数量限制，默认1024（2048 for x64），100万并发，就要用1000个进程、切换开销大；poll采用链表结构，没有数量限制。</li><li>select，poll “醒着”的时候要遍历整个fd集合，而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了，通过回调机制节省大量CPU时间；select，poll每次调用都要把fd集合从用户态往内核态拷贝一次，而epoll只要一次拷贝。</li><li>poll会随着并发增加，性能逐渐下降，epoll采用红黑树结构，性能稳定，不会随着连接数增加而降低。</li></ul></li><li><p><a href="http://xingyunbaijunwei.blog.163.com/blog/static/76538067201241685556302/" target="_blank" rel="noopener">《select，poll，epoll比较 》</a></p><ul><li>在连接数少并且连接都十分活跃的情况下，select和poll的性能可能比epoll好，毕竟epoll的通知机制需要很多函数回调。</li></ul></li><li><p><a href="https://www.cnblogs.com/geason/p/5774096.html" target="_blank" rel="noopener">《深入理解Java NIO》</a></p><ul><li>NIO 是一种同步非阻塞的 IO 模型。同步是指线程不断轮询 IO 事件是否就绪，非阻塞是指线程在等待 IO 的时候，可以同时做其他任务</li></ul></li><li><p><a href="https://blog.csdn.net/skiof007/article/details/52873421" target="_blank" rel="noopener">《BIO与NIO、AIO的区别》</a></p></li><li><p><a href="https://blog.csdn.net/u013074465/article/details/46276967" target="_blank" rel="noopener">《两种高效的服务器设计模型：Reactor和Proactor模型》</a></p></li></ul><h3 id="Epoll"><a href="#Epoll" class="headerlink" title="Epoll"></a>Epoll</h3><ul><li><a href="https://www.cnblogs.com/fnlingnzb-learner/p/5835573.html" target="_blank" rel="noopener">《epoll使用详解（精髓）》</a></li></ul><h3 id="Java-NIO"><a href="#Java-NIO" class="headerlink" title="Java NIO"></a>Java NIO</h3><ul><li><a href="https://www.cnblogs.com/geason/p/5774096.html" target="_blank" rel="noopener">《深入理解Java NIO》</a></li><li><a href="https://blog.csdn.net/xidianliuy/article/details/51612676" target="_blank" rel="noopener">《Java NIO编写Socket服务器的一个例子》</a></li></ul><h3 id="kqueue"><a href="#kqueue" class="headerlink" title="kqueue"></a>kqueue</h3><ul><li><a href="http://www.cnblogs.com/luminocean/p/5631336.html" target="_blank" rel="noopener">《kqueue用法简介》</a></li></ul><h2 id="连接和短连接"><a href="#连接和短连接" class="headerlink" title="连接和短连接"></a>连接和短连接</h2><ul><li><a href="https://www.cnblogs.com/pangguoping/p/5571422.html" target="_blank" rel="noopener">《TCP/IP系列——长连接与短连接的区别》</a></li></ul><h2 id="框架"><a href="#框架" class="headerlink" title="框架"></a>框架</h2><ul><li><a href="https://blog.csdn.net/excellentyuxiao/article/details/53390408" target="_blank" rel="noopener">《Netty原理剖析》</a><ul><li>Reactor 模式介绍。</li><li>Netty 是 Reactor 模式的一种实现。</li></ul></li></ul><h2 id="零拷贝（Zero-copy）"><a href="#零拷贝（Zero-copy）" class="headerlink" title="零拷贝（Zero-copy）"></a>零拷贝（Zero-copy）</h2><ul><li><a href="https://www.cnblogs.com/xys1228/p/6088805.html" target="_blank" rel="noopener">《对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解》</a><ul><li>多个物理分离的buffer，通过逻辑上合并成为一个，从而避免了数据在内存之间的拷贝。</li></ul></li></ul><h2 id="序列化-二进制协议"><a href="#序列化-二进制协议" class="headerlink" title="序列化(二进制协议)"></a>序列化(二进制协议)</h2><h3 id="Hessian"><a href="#Hessian" class="headerlink" title="Hessian"></a>Hessian</h3><ul><li><a href="https://www.cnblogs.com/happyday56/p/4268249.html" target="_blank" rel="noopener">《Hessian原理分析》</a><br>Binary-RPC;不仅仅是序列化</li></ul><h3 id="Protobuf"><a href="#Protobuf" class="headerlink" title="Protobuf"></a>Protobuf</h3><ul><li><a href="https://blog.csdn.net/antgan/article/details/52103966" target="_blank" rel="noopener">《Protobuf协议的Java应用例子》</a><br>Goolge出品、占用空间和效率完胜其他序列化类库，如Hessian；需要编写 .proto 文件。</li><li><p><a href="https://worktile.com/tech/share/prototol-buffers" target="_blank" rel="noopener">《Protocol Buffers序列化协议及应用》</a></p><pre><code>* 关于协议的解释；缺点：可读性差;</code></pre></li><li><p><a href="https://blog.csdn.net/eric520zenobia/article/details/53766571" target="_blank" rel="noopener">《简单的使用 protobuf 和 protostuff》</a></p><ul><li>protostuff 的好处是不用写 .proto 文件，Java 对象直接就可以序列化。</li></ul></li></ul><hr><h1 id="数据库"><a href="#数据库" class="headerlink" title="数据库"></a>数据库</h1><h2 id="基础理论"><a href="#基础理论" class="headerlink" title="基础理论"></a>基础理论</h2><h3 id="数据库设计的三大范式"><a href="#数据库设计的三大范式" class="headerlink" title="数据库设计的三大范式"></a>数据库设计的三大范式</h3><ul><li><a href="https://www.cnblogs.com/waj6511988/p/7027127.html" target="_blank" rel="noopener">《数据库的三大范式以及五大约束》</a><ul><li>第一范式：数据表中的每一列（每个字段）必须是不可拆分的最小单元，也就是确保每一列的原子性；</li><li>第二范式（2NF）：满足1NF后，要求表中的所有列，都必须依赖于主键，而不能有任何一列与主键没有关系，也就是说一个表只描述一件事情；</li><li>第三范式：必须先满足第二范式（2NF），要求：表中的每一列只与主键直接相关而不是间接相关，（表中的每一列只能依赖于主键）；</li></ul></li></ul><h2 id="MySQL"><a href="#MySQL" class="headerlink" title="MySQL"></a>MySQL</h2><h3 id="原理"><a href="#原理" class="headerlink" title="原理"></a>原理</h3><ul><li><p><a href="http://www.admin10000.com/document/5372.html" target="_blank" rel="noopener">《MySQL的InnoDB索引原理详解》</a></p></li><li><p><a href="https://blog.csdn.net/xifeijian/article/details/20316775" target="_blank" rel="noopener">《MySQL存储引擎－－MyISAM与InnoDB区别》</a></p><ul><li>两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁</li></ul></li><li><p><a href="https://www.2cto.com/database/201211/172380.html" target="_blank" rel="noopener">《myisam和innodb索引实现的不同》</a></p></li></ul><h3 id="InnoDB"><a href="#InnoDB" class="headerlink" title="InnoDB"></a>InnoDB</h3><ul><li><a href="https://my.oschina.net/kailuncen/blog/1504217" target="_blank" rel="noopener">《一篇文章带你读懂Mysql和InnoDB》</a></li></ul><h3 id="优化"><a href="#优化" class="headerlink" title="优化"></a>优化</h3><ul><li><p><a href="http://vdisk.weibo.com/s/muWOT" target="_blank" rel="noopener">《MySQL36条军规》</a></p></li><li><p><a href="https://www.cnblogs.com/zhouyusheng/p/8038224.html" target="_blank" rel="noopener">《MYSQL性能优化的最佳20+条经验》</a></p></li><li><a href="https://blog.csdn.net/when_less_is_more/article/details/70187459" target="_blank" rel="noopener">《SQL优化之道》</a></li><li><a href="https://www.cnblogs.com/sivkun/p/7518540.html" target="_blank" rel="noopener">《mysql数据库死锁的产生原因及解决办法》</a></li><li><a href="https://blog.csdn.net/monkey_d_feilong/article/details/52291556" target="_blank" rel="noopener">《导致索引失效的可能情况》</a></li><li><a href="https://blog.csdn.net/zy_281870667/article/details/51604540" target="_blank" rel="noopener">《 MYSQL分页limit速度太慢优化方法》</a><ul><li>原则上就是缩小扫描范围。</li></ul></li></ul><h3 id="索引"><a href="#索引" class="headerlink" title="索引"></a>索引</h3><h4 id="聚集索引-非聚集索引"><a href="#聚集索引-非聚集索引" class="headerlink" title="聚集索引, 非聚集索引"></a>聚集索引, 非聚集索引</h4><ul><li><a href="https://blog.csdn.net/no_endless/article/details/77073549" target="_blank" rel="noopener">《MySQL 聚集索引/非聚集索引简述》</a></li><li><a href="https://www.cnblogs.com/zlcxbb/p/5757245.html" target="_blank" rel="noopener">《MyISAM和InnoDB的索引实现》</a></li></ul><p>MyISAM 是非聚集，InnoDB 是聚集</p><h4 id="复合索引"><a href="#复合索引" class="headerlink" title="复合索引"></a>复合索引</h4><ul><li><a href="https://www.cnblogs.com/summer0space/p/7247778.html" target="_blank" rel="noopener">《复合索引的优点和注意事项》</a></li></ul><h4 id="自适应哈希索引-AHI"><a href="#自适应哈希索引-AHI" class="headerlink" title="自适应哈希索引(AHI)"></a>自适应哈希索引(AHI)</h4><ul><li><a href="https://blog.csdn.net/Linux_ever/article/details/62043708" target="_blank" rel="noopener">《InnoDB存储引擎——自适应哈希索引》</a></li></ul><h3 id="explain"><a href="#explain" class="headerlink" title="explain"></a>explain</h3><ul><li><a href="https://segmentfault.com/a/1190000008131735" target="_blank" rel="noopener">《MySQL 性能优化神器 Explain 使用分析》</a></li></ul><h2 id="NoSQL"><a href="#NoSQL" class="headerlink" title="NoSQL"></a>NoSQL</h2><h3 id="MongoDB"><a href="#MongoDB" class="headerlink" title="MongoDB"></a>MongoDB</h3><ul><li><a href="http://www.runoob.com/mongodb/mongodb-tutorial.html" target="_blank" rel="noopener">MongoDB 教程</a></li><li><a href="http://mxdxm.iteye.com/blog/2093603" target="_blank" rel="noopener">《Mongodb相对于关系型数据库的优缺点》</a><ul><li>优点：弱一致性（最终一致），更能保证用户的访问速度；内置GridFS，支持大容量的存储；Schema-less 数据库，不用预先定义结构；内置Sharding；相比于其他NoSQL，第三方支持丰富；性能优越；</li><li>缺点：mongodb不支持事务操作；mongodb占用空间过大；MongoDB没有如MySQL那样成熟的维护工具，这对于开发和IT运营都是个值得注意的地方；</li></ul></li></ul><h3 id="Hbase"><a href="#Hbase" class="headerlink" title="Hbase"></a>Hbase</h3><ul><li><a href="http://www.thebigdata.cn/HBase/35831.html" target="_blank" rel="noopener">《简明 HBase 入门教程（开篇）》</a></li><li><a href="https://www.cnblogs.com/qiaoyihang/p/6246424.html" target="_blank" rel="noopener">《深入学习HBase架构原理》</a></li><li><a href="https://blog.csdn.net/youzhouliu/article/details/67632882" target="_blank" rel="noopener">《传统的行存储和（HBase）列存储的区别》</a></li><li><a href="https://blog.csdn.net/lifuxiangcaohui/article/details/39891099" target="_blank" rel="noopener">《Hbase与传统数据库的区别》</a><ul><li>空数据不存储，节省空间，且适用于并发。</li></ul></li><li><a href="https://blog.csdn.net/u014091123/article/details/73163088" target="_blank" rel="noopener">《HBase Rowkey设计》</a><ul><li>rowkey 按照字典顺序排列，便于批量扫描。</li><li>通过散列可以避免热点。</li></ul></li></ul><hr><h1 id="搜索引擎"><a href="#搜索引擎" class="headerlink" title="搜索引擎"></a>搜索引擎</h1><h2 id="搜索引擎原理"><a href="#搜索引擎原理" class="headerlink" title="搜索引擎原理"></a>搜索引擎原理</h2><ul><li><a href="https://www.jianshu.com/p/0193dc44135b" target="_blank" rel="noopener">《倒排索引–搜索引擎入门》</a></li></ul><h2 id="Lucene"><a href="#Lucene" class="headerlink" title="Lucene"></a>Lucene</h2><ul><li><a href="https://www.cnblogs.com/rodge-run/p/6551152.html" target="_blank" rel="noopener">《Lucene入门简介》</a></li></ul><h2 id="Elasticsearch"><a href="#Elasticsearch" class="headerlink" title="Elasticsearch"></a>Elasticsearch</h2><ul><li><a href="https://blog.csdn.net/laoyang360/article/details/52244917" target="_blank" rel="noopener">《Elasticsearch学习，请先看这一篇！》</a></li><li><a href="https://blog.csdn.net/cyony/article/details/65437708" target="_blank" rel="noopener">《Elasticsearch索引原理》</a></li></ul><h2 id="Solr"><a href="#Solr" class="headerlink" title="Solr"></a>Solr</h2><ul><li><a href="https://blog.csdn.net/u011936655/article/details/51960005" target="_blank" rel="noopener">《 Apache Solr入门教程》</a></li><li><a href="https://blog.csdn.net/convict_eva/article/details/53537837" target="_blank" rel="noopener">《elasticsearch与solr比较》</a></li></ul><h2 id="sphinx"><a href="#sphinx" class="headerlink" title="sphinx"></a>sphinx</h2><ul><li><a href="http://blog.jobbole.com/101672/" target="_blank" rel="noopener">《Sphinx 的介绍和原理探索》</a></li></ul><hr><h1 id="性能"><a href="#性能" class="headerlink" title="性能"></a>性能</h1><h2 id="性能优化方法论"><a href="#性能优化方法论" class="headerlink" title="性能优化方法论"></a>性能优化方法论</h2><ul><li><p><a href="https://blog.csdn.net/huangwenyi1010/article/details/72673447?ref=myread" target="_blank" rel="noopener">《15天的性能优化工作，5方面的调优经验》</a></p><ul><li>代码层面、业务层面、数据库层面、服务器层面、前端优化。</li></ul></li><li><p><a href="https://blog.csdn.net/tenglizhe/article/details/44563135" target="_blank" rel="noopener">《系统性能优化的几个方面》</a></p></li></ul><h2 id="容量评估"><a href="#容量评估" class="headerlink" title="容量评估"></a>容量评估</h2><ul><li><a href="https://blog.csdn.net/u012528360/article/details/70054156" target="_blank" rel="noopener">《联网性能与容量评估的方法论和典型案例》</a></li><li><a href="https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&amp;mid=2651959542&amp;idx=1&amp;sn=2494bbea9a855e0e1c3ccd6d2562a600&amp;scene=21#wechat_redirect" target="_blank" rel="noopener">《互联网架构，如何进行容量设计？》</a><ul><li>评估总访问量、评估平均访问量QPS、评估高峰QPS、评估系统、单机极限QPS</li></ul></li></ul><h2 id="CDN-网络"><a href="#CDN-网络" class="headerlink" title="CDN 网络"></a>CDN 网络</h2><ul><li><a href="https://www.cnblogs.com/wxiaona/p/5867685.html" target="_blank" rel="noopener">《CDN加速原理》</a></li><li><a href="https://www.zhihu.com/question/20536932" target="_blank" rel="noopener">《国内有哪些比较好的 CDN？》</a></li></ul><h2 id="连接池"><a href="#连接池" class="headerlink" title="连接池"></a>连接池</h2><ul><li><a href="https://blog.csdn.net/fysuccess/article/details/66972554" target="_blank" rel="noopener">《主流Java数据库连接池比较与开发配置实战》</a></li></ul><h2 id="性能调优"><a href="#性能调优" class="headerlink" title="性能调优"></a>性能调优</h2><ul><li><a href="https://blog.csdn.net/yethyeth/article/details/73266455" target="_blank" rel="noopener">《九大Java性能调试工具，必备至少一款》</a></li></ul><hr><h1 id="大数据"><a href="#大数据" class="headerlink" title="大数据"></a>大数据</h1><h2 id="流式计算"><a href="#流式计算" class="headerlink" title="流式计算"></a>流式计算</h2><h3 id="Storm"><a href="#Storm" class="headerlink" title="Storm"></a>Storm</h3><ul><li><a href="http://storm.apache.org/" target="_blank" rel="noopener">官方网站</a></li><li><a href="https://blog.csdn.net/uisoul/article/details/77989927" target="_blank" rel="noopener">《最详细的Storm入门教程》</a></li></ul><h3 id="Flink"><a href="#Flink" class="headerlink" title="Flink"></a>Flink</h3><ul><li><a href="https://blog.csdn.net/lisi1129/article/details/54844919" target="_blank" rel="noopener">《Flink之一 Flink基本原理介绍》</a></li></ul><h3 id="Kafka-Stream"><a href="#Kafka-Stream" class="headerlink" title="Kafka Stream"></a>Kafka Stream</h3><ul><li><a href="https://yq.aliyun.com/articles/58382" target="_blank" rel="noopener">《Kafka Stream调研：一种轻量级流计算模式》</a></li></ul><h3 id="应用场景-1"><a href="#应用场景-1" class="headerlink" title="应用场景"></a>应用场景</h3><p>例如：</p><ul><li>广告相关实时统计；</li><li>推荐系统用户画像标签实时更新；</li><li>线上服务健康状况实时监测；</li><li>实时榜单；</li><li>实时数据统计。</li></ul><h2 id="Hadoop"><a href="#Hadoop" class="headerlink" title="Hadoop"></a>Hadoop</h2><ul><li><a href="https://blog.csdn.net/houbin0912/article/details/72967178" target="_blank" rel="noopener">《用通俗易懂的话说下hadoop是什么,能做什么》</a></li><li><a href="http://gitbook.cn/books/5954c9600326c7705af8a92a/index.html" target="_blank" rel="noopener">《史上最详细的Hadoop环境搭建》</a></li></ul><h3 id="HDFS"><a href="#HDFS" class="headerlink" title="HDFS"></a>HDFS</h3><ul><li><a href="https://segmentfault.com/a/1190000011575458" target="_blank" rel="noopener">《【Hadoop学习】HDFS基本原理》</a></li></ul><h3 id="MapReduce"><a href="#MapReduce" class="headerlink" title="MapReduce"></a>MapReduce</h3><ul><li><a href="https://blog.csdn.net/oppo62258801/article/details/72884633" target="_blank" rel="noopener">《用通俗易懂的大白话讲解Map/Reduce原理》</a></li><li><a href="https://blog.csdn.net/foye12/article/details/78358292" target="_blank" rel="noopener">《 简单的map-reduce的java例子》</a></li></ul><h3 id="Yarn"><a href="#Yarn" class="headerlink" title="Yarn"></a>Yarn</h3><ul><li><a href="http://www.cnblogs.com/codeOfLife/p/5492740.html" target="_blank" rel="noopener">《初步掌握Yarn的架构及原理》</a></li></ul><h2 id="Spark"><a href="#Spark" class="headerlink" title="Spark"></a>Spark</h2><ul><li><a href="http://www.cnblogs.com/tgzhu/p/5818374.html" target="_blank" rel="noopener">《Spark(一): 基本架构及原理》</a></li></ul><hr><h1 id="安全"><a href="#安全" class="headerlink" title="安全"></a>安全</h1><h2 id="web-安全"><a href="#web-安全" class="headerlink" title="web 安全"></a>web 安全</h2><h3 id="XSS"><a href="#XSS" class="headerlink" title="XSS"></a>XSS</h3><ul><li><a href="https://blog.csdn.net/qq_21956483/article/details/54377947" target="_blank" rel="noopener">《xss攻击原理与解决方法》</a></li></ul><h3 id="CSRF"><a href="#CSRF" class="headerlink" title="CSRF"></a>CSRF</h3><ul><li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/641-web-an-quan-fang-fan/6412-csrf.html" target="_blank" rel="noopener">《CSRF原理及防范》</a></li></ul><h3 id="SQL-注入"><a href="#SQL-注入" class="headerlink" title="SQL 注入"></a>SQL 注入</h3><ul><li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/641-web-an-quan-fang-fan/6413-sql-zhu-ru.html" target="_blank" rel="noopener">《SQL注入》</a></li></ul><h3 id="Hash-Dos"><a href="#Hash-Dos" class="headerlink" title="Hash Dos"></a>Hash Dos</h3><ul><li><a href="http://www.freebuf.com/articles/web/14199.html" target="_blank" rel="noopener">《邪恶的JAVA HASH DOS攻击》</a><ul><li>利用JsonObjet 上传大Json，JsonObject 底层使用HashMap；不同的数据产生相同的hash值，使得构建Hash速度变慢，耗尽CPU。</li></ul></li><li><a href="https://yq.aliyun.com/articles/92194?t=t1" target="_blank" rel="noopener">《一种高级的DoS攻击-Hash碰撞攻击》</a></li><li><a href="http://www.iteye.com/news/23939/" target="_blank" rel="noopener">《关于Hash Collision DoS漏洞：解析与解决方案》</a></li></ul><h3 id="脚本注入"><a href="#脚本注入" class="headerlink" title="脚本注入"></a>脚本注入</h3><ul><li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/641-web-an-quan-fang-fan/6414-shang-chuan-wen-jian-guo-lv.html" target="_blank" rel="noopener">《上传文件漏洞原理及防范》</a></li></ul><h3 id="漏洞扫描工具"><a href="#漏洞扫描工具" class="headerlink" title="漏洞扫描工具"></a>漏洞扫描工具</h3><ul><li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/6421-dvwa.html" target="_blank" rel="noopener">《DVWA》</a></li><li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/w3af.html" target="_blank" rel="noopener">W3af</a></li><li><a href="https://blog.csdn.net/xygg0801/article/details/53610640" target="_blank" rel="noopener">OpenVAS详解</a></li></ul><h3 id="验证码"><a href="#验证码" class="headerlink" title="验证码"></a>验证码</h3><ul><li><p><a href="https://blog.csdn.net/niaonao/article/details/51112686" target="_blank" rel="noopener">《验证码原理分析及实现》</a></p></li><li><p><a href="https://my.oschina.net/jiangbianwanghai/blog/1031031" target="_blank" rel="noopener">《详解滑动验证码的实现原理》</a></p><ul><li>滑动验证码是根据人在滑动滑块的响应时间，拖拽速度，时间，位置，轨迹，重试次数等来评估风险。</li></ul></li><li><p><a href="https://www.cnblogs.com/xcj26/p/5242758.html" target="_blank" rel="noopener">《淘宝滑动验证码研究》</a></p></li></ul><h2 id="DDoS-防范"><a href="#DDoS-防范" class="headerlink" title="DDoS 防范"></a>DDoS 防范</h2><ul><li><a href="http://netsecurity.51cto.com/art/201601/503799.htm" target="_blank" rel="noopener">《学习手册：DDoS的攻击方式及防御手段》</a></li><li><a href="http://netsecurity.51cto.com/art/201406/442756.htm" target="_blank" rel="noopener">《免费DDoS攻击测试工具大合集》</a></li></ul><h2 id="用户隐私信息保护"><a href="#用户隐私信息保护" class="headerlink" title="用户隐私信息保护"></a>用户隐私信息保护</h2><ol><li>用户密码非明文保存，加动态slat。</li><li>身份证号，手机号如果要显示，用 “*” 替代部分字符。</li><li>联系方式在的显示与否由用户自己控制。</li><li>TODO</li></ol><ul><li><a href="https://zhidao.baidu.com/question/1988017976673661587.html" target="_blank" rel="noopener">《个人隐私包括哪些》</a></li><li><p><a href="https://www.zhihu.com/question/20137108" target="_blank" rel="noopener">《在互联网上，隐私的范围包括哪些？》</a></p></li><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/642-shu-ju-jia-mi/6425-jia-mi-chang-jing-ff1a-yong-hu-mi-ma-bao-cun.html" target="_blank" rel="noopener">《用户密码保存》</a></p></li></ul><h2 id="序列化漏洞"><a href="#序列化漏洞" class="headerlink" title="序列化漏洞"></a>序列化漏洞</h2><ul><li><a href="https://blog.chaitin.cn/2015-11-11_java_unserialize_rce/" target="_blank" rel="noopener">《Lib之过？Java反序列化漏洞通用利用分析》</a></li></ul><h2 id="加密解密"><a href="#加密解密" class="headerlink" title="加密解密"></a>加密解密</h2><h3 id="对称加密"><a href="#对称加密" class="headerlink" title="对称加密"></a>对称加密</h3><ul><li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/642-shu-ju-jia-mi/6421-chang-jian-dui-cheng-jia-mi-suan-fa.html" target="_blank" rel="noopener">《常见对称加密算法》</a><ul><li>DES、3DES、Blowfish、AES</li><li>DES 采用 56位秘钥，Blowfish 采用1到448位变长秘钥，AES 128，192和256位长度的秘钥。</li><li>DES 秘钥太短（只有56位）算法目前已经被 AES 取代，并且 AES 有硬件加速，性能很好。</li></ul></li></ul><h3 id="哈希算法"><a href="#哈希算法" class="headerlink" title="哈希算法"></a>哈希算法</h3><ul><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/642-shu-ju-jia-mi/6422-chang-jian-ha-xi-suan-fa-and-hmac.html" target="_blank" rel="noopener">《常用的哈希算法》</a></p><ul><li>MD5 和 SHA-1 已经不再安全，已被弃用。</li><li>目前 SHA-256 是比较安全的。</li></ul></li><li><p><a href="https://blog.csdn.net/zhangruhong168/article/details/78033202" target="_blank" rel="noopener">《基于Hash摘要签名的公网URL签名验证设计方案》</a></p></li></ul><h3 id="非对称加密"><a href="#非对称加密" class="headerlink" title="非对称加密"></a>非对称加密</h3><ul><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/642-shu-ju-jia-mi/6424-chang-yong-fei-dui-cheng-jia-mi-suan-fa.html" target="_blank" rel="noopener">《常见非对称加密算法》</a></p><ul><li>RSA、DSA、ECDSA(螺旋曲线加密算法)</li><li>和 RSA 不同的是 DSA 仅能用于数字签名，不能进行数据加密解密，其安全性和RSA相当，但其性能要比RSA快。</li><li><p>256位的ECC秘钥的安全性等同于3072位的RSA秘钥。</p><p><a href="http://baijiahao.baidu.com/s?id=1578348858092033763&amp;wfr=spider&amp;for=pc" target="_blank" rel="noopener">《区块链的加密技术》</a></p></li></ul></li></ul><h2 id="服务器安全"><a href="#服务器安全" class="headerlink" title="服务器安全"></a>服务器安全</h2><ul><li><a href="http://www.freebuf.com/articles/system/121540.html" target="_blank" rel="noopener">《Linux强化论：15步打造一个安全的Linux服务器》</a></li></ul><h2 id="数据安全"><a href="#数据安全" class="headerlink" title="数据安全"></a>数据安全</h2><h3 id="数据备份"><a href="#数据备份" class="headerlink" title="数据备份"></a>数据备份</h3><p>TODO</p><h2 id="网络隔离"><a href="#网络隔离" class="headerlink" title="网络隔离"></a>网络隔离</h2><h3 id="内外网分离"><a href="#内外网分离" class="headerlink" title="内外网分离"></a>内外网分离</h3><p>TODO</p><h3 id="登录跳板机"><a href="#登录跳板机" class="headerlink" title="登录跳板机"></a>登录跳板机</h3><p>在内外环境中通过跳板机登录到线上主机。</p><ul><li><a href="http://blog.51cto.com/zero01/2062618" target="_blank" rel="noopener">《搭建简易堡垒机》</a></li></ul><h2 id="授权、认证"><a href="#授权、认证" class="headerlink" title="授权、认证"></a>授权、认证</h2><h3 id="RBAC"><a href="#RBAC" class="headerlink" title="RBAC"></a>RBAC</h3><ul><li><a href="https://www.cnblogs.com/zq8024/p/5003050.html" target="_blank" rel="noopener">《基于组织角色的权限设计》</a></li><li><a href="https://www.cnblogs.com/shijiaqi1066/p/3793894.html" target="_blank" rel="noopener">《权限系统与RBAC模型概述》</a></li><li><a href="https://blog.csdn.net/he90227/article/details/38663553" target="_blank" rel="noopener">《Spring整合Shiro做权限控制模块详细案例分析》</a></li></ul><h3 id="OAuth2-0"><a href="#OAuth2-0" class="headerlink" title="OAuth2.0"></a>OAuth2.0</h3><ul><li><a href="http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html" target="_blank" rel="noopener">《理解OAuth 2.0》</a></li></ul><h3 id="双因素认证（2FA）"><a href="#双因素认证（2FA）" class="headerlink" title="双因素认证（2FA）"></a>双因素认证（2FA）</h3><p>2FA - Two-factor authentication，用于加强登录验证</p><p>常用做法是 登录密码 + 手机验证码（或者令牌Key，类似于与网银的 USB key）</p><ul><li>【《双因素认证（2FA）教程》】(<a href="http://www.ruanyifeng.com/blog/2017/11/2fa-tutorial.html" target="_blank" rel="noopener">http://www.ruanyifeng.com/blog/2017/11/2fa-tutorial.html</a>)</li></ul><h3 id="单点登录-SSO"><a href="#单点登录-SSO" class="headerlink" title="单点登录(SSO)"></a>单点登录(SSO)</h3><ul><li><p><a href="https://www.cnblogs.com/ywlaker/p/6113927.html" target="_blank" rel="noopener">《单点登录原理与简单实现》</a></p></li><li><p><a href="https://github.com/apereo/cas" target="_blank" rel="noopener">CAS单点登录框架</a></p></li></ul><hr><h1 id="常用开源框架"><a href="#常用开源框架" class="headerlink" title="常用开源框架"></a>常用开源框架</h1><h2 id="开源协议"><a href="#开源协议" class="headerlink" title="开源协议"></a>开源协议</h2><ul><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/chapter1/di-yi-zhang-ff1a-zhun-bei-qi-cheng/12-guan-yu-kai-yuan/123-kai-yuan-xie-yi-de-xuan-ze.html" target="_blank" rel="noopener">《开源协议的选择》</a></p></li><li><p><a href="http://choosealicense.online/" target="_blank" rel="noopener">如何选择一个开源软件协议</a></p></li></ul><h2 id="日志框架"><a href="#日志框架" class="headerlink" title="日志框架"></a>日志框架</h2><h3 id="Log4j、Log4j2"><a href="#Log4j、Log4j2" class="headerlink" title="Log4j、Log4j2"></a>Log4j、Log4j2</h3><ul><li><a href="https://blog.csdn.net/u012422446/article/details/51199724" target="_blank" rel="noopener">《log4j 详细讲解》</a></li><li><a href="https://blog.csdn.net/vbirdbest/article/details/71751835" target="_blank" rel="noopener">《log4j2 实际使用详解》</a></li><li><a href="https://my.oschina.net/OutOfMemory/blog/789267" target="_blank" rel="noopener">《Log4j1,Logback以及Log4j2性能测试对比》</a><ul><li>Log4J 异步日志性能优异。</li></ul></li></ul><h3 id="Logback"><a href="#Logback" class="headerlink" title="Logback"></a>Logback</h3><ul><li><a href="https://blog.csdn.net/rulon147/article/details/52620541" target="_blank" rel="noopener">《最全LogBack 详解、含java案例和配置说明》</a></li></ul><h2 id="ORM"><a href="#ORM" class="headerlink" title="ORM"></a>ORM</h2><ul><li><a href="https://blog.csdn.net/sinat_34093604/article/details/53082000" target="_blank" rel="noopener">《ORM框架使用优缺点》</a><ul><li>主要目的是为了提高开发效率。</li></ul></li></ul><p><strong>MyBatis：</strong></p><ul><li><p><a href="https://www.cnblogs.com/winclpt/articles/7511672.html" target="_blank" rel="noopener">《mybatis缓存机制详解》</a></p><ul><li>一级缓存是SqlSession级别的缓存，缓存的数据只在SqlSession内有效</li><li>二级缓存是mapper级别的缓存，同一个namespace公用这一个缓存，所以对SqlSession是共享的；使用 LRU 机制清理缓存，通过 cacheEnabled 参数开启。</li></ul></li><li><p><a href="https://blog.csdn.net/baidu_32877851/article/details/53959268" target="_blank" rel="noopener">《MyBatis学习之代码生成器Generator》</a></p></li></ul><h2 id="网络框架"><a href="#网络框架" class="headerlink" title="网络框架"></a>网络框架</h2><p>TODO</p><h2 id="Web-框架"><a href="#Web-框架" class="headerlink" title="Web 框架"></a>Web 框架</h2><h3 id="Spring-家族"><a href="#Spring-家族" class="headerlink" title="Spring 家族"></a>Spring 家族</h3><p><strong>Spring</strong></p><ul><li><a href="https://www.w3cschool.cn/wkspring/" target="_blank" rel="noopener">Spring 简明教程</a></li></ul><p><strong>Spring Boot</strong></p><ul><li><a href="http://projects.spring.io/spring-boot/" target="_blank" rel="noopener">官方网站</a></li><li><a href="http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/" target="_blank" rel="noopener">《Spring Boot基础教程》</a></li></ul><p><strong>Spring Cloud</strong></p><ul><li><a href="http://springboot.fun/" target="_blank" rel="noopener">Spring Boot 中文索引站</a></li><li><a href="https://springcloud.cc/" target="_blank" rel="noopener">Spring Cloud 中文文档</a></li><li><a href="http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/" target="_blank" rel="noopener">《Spring Cloud基础教程》</a></li></ul><h2 id="工具框架"><a href="#工具框架" class="headerlink" title="工具框架"></a>工具框架</h2><ul><li><a href="https://www.cnblogs.com/crazylqy/p/4872236.html" target="_blank" rel="noopener">《Apache Commons 工具类介绍及简单使用》</a></li><li><a href="http://ifeve.com/google-guava/" target="_blank" rel="noopener">《Google guava 中文教程》</a></li></ul><hr><h1 id="分布式设计"><a href="#分布式设计" class="headerlink" title="分布式设计"></a>分布式设计</h1><h2 id="扩展性设计"><a href="#扩展性设计" class="headerlink" title="扩展性设计"></a>扩展性设计</h2><ul><li><p><a href="https://blog.csdn.net/hemin1003/article/details/53633926" target="_blank" rel="noopener">《架构师不可不知的十大可扩展架构》</a></p><ul><li>总结下来，通用的套路就是分布、缓存及异步处理。</li></ul></li><li><p><a href="https://yq.aliyun.com/articles/38119" target="_blank" rel="noopener">《可扩展性设计之数据切分》</a></p><ul><li>水平切分+垂直切分</li><li>利用中间件进行分片如，MySQL Proxy。</li><li>利用分片策略进行切分，如按照ID取模。</li></ul></li><li><p><a href="https://blog.csdn.net/deniro_li/article/details/78458306" target="_blank" rel="noopener">《说说如何实现可扩展性的大型网站架构》</a></p><ul><li>分布式服务+消息队列。</li></ul></li><li><p><a href="https://blog.csdn.net/chaofanwei/article/details/29191073" target="_blank" rel="noopener">《大型网站技术架构（七）–网站的可扩展性架构》</a></p></li></ul><h2 id="稳定性-amp-高可用"><a href="#稳定性-amp-高可用" class="headerlink" title="稳定性 &amp; 高可用"></a>稳定性 &amp; 高可用</h2><ul><li><p><a href="https://blog.csdn.net/hustspy1990/article/details/78008324" target="_blank" rel="noopener">《系统设计：关于高可用系统的一些技术方案》</a></p><ul><li>可扩展：水平扩展、垂直扩展。 通过冗余部署，避免单点故障。</li><li>隔离：避免单一业务占用全部资源。避免业务之间的相互影响 2. 机房隔离避免单点故障。</li><li>解耦：降低维护成本，降低耦合风险。减少依赖，减少相互间的影响。</li><li>限流：滑动窗口计数法、漏桶算法、令牌桶算法等算法。遇到突发流量时，保证系统稳定。</li><li>降级：紧急情况下释放非核心功能的资源。牺牲非核心业务，保证核心业务的高可用。</li><li>熔断：异常情况超出阈值进入熔断状态，快速失败。减少不稳定的外部依赖对核心服务的影响。</li><li>自动化测试：通过完善的测试，减少发布引起的故障。</li><li>灰度发布：灰度发布是速度与安全性作为妥协，能够有效减少发布故障。</li></ul></li><li><p><a href="https://coolshell.cn/articles/17459.html" target="_blank" rel="noopener">《关于高可用的系统》</a></p><ul><li>设计原则：数据不丢(持久化)；服务高可用(服务副本)；绝对的100%高可用很难，目标是做到尽可能多的9，如99.999%（全年累计只有5分钟）。</li></ul></li></ul><h3 id="硬件负载均衡"><a href="#硬件负载均衡" class="headerlink" title="硬件负载均衡"></a>硬件负载均衡</h3><ul><li><p><a href="https://www.cnblogs.com/wuyun-blog/p/6186198.html" target="_blank" rel="noopener">《转！！负载均衡器技术Nginx和F5的优缺点对比》</a></p><ul><li>主要是和F5对比。</li></ul></li><li><p><a href="https://www.cnblogs.com/lcword/p/5773296.html" target="_blank" rel="noopener">《软/硬件负载均衡产品 你知多少？》</a></p></li></ul><h3 id="软件负载均衡"><a href="#软件负载均衡" class="headerlink" title="软件负载均衡"></a>软件负载均衡</h3><ul><li><a href="https://www.cnblogs.com/tianzhiliang/articles/2317808.html" target="_blank" rel="noopener">《几种负载均衡算法》</a><br>轮寻、权重、负载、最少连接、QoS</li><li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/611-dns-fang-shi.html" target="_blank" rel="noopener">《DNS负载均衡》</a><ul><li>配置简单，更新速度慢。</li></ul></li><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/613-nginx-fu-zai-jun-heng.html" target="_blank" rel="noopener">《Nginx负载均衡》</a></p><ul><li>简单轻量、学习成本低；主要适用于web应用。</li></ul></li><li><p><a href="https://www.cnblogs.com/edisonchou/p/4281978.html" target="_blank" rel="noopener">《借助LVS+Keepalived实现负载均衡 》</a></p><ul><li>配置比较负载、只支持到4层，性能较高。</li></ul></li><li><p><a href="http://www.ttlsa.com/linux/haproxy-study-tutorial/" target="_blank" rel="noopener">《HAProxy用法详解 全网最详细中文文档》</a></p><ul><li>支持到七层（比如HTTP）、功能比较全面，性能也不错。</li></ul></li><li><p><a href="http://blog.itpub.net/25704976/viewspace-1319781/" target="_blank" rel="noopener">《Haproxy+Keepalived+MySQL实现读均衡负载》</a></p><ul><li>主要是用户读请求的负载均衡。</li></ul></li><li><p><a href="https://www.cnblogs.com/lylife/p/5584019.html" target="_blank" rel="noopener">《rabbitmq+haproxy+keepalived实现高可用集群搭建》</a></p></li></ul><h3 id="限流"><a href="#限流" class="headerlink" title="限流"></a>限流</h3><ul><li><a href="https://www.cnblogs.com/haoxinyue/p/6792309.html" target="_blank" rel="noopener">《谈谈高并发系统的限流》</a><ul><li>计数器：通过滑动窗口计数器，控制单位时间内的请求次数，简单粗暴。</li><li>漏桶算法：固定容量的漏桶，漏桶满了就丢弃请求，比较常用。</li><li>令牌桶算法：固定容量的令牌桶，按照一定速率添加令牌，处理请求前需要拿到令牌，拿不到令牌则丢弃请求，或进入丢队列，可以通过控制添加令牌的速率，来控制整体速度。Guava 中的 RateLimiter 是令牌桶的实现。</li><li>Nginx 限流：通过 <code>limit_req</code> 等模块限制并发连接数。</li></ul></li></ul><h3 id="应用层容灾"><a href="#应用层容灾" class="headerlink" title="应用层容灾"></a>应用层容灾</h3><ul><li><p><a href="https://segmentfault.com/a/1190000005988895" target="_blank" rel="noopener">《防雪崩利器：熔断器 Hystrix 的原理与使用》</a></p><ul><li>雪崩效应原因：硬件故障、硬件故障、程序Bug、重试加大流量、用户大量请求。</li><li>雪崩的对策：限流、改进缓存模式(缓存预加载、同步调用改异步)、自动扩容、降级。</li><li>Hystrix设计原则：<ul><li>资源隔离：Hystrix通过将每个依赖服务分配独立的线程池进行资源隔离, 从而避免服务雪崩。</li><li>熔断开关：服务的健康状况 = 请求失败数 / 请求总数，通过阈值设定和滑动窗口控制开关。</li><li>命令模式：通过继承 HystrixCommand 来包装服务调用逻辑。</li></ul></li></ul></li><li><p><a href="https://blog.csdn.net/zeb_perfect/article/details/54135506" target="_blank" rel="noopener">《缓存穿透，缓存击穿，缓存雪崩解决方案分析》</a></p></li><li><a href="https://blog.csdn.net/zeb_perfect/article/details/54135506" target="_blank" rel="noopener">《缓存击穿、失效以及热点key问题》</a><ul><li>主要策略：失效瞬间：单机使用锁；使用分布式锁；不过期；</li><li>热点数据：热点数据单独存储；使用本地缓存；分成多个子key；</li></ul></li></ul><h3 id="跨机房容灾"><a href="#跨机房容灾" class="headerlink" title="跨机房容灾"></a>跨机房容灾</h3><ul><li><p><a href="http://dc.idcquan.com/ywgl/71559.shtml" target="_blank" rel="noopener">《“异地多活”多机房部署经验谈》</a></p><ul><li>通过自研中间件进行数据同步。</li></ul></li><li><p><a href="https://blog.csdn.net/jeffreynicole/article/details/48135093" target="_blank" rel="noopener">《异地多活（异地双活）实践经验》</a></p><ul><li>注意延迟问题，多次跨机房调用会将延时放大数倍。</li><li>建房间专线很大概率会出现问题，做好运维和程序层面的容错。</li><li>不能依赖于程序端数据双写，要有自动同步方案。</li><li>数据永不在高延迟和较差网络质量下，考虑同步质量问题。</li><li>核心业务和次要业务分而治之，甚至只考虑核心业务。</li><li>异地多活监控部署、测试也要跟上。</li><li>业务允许的情况下考虑用户分区，尤其是游戏、邮箱业务。</li><li>控制跨机房消息体大小，越小越好。</li><li>考虑使用docker容器虚拟化技术，提高动态调度能力。</li></ul></li><li><p><a href="https://blog.csdn.net/yoara/article/details/38013751" target="_blank" rel="noopener">容灾技术及建设经验介绍</a></p></li></ul><h3 id="容灾演练流程"><a href="#容灾演练流程" class="headerlink" title="容灾演练流程"></a>容灾演练流程</h3><ul><li><a href="https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&amp;mid=2650996320&amp;idx=1&amp;sn=0ed3be190bbee4a9277886ef88cbb2e5" target="_blank" rel="noopener">《依赖治理、灰度发布、故障演练，阿里电商故障演练系统的设计与实战经验》</a><ul><li>常见故障画像</li><li>案例：预案有效性、预案有效性、故障复现、架构容灾测试、参数调优、参数调优、故障突袭、联合演练。</li></ul></li></ul><h3 id="平滑启动"><a href="#平滑启动" class="headerlink" title="平滑启动"></a>平滑启动</h3><ul><li><p>平滑重启应用思路<br>1.端流量（如vip层）、2. flush 数据(如果有)、3, 重启应用</p></li><li><p><a href="https://blog.csdn.net/u011001084/article/details/73480432" target="_blank" rel="noopener">《JVM安全退出（如何优雅的关闭java服务）》</a><br>推荐推出方式：System.exit，Kill SIGTERM；不推荐 kill-9；用 Runtime.addShutdownHook 注册钩子。</p></li><li><a href="http://ju.outofmemory.cn/entry/337235" target="_blank" rel="noopener">《常见Java应用如何优雅关闭》</a><br>Java、Srping、Dubbo 优雅关闭方式。</li></ul><h2 id="数据库扩展"><a href="#数据库扩展" class="headerlink" title="数据库扩展"></a>数据库扩展</h2><h3 id="读写分离模式"><a href="#读写分离模式" class="headerlink" title="读写分离模式"></a>读写分离模式</h3><ul><li><a href="https://www.cnblogs.com/houdj/p/6563771.html" target="_blank" rel="noopener">《Mysql主从方案的实现》</a></li><li><a href="https://www.cnblogs.com/edisonchou/p/4133148.html" target="_blank" rel="noopener">《搭建MySQL主从复制经典架构》</a></li><li><p><a href="https://blog.csdn.net/nimasike/article/details/48048341" target="_blank" rel="noopener">《Haproxy+多台MySQL从服务器(Slave) 实现负载均衡》</a></p></li><li><p><a href="https://www.cnblogs.com/zhangsubai/p/6801764.html" target="_blank" rel="noopener">《DRBD+Heartbeat+Mysql高可用读写分离架构》</a></p><ul><li>DRDB 进行磁盘复制，避免单点问题。</li></ul></li><li><p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/62-ke-kuo-zhan-de-shu-ju-ku-jia-gou/621-gao-ke-yong-mysql-de-ji-zhong-fang-an/6214-mysql-cluster-fang-an.html" target="_blank" rel="noopener">《MySQL Cluster 方式》</a></p></li></ul><h3 id="分片模式"><a href="#分片模式" class="headerlink" title="分片模式"></a>分片模式</h3><ul><li><p><a href="https://www.jianshu.com/p/32b3e91aa22c" target="_blank" rel="noopener">《分库分表需要考虑的问题及方案》</a></p><ul><li>中间件： 轻量级：sharding-jdbc、TSharding；重量级：Atlas、MyCAT、Vitess等。</li><li>问题：事务、Join、迁移、扩容、ID、分页等。</li><li>事务补偿：对数据进行对帐检查;基于日志进行比对;定期同标准数据来源进行同步等。</li><li>分库策略：数值范围；取模；日期等。</li><li>分库数量：通常 MySQL 单库 5千万条、Oracle 单库一亿条需要分库。</li></ul></li><li><p><a href="https://www.2cto.com/database/201503/380348.html" target="_blank" rel="noopener">《MySql分表和表分区详解》</a></p><ul><li>分区：是MySQL内部机制，对客户端透明，数据存储在不同文件中，表面上看是同一个表。</li><li>分表：物理上创建不同的表、客户端需要管理分表路由。</li></ul></li></ul><h2 id="服务治理"><a href="#服务治理" class="headerlink" title="服务治理"></a>服务治理</h2><h3 id="服务注册与发现"><a href="#服务注册与发现" class="headerlink" title="服务注册与发现"></a>服务注册与发现</h3><ul><li><a href="https://blog.csdn.net/jiaolongdy/article/details/51188798" target="_blank" rel="noopener">《永不失联！如何实现微服务架构中的服务发现？》</a><ul><li>客户端服务发现模式：客户端直接查询注册表，同时自己负责负载均衡。Eureka 采用这种方式。</li><li>服务器端服务发现模式：客户端通过负载均衡查询服务实例。</li></ul></li><li><p><a href="https://blog.csdn.net/u010963948/article/details/71730165" target="_blank" rel="noopener">《SpringCloud服务注册中心比较:Consul vs Zookeeper vs Etcd vs Eureka》</a></p><ul><li>CAP支持：Consul（CA）、zookeeper（cp）、etcd（cp） 、euerka（ap）</li><li>作者认为目前 Consul 对 Spring cloud 的支持比较好。</li></ul></li><li><p><a href="http://mobile.51cto.com/news-502394.htm" target="_blank" rel="noopener">《基于Zookeeper的服务注册与发现》</a></p><ul><li>优点：API简单、Pinterest，Airbnb 在用、多语言、通过watcher机制来实现配置PUSH，能快速响应配置变化。</li></ul></li></ul><h3 id="服务路由控制"><a href="#服务路由控制" class="headerlink" title="服务路由控制"></a>服务路由控制</h3><ul><li><a href="https://blog.csdn.net/xundh/article/details/59492750" target="_blank" rel="noopener">《分布式服务框架学习笔记4 服务路由》</a><ul><li>原则：透明化路由</li><li>负载均衡策略：随机、轮询、服务调用延迟、一致性哈希、粘滞连接</li><li>本地路由有限策略：injvm(优先调用jvm内部的服务)，innative(优先使用相同物理机的服务),原则上找距离最近的服务。</li><li>配置方式：统一注册表；本地配置；动态下发。</li></ul></li></ul><h2 id="分布式一致"><a href="#分布式一致" class="headerlink" title="分布式一致"></a>分布式一致</h2><h3 id="CAP-与-BASE-理论"><a href="#CAP-与-BASE-理论" class="headerlink" title="CAP 与 BASE 理论"></a>CAP 与 BASE 理论</h3><ul><li><a href="http://www.cnblogs.com/szlbm/p/5588543.html" target="_blank" rel="noopener">《从分布式一致性谈到CAP理论、BASE理论》</a><ul><li>一致性分类：强一致(立即一致)；弱一致(可在单位时间内实现一致，比如秒级)；最终一致(弱一致的一种，一定时间内最终一致)</li><li>CAP：一致性、可用性、分区容错性(网络故障引起)</li><li>BASE：Basically Available（基本可用）、Soft state（软状态）和Eventually consistent（最终一致性）</li><li>BASE理论的核心思想是：即使无法做到强一致性，但每个应用都可以根据自身业务特点，采用适当的方式来使系统达到最终一致性。</li></ul></li></ul><h3 id="分布式锁"><a href="#分布式锁" class="headerlink" title="分布式锁"></a>分布式锁</h3><ul><li><a href="http://www.hollischuang.com/archives/1716" target="_blank" rel="noopener">《分布式锁的几种实现方式》</a><ul><li>基于数据库的分布式锁：优点：操作简单、容易理解。缺点：存在单点问题、数据库性能够开销较大、不可重入；</li><li>基于缓存的分布式锁：优点：非阻塞、性能好。缺点：操作不好容易造成锁无法释放的情况。</li><li>Zookeeper 分布式锁：通过有序临时节点实现锁机制，自己对应的节点需要最小，则被认为是获得了锁。优点：集群可以透明解决单点问题，避免锁不被释放问题，同时锁可以重入。缺点：性能不如缓存方式，吞吐量会随着zk集群规模变大而下降。</li></ul></li><li><p><a href="https://www.tuicool.com/articles/VZJr6fY" target="_blank" rel="noopener">《基于Zookeeper的分布式锁》</a></p><ul><li>清楚的原理描述 + Java 代码示例。</li></ul></li><li><p><a href="https://www.cnblogs.com/0201zcr/p/5942748.html" target="_blank" rel="noopener">《jedisLock—redis分布式锁实现》</a></p><ul><li>基于 setnx(set if ont exists)，有则返回false，否则返回true。并支持过期时间。</li></ul></li><li><p><a href="https://blog.csdn.net/albertfly/article/details/77412333" target="_blank" rel="noopener">《Memcached 和 Redis 分布式锁方案》</a></p><ul><li>利用 memcached 的 add（有别于set）操作，当key存在时，返回false。</li></ul></li></ul><h3 id="分布式一致性算法"><a href="#分布式一致性算法" class="headerlink" title="分布式一致性算法"></a>分布式一致性算法</h3><h4 id="PAXOS"><a href="#PAXOS" class="headerlink" title="PAXOS"></a>PAXOS</h4><ul><li><a href="https://www.cnblogs.com/linbingdong/p/6253479.html" target="_blank" rel="noopener">《分布式系列文章——Paxos算法原理与推导》</a></li><li><a href="https://blog.csdn.net/u010039929/article/details/70171672" target="_blank" rel="noopener">《Paxos–&gt;Fast Paxos–&gt;Zookeeper分析》</a></li><li><a href="https://www.cnblogs.com/leesf456/p/6012777.html" target="_blank" rel="noopener">《【分布式】Zookeeper与Paxos》</a></li></ul><h4 id="Zab"><a href="#Zab" class="headerlink" title="Zab"></a>Zab</h4><ul><li><a href="https://www.jianshu.com/p/fb527a64deee" target="_blank" rel="noopener">《Zab：Zookeeper 中的分布式一致性协议介绍》</a></li></ul><h4 id="Raft"><a href="#Raft" class="headerlink" title="Raft"></a>Raft</h4><ul><li><a href="http://www.cnblogs.com/mindwind/p/5231986.html" target="_blank" rel="noopener">《Raft 为什么是更易理解的分布式一致性算法》</a><ul><li>三种角色：Leader（领袖）、Follower（群众）、Candidate（候选人）</li><li>通过随机等待的方式发出投票，得票多的获胜。</li></ul></li></ul><h4 id="Gossip"><a href="#Gossip" class="headerlink" title="Gossip"></a>Gossip</h4><ul><li><a href="http://blog.51cto.com/tianya23/530743" target="_blank" rel="noopener">《Gossip算法》</a></li></ul><h4 id="两阶段提交、多阶段提交"><a href="#两阶段提交、多阶段提交" class="headerlink" title="两阶段提交、多阶段提交"></a>两阶段提交、多阶段提交</h4><ul><li><a href="http://blog.jobbole.com/95632/" target="_blank" rel="noopener">《关于分布式事务、两阶段提交协议、三阶提交协议》</a></li></ul><h3 id="幂等"><a href="#幂等" class="headerlink" title="幂等"></a>幂等</h3><ul><li><a href="https://www.cnblogs.com/wxgblogs/p/6639272.html" target="_blank" rel="noopener">《分布式系统—幂等性设计》</a><ul><li>幂等特性的作用：该资源具备幂等性，请求方无需担心重复调用会产生错误。</li><li>常见保证幂等的手段：MVCC（类似于乐观锁）、去重表(唯一索引)、悲观锁、一次性token、序列号方式。</li></ul></li></ul><h3 id="分布式一致方案"><a href="#分布式一致方案" class="headerlink" title="分布式一致方案"></a>分布式一致方案</h3><ul><li><a href="http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency" target="_blank" rel="noopener">《分布式系统事务一致性解决方案》</a></li><li><a href="https://weibo.com/ttarticle/p/show?id=2309403965965003062676" target="_blank" rel="noopener">《保证分布式系统数据一致性的6种方案》</a></li></ul><h3 id="分布式-Leader-节点选举"><a href="#分布式-Leader-节点选举" class="headerlink" title="分布式 Leader 节点选举"></a>分布式 Leader 节点选举</h3><ul><li><a href="https://blog.csdn.net/johnson_moon/article/details/78809995" target="_blank" rel="noopener">《利用zookeeper实现分布式leader节点选举》</a></li></ul><h3 id="TCC-Try-Confirm-Cancel-柔性事务"><a href="#TCC-Try-Confirm-Cancel-柔性事务" class="headerlink" title="TCC(Try/Confirm/Cancel) 柔性事务"></a>TCC(Try/Confirm/Cancel) 柔性事务</h3><ul><li><a href="https://www.jianshu.com/p/ab1a1c6b08a1" target="_blank" rel="noopener">《传统事务与柔性事务》</a><ul><li>基于BASE理论：基本可用、柔性状态、最终一致。</li><li>解决方案：记录日志+补偿（正向补充或者回滚）、消息重试(要求程序要幂等)；“无锁设计”、采用乐观锁机制。</li></ul></li></ul><h2 id="分布式文件系统"><a href="#分布式文件系统" class="headerlink" title="分布式文件系统"></a>分布式文件系统</h2><ul><li><a href="https://zhuanlan.zhihu.com/p/27666295" target="_blank" rel="noopener">说说分布式文件存储系统-基本架构</a> ？</li><li><a href="https://blog.csdn.net/gatieme/article/details/44982961" target="_blank" rel="noopener">《各种分布式文件系统的比较》</a> ？<ul><li>HDFS：大批量数据读写，用于高吞吐量的场景，不适合小文件。</li><li>FastDFS：轻量级、适合小文件。</li></ul></li></ul><h2 id="唯一ID-生成"><a href="#唯一ID-生成" class="headerlink" title="唯一ID 生成"></a>唯一ID 生成</h2><h3 id="全局唯一ID"><a href="#全局唯一ID" class="headerlink" title="全局唯一ID"></a>全局唯一ID</h3><ul><li><p><a href="https://www.cnblogs.com/baiwa/p/5318432.html" target="_blank" rel="noopener">《高并发分布式系统中生成全局唯一Id汇总》</a></p><ul><li>Twitter 方案（Snowflake 算法）：41位时间戳+10位机器标识（比如IP，服务器名称等）+12位序列号(本地计数器)</li><li>Flicker 方案：MySQL自增ID + “REPLACE INTO XXX:SELECT LAST_INSERT_ID();”</li><li>UUID：缺点，无序，字符串过长，占用空间，影响检索性能。</li><li>MongoDB 方案：利用 ObjectId。缺点：不能自增。</li></ul></li><li><p><a href="https://blog.csdn.net/hdu09075340/article/details/79103851" target="_blank" rel="noopener">《TDDL 在分布式下的SEQUENCE原理》</a></p><ul><li>在数据库中创建 sequence 表，用于记录，当前已被占用的id最大值。</li><li>每台客户端主机取一个id区间（比如 1000~2000）缓存在本地，并更新 sequence 表中的id最大值记录。</li><li>客户端主机之间取不同的id区间，用完再取，使用乐观锁机制控制并发。</li></ul></li></ul><h2 id="一致性Hash算法"><a href="#一致性Hash算法" class="headerlink" title="一致性Hash算法"></a>一致性Hash算法</h2><ul><li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/631-yi-zhi-xing-ha-xi.html" target="_blank" rel="noopener">《一致性哈希算法》</a></li></ul><hr><h1 id="设计思想-amp-开发模式"><a href="#设计思想-amp-开发模式" class="headerlink" title="设计思想 &amp; 开发模式"></a>设计思想 &amp; 开发模式</h1><h2 id="DDD-Domain-driven-Design-领域驱动设计"><a href="#DDD-Domain-driven-Design-领域驱动设计" class="headerlink" title="DDD(Domain-driven Design - 领域驱动设计)"></a>DDD(Domain-driven Design - 领域驱动设计)</h2><ul><li><p><a href="https://www.cnblogs.com/netfocus/p/5548025.html" target="_blank" rel="noopener">《浅谈我对DDD领域驱动设计的理解》</a></p><ul><li>概念：DDD 主要对传统软件开发流程(分析-设计-编码)中各阶段的割裂问题而提出，避免由于一开始分析不明或在软件开发过程中的信息流转不一致而造成软件无法交付（和需求方设想不一致）的问题。DDD 强调一切以领域（Domain）为中心，强调领域专家（Domain Expert）的作用，强调先定义好领域模型之后在进行开发，并且领域模型可以指导开发（所谓的驱动）。</li><li>过程：理解领域、拆分领域、细化领域，模型的准确性取决于模型的理解深度。</li><li>设计：DDD 中提出了建模工具，比如聚合、实体、值对象、工厂、仓储、领域服务、领域事件来帮助领域建模。</li></ul></li><li><p><a href="https://www.cnblogs.com/butterfly100/p/7827870.html" target="_blank" rel="noopener">《领域驱动设计的基础知识总结》</a></p><ul><li>领域（Doamin）本质上就是问题域，比如一个电商系统，一个论坛系统等。</li><li>界限上下文（Bounded Context）：阐述子域之间的关系，可以简单理解成一个子系统或组件模块。</li><li>领域模型（Domain Model）：DDD的核心是建立（用通用描述语言、工具—领域通用语言）正确的领域模型；反应业务需求的本质，包括实体和过程；其贯穿软件分析、设计、开发 的整个过程；常用表达领域模型的方式：图、代码或文字；</li><li>领域通用语言：领域专家、开发设计人员都能立即的语言或工具。</li><li>经典分层架构：用户界面/展示层、应用层、领域层、基础设施层，是四层架构模式。</li><li>使用的模式：<ul><li>关联尽量少，尽量单项，尽量降低整体复杂度。</li><li>实体（Entity）：领域中的唯一标示，一个实体的属性尽量少，少则清晰。</li><li>值对象（Value Object）：没有唯一标识，且属性值不可变，小二简单的对象，比如Date。</li><li>领域服务（Domain Service）： 协调多个领域对象，只有方法没有状态(不存数据)；可以分为应用层服务，领域层服务、基础层服务。</li><li>聚合及聚合根（Aggregate，Aggregate Root）：聚合定义了一组具有内聚关系的相关对象的集合；聚合根是对聚合引用的唯一元素；当修改一个聚合时，必须在事务级别；大部分领域模型中，有70%的聚合通常只有一个实体，30%只有2~3个实体；如果一个聚合只有一个实体，那么这个实体就是聚合根；如果有多个实体，那么我们可以思考聚合内哪个对象有独立存在的意义并且可以和外部直接进行交互；</li><li>工厂（Factory）：类似于设计模式中的工厂模式。</li><li>仓储（Repository）：持久化到DB，管理对象，且只对聚合设计仓储。</li></ul></li></ul></li><li><p><a href="http://www.cnblogs.com/Leo_wl/p/3866629.html" target="_blank" rel="noopener">《领域驱动设计(DDD)实现之路》</a></p><ul><li>聚合：比如一辆汽车（Car）包含了引擎（Engine）、车轮（Wheel）和油箱（Tank）等组件，缺一不可。</li></ul></li><li><p><a href="http://www.hollischuang.com/archives/553" target="_blank" rel="noopener">《领域驱动设计系列（2）浅析VO、DTO、DO、PO的概念、区别和用处》</a></p></li></ul><h3 id="命令查询职责分离-CQRS"><a href="#命令查询职责分离-CQRS" class="headerlink" title="命令查询职责分离(CQRS)"></a>命令查询职责分离(CQRS)</h3><p>CQRS — Command Query Responsibility Seperation</p><ul><li><p><a href="https://www.cnblogs.com/cnblogsfans/p/4551990.html" target="_blank" rel="noopener">《领域驱动设计系列 (六)：CQRS》</a></p><ul><li>核心思想：读写分离（查询和更新在不同的方法中），不同的流程只是不同的设计方式，CQ代码分离，分布式环境中会有明显体现（有冗余数据的情况下），目的是为了高性能。</li></ul></li><li><p><a href="http://www.techweb.com.cn/network/system/2017-07-07/2553563.shtml" target="_blank" rel="noopener">《DDD CQRS架构和传统架构的优缺点比较》</a></p><ul><li>最终一致的设计理念；依赖于高可用消息中间件。</li></ul></li><li><p><a href="http://www.cnblogs.com/netfocus/p/4055346.html" target="_blank" rel="noopener">《CQRS架构简介》</a></p><ul><li>一个实现 CQRS 的抽象案例。</li></ul></li><li><p><a href="http://www.uml.org.cn/zjjs/201609221.asp" target="_blank" rel="noopener">《深度长文：我对CQRS/EventSourcing架构的思考》</a></p><ul><li>CQRS 模式分析 + 12306 抢票案例</li></ul></li></ul><h3 id="贫血，充血模型"><a href="#贫血，充血模型" class="headerlink" title="贫血，充血模型"></a>贫血，充血模型</h3><ul><li><a href="https://kb.cnblogs.com/page/520743/" target="_blank" rel="noopener">《贫血，充血模型的解释以及一些经验》</a><ul><li>失血模型：老子和儿子分别定义，相互不知道，二者实体定义中完全没有业务逻辑，通过外部Service进行关联。</li><li>贫血模型：老子知道儿子，儿子也知道老子；部分业务逻辑放到实体中；优点：各层单项依赖，结构清楚，易于维护；缺点：不符合OO思想，相比于充血模式，Service层较为厚重；</li><li>充血模型：和贫血模型类似，区别在于如何划分业务逻辑。优点：Service层比较薄，只充当Facade的角色，不和DAO打交道、复合OO思想；缺点：非单项依赖，DO和DAO之间双向依赖、和Service层的逻辑划分容易造成混乱。</li><li>肿胀模式：是一种极端情况，取消Service层、全部业务逻辑放在DO中；优点：符合OO思想、简化了分层；缺点：暴露信息过多、很多非DO逻辑也会强行并入DO。这种模式应该避免。</li><li>作者主张使用贫血模式。</li></ul></li></ul><h2 id="Actor-模式"><a href="#Actor-模式" class="headerlink" title="Actor 模式"></a>Actor 模式</h2><p>TODO</p><h2 id="响应式编程"><a href="#响应式编程" class="headerlink" title="响应式编程"></a>响应式编程</h2><h3 id="Reactor"><a href="#Reactor" class="headerlink" title="Reactor"></a>Reactor</h3><p>TODO</p><h3 id="RxJava"><a href="#RxJava" class="headerlink" title="RxJava"></a>RxJava</h3><p>TODO</p><h3 id="Vert-x"><a href="#Vert-x" class="headerlink" title="Vert.x"></a>Vert.x</h3><p>TODO</p><h2 id="DODAF2-0"><a href="#DODAF2-0" class="headerlink" title="DODAF2.0"></a>DODAF2.0</h2><ul><li><a href="http://www.360doc.com/content/16/0627/19/33945750_571201779.shtml" target="_blank" rel="noopener">《DODAF2.0方法论》</a></li><li><a href="http://blog.51cto.com/xiaoyong/1553164" target="_blank" rel="noopener">《DODAF2.0之能力视角如何落地》</a></li></ul><h2 id="Serverless"><a href="#Serverless" class="headerlink" title="Serverless"></a>Serverless</h2><p>TODO</p><h2 id="Service-Mesh"><a href="#Service-Mesh" class="headerlink" title="Service Mesh"></a>Service Mesh</h2><p>TODO</p><ul><li><a href="https://time.geekbang.org/article/2355" target="_blank" rel="noopener">《什么是Service Mesh？》</a></li></ul><hr><h1 id="项目管理"><a href="#项目管理" class="headerlink" title="项目管理"></a>项目管理</h1><h2 id="架构评审"><a href="#架构评审" class="headerlink" title="架构评审"></a>架构评审</h2><ul><li><a href="http://developer.51cto.com/art/201506/478486.htm" target="_blank" rel="noopener">《架构设计之如何评审架构设计说明书》</a></li><li><a href="https://blog.csdn.net/wireless_com/article/details/45935591" target="_blank" rel="noopener">《人人都是架构师：非功能性需求》</a></li></ul><h2 id="重构"><a href="#重构" class="headerlink" title="重构"></a>重构</h2><ul><li><a href="http://www.infoq.com/cn/articles/architect-12-rules-complete/" target="_blank" rel="noopener">《架构之重构的12条军规》</a></li></ul><h2 id="代码规范"><a href="#代码规范" class="headerlink" title="代码规范"></a>代码规范</h2><p>TODO</p><h2 id="代码-Review"><a href="#代码-Review" class="headerlink" title="代码 Review"></a>代码 Review</h2><p>制度还是制度!<br>另外，每个公司需要根据自己的需求和目标制定自己的 check list</p><ul><li><p><a href="http://www.sohu.com/a/229745352_181657" target="_blank" rel="noopener">《为什么你做不好 Code Review？》</a></p><ul><li>代码 review 做的好，在于制度建设。</li></ul></li><li><p><a href="https://blog.csdn.net/uxyheaven/article/details/49773619" target="_blank" rel="noopener">《从零开始Code Review》</a></p></li><li><p><a href="https://www.cnblogs.com/zuoping/p/5477047.html" target="_blank" rel="noopener">《Code Review Checklist》</a></p></li><li><p><a href="https://dzone.com/articles/java-code-review-checklist" target="_blank" rel="noopener">《Java Code Review Checklist》</a></p></li><li><p><a href="https://blog.csdn.net/legend0011/article/details/45585575" target="_blank" rel="noopener">《如何用 gitlab 做 code review》</a></p></li></ul><h2 id="RUP"><a href="#RUP" class="headerlink" title="RUP"></a>RUP</h2><ul><li><a href="https://blog.csdn.net/apanious/article/details/51011946" target="_blank" rel="noopener">《运用RUP 4+1视图方法进行软件架构设计》</a></li></ul><h2 id="看板管理"><a href="#看板管理" class="headerlink" title="看板管理"></a>看板管理</h2><ul><li><a href="https://blog.csdn.net/tkchen/article/details/51637643" target="_blank" rel="noopener">《说说看板在项目中的应用》</a></li></ul><h2 id="SCRUM"><a href="#SCRUM" class="headerlink" title="SCRUM"></a>SCRUM</h2><p>SCRUM - 争球</p><ul><li>3个角色:Product Owner(PO) 产品负责人;Scrum Master（SM），推动Scrum执行;Team 开发团队。</li><li>3个工件：Product Backlog 产品TODOLIST，含优先级;Sprint Backlog 功能开发 TODO LIST；燃尽图；</li><li>五个价值观：专注、勇气、公开、承诺、尊重。</li></ul><ul><li><p><a href="https://blog.csdn.net/inny100_100/article/details/54633757" target="_blank" rel="noopener">《敏捷项目管理流程-Scrum框架最全总结！》</a></p></li><li><p><a href="https://blog.csdn.net/superkunkun/article/details/52951142" target="_blank" rel="noopener">《敏捷其实很简单3—敏捷方法之scrum》</a></p></li></ul><h2 id="敏捷开发"><a href="#敏捷开发" class="headerlink" title="敏捷开发"></a>敏捷开发</h2><p>TODO</p><h2 id="极限编程（XP）"><a href="#极限编程（XP）" class="headerlink" title="极限编程（XP）"></a>极限编程（XP）</h2><p>XP - eXtreme Programming</p><ul><li><p><a href="http://www.woshipm.com/pmd/406917.html" target="_blank" rel="noopener">《主流敏捷开发方法：极限编程XP》</a></p><ul><li>是一种指导开发人员的方法论。</li><li><p>4大价值：</p><ul><li>沟通：鼓励口头沟通，提高效率。</li><li>简单：够用就好。</li><li>反馈：及时反馈、通知相关人。</li><li>勇气：提倡拥抱变化，敢于重构。</li></ul></li><li><p>5个原则：快速反馈、简单性假设、逐步修改、提倡更改（小步快跑）、优质工作（保证质量的前提下保证小步快跑）。</p></li><li>5个工作：阶段性冲刺；冲刺计划会议；每日站立会议；冲刺后review；回顾会议。</li></ul></li></ul><h2 id="结对编程"><a href="#结对编程" class="headerlink" title="结对编程"></a>结对编程</h2><p>边写码，边review。能够增强代码质量、减少bug。</p><ul><li><a href="http://www.baike.com/wiki/%E7%BB%93%E5%AF%B9%E7%BC%96%E7%A8%8B" target="_blank" rel="noopener">《结对编程》</a></li></ul><h2 id="FMEA管理模式"><a href="#FMEA管理模式" class="headerlink" title="FMEA管理模式"></a>FMEA管理模式</h2><p>TODO</p><hr><h1 id="通用业务术语"><a href="#通用业务术语" class="headerlink" title="通用业务术语"></a>通用业务术语</h1><p>TODO</p><hr><h1 id="技术趋势"><a href="#技术趋势" class="headerlink" title="技术趋势"></a>技术趋势</h1><p>TODO</p><hr><h1 id="政策、法规"><a href="#政策、法规" class="headerlink" title="政策、法规"></a>政策、法规</h1><p>TODO</p><h2 id="法律"><a href="#法律" class="headerlink" title="法律"></a>法律</h2><h3 id="严格遵守刑法253法条"><a href="#严格遵守刑法253法条" class="headerlink" title="严格遵守刑法253法条"></a>严格遵守刑法253法条</h3><p>我国刑法第253条之一规定：</p><blockquote><ul><li>国家机关或者金融、电信、交通、教育、医疗等单位的工作人员，违反国家规定，将本单位在履行职责或者提供服务过程中获得的公民个人信息，出售或者非法提供给他人，情节严重的，处3年以下有期徒刑或者拘役，并处或者单处罚金。</li><li>窃取或者以其他方法非法获取上述信息，情节严重的，依照前款的规定处罚。</li><li>单位犯前两款罪的，对单位判处罚金，并对其直接负责的主管人员和其他直接责任人员，依照各该款的规定处罚。</li></ul></blockquote><p>最高人民法院、最高人民检察院关于执行《中华人民共和国刑法》确定罪名的补充规定（四）规定：触犯刑法第253条之一第1款之规定，构成“出售、非法提供公民个人信息罪”；触犯刑法第253条之一第2款之规定，构成“非法获取公民个人信息罪”</p><ul><li><a href="https://baike.baidu.com/item/%E9%9D%9E%E6%B3%95%E8%8E%B7%E5%8F%96%E5%85%AC%E6%B0%91%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF%E7%BD%AA" target="_blank" rel="noopener">《非法获取公民个人信息罪》</a></li></ul><hr><h1 id="架构师素质"><a href="#架构师素质" class="headerlink" title="架构师素质"></a>架构师素质</h1><ul><li><p><a href="http://hellojava.info/?p=430" target="_blank" rel="noopener">《架构师画像》</a></p><ul><li>业务理解和抽象能力</li><li>NB的代码能力</li><li>全面：1. 在面对业务问题上，架构师脑海里是否会浮现出多种技术方案；2. 在做系统设计时是否考虑到了足够多的方方面面；3. 在做系统设计时是否考虑到了足够多的方方面面；</li><li>全局：是否考虑到了对上下游的系统的影响。</li><li>权衡：权衡投入产出比；优先级和节奏控制；</li></ul></li><li><p><a href="http://www.infoq.com/cn/articles/architecture-optimization-and-design-the-architect-must-know" target="_blank" rel="noopener">《关于架构优化和设计，架构师必须知道的事情》</a></p><ul><li>要去考虑的细节：模块化、轻耦合、无共享架构；减少各个组件之前的依赖、注意服务之间依赖所有造成的链式失败及影响等。</li><li>基础设施、配置、测试、开发、运维综合考虑。</li><li>考虑人、团队、和组织的影响。</li></ul></li><li><p><a href="https://www.zhihu.com/question/19841397" target="_blank" rel="noopener">《如何才能真正的提高自己，成为一名出色的架构师？》</a></p></li><li><p><a href="https://blog.csdn.net/sanbingyutuoniao123/article/details/54144129" target="_blank" rel="noopener">《架构师的必备素质和成长途径》</a></p><ul><li>素质：业务理解、技术广度、技术深度、丰富经验、沟通能力、动手能力、美学素养。</li><li>成长路径：2年积累知识、4年积累技能和组内影响力、7年积累部门内影响力、7年以上积累跨部门影响力。</li></ul></li><li><p><a href="http://blog.51cto.com/frankfan/1248401" target="_blank" rel="noopener">《架构设计师—你在哪层楼？》</a></p><ul><li>第一层的架构师看到的只是产品本身</li><li>第二层的架构师不仅看到自己的产品，还看到了整体的方案</li><li>第三层的架构师看到的是商业价值</li></ul></li></ul><hr><h1 id="团队管理"><a href="#团队管理" class="headerlink" title="团队管理"></a>团队管理</h1><p>TODO</p><h2 id="招聘"><a href="#招聘" class="headerlink" title="招聘"></a>招聘</h2><hr><h1 id="资讯"><a href="#资讯" class="headerlink" title="资讯"></a>资讯</h1><h2 id="行业资讯"><a href="#行业资讯" class="headerlink" title="行业资讯"></a>行业资讯</h2><ul><li><a href="http://36kr.com/" target="_blank" rel="noopener">36kr</a></li><li><a href="http://www.techweb.com.cn/" target="_blank" rel="noopener">Techweb</a></li></ul><h2 id="公众号列表"><a href="#公众号列表" class="headerlink" title="公众号列表"></a>公众号列表</h2><p>TODO</p><h2 id="博客"><a href="#博客" class="headerlink" title="博客"></a>博客</h2><h3 id="团队博客"><a href="#团队博客" class="headerlink" title="团队博客"></a>团队博客</h3><ul><li><a href="http://jm.taobao.org/" target="_blank" rel="noopener">阿里中间件博客</a></li><li><a href="https://tech.meituan.com" target="_blank" rel="noopener">美团点评技术团队博客</a></li></ul><h3 id="个人博客"><a href="#个人博客" class="headerlink" title="个人博客"></a>个人博客</h3><ul><li><a href="http://www.ruanyifeng.com/" target="_blank" rel="noopener">阮一峰的网络日志</a></li><li><a href="https://coolshell.cn/" target="_blank" rel="noopener">酷壳 - COOLSHELL-陈皓</a></li><li><a href="http://hellojava.info/" target="_blank" rel="noopener">hellojava-阿里毕玄</a></li><li><a href="http://cmsblogs.com/" target="_blank" rel="noopener">Cm’s Blog</a></li><li><a href="http://blog.didispace.com/" target="_blank" rel="noopener">程序猿DD-翟永超-《Spring Cloud微服务实战》作者</a></li></ul><h2 id="综合门户、社区"><a href="#综合门户、社区" class="headerlink" title="综合门户、社区"></a>综合门户、社区</h2><p><strong>国内：</strong></p><ul><li><a href="http://csdn.net" target="_blank" rel="noopener">CSDN</a><br>老牌技术社区、不必解释。</li><li><a href="http://www.51cto.com/" target="_blank" rel="noopener">51cto.com</a></li><li><a href="http://www.iteye.com/" target="_blank" rel="noopener">ITeye</a><ul><li>偏 Java 方向</li></ul></li><li><a href="https://www.cnblogs.com" target="_blank" rel="noopener">博客园</a></li><li><a href="http://www.tom.net/" target="_blank" rel="noopener">ChinaUnix</a><ul><li>偏 Linux 方向</li></ul></li><li><a href="https://www.oschina.net/" target="_blank" rel="noopener">开源中国社区</a></li><li><a href="http://www.open-open.com/" target="_blank" rel="noopener">深度开源</a></li><li><p><a href="http://www.jobbole.com/" target="_blank" rel="noopener">伯乐在线</a></p><ul><li>涵盖 IT职场、Web前端、后端、移动端、数据库等方面内容，偏技术端。</li></ul></li><li><p><a href="http://www.itpub.net/" target="_blank" rel="noopener">ITPUB</a></p></li><li><a href="https://cloud.tencent.com/developer/column" target="_blank" rel="noopener">腾讯云— 云+社区</a></li><li><a href="https://yq.aliyun.com/" target="_blank" rel="noopener">阿里云— 云栖社区</a></li><li><a href="https://www.ibm.com/developerworks/cn/" target="_blank" rel="noopener">IBM DeveloperWorks</a></li><li><a href="https://toutiao.io/" target="_blank" rel="noopener">开发者头条</a></li><li><a href="http://www.linkedkeeper.com" target="_blank" rel="noopener">LinkedKeeper</a></li></ul><p><strong>国外：</strong></p><ul><li><a href="https://dzone.com" target="_blank" rel="noopener">DZone</a></li><li><a href="https://www.reddit.com" target="_blank" rel="noopener">Reddit</a></li></ul><h2 id="问答、讨论类社区"><a href="#问答、讨论类社区" class="headerlink" title="问答、讨论类社区"></a>问答、讨论类社区</h2><ul><li><a href="https://segmentfault.com" target="_blank" rel="noopener">segmentfault</a><ul><li>问答+专栏</li></ul></li><li><a href="https://www.zhihu.com/" target="_blank" rel="noopener">知乎</a></li><li><a href="https://stackoverflow.com/" target="_blank" rel="noopener">stackoverflow</a></li></ul><h2 id="行业数据分析"><a href="#行业数据分析" class="headerlink" title="行业数据分析"></a>行业数据分析</h2><ul><li><a href="http://report.iresearch.cn/" target="_blank" rel="noopener">艾瑞网</a></li><li><p><a href="https://www.questmobile.com.cn" target="_blank" rel="noopener">QUEST MOBILE</a></p></li><li><p><a href="http://data.stats.gov.cn/" target="_blank" rel="noopener">国家数据</a></p></li></ul><h2 id="专项网站"><a href="#专项网站" class="headerlink" title="专项网站"></a>专项网站</h2><ul><li><p>测试:</p><ul><li><a href="http://www.ltesting.net/" target="_blank" rel="noopener">领测国际</a></li><li><a href="https://www.testwo.com/" target="_blank" rel="noopener">测试窝</a></li><li><a href="https://testerhome.com" target="_blank" rel="noopener">TesterHome</a></li></ul></li><li><p>运维:</p><ul><li><a href="http://www.yunweipai.com/" target="_blank" rel="noopener">运维派</a></li><li><a href="https://www.abcdocker.com/" target="_blank" rel="noopener">Abcdocker</a></li></ul></li><li><p>Java:</p><ul><li><a href="http://www.importnew.com/" target="_blank" rel="noopener">ImportNew</a><ul><li>专注于 Java 技术分享</li></ul></li><li><a href="https://howtodoinjava.com/" target="_blank" rel="noopener">HowToDoInJava</a><ul><li>英文博客</li></ul></li></ul></li><li><p>安全</p><ul><li><a href="https://www.2cto.com/" target="_blank" rel="noopener">红黑联盟</a></li><li><a href="http://www.freebuf.com/" target="_blank" rel="noopener">FreeBuf</a></li></ul></li><li><p>大数据</p><ul><li><a href="http://www.thebigdata.cn/" target="_blank" rel="noopener">中国大数据</a></li></ul></li><li><p>其他专题网站：</p><ul><li><a href="http://www.dockerinfo.net/" target="_blank" rel="noopener">DockerInfo</a><ul><li>专注于 Docker 应用及咨询、教程的网站。</li></ul></li><li><a href="https://www.linuxidc.com/" target="_blank" rel="noopener">Linux公社</a><ul><li>Linux 主题社区</li></ul></li></ul></li></ul><h2 id="其他类"><a href="#其他类" class="headerlink" title="其他类"></a>其他类</h2><ul><li><a href="https://github.com/TeamStuQ/skill-map" target="_blank" rel="noopener">程序员技能图谱</a></li></ul><h2 id="推荐参考书"><a href="#推荐参考书" class="headerlink" title="推荐参考书"></a>推荐参考书</h2><h3 id="在线电子书"><a href="#在线电子书" class="headerlink" title="在线电子书"></a>在线电子书</h3><ul><li><a href="https://github.com/forezp/SpringCloudLearning" target="_blank" rel="noopener">《深入理解Spring Cloud与微服务构建》</a></li></ul><ul><li><a href="http://techforum-img.cn-hangzhou.oss-pub.aliyun-inc.com/1523849261680/AliTech101_RD.pdf" target="_blank" rel="noopener">《阿里技术参考图册-研发篇》</a></li><li><p><a href="http://techforum-img.cn-hangzhou.oss-pub.aliyun-inc.com/1523848064814/AliTech101_Algorithms.pdf" target="_blank" rel="noopener">《阿里技术参考图册-算法篇》</a></p></li><li><p><a href="http://dpurl.cn/n/1lqcX" target="_blank" rel="noopener">《2018美团点评技术年货（合辑）》70M</a></p></li><li><p><a href="http://www.infoq.com/cn/architect/" target="_blank" rel="noopener">InfoQ《架构师》月刊</a></p></li><li><p><a href="https://www.w3cschool.cn/architectroad/" target="_blank" rel="noopener">《架构师之路》</a></p></li></ul><h3 id="纸质书"><a href="#纸质书" class="headerlink" title="纸质书"></a>纸质书</h3><h4 id="开发方面"><a href="#开发方面" class="headerlink" title="开发方面"></a>开发方面</h4><ul><li>《阿里巴巴Java开发手册》<a href="https://union-click.jd.com/jdc?d=bVKwZQ" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=阿里巴巴Java开发手册" target="_blank" rel="noopener">淘宝</a></li></ul><h4 id="架构方面"><a href="#架构方面" class="headerlink" title="架构方面"></a>架构方面</h4><ul><li>《软件架构师的12项修炼：技术技能篇》<a href="https://union-click.jd.com/jdc?d=gXvRd8" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=软件架构师的12项修炼：技术技能篇" target="_blank" rel="noopener">淘宝</a></li><li>《架构之美》<a href="https://union-click.jd.com/jdc?d=xJit5I" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=架构之美" target="_blank" rel="noopener">淘宝</a></li><li>《分布式服务架构》<a href="https://union-click.jd.com/jdc?d=JS5Od9" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=分布式服务架构" target="_blank" rel="noopener">淘宝</a></li><li>《聊聊架构》 <a href="https://union-click.jd.com/jdc?d=FHooH4" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=聊聊架构" target="_blank" rel="noopener">淘宝</a></li><li>《云原生应用架构实践》<a href="https://union-click.jd.com/jdc?d=orkJSj" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=云原生应用架构实践" target="_blank" rel="noopener">淘宝</a></li><li>《亿级流量网站架构核心技术》<a href="https://union-click.jd.com/jdc?d=RnOSP5" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=亿级流量网站架构核心技术" target="_blank" rel="noopener">淘宝</a></li><li>《淘宝技术这十年》<a href="https://union-click.jd.com/jdc?d=LwrDfD" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=淘宝技术这十年" target="_blank" rel="noopener">淘宝</a></li><li>《企业IT架构转型之道-中台战略思想与架构实战》 <a href="https://union-click.jd.com/jdc?d=89pAEm" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=企业IT架构转型之道" target="_blank" rel="noopener">淘宝</a></li></ul><h4 id="技术管理方面"><a href="#技术管理方面" class="headerlink" title="技术管理方面"></a>技术管理方面</h4><ul><li>《CTO说》<a href="https://union-click.jd.com/jdc?d=zhTZyr" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=CTO说" target="_blank" rel="noopener">淘宝</a></li><li>《技术管理之巅》<a href="https://union-click.jd.com/jdc?d=LgRBUW" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=技术管理之巅" target="_blank" rel="noopener">淘宝</a></li><li>《网易一千零一夜：互联网产品项目管理实战》<a href="https://union-click.jd.com/jdc?d=jcRz2r" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=网易一千零一夜：互联网产品项目管理实战" target="_blank" rel="noopener">淘宝</a></li></ul><h4 id="基础理论-1"><a href="#基础理论-1" class="headerlink" title="基础理论"></a>基础理论</h4><ul><li>《数学之美》<a href="https://union-click.jd.com/jdc?d=ghIES2" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=数学之美" target="_blank" rel="noopener">淘宝</a></li><li>《编程珠玑》<a href="https://union-click.jd.com/jdc?d=YmhdEu" target="_blank" rel="noopener">京东</a> <a href="https://s.taobao.com/search?q=编程珠玑" target="_blank" rel="noopener">淘宝</a></li></ul><h4 id="工具方面"><a href="#工具方面" class="headerlink" title="工具方面"></a>工具方面</h4><p>TODO</p><h4 id="大数据方面"><a href="#大数据方面" class="headerlink" title="大数据方面"></a>大数据方面</h4><hr><h1 id="技术资源"><a href="#技术资源" class="headerlink" title="技术资源"></a>技术资源</h1><h2 id="开源资源"><a href="#开源资源" class="headerlink" title="开源资源"></a>开源资源</h2><ul><li><p><a href="https://github.com" target="_blank" rel="noopener">github</a></p></li><li><p><a href="https://www.apache.org/index.html" target="_blank" rel="noopener">Apache 软件基金会</a></p></li></ul><h2 id="手册、文档、教程"><a href="#手册、文档、教程" class="headerlink" title="手册、文档、教程"></a>手册、文档、教程</h2><p><strong>国内：</strong></p><ul><li><a href="http://w3cschool.cn" target="_blank" rel="noopener">W3Cschool</a></li><li><p><a href="http://www.runoob.com/" target="_blank" rel="noopener">Runoob.com</a></p><ul><li>HTML 、 CSS、XML、Java、Python、PHP、设计模式等入门手册。</li></ul></li><li><p><a href="https://love2.io/" target="_blank" rel="noopener">Love2.io</a></p><ul><li>很多很多中文在线电子书，是一个全新的开源技术文档分享平台。</li></ul></li><li><a href="http://gitbook.cn/" target="_blank" rel="noopener">gitbook.cn</a><ul><li>付费电子书。</li></ul></li><li><a href="http://www.apachecn.org/" target="_blank" rel="noopener">ApacheCN</a><ul><li>AI、大数据方面系列中文文档。</li></ul></li></ul><p><strong>国外：</strong></p><ul><li><a href="http://www.quickcode.co/" target="_blank" rel="noopener">Quick Code</a><ul><li>免费在线技术教程。</li></ul></li><li><a href="http://gitbook.com" target="_blank" rel="noopener">gitbook.com</a><ul><li>有部分中文电子书。</li></ul></li><li><a href="https://www.cheatography.com/" target="_blank" rel="noopener">Cheatography</a><ul><li>Cheat Sheets 大全，单页文档网站。</li></ul></li><li><a href="https://www.tutorialspoint.com/index.htm" target="_blank" rel="noopener">Tutorialspoint</a><ul><li>知名教程网站，提供Java、Python、JS、SQL、大数据等高质量入门教程。</li></ul></li></ul><h2 id="在线课堂"><a href="#在线课堂" class="headerlink" title="在线课堂"></a>在线课堂</h2><ul><li><a href="http://www.xuetuwuyou.com/" target="_blank" rel="noopener">学徒无忧</a></li><li><a href="https://time.geekbang.org/" target="_blank" rel="noopener">极客时间</a></li><li><a href="https://segmentfault.com/lives" target="_blank" rel="noopener">segmentfault</a></li><li><a href="https://new.stuq.org/course/explore" target="_blank" rel="noopener">斯达克学院</a></li><li><a href="http://nowcoder.com" target="_blank" rel="noopener">牛客网</a></li><li><a href="https://www.jikexueyuan.com/" target="_blank" rel="noopener">极客学院</a></li><li><a href="http://edu.51cto.com/" target="_blank" rel="noopener">51CTO学院</a></li></ul><h2 id="会议、活动"><a href="#会议、活动" class="headerlink" title="会议、活动"></a>会议、活动</h2><ul><li><a href="http://www.infoq.com/cn/qcon/" target="_blank" rel="noopener">QCon</a></li><li><a href="https://archsummit.com" target="_blank" rel="noopener">ArchSummit</a></li><li><a href="http://www.thegitc.com/" target="_blank" rel="noopener">GITC全球互联网技术大会</a></li></ul><p><strong>活动发布平台:</strong></p><ul><li><a href="http://www.huodongxing.com/" target="_blank" rel="noopener">活动行</a></li></ul><h2 id="常用APP"><a href="#常用APP" class="headerlink" title="常用APP"></a>常用APP</h2><ul><li><a href="https://time.geekbang.org" target="_blank" rel="noopener">极客时间</a></li><li><a href="https://www.igetget.com" target="_blank" rel="noopener">得到</a></li></ul><h2 id="找工作"><a href="#找工作" class="headerlink" title="找工作"></a>找工作</h2><ul><li><a href="https://www.zhipin.com" target="_blank" rel="noopener">Boss直聘</a></li><li><a href="https://www.lagou.com" target="_blank" rel="noopener">拉勾网</a></li><li><a href="https://www.liepin.com" target="_blank" rel="noopener">猎聘</a></li><li><a href="https://cn.100offer.com/" target="_blank" rel="noopener">100Offer</a></li></ul><h2 id="工具"><a href="#工具" class="headerlink" title="工具"></a>工具</h2><ul><li><a href="https://s.geekbang.org/" target="_blank" rel="noopener">极客搜索</a><ul><li>技术文章搜索引擎。</li></ul></li></ul><h2 id="代码托管"><a href="#代码托管" class="headerlink" title="代码托管"></a>代码托管</h2><ul><li><a href="https://coding.net" target="_blank" rel="noopener">Coding</a></li><li><a href="https://gitee.com/" target="_blank" rel="noopener">码云</a></li></ul><h2 id="文件服务"><a href="#文件服务" class="headerlink" title="文件服务"></a>文件服务</h2><ul><li>七牛</li><li>又拍云</li></ul><h2 id="综合云服务商"><a href="#综合云服务商" class="headerlink" title="综合云服务商"></a>综合云服务商</h2><ul><li>阿里云</li><li>腾讯云</li><li>百度云</li><li>新浪云</li><li>金山云</li><li><a href="https://amazonaws-china.com/cn/" target="_blank" rel="noopener">亚马逊云(AWS)</a></li><li><a href="https://cloud.google.com/?hl=zh-cn" target="_blank" rel="noopener">谷歌云</a></li><li><a href="https://azure.microsoft.com/zh-cn/" target="_blank" rel="noopener">微软云</a></li></ul><h3 id="VPS"><a href="#VPS" class="headerlink" title="VPS"></a>VPS</h3><ul><li><a href="http://linode.com" target="_blank" rel="noopener">Linode</a></li></ul><!-- rebuild by neat -->]]></content>
    
    <summary type="html">
    
      
      
        &lt;!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --&gt;&lt;hr&gt;&lt;p&gt;文章摘录自：&lt;a href=&quot;https://github.com/xingshaocheng/architect-awesome&quot; t
      
    
    </summary>
    
      <category term="后端" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/"/>
    
      <category term="架构" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/%E6%9E%B6%E6%9E%84/"/>
    
    
      <category term="架构" scheme="https://www.mingyugu.com/tags/%E6%9E%B6%E6%9E%84/"/>
    
      <category term="图谱" scheme="https://www.mingyugu.com/tags/%E5%9B%BE%E8%B0%B1/"/>
    
  </entry>
  
  <entry>
    <title>加密技术解析</title>
    <link href="https://www.mingyugu.com/encryption-analysis.html"/>
    <id>https://www.mingyugu.com/encryption-analysis.html</id>
    <published>2018-05-09T07:51:36.000Z</published>
    <updated>2018-05-09T07:51:36.000Z</updated>
    
    <content type="html"><![CDATA[<!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --><hr><p>本篇文章主要介绍一下常见的加密算法种类，并且解析一下各个算法的应用场景以及优缺利弊。</p><hr><h1 id="加密技术分类"><a href="#加密技术分类" class="headerlink" title="加密技术分类"></a>加密技术分类</h1><blockquote><p>首先，我们了解一下什么是加密技术？简单来说，加密技术就是利用技术手段把重要的数据变为乱码（加密），当需要使用时再用相同或不同的手段还原（解密）。我们常用加密技术通常分为两大类：”对称式”和”非对称式”，当然还有“散列算法”。</p></blockquote><h2 id="1-对称加密算法"><a href="#1-对称加密算法" class="headerlink" title="1.对称加密算法"></a>1.对称加密算法</h2><blockquote><p>对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的，之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。</p></blockquote><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/encryption-analysis-1.jpg-blog.post" alt="示意图"></div><div class="image-caption">示意图</div></figure><blockquote><p>下面介绍一下主流的对称加密算法：</p></blockquote><h3 id="1-DES"><a href="#1-DES" class="headerlink" title="(1) DES"></a>(1) DES</h3><blockquote><p>DES（Data Encryption Standard）：研究过加密的朋友十分熟悉，老牌的加密方法了。这是一个可逆的对称加密算法，也是应用最广泛的密钥系统。好像是从1977年美国政府开始采用的。大家都看过U-571吧，<code>DES</code>的思路就是参照二战时期盟军缴获的德军恩格玛加密机，不过<code>DES</code>比那个要牛多了。到现在为止，除了差分分析法和线性分析法外只有暴力穷举法了。前两种方法不是密码学家或数学家都不懂，不过穷举<code>DES</code>，以现有我们大家都可以掌握的技术手段，恐怕没个几百上千年下不来啊。不过，咱们破解不了，不能说明就没人或没有设备破解不了。正因为如此，所以才衍生出了3重<code>DES</code>加密。常规的<code>DES</code>密钥是64位的(实际上有8位是校验用)，而<code>3DES</code>是128位(当然有16位也是校验用)。增加密钥长度并增加运算量来防止破解，并在后来的<code>AES</code>出来之前确定为过度方案。不过现在即便有了<code>AES</code>，<code>3DES</code>也没少用，它依然很牛。</p></blockquote><h3 id="2-3DES"><a href="#2-3DES" class="headerlink" title="(2) 3DES"></a>(2) 3DES</h3><blockquote><p>3DES（Triple DES）：是基于<code>DES</code>，对一块数据用三个不同的密钥进行三次加密，强度更高。</p></blockquote><h3 id="3-AES"><a href="#3-AES" class="headerlink" title="(3) AES"></a>(3) AES</h3><blockquote><p>AES（Advanced Encryption Standard）：高级加密标准，也叫<code>Rijndael</code>算法，是下一代的加密算法标准，用来代替原来的<code>DES</code>加密方法的，优点是速度快，安全级别高。。<code>AES</code>是一个使用128为分组块的分组加密算法，分组块和128、192或256位的密钥一起作为输入，对4×4的字节数组上进行操作。众所周之<code>AES</code>是种十分高效的算法，尤其在8位架构中，这源于它面向字节的设计。<code>AES</code>适用于8位的小型单片机或者普通的32位微处理器,并且适合用专门的硬件实现，硬件实现能够使其吞吐量（每秒可以到达的加密/解密bit数）达到十亿量级。同样，其也适用于<code>RFID</code>系统。</p></blockquote><h3 id="4-Blowfish"><a href="#4-Blowfish" class="headerlink" title="(4) Blowfish"></a>(4) Blowfish</h3><blockquote><p>它使用变长的密钥，长度可达448位，运行速度很快。</p></blockquote><h3 id="5-RC2、RC4"><a href="#5-RC2、RC4" class="headerlink" title="(5) RC2、RC4"></a>(5) RC2、RC4</h3><blockquote><p>对称算法，用变长密钥对大量数据进行加密，比<code>DES</code>快。</p></blockquote><h3 id="6-RC6"><a href="#6-RC6" class="headerlink" title="(6) RC6"></a>(6) RC6</h3><blockquote><p>RC6：有个算法<code>RC4</code>听说过吧，在无线传输和串行流传输的加密领域占有相当的分量。据说<code>RC6</code>是同一帮人研究出来的，不过它和<code>RC4</code>没太大关系啊。它是<code>AES</code>方案征集时的候选算法之一，但是没有<code>Rijndael</code>算法那么幸运。<code>RC6</code>据说可以抵抗所有已知的攻击，并能够提供<code>AES</code>所要求的安全性，它也是相当优秀的一种可逆加密算法。不过当初它为什么没能当选为<code>AES</code>算法就不得而知了，不知道当时有没有给评委们足够的商务费用啊。</p></blockquote><h3 id="7-SM4"><a href="#7-SM4" class="headerlink" title="(7) SM4"></a>(7) SM4</h3><blockquote><p>国家密码局的隐蔽不公开的商用算法，在国内民用和商用的，除这些都不容许使用外，其他的都可以使用</p></blockquote><h2 id="2-非对称加密算法"><a href="#2-非对称加密算法" class="headerlink" title="2.非对称加密算法"></a>2.非对称加密算法</h2><blockquote><p>非对称式加密就是加密和解密所使用的不是同一个密钥，通常有两个密钥，称为”公钥”和”私钥”，它们两个必需配对使用，否则不能打开加密文件。发送双方A,B事先均生成一堆密匙，然后A将自己的公有密匙发送给B，B将自己的公有密匙发送给A，如果A要给B发送消 息，则先需要用B的公有密匙进行消息加密，然后发送给B端，此时B端再用自己的私有密匙进行消息解密，B向A发送消息时为同样的道理。</p></blockquote><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/encryption-analysis-2.jpg-blog.post" alt="示意图"></div><div class="image-caption">示意图</div></figure><blockquote><p>下面介绍一下主流的对称加密算法：</p></blockquote><h3 id="1-RSA"><a href="#1-RSA" class="headerlink" title="(1) RSA"></a>(1) RSA</h3><blockquote><p>RSA：由<code>RSA</code>公司发明，是一个支持变长密钥的公共密钥算法，需要加密的文件块的长度也是可变的。<code>RSA</code>在国外早已进入实用阶段，已研制出多种高速的<code>RSA</code>的专用芯片。</p></blockquote><h3 id="2-DSA"><a href="#2-DSA" class="headerlink" title="(2) DSA"></a>(2) DSA</h3><blockquote><p>DSA（Digital Signature Algorithm）：数字签名算法，是一种标准的<code>DSS</code>（数字签名标准），严格来说不算加密算法。</p></blockquote><h3 id="3-ECC"><a href="#3-ECC" class="headerlink" title="(3) ECC"></a>(3) ECC</h3><blockquote><p>ECC（Elliptic Curves Cryptography）：椭圆曲线密码编码学。<code>ECC</code>和<code>RSA</code>相比，具有多方面的绝对优势，主要有：抗攻击性强。相同的密钥长度，其抗攻击性要强很多倍。计算量小，处理速度快。<code>ECC</code>总的速度比<code>RSA</code>、<code>DSA</code>要快得多。存储空间占用小。<code>ECC</code>的密钥尺寸和系统参数与<code>RSA</code>、<code>DSA</code>相比要小得多，意味着它所占的存贮空间要小得多。这对于加密算法在<code>IC</code>卡上的应用具有特别重要的意义。带宽要求低。当对长消息进行加解密时，三类密码系统有相同的带宽要求，但应用于短消息时<code>ECC</code>带宽要求却低得多。带宽要求低使<code>ECC</code>在无线网络领域具有广泛的应用前景。</p></blockquote><h3 id="4-Elgamal"><a href="#4-Elgamal" class="headerlink" title="(4) Elgamal"></a>(4) Elgamal</h3><h3 id="5-背包算法"><a href="#5-背包算法" class="headerlink" title="(5) 背包算法"></a>(5) 背包算法</h3><h3 id="6-Rabin"><a href="#6-Rabin" class="headerlink" title="(6) Rabin"></a>(6) Rabin</h3><h3 id="7-D-H"><a href="#7-D-H" class="headerlink" title="(7) D-H"></a>(7) D-H</h3><h3 id="8-SM2"><a href="#8-SM2" class="headerlink" title="(8) SM2"></a>(8) SM2</h3><blockquote><p>国家密码局的隐蔽不公开的商用算法，在国内民用和商用的，除这些都不容许使用外，其他的都可以使用</p></blockquote><h2 id="3-散列算法"><a href="#3-散列算法" class="headerlink" title="3.散列算法"></a>3.散列算法</h2><blockquote><p>散列算法，又称哈希函数，是一种单向加密算法。在信息安全技术中，经常需要验证消息的完整性，散列(<code>Hash</code>)函数提供了这一服务，它对不同长度的输入消息，产生固定长度的输出。这个固定长度的输出称为原输入消息的”散列”或”消息摘要”(Message digest)<br>。散列算法不算加密算法，因为其结果是不可逆的，既然是不可逆的，那么当然不是用来加密的，而是用于签名。主要用于验证，防止信息被修。具体用途如：文件校验、数字签名、鉴权协议等。下面介绍一下主流的散列算法：</p></blockquote><h3 id="1-MD5"><a href="#1-MD5" class="headerlink" title="(1) MD5"></a>(1) MD5</h3><blockquote><p>MD5：非常著名的哈希算法，不可逆算法。网站登录、操作系统的用户认证、文件完整性和数字签名等领域广泛应用。不可逆算法一般做的都比较绝，例如彩虹加密狗，只告诉你一个余数，你能知道原来的除数和被除数吗？只把运算过的数据相比较，而不非得知道原数据，这样就完成了认证过程。要想破解<code>MD5</code>的密码，即使采用现在最快的巨型计算机，据说也要运算100万年以上。不过，加密和解密都是数学领域的竞赛，每一种加密算法都或多或少的存在漏洞或缺陷，<code>MD5</code>看上去真那么牢不可破吗？和<code>MD5</code>同样有名的是山东大学的王小云教授。在2004年的国际密码大会上王小云宣布了她的研究小组完成了对<code>MD5</code>杂凑函数的杂凑冲撞，也就是从理论上说使用MD5的数字签名可以伪造。这也意味着MD5可能需要和其他加密算法共用才可以保证数字签名的安全。不过，说<code>MD5</code>已被破解，那也有些杞人忧天了。可以肯定的告诉你，网络上所有针对<code>MD5</code>提供的破解服务，全部都是查询用字典法暴力破解后的数据包，没有一个是真正伪造出来的数字签名，那些号称有几百亿条的记录对<code>MD5</code>庞大算法来说太小了。试想想，动用美国军方的巨型计算机，利用王小云研究理论，来破解我们的一个单片机或网站认证程序？没必要吧。所以MD5依然可用，只不过再加上<code>3DE</code>S、<code>AES</code>或<code>SHA</code>来防止字典就更好了。</p></blockquote><h3 id="2-SHA"><a href="#2-SHA" class="headerlink" title="(2) SHA"></a>(2) SHA</h3><blockquote><p>SHA：<code>SHA</code>家族的五个算法，分别是<code>SHA-1</code>、<code>SHA-224</code>、<code>SHA-256</code>、<code>SHA-384</code>，和<code>SHA-512</code>，由美国国家安全局（NSA）所设计，并由美国国家标准与技术研究院（NIST）发布；是美国的政府标准。后四者有时并称为SHA-2。<code>SHA-1</code>在许多安全协定中广为使用，包括<code>TLS</code>和<code>SSL</code>、<code>PGP</code>、<code>SSH</code>、<code>S/MIME</code>和<code>IPsec</code>，曾被视为是<code>MD5</code>（更早之前被广为使用的杂凑函数）的后继者。但<code>SHA-1</code>和<code>MD5</code>一样，也被王小云教授找出杂凑冲撞的漏洞，并且在2017年<code>Google</code>也强势宣布成功攻破<code>SHA-1</code>加密，不过这些都是停留在理论上的，必经碰撞破解是要花费很高的代价的。举个栗子：“100个GPU大约需要计算一年，大概要花费几十万美元”，当然如果你有钱那也是可以的。不过话虽如此，使用<code>SHA-256</code>将是以后的趋势。</p></blockquote><h3 id="3-HMAC"><a href="#3-HMAC" class="headerlink" title="(3) HMAC"></a>(3) HMAC</h3><blockquote><p>HMAC：是密钥相关的哈希运算消息认证码（Hash-based Message Authentication Code）,<code>HMAC</code>运算利用哈希算法，以一个密钥和一个消息为输入，生成一个消息摘要作为输出。也就是说<code>HMAC</code>是需要一个密钥的。所以，<code>HMAC_SHA1</code>也是需要一个密钥的，而<code>SHA1</code>不需要。</p></blockquote><h2 id="4-其他常用算法"><a href="#4-其他常用算法" class="headerlink" title="4.其他常用算法"></a>4.其他常用算法</h2><h3 id="1-Base64"><a href="#1-Base64" class="headerlink" title="(1) Base64"></a>(1) Base64</h3><blockquote><p>Base64：其实不是安全领域下的加密解密算法，只能算是一个编码算法，通常用于把二进制数据编码为可写的字符形式的数据，对数据内容进行编码来适合传输(可以对img图像编码用于传输)。这是一种可逆的编码方式。编码后的数据是一个字符串，其中包含的字符为：A-Z、a-z、0-9、+、/，共64个字符(26 + 26 + 10 + 1 + 1 = 64，其实是65个字符，“=”是填充字符。<code>Base64</code>要求把每三个8Bit的字节转换为四个6Bit的字节(3<em>8 = 4</em>6 = 24)，然后把6Bit再添两位高位0，组成四个8Bit的字节，也就是说，转换后的字符串理论上将要比原来的长1/3。原文的字节最后不够3个的地方用0来补足，转换时Base64编码用=号来代替。这就是为什么有些<code>Base64</code>编码会以一个或两个等号结束的原因，中间是不可能出现等号的，但等号最多只有两个。其实不用”=”也不耽误解码，之所以用”=”，可能是考虑到多段编码后的Base64字符串拼起来也不会引起混淆。)</p></blockquote><blockquote><p><code>Base64</code>编码是从二进制到字符的过程，像一些中文字符用不同的编码转为二进制时，产生的二进制是不一样的，所以最终产生<code>Base64</code>字符也不一样。例如”上网”对应<code>UTF-8</code>格式的<code>Base64</code>编码是”5LiK572R”，对应<code>GB2312</code>格式的<code>Base64</code>编码是”yc/N+A==”。</p></blockquote><blockquote><p>标准的<code>Base64</code>并不适合直接放在URL里传输，因为URL编码器会把标准<code>Base64</code>中的“/”和“+”字符变为形如“%XX”的形式，而这些“%”号在存入数据库时还需要再进行转换，因为ANSI SQL中已将“%”号用作通配符。为解决此问题，可采用一种用于URL的改进<code>Base64</code>编码，它不在末尾填充’=’号，并将标准<code>Base64</code>中的“+”和“/”分别改成了“-”和“<em>”，这样就免去了在URL编解码和数据库存储时所要作的转换，避免了编码信息长度在此过程中的增加，并统一了数据库、表单等处对象标识符的格式。另有一种用于正则表达式的改进<code>Base64</code>变种，它将“+”和“/”改成了“!”和“-”，因为“+”，“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。此外还有一些变种，它们将“+/”改为“</em>-”或“.<em>”（用作编程语言中的标识符名称）或“.-”（用于XML中的Nmtoken）甚至“</em>:”（用于XML中的Name）。</p></blockquote><h3 id="2-TEA"><a href="#2-TEA" class="headerlink" title="(2) TEA"></a>(2) TEA</h3><blockquote><p>TEA：它是一种分组加密算法，也是可逆算法。短小精悍。它的实现非常简单，超不过10行代码。<code>TEA</code>算法每一次可以操作64位(8字节)，采用128位(16字节)作为密钥，算法采用迭代的形式，尽管32轮迭代已经足够了，但是最好的迭代轮数是64轮。数据流加密可能比较适合，因为据说早期的QQ采用过<code>TEA</code>加密算法。</p></blockquote><hr><h1 id="加密算法比较"><a href="#加密算法比较" class="headerlink" title="加密算法比较"></a>加密算法比较</h1><h2 id="1-对称加密算法-加解密密钥相同"><a href="#1-对称加密算法-加解密密钥相同" class="headerlink" title="1.对称加密算法(加解密密钥相同)"></a>1.对称加密算法(加解密密钥相同)</h2><table><thead><tr><th style="text-align:center">名称</th><th style="text-align:center">密钥长度</th><th style="text-align:center">运算速度</th><th style="text-align:center">安全性</th><th style="text-align:center">资源消耗</th></tr></thead><tbody><tr><td style="text-align:center">DES</td><td style="text-align:center">56位</td><td style="text-align:center">较快</td><td style="text-align:center">低</td><td style="text-align:center">中</td></tr><tr><td style="text-align:center">3DES</td><td style="text-align:center">112位或168位</td><td style="text-align:center">慢</td><td style="text-align:center">中</td><td style="text-align:center">高</td></tr><tr><td style="text-align:center">AES</td><td style="text-align:center">128、192、256位</td><td style="text-align:center">快</td><td style="text-align:center">高</td><td style="text-align:center">低</td></tr></tbody></table><h2 id="2-非对称算法（加密密钥和解密密钥不同）"><a href="#2-非对称算法（加密密钥和解密密钥不同）" class="headerlink" title="2.非对称算法（加密密钥和解密密钥不同）"></a>2.非对称算法（加密密钥和解密密钥不同）</h2><table><thead><tr><th style="text-align:center">名称</th><th style="text-align:center">成熟度</th><th style="text-align:center">安全性(取决于密钥长度)</th><th style="text-align:center">运算速度</th><th style="text-align:center">资源消耗</th></tr></thead><tbody><tr><td style="text-align:center">RSA</td><td style="text-align:center">高</td><td style="text-align:center">高</td><td style="text-align:center">慢</td><td style="text-align:center">高</td></tr><tr><td style="text-align:center">DSA</td><td style="text-align:center">高</td><td style="text-align:center">高</td><td style="text-align:center">慢</td><td style="text-align:center">只能用于数字签名</td></tr><tr><td style="text-align:center">ECC</td><td style="text-align:center">低</td><td style="text-align:center">高</td><td style="text-align:center">快</td><td style="text-align:center">低（计算量小,存储空间占用小,带宽要求低）</td></tr></tbody></table><h2 id="3-散列算法-1"><a href="#3-散列算法-1" class="headerlink" title="3.散列算法"></a>3.散列算法</h2><table><thead><tr><th style="text-align:center">名称</th><th style="text-align:center">安全性</th><th style="text-align:center">速度</th></tr></thead><tbody><tr><td style="text-align:center">SHA-1</td><td style="text-align:center">高</td><td style="text-align:center">慢</td></tr><tr><td style="text-align:center">MD5</td><td style="text-align:center">中</td><td style="text-align:center">快</td></tr></tbody></table><h2 id="4-对称与非对称算法"><a href="#4-对称与非对称算法" class="headerlink" title="4.对称与非对称算法"></a>4.对称与非对称算法</h2><table><thead><tr><th style="text-align:center">名称</th><th style="text-align:center">密钥管理</th><th style="text-align:center">安全性</th><th style="text-align:center">速度</th></tr></thead><tbody><tr><td style="text-align:center">对称算法</td><td style="text-align:center">比较难,不适合互联网,一般用于内部系统</td><td style="text-align:center">中</td><td style="text-align:center">快，好几个数量级(软件加解密速度至少快100倍,每秒可以加解密数M比特数据),适合大数据量的加解密处</td></tr><tr><td style="text-align:center">非对称算法</td><td style="text-align:center">密钥容易管理</td><td style="text-align:center">高</td><td style="text-align:center">慢，适合小数据量加解密或数据签名</td></tr></tbody></table><hr><h1 id="加密算法选择（从性能和安全性综合）"><a href="#加密算法选择（从性能和安全性综合）" class="headerlink" title="加密算法选择（从性能和安全性综合）"></a>加密算法选择（从性能和安全性综合）</h1><blockquote><p>对称加密：<code>AES</code>(128位)</p></blockquote><blockquote><p>非对称加密：<code>ECC</code>(160位)、<code>RSA</code>(1024)</p></blockquote><blockquote><p>消息摘要：<code>MD5</code></p></blockquote><blockquote><p>数字签名：<code>DSA</code></p></blockquote><blockquote><p>速度排名（估测，未验证）：<code>IDEA</code>&lt;<code>DES</code>&lt;<code>GASTI28</code>&lt;<code>GOST</code>&lt;<code>AES</code>&lt;<code>RC4</code>&lt;<code>TEA</code>&lt;<code>Blowfish</code></p></blockquote><hr><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><blockquote><ol><li>加密算法是可逆的，用来对敏感数据进行保护。散列算法(签名算法、哈希算法)是不可逆的，主要用于身份验证。</li><li>对称加密算法使用同一个密匙加密和解密，速度快，适合给大量数据加密。对称加密客户端和服务端使用同一个密匙，存在被抓包破解的风险。</li><li>非对称加密算法使用公钥加密，私钥解密，私钥签名，公钥验签。安全性比对称加密高，但速度较慢。非对称加密使用两个密匙，服务端和客户端密匙不一样，私钥放在服务端，黑客一般是拿不到的，安全性高。</li><li>Base64不是安全领域下的加解密算法，只是一个编码算法，通常用于把二进制数据编码为可写的字符形式的数据，特别适合在http，mime协议下的网络快速传输数据。UTF-8和GBK中文的Base64编码结果是不同的。采用Base64<br>编码不仅比较简短，同时也具有不可读性，即所编码的数据不会被人用肉眼所直接看到，但这种方式很初级，很简单。Base64可以对图片文件进行编码传输。</li><li>https协议广泛用于万维网上安全敏感的通讯，例如交易支付方面。它的主要作用可以分为两种：一种是建立一个信息安全通道，来保证数据传输的安全；另一种就是确认网站的真实性。</li><li>大量数据加密建议采用对称加密算法，提高加解密速度；小量的机密数据，可以采用非对称加密算法。在实际的操作过程中，我们通常采用的方式是：采用非对称加密算法管理对称算法的密钥，然后用对称加密算法加密数据，这样我们就集成了两类加密算法的优点，既实现了加密速度快的优点，又实现了安全方便管理密钥的优点。</li><li>MD5标准密钥长度128位（128位是指二进制位。二进制太长，所以一般都改写成16进制，每一位16进制数可以代替4位二进制数，所以128位二进制数写成16进制就变成了128/4=32位。16位加密就是从32位MD5散列中把中间16位提取出来）；sha1标准密钥长度160<br>位(比MD5摘要长32位)，Base64转换后的字符串理论上将要比原来的长1/3。</li></ol></blockquote><!-- rebuild by neat -->]]></content>
    
    <summary type="html">
    
      
      
        &lt;!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --&gt;&lt;hr&gt;&lt;p&gt;本篇文章主要介绍一下常见的加密算法种类，并且解析一下各个算法的应用场景以及优缺利弊。&lt;/p&gt;&lt;hr&gt;&lt;h1 id=&quot;加密技术分类&quot;&gt;&lt;a
      
    
    </summary>
    
      <category term="后端" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/"/>
    
      <category term="加密算法" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95/"/>
    
    
      <category term="对称加密算法" scheme="https://www.mingyugu.com/tags/%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95/"/>
    
      <category term="非对称加密算法" scheme="https://www.mingyugu.com/tags/%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95/"/>
    
      <category term="散列算法" scheme="https://www.mingyugu.com/tags/%E6%95%A3%E5%88%97%E7%AE%97%E6%B3%95/"/>
    
  </entry>
  
  <entry>
    <title>Java动态加载数据库驱动</title>
    <link href="https://www.mingyugu.com/java-dyna-load-db-drv.html"/>
    <id>https://www.mingyugu.com/java-dyna-load-db-drv.html</id>
    <published>2018-05-07T08:41:12.000Z</published>
    <updated>2018-05-07T08:41:12.000Z</updated>
    
    <content type="html"><![CDATA[<!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --><hr><p>本篇文章主要介绍了<code>JDBC</code>驱动注册的几种常用方式和<code>Java</code>是如何动态的加载并注册多个<code>JDBC</code>数据库驱动的。</p><hr><h1 id="JDBC驱动注册"><a href="#JDBC驱动注册" class="headerlink" title="JDBC驱动注册"></a>JDBC驱动注册</h1><blockquote><p><code>JDBC</code>提供了独立于数据库的统一<code>API</code>，<code>MySQL</code>、<code>Oracle</code>等数据库公司都可以基于这个标准接口来进行开发。包括<code>java .sql</code>包下的<code>Driver</code>、<code>Connection</code>、<code>Statement</code>、<code>ResultSet</code>是<code>JDBC</code>提供的接口。而<code>DriverManager</code>是用于管理<code>JDBC</code>驱动的服务类，主要用于获取<code>Connection</code>对象（此类中全是静态方法）。</p></blockquote><blockquote><p>当我们查看<code>API</code>，在<code>Driver</code>接口中，明确要求：<code>Driver</code>接口是每个驱动程序类必须实现的接口。<code>Java SQL</code>框架允许多个数据库驱动程序。每个驱动程序都应该提供一个实现<code>Driver</code>接口的类。并且明确：在加载某一<code>Driver</code>类时，它应该创建自己的实例并向 <code>DriverManager</code>注册该实例。因此，我们有了以下三种常用的使用方法：</p></blockquote><h2 id="1-反射"><a href="#1-反射" class="headerlink" title="1.反射"></a>1.反射</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Class.forName(<span class="string">"com.mysql.jdbc.Driver"</span>);</span><br></pre></td></tr></table></figure><blockquote><p>这种方式是不是很眼熟，相信这种也是大家最常见和最常用的方式了，而且我一般也推荐使用这种方式，不会对具体的驱动类产生依赖（就是不用import package了）。</p></blockquote><h2 id="2-DriverManager"><a href="#2-DriverManager" class="headerlink" title="2.DriverManager"></a>2.DriverManager</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Driver driver = <span class="keyword">new</span> Driver(); <span class="comment">//com.mysql.jdbc.Driver  </span></span><br><span class="line">DriverManager.registerDriver(driver);</span><br></pre></td></tr></table></figure><blockquote><p>或</p></blockquote><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">DriverManager.registerDriver(<span class="keyword">new</span> com.mysql.jdbc.Driver());</span><br></pre></td></tr></table></figure><blockquote><p>这种方式会造成<code>DriverManager</code>中产生两个一样的驱动(其实就是实例化了两次)，并会对具体的驱动类产生依赖。正常情况下我是不推荐使用的，但是在特定需求下还是很有作用的，具体的我会在后面详叙。</p></blockquote><h2 id="3-系统属性"><a href="#3-系统属性" class="headerlink" title="3.系统属性"></a>3.系统属性</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">System.setProperty(<span class="string">"jdbc.drivers"</span>,<span class="string">"com.mysql.jdbc.Driver"</span>);</span><br></pre></td></tr></table></figure><blockquote><p>这种方式是通过系统的属性设置注册驱动，如果要注册多个驱动，则<code>System.setProperty(&quot;jdbc.drivers&quot;, &quot;com.mysql.jdbc.Driver:com.oracle.jdbc.Driver&quot;);</code>，虽然不会对具体的驱动类产生依赖；但注册不太方便，所以很少使用。</p></blockquote><h2 id="4-综合分析"><a href="#4-综合分析" class="headerlink" title="4.综合分析"></a>4.综合分析</h2><blockquote><p>上面我们说了三种常用的JDBC驱动的注册方式，其中因为第三种很少使用，所以我们就不过多讨论了，这里我们主要来对比一下第一种和第二种注册方式的异同。这两种注册方式有什么不同呢？第一种方式是利用反射机制来完成的，直接看的话，我们会想<code>Class.forName (driverClass)</code>只能帮助我们得到<code>Driver</code>的<code>Class</code>对象啊，为什么会帮我们完成注册了呢。从上边对<code>Driver()</code>的<code>API</code>的查阅，<code>API</code><br>要求：在加载某一<code>Driver</code>类时，它应该创建自己的实例并向<code>DriverManager</code>注册该实例。所以我们猜想是在类加载时，就自动完成了注册。而第二种方式，相对比较好理解，就是先创建数据库驱动，然后调用<code>registerDriver()</code>方法完成注册。下边去具体看一下源码来分析一下：</p></blockquote><blockquote><p>第一种方式，这种方式是怎么通过只要获得<code>Driver</code>的<code>Class</code>对象就可以完成注册呢，下边看一下其<code>com.mysql.jdbc.Driver</code> 的源码：</p></blockquote><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Driver</span> <span class="keyword">extends</span> <span class="title">NonRegisteringDriver</span> <span class="keyword">implements</span> <span class="title">java</span>.<span class="title">sql</span>.<span class="title">Driver</span> </span>&#123;</span><br><span class="line">    <span class="comment">// ~ Static fields/initializers    </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">// Register ourselves with the DriverManager    </span></span><br><span class="line">    <span class="comment">//    </span></span><br><span class="line">    <span class="keyword">static</span> &#123;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            java.sql.DriverManager.registerDriver(<span class="keyword">new</span> Driver());</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">catch</span> (SQLException E) &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> RuntimeException(<span class="string">"Can't register driver!"</span>);</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><blockquote><p>从上边可以看到，它是用静态代码块实现的。根据类加载机制，当执行<code>Class.forName(driverClass)</code>获取其<code>Class</code>对象时，<code>com.mysql.jdbc.Driver</code>就会被<code>JVM</code>加载连接，并进行初始化，初始化就会执行静态代码块，也就会执行下边这句代码：</p></blockquote><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">java.sql.DriverManager.registerDriver(<span class="keyword">new</span> Driver());</span><br></pre></td></tr></table></figure><blockquote><p>大家有没有发现这已经和第二种方式一样了，所以有没有想到点什么(￣︶￣)</p></blockquote><blockquote><p>第二种方法，我们看下<code>JDK1.7</code>下的<code>DriverManger</code>的<code>registerDriver()</code>方法：</p></blockquote><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></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">synchronized</span> <span class="keyword">void</span> <span class="title">registerDriver</span><span class="params">(java.sql.Driver driver)</span> </span></span><br><span class="line"><span class="function">    <span class="keyword">throws</span> SQLException </span>&#123;</span><br><span class="line">    <span class="comment">/* Register the driver if it has not already been added to our list */</span></span><br><span class="line">    <span class="keyword">if</span>(driver != <span class="keyword">null</span>) &#123;</span><br><span class="line">        registeredDrivers.addIfAbsent(<span class="keyword">new</span> DriverInfo(driver));</span><br><span class="line">    &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">        <span class="comment">// This is for compatibility with the original DriverManager  </span></span><br><span class="line">        <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException();</span><br><span class="line">    &#125;</span><br><span class="line">    println(<span class="string">"registerDriver:"</span> + driver);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>从其源码，可以看到<code>DriverManger</code>将要注册的驱动程序信息封装到了<code>DriverInfo</code>中，然后放进了一个<code>List</code>中。在后边获得连接时会再用到。</p></blockquote><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// List of registered JDBC drivers  </span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">final</span> <span class="keyword">static</span> CopyOnWriteArrayList&lt;DriverInfo&gt; registeredDrivers = <span class="keyword">new</span> CopyOnWriteArrayList&lt;DriverInfo&gt;();</span><br></pre></td></tr></table></figure><blockquote><p>Ok，分析完两种方式后，相信聪明的童鞋已经知道了结果。这里我们在总结一下，对于上边的两种驱动注册方式，我们一般采用第一种方式，因为第二种方式有以下两个问题：</p></blockquote><blockquote><p>（1）由于实例化了<code>com.mysql.jdbc.Driver.class</code>，导致必须导入该类(就是要把这个类import进去)，从而具体驱动产生了依赖，不方便扩展代码。</p></blockquote><blockquote><p>（2）<code>DriverManager.registerDriver(new com.mysql.jdbc.Driver());</code>，实例化的时候注册了一次，加载的时候其在内部也执行静态代码块，这相当于实例化了两个<code>Driver</code>对象。</p></blockquote><hr><h1 id="动态加载JDBC驱动"><a href="#动态加载JDBC驱动" class="headerlink" title="动态加载JDBC驱动"></a>动态加载JDBC驱动</h1><h2 id="1-问题背景"><a href="#1-问题背景" class="headerlink" title="1.问题背景"></a>1.问题背景</h2><blockquote><p>在同一套系统中，要支持连接访问各种流行的数据库，以及同一数据库的不同版本，例如：<code>Oracle 9i</code>、<code>Oracle 10g</code>、<code>Oracle 11g</code>、<code>Oracle 12c</code>、<code>SQL Server 2000</code>、<code>SQL Server 2005</code>、<code>SQL Server 2008</code>、<code>SQL Server 2012</code>等，其中就会碰到一些问题，就是不同的数据库，数据库驱动肯定不同，对于这个问题到好解决，只需要将相应的驱动加入即可。然而对于同种数据库，不同版本时，而且不同版本的数据库驱动不仅不兼容，同时存在还会出现冲突，例如，能满足<code>SQL Server 2000</code>的驱动，就不能满足<code>SQL Server 2012</code>，而能满足<code>SQL Server 2012</code>的驱动，就不能满足<code>SQL Server 2000</code>。对于这种问题，面前能想到的解决方案就是动态加载数据库驱动，当用到某种数据库时，就加载其对应的数据库驱动，使用完以后就卸载驱动。</p></blockquote><h2 id="2-代码实现"><a href="#2-代码实现" class="headerlink" title="2.代码实现"></a>2.代码实现</h2><blockquote><p>在此只列出核心代码，就是动态加载数据库驱动的类，只是此处暂时没有考虑到数据库连接池的问题，当选择动态加载数据库驱动时，数据库连接池需要自己实现。这里只是提供了一个思路，并不一定是最优实现。</p></blockquote><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.mygu.dynamic.service.impl;</span><br><span class="line"><span class="keyword">import</span> com.mygu.dynamic.model.DataSourceInfo;</span><br><span class="line"><span class="keyword">import</span> com.mygu.dynamic.service.IDynamicLoaderService;</span><br><span class="line"><span class="keyword">import</span> org.springframework.stereotype.Service;</span><br><span class="line"><span class="keyword">import</span> java.net.URL;</span><br><span class="line"><span class="keyword">import</span> java.net.URLClassLoader;</span><br><span class="line"><span class="keyword">import</span> java.sql.Connection;</span><br><span class="line"><span class="keyword">import</span> java.sql.Driver;</span><br><span class="line"><span class="keyword">import</span> java.sql.DriverManager;</span><br><span class="line"><span class="keyword">import</span> java.util.HashMap;</span><br><span class="line"><span class="keyword">import</span> java.util.Map;</span><br><span class="line"><span class="keyword">import</span> java.util.Properties;</span><br><span class="line"><span class="keyword">import</span> javax.annotation.PostConstruct;</span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 动态加载JDBC数据库驱动服务类</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="meta">@Service</span></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">DynamicLoaderService</span> <span class="keyword">implements</span> <span class="title">IDynamicLoaderService</span> </span>&#123;</span><br><span class="line">    <span class="comment">// 保存数据库连接信息</span></span><br><span class="line">    <span class="keyword">private</span> Map&lt;String, DataSourceInfo&gt; dataSourceInfos = <span class="keyword">null</span>;</span><br><span class="line">    <span class="comment">// 保存数据库相应驱动JAR的路径</span></span><br><span class="line">    <span class="keyword">private</span> Map&lt;String, String&gt; paths = <span class="keyword">null</span>;</span><br><span class="line">    <span class="comment">// 缓存对应的Driver对象</span></span><br><span class="line">    <span class="keyword">private</span> Map&lt;String, Driver&gt; drivers = <span class="keyword">null</span>;</span><br><span class="line">    <span class="keyword">private</span> URLClassLoader classLoader;</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">    *</span></span><br><span class="line"><span class="comment">    * <span class="doctag">@throws</span> Exception</span></span><br><span class="line"><span class="comment">    */</span></span><br><span class="line">    <span class="meta">@PostConstruct</span></span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">init</span><span class="params">()</span> <span class="keyword">throws</span> Exception </span>&#123;</span><br><span class="line">        dataSourceInfos = <span class="keyword">new</span> HashMap&lt;String, DataSourceInfo&gt;();</span><br><span class="line">        <span class="comment">// 此处只已Oracle 9i和Oracle 10g为例，其它数据库信息同理的方式增加即可</span></span><br><span class="line">        DataSourceInfo oracle9Info = <span class="keyword">new</span> DataSourceInfo();</span><br><span class="line">        oracle9Info.setDriver(<span class="string">"oracle.jdbc.driver.OracleDriver"</span>);</span><br><span class="line">        oracle9Info.setUrl(<span class="string">"jdbc:oracle:thin:@192.168.0.101:1521:ORACLE"</span>);</span><br><span class="line">        oracle9Info.setUsername(<span class="string">"system"</span>);</span><br><span class="line">        oracle9Info.setPassword(<span class="string">"system"</span>);</span><br><span class="line">        dataSourceInfos.put(<span class="string">"oracle9"</span>, oracle9Info);</span><br><span class="line">        DataSourceInfo oracle10Info = <span class="keyword">new</span> DataSourceInfo();</span><br><span class="line">        oracle10Info.setDriver(<span class="string">"oracle.jdbc.driver.OracleDriver"</span>);</span><br><span class="line">        oracle10Info.setUrl(<span class="string">"jdbc:oracle:thin:@192.168.0.102:1521:orcl"</span>);</span><br><span class="line">        oracle10Info.setUsername(<span class="string">"system"</span>);</span><br><span class="line">        oracle10Info.setPassword(<span class="string">"system"</span>);</span><br><span class="line">        dataSourceInfos.put(<span class="string">"oracle10"</span>, oracle10Info);</span><br><span class="line">        <span class="comment">// 将数据库对应驱动jar放置容器中</span></span><br><span class="line">        paths = <span class="keyword">new</span> HashMap&lt;String, String&gt;();</span><br><span class="line">        paths.put(<span class="string">"oracle9"</span>, <span class="string">"/driver/ojdbc6.jar"</span>);</span><br><span class="line">        paths.put(<span class="string">"oracle10"</span>, <span class="string">"/driver/ojdbc14.jar"</span>);</span><br><span class="line">        <span class="comment">// 初始化drivers</span></span><br><span class="line">        drivers = <span class="keyword">new</span> HashMap&lt;String, Driver&gt;();</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">        <span class="function"><span class="keyword">public</span> Connection <span class="title">getConnection</span><span class="params">(String dbType)</span> <span class="keyword">throws</span> Exception </span>&#123;</span><br><span class="line">        Connection conn = <span class="keyword">null</span>;</span><br><span class="line">        Driver driver = drivers.get(dbType);</span><br><span class="line">        DataSourceInfo dataSourceInfo = dataSourceInfos.get(dbType);</span><br><span class="line">        <span class="keyword">if</span> (driver == <span class="keyword">null</span>) &#123;</span><br><span class="line">            URL jarUrl = <span class="keyword">this</span>.getClass().getResource(paths.get(dbType));</span><br><span class="line">            classLoader = <span class="keyword">new</span> URLClassLoader(<span class="keyword">new</span> URL[] &#123; jarUrl &#125;);</span><br><span class="line">            Class&lt;?&gt; driverClass = classLoader.loadClass(dataSourceInfo.getDriver());</span><br><span class="line">            driver = (Driver) driverClass.newInstance();</span><br><span class="line">            drivers.put(dbType, driver);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="comment">// 注册驱动</span></span><br><span class="line">        DriverManager.registerDriver(driver);</span><br><span class="line">        Properties properties = <span class="keyword">new</span> Properties();</span><br><span class="line">        properties.put(<span class="string">"user"</span>, dataSourceInfo.getUsername());</span><br><span class="line">        properties.put(<span class="string">"password"</span>, dataSourceInfo.getPassword());</span><br><span class="line">        conn = DriverManager.getConnection(dataSourceInfo.getUrl(), properties);</span><br><span class="line">        <span class="comment">// 卸载驱动</span></span><br><span class="line">        DriverManager.deregisterDriver(driver);</span><br><span class="line">        <span class="keyword">return</span> conn;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="3-其他方案"><a href="#3-其他方案" class="headerlink" title="3.其他方案"></a>3.其他方案</h2><blockquote><p>上面提供了一个自己如何通过动态注册和卸载<code>JDBC</code>驱动的方式来实现的思路，并且没有实现连接池。其实在现在很多开源的数据库连接池的框架中，已经自带实现了动态数据源的注册和卸载，并且还包含<code>SQL</code>的使用工具、性能监测等很多功能。如果想详细了解的话，这里我推荐一个阿里开源的<code>Druid</code>连接池框架，这是一个支持多线程和异步的连接池框架，比之其他开源的主流连接池，例如<code>C3P0</code>、<code>DBCP</code>等单线程框架性能和可扩展性都要好很多，有兴趣的可以深入了解一下。</p></blockquote><!-- rebuild by neat -->]]></content>
    
    <summary type="html">
    
      
      
        &lt;!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --&gt;&lt;hr&gt;&lt;p&gt;本篇文章主要介绍了&lt;code&gt;JDBC&lt;/code&gt;驱动注册的几种常用方式和&lt;code&gt;Java&lt;/code&gt;是如何动态的加载并注册多个
      
    
    </summary>
    
      <category term="后端" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/"/>
    
      <category term="语言" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/%E8%AF%AD%E8%A8%80/"/>
    
      <category term="Java" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/%E8%AF%AD%E8%A8%80/Java/"/>
    
    
      <category term="Java" scheme="https://www.mingyugu.com/tags/Java/"/>
    
      <category term="JDBC" scheme="https://www.mingyugu.com/tags/JDBC/"/>
    
      <category term="数据库驱动" scheme="https://www.mingyugu.com/tags/%E6%95%B0%E6%8D%AE%E5%BA%93%E9%A9%B1%E5%8A%A8/"/>
    
  </entry>
  
  <entry>
    <title>喀麦隆贸易便利化项目文档（cntfecs）</title>
    <link href="https://www.mingyugu.com/centfecs-doc.html"/>
    <id>https://www.mingyugu.com/centfecs-doc.html</id>
    <published>2018-04-08T03:13:11.000Z</published>
    <updated>2018-04-08T03:13:11.000Z</updated>
    
    <content type="html"><![CDATA[<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><div id="security">  <div class="input-container">  <input type="password" class="form-control" id="pass" placeholder="请输入解密密码" />    <label for="pass">请输入解密密码</label>    <div class="bottom-line"></div>  </div></div><div id="decryptionError" style="display: none;">密码错误，请重新输入</div><div id="noContentError" style="display: none;">没有内容显示</div><div id="encrypt-blog" style="display:none">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</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
    
    <summary type="html">
    
      此文章已经加密，需要解密后才能阅读&lt;/br&gt;
    
    </summary>
    
      <category term="项目文档" scheme="https://www.mingyugu.com/categories/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/"/>
    
    
      <category term="Document" scheme="https://www.mingyugu.com/tags/Document/"/>
    
  </entry>
  
  <entry>
    <title>RedHat Nginx自启动配置</title>
    <link href="https://www.mingyugu.com/redhat-nginx-auto-startup.html"/>
    <id>https://www.mingyugu.com/redhat-nginx-auto-startup.html</id>
    <published>2018-02-26T02:38:18.000Z</published>
    <updated>2018-02-26T02:38:18.000Z</updated>
    
    <content type="html"><![CDATA[<!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --><hr><p>在本文档中，描述如何在<code>RedHat</code>操作系统上设置<code>Nginx</code>自启动</p><hr><h1 id="设置文件的访问权限"><a href="#设置文件的访问权限" class="headerlink" title="设置文件的访问权限"></a>设置文件的访问权限</h1><blockquote><p>a+x ==&gt; all user can execute 所有用户可执行</p></blockquote><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">$ chmod a+x /etc/init.d/nginx</span><br></pre></td></tr></table></figure><h1 id="设置自启动"><a href="#设置自启动" class="headerlink" title="设置自启动"></a>设置自启动</h1><blockquote><p>将命令加入到rc.local文件中，这样开机的时候nginx就默认启动了，通过以下<code>vi</code>命令打开编辑</p></blockquote><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">$ vi /etc/rc.local</span><br></pre></td></tr></table></figure><blockquote><p>并加入一行以下代码，保存并退出，下次重启会生效</p></blockquote><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">/etc/init.d/nginx start</span><br></pre></td></tr></table></figure><!-- rebuild by neat -->]]></content>
    
    <summary type="html">
    
      
      
        &lt;!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --&gt;&lt;hr&gt;&lt;p&gt;在本文档中，描述如何在&lt;code&gt;RedHat&lt;/code&gt;操作系统上设置&lt;code&gt;Nginx&lt;/code&gt;自启动&lt;/p&gt;&lt;hr&gt;&lt;h
      
    
    </summary>
    
      <category term="后端" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/"/>
    
      <category term="Web服务器" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/Web%E6%9C%8D%E5%8A%A1%E5%99%A8/"/>
    
      <category term="Nginx" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/Web%E6%9C%8D%E5%8A%A1%E5%99%A8/Nginx/"/>
    
    
      <category term="Nginx" scheme="https://www.mingyugu.com/tags/Nginx/"/>
    
      <category term="RedHat" scheme="https://www.mingyugu.com/tags/RedHat/"/>
    
  </entry>
  
  <entry>
    <title>Windows下配置Node环境</title>
    <link href="https://www.mingyugu.com/windows-node-settings.html"/>
    <id>https://www.mingyugu.com/windows-node-settings.html</id>
    <published>2017-06-14T01:47:32.000Z</published>
    <updated>2017-06-14T01:47:32.000Z</updated>
    
    <content type="html"><![CDATA[<!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --><hr><p>此文档主要简述如何在<code>windows</code>（本文使用的是<code>windows7</code> 64位操作系统)下配置<code>Node</code>环境并运行<code>NiceFish</code>项目(基于<code>Angular2</code>的开源项目)：</p><hr><h1 id="安装WebStorm（前端开发IDE）"><a href="#安装WebStorm（前端开发IDE）" class="headerlink" title="安装WebStorm（前端开发IDE）"></a>安装WebStorm（前端开发IDE）</h1><blockquote><p>官网地址：<a href="https://www.jetbrains.com/webstorm/" target="_blank" rel="noopener">https://www.jetbrains.com/webstorm/</a></p></blockquote><h2 id="1-注册码"><a href="#1-注册码" class="headerlink" title="(1) 注册码"></a>(1) 注册码</h2><blockquote><p>因为WebStorm是收费软件，下面是开源社区提供的注册码（如果有能力希望支持付费正版）。如果注册失败，请添加<code>0.0.0.0 account.jetbrains.com</code>到<code>hosts</code>(<code>C:\Windows\System32\drivers\etc</code>)</p></blockquote><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">EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJEQyIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IkFDIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiRFBOIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUFMiLCJwYWlkVXBUbyI6IjIwMTgtMTAtMTQifSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAxOC0xMC0xNCJ9LHsiY29kZSI6IlBDIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In0seyJjb2RlIjoiUlNVIiwicGFpZFVwVG8iOiIyMDE4LTEwLTE0In1dLCJoYXNoIjoiNjk0NDAzMi8wIiwiZ3JhY2VQZXJpb2REYXlzIjowLCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-Gbb7jeR8JWOVxdUFaXfJzVU/O7c7xHQyaidCnhYLp7v32zdeXiHUU7vlrrm5y9ZX0lmQk3plCCsW+phrC9gGAPd6WDKhkal10qVNg0larCR2tQ3u8jfv1t2JAvWrMOJfFG9kKsJuw1P4TozZ/E7Qvj1cupf/rldhoOmaXMyABxNN1af1RV3bVhe4FFZe0p7xlIJF/ctZkFK62HYmh8V3AyhUNTzrvK2k+t/tlDJz2LnW7nYttBLHld8LabPlEEjpTHswhzlthzhVqALIgvF0uNbIJ5Uwpb7NqR4U/2ob0Z+FIcRpFUIAHEAw+RLGwkCge5DyZKfx+RoRJ/In4q/UpA==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==</span><br></pre></td></tr></table></figure><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/windows-node-settings-1.png-blog.post" alt="示例图"></div><div class="image-caption">示例图</div></figure><hr><h1 id="安装配置Node环境"><a href="#安装配置Node环境" class="headerlink" title="安装配置Node环境"></a>安装配置Node环境</h1><h2 id="1-安装nvm（Node-Version-Manager）"><a href="#1-安装nvm（Node-Version-Manager）" class="headerlink" title="(1) 安装nvm（Node Version Manager）"></a>(1) 安装nvm（Node Version Manager）</h2><blockquote><p>GitHup主页：<a href="https://github.com/coreybutler/nvm-windows" target="_blank" rel="noopener">https://github.com/coreybutler/nvm-windows</a><br>nvm-windows下载地址：<a href="https://github.com/coreybutler/nvm-windows" target="_blank" rel="noopener">https://github.com/coreybutler/nvm-windows</a><br>安装过程比较简单，安装完成后到安装目录（默认是<code>C:\Users\GMY\AppData\Roaming\nvm</code>），修改<code>settings.txt</code>文件如下（根据自己的安装目录稍作修改）：</p></blockquote><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">root: C:\Users\GMY\AppData\Roaming\nvm </span><br><span class="line">path: C:\Program Files\nodejs </span><br><span class="line">arch: 64 </span><br><span class="line">proxy: none</span><br><span class="line">node_mirror: http://npm.taobao.org/mirrors/node/ </span><br><span class="line">npm_mirror: https://npm.taobao.org/mirrors/npm/</span><br></pre></td></tr></table></figure><blockquote><p>验证<code>nvm</code>是否安装成功，可以运行如下命令，并且查看环境变量中是否已经自动创建了<code>NVM_HOME</code>和<code>NVM_SYSLINK</code></p></blockquote><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">$ nvm version</span><br></pre></td></tr></table></figure><h2 id="2-安装node和npm"><a href="#2-安装node和npm" class="headerlink" title="(2) 安装node和npm"></a>(2) 安装node和npm</h2><blockquote><p>使用nvm安装node（V6.9.0），安装node的同时会绑定安装npm（Node Package Manager）</p></blockquote><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">$ nvm install v6.9.0</span><br><span class="line">$ nvm list</span><br><span class="line">$ nvm use 6.9.0</span><br><span class="line">$ node --version</span><br><span class="line">$ npm --version</span><br></pre></td></tr></table></figure><h2 id="3-安装全局的npm"><a href="#3-安装全局的npm" class="headerlink" title="(3) 安装全局的npm"></a>(3) 安装全局的npm</h2><blockquote><p>配置全局的npm安装包路径</p></blockquote><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">$ npm config set prefix &quot;C:\Users\GMY\AppData\Roaming\nvm&quot;</span><br></pre></td></tr></table></figure><blockquote><p>然后安装全局的最新npm</p></blockquote><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">$ npm install -i -g npm</span><br><span class="line">$ npm --version</span><br></pre></td></tr></table></figure><blockquote><p>安装完成后需要配置环境变量<code>NPM_HOME=C:\Users\GMY\AppData\Roaming\nvm\npm</code>并添加<code>%NPM_HOME%</code>到<code>path</code>，如下图所示：</p></blockquote><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/windows-node-settings-2.png-blog.post" alt="示例图"></div><div class="image-caption">示例图</div></figure><hr><h1 id="安装cnpm（淘宝的国内npm镜像）"><a href="#安装cnpm（淘宝的国内npm镜像）" class="headerlink" title="安装cnpm（淘宝的国内npm镜像）"></a>安装cnpm（淘宝的国内npm镜像）</h1><blockquote><p>因为国内的环境所以我们需要一个国内的镜像，不然后面通过npm安装相关的包会非常的慢并且可能安装不上</p></blockquote><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">$ npm install -i -g cnpm</span><br><span class="line">$ cnpm --version</span><br></pre></td></tr></table></figure><hr><h1 id="配置并运行NiceFish项目（Angular2）"><a href="#配置并运行NiceFish项目（Angular2）" class="headerlink" title="配置并运行NiceFish项目（Angular2）"></a>配置并运行NiceFish项目（Angular2）</h1><h2 id="1-安装angular-cli脚手架"><a href="#1-安装angular-cli脚手架" class="headerlink" title="(1) 安装angular-cli脚手架"></a>(1) 安装angular-cli脚手架</h2><blockquote><p>通过我们安装的<code>cnpm</code>安装<code>angular-cli</code>脚手架（这里需要注意的是如果使用原生的npm安装会有一切环境问题，比如需要安装<code>python</code>环境和<code>visual studio</code>环境等，所以建议使用<code>cnpm</code>安装）</p></blockquote><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">$ npm uninstall -g angular-cli</span><br><span class="line">$ npm uninstall -g @angular/cli</span><br><span class="line">$ cnpm install -i -g @angular/cli</span><br><span class="line">$ ng --version</span><br></pre></td></tr></table></figure><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/windows-node-settings-3.png-blog.post" alt="示例图"></div><div class="image-caption">示例图</div></figure><h2 id="2-克隆NiceFish项目到本地"><a href="#2-克隆NiceFish项目到本地" class="headerlink" title="(2) 克隆NiceFish项目到本地"></a>(2) 克隆NiceFish项目到本地</h2><blockquote><p>因为<code>NiceFish</code>这个项目在开源中国的码云上，所以需要使用git来克隆项目。这里推荐一个取代<code>windows</code>下<code>cmd</code>的工具<code>cmder</code>（<a href="http://cmder.net/），可以去官网下载并安装，如果你安装了`cmder`，里面已经集成安装了`Git`，所以可以直接执行下面的命令。" target="_blank" rel="noopener">http://cmder.net/），可以去官网下载并安装，如果你安装了`cmder`，里面已经集成安装了`Git`，所以可以直接执行下面的命令。</a></p></blockquote><blockquote><p>如果你并不想使用<code>cmder</code>，而仍然青睐于<code>cmd</code>的话，那你就需要单独安装<code>Git</code>（<a href="https://git-for-windows.github.io/），安装完成后执行如下命令：" target="_blank" rel="noopener">https://git-for-windows.github.io/），安装完成后执行如下命令：</a></p></blockquote><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">$ E:</span><br><span class="line">$ cd WebstormProjects\</span><br><span class="line">$ git clone https://git.oschina.net/mumu-osc/NiceFish.git</span><br></pre></td></tr></table></figure><h2 id="3-安装NiceFish项目的依赖包"><a href="#3-安装NiceFish项目的依赖包" class="headerlink" title="(3) 安装NiceFish项目的依赖包"></a>(3) 安装NiceFish项目的依赖包</h2><blockquote><p>我们已经克隆的项目在E:\WebstormProjects\NiceFish，接下来我们需要安装这个项目的依赖包</p></blockquote><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">$ E:</span><br><span class="line">$ cd WebstormProjects\NiceFish\</span><br><span class="line">$ cnpm install</span><br></pre></td></tr></table></figure><h2 id="4-编译运行NiceFish项目"><a href="#4-编译运行NiceFish项目" class="headerlink" title="(4) 编译运行NiceFish项目"></a>(4) 编译运行NiceFish项目</h2><blockquote><p>使用<code>ng</code>命令编译运行项目，这个编译过程会比较慢，大概需要1分多钟，耐心等待就好了</p></blockquote><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">$ ng serve --prod --aot</span><br></pre></td></tr></table></figure><blockquote><p>如果你看到如下图所示，那么恭喜你已经完成了全部<code>node</code>配置并且成功运行了一个<code>Angular2</code>的项目。现在打开浏览器访问<a href="http://localhost:4200，就可以访问项目了，Enjoy！" target="_blank" rel="noopener">http://localhost:4200，就可以访问项目了，Enjoy！</a></p></blockquote><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/windows-node-settings-4.png-blog.post" alt="示例图"></div><div class="image-caption">示例图</div></figure><!-- rebuild by neat -->]]></content>
    
    <summary type="html">
    
      
      
        &lt;!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --&gt;&lt;hr&gt;&lt;p&gt;此文档主要简述如何在&lt;code&gt;windows&lt;/code&gt;（本文使用的是&lt;code&gt;windows7&lt;/code&gt; 64位操作系统)下
      
    
    </summary>
    
      <category term="前端" scheme="https://www.mingyugu.com/categories/%E5%89%8D%E7%AB%AF/"/>
    
      <category term="框架" scheme="https://www.mingyugu.com/categories/%E5%89%8D%E7%AB%AF/%E6%A1%86%E6%9E%B6/"/>
    
      <category term="NodeJs" scheme="https://www.mingyugu.com/categories/%E5%89%8D%E7%AB%AF/%E6%A1%86%E6%9E%B6/NodeJs/"/>
    
    
      <category term="NodeJs" scheme="https://www.mingyugu.com/tags/NodeJs/"/>
    
      <category term="Windows" scheme="https://www.mingyugu.com/tags/Windows/"/>
    
      <category term="Angular" scheme="https://www.mingyugu.com/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Cogitr服务器相关文档(Cogitr server documents)</title>
    <link href="https://www.mingyugu.com/cogitr-server-doc.html"/>
    <id>https://www.mingyugu.com/cogitr-server-doc.html</id>
    <published>2016-12-18T05:45:44.000Z</published>
    <updated>2016-12-18T05:45:44.000Z</updated>
    
    <content type="html"><![CDATA[<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><div id="security">  <div class="input-container">  <input type="password" class="form-control" id="pass" placeholder="请输入解密密码" />    <label for="pass">请输入解密密码</label>    <div class="bottom-line"></div>  </div></div><div id="decryptionError" style="display: none;">密码错误，请重新输入</div><div id="noContentError" style="display: none;">没有内容显示</div><div id="encrypt-blog" style="display:none">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</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
    
    <summary type="html">
    
      此文章已经加密，需要解密后才能阅读&lt;/br&gt;
    
    </summary>
    
      <category term="项目文档" scheme="https://www.mingyugu.com/categories/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/"/>
    
    
      <category term="Document" scheme="https://www.mingyugu.com/tags/Document/"/>
    
  </entry>
  
  <entry>
    <title>CentOS配置文档</title>
    <link href="https://www.mingyugu.com/centos-settings.html"/>
    <id>https://www.mingyugu.com/centos-settings.html</id>
    <published>2016-12-12T06:32:25.000Z</published>
    <updated>2016-12-12T06:32:25.000Z</updated>
    
    <content type="html"><![CDATA[<!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --><hr><p>此文档主要简述在阿里云安装CentOS并配置相关运行环境：</p><hr><h1 id="服务器信息"><a href="#服务器信息" class="headerlink" title="服务器信息"></a>服务器信息</h1><blockquote><p>系统：centos 7 (自带python 2.7.5)</p></blockquote><h1 id="服务器配置"><a href="#服务器配置" class="headerlink" title="服务器配置"></a>服务器配置</h1><h2 id="1-配置免密码登录"><a href="#1-配置免密码登录" class="headerlink" title="1. 配置免密码登录"></a>1. 配置免密码登录</h2><h3 id="1-本机生成rsa密钥"><a href="#1-本机生成rsa密钥" class="headerlink" title="(1) 本机生成rsa密钥"></a>(1) 本机生成rsa密钥</h3><blockquote><p>在本机生成rsa加密的密钥，下面命令会在指定的目录生成一个私有和一个公有rsa密钥，将私有密钥保存好，等配置好免密码登录后，登录服务器时将需要此文件</p></blockquote><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></pre></td><td class="code"><pre><span class="line">$ ssh-keygen -f ~/temp/ljflxxglpt.pem</span><br><span class="line">Generating public/private rsa key pair.</span><br><span class="line">Enter passphrase (empty for no passphrase):</span><br><span class="line">Enter same passphrase again:</span><br><span class="line">Your identification has been saved in /home/gmy/temp/ljflxxglpt.pem.</span><br><span class="line">Your public key has been saved in /home/gmy/temp/ljflxxglpt.pub.</span><br><span class="line">The key fingerprint is:</span><br><span class="line">7a:9c:b2:9c:8e:4e:f4:af:de:70:77:b9:52:fd:44:97 personalid</span><br><span class="line">The key&apos;s randomart image is:</span><br><span class="line">+--[ RSA 2048]----+</span><br><span class="line">|         |</span><br><span class="line">|         |</span><br><span class="line">|        .|</span><br><span class="line">|        Eo|</span><br><span class="line">|  .  S  . ..|</span><br><span class="line">|  . . o . ... .|</span><br><span class="line">|  . = = ..o o |</span><br><span class="line">|  . o X ... . .|</span><br><span class="line">|  .ooB.o ..  |</span><br><span class="line">+-----------------+</span><br></pre></td></tr></table></figure><h3 id="2-登录服务器"><a href="#2-登录服务器" class="headerlink" title="(2) 登录服务器"></a>(2) 登录服务器</h3><blockquote><p>第一次登录使用用户名密码的方式</p></blockquote><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 root@120.27.140.104</span><br></pre></td></tr></table></figure><h3 id="3-服务器生成rsa密钥"><a href="#3-服务器生成rsa密钥" class="headerlink" title="(3) 服务器生成rsa密钥"></a>(3) 服务器生成rsa密钥</h3><blockquote><p>服务器生成rsa密钥，主要目的是为了生成ssh目录以及后面从代码仓库clone代码的权限问题。生成的ssh目录变更权限为所有者可读写(700)，目的是为了配置免密码登录服务器</p></blockquote><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">$ ssh-keygen</span><br><span class="line">$ chmod 700 ~/.ssh</span><br></pre></td></tr></table></figure><h3 id="4-上传本机公有密钥到服务器"><a href="#4-上传本机公有密钥到服务器" class="headerlink" title="(4) 上传本机公有密钥到服务器"></a>(4) 上传本机公有密钥到服务器</h3><blockquote><p>把刚刚在本机生成的公有密钥上传到服务器并添加到authorized_keys中</p></blockquote><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">$ scp ~/temp/ljflxxglpt.pub root@120.27.140.230:~/.ssh/authorized_keys</span><br></pre></td></tr></table></figure><h3 id="5-使用密钥登录服务器"><a href="#5-使用密钥登录服务器" class="headerlink" title="(5) 使用密钥登录服务器"></a>(5) 使用密钥登录服务器</h3><blockquote><p>使用本机的私有密钥登录已经存储过本机公有密钥的服务器</p></blockquote><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 -i ~/temp/ljflxxglpt.pem root@120.27.140.230</span><br></pre></td></tr></table></figure><h3 id="6-关闭密码登录"><a href="#6-关闭密码登录" class="headerlink" title="(6) 关闭密码登录"></a>(6) 关闭密码登录</h3><blockquote><p>关闭密码登录只使用密钥登录可以防止暴力破解，设置完成后重启服务器</p></blockquote><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">$ vi /etc/ssh/sshd_config</span><br><span class="line">#PasswordAuthentication yes &gt; PasswordAuthentication no</span><br></pre></td></tr></table></figure><hr><h2 id="2-服务器安装部署"><a href="#2-服务器安装部署" class="headerlink" title="2. 服务器安装部署"></a>2. 服务器安装部署</h2><h3 id="1-更新系统"><a href="#1-更新系统" class="headerlink" title="(1) 更新系统"></a>(1) 更新系统</h3><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 yum update -y</span><br></pre></td></tr></table></figure><h3 id="2-安装系统运行必备库"><a href="#2-安装系统运行必备库" class="headerlink" title="(2) 安装系统运行必备库"></a>(2) 安装系统运行必备库</h3><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 yum install gcc git libtiff-devel libjpeg-devel libzip-devel freetype-devel</span><br><span class="line">lcms2-devel libwebp-devel tcl-devel tk-devel mysql mysql-devel memcached libmemcacheddevel</span><br><span class="line">nginx mysql-devel python-devel libffi-devel  -y</span><br></pre></td></tr></table></figure><h3 id="3-克隆项目"><a href="#3-克隆项目" class="headerlink" title="(3) 克隆项目"></a>(3) 克隆项目</h3><blockquote><p>添加服务器生成的公有密钥到代码仓库，然后运行git命令clone项目将不需要权限验证</p></blockquote><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><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/centos-settings-1.png-blog.post" alt="服务器公钥"></div><div class="image-caption">服务器公钥</div></figure><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/centos-settings-2.png-blog.post" alt="仓库添加公钥"></div><div class="image-caption">仓库添加公钥</div></figure><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">$ git clone git@bitbucket.org:mingyugu/ljflxxglpt-api.git</span><br></pre></td></tr></table></figure><h3 id="4-创建Python虚拟环境"><a href="#4-创建Python虚拟环境" class="headerlink" title="(4) 创建Python虚拟环境"></a>(4) 创建Python虚拟环境</h3><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 easy_install virtualenv</span><br><span class="line">$ virtualenv env</span><br><span class="line">$ source env/bin/activate</span><br></pre></td></tr></table></figure><h3 id="5-安装项目依赖库"><a href="#5-安装项目依赖库" class="headerlink" title="(5) 安装项目依赖库"></a>(5) 安装项目依赖库</h3><blockquote><p>克隆项目到服务器后需要安装项目依赖库</p></blockquote><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">$ cd ~/ljflxxglpt-api/</span><br><span class="line">$ pip install -r requirements.txt</span><br></pre></td></tr></table></figure><h3 id="6-安装数据库环境"><a href="#6-安装数据库环境" class="headerlink" title="(6) 安装数据库环境"></a>(6) 安装数据库环境</h3><blockquote><p>MySQL是一个关系型数据库管理系统，安装可以参考以下链接</p></blockquote><p><a href="http://www.mysql.com/downloads/" target="_blank" rel="noopener">http://www.mysql.com/downloads/</a></p><blockquote><p>PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES，现在已经更名为PostgreSQL，版本4.2为基础的对象关系型数据库管理系统（ORDBMS）。PostgreSQL支持大部分SQL标准并且提供了许多其他现代特性：复杂查询、外键、触发器、视图、事务完整性、MVCC。同样，PostgreSQL可以用许多方法扩展，比如，通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL，不管是私用、商用、还是学术研究使用。</p></blockquote><p><a href="http://www.postgresql.org/download/linux/redhat/" target="_blank" rel="noopener">http://www.postgresql.org/download/linux/redhat/</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><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></pre></td><td class="code"><pre><span class="line">$ yum install postgresql-server</span><br><span class="line">$ yum install postgresql-devel</span><br><span class="line">$ service postgresql initdb</span><br><span class="line">$ chkconfig postgresql on</span><br><span class="line">$ sudo -u postgres psql</span><br><span class="line">postgres=# \password postgres</span><br><span class="line">postgres=# CREATE USER lettoo_base_api WITH PASSWORD &apos;password&apos;;</span><br><span class="line">postgres=# CREATE DATABASE lettoo_base_api OWNER lettoo_base_api;</span><br><span class="line">postgres=# GRANT ALL PRIVILEGES ON DATABASE lettoo_base_api to lettoo_base_api;</span><br><span class="line">postgres=# \du</span><br><span class="line">postgres=# \q</span><br><span class="line">$ exit</span><br><span class="line">$ vi /var/lib/pgsql/data/pg_hba.conf</span><br><span class="line">localallallpeer &gt; localallallmd5</span><br><span class="line">$ systemctl restart postgresql.service</span><br><span class="line">$ psql -U lettoo_base_api -d lettoo_base_api</span><br></pre></td></tr></table></figure><h3 id="7-创建mysql数据库"><a href="#7-创建mysql数据库" class="headerlink" title="(7) 创建mysql数据库"></a>(7) 创建mysql数据库</h3><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">mysql&gt; DROP DATABASE ljflxxglpt;</span><br><span class="line">mysql&gt; CREATE DATABASE ljflxxglpt CHARACTER SET utf8;</span><br><span class="line">mysql&gt; GRANT ALL PRIVILEGES ON ljflxxglpt.* TO &quot;ljflxxglpt&quot;@&quot;%&quot; IDENTIFIED BY &quot;password&quot;;</span><br><span class="line">mysql&gt; FLUSH PRIVILEGES;</span><br><span class="line">mysql&gt; EXIT;</span><br></pre></td></tr></table></figure><h3 id="8-配置项目依赖的环境变量"><a href="#8-配置项目依赖的环境变量" class="headerlink" title="(8) 配置项目依赖的环境变量"></a>(8) 配置项目依赖的环境变量</h3><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">$ vi ~/.bashrc</span><br></pre></td></tr></table></figure><p>添加以下配置</p><blockquote><p>export ALIYUN_OSS_ACCESS_KEY_ID=’mjpa3WKngENt5ijN’<br>export ALIYUN_OSS_ACCESS_KEY_SECRET=’0XdA1bgi3eAV5usbiWqaAtI7QlbtaJ’<br>export ALIYUN_OSS_BUCKET_NAME=’ljflxxglpt’<br>export ALIYUN_OSS_ACCESS_HOST=’ljflxxglpt.oss-cn-hangzhou-internal.aliyuncs.com’<br>export DATABASE_URL=’mysql://ljflxxglpt:<a href="mailto:password@rds68fqj481t1m274fg2.mysql.rds.aliyuncs.com" target="_blank" rel="noopener">password@rds68fqj481t1m274fg2.mysql.rds.aliyuncs.com</a>:3306/ljflxxglpt’<br>export DJANGO_SECRET_KEY=’51c3184f-0168-4314-b707-352b48578eb7’<br>export <a href="mailto:EMAIL_USERNAME=&#39;ljflxxglpt@163.com" target="_blank" rel="noopener">EMAIL_USERNAME=&#39;ljflxxglpt@163.com</a>‘<br>export EMAIL_PASSWORD=’ljflxxglpt123456’</p></blockquote><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">$ source ~/.bashrc</span><br></pre></td></tr></table></figure><h3 id="9-同步数据库"><a href="#9-同步数据库" class="headerlink" title="(9) 同步数据库"></a>(9) 同步数据库</h3><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">$ python manage.py syncdb --settings=config.settings.production</span><br><span class="line">$ python manage.py migrate --settings=config.settings.production</span><br></pre></td></tr></table></figure><h3 id="10-收集静态文件"><a href="#10-收集静态文件" class="headerlink" title="(10) 收集静态文件"></a>(10) 收集静态文件</h3><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">$ python manage.py collectstatic --settings=config.settings.production</span><br></pre></td></tr></table></figure><h3 id="11-安装nginx"><a href="#11-安装nginx" class="headerlink" title="(11) 安装nginx"></a>(11) 安装nginx</h3><p>下载对应当前系统版本的nginx包(package)</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">$ wget  http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm</span><br></pre></td></tr></table></figure><p>建立nginx的yum仓库</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">$ rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm</span><br></pre></td></tr></table></figure><p>下载并安装nginx</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">$ yum install nginx</span><br></pre></td></tr></table></figure><h3 id="12-配置supervisor-nginx-uWSGI"><a href="#12-配置supervisor-nginx-uWSGI" class="headerlink" title="(12) 配置supervisor/nginx/uWSGI"></a>(12) 配置supervisor/nginx/uWSGI</h3><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">$ mkdir ~/logs</span><br><span class="line">$ sudo cp etc/nginx_ljflxxglpt_*.conf /etc/nginx/conf.d/</span><br><span class="line">$ supervisord</span><br></pre></td></tr></table></figure><p>检查supervisor service</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">$ supervisorctl</span><br></pre></td></tr></table></figure><p>重启nginx</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 service nginx restart</span><br></pre></td></tr></table></figure><hr><h2 id="web服务器配置"><a href="#web服务器配置" class="headerlink" title="web服务器配置"></a>web服务器配置</h2><h3 id="1-安装node-js"><a href="#1-安装node-js" class="headerlink" title="(1) 安装node.js"></a>(1) 安装node.js</h3><blockquote><p>参考官方教程：<a href="https://nodejs.org/en/download/package-manager/" target="_blank" rel="noopener">https://nodejs.org/en/download/package-manager/</a></p></blockquote><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">$ curl --silent --location https://rpm.nodesource.com/setup | bash -</span><br><span class="line">$ yum -y install nodejs</span><br><span class="line">$ yum install gcc-c++ make</span><br><span class="line"># or: yum groupinstall &apos;Development Tools&apos;</span><br></pre></td></tr></table></figure><h3 id="2-安装npm"><a href="#2-安装npm" class="headerlink" title="(2) 安装npm"></a>(2) 安装npm</h3><blockquote><p>新版本的node.js已经自带了npm所以这步可以省略<br><a href="https://nodejs.org/en/download/" target="_blank" rel="noopener">https://nodejs.org/en/download/</a></p></blockquote><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 yum install npm</span><br></pre></td></tr></table></figure><h3 id="3-安装bower"><a href="#3-安装bower" class="headerlink" title="(3) 安装bower"></a>(3) 安装bower</h3><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 npm install -g bower</span><br></pre></td></tr></table></figure><h3 id="4-安装gulp"><a href="#4-安装gulp" class="headerlink" title="(4) 安装gulp"></a>(4) 安装gulp</h3><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 npm install -g gulp</span><br></pre></td></tr></table></figure><h3 id="5-安装node-modules"><a href="#5-安装node-modules" class="headerlink" title="(5) 安装node modules"></a>(5) 安装node modules</h3><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">$ npm install</span><br></pre></td></tr></table></figure><h3 id="6-安装bower-components"><a href="#6-安装bower-components" class="headerlink" title="(6) 安装bower components"></a>(6) 安装bower components</h3><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">$ bower install --allow-root</span><br></pre></td></tr></table></figure><h3 id="7-编译"><a href="#7-编译" class="headerlink" title="(7) 编译"></a>(7) 编译</h3><blockquote><p>测试环境</p></blockquote><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">$ gulp serve:dev</span><br></pre></td></tr></table></figure><blockquote><p>生产环境</p></blockquote><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">$ gulp serve:prod</span><br></pre></td></tr></table></figure><hr><h2 id="3-服务器supervisord自启动"><a href="#3-服务器supervisord自启动" class="headerlink" title="3. 服务器supervisord自启动"></a>3. 服务器supervisord自启动</h2><h3 id="1-拷贝supervisord文件到-etc-rc-d-init-d-supervisord"><a href="#1-拷贝supervisord文件到-etc-rc-d-init-d-supervisord" class="headerlink" title="(1) 拷贝supervisord文件到/etc/rc.d/init.d/supervisord"></a>(1) 拷贝supervisord文件到/etc/rc.d/init.d/supervisord</h3><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 cp supervisord /etc/rc.d/init.d/supervisord</span><br></pre></td></tr></table></figure><h3 id="2-改变supervisord文件全选为可执行"><a href="#2-改变supervisord文件全选为可执行" class="headerlink" title="(2) 改变supervisord文件全选为可执行"></a>(2) 改变supervisord文件全选为可执行</h3><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 chmod +x /etc/rc.d/init.d/supervisord</span><br></pre></td></tr></table></figure><h3 id="3-添加自启动"><a href="#3-添加自启动" class="headerlink" title="(3) 添加自启动"></a>(3) 添加自启动</h3><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 chkconfig supervisord on</span><br></pre></td></tr></table></figure><h3 id="4-手动启动supervisord"><a href="#4-手动启动supervisord" class="headerlink" title="(4) 手动启动supervisord"></a>(4) 手动启动supervisord</h3><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 service supervisord start</span><br></pre></td></tr></table></figure><h3 id="5-centos-7-nginx自动启动"><a href="#5-centos-7-nginx自动启动" class="headerlink" title="(5) centos 7 nginx自动启动"></a>(5) centos 7 nginx自动启动</h3><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">$ systemctl list-unit-files</span><br><span class="line">$ systemctl enable nginx.service</span><br></pre></td></tr></table></figure><hr><h2 id="4-服务器常见问题"><a href="#4-服务器常见问题" class="headerlink" title="4. 服务器常见问题"></a>4. 服务器常见问题</h2><h3 id="1-nginx-403-Forbidden-errors"><a href="#1-nginx-403-Forbidden-errors" class="headerlink" title="(1) nginx 403 Forbidden errors"></a>(1) nginx 403 Forbidden errors</h3><blockquote><p>通常显示403立马都会想到路径配置不对，但是如果检查后发现目录路径没问题那么就是权限问题。修改nginx.conf，头部修改’user root;’，然后重启nginx</p></blockquote><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">$ vi /etc/nginx/nginx.conf</span><br><span class="line">user root;</span><br></pre></td></tr></table></figure><!-- rebuild by neat -->]]></content>
    
    <summary type="html">
    
      
      
        &lt;!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --&gt;&lt;hr&gt;&lt;p&gt;此文档主要简述在阿里云安装CentOS并配置相关运行环境：&lt;/p&gt;&lt;hr&gt;&lt;h1 id=&quot;服务器信息&quot;&gt;&lt;a href=&quot;#服务器信息&quot;
      
    
    </summary>
    
      <category term="后端" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/"/>
    
      <category term="操作系统" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    
      <category term="CentOS" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CentOS/"/>
    
    
      <category term="CentOS" scheme="https://www.mingyugu.com/tags/CentOS/"/>
    
      <category term="Python" scheme="https://www.mingyugu.com/tags/Python/"/>
    
      <category term="NodeJs" scheme="https://www.mingyugu.com/tags/NodeJs/"/>
    
      <category term="MySql" scheme="https://www.mingyugu.com/tags/MySql/"/>
    
      <category term="Nginx" scheme="https://www.mingyugu.com/tags/Nginx/"/>
    
  </entry>
  
  <entry>
    <title>垃圾袋称重箱和云服务器数据交互接口协议</title>
    <link href="https://www.mingyugu.com/garbage-weighing-api-doc.html"/>
    <id>https://www.mingyugu.com/garbage-weighing-api-doc.html</id>
    <published>2016-06-26T13:31:58.000Z</published>
    <updated>2016-06-26T13:31:58.000Z</updated>
    
    <content type="html"><![CDATA[<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><div id="security">  <div class="input-container">  <input type="password" class="form-control" id="pass" placeholder="请输入解密密码" />    <label for="pass">请输入解密密码</label>    <div class="bottom-line"></div>  </div></div><div id="decryptionError" style="display: none;">密码错误，请重新输入</div><div id="noContentError" style="display: none;">没有内容显示</div><div id="encrypt-blog" style="display:none">U2FsdGVkX1+YYMtRavb2CkXwRgL1TO+shjVS/h0Kql/1DzP0W4ZuXMKdq9ellC4kBhaA+SLyg2PGoif37GyK/gUpA1jS4a8dzfGWR36B6rcqI+DgK78J50ZMQaGZVO8ncgN87BZDxuOspNx7LTN9+du4UimjXUY7fL50FT6oSUDL/xcJHQ1PGLDiNceMMXNEBqyHfTPzzoTH6cJ1pfbFmID1vseVAsxaz97ioJRubcxzXH1Euw1OD3psfPPTGibYbzWHtpUTWf0YsMSjkfxGv61mNaQAsNVGnkTnsamCi/qaRUWZGzfp5qflm3/a1qqfQLMx18nAFjc4Uy+2lOhyMVoruOUWNI2lHWG6WNw9irDhFN6u0Wi0D6C8Ef/BKWHj28iaV6iGqDJZ4YuQPxGg0kiqdVSad9Zx5J2LiwMT//92Bd4DykOhsPQiJmyLtwxzeStf1MnVmyVqH7u8TOSd1Zb36uNqqsAR/9vlDqWjH7N+FCLdIKtCrLNnNJiThUcBZQk9ngBuDfHn02D5CZQkJea/chSUuQpZJNo+Y8xsqGb93VrNXGVIbKjyfjYQAdUCehON5bEaCyltW3KlDOZXUTi4HQnFb91hYwTklTyULbtVZnFe7643BIkN8KY+inhZXKJKwVDPKTxfd5RfyX/GBcqw1fLvZALppHD+/ZhVrKJhkSZJ3mQ7jGMEI2KTrwA90+0X42CFqyPeULnspI1LvTCzTKmmaEvkHRXgPFZQW4ODZTFIpYwM0hrIluPtEUi6vQoAkcWVZqVV/vU0/cjPUxWIjftJOqFDWHSDF5RA/GJpIgqBpLwMuobI1JkdEi9HiADvKmpWSkiPqWW1uTZX8vuXRQWplijanusIZECvYxy+O0WghVl7xL2Gt3Vro4XH/d153RRlZxSrz4fgUcaq5CULzh0Qd2EcbzxV5ExQ9kG8zjnuTyT67HH+n4JXtPGEWPvdhZ7Wcii/5o968PmV41PyhXinQYipG/eUzvBtK+mkufC2QlQqsspt3GeRPJt2zZ17rga9vemr5mgKT+VwtOvmxVmJvYZaE/IM2RNMGB1MC50Ikh/etFsBEcDtaSa5ulzU9kDCvWfG72Ui9RDaHM1dql9HCj36Q8Ba5qIQOl4eGM4UkmBM93z+1aJppWOsk6URhh9Zvf4RDSvPFsIU/kNIOPWm704ubr7ymw15WM/5qIac3kMf/5vpoK2AlUWEstGLtUWoCedviofwgRJw6S1sM3xR+stbxcbsalkM1H/LTRp8jOUsTwF+R1OqGe6qyB1qKrlBZpW6pWmjCxHMhm4oZ7a2t2/ccaK9L8vQcf2c5WMakMTJVpD5erCJwUmNb1maVzPoPeysDjtZktu1HrIW1dqJcg4yHnoxPy5rHxRdyp+DGNMbji9lhzc0ukdjjQReYTpl38MVA0uPAUvXF4BgqpKPTJVLPg8HklxFdIKld5fsAk1rrB9N0ANuqyfN8u+uG/MSSX1DsvkH0l/1GBG8T6LEBqJ6lsuywWDycE7NuwSKnGlzAsFeIUn8l8FksK0cMBmZxjxGbsHSGRBhPcexea71cNiroT+NgANCDJUMgd/nU5rQNEmInr/pDs6upZxyUGDQY9mzBRCxAVV9XXpHW4dZrjNto6aMG6NdkroKkHJkg417DYOs9VxgPKAWihgAqcqurOeykPnQdNIUzi/8O66AIs/hDq+37Ijo05ibaQ+g5U7l8mdniYHPI2G92xedpNBKlw5SIyxOmMr2g+WZe0bAiMWa3B/lRe2dX7b6JgcnJXHS9kCHl7zKJ6WQ4Vt2JzNhFITmschIQDxc1crB4PYytyoQelXjJ7ctv4VVN513B1neuP7xfRku+7sFu1Af/Ypek+D2fx2UWx4j9If0Hkl/wBS6AD5DubErR4oQ9Fmvrhyo7QA5aJ2NVO65Vy6DIfPVeGrNxrSYqspBBnWNwGKHwBeht/zjdexnqKD4ExRlGuf/BtiV1+2VCP0H+Lr+441zr5TOAV11nis54XZmR0DK97j3GL7g6KSYAyavg0sW9PSklyUiR/RK0U7bRFGgz8rYyXm3Xv67RBVvm/HVf5iUXiqJI0eTlc7x7Dswpp4mCRGApXX1nIoYDiTstKkFVp85cASuYecxEGBAwWLqk4/Aw5gN97T0kT+VGZoi14qq/r+kWykFckfnqg2Fu2/R1WI9+4iDa4y/IIg97OnxHTluFzOm4H76NKJtuMUpW8Vr6Bk8NOc9HlmOVmo1pYmSwbI29pPa6NSGNUatpjpat5olU3alL7uPLveE/onIotitifGuRgFDEa5Ki71cqR+Glqulq8YM7jxeg3KC9isf9ew5/hg4UHjlIsD+jWEChQPJqBTznXi5ET/svaMaCJz+6T/771M0ipcMUZSe5PGwEaXsc6ciaWV7JWRoS2M/ltufG1wvBPD68yxoiUr5nK8C6LylTh+h2mLMdafJYzWg7p5hTBJv4hm1vepxmhGO3ZDbA0+gRQg57+o/Xw7FPFwl/etcRZjbxigS/m/SrsPK6M1WCoMZEKJ30RW4M/cpCLfTUHXdTXm7pLuGy9T12P0BYD7VsoucUqjd3MpFL05OoSSS+l8m5akhpwHePbF/bQDn5BHfuLTJ4eec7MqO4pmD9ebTdwyz6+kZdMjfCankY6PuiK3n+qaZPgjT5TKgPvEEGX/I7ngEtXHjlJ7UptvgGrEP3exjGL7B8Z2GVM+V18RUuCj+PnJZdGWnUeCLmQx5qdgZh82vEDj4fHa33XU866CtTvBMyVRi3C4XOd6iGQqojI/LiufHFHRu9hQQaZfY6omkMiDrfiWAmfVP8kyhiTT7HKy+Lwcr1Xr/F39CQOu+L5kyK/pHV1uIPDAlE9GV67xMmRsqghSB0e1qHTwfjrqDU2lS3ZJTdiIM8yvfe1XyXanl0KKSfKdbKG7REscwnP84hxnJ8rYGJE3Tj+ivZTuGK5UyAF3nw6lCq9GP9GAuX4DnyV3u1tUvNJCDJpjdynHNDV1iPQYNEyAvBllcuo9sSvGcDj1VtGINUQYTS3+y3TqiRN4bqHZYRSqTyPUKlX6ZP4FpP+IFx8JBJbJ/7lvv4mYD6vJbuN5OSfa/zBO/eM/CVzJ1ocguqal/mAKzZ6/Em9HsBFVV1lr21jefm7eK8AI4xxDH5PIRLvOd5nbBGE468CWw78oPSoaoXC+7TW3VnX1mi+JnZnpqKbzDe8++v5km7oRoJ5ie8rVa7pLV+Ycg4iYcs57xB+74TUoDIPRfbflctVEvouGabbEi5AhPeNf7lHNyeb8gDWT+yKbrRRVyJepgkN4BGbVgzVkS1Efhu/5yV4DWBGW2Nx+SbjQQ2INX3x3RS7VQBuhFZYwqMkv/EyXUSOGIMUGA1EBMHL9Osi1j9TgDndv7r76iLRRnQTjSVoLzAwIRbCcNQSPRJ5PrQlq5N9PhrEP0XUepKWcbmrTv8ZqvWw5rfjpPJP7BIx+sVBelhPBpFGbRr0zXJOeREk3rAkaWjeaXKr67/qmnLlvijlkxsi5JL8QZ1sNOQVS7sWkEwFZz9zISM9+1h72SmJAYmQtn0fgaw19AJ47jeGudfErHR0fxWFTnWuggmICz620oY7OS4WDOevlYDm7TiQpKg45/whNZJuinY3BWba7HSk4YkZi3tLqtZdUDXNhjO+siC17guuxl4IBT434a6AekcV4lIgpXcbzZeGFx3JD1ujb3RW0Sj8Dllht5mpp1A9eP96h6jlNtKzd7SfeUU7dqMOoestOhpJGqHzh8TAB7hdgX0ag6kGEuGpmG3IC/ak+54GOkYsockGsiVRo8Qsqjc+JnlSZoZ3GAFFL39PX82D5GaRsjyFegX5YQYZq8yIPMaaJGSLMyguAYINxwr/ZInsNKcAK3G77OXSahP5cHMcGZqXUxJXiWe50TP5Y08u+k6lIdXpwY7PZb+KwBVRL82anCPgp3f5pPfX3TuNf82tZNE/EfvmosJ30bWgHkHUddWMo7IlJYJ4vsxDa7pPDv3kBSNrcgJqVYbbVyc30JOVpbd+aRv8SeCRWAhz8AJUEqe+FP2EyI7UPSOjB8X2BwZvS5RDpsMXCUybU7GXLkdQflPkyrX68r0xw+djZfux9w1/CAlImCBHASJwodVA3kicHofnx6VTefapa17iixLVSz3f+YpmDlHWio2ItSKRbZUhpnxhBdQmGLo04Ba1xZvUbKyjA7/ak7nvh9hNxY7BLks71szYbl1cxePj42DXQObhWFKjG6yf6QP7GwE2Nx7wvJpVJs4zTI4n4dxBpAtJbMhyZYGiOmk9oQrZ46W36sMhji+0FcpL4Cjr1TpDW8rLdXAaZjaiVtmB4xOQm8SYZxbK0bm+wMcQ9t2/49e0XWPt8+K074NVMqoDYKxJhUpJFZp7c3Q254G9rVgXCZhzXwDBaumaZAoAHVaw/oz7JoAd0Tm7mB8mNdbirzqmjD0E1jznBPf6eZ2npbPtoGpGrFIqZ1bxHggZhMXKzWo57Os+56dh0z9xB0aZ9dcQoTsSdvkBetZ/tiLPWP/ryh8LcyCr8xFvlLyApRKepKMiRpsLfo9bwwYKzsCvTlTzEJqSsr1WOoE4YXghPNYAYfs5RuWTe27yDSu+4UOL8GgFPTu5Up7gRTjC/KT0vr0eEjLIFrXCUtRZGfXsOPmv+UIks828ZhKF+EVq3Hn/NHxFXqHt10lEaLe607eFazXxDG5X4FUs6u/0mJuNzTdSwtBblTbExR7LyD4E9aAHWW21ycmnx7R990oflv3pFrvQIFTpIG7XfU26HR0NotSvIn9VhVMp50BqBD8R9GZY6Mb3U8PDW99U0N+iWDj2zqYbFJVnPUUyxmVB5CXAn1X5sTeMQnurG4D5yafl8uOo2G/XjpnlYiH7IhcMbPFDuYeaMhratKpfH0HAb5GmK8n15ulE82peFIaMQBv61KSrH3LVA11waYjAHgPWeS1TqFaSwddda5aM4/H9wydOcHw5HU1d9V9HtCcB4IjG77wqqiQsCzTIev/HOMQnwNem0EVN/Ev+TgrbrX62OxHCgLsIgMBm1qqTWm+3duJw8VvCtU7S6g4v47AULE0d+Z+KhdvADff202mtQlnnHiKci6uupa74my7CfwgGeXVsNJpzblrG7TELbmnBz6uSKIAtuj/NhsU3kRirZLTmOWmyT8riQTDA3QzUViUYL0NNBjoAequa7kGETjrfXoGyY+XQH75qIdRdxsvchob7xfQjO7MAcFOpr4Hkn7ZFlMI7LWInzT9lrsl4T0cp6CSwEPfRLN0OSTgbB4Mt5AuJT9nhUBjq+xk5WbP8D44q70QM4jTfRGadh/gohlmUCckQjDJSOXF6VkS01vh8pisB28Rh6CneMQXFCEYs/jisU+gNzkXr+Yuywe8Mm24GzAlQlIIG/ic1XTfaxltF1p3VR8OayL/iVka2G0JAsXMIgyQxFp1LT2FtvACllQmOrGDgzdp5rh28ElE27f70j6RJABFyWXWwFDrs7ArkrFmFxZO5d15qYg4ya2a6N+k4vkvcI18hOg++BY8P/PHHuY/pkfsqXuLKlSsdVirN4or9AQqTWDdYg1lvVqB0n212qfLZC3hc5N9daaO81N1ZLKszbd3tvVynNffISEvZCkSlAwKc9ygJJ4tdZ12JLNFv5oQTbDjYJuve/4qWmdUEbS+BCpN3SO0914tkkaHv/q7ArbMUXB8LYQ/Gy0DMCGOWtQJhl3UOwrLMgO066lxB8qGVYaD7/q1W5AHCq6f1ijpLk+2C0YsJzpKg6Mqq+D6drsTS8olYkv+ZhfmXoqi4UvJHoMSQCXxFxszsF8PWbnvT4EdS3n/VS+lJ6uLsTrSrcRi9LK5WKvs085GNdBB9LGaVM/7bG4KpjgAQFkuNFcOGqUBZbGx/zss7ZHW1flIEr4TGi8T2EwX0TWo1sreVWD1wvRgfCG4IB/3msKG5tVP7PsJitNSu6YvKS1vs1WvdxjrGBrb0hHD13NdNKdLUvxQ5VtSXbmmOk29DhPDnc6JdXqxf1HstP+cCimqx+LbYzzUMN3ZDzhtKpFHaUlAxrTxx8UWojkewYOb4ZM3e9QUwKiv76bmDPBDgirasfbN722brgYe0dCYt3TpisOVKsPXX+C+lSjoemm70e4fuOFUuAFlW8Qn0v2wRWzQH+PMSAMXSeSCLqslIApZOFNT31xnLpe/b7LMbJ6L25e2A/lZEbUrLaXl2AE7IDildDUuBNY6RysK/jztoKsA7fZXuCkSwt7rcdRIoYWztnKI7IH30eOIuhjsd7na53IJALaZYUOTd/mmpbr6hLTTJcnRJjlRPe2U5hklvCkHkXLrGDTGiZ/XwaeFBGyZ8HzppOqRTxtWCxeWJ50ohYG/oCxAO0yd6lOVtEsYBAfabFp4DubMaHUJF9UWBCnGSAJFnDNKCOak8UheraAQyP96sDQFxoNcMWY3AbgrzkuclQaeoGbodHsgx3jiM4yeJbWPoHZxOGFH6EE0VjvbvEOYiAQP/vHcWYnJ+T+jL20t4hzlgVDUCaDfSr9Y9Dr7MSurlAMG0kbxogWcntTBe4DhbSSNxz0rJoB/MSjrALCbSQ4nsU4kirUeigDb0Mf0KquUQchB7BvUyPTBUXhGSwIbS1rz29OMsYF0zVf5YB/mkod6KFpUDuYJSU6W21VgDE0CwsOma4DMFgDK0h+Hg7krnxsGk65rXrzfd5rMOiCXYIzy7OpdfhYwH9+vPb+jQ+xgCIHG7yiwwIWzhLseTj17/2TOSNWkFXpgx5eNa126/4WLNaf/v2BVlYOklCZovTdqIP6/7RiYdphHPWGIEKpkZXRjU5pQxwYtKuEQJRWKmvdg6Lr+0yxpTj0qVEjmu0wUJzE45zufxzPt+YCuT0C8P3tsa7UKqg1VBw/zMp6jlgNHpoJbKL2Rw55Jb4RZnSU1m45rwXRRfYDLCsB0Tu4X8Yl9msUKG826U6P4TBxWv5d8oHOgUIg1/Iia6jbmjSDabtKdq5qtmLD9+2hKVf5jOg6NgVnAGvv5psIray9Sygz2oMtOYpY5gHuLhTmNFIWC27tMJ9iaDfgSok8wbL6Cp64EVAcykTdP7Q1uVMVkLiLpIXSrQuHw4y8+hHy83fDZlWGjaR2veUegJf3WUi+NQDViOhnMV9Esq1YPTj3EJGPhokRTIrQZALH2Wq+SJLK1UeeFE6OGGkLMaP3D4TbTTTFA1L2qHYhIdfd/bBEaHUdVol5rF5TYOXJWCKReUwfzep/X9Lyha9ElOCxSzXvC+tN6FNN5xzeh02K1QTF/qgRhJeGQ3sDYEhm2jx0CY/9wNKY6hx56D//6sfmKfmfNjujIFK4HWTfg9Rr1lc+aRrySOviPen34XqIHwm66psuDbCw/t85c/ZnwXwthEjSbHhSiRD00xmQSGDFoYM2iPHRW5ViB5pESJH9RrHf3/+D0yLV0IphK9r2/+RAICGmLDMvrNBY3ZfJmVguanISciwmlG9FH2CHjlI7wVQ8xPiZSszp0IBtuHCuA0LwjwVwSOhnTY9/GYiL11SuTcL0DbQkyly4a6Uc/GUDQDRUWK+B6ep8XjDSXk+6gIPYH5rp2L8lW19poizLhx4NP4xzFGkQJ0w2BTCbzdp/PZTY5OhDMgkvFwBzhE1k7J6Rh8zZusyztW9bBJ1yjy70/ZXc6UBFf2ODf6C5NPLJ+EKHIcvOYFzo3tBEVZg2ptIDGs9bl6ErXbxj8H9FIxWWSualn953qRyRDtnSbX+tNus0OJMttSDQFJ1xSXeHzsl08Wt3hYsSyBuQaHPWAAJApmvZpZUE3iLXI4t6dGyTxC3MRGplbcdBxoqDmLO4L9OFnA7XKjQ82q/ZcOMIhr3VZfzXaw+UK2ZperNh6kELFuDoWEmbN23VcPbk5peEKzO1GPKFFfdtn+XE8txQ8mZaLxdXbFLnWLVP6CjDBJwn81TSqmucSi/CI2EDQO5bKQ9IP9t0JVExdeq6vYVC1dBhJFHaB1F87ckFo63krLG7sWgLYzAawOmJ6VQcTMqIKzTUDfQhbHGeAhliM7VclGTtfAx3aQ27ta1BHNdReXnpFyUaGb6L1gA8CuJa9+vIdg9ozt2c95a2vkMeNpO2C+NgVdEwOtMtvjcBzxQfKKTN2rvzsRkwa6AlhQo9pddqflhXgTK5GsWQAksi9JRyn6Hbl0jhCXQGB43GRTyfAEBCawp6diICR9ws5/3gnS2nrZkPFEa/cAdXgunezE8Ehi+0AI+ZNB9kRf1yI7KgcJiB+XP2nIM+9KJMo7bI/dlGWK4H71OsxioQ4DluUp2A2UkZbwtDyUBsUgwPAVyOzVSyHaxbnS80K4MUg3ROyPjgzzXQCkVSXAKibhVlCMclHNy0hnXeCr6mS01QuBGNujscQ14yFbddzC2KbrMFMEO3WsyQQ0c8uqXrYHe0lmY47ObsjsXoAQpIqbSgCKinrtysamVlBeJoFNb6fG5rmb7eGlINfHYg0pHQKR9XaCnNKxG5fM3n4eB46FUcHkAbJdkdn9jeQFTkyZdk8brv08i+umf/RGE/6jNzpAznh6oaJ330x8t5IH/639X4z1O3NL9HHqM1Szj4l5FwTPXI1KCgapD0X1g0/bN/T7BuH4EhBm75DxCcjgn7TJ4rlwVT7k+Fol+MHqfINNB4FuP3Jx0dc1F/udAVpaJEeNQn3dusz667ayT2JOE0ii2+pU8Vvkge6pfKk4p+VUaQDiyHt3bK2mlGXl1+h8ZcQQPD1EgZy35CA/YnQ9vx/6WIpIYnGrdcJGxv/jjkTw5/XEFuSZmtbpUX1TyXzwpDEZbNK9C4Hjm59MJjqWYIdlnQU2YN0ub5wO+akymUsVTLfKmkcj5Xhfrg9YS+8ocL0BEaYbfSuNE6eQk8KcXitzCg8irBdiv/IcM6QACyiwPqankjiqKGgqEgouckunaUGvpi0oAdwRDOOEFtliMq3nOFCrInYfcpe0ZmPQoGo/w9LVbplqRmQF2Ia0CSWQT/WifgZZNqv5gDfQ/UG5+6ZsJBj8TcO8aaeyPxa+jodQgYHABJnUwgyghw1+qY8qGcie5ZjBdIV8oSf+ASOgqgmdfvbVqYt8+DahTica5vFIc3heqNEJMbIm8hNrogzI4VhIVyfrHA8icJNBPKodViQxPfuEFJlKKaLbHuMar9hlN3mkHA5/OW1s+Se23PZWaFxUQYxLQsUcuTkgLYdqpfYSJ008U9ZK4/4FRjuMnwD9Y6gADaBtQZ6V+hpCw0ev1e4hL0iYpIIbWU8yl/z4OcXwT/hcoaRnvshuoFqnsLjLubzFEb5DWb30W2IYs3wuk0rIxaNTyEHKaqnd27dVe5awnuxB5L4Ek363AVhRM0KOLD5oGgt9wzOMdP8RMeGGR2gIn02CqnklxL5ksajBA0UnRnT+YIseWcP7stEF57tG0JW91KyvDJavdQn0U6Zs7l+uL2PUNiKq/PS3C/C5fGYOC4xqx3qdXrn3XhvzHSW0eAkEHMnfb9GZ5YvSKvQQuuasnYWX/Mh6RPBxQ3i2RI9yaspcyvUsslvmBW0mTzOwvy5q7ySRkDB1njxztVM0x+cTr5WAmLegVQYTHaiJA1B6TMtjlDfm8VyUOvslwrVQugsyKB7C3A1mR0cgoNuC/5dZ2WbafHnoJvNKsizo2G4A8uyNChB7qujpzA0YC489kyOhTuBhGZA+kgOpyssELrrFPzhW+xdlcd26GHGSh1i+orcBNaszXA16kA+KRs5IMtq4y0ZPBOFhF5aJ8Wl7iTN+HkmUzmmvcZoWBk7rHioVqbGeLJ04Ez6I8XhglIUuWSg+lrSIXtk0Oxs0PejKjJbb++Suex8HBR8/XB01L2TZjpQo3tBOVg2IPJ92t3klVTmf3Gk/azF7QrhHoMeD4bIO/FJ5xixVt8BGX67kO+rrF8cKhKDo/cVi8AqdaQzSGo6CwxzPFGD3Wi2R6HxWFv/eSbnIchezBbpfns6SAcSldq5M4JncFK/qdPlWHsvqhbu16OxqWm91t5GlwKabkwlKSw1BYsKxyE3m3T9bfHKwHQwlxM3cHJJiy5GxPG3t9CDhMVsyUJjrsefaV5fK6mmU+DE/oT/qBq5AStXiVjSLZr2dm6lt3OZDG8g3/WIva4SoSbOtVasgV4IXs6M+7iVe4ZS+/P+T1yjpuoABVuC8GRaTeHDpDys3VObfBOK2xSYmykU4jarmqTcAqxnw6JZKdL2T2iJrxUNFsiLqeeGMWGo7v8YfxHq8YEKS2sZpO4Ck6vHq8e58ZXfe55JYkS8RL2eCMSPzgg0W7cxoa/Ey+iNyEiTcVDCLTI8CcBsJnqXzcFZ0aYtYGaaRAxVONWj75coCj4E5fdIpeA0Pcyd2TAvM36LJC/r3nPmGMttvPo4Rf7uPz7ME/ngwPKQoIFUHCmOCkNNVwErU0HEdAiEpv/5kbFn/Ozn5YBMAe0Zu9sz2e+GE1wrzn1x64m1NtBoCtYjomqPayksDdTt2YopEhU3P6BJSa4d98aeMFzkkh4ME6Jf5cshYAMUs5EJZLcShNtqvHV2zpbNB9AZ91HUTjjzbxpMcsPnIFwSwuOsrl4OVc0+TwwREZOYm9+e12/KRJylvzodppvmb71XQCbR34EeXNbGoSafPj2fxyzPu6j2MwECqBEAhL9HU0vJYo+sV9RY2Z26oBxHJC63qJniO8MxkqLhuJDmTUcrME7AitvuTnTF3wDbFt7h/x6h65fiF3XOY/06w2AYlF7l7WSv1DZhWVAiBjZIan9oXgNgrV805CWVPwZMyeuPsLJR4EcmCgwG7nS+jMWVxQgS4NLnKwW4TuDt544PjVxMUDL65bo4aVPCpABcGHwCUbpcMeGZmF8SvHbT7Lwu+S02WFQoEG0E+4BfY4v1Ddb4z1lZwozPa+rqBebUDH6TSRENWHYDc1OH5GB5bxlhBDJWhqFepRAm0MzUtjNZB4r41uNUtfOlyRMvG+qnySjYC5Md0dHY4zPBWlGWJ83gMNbRO+6fhAvUXc0YGRbg6qbtYDV1uB2v2zAA5H6D5lFcuj7yMjQ28izX4w1s4hdSZXciPstzj2a5RxRGv0Oy4pkfQyyVBPVdW+Xv9BxoS38UGM9BO2Tvmwwrnspvzuj2335l6G9N2y0IcmRxePEPeRDI6mO23hYv3Ivg/6g+5Li6HURqYvNL8dsIBaCQr1r4vL7Sr6l7aR5cQ7AvYh8Kje2zS1sTIKjs6bN7ow8sCO2xBKJR2AYLywUjImEgHSTtFW3p09abNo2hynAFVppMgbLrgsvJ3XWhlrdT6eerQDf6KEGQVs8GQfX4KbpD3Jr/9elvDkm1JZJ9TNrb/btXuotysPIbQy2SW9cXSo5seR9mRYtw+hjNEsF2m7SvF+sgD4KmsBvfpR6TBM2jfAV3faes+4psOjc6Kk28MbTZs2Gu7AaOSDx0R4yWQoy1g0WoOnpqOuN5l2QgkqGaTyld8gS7/ML7O1Zo+y3Od2j7AUuBM649OPbcJvBKJoOIyuzcT85R+rypFxRMq9DbzKu6wIecfLm33icY+MyOSVpuvFe3yKVUw/b/qsnA/BrLUyxO5wmjdVzTkyytejT5STEq5zpQ2rjdF9DYNTJwFQqENbgNaTokeYEuJxrIoPsI06a7eKh1kUPBYlH8zeKfXMEvanNz9/dd9sjDYkESMq1U6Q7mnyGyrib62u2L8qHA/CRmAlfPRXyB0lsHiK/896K3/DVnG/mVwnuZKCvx+AYYXxDNUf+qCYysa5l4nUGXuUC8Bf9aEV46Cyo9+VA/9jFptCCylTPHy5G7WFJePU4JyjghfbLRlthoyJrraaVxYNx5a94YdxWC5Ka8cJsMtcILXQWyjs4EyIp5y238OD8Zj91ma41qha16ZDQY4D/vfErv3t4zq5tjHZzxWwm+KyZfRzYuBpHaqDU+Su9TjO/SkE1H1pr+BqaNjBvon0tK0oXmSecl/BuIZduMcmUQZs9JIdlcYV3WwT+8l49ckvryKYr91lwJtQrWsOrFYTDZCReRY9C7e5fXws3qJRc3U4v0hkHwz7IuiimzF13zM1HRu2OSTb5cIY3kdpDwqGGYQRbIAElTTleGx9kOH+MAGSSK+Wvrf+uyNvnUdf0c7tywbMg8x+wD79J6DHruu2zrAOFWYQQLyqej9qwrKeS5vIGPdaD5T66ZeMWSA21e2SL23k3uYcX4zLZJ3C/8Z6bEW/JJUUpO65/eFW6/WJLRrq6k8BJIQEunzTEHBj4Oomw4PJCFp6NYcv1XUrjislDQM70B6VrNprOoioH/UCulJLizBeeoLz0TRMqlfQeP3qK4tZixriEB6RRZ/F2LnxoY5wS8t7exRYYFGhQuUnpEjyaroDHLrrJpDk43g8+J6ZTLFxp41clcG9hty0GoZon1gSYY0n1f+uHlaUrsim+XUMkCqCFDJyVugG9QFX1x7+kMIUBGPnMbBaglslFhl0z0Z0FgMXlffPSue4ERYetj48BIMcE9Fyh14sYNvhPCG/qwhPxuqwb3bJrKARe5KVmyLRwxUL/E3dp6SbmKxRYwGrqoGVdyoiMwhqHcSiev6Z2EAun/xGFJ5+kpg7lNK5bilTD1INZktLXeSLaJcqV+1gHbfUC7ux0Mx5o3JugfwAuCWe7iaLRkJjPDEG8NOdiZp9KwdpWbXnM7mpAbcTag04qlCw+f3mX3Rq24y/WWU+YVG9rdvp/cg2T98JKKt0Lx+hSO4RUHff4m082kXMX+kYrQzGy6sEUker711Fd2SV7dpjpBK28H4xFETaKSXhIedkOoXr90AHaTS1V6HkbcsHxNRlodjHEQk0bZwfsd/J+B7c8NuWeNjz62nfASDM65/ywT/5BFieP2PrjXDiVfjvqrbNjUtMLDV1zRrYl6C+gD+AENEKVhd9eegTIMTFCwvBrottHwZfN34qdDLXlTEJMnWD2LsNC2CMNnQyqIvSI2gDPA2dheiStfc5KSEarGApUzwV0myU1fH2bFSMfe6glRmgDorfX2402DwrolYdvu4on2avYD2DYKlBtlMeLhL7u45mbMMS/VSzWbiu7ro6Modo6x2gE9JfXyCw8EPEJ2AIogpaeWffnIrubDjKRWhauVLXssNsT5wi9e6z+BY9NGbt25dVgllYg+rzAOGsGVc4P1zSuMR9djJggwMV4RnqCCVkaLE1yl9NAUZ7/mDz8NsiXiRbPP1eLew4Xt8xWl3/CEjNi2w7MRtiox6CHPT/2Nh3FW9l1c39AJWne6Fp0jgTV3jo3PLjAPeBqTjZ8jkIO5kPzAD+5YtGvm+JZtALvlwL+1UPJeeZdtKvUxhhAYpdg9e22oA5q+qNjUl1K/cGsZkQOO/Rlwv4sAxVdQ5KJfoXZ3gWA51LUHAMpB9AhpmsZ7u191gLVOkDlElnvHLDrQXwWpkzMSL0Ynae/HyYnLFgms8zKSGEArt1AAdUCpYGO5rtpyoGE17X2nMv2TfcY5Caak/E9uTm0fu5DoxxznmZKOncSIHbVkyE89dF5BgpEB8PF8dUAg3Cgag53NTPVrAXxyTz1hYVo+D7bnUjIKK7fE13zeH+05pdy5GB33ou9QjcnlxbruljV2CRul4Aucb4jZCjNUJ9p9hfO8T4DO1iYaRe/x176T8OCW2j+WncNPpLUPJUD4P9TyIcHDXGW1NvmuQa5QFE/eBOa/nfBNruvBN56txqK5NnjCuwpwCgDmvNx+3wyTLahKed3dLX8tWVJD3Kw95HVCZoVJJ5KmZmexT5tdlkwbOVGpc13uyTlL+TloOsvPHxcO/08+w0qcl7ty1RaI1DJ8iZbACNK5N1nVHU5zeGUFAetAaehnncULAeBFQjmfvBzWOqggPdSHKfAP4bgwRKjO8CNbKEbjlgbtnzKp2RX0vNslKimaaToreZzgzmN4jMmkshfDgB1RttauwvjHSKV6UGEA6xdrucOmm2deMpyb+jQb0d7dEai/FO0IjmsVYqRlbG0W9SwMSLa3dNFHkHeO31ACZQjpwuED+r+73Zp736xKyiG2Aitkdg064UhVMmMflwmo9te+n2rrtvspOt5Y2FULclxGqgYazwJbOCA9zDRfUk3lAQsMk9B50+07DjC03rPFq4kXnx/xss3cyM9kvhVsKmvXVnW/lloF6HdHJJpSLp17EaS3btX2uAEvA8l40JEZVT59WxQLFxuhb95gg4pDqQ+gYxGki2ilboXxvXP8tJ6aWanfMZsWOpPiPONlLIU5pSfgWVM5w8vdlsN6MeMA/vIYHsO6ab7axXKxZ8AA5lOPBFtWYL1xqV1ZFji6n+qgWwmqCgVl9ikuSbiuDGfiH/vuY3JDCgL6uKdhwlNcMnowNj4wK+uj/2cmFc9G9oLJ4iNm7U6sgJ3TZ23xVAS9i847gRaPjyNGGIRVIsYMkEClv3vn9b1iqeEOeHz4cgK2NQXQdyQEu9JpeJ02UNwTic5VA+BFL3J/5NpuiZPEjDEatdBxLqkW7mu8BaArpIw7KxHGSLXmZ5gW7ETY9Ce5ntP2oNlRABnwki+j7CM5d2t2g0enn39mbtzYOb52p/YeRYYJ1tJ52ZcUg/mb01RDVhzjKSVfmWgXq1Sstxr08EwFOMVrhUyZXNA0Vv6yXKEPQNeAKdKUOmpXOU45pCGtvwshA/htAvb270Bk9BVGMHaCTrnsl4YKRwzW48Oqii7PeE1ICoUvdNuE912j/MBGIwdsdzNmXDwyP6QawutzS2q4ECAX14cKKFIZaxF+WAtyaa1znO0kTTezlKmTkpH9pOBpKK8OO14h5RhOuzwQE9L4U8z9Q6tfZYjTozKHLuBcuU7i+Zpr9KE6u2vVR7W9CjkARRfxn9du0VD4dspeXkLJhBeWfihfOvTgIav2F/vBD42zRehXSKvLfT47dGIotkWItt656sNsbk5LZ6+JjDs6k6WZVzavRy1YoXWFYMkSg3CR0oznfymgNzsAHZYjGXQov1nmJj6sMEtwJSQWXnIPq+cA5WcDYOSc00P3KvR0za7pQ26EWR1+F6uhbZlOmWtT4MQJp5NFJp7ZkWlRFfvelrHhFPExGB7Zg2liId0eBx2rbOp4qBaDAJFCcNYrztxhDNRAp40lxrJZ1G3pzUgMHbhcLrPQit+s8IDmv5wq86/7C90VwzkaxbszgBvi5JgjTShCs9s4q457MnU6Piv26MZOTcWL4rtycNvciSOh9xzg5wtwjZsxDZlxKKTbJViQKbxnbV3WewegzUwkXNTGNEeZUxpFs4yB4AggN5zoMLP8Nrt7xyQ4bm469//hQBshA2g9X8lm+uzqN0cLBuQ89Lazimr80yfV3mTdG2V+7rZHvGClQrH1T/Gu5VtNrdcqps3Fu6as6RwRiJi8JuIEtnlOrQpr5qqDZ535vGDFNKUTJaCkR5bfMgOi/IUvDdT2j0GxlEKU0P5EeHJegSQ8RabRg/sOlbfAk3m08xbLn3uIAZNGK3khOz6xoUsbvrJwKz/ONZzOqlF4upk0/NX3sbpa4nlu3LDyimkfYo/ttONbD/IYzUgGi8f2VCUflfGiMmsrldK1n0n8i0y2cTtSmGqQlea06qFzwTZHULiv1VS8y0FYbWmLO4YK8YIG6MfvbKkAWrfuM4SFxbd/7w20kNqPHu6wmKq0/N3gW7xRTnD1YxzGU9X25Nzp2krSQBv/ss3Mo6Ku0F8sGMKDJi0Us9fvRHVis+vgJwbY7SBOo7WkE8UOQIddwof3HYH1l2RCo9C5RIhsczc6WzKRCHMW2x+ukzeZAZ9GksY9PAd0WpH8k6vYQ2/f4jmlK+62rs3Tcb2sG1L9mMFAXxCt/Ti2PaF33K2tGFgNODKrYxFOEIZl9XpgnBWRPFThi1SxGdcQ6brmWQS6R0d3TZczH8Wuw+OXbbVY3ImNX1AG9p4WGpDwmrL6FxZdhQCNZq0HH/nvKS97dUGiKPLozkS7/iCOcNW8c9HkfXT4t91UBycH81UOKf6ff3usqIzUkV1s7wr+S9G8bvaRn54a3bA/gfJSzbJpZlEhtWv07T/1QUFAXuuzcuyyVA7wGCt/4KUbWGVNOMWiffLM2Rt1e66gfKim8bHEYxNlUkOya1cpl/1MRGo4kodQb/PCiyIJZ7PibblWW+VzA2yMTd2MUW9p+BDSLDpuF5HxeNRY+/95J2AsmKYsV/fiB/VLN3fT0/m/UQqampw7NyPJsQcKYaDuxyLJraTDpCOy4Gg8xA6hFK7gXqUgiHfNeuBcsI76TUb+lHN7iDUkqmkPtdNEkm40V5OY16moyS6usDkP/PRo9imnixolp3UZ+oClnvK7Mb5W/atpWfrK937uEHOW4xAYBMcaetdSFuV2pn+SlE2k0Sh2+qH4BiCG28dr1mpQwCJ20F+m0kDvItKy5ck+t2wyLf0Mr+aosU1DLdDIGnAmSaMVo2xvxr4AKSKM5bXO+hOH9iJAGmeYIvz8pZ/u74nwFB6F2VX1VQxxTCrTCxQaNMmdtFyrry6qVUOx1RSVv8YxsjeXTmn0sgT8/tEF9sv5akSGNcX5A+YWLTH2zCVkd0Idtk9XJeQEXD0OE75SfA0rYKC0lAyWIGLELsQrEy1uTgMBSx+dIClSL7l4JjfC3XAQfJZ4nVdEAScLqhCMWrTgxeWFZ40Sc1Ke+C4vauBUp90SveKtgCSeOtI9GdSzOakTn8trTpsrBkq9KH8QQqa9E4j4IVJyleSge+dXxRdTGWDiKcV8gTaBkiOea1TH2FZoeQKENAJju1eooVxhLLzmfkozMppwWTOIw7Og3nkITsmSdkLw/+aMtl1CANovoDaUCeIhmESqbSU91alp7zxn3OTRfxTPVint0VGC4IL/DN1TbSh5Tj4kB85eCJ0ipJ0K+rMTn/SEYEAhdKy6plK02goafAhRkIHqPhiQt/cCpWD8UJE8eeWNpQhmrNXyz+9lAfp8blU9fP7HtNcbRIMneJRlJDjTZI0/AF151nyqI5LA4hta5kOLllAJWEmZPO8r0el+2NQfe8DKrWpam9r+nWg1OfZNtnprD+023O+xwOYRvRRebXE0B93l/2TlwPxSQb9lPAxfbO2rP/wClbyCi8ymmQIpgB5xoUSOvf1h3Yle/+/aRg/bn9wyoC/82qBpZb0T/bXGjAY/M6SFc7dmSnJ65VSznnagWjretnhuqPQeTERLrjQmRpXj1+r+UaTL3GyjUXca1ubHqtJtIozuRKb61lU6DVxaKPTvbnbH4Q/AjpSs8D+lt7kAoRN0auYkYx5qlfkcAhG9tzPfyGehhN04Hpj+rLAUXyVLlqI5uQiQsc3yvQhuTqPddbHAbSr6dxm00FtzbcG6D/BhbhghZsQ0fRGCtC2COZzdMoEhp5YN0N07kOFlyVAOu2GICvlRJ+6ryTBcFdiGnuTGGx+/PmJDL6l6tJrKk1eAZPVeO2hr7A87ZRfNC1tIp/CNZoE9IAcWZ051VKMB4AYEwbOwPEit8bS6xFPlFw+M5EP9xT4wZydb244gok29DDzv39COsVUUJt0YYgGc6z+LieubW62+JsEdjD0xUNu3lwQ+cZeLeuOujsW1U9Yul5z+trXx4mfPuFZhhiQwl873aaoI3uqGqAoxofaa4giLAauMbqrLaFSjIKR1OHEibLEvaWBsVTB3lmz0FQTs0xO12irM92tVI/3mFNLDntcxVTpg/V9EmMsKbXgsGDgu2liG6QoJ2J0KC5E0G7dZr13LCBF6lLO9a2WP9BTDvK484IigVWvpCG1ZocTrajOnKRKnQHX3zs0LrzgDUUH9GH0IRikJ+Vl4CrSjXS+UcvJIt81ZQNcBgIlufJwmpUeFKdYWSLBExrEFL/mBcycWHWcTpBjeKtEmRgy7fx/xBO8ZJPWlA4p9NpFe61M4FX3IgUdplPo6SFMsP6XnQLZrLjV8ar4KYTaVeRPd9sqdLkfkmuXxtHILkvXIN8CuaeiZnT3Xx8+cru/gA0R8aR/cX7cR62U8LM0iF636FBJt3PwHSpIBXc4BoLwTgJs8Gfm8NGe7NpIDeW6GfH9uPtCsb4MMhXWI8dAO9X7n/4XusFQzwsO7gadNi6jwbtKjXKg/HKQhYjp7s7ZFSmju7vMcojBnaMfYJ8fy4Cnq23444uCPx5YfBEpVwbHJRAyZg58ti5fsPaS7L8Ujt1SWvPv0NPzPh8SS/omkUA8xAEl4+VQ61+JoVu/WKmuQv0ZlFGUX1YwoYn1QFr0kWJrnw4EIrxPX/M9vru8zuvu41IdUZX9Xyi6VM0QFSMaSyWvNVjBfa5ksEOzqhgo8cAjJ9GY9HA7yOu7QcLCtxUFZ29tImEbWQFklPricdSgyx5Es5Bqfj8+1BUvQll2DB3qtym2g5cEvrqsGoPLFahZbzEcX4Vy3+PypObWQHa58KyThPlDJz12G02Yuzb7tm212dn6cKMkVD3JjzhUBS4OgJsuPcdlEC2JSLiLn1N7eNEp43CeAu+BEwD5sUv0qVqvEHFkV2dABYWzrBwxym5QJQIq2TZZ7f8xs3nvV7Yt9vkY8SKujvWXGvf7UedIwmwLZFVyL38jCzY3iBV2p0P1WIbTqF9vPmOCEQaZipOjDF/Nhg7qN1q9pFP+VNvJlJdg/b8YyTPG61KGp+E1WGGTKE6J4cyZBJvS677fUIWP/r4NN8B3UhsU4yNoetbiApj+9wiK5V8h9bwdAjLZmmH1prqCd0CspfkqnB6kK3uucBdBXUA8PhkOxuTfeoxilrHESrr4NMjIiEm1YMaxBj+k34K1fQBuXgjhkbiwlUPd5vff+tYejW6dJrMbzFzUU16eAIbNqDTG/lXwYFdYibFdUlYuQ/q3hwaCTjyT9BT7SIDap893+48sveabHK+NaIIwSFSMFCjcJmFs+G6HK9AY/6lbcW0ExPiMmlCOjt3BeUezbToihkca6mq2dRy3YSK20/YYqhep0K2IXgaSf+iNJ9MkZfrewirDKfwhQq60AjRdf95DyehLqqVeBu8OERA/FS9HXjukyb5ux8rMUk7mtY/U68k/6D47X4bMH30/WWJ59AAHeXpqKm08EPEtlReLQQigizSPUCYBMf98liK4TGDyYF+kKtRfOE4GRxr1iwVTD3kyOXmnIJHrt/cF2XV3CE68EPvyNaPbu2s5tKflKVZZPsEyl5tnpZbl00GCH3OKP8LYnfMC0pvZgHnpstnGTGuj3J7C7ZRMo4XKLHXMV9kCEYjdp2o8yw0WnN5juUkY6ka2gRvm/0LnXQfZpAz9xom0UM1hly5yJJRRWOjwE3cOw7YuEFq/9cAEqW3IccNDez1iOTDIlaUxPobZcScEt8tQF/BlwjZohR+6rn6WPfbnQjivC8i6hmI0BfKcuH6dFgLdK0zOS0PdeiSi3hskucT5HxIaRpLX2f8o/DlIB3hB4qpHJtjzSbbIW5twUEB1l10vcxNvZGK+rP+bigvmZunzoehd1pN+1/b1LtvyBOP1rIbDBvHpEgueXQfR0yM6fewxJVPD7JMzV2+ogNTtnhpMRt5Y6l6WoP8haAscdS98xTI3owaB52RAhDHYThMEFbu/29g5N6Fx/wMLoR005+Uwp7KyiqwpSJeCogVczJB/i0Tj+e7nEjovaR8zziw1yCdw8Xq5th9zIznimKxrj7wru/5oWlPuQWYcp+gFOyjvzy7ie3KG78UJBfHdhoX46BXdWI8rArV0WbrceuXO0vdUaZREzl46vZdcTvG0Mg/wy+q9u0ZjmuEhcQ2luDUbPdfZ5tripxxWp7roVly/irDWktYSUUYIIWn+frROMIa9sLz7Mn4M2vInGoFJbpPu3M0rzK9CAekISyFjTscP5Ip2fLJ2QLp2gVD8jtu4JFfh56qDUEyagZpss65UOoTzI+i8tuFQ28ya2oz9HjC9wi5g4nLc9Q9IkZ8brBXIzRIMFeocaLXuxrPfzkK9J3z7VoKXPoRmwCnJXdYRw7dPTOnYP+HcQ1Q5libJYCywylfreDli3BJVC1aso+6bbMXXdV1hBHzwsx8OtngWot5g8AftBSY/r0yyP25h6BYQyXrNfa1xfVxVRZWRE8RdWZS7FgDciK/npRPfsoF2PQu5evbiGpQLDAzasqki0ToE36mMxAZSSh9+mP27Coz3pcO7+yedWQXkchCp48WFr/B9H9wATrkWv62pmD4Mgel0SHDJhCH+TJl1oiwv4C+4Ojcn+0Gg3MwQsXQrMoij20tpAWMmCWYghK/go0DRIljw2zuo7r7rur1v23Y3sVDAYPhZoIAS9rTt3FTz+e3DAlaYfE9qft2kSDuRsv6iQxJoMJAoL/nyntJttENMl5n6dgguntPAMRImxGYB9kV374nbWVxPDHUQKtMuD+9LAQg9N6jtQvZoEfCfu20JZXaJKfESJeebwE3FCK9Sq7wR/1nLs0FUdGUCyw88QZyV8BGruDIKTH/Cp8Xfty04YWledyF/M1HZuc2D0p9hplvRL/dOF4D7PDF/g08N35rBJXK5gwrxG3PlJV83d+zaIVbuB+ct/scdi9SaaDbjdwouoF24QTOKomVPm8XdS8U3tIK7NlkRQpaMmo+zpobn2TGAf9fWt/NqXLjiTk+k7dast3vjeakVRiqjhxoNfnM3bQG+Kb+w0bel9awRfo2xL9iTjIxIosZvEJWb465oPPF82ms/pkFzN8RN2Ipu1Xanz6T26ETN2R5CPNV6U9emUm3GQvyySt99/8FlBs+NtBP3ji+lDpZt4JUXiVDH7b+z5xWLUqKREHWLRE9ZBHQVNFeBiYL1soMN5qNWCSypOot57aD4Nv9acpFIB8t6pmLR7gmohrtVpNRo9x8Rl8KSwcn5AezQEo5KZCn8Ie+sYcqUI3T6wVA/b0r4r/3nT8DCDje+UjBGEzGH594GYtSG2eGB6yOFwH8tJrhE82jFRBjd4cnNP1TB5BTaQMnnNVkQix5OnFLs4+inLYDEwBJXJpi9Hw3xztPK0lYQ9bReywbQ8/LwtBDQZh0buj/k8h5zNJUdIQLddvxwshO4wlt1EM+vKOd/AtK9l21dtRi9XcDlshvrjYpWskdJZkv+JHeJE9cA3iaUaq9LE+UfwjqujHHWyaZXDRGta0JPh948Gp9GDoSOEQiLUSrqrExswFVtcRsVtAyoHLWLhkHuRmCK5ZLNzPFvXZc9SRkmZ7T2G63hV1vH540y03MjC9DcumxayiR63DHCw7+EdEwrkfWryfB/i9+TOVpf+nwg/YIvG9/8/rV3OloUjz8ubXg6pe1Wd6SE8+uc3w9OouYzfIRgB7caIuQjv3aA6ANBh6Ls6mg3Vb8595c+i4LZgpkLDL0oEI0nZBl2iKg4HmziREqjHTMDgIFcRU01c3NEt16/fAUkLC7zKFQFkNCwVPxl3RsOyn7JDCdklzNQHhers7eDSz2afMNydfVbtgeJGRUxF5XzUIU6JcO9jLG8iLBdpYpNJYsgIROKZTdNtxjNgD2mkMOI95LhL6mIaSY53W9sPn6Yw7wU54tKmQg+o11rOJDiajnHYHbEo20vNB922AWUskjUBhtvwNGV1LsA6G9nYbqBnWN3a6Z2LyRuWnCdYCyccsibxn0MTppu00lktZQX+MI5oaSoN8D2g/DeKH6SP78XewA36Le7Nv59I/kGWc+rM2+C4s2crkFuRQ6SfCAsO/+Xy8RCgzufHB3r1pgHgwXNFbd3d8K5u9/PYAk9XZ17WlenG8dxDoJg+4YhJu+aQdyD9PkF/+TFbAHqi8Ug5ZGhZKNKVBXOtCHE3RtUXZSZPlemthQkWOwgb2/kD+JuBP1Gzt70/IJKcEQFCqFCmksHaiNvsWc9aqNauJiT9Z5ENcZ66cHTm+nw6CqbpRuprW4QeF//xZwgBaHfefWjPWSlrJiLrsDTn+A9YP8g4GDQwr+3gYdB0HnUApCzLegQtww0jyAjbmveJwbdSyf+JboDyMfUjuRxBNHKIQa+qKhmkQCWU1ya+S2nE+leRPnEcuNr9qtJbZTbmcgaLncUfW9GyXw7pG7+yY2HxAuCN+d4p5mlS6IKl6hPUVYmGozqQWiyu0IPcKrZQn3QWAnbv/vlwkKXehMHJH3UwBE9tk7opyXOihCmR6DInn7ntTG4K69biKOFgf6mvXZo4TlqcOehwBsA+SlQec2xQCl8aFZBrIa0I4RJddZiADG2gVXmK9he+w02vlyj0qiq4snB3XkuimOxl+t97+U0zBvsuJQShzfF7r+eEkCxqtEn7s2QyhmGTrSA8rFZFNlG3drSV9KaB44MYSMdbIFy5DC0fu0vWJ5b4Glgpei5rNVbM+YfFCPJYIjFLIxL/0FJlFIPrGKG2a7qgr5QhkH9WZTeE4+8Ecq98YgVyb5rdDIQz3ckM/moAUtyznXIW9mC49S3XuZ7lp73M/wxWjsTnB1QIj+jC7sCt3crytpy0zFwGghaBgRyo0bxOp8Wltp0WCXjdtsZ5q3OcWDPjlToElzY6XxUbmNYHAvVQj1QIi/Ccu8rClkTyeyTBHvbsxCLjPizLxThMCvLI1y318/32zovq+tIkVWztKmT9nYLV223UPvKsHY1Ydp4wg+ADQSgEIxQLwVBS5Er2V+wDESduz9zTLc1R/tjejpjUO/uhHu++GMLcT+zN/2kKBUfHnDexooslch+8wahVWlFs+5c0TyLk+snOk6G3iz1cNKYR+eA19pVRGn48vCFtTTLDS6796ddgcc49RGuA809tlbnhr6KfjheR6Yl09z3d7FSPhwPvsAuCTfcV35qkfV7nkWob3zS+G1V4L8gi/pZjHlLgM0jzgMCnFOwU/3skxKfQRiOJugrtixcaF3c7XwOkkTQOk4/f71MSZ+sUHqdbWcOLItUlbufuHcJttmZP5UOOJ1SW/Jbx3dSC8PyJnpOifvKbexdJ+VMmzmnHiMV6SYcdXVQ6YaDvSieRmESiHJ7UAfixuOIf4EhesrADOOH/Rj/3dH9OOZcrldvRr6qgzR/ladNNL3HwI4cCza8xCnYBmN3hh3RuCF8tjrBpFDE7iiUJNvgwrpIvv47danJuO87+VFy9Jeeb4TpiqvVmKf9aCFlBredVsICWjBbm3c2I9E0ejdiGYGem7LttnPVB1xM3iQWjHNbVxcPDkyz0fMB/CBEHHCtg9Y0w2RFFhIcU8vmTm72oegywxISW/47Ii7rC4dKYAZcJGMURwlD0Codlv1paL12IACmg7Wh20nGGPbUE9Nhdmbtr+w7fJTa0jjTY8HcsN8mfVlIMV9PewGo7DOdlmrVTaPf6MFavJfLOXmc84nDSAkh7NH0lIY9HsRBC6d9hlNv/KcBlVtQ26VGXXk3EsTftT6N+cT5naZWnHPJOtkbQHMqW8afYmQu4TpzznOYrsw4KyViaSERbgngRoHgO1Ijq7ID0DQ+yl4xoyqyrCXOsaD8OpxvWGOX6w3+YULKSRNHncQVypa8FQ+COYsHliq+UvACjW0cApAjXOZQvpNH17AV/k/BSwjwafiIF0Gw1De9d4JCuySmFBg0atGTAx59elUaWOjIUFpd+bZmucOpoKOfSJIgMC41QMiwhqymG7xsaQmEahBckz91Wwe77fjowM/a3KKhx2s24vzysQtF0fPkOlMfXW+bXnbfh2t9Ad+ctgq2586im1pDuE+EeRiZyf8IRO+MrCAe1Vds/43kj6v5q/5U0LST9iPkSWxlDE7u2rAsqXrEINabU4z0W+pQBgtmK03ZwA6F/QOkyFPSZKBxAFnLRwPaI1C8qFEyr4wNVQK50CzzVFHtbPTHewEiPHSHmxJXhlHrhZpmoCnYSzuJZx9GAg9eo2UUo7kKeJw7mdXS27BSSVEfkYykp4tTbD+fooPL67gH+rWuY6/JrYznCttSIV48xoDeS0JeEGcR78zIKgGDXXL2e9TGrEbA0ap4FJleed7TIxGqlkUhI8tgUUkMiTfA+h6ruEGK4QT6JRW3QEyeeuN5/AM9MGzTTGrls8lJZd44J34Sp2nsMged5zjD9GNEBhQxtgqfGtq1ct7VnT5vD8bfTeMn1o2vVvDR+0x6k3OHe9ZEIEXePnpybTffFbhKFBepTtSaQWg3esaL/mMQmUpJOFcnWj7sji8Jme9ELidHRZRfVyVTlNVY/iFYg84fkybxz/8BKVrzkKuz+a2SymBAfFTogqwivEd3kuFgKaVevqMHxgx27b76nQ5/3qtmBbXwdrgZvdlZewipog3+zCIkZE/2Qzar8ZUJ1PAKMz53CpHsOR3mCz72PBDEmP5SNoWfdqEuSGYzeuRnZ9jPPnaLFvN8aKwLCPHRZcbNRiLnlBFzasaNRT2pYC1U+G93ChYqCTJjst2AMzHIuaELbLakrmY2hrMiU7oGGSW2D7eKz4O81EQFbIItAQTTV0SopCHw544WEO7i7jW1ffzQeYwahmwBBzSLZiCj9p9Syvx71w4Xv1pO5htXa6wOaE2oF8A2TT1l3H3t/Ip8ofItsF9RuKGjPGc44XEsB8J/mA92Te0obbcZbGW2KiRRQdWcu2Zk8wgsySvDj1g4LZrFk8irELNLbLulanuTia0YFLZabR+Ogr0Zt+eEhBEDi3oHzMo6/LMbrAvz4MxFnpXweBwkSPeyPZPrifBoegjBycJCd483AYu0e6o8dXkEOi5f9FXQPTnKGuIf53TT/ZzmanYF77WrcdU1HGOlJmIUZzGm1jrpAeEOXSxNhxWz9P52qY5oOTeus8p2J/bhdUdxSw0PjQz20OQjtydZkLCblQECF0QYn+4i2xX5CVdKqJWS1Zhftb+a1YSbuLk1Lk26WQB89g0taY1rcc2xYttsMeM9E5wOUi/cJm08X348/L/qgMLxEAk+FpibY32upYL7WWjwl4ox4bkM1RZZqcrVVzpetf7D7XrdUmwW7sOaqdLJbQuyWko2d4UybwMPdLsqs9GE7bEkJIhXvFEE2I30nOTpIz5tXsxAnZt85YW1wbGn7ShsZlRB30VEkSTWzNd7BmYJENQTAGIgZ63FLLOoFhWiykNJIppTdWCNWfBbit5lLenCz4eEEGgW7ehBcAyix03O/57oZMUl6W442MgW6gWMS1ZTC+mdM/MnZhM0834aqXi+QCEVPBagApAue36Wvhgzw0zqKU2WVT8gl/1rKrsDWY3C7HPxFcjXlaEoy7uPgc6aHgKBBLXwMIvLiNp+jxQ3iPKF5le3W3V22pbrXHpSrNcd1mB9dFGpBCxuXhXGckgEm500xjMBzJPByixSDyNiI4ot23xoxXYkdIAcZkl2xJYO6MsLk+hMlnVWp11NNASloOKjAtDGqAI+wxaDKqtvpIx98YDlZa8zBa11EsjCP7WQxmnDB/8740WwMU5P6WvEBFCZsBlwOm8A7szbnOHW69BKq2fuDNmE/sYAU3RHKCeBJMnGakDoFyKkooAjhmmO6Q0NnJQ3Oz+EpWw3nES/WhKwfXghc/q03DwcBIhGo9ElOhS+2QVWHNrAueAxbNhoGTXrCo1vth8f9WyGYfV5aNo/cBTHvp3Dr9AukD51khf134EioCaVeVdLNbZ7lDufYesi61Nn6Aeh9ivKXzZ5PMcMP0aKIflgblKgDgQl9OssW9er88NesVIn5k2DMO6s1s9xtVLmPuKAC1vVWbQmlq6TWhEVMFEVOsyWCERsfmjm85cZ/1XyrRTWFdgS2wqNpqq+PqnDyadYGll7Xg/3SWCaBOszAYx+mwjm/DQ7gvJrIZ2BevX5joBGNAE1+DMm4fKZ5LQPy9Xi4/POUtWMH/b7CdaCTNWI1DsQFBFOzIIX1uufotvc38gXbYAocpJtniLsLq3w1Tyl85QhFh73g0CJMgnT7j9UYb4D4m0A9t6AFpzU6gCoiNYfJDRphXt0Y9EU63SIoGXu836w3lcaxbaal+Et9MOZsE+93pyujBjnjMUm8xhE3ZqRndX5xZsEpeTvWfUKVHYNXSChMRgMq3UI3ds/wejr+ASWPNrYb+LEPuj9QTQyCEjSOKqLxNR8bA6ZlDsNoplkyKEa7pnL6Z63o4EjlO5/8xkFmKdNOJMofiY2hj5qkCrFDc5EKMlRXSefwkBJUCU4ByfblQO55a2xL03by0Ny5jkVOIv7moewiNgw5TAgYFKRpGZxENdDEqZmIAMITFqf5V0BBOjk75XJ0gLlFJgd139+8l2ZTbnG6YhpfO0PFmwh39acl+FJTckNfJVg6TLl2lp1+nJQtkbSkTB3O9U/Be+gPliJ5cGYfi2JEq+9KPdTyS/CuxlRQGwYxp/5/aSR/HTMntiXDd0sxjFwpspyx9jJ+lrU7OOgu0+lc21b+6M3BWFqG2QEab6bSAKedU1hrFsIVL7og0mkIUUfZq4uAjyRk0zkudinkmKE0P6+mMawhzPVp5+s2LghK4fnKil4TkOouD83l0F/qXvwzrkwUUNtq9ZJR//W6diDy/xDeRJrndtQFj+9xPyW/rLGCTqscWeGDQCLIj2+4sJvIVFfVKrrNlYVm9cdijHHp07Sh4QJJYvUGMd6Y5iBPXLN28KRGbrvphSEUu6meCoIoxv/WUKoQFRp2hyhnmmJwnWnnYMDMe2soH3pHL9ja3DJgxQLeSWwPnRxhnasqCY7fOwVMIDpMlgmtbuuTdcxCcvYiyOLwJHYzXTPLlGCIRgb5MB92Oukk1mdZIwGHI7UFELS01D4+NmSMWmbNmW9o0dhcKEMiJGMyLRdyUkvK+lwAj5mC7r7ErPkfelz9J2yndJut/dOsLx1iiYk8p6rc1/aaW+ORUzFBM1DRnY5SWlGxDCDqmsD4XUdF9CmgYORKu0a+PbH+MIg3wdUvW5ZUpA4jh6j/cBokzjYSgsC+MyBfBqX6dy1FFjiq0hcGMo3htqGzrOEPWkYNgoFg3khsXGufJamhD/QZLj7+cbzeZ9L8Xi7Ru58XTN4zHl7ouxW26atHw4SvhrttdtFYZ5dCjFjWMGnrFUsGDJEMyImr4lxmjLv24A9+3ae2uaeHlPm0oU9EyFY0GwwHvjnSMyzb0vxE2TcrNZXB4R6G460q9n9BD7na+p6DESGpGenAxqKrJ5B+gMo0E7UcwzU4IheKhY51HbWa+Z4ALRRpE+0Jk+xyuDgZu7X+9+gfsZVOgX+E1m8N25lWicuSR+U07qPn2k8BOhB28Qiop+r2WEnLpIF9xY384QPkZmF6a85IKh2Wc4h0ntpGJ2D9HymILDhT4JcPiw3M2dKNJe1Ll0ZH1g02bDaWi+Bp9U92FU3gF2a0WahVRiG+wVEPGzaJOmLT0xBH1S21khcZEt/SSoecOlePT3dlYv6mishaIK7e6J4qu+9yD7yu4GKw4tLOBOUdd7k0R2GFFjLm1NihecqgHy5TYdsU7XOz1lZP9cI5QzrVgkfZpDD4qYRBQMGQM60Fa+baTVzw860ZcEN65IAAMOyxM5c3Ai19BRQnV7eTfRTn18H3eHt1Oono5EjZAItOePcfozYb8j+uz6whcepUqlM18N7ie09pFRO9Q8lhQ34ynsLKbbxwPVcD6UuSi002ae2ZnfwAWT1ys5f7G0qv5c6vTWBnvFYinKfcCaGpGhe3vtCxkVbEML/YlFypdlGqV+bNgk4E587n6zZ4D3CmoKh9LZL8W9c19Kelv7CG53avl9PKhPuYMJm/8Mqz91X9Yt1vY7uvcVMsvS204qKK5gw74Bl6yu9StSKOvrSDJvEHZ/tiwNpsElAi166KAok6t5BQ7BV9ebiqg1YNVTfa/q9fvbRtvw5MO4+HokFv9A6qMbdSQtQFbWiftIo8Ad+wq00xOsojIUGL9rFuB17/vPkq+UilGYnBhDqGoB8i15ejrgZlBtJXKQA2/b3qob3aaEafP77L/rIMCcDvNmkcLf/ev48Qv47aoAPz1oy813NYQ3tIX221b4Znq00stupMyIGhjfFf91YwzDVUCd9nyqrCjBzp/5K31i8V+OHWfYOqXl/QKt8rxQA8n/BcV+QRBeZiDf8rTiqjnmfPpj50bUkJWzZYX1x5et/bcM+nNSNsEgPMgAIQNz986ms78pRFbU1H3HMEC9Q3Mq2XbaNnhO0MZwvMbEwBEGt1RN1tAjKpUPbQ7Kk1BHZPnlP8/pALE0d2wHIvV3fHCrxmwSJLowLXKko7dj3x2VyBLRji5Fe20h9D2CWbAS+0BAYW4A7ZrTDieeEIPrP0PEKgBcCPxqArTS1sPk0oa6QeHjc5cbnoOvA/1x57IqBUzXUHy1Hdz0WtqVCr7U7/euCOjjeozeXVpZ7HXPq1nDDEhED+m8m9gyx5GUduHGnySshHm+cO0+RuSMBn98r06QW/LaqhMDp2DtL/3nh5YCw1yegSNq3/Hj20/CVm4o3QkcU4+36ycANN4L50mDrM3Ix1Zr0KvR6vkXWQCv60zXFM10T9R5bIKJ8df1pMnoAncbfPBttxc4zpVqzUFzKlXoW6ylV1YxV5vguw9tHLg7h5+qmveBpVB0YCMTVSOq/Op7oBIkZIoOJQukaIu12g7tsCgBTDsEf61yt/pOIGqnIXGE1XAeNlV1o2d1qEj4q0HM/hdMK7Dkx4wz5vYNO3t3J0tN4tKJq8NjsN34dwDg8a3cUllzI7oARgzStNQqLkKUCbDQ1Kb9e1NliokxhG1iX1HGTAmgcraIbcYwHBfNh8Cy0CCsiWiLtynvmkCF+cRtH8lTR/Fzbcpt2WyCP/dIbEXRpMa7ePBB2PMqvTuFDjlTSTpZOcujRCPEF5bREclwDubUbyJUT/h7ZgHTSQHOaPdC8/yjHQWW+UK52cFC7kZhkydkA4XMsjQWfbv+DJPmrhef99a/RlBpl8ly/x08p/rtQh84FfKjw8UvSZvcS1p58iGn5Ycl1bz0+YWIGCMoZHTLkg/ImapXQu4Wvr7nu9hfl5V3RQbYyOsBZ5cTC3eqb9vFE54Q5y1Rg8VCAPrYpltpY9V9WUDJJQtjRDYbzIYABSgHOxqEbuLPXAoipY0MYEhrktFuJifuCDWHLManwlMjxlLewqjw5ylZJVyWghmm4sHlXvSPbLB5YHA+jIkqXPleQ3Vp1/zIS5KnUVZ4JSq85chMt1yTVwIOrU2As0pjGZhpJu7Pir0RILKHZQXwcFZsdfrrJMGB3B87OmAXvg8n7O3snE/FxwIWNAi1dRRwAwJeiGm7frPgKp/bJZ7zOmLsNwtnorobAQ9jiDPPRa80CZr8GQZhe5mE51q9N2eJSLDda0exfDLdeNIxceTJWJSvpQiS7SAI2qn0N0v1Z+QPiq52Lz1Y4Ss5oaCbCpaqz9jQhOpctxR79vrTP9QxCQLf9a3OdhJBtv17LZlmnQLUeGRhWB2bLmDPT/uaKyM7tIKVLb6nAEVO0kywDPalCHbH7wCmhYDmFS2zAwEUUj8oNrlPvgrC5AtVYmOhKYVWDSQYVl36MxcmDp3eciSktaRS31Q+vl28OLLdIq4T5xSuP0WROayaIIbF3fg/k0kgGum67YZPn7XYEIub9WzVce6EqCYNxvPX+ZcVgFSRHYv8XTt9imDe/4tGq/PhSQdOtYNUvWOCiv9uLrYMjNqV01WP0d8YV+dp7ZqDhDgdejQxmv33ywRb4Lc/bKJ6PYWKYr29pS0+ff/mZsI1qxwts9MDd9FtNAwy0NVq3k1YXBiGCgsikyj6fdJ5HxFrZz8Psf4SpOLkvZy7shYZdCVXW5ZSUhtoLkU0pGEUIrjv/IX+iq742uvzNtZmeH1+si5FufWcxXRRlEe5LTiR1hxOu6d7gBs5aY9c1qmwIujRHECjkQ1ZxcemBtOxmn/riNhWU4Zl7DJtaiJdA9JfttgB7lAcPz3tFY06dka5UWTeC7BvXACSRGFKY5GwHarvZbZjNTaIQJmHcoQ0wCV7V2WpQK4ZyGLIgL020Uxzf6+Ih7X9zkzqVNC6zHC24baiJNKkyjIqme+vq7srBbYfr/8JnchO/ySw3499v9DKG5dfi5Q3DX/EvOfi3bKNVlPoowokaihZ69KBlpS1dPMu0Hc0WMsJulIk6o8ATDYEZSM3XBbqYo/nlfJtudqaHETt6tIeOsSH0fsaly3Bb94rfkYaJAELZ02ntKzS/Ok6+DOB2Q90XfScrMgGbdtDnlgvz1k13EGXr+2/w5SNcfq8Zc8Ogbx2cWFRARxOXccgTnZkSTK3V2xYHfUmfdz3DOWIDgYGhCYaYoOAaDm3f8hE00NQuecipIfEhkOenQdQjhNqiNbl9pDvIogm7yRm7ZmERzRD2GMsvX8521EXrCkDymTqacpblxvjm/0XLX4pOI0yjXj+wNibi0wUtmDYuKYFwiCOP8GkrxLG31l6SEWWTYChKmTMYpgF9bKzCjVlNMQoJLZX5ZrthPKG51S5zgUaEG7ChfszxuSBAEt+Fx2HoN/iFuEsUc4e1owGZLNEXHYlCqQ2x7O5f0U6GtvgFxqk7PKFQh627VQ14XJ/CiW/8as/v4alPEnRkZxVLfJPge8v6hRELpyLDsC8M2/cUJKyJNlOjnVz0n0uJDFJWiC+gYnNqSMmAG691sRYJisrGmbvdDsmzZlifo7FNZmhvY3Yn6KX5Eb2s/4nHhB8yDr0RW1Hso23sSYwsbj3e48XlZ8uct/kE5x+C4+nvjVByOTviTx/1RMzyhHY46d0hor6/hF4f6BPJ7aAGK3QH42MO/NHwHUUoC6CTGqKg7MaQiN0Bekrcdi/CNvx2ldZIt1g+AuOl5cbtCWVIT4EWTuZh0poaDZP+6z3ePEn306JSfXr1LCKXlcDutpbikjgHpRVbZQpH0YshJmqa9zqW5qkH9CfV8UY75S2Gld8+Cw0AuZfLjK/wXUHGS+PMq5K+HQLQYluHrzeWeVzJC3A0zivZ1k52vndVT5e2Rkkigz+SAETeCwPlGm4jXQPVFD0QCqROmpQf2VstSuhSe5b3DtKq21d29WCiTpgX/W4Wa+RvTPrCSqhhh2D+pdVE3TfDHzAYsWAe7YVoZt0NCaE04xLjcuHy0GfC8INuO+QCSOdq6LFA7hcKekfCJafMALzednAElAafUxl817DEfH5IiRF33FzknYrJi73xPfEXcpcnRSK9FtS6uXhjy230Keh7fVboU0pB/eFsugN7W17XuwVW6yJKulaZurFgD0TRj+Iev2hMTGayys2SSlJvFOJ5HHT/xYJHUWqknouNIFe4LkyOG7VT36XMtBQzMG2H67ZW5TizyyGw+JWpc1nQ+ETRP3C7YHrkJWXIbj0Qez3lIAYH0KqEcvVXnNZlMqc16v9EzDH+0OVoJrxBzU9TLzm5HZelrZilNZ5roj+Hg41t3CgkPlSqijuHgoezbYpJMN7DgEiGQDSBYwYc1RqXhAlC6fQ7UXh35r+3Luw2n9EnH/OBwurdKxHRbfZCeQu/GPzaCbSCMKZMhzYLXAlfbk3H8nbMrH5QsnJnH0o9SEG9woC8/7RfAKFSajySkvWBG7R0QaH/R/Wz0hL3pzi0aj8vXbulEoDqe2CLFktVHHMhRHBDC04Qi6b0eVgPBPJjSm55a2gPJhqmojHvgIlGMoZGN61CNmOIbNHhGkXk+jDsUFMbC/6+hmSZnNoehwQW2q0A+rzxIXz1TvmWmZ6wy7LWAdQXoCh1ZJWigkhTzHMUYFqE3+tsk63kYUTcZ22EK7HIqdbgq+TLGTlRRH3Tyh/GrZZt0dVSQyeZQ72fO/ha+YI77sFP9Chap06ckbx6P6EGKHNfJJgUyVbQuePrHgmXsToGkYkpt8DMg7VP0wEJ84WcN4SigDBX41Wk1ijFKwtrIv6tqH/lJhB62gSVhsGyYJmOJo4z90EPfv/OQSmBNO5jdmNUJnDOJ02rXkO6QW7SllsVKKGzzfREazYQ8o2SbWsOyB4zIBxmLxJFJdxPmnthjS08gRJ4V7pj+FsVdpPXTsKWEZBq6QPt22zBTQ1H2gRNw9pk5UvkA9ykB7QKFKPtrzjRqa+yChIT8sGtCzO2Q+T47YyXYB9tM+3DrhiGH3b1Mm5fg3UxK/lKwl/Ug+3L9flj+TLEebAoZMSE8cBUXWAmOYmwgFRCwDO5sE3fougUMxne779C7OmZ8Se6KkxpoMioDGdmR4ZGxdNabBWGJraOjuDFJu3+aqGle/mdRnEffjazDeTRb2cRzCLI0axviYZ7j6VdsHG6Sr4NbDqNINwo5UaNBXzoOA2f9ENKA9QFzW0NJJk+qCydJLRk7odkRLLryEGIF4G8jGl7sfZSqg1AAaXLYsu86n5H1qJyHYiXVRP/fsQgNMjXKnsM2eSBpTafbBjNehwOw7G/nukvwhYDI0LYLBdvPiPUaiHih4ACERNsx9VPGaWOmNxOMeWPexleAy4WmmXT8lcJIhLZYAzclwy+4Zo+ITOrw+VyLRIv+NyXti5S7cvEJhYBzL0QBy9By4kAwebPoVamQ4xsS6PJXublyBJvPz3VFOBvF399miATaf19GzuDy4UngxxTCAVmg0n+v5DYP9GXaPGRCO6FViMGu+uEt6ALxStfCsSESYldyFxo0Q/azuWHykzGQUK74qMDxY82erQm72tYUi8q0Tw8hqEG7REQueyR5CQTzOH5gadHshQixrUa8hBfHfz+Xr9dsxRLeF+zoGM02LKR7uFjWyZOqN3I+6BpF5FVqYm5XC7GM1kVBYMzv6GYLAxHfFCkOUcA19TLRah9iRZDFZupw4fjnfcbdWcf6pBauRGr6y9slE0Fe85ubnyC4xCAhWQMV2zd7Bb0lN+5FuD0Scw2eLAQ8z/wGFuLRxQu3pLDmqFykKQ5VVYzsL2DZTYwhhOs7iHZZidu02TxriwTDoD9Lj1qQf6/eSP3WUnyy7Q7DRwdPX23uc0fMrtltz7NzuWLtQpb7Can+olzn/3fkPzO+aUb+n+KB9Q5bEf4PUPlFjZFoOuVJQOrUw9AqUJMdyx0jhekiXsNf6vC7VUj3SS92JK0PI+lGJvfyPcl5fyMlcjgyWhrYgtH8VKaRJpeaUvqInlOF4bjCnAh76JvBve+AkHj8+Zr1UVEB5NEinYkWcrv24nfKjmgaccaMBulAgjfTAGMD3OHFXKmbmzxNaHjJNUtkHtnGj0Zqv21Q9GMgNbiA8YBuA2Dh3sxP4dfaqA1l0wd2aac8e1XwqB4AYvt3+J8e0m2qk/xaHxbbt2j9X3Mu+u/obRiWaZg8gGmF3Gxamro+21OUbeB3xwl816enWn4yQNtGyBy1MS1gyJRXzos6pew3eEqvvpTRA5WYb1aOJ7OVW8WmCY4Ic2ECaeL07W6d6yhYzk0vn0qX1ZIJFTG7dPt1C82iF6EmJmN14a88BZGTPVv0zVorv86bR4uWn+g80C9HWUi69Wp8UJTVYIhWNR3ZGPcUXfd1e30BUJS2TPEMcecr4LoYLrng9Tt5S0LpmjC8Mc+8Ry5exK8CMz0/28LTPcA8i6QtcVD9dC0nKFQlAr5CfOggT2t9hsYIL9APkqbEdwfrVZj7FJhbiM96bCw0KUc7pH43Dn3zE29/kCnK/Y1vghF7TXxQbPFR9nJAaxrjhFlEBFYmmyGvm6Y7q0u0iFYy/GhoJ17m/Bm938wonGWaVncZvzArlm2oyK+5i8f+zsxOt+ngHatoSlYbUVhIlTqACctThvozStErOpwSCw69kC83Z1ahfBQIRLdmAXM8syQN7FKMzpGiLJ2flNm/G3zh6qHHe1DGU5G56h8S3L0RmNAzApebw1qlmxIIj2yuj/UyL9DUAgYPvNp5nMqo8jbjJTig6kvz+FOV48oMl0ory+XB6oyc9/UxSsiFi081CqUNBIfpn4Yebp66qGTrNGQwVjN8BtpVGi14J1hUUGhPoYwcYb5FLCyFd7t5UtifQ48vJO4icFxkHljgsE6g/vV9/Z3xQIG+vgUL7lgEOWOqy62HwPPosISC+FMikSR0w6e4sMe34yQHZ46hnzaNdLvkIE87IU3uaRyy7Z7UpLjsZv4+bGVAIYY3kP1/Wx2n3rW9FCELTfbkq+bgzkctkB4TVQRRAQS9qPTVLdV5WadeMbin54P5HvNF9VATRwMzZTg+7DX7EL9jMHVTkoSfjuFGpjUdAlCpGvVWPhIbCzXQbvTmsyrAuU9bPTRKJssQb7awOXsGFm3nHmgQpPT2NRUrP6/FTfjPl+WuRhjKVASBi5o5D+jbR/5Nhs/hXmCl+okICHxBP9xfg2CQNBgZbpxn0muBtlM0qYk1ii7GMl6VZisLi2O/ZBkLII7BOTcJG14146n0ERlbVEstZySNwiCriFPSxVEIREzRjeHe4aDYjVjpRF63MCAng9NpIDu37mKqPuewzyMPJ2N24VNll8C6buocuRit/9FYToAVxkZqArO0xNFZH1ISoiWbdat5WamG5M+73Me6kmS7JPrsdQ2WxPt7A11QKUfW7dmkbKm9ONpwM+6QFmSbOP/Hyw+8jDo793ManQSTWF6VBR1mxoRuOl8wXohWp55r1UrjVIG8303sG1FCRDAuaxzco8bYcdGKuwat5dxBVJaQGaNLPqizp1ugs8If394lEs3rc9cQtLX9PQNEgAFqzQzwdQX25iivvG3ndUQbLGcMvjh4JzPf7I+2cuyT4pdbRExn8j2lpuHh69D8xjWZt0T69WngiMR0HdxvTCm7Eo1rTQDrnxaXB8sUi2CCSDoaVfaep8XHvAxWQCc7TdNKqRsBXw+VarbWoQmSZC1/ZKTgYzYs1OQGBWWwlMzUxJPDWJ0eIgHmxkpQF3XKWznxL6L7U5ahsxK15L41umgIgmJ3EG5Lz8XD7WzLzo+ySGcTeS5tj8/B/Y/ov8asIG5MXIltnk2PFbCjm3QPPXi+tOR87WfQvCKXHUL2bGerOlnF6lwwD/oYMK93Qvmi7lL8JmFNX4zdyDVB0lvIKRiudW1nVTNnETiNWR+y0BbgRFcC7SoLohExaozh41sePlY3cd1amSnlPKweR9YUdUVDYbbFBPlEU8nS5NAWIb++oUf2fn4koePwd5xY9x10wPqqgKXNGBJgGAE5B1WpkhEEKX5sLz+W9yd/oFS9is1Zqgv6R3+C7b2YuC6dDJ79m/YqeGXvKWRna1mj625plo+qbpB3FDq4JmgAVeIH7wGcy1CLoq45aemIDLHnJpQYWdkyCrL/7IMWAOGVqWrRfkiPkvOYAGdEyN00LSaGa3cAWk+tmijALOoShkZMEYG4qyMAXYPELgYX724IYp2hz3E0EiKdXRbNG40lKu9Or7qyep5Yp6NYmVK9Nie89JT44SkyjVeGpzDAQ/AzYGHVso/RCjg6olQMK1YMlcv1pt4fXaNa4qn6YTFfbB5FZK5cdAimPciOIs8Qqly0hPPzSO3CgyRkh0EAkxap+8iXQ30W9jNY2dTKZ+QRhCNIF4SzOfB/PQ9fhV08MKSgYp8yHTIj/hUbZ4HAUrq36WZENPnUtL/rRCWFKvnS5YTUmWR3hh0x6pIcIEGHi1NegmZGLratUXv+DInbc8KtnTBnPoJbB5uDTEDc58h3gU3tm/nMlzeEJDyf67z0UnImlY1PocB51JB6ShdwRqTFNwPETjPoqKm+5u02/znR5w+rxCwaj0wp5jSlAELv88E05JimZRWLpzyWScZIkLL6q7uFXNbKnbshqJ33aEOUEy1f8HH5Uc/sPz2zFmE1a7Qdw2b69SVyQy+bYIRO4cSCDnMfjdpuHlOz6lENJbHQr/SOIJja1OqtDpAmK3kSZLNoxsgi2ozPEOu+qK0U9aTqwjFdTJuuX62BSU6oLEqt2AEu3RSUEFnABgvssj9A4vRdtH0KqckgLLOMtTnZzdocHcFKnqYl7KVW8YsIYUB7uWNaqV8wnPh8dsgb32JIABdp8PrsWDfP/sPkMJte3x96j4PP38ZB+zZ1taoe8ZAh0ZADP165AAkdFSRG/W6ir+rIsqtkg5vILx1OOGaQM0Uuf65073DAITk/jfjd633Ntj/Ttc5dAZpvgqTPUQhZDlUPZJmT/+67Oa+oSEkZRHaM8kZHFwG8u9It/qJ+J/AyFWOWtSCkQ6bO/9OLUhTShnzmPIxf9xisV7p9XxHpmVc0lKjofi88wfyNfoiatAuKLVI9pwolfJFuDbMinMUF99Vf2U8bLwtuRzVRU7I0AdPPsOoEOwcv4OCdF9WlrONoPGyJNMefLN1mELISEiC3/cAhKKFxguOvwFZVFoED1CnkTg+freOcY7w5ndSJvo0dgiD9U6k7hjhD0psKkGghnmR+nd5q1lhTxWHAPdBxWS1j+2WB+lGzQtCItKk8UDJJiRLrwmKLCAFQcQwZpkLTOZ++N1LP2Gmxm0GdqMUvEq5BiTG65pABJdSi5JolIA6nnpdkJMFxh0imbnjcF2oWoivFiv1YtFZkzi/a5TjAK3R/xcNK8ph7nz4zeoO+00z/bNlToSSR9Mz3TVqqfZBCR4hxUw9IH6SXiKJ+/m3RQtgHY/FecR0ICLYEEDeEd6kPh89saMiGT1jqh6jrNjdH0zzKYrilq26IOxANtGHBlvkjVtkvtgBtQcxuBtvgcvD0tTJNOwR/YMWaFJky7zVUMNbMtmP+o/ATTnHLZKhQwsfgMIDwSWQ8Yw0OtgVRYzqZOdNAU3QaxPJ5PjPA0v2C7oiB+J9FINyPkPx2s4vThyFqCh3wjvWWR3OfZ/SKfbV/yW25nkDCPqdwBZ9LwJYi/WcxduQVtPs2mN7qIaNi5+icRxl9AwJZxMQ1alNVhN4Ef9KG8N0z3kLt2cyzD9hcvkYce9exwTNNt9tc5OPBTgQMLG0GF8M+mg0qLq1bJ4voHHvKYzhVtrjayCl4SxVy2UP03rA6Zy4VXk0qnEv5hnfVclk6Jz5UZeGXWEfiO3/IAAhtjsL1ptEOrZTWCpmhSI4aXeOoLN4Gisz9bou316nCVExNDAuOKH8YjyMguqIJLvXQkrOrvLYsj0SJLXl14J2GRQ3CTHowTW3jbD8stVEbzZYIGG50pfdY1tpQIbPUwYk/s3H0DsJD4sQR6GBzdyzX594CSHu5w8IOhHvCNgXEel8EMreEZ7k3rlSaaGJUI/sJwxkNn5T+yuX6nMFjiuyumtcmzJxo9pKBS8IDz6Oe8Xv22DB6pEkCUMRdTj+DZrA4TuNTpo+2VrI3Z1x4bTFWdi4TLt8h8AM80+f8typewYnpV95yFrQMKvu4dpxY5hg707PxLUxGP4lWvuOWOv9m9XZH8A2o5dsJid/gomOsB7CbALkBWwjxgvO86voTP+hwGgXXKqa2PnIkbN90my0N0kA6q6G8ZM+iij7wq6Nb8idzg1D2vuB/zjMU1Q1BlL75cAVJ84LFnPmG0zpKO7ZxRCPgJea7nlNuaw6ZiVfMyQ7ufBYYBztAOeHEBOLfNPhxc6FFyqAHGz4ejTiZr5ytLOB5gbG+wD7pDG2DIzJLF7B48F/mzxEZOtPW3U9PgjN6gqh9emG/YXnLd7aG0pwclbXWNfQbREX/KWOkW68TJZkV2/PuOEM2q1utRNLP9sdEOpHZYNUiAn87z7EWsVY+JJvRovyGedHTRoC6HOwJm88RtemlD7NKH3/V0uiVmbh34Q6GS62L0fHOo44IO0xFR5PMzvm12+h4zonduO7GyFa9WU7tZgr28E7VgXkwadGN1leKQR4ACFZOmban+QD6q7f7cnk50A8irNEOw8RKj5J/iJ3yBtaKwTqxgC0wY/6xgHVPzzDHEU9x9ckdxbA/NZ7F5KS7zh/iVaKWPmb9LQNTsTSBwBVMYS76+db0YMt5Z9uucUScgiWyxOeB+RItYK140khGJfSphr2uidRJ0FDX6hSt/b+2y7ChSjBlcuu8gnbOk4Ageb+E1QbbTRivW8wnxW5c2b1q5rFlNiPX/NOyUdZqQ/kf52hPCRVreBsuMIsFLv9n8FdmFfhgZr5sF03R3Okmgk31WrWRw+v2CPE6AeV7tjjZ9BGby84DMyfwDBv6eBkChyrNBIP+Rt8RTWLVw/TId7gcF/l8oemHYoXfH69Jtq9RB9FxFe5PisM4pNdYZtBV4Wh+u2/vBtpT1nXmCcHl+WKXMbhRCURmYZDfKAA66P0sJ1ifW/ffzigPx/1cbzQiGeMvBNDbYQt3DTL7zwE4pO0X2I9OVezpamzAw1AoWYv9WOuBHPAFCI/BqgYB531UWb5hunblG1id/LkIsJVDVjLhXePR5cqYpMU5BO5ulwzllaYvB/5/nbpiftPlJVuqQmZfdF1RmRuGU+6A3fqprsW4jQKRWjVlGlZYkrEDSaolRKiXVvrqlSLjAwNIR8u3QPCNs9M6P51IPibXS5H8AUsyVjnoH295l+GSvq2sjd3FDKnKlVbKtDJF10QNwMVfZX8r/VAYsCsKCz0yR2Tsna8rc2mqF2yYYvP/Ps6GxJHhZvt80xRrLAe85b5mNot6OUVfZpTuvmLaoh2nQ8EGINybrSTUfB76Xq9Q3jAhw3R7N2dgA2KUycX+m9SAqlR3vIUKw/qtQE1SrM/ABHJfDh1u5h0oIkqMIRdPXIK21+pouIblxTJ/97+LTEKPdZ0HiFzBoT4oQMNjumxOKat01cp96IaDGIGGEiUdQncoLpo/93YiHeOoUkb6UQw+ZCPS89o4ldFAyOLtfN4balk3ka+6roX8CshrxLO+ePOyImLnk+YJwFzfnLQr6uYzL9RXt+n1zp3zXbnjukS5TMlcLthbdrK/flh5j+ixSfiERUdCb9vXWgvauecnFC+z/oNZzkLocBzXNuiIZWQ3yp7B9rFoRfbSrA6hEjZoNmhlPT1FE/r3Uqv93X/IqfMLTb94o2DqLUcZuBqqDbdnJRLjK5lwTi825eTcwerRn+rNujBlBeCSuB3bZ8hJ9VAtHW1q44bcToe/cw4Ukv9CXxYzkYmdvdntW1uUz9+2CJ5GHLIkY5VchvLV7RnFg/2ffbaSsEKDREtIruf6XH4OkJYqlTY3kcwVgG2JJMm58P8MP0142tZmwQR6YTg5Zw2oOVBB51sGxkjmTIVwEhd+DWYWR1RW+HiXfsRghkdag6XFzslQ0sQnBBjW3BHV6ubmf/FnGW5WAJDY4UTbYGc54ojCbp1mcqX5VZrIrwRgMO1Om+5nnQPv1LGP3eTfAAolScycqDERdLKuSgbkV3zv3QSRAM6/XM3A0lt9799lkX+wiivVvtOcUAJ2qxka7QZM03gxI4CRQCisM4EolQwYRsC+Uby0YDU3u8NYIP+95gWwplWJ2OCZw8mIXk+lB5gFvmo8j61EkUEij7ITLWlreRKqP49GW0RHMMSzKZ07afZs05zFKGHEN8fNzO8s0Pd/QvNtAwMueAYwixbouArjRsPB76oGMA9CmF3597F2t8nYxE5UhCMRa7WhdFUa3ijp3t494Smz2UBImCaqTtoXEyfj1BUxJzKaGDVSgim8dxqm4jP4iECJPDtQnjVquHMuxtQ11hsS5dqVjydIaXpF/xrN/KF+lDrumlCQ+K4LClcMX6w1QmNq2UzmM5cH9d7MHYvU6hDHN8fX7Xlo7WqIBmjhKdaSaXq8erT7rmBjivlV/e9T7VwivNZxlh9M4zOo7Cprf7YMeZdSMLxi8m7b544+T9UCky/yHBXwF55YHqDI/PLxYBMeulgz9TGOUqq+0y3DIMESXQl23tVTjcHIrsNZE34Qpx0wNR8VqLC/mC9IxJGBKcfn+zLvURfP24v/at4v9ij30Y6sC6uW1hoaOzCu1nZq/erjGoaOhuCofDrATYVn4+mJk1jJYz9WP19P86PqryE8wKgfAIhFt/clPsT/f1vO7U0qn3CB3XoOy2L2TYX5lvdWfnv3G3FW1zg0oo1xuosKcZspH3Mkg7eDRAxd1Wa+fEcsbYfsEscY1iftBY/5h95H5AkqaCiBrReQAqPe5RKHDv+R9ZW0l6o2n6PpIUafKVMX7TClZdJgX9hXZTura/9k3iBKX5/gEJRINJvTwKIkDG1t/Lr1k9lllR0n/02i9ILZJ1YGV/hKafDvHHXpIapH2wdzdHXOGFICQzFIIJGRc3mnttMyLhgf6c/HLIY5tIU4WEomHoWtSYgTUbj84ynqTFSWFfIDuMp/ye03Kd01DBqOKUSZZpqvnz4W/l7E7cdjIi+FIkjFyGGBEI3A+bKoMj8VRnLLbIesSMoZ5HgFxqJBCJtRw0K/SVSBdDFjtizXfYklKde/ne7INeJ0Oha7NEVU4qZR7Zd16wJddLrdC2MizToZtYvOX4D2NIxETMo9etPCLnQH+O9flpO/p6g7uTWw/6tk/eYBjrIIZ6iUsGDPnz5Nj473W6CVxmSUjzH1ifgLP4DsjrXiYZD0NNzoj8Nz1atkorQ6/ZrMHyY4trIeZBAMVMOFdeZDeExQkmP1U9R7dVBeK//O+gwddY66GpjslXLkW0qcX1x4fTiWDygVcnCGaOUFv8caXmJrSIML2+fzOPEJdFZtOXtm2lp/RIU11qEyXAd9+y/8jx1IWH+CHZBd4jIPAxCZm/GmoasHjKglbuRlpTHu/cOpdosnVE+vl2G8GxllNbekrJwStbptvn7yKk6aiR075DxNR3zIaUeGFXVjK1ZVa2nkfXVFpMXHuICTJCOgK2bzBN4q/D22/DvucXPyF1gWSGNS+fkphVu+f4bILoqfXIH8oVa4CaHhvah6a11fyrC89nFjgEUGcsKq5cuQorf9KmgPYUABQ0g2uTfM5N+tWYK2gY7XJJ4WhyGJOHoaIhM+G4UK3IEK7sIqJqUBYkTLt6+GF2QkcfdfJAb9BDC8iR6bTjTsSbs79MyjFgBR/2AMX+ltum3gQfmLzAuGyWAwm/riD/V36q0N/zeIczleBF+r/PwhAGRi4mD6dJNA5jDhcXWkBFMqukktrJh183KY4yzxazLVxxtNleRsUKLCgx3IXqFuvmrCWnVoiJl58HaoDDpV/FYCl+zBXowbCFUlSbAbTa2e2QMvEPXbphGiA8hxQibV3aGT5XuSLoRoujM43rhV93/iZXibjFZ0T3bZoa9nzOFP2xzasd2PfCyavdx7UaKcOOOWVb80hCv4yl1VEtGHv601KvTWjoAYGBTlct/gOnPaB5f6bHY7ew8iashf2Aa6R/qC0ljfHaWK9oUac/Pk/QoMx+kncqOcYI2FFr1DF47KyBS7M2FsEFAsmGSnNsj9c7hUCPZAO8NmhGjTNos+t1D0xIH3U2EnrkllU85GzBrHVg80EAht0Fv8nA0qOXoh4WKQU19jtsdZ2/GSbLP9dNzAgBymLHfx0d4zItdobdywM/TKSRTL9X7510TwDsQVHkaSzHUWOrbkt4TlApYkvqUf8GzcsGCENmR/PWfqNZ9oxKSbrq0MWIvBm27S7ZUWrOr+9rqt9MA8S5xI09HB70VVLi1hU7f7fJ7Nl1She80N6WMD9uWYtXxd5eofsxhZmEGKWIimBomSSRhre90hwUyMK6JtR70WGU4XxQNVFtRGQfPx7WwVq3pAg84YuFSXsNXungWpi6qX/ffpTkkb+u4e2QwkJtpPknN2GYE5puABKotDT9bj5cLHaNFFvCkgrwPlBCHMzz9WsmrdRnZTO+SONwVpO8KaHqkNd3QL32m2FQDa7YnMzWZHlS0HJFsHax7xjzLjKobi/zBsLjXYxqhfKl5K99XjnnzbnpEP+C2euGoune9YiRzPCCHGLh+3dhgi3tRcVdHuP50hfSWanXLj1qPARZJFF+KZ/Q+9/wXsyMzdM9jCMKjGAMLkwWpnAzXt4kh7rhAijcjP0M6Qsir14cosW9TAPlDOkVjDgtGayTG4qCtGadsoGhg1DKyOCAheDmhtKXOFxa1Pmv5srb7CvtuBL3EjgYoZp7Ccs72pqy+P1UNknAGMaDP8m+17J+6qdXH0D9WHhy0n9QciRpt+FNiAtbvY+Wk0UR2HkLeYGuFVVGRdR0BDmpvyvX00Ny/YOhBRTTjqDP0NnMypGgpio0wYtFC4udkRfBB/gYrJrVBPKKfWpmfzxqad2HpBWl4VXIP4gitnxzFi9K0TLvXXGsbfhNZxqBRFpzjT+YLkcbZIPyb0+JScHIWkZvHa8dht/Sbsg8+drgdRk4kda4jy8L2KLd7a1Ap8hI8RXqVyifJ2x4zp//lhzch4CS0zKtLLrDnOzQDfM9y0ttTqZawwHnMIsXuHVY1zYlkVJsj9bbEduZjEUgdrNJbtfyRDqKXF7Z3U1/wdesz/IqS7fr0WJNMoWoQk7sEvBwhBgZQISv529O23Aq8TTj4g2Jfh1W6l78AUIUEEAc79rNCvO9KaXOZkx9boYouK4vjH8y81pAm+w+M9gDh+Mw3PeqUoyQGjVVQBMdcw4ndOXiBdH9KgQr0b0/roNciL6ug7aDBi7n9T3Rv7aYFSBs/QuC68EGXmR1VsH5jNq6T6o2oFE8C6QRFF++YbntiFBoYDSrEmzPtEt5BwCkhr9Z11D9m1P/mVIR+K3dSLZZo4cSOHGcvH5kB+T/+Zi4/Y9WOrAg2z5vhzcfQsruF1m5TFSzYw7YawgVxevxIdvkATCjfhl70bFtq9UFdbkPnHgAFXoawG+aW3O5BslU5Oe3DWgI5EpXwe86nkff8XKWqCWDhB3iiCiNISNNoF+jqGSWHK+ly+JArFjO8iERHrMzTVDahle3JJ1R0KcZs3nRp8WbOjwff4rZPnhNg6qr7OxNdzuDd0Vqa6Pturm6zn+PH5pQ8ITQWAXfWx4Ougs46NhvcNrQWtf1tMtncdyY3SVlIZBIgmQovsT8YhtXrc74SdPvDbUt1064WlAnXm6M8FrQWW+IUPZpIZTULDCIgR1LpiNuqfYSKBlwMWHuLaksmbekAd75GxakErNsw1oeO9i8Fp35aE2xLyO3JmRaYVwZ3naxFizTVuq2db6GxZVmNAQRz0G/PHrs04ul5JBzH9TKLfM4JOWuPSRkSF49hgZjb9P1RwJ4zP4SnnurgL4lLX7dxsBqiUer2Ig3myOrNflrCuI/nqO+bdWMc+nRBhWyZq88jN8moiWe6LonXF1cObpxDuSNdNYeSFN1NZTeuxmBheKB6S8zscnMOFChQlW+aKC4WoxP4byp0A1ZoWaGWpGdVvwSfjiE3cONV7K3B0nNmT+tHR/DzFz6irYiGGnUn0Kr+QVAONRs481dYTbIME6Ac7FA1ju226SPpPm0xdNwR1JYYX6UhhL6hAaJVLwdRaIPpTxc+CIPfvmo4ZXbfAF3tmVPKp0W9nlBVqNEKAcEO1zcFJP3YohgznRjL3a6Eyz+jU+JuR7KPgBLAKhBrZMfojeIYPiKkbaABCO2X9zWmU85baMzHfDBChlI8DyhYP67AdGdWpU9z1j8IfJwgmzIAGAZM+GCIGQ2kuitkHz9HRzuGShFn8FdiQTZPQUnom7L3vCdAk0o6L1X3xoCheBgBGxIHNRmkHIE8ARbfYTex/GpufeYIamOdCH2YG7EK2ZVi/dmDO6x30uOLBB8RGMMGzgAQjTgm4bfdMVnzgqkRmi90pWb1o0IbNnR5nsNvy+v9+QpyKYzJR7sNKib+EIHXeEjFlHzhdYjrlv4KRyz4qZxqv3XIBbGA84R3/ve1KZaCRnZNMllHRWuEM+fuVfBSzZyhhPC02brrWKGgVSMLckKaG7Y3MD/jDcVg1IgaxTb/bnBpfkbPukIoccE0afKBWBVO2lV8Cd2q5CF7LANXpZDCdpU7nivlEvDH2P5cbBwfaSrlkxUuXRNcJvio9Q9gIW5QchCbB0ojtjKk9QO4tnqZWHVdO0OHeMarBvo7x74s/TMNmO4bCXoWghfO4jFjE0lWSTF7g+aSklpMaTiwKYqRXwVGgOuqfbh284RrD7OOxMkD3sc8oKksgMcvZ2FKqJty7COiAP9eBUoZ/B+Tz7Dcpu7tVFzjx9qIz9C8oeWmPaJ701Ysu48lnastX0ClVz/2VPiTX1v84hs4bszcm3Bly9hRzxPE/gce2KXi4XTpP8riRiS3MlO9cGOdVczHDdvRCOygTCjSJx9PyrUJlk0KXtx1O0d3yVm1KnmSOU+hK1BKf49QaHMcI/WmHhMxQgVQJ+gBRJkALZ73NeaeRT8xHer6r+FJwtPPcg0TOxwSpUMTOPXmi+KxFLcNObPDod+VtlnENjexIXdnam3MvG7Ne1o7Me9AeR67AboynEQDYMRA0wbuLzhUVDXDTfsdDpI/7dLJTajWIsp614lXqC6SF4eo+FLM5ltvNR9QiZ3yNNFqjPwEeMb4cZemPaDJPEoKQ9/aGPA6t8f6By52jIzQsgKpJ/6D8G6X1LlN5Y4O3y3QZTxyUZdhBC6KmC8bhsWc0Kk18ljJjdEIpLdfyvC8w/kqQCD67/BMLPFQsAN2Gyi8f5Tz313Qrs+WraYwPGDwQ/z6zSKUsQTiS/G+cjW+spJg0EhBE/zZ6lLF+P+WHVur8z/xN0bpF+q+tdpwaccddaDtM8nAwqFVEea3MLS1Wwz/KVTWh00vv3/C6jlwCU1LGuMLdR9LVDmvgPBhGimU19kAsI71oI8Np+7lw4PYE/jr+c/+sypHk2naj5tNEeP2PTlz9OgMRFsRQt8FP4UWmeCVxUgMajVX/Z+YAnqiVz2xK57bh9RdU9EXIBFlDtfYSHc3FkZhJWthcgDKGnWEsBtLLWk/47tK8trxKyJBXMkglPPHRoVLVCMkTL39j9QxezEL0tR6KX5G+dK+/8/twv5TZbTNmgfOoTetw19D3TLtFX4cKjnSp6v3jOyOxYdeVX94rx3UaEOolDjCaFt6IRTRf7Tg9x3JQdCn/4OyhKXnup7R6vtDfvg2O+Da9k75R2YbTK+H+I5EIwVCFCC0Q6l4puxfF6yz9lA31LmhHQ5M/hbzh7MaAWaiC1KDxXYVGqWSdYVHXEkhLKgUj0atQAOXPlWcbfF3/wc36W0yPN67NzDbBlq0CN0q3cWHKHoOZmlsKhPj5o/PFx0bo5EXSGkng7S3R24y+hYCTPch0VYyMEmFxW2+haNSdN4FwzqQuF0puo8dYVu+ZELGX5OwEzv5VqHTwMAd5ajVpeGBO0jhR69/HaL9QBfJQrhVsIzLfbPjlN57b4hw8rjhrTupE7rTFS1JmVqVRsOZKcORABNtMBnZ9NXUpoSVlDA4QL7ULm11tgTImvTB72Rft4qzigGVLt+/Sq6xMZA19nnFuOq/GgqOsp2dIMG45BkcOb0Oo5cOXblWUfT+K63jN+Xkoqw99T17tUeAttCRpgl3MnsXwAkeM+s+A9yMyyVOZ569ABgfs3iwOPbRs3gZhIcq+7CgdT80YjLlC53Q0fRfqPsYPx0XabyLMVBHByJR/MCN6rIW5XXoiz821KRDLWTPpXbCsCUD9EMjAAupDIrh8w5CjRNIjncEqu19+6gFeNNtqVODG8baOjrezuRpksbbd3vLWUZdHTk27OEviIUsvolo84h1riU6i596EGUUPmDKUJh9lTrrfbG2uztHyT2gBQdf0nFAM0EMju8VE9WvUpRjK4uhIUi0bo8C8ve6Wa4COiXQ85DY59EAnagXOEW5z+SNqqRBRolEEPX8Ma65bsHE148dju/XOXfQFSMcyLswDLY6vHK2hcY36wco9LSxV7dgjlu7S7+Wu3gJUDnS14MZLlLx5pDlVZN6zF5h9kDKvKKx7CrYbTtrnTmLTnB3TtIi/rqp0/yoB+hpZFVru+Hw9FZWqkAB0vMtzBU30YNG+KxcCkIrmapMSSJif52UmiZoCD+3kTq7FgdXlvUpPMr75z6c+2SsiHRUu2kCYP2LGy9qlk2ZnaXeEqP/XdeVNE32fGVYrRtKTOebGaaFxEwTLleFINzwrQVM9iDTlJMYr8xUwjFNZkzptyl9WIksVzOIRf8O19eSz+FNcCZTKK17z6AKN/ipbwVuYaYoY/fmfeyxMRiQd7VqPGHKfiIJjPRhbrIECvsFRmznxw+ircxPWUcIXWNkI0AD0VC0jYAnAozzVJmx/cm+lAZDdIWnFAYhgCobRpgwivMEVOx6/s58C+Uh9UjXZIbgFBPAABy1CYna6r0h8gPD762LFyeZaGbtlPejNZIpP7JC1l2F0ZmXvfAp+MoanIyWYRLsyuhXVZL31bxLPEgVF2meLy6NC9TxEOjrFdfOZcTEgAOD+XPbabYP1cdUVdvVIptkHrLEo6v33gI3hGttbBQlj4K2kF6VnxVPIbC/J9Ym2waYhzbLe8DjsnkfC+FWRIWl9USXyR3MhYxl6riW4nggSIjR9BLb5CoRcY1RAOO9XyM0AslBBI5GeRINSNVuDtc3RUZ2czD0wswRtWReQNsY5jTEa2jSKzDNc04mwAIToDb2IdueqdZaL9yc77rRJUQ1CcckEGn2memylMVnYeK/S9MS7SbZ/cYEbVd6BgGvv73YwD9lWX9KaXuWgIxizHwPCnTWhXxps/dCMfGTn55N7vw4RQSZ5jZmLsUkc8hMty0IfTbQMKLfOf1a5lbxOUW8UhVGwF/Ojv9y8WtJ8BKin7j4Ima4m9wt+W86rTHe/yfWzLd6HFkKOt9dMs+dlfXi7XsqY3WpAB6Xz5U9d+42UKQdulT8bK+DXoALrs86fbpolcYxLYp5oUWBvTwDHSWl1g44d1oh+KrSX9hqJF+OfdHY1+C0Y3Za9oLr15Ov4Uf0b0S2DWsVlf70P6pO5BlG4cZtZbBorSs8i1lqRcTzf9tu1kjPIUhfyuu3LVhBQFEtMTWIOqwdjQlq7TMSGepMkak8WH9uHvGf6KGvFlZv3RM4CwqYJK/rx8d4gF0KUYW4fL9x4NS19/FwU3pAn5iZ7nTdukU2ux0YBfoCkakPRfA0kdmY0iXdANqvjPpeycD76AL/Ft4tMHl2IzFJf7E3i3mgA4LMnvbcW0OzIsf/sHQc6+RupXgR2fLzkSQXwSNh7r1Q8K2HIfVRPWxqFWpvcw+fNas0ECCtFmzeC3aQSMp4bzhfebTjBEJtNJabkA4zFgDFRjLjvbgcZ3WTlnms1zp3DYduCimgVakSKTWw+l/4TWoS+lFDtEsJOVwr0tGYCAuMUv3ijyQ98LrV6Tz3i+BAgyPVajmgPHV6XmAnXnc9UEuQnR4yzceyOLRv2xGFR9MKmM2E8iHvXRFcEpM6dCWKxGN7jhGmPWcDPGts4xWl0a4i0u6qFzpNdS7nH0EOR5GqGJyH4Sqr4LpYSlrApHtAoBH31sOxoIAu5AQyLhc8R/TgWRsAC2CJ8SoBOD1E9SD3VMx4jGcSmD9DOMrRBh/HNgbibbmqa4jZOydk9OM+0MWIVp+yl7uy9PwJTUnsmMcXYxfVsjqlWY/4ubjC1BGqA4uk70FwB6SNJBbXzaUHs2i6NpTipmpKEHIfQEHoNiJFw2vW1syjvqqTOcj2ii1ytMqeTNgnHfTdN8GFzIbfEScQgXHKm58w6pyc+TwM9uZdsyitw8F+kQv0FUiegm/81pb+V6JQWl+bVAfhghED5D94nx12ZGdHDiloztoy7MqIPjQQSKILJD1wVoTGyBs4CmhMayetJCV/STOcTHoIduc59AAy+eq5ww2QJITN8JiBHAERvqjUiEs7LfIZa7AqTRCltdJNpi+dh5GHysajQGX38/yIXzGumSRu60UEkeX2T8MEgK9iDNa0TLb+a8L8fAmeNwl/ad/port7jz1jhe19N0E5N1cq6CGa/hhNVR6ojtP8SDjqeHgyzvUq60GuboLpff4ydWiU7ifFT343S2Qxst2f/DKIO5HoDujIkOdduWvPBGZi7EWqdqpQj4e6zNN1uxUmu5B6IpEft4LyXVTQ/Wndcdqmi9pWl0fZKQ/mWkDNcjJ4Z5b4Ib6joWio0xDY4g1VwqHHyr5pjNQgd7ORD2Kk8nOfEyDdFbCQmfRv1FTb6sduGW0j67PnMaMXNd10FPVt8cqqg9Pxp6asweI2W31+QbTaXcXqLf6/Sw2DmbSDK+xjl/0KUKXlgGd3Sr5oJcXAGbS+9oVEvwiBXUSEMKRjPwcVvO8CCXCOkb95OqiQZYZCIuOx43SvmYnEP5iRE4YimK4YnyKeNW4CBf/XCJiPIdIXbVx66v1JXrPkHJW/qz616HkaeyqJhusd6ha5OfQwe/oaWn4w1iG45Ki/Qi+KoCcuRuSW8f918l1auIX79+MJolEo5+kuEt1r0ZURyqQufKGmSjw7I+Cw4Mzx9vM8xYo2yoByssJQPTFMye2kU/geUJPUxRmHA1EFyaE+/TiDFA5m6ltJC2Op+lIBX3U6zQQHvV+DAg/ceqhpZca2lbaB/mPnbBreSrP1u+E5h0DpfDDfBrzPOwyifu4YRPfRlx17GyEwW8A2wL+hSqOLD3WzeAjKw3rMdZ2JZEzrb9FHAt2YMcxpFRi8qOaZxRMtLXX0O4LzamJgci8W6Q3F4qHbQIXZTK0C1WAxihNDrmwcn+OumNuRvGYYuhj9GN8G8xyZ/KB4UU5z7fKYPh8XESz8x/nZhj/zTr4kWStY9noX5flZunM5BGHxL5ojmLpBYD80ymBAOseeCOx9jAi7wswPbheFpdVncpoj8vaLO8c4LOJrniaapppkffBuHp2o3zobenx44fZIyopiJx8evY22O+1dhy+jroN2R65y/alUT5yiBbT7nT+oBEiPqc8vQFo9j5Fq6qAyhDJGUz+QWcACfVUOIFv8HnoiiZ2NJH8Xko6Pro+PSplEz9YGVWsv+EmxMIEu14QG6F2H4B2orQ7kiW8FyeLpaALHYDVDml6xqcai4Js00EKTsoYvl92p0hYMkucc+e19ZNDKBLz0N0Blcv0LAnEDfOUhMHlKN0dDFn+Sq4lyRcRMLMMOCM1YA9Rbwb1Gv700OxFg0vHmSB8F+LgDJmlVx3ukXPmvscbHKGYJ2zm9hcnwfklz9CwFgDBsH/1fV57/Oi0Y3k7nUioU5RfUEB7qP3dfzM0nDRoyLKujADy3uMDjD8VnypxV0MfdD9ApUlUCFfyipfC1fmBCOgVQD5vsvmbtEesXiTe4bnkJQJ4v4podJHPIBNOU6CwSVys5fy7sQqq0AjyM2BwOTo2f7M3CmvFt+NSdxzeBdmsWm87Mnm7BGkg9b3tZyZvpVnzR2TvwO5rvPestOV3JV3Rz6Lw5os9CaR23/lZVAVDfYFeb8m2YzTsGMmfaV6ItU8PWYrWYCU5x0vrtggIwWtykVV4Rivpjl9VIfnrQB2/W3W8q84UU+IJW+GG875XlQ1K9GKo7HrDCV1OVqYdkWIjUQDnnLQzWhkH3dCjwQHySoZfHl45y6+yt9kusSMS1C7L2NGHrtndYP32Cngo34h7Acdh8i6UgmrEsV6w4AHjCGYk9bzXVr6rFy9SFdkI5BvwsU+yBtk4s8xsJrtU5StTZiBLR7vMcz/jAu3P4b3exf2VvnlC4wVXnnVuVjxltNFnCUXxK4ULVcmMDVKINDQKcBG4Md3/L9aPIimuasP9eobHI0VUe+5paAIIlgXB61Q7PM7CjFRE8oVxHacCKJn9PHCWf/4m1UhVwowSRwOLT67l/cY6LD6Sj5b+p6SV4CYA8+CrLK6u7PrMue7Jz+q7qCmR5HHEX2JHybOqI1IRjCQoZY29/Ha6S24crkMJSNQrcuz9kphY//USraadJVSR8Hqt+1Zf6O7pb2Xt2a8ncHwypk5yWbWNHRHZGsTb06OxOSdCqVqJS81KH1s/QVuoxSNF46VfM2waTjnYJaYPMdjM3KpDHCe3q8qabDK0BSQJlNagZZpxZWmOXC7Eb8GrbuTvefxExeIcr44+5EvK0F0pw8r+OTekLi/1UJT2iLMa4hQ6vzmROn3+efhrNQvsDrFSJ/HGsUrKksMP+HakfDP0MjtuLEmJT4iv4Ixw6gbfRH9BzfEnPH1V+azU9S/6YBge4cjwhp6VIQbJWqGLSS8//Kffi/zj41Fj1w85672lqTC52/Swr8OFxcG97K2DtomOHpSTn0shVEmWB50LPXHpAzsR1nh7jXCkvjwVoKXbnBJk8YuVGT84LFyTUWnJzLLu95zq5hc0uBKE/5kREvDjOt89fqD8SFn42exgwlj+qpqIErBs50tGMtL4+NY0MPwCcq076l6tDVw4KMXdcEcoMawJEa3vHWuKqtvI0ByfCTFcEjZ5/QA5Zt8IiEpZW9MuYmfQUgtkzKtiL4OmgSdp92BkppX+OVM9UNVreYaxtWqBoCWUM6QvWq3BG6L0HOb94qGyZjhqAeGbwDJNaueV3MUnf3e+9JFnWNF8g4gHTpXoHDkKSl0EjzeTTbVo/NJ0BiW3zGFq32n+mCHIiuHF6nctckoDmB7b/mJnSGWOg4jzM/+DhgS7PXvUdDlJx1qJ2xZDzMgd0xCaqCON5UgEwL2+ACpL/HC8ExHLIubBq0FtE1ipK6Bgb1wzDd3g7Lqcn7oOqkXmm39wo8PBmmYYHY7JXOU4npb/THBQcjEUsLI7FBpl7DjWdwx5ro7aHDlr5GWOQrlpREg4iO98Cf4/+2jav6iILFfcnFF1xTkLYbApkGyehgSo0gezBP3SpNDU7SUYkZFyCHLwinaXlHZCN8NPHWVLNt5dTC9gGK/fKM0jnLn0VXKyozWnkpPK7bKRpqIuqB43ynFTtlk29sIXUgVLpCVBDMygJkeAYS/0ZdCJoMriTaScVewOtyYX0x8motRyeOkGrRD8j2OQnYuRznTYy+mu0K9iFLMkWCS4vumj6v84TuD3Pqo2z5mfCMhofH2DblaOGko2h90Etae7kWZlKndLO+ugPvTIFVgRXXPjiVOrfoGGwZBk8R2Or4ogZJj4BvBGXEpm/BKq95QRJlDM2MsVejBJTNJNfiY5eSwzdpALz7CNpcioe7+YJuLxiOhqr/Xt86RLGfLV0Fr9elvy/jV5mMcgjXIfvhXzJYhYycTmieKrqb12fT2O//05jASnv134JmmvYER+5+J5y/QB11qxqb0D4stGpLRqYJ7t66qMSXxKJ7SxT19oa8zrxJl5AkxvYKKzKdNGapCAX6/E2KRSN01Ysi/9d14ZoK5YJ4IrXfkGFIh98t282XXucuqT6djvepnpMSVxnmQofn4//itxg5o7+YRi8FPcjsWRnMf9ARxuEU6Ilr/nv5qofYDalJ9kRZly9mzwy0NCfmpxOnI/L+M34jBZ0QH+aT5a0uex1M1ZpQR8aM2PEKWUr5bxk4X6oYW1Te5WM4gSYuABRqEch0/6UG3DGpofIPYZXjhSDTCXiDezPjPJv8582+xcR6E3sBzmWqyog30rzPeOK5y/Al/mLusVEgcUq111G/WNdYWH+UNdLpK6frqiD8dHQ1cU1ku6TogiMI/jUE5cotrAGVMbbs0HszxW5HFuDxeo2WXE2DY7feY9OCy5s+Rtx4T2n1Fvj3TtdcrLvzc3Tnjq0EOzpjEjNuu88DoYwGWqchlOrjxSlA9LXHf/yqxb3b3txLBf08qkw0fwrrUjrt6J9VMfWJRa2Rs1nNHCQ0YfjeQGDjVgT8+XRW+Jwz6Z+94HWAUIvJXqDOmQd9rjxtHOaDMvRhxRLDJPNy0bTwGGQHu16L8bns9y0T+RW8sBo7ms+vAVUfLDaGy2nN7Dg2bAbiwKBFAJ/mpuTo4zB/uepmKkc00Vz8kvvuPwBe16fZ0T8hpx7GcxwkDGxHV++gQzBdjbGttex5eEKgV3LJHZN0Pz03BLJTtA8p8mzNovxtx6xVYQTym1nqhL1S3D0tEkAtRYuu7+RDO5lYW7pIOltqztU0UEKTANr94nv+nmxpMppfP7X6eBGZW7tMc2crOOLa25mle2WGABVe7I+fMWwNtG4n4nGc9v7phyca/Lr1Ge++cuZXta1nfJVRy+iK7cByXgrlTPKM3cqWDZidbY7IVJCrNuGl9eYtdMGsFWtiSjbK4D4agPKqkFZfW5nMWK8nCMveg78h5ZpzrLDaDrvq3qdgg4MMyjeWlzDISapvPLgdZZxYXo5AjBAbMgkL0G9l7ZEhh0d/9MBRHSFeMga2PF7/YGy562cXhWXcuVEh8LbxV42OM7xKWrCBb0qG7/RkAB/jhceLckYDRPW7K4WvD0qMPfVPjT71sO/rguWzEQQCe3PcfGlGXdjL7IpfbRXh5SW9Wz71GU9hT+MtMdd4M9vCoeibnmVbGBxmGZEoYfOpxf/CgAG7mV84h2iVKt4Uknqxh7SXErzFSdUwRUOfiHi8MTyrKaxGADeq2satZfz9HVIz2Rfz2dPXXIKuQZC2cbmXMgZqJ2TJd/5zUqedcfb6oGrufYEI03/3vV//xkzEcPQFs7c8qLaCI3CzbmVYkQ//5R79E+F+l51tJl9t+JL9e3yqJ4mMhWIg/xKtJDa7gnbmE2EZr7dECYe7Rzftjf0zyP+U386U3jqTvM9kIXwFPy8MaJ7AyunO+G8kxlJtpcvf//BHBS4E8DnskI28gmoc6w7Q24rDTb0tT2x++w/P9KJWT4p5ppz1DX/Ys3E/EYYspUlHbi9VGolRVsC770zgm4YFygILRuCnTycrePk/+QqTBkKcGr+RBMvqH8n/BHCcgtv/5f6TY/ipxyz5VcdUJWZhgcz3rzG/Dv3PYodzL0hh0W8ocQnITp/EP11X8IX2dk/hH/OdtorhJuEGxAu0SCmgVMyPtqnzs05yYsAqQTlyFlfHpkpsozcd8Tp6MKLofrNTYk6FCHJ2cvBqwdEq1MZb7lQCRKVBrRExUvZebw6w5OcjjhIyXU4vUeofgReocXqSLvnj6629aoSCr/lf0Jvayxd0FMWYfwPj0GJrMOAPOpoo40Sy6KjX88KEooIGWkQCVX6zlYCHySvt3tp4MDxP2GGAqSe4AHnC+p4ymqfqTDRwm5SoNoe/ufplPcadisQJ8B/d+zgNqA518M0/iEB1BCjv8JSMy0DDUv04Wpc62ZMLqfFEfx4VRCfvL3Khd1OOZYSCT7cK3eHbeqGupN0a+XaJPYzIVMpwS2HRoVT8vxW8D6xAZxLKUKe5g0SYBG1hMPCzcpXPDFBg2P6KYVhfqBR+4sGo0yADjQjc6g+Hmn96jJt6V0N42XG3uKXT6sU6ldsH3PwmuhKmO0xAf0yPQmEFC5Z5w72NvH7TPmbhmqo13hn4Z/4r9kIvPFd1N3i+jdf2VG11kH7xPs=</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
    
    <summary type="html">
    
      此文章已经加密，需要解密后才能阅读&lt;/br&gt;
    
    </summary>
    
      <category term="项目文档" scheme="https://www.mingyugu.com/categories/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/"/>
    
    
      <category term="Document" scheme="https://www.mingyugu.com/tags/Document/"/>
    
  </entry>
  
  <entry>
    <title>垃圾袋发放机和云服务器数据交互接口协议</title>
    <link href="https://www.mingyugu.com/garbage-dispenser-api-doc.html"/>
    <id>https://www.mingyugu.com/garbage-dispenser-api-doc.html</id>
    <published>2016-05-21T06:28:32.000Z</published>
    <updated>2016-05-21T06:28:32.000Z</updated>
    
    <content type="html"><![CDATA[<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><div id="security">  <div class="input-container">  <input type="password" class="form-control" id="pass" placeholder="请输入解密密码" />    <label for="pass">请输入解密密码</label>    <div class="bottom-line"></div>  </div></div><div id="decryptionError" style="display: none;">密码错误，请重新输入</div><div id="noContentError" style="display: none;">没有内容显示</div><div id="encrypt-blog" style="display:none">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</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
    
    <summary type="html">
    
      此文章已经加密，需要解密后才能阅读&lt;/br&gt;
    
    </summary>
    
      <category term="项目文档" scheme="https://www.mingyugu.com/categories/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/"/>
    
    
      <category term="Document" scheme="https://www.mingyugu.com/tags/Document/"/>
    
  </entry>
  
  <entry>
    <title>垃圾袋分类箱和云服务器数据交互接口协议</title>
    <link href="https://www.mingyugu.com/garbage-sorting-api-doc.html"/>
    <id>https://www.mingyugu.com/garbage-sorting-api-doc.html</id>
    <published>2016-05-21T06:28:32.000Z</published>
    <updated>2016-05-21T06:28:32.000Z</updated>
    
    <content type="html"><![CDATA[<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><div id="security">  <div class="input-container">  <input type="password" class="form-control" id="pass" placeholder="请输入解密密码" />    <label for="pass">请输入解密密码</label>    <div class="bottom-line"></div>  </div></div><div id="decryptionError" style="display: none;">密码错误，请重新输入</div><div id="noContentError" style="display: none;">没有内容显示</div><div id="encrypt-blog" style="display:none">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</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
    
    <summary type="html">
    
      此文章已经加密，需要解密后才能阅读&lt;/br&gt;
    
    </summary>
    
      <category term="项目文档" scheme="https://www.mingyugu.com/categories/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/"/>
    
    
      <category term="Document" scheme="https://www.mingyugu.com/tags/Document/"/>
    
  </entry>
  
  <entry>
    <title>使用Nginx + Let&#39;s Encrypt配置免费的HTTPS</title>
    <link href="https://www.mingyugu.com/nginx-free-https.html"/>
    <id>https://www.mingyugu.com/nginx-free-https.html</id>
    <published>2016-03-17T01:13:02.000Z</published>
    <updated>2016-03-17T01:13:02.000Z</updated>
    
    <content type="html"><![CDATA[<!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --><hr><p>在本文档中,我将简述如何使用Let’s Encrypt来获得一个免费的SSL证书, 并且配置相应的Nginx，我们还将向您展示如何自动更新您的SSL证书。如果你运行一个不同的web服务器,只需遵循您的web服务器文档了解如何使用证书和你的设置。</p><blockquote><ul><li>Let’s Encrypt简介</li><li>准备工作</li><li>使用Standalone插件运行letsencrypt</li><li>使用Webroot插件运行letsencrypt</li><li>创建Let’s Encrypt配置文件</li><li>创建自动更新脚本</li></ul></blockquote><hr><h1 id="Let’s-Encrypt简介"><a href="#Let’s-Encrypt简介" class="headerlink" title="Let’s Encrypt简介"></a>Let’s Encrypt简介</h1><blockquote><p>Let’s Encrypt是一个新的证书颁发机构(CA),提供了一种简便的方法来获取和安装免费的TLS / SSL证书,从而使加密 的HTTPS在web服务器上。它通过提供一个软件客户端<code>letsencrypt</code>简化了过程,试图自动化大多数所需的步骤。目前,<br>Let’s Encrypt仍在开放测试,整个过程的获取和安装证书只在Apache web服务器是完全自动的。但是,我们仍然可以 可以通过手动安装的方式，无论你选择的是哪一个web服务器, 用Let’s Encrypt都可以很容易获得一个免费的SSL证书。</p></blockquote><p><a href="https://letsencrypt.org/" target="_blank" rel="noopener">https://letsencrypt.org/</a></p><hr><h1 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h1><blockquote><p>在使用文档前，你必须要确认一下几点：</p></blockquote><ul><li>拥有一台linux服务器，并且如果不是root用户必须具有sudo权限</li><li>linux服务器上安装了nginx和git</li><li>拥有注册域名，因为加密是验证你的域名颁发证书，生成证书的时候会需要填写</li><li>拥有一个邮箱，生成证书的时候会需要填写</li></ul><hr><h1 id="使用Standalone插件运行letsencrypt"><a href="#使用Standalone插件运行letsencrypt" class="headerlink" title="使用Standalone插件运行letsencrypt"></a>使用Standalone插件运行letsencrypt</h1><h2 id="1-安装Let’s-Encrypt客户端"><a href="#1-安装Let’s-Encrypt客户端" class="headerlink" title="1. 安装Let’s Encrypt客户端"></a>1. 安装Let’s Encrypt客户端</h2><blockquote><p>第一步安装Let’s Encrypt的客户端<code>letsencrypt</code>在你的服务器上，用来获取SSL证书。目前,最好的安装Let’s Encrypt客户端的方法就是从官方GitHub库克隆它。在以后,它可能会通过一个软件包管理器安装。</p></blockquote><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 git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt</span><br></pre></td></tr></table></figure><h2 id="2-获取一个证书"><a href="#2-获取一个证书" class="headerlink" title="2. 获取一个证书"></a>2. 获取一个证书</h2><blockquote><p>Let’s Encrypt提供了多种方式来获取SSL证书，通过各种插件。大多数的插件只会帮助你获得一个证书,你必须手动配置你的web服务器来使用。这些插件获取证书并且不需要安装,被称为“身份验证器”，因为它们只用于验证服务器是否应该颁发一个证书。下面将展示如何使用Standalone插件来获取SSL证书。</p></blockquote><blockquote><p>Standalone插件提供了一个非常简单的方法来获取SSL证书。它通过暂时运行一个小型的web服务器,在你服务器的80端口上,让我们的Let’s Encrypt CA可以连接并验证你的服务器，判断身份是否颁发证书。因此,这种方法要求80端口不能被占用。也就是说，在使用这个插件之前一定要停止你正常的web服务器（如果你的web服务器使用的端口是80(http)的话）。例如，如果你正在使用Nginx，你可以通过以下命令停止它：</p></blockquote><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 service nginx stop</span><br></pre></td></tr></table></figure><blockquote><p>如果你还是不确定的话，可以使用以下命令验证80端口是被占用</p></blockquote><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">$ netstat -na | grep &apos;:80.*LISTEN&apos;</span><br></pre></td></tr></table></figure><h2 id="3-运行Let’s-Encrypt"><a href="#3-运行Let’s-Encrypt" class="headerlink" title="3. 运行Let’s Encrypt"></a>3. 运行Let’s Encrypt</h2><blockquote><p>在使用Let’s Encrypt之前，我们先进入到letsencrypt目录：</p></blockquote><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 /opt/letsencrypt</span><br></pre></td></tr></table></figure><blockquote><p>现在通过以下命令使用Standalone插件运行:</p></blockquote><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">$ ./letsencrypt-auto certonly --standalone</span><br></pre></td></tr></table></figure><blockquote><p>在letsencrypt初始化后，如果你是第一次获取证书，将需要填写一些信息。</p></blockquote><blockquote><p>填写一个邮件地址，用于通知和遗失钥匙的恢复</p></blockquote><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/nginx-free-https-1.png-blog.post" alt="示例图"></div><div class="image-caption">示例图</div></figure><blockquote><p>然后询问是否同意Let’s Encrypt的使用条款，选择同意</p></blockquote><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/nginx-free-https-2.png-blog.post" alt="示例图"></div><div class="image-caption">示例图</div></figure><blockquote><p>然后输入你的域名，如果想要一个证书适用于多个域名，那必须把所有的域名都填写上</p></blockquote><figure class="image-bubble"><div class="img-lightbox"><div class="overlay"></div><img src="//static.mingyugu.com/nginx-free-https-3.png-blog.post" alt="示例图"></div><div class="image-caption">示例图</div></figure><blockquote><p>如果一切顺利，你应该看到这样一个输出消息:</p></blockquote><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></pre></td><td class="code"><pre><span class="line">Output:</span><br><span class="line">IMPORTANT NOTES:</span><br><span class="line"> - If you lose your account credentials, you can recover through</span><br><span class="line">   e-mails sent to sammy@digitalocean.com</span><br><span class="line"> - Congratulations! Your certificate and chain have been saved at</span><br><span class="line">   /etc/letsencrypt/live/example.com/fullchain.pem. Your</span><br><span class="line">   cert will expire on 2016-03-15. To obtain a new version of the</span><br><span class="line">   certificate in the future, simply run Let&apos;s Encrypt again.</span><br><span class="line"> - Your account credentials have been saved in your Let&apos;s Encrypt</span><br><span class="line">   configuration directory at /etc/letsencrypt. You should make a</span><br><span class="line">   secure backup of this folder now. This configuration directory will</span><br><span class="line">   also contain certificates and private keys obtained by Let&apos;s</span><br><span class="line">   Encrypt so making regular backups of this folder is ideal.</span><br><span class="line"> - If like Let&apos;s Encrypt, please consider supporting our work by:</span><br><span class="line"></span><br><span class="line">   Donating to ISRG / Let&apos;s Encrypt:   https://letsencrypt.org/donate</span><br><span class="line">   Donating to EFF:                    https://eff.org/donate-le</span><br></pre></td></tr></table></figure><blockquote><p>获得证书后，你将有以下PEM文件:</p></blockquote><ul><li>cert.pem: 你的域名证书</li><li>chain.pem: Let’s Encrypt的证书</li><li>fullchain.pem: cert.pem和chain.pem合并的证书</li><li>privkey.pem: 你的证书的私钥</li></ul><blockquote><p>你可以通过以下命令查看你的证书目录：</p></blockquote><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 ls /etc/letsencrypt/live/your_domain_name</span><br></pre></td></tr></table></figure><h2 id="4-配置Web-Server-Nginx-的TLS-SSL"><a href="#4-配置Web-Server-Nginx-的TLS-SSL" class="headerlink" title="4. 配置Web Server (Nginx)的TLS/SSL"></a>4. 配置Web Server (Nginx)的TLS/SSL</h2><blockquote><p>现在你有一个SSL证书，你需要配置你的web服务器来使用它。下面将演示如何配置Nginx web服务器使用证书。如果你使用的是不同的web服务器，您需要参考相关如何设置SSL证书的文档。</p></blockquote><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 vi /etc/nginx/conf.d/nginx-example.conf</span><br></pre></td></tr></table></figure><blockquote><p>增加server配置，监听SSL的443端口，并且配置SSL证书。然后修改server监听的80端口重定向到https的443端口上</p></blockquote><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></pre></td><td class="code"><pre><span class="line">server   &#123;</span><br><span class="line">   listen   80;</span><br><span class="line">   server_name example.com;</span><br><span class="line">   return 301 https://$host$request_uri;</span><br><span class="line">&#125;</span><br><span class="line"> </span><br><span class="line">server &#123;</span><br><span class="line">    listen   443 ssl;</span><br><span class="line">    server_name example.com www.example.com;</span><br><span class="line">    </span><br><span class="line">    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;</span><br><span class="line">    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;</span><br><span class="line"></span><br><span class="line">    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;</span><br><span class="line">    ssl_prefer_server_ciphers on;   </span><br><span class="line">    ssl_ciphers &apos;EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH&apos;;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>配置好Nginx的SSL后保存退出，然后重启Nginx。之后就可以访问站点测试一下HTTPS是不是已经开始工作了</p></blockquote><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 service nginx restart</span><br></pre></td></tr></table></figure><hr><h1 id="使用Webroot插件运行letsencrypt"><a href="#使用Webroot插件运行letsencrypt" class="headerlink" title="使用Webroot插件运行letsencrypt"></a>使用Webroot插件运行letsencrypt</h1><blockquote><p>现在，我们将使用Webroot插件运行letsencrypt，相比使用Standalone插件，它不需要停止你的web服务器，它可以通过你的web服务器来验证你的域名。Webroot插件添加一个隐藏的文件到你的web服务器的文档根目录,让加密的CA可以读取并且验证你的域名。</p></blockquote><blockquote><p>Webroot插件通过放置一个特殊的文件<code>/.well-known</code>在你的文档根目录，使得Let’s Encrypt可以通过web服务器验证加密服务。所以你需要显式的允许<code>/.well-known</code>的访问，确保能够正常的加密验证。所以让我们迅速改变一下Nginx的配置。</p></blockquote><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 vi /etc/nginx/conf.d/nginx-example.conf</span><br></pre></td></tr></table></figure><blockquote><p>编辑Nginx关于SSL的server配置，增加以下代码：</p></blockquote><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">location ~ /.well-known &#123;</span><br><span class="line">    allow all;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>修改玩Nginx配置后需要重新加载</p></blockquote><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 service nginx reload</span><br></pre></td></tr></table></figure><blockquote><p>使用Webroot插件，你必须要知道你的web服务器文档的根目录，你如果不清楚可以去查找相关的配置。在Nginx下，如果你没有修改过的话，文档的根目录地址是<code>/usr/share/nginx/html</code>。现在我们知道了web服务器的文档根目录(<code>webroot-path</code>)，我们就可以通过以下面命令来使用Webroot插件生成我们的证书，在这里，我们使用<code>- d</code>指定域名。</p></blockquote><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">$ cd /opt/letsencrypt</span><br><span class="line">$ ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com</span><br></pre></td></tr></table></figure><blockquote><p>成功后，你将需要重新加载Nginx服务来使用新的证书:</p></blockquote><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 service nginx reload</span><br></pre></td></tr></table></figure><hr><h1 id="创建Let’s-Encrypt配置文件"><a href="#创建Let’s-Encrypt配置文件" class="headerlink" title="创建Let’s Encrypt配置文件"></a>创建Let’s Encrypt配置文件</h1><blockquote><p>上面文档中，我们通过Webroot插件来生成我们的证书，现在让我们简化一下更新过程，我们创建一个加密配置文件<code>/usr/local/etc/le-renew-webroot.ini</code>。</p></blockquote><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 cp /opt/letsencrypt/examples/cli.ini /usr/local/etc/le-renew-webroot.ini</span><br></pre></td></tr></table></figure><blockquote><p>现在我们打开并且编辑这个配置文件：</p></blockquote><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 vi /usr/local/etc/le-renew-webroot.ini</span><br></pre></td></tr></table></figure><blockquote><p>接下来，取消<code>email</code>, <code>domains</code>和<code>webroot-path</code>的注释，用你自己的信息去更新。完成后大概是这样的：</p></blockquote><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">rsa-key-size = 4096</span><br><span class="line"></span><br><span class="line">email = you@example.com</span><br><span class="line"></span><br><span class="line">domains = example.com, www.example.com</span><br><span class="line"></span><br><span class="line">webroot-path = /usr/share/nginx/html</span><br></pre></td></tr></table></figure><blockquote><p>现在，我们不需要指定<code>webroot-path</code>的路径和<code>-d</code>域名的信息了，我们可以指向加密配置文件来完成证书的更新。假设你的配置文件是正确的，下面的命令将更新我们的证书:</p></blockquote><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">$ cd /opt/letsencrypt</span><br><span class="line">$ ./letsencrypt-auto certonly -a webroot --renew-by-default --config /usr/local/etc/le-renew-webroot.ini</span><br></pre></td></tr></table></figure><blockquote><p>重新加载Nginx服务来验证一下吧:</p></blockquote><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 service nginx reload</span><br></pre></td></tr></table></figure><hr><h1 id="创建自动更新脚本"><a href="#创建自动更新脚本" class="headerlink" title="创建自动更新脚本"></a>创建自动更新脚本</h1><blockquote><p>使用Let’s Encrypt获取的加密证书有效期为90天，也就是说我们不得不在证书快到期的时候来手动更新一下证书。这样的工作是繁琐的，并且容易遗忘。所以，我们试想一下，我们已经简化了很多更新证书的工作，接下来我们是不是可以通过一个自动化脚本来完成这重复的劳动工作呢。答案是肯定的，在linux服务器上，我们可以通过cron job来设置自动更新脚本的运行周期，我们把这个运行周期设置为当检查到证书有效期不足30天时，我们每周去执行及脚本更新一下证书。我们这样设置可以确保我们的证书在过期之前即使有一个cron job失败了，我们仍有30天的时间可以让我们每周再试一次。</p></blockquote><blockquote><p>首先，我们下载一个自动更新脚本，并且设置为可执行</p></blockquote><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">$ sudo curl -L -o /usr/local/sbin/le-renew-webroot https://gist.githubusercontent.com/thisismitch/e1b603165523df66d5cc/raw/fbffbf358e96110d5566f13677d9bd5f4f65794c/le-renew-webroot</span><br><span class="line">$ sudo chmod +x /usr/local/sbin/le-renew-webroot</span><br></pre></td></tr></table></figure><blockquote><p>备注：如果你的服务器是<code>Redhat</code>，那么请将文件放到<code>/sbin</code>目录下，例如：</p></blockquote><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">$ sudo curl -L -o /sbin/le-renew-webroot https://gist.githubusercontent.com/thisismitch/e1b603165523df66d5cc/raw/fbffbf358e96110d5566f13677d9bd5f4f65794c/le-renew-webroot</span><br><span class="line">$ sudo chmod +x /sbin/le-renew-webroot</span><br></pre></td></tr></table></figure><blockquote><p>注意：如果<code>/usr/local/etc/le-renew-webroot.ini</code>配置不存在，这个脚本将不会运行。另外，确保在配置文件中指定的第一个域名和你最初创建证书的时候指定的域名是相同的。</p></blockquote><blockquote><p>现在，如果你运行这个脚本，你将能够看到当前的证书还有多少天到期：</p></blockquote><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 le-renew-webroot</span><br></pre></td></tr></table></figure><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">output</span><br><span class="line">Checking expiration date for example.com...</span><br><span class="line">The certificate is up to date, no need for renewal (89 days left).</span><br></pre></td></tr></table></figure><blockquote><p>接下来，我们将编辑<code>crontab</code>来创建一个新作业，并且将每周运行这个命令。</p></blockquote><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 crontab -e</span><br></pre></td></tr></table></figure><blockquote><p>添加下面一行代码：</p></blockquote><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">30 2 * * 1 /usr/local/sbin/le-renew-webroot &gt;&gt; /var/log/le-renewal.log</span><br></pre></td></tr></table></figure><blockquote><p>保存并退出，这将创建一个新的cron作业，我们设定为每周一凌晨2点30分执行le-renew-webroot命令。命令产生的输出将被写入<code>/var/log/le-renewal.log</code>日志中。</p></blockquote><!-- rebuild by neat -->]]></content>
    
    <summary type="html">
    
      
      
        &lt;!-- build time:Fri May 07 2021 18:19:42 GMT+0800 (GMT+08:00) --&gt;&lt;hr&gt;&lt;p&gt;在本文档中,我将简述如何使用Let’s Encrypt来获得一个免费的SSL证书, 并且配置相应的Nginx，我们还将向您展示如何自动更
      
    
    </summary>
    
      <category term="后端" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/"/>
    
      <category term="Web服务器" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/Web%E6%9C%8D%E5%8A%A1%E5%99%A8/"/>
    
      <category term="Nginx" scheme="https://www.mingyugu.com/categories/%E5%90%8E%E7%AB%AF/Web%E6%9C%8D%E5%8A%A1%E5%99%A8/Nginx/"/>
    
    
      <category term="Nginx" scheme="https://www.mingyugu.com/tags/Nginx/"/>
    
      <category term="Letsencrypt" scheme="https://www.mingyugu.com/tags/Letsencrypt/"/>
    
      <category term="Https" scheme="https://www.mingyugu.com/tags/Https/"/>
    
      <category term="Linux" scheme="https://www.mingyugu.com/tags/Linux/"/>
    
  </entry>
  
  <entry>
    <title>本地运行Cogitr API项目文档(Run locally Cogitr API documents)</title>
    <link href="https://www.mingyugu.com/cogitr-local-run-settings.html"/>
    <id>https://www.mingyugu.com/cogitr-local-run-settings.html</id>
    <published>2016-02-16T01:44:11.000Z</published>
    <updated>2016-02-16T01:44:11.000Z</updated>
    
    <content type="html"><![CDATA[<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><div id="security">  <div class="input-container">  <input type="password" class="form-control" id="pass" placeholder="请输入解密密码" />    <label for="pass">请输入解密密码</label>    <div class="bottom-line"></div>  </div></div><div id="decryptionError" style="display: none;">密码错误，请重新输入</div><div id="noContentError" style="display: none;">没有内容显示</div><div id="encrypt-blog" style="display:none">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</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
    
    <summary type="html">
    
      此文章已经加密，需要解密后才能阅读&lt;/br&gt;
    
    </summary>
    
      <category term="项目文档" scheme="https://www.mingyugu.com/categories/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/"/>
    
    
      <category term="Document" scheme="https://www.mingyugu.com/tags/Document/"/>
    
  </entry>
  
  <entry>
    <title>云翎科技项目文档</title>
    <link href="https://www.mingyugu.com/airwingtech-doc.html"/>
    <id>https://www.mingyugu.com/airwingtech-doc.html</id>
    <published>2015-12-18T04:19:56.000Z</published>
    <updated>2015-12-18T04:19:56.000Z</updated>
    
    <content type="html"><![CDATA[<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><div id="security">  <div class="input-container">  <input type="password" class="form-control" id="pass" placeholder="请输入解密密码" />    <label for="pass">请输入解密密码</label>    <div class="bottom-line"></div>  </div></div><div id="decryptionError" style="display: none;">密码错误，请重新输入</div><div id="noContentError" style="display: none;">没有内容显示</div><div id="encrypt-blog" style="display:none">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</div><script src="/lib/crypto-js.js"></script><script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">]]></content>
    
    <summary type="html">
    
      此文章已经加密，需要解密后才能阅读&lt;/br&gt;
    
    </summary>
    
      <category term="项目文档" scheme="https://www.mingyugu.com/categories/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/"/>
    
    
      <category term="Document" scheme="https://www.mingyugu.com/tags/Document/"/>
    
  </entry>
  
</feed>
