java程序员技能树-持续更新
2019-07-19 16:26:08 5 举报AI智能生成
java架构成长
java
架构师
模版推荐
作者其他创作
大纲/内容
数据结构
List
ArrayList
非线程安全&链接看分析源码
底层是数组
Array循环删除报错?如何解决?
倒序删除
迭代器删除:iterator.remove
copyOnWrite容器删除
支持随机访问
Vector
Vector就是ArrayList的线程安全版,它的方法前都加了synchronized锁,其他实现逻辑都相同。 <br>如果对线程安全要求不高的话,可以选择ArrayList,毕竟synchronized也很耗性能
LinkedList
双向链表-LinkedList由链表实现,插入和删除方便,适用于变更多/读写少的场景
不支持随机访问
Set
hashSet
LinkedList、<br>ConcurrentLinkedQueue、<br>LinkedBlockingQueue对比分析
linkeList并发生时容易出现问题,
LinkedBlockingQueue是使用锁机制,<br>ConcurrentLinkedQueue是使用CAS算法,<br>虽然LinkedBlockingQueue的底层获取锁也是使用的CAS算法
取元素,ConcurrentLinkedQueue不支持阻塞去取元素,<br>LinkedBlockingQueue支持阻塞的take()方法,<br>如需要ConcurrentLinkedQueue的消费者产生阻塞效果,需要自行实现
插入元素:ConcurrentLinkedQueue肯定是最快的
TreeSet
Map
HashMap
<ul><li>最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。</li><li>HashMap最多只允许一条记录的键为Null(多条会覆盖);</li><li>允许多条记录的值为 Null。非同步的。</li></ul>
jdk1.7-1.8区别
1.7
插入采用头插法
提高了插入效率,高并发下容易出现死循环<br>
多线程下容易出现resize()死循环
并发执行put操作导致环形链表
数组+链表
1.8
尾插法
数组+链表+红黑树(链表长度>8&数组长度>64)
不保证有序
存储顺序按照hash算法计算而来 数组下标:算法讲究随机性,均匀性,不具备规律<br>
HashMap扩容为什么是2^n-1
map扩容时按:(n-1)&hash计算,2的n次幂转为2进制后计算能够充分的散列,使数据可以均匀分布到map的位置上<br>
线程不安全
无同步锁
hashmap中的fail-fast策略
一旦使用迭代器过程中发现并发修改hashmap则抛出异常:<br>ConcurrentModificationException<br>
在修改hashmap时候会记录变量modCount,修改一次+1,<br>最后判断modCount和exceptCount是否一致,否则报错<br>
TreeMap
能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。<br>TreeMap不允许key的值为null。非同步的
Hashtable
与 HashMap类似,不同的是:key和value的值均不允许为null;<br>它支持线程的同步(synchronized 锁住整个map),即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
LinkedHashMap
一个双向链表继承了hashmap, 包含了beforce、after指向
保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的
ConCurrentHashMap
jdk1.7&&jdk1.8
https://www.jianshu.com/p/865c813f2726
segment默认16个
1.数据结构:取消了Segment分段锁的数据结构,取而代之的是数组+链表+红黑树的结构。<br>2.保证线程安全机制:JDK1.7采用segment的分段锁机制实现线程安全,其中segment继承自ReentrantLock。JDK1.8采用CAS+Synchronized保证线程安全。<br>3.锁的粒度:原来是对需要进行数据操作的Segment加锁,现调整为对每个数组元素加锁(Node)。<br>4.链表转化为红黑树:定位结点的hash算法简化会带来弊端,Hash冲突加剧,因此在链表节点数量大于8时,会将链表转化为红黑树进行存储。<br>5.查询时间复杂度:从原来的遍历链表O(n),变成遍历红黑树O(logN)。<br>
Stack/栈
栈是Vector的一个子类,它实现了一个标准的后进先出的栈
树
二叉树
有序数据优势:二分查找<br>链表优势:数据插入删除<br>二叉树综合二者优势
特点
左节点小于等于根节点,右节点大于等于根节点
二叉树插入数据,等于遍历节点有序插入
查找数据,因为数据有序,效率比较高,相当于二分查找
最值查找更加便捷
完全二叉树
定义:一棵二叉树中,只有最下面两层结点的<b><font color="#c41230">度</font><font color="#000000">差</font></b>可以小于2,<br>并且最下一层的叶结点集中在靠左的若干位置上。这样的二叉树称为完全二叉树。(设数的度为h,则树的h-1层为满二叉树,且h层的数据都在最左侧)<br>
特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。<br>显然,满二叉树必定是完全二叉树,而完全二叉树未必是满二叉树
满二叉树
除最后一层无任何子节点外,每一层上的<font color="#7dcdc2">所有结点都有两个子结点的二叉树</font>
平衡二叉树(AVL树)
左右子树的高度差的绝对值不大于1,且左右子树均为平衡二叉树<br>
如果插入或者删除一个节点使得高度之差大于1,就要进行节点之间的旋转,将二叉树重新维持在一个平衡状态。
二叉查找树 链接(https://www.cnblogs.com/gaochundong/p/binary_search_tree.html)
也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),时间复杂度(log^2N)
特点
根节点左侧,都小于根节点;右侧节点,都大于根节点
前序遍历#当前节点-左节点-右节点
中序遍历#左节点-当前节点-右节点
后序遍历#左节点-右节点-当前节点
B树=B-Tree
数据均匀存在所有节点中
https://www.cnblogs.com/yfzhou/p/10290006.html
子主题<br>
B+Tree
数据存储在叶子节点
对于范围查找来说,B+只需遍历叶子节点链表即可,B树却需要重复地中序遍历。<br>
红黑树
自平衡二叉树,每次查询时间复杂度LogN
为什么mysql的索引使用B+树而不是B树呢?
<ol><li> B+树更适合外部存储(一般指磁盘存储),由于内节点(非叶子节点)不存储data,所以一个节点可以存储更多的内节点,<br>每个节点能索引的范围更大更精确。也就是说使用B+树单次磁盘IO的信息量相比较B树更大,IO效率更高。</li><li> - mysql是关系型数据库,经常会按照区间来访问某个索引列,B+树的叶子节点间按顺序建立了链指针,加强了区间访问性,<br>所以B+树对索引列上的区间范围查询很友好。而B树每个节点的key和data在一起,无法进行区间查找</li></ol>
队列
非阻塞队列
ConcurrentLinkedQueue
阻塞队列
LinkedBlockingQueue
常用算法
整体对比
时间/空间 复杂度对比
子主题
基础算法
选择排序
每次从待排序的数据中选取最小的数据,放到已排序数据后面<br>
<ul><li>举例:数组 int[] arr={5,2,8,4,9,1};<br>-------------------------------------------------------<br></li><li> 第一趟排序: 原始数据:5 2 8 4 9 1<br>最小数据1,把1放在首位,也就是1和5互换位置,<br> 排序结果:1 2 8 4 9 5<br>-------------------------------------------------------</li><li> 第二趟排序:<br>第1以外的数据{2 8 4 9 5}进行比较,2最小,<br> 排序结果:1 2 8 4 9 5<br>-------------------------------------------------------</li><li> 第三趟排序:<br>除1、2以外的数据{8 4 9 5}进行比较,4最小,8和4交换<br> 排序结果:1 2 4 8 9 5<br>-------------------------------------------------------</li><li> 第四趟排序:<br>除第1、2、4以外的其他数据{8 9 5}进行比较,5最小,8和5交换<br> 排序结果:1 2 4 5 9 8<br>-------------------------------------------------------</li><li> 第五趟排序:<br>除第1、2、4、5以外的其他数据{9 8}进行比较,8最小,8和9交换<br> 排序结果:1 2 4 5 8 9</li></ul>
冒泡排序
子主题<br>
插入排序
快速排序
归并排序
堆排序
桶排序
基数排序
二分查找<br>
java排序工具
JVM
类加载机制
加载过程
加载
生成一个类的Class对象,作为方法区中这个类的各种数据的入口
可以从class文件,或者zip等文件获取,可以实时计算生成
验证
验证class文件字节流是否符合虚拟机要求,是否会危害虚拟机安全
准备
在方法区内,为类的成员变量设置初值
解析
虚拟机将常量池中的符号引用替换为直接引用的过程
符号引用是指class文件中的 CONSTANT_Class_info / CONSTANT_Field_info
直接引用指向目标的指针,相对偏移量
初始化
真正执行类中定义的Java程序代码
执行类构造器<client>方法的过程
client方法是虚拟机自动收集类中的类变量的赋值操作和静态语句块组合而成
client方法执行前,会保证父类的client已执行
不执行初始化情况
子类引用父类静态字段,知会触发父类的初始化
对象数组类型
通过类名获取CLass对象
通过Class.forName加载指定类时,如果指定参数initialize为false时,也不会触发类初始化,其实这个参数是告诉虚拟机,是否要对类进行初始化
ClassLoader默认的loadClass方法,也不会触发初始化动
使用
卸载
类加载器
启动类加载器-Bootstrap ClassLoader
java_home\lib下的类
-Xbootclasspath参数指定路径中的,且被虚拟机认可(按文件名识别,如rt.jar)的类。
扩展类加载器-Extension ClassLoader
java_home\ext下的类
通过java.ext.dirs系统变量指定路径中的类库
应用程序类加载器-Application ClassLoader
加载用户指定路径classPath上的类
双亲委派模型
当一个类收到类加载请求,并不会马上加载,而是请求父类加载,每一个层次皆是如此,最终请求都会传到启动加载器来处理<br>只有当父类加载器无法处理时,子类加载器才会自己处理
破坏双亲委派模型
加载的基础类中需要回调用户的代码,基础加载器无法识别用户代码?需要破坏双亲委派模型
<font color="#80bc42">JNDI破坏双亲委派模型</font><br>JNDI是Java标准服务,它的代码由启动类加载器去加载。但是JNDI需要回调独立厂商实现的代码,而类加载器无法识别这些回调代码(SPI)。<br>为了解决这个问题,引入了一个线程上下文类加载器。 可通过Thread.setContextClassLoader()设置。<br>利用线程上下文类加载器去加载所需要的SPI代码,即父类加载器请求子类加载器去完成类加载的过程,而破坏了双亲委派模型。
<font color="#80bc42">Spring破坏双亲委派模型</font><br>Spring要对用户程序进行组织和管理,而用户程序一般放在WEB-INF目录下,由WebAppClassLoader类加载器加载,<br>而Spring由Common类加载器或Shared类加载器加载。<br>那么Spring是如何访问WEB-INF下的用户程序呢?<br>使用线程上下文类加载器。 Spring加载类所用的classLoader都是通过Thread.currentThread().getContextClassLoader()获取的。<br>当线程创建时会默认创建一个AppClassLoader类加载器(对应Tomcat中的WebAppclassLoader类加载器): <br>setContextClassLoader(AppClassLoader)。<br>利用这个来加载用户程序。即任何一个线程都可通过getContextClassLoader()获取到WebAppclassLoader。
执行引擎
https://www.cnblogs.com/codehaogg/p/13334713.html
jvm在加载了class文件后,并不能直接在本地执行,需要执行引擎转换为本地方法指令,才能执行
内存模型
java对象模型
分代年龄:4bit,最大值=2^4
java堆
<span>JVM最大的内存空间,线程共享</span>
存储java实例 对象的 地方,GC的主要场所
<span>保存绝大部分的java实例,分为新生代,老生代</span>
<span>通过-Xmx和-Xms控制大小</span>
OutOfMemeoryError:当无法分配内存
分类
新生代
8 - Eden
Eden空间耗尽触发MinorGC,存活对象晋升到S0
1 - survivor space0<br>1 - survivor space1<br>
触发Minor GC Eden空间和s0存活的对象,指向到S1空间,S0和S1交换指针
一个对象被复制15次则提前晋升到老年代
因为对象头里就给了它4个bit来存放,因此最大值就是1111=15,所以你设置很大是没啥用的
标记复制算法
老年代
java8删除
元空间
标记清除算法
方法区
所有java线程共享的。别名 non-heap 非堆
1.存储类结构信息,常量,静态变量,构造函数,及编译后代码<br>2.运行时常量池,类和接口被加载,常量池被创建
通过-XX:MaxPermSize,设置大小
栈(stack)
和线程关联,每创建一个线程,都要分配,均为线程私有
java虚拟机栈
与线程的生命周期一致
存储局部变量表、操作数栈、动态链接、方法出口(局部变量表存储:基本类型,对象引用,returnAddress-指向了一条字节码指令的地址)<br>等信息
stackoverflow:当线程请求的栈深度超过虚拟机栈深度;OutOfMemeroy:当栈扩展无法申请到做够的内存时
参数:-Xss
程序计数器
较小的内存空间,可以看做当前线程执行字节码行号的计数器
执行java方法时,记录的是执行字节码地址;执行Native方法,记录为空(Undefined)
本地方法栈
<span>与虚拟机栈类似,主要是执行Native方法服务</span>
native方法
简单地讲,一个Native Method就是一个java调用非java代码的接口。<br>一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。<br>这个特征并非java所特有,很多其它的编程语言都有这一机制,<br>比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数
GC回收
java引用
强引用
类似 B b=new B(),只要引用存在就不会被回收
软引用
软引用是一种相对强引用弱化一些的引用,可以让对象豁免一些垃圾收集,只有当 JVM 认为内存不足时,<br>才会去试图回收软引用指向的对象。JVM 会确保在抛出 OutOfMemoryError 之前,清理软引用指向的对象。<br>软引用通常用来实现内存敏感的缓存,如果还有空闲内 <br>
弱引用
非必需对象,常用来防止内存泄漏;只能生存到下次GC;GC时不论空间是否足够,弱引用对象都会被回收
虚引用
最弱的引用关系,无法通过引用获取对象,主要是再对象回收后会收到系统通知
要注意的是,虚引用必须和引用队列关联使用,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会把这个虚引用加入到与之 关联的引用队列中。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。
对象存活
引用计数法
对象添加引用计数器,引用 +1, =0则判断无引用
效率高,but循环引用问题
可达性分析
以 GC Root为根节点,到FGC Root无引用链接,判断无引用
GC Root有哪些
虚拟机栈(栈帧中的本地变量表)中的引用对象
<font color="#381e11">本地方法栈中的引用对象</font>
方法区中类的静态类属性,引用的对象
方法区中常量类属性,引用的对象
GC算法
标记清除
首先标记所有需要回收的对象,标记完成后一次回收所有标记对象
标记整理
首先标记需要清除的对象,然后存活对象压缩到堆的其中一块,按顺序排放<br>避免了“标记清除”的碎片问题,避免了"复制"算法的空间问题
复制
内存分为相等的两块,一块使用完时,将存活对象复制到另一块内存中,最后回收使用完的内存
垃圾收集器
Serial收集器
单线程,最古老,最稳定以及效率高的收集器,可能会产生较长的停顿
Stop The World,它在工作时,会暂停其他的所有的工作线程,直到结束
ParNew收集器
Serial收集器 的多线程版本
首选的新生代收集器
Parallel Old 收集器
新生代收集器
并行多线程收集器,采用"<font color="#c41230">复制算法</font>"
GC自适应调节策略
-XX:+UseAdaptiveSizePolicy
不需要指定新生代大小,Eden&Survivor比例,晋升老年嗲年龄<br>虚拟机会根据系统运行情况,动态调整这些参数,以提供最合适的停顿时间\最大吞吐量
CMS收集器
concurrent mark sweep
以获取最短回收停顿时间为准的收集器<br>基于"<font color="#c41230"><b>标记-清除</b></font>"算法实现
处理过程
初始标记:stop the world 只标记GC Roots直连对象,速度较块<br>并发标记:GC Roots tracing过程<br>重新标记:修正再并发标记期间程序运行导致的变动的对象标记,stop the world<br>并发清除:并发清除标记对象
优劣对比
对CPU资源敏感,回收线程数=(cpu数据+3)/4<br>CMS无法处理浮动垃圾:在并发清除阶段,用户线程产生的新的垃圾<br>会产生大量的空间碎片,影响内存使用率,大对象分配很麻烦,空间不足会导致FULL GC
子主题
G1收集器
<font color="#c41230">-XX:+UseG1GC</font>
Garbage-First
并行并发,发挥多核心优势,缩短stop the world时间
分代收集:逻辑分代,不存在老年代 新生代
内存分区思路:回收时以分区为单位,基于"<b><font color="#c41230">标记-整理</font></b>"减少空间碎片
分区:G1把堆内空间分为若干相等区域,分配对象逐段使用,<br>G1对象的存储 并没有要求物理上的连续,逻辑上连续就好
<font color="#c41230">-XX:G1HeapRegionSize=n</font>可指定分区大小(1MB~32MB,且必须是2的幂)
可预测的停顿:G1除了降低线程的停顿时间,还建立了停顿时间模型,<br>可约定x ms时间片内,最多消耗y ms在垃圾收集上
处理过程
初始标记:STW 标记GCRoots 直连对象
并发标记:多线程并发标记整个分区内GC Roots关联的存活对象
最终标记:STW 标记距离上次STW中间,用户程序继续运行导致的对象关联变化的对象
筛选回收:对各个region回收价值和成本排序,根据用户的设置GC停顿时间来制定回收计划;<br>因为只回收了一部分region 时间是可控的,效率也比较高
回收模式
Young GC<br>Minor GC
对Eden区域进行GC
eden空间即将耗尽,Eden数据转移到survivor,如果survivor空间不足,则数据直接转移到old空间中,<br>survivor数据也会移动到新的survivor中,部分可能会晋升到old空间中,Eden空间清空,GC结束
过程
阶段1:根扫描<br> 静态和本地对象被扫描<br>阶段2:更新RS<br> 处理dirty card队列更新RS<br>阶段3:处理RS<br> 检测从年轻代指向年老代的对象<br>阶段4:对象拷贝<br> 拷贝存活的对象到survivor/old区域<br>阶段5:处理引用队列<br> 软引用,弱引用,虚引用处理
Mixed GC<br>Major GC
除了对新生代的对象回收,也对老年代中标记的对象进行回收
过程
全局并发标记<br>拷贝存活对象
全局标记5步骤
初始标记(initial mark,STW)<br>在此阶段,G1 GC 对根进行标记。该阶段与常规的 (STW) 年轻代垃圾回收密切相关。<br><br>根区域扫描(root region scan)<br>G1 GC 在初始标记的存活区扫描对老年代的引用,并标记被引用的对象。该阶段与应用程序(非 STW)同时运行,<br>并且只有完成该阶段后,才能开始下一次 STW 年轻代垃圾回收。<br><br>并发标记(Concurrent Marking)<br>G1 GC 在整个堆中查找可访问的(存活的)对象。该阶段与应用程序同时运行,可以被 STW 年轻代垃圾回收中断<br><br>最终标记(Remark,STW)<br>该阶段是 STW 回收,帮助完成标记周期。G1 GC 清空 SATB 缓冲区,跟踪未被访问的存活对象,并执行引用处理。<br><br>清除垃圾(Cleanup,STW)<br>在这个最后阶段,G1 GC 执行统计和 RSet 净化的 STW 操作。在统计期间,G1 GC 会识别完全空闲的区域和<br>可供进行混合垃圾回收的区域。清理阶段在将空白区域重置并返回到空闲列表时为部分并发。
调优
-XX:+UseG1GC -Xmx32g -XX:MaxGCPauseMillis=200
需要在吞吐量跟MaxGCPauseMillis之间做一个平衡。如果MaxGCPauseMillis设置的过小,那么GC就会频繁,吞吐量就会下降。如果MaxGCPauseMillis设置的过大,应用程序暂停时间就会变长。G1的默认暂停时间是200毫秒,我们可以从这里入手,调整合适的时间
FUll GC
G1触发FullGC后,会退化使用serial收集器进行垃圾收集,单线程工作,效率较低,达到秒级,程序造成假死
发生GC情况
并发模式失败<br>G1启动标记周期,但在MixGC前老年代已经填满,这时G1会放弃标记周期
应对:<br><ul><li>调整堆大小</li><li>调整周期 = 增加线程数-XX:ConcGCThreads等</li></ul>
晋升失败 or 疏散失败<br>G1进行GC时候没有足够空间提供给晋升对象,触发FUll GC
a,增加 -XX:G1ReservePercent 选项的值(并相应增加总的堆大小),为“目标空间”增加预留内存量。<br>b,通过减少 -XX:InitiatingHeapOccupancyPercent 提前启动标记周期。<br>c,也可以通过增加 -XX:ConcGCThreads 选项的值来增加并行标记线程的数目
巨型对象分配失败
增加内存或者增大-XX:G1HeapRegionSize
大对象的分配
TLAB(Thread Lcoal Allocation Buffer)本地线程分配缓冲区
Eden区中分配
Humongous区中分配
该分区主要存放巨型对象,如果一个放不下,会找连续的分区来存放<br>没有连续分区,则可能会触发Full GC
Serial收集器 Serial Old收集器<br>Parallel New收集器 Parallel Old 收集器<br>ParNew收集器 CMS收集器<br><br>G1回收器:逻辑上不区分新老代,<br> 但是每个region可以归属新老代<br>
调优
JVM内存和操作系统内存映射关系
java并发
基础知识
1. 并发编程的优缺点
1. 为什么要用到并发(优点)
充分利用多核CPU的运算能力
方便业务拆分
2.并发编程的缺点
频繁的上下文切换
线程安全(常见的避免死锁的方式)
3. 易混淆的概念
同步 VS 异步
并发 VS 并行
阻塞 VS 非阻塞
临界区资源
2. 线程的状态和基本操作
1. 如何新建线程
继承Thread类
实现Runnable接口
实现Callable接口
几种新建线程方式的比较
2. 线程状态的转换
NEW
RUNNABLE
WAITING
TIMED_WAITING
TERMINATED
BLOCKED
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0AAAAIZCAYAAACPlV/JAAAgAElEQVR4Aex9B9ccxbE2/+ie80kCIZJIFtlkBCYIk0SySQZjMBi4RgRjgzEZmZwMWCbYxgjQBYtskomywEKgiwQIEBeQEQLmO0+jZ1Tb2z3TuzX79s5u9TnvOz3dXbmqp2t7wgaFV/73f//Xa0k//b//+7/0wd7IXLAmr2eIitNcNtLQNftWGNTr0ug5F6zZ1zNixWkuG2nomn0rDOp1afScC9bs6xmx4jSXjTR0zb4VBvW6NHrOBdt2+27g2aBou0C+PHXnJm+dhtb35woyDV2z73r71dU0es4Fa/ats+r6/lw20tA1+663X11No+dcsGbfOquu789lIw1ds+96+9XVNHrOBdt2+1oCZDtedXFZ9ucKMg3dtgdoqfzEismbqKiiKDR+VQX71VdfFU899VTxq1/9qjjxxBOL/fbbr5g+fXrx//7f/7O/IdDBRhttVOy6667FkUceWZx99tnFfffdV6xcubLDcars2zEwcKKBtfgNKDTSpNFzLlizb8SYgeZcNtLQNfsGDBlp0ui5KVhLgCwBirhnd3NTTteNubpFQ9cmpGrdyl6NnnPBDpN9//3vfxcXXHBBsfnmm1uiMwSJTq8J5/HHH1889thjxdq1aweWHMt4C9WHyZ9D/IXaNLFv8oY0Gm7T6DkXrNk3bMtQay4baei23b6WAFkCFIrFYJsmUHLBtj1Ag4aoaDR5K5TjdTXlk59//nlxySWXlEnP5MmTi7322qu48MILi/vvv7946aWXik8++cSjbqe5NLBmzZrizTffLBYsWFDceOONxezZs4tp06aV9jv44IOL559/vm/2NH5l8Zuudo2ec8Gafc2+MQ3k8kkN3bb7syVAlgDF4rGrXRMouWDbHqBdRqhpMHlrFCS6m/DJJ554oth2223d4nnjjTcurrjiimLZsmWCilXboAHctnjPPfcUO+64Y5kIYTfvyy+/7Jl9jV9Z/KarW6PnXLBmX7NvTAO5fFJDt+3+bAmQJUCxeOxq1wRKLti2B2iXEWoaTN4aBYlurU8+/PDDbrE8adKk4vDDDy/effddgd2qbdUAEp+pU6c62x533HHFf/7zn55E0fiVxW+6qjV6zgVr9jX7xjSQyyc1dNvuz5YAWQIUi8eudk2g5IJte4B2GaGmweStUZDo1vjkvHnz3AJ5ypQpxZVXXimwWnUUNIBb5DbbbDNn46OOOqpYvXp1slgav7L4TVZztue0zL7pNjJ/TteVxq9ywbbdvpYAWQKUHKG5gkxDt+0BmmycdQNN3nSN9etX3PlB8nPVVVelE7SRrdKATIIOO+ywArfJpZR+/Qq4LX5TNPzdGI2ec8Gafc2+MQ3k8kkN3bb7syVAlgDF4rGrXRMouWDbHqBdRqhpMHlrFCS6+/HJFStWFEh8cNub7fwIZY5oFUnQpptu6naCsOuXUvrxK+K1+KUm6o8aPeeCNfvW25UjctlIQ9fsS+vVHzV6bgrWEiBLgOo9dd2IppwumWADdG1CSte22bdaV9gBOPTQQ91iGN+QsTIeGpg/f75LevFa7bfeeqtWaE0c2XxVq95ygEbPuWDNvqX5aiu5bKSha/atNWs5QKPnpmAtAbIEqHTIukpTTldHx+/X0LUJyddm/Fyj51ywE2lfPvez1VZbFZ9++mlckdYzcho44YQTXOKLj9rWvRlOEwsT6c/SSBqeNbAmr7RCdV2j51ywZt9qm8reXDbS0G27fTeA8PIPAsnzUa+bvJ32HzV7m33Nvk349JIlS9wCGLe/4RkgK+Olga+//rrYfvvty1vhmvCpEA6br2y+CvlFW9vMn82fh9l3bQfIdoCSVzJw5H5LLlhMwP2WXDxr6Jq86dbuRc+XXnqpW/ziFjgr46mBv/71r84HZsyYUbkL1Itf+Zq0+PU1Ej/X6DkXrNk3bk+/J5eNNHTNvr4V4+caPTcFawmQLZDjHur1NOV0HtraUw1dm5Bq1VsO0Og5F+xE2PfDDz8sd39efvnlUl9WGT8N7L777s4XHnjggajwmliYCH8OMa7hWQNr8oasEW7T6DkXrNk3bMtQay4baei23b6WAFkCFIrFYJsmUHLBtj1Ag4aoaDR5K5TjdaX65G9/+1u36MWrkK2MtwbkLtCaNWuCykj1qxCwxW9IK+E2jZ5zwZp9w7YMteaykYau2TdkyXCbRs9NwVoCZAlQ2DsDrU05XQB1ZZOGrk1Ilart6NToORfsoO27cuVK2/3p8BI74S7Qgw8+GFSGJhYG7c9Bhosi20dFTd6YRbrbNX6VC9bs223HWEsuG2nott2+lgBZAhSLx652TaDkgm17gHYZoabB5K1RkOhO8ckFCxa4BGj//fcXkFYdZw3cfffdzicOOeSQoBpS/CoIaB9Cjakl2K7Rcy5Ym5+Dpgw25rKRhq7ZN2jKYKNGz03BWgJkCVDQOUONTTldCHdVm4auTUhVmu3s0+g5F+yg7XvSSSe5xe4NN9zQqSw7G1sNfPbZZ8WGG27o/GL58uVdetDEwqD9uYvZdQ0anjWwJm/MIt3tGj3ngjX7dtsx1pLLRhq6bbevJUCWAMXisatdEyi5YNseoF1GqGkweWsUJLrrfBL9+Pjl5MmTC7wIoQ3lH//4R4FnllD+/e9/FzvuuKOTAXLw72c/+1nxn//8J0kc4Dj33HM7xn/yyScFcOAoy5/+9CfXHsMdggP+uXPnSjStqGNHEPoMvQyhzq+qBLT4rdJOZ59Gz7lgzb6dNqw6y2UjDV2zb5VFO/s0em4K1hIgS4A6vbLirCmnqyAR7NLQtQkpqNJgo0bPuWAHad/HHnvMLXJnzpwZ1NcwNsoEiPwhMcEfCpIQJEhIUtDGpAjHUGIUSoD4UggJiyTmwAMP7MCHftIFbckHeWtrAnTNNdc4WWfPnk1RyqMmFgbpzyWDgYqGZw2syRswRqRJo+dcsGbfiDEDzblspKHbdvtaAmQJUCAUw02aQMkF2/YADVsi3mryxnXj99T5JBICLOJ//etf+6BDd+4nMzL5QMKCxAhFJjQyIZHtUji/HTDQy8KFC8udJiRTaAMN/GGMX9DOBCvEK5MpJFH+zpKPaxjOP/roI7czCL59fuv8qop/i98q7XT2afScC9bs22nDqrNcNtLQNftWWbSzT6PnpmAtAbIEqNMrK86acroKEsEuDV2bkIIqDTZq9JwLdpD23WmnnVwC9M9//jOor2FsRKLBW+DAn0w8eM7+UAKE292YjPjHc845p+N2OCY7Pk3sBiFxYkH9gAMO6GiTfW28BQ78f//733e6euWVVyiOO2piYZD+3MGkd6LhWQNr8nqGqDjV6DkXrNm3wqBeVy4baei23b6WAFkC5IVh/FQTKLlg2x6gcWuEe0zesF5CrVU+uXr1are4nTJlSgh0aNtkMoKdiWOPPdYlHnLXBWNQQgmQ//yOvwMEWD8xip3LRAtwwAV+5I4J2tqaAB1xxBFOFw899FCHP1T5VcfAwInFb0ApkSaNnnPBmn0jxgw057KRhq7ZN2DISJNGz03BWgJkCVDEPbubm3K6bszVLRq6NiFV61b2avScC3ZQ9sXCHAv73XbbTapoKOu8Bc1PRJiAxJiWSRFgcYvaq6++2rHL4ydAIVwy6Qr1o43JGMaGnhWSvIOvNhTsiIHvq6++uoNdTSwMyp87GAycaHjWwJq8AWNEmjR6zgVr9o0YM9Ccy0Yaum23ryVAlgAFQjHcpAmUXLBtD9CwJeKtJm9cN35PlU8+/vjjbnGLHYs2FSQaSGS4y+InOUx0+BIEJhsy0UFbqB1jQm+Vk8mLX0cSxl0jPgMU0mdKEhWCy9k2b9485yMnnHBCBxtVftUxMHBi8RtQSqRJo+dcsGbfiDEDzblspKFr9g0YMtKk0XNTsJYAWQIUcc/u5qacrhtzdYuGrk1I1bqVvRo954IdlH3vuOMOt7i99NJLpYqGts7EZ8mSJV0JEJILlpREB8kRngXCWDmeOKqOfiJDXPPnz3c48d2cuh2gup2rKvoT2fevf/3L+cgOO+zQQVYTC4Py5w4GAycanjWwJm/AGJEmjZ5zwZp9I8YMNOeykYZu2+27AQRo6g+K7BdXLth++QVcLp41dE3edH/X6DkXrNm3Gfv+4he/cIvbBQsWBC5Vw9eEBAiJg0wwsONy2223uR0YciwTmthOD8fiKMfjHDT8XZ7YOXaLAO/jQVLEHSrXue5lDW1JfMgzjpMmTXL6WLp0aXnt08S+xW8z8VunR42NNLB1fFX1a+jmgq2Sp64vF88aunUyVfVr6OaCrZKnri8Xz5Ku7QDZDpC8nlfW4Tj9llywCMJ+Sy6eNXRN3nRrV+n5tNNOcwvbZ555Jh1hxpFINJBwYKell1vgZPISukXNT4AoInZ6Qq+s9neAOF7iQQIEWrzNDmNicIQf1uNmm23m/OTTTz8tWazyq3JQpGLxG1FMoFmj51ywZt+AISNNuWykoWv2jRgz0KzRc1OwlgDZAjngmuGmppwujD3eqqFrE1Jcr36PRs+5YAdl36OPPtotbPFSgDYU7J7gtjUkQaHEJCRDPztAEg9vu5O7ObFERiZAxIHdKcLG4Dh2WI8zZsxwfoKdNxZNLAzKn8lb7KjhWQNr8sYs0t2u0XMuWLNvtx1jLblspKHbdvtaAmQJUCweu9o1gZILtu0B2mWEmgaTt0ZBorvKJ/fff3+3sMWtTcNesKOCBIjJRMptanL3xZcPeORzOlVjAYvkRe4k4dwvoQTIpxOC8/EM2zneEgjZ33rrrZK1Kr8qB0UqFr8RxQSaNXrOBWv2DRgy0pTLRhq6Zt+IMQPNGj03BWsJkCVAAdcMNzXldGHs8VYNXZuQ4nr1ezR6zgU7KPvyI6grV6701WTnpoFSA/vtt59LgF5++eWyTRMLg/LnkrlIRcOzBtbkjRgk0KzRcy5Ys2/AkJGmXDbS0G27fS0BsgQoEo7dzZpAyQXb9gDttkJ1i8lbrR/ZW+WTm266qVvYfvnllxLE6qaBDg0ceuihzk+efvrpsr3Kr8pBkYrFb0QxgWaNnnPBmn0Dhow05bKRhq7ZN2LMQLNGz03BWgJkCVDANcNNTTldGHu8VUPXJqS4Xv0ejZ5zwQ7KvlOnTnUL27Vr1/pqsnPTQKmBI444wvnJk08+WbZpYmFQ/lwyF6loeNbAmrwRgwSaNXrOBWv2DRgy0pTLRhq6bbevJUCWAEXCsbtZEyi5YNseoN1WqG4xeav1I3urfHK77bZzC1s+VyPhrG4aoAYOOOAA5ycvvfQSm9znEcqTHisWv+kKq4rfOiy5YM2+dZZZ35/LRhq6Zt/19qurafTcFKwlQJYA1flp2d+U05UIEysaujYhJSq5KFQLN42NNLCDsu/MmTPdwnbZsmXpCrSRY6eBPfbYw/nJ4sWLS9mH0Z9L5iIVDc8a2EHFb0TMslnDswbW5C1NUFvR6DkXrNm31qzlgFw2knQtAbIEqHTIuop0nLqxfn8uWJuQfEvEz3PZSEN3UPadPXu2W9guWrQorrCaHrz5DK+llm9IY53f6pHfw+Fb0apeY403vMkPjPpvYAN+fs+H+EiTx5S3rZF3fyzeCOfzRzr+2+JwLnmlujgeuPlNIPImj4B94403Or4ZJMf7vEm8pIUjZSFun385ttf6Djvs0JUoD6M/18ml4VkDO6j4NXk7NaCxkQbW7Ntph6ozjZ5zwbbdvpYAWQJUFZMdfbmCTEO37QHaYYCEE5M3QUnrhlT51SmnnOIWts8991w6woqRWKwzMeEwLuaZOHABj4U62zgWR/QDB267wqIeBXhjC3rik4kC23xeJB3Ufd5kG/iTOMGL5Ilj8V0itPuykAeJAzBoP/bYY0vZiAe8Egf5Ag++3CG8gPOTMIwDThy1Zfr06c5PPv744xJVlV+VgyIVi9+IYgLNGj3ngjX7BgwZacplIw1ds2/EmIFmjZ6bgrUEyBKggGuGm5pyujD2eKuGrk1Icb36PRo954IdlH3nzJnjFraPPfaYr6a+zrHY95MOLua5uOcCHrs8/lgQxbi5c+d2JAnA6ycCZJD4/ETDp8vx/tHng/j8BA18+fwiKUICtHDhwi7+iMfnC+2pCRA/+goeWXy8ocSMY5s6brjhhs5P5NsCNbEwKH+uk1fDswbW5K2zzPp+jZ5zwZp919uvrpbLRhq6bbevJUCWANXFZdmvCZRcsG0P0FL5iRWTN1FRNc88XX/99W5he91116UjrBjZSwKEpAEJhUwQmBygTSYJOO81AQKbVXAUwx+Dc/B12223dSQ8SEJkIgJ4nCMx8pMS9IXa2C5lQ5ufrMlz4Je7Oz7eEF/A2VTB82FIBrELJItmrrP4lZqsrmv0nAvW7FttU9mby0YaumZfacHqukbPTcFaAmQJULWXit6mnE6gTKpq6NqElKRiN0ij51ywg7LvggUL3OL2xBNPTFdgxUgmD1jAs8jFPNrkAt7fVSH88uXLuxIgLMLlH2B9fKTJI3ZHkGyAZqxIfjAGeJFUSFjKAP5YACcTGcLJfiRtEgZ9PhzaiJ8yyXPWufsk+WWfT4M8NHF84IEHnN7xvJgsmlgYlD9L/kJ1Dc8aWJM3ZI1wm0bPuWDNvmFbhlpz2UhDt+32tQTIEqBQLAbbNIGSC7btARo0REWjyVuhHK+ryidff/11t7jde++9Paj+TpnAYGHOwkU6F/dyAS+TAY4DDtkOPGjrZwdIJjHkJ3TkTo7PAxOYEB5fVoyRzwhJOSVNXzb0kS515J8DN3aB0C/xchx4YUGdiaLcOWJ/r8cLL7zQ4bv44os7QKv8qmNg4MTiN6CUSJNGz7lgzb4RYwaac9lIQ9fsGzBkpEmj56ZgNwAi+QcDyvNRr5u8nfYfNXubfc2+/fg0b2+aNm1aZPrurdlPCgDNRToX93IBj37ewiWTDD9JAN5+EqAQPyGJwBt2WF599dWOHSMmRiE86GOiIY8xOUnXly2kI19nGAO8SGioCxxRyKM7Ef9CdER3cvXoo492ct59992NXTNtvrL5qp/5alhhzJ/Nn4fVN8GX7QDZDlDyBR8O02/JBYsJuN+Si2cNXZM33dp1et5qq63cAlfzKmxyE0oU/MW8nwAx8UECIpMHeXsZF/2A9YuPj/0+XbaHjuRh/vz5Hc/9UB68jIC8AR7j5W4PcWJM6FY19uMYSkx8Xv1zwLENdJkIoT2mmxAdyUdqfffdd3f+8fzzz3eA1PlVx2DvxOLXU0jFqUbPuWDNvhUG9bpy2UhD1+zrGbHiVKPnpmAtAbIFcoWLdnY15XSdWOvPNHRtQqrXL0do9JwLdpD25S/8V111FVXU95EJAxbrLFy4M4HwExb2y9u1/MV7bJEPGj4+2YbdkZRCHrCTQz4Bx0TnmGOO6XhttUx0JH6MZ3IS4gtjfdnQRvqk7Z+TBvGDT+iEBXL6O2QhOhyfesRb36ZMmeISIDyXJYsmFgbpz5JHv67hWQNr8vqWiJ9r9JwL1uwbt6ffk8tGGrptt68lQJYA+XEYPdcESi7Ytgdo1BiRDpM3ophAc51P3n///W6Be9BBBwWge2vqJwECBcDJZMVfvKNf3maGOhf8TDT8fpkgpEiB5EMmYYBhIkJaso3JisTN8ZCFfPl8+LKFcBJPiAba/AQIONgu9SB1KvlMreNNeMC35557doHU+VUXgGiw+BXKqKlq9JwL1uxbY1TRnctGGrpmX2HAmqpGz03BWgJkCVCNm67vbsrp1mNMq2no2oSUpmOM0ug5F+wg7Ytf9rHIxbdesPC2YhqgBg4//HDnG7fccgubyqMmFgbpzyWDgYqGZw2syRswRqRJo+dcsGbfiDEDzblspKHbdvtaAmQJUCAUw02aQMkF2/YADVsi3mryxnXj96T45MEHH+wWuvfcc48PbudjrIHNN9/c+cXixYu7tJDiV11A6xosfmOa6W7X6DkXrNm3246xllw20tA1+8as2d2u0XNTsJYAWQLU7ZmRlqacLoI+2qyhaxNSVK1dHRo954IdtH3nzZvnFrr+t166lNfShtDtYaHbyFoq3kDYfuSRR5xP7LbbbsU333zTRUMTC4P25y5m1zVoeNbAmrwxi3S3a/ScC9bs223HWEsuG2nott2+lgBZAhSLx652TaDkgm17gHYZoabB5K1RkOhO8cmlS5e6xe7UqVOL999/X0BbdVw1wNvfrr322qAKUvwqCFgUhcVvTDPd7Ro954I1+3bbMdaSy0YaumbfmDW72zV6bgrWEiBLgLo9M9LSlNNF0EebNXRtQoqqtatDo+dcsBNh31NOOcUlQT/5yU+6dGYN46WBl19+uXz72wcffBAUXhMLE+HPIaY1PGtgTd6QNcJtGj3ngjX7hm0Zas1lIw3dttvXEiBLgEKxGGzTBEou2LYHaNAQFY0mb4VyvK5Un3zrrbdsF8jT3bieHnbYYc4Xqt4il+pXIR1a/Ia0Em7T6DkXrNk3bMtQay4baeiafUOWDLdp9NwUrCVAlgCFvTPQ2pTTBVBXNmno2oRUqdqOTo2ec8FOlH1tF6jDVcby5JVXXqnd/YFiNLEwUf7sG1DDswbW5PUtET/X6DkXrNk3bk+/J5eNNHTbbl9LgCwB8uMweq4JlFywbQ/QqDEiHSZvRDGB5l58Uu4CvfnmmwFs1jTqGpg1a1bt7g900Itf+Tqz+PU1Ej/X6DkXrNk3bk+/J5eNNHTNvr4V4+caPTcFawmQJUBxD/V6mnI6D23tqYauTUi16i0HaPScC3Yi7XvWWWe5BfDMmTNLnVllPDSAFx7g7XjTp093H3KtkloTCxPpz1IGDc8aWJNXWqG6rtFzLlizb7VNZW8uG2nott2+lgBZAiRjsLKuCZRcsG0P0EqDBDpN3oBSIk29+uTnn39e7LDDDm4hfP7550ewWvOoaQDf+tl4442d3RcuXFgrXq9+JRFa/EptVNc1es4Fa/attqnszWUjDV2zr7RgdV2j56ZgLQGyBKjaS0VvU04nUCZVNXRtQkpSsRuk0XMu2Im273PPPecWwhtttFHx9NNPpyvXRrZSA/jOz5577ulsjh3Ab7/9tlYOTSxMtD9TGA3PGliTlxaoP2r0nAvW7FtvV47IZSMN3bbbdwMIL/8gkDwf9brJ22n/UbO32dfs27RP/+pXv3IL4mnTphWPPfYYr192HDENfPHFF8W+++7rbL399tsXK1asGPi10eYrm6+anq9y4jN/Nn/O6X91tG0HyHaAkpctcKZ+Sy5YTMD9llw8a+iavOnW7lfPa9asKX7605+6hTFujZo/f346URvZCg18/PHHxe677+5svN122xXvvvtuMt/9+hUIWPwmq1n1sgmNjTSwZl+zb0wDGr/KBdt2f7YEyBbIsXjsas8VZBq6bQ/QLiPUNJi8NQoS3Rq/+uijj4rzzjvPLZA33HDD4rTTThOYrdpmDfz5z38uttpqK2fbXXbZpXj//fd7EkfjVxa/6arW6DkXrNnX7BvTQC6f1NBtuz9bAmQJUCweu9o1gZILtu0B2mWEmgaTt0ZBolvrk2vXri0uv/xyt1DGG8K+//3vF88//7ygYNU2aQC3uB199NHFpEmTnE1x+9snn3zSswgav7L4TVe3Rs+5YM2+Zt+YBnL5pIZu2/3ZEiBLgGLx2NWuCZRcsG0P0C4j1DSYvDUKEt1N+SQ+kHnAAQe4RTMWzzvvvHNx+umnF3hhwurVqwVFqw6bBpYtW1Zcc801zn5TpkxxNsSzXXfddVeBWx37KRq/svhN17hGz7lgzb5m35gGcvmkhm7b/dkSIEuAYvHY1a4JlFywbQ/QLiPUNJi8NQoS3U365FdffVU8+OCD5RvDsCPEv80226zArVT77LPPSPzhDXiQadttt3WvBd9tt92KvffeuzWy4a1u22yzTbnTI+107rnnFitXrsz2fInFrwjQmmqT8VtDqqNbQ9fs26HKyhONnnPBmn0rTdrRmctGkq4lQJYAdThl1Yl0nKpxob5csDYhhawRbstlIw3dYbMvXpv82muvuVvjdtppp4K7Clxk23F9YjgMusCzPnihxRNPPFF8+eWXZWBofFIDO2z+XCqkomLyVijH6zL7egqpONX4VS5Ys2+FQb2uXDaSdC0BsgTIc8v4qXSc+KhwTy5Ym5DC9gi15rKRhu6w2xffjVm1alXx9ttvu8QIydE//vGPso7zXv7w2u1exsuxpDt37txydyolCTnwwAOLe++919HF7X4PPfRQcd1117nb/HDr34wZM4rJkycHcWKnaP/99y/OPvvs4pZbbinwIVHJU129CXl9Gv/617/ciw2qbnHT+KQGdtj9uel5w+QNaTTcpvGrXLBm37AtQ625bKSh23b7WgJkCVAoFoNtmkDJBdv2AA0aoqLR5K1QjteVyyc1dPux73vvvecSmDPPPLM45JBDii233DKYrPjJEG7bQ7KDUsczkjzsoiAxOvnkk93tcHhFuI8T5/imzhlnnFHMmzfPJUNViUg/8tLMdTxzXOiYC9bkDVkj3JbLRhq6Zt+wLUOtGj3ngjX7hiwZbstlI0nXEiBLgMLeGWiVjhPormzKBWsTUqVZOjpz2UhD1+zbYUJ3G9fTTz9dXHbZZcUxxxxTfO973wsmIbEdGyQom2yySXHzzTcX//nPf0rk/dgItwMuXry4uP3224uzzjrL7QThBQN+UoRnig499NDiqquucjtEH3zwQUnX7FuqorbSj42INBes2ZcWqD/mspGGrtm33q4c0Y+e8bwifni68MIL3Rss8VymP7+O+jl+aMOdCLjL4J577nHfbMMzubEi9WwJkCVAMT/papeO09VZ05AL1ibgGsOI7lw20tAdd/suWbKkuPPOO913iPAigtAzR3jo/4ILLij+9Kc/FW+88UbxxRdfFEcddVTwQolEBd848ovGRhIWSRFuo7v++uuLk046qdh11127XkaAC/YOO+xQzJkzx72Nrdfv8K7tj0IAACAASURBVJB3SZdtqcdcsOPuz6n2wbhcNtLQNfumW1ij51ywE2VfzOMHH3xwcA4f9YQnRT7c5fD73/8++BZW6RuWAFkClDwjScdJBlo3MBfsRE1Ivj5MXl8j8XONrsbNvo8++mhx5ZVXFrNnzw7eyoZnbo477jj3vA2e+ZG6lXXsEMkLyaxZs4rXX389aiQJGx0U6aiD/fzzzws86/PrX/+6OOKII9wb2iRvqO+xxx7FxRdfXDz55JPBBC1Euo5uCIZtuWDHzZ9NXnpc/TGXT2romn3r7coRKXrGZxXOP//8cu7GR7hxqzJuKf7jH/9Y4LX+41agk6eeeqq44oorisMOO6yYPn16qR/cbv3CCy90qETq2RIgS4A6nKPqRDpO1bhQXy5Ym4BD1gi35bKRhu6o2xcP7OOXLHygM/TsDnZ9LrroIvesDl60gB2WWJF6RnKExAIXiL/97W+VcMAnYWP4Y+39wGJn64YbbnAXNLyy2k+IcMsDPkILOT799NMg6X7oElEu2FH3Z+qXR5OXmqg/5vJJDV2zb71dOaJOz1jo42PbmAtx29ePfvSjQqNf0h3F49133+1ezsPrBr7rxiL1bAmQJUD0i9qjdJzawd6AXLCaCSIXzxq6Jq/neBWnGj0PChbPzNx0003R+7nxLSF8uPPZZ58tPvvsswrpurskz7hHGreh4Xa4lCJhU8bLMRpY+jNu+bj66quLww8/vOMXPlzgcNsf2nHRW7p0aUlaQzcXLOUtheihkotnDV2TN93AGj3ngjX7NmNfvKIftwtjvsMzmv/+97/TEY/xSHzigEkQXrqDImPBEiBLgJLDQzpOMtC6gblgbQJOt1QuG2nott2+eHvafffd525b22677crJmpP2zJkzi0svvbTAiw0wtu3ypnvjdyND8mKX6/nnn3e3xB100EFuQUB94QidIbnDmLVr1/ZK0o3X+KQGNiRvqgAaurlgTd5U63Yu3NKhvhtp9k3XmEZXg/BnzGF77bWXuzbgpTbYCbKSrgH8cDZp0iSnvwceeKAzAYKx5R8MKM9HvW7ydtp/1Oxt9jX7DptPY2F+ySWXFPvtt1/XSwtwi8O5555bPPzwwwVuA/N5N3/u9me8NQ5v/8EtIVtvvXVHEolvFOFlCo8//niBcb4+h+3c7Ntt32GzkYYfs6/Zt1f/4S4Gnu+00p8GbrvtNnddQCKEZ11pA9sBsh2gZI+C0/RbcsHigtNvycWzhq7Jm25tjZ57gcUveAsWLChwIdt5553LX6OwW4GHWE888UT3HA5shw+nVhWzb5V2CvcsE14Li4eC8SY5uTO0+eabF/gWEm4flK/4DmHsxb4+vAbW7OtrM36u0XMuWLNv3J5+Ty4baeg2bV9cNzCHYeHuP8zv68vOqzVw+umnO13iNnJeZy0BsgVytdeIXs3EkAu26QlJqKOyavJWqqejU6OrYbUvHsy/44473Pdt8MudXIhjYY4XF2AnKPUZHCpsWOUlf6FjTvv+85//LM477zz3FjneBgFbbLXVVu4WukWLFpUXQ8m7hmcNrNlXWqG6rtFzLlizb7VNZW8uG2noNmlf/EiDH20wX+FTB1b0GsAPkNDntdde65BZAmQJULJXaSaGXLBNTkjJivIetOsFDmM1ujJ507Wt0XMIFvdm40H8Qw45pMDHPWXSg4f08ZpSPLyKZ3n6LWbfdM35NsIthb/97W+L3XbbrcM2+EUQdluxYkWJ3IctOxIqGlizb4KC1w3R6DkXrNnX7BvTgO+TvG0L1xPuWMRgrT1NA3iWFtdlvFn066+/LiwBsgQozXOUC3M/uJOJKunaBSdd07lspKGb2754mxqeP0GCg1eTyqTnlFNOKRYuXNj13Zo2y5vuTetHDqO82H079dRTu14tjm8o4XkhmQytlyStNozy1nGu4VkDmzt+6/QS6jd5Q1oJt5l9w3oJtfp+teOOO7rrCb5xY6UZDSCR/OEPf+j0iuu2JUCWACV7lh+gyYDKJEZD1ybgdCtp9JwLNpd9sWOAj3ZuuummHUkPFtV4BqVKH1V9ddbKJa+GZw3soOXF62XvvffeAm+Tmzp1amlL3HqCD7PK12rX2Yb9wywvefSPGp41sIO2ry8nzzU8a2BNXlqg/qjRcy7YpuyLt5Xhx7SDDz44y+4PvxPHH/Rwjt1znssj+mLlT3/6U/Gzn/2s9pnLGPwg2vExbfCPOwEsAbIEKNnHck0qGrpNTUjJSlo3UMOzBtbkTbdUr3p+7bXXihNOOKHrOzSY4DGppuJLHReSxOwb0kq4rVc94y1xF198cfmxQV7k8ZKKV155xd0yEabU2dorXQlt9pXaqK5r9JwL1uxbbVPZm8tGGrpN2Ze7FNiNzlGY8OA5JLyVFLduIwHykx3ZhmSHc2bdEbtbub5lhF2gWbNmOV4tAbIEKDm+NBNDLtimJqRkJa0baPKma0yjq4mw7+23317svffeHW9vO/nkk923eXr9GCm0Muzyhiyn4VkDOxH2Dcn76KOPuo/Rytsa99133+Khhx6q/Q5HG+XV8KyBzWVfDc8aWJM3FG3hNo2ec8E2Yd/33nuvmDx5coFX+OObZzkKEyAkKUiAkAjJZIc8yTYkQPhD+eSTT9zOD44owDN37lxXl0mVa8jwDy8oQpJmCZAlQMnul2tS0dBtYkJKVpAYqOFZA2vyCiPUVKv0jF/88V2ZLbbYovxVa5dddnEPy3/44YeqJKaKbg3L9iHUOgWJfo2eCfv++++7BcC2225b+gEeoMUDyitXrhTU1lcJu74lvWbxm64rjZ5zwZp9zb4xDdAnb731VjfXnHbaabGhA29nAoSEhrs+MtkhA7INyc6BBx5YzpNVu0C5b4tDQmYJUFHYgoKenHBkgCYM7RqSC9YuOF2miDbkspGGbtP2veWWW9xXt+Urk/FcD16nLN/Eo+FZA9u0vFFn8Do0PGtgh0VevOwCr6Ldc889yws83vSHV2z7PI6CvJ75K09N3kr1dHT6vtLRWXOi0XMuWJO3xqiimzZiEoHngHIVJD3Y+UGCw10c1ENJDRMkyWvVDpAcl7OOHzRtB8h2gJJ9kAGaDCAG5oK1CVgYoaaay0Yauk3YFw/C49kP/LLPCR7f6sGtb3guJFQ0PGtgm5A3JE9dm4ZnDewwyosL/tFHH11Mmzat9BcsFsjrqMk7SN+gzupohPo1es4Fa/KGLBluy2UjDV2tfUGb1yB8Sy5XwRyHhEfe1iZ3e8iX3xZLkigTj7xVjnhyHC+44AJLgLQO26/hNEGmgTV50y2m0XMuWLNvun3ffPPNAq+q3mSTTcqLzrHHHtu12xPCaPYNaSXcptFVGKO1mgbyaUDjzzY/p9tNo+dcsFr7vvTSS+5ahN2JnIUJkNzJ8ZMd8BdqQ7uEw7l8BiinXJL2/fffbwmQ1mGlQnuptzVAe5FRjjV5pTaq6xpdmT9X6xa9eJsbPi4nb3M788wze3orjcZGGthxs2+9NW2EaWBiNWDxm67vcZuvtPLOmzfPJUB422jOwgRIvrAgtruDsSixfu76+EfC5ZJz0aJFlgBpHbZf42kmUQ2syZtuMY2ec8GafeP2xfd59ttvv3K3BxPyJZdcUuCtO70Ws2+6xjS6SqdiI00DE6MBjT/b/JxuI42ec8Fq7XvRRRe569MVV1yRrqgBjIwlQH7SEtoBwhhcW3GUb5HDbW+5X34gVYXnOu0ZIHsGSPpEZT3XpKKhq52QKhVS0anhWQNr8nYbZcmSJcX+++9fJj54eP3mm28u3nnnne7BiS0aG2lgx82+ieawYaaBCdOAxW+6qsdtvtLKi2cLkTzgdfs5C5MY8MKkJZTssA07RRiH8WhDsoO6/4e3Z+IbQGgfhueANoDBmvrDxNAvrlyw/fILuFw8a+iavOn+rtFzLliz73r7vvXWW8WRRx5ZTsIbbrihe7EB2i1+1+spxWe0/pzzYq6hjV8wecHmxdy/cGOxwEVCiBbuh8ebnTBuUEUuQHw6TdCHHg444ICO20S5SEr9qCEWRvJvULoYNF5NLKTEWmyMhm4u2JgsKe25eNbQTZErNgZ099lnH3e9wltHcxbENmJVFpz7c0uoTcLIHSDZPix12wGyHaBkX0SA9ltywWKy6bdoeO6XpsGZBqo0kMufNbGgga3SxaD7uMCXF30mE3JxgP6JSICqbiGRCRCSLfDJQp6lHOyLHX1afgLUK07Qps7Iay/8xPjM0a7x53GLX5M33UPhV7vvvrtLgPAjXc4i4xV1/vgTOyK2OSfExsh2zgU5ZQRtS4AyLZA1k6gG1iak9JDT6Dmdio00DaRrYNziN10zzY7kxTy0SPf7MKYqAWqKMz8pkXiZVOB13NiRkQsMn18JF6tX0QKMnxDF8KAdvIEvwLDIBRbb2nLUXBfGLX5N3nSvhl9tt912LtlYsWJFOqCN7FsDlgBZApTsPJqJPxdsrgk4Wak20DTQgwZy+XOu+O1BNY0OrUtqkGAwyeDYhQsXlr+Uyl0YJCB4vbpMAJBg8BdRORZCYBxvu2MfaHE8joCXhQkQ2vEnb0sLJUBsI07SAc4QLZnwQF7C4XjSSSe5Z+wkT5IfwCIBQhsL6CNpxLFtRRML4xa/4yrv6tWr3ct1li5dWixevLh49dVXixdeeKF45plnCswTjzzySIEPnd57773FXXfdVeDZmMcee6zYfPPNXWx99tlnbQuLVvJrCZAlQMmOq5n4c8HmmoCTlWoDTQM9aCCXP+eK3x5U0+hQLOaZ4IQQo5+7PkwI5HjU2Y9FvkyAACsTjhAu4EQBLBZMKHKcaxD/ZMLBuqQPehInzoGPpYonjJEJUOjc5w3jITP4B12pG8CTR/JEPtpw1MTCuMXvKMn7zTffOH/G7WnPPvts8eCDD7pnSn/3u98VZ5xxRjF79uzi+9//frHZZpt1/EAgfyyoqp9//vnFlClTHOzXX3/dhlBoPY+WAFkClOzEmok/F2yuCThFqbj4xyZELBj8hVMKzqbHgA+5UKrDP9E8cyEFHqFPLvrq+NT2S7paXL3A5/LnXPHbi26aHAt/8hftEr/sh9/JhAbjZMIgYwJ1mYxwLJOFqngDzZh/+/4I+tgFAoxPM4SH8ExI/DFSHvIsX4rg9wOe+kMdf35BP+n5fcN8romFcYvfNsqLeMEbQvHDwy233FKcddZZxQ9+8INi6tSp0eu1fx2fNm2au50NCdFee+3lPr8wa9as4vDDDy/wprfjjjuuOPnkk4vTTjut+MUvfuF2SP/yl7+UNL744othDoGR4c0SIEuAkp1ZM/Hngs01AScrdd1AuWAgrFw4sW2ij1ULshAvE82zXFxNZAIE2SdaVtDM5c+54jfkYxPRVudLiAsu8ENjpW/4dSRA/oIJycrrr7/uEpxYUgBfT02AoCOMB17gk0lXaK5hAoQ+wkpafoLjnwOGc4WUl7iI1yFf9w/jY7LKccNW18TCuMXvMMuLHR3covb3v//dJTpIRPbdd98Cbwv14xPnuD1tjz32KH74wx8W+FApEiP48K233up2g55//nm3M4Tb3/opH3/8cbkD9MEHH/SDwmB61IAlQJYAJbuMZuLPBZtrAk5W6rqBoUWJv5DoFWcT47moScU1kTyDFhZpOKKEFqKpfPc7DnYLLe76xVcHl8ufc8VvnT4G1Q+fkkmDpOP7eMjvkCBwV0eOr8LrJyGSJurwM5mUyP4QLNuwU8NEKIaHY5mQ+LT8hMc/B17qAb+cSz7RjnlEFp+e7Bv2uiYWxi1+h0netWvXFq+88krxhz/8wT23Nn369GCig1vY8N24U089tbjmmmvcszmpLyXQyHv55ZeX/ODbdf0WxpZM4jCXYe5h8eOb7TwivjFnSByx65w/VsZ+iA7mAuAGHOYGSQN1wof6fDnIb79HS4AsAUr2Hc3EnwtWMyFpeE5W6rqBmCj8RQIXTpgIEPiYHDhxAIz98+fPd+2cOLjI4sQiJ66qPuDEWMIBHx5elvBSLjmWY8gTJjcWOc6fwOQkJ2XjJM7FFHkiHeAGrNQZzqkD9BMHYSV+9AMX4CV/Ej/GoJ/wqHM8+lAgp/+A97qugRxy+bMmFjSwA1FiIlL6Jo4sjB/4AQvH0XfodxzjxwTapZ/Ch+bOnevQAZf0U8DGngECHMYChjTJA3njGPgw5aAMcizqkif/HHiqbnkDPfCAWMA40kI7YP0YAQ+gh2Pbisafxy1+c8qL28iwK4OPXuN7cLgtjXM5jnjeZubMmcUpp5xSXHXVVcX//M//FMuXL3ffd+zXJ/uVF3HAFyCAt5dffrlfFoJzgT/n+PEtiSF25XyBPs4ZnNM4HnjkfIV2wKMdxaeDc7kGwFh5TrzE4/eRN+KX4/upWwJkCVCy32gm/lyw/U5IUIqG52SlrhuIgPYnF046nAS4yOE49suFC9s4QfAcEwcK3jaDNhS0yckrNDlhIiQuB7Tunz9xYZEGvPjr5YFvSV/ipKyyn4s5ygK+JG9opy4IT13F5JXyAV7SS9GHL6/U0SDqufxZEwsa2EHosBec9Dn4Cf/of8RDv0NscQz9EGNCPgK/DI3FeOBjH2OfeHCOPvgmecN4+ruMB/KHNsBIvsETcaFP8hujVZcAAc6PGbSBNyRA4JeFOkNf24rGn8ctfidSXrw4AIkDdlLwvA1fKMBYwq1t++23XzFnzpxiwYIFRew5mxz2xQsQyCeOjz76aN9hEZoL/HhDnPoxD4KcF+RcQUb8PoyR10uOk0dJJzQebXKOk7CxPswjci6SML3WLQGyBCjZZzQTQy7YiZyAkxUZGIiJQi7WMcSfcNCGSYETV6hfTjgkA7xo9wvgmaxw0gR+WWKwGBea/CTOEH+YvEATtxRADsmXhCU/sh98gR/qCUfJr9QN6qGJVcrj64o0ASvr1AfbJE9o8xd3HD+IYy5/zhW/g9DhRONs8oI90bz3Sk/Gp4RFTDFuGUdoa2PRxMK4xe+g5cVtbdjlueCCC4rtt9++I4nYeOON3TUAyQVeMQ2/SykTbd9ly5aVLz9gEsQd4RR+/TGML16n/HOM9699xIGY5PqCbfIo41vW5RhZJx28BhzrBT/mcR66TgNHVV8KbclHqI5nwCwBsgQo5BvBNs3EkAt20BNwUFF9NGKi4AKB4DIhYJucoEL9wMNJVB6JG0fZjjpwhnCBJsYDZ6hIWsCBIvGgLn9lJl1MhHzgm23yCFyctImX9KWewJvsR52Tt6wTFkfA4A9F4sK5pCnlcIPX/fP1ARhLgKSGuuua2O/G1r4W+Bn9sn3cp3Ncl+gx9nhMxzxcIzX+nOt6pOFZAzsIedesWeO+p/Pf//3fxTbbbFNezyZNmlTsvvvu5Q4PxvVTJlpevBFOXv9Qx3zRb+F1TOL055/YnORfE30eCIfrI3DK668/FucYj92aUPKDfsBLPlEHDPtiyVEdnw5Bzb+3337bEqBBBGiN3l23Jsg0sCZvinW+G6PRczqV70aGAjq0CJcL+1A/8PiTHXkBrJxQAI9ztMs6x3Mi5YTEdv8IeO4GSZ5COAlbh5v9wC2LTEDAl+QNYyk76lJW4vDhcc4iaYZ4Z7+kKeUlnkEexy1+B6nLQeOGn+CCztgYNL1c+BkXkNWP11w8DZKu5rowbvHblLzwsccff9x9b0c+KzN58uRi7733Li655JJi0aJFpdk1NtLA9irvc88915UAII4gU7+F8SivU6jL6yHOea2UdNAur4myD3X2k0ZdvGM85j8kQSF6ses0aFX1kQ+fv17OH3roIUuAenVYqWBNoOSCNXmlBavrGhtVY+7uDQV0aHGNSYETSagfv8L6v7ZgOx3t/oQCmnLRgomPuMEh+3FEkf148QJwokg+ZN2HwTlguL0PvHJSBixoYHLlBCv7wb9cTOJcTtZSN4T3+yU+0Jf9hAGeEO++PiiP/4C3Ax7Qv3GL3wGp0dCaBvrWgOa6MG7xq5UXv9JffPHFhXxjG57twXd5rr766gL9oaKxkQa2V3nxtjlcg/0/yPjVV1+FRKtt43WM120AsI3XNvTJaz2Rymso2+QR10teM3GUNOQ41kkHL5fAtZew7Ac9eU1mO45VfSm0Ja5QHc+K2S1wdgtcyDeCbZqJIRdsrxOSFFzDs8STUsdE4U8OfjIBPHKCCvVjDJMgTqqAYQENtiMRweTDfk6S7MdYOdGgzkkTtAHLsZwIQzxJmoQnP4AjDjkRkhckWqQjkx/Agxbw4YgidYNz4gjhR7+vc46P6YPjKWsIB9oGWXL5syYWNLCD1KXhNg30owGNP49b/PYjL15m8OSTTxZHHXVUeW3ATs9BBx1U3HjjjcV7771XazaNjTSwvch7//33l/LxGiWPTzzxRK2coQG8jsnrFK/XvLahz78WA5c/TuJHH58ZRjtwyWu2HMu6pMN1ieSrCkesD3iaeAkCcGwAY8s/GFCej3rd5O20/6jZuwn7MpjtOHEa4CTOCTtGGZOpnFBj45po93nyLwhN0AjhkDHZhD9LfBNVD8llbaaBNmpAEzNtjd9+Ze5FXuzmIMHZaaedysQAt7udfPLJxYsvvtiKdWmqvCtXrixmzJhRyikTH9bx8oZ+Cq9T8rqIukxWcB5KgEAP11zwIK+9TIzwYyYL6Ui8hCdtn46PG+c+PPGH+nx4ju31+NFHHzkZbQfIdoCSfQeTYL8lFywmpH6Lhud+aRrcdxrg5IoJr6pwHCfcqrG99gGnpI9zTtaDpFvFZy5/1sSCBrZKF0308VdJLjpw9H0JPhBbLIAHLg6krzTBm8RBf/MXJk3RD/2qCnlAz995lXzJOnkM6cr/sQA6losp4MG5/JO4h6mu8edxi986eb/99tsCbwg788wzy2QALzPAMzDXX3998eWXX/Zleo2NNLB18lKYK6+8spRXzj2yvueee3J4T0fGocTF6xYRIf5kP+oybkPzYmx+83HJuEafxAv6HI8j5xjJC3mt6qMc/R7/+te/OvktAcq0QNYEmQY2NUBDjqWhmws2l7wh/VlbugY4iccm3XRM/Y8kD5ycOTH3j1EPmcufc8WvXmNxDLzASh9jMiMv4uj3L+ISK2EkHtmfWg8tFggrfdH3w37oM9Egfj8B6gcncBxzzDHB21OAT94+A1l9HfOcsmr1SdmaPmpiYdziNyYvXkH87LPPutvaOL/iOz14IxrtrtFzLtiYvNIHsfsjn2mi/PK45ZZbugX64sWLJajVG9LASSedZAkQdJnisDGd5woyDV2TN2bN7naNnruxWYtpQK+BcYtfvcbCGKoW+H5fXQIUptB7a0oChBduYEeGyQKo+PymUPYTIB/GT4j8/tA5+GdiI/nD2KoECAmP/yp56NzHEaKZo01zXRi3+PXlxY7PCy+8UBx66KHlDgRuebviiisKJAayaPScC9aXV8oj659//nmBN8Ddeuut5a1w2PliErTHHnu4+oknnijBrN6ABvC2QOh5iy22sJcgpDpsSO+5gkxD1+QNWTLcptFzGKO1mgZ0Ghi3+NVpKw5dl9TIBIFjFy5cWC5Q5C6Mv7gHVSQCXMzIseiTt5ewD/Q4HkfAy8JdESYZ8ra0UAIEniU+JhPEI/swViY8Pix+LcXbqiRPxMM2qQPAUy7KIPvRBjjyBNr+mxQxHrtuOA5b0VwXxi1+KS8Sn1deeaXjxQb4cOntt98eNa9Gz7lgKW9UqEDHdttt52L1jTfecM863XHHHcVvfvObYpNNNnHt+GaeleY0cPzxxzu9XnbZZZYA9eOwNEWuINPQNXlpvfqjRs/12G2EaaB3DYxb/PauoTQIuQAPQaCft70xIeCCHeNRZ39ocS8TgBAu4EQBLBIrFDnONYh/MuFgXdIHPeLEUSZIHO/zL89lAgSy/rnPG/pxSxsTFNAkP6RHfoAvpCPSxzjWKXIIB/tyHzXXhXGLX8iLhb382Cc+XnrdddfVmlGj51ywvdp36dKlbjG+8847u5c8SKVcdNFFru/HP/6xbLa6QgN43gw//my00UZuTrJngOwZoGR3yjWpaOj2OiFJZWjoSjz91LHAwCJG/lKLRYgsctEh21nHokMujNg+jEd/gRXjETJzcQkYf+EUg9O2S7paXBr4XP6siQUNrEZXVbB1viP7Q7aXCYJc3IdiTiYL8FfgDhW0M4nw+5kQEJbzA84lTX8c8Uge0AY+ZOxIedBfdw66Et6Xy5dF6gj4JTzq+PMLcEL3w1Y0/jxO8fvmm2+6JJnXMNxydOmllxZ4zXVK0eg5F2yv9sUOGPRzzjnndCVAuCWQt8Xho51W9BrAq6+h7zlz5jhklgBZApTsVbkmFQ3dXickqQwNXYmn1zou+ghSefHnIkcuOtAfWzCBJmEknl55wXh/MdMPjjoYn4Z/DnjIA3lxRMEYqY86Gtr+iaYX4jeXP2tiQQMb0kETbXWxA7+ib4XGwgf5UL9fR4LORR+P+DEDt7LAf2PxGPJ5yhpKbDAeeIGPP3RwnE/DT2ikfKDh9/vnGAMY0JTyoh3nMZmBh2OoL5zLWEIdf34BPV8Of0yOc40/j0P8fvjhh8Xpp59exsC0adPcLY5ffPFFT+bS6DkXbK/25cP4f/7zn7sSICjrnnvucXpEIoQ4s9K/BvBBXczHmDPxEg4US4AsAUr2qFyTioZurxOSVIaGrsTTS52LidCF3+/DmKoEqBe6VWOxOJkIOpKHEE1/oYRzLlIl7KDq0L9MwAZFpwpvLn/WxIIGtkoXmj4/liQu9MnFeijOsLDnLWByfBVeJifw21AJ+TzHhWDZhl81mQixzach+QXOfhIg6gG37Mn5IMS3z4fUEegDhrELvKz78qJv2IrGn0c5frGofOCBB8rEZ8qUKe7Wt48//rgvE2r0nAu2V/vy+Z8lS5YEEyA8O/WjH/3I6XTWrFl96dGACvdsFXfTnn766VIllgBZAlQ6Q10l16SiodvrhCR1oKEr8fRS5yIDC4hQce5oKAAAIABJREFUkQsXjs35cLbkB/xiYcNb1HAeWnjxV/HYIgo4OQZH4IQ+/DdFyUUUaEEfEk4uqrgAwxj+Wi35JK9YSAIHjvPnzy8XuehHAU7gyFVy+bMmFjSwg9Qz/UXakwmM9B2Og7+hcHHPMfQt7nagXfo22ufOnetggQu+xbGAjT0DhDEpiQ19lnL4NMgv+Qcj4JH84xy05NfV/XPKjRjEONIK4XaCenOBryMZu6BlL0Gg1uJHTRwNGvatt94qDj74YDd3YqF52GGHFcuXL7e37MbN6WIO1xo8E4USsxFijIkSPgprpTcNPPPMM8XUqVOdb+Kte1LPlgBZApTsTdJxkoHWDcwFm2vB2Kt+OF4uDNgmj+jn4gqLEEygciEjF1+hRYdc9IdwcWFTtTCT/GA8+UE7FnpygSTlwViJH7ygH0XyEjoHP6CDI4uPWy4suTCjbgAHepQ/1k9+2M/xIZpsm8hjLn/OFb+D1i2TDJk400dJmz5+2223uXjDWOnz8C25YwQ4+B1xyrHoAz72Sf+ij6IPfkjeMJ7+SP8kbziiDTCSb0mD+CQMcRMO53UJEGlJnn24EA3w4usIPDM2IZv/4wZgfL1J3DnrmlgYtfj96quvCrxNC36EvxkzZhR/+9vfSvOMmrylYJFKL/JyPmFSU+VXwLvVVls5He+3334di/gIK9ZcFO5lG9iJhG/iFjjsUko9WwJkCVByoEjHSQZaNzAXbC8Tki+ThmcfV+q5XBiEYGQ/FglyMYLxckEiFx1cXAGGBWN5Gw8WI8AdKmiPLUZ8GsCDiZ24cC5pSvySpk/DPwev/q/EGAMcscWhlC8kv1xkyTp5RJuvX7SBZq6Sy581saCBzaXnXujKmOsFro1j4fuD8H8ZV4xntA1j0fjzKMXvSy+9VOywww5ucTl58uTitNNO6zLXKMnbJVygoRd5+Trmu+++22Gq86t33nmn4AdSN9tss3JXOcDG2DfhlkLsSPK2N7xRj8/9SD1bAmQJUHKwSMdJBlo3MBdsLxOSL5OGZx9X6jku+rFkAzjkAiQ01k9I+Ms0EwD+Uscjdk2aejgb/CApYbKCWyBIH7yjn3R55GLKT3j8c+LE4ojFT4CAXxa5MJV64RipP+JiH46AZ4LIdsCQZ7ZN5DGXP2tiQQM7kbrtl5bvq/3iGXY4GU+D4JVzG4+DoNEETo0/j0L8fvTRR8XPf/7zci7fa6+9ipdffjmo2lGQNyhYpLEXefEdJFwH+Z2fFL/CdWz27Nml7vFmvfPPP794/PHHuz4kG2FxJJuxE4nXrd93333FPvvsU3DXZ+ONN3a3sss3D0o9WwJkCVByQEjHSQZaNzAXbC8Tki+ThmcfV+o5ExV/MQ94fxEvF/DELxftcnwVXv7iioVcqNQt8Jg84AiegA+LGNS5axOiLxc6Pg3/HPBIDHFkId0Y/zFdEF7qz6eHMej3d4BIkzgm+pjLnzWxoIGdaP32Qg++gAWMvPWyF/i2jGV8QVbExLgXjT+3OX7xQP6CBQvKxTc+1Hn99ddXukOb5a0ULNKZKi+emUI8bb755gUW7yipfoXF/N///vdi6623Lm0BXPjD92023XTTsfrDWwa500M94OivF2gyqWdLgCwBol/UHqXj1A72BuSCTZ2QPHbdqYbnEL7UNiwyEMByscEEAkkDC8dhIYbChQrHAEbuwKBd7i4hQdA+nA26/GVYTjigdcwxx5S3wpF/ygQYLBzJq5+A+OeQzX9OAGMID7xyIUpdUDe+LsA3YKgP8kP+yK+fAIEexzilT/C/XP6siQUN7ASr18iZBmo1oPHntsbv6tWri1NPPdVdl7DYPOSQQ4qUt7u1Vd5aJ4gMSJX3jjvucLrEG95YevWrNWvWFPjWEr4hhJck4DZEmQCMW3369Onu5RtIDqt8U+p5A5zIPxhQno963eTttP+o2bsJ+3KCmsgjF+RyEvMX3lzA82FKjOWCHryGFv1YwBOnHIvxwMc+ufBnMoA+JBTkjfww2WAyQlwyIWEb8YM2EhrC+AmPTxPwGMOEhueE9/GTV7SjhHRB/YF/FF9+nMtb4EI4HOCA/8mYbMKfJb6Jqg9YRYbeNDBhGtDETBvj95///Gex7bbbumsDdhfuvffe5DViG+WdCPvix0Fco/ADpIaehP3000+LDz74oHjvvfcm7G/RokUTRismF261R8IjdZFatx0g2wFKvnDAqfotuWAxAfdbNDz3S7NJOCQq8s1OTeLOgQsJCBInHCei+AkSki+ZcE0EDz6NXP6siQUNrC+/nZsGcmtA489ti19+iBOLdTxbsWrVqp7U3zZ5Idyg7Ytb2Hj72muvvVbqU0M3F2zb7WsJUKYFsjlsGfe1FY2ucgVorVATMMDfVZkAkgMngaRE7k41RRBJFZIb7gbhHHS44zQour3yn8ufNTFIWOoUumyy1CWmoMedR39Xskk+xhlXnQ24S3zttde6W1VpD3nkjxs4Nu0jvdhGyoI5wf/Rg/7cC06ObUv8fv7558VJJ53k4ga3vF1wwQUUoadjW+SVQg3avs8++6zTK+YivpkM9DV0c8G23b6WAFkCJGO/sp4ryDR0cwVopSIH3IkLOBYWttjrTdFyoQz9QY/DVnL5syYGCZsjAYJNZcKMhThuGWWiO2z2JT+hhTf7hvEok4YQf+j34wm2QbIjbcFEaVgSoBA/9OeQnHVtbYhfPKCP5ykwB+K1yw8++GCdWNH+NsjrMz9o++KtbdDteeed10FaQzcXbNvtawmQJUAdQVh1kivINHRzBWiVHq3PNNCvBnL5syYGCZsjAUIi4S+8+9X9RMKNUgIEu3N3R+qwDQkQ+AWfcheI/ixlSa0Pe/z+4Q9/cItzLNBnzpxZ4EH7UZY3ZLdBy7vnnns6HT/zzDMd5DV0c8EOuz93KHjdidSVJUCWAIV8JNgmHSc4oKIxF2yuAK1QhXWZBvrWQC5/biJ+6xIgLDSx8OKfXHRCYfw1nv3cJZC7DxzDXR/g8HcZqPwQP8BJWOJauHChw0G6MqEibRzZ79Orkgs84EUb8+fPdzu2p5xySvHTn/60xAWclJN8h57tA33SJU7KAhyUCThC/T4d6oYyhWSGbglHPUg7kSb48G2JcWgnz5QtpnPqgP3QF/CTBtvJr09P2ocwpAnchEMfHkyX8NAF+MQRRRMLwxq/uOXtuOOOK/Vw+eWXUz0jKW8pXKAySPsuXbrU6RgfMsWb9WTR0M0FO6z+LPXq16WuLAGyBMj3j+i5dJzooEhHLthcARpRgzWbBlQayOXPTcQvF9VczEpFoE3esskFLReihOU5YLEIxjguvn0YjCGcv+iVfZIf1DmW+CRf/hsQubDGEYUw5DNVLj8RADxxOMTiX0oCBBl8OYgvpBOfT9wmiHEofh9lRjtLlQ3QR/1wPPH6clN/Uufgm+PYT9mAh22Uj+ekCX3BV0JjfdloX+KSMJRXEwvDGL8ffvhhsc0227iFOY7PPfec0xX/jZq8lCt2HKS8N910k9Mzfujwi4ZuLthh9Gdfr/651JUlQJYA+f4RPZeOEx0U6cgFmytAI2qobcaFl79G+kdcgPHHxUAtsgEMwKJIfltIkgBvcmEi+0J1yCoXGqExfhthuMjhosQf1/Q56TaNt1d8ufy5ifjlwtu3GW3JBSt1gsUoX0Ne5feAo31CsUH8iCfZH+JH+jDhfL5IC3yiT+JEG3GsWLHC9fnwUq4QD8AhaVAfPALef7uj5COEU+ov1B+TFTQxXsa8pEWe0EaefX2gHfT9InliX4gPqa9QP/UNPlnID8/lUfaBN5zLIvvZLmXQxMKwxe+7775bfkQSt2aFyijJG5LPbxukvIceeqi7vj/88MM+WdVOm4ZnDeyw+XOXUgMNUl5LgCwBCrhIuEk6TnhEvDUXbK4AjWsirYcXen/hEFo0pGFsZpS/GJJYQwsR2e/XuWDy22PnwA8YlJh+YrDa9ommF+M3lz83Eb+hhXeVLeVCP7QopY7Qh+RG7hqwTx5pQybpIX6kD3M82mSRvMg6x3DBzgTIh5dyxeKpKjYkPGmCDyYeIZzgoaofeEATeFgP/QCDvpDMaIvZAHh9HQCP5MkRjcQ19Qm5QjYBHp9XnFNewMM35Bj0AR+OPm8h+aQMmlgYpvhdvHhxmfwcccQRNEHXcVTk7RIs0jAoeXGb4SabbFJMmTKlWLlyZRd1Dd1csMPkz10KjTRIXVkCZAlQxE26m6XjdPdWt+SCzRWg1dqo7w1d6AEVWjTUY2tuRGhx1Rz2OCboAx9OxWIGJaafOAZ9D3SPhVDOksufm4hf+A6SD3/BSVty8U39yoUv+rigZT+PXLDiyOSGff5R+m+IH/BGHOTL51cmCqQt6WC8XGBjjCxSLsmPHAMaMV8DfN0OkNyxAV7yBJlCNKWsUgeA9fUUkpltOFJ/lAdt+POL5Il9kg+2SX2F+n1+CYcjx0v6qFfZx9c9cYAOiiYWhiV+H3rooTL5ufTSS6XKuuqjIG+XUBUNg5IXb9NDEn744YcHqWvo5oIdFn8OKjTSKHVlCZAlQBE36W6WjtPdW92SCzZXgFZro77Xv+gSgosGPJjNXzTlwpD9uIcf/bzwo53j/V/KscCQv5DyQg+a5IOweEDYX1z5vAEmBOvTlQsN8i3lkgtA8IgEyMcteZUygl8Jz0UfxmCBhn5/oSb1AF7x3ABvwYI8wMGFE2We6GMuf24ifv2FtNQd7CL9g35H/yUszwHrPwOENthc2hX+Cruy0P7ARxr0E54T3j8HDp9P8ANfQjuKz6c/njgpB8aH4gk8kS/gRZ1x7tPguez3cYIP2Q8ZeQ784IdyYyzr7JMyYqzkjWPYhqOEBz72YSyL5Ilt1A/6WGA/xmGon/JTp4BDHTg4nn0cS9nR7vMamjswHrAomlgYhvi9+eaby2vBvHnzqObose3yRgWLdAxK3p/85CdO73fccUeQsoZuLthh8OegMisapa4sAbIEqMJVOruk43T21J/lgs0VoPUaqR7BC7dcCAAC5/ICzUU7x7GfF3zCyMUlxvCiDzryuyhyQUAe5OIFdYlLSgG8XFiEYNEvYYGLuMk3z0NysQ80iR9wIRnZTxgufKTc4NXvp94Iz/Ehmo7wBP/L5c9NxC9tAP+Vf9KGsp22oIp9eMJhHO2IsajTz2hH4mU7cdLP0I8+xAJtTlgkWmjjGMCwkDZokobPN3071A+Z/GQFuCVfgAd+xhb6JU7whkSP/SGcGO/3Qy7IDL4oM+WS8gA3+oEDhTJzbKhN2gD8gDaOskie2E6dkxbaoYuqBAhjgJs2gjzSBlKXvq4AK2UFn/ABtLH4fGpiIXf8zpkzp/RT/zXMlNc/tlleX5aU80HIi9eJb7311k73b7/9dpANDd1csLn9OajImkapK0uALAGqcZf13dJx1rem1XLB5grQNK3ER4UWAhiNi3FoscILvt9PPOwHjtACiZzIxYass78KVi4UfD4Ij4UFeUGdC43QeDkWMIQDLsoFONZlP8ZI/rlAwngW1LkolHXZH9K1xMGxE3XM5c+54nei9BqiQ7+qsjd8jj4cwjGMbVUxPCh+/fgdFJ2m8YZ8QBMLueL3008/dbdNIjnEcyh4Pi21tFFeDc8a2Jh98dID6P6ggw6Kql1DNxdsTN6okKIjF8+SriVAlgAJl6yuSsepHtndmws2V4B2a6C3ltCFFxhCC3WZKPj9xIPJ1//D2FA/fyX3cYF+1eJJjpd1KTl45YJR1kPjpVz+Aop8A07WJS0kQHxWIsS3pBlayMoEinjBE+BylVz+nCt+c+kZdGN+JXkK+Y3sH8Z6KBYGzSd1CX21qcg5inxrYiFH/H722WfF1KlT3fw/Y8aMYu3atRQl6dg2eSGUhmcNbMy+P/7xj53+Y7e/5eR5EPKmOJaGblOwlgBZApTiq25MU06XTHDdQA3d2ISUwoOGbgr+qjFcMPiLbbloJ7xMFPx+4oktPNDOXRDgk0kDcPk7ILKf9HmUtEOwGCd5lYsLCUt8ciz6cc5CudDOui+jTGBCiz5J09cD6KBfyk86aM9VcvmzJhY0sLn0DLop9obfSL/MyW8q7VAspMLaON3ieqLjVyY/u+22W/H111/3bEJN/E60vBROw7MGNiTvF198UeDDp/gBctmyZWSx66ihmws2JG+XYJGGXDxLuhvgRP5BIHk+6nWTt9P+o2bvJuwbid+BNscWX3LRTgb8REEmNBiDRZpcyGMBBBjQ8Bf+aOcOEMYBDmNQyBP7ec4FoOTN7wO8n1AALgTriHnJEpKZqpcgADf5kryS99CiT/IL/IBHGwpl9/UG3aJvIouMySb8WeKbqPpE6stomQYGqQFNzExk/C5fvrzc+dl9992LVatWTfjabiLl1dilKdiQvHfddZdLfn74wx9OuP6bkiuGJyRvbOwwttsOkO0AJV8r4MD9llywCNB+i4bnfmkSjgkEF+Rsl4t2tiGJ4EI/1I9x6OctcHJRTzrswwPAvG0McEwM2M83o6GdsLEkhv2ElXSBu5cECLjqXoMN2UkLR+oEtOoSIIyR8OAV53z4mv1+con2iSy5/FkTCxpYkzfdu1L0/Jvf/MbFyA033NCBOAW2A0CcaGDNvkKRNdVe9Iydn2nTpjlb77HHHi75qUEf7e6Fro/E7FsUs2fPdnaoe+OeRs+5YNtuX0uAMi2QzWH9qTJ+rtFVrgCNSzO6PUg4BpkgICFhsjURWgQ9ysNkDm05Sy5/1sSgBtbkTfe2FD3/8pe/dIuxO++8swNxCmwHgDjRwJp9hSJrqql6xgc3mfzwtrdU2BALGthxty9ePoGXTkyePLl4//33Q+ot2zR6zgXbdvtaAmQJUBmAdZVcQaahmytA63Q5av1MEOSuyyBklLtGTeLHDhFwQw4U3gJHeQZFt1cZcvmzJgY1sCZvuoek6Pm0005zCdD999/fgTgFtgNAnGhgzb5CkTXVFD0j+cGCGzvgu+yyS/nMTwpsjLwGdtztix8aYIujjz46pt6yXaPnXLBtt68lQJYAlQFYV8kVZBq6uQK0Tpej0s/EB5M8d0vaKht2dyAH/5j8DJM8ufxZE4MaWJM33ftS9HzCCSc4/37kkUc6EKfAdgCIEw2s2VcosqZap2eZ/Oy0004db3urg60irYEdd/sefPDBLt7+8pe/VKnY9Wn0nAu27fa1BMgSoNrA5IBcQaahmytAqTM7mgaa1EAuf9bEoAbW5E33nhQ983mEJ598sgNxCmwHgDjRwJp9hSJrqlV6xpvGNt10U7fYxstc/FddV8HWkHUP7teNifWPs33ffffdYqONNnIvovjoo49iKirbc9lIQ7ft9rUEyBKgMgDrKppAyQWbK0DrdGn9poF+NJDLn8ctfkdV3u9973tukYzFmSyjKq+UUdZHSV75muXtt9+++Oqrr6Sorj5K8nYJF2gYBnnnzJnjYu2MM84IcNjdlItnDd22X48sAbIEqDsSIy2aQMkFmytAIyq0ZtOASgO5/Hnc4ncU5cVrkXF757bbbtvlg6Mob5eQomFU5MUtyPzGDD5yumbNGiHl+uqoyLteoupabnlXr15dbL311i7eXnvttWpm1/Xm4llDt+3XI0uALAFKCk4M0gRKLtimApTPujT9XIh801jIEHwYf5ifSwnxPZFtVTrkcz2h55Ngy1D7RPJOWnzJAo9s949N+bOPt+687fFbJ5/fP4ryPvzww25BduKJJ/riZpvbzZ+7TBFtCPnklltuWSa1X375ZU+w0cFeR4iuNyR6Oq72ld/+iSrH69DoORds2+1rCZAlQF4Yxk9zBZmGblMBmiMBYvKDRTwLvsODb/AMc5noxCIlAUIC6SevE81nzGbgH4kPCv1M2lzCNeXPEmdKXRODGliTN8U6342p0/NFF13kFss333xzF9I62C4A0aCBNfsKRdZUfT3vueeezp546xt2HKqKD1s11u/TwI6rfWfOnOls479sxNetPNfoORds2+1rCZAlQDIGK+u5gkxDt6kA5cLUX0RXKiyhs27xPiw7FAmilEMmOrGo0yE+ago94uFgmTxONJ+lgkQFfiU/8IoumRCJoa7alD/7eOvONTGogTV56yyzvr9Oz4cccohblL3wwgvrgdbV6mC7AESDBtbsKxRZU5V6Pumkk5wtJ02aVOBbM3VFwtaN9fs1sONo3+eee87ZBs/bYX5PLRo954Jtu30tAbIEKDU+s90moQnupgK0LgHibg1vVcOiG22y4Fd+9jOR8hfvGMOFOvpYl3hY92+XIg+AQwENjMGRdGVCRdoLFy4s+32+iZPwsp86wa4U2vF3wQUXlLgAQznJM2FAE7wQrz9O6irE82233eZgAUc5eLHxdQi+lixZ4vhDHwtgJW5fVskT6r4uZT/1TXl82Sk32qVNkZAhASLvwAM+wBeOfmnKn328deeaGNTAmrx1llnfX6XnlStXuo8x4gOZoVulqmDXUwjXNLBm37BOQ63U8+WXX17Om6+++mpoaFcbYbs6Eho0sONo3+OPP97Z56abbkrQ7vohGj3ngm27fS0BsgRofQTW1HIFmYZuUwHKBay/6IXKuHCWfagzWSCsXGwjAQCcXLxjgS3HADfasGhmUiNNhD78sZAPjgUPciFOPgiDcejnOemRB+Krk4tykg+MJw628Uge/CQA5+QbR9Z9Hsiz5AltpAdZWAdN9JE/wuKI4vOJpAr0CCd5xFipS+Dw+0kH8D7f4It6hg6QNJIO211DzW1wTfkzaaUeNTGogTV5Uy1U/YzmHXfc4fwXH0INFY2NNLBm35A1wm3QM5/jwlx0ww03hAcGWjU20sCOm31feeWVAj8yTJ06tfjggw8Clog3afScC7bt9rUEyBKgeER6PbmCTEO3qQDlwl0uvKkefyGNdo7HQhm/8h977LHl4ppwOKIfC3YsvuUCWo7h4lsuuNEvF9U456I7tsAnPdLBONZJD7wecMABjuc6uSijr5MQHPHHYHxZOB5H9JFGiOcqHfrjgYsyV/EJXcJmvGXOH0s5gN/XO3knXxgLujIx4xjgpWxso8yA90tT/uzjrTvXxKAG1uSts8z6/io977PPPi4Bwu05oVIFGxov2zSwbbSvlH0c6uNmX428Z599touzX/ziFz27hoZuLtg2xq/UlSVAlgAlB6p0nGSgdQNzwTYVoFzwhharaMMCVxY5Xi6E5RjU0Ydf8/AXWvDK8aAjx4GmpOsvxEN8yWQsxJdc+IfgpVys+3wDLrTYhyxVMJRF6oS6kX0+bjne5wXnTHhAnzoCPp9PtJEej8Tn60LKIXUm7SVpczzwSn6AF39+AS+kLfua8meJM6Xe9vhNkVGOGSV5X3zxRefXe+yxR/Htt99KMcv6KMlbClVR0chbgXYkuzS6Gqf5atWqVcUWW2zhYm3RokU9+4JGz7lg227fDSBAU38wQr+4csH2yy/gcvGsoWvypvs79YyZjAvY0GIVbf6inOOxiJULYX9WRB9gcUucv8Pjj8U5F+6s45yFi3sunMGX7Mc40gN/sk4cMkGqk0vKSHgcQ3Dsj8FQLl8GwKGPcoR4ZltIh+iTCQfwoQ2JyDHHHFPazR/n8+HrUsrhj6Ws5AtjZYEs9BeMoWwcI3GjTROzEpb+LNtS67lgU/kLjcvFs4ZuSI7UthhdPjB/2WWXRX0pBptCWwObgj82RkNXA8s4HbXjIPQcw5nSrrFRDljs+vC6kiKfPyYHz+BBQ9eXoZdzDd2mYG0HyHaAkudxOF2/JRcsArLfInnmohQLYb9wASz7ZBJAWLnQDT0DBBiZBGFxLHGSDtpR0CcX9zjHBCz75TnhiRPj0M9zn09/PGly8c7xpEe9AB/HoA39lIswkm/ZT5rEiYQMsNQd2iVu4mcbaJMW+yQt8gh8kJ1wwCvHAY/UHc7JA3BQDvKJfgkv5cBY3OKII3kiXchnL0GgVbqPTcVvN+bqFhn71SO7ezWwTcu7YsWKYsMNN3S+jHqsaHjWwDYtb0w+v13Ds48Ltz1hPmdBHW2yvPHGG8V//dd/FRtssEHHH9rQFyvA48PwvIomXnXO151L/kDrJz/5iXttNl6Mgdc1V9EHXxpdtdG+/cj74YcfFptvvrmLs8WLF8fMWdneD10izAXbdvtaAtTQApmOmHo0h03V1HBMwFzwYlEs/7DwReGCl31c4FJKH55w/oIe7f7CmzhxJBzw+jjnzp3rFuFyUY5FOxf7Pjxp841q6JeL/Dq5SJ/0KKvUBfhFP5MSwvDNcaDJPsJjPNrxBz0iQSBf5Bl4WPw2qUP0ycSEMORR2knqKaZLwlMO4GchXfIu+1Bnu5QXeEKvwZZ8ET+Obb/gSFlS6iZvipa+GxO6pvz85z93fvfTn/60ElEIthJAdGpg22hfiB5KZpiY+EcmOTL5wHd7kIggiZkxY0ZXkuMnUDhnQkPVI4E54ogjChxl0iXbOZbw5AGvQkfyg7F1Zdzs24+855xzjoszvAGu39IPXdLKBdvG+JW6sgTIEiDGUO1ROk7tYG9ALthcAeqJn+UUC3ImDiEGsCiPLbRD45toCyUOTeBtMw7YgXaq008ufx63+B0FebHYnTJliluYLVu2rDJERkHeSgG9To28Hiq321O1G8PxTD6Q/DABQpvcrcFY4JLJjoSLJTqyHXWZhOGcReJiW91Ro6txmK+WL19e4GO0+IHr6aefrlNntF+j51ywbbevJUCWAEUD0u/IFWQaurkC1NddjnNLgHJovT+aSIDkXwxLLn/WxKAG1uSNeUJ3u6/nI4880i3K5syZ0z3Ya/Fhve7KUw1sG+0LZWBuRTIRK0hwsDvjJzJy54g7Q0hQ5Dh5yxp2aPzb1Ngvd3qYAIEu+uXOjp8QyeQIPAKmqoybfXuVF6+WR/KDZ4Da6M+9yit9pe3yWgJkCZD058q6JlByweYK0EpFTlCnJUATpOgJJJPLn8ctftvmQy22AAAgAElEQVQuLxa9WJThl2nc7llX2i5vnXx+v0Ze4GKi8e6773YlOnJHh8kKYOTuC+BxCxza8PfrX//asSjb0RBLXnDbHN405t8CB1xoY5KDcbgOgA+/IElCuyVAnZrpxTeWLl1abLzxxm6n9Z133rEEqFOVlWe96NlH1BSsJUCWAPm+FT1vyumiBCIdGrq5FowRUazZNKDSQC5/1sSgBtbkTXcX6vnrr78udt11V5cAXXPNNUkICJs02BukgW2jfSk+kgfu4qDOpMM/IglBsoHkJLQDJHdyMIYvKSCd0BFJC5MdwHMHiGNlEib7AMNkyxIgaqvz2Is/n3DCCS7Ozj//fIekjf7ci7ydmmr/M6mWAFkC5Pt09FwTKLlgc01IUSVah2lAoYFc/jxu8dtmefnigx122KFYs2ZNkre1Wd4kAb1BGnmBCkkOEgskGjjKgmQIf36RyY2/04PxxCdvh5M4OIZtMnGSSQ76LQEa/BtrYU+8YXGjjTYq3nvvPWcWm5/pnfVHTQw2BWsJkCVA9Z66bkRTTpdMsAG6uSakXmW08aaBFA3k8udcsW/ypnjFd2Ngo0ceeaSYNGmS+1X6pZdeSgY2+yarqhyIBAS7OzLZYWLDW9PKwRW3wGEMEhjs/PC2OMIBt7+jhHPsJAGGdJgAYVHu7zJdddVVJY8cB/y2A0Qtdx5TYwFvF8VtppdcckmJwOarUhW1lVQ9hxA1BWsJkCVAIf8KtjXldEHkFY0auoOekPAGr9BrlivEqe3CPfvHHntsgW/EhArfFIbJF398g1ho7Li2VemQr8CG7WShXv12OaauzhcZYFyIB9K49tpriwMOOCBq4xidQftzjK4mBjWwJm/MIt3tWPzieQTMCXfeeWf3gIoWjY00sG20L9QIXX/ve9/rSELQzgQjtDMEGCQ4Dz74YEdSwwQKx9juD3CjH/hZ+tkBkjtDlgBRk53HFH/+4x//6OJs2223LVatWlUiaKM/p8hbCuhV2i6vJUCWAHkuHT/VBEou2EEH6EQnQFxA48FWFvCgWbQTzyCPSOb6WfD3y1Mo+SCuphKgEJ66BAh2o+1gs15fQz5of6aO/OOoxq8vJ8/bKC/iC8nPcccdV3zzzTcUJenYRnlz8QyF8hs6MgnB7g+SFLTJdoyXOzMYw50itKMgMUFChT+2uQ7xz0+ARFeZeLFNJjpskzxg5wg8pBSNnkdxvkLCs80227hY+8tf/tKhwlGUt0NA76Tt8loCZAmQ59LxU81EmAt20AE60QkQEgnsDmHx3aYyLgmQtImfhOEcCQ9th2TW/wiqhA/VB+3PIZpoG9X4HRV54UdIfvDyA/hVr8Xs26vGvhuPpALJEN8GJ3doUI8lGkyA8EFSjOE44IslQUiA5O1wPi30syABwssO+AptnPOFDRgDWHlOuNBR4xujOF/hddeItcMPP7zAC0dkGUV5pXx+ve3yWgJkCZDv09FzzUSYC3bQAVqVAHG3BpMl/nbccceuW54Az37uBvgLZ47BzgESCeBBW6hgDPGgnzz4uw64AJKuvIWPtCkXx0h6xMk+Xy7Q4k4Ixtx6660lLZxL/igDYXAkXn+c7AvxPH/+fKcbwK1YsaLjNkKpQ8gIeCmT1BXbcQQuqSvebkg7kFfyQ7mBj7rEWBTgI7xrWPc9EciVWgbtzzE+RjV+R0Heyy67rHzuJ7Z7EJOT7WZfaiLtiDmByQhua4slLbFEAwkQkh7gkIkLqDMJevHFF8sxoXEYK5Mi0GJBO1+BDVgkQH7BLhUTJL9Pnmt8Y9Tmq1dffdW99GDy5MnFkiVLpJpcfdTk7RLQa2i7vJYAWQLkuXT8VDMR5oIddIBiUcvFr9QckwS54MVYmSxg4SvPsVDGBCsXzj4MaDARCC2c0SYTB/LBscCHRbvkC3XCMDmQMkkeiE/Cy37JH9pZIFvVLXC+TD4dwCPBQfH7yDNlwJgqHXK85E/iZTuOUlfgQSafITzQC3UjeQB+yEg74BwFNCTf65qjh0H7c4zwqMZv2+WdN29egcUY/PSBBx6IiVPbbvatVdHYDtD4xqjNV/vss4+Ltdjr5UdN3jqnb7u8lgBZAlTn42W/ZiLMBTvoAMUCViYLVFasHYtjLIK5iMc4v3DhzB2N0Bi0cfdB9gO3XFCTDhfeGOvzK5OT0KJe4gjBg3/KhbrPA9okDV/eGEyMFsfLRAMyST1U6TAkI3BSTuIJ0ZdyhvCgX/IlX2aBduKmDqAX3L4E2ill0P4c42FU47fN8j700EPuA4yYB+69995stylqfKON/hzzmVFtHzf7xuS95ZZb3DUXP4J99tlnQXO30Z9j8gYF9BrbLu8GEF7+QSB5Pup1k7fT/qNm7ybs68V8x2lokYwBaJeJCIG4QOYCHQtgv3BhLXcf/DE8Bx2MY4LjJx9c1LM/xJfkRdZJA0fwDRwhePZz4Y9xrBNHSgIUguHzToDHhYdJH47Ub4jnKh2yD7LIQl2xPSQr9QC4EB70Uw6fL7QTN+mmJEAyJpvwZ4lv2Osmb3h+RvKDb5AgDubOndvaa3Yb7cvYHbXjIOaCNto3pIelS5cW06dPd/GGt/iFxqBtVOSNyee3t11e2wGyHaDkeRzO32/JBYsA7bek8IwFrb+jAnqxdi6gQ4tn8smFM3EweWG/f5QJB+pMDDCOi3riAE7ZjzFYhDPRIG20sRAHYMkTxslCudAm+eEY4Ku7BY6JA2HIK2iBZ8pAGpQjxDPbyK+EpTyyDTgJQ9lJH+NZpJwY7+88oZ9y+PhAz6cZokFaoeOg/TlEE20psTAIWJO3W6svv/xyMW3aNLcYu/zyy8sBuWykoTuO9sWD83h9MpJXvKggtWj0nAt2VOyLaw3sdeKJJ1aaa1TkrRRSdLZdXkuABrxAFr7SUbUJqUMdlScaXQ06QLnAxmJXFi6yuRhGnz8Wi2GZPGHh7T8DhDbsfHDhjHP84stCOuwHDYyXi3hM3LJfnhOefHJRz+QCdCSf/viYXMRHPsGPTIAoF/glDfDFc/IB2qRJGdhHHnEubzUDPtlGWoQnPakntIFn4sQ5eJHnHEM85IM8s5+ySx6Ij304RwEu4lvXVHkYtD/HiGtiUANr8nZaBA+6M/mZM2dOR6dGz7lgx9G+Z555pltM48UJa9as6bBh1UkuG2nojoJ98WwdPi68ySabFMuXL68ykdsBqhxQ0anRcy7YttvXEiBLgCpCsrMrV5Bp6A46QLH4xcJd/jGp4cKdfWyXWsXil/1cbPsLZy7guXj2abKdeHFOnHi+BHi5yOai/rbbbivHSHjS5vNHwOPzXScXaEmcPl/g5/XXX+94oQBhJO/kGfDUAflBEhjTF8ZTDsBJeMkX8FNPOBKfA0hIgDCOOKgj4CcNnwecgwaOKNSjTKBIO3YctD/H6GpiUANr8q63yB/+8Ifytrerr756fce6mkbPuWDHzb733Xefm3Pw4ooPPvigy4ZVDblspKHbdvu+99575a1veM6urrRd3jr5/P62y2sJkCVAvk9HzzUTYS7YXAEaVWLmDiZAWHyHir9oD40ZRBsToEHgHiackBN/KHW2CPGdy5/HLX6HTd6LL764TNb/+te/hlwj222KGl2Nkz+vXbu22GKLLZwd77777qANqxo1es4F23b7zpo1y9kLrzr/9ttvq8zj+toub62A3oC2y2sJkCVAnkvHT3NNohq6uQI0rsW8PXWLbkuABmsf7vpce+21HbcEplLN5c+aGNTAmrxFcfrpp5fJz1NPPRV1FY2ec8GOk31xmy52mmfPnh21YVVHLhtp6LbZvng+C/bafvvty137Kvugr83y1skW6m+7vJYAWQIU8utgm2YizAWbK0CDChyCRkuAhsAIChZy+fO4xe8wyLtq1Sr3IUwswvAGKjwfWFVy8ayhOy7+jMQVdsStbx9//HGVGaN9Gj3ngm2rffER2qlTpzqbPfPMM1Gb+B1tldeXI/W87fJaAmQJUKqv2y0WyZqygaaBwWig7RecXrUyrvK+8MILxVZbbeUWYHhZB55FqCu5FrkauuNg32+++aZ869uNN95YZ8Zov0bPuWDbaF/wvN1227nYu/LKK6P2CHW0UV6Nb7RdXkuALAEKxXGwTRMouWDbHqBBQ1Q0mrxFgQXH2Wef7S5g+NUVC0m+DEGqLpdPauiafaUFq+saPeeChX1/85vflL8+47apVF5Sx4W0lgt2HPz5nHPOcXPRvvvuWyxbtiyk/qS2XDbS0G2jfY8//nhnr7333rtYvXp1km04qI3yjpt9pbyWAFkCxNitPUrHqR3sDcgFaxOSZ4iK01w20tCtsu+iRYuKnXfeuUyEzjrrrOLTTz8tNaChmwu2St5SsEglF88auuMk78qVK91zYUja8XfnnXcWeHA+tWj0nAt21O37r3/9y932htcov//++/aMSKozZ/r22B133OFib+ONNy7efffdHrj9buio+7OvkLbLawmQJUC+T0fPc10kNXTbHqBRY0Q6TN5OxeDNPbiNgfdzY2GJt2hhYanxq1ywZt9O+1ad5bJRP3TxjMiWW27pFl946PqVV16pEi3Y1w9dIsoFO8r+jLkHty9izrnuuuucqkdZXvqSPLZJXiSrm222mbMX39QpZUmpt0leyqOJ/bbLawmQJUCMg9qjJlBywbY9QGuN4g0weT2FrDv96KOPij333NNd3LAgmTFjRvHss8+GBye0mj8nKGndEI2uRt2foZtTTz212GijjZxvHnHEEX0n5ho954IdZfteccUVzqaYa7766isXDbnkTY9WGzluGtDEfi5/1vAsYS0BsgQoOd6l4yQDrRuYC7btAdqrnk3eao09+OCD5a+ySIQOOOCA4s0336wGCvSaPweUEmnS6GqU/XnevHnliw7wdrC77rqreOeddyJarG/W6DkX7KjaF296w21UmGPkrVS55K33HhsxrhrQxH4uf9bwLGEtAbIEKDnupeMkA60bmAu27QHaq55N3jSN3XzzzeXiE4uUE088sWOhUofF/LlOQ+v7NboaRX9+++23iwMPPLDcjTzqqKOK5cuXO4WNorzrPaG7Nqry7rbbbs6+F154YYfQueTtYMJOTANCA+M8P1sCZAmQCIXqqiZQcsHmuuCYvNW+JHs1utLaFx+723TTTcvF6Pnnn1/gYfS6ouFZA6uVt06uWL+GZw3sKMmL26DOPffcYtq0ac7ftt122+KRRx4pvv7661LtoyRvKVRFZRTl5YP02NX74osvOqTPJW8HE0Nyguds/Gdt8CFu/DiA79XFSghu7ty5wTd9/va3v+3AhQ9Row10UEAH56GCPtDCG0T5LBd+LJN/VXyGcA5j2zjPzxtAePmHAJXno143eTvtP2r2Nvuafet8+sMPPyx+9KMfFXhTEy9ueBXxkiVLhm4uNH9upz/jxRt4FoT+hUQI3/bxfdPs20770o54yyQfpH/uueey2XcYF9qSp1BSgcQHiQxjhEe0M2HB8Wc/+1l5TpyxBMgfn5oAgT/EKMa3udAvB3Vs+3xlO0C2A5Qc3wiifksuWARovyUX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" alt="">
3. 线程的基本操作
interrupt
抛出InterruptedException异常时,<br>会清除中断标志位
interrupt(), interrupted(), isInterrupt()
sleep
sleep与wait的区别
join
让父线程等待子线程结束之后才能继续运行
yield
yield仅仅只会把时间片让给同<br>优先级的线程,而sleep没有这个要求
4. 守护线程Daemon
只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;<br>只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。<br>Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者
并发理论(JMM)
1.JMM内存模型
1.哪些是共享数据
实例域
静态域
数组
2.抽象结构
线程将数据拷贝到工作内存,再刷新到主存。<br>各个线程通过主存中的数据来完成隐式通信
2. 重排序
1.什么是重排序
为了提高执行性能,编译器和处理器会对指令<br>进行重排序
针对编译器重排序,编译器重排序规则<br>会禁止一些特定类型的编译器重排序
针对处理器重排序,编译器会在生成指令的时候<br>插入内存屏障来禁止特定类型的处理器重排序
2. 数据依赖性
int a=1;<br>int b=2;<br>int sum = a+b;//对以上的依赖性
3. as-if-serial
遵守as-if-serial语义的编译器,runtime和处理器共同为编写单线程程序的程序员创建了<br>一个幻觉:单线程程序是按程序的顺序来执行的
3.happens-before规则
1. 定义
如果A happens-before B,则A操作的结果对操作B可见,且A操作在操作B之前执行
如果指令重排序之后的结果,与按照happens-before关系执行的结果一致,<br>则指令可以重排序
2.理解
站在程序员角度:为编程人员提供了一个类似强内存的内存结构,方便编程
站在编译器和处理器厂商:在不影响正确结果的前提下,可以让编译器<br>和处理器厂商尽情优化
3.具体规则
程序顺序规则
volatile变量规则
监视器锁规则
传递性
start规则
join规则
线程中断规则
对象finnalize规则
并发关键字
1.<b><font color="#0076b3">synchronized</font></b>
1. 如何使用?
实例方法(锁的是实例对象)
静态方法(锁的是类对象)
代码块根据配置,锁的是实例对象也可以是类对象
synchronized,synchronized (this)锁的是对象,synchronized (Demo.class)锁的是方法
2. moniter机制
字节码中会添加monitor enter和monitor exit指令
锁的重入性:同一个锁程,不需要再次申请获取锁
3. synchronized的happens-before关系
不禁止指令重排,保证有序性
4. synchronized的内存语义
共享变量会刷新到主存中,线程每次会从主存中<br>读取最新的值到自身的工作内存中
5.锁优化
锁状态
无锁状态
偏向锁
当一个线程访问同步块并获取锁时,会在对象头和栈帧中的锁记录里存储锁偏向的线程ID,<br>以后该线程在进入和退出同步块时不需要进行CAS操作来加锁和解锁,<br>只需简单地测试一下对象头的Mark Word里是否存储着指向当前线程的偏向锁
适用
始终只有一个线程在执行同步块,在它没有执行完释放锁之前,没有其它线程去执行同步块,<br>在锁无竞争的情况下使用,一旦有了竞争就升级为轻量级锁
轻量级锁
如持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入<font color="#c41230">阻塞挂起</font>状态,<br>它们只需要<font color="#16884a">等一等(自旋)</font>,等持有锁的线程释放锁后即可<font color="#c41230">立即获取锁</font>,这样就避免用户线程和内核的切换的消耗。
适用
轻量级锁尽可能的减少线程的阻塞,这对于锁的<font color="#c41230">竞争不激烈</font>,且占用<font color="#c41230">锁时间非常短</font>的代码块来说性能能大幅度的提升,<br>因为自旋的消耗会小于线程阻塞挂起再唤醒的操作的消耗,这些操作会导致线程发生两次上下文切换
重量级锁synchronized
<ul><li>作用于方法时,锁住的是对象的实例(this);</li><li>当作用于静态方法时,锁住的是Class实例,又因为Class的相关数据存储在永久代PermGen(jdk1.8则是metaspace),<br>永久代是全局共享的,因此静态方法锁相当于类的一个全局锁,会锁所有调用该方法的线程;</li><li>synchronized作用于一个对象实例时,锁住的是所有以该对象为锁的代码块。</li></ul>
synchronized与static synchronized 的区别<br>一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),<br>一个是全局锁(该锁针对的是类,无论实例多少个对象,那么线程都共享该锁)。<br>实例锁对应的就是synchronized关键字,而类锁(全局锁)对应的就是static synchronized<br>(或者是锁在该类的class或者classloader对象上)。<br>
CAS操作
是一种乐观锁策略
利用现代处理器的CMPXCHG
存在ABA的问题;自旋时间可能过长的问题
JAVA对象头
对象的hashcode
对象的分代年龄
是否是偏向锁的标志位
锁标志位
6. 锁升级策略
轻量级锁
加锁:在对象头和栈帧的锁记录中,添加自身的线程ID
锁撤销:在全局安全点上进行
轻量级锁
加锁:Displace mark word,对象头mark word通过CAS指向栈中锁记录
锁撤销:如果CAS替换回对象头失败,则升级成重量级锁
重量级锁
各种锁的比较
<b>reentrantlock</b>
2. volatile
1.实现原理
写volatile变量在编译时添加Lock指令
缓存一致性:每个处理器会通过总线嗅探出自己的<br>工作内存中数据是否发生变化
特性
保证可见性<br>
<b><font color="#f44336">不保证原子性</font></b>
<b><font color="#f44336">保证不了线程安全</font></b>
禁止指令重排
2.happens-before关系的推导
A happens before B,B happens before C,<br>则 A happens before C
3.内存语义
写volatile变量会重新刷新到主存中,其他线程读volatile变量<br>会重新从主存中读取最新值
4.内存语义的实现
通过在特定位置处插入内存屏障来防止重排序
3.final
1.如何使用
变量
基本类型
类变量(static变量):只能在声明时赋值或者<br>在静态代码块中赋值
实例变量:声明时赋值,构造器以及非静态代码块中赋值
局部变量:有且仅有一次赋值机会
引用类型
final修饰的引用类型只保证引用的对象地址不变,其对象<br>的属性是可以改变的
方法
被final修饰的方法不能被子类重写,但是可以被重载
类
被final修饰的类,不能被子类继承
2. final的重排序规则
final域为基本类型
禁止对final于的写重排序到构造函数之外
禁止读对象的引用和读该对象包含的final域重排序
final域为引用类型
对一个final修饰的对象的成员域的写入,与随后在构造函数之外<br>把这个被构造的对象的引用赋给一个引用变量,这两个操作是不能被重排序的
3. final实现原理
插入StoreStore和LoadLoad内存屏障
4. finla引用不能从构造函数函数中“溢出”(this逃逸)
4.三大性质
原子性
synchronzied
可见性
synchronized
volatile
有序性
synchronized
volatile
Lock体系
1. Lock与synchronized的比较
Lock提供了基于API的可操作性,提供能可响应中断式<br>获取锁,超时获取锁以及非阻塞式获取锁的特性
synchronized执行完同步块以及遇到异常会自动释放锁,<br>而Lock要显示的调用unlock方法释放锁
2. AQS
1. 设计意图(模板方法设计模式)
AQS提供给同步组件实现者,为其屏蔽了同步状态的管理,线程排队等底层操作<br>实现者只需要通过AQS提供的模板方法实现同步组件的语义即可
lock(同步组件)是面向使用者的,定义了接口,<br>隐藏了实现细节
2. 如何使用AQS实现自定义同步组件
重写protected方法,告诉AQS如何判断当前<br>同步状态获取是否成功或者失败
同步组件调用AQS的模板方法,实现同步语义。而提供的模板方法<br>又会调用被重写的方法
实现自定义同步组件时,推荐采用继承AQS的静态内部类
3. 可重写的方法
4. AQS提供的模板方法
3. AQS源码解析
1. AQS同步队列的数据结构
带头结点的双向链表实现的队列
2. 独占式锁
同步状态获取成功则退出;失败则通过addWaiter方法将当前线程<br>封装成节点加入同步队列,acquireQueued方法使得当前线程等待获取同步状态
如果获取同步状态并且是同步队列中的头结点,则表明获取锁成功,<br>并唤醒后继结点
可响应中断式获取锁以及超时获取锁特性的实现原理
3.共享式锁
锁获取原理
锁释放原理
可响应中断式获取锁以及可超时获取锁特性的实现原理
4.ReentrantLock
1.重入锁的实现原理
2.公平锁的实现原理
3.非公平锁的实现原理
4.公平锁和非公平锁的比较
加锁/释放过程
<img src="data:image/png;base64,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" alt="">
5.ReentrantReadWriteLock
1.如何表示读写状态的
低16位用来表示写状态,高16位用来表示读状态
如果有一个线程已经占用了读锁,则此时其他线程如果要申请读锁,可以申请成功。<br>如果有一个线程已经占用了读锁,则此时其他线程如果要申请写锁,则申请写锁的线程会一直等待释放读锁,因为读写不能同时操作。<br>如果有一个线程已经占用了写锁,则此时其他线程如果申请写锁或者读锁,都必须等待之前的线程释放写锁,同样也因为读写不能同时,并且两个线程不应该同时写。
2.WriteLock的获取和释放
当ReadLock已经被其他线程获取或者WriteLock被其他线程获取,当前线程<br>获取WriteLock失败;否则获取成功。支持重入性
WriteLock释放时将写状态通过CAS操作减一
3.ReadLock的获取和释放
当WriteLock已经被其他线程获取的话,ReadLock获取失败;否则获取成功。支持重入性
通过CAS操作将读状态减一
4.锁降级策略
按照WriteLock.lock()-->ReadLock.lock()-->WriteLock.unlock()的顺序,WriteLock会降级为ReadLock
5.生成Condition等待队列
WriteLock可以通过newCondition方法生成Condition等待队列,<br>而ReadLock无法生成Conditon等待队列
6.应用场景
适用于读多写少的应用场景,比如缓存设计上
6. Condition机制
1.与Object的wait/notify机制相比<br>具有的特性
Condition能够支持不响应中断,而Object不支持
Lock能够支持多个Condition等待队列,而Object只能支持一个
Condition能够支持设置超时时间的await,而Object不能
2.与Object的wait/notify相对应的方法
针对Object的wait方法:await, awaitNanos,...
针对Object的notify/notifyAll方法:signal,signalAll方法
3.底层数据结构
复用AQS的Node类,由不带头结点的链表实现的队列
4. awiat实现原理
将调用await方法的线程封装成Node,尾插入到同步队列中,并通过LockSupport.park方法<br>将当前线程置于WAITING状态,直至其他线程通过signal/signalAll方法将其移入到同步队列中,<br>使其有机会在同步队列中通过自旋获取到Lock,从而当前线程才能从await方法处退出
5.signal/signalAll实现原理
将等待队列的队头结点移入到同步队列中
6. await和signal/signalAll的结合使用
7.LockSupport
1. 主要功能
可阻塞线程以及唤醒线程,功能实现依赖于Unsafe类
2. 与synchronized阻塞唤醒相比具有的特色
LockSupport通过LockSupport.unpark(thread)可以指定<br>哪个线程被唤醒,而synchronized不能
并发容器
1. concurrentHashMap
1. 关键属性
table:元素为Node类的哈希桶数组
nextTable:扩容时的新数组
sizeCtl:控制数组的大小
Unsafe u:提供对哈希桶数组元素的CAS操作
2. 重要内部类
Node:实现Map.entry接口,存放key,value
TreeNode:继承Node,会被封装成TreeBin
TreeBin:进一步封装TreeNode,链表过长时转换成红黑树时使用
ForwardingNode:扩容时出现的特殊结点
3. 涉及到的CAS操作
tabAt:查询哈希桶数组的元素
casTabAt:设置哈希桶数组中索引为i的元素
setTabAt:设置哈希桶数组中索引为i的元素
4. 构造方法
数组长度总是会保证为2的幂次方
5. put执行流程
1.如果当前数组还未初始化,先进行初始化
2.spread方法重哈希(高16位和低16位异或操作),将哈希值与数组长度与运算,确定待插入结点的索引为i
3.当前哈希桶中i处为null,直接插入
4. i处结点不为null的话并且结点hash>0,说明i处为链表头结点。遍历链表,遇到与key相同的结点则覆盖其value,<br>如果遍历完没有找到,则尾插入新结点
5. i处结点不为null的话并且结点状态为MOVED,则说明在扩容,帮助扩容
6.i处结点不为null的话并且结点位TreeBin,则使用红黑树的方式插入结点
7. 插入新结点后,检查链表长度是否大于8,若大于,则转换成红黑树
8. 检测数组长度,若超过临界值,则扩容
6. get执行流程
7. 扩容机制
8. 用于统计size的方法的执行流程
9. 1.8版本的ConcurrentHashMap与之前版本的比较
减小锁粒度
采用了synchronized而不是lock,大量使用CAS操作
2. CopyOnWriteArrayList
1. 实现原理
利用了读写分离的思想;当写线程写入数据的时候会复制新建一个新容器,当数据更新完成<br>后,再将旧容器引用指向新容器。读线程感知数据更新是延时的,也就是说COW是牺牲了<br>数据实时性而保证数据最终一致性
由于写线程写数据是在新容器写入的,因此读线程不会被阻塞
2. COW和ReentrantReadWriteLock的区别
相同点
1. 两者都采用了读写分离的思想,并且读和<br>读线程之间都不会被阻塞
不同点
1. 当写线程在写数据时,ReadWriteLock会阻塞读线程,而<br>由于COW采用了延时更新的策略,COW并不会阻塞读线程
ReadWriteLock保证了数据实时性而COW保证数据最终一致性
3. 应用场景
适用于读多写少的场景,比如系统的黑名单,白名单设置<br>
4. 为什么具有弱一致性
COW的实现是采用数组,而数组的引用是volatile修饰,但是数组的元素并不是<br>volatile的。因此数据更新只有当volatile引用指向新数组时才会生效
5. COW的缺点
由于在写数据时,会复制,因此可能会出现内存使用瞬间增加,<br>导致minor GC和major GC
只具有数据最终一致性,对数据实时性要求高的场景不合适
3. ThreadLocal
1. 实现思想
采用“空间换时间的”思想,每个线程拥有变量副本,达到<br>隔离线程的目的,线程间不受影响解决线程安全的问题
2. set方法原理
数据存放在由当前线程Thread维护的ThreadLocalMap中,数据结构为<br>当前ThreadLocal实例为key,值为value的键值对
3. get方法原理
以当前ThreadLocal为键,从当前线程Thread维护的ThreadLocalMap中获取value
4. remove方法原理
从当前线程Thread维护的ThreadLocalMap中删除以当前ThreadLocal实例为键的键值对
5. ThreadLocalMap
底层数据结构
键为ThreadLocal实例,值为value的Entry数组
数组大小为2的幂次方
键ThreadLocal为弱引用
set方法原理
1. 计算ThreadLocal的hashcode
总是加上0x61c88647,这是“Fibonacci Hashing”
2. 计算待插入的索引为i
采用与运算
3.如何解决hash冲突
当索引为i处有Entry的话(hash冲突),就采用线性探测,进行环形搜素
4. 加载因子
ThreadLocalMap初始大小为16,加载因子为2/3
5. 扩容resize
容量为原数组大小的两倍
getEntry方法原理
根据ThreadLocal的hashcode进行定位,如果所定位的Entry的key<br>与所查找的key相同则直接返回,否则,环形向后继续探测。
remove原理
先找到对应的entry,然后让它的Key为null,之后再对其进行清理
6. ThreadLocal内存泄漏
造成内存泄露的原因
由于ThreadLocal在Entry中是弱引用,当外部ThreadLocal实例被置为null后,根据可达性分析,<br>堆中ThreadLocal不可达,会被GC掉,因此就存在key为null的entry。无法通过key为null去访问entry,<br>因此,就会存在threadRef->currentThread->threadLocalMap->entry->valueRef->valueMemory引用链<br>造成valueMemory不会被GC掉,造成内存泄漏
怎样来解决内存泄漏
关键方法cleanSomeSlots,expungeStaleEntry,replaceStaleEntry
在ThreadLocal的set,getEntry以及remove方法中都利用以上三个关键方法<br>对潜在的内存泄漏进行处理
为什么要使用弱引用
如果使用强引用的话,即使显示对ThreadLocal的实例置为null的话,由于Thread,ThreadLocal以及<br>ThreadLocalMap引用链关系,ThreadLocal也不会被GC掉,反而会程序员带来困扰;<br>
使用弱引用,尽管存在ThreadLocal内存泄漏的危险,但实际上已经对其进行了处理
7. ThreadLocal的最佳实践
使用完ThreadLocal后要remove掉
8. 应用场景
hibernate管理seesion,每个线程维护其自身的session,彼此不干扰
用于解决对象不能被多个线程共享的问题
BlockingQueue
1.BlockingQueue的基本操作
2. 常用的BlockingQueue
ArrayBlockingQueue:由数组实现的有界阻塞队列
LinkedBlockingQueue:由链表实现的有界阻塞队列,可指定长度,如果没有指定则为Integer.MAX_VALUE
PriorityBlockingQueue:支持优先级的无界阻塞队列
SynchronousQueue:不存储任何元素阻塞队列
LinkedTransferQueue:由链表实现的无界阻塞队列
LinkedBlockingDeque:由链表实现的无界阻塞队列
DelayQueue:存在实现了Delayed接口的数据的无界阻塞队列
3. ArrayBlockingQueue与LinkedBlockingQueue<br>实现原理
会有notFull和notEmpty两个等待队列,分别存放<br>被阻塞的插入数据线程以及被阻塞的消费数据的线程
ArrayBlockingQueue只有一个lock,而LinkedBlockingQueue有两个lock,<br>因此LinkedBlockingQueue的并发度更高,吞吐量更大
通过put和take方法了解生产者-消费者的正确写法
ConcurrentLinkedQueue
1. 实现原理
主要采用CAS操作以保证线程安全,并且采用了延时更新的策略,提高吞吐量
2. 数据结构
由Node构成的链式队列
3. 核心方法
offer方法实现原理
poll方法实现原理
4. HOPS延迟更新的设计意图
尽可能的减少CAS操作,以提升吞吐量和执行效率
线程池(Executor体系)
1. ThreadPoolExecutor
1. 为什么要使用线程池
降低资源损耗
提升系统响应速度
提高线程的可管理性
2. 执行流程
核心线程corePool,阻塞队列workQueue以及最大线程池maxPool三级缓存的工作方式
3. 构造器各个参数的意义
coolPoolSize:核心线程池的大小
maximumPoolSize:线程池最大容量
keepAliveTime:空闲线程可存活时间
线程数量>coolPoolsize+queueSize,,会创建 maxPoolSize-coolPoolSize的任务,<br>这些线程是借的,有时间限制
unit:keepAliveTime的时间单位
workQueue:存放任务的阻塞队列
threadFactory:生产线程的工厂类
handler:饱和丢弃策略。共四种:<br>AbortPolicy,CallerRunsPolicy,DiscardPolicy,DiscardOldestPolicy
4. 如何关闭线程池
shutdown:正在执行任务的线程,将任务执行完。空闲线程以中断的方式关闭
shutdownNow:停止所有线程,包括正在执行任务的线程。返回未执行的任务列表
showdown将线程池状态设置为SHUTDOWN,而shutdownNow将线程池状态设置为STOP
isTerminated来检查线程池是否已经关闭
5. 如何配置线程池
CPU密集型:Ncpu+1
IO密集型:2Ncpu
任务按照IO密集型和CPU密集型进行拆分
2. ScheduledThreadPoolExecutor
1. UML(类结构)
继承了ThreadPoolExecutor,并实现了ScheduledExecutorService
2. 常用方法
可 延时执行任务:schedule(.....)
可周期执行任务:scheduledAtFixedRate(...)和scheduledWithFixedDelay
scheduledAtFixedRate和scheduledWithFixedDelay的区别:...AtFixedRate不要求任务结束<br>了才开始统计延时时间,而....WithFixedDelay要求从任务结束开始统计延时时间
3. ScheduledFutureTask
可周期执行的异步任务,每一次执行完后会重新设置任务下一次执行的任务,<br>并且会添加到阻塞队列中
4. DelayedWorkQueue
按优先级排序的有界阻塞队列,底层数据结构是堆
3. FutureTask
1. FutureTask的几种状态
未启动(还未执行run方法),已启动(已执行run方法),已结束(正常结束,被取消,出现异常)
2. get()
未启动和已启动状态,get方法会阻塞当前线程直到异步任务执行结束
3. cancel()
未启动状态时,调用cancel方法后该异步任务永远不会再执行
已启动状态,调用cancel方法后根据参数是否中断当前执行任务的线程
已结束状态,调用cancel方法时会返回false
4. 应用场景
当一个线程需要等到另一个任务执行结束后才能继续进行时,可以使用futureTask
5. 实现了Runnable接口
futureTask同样可以交由executor执行,获取直接调用run方法执行
原子操作类
1. 实现原理
借住与Unsafe类的CAS操作,达到并发安全的目的
2. 原子更新基本类型
AtomicInteger, AtomicLong,AtomicBoolean
3. 原子更新数组类型
AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray
4. 原子更新引用类型
AtomicReference,AtomicReferenceFieldUpdater,AtomicMarkableReference
5. 原子更新字段类型
AtomicIntegerFieldUpdater,AtomicLongUpdater,AtomicStampedReference
并发工具
1. 倒计时器CountDownLatch
当CountDownLatch维护的计数器减至为0的时候,调用await方法的线程<br>才会继续往下执行,否则会阻塞等待
适用于一个线程需要等待其他多个线程执行结果的应用场景
2. 循环栅栏CyclicBarrier
当一组线程都达到了“临界点”时,所有的线程才能继续往前执行,否则<br>阻塞等待
3. CountDownLatch和CyclicBarrier的比较
1. CyclicBarrier能够复用,而CountDownLatch维护的倒计数器不能复用
2. CyclicBarrier会在await处阻塞等待,而CountDownLatch在await出不会阻塞等待
3. CyclicBarrier提供了例如isBroken,getNumerWaiting等方法能够<br>查询当前状态,而CountDownLatch提供的方法较少
4. 资源访问控制Semaphore
适用于对特定资源需要控制能够并发访问资源的线程个数。需要先执行acquire方法获取<br>许可证,如果获取成功后线程才能往下继续执行,否则只能阻塞等待;使用完后需要<br>用release方法归还许可
5. 数据交换Exchanger
为两个线程提供了一个同步点,当两个线程都达到了同步点之后就可以使用exchange方法,互相交换数据;<br>如果一个线程先达到了同步点,会在同步点阻塞等待直到另外一个线程也到达同步点
并发实践
生产者-消费者问题
1.使用Object的wait/notifyAll方式实现
使用Object的消息通知机制可能存在的问题
notify过早,wait线程无法再获取到通知以至于<br>一直阻塞等待。解决办法:添加状态标志
wait条件变化。解决方法:使用while进行wait条件的判断,而不是<br>在if中进行判断
“假死”状态:使用notifyAll而不是notify
标准范式
永远在while中对wait条件进行判断,而不是在if中进行判断
使用notifyAll进行通知,而不要使用notify进行通知
2.使用lock的condition的await/signalAll方式实现
3. 使用blockingQueue方式实现
由于BlockingQueue有可阻塞的插入和删除数据的put和take方法,因此,在实现上<br>比使用Object和lock的方式更加简洁
java线程和操作系统线程的关系
子主题
运维统计
常规监控
监控
定义
通过技术手段发现服务异常情况,持续优化业务可用性与用户体验<br>
方式
主动:代码埋点,服务主动上报自身运行情况,<br>优点:可以细化到具体业务属性,快准狠<br>缺点:代码侵入,有成本
无侵入:无需埋点,从外部探测服务运行情况,如:ping探测,端口检测,日志采集
旁路检测:与程序逻辑无关,对服务质量与口碑的监控,如舆情监控
指标
种类
基础监控
监控范围较广,主要包括IASS层(服务器,系统,网络等)
服务端监控
一般指后台服务,如QQ的后台消息服务,商城订单服务
客户端监控
指app
WEB端监控
对网站 实施域名的拨测
目标
全、快、准
核心目标
请求量
成功率
耗时
常用监控软件
Zabbix
适合85%以上的泛互联网企业。
Nagios
适合复杂IT环境的企业
Ganglia
适合大型服务集群监控
Zenoss
企业级智能监控软件
Open-falcon
小米开源
监控宝
移动监控服务产品
360网站服务监控
站长免费使用,提供http监控、ping监控、域名dns监控、服务器监控
阿里云监控
阿里云用户
百度云观测
个人站长可用
promethus
JVM性能调优监控工具
jps
-q 不输出类名、Jar名和传入main方法的参数<br>-m 输出传入main方法的参数<br>-l 输出main类或Jar的全限名<br>-v 输出传入JVM的参数
root@ubuntu:/# jps -m -l<br>2458 org.artifactory.standalone.main.Main /usr/local/artifactory-2.2.5/etc/jetty.xml<br>29920 com.sun.tools.hat.Main -port 9998 /tmp/dump.dat<br>3149 org.apache.catalina.startup.Bootstrap start<br>30972 sun.tools.jps.Jps -m -l<br>8247 org.apache.catalina.startup.Bootstrap start<br>25687 com.sun.tools.hat.Main -port 9999 dump.dat<br>21711 mrf-center.jar
jstack
$ ps -ef | grep inyu-admin #获取应用进程<br>top -Hp 2115 #获取最耗cpu资源的线程 <br>$ pstree -p 2115 #属性显示进程关系<br>printf "%x\n" 2115 #线程id转16进制<br>$jstack 2115 | grep 843 # 获取进程堆栈信息<br>#可定位到代码协助排查故障
jmap jhat<br>
jmap -permstat pid #打印类加载器持久代信息<br>jmap -heap 21711 #打印堆内存占用情况,GC算法等<br>jmap -dump:format=b,file=/tmp/dump.dat 21711 <br>#dump进程内存信息到文件协助排查问题,可用MAT、VisualVM等工具查看<br>
jstat
jstat -gc pid 250 4 # 间隔为250ms,采样数为4:
inux系统下的最常用性能工具
top
可以查看机器CPU,内存这些情况<br>
vmstat
可对操作系统的虚拟内存、进程、CPU活动进行监控
nload
网卡流量监控工具
iftop
是类似于top的实时流量监控工具。
APM-Application Performance Management
背景:互联网业务调用愈加复杂,大规模集群业务模块之间互相调用,且不同业务可能使用的开发语言各不相同,<br>apm可以帮助分析系统性能,理解系统行为。<br>目前市场上的apm系统大多是模仿谷歌的Dapper<br>
APM核心功能
应用系统存活检测
系统指标占用检测(CPU/内存)
业务关键时间检测
服务调用跟踪
智能监控告警
监测数据持久化存储
关键技术
获取JVM关键数据
服务调用追踪
时间序列-profile
告警
开源技术
分布式跟踪系统:Zipkin<br>
http://blog.csdn.net/manzhizhen/article/details/52811600
大众点评网 CAT
Prometheus
开源的系统监控和报警工具,最初由SoundCloud推出
Hawkular
功能完备的APM系统,应用程序中嵌入Hawkular客户端,主动将采集数据通过Http或者Kafka传递给Hawkular
Pinpoint
国开源的一个功能完备的APM系统,支持JVM性能数据采集、服务Trace、告警等功能。
Appdash
用Go实现的分布式系统跟踪工具套件<br>
Apache HTrace
Cloudera开源出来的一个分布式系统跟踪框架,支持HDFS和HBase等系统。该项目目前还在孵化阶段
京东Hydra
京东开源的基于Dubbo的调用分布跟踪系统,类似ZipKin,功能不够完善。<br>
Cicada
宜人贷开源的类似ZipKin分布式跟踪系统,功能不够完善<br>
Spring Boot Admin
监控数据不能持久化存储,没有Trace功能,没有监控告警功能,但可周期性采集metrics,<br>发送给其他监控软件如slack进行告警处理,同时也可以实现监控数据存储<br>
统计分析
埋点
所谓埋点就是在应用中特定的流程收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑,<br>包括访问(Visits),访客(Visitor),停留时间(Time On Site),页面查看(Page Views,又称为页面浏览)和<br>跳出率(Bounce Rate,又可称为蹦失率)。这样的信息收集可以大致分为两种:页面统计(track this virtual page view),<br>统计操作行为(track this button by an event)。
所谓埋点就是在应用中特定的流程收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑,<br>包括访问(Visits),访客(Visitor),停留时间(Time On Site),页面查看(Page Views,又称为页面浏览)和<br>跳出率(Bounce Rate,又可称为蹦失率)。这样的信息收集可以大致分为两种:页面统计(track this virtual page view),<br>统计操作行为(track this button by an event)。
数据埋点的方式
产品研发过程中注入代码统计,并搭配相应的后台系统<br>
前端埋点
后端埋点
接入第三方的统计平台:友盟,魔方,百度移动等<br>
美团点评埋点案例
https://tech.meituan.com/2017/03/02/mt-mobile-analytics-practice.html<br>
要求:准确性、及时性、埋点效率&开发效率、动态部署&修复能力<br>
声明式埋点
将埋点代码和具体的交互和业务逻辑解耦,开发者只用关心需要埋点的控件,<br>并且为这些控件声明需要的埋点数据即可,从而降低埋点的成本
无痕埋点
声明埋点事件的唯一事件id,然后通过某种方式将业务和埋点数据关联实现
持续集成(CI/CD)
持续
频繁多次的将代码集成到master
流程
提交-测试-构建-测试-部署-回滚<br>
优点
快速发现错误<br>防止分支偏离主干太多
目的
可以快速迭代,同时可以保持高质量
持续交付
交付给质量团队或者用户<br>
持续部署
交付完成后即可部署到生产环境<br>
Jenkins
https://www.liaoxuefeng.com/article/1083282007018592
环境分离
自动化运维工具
Ansible
https://www.cnblogs.com/heiye123/articles/7855890.html
puppet
https://www.cnblogs.com/keerya/p/8040071.html#_label0
chef
https://www.ibm.com/developerworks/cn/cloud/library/1407_caomd_chef/
开发:线下开发用到服务器,错误较多<br>测试:copy线上的配置测试<br>预发:一般和线上同数据库,环境真实,预防问题发生<br>生产:真实环境
测试
TDD理论
what
单元测试驱动开发
三层含义
Test-Driven Development,测试驱动开发。<br>Task-Driven Development,任务驱动开发,要对问题进行分析并进行任务分解。<br>Test-Driven Design,测试保护下的设计改善。TDD 并不能直接提高设计能力,<br>它只是给你更多机会和保障去改善设计<br>
why
基于测试用例编码功能代码,XP(Extreme Programming)的核心实践.
一次关注一点,降低开发者负担<br>
迎接需求变化或改善代码涉及,提前澄清需求<br>
快速反馈
how
先写测试代码 ,后开发
单元测试
单元测试的标准
单元测试应该在最低的功能/参数上验证程序的正确性
单元测试过后,机器状态保持不变。
单元测试要快(一个测试运行时间是几秒钟,而不是几分钟)
单元测试要多次运行结果一致
单元测试的运行成功/失败/取消 不依赖其他的用例,要体现独立性
单元测试应该覆盖所有代码路径(包括错误路径,公开|私有方法),保证覆盖率<br>
应该集成到自动化测试框架中
单元测试应该和代码一起维护保存
测试框架
JUnit
TestNG
其他
单元测试功能点
模块接口测试<br>
局部数据结构测试<br>
路径测试<br>
错误处理测试
边界条件测试<br>
集成测试
集成测试界于单元测试和系统测试之间,起到“桥梁作用”,<br>一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”
压力测试
压力测试确立系统稳定性的一种测试方法,在软件工程、金融风险管理等领域应用比较普遍。<br>通常在系统正常运作范围之外进行,以考察其功能极限和隐患
全链路压测
A/B、灰度、蓝绿测试
虚拟化
KVM
Xen
OpenVZ
容器技术
Docker
云技术
OpenStack
文档管理
DevOps
网络
网络模型
IO
特点
当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入
场景
长连接,大批量数据传输
BIO
采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连接,<br>它接收到客户端连接请求之后为每个客户端创建一个新的线程进行链路处理 处理完成后,<br>通过输出流返回应答给客户端,线程销毁。即典型的一请求一应答通宵模型。
伪异步I/O编程:Acceptor 采用线程池替换
IO多路复用
NIO
Channel
Buffer
Selector
是select/epoll/poll的外包类,在不同的平台可能有不同的实现<br>
poll()/epoll()方法主要是监控文件描述符(内核设置状态反馈)
特点
使用一个线程发送读取数据请求,没有得到响应之前,线程是空闲的,<br>此时线程可以去执行别的任务,而不是像IO中那样只能等待响应完成
场景
短链接,小数据量传输
三种模型
Reactor单线程模型
Reactor多线程模型
主从Reactor多线程模型
AIO
须直接调用API的read或write方法即可,会返回一个带回调函数的对象
对于读操作而言,当有流可读取时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序;<br>对于写操作而言,当操作系统将write方法传递的流写入完毕时,操作系统主动通知应用程
高性能IO设计
Reactor模式/Proactor模式
http://www.kuqin.com/ace-2002-12/Part-One/Chapter-8.htm<br>http://blog.csdn.net/russell_tao/article/details/17452997
EPoll Selector
selector将用户关心的描述符集合(bitmap)拷贝到内核中,内核轮询这个集合,并更改描述符标识符<br>
<ul><li>selector最大描述符数1024,随着数量增大,轮询耗时严重</li></ul>
epoll改进了slector,将描述符集合放在红黑树,另外保存一个list存放socket和事件:事件回调机制,不用再轮询<br>
<ul><li>epoll没有描述符数量限制</li></ul>
协议
OSI七层网络协议<br>
https://www.cnblogs.com/Robin-YB/p/6668762.html<br>
TCP/IP
四层模型<br>
链路层:对0/1机型分组,定义数据帧。却让主机的物理地址,传输数据
网络层:定义IP地址,确认主机的网络位置,通过IP和MAC寻址,对网络数据包机型路由转发<br>
传输层:定义端口,确认主机上应用程序的身份,并将数据交给对应的程序处理
应用层:定于数据格式,并按照格式解读展示数据
三次握手/四次挥手
<br>
https://blog.csdn.net/whuslei/article/details/6667471/
HTTP
子主题<br>
HTTP2.0
HTTPS
TCP/UDP
TCP为什么是三次握手,不是两次?
Tcp是面向连接的,传输层通信协议<br>Udp是无连接的,不可靠的、传输层通信协议
安全
设计思想
中间件
消息中间件
消息队列
点对点
生产者发布一条消息到quene,quene中消息只能被一个客户端消费,消费后不保存消息<br>
发布订阅<br>
TOPIC:发布到topic的消息会被所有订阅者消费
发布订阅模式下,当发布者消息量很大时,显然单个订阅者的处理能力是不足的。<br>实际上现实场景中是多个订阅者节点组成一个订阅组负载均衡消费topic消息即分组订阅,这样订阅者很容易实现消费能力线性扩展。
优点
异步<br>可恢复性<br>灵活&峰值处理<br>缓存
中间件
kafka<br>
Kafka只支持消息持久化,消费端为拉模型,消费状态和订阅关系由客户端端负责维护,消息消费完后不会立即删除,会保留历史消息。<br>因此支持多订阅时,消息只会存储一份就可以了。但是可能产生重复消费的情况。
点对点
pub/sub
概念
Broker
一个kafka集群由一个或多个broker构成
Topic
简单理解为消息的类别,或者为消息的队列<br>
Partition
一个topic可以由一个或多个partition构成
Producer
消息生产者
Consumer
消息消费方,每个consumer都有consumer group(未指定则默认),<br>同一个Topic的消息只能由一个consumer group中的一个consumer消费,<br>多个consumer group可以重复消费<br>
核心概念
消息存储
消息消费后需要删除?
1.防止重复消费<br>2.保证消息队列有足够的空间,并提高利用效率<br>
kafka的消息无论是否消费都有保存
kafka的消息存储也有有限制,超出限制也要删除
1.基于时间删除/ 删除一周前的数据<br>2.基于空间删除/ 文件超过1G后删除旧的数据<br>
配置可在config/server.properties中配置
RabbitMQ
基于AMQP协议(Advanced Message Queue Protocol)
高级消息队列协议(AMQP1)是一个异步消息传递所使用的应用层协议规范。<br>作为线路层协议,而不是API(例如JMS2),AMQP客户端能够无视消息的来源任意发送和接受信息。
点对点
生产端通过路由规则发送消息到不同queue,消费端根据queue名称消费消息。<br>RabbitMQ既支持内存队列也支持持久化队列,消费端为推模型,消费状态和订阅关系由服务端负责维护,<br>消息消费完后立即删除,不保留历史消息。<br>
发布订阅
当RabbitMQ需要支持多订阅时,发布者发送的消息通过路由同时写到多个Queue,不同订阅组消费不同的Queue。<br>所以支持多订阅时,消息会多个拷贝。
rabbitMq和Kafaka对比
https://mp.weixin.qq.com/s/kEWZLhEWtd5H8t0pjBtHwg
RocketMQ
基础概念
NameServer<br>
担当注册中心角色,支持集群化部署,保证高可用<br>
保存有Topic-Queue路由配置信息<br>保存有Broker配置信息
consumer可以从NameServer获取broker的地址来获取信息
Broker
Broker向所有的注册,定时心跳(30s)<br>
子主题<br>
<b><font color="#7dcdc2">Broker和</font><font color="#c41230">NameServer</font></b>保持心跳通过tcp
<ul><li>broker同时支持消息的查询</li><li>集群内的broker间不通信</li><li>broker会将消息的<b><font color="#f15a23">TOPIC</font></b>配置同步到NameServer</li></ul>
集群部署:master和slave同步方式
slave不停的向master发消息拉取数据更新<br>
broker支持读写分离么?
消息写入一般都是master
消息的读取可以是master或者slave
master broker宕机?
4.5之前不会自动从master切到slave,需要手动切重启服务,导致服务一段时间不可用<br>
-Dledger可以实现RocketMQ的高可用主从自动切换效果<br>
-在master宕机后<b><font color="#f15a23">Dledger</font></b>会在slave机器中选举一个新的leader,耗时10s左右,
<b>Topic</b>
消息类型的集合,再写入或读取消息前,都要确认关联的topic
Consumer
从<b><font color="#7dcdc2">NameServer</font></b>拉取对应<b style="color: rgb(241, 90, 35);">Topic</b><font color="#000000">关联</font><font color="#7dcdc2" style="font-weight: bold;">Broker</font>列表<br>
消息读取过程:向broker发送请求,获取消息,broker判断从master或者slave获取消息<br>
如当前master消息同步slave尚未完成,则从master获取
如当前从master获取消息的客户端数量较大,并发情况,则会分部分请求到slave获取
<strong style="margin: 0px; padding: 0px; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif; font-size: 14px; text-align: justify; box-sizing: border-box !important; overflow-wrap: break-word !important;">Producer</strong>
从<b><font color="#7dcdc2">NameServer</font></b>拉取<b><font color="#7dcdc2">Broker</font></b>列表<br>
Producer和NameServer建立Tcp链接,<br>在发送消息前获取Topic关联的broker注册信息,<br>再根据负载均衡的策略获取需要链接的broker地址,<br>broker获取到消息,主从同步消息
模式:
<ul><li>单机模式</li></ul>
单机开发测试
<ul><li>集群模式</li></ul>
<ul><li>镜像集群模式</li></ul>
案例
如何发送有序消息
ActiveMQ
基于STOMP协议(注:我只知道是基于JMS)
Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,<br>用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。点对点与发布订阅最初是由JMS定义的
消息推送方式
push
如果消费方能力弱,容易造成消息积压
prefetch limit<br>设置消息推送限制,具体数量视情况而定<br>
消息消费后,返回ACK后,推送下一条消息<br>ack反馈,可设置消费一条反馈一次,消费一批反馈一次(提高效率)
如果prefetchACK为true,那么prefetch必须大于0;当prefetchACK为false时,你可以指定prefetch为0以及任意大小的正数。<br>不过,当prefetch=0是,表示consumer将使用PULL(拉取)的方式从broker端获取消息,broker端将不会主动push消息给client端,<br>直到client端发送PullCommand时;<br>当prefetch>0时,就开启了broker push模式,此后只要当client端消费且ACK了一定的消息之后,会立即push给client端多条消息
pull
prefectLimit=0,则模式为pull 客户端拉取模式
同步获取消息
ActiveMQMessageConsumer的receive()方法
异步获取消息
消费者实现MessageListener接口,监听消息
消息顺序<br>
保证消息消费有序
消息发送有序
通信
Dubbo
Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)
核心配置<br>
dubbo:service
服务配置-发布一个服务<br>
用户定义服务元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心<br>
dubbo:reference
服务饮用配置
创建一个远程服务代理,一个服务可以指向多个注册中心
dubbo:protocol
协议配置
配置提供服务的协议信息,协议由提供方指定,消费方被动接收
dubbo:application
应用配置
配置当前应用信息
dubbo:module
应用模块
可空
dubbo:registry
注册中心
链接注册中心的配置信息
duubo:monitor
监控中心
用于配置监控中心的配置-可空
dubbo:consumer
服务消费方配置
dubbo:provider
服务提供方
dubbo:method
服务方法的配置
dubbo:argument
参数配置
支持的协议
dubbo-默认
dubbo缺省协议,采用一长连接和NIO异步通讯,适用于小数据量大并发的服务调用<br>以及消费机器远大于服务提供方的情况
不适合传送大数据量的服务,如文件 视频等,除非请求量很低
<!--设置默认协议: --><br><dubbo:provider protocol="dubbo" /><br><!-- 设置服务协议: --><br><dubbo:service protocol="dubbo" />
RMI
采用jdk标准实现,采用的阻塞式短链接和jdk标准序列化
多连接-短连接-tcp协议,同步传输
如使用rmi提供服务,且应用依赖common-collections包,存在反序列化安全风险
<!-- 定义 RMI 协议: --><br><dubbo:protocol name="rmi" port="1099" /><br><!--设置默认协议: --><br><dubbo:provider protocol="rmi" /><br><!-- 设置服务协议: --><br><dubbo:service protocol="rmi" />
http
基于http表单的远程调用协议
多链接-短链接-http协议-同步传输
<!-- 配置协议:--><br><dubbo:protocol name="http" port="8080" /><br><!-- 配置 Jetty Server (默认):--><br><dubbo:protocol ... server="jetty" /><br><!-- 配置 Servlet Bridge Server (推荐使用): --><br><dubbo:protocol ... server="servlet" />
webservice
基于webservice的远程调用协议,可以和标准webService交互
多连接-短连接-HTTP-同步传输
<!-- 配置协议: --><br><dubbo:protocol name="webservice" port="8080" server="jetty" /><br><!-- 配置默认协议:--><br><dubbo:provider protocol="webservice" /><br><!-- 配置服务协议:--><br><dubbo:service protocol="webservice" />
hessian
Hession协议用于集成Hession服务,底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现
dubbo的Hession服务和标准的Hession服务可以直接交互
特点-多链接/短链接/http/同步传输
<!-- 定义 hessian 协议: --><br><dubbo:protocol name="hessian" port="8080" server="jetty" /><br><!--设置默认协议: --><br><dubbo:provider protocol="hessian" /><br><!-- 设置 service 协议: --><br><dubbo:service protocol="hessian" />
thrift
基于原生thrift协议的扩展
memcached
基于memcached的rpc协议
redis
基于 Redis实现的 RPC 协议
注册
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();<br>Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));<br>registry.register(URL.valueOf("redis://10.20.153.11/com.foo.BarService?category=providers&dynamic=false&application=foo&group=member&loadbalance=consistenthash"));<br>
架构组件
架构图
调用过程
-
dubbo服务集群配置-集群容错
I Failover Cluster(默认)
失败自动切换,失败后重试其他服务器,通常用于读操作
<dubbo:service retries="2" cluster="failover"/><br>或:<dubbo:reference retries="2" cluster="failover"/><br>cluster="failover"可以不用写,因为默认就是 failover
Failfast Cluster
快速失败,只发起一次调用,失败即报错,通常用于非幂等性的写操作
Failback Cluster
失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知
常见问题
服务提供者能实现失效踢出是什么原理
服务调用是阻塞的么
Netty
子主题
gRpc
Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,<br>基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。本身它不是分布式的,<br>所以要实现上面的框架的功能需要进一步的开发。
Thrift<br>
Apache的一个跨语言的高性能的服务框架,也得到了广泛的应用。
motan
新浪微博开源的一个Java 框架。它诞生的比较晚,起于2013年,2016年5月开源。<br>Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。
rpcx
Go语言生态圈的Dubbo, 比Dubbo更轻量,实现了Dubbo的许多特性,<br>借助于Go语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。
服务器
Tomcat
Jetty
Nginx
服务端缓存
redis
数据结构
存储对象底层结构
REDIS_ENCODING_INT long 类型的整数<br>REDIS_ENCODING_EMBSTR embstr 编码的简单动态字符串(redis3.0添加)<br>REDIS_ENCODING_RAW 简单动态字符串<br>REDIS_ENCODING_HT 字典<br>REDIS_ENCODING_LINKEDLIST 双端链表<br>REDIS_ENCODING_ZIPLIST 压缩列表<br>REDIS_ENCODING_INTSET 整数集合<br>REDIS_ENCODING_SKIPLIST 跳跃表和字典
string
可选:int / raw / embstr
string类型的抉择
对象可转long 用 int
length<39用embstr 否则用raw
embstr对比raw
embstr只分配一次内存
raw需要分配两次:sds&object,释放时也需要两次
SDS(Simple Dynamic String)简单动态字符串,它是由C语言完成
应用场景
基本缓存功能,利用redis的支持的高并发在db间做缓存屏障<br>
计数器,点赞数等数据,可以异步定时缓存这些非及时数据到db
共享用户session,redis高效更新获取用户session,提高响应效率<br>
分布式锁
List
可选:ziplist / linkedlist
zipList
ziplist是一种压缩链表,好处是更能节省内存空间,因为它所存储的内容都是在连续的内存区域当中的。<br>当列表对象元素不大,每个元素也不大的时候,就采用ziplist存储。但当数据量过大时就ziplist就不好用了。<br> 因为为了保证他存储内容在内存中的连续性,插入的复杂度是O(N),即每次插入都会重新进行realloc。<br>对象结构中ptr所指向的就是一个ziplist。整个ziplist只需要malloc一次,它们在内存中是一块连续的区域
malloc : 作用是在内存的动态存储区中分配一个长度为size的连续空间<br>realloc : realloc函数用于修改一个原先已经分配的内存块的大小,可以使一块内存的扩大或缩小
linkedList
双向链表。它的结构比较简单,节点中存放pre和next两个指针,还有节点相关的信息。<br>当每增加一个node的时候,就需要重新malloc一块内存
应用场景
消息队列:redis阻塞链表可以很好支持,rPush,lPop
排行榜等列表数据
对于频繁变更且有分页的数据,推荐使用sorted set/list变更后获取分页lrange,容易有重复值
hash
可选:ziplist或者hashtable
zipList
hashTable
由dict结构实现
dict对象的 dictht ht[2]<br>dicht[0] 是用于真正存放数据,<br>dicht[1]一般在哈希表元素过多进行rehash的时候用于中转数据
应用场景
购物车场景,(key,filed,value)=(用户id,商品id,商品数量)<br>
set
可选:intset或者hashtable
hashTable
intSet
整数集合,存储同类型数据,支持三种长度的整数: int16_t/int32_t/int64_t
查找元素时间复杂度:O(logN)<br>插入数据时间复杂度不一定为O(logN);<br>如果插入数据int32_t数据到int_16集合中,涉及到集合的升级,把int16转为32,重新分配内存<br>插入int16到int32集合中,不会集合类型降级
应用场景
黑/白名单
关注/粉丝 名单
zset(sorted set)
可选: ziplist 或者 skipList&dict
skiplist&dict
skiplist:跳表,实现了快速查找,大多情况下和平衡树查不多,可以作为替代品
ziplist
ziplist作为集合和作为哈希对象是一样的,member和score顺序存放。<br>按照score从小到大顺序排列
应用场景
排行榜,可以根据score排序<br>
高级数据结构
bitmap
hypelogs
geo
redis持久化
RDB
可以指定时间间隔生成数据集的备份文件/可以指定不同的时间间隔
优点
<span style="font-size: 12px;">· rdb数据结构紧凑,可以指定多时间点进行数据备份/在恢复时有多版本</span><br><span style="font-size: inherit;">· rbd是一份内容紧凑的</span>数据<span style="font-size: inherit;">,方便数据加密传输备份<br></span>· rdb数据备份性能更好,fork出来一个子线程来备份,不影响主线程工作<br><span style="font-size: inherit;">· rdb的数据恢复速度比较快;当数据修改较多时尤为显著</span>
缺点
rdb不能尽量保证数据的完整性:容易丢失时间间隔内的数据
每次保存 RDB 的时候,Redis 都要 fork() 出一个子进程,并由子进程来进行实际的持久化工作。 <br>在数据集比较庞大时, fork() 可能会非常耗时,造成服务器在某某毫秒内停止处理客户端;<br> 如果数据集非常巨大,并且 CPU 时间非常紧张的话,那么这种停止时间甚至可能会长达整整一秒。<br> 虽然 AOF 重写也需要进行 fork() ,但无论 AOF 重写的执行间隔有多长,数据的耐久性都不会有任何损失
fork失败案例<br>redis存储类14G数据,内存只有16G
<b><font color="#c41230">fork</font></b>
fork()系统调用是Unix下以自身进程创建子进程的系统调用,一次调用,两次返回,如果返回是0,则是子进程,<br> 如果返回值>0,则是父进程(返回值是子进程的pid),这是众为周知的。 <br>还有一个很重要的东西是,在fork()的调用处,整个父进程空间会原模原样地复制到子进程中,<br> 包括指令,变量值,程序调用栈,环境变量,缓冲区,等等。
AOF
记录所有写操作到log文件,以追加的形式写入,恢复时可以执行log中的数据集<br>可以rewrite.来调整log文件大小
优点
1.fsync策略可以设置每次写入/每秒执行,最小损失数据同步<br>2. redis-check-aof 可以对写入有问题的命令进行修复<br>3.aof文件过大时,redis会对文件重写,以最小命令集来压缩文件大小,<br> 并且会在重写后替换现有的aof文件,不用担心期间异常导致的数丢失<br>4.aof文件即便再flushall后仍可恢复/修改aof,删掉最后的命令
缺点
1.相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积<br>2.使用的fsync aof速度慢于rdb
<font color="#c41230">事件</font>
AOF 在过去曾经发生过这样的 bug : 因为个别命令的原因,导致 AOF 文件在重新载入时,无法将数据集恢复成保存时的原样。<br> (举个例子,阻塞命令 BRPOPLPUSH 就曾经引起过这样的 bug 。) <br>测试套件里为这种情况添加了测试: 它们会自动生成随机的、复杂的数据集, 并通过重新载入这些数据来确保一切正常。 <br>虽然这种 bug 在 AOF 文件中并不常见, 但是对比来说, RDB 几乎是不可能出现这种 bug 的。
基于内存的
为什么这么快
单线程
不用切换线程上下文
数据结构简单
底层模型不同
它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,<br>因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求
多路IO复用模型,非阻塞
多路I/O复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,<br>当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),<br>并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作
基于数据存储的/基于硬盘/基于内存/基于cpu缓存 做对比
QPS数据
<img src="https://img-blog.csdn.net/2018030715491722?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDg3MDUxOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt="è¿éåå¾çæè¿°">
内存淘汰机制
noeviction -> 不做任何处理,只在写入时 ,提示错误<br>volatile-ttl -> 删除最近到期的key<br>allkeys-random -> 随机删除任意key<br>volatile-random -> 删除具有过期时间的随机秘钥<br>allkeys-lfu -> 移除最近最少使用的key <font color="#c41230">默认</font><br>volatile-lfu -> 在设置了过期时间的键空间中,移除最近最少使用的key<br>allkeys-lru -> 移除最少使用的key<br>volatile-lru -> 在设置了过期时间的键空间中,移除最少使用的key
redis常见性能问题和解决方案
(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件<br>(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次<br>(3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内<br>(4) 尽量避免在压力很大的主库上增加从库<br>(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...<br>这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。
如何保证缓存数据一致性问题?
读取:先读缓存,后读数据库<br>写入:先写数据库,后删除缓存【缓存刷新成本不固定,按缓存读取实际情况而定】
实例
redis分布式锁
实现:
setnx:set not exist
分布式锁-续约问题
watchDog-看门狗
<ul><li>如果拿到分布式锁的节点宕机,且这个锁正好处于锁住的状态时,会出现锁死的状态,为了避免这种情况的发生,锁都会设置一个过期时间。这样也存在一个问题,加入 一个线程拿到了锁设置了30s超时,在30s后这个线程还没有执行完毕,锁超时释放了,就会导致问题,Redisson给出了自己的答案,就是 watch dog 自动延期机制。</li><li>Redisson提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期,也就是说,如果一个拿到锁的线程一直没有完成逻辑,那么看门狗会帮助线程不断的延长锁超时时间,锁不会因为超时而被释放。</li><li>默认情况下,看门狗的续期时间是30s,也可以通过修改Config.lockWatchdogTimeout来另行指定。</li><li>另外Redisson 还提供了可以指定leaseTime参数的加锁方法来指定加锁的时间。超过这个时间后锁便自动解开了,不会延长锁的有效期。</li></ul>
redis-session共享
分布式session共享问题
redis-消息队列
消息队列
client
jedis
同步阻塞
lettuce
基于nettty异步非阻塞
redission
watchdog
基于nettty异步非阻塞
哨兵模式
哨兵就会自动地对配置的master-slave进行管理,在master发生故障时,及时地提升slave为新的master,保证可用性。
1.在sentinel.conf文件中配置主从机器以及权重,权重是在主服务器失效后计算重新选取新的主节点
2.Sentinel每秒会向master发送ping,(验证最后一次回复时间间隔-可修改)来验证节点是否正常服务
3.当主节点被一个Sentinel被标记为不正常,其他的sentinel机器也会每秒1次发请求验证<br> 当大于指定比例sentinel机器验证节点不正常,则标记为客观下线
3.1 master被标记为客观下线,sentinel会向master下的slave机器发送info验证,由10次/S改为1次/S
4. 期间若master的ping命令有效回复,则会移除下线状态
tair
分布式
集群架构
必须有 configServer,dataServer,client ,可选模块 invalidserver<br>
configServer
1) 通过维护和dataserver心跳来获知集群中存活节点的信息<br>2) 根据存活节点的信息来构建数据在集群中的分布表。<br>3) 提供数据分布表的查询服务。<br>4) 调度dataserver之间的数据迁移、复制。<br>
DataServer
1) 提供存储引擎<br>2) 接受client的put/get/remove等操作<br>3) 执行数据迁移,复制等<br>4) 插件:在接受请求的时候处理一些自定义功能<br>5) 访问统计
invalidServer
1) 接收来自client的invalid/hide等请求后,对属于同一组的集群(双机房独立集群部署方式)<br> 做delete/hide操作,保证同一组集群的一致。<br>2) 集群断网之后的,脏数据清理。<br>3) 访问统计<br>
client
1) 在应用端提供访问Tair集群的接口。<br>2) 更新并缓存数据分布表和invalidserver地址等。<br>3) LocalCache,避免过热数据访问影响tair集群服务。<br>4) 流控
使用场景
缓存使用
<ul><li>使用key/value格式存储</li><li>接受数据丢失</li><li>数据访问速度快</li><li>单条数据存储大小在10KB下</li><li>数据变更不频繁</li><li>数据量很大,有极大增长可能性</li></ul>
持久化使用
<ul><li>使用key/value格式存储</li><li>数据需要持久化</li><li>单条数据存储大小在10KB下</li><li>数据读写比例较高</li><li>数据量很大,有极大增长可能性</li></ul>
不适合
读写比例低<br>单条数据大小过大<br>数据需要模糊查询,或者根据value反差key
tair对比redis
<br>
memcache
分布式对象缓存
特点
<ul><li>协议简单</li><li>基于内存存储方式</li><li>基于libevent事件处理</li><li>memcached不互相通信的分布式</li></ul>
libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。<br>即使对服务器的连接数增加,也能发挥O(1)的性能。<br> memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。
<ul><li>高并发处理</li><li>大数据量的处理</li></ul>
工作原理
内存结构<br>
https://blog.csdn.net/liyongming1982/article/details/13168649<br>
<ul><li><span style="font-size: inherit;">slab_class里,存放的是一组组chunk大小相同的slab</span></li><li><span style="font-size: inherit;">每个slab里面包含若干个page,page的默认大小是1M,如果slab大小100M,就包含100个page</span></li><li><span style="font-size: inherit;">每个page里面包含若干个chunk,chunk是数据的实际存放单位,每个slab里面的chunk大小相同</span></li></ul>
内存分配
利用slab allocation机制来分配和管理内存<br>将分配的内存分割成等长内存块,再把等长内存块分成组(可事前指定块大小)<br>数据存储时,按键值大小匹配slab,就近存放,存在空间浪费情况
存放数据,先申请slab内存,申请的内存以page为单位,存放第一个数据时,无论大小都会有1M大小的page分配给slab<br>申请到page后会按照chunk大小切分,变成一个chunk组,用于存放数据
每个slab-->page中的chunk等长,不同的slab的chunk大小是可指定<font color="#c41230">增长因子的,默认1.25</font><br>
图片参考<br>https://segmentfault.com/a/1190000012950110#articleHeader2<br>
内存回收
当数据容量用完MemCached分配的内存后,就会基于LRU(Least Recently<br>Used)算法清理失效的缓存数据(放入数据时可设置失效时间),或者清理最近最少使用的缓存数据,然后放入新的数据。<br>
在LRU中,MemCached使用的是一种LazyExpiration策略,自己不会监控存入的key/vlue对是否过期,<br>而是在获取key值时查看记录的时间戳,检查key/value对空间是否过期,这样可<b><u><font color="#55beed">减轻服务器的负载</font></u></b><br>
如果如果MemCache启动没有追加-M,则表示禁止LRU,这种情况下内存不够会报Out Of Memory错误。
存在问题:
内存分配会存在空间浪费,但是避免了管理内存碎片的问题
内存回收LRU不针对全局,针对slab
存放value数据大小限制,slab会先以page为单位申请内存:1MB,所以value不能大于1M
分布式
客户端可能会对应多个MemCached服务器来提供服务,这就是MemCached的分布式。
server端由C实现,单线程/单进程/异步IO,基于libevent作为事件通知<br>
不同server端的数不互相通信,保存的数据也不同
保存/获取数据,会对key值经过算法,来确认数据存在哪一台服务器
算法:
余数算法
先求得键的整数散列值(也是就键string的HashCODE值 什么是HashCode)<br>再除以服务器台数,根据余数确定存取服务器,这种方法计算简单,高效,<br>但在memcached服务器增加或减少时,几乎所有的缓存都会失效
一致性hash算法<br>散列算法
先算出MemCached服务器的散列值,并将其分布到0到2的32次方的圆上,然后用同样的方法算出存储数据的键的散列值并映射至圆上,最后从数据映射到的位置开始顺时针查找,将数据保存到查找到的第一个服务器上,如果超过2的32次方,依然找不到服务器,就将数据保存到第一台MemCached服务器上。如果添加了一台MemCached服务器,只在圆上增加服务器的逆时针方向的第一台服务器上的键会受到影响。
MemCached线程管理
MemCached网络模型是典型的单进程多线程模型,采用libevent处理网络请求,主进程负责将新来的连接分配给work线程,work线程负责处理连接,有点类似与负载均衡,通过主进程分发到对应的工作线程。
默认有7个线程,4个主要的工作线程,3个辅助线程,线程可划分为以下4种<br>
主线程:负责memcached服务器初始化,监听TCP,Unix Domain连接请求<br>
工作线程池:线程池数量4可通过启动参数修改,负责TCP/UDP UNIX域套接口链路上的请求<br>
assoc维护线程:服务端内存中维护一张巨大的hash表,该线程负责维护
alsb线程:内存管理模块,负责class中slab的平衡,启动中可关闭
memcache全面解析
https://blog.csdn.net/u010282707/article/details/12912045<br>
总体来说
memcache中存储的item个数是没有限制的,只要内存足够
memccache单进程在32位机器中最大使用内存是2G,64位没有影响
<font color="#00a650">key的最大长度250字节,超长无法存储</font>
单个value最大1M,超过无法存储
不能遍历服务端中的所有数据,这会阻塞其他操作,且速度很慢
存入key值时候,expire=0不失效,其实在30天后会失效
memcache的高性能源自于两段式hash结构:<br> 1-客户端hash算出key值存储节点<br> 2-服务端hash 找到真正的item返回客户端<br>非阻塞,基于事件的服务端程序
操作系统
进程,线程,协程
定义
进程:是具有一定独立功能的程序关于某个数据集合上的<br>一次运行活动,进程是系统进行资源分配和调度的基本单位。<br> 每个进程都有自己独立的内存空间,由于进程比较<br>重量,占据独立的内存,所以上下文进程间切换开销比较大
线程:线程是进程的一个实体,是CPU调度和分派的基本单位,是比进<br>程更小的能独立运行的基本单位线程自己基本不拥有系统资源,<br> 只拥有一点在运行中比不可少的资源(如程序计数器,寄存器和栈)
协程:协程是一种用户态的轻量级线程,协程的调度完全由用户控制。<br>协程拥有自己的寄存器和栈。协程调度切换<br>时,将寄存器和栈保存在其他地方,在切回<br>来的时候,恢复先前保存的寄存器上下文和栈,基本没有<br>内核切换的开销,可以不加锁,所以上下文切换非常快
比较
进程和线程的比较:<br><span style="font-size: 13px;">1. 进程是系统资源分派和调度的基本单位,而线程是CPU</span><span style="font-size: 13px;">调度和分派的基本单位;<br></span><span style="font-size: 13px;">2. 进程拥有自己独立的资源,而线程是进程的一个实体,共享进程的资源,自己只拥有极少的资源;</span>
线程和协程的区别:<br>协程是用户态轻量级线程,能由用户控制切换,切换开销较小,而线程的切换<br>不能由用户控制并且切换开销较大
Spring
Ioc容器
BeanFactory
Application Content
Spring Bean
定义
xml < id ='' class='' />
参数
作用域
singleton:单例容器内只会初始化一次
prototype:每次容器内的调用都会创建一个新的实例
request:每次http请求都会创建一次对象<br>
session:每个http-session共享一个bean,不同session间不共享<br>
global-session:一般用于Portlet应用环境,该运用域仅适用于WebApplicationContext环境<br>
生命周期
定义继承
Aop切面
动态代理
jdk:只能针对实现接口的方式实现代理
<ul><li><span style="font-size: inherit;">通过实现InvocationHandler接口创建自己的调用处理器;</span></li><li><span style="font-size: inherit;">通过为Proxy类指定ClassLoader对象和一组interface来创建动态代理</span></li><li><span style="font-size: inherit;">通过反射机制获取动态代理类的构造函数,其唯一参数类型就是调用处理器接口类型;</span></li><li><span style="font-size: inherit;">通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数参入;</span></li></ul>
cglib:通过指定类继承实现子类,实现代理
利用ASM开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。
spring事务
MVC
SpringMVC是一款轻量级WEB开发框架,将web层分为Model/View/Control三层,职责解耦/简化开发<br>
MVC的处理流程
<img src="data:image/png;base64,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" alt="">
设计模式
工厂模式
https://blog.csdn.net/Fly_as_tadpole/article/details/88326807
单例模式
三种单例模式
双重锁
策略模式
解决多if/else问题
适配器模式
通过调用接口通用方法,底层实现对不同实现类的调用<br>调用-播放器,区分mp3/mp4的接口
观察者模式
被观察者保留观察者对象引用,再变更后,通过引用触发变更通知
模板模式
抽象类中定义调用的方法A-包含多个抽象方法BCD,子类实现定义的抽象方法,再调用A时会执行BCD方法
数据库
mysql
数据库三大范式
子主题
索引
优点
<ul><li>索引大大减少了MySQL服务器需要扫描的数据量。 <br></li><li>索引可以帮助服务器避免排序和临时表。 <br></li><li>索引可以将随机I/O变为顺序I/O。<br></li></ul>
缺点
① 创建索引和维护索引需要时间成本,这个成本随着数据量的增加而加大<br>② 创建索引和维护索引需要空间成本,每一条索引都要占据数据库的物理存储空间,<br> 数据量越大,占用空间也越大(数据表占据的是数据库的数据空间)<br>③ 会降低表的增删改的效率,因为每次增删改索引需要进行动态维护,导致时间变长<br>
类型
常规索引/主键索引/唯一索引/全文索引/外键索引
聚簇索引/聚集索引
<font color="#00a650">定义</font>:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引
<font color="#5c5c5c">mysql 主键默认</font><font color="#00a650">聚集索引<br></font>在已有数据上建立聚集索引,因为聚集索引的物理顺序性,会比较耗性能
非聚簇索引/非聚集索引
定义:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,一个表中可以拥有多个非聚集索引。<br>
按定义,除了聚集索引以外的索引都是非聚集索引,只是人们想细分一下非聚集索引,分成普通索引,唯一索引,全文索引。<br>如果非要把非聚集索引类比成现实生活中的东西,那么非聚集索引就像新华字典的偏旁字典,他结构顺序与实际存放顺序不一定一致。
非聚集索引的二次查询问题
立两列以上的索引,即可查询复合索引里的列的数据而不需要进行回表二次查询,<br>如index(col1, col2),
数据结构
B Tree
适用范维索引
默认使用B+树索引
定义
B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接。
Hash
实现方式
key=(索引列).hash
value =(索引列).行对应指针
局限性
hash的全匹配,不支持部分匹配, 不能用like
不适用于排序,不能顺序存储
hash冲突的代价
索引失效场景
查询包含计算 y=3+2
like “%”在前会使索引失效
包含隐式转换的条件:查找列为varchar,条件为 int,在查找时会转为varchar
!= <> 可能导致不走索引
存储引擎
MyISAM <br>发音为 "my-z[ei]m"<br>
B+Tree作为索引结构
非聚簇索引
<font color="#c41230">不持支事务</font>&只支持<font color="#c41230">表锁</font>
自增列必须是索引,组合索引<font color="#c41230">不必</font>第一位
<font color="#c41230">可以</font>无主键,无索引
保存有总行数,count(*) 可以<font color="#c41230">立即返回</font>,有wherel两种效率都一样
支持FULLTEXT类型的<font color="#c41230">全文索引</font>
索引保存:以<font color="#c41230">表名+.MYI文件</font>分别保存
InnoDB
B+Tree作为索引结构
聚簇索引
子主题
<font color="#c41230">支持事务</font>&<font color="#c41230">行锁</font>
Innodb的行锁模式有以下几种:共享锁,排他锁,意向共享锁(表锁),意向排他锁(表锁),间隙锁
防止死锁
数据库参数
程序中约定代码读取顺序一致
处理一张表时,尽量保证顺序一致
调整事务隔离级别/ 避免两个事务同时操作一行不存在的数据,容易发生死锁
自增列必须是索引,组合索引<font color="#c41230">必须</font>第一位
没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见)
没有保存总行数,需要<font color="#f15a23">遍历表,效率低</font>
<font color="#c41230">不支持</font>FULLTEXT类型的全文索引,可以使用<font color="#c41230">sphinx插件</font>支持全文索引
索引保存:索引和数据一起保存在<font color="#c41230">表中</font>
补充
查看引擎
show create table table_name;
修改表引擎
alter table tablename <font color="#c41230">type</font>=innodb;或者使用 alter table tablename <font color="#c41230">engine</font> = innodb;
innodb是开启自动提交的,如何提高性能
多条语句绑定一个事物,减小数据库开销
避免死锁
一个事务获取排他锁||意向排他锁后尽量减少程序运算,减少锁持有时间
使用where查询,尽量走索引,尽量避免获取意向排他锁
区别补充
琐事
行锁
what
只对表中<font color="#c41230">当前行</font>进行锁定,表中其他的未锁定行仍然可以被操作
行锁是mysql最小粒度的锁,减少了数据的操作冲突,但是实现的成本有点高
容易发生<font color="#c41230">死锁</font>
定义
where语句,操作主键索引时,会锁定主键索引;<br>操作非主键索引时,会先锁定非主键索引,然后锁定关联的主键索引;
实例
表TEST( id , name , age){ id 主键}
update name='after' where id ='1'<br>T1:先锁定 主键索引 【id】,<br>T2:并发-- 去锁定 非主键索引 【name】<font color="#c41230">-->死锁</font>
update name ='after' where name ='before'<br>T1:先锁定非主键索引 【name】<br>T2:并发-- 去锁定 主键索引 【id】<font color="#c41230">-->死锁</font><br>
优点
· 有许多线程访问不同的行时,只存在少量的冲突。<br>· 回滚时只有少量的更改<br>· 可以长时间锁定单一的行
缺点
· 相对页级锁&表级锁 占用更多内存
· 当表中大部分行在使用中时,效率会比较慢(需要获取更多的锁)
再大部分数据上面使用GROUP BY,效率较低(比表级锁和页级锁慢)
表锁
what
直接锁定整张表,不允许其他的写操作,如果锁定的是写锁,不允许其他的读操作
write:表上无锁-落锁,有锁-添加到<font color="#c41230">写</font>锁队列中<br>read:表上无锁-落锁,有锁-添加到<font color="#c41230">读</font>锁队列中<br>
表中锁释放后,写锁队列先获取表,然后读锁队列获取<br>ex:当对表有大量更新时,只有更新完成才能查到;
不会发生死锁
<font color="#c41230">死锁</font>案例
事务1, 锁表A,--> 后续锁表B=【死锁】<br>事务2, 锁表B,--> 后续锁表A=【死锁】<br>
乐观锁
乐观认为每次操作都不会有冲突,不加锁,更新后判断是否有冲突
乐观锁需要自己实现:<br><ol><li><span style="font-size: 12px;"> 一般实现表中加seq字段</span></li><li><span style="font-size: 12px;">每次update前,seq+1</span></li><li><span style="font-size: 12px;">更新时对比结果seq == db.seq</span></li><li><span style="font-size: 12px;">true--更新 ; false -- 不更新</span></li></ol>
悲观锁
悲观的认为每次变更都会有操作冲突,只有获取锁才能对数据进行操作
共享锁
对某一资源加共享锁,自身可以读该资源,其他人也可以读该资源(也可以再继续加共享锁,即共享锁可多个共存),<br>但无法修改。要想修改就必须等所有共享锁都释放完之后。<br>语法为:select * from table <font color="#c41230">lock in share mode</font>
排他锁
对某一资源加排他锁,自身可以进行增删改查,其他人无法进行任何操作。<br>需要执行的语句后面加上<font color="#c41230">for update</font>就可以了
页锁
行锁:速度较快,冲突比较多;<br>表锁:速度慢,冲突少;<br>页锁:介于两者之间,一次锁定相邻的一组数据
优化
让sql语句查询mysql服务器的缓存:<br>语句中包含SQL函数都不会开启查询缓存<br>EX: now()/CURDATE()
当知道结果只有一个时候,语句加上:LIMIT 1 【查到1条就停止】<br>当数据量越大,效果越好
select (条件...)代替 *
永远为每张表设置一个ID,设置 AUTO_INCREMENT
尽可能的设置字段为 NOT NULL
NULL 在保存的时候也需要额外的空间,<br> 在比较的时候也很复杂
把ip地址存储为UNSINGN INT
要使用这样的WHERE条件:IP between ip1 and ip2。<br>我们必需要使用UNSIGNED INT,因为 IP地址会使用整个32位的无符号整形。<br>而你的查询,你可以使用 INET_ATON() 来把一个字符串IP转成一个整形,并使用 INET_NTOA() 把一个整形转成一个字符串IP。在PHP中,也有这样的函数 ip2long() 和 long2ip()。
查询优化,<br><ul><li>尽量<font color="#00a650">减少查询条件</font>,</li><li>尽量<font color="#16884a">走索引</font>,</li><li>尽量<font color="#00a650">避免全表扫描,</font></li><li><font color="#000000">尽量</font><font color="#00a650">减少模糊查询 like "%**%"</font></li></ul>
<font color="#16884a">索引失效?</font>
对索引列进行判空, is NULL / is NOT NULL
对索引字段进行模糊查询 like %
对索引字段 进行<font color="#c41230">比较【!=】 运算【+1】</font>
以下用法:<> 、not in、not exist、!=
建议主键设置自增id<br>
提高数据如插入效率<br>减少二级缓存的索引存储空间
请使用innodb引擎,支持行锁,Myisam只支持表锁
时间类型:优先使用dateTime(8bite),TimeStamp(4bite)
不要给每一列都添加索引,优先给where的条件,order by 、group by 的条件添加索引
like查询,like ‘%name%’ 无法使用索引,like ‘name%’ 阔以使用索引
主从复制
提高可用性,与数据的安全可靠性(master/slave)<br>master负责读写,slave只负责读
架构
一主多从
主节点故障,风险较大
双主双从
过程
1.master改动,写入二进制文件中<br>2.slave间隔时间内对master服务器上的二进制文件禁写探测<br>3.文件变化,slave请求IO线程获取master二进制日志<br>4.master为每个IO线程启动dump thread 发送二进制日志<br>5.slave接收二进制日志到本中继日志中<br>6.slave读取中继日志,本地回房,保证和master数据一致<br>7.IO thread和 dump thread 睡眠,等待唤醒<br>
多实例配置
一台linux安装一个mysql,启动多个mysql数据库实例,而不需要安装多个
子主题
noSql
MongoDB
第一章 简介<br>
特征
面向文档
BSON格式(二进制json)
支持Ad hoc查询的nosql<br>
即席查询
索引
B树
LSM树
3.2版本可用
支持为字段添加二级索引,每个集合允许64个索引<br>
持久化
写日志文件(bin log?)
默认开启 100ms写一次<br>
存储引擎
WireTiger
扩展
基于范围分片
只在分片节点内冗余数据
基于hash和tag分片
复制
集合内可复制
自动容灾
工具
mongodump /mongosniff /mongostat /mongotop 等等
应用场景
可变的schema
数据集大小超过内存,会开始访问磁盘,速度变慢,mmap
第二章 mongo命令行<br>
CRUD
创建<br>
insert()
mongo中的库、集合在第一次插入数据时才会创建,不用手动创建
查询
find()/count()
条件关键字 $AND $OR $LT $GT<br>
pretty()格式化
更新
update()
$set指定更新内容,否则执行替换更新<br>
$unset去掉指定字段
$push更新集合
删除
drop()
删除集合
remove()
删除文档<br>
高级查询<br>
explain()
参数:<br>
explain(工作模式)
关键输出:
totalKyesExamined 用到的索引数<br>
totalDocsExcamined 遍历文档数<br>
executionTimeMills 执行时间<br>
索引
createIndex()
参数:{ 索引字段:索引名}<br>
getIndexes()
数据库命令<br>
db.stats()
数据库信息<br>
db.cols.stats()
集合信息<br>
db.currentOp()
监控当前操作
db.serverStatus()
集群维度的统计信息
connections
"connections" : {<br> "current" : <num>,<br> "available" : <num>,<br> "totalCreated" : <num>,<br> "active" : <num><br>}
命令执行原理
db.runCommand()
执行内建命令的函数
$cmd<br>
内建命令集合
命令帮助
db.help()
查看命令源码
输入命令 但是不加括号<br>eg: 输入db.cols.save查看save()源码 <br>
第三章 ruby驱动<br>
mongo驱动作用
生成对象ID
时间+机器id+进程+计数器(4+3+2+3=12bytes)
对象和BSON格式之间转换
和数据库建立TCP连接
第四章 为业务设计mongo数据库<br>
设计schema的技巧
设置唯一“主键”
设置一个slug字段,让它做唯一索引,保存一个便于阅读理解的key
比如商品编号 "IPhoneUsbCharger-34212"<br>
不用ObjectId,因为ObjecID是一串无意义的字符<br>
表示关联关系
因为mongo不支持join连接,所以可以直接把被关联的对象的信息保存在数据文档中<br>(<b>也可以按关联对象的id查询,直接保存只是减少查询次数&最好保存不经常变动的信息)</b>
比如 每个子类别不仅保存一个父类别的id,还保存了父类别的名称等(用户查询需要返回的信息)<br>
这种方式 违反了数据库的第二,三范式 <br>
存在传递依赖,父类别改名时,所有子类别文档也要更新
不是每个属性都依赖主键<br>
设计mongo 库、表时的限制
数据库限制 索引和集合数不能超过26000<b>(WiredTiger引擎不限制)</b><br>
创建数据库后,mongo会在/data/db目录创建一系列文件,以库名为前缀
xx.ns文件表示数据库xx的命名空间,固定大小16MB
16MB能保存不超过26000个元数据
可以通过修改--nssize改变限制
存储集合和索引的文件大小不超过2GB<br>
mongo以预分配的方式在磁盘创建文件
扩容过程 64mb->128mb ... -> 2gb<br>
db.stats() 输出的 fileSize表示数据库文件占用字节<br>
<b>总索引</b>大小最好能够被装入内存
db.stats() indexSize查看全部索引大小<br>
集合
集合名不超过128字符
固定集合(达到固定大小时,最先输入的记录被覆盖)
固定空间占用的集合(16kb等)
固定文档数的集合
TTL集合
用createIndex-- expireAfterSeconds创建一个管理超时时间索引<br>
索引字段比较字段的值和当前时间差,超过expireAS会删除文档(不是删除集合)
固定集合不支持TTL
文档
尽量使用短的字段名,因为字段名也被大量保存
字符串必须用utf8编码
数值类型
小数值要保存成整数(放大若干倍)
因为BSON不支持小数位
单个文档大小限制为16MB
文档嵌套深度最大值100
第五章 mongo支持的查询方式<br>
查询语言<br>
比较<br>
$lt,$gt<br>
db.xx.find({'age':{'$gt':20}})
范围
$in $all $nin<br>
布尔查询<br>
$ne $not $or $nor...<br>
db.xx.find({'$and':['xxxxxx']})
包含某个字段<br>
$exists<br>
数组<br>
包含某些字段 $elemMatch<br>
大小 $size<br>
自定义<br>
$where 结合js函数查询<br>
正则<br>
前缀 表达式 可以用索引,其他不行<br>
特殊查询
$mod 整除计算结果匹配<br>
$type 字段类型匹配<br>
$text 在文本上执行搜索<br>
查询结果过滤
控制返回字段,再传一个参数值为1包含,0不包含
只返回 id db.xx.find({'name':'xx'},{'id':1})
跳过 多少个记录<br>
$skip
返回数量<br>
$limit
排序<br>
$sort<br>
返回一定范围<br>
$slice<br>
{$slice:-5} 最后5个<br>
第六章 mongo的聚合查询框架<br>
定义
mongo中的聚合类似于SQL中的group by<br>
聚合管道
每一步的处理输出是下一步的输入
常用操作
$project <br>
指定输出字段
$match <br>
条件过滤
$group<br>
根据指定key分组
$unwind
"展开,放松" 扩展数组,把每个元素为一个文档
$sort
$out
输出到新集合
示例
db.products.aggregate([{$match : ... } , {$group : ...},{$sort : ...},{ $out : ....}])
聚合操作内支持的函数<br>
$group函数,用来改变输出集合的内容
$sum , $avg , $addToSet ....<br>
$group:{ _id:{user:'$user_id', list: {$push: '$name'}}<br>
字符串函数
$concat $substr $toLower .....<br>
算术函数<br>
$add $mod ...<br>
日期函数<br>
逻辑函数
集合操作符
处理输出的数组
$setUnion 合并两个集合<br>
$setIntersection 返回公共元素<br>
$setDifference 返回不同元素 <br>
....
聚合的性能<br>
性能相关的选项
explain<br>
返回聚合操作的查询信息,索引,扫描范围等
allowDiskUse
当处理大集合时,允许访问磁盘
cursor
用返回结果的指针来代替返回整个结果,减小返回数据大小
优化手段
在管道操作中减小文档的数量 和 大小<br>
<b>只有$match 和 $sort才能使用索引</b><br>
使用分片集群时,$match和$project会在单个分片执行,其他的操作符会在主要片执行
????
map-reduce
需要自己编写js函数,比聚合出现早,但不再作为主要查询手段
第七章 mongo中的更新操作<br>
更新操作
方式
update全部替换
update + $set 更新指定字段<br>
网络传输的内容少
格式
db.xx.update( {查询条件},{$操作符:{更新内容},{更新选项}} )
选项
multi:true
批量更新,默认只会更新一个文档,不保证批量操作的原子性,需要自己处理失败<br>
upsert:true
文档不存在时,插入新记录,新记录会合并查询和更新指定的字段做为内容<br>
操作符
$inc N<br>
N也可以是负数<br>
$set<br>
设置字段值
$unset<br>
删除字段
$rename<br>
重命名字段key
$setOnInsert:默认值
和upsert同时使用,在添加时使用默认值<br>
数组操作符<br>
$push $each $sort 等等<br>
删除
remove全部文档
db.xxx.remove()
remove某些文档
db.xxx.remove({查询条件})
原子性操作
findAndModify
原子操作:(借助锁机制)相当于CAS操作,先查询获得结果然后更新,返回被更新的文档<br>
限制
一次只能更新一个文档
参数
new:true
是否返回更新后的文档,否则返回更新之前的<br>
sort
因为只能更新一个,可以用sort选择要更新的文档
upsert
如题 用upsert的方式修改<br>
fields
控制文档返回的字段
$isolated操作符<br>
db.xx.update( {$isolated:true} , {$set:xxx} )<br>
使用它,表示当前操作是独立的,持有锁并阻塞其他操作<br>
限制
在分片集合上无法使用
如果操作中途失败,mongo不会回滚数据
锁机制<br>
WiredTiger引擎
支持文档级别的锁(SQL中的行锁)
老版本
数据库级别的锁
第八章 索引<br>
基本概念
用B树实现<br>
每个索引至少需要8kb空间 ???<br>
被索引的字段最大不超过1024kb
可以通过索引文档个数和大小估算B树的内存占用<br>
节点空间利用率为60% ??<br>
非聚集索引
聚集索引的索引顺序和数据在磁盘的物理顺序一致
innodb的主键
mongo中的索引不是聚集索引,索引顺序和数据顺序没有关系
设计索引
保证索引大小能保存在内存中,避免磁盘I/O<br>
索引越多,数据变化时,需要执行更新索引的操作越多
使用复合索引时,注意选择的字段顺序
索引类型
唯一索引
createIndex({unique:true})
保证索引字段在文档中唯一,插入重复数据会提示异常<br>
唯一索引最好在填充数据前创建,否则需要手动对字段去重
多键索引
当索引字段是数组类型时使用,数组中的值都会保存在索引里
哈希索引
createIndex({recipe_name:'hashed'})
一般值相似的几个索引会保存在相邻的位置,Aa Abc Abb ....<br>
哈希索引会把索引的值经过hash计算后再保存,这样索引会在集群中均匀分布(适合分片集合类型)
限制
不支持范围查询,仅支持等值查询
不支持多建索引
浮点数会被当做整数计算,4.2 和 4.3的索引相同<br>
TTL索引
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
适用于时间类型字段
过期时间是 字段值X + expireAfterSeconds 秒<br>
对嵌套的文档字段无效<br>
操作索引
常用命令
db.collection. getIndexes() / dropIndex() / createIndex()<br>
整理碎片
db.values.reIndex()
随着数据的变化,索引更新后会产生碎片
索引构建
大型数据库创建索引耗时会很长
处理办法
在后台构建索引
createIndex({background:true})
离线构建索引<br>
复制主节点,构建索引,替换
索引创建过程中会对数据库加锁<br>
构建执行步骤
对索引值做排序
把排序值插入索引
查看构建进度
db.currentOp()
索引优化<br>
profile分析器
配置命令<br>
db.setProfilingLevel(0/1/2,timeout) <br>
0 禁用 1 记录慢操作 2 记录全部读写操作<br>
查询监控结果
db.system.profile.find()
结果保存在system.profile集合<br>
explain函数<br>
xx.find(xx).explain("executionStats")
参数指定输出内容<br>
参数
allPlansExecution/executionStats/queryPlaner
输出关注
nReturned
查询匹配和返回的文档数量
totalKeyExamined
查询扫描的文档数量,越小越好
mongoDB内置的查询优化器
选择最优索引组合成查询计划
生成的查询计划会被缓存一段时间
原则
避免scanAndOrder,如果要排序,优先尝试使用索引排序
优先使用满足所有查询字段的索引
第九章 文本搜索<br>
第十章 WireTiger简介<br>
可插拔的存储引擎接口
存储引擎
mongo数据库和硬件的直接接口
影响读写磁盘数据的方式,数据存储时的数据结构<br>
v3.0提供了引擎切换的功能,满足不同使用场景的需要
wiredTiger
特点
多核可伸缩 Scalable Multicore Programming
风险指针和无锁算法的应用
使用mvcc架构
使用B树,可以切换LSM树<br>
LSM在写入表现好,读表现差
文档级别的并发控制
多个客户端可以同时修改集合的不同文档
使用wiredTiger<br>
确保64位系统
配置
engineConfig
cacheSize
申请多少内存<br>
journalCompressor
使用哪种日志压缩器,默认snappy
collectionConfig
blockCompressor
集合数据压缩方式 默认snappy,可选zlib 或 none<br>
indexConfig
prefixCompression
是否压缩索引,默认true<br>
对比MMAPv1引擎
磁盘占用明显减少
mmap每次数据增长会申请2G的磁盘空间
性能对比
使用mongobenchmark执行测试脚本
读写性能wiredTiger优于mmapv1
开启压缩的wt在插入上比未开启压缩的wt慢,在读取上快,磁盘占用小<br>
如果磁盘空间充足使用不压缩的wt
对比RocksDB<br>
RockDB使用LSM树引擎,适用于高并发写入场景<br>
mongoDB可以使用RocksDBm引擎
第十一章 副本集<br>
副本集的特点<br>
节点分为 主 从 裁判(arbiterOnly) 三种,可以包含50个节点(v3.0)<br>
裁判不复制数据<br>
提高读性能
不能保证一致性读(只有最终一致)
不适用 写请求大于读请求的场景<br>
不适用于大数据集存储,需要使用分片代替
自动容灾
冗余数据
历史数据还是要备份快照,两者结合使用
副本集的命令
rs.initiate()
初始化
rs.reconfig()
重新配置,注意 配置变化会导致重新选举主节点
rs.add("pc.local:7000")
添加节点
rs.slaveOk()
开启从节点的读取,默认情况,从节点无法查询
db.isMaster()、rs.status()
副本集的节点信息<br>
db.getReplicationInfo()
当前节点的数据复制情况
rs.help()
副本集命令帮助<br>
工作原理
oplog介绍
保存在副本集每个节点的local数据库中
local数据库还保存了索引,集群选举信息等等重要数据
是一个固定大小的集合
64位系统默认大小为1G或者磁盘可用空间的5%
启动命令 mongod -oplogSize 设置自定义大小<br>
记录节点所有数据变化,每条记录保存了 时间戳 ,操作类型, 操作数据 等<br>
用oplog实现数据复制
主节点写入
操作记录到oplog
不会同步写所有从节点,通过writeConcern控制
从节点同步
通过长轮询请求,复制主节点oplog<br>
根据本地oplog日志的时间戳,在主节点oplog中找到新产生的数据(找不到同步点,说明相差太多,要重新同步)<br>
写入数据,更新本地oplog<br>
实现自动容灾
心跳信息
2秒 ping一次,用来实现 容灾和选举的判断<br>
节点挂了
挂从节点<br>
不处理
挂主节点
选举新主节点<br>
降级
主节点发现副本集只有自己,则自动降级为从节点
拒绝了写请求,可以避免数据无法冗余,丢失高可用
可以处理网络分区的问题,避免因为分区导致出现多个主节点
但不能完全避免,不一定只有主节点自身在一个网络分区,比如5个节点分成2+3
回滚
从节点复制时发现自己本地有主节点不存在的操作,则把这些操作回滚<br>
从节点之前是主节点,然后挂了,有数据没被复制
管理副本集
每次重新配置都会重新选主节点
重新配置过程
config= rs.config()<br>
config.members[1].host
假设修改第二个节点的host
rs.reconfig(config)
配置参数
priority
被选为主节点的优先级,0表示永远不做主节点
buildIndex
是否构建索引,备份节点不需要提供查询,设置为false
slaveDelay
复制的延迟时间,但是首先要配置节点优先级为0,才能生效
状态枚举
STARTUP
RECOVERING
FATAL
DOWN()
ROLLBACK
PRIMARY
SECONDARY
ARBITER
读写请求配置
写关注点<br>
默认为1
设置为0,存在风险,无法正常故障转移<br>
getLastError命令配置关注点
w
每次写要复制到几个服务器<br>
wtimeout
写请求复制到其他节点的超时时间
读偏好
primary
唯一保证一致性读的模式
只读主节点<br>
primaryPreffered
主优先,不可用读从库<br>
secondary
只读从库<br>
secondaryPreffered
从库优先
nearest
读响应延迟最低的节点
标签节点<br>
每个节点都可以被打上 若干tag<br>
通过getLastErrorModes命令,配置每次写到哪些标签,写标签中的几个节点
getLastErrorModes:{multiCity:{beijing:2},multiRegion:{us:3}}
定义了multiCity/Region两个模式,选择bj和us标签的节点<br>
第十二章 分片集群<br>
简介
分片集群结构
config service<br>
保存集群元数据,数据在集群上的分布信息
提供高可用的持久化存储
两阶段提交更新配置
shard (replica set)<br>
每个分片都是一个副本集
mongos进程
从config server读取节点,把客户端请求路由到合适的分片<br>
把配置数据写到config server,使用两阶段提交<br>
以独立进程运行,负责和客户端驱动连接<br>
数据分片方式
基于“块”分片,“块”包含一个集合中的一部分文档
一个集合的文档会分布在多个片上
维护分片集群
创建
1.创建副本集
mongod --shardsvr --replSet xxx<br>
2.创建config server<br>
mongod --configsvr xxxx<br>
3.启动mongos进程
mongos --configdb configserver(ip:port) xxx<br>
4.连接mongos进程,执行分片命令
sh.addShard(xxx)<br>
sh.enableSharding("shard db name")
sh.shardCollection("collection name",{分片键1,2,3...})
mongodb会在分片键上创建索引
数据迁移<br>
分割
当数据“块”chunk size超过64mb,会分割成两个”块“<br>
迁移
当数据在分片之间分布不均匀时发生
查看状态<br>
分片集群状态
sh.status()
集群变动日志<br>
use config; db.changelog.find()<br>
balancer工作机制
文档介绍
管理分片集群数据
分片键选择
不要产生热点
分片键要让数据分布均匀<br>
对查询友好,避免全局查询<br>
分片键最好是查询常用的字段
不要让分片数据块的粒度过粗<br>
分片键没有代表性,会使相同键的数据过多,超过分片单位"块"最大64mb的限制
不要使用objectID做分片键
objectID是自增的,新数据会集中到最后一个分片<br>
查询
分类
目标查询:查询包含分片键
全局查询:查询不包含分片键
需要在每个分片执行查询
通过explain命令查看是否为全局查询
索引
分片集合在每个分片上的索引字段是一样的
只能在分片键和_id字段创建 唯一索引<br>
部署最佳实践
减少使用的机器
副本集成员保存数据,需要单独的机器
副本集的裁判,不需要保存数据,可以和其他程序共享机器
config server实例,可以和其他程序共享机器<br>
优化方式
要保证config server每个实例实时在线<br>
当数量少于3台,配置服务器集群会变为只读,即没有主服务器,则分片集群不支持更改集群元数据的操作,例如块拆分和迁移。 虽然不能拆分或迁移任何块,但应用程序可以将数据写入分片集群(最多挂2台,否则停止服务)。
当加载大量数据到分片集合时怎样节省时间
使用预分割和预迁移的方式手动处理
添加分片耗时长
mongo集群,预估的数据迁移速度为100~200MB每分钟
在分片服务器内存占用到80%-90%之前就应该尽快提前迁移
Hbase
Redis
BitmapImageRenderer
性能
分布式设计
分布式事务
XA(两阶段提交)
优劣
适合单模块应用,跨多个数据库的操作,<br>严格依赖数据层处理复杂业务,效率低,不适合高并发场景<br>
微服务场景只允许当期模块访问当前数据库,<br>如果访问多库,容易造成数据混乱,无法控制
过程
两阶段提交有一个事务管理器的概念,负责协调多个数据库的事务,事务管理器先询问多个数据是否准备好?<br>OK就提交事务,如何一个数据库NOK,回滚事务<br>
TCC 方案
Try、Confirm、Cancel
Try: 对资源进行预检测,或者锁定预留<br>Confirm: 对各个服务进行实际的操作,CRUD操作<br>Cancle: 执行出错的补偿,就是回滚操作
过程
A转账给B,try阶段就要 冻结A扣款金额,B账户确认是否可用<br>confirm 就要A扣款,B加钱<br>cancle A扣款冻结取消|已扣除添加,B账户解冻|扣除
优劣
严格依赖代码来执行回滚和补偿,代码工作量大,维护太麻烦容易出错
本地事务表<br>
过程
图例
A系统本地事务处理同时,插入记录到消息表,然后发送消息到MQ<br>B系统收到MQ,插入记录到消息表&&并校验是否已经执行过?执行业务<br>B执行成功: 更新B本地消息表状态,以及A系统消息表<br>B执行失败:A系统轮询消息表状态,重新发送MQ
优劣
高并发i情况不适用,扩展性差
可靠消息最终一致性
过程
图例
基于本地事务表,只不过不用本地消息表,而是用MQ来实现消息事务<br>
A系统发送Prepare消息到MQ,本地事务执行成功?确认发送:取消发送&回滚<br>B系统收到消息执行本地事务,并确认消息ACK【可靠消息状态变更】<br>MQ自动轮询是有prepare消息回调接口,确认B事务是否成功<br>失败则确认重试or回滚<br>
优劣
消息服务单独部署扩展性好,维护性好<br>降低业务系统以及消息系统之间的耦合<br>
消息需要发送两次请求
项目开发/管理
代码CR
代码设计
是否存在冗余代码<br>
业务划分是否合理,是否有相互耦合<br>
复杂业务必须提供时序图,流程图
代码逻辑清晰,注释完整,可读性强
阿里代码检测插件
是否合理使用设计模式or 设计模式使用过度
if-else 是否使用过度,使用策略模式
https://blog.csdn.net/ypp91zr/article/details/81705345
线程池的使用,参数设置是否正确
锁的使用是否准确,锁的范围,粒度是否准确
事务是否使用正确,是否生效/嵌套
优化部分
是否使用缓存
乐观锁代替悲观锁
慢操作采用异步处理
多接口聚合采用多线程处理
异常处理
是否有统一的错误码
异常是否有统一处理机制
直接抛出
重试
熔断
降级
恢复
关闭任务
数据库
数据表设计是否合理(三大范式)
索引设置是否合理,是否生效
数据一致性
分布式事务
分布式锁
异步调用操作是否有失败补偿操作
单元测试是否覆盖
日志打印是否规范
核心代码部分是否有关键信息打印
报错信息,是否有可追踪信息打印如入参。traceId,方便后续排查
是否潜藏NPE
编程风格依赖<阿里巴巴编码规范>
搜索引擎
Collect
Get Started
Collect
Get Started
Collect
Get Started
Collect
Get Started
评论
0 条评论
下一页