自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (5)
  • 收藏
  • 关注

原创 CompletableFuture基本使用

CompletableFuture是什么CompletableFuture是Java8中提供的Future的扩展功能,帮助我们简化异步编程的复杂性,引入函数式编程,通过回调的方式处理计算结果,也提供了转换和组合的方法。 它可能代表一个明确完成的Future,也有可能代表一个完成阶段( CompletionStage ),它支持在计算完成以后触发一些函数或执行某些动作。 它实现了Future和CompletionStage接口 借助CompletionStage的方法可以实现链式调用 一个Comp

2022-04-02 11:05:30 3680

原创 Prometheus 相关配置及命令(个人记录)

PrometheusPrometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本官网下载地址:https://prometheus.io/download/注:darwin-amd64.tar.gz 为Mac解压版本1、配置监控节点修改解压目录下prometheus.yml 文件metrics_path: '/prometheus' 监控服务,springboot.

2020-09-27 18:39:04 3355 3

原创 Spring AOP支持的AspectJ切入点指示符

Spring AOP支持的AspectJ切入点指示符如下:指示符 含义 execution 用于匹配方法执行的连接点; within 用于匹配指定类型内的方法执行; this 用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型匹配; target 用于匹配当前目标对象类型的执行方法;注意是 目标对象的类型匹配,这样就不包括引入接口也类型匹配; args 用于匹配当前执行的方法传入的参数为指定类型的

2020-08-27 11:59:38 273

原创 Java快速开发脚手架

Java快速开发脚手架目录1、RuoYi 若依​2.renren 人人3.eladmin4.Jeecg-boot5、vue-manage-system6、Guns7、pig8、iBase4J9、SpringBlade (2.6k star)10、COLA (2.1k star)11、SpringBoot_v21、RuoYi 若依RuoYi 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shi

2020-08-12 09:34:42 4668

原创 HttpClient 4.5.X 实现https请求绕过SSL/TLS连接

HttpClient升级部分类和方法过时,故整理新版处理方式注:本博文适用httpclient 4.5.X httpclient版本:4.5.11<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.11</version></dep

2020-05-22 22:04:45 1394

原创 Java中慎用e.printStackTrace()

Java使用框架集成的log4j、logback等统一打印日志,尽量不使用catch的e.printStackTrace()1、占用太多内存,造成锁死e.printStackTrace()要打印字符串输出到控制台上,需要字符串常量池所在的内存块有足够的空间。由于e.printStackTrace() 语句要产生的字符串记录的是堆栈信息,太长太多,内存被填满了!大量线程产出字符串等待有内存被释放,会造成相互等待内存(字符串池所属的那么点非堆内存空间),导致整个应用挂掉了。2、日志交错混合,不易读

2020-05-11 22:50:11 2486

原创 JDK1.8 HashMap原理及源码分析

概述JDK1.8对HashMap底层的实现进行了优化,引入红黑树的数据结构和扩容的优化等。 HashMap源码分析HashMap的put方法执行过程:putVal()源码分析:final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node&lt;K, V&gt;...

2018-09-21 17:52:15 668 2

原创 ConcurrentHashMap JDK1.8中结构原理及源码分析

注:本文根据网络和部分书籍整理基于JDK1.8书写,如有雷同敬请谅解  欢迎指正文中的错误之处。数据结构      ConcurrentHashMap 1.8 抛弃了Segment分段锁机制,采用Node + CAS + Synchronized来保证并发安全进行实现,采用table数组+链表+红黑树的存储结构。以table数组元素作为锁,利用CAS+Synchronized来保证并发更新...

2018-09-17 14:58:36 1383

原创 ConcurrentHashMap JDK1.7中结构原理及源码分析

注:本文根据网络和部分书籍整理基于JDK1.7书写,如有雷同敬请谅解  欢迎指正文中的错误之处。数据结构       ConcurrentHashMap是HashMap的一个线程安全的、支持高效并发的版本。在多线程并发场景下HashTable和由同步包装器包装的HashMap,都是通过使用一个全局的锁来同步不同线程间的并发访问,会带来不可忽视的性能问题。      Concurrent...

2018-09-17 14:42:25 581

原创 JDK1.7 HashMap原理及源码分析

注:本文根据网络和部分书籍整理基于JDK1.7书写与1.8版本对比介绍HashMap基本原理,文中源码为JDK 1.7       本文内容如有雷同敬请谅解,欢迎指正文中的错误之处。哈希表       哈希就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表成为哈希表。哈希表是一种根据关键码去寻找值的数据映射结...

2018-09-17 13:59:41 282

原创 ArrayList 遍历方式及性能对比

List的几种遍历方式int num = 1000000;List&lt;Integer&gt; list = new ArrayList&lt;&gt;();for (int i = 0; i &lt; num; i++) { list.add(i);}(1) for each循环// for eachfor (Integer v : list) {}或...

2017-12-01 11:20:54 654

原创 HashMap 遍历方式及其性能对比

HashMap的几种遍历方式int num = 10000;HashMap&lt;Integer, String&gt; map = new HashMap&lt;Integer, String&gt;();for (int i = 0; i &lt; num; i++) { map.put(i, "第" + i + "个");} (1) for each entrySet()...

2017-12-01 11:15:19 338

翻译 tomcat 7更换log4j管理日志(官网文档)

The following steps describe configuring log4j to output Tomcat's internal logging.Create a file called log4j.properties with the following content and save it into $CATALINA_BASE/liblog4j.ro

2017-11-21 14:14:33 871

转载 mysql 提高查询速度的方法(性能优化)

SQL查询语句优化方法:show processlist :  查看mysql连接详细信息1、尽量避免在 where 子句中使用!=或&lt;&gt;操作符,否则将引擎放弃使用索引而进行全表扫描。 2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。  3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导...

2017-01-22 17:20:14 1174

转载 vsftpd详细配置

vsftpd作为一个主打安全的FTP服务器,有很多的选项设置。下面介绍了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf这个配置文件的。本文将提供完整的vsftpd.conf的中文说明。学习本文的内容将有助于你初步了解vsftpd的配置文件,但针对具体情况还需要制定具体的配置方法。vsftpd的配置文件/etc/vsftpd/vsftp

2017-01-03 16:00:13 1864

转载 mysql 默认设置

甲骨文MySQL部门副总裁 Tomas Ulin在MySQL Connect 2012大会上称,甲骨文已经对MySQL Server 5.6中的默认设置进行了更改,主要如下: 设置旧值新值back_log5050 + ( max_connections / 5 ) 上限为900binlog_checksumNONECRC32

2016-12-30 17:16:00 806

转载 C3P0连接池配置

c3p0-config> default-config> 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> property name="acquireIncrement">3property> 定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->

2016-12-27 17:52:37 389

转载 HashSet,TreeSet和LinkedHashSet的区别

HashSet,TreeSet和LinkedHashSet的区别Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不 会接受这两个对象。HashSetHashSet有以下特点

2016-12-21 15:14:19 394

转载 mysql通讯的数据包大小

1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。解决方案:在my.ini文件中添加或者修改以下两个变量:wait_timeout=2880000interactive_timeout = 2880000关于两个变量的具体说明可以google或者看官方手册。如果不能修改my.cnf,则可以在连接数据库的时候设置CLIE

2016-12-21 15:12:20 2956

转载 Log4J日志配置详解

Log4J日志配置详解一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。1、LoggersLoggers组件在此系统中被

2016-12-21 12:29:10 396 1

转载 Linux (centos7) 防火墙命令

防火墙配置CentOS 7默认使用的是firewall作为防火墙,这里改为iptables防火墙。firewall操作:#service firewalld status; #查看防火墙状态(disabled 表明 已经禁止开启启动 enable 表示开机自启,inactive 表示防火墙关闭状态 activated(running)表示为开启状态)# service ...

2016-12-14 14:33:26 33487

转载 MYSQL 双机数据同步备份(主从、双Master)

环境说明1、MySQL主服务器    IP:192.168.1.110  主机名称:MySQL Master  MySQL版本:mysql-7.52、MySQL从服务器    IP:192.168.1.111  主机名称:MySQL SlaveMySQL版本:mysql-7.5+一、主从备份(数据仅从主服务同步到备份服务器)1、主备服务器上安装的mysql 需要授权远程访问 最...

2016-12-13 17:23:13 6408

转载 Linux (Centos 7) 安装Mysql

1、检测是否安装mysqlrpm -qa | grep -i mysql ()rpm -ev 文件名  (删除安装的程序)

2016-12-13 11:20:48 443

深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)

郑重声明:本文档仅限交流学习用,请勿商业用途 深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) 前言 第一部分 走近Java 第1章 走近Java 1.1 概述 1.2 Java技术体系 1.3 Java发展史 1.4 Java虚拟机发展史 1.4.1 Sun Classic Exact VM 1.4.2 Sun HotSpot VM 1.4.3 Sun Mobile-Embedded VM Meta-Circular VM 1.4.4 BEA JRockit IBM J9 VM 1.4.5 Azul VM BEA Liquid VM 1.4.6 Apache Harmony Google Android Dalvik VM 1.4.7 Microsoft JVM及其他 1.5 展望Java技术的未来 1.5.1 模块化 1.5.2 混合语言 1.5.3 多核并行 1.5.4 进一步丰富语法 1.5.5 64位虚拟机 1.6 实战:自己编译JDK 1.6.1 获取JDK源码 1.6.2 系统需求 1.6.3 构建编译环境 1.6.4 进行编译 1.6.5 在IDE工具中进行源码调试 1.7 本章小结 第二部分 自动内存管理机制 第2章 Java内存区域与内存溢出异常 2.1 概述 2.2 运行时数据区域 2.2.1 程序计数器 2.2.2 Java虚拟机栈 2.2.3 本地方法栈 2.2.4 Java堆 2.2.5 方法区 2.2.6 运行时常量池 2.2.7 直接内存 2.3 HotSpot虚拟机对象探秘 2.3.1 对象的创建 2.3.2 对象的内存布局 2.3.3 对象的访问定位 2.4 实战:OutOfMemoryError异常 2.4.1 Java堆溢出 2.4.2 虚拟机栈和本地方法栈溢出 2.4.3 方法区和运行时常量池溢出 2.4.4 本机直接内存溢出 2.5 本章小结 第3章 垃圾收集器与内存分配策略 3.1 概述 3.2 对象已死吗 3.2.1 引用计数算法 3.2.2 可达性分析算法 3.2.3 再谈引用 3.2.4 生存还是死亡 3.2.5 回收方法区 3.3 垃圾收集算法 3.3.1 标记-清除算法 3.3.2 复制算法 3.3.3 标记-整理算法 3.3.4 分代收集算法 3.4 HotSpot的算法实现 3.4.1 枚举根节点 3.4.2 安全点 3.4.3 安全区域 3.5 垃圾收集器 3.5.1 Serial收集器 3.5.2 ParNew收集器 3.5.3 Parallel Scavenge收集器 3.5.4 Serial Old收集器 3.5.5 Parallel Old收集器 3.5.6 CMS收集器 3.5.7 G1收集器 3.5.8 理解GC日志 3.5.9 垃圾收集器参数总结 3.6 内存分配与回收策略 3.6.1 对象优先在Eden分配 3.6.2 大对象直接进入老年代 3.6.3 长期存活的对象将进入老年代 3.6.4 动态对象年龄判定 3.6.5 空间分配担保 3.7 本章小结 第4章 虚拟机性能监控与故障处理工具 4.1 概述 4.2 JDK的命令行工具 4.2.1 jps:虚拟机进程状况工具 4.2.2 jstat:虚拟机统计信息监视工具 4.2.3 jinfo:Java配置信息工具 4.2.4 jmap:Java内存映像工具 4.2.5 jhat:虚拟机堆转储快照分析工具 4.2.6 jstack:Java堆栈跟踪工具 4.2.7 HSDIS:JIT生成代码反汇编 4.3 JDK的可视化工具 4.3.1 JConsole:Java监视与管理控制台 4.3.2 VisualVM:多合一故障处理工具 4.4 本章小结 第5章 调优案例分析与实战 5.1 概述 5.2 案例分析 5.2.1 高性能硬件上的程序部署策略 5.2.2 集群间同步导致的内存溢出 5.2.3 堆外内存导致的溢出错误 5.2.4 外部命令导致系统缓慢 5.2.5 服务器JVM进程崩溃 5.2.6 不恰当数据结构导致内存占用过大 5.2.7 由Windows虚拟内存导致的长时间停顿 5.3 实战:Eclipse运行速度调优 5.3.1 调优前的程序运行状态 5.3.2 升级JDK 1.6的性能变化及兼容问题 5.3.3 编译时间和类加载时间的优化 5.3.4 调整内存设置控制垃圾收集频率 5.3.5 选择收集器降低延迟 5.4 本章小结 第三部分 虚拟机执行子系统 第6章 类文件结构 6.1 概述 6.2 无关性的基石 6.3 Class类文件的结构 6.3.1 魔数与Class文件的版本 6.3.2 常量池 6.3.3 访问标志 6.3.4 类索引、父类索引与接口索引集合 6.3.5 字段表集合 6.3.6 方法表集合 6.3.7 属性表集合 6.4 字节码指令简介 6.4.1 字节码与数据类型 6.4.2 加载和存储指令 6.4.3 运算指令 6.4.4 类型转换指令 6.4.5 对象创建与访问指令 6.4.6 操作数栈管理指令 6.4.7 控制转移指令 6.4.8 方法调用和返回指令 6.4.9 异常处理指令 6.4.10 同步指令 6.5 公有设计和私有实现 6.6 Class文件结构的发展 6.7 本章小结 第7章 虚拟机类加载机制 7.1 概述 7.2 类加载的时机 7.3 类加载的过程 7.3.1 加载 7.3.2 验证 7.3.3 准备 7.3.4 解析 7.3.5 初始化 7.4 类加载器 7.4.1 类与类加载器 7.4.2 双亲委派模型 7.4.3 破坏双亲委派模型 7.5 本章小结 第8章 虚拟机字节码执行引擎 8.1 概述 8.2 运行时栈帧结构 8.2.1 局部变量表 8.2.2 操作数栈 8.2.3 动态连接 8.2.4 方法返回地址 8.2.5 附加信息 8.3 方法调用 8.3.1 解析 8.3.2 分派 8.3.3 动态类型语言支持 8.4 基于栈的字节码解释执行引擎 8.4.1 解释执行 8.4.2 基于栈的指令集与基于寄存器的指令集 8.4.3 基于栈的解释器执行过程 8.5 本章小结 第9章 类加载及执行子系统的案例与实战 9.1 概述 9.2 案例分析 9.2.1 Tomcat:正统的类加载器架构 9.2.2 OSGi:灵活的类加载器架构 9.2.3 字节码生成技术与动态代理的实现 9.2.4 Retrotranslator:跨越JDK版本 9.3 实战:自己动手实现远程执行功能 9.3.1 目标 9.3.2 思路 9.3.3 实现 9.3.4 验证 9.4 本章小结 第四部分 程序编译与代码优化 第10章 早期(编译期)优化 10.1 概述 10.2 Javac编译器 10.2.1 Javac的源码与调试 10.2.2 解析与填充符号表 10.2.3 注解处理器 10.2.4 语义分析与字节码生成 10.3 Java语法糖的味道 10.3.1 泛型与类型擦除 10.3.2 自动装箱、拆箱与遍历循环 10.3.3 条件编译 10.4 实战:插入式注解处理器 10.4.1 实战目标 10.4.2 代码实现 10.4.3 运行与测试 10.4.4 其他应用案例 10.5 本章小结 第11章 晚期(运行期)优化 11.1 概述 11.2 HotSpot虚拟机内的即时编译器 11.2.1 解释器与编译器 11.2.2 编译对象与触发条件 11.2.3 编译过程 11.2.4 查看及分析即时编译结果 11.3 编译优化技术 11.3.1 优化技术概览 11.3.2 公共子表达式消除 11.3.3 数组边界检查消除 11.3.4 方法内联 11.3.5 逃逸分析 11.4 Java与CC++的编译器对比 11.5 本章小结 第五部分 高效并发 第12章 Java内存模型与线程 12.1 概述 12.2 硬件的效率与一致性 12.3 Java内存模型 12.3.1 主内存与工作内存 12.3.2 内存间交互操作 12.3.3 对于volatile型变量的特殊规则 12.3.4 对于long和double型变量的特殊规则 12.3.5 原子性、可见性与有序性 12.3.6 先行发生原则 12.4 Java与线程 12.4.1 线程的实现 12.4.2 Java线程调度 12.4.3 状态转换 12.5 本章小结 第13章 线程安全与锁优化 13.1 概述 13.2 线程安全 13.2.1 Java语言中的线程安全 13.2.2 线程安全的实现方法 13.3 锁优化 13.3.1 自旋锁与自适应自旋 13.3.2 锁消除 13.3.3 锁粗化 13.3.4 轻量级锁 13.3.5 偏向锁 13.4 本章小结 附  录 附录A 编译Windows版的OpenJDK 附录B 虚拟机字节码指令表 附录C HotSpot虚拟机主要参数表 附录D 对象查询语言(OQL)简介 附录E JDK历史版本轨迹

2018-10-15

Java性能优化权威指南

java性能优化权威指南目录: 第1章 策略、方法和方法论 1.1  性能问题的现状 1.2  性能分析的两种方法:自顶向下和自底向上 1.2.1  自顶向下 1.2.2  自底向上 1.3  选择正确的平台并评估系统性能 1.3.1  选择正确的CPU架构 1.3.2  评估系统性能 1.4  参考资料 第2章 操作系统性能监控 2.1  定义 2.2  CPU使用率 2.2.1  监控CPU使用率:Windows 2.2.2  监控CPU使用率:Windows typeperf 2.2.3  监控CPU使用率:Linux 2.2.4  监控CPU使用率:Solaris 2.2.5  命令行监控CPU使用率:Linux和Solaris 2.3  CPU调度程序运行队列 2.3.1  监控CPU调度程序运行队列:Windows 2.3.2  监控CPU调度程序运行队列:Solaris 2.3.3  监控CPU调度程序运行队列:Linux 2.4  内存使用率 2.4.1  监控内存利用率:Windows 2.4.2  监控内存使用率:Solaris 2.4.3  监控内存使用率:Linux 2.4.4  监控锁竞争:Solaris 2.4.5  监控锁竞争:Linux 2.4.6  监控锁竞争:Windows 2.4.7  隔离竞争锁 2.4.8  监控抢占式上下文切换 2.4.9  监控线程迁移 2.5  网络I/O使用率 2.5.1  监控网络I/O使用率:Solaris 2.5.2  监控网络I/O使用率:Linux 2.5.3  监控网络I/O使用率:Windows 2.5.4  应用性能改进的考虑 2.6  磁盘I/O使用率 2.7  其他命令行工具 2.8  监控CPU使用率:SPARC T系列系统 2.9  参考资料 第3章 JVM概览 3.1  HotSpot VM的基本架构 3.2  HotSpot VM运行时 3.2.1  命令行选项 3.2.2  VM生命周期 3.2.3  VM类加载 3.2.4  字节码验证 3.2.5  类数据共享 3.2.6  解释器 3.2.7  异常处理 3.2.8  同步 3.2.9  线程管理 3.2.10  C++堆管理 3.2.11  Java本地接口 3.2.12  VM致命错误处理 3.3  HotSpot VM垃圾收集器 3.3.1  分代垃圾收集 3.3.2  新生代 3.3.3  快速内存分配 3.3.4  垃圾收集器 3.3.5  Serial收集器 3.3.6  Parallel收集器:吞吐量为先! 3.3.7 Mostly-Concurrent收集器:低延迟为先! 3.3.8 Garbage-First收集器:CMS替代者 3.3.9  垃圾收集器比较 3.3.10  应用程序对垃圾收集器的影响 3.3.11  简单回顾收集器历史 3.4  HotSpot VM JIT编译器 3.4.1  类型继承关系分析 3.4.2  编译策略 3.4.3  逆优化 3.4.4  Client JIT编译器概览 3.4.5  Server JIT编译器概览 3.4.6  静态单赋值--程序依赖图 3.4.7  未来增强展望 3.5  HotSpot VM自适应调优 3.5.1  Java 1.4.2的默认值 3.5.2  Java 5自动优化的默认值 3.5.3  Java 6 Update 18更新后的默认优化值 3.5.4  自适应Java堆调整 3.5.5  超越自动优化 3.6  参考资料 第4章 JVM性能监控 4.1  定义 4.2  垃圾收集 4.2.1  重要的垃圾收集数据 4.2.2  垃圾收集报告 4.2.3  垃圾收集数据的离线分析 4.2.4  图形化工具 4.3  JIT编译器 4.4  类加载 4.5  Java应用监控 4.6  参考资料

2018-09-30

Spring Cloud微服务实战 PDF

目录 · · · · · · 第1章 基础知识 1 什么是微服务架构 1 -- 与单体系统的区别 1 -- 如何实施微服务 2 为什么选择Spring Cloud 6 Spring Cloud简介 7 版本说明 8 第2章 微服务构建:Spring Boot 11 框架简介 12 快速入门 13 -- 项目构建与解析 13 -- 实现RESTful API 17 配置详解 20 -- 配置文件 20 -- 自定义参数 22 -- 参数引用 22 -- 使用随机数 23 -- 命令行参数 23 -- 多环境配置 24 -- 加载顺序 25 监控与管理 26 -- 初识actuator 27 -- 原生端点 28 小结 38 第3章 服务治理:Spring Cloud Eureka 39 服务治理 39 -- Netflix Eureka 40 --搭建服务注册中心 41 --注册服务提供者 43 --高可用注册中心 46 --服务发现与消费 48 Eureka详解 51 --基础架构 52 --服务治理机制 52 --源码分析 56 配置详解 65 --服务注册类配置 65 --服务实例类配置 67 跨平台支持 71 第4章 客户端负载均衡:Spring Cloud Ribbon 73 客户端负载均衡 73 RestTemplate详解 75 -- GET请求 75 -- POST请求 77 -- PUT请求 79 -- DELETE请求 79 源码分析 80 -- 负载均衡器 91 -- 负载均衡策略 109 配置详解 123 --自动化配置 124 -- Camden版本对RibbonClient配置的优化 125 -- 参数配置 127 -- 与Eureka结合 127 重试机制 128 第5章 服务容错保护:Spring Cloud Hystrix 130 快速入门 131 原理分析 135 -- 工作流程 135 -- 断路器原理 144 -- 依赖隔离 148 使用详解 151 -- 创建请求命令 151 -- 定义服务降级 154 -- 异常处理 157 -- 命令名称、分组以及线程池划分 158 -- 请求缓存 159 -- 请求合并 166 属性详解 172 -- Command属性 174 -- collapser属性 184 -- threadPool属性 185 Hystrix仪表盘 187 Turbine集群监控 192 -- 构建监控聚合服务 192 -- 与消息代理结合 196 第6章 声明式服务调用:Spring Cloud Feign 199 快速入门 200 参数绑定 202 继承特性 205 Ribbon配置 209 全局配置 209 指定服务配置 209 重试机制 210 Hystrix配置 211 全局配置 211 禁用Hystrix 211 指定命令配置 212 服务降级配置 212 其他配置 214 第7章 API网关服务:Spring Cloud Zuul 217 快速入门 219 -- 构建网关 220 -- 请求路由 221 -- 请求过滤 223 路由详解 226 -- 传统路由配置 226 -- 服务路由配置 228 -- 服务路由的默认规则 229 -- 自定义路由映射规则 229 -- 路径匹配 230 -- 路由前缀 233 -- 本地跳转 234 -- Cookie与头信息 235 -- Hystrix和Ribbon支持 236 过滤器详解 238 -- 过滤器 238 -- 请求生命周期 239 -- 核心过滤器 240 -- 异常处理 244 -- 禁用过滤器 256 动态加载 257 -- 动态路由 257 -- 动态过滤器 261 第8章 分布式配置中心:Spring Cloud Config 267 快速入门 267 -- 构建配置中心 268 -- 配置规则详解 269 -- 客户端配置映射 272 服务端详解 274 -- 基础架构 274 -- Git配置仓库 276 -- SVN配置仓库 279 -- 本地仓库 279 -- 本地文件系统 279 -- 健康监测 280 -- 属性覆盖 281 -- 安全保护 281 -- 加密解密 282 -- 高可用配置 286 客户端详解 286 -- URI指定配置中心 287 -- 服务化配置中心 287 -- 失败快速响应与重试 290 -- 获取远程配置 292 -- 动态刷新配置 293 第9章 消息总线:Spring Cloud Bus 295 消息代理 295 RabbitMQ实现消息总线 296 -- 基本概念 297 -- 安装与使用 298 -- 快速入门 302 -- 整合Spring Cloud Bus 306 -- 原理分析 307 -- 指定刷新范围 308 -- 架构优化 309 -- RabbitMQ配置 310 Kafka实现消息总线 312 -- Kafka简介 312 -- 快速入门 313 --整合Spring Cloud Bus 315 -- Kafka配置 318 深入理解 318 -- 源码分析 320 -- 其他消息代理的支持 342 第10章 消息驱动的微服务:Spring Cloud Stream 344 快速入门 344 核心概念 349 -- 绑定器 350 -- 发布-订阅模式 351 -- 消费组 353 -- 消息分区 354 使用详解 355 -- 开启绑定功能 355 -- 绑定消息通道 356 -- 消息生产与消费 360 -- 响应式编程 366 -- 消费组与消息分区 368 -- 消息类型 370 绑定器详解 373 -- 绑定器SPI 373 -- 自动化配置 374 -- 多绑定器配置 374 -- RabbitMQ与Kafka绑定器 376 配置详解 376 -- 基础配置 377 -- 绑定通道配置 377 -- 绑定器配置 379 第11章 分布式服务跟踪:Spring Cloud Sleuth 386 快速入门 386 -- 准备工作 386 -- 实现跟踪 389 跟踪原理 390 抽样收集 392 与Logstash整合 394 与Zipkin整合 397 -- HTTP收集 398 -- 消息中间件收集 402 -- 收集原理 404 -- 数据存储 414 -- API接口 417 附录A Starter POMs 419

2018-08-14

Netty权威指南 第2版

目录编辑 基础篇走进Java NIO 第1 章Java 的I/O 演进之路.2 1.1 I/O 基础入门...............3 1.1.1 Linux 网络I/O 模型简介.......3 1.1.2 I/O 多路复用技术.................6 1.2 Java 的I/O 演进..........8 1.3 总结............................ 10 第2 章NIO 入门.................... 11 2.1 传统的BIO 编程....... 11 2.1.1 BIO 通信模型图.................. 12 2.1.2 同步阻塞式I/O 创建的TimeServer 源码分析............. 13 2.1.3 同步阻塞式I/O 创建的TimeClient 源码分析.......... 16 2.2 伪异步I/O 编程........ 18 2.2.1 伪异步I/O 模型图.............. 19 2.2.2 伪异步I/O 创建的TimeServer 源码分析..... 19 2.2.3 伪异步I/O 弊端分析........... 21 2.3 NIO 编程.................... 24 2.3.1 NIO 类库简介.. 24 2.3.2 NIO 服务端序列图.............. 28 2.3.3 NIO 创建的TimeServer 源码分析................ 30 2.3.4 NIO 客户端序列图.............. 36 2.3.5 NIO 创建的TimeClient 源码分析................ 39 2.4 AIO 编程.................... 45 2.4.1 AIO 创建的TimeServer 源码分析................ 46 2.4.2 AIO 创建的TimeClient 源码分析................ 51 2.4.3 AIO 版本时间服务器运行结果.................... 56 2.5 4 种I/O 的对比......... 58 2.5.1 概念澄清.......... 58 2.5.2 不同I/O 模型对比.............. 59 2.6 选择Netty 的理由..... 60 2.6.1 不选择Java 原生NIO 编程的原因............... 61 2.6.2 为什么选择Netty ................ 62 2.7 总结............................ 63 入门篇 Netty NIO 开发指南 第3 章Netty 入门应用.......... 66 3.1 Netty 开发环境的搭建................ 66 3.1.1 下载Netty 的软件包........... 67 3.1.2 搭建Netty 应用工程........... 67 3.2 Netty 服务端开发...... 68 3.3 Netty 客户端开发...... 73 3.4 运行和调试................ 76 3.4.1 服务端和客户端的运行...... 76 3.4.2 打包和部署...... 77 3.5 总结............................ 77 第4 章TCP 粘包/拆包问题的解决之道...... 79 4.1 TCP 粘包/拆包.......... 79 4.1.1 TCP 粘包/拆包问题说明..... 80 4.1.2 TCP 粘包/拆包发生的原因....... 80 4.1.3 粘包问题的解决策略.......... 81 4.2 未考虑TCP 粘包导致功能异常案例................. 82 4.2.1 TimeServer 的改造.............. 82 4.2.2 TimeClient 的改造............... 83 4.2.3 运行结果.......... 84 4.3 利用LineBasedFrameDecoder 解决TCP 粘包问题................ 85 4.3.1 支持TCP 粘包的TimeServer ....................... 86 4.3.2 支持TCP 粘包的TimeClient........................ 88 4.3.3 运行支持TCP 粘包的时间服务器程序........ 90 4.3.4 LineBasedFrameDecoder 和StringDecoder 的原理分析........... 91 4.4 总结............................ 92 第5 章分隔符和定长解码器的应用...... 93 5.1 DelimiterBasedFrameDecoder 应用开发............. 94 5.1.1 DelimiterBasedFrameDecoder 服务端开发.... 94 5.1.2 DelimiterBasedFrameDecoder 客户端开发.... 97 5.1.3 运行DelimiterBasedFrameDecoder 服务端和客户端............... 99 5.2 FixedLengthFrameDecoder 应用开发............... 101 5.2.1 FixedLengthFrameDecoder 服务端开发...... 101 5.2.2 利用telnet 命令行测试EchoServer 服务端......103 5.3 总结.......................... 104 中级篇 Netty 编解码开发指南 第6 章编解码技术.............. 106 6.1 Java 序列化的缺点 ...... 107 6.1.1 无法跨语言.... 107 6.1.2 序列化后的码流太大........ 107 6.1.3 序列化性能太低................ 110 6.2 业界主流的编解码框架............ 113 6.2.1 Google 的Protobuf 介绍.... 113 6.2.2 Facebook 的Thrift 介绍.... 115 6.2.3 JBoss Marshalling 介绍..... 116 6.3 总结.......................... 117 第7 章MessagePack 编解码............... 118 7.1 MessagePack 介绍... 118 7.1.1 MessagePack 多语言支持.. 119 7.1.2 MessagePack Java API 介绍........................ 119 7.1.3 MessagePack 开发包下载. 120 7.2 MessagePack 编码器和解码器开发................. 120 7.2.1 MessagePack 编码器开发....... 120 7.2.2 MessagePack 解码器开发 ...... 121 7.2.3 功能测试........ 121 7.3 粘包/半包支持......... 124 7.4 总结.......................... 127 第8 章Google Protobuf 编解码.......... 128 8.1 Protobuf 的入门....... 129 8.1.1 Protobuf 开发环境搭建..... 129 8.1.2 Protobuf 编解码开发......... 131 8.1.3 运行Protobuf 例程............ 133 8.2 Netty 的Protobuf 服务端开发.. 133 8.2.1 Protobuf 版本的图书订购服务端开发........ 134 8.2.2 Protobuf 版本的图书订购客户端开发........ 136 8.2.3 Protobuf 版本的图书订购程序功能测试.... 139 8.3 Protobuf 的使用注意事项......... 140 8.4 总结.......................... 142 第9 章JBoss Marshalling 编解码....... 143 9.1 Marshalling 开发环境准备........ 143 9.2 Netty 的Marshalling 服务端开发..................... 144 9.3 Netty 的Marshalling 客户端开发..................... 147 9.4 运行Marshalling 客户端和服务端例程........... 149 9.5 总结.......................... 150 高级篇 Netty 多协议开发和应用 第10 章HTTP 协议开发应用............... 154 10.1 HTTP 协议介绍..... 155 10.1.1 HTTP 协议的URL .......... 155 10.1.2 HTTP 请求消息(HttpRequest).............. 155 10.1.3 HTTP 响应消息(HttpResponse)........... 158 10.2 Netty HTTP 服务端入门开发....... 159 10.2.1 HTTP 服务端例程场景描述..................... 160 10.2.2 HTTP 服务端开发........... 160 10.2.3 Netty HTTP 文件服务器例程运行结果.... 166 10.3 Netty HTTP+XML 协议栈开发....................... 170 10.3.1 开发场景介绍................. 171 10.3.2 HTTP+XML 协议栈设计.......174 10.3.3 高效的XML 绑定框架JiBx ..................... 175 10.3.4 HTTP+XML 编解码框架开发.................. 183 10.3.5 HTTP+XML 协议栈测试....... 199 10.3.6 小结............. 201 10.4 总结........................ 202 第11 章WebSocket 协议开发............. 203 11.1 HTTP 协议的弊端....... 204 11.2 WebSocket 入门..... 204 11.2.1 WebSocket 背景............... 205 11.2.2 WebSocket 连接建立....... 206 11.2.3 WebSocket 生命周期....... 207 11.2.4 WebSocket 连接关闭....... 208 11.3 Netty WebSocket 协议开发..... 209 11.3.1 WebSocket 服务端功能介绍..................... 209 11.3.2 WebSocket 服务端开发.... 210 11.3.3 运行WebSocket 服务端... 218 11.4 总结........................ 219 第12 章私有协议栈开发.... 221 12.1 私有协议介绍........ 221 12.2 Netty 协议栈功能设计............ 223 12.2.1 网络拓扑图.. 223 12.2.2 协议栈功能描述.............. 224 12.2.3 通信模型...... 224 12.2.4 消息定义...... 225 12.2.5 Netty 协议支持的字段类型...................... 226 12.2.6 Netty 协议的编解码规范. 227 12.2.7 链路的建立.. 229 12.2.8 链路的关闭.. 230 12.2.9 可靠性设计.. 230 12.2.10 安全性设计 232 12.2.11 可扩展性设计................ 232 12.3 Netty 协议栈开发.. 233 12.3.1 数据结构定义................. 233 12.3.2 消息编解码.. 237 12.3.3 握手和安全认证.............. 241 12.3.4 心跳检测机制................. 245 12.3.5 断连重连...... 248 12.3.6 客户端代码.. 249 12.3.7 服务端代码.. 251 12.4 运行协议栈............ 252 12.4.1 正常场景...... 252 12.4.2 异常场景:服务端宕机重启.................... 253 12.4.3 异常场景:客户端宕机重启.................... 256 12.5 总结........................ 256 第13 章服务端创建............ 258 13.1 原生NIO 类库的复杂性......... 259 13.2 Netty 服务端创建源码分析.... 259 13.2.1 Netty 服务端创建时序图. 260 13.2.2 Netty 服务端创建源码分析...................... 263 13.3 客户端接入源码分析.............. 272 13.4 总结........................ 275 第14 章客户端创建............ 276 14.1 Netty 客户端创建流程分析.... 276 14.2.1 Netty 客户端创建时序图. 276 14.2.2 Netty 客户端创建流程分析...................... 277 14.2 Netty 客户端创建源码分析.... 278 14.2.1 客户端连接辅助类Bootstrap.................... 278 14.2.2 客户端连接操作.............. 281 14.2.3 异步连接结果通知.......... 283 14.2.4 客户端连接超时机制...... 284 14.3 总结........................ 286 源码分析篇 Netty 功能介绍和源码分析 第15 章ByteBuf 和相关辅助类........... 288 15.1 ByteBuf 功能说明. 288 15.1.1 ByteBuf 的工作原理........ 289 15.1.2 ByteBuf 的功能介绍........ 294 15.2 ByteBuf 源码分析. 308 15.2.1 ByteBuf 的主要类继承关系..................... 309 15.2.2 AbstractByteBuf 源码分析........................ 310 15.2.3 AbstractReferenceCountedByteBuf 源码分析.................. 319 15.2.4 UnpooledHeapByteBuf 源码分析.............. 321 15.2.5 PooledByteBuf 内存池原理分析............... 326 15.2.6 PooledDirectByteBuf 源码分析................. 329 15.3 ByteBuf 相关的辅助类功能介绍.................... 332 15.3.1 ByteBufHolder................. 332 15.3.2 ByteBufAllocator ............. 333 15.3.3 CompositeByteBuf ........... 334 15.3.4 ByteBufUtil .. 336 15.4 总结........................ 337 第16 章Channel 和Unsafe ................. 338 16.1 Channel 功能说明. 338 16.1.1 Channel 的工作原理........ 339 16.1.2 Channel 的功能介绍........ 340 16.2 Channel 源码分析. 343 16.2.1 Channel 的主要继承关系类图.................. 343 16.2.2 AbstractChannel 源码分析........................ 344 16.2.3 AbstractNioChannel 源码分析.................. 347 16.2.4 AbstractNioByteChannel 源码分析........... 350 16.2.5 AbstractNioMessageChannel 源码分析..... 353 16.2.6 AbstractNioMessageServerChannel 源码分析.............. 354 16.2.7 NioServerSocketChannel 源码分析........... 355 16.2.8 NioSocketChannel 源码分析..................... 358 16.3 Unsafe 功能说明... 364 16.4 Unsafe 源码分析... 365 16.4.1 Unsafe 继承关系类图...... 365 16.4.2 AbstractUnsafe 源码分析. 366 16.4.3 AbstractNioUnsafe 源码分析.................... 375 16.4.4 NioByteUnsafe 源码分析. 379 16.5 总结........................ 387 第17 章ChannelPipeline 和ChannelHandler........... 388 17.1 ChannelPipeline 功能说明....... 389 17.1.1 ChannelPipeline 的事件处理.................... 389 17.1.2 自定义拦截器................. 391 17.1.3 构建pipeline 392 17.1.4 ChannelPipeline 的主要特性.................... 393 17.2 ChannelPipeline 源码分析....... 393 17.2.1 ChannelPipeline 的类继承关系图............. 393 17.2.2 ChannelPipeline 对ChannelHandler 的管理........... 393 17.2.3 ChannelPipeline 的inbound 事件.............. 396 17.2.4 ChannelPipeline 的outbound 事件............ 397 17.3 ChannelHandler 功能说明....... 398 17.3.1 ChannelHandlerAdapter 功能说明............ 399 17.3.2 ByteToMessageDecoder 功能说明............ 399 17.3.3 MessageToMessageDecoder 功能说明...... 400 17.3.4 LengthFieldBasedFrameDecoder 功能说明............... 400 17.3.5 MessageToByteEncoder 功能说明............. 404 17.3.6 MessageToMessageEncoder 功能说明....... 404 17.3.7 LengthFieldPrepender 功能说明............... 405 17.4 ChannelHandler 源码分析....... 406 17.4.1 ChannelHandler 的类继承关系图............. 406 17.4.2 ByteToMessageDecoder 源码分析............ 407 17.4.3 MessageToMessageDecoder 源码分析...... 410 17.4.4 LengthFieldBasedFrameDecoder 源码分析............ 411 17.4.5 MessageToByteEncoder 源码分析............. 415 17.4.6 MessageToMessageEncoder 源码分析....... 416 17.4.7 LengthFieldPrepender 源码分析............... 417 17.5 总结........................ 418 第18 章EventLoop 和EventLoopGroup.................... 419 18.1 Netty 的线程模型.. 419 18.1.1 Reactor 单线程模型......... 420 18.1.2 Reactor 多线程模型......... 421 18.1.3 主从Reactor 多线程模型 422 18.1.4 Netty 的线程模型............ 423 18.1.5 最佳实践...... 424 18.2 NioEventLoop 源码分析......... 425 18.2.1 NioEventLoop 设计原理.. 425 18.2.2 NioEventLoop 继承关系类图................... 426 18.2.3 NioEventLoop.................. 427 18.3 总结........................ 436 第19 章Future 和Promise .................. 438 19.1 Future 功能............ 438 19.2 ChannelFuture 源码分析......... 443 19.3 Promise 功能介绍. 445 19.4 Promise 源码分析. 447 19.4.1 Promise 继承关系图........ 447 19.4.2 DefaultPromise ................ 447 19.5 总结........................ 449 架构和行业应用篇 Netty 高级特性 第20 章Netty 架构剖析..... 452 20.1 Netty 逻辑架构...... 452 20.1.1 Reactor 通信调度层......... 453 20.1.2 职责链ChannelPipeline ... 453 20.1.3 业务逻辑编排层(Service ChannelHandler)........... 454 20.2 关键架构质量属性.................. 454 20.2.1 高性能.......... 454 20.2.2 可靠性.......... 457 20.2.3 可定制性...... 460 20.2.4 可扩展性...... 460 20.3 总结........................ 460 第21 章Java 多线程编程在Netty 中的应用............. 461 21.1 Java 内存模型与多线程编程.. 461 21.1.1 硬件的发展和多任务处理........................ 461 21.1.2 Java 内存模型................. 462 21.2 Netty 的并发编程实践............ 464 21.2.1 对共享的可变数据进行正确的同步......... 464 21.2.2 正确使用锁.. 465 21.2.3 volatile 的正确使用......... 467 21.2.4 CAS 指令和原子类......... 470 21.2.5 线程安全类的应用.......... 472 21.2.6 读写锁的应用................. 476 21.2.7 线程安全性文档说明...... 477 21.2.8 不要依赖线程优先级...... 478 21.3 总结........................ 479 第22 章高性能之道............ 480 22.1 RPC 调用性能模型分析.......... 480 22.1.1 传统RPC 调用性能差的三宗罪............... 480 22.1.2 I/O 通信性能三原则........ 481 22.2 Netty 高性能之道.. 482 22.2.1 异步非阻塞通信.............. 482 22.2.2 高效的Reactor 线程模型 482 22.2.3 无锁化的串行设计.......... 485 22.2.4 高效的并发编程.............. 486 22.2.5 高性能的序列化框架...... 486 22.2.6 零拷贝.......... 487 22.2.7 内存池.......... 491 22.2.8 灵活的TCP 参数配置能力....................... 494 22.3 主流NIO 框架性能对比......... 495 22.4 总结........................ 497 第23 章可靠性.................... 498 23.1 可靠性需求............ 498 23.1.1 宕机的代价.. 498 23.1.2 Netty 可靠性需求............ 499 23.2 Netty 高可靠性设计................ 500 23.2.1 网络通信类故障.............. 500 23.2.2 链路的有效性检测.......... 507 23.2.3 Reactor 线程的保护......... 510 23.2.4 内存保护...... 513 23.2.5 流量整形...... 516 23.2.6 优雅停机接口................. 519 23.3 优化建议................ 520 23.3.1 发送队列容量上限控制... 520 23.3.2 回推发送失败的消息...... 521 23.4 总结........................ 521 第24 章安全性.................... 522 24.1 严峻的安全形势.... 522 24.1.1 OpenSSL Heart bleed 漏洞.......... 522 24.1.2 安全漏洞的代价.............. 523 24.1.3 Netty 面临的安全风险..... 523 24.2 Netty SSL 安全特性................. 525 24.2.1 SSL 单向认证.................. 525 24.2.2 SSL 双向认证.................. 532 24.2.3 第三方CA 认证.............. 536 24.3 Netty SSL 源码分析................. 538 24.3.1 客户端.......... 538 24.3.2 服务端.......... 541 24.3.3 消息读取...... 544 24.3.4 消息发送...... 545 24.4 Netty 扩展的安全特性............ 546 24.4.1 IP 地址黑名单机制.......... 547 24.4.2 接入认证...... 548 24.4 总结........................ 550 第25 章Netty 未来展望..... 551 25.1 应用范围................ 551 25.2 技术演进................ 552 25.3 社区活跃度............ 552 25.4 Road Map ............... 552 25.5 总结........................ 553 附录A Netty 参数配置表.... 554 [1]

2018-08-14

Hadoop权威指南中文(第四版)

第Ⅰ部分Hadoop基础知识 第1章初识Hadoop3 1.1数据!数据!3 1.2数据的存储与分析5 1.3查询所有数据6 1.4不仅仅是批处理7 1.5相较于其他系统的优势8 1.6ApacheHadoop发展简史12 1.7本书包含的内容16 第2章关于MapReduce19 2.1气象数据集19 2.2使用Unix工具来分析数据21 2.3使用Hadoop来分析数据22 2.4横向扩展31 2.5HadoopStreaming37 第3章Hadoop分布式文件系统42 3.1HDFS的设计42 3.2HDFS的概念44 3.3命令行接口50 3.4Hadoop文件系统52 3.5Java接口56 3.6数据流68 3.7通过distcp并行复制76 第4章关于YARN78 4.1剖析YARN应用运行机制79 4.2YARN与MapReduce1相比82 4.3YARN中的调度85 4.4延伸阅读95 第5章Hadoop的I/O操作96 5.1数据完整性96 5.2压缩99 5.3序列化109 5.4基于文件的数据结构127 第Ⅱ部分关于MapReduce 第6章MapReduce应用开发141 6.1用于配置的API142 6.2配置开发环境144 6.3用MRUnit来写单元测试152 6.4本地运行测试数据156 6.5在集群上运行160 6.6作业调优174 6.7MapReduce的工作流176 第7章MapReduce的工作机制184 7.1剖析MapReduce作业运行 机制184 7.2失败191 7.3shuffle和排序195 7.4任务的执行201 第8章MapReduce的 类型与格式207 8.1MapReduce的类型207 8.2输入格式218 8.3输出格式236 第9章MapReduce的特性243 9.1计数器243 9.2排序252 9.3连接264 9.4边数据分布270 9.5MapReduce库类276 第Ⅲ部分Hadoop的操作 第10章构建Hadoop集群279 10.1集群规范280 10.2集群的构建和安装284 10.3Hadoop配置288 10.4安全性305 10.5利用基准评测程序测试 Hadoop集群311 第11章管理Hadoop314 11.1HDFS314 11.2监控327 11.3维护329 第Ⅳ部分Hadoop相关开源项目 第12章关于Avro341 12.1Avro数据类型和模式342 12.2内存中的序列化和 反序列化特定API347 12.3Avro数据文件349 12.4互操作性351 12.5模式解析352 12.6排列顺序354 12.7关于AvroMapReduce356 12.8使用AvroMapReduce 进行排序359 12.9其他语言的Avro362 第13章关于Parquet363 13.1数据模型364 13.2Parquet文件格式367 13.3Parquet的配置368 13.4Parquet文件的读/写369 13.5ParquetMapReduce374 第14章关于Flume377 14.1安装Flume378 14.2示例378 14.3事务和可靠性380 14.4HDFSSink382 14.5扇出385 14.6通过代理层分发387 14.7Sink组391 14.8Flume与应用程序的集成395 14.9组件编目395 14.10延伸阅读397 第15章关于Sqoop398 15.1获取Sqoop398 15.2Sqoop连接器400 15.3一个导入的例子401 15.4生成代码404 15.5深入了解数据库导入405 15.6使用导入的数据409 15.7导入大对象412 15.8执行导出414 15.9深入了解导出功能416 15.10延伸阅读419 第16章关于Pig420 16.1安装与运行Pig421 16.2示例425 16.3与数据库进行比较428 16.4PigLatin429 16.5用户自定义函数446 16.6数据处理操作455 16.7Pig实战465 16.8延伸阅读468 第17章关于Hive469 17.1安装Hive470 17.2示例472 17.3运行Hive473 17.4Hive与传统数据库相比480 17.5HiveQL483 17.6表488 17.7查询数据501 17.8用户定义函数508 17.9延伸阅读516 第18章关于Crunch517 18.1示例518 18.2Crunch核心API521 18.3管线执行537 18.4Crunch库545 18.5延伸阅读547 第19章关于Spark548 19.1安装Spark549 19.2示例549 19.3弹性分布式数据集555 19.4共享变量564 19.5剖析Spark作业运行机制565 19.6执行器和集群管理器570 19.7延伸阅读574 第20章关于HBase575 20.1HBase基础575 20.2概念576 20.3安装581 20.4客户端584 20.5创建在线查询应用589 20.6HBase和RDBMS的比较598 20.7Praxis601 20.8延伸阅读602 第21章关于ZooKeeper604 21.1安装和运行ZooKeeper605 21.2示例607 21.3ZooKeeper服务615 21.4使用ZooKeeper来构建 应用629 21.5生产环境中的ZooKeeper640 21.6延伸阅读643 第Ⅴ部分案例学习 第22章医疗公司塞纳(Cerner) 的可聚合数据647 22.1从多CPU到语义集成647 22.2进入ApacheCrunch648 22.3建立全貌649 22.4集成健康医疗数据651 22.5框架之上的可组合性654 22.6下一步655 第23章生物数据科学: 用软件拯救生命657 23.1DNA的结构659 23.2遗传密码:将DNA字符 转译为蛋白质660 22.3将DNA想象成源代码661 23.4人类基因组计划和参考 基因组663 22.5DNA测序和比对664 23.6ADAM,一个可扩展的 基因组分析平台666 23.7使用Avro接口描述语言进行 自然语言编程666 23.8使用Parquet进行面向列的 存取668 23.9一个简单例子:用Spark和 ADAM做k-mer计数669 23.10从个性化广告到个性化 医疗672 23.11联系我们673 第24章开源项目Cascading674 24.1字段、元组和管道675 24.2操作678 24.3Taps,Schemes和Flows680 24.4Cascading实践应用681 24.5灵活性684 24.6ShareThis中的Hadoop和 Cascading685 24.7总结689 附录A安装ApacheHadoop691 附录B关于CDH697 附录C准备NCDC气象数据699 附录D新版和旧版Java MapReduceAPI702

2018-08-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除