首页

java核心面试知识整理(架构师)

标签:架构     发布时间:2022-12-13   
  • 云盘下载:
  • [提取码:frb0]
       ( 需积分:3  )
目录@b@1. 目录..........1@b@2. JVM........19@b@2.1. 线程 .......20@b@2.2. JVM 内存区域 ....................21@b@2.2.1. 程序计数器(线程私有).............................22@b@2.2.2. 虚拟机栈(线程私有)...22@b@2.2.3. 本地方法区(线程私有).............................23@b@2.2.4. 堆(Heap-线程共享)-运行时数据区 ...23@b@2.2.5. 方法区/永久代(线程共享) ..................23@b@2.3. JVM 运行时内存 ................24@b@2.3.1. 新生代 .........................24@b@2.3.1.1. Eden 区.....24@b@2.3.1.2. ServivorFrom..........................24@b@2.3.1.3. ServivorTo .............................24@b@2.3.1.4. MinorGC 的过程(复制->清空->互换) ....24@b@1:eden、servicorFrom 复制到 ServicorTo,年龄+125@b@2:清空 eden、servicorFrom............25@b@3:ServicorTo 和 ServicorFrom 互换.............................25@b@2.3.2. 老年代 .........................25@b@2.3.3. 永久代 .........................25@b@2.3.3.1. JAVA8 与元数据................25@b@2.4. 垃圾回收与算法 .................26@b@2.4.1. 如何确定垃圾 .............26@b@2.4.1.1. 引用计数法26@b@2.4.1.2. 可达性分析26@b@2.4.2. 标记清除算法(Mark-Sweep) ...........27@b@2.4.3. 复制算法(copying)27@b@2.4.4. 标记整理算法(Mark-Compact)...............28@b@2.4.5. 分代收集算法 .............29@b@2.4.5.1. 新生代与复制算法 .............29@b@2.4.5.2. 老年代与标记复制算法 .....29@b@2.5. JAVA 四中引用类型 ..........30@b@2.5.1. 强引用 .........................30@b@2.5.2. 软引用 .........................30@b@2.5.3. 弱引用 .........................30@b@2.5.4. 虚引用 .........................30@b@2.6. GC 分代收集算法 VS 分区收集算法.............30@b@2.6.1. 分代收集算法 .............30@b@2.6.1.1. 在新生代-复制算法............30@b@2.6.1.2. 在老年代-标记整理算法....30@b@2.6.2. 分区收集算法 .............31@b@2.7. GC 垃圾收集器 ..................31@b@2.7.1. Serial 垃圾收集器(单线程、复制算法)....................31@b@2.7.2. ParNew 垃圾收集器(Serial+多线程)31@b@2.7.3. Parallel Scavenge 收集器(多线程复制算法、高效)............................32@b@2.7.4. Serial Old 收集器(单线程标记整理算法 ) ...............32@b@2.7.5. Parallel Old 收集器(多线程标记整理算法) .............33@b@2.7.6. CMS 收集器(多线程标记清除算法)..33@b@2.7.6.1. 初始标记.............................33@b@13/04/2018 Page 2 of 283@b@2.7.6.2. 并发标记.............................34@b@2.7.6.3. 重新标记.............................34@b@2.7.6.4. 并发清除.............................34@b@2.7.7. G1 收集器...................34@b@2.8. JAVA IO/NIO......................34@b@2.8.1. 阻塞 IO 模型 ...............34@b@2.8.2. 非阻塞 IO 模型 ...........35@b@2.8.3. 多路复用 IO 模型 .......35@b@2.8.4. 信号驱动 IO 模型 .......36@b@2.8.5. 异步 IO 模型 ...............36@b@2.8.1. JAVA IO 包.................36@b@2.8.2. JAVA NIO...................37@b@2.8.2.1. NIO 的缓冲区 ....................38@b@2.8.2.2. NIO 的非阻塞 ....................38@b@2.8.3. Channel ......................40@b@2.8.4. Buffer...........................40@b@2.8.5. Selector.......................40@b@2.9. JVM 类加载机制 ................41@b@2.9.1.1. 加载 ...........41@b@2.9.1.2. 验证 ...........41@b@2.9.1.3. 准备 ...........41@b@2.9.1.4. 解析 ...........41@b@2.9.1.5. 符号引用.............................42@b@2.9.1.6. 直接引用.............................42@b@2.9.1.7. 初始化 .......42@b@2.9.1.8. 类构造器<client>.............42@b@2.9.2. 类加载器 .....................42@b@2.9.2.1. 启动类加载器(Bootstrap ClassLoader) ......43@b@2.9.2.2. 扩展类加载器(Extension ClassLoader).......43@b@2.9.2.3. 应用程序类加载器(Application ClassLoader): ..............43@b@2.9.3. 双亲委派 .....................43@b@2.9.4. OSGI(动态模型系统) .........................44@b@2.9.4.1. 动态改变构造.....................44@b@2.9.4.2. 模块化编程与热插拔 .........44@b@3. JAVA 集合...........................45@b@3.1. 接口继承关系和实现 .........45@b@3.2. LIST........47@b@3.2.1. ArrayList(数组)......47@b@3.2.2. Vector(数组实现、线程同步)............47@b@3.2.3. LinkList(链表)........47@b@3.3. SET ........48@b@3.3.1.1. HashSet(Hash 表)............48@b@3.3.1.2. TreeSet(二叉树) ...............49@b@3.3.1.3. LinkHashSet(HashSet+LinkedHashMap)49@b@3.4. MAP........50@b@3.4.1. HashMap(数组+链表+红黑树)..........50@b@3.4.1.1. JAVA7 实现 ............................50@b@3.4.1.2. JAVA8 实现 ............................51@b@3.4.2. ConcurrentHashMap.51@b@3.4.2.1. Segment 段.............................51@b@3.4.2.2. 线程安全(Segment 继承 ReentrantLock 加锁)..................51@b@3.4.2.3. 并行度(默认 16) ................52@b@3.4.2.4. Java8 实现 (引入了红黑树) ...........................52@b@13/04/2018 Page 3 of 283@b@3.4.3. HashTable(线程安全) ........................53@b@3.4.4. TreeMap(可排序) .53@b@3.4.5. LinkHashMap(记录插入顺序)...........53@b@4. JAVA 多线程并发................54@b@4.1.1. JAVA 并发知识库 ......54@b@4.1.2. JAVA 线程实现/创建方式 .......................54@b@4.1.2.1. 继承 Thread 类.......................54@b@4.1.2.2. 实现 Runnable 接口。...........54@b@4.1.2.3. ExecutorService、Callable<Class>、Future 有返回值线程.55@b@4.1.2.4. 基于线程池的方式..................56@b@4.1.3. 4 种线程池 ..................56@b@4.1.3.1. newCachedThreadPool........57@b@4.1.3.2. newFixedThreadPool............57@b@4.1.3.3. newScheduledThreadPool...58@b@4.1.3.4. newSingleThreadExecutor 58@b@4.1.4. 线程生命周期(状态)...58@b@4.1.4.1. 新建状态(NEW) ................58@b@4.1.4.2. 就绪状态(RUNNABLE):59@b@4.1.4.3. 运行状态(RUNNING): ...59@b@4.1.4.4. 阻塞状态(BLOCKED):...59@b@等待阻塞(o.wait->等待对列):.....59@b@同步阻塞(lock->锁池) .........................59@b@其他阻塞(sleep/join) ...........................59@b@4.1.4.5. 线程死亡(DEAD)...............59@b@正常结束.................59@b@异常结束.................59@b@调用 stop................59@b@4.1.5. 终止线程 4 种方式 .....60@b@4.1.5.1. 正常运行结束..........................60@b@4.1.5.2. 使用退出标志退出线程..........60@b@4.1.5.3. Interrupt 方法结束线程..........60@b@4.1.5.4. stop 方法终止线程(线程不安全)....................61@b@4.1.6. sleep 与 wait 区别......61@b@4.1.7. start 与 run 区别.........62@b@4.1.8. JAVA 后台线程 ..........62@b@4.1.9. JAVA 锁 ......................63@b@4.1.9.1. 乐观锁 .......63@b@4.1.9.2. 悲观锁 .......63@b@4.1.9.3. 自旋锁 .......63@b@自旋锁的优缺点.....63@b@自旋锁时间阈值(1.6 引入了适应性自旋锁)...............63@b@自旋锁的开启.........64@b@4.1.9.4. Synchronized 同步锁.............64@b@Synchronized 作用范围......................64@b@Synchronized 核心组件......................64@b@Synchronized 实现64@b@4.1.9.5. ReentrantLock........................66@b@Lock 接口的主要方法..........................66@b@非公平锁.................66@b@公平锁.....................67@b@ReentrantLock 与 synchronized .......67@b@ReentrantLock 实现............................67@b@Condition 类和 Object 类锁方法区别区别......................68@b@tryLock 和 lock 和 lockInterruptibly 的区别.....................68@b@4.1.9.6. Semaphore 信号量................68@b@实现互斥锁(计数器为 1)................68@b@代码实现.................68@b@Semaphore 与 ReentrantLock ..........69@b@4.1.9.7. AtomicInteger.........................69@b@13/04/2018 Page 4 of 283@b@4.1.9.8. 可重入锁(递归锁)..............69@b@4.1.9.9. 公平锁与非公平锁..................70@b@公平锁(Fair)......70@b@非公平锁(Nonfair)..........................70@b@4.1.9.10. ReadWriteLock 读写锁.....70@b@读锁..70@b@写锁..70@b@4.1.9.11. 共享锁和独占锁 .................70@b@独占锁.....................70@b@共享锁.....................70@b@4.1.9.12. 重量级锁(Mutex Lock) .............................71@b@4.1.9.13. 轻量级锁.............................71@b@锁升级.....................71@b@4.1.9.14. 偏向锁...71@b@4.1.9.15. 分段锁...71@b@4.1.9.16. 锁优化...71@b@减少锁持有时间.....72@b@减小锁粒度.............72@b@锁分离.....................72@b@锁粗化.....................72@b@锁消除.....................72@b@4.1.10. 线程基本方法 .............72@b@4.1.10.1. 线程等待(wait)..............73@b@4.1.10.2. 线程睡眠(sleep)............73@b@4.1.10.3. 线程让步(yield).............73@b@4.1.10.4. 线程中断(interrupt).......73@b@4.1.10.5. Join 等待其他线程终止.....74@b@4.1.10.6. 为什么要用 join()方法? ...74@b@4.1.10.7. 线程唤醒(notify)............74@b@4.1.10.8. 其他方法:.........................74@b@4.1.11. 线程上下文切换 .........75@b@4.1.11.1. 进程.......75@b@4.1.11.2. 上下文...75@b@4.1.11.3. 寄存器...75@b@4.1.11.4. 程序计数器.........................75@b@4.1.11.5. PCB-“切换桢”................75@b@4.1.11.6. 上下文切换的活动: .........76@b@4.1.11.7. 引起线程上下文切换的原因 ...........................76@b@4.1.12. 同步锁与死锁 .............76@b@4.1.12.1. 同步锁...76@b@4.1.12.2. 死锁.......76@b@4.1.13. 线程池原理 .................76@b@4.1.13.1. 线程复用.............................76@b@4.1.13.2. 线程池的组成.....................76@b@4.1.13.3. 拒绝策略.............................78@b@4.1.13.4. Java 线程池工作过程 ........78@b@4.1.14. JAVA 阻塞队列原理...79@b@4.1.14.1. 阻塞队列的主要方法 .........80@b@插入操作:.............80@b@获取数据操作:.....81@b@4.1.14.2. Java 中的阻塞队列 ............81@b@4.1.14.3. ArrayBlockingQueue(公平、非公平) ....82@b@4.1.14.4. LinkedBlockingQueue(两个独立锁提高并发) .............82@b@4.1.14.5. PriorityBlockingQueue(compareTo 排序实现优先)..82@b@4.1.14.6. DelayQueue(缓存失效、定时任务 ).......82@b@4.1.14.7. SynchronousQueue(不存储数据、可用于传递数据)..83@b@4.1.14.8. LinkedTransferQueue.....83@b@13/04/2018 Page 5 of 283@b@4.1.14.9. LinkedBlockingDeque....83@b@4.1.15. CyclicBarrier、CountDownLatch、Semaphore 的用法..........................84@b@4.1.15.1. CountDownLatch(线程计数器 ) .............84@b@4.1.15.2. CyclicBarrier(回环栅栏-等待至 barrier 状态再全部同时执行) .................84@b@4.1.15.3. Semaphore(信号量-控制同时访问的线程个数) ...........85@b@4.1.16. volatile 关键字的作用(变量可见性、禁止重排序) .87@b@变量可见性.............87@b@禁止重排序.............87@b@比 sychronized 更轻量级的同步锁....87@b@适用场景.................87@b@4.1.17. 如何在两个线程之间共享数据................88@b@将数据抽象成一个类,并将数据的操作作为这个类的方法.................88@b@Runnable 对象作为一个类的内部类 .89@b@4.1.18. ThreadLocal 作用(线程本地存储).....90@b@ThreadLocalMap(线程的一个属性) ...........................90@b@使用场景.................91@b@4.1.19. synchronized 和 ReentrantLock 的区别 ......................91@b@4.1.19.1. 两者的共同点: .................91@b@4.1.19.2. 两者的不同点: .................92@b@4.1.20. ConcurrentHashMap 并发......................92@b@4.1.20.1. 减小锁粒度.........................92@b@4.1.20.2. ConcurrentHashMap 分段锁.......................92@b@ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成...................93@b@4.1.21. Java 中用到的线程调度 ..........................93@b@4.1.21.1. 抢占式调度:.....................93@b@4.1.21.2. 协同式调度:.....................93@b@4.1.21.3. JVM 的线程调度实现(抢占式调度) ..........94@b@4.1.21.4. 线程让出 cpu 的情况: ....94@b@4.1.22. 进程调度算法 .............94@b@4.1.22.1. 优先调度算法.....................94@b@4.1.22.2. 高优先权优先调度算法 .....95@b@4.1.22.3. 基于时间片的轮转调度算法 ...........................96@b@4.1.23. 什么是 CAS(比较并交换-乐观锁机制-锁自旋) ......96@b@4.1.23.1. 概念及特性.........................96@b@4.1.23.2. 原子包 java.util.concurrent.atomic(锁自旋) ...............97@b@4.1.23.3. ABA 问题............................98@b@4.1.24. 什么是 AQS(抽象的队列同步器)......98@b@Exclusive 独占资源-ReentrantLock ..99@b@Share 共享资源-Semaphore/CountDownLatch ............99@b@同步器的实现是 ABS 核心(state 资源状态计数)....100@b@ReentrantReadWriteLock 实现独占和共享两种方式..100@b@5. JAVA 基础.........................101@b@5.1.1. JAVA 异常分类及处理...........................101@b@5.1.1.1. 概念.....101@b@5.1.1.2. 异常分类...........................101@b@Error......................101@b@Exception(RuntimeException、CheckedException) ...............101@b@5.1.1.3. 异常的处理方式 ...............102@b@遇到问题不进行具体处理,而是继续抛给调用者 (throw,throws)...........................102@b@try catch 捕获异常针对性处理方式.102@b@5.1.1.4. Throw 和 throws 的区别: .........................102@b@13/04/2018 Page 6 of 283@b@位置不同...............102@b@功能不同:...........102@b@5.1.2. JAVA 反射 ................103@b@5.1.2.1. 动态语言...........................103@b@5.1.2.2. 反射机制概念 (运行状态中知道类所有的属性和方法)103@b@5.1.2.3. 反射的应用场合 ...............103@b@编译时类型和运行时类型.................103@b@的编译时类型无法获取具体方法.....104@b@5.1.2.4. Java 反射 API...................104@b@反射 API 用来生成 JVM 中的类、接口或则对象的信息。 ................104@b@5.1.2.5. 反射使用步骤(获取 Class 对象、调用对象方法) .........104@b@5.1.2.6. 获取 Class 对象的 3 种方法 .........................104@b@调用某个对象的 getClass()方法......104@b@调用某个类的 class 属性来获取该类对应的 Class 对象....................104@b@使用 Class 类中的 forName()静态方法(最安全/性能最好)................104@b@5.1.2.7. 创建对象的两种方法 .......105@b@Class 对象的 newInstance()............105@b@调用 Constructor 对象的 newInstance().......................105@b@5.1.3. JAVA 注解 ................106@b@5.1.3.1. 概念 .........106@b@5.1.3.2. 4 种标准元注解.....................106@b@@Target 修饰的对象范围 ................106@b@@Retention 定义 被保留的时间长短............................106@b@@Documented ᧿述-javadoc...............106@b@@Inherited 阐述了某个被标注的类型是被继承的 ...........106@b@5.1.3.3. 注解处理器............................107@b@5.1.4. JAVA 内部类 ............109@b@5.1.4.1. 静态内部类............................109@b@5.1.4.2. 成员内部类............................110@b@5.1.4.3. 局部内部类(定义在方法中的类)..................110@b@5.1.4.4. 匿名内部类(要继承一个父类或者实现一个接口、直接使用 new 来生成一个对象的引用).....111@b@5.1.5. JAVA 泛型 ................112@b@5.1.5.1. 泛型方法(<E>)............112@b@5.1.5.2. 泛型类<T> ............................112@b@5.1.5.3. 类型通配符? .........................113@b@5.1.5.4. 类型擦除 .113@b@5.1.6. JAVA 序列化(创建可复用的 Java 对象).....................113@b@保存(持久化)对象及其状态到内存或者磁盘.................113@b@序列化对象以字节数组保持-静态成员不保存..............113@b@序列化用户远程对象传输.................113@b@Serializable 实现序列化 ...................113@b@ObjectOutputStream 和 ObjectInputStream 对对象进行序列化及反序列化.................113@b@writeObject 和 readObject 自定义序列化策略.............113@b@序列化 ID..............113@b@序列化并不保存静态变量.................114@b@序列化子父类说明.............................114@b@Transient 关键字阻止该变量被序列化到文件中.........114@b@5.1.7. JAVA 复制 ................114@b@5.1.7.1. 直接赋值复制........................114@b@5.1.7.2. 浅复制(复制引用但不复制引用的对象)..114@b@5.1.7.3. 深复制(复制对象和其应用对象)..............115@b@5.1.7.4. 序列化(深 clone 一中实现).....................115@b@6. SPRING 原理 ....................116@b@6.1.1. Spring 特点...............116@b@6.1.1.1. 轻量级.116@b@13/04/2018 Page 7 of 283@b@6.1.1.2. 控制反转...........................116@b@6.1.1.3. 面向切面...........................116@b@6.1.1.4. 容器.....116@b@6.1.1.5. 框架集合...........................116@b@6.1.2. Spring 核心组件.......117@b@6.1.3. Spring 常用模块.......117@b@6.1.4. Spring 主要包...........118@b@6.1.5. Spring 常用注解.......118@b@6.1.6. Spring 第三方结合...119@b@6.1.7. Spring IOC 原理.......120@b@6.1.7.1. 概念 .........120@b@6.1.7.2. Spring 容器高层视图 ...........120@b@6.1.7.3. IOC 容器实现........................120@b@BeanFactory-框架基础设施.............120@b@1.1..1.1.1 BeanDefinitionRegistry 注册表..............121@b@1.1..1.1.2 BeanFactory 顶层接口...........................121@b@1.1..1.1.3 ListableBeanFactory 121@b@1.1..1.1.4 HierarchicalBeanFactory 父子级联.......121@b@1.1..1.1.5 ConfigurableBeanFactory......................121@b@1.1..1.1.6 AutowireCapableBeanFactory 自动装配 ....................122@b@1.1..1.1.7 SingletonBeanRegistry 运行期间注册单例 Bean.......122@b@1.1..1.1.8 依赖日志框框............122@b@ApplicationContext 面向开发应用...122@b@WebApplication 体系架构 ................123@b@6.1.7.4. Spring Bean 作用域.............123@b@singleton:单例模式(多线程下不安全) ...................123@b@prototype:原型模式每次使用时创建 .............................124@b@Request:一次 request 一个实例...124@b@session.................124@b@global Session.....124@b@6.1.7.5. Spring Bean 生命周期.........124@b@实例化...................124@b@IOC 依赖注入.......124@b@setBeanName 实现...........................124@b@BeanFactoryAware 实现..................124@b@ApplicationContextAware 实现........125@b@postProcessBeforeInitialization 接口实现-初始化预处理..............125@b@init-method...........125@b@postProcessAfterInitialization..........125@b@Destroy 过期自动清理阶段 ..............125@b@destroy-method 自配置清理 ............125@b@6.1.7.6. Spring 依赖注入四种方式...126@b@构造器注入...........126@b@setter 方法注入....127@b@静态工厂注入.......127@b@实例工厂...............127@b@6.1.7.7. 5 种不同方式的自动装配.....128@b@6.1.8. Spring APO 原理 .....129@b@6.1.8.1. 概念 .........129@b@6.1.8.2. AOP 核心概念 ......................129@b@6.1.8.1. AOP 两种代理方式 ..............130@b@JDK 动态接口代理 ............................130@b@CGLib 动态代理...131@b@6.1.8.2. 实现原理 .131@b@6.1.9. Spring MVC 原理.....132@b@6.1.9.1. MVC 流程132@b@Http 请求到 DispatcherServlet ......133@b@HandlerMapping 寻找处理器...........133@b@调用处理器 Controller.......................133@b@13/04/2018 Page 8 of 283@b@Controller 调用业务逻辑处理后,返回 ModelAndView.....................133@b@DispatcherServlet 查询 ModelAndView .......................133@b@ModelAndView 反馈浏览器 HTTP ..133@b@6.1.9.1. MVC 常用注解......................133@b@6.1.10. Spring Boot 原理......134@b@1. 创建独立的 Spring 应用程序............134@b@2. 嵌入的 Tomcat,无需部署 WAR 文件..........................134@b@3. 简化 Maven 配置.134@b@4. 自动配置 Spring ..134@b@5. ᨀ供生产就绪型功能,如指标,健康检查和外部配置134@b@6. 绝对没有代码生成和对 XML 没有要求配置 [1]............134@b@6.1.11. JPA 原理...................134@b@6.1.11.1. 事务.....134@b@6.1.11.2. 本地事务...........................134@b@6.1.11.1. 分布式事务.......................135@b@6.1.11.1. 两阶段ᨀ交.......................136@b@1 准备阶段............136@b@2 ᨀ交阶段:........136@b@6.1.12. Mybatis 缓存.............137@b@6.1.12.1. Mybatis 的一级缓存原理(sqlsession 级别)..................138@b@6.1.12.2. 二级缓存原理(mapper 基本)..................138@b@具体使用需要配置:.........................139@b@6.1.13. Tomcat 架构.............139@b@7. 微服务 ..140@b@7.1.1. 服务注册发现 ...........140@b@7.1.1.1. 客户端注册(zookeeper).140@b@7.1.1.2. 第三方注册(独立的服务 Registrar)............140@b@7.1.1.3. 客户端发现............................141@b@7.1.1.4. 服务端发现............................142@b@7.1.1.5. Consul.....142@b@7.1.1.6. Eureka.....142@b@7.1.1.7. SmartStack...........................142@b@7.1.1.8. Etcd .........142@b@7.1.2. API 网关....................142@b@7.1.2.1. 请求转发 .143@b@7.1.2.2. 响应合并 .143@b@7.1.2.3. 协议转换 .143@b@7.1.2.4. 数据转换 .143@b@7.1.2.5. 安全认证 .144@b@7.1.3. 配置中心 ...................144@b@7.1.3.1. zookeeper 配置中心............144@b@7.1.3.2. 配置中心数据分类................144@b@7.1.4. 事件调度(kafka)..144@b@7.1.5. 服务跟踪(starter-sleuth)................144@b@7.1.6. 服务熔断(Hystrix) .............................145@b@7.1.6.1. Hystrix 断路器机制...............146@b@7.1.7. API 管理....................146@b@8. NETTY 与 RPC .................147@b@8.1.1. Netty 原理.................147@b@8.1.2. Netty 高性能.............147@b@8.1.2.1. 多路复用通讯方式 ...........147@b@8.1.2.1. 异步通讯 NIO...................148@b@8.1.2.2. 零拷贝(DIRECT BUFFERS 使用堆外直接内存)..............149@b@8.1.2.3. 内存池(基于内存池的缓冲区重用机制) ......149@b@8.1.2.4. 高效的 Reactor 线程模型....149@b@Reactor 单线程模型..........................149@b@Reactor 多线程模型..........................150@b@13/04/2018 Page 9 of 283@b@主从 Reactor 多线程模型.................150@b@8.1.2.5. 无锁设计、线程绑定............151@b@8.1.2.6. 高性能的序列化框架............151@b@小包封大包,防止网络阻塞.............152@b@软中断 Hash 值和 CPU 绑定............152@b@8.1.3. Netty RPC 实现........152@b@8.1.3.1. 概念 .........152@b@8.1.3.2. 关键技术 .152@b@8.1.3.3. 核心流程 .152@b@8.1.3.1. 消息编解码............................153@b@息数据结构(接口名称+方法名+参数类型和参数值+超时时间+ requestID) .............153@b@序列化...................154@b@8.1.3.1. 通讯过程 .154@b@核心问题(线程暂停、消息乱序) ......154@b@通讯流程...............154@b@requestID 生成-AtomicLong ............154@b@存放回调对象 callback 到全局 ConcurrentHashMap .154@b@synchronized 获取回调对象 callback 的锁并自旋 wait......................154@b@监听消息的线程收到消息,找到 callback 上的锁并唤醒 ..................155@b@8.1.4. RMI 实现方式...........155@b@8.1.4.1. 实现步骤 .155@b@8.1.5. Protoclol Buffer........156@b@8.1.5.1. 特点 .........157@b@8.1.6. Thrift ..........................157@b@9. 网络......159@b@9.1.1. 网络 7 层架构 ...........159@b@9.1.2. TCP/IP 原理..............160@b@9.1.2.1. 网络访问层(Network Access Layer)................160@b@9.1.2.2. 网络层(Internet Layer) ........160@b@9.1.2.3. 传输层(Tramsport Layer-TCP/UDP) ...............160@b@9.1.2.4. 应用层(Application Layer)...160@b@9.1.3. TCP 三次握手/四次挥手 .......................161@b@9.1.3.1. 数据包说明............................161@b@9.1.3.2. 三次握手 .162@b@9.1.3.3. 四次挥手 .163@b@9.1.4. HTTP 原理................164@b@9.1.4.1. 传输流程 .164@b@1:地址解析 ........164@b@2:封装 HTTP 请求数据包 ..............165@b@3:封装成 TCP 包并建立连接.........165@b@4:客户机发送请求命.......................165@b@5:服务器响应.....165@b@6:服务器关闭 TCP 连接.................165@b@9.1.4.2. HTTP 状态 ............................165@b@9.1.4.3. HTTPS ....166@b@建立连接获取证书.............................167@b@证书验证...............167@b@数据加密和传输...167@b@9.1.5. CDN 原理..................167@b@9.1.5.1. 分发服务系统........................167@b@9.1.5.2. 负载均衡系统:....................168@b@9.1.5.3. 管理系统:............................168@b@10. 日志 ..169@b@10.1.1. Slf4j ...........................169@b@10.1.2. Log4j .........................169@b@10.1.3. LogBack....................169@b@10.1.3.1. Logback 优点..................169@b@10.1.4. ELK............................170@b@13/04/2018 Page 10 of 283@b@11. ZOOKEEPER ................171@b@11.1.1. Zookeeper 概念 .......171@b@11.1.1. Zookeeper 角色 .......171@b@11.1.1.1. Leader171@b@11.1.1.2. Follower...........................171@b@11.1.1.3. Observer..........................171@b@11.1.1.1. ZAB 协议 ..........................172@b@事务编号 Zxid(事务请求计数器+ epoch) ................172@b@epoch....................172@b@Zab 协议有两种模式-恢复模式(选主)、广播模式(同步)..........172@b@ZAB 协议 4 阶段..172@b@Leader election(选举阶段-选出准 Leader) .............172@b@Discovery(发现阶段-接受ᨀ议、生成 epoch、接受 epoch)........173@b@Synchronization(同步阶段-同步 follower 副本)......173@b@Broadcast(广播阶段-leader 消息广播)....................173@b@ZAB 协议 JAVA 实现(FLE-发现阶段和同步合并为 Recovery Phase(恢复阶段))............................173@b@11.1.1.2. 投票机制...........................173@b@11.1.2. Zookeeper 工作原理(原子广播)......174@b@11.1.3. Znode 有四种形式的目录节点 .............174@b@12. KAFKA...........................175@b@12.1.1. Kafka 概念 ................175@b@12.1.2. Kafka 数据存储设计 175@b@12.1.2.1. partition 的数据文件(offset,MessageSize,data)175@b@12.1.2.2. 数据文件分段 segment(顺序读写、分段命令、二分查找)......................176@b@12.1.2.3. 数据文件索引(分段索引、稀疏存储)......176@b@12.1.3. 生产者设计 ...............176@b@12.1.3.1. 负载均衡(partition 会均衡分布到不同 broker 上).....176@b@12.1.3.2. 批量发送...........................177@b@12.1.3.3. 压缩(GZIP 或 Snappy)............................177@b@12.1.1. 消费者设计 ...............177@b@12.1.1.1. Consumer Group ..........178@b@13. RABBITMQ ...................179@b@13.1.1. 概念 ...........................179@b@13.1.2. RabbitMQ 架构 ........179@b@13.1.2.1. Message ..........................180@b@13.1.2.2. Publisher .........................180@b@13.1.2.3. Exchange(将消息路由给队列 ) ..............180@b@13.1.2.4. Binding(消息队列和交换器之间的关联)......................180@b@13.1.2.5. Queue 180@b@13.1.2.6. Connection.....................180@b@13.1.2.7. Channel ...........................180@b@13.1.2.8. Consumer........................180@b@13.1.2.9. Virtual Host ....................180@b@13.1.2.10. Broker181@b@13.1.3. Exchange 类型 ........181@b@13.1.3.1. Direct 键(routing key)分布: ...............181@b@13.1.3.2. Fanout(广播分发)......181@b@13.1.3.3. topic 交换器(模式匹配) ................182@b@13/04/2018 Page 11 of 283@b@14. HBASE...........................183@b@14.1.1. 概念 ...........................183@b@14.1.2. 列式存储 ...................183@b@14.1.3. Hbase 核心概念.......184@b@14.1.3.1. Column Family 列族......184@b@14.1.3.2. Rowkey(Rowkey 查询,Rowkey 范围扫描,全表扫描).........................184@b@14.1.3.3. Region 分区.....................184@b@14.1.3.4. TimeStamp 多版本.........184@b@14.1.4. Hbase 核心架构.......184@b@14.1.4.1. Client:............................185@b@14.1.4.2. Zookeeper:...................185@b@14.1.4.3. Hmaster...........................185@b@14.1.4.4. HregionServer................185@b@14.1.4.5. Region 寻址方式(通过 zookeeper .META)................186@b@14.1.4.6. HDFS ..186@b@14.1.5. Hbase 的写逻辑.......187@b@14.1.5.1. Hbase 的写入流程 ..........187@b@获取 RegionServer ...........................187@b@请求写 Hlog .........187@b@请求写 MemStore .............................187@b@14.1.5.2. MemStore 刷盘..............187@b@全局内存控制.......188@b@MemStore 达到上限..........................188@b@RegionServer 的 Hlog 数量达到上限............................188@b@手工触发...............188@b@关闭 RegionServer 触发...................188@b@Region 使用 HLOG 恢复完数据后触发.........................188@b@14.1.6. HBase vs Cassandra............................188@b@15. MONGODB....................190@b@15.1.1. 概念 ...........................190@b@15.1.2. 特点 ...........................190@b@16. CASSANDRA................192@b@16.1.1. 概念 ...........................192@b@16.1.2. 数据模型 ...................192@b@Key Space(对应 SQL 数据库中的 database).............192@b@Key(对应 SQL 数据库中的主键).....192@b@column(对应 SQL 数据库中的列)...192@b@super column(SQL 数据库不支持).192@b@Standard Column Family(相对应 SQL 数据库中的 table)................192@b@Super Column Family(SQL 数据库不支持) ................192@b@16.1.3. Cassandra 一致 Hash 和虚拟节点 ......192@b@一致性 Hash(多米诺 down 机)........192@b@虚拟节点(down 机多节点托管).......193@b@16.1.4. Gossip 协议..............193@b@Gossip 节点的通信方式及收敛性 ........194@b@Gossip 两个节点(A、B)之间存在三种通信方式(push、pull、push&pull)..........194@b@gossip 的协议和 seed list(防止集群分列) ...............194@b@16.1.5. 数据复制 ...................194@b@Partitioners(计算 primary key token 的 hash 函数)....194@b@两种可用的复制策略: .........................194@b@SimpleStrategy:仅用于单数据中心,........................194@b@将第一个 replica 放在由 partitioner 确定的节点中,其余的 replicas 放在上述节点顺时针方向的后续节@b@点中。...................194@b@13/04/2018 Page 12 of 283@b@NetworkTopologyStrategy:可用于较复杂的多数据中心。.............194@b@可以指定在每个数据中心分别存储多少份 replicas。194@b@16.1.6. 数据写请求和协调者 .............................195@b@协调者(coordinator).195@b@16.1.7. 数据读请求和后台修复 .........................195@b@16.1.8. 数据存储(CommitLog、MemTable、SSTable).............................196@b@SSTable 文件构成(BloomFilter、index、data、static)....................196@b@16.1.9. 二级索引(对要索引的 value 摘要,生成 RowKey)............................196@b@16.1.10. 数据读写 ...............197@b@数据写入和更新(数据追加) .............197@b@数据的写和删除效率极高.................197@b@错误恢复简单.......197@b@读的复杂度高.......197@b@数据删除(column 的墓碑) ...............197@b@墓碑198@b@垃圾回收 compaction .......................198@b@数据读取(memtable+SStables).............................198@b@行缓存和键缓存请求流程图 .................199@b@Row Cache(SSTables 中频繁被访问的数据).........199@b@Bloom Filter(查找数据可能对应的 SSTable)..........200@b@Partition Key Cache(查找数据可能对应的 Partition key) ............200@b@Partition Summary(内存中存储一些 partition index 的样本).......200@b@Partition Index(磁盘中) ...............200@b@Compression offset map(磁盘中)............................200@b@17. 设计模式.........................201@b@17.1.1. 设计原则 ...................201@b@17.1.2. 工厂方法模式 ...........201@b@17.1.3. 抽象工厂模式 ...........201@b@17.1.4. 单例模式 ...................201@b@17.1.5. 建造者模式 ...............201@b@17.1.6. 原型模式 ...................201@b@17.1.7. 适配器模式 ...............201@b@17.1.8. 装饰器模式 ...............201@b@17.1.9. 代理模式 ...................201@b@17.1.10. 外观模式 ...............201@b@17.1.11. 桥接模式 ...............201@b@17.1.12. 组合模式 ...............201@b@17.1.13. 享元模式 ...............201@b@17.1.14. 策略模式 ...............201@b@17.1.15. 模板方法模式 .......201@b@17.1.16. 观察者模式 ...........201@b@17.1.17. 迭代子模式 ...........201@b@17.1.18. 责任链模式 ...........201@b@17.1.19. 命令模式 ...............201@b@17.1.20. 备忘录模式 ...........201@b@17.1.21. 状态模式 ...............202@b@17.1.22. 访问者模式 ...........202@b@17.1.23. 中介者模式 ...........202@b@17.1.24. 解释器模式 ...........202@b@18. 负载均衡.........................203@b@18.1.1. 四层负载均衡 vs 七层负载均衡 ...........203@b@18.1.1.1. 四层负载均衡(目标地址和端口交换)......203@b@F5:硬件负载均衡器,功能很好,但是成本很高。...203@b@lvs:重量级的四层负载软件。 ........203@b@nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活。 ...........................203@b@13/04/2018 Page 13 of 283@b@haproxy:模拟四层转发,较灵活。.............................203@b@18.1.1.2. 七层负载均衡(内容交换) .........................203@b@haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;...204@b@nginx:只在 http 协议和 mail 协议上功能比较好,性能与 haproxy 差不多;..............204@b@apache:功能较差............................204@b@Mysql proxy:功能尚可。................204@b@18.1.2. 负载均衡算法/策略 ..204@b@18.1.2.1. 轮循均衡(Round Robin) ........................204@b@18.1.2.2. 权重轮循均衡(Weighted Round Robin)....................204@b@18.1.2.3. 随机均衡(Random) ...204@b@18.1.2.4. 权重随机均衡(Weighted Random)......204@b@18.1.2.5. 响应速度均衡(Response Time 探测时间)...................204@b@18.1.2.6. 最少连接数均衡(Least Connection).....205@b@18.1.2.7. 处理能力均衡(CPU、内存) .....................205@b@18.1.2.8. DNS 响应均衡(Flash DNS) ....................205@b@18.1.2.9. 哈希算法...........................205@b@18.1.2.10. IP 地址散列(保证客户端服务器对应关系稳定)............205@b@18.1.2.11. URL 散列..........................205@b@18.1.3. LVS............................206@b@18.1.3.1. LVS 原理...........................206@b@IPVS .....................206@b@18.1.3.1. LVS NAT 模式 .................207@b@18.1.3.2. LVS DR 模式(局域网改写 mac 地址).....208@b@18.1.3.3. LVS TUN 模式(IP 封装、跨网段)...........209@b@18.1.3.4. LVS FULLNAT 模式........210@b@18.1.4. Keepalive..................211@b@18.1.5. Nginx 反向代理负载均衡 ......................211@b@18.1.5.1. upstream_module 和健康检测.....................212@b@18.1.5.1. proxy_pass 请求转发......212@b@18.1.6. HAProxy ...................213@b@19. 数据库 ............................214@b@19.1.1. 存储引擎 ...................214@b@19.1.1.1. 概念.....214@b@19.1.1.2. InnoDB(B+树) ............214@b@19.1.1.3. TokuDB(Fractal Tree-节点带数据) .......215@b@19.1.1.4. MyIASM............................215@b@19.1.1.5. Memory.............................215@b@19.1.2. 索引 ...........................215@b@19.1.2.1. 常见索引原则有 ...............216@b@1.选择唯一性索引 .............................216@b@2.为经常需要排序、分组和联合操作的字段建立索引: ...................216@b@3.为常作为查询条件的字段建立索引。.....................216@b@4.限制索引的数目:.......................216@b@尽量使用数据量少的索引.................216@b@尽量使用前缀来索引.........................216@b@7.删除不再使用或者很少使用的索引.........................216@b@8 . 最左前缀匹配原则,非常重要的原则。..................216@b@10 . 尽量选择区分度高的列作为索引 ...........................216@b@11 .索引列不能参与计算,保持列“干净”:带函数的查询不参与索引。 ..................216@b@12 .尽量的扩展索引,不要新建索引。.........................216@b@19.1.3. 数据库三范式 ...........216@b@19.1.3.1. 第一范式(1st NF -列都是不可再分)..........216@b@19.1.3.2. 第二范式(2nd NF-每个表只描述一件事情).....................216@b@19.1.3.3. 第三范式(3rd NF- 不存在对非主键列的传递依赖).........217@b@19.1.4. 数据库是事务 ...........217@b@13/04/2018 Page 14 of 283@b@原子性(Atomicity).........................217@b@一致性(Consistency)...................217@b@隔离性(Isolation)..........................218@b@永久性(Durability) ........................218@b@19.1.5. 存储过程(特定功能的 SQL 语句集).....218@b@存储过程优化思路: .............................218@b@19.1.6. 触发器(一段能自动执行的程序)...........218@b@19.1.7. 数据库并发策略 .......218@b@19.1.7.1. 乐观锁.218@b@19.1.7.2. 悲观锁.219@b@19.1.7.3. 时间戳.219@b@19.1.8. 数据库锁 ...................219@b@19.1.8.1. 行级锁.219@b@19.1.8.2. 表级锁.219@b@19.1.8.1. 页级锁.219@b@19.1.9. 基于 Redis 分布式锁 .............................219@b@19.1.10. 分区分表 ...............220@b@垂直切分(按照功能模块) ..................220@b@水平切分(按照规则划分存储) ..........220@b@19.1.11. 两阶段ᨀ交协议 ...220@b@19.1.11.1. 准备阶段...........................221@b@19.1.11.2. ᨀ交阶段...........................221@b@19.1.11.3. 缺点.....221@b@同步阻塞问题.......221@b@单点故障...............221@b@数据不一致(脑裂问题).................221@b@二阶段无法解决的问题(数据状态不确定) ...............221@b@19.1.12. 三阶段ᨀ交协议 ...222@b@19.1.12.1. CanCommit 阶段 .............222@b@19.1.12.2. PreCommit 阶段 ..............222@b@19.1.12.3. doCommit 阶段................222@b@19.1.13. 柔性事务 ...............222@b@19.1.13.1. 柔性事务...........................222@b@两阶段型...............222@b@补偿型...................222@b@异步确保型...........223@b@最大努力通知型(多次尝试).........223@b@19.1.14. CAP.......................224@b@一致性(C): ........224@b@可用性(A): ........224@b@分区容忍性(P):.224@b@20. 一致性算法.....................225@b@20.1.1. Paxos ........................225@b@Paxos 三种角色:Proposer,Acceptor,Learners ........225@b@Proposer: ..........225@b@Acceptor:...........225@b@Learner:.............225@b@Paxos 算法分为两个阶段。具体如下:............................225@b@阶段一(准 leader 确定 ):...........225@b@阶段二(leader 确认):.................225@b@20.1.2. Zab ............................225@b@1.崩溃恢复:主要就是 Leader 选举过程......................226@b@2.数据同步:Leader 服务器与其他服务器进行数据同步..................226@b@3.消息广播:Leader 服务器将数据发送给其他服务器......................226@b@20.1.3. Raft............................226@b@20.1.3.1. 角色.....226@b@Leader(领导者-日志管理) ...........226@b@Follower(追随者-日志同步).........226@b@Candidate(候选者-负责选票)......226@b@13/04/2018 Page 15 of 283@b@20.1.3.2. Term(任期)..................226@b@20.1.3.3. 选举(Election).............227@b@选举定时器...........227@b@20.1.3.4. 安全性(Safety)............227@b@20.1.3.5. raft 协议和 zab 协议区别 227@b@20.1.4. NWR..........................228@b@N:在分布式存储系统中,有多少份备份数据.............228@b@W:代表一次成功的更新操作要求至少有 w 份数据写入成功 ..........228@b@R: 代表一次成功的读数据操作要求至少有 R 份数据成功读取......228@b@20.1.5. Gossip.......................228@b@20.1.6. 一致性 Hash.............229@b@20.1.6.1. 一致性 Hash 特性............229@b@20.1.6.2. 一致性 Hash 原理............229@b@1.建构环形 hash 空间:...................229@b@2.把需要缓存的内容(对象)映射到 hash 空间...............229@b@3.把服务器(节点)映射到 hash 空间 229@b@4.把对象映射到服务节点..................229@b@考察 cache 的变动............................230@b@虚拟节点...............230@b@21. JAVA 算法 .....................232@b@21.1.1. 二分查找 ...................232@b@21.1.2. 冒泡排序算法 ...........232@b@21.1.3. 插入排序算法 ...........233@b@21.1.4. 快速排序算法 ...........234@b@21.1.1. 希尔排序算法 ...........236@b@21.1.2. 归并排序算法 ...........237@b@21.1.3. 桶排序算法 ...............240@b@21.1.4. 基数排序算法 ...........241@b@21.1.5. 剪枝算法 ...................243@b@21.1.6. 回溯算法 ...................243@b@21.1.7. 最短路径算法 ...........243@b@21.1.8. 最大子数组算法 .......243@b@21.1.9. 最长公共子序算法 ...243@b@21.1.10. 最小生成树算法 ...243@b@22. 数据结构.........................245@b@22.1.1. 栈(stack)..............245@b@22.1.2. 队列(queue) ........245@b@22.1.3. 链表(Link)............245@b@22.1.4. 散列表(Hash Table).........................246@b@22.1.5. 排序二叉树 ...............246@b@22.1.5.1. 插入操作...........................246@b@22.1.5.2. 删除操作...........................247@b@22.1.5.3. 查询操作...........................248@b@22.1.6. 红黑树 .......................248@b@22.1.6.1. 红黑树的特性...................248@b@22.1.6.1. 左旋.....248@b@22.1.6.1. 右旋.....249@b@22.1.6.1. 添加.....250@b@22.1.6.2. 删除.....251@b@22.1.7. B-TREE.....................252@b@22.1.8. 位图 ...........................254@b@23. 加密算法.........................255@b@23.1.1. AES ...........................255@b@23.1.2. RSA...........................255@b@23.1.3. CRC...........................256@b@23.1.4. MD5...........................256@b@13/04/2018 Page 16 of 283@b@24. 分布式缓存.....................257@b@24.1.1. 缓存雪崩 ...................257@b@24.1.2. 缓存穿透 ...................257@b@24.1.3. 缓存预热 ...................257@b@24.1.4. 缓存更新 ...................257@b@24.1.5. 缓存降级 ...................257@b@25. HADOOP .......................259@b@25.1.1. 概念 ...........................259@b@25.1.2. HDFS ........................259@b@25.1.2.1. Client...259@b@25.1.2.2. NameNode.......................259@b@25.1.2.3. Secondary NameNode 259@b@25.1.2.4. DataNode........................259@b@25.1.3. MapReduce..............260@b@25.1.3.1. Client..260@b@25.1.3.2. JobTracker ......................260@b@25.1.3.3. TaskTracker.....................261@b@25.1.3.4. Task ....261@b@25.1.3.5. Reduce Task 执行过程 ..261@b@25.1.4. Hadoop MapReduce 作业的生命周期262@b@1.作业ᨀ交与初始化..........................262@b@2.任务调度与监控。..........................262@b@3.任务运行环境准备..........................262@b@4.任务执行 ...........262@b@5.作业完成。 .......262@b@26. SPARK...........................263@b@26.1.1. 概念 ...........................263@b@26.1.2. 核心架构 ...................263@b@Spark Core ..........263@b@Spark SQL ...........263@b@Spark Streaming.263@b@Mllib ......................263@b@GraphX.................263@b@26.1.3. 核心组件 ...................264@b@Cluster Manager-制整个集群,监控 worker ..............264@b@Worker 节点-负责控制计算节点......264@b@Driver: 运行 Application 的 main()函数......................264@b@Executor:执行器,是为某个 Application 运行在 worker node 上的一个进程............264@b@26.1.4. SPARK 编程模型.....264@b@26.1.5. SPARK 计算模型.....265@b@26.1.6. SPARK 运行流程.....266@b@1. 构建 Spark Application 的运行环境,启动 SparkContext........267@b@2. SparkContext 向资源管理器(可以是 Standalone,Mesos,Yarn)申请运行 Executor 资源,并启@b@动 StandaloneExecutorbackend,.267@b@3. Executor 向 SparkContext 申请 Task ..................267@b@4. SparkContext 将应用程序分发给 Executor.........267@b@5. SparkContext 构建成 DAG 图,将 DAG 图分解成 Stage、将 Taskset 发送给 Task Scheduler,最@b@后由 Task Scheduler 将 Task 发送给 Executor 运行..267@b@6. Task 在 Executor 上运行,运行完释放所有资源267@b@26.1.7. SPARK RDD 流程 ...267@b@26.1.8. SPARK RDD............267@b@(1)RDD 的创建方式..........................267@b@(2)RDD 的两种操作算子(转换(Transformation)与行动(Action))................268@b@27. STORM ..........................269@b@13/04/2018 Page 17 of 283@b@27.1.1. 概念 ...........................269@b@27.1.1. 集群架构 ...................269@b@27.1.1.1. Nimbus(master-代码分发给 Supervisor) ....................269@b@27.1.1.2. Supervisor(slave-管理 Worker 进程的启动和终止)...269@b@27.1.1.3. Worker(具体处理组件逻辑的进程).........269@b@27.1.1.4. Task ....270@b@27.1.1.5. ZooKeeper .......................270@b@27.1.2. 编程模型(spout->tuple->bolt)....270@b@27.1.2.1. Topology...........................270@b@27.1.2.2. Spout...270@b@27.1.2.3. Bolt......270@b@27.1.2.4. Tuple...270@b@27.1.2.5. Stream 271@b@27.1.3. Topology 运行..........271@b@(1). Worker(进程) (2). Executor(线程) (3). Task......................271@b@27.1.3.1. Worker(1 个 worker 进程执行的是 1 个 topology 的子集) .........................271@b@27.1.3.2. Executor(executor 是 1 个被 worker 进程启动的单独线程)........................271@b@27.1.3.3. Task(最终运行 spout 或 bolt 中代码的单元)...................272@b@27.1.4. Storm Streaming Grouping..................272@b@27.1.4.1. huffle Grouping................273@b@27.1.4.2. Fields Grouping...............273@b@27.1.4.3. All grouping :广播.........273@b@27.1.4.4. Global grouping...............274@b@27.1.4.5. None grouping :不分组274@b@27.1.4.6. Direct grouping :直接分组 指定分组 ........274@b@28. YARN .............................275@b@28.1.1. 概念 ...........................275@b@28.1.2. ResourceManager ..275@b@28.1.3. NodeManager..........275@b@28.1.4. ApplicationMaster 276@b@28.1.5. YARN 运行流程 ...277@b@29. 机器学习.........................278@b@29.1.1. 决策树 .......................278@b@29.1.2. 随机森林算法 ...........278@b@29.1.3. 逻辑回归 ...................278@b@29.1.4. SVM...........................278@b@29.1.5. 朴素贝叶斯 ...............278@b@29.1.6. K 最近邻算法............278@b@29.1.7. K 均值算法................278@b@29.1.8. Adaboost 算法 .........278@b@29.1.9. 神经网络 ...................278@b@29.1.10. 马尔可夫 ...............278@b@30. 云计算 ............................279@b@30.1.1. SaaS .........................279@b@30.1.2. PaaS .........................279@b@30.1.3. IaaS...........................279@b@30.1.4. Docker.......................279@b@30.1.4.1. 概念.....279@b@30.1.4.2. Namespaces....................280@b@30.1.4.3. 进程(CLONE_NEWPID 实现的进程隔离)...281@b@30.1.4.4. Libnetwork 与网络隔离...281@b@30.1.4.5. 资源隔离与 CGroups ......282@b@30.1.4.6. 镜像与 UnionFS...............282@b@30.1.4.7. 存储驱动...........................282@b@13/04/2018 Page 18 of 283@b@30.1.5. Openstack ................283