自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java锁的正确使用

使用JVM锁只对某个用户锁

2022-09-22 09:50:09 615 2

原创 深入理解ReentrantReadWriteLock

ReentrantReadWriteLock是读写锁的实现,写锁基于AQS的独占模式,读锁基于AQS的共享模式,读锁和写锁默认采用非公平锁,是一种可重入锁。可以在构造方法中指定是公平锁还是非公平锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,实际上独占锁是一种相对比较保守的锁策略,独占锁模式下的读/读、读/写、写/写操作都不能同时发生,这在一定程度上降低了吞吐量。然而读操作之间不存在数据竞争问题,如果读/读操作能够以共享锁的方式进行,那会进一步提升性能。为了解决读写冲

2020-08-15 13:42:43 315

原创 深入理解Semaphore

Semaphore是基于AQS共享锁来实现,默认采用非公平锁。Semaphore 类似于操作系统中的信号量,可以控制对互斥资源的访问线程数。Semaphore用于限制可以访问某些资源(物理或逻辑的)的线程数目,其维护了一个许可证集合,有多少资源限制就维护多少许可证集合,假如这里有N个资源,那就对应于N个许可证,同一时刻也只能有N个线程访问。一个线程获取许可证就调用acquire方法,用完了释放资源就调用release方法。可以在构造方法中指定是公平锁还是非公平锁使用案例下面使用Semaphore进

2020-08-15 13:41:45 271

原创 深入理解CyclicBarrier

CyclicBarrier基于AQS的Condition来实现。相比CountDownLatch,CyclicBarrier 可以有不止一个栅栏,因为它的栅栏(Barrier)可以重复使用(Cyclic)。CyclicBarrier允许一组线程在到达某个栅栏点(common barrier point)互相等待,直到最后一个线程到达栅栏点,栅栏才会打开,处于阻塞状态的线程恢复继续执行。使用案例注意下面的CyclicBarrier可以循环使用@org.junit.jupiter.api.Test

2020-08-15 13:40:38 241

原创 深入理解CountDownLatch

CountDownLatch基于AQS的共享模式,用来控制一个或者多个线程等待多个线程。CountDownLatch使用一个计数器进行实现。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。使用案例@org.junit.jupiter.api.Testvoid testCountDownLatch() { int nCpu = 4, queueCapacity =

2020-08-15 13:40:07 209

原创 深入理解ReentrantLock

ReentrantLock基于AQS的独占模式,默认采用非公平锁,是一种可重入锁。可以在构造方法中指定是公平锁还是非公平锁使用案例ArrayBlockingQueue中的代码:final ReentrantLock lock;private final Condition notFull;public void put(E e) throws InterruptedException { checkNotNull(e); final ReentrantLock lock = t

2020-08-15 13:39:39 149

原创 深入理解AQS

所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。基本原理AQS 核心思想:如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就

2020-08-15 13:38:55 735 1

原创 数据库和缓存双写问题

数据库和缓存双写问题缓存的目的是为了减少数据库的压力,但只要用了缓存,就肯定会有不一致,2个数据源之间是没有事务的,没法保证绝对的强一致。从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。常见的四种方案:先更新缓存,在更新数据库先更新数据库,再更新缓存先删除缓存,再更新数据库先更新数据库,再删除缓存微软和Facebook采用的更新策略是第四种:cache-asideScaling Memcache at Facebook先更新缓存,在更新数据库问题:如果更新缓存后,

2020-08-08 15:11:53 659 1

原创 java集合-Queue-Deque篇

java集合-Queue/Deque篇JDK提供的集合类型主要分为四种类型:List:支持重复元素Set:不支持重复元素Map:键/值对的映射集Queue/Deque(double ended queue):queue是在集合尾部添加元素,在头部删除元素的队列,deque是可在头部和尾部添加或者删除元素的双端队列,deque既可以实现队列又可以实现栈。本文基于JDK8,java version “1.8.0_251”ArrayDeque基于数组,循环数组,非线程安全,效率高,双端队列,

2020-08-08 15:10:08 678

原创 java集合-Map篇

java集合-Map篇JDK提供的集合类型主要分为四种类型:List:支持重复元素Set:不支持重复元素Map:键/值对的映射集Queue/Deque(double ended queue):queue是在集合尾部添加元素,在头部删除元素的队列,deque是可在头部和尾部添加或者删除元素的双端队列,deque既可以实现队列又可以实现栈。本文基于JDK8,java version “1.8.0_251”HashMap数组+链表/红黑树,非线程安全在JDK8之前,hashMap是数组

2020-08-08 15:07:14 169

原创 java集合-Set篇

java集合-Set篇JDK提供的集合类型主要分为四种类型:List:支持重复元素Set:不支持重复元素Map:键/值对的映射集Queue/Deque(double ended queue):queue是在集合尾部添加元素,在头部删除元素的队列,deque是可在头部和尾部添加或者删除元素的双端队列,deque既可以实现队列又可以实现栈。本文基于JDK8,java version “1.8.0_251”EnumSet(RegularEnumSet/JumboEnumSet)枚举类的容器,

2020-08-08 15:05:44 209

原创 java集合-List篇

java集合-List篇JDK提供的集合类型主要分为四种类型:List:支持重复元素Set:不支持重复元素Map:键/值对的映射集Queue/Deque(double ended queue):queue是在集合尾部添加元素,在头部删除元素的队列,deque是可在头部和尾部添加或者删除元素的双端队列,deque既可以实现队列又可以实现栈。本文基于JDK8,java version “1.8.0_251”ArrayList基于数组,支持随机访问,非线程安全实现了RandomAcce

2020-08-08 15:03:30 131

原创 位运算及原码、反码、补码

位运算程序中的所有数在计算机内存中都是以二进制的形式储存的,位运算就是直接对整数在内存中的二进制位进行操作。位运算是更底层一些的操作,位运算通常相比其他运算有着更高的效率。运算符号含义C\C++Java按位与(AND)a & ba & b按位或a | ba | b按位异或a ^ ba ^ b按位取反~ a~ a左...

2020-04-28 17:16:32 1125

原创 centos7设置虚拟内存

环境说明:系统:Centos 7首先查看当前的内存和swap 空间大小默认单位为k, -m 单位为Mfree -m查看swap信息,包括文件和分区的详细信息swapon -s# 或者cat /proc/swaps如果没有虚拟内存,我们就需要手动添加交换分区。注意,OPENVZ架构的VPS是不支持手动添加交换分区的。添加交换空间有两种选择:添加一个交换分区或添加一个交换文件...

2020-04-28 17:14:57 2542

原创 centos7安装python3环境

环境说明:系统:Centos 7Python安装包版本:Python-3.7.5.tgz 官网:https://www.python.org/downloads/source/安装开发环境、及相关依赖Development tools这是一个可以给开发编译运维的配置基本初始环境的工具。sudo yum -y groupinstall "Development tools"sudo yu...

2020-04-28 17:13:37 455

原创 JAVA发送HTTP请求方式总结

java 发送HTTP请求方式总结源代码:http://github.com/lovewenyo/HttpDemo1. HttpURLConnection使用JDK原生提供的net,无需其他jar包; HttpURLConnection是URLConnection的子类,提供更多的方法,使用更方便。package httpURLConnection;import...

2018-05-30 14:40:21 60057 6

原创 RedisDesktopManager连接远程Redis详细教程

RedisDesktopManager连接远程Redis详细教程

2018-05-03 16:46:26 8702 2

转载 Java常用加密技术和代码总结

首先大家要记住现代密码学最重要的原则柯克霍夫原则: 数据的安全基于密钥而不是算法的保密。也就是说即使密码系统的任何细节已为人悉知,只要密匙未洩漏,它也应是安全的。具体来说: 系统必须可用,非数学上不可译码。 系统不一定要保密,可以轻易落入敌人手中。 密匙必须可以不经书写的资料交换和记忆,且双方可以改变密匙。 系统可以用于电讯。 系统可以转移位置,它的功能必须不用经过几个人之手才可达到。 系统容易使...

2018-04-13 08:46:36 223

原创 GitHub如何上传本地源代码

关于如何上传本地源代码...方法不一,这里只介绍本人所采用的方法。前提条件:你需要拥有一个GitHub账号,如果没有的话,先去创建一个, 网址: www.github.com然后下载安装git 网址:https://desktop.github.com/创建成功之后,先在github上创建一个repositories(点开在头像下的your profile---->repositories-...

2018-04-10 15:52:58 579

转载 Eclipse开发Web项目

Eclipse开发Web项目

2017-12-22 16:17:52 414

转载 IDEA创建Web项目详细过程

IDEA创建Web项目详细过程

2017-12-13 14:00:44 42909 7

转载 sphinx教程2---安装、配置和使用

sphinx教程2__安装、配置和使用

2017-12-12 22:37:15 406

原创 排序算法---桶排序[Java]

排序算法---桶排序[Java]

2017-12-10 12:33:42 320

转载 IDEA快捷键

Intellij IDEA最常用快捷键1.Ctrl+E,可以显示最近编辑的文件列表2.Shift+Click可以关闭文件3.Ctrl+[或]可以跳到大括号的开头结尾4.Ctrl+Shift+Backspace可以跳转到上次编辑的地方5.Ctrl+F12,可以显示当前文件的结构6.Ctrl+F7可以查询当前元素在当前文件中的引用,然后按F3可以选择

2017-11-30 22:08:35 272

翻译 IDEA自动生成类和方法【带参数和返回】注释

idea:类头注释:打开file->setting->Editor->Filr and Code Templates->Includes->File Header 直接在右边的文件框里编辑你说需要注释的东西,然后应用保存之后,当你创建类的时候就会自动生成注释。方法注释:打开file->setting->Editor->LiveTemplates点击右边上面那个绿色的+号,选

2017-11-30 21:59:56 25518 5

原创 java.sql.Date java.util.Date String 的相互转换

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** * java.util.Date * 1、就是在除了SQL语句的情况下面使用;是 java.sql.Date 的父类; * 2、是常用的表示时间的类,我们通常格式化或者得到当前时间都是用它。 * ...

2017-11-24 15:50:15 1587 2

设计模式之禅(第2版)

基本概述: 《设计模式之禅(第 2 版)》由秦小波著,是设计模式领域公认的 3 本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第 1 版 2010 年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读 6 大设计原则和 28 种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解将不同的模式组合使用的方法。第 2 版在第 1 版的基础上有两方面的改进,一方面结合读者的意见和建议对原有内容中的瑕疵进行了修正和完善,另一方面增加了 4 种新的设计模式,希望这一版能为广大程序员们奉上一场更加完美的设计模式盛宴! 《设计模式之禅(第 2 版)》共 38 章,分为五部分:第一部分(第 1~6 章),以一种全新的视角对面向对象程序设计的 6 大原则进行了深刻解读,旨在让读者能更深刻且准确地理解这些原则,为后面的学习打下基础;第二部分(第 7~29 章)通过大量生动的案例讲解和分析了 23 种最常用的设计模式,并进行了扩展讲解,通俗易懂,趣味性极强而又紧扣模式的核心;第三部分(第 30~33 章)对同类型和相关联的模式进行了深入分析和比较,旨在阐明各种设计模式之间的差别以及它们的理想应用场景;第四部分(第 34~36 章)探讨了如何在实际开发中将各种设计模式混合起来使用,以发挥设计模式的最大效用;第五部分(第 37~38 章)是本书的扩展篇,首先从实现的角度对 MVC 框架的原理进行了深入分析,然后讲解了 5 种新的设计模式的原理、意图和最佳实践。本书最后附有一份精美的设计模式彩图,可以裁剪,便于参考。

2019-05-15

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

深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) 目录: 第一部分走近 Java 第 1 章走近 Java2 1.1 概述 2 1.2Java 技术体系 3 1.3Java 发展史 5 1.4Java 虚拟机发展史 9 1.4.1SunClassicExactVM9 1.4.2SunHotSpotVM11 1.4.3SunMobile—EmbeddedVMMeta—CircularVM12 1.4.4BEAJRockitIBMJ9VM13 1.4.5AzulVMBEALiquidVM14 1.4.6ApacheHarmonyGoogleAndroidDalvikVM14 1.4.7MicrosoftJVM 及其他 15 1.5 展望 Java 技术的未来 16 1.5.1 模块化 17 1.5.2 混合语言 17 1.5.3 多核并行 19 1.5.4 进一步丰富语法 20 1.5.564 位虚拟机 21 1.6 实战:自己编译 JDK22 1.6.1 获取 JDK 源码 22 1.6.2 系统需求 24 1.6.3 构建编译环境 25 1.6.4 进行编译 26 1.6.5 在 IDE 工具中进行源码调试 31 1.7 本章小结 35 第二部分自动内存管理机制 第 2 章 Java 内存区域与内存溢出异常 38 2.1 概述 38 2.2 运行时数据区域 38 2.2.1 程序计数器 39 2.2.2Java 虚拟机栈 39 2.2.3 本地方法栈 40 2.2.4Java 堆 41 2.2.5 方法区 41 2.2.6 运行时常量池 42 2.2.7 直接内存 43 2.3HotSpot 虚拟机对象探秘 43 2.3.1 对象的创建 44 2.3.2 对象的内存布局 47 2.3.3 对象的访问定位 48 2.4 实战:OutOfMemoryError 异常 50 2.4.1Java 堆溢出 51 2.4.2 虚拟机栈和本地方法栈溢出 53 2.4.3 方法区和运行时常量池溢出 56 2.4.4 本机直接内存溢出 59 2.5 本章小结 60 第 3 章垃圾收集器与内存分配策略 61 3.1 概述 61 3.2 对象已死吗 62 3.2.1 引用计数算法 62 3.2.2 可达性分析算法 64 3.2.3 再谈引用 65 3.2.4 生存还是死亡 66 3.2.5 回收方法区 68 3.3 垃圾收集算法 69 3.3.1 标记—清除算法 69 3.3.2 复制算法 70 3.3.3 标记—整理算法 71 3.3.4 分代收集算法 72 3.4HotSpot 的算法实现 72 3.4.1 枚举根节点 72 3.4.2 安全点 73 3.4.3 安全区域 74 3.5 垃圾收集器 75 3.5.1Serial 收集器 76 3.5.2ParNew 收集器 77 3.5.3ParallelScavenge 收集器 79 3.5.4SerialOld 收集器 80 3.5.5ParallelOld 收集器 80 3.5.6CMS 收集器 81 3.5.7G1 收集器 84 3.5.8 理解 GC 日志 89 3.5.9 垃圾收集器参数总结 90 3.6 内存分配与回收策略 91 3.6.1 对象优先在 Eden 分配 91 3.6.2 大对象直接进入老年代 93 3.6.3 长期存活的对象将进入老年代 95 3.6.4 动态对象年龄判定 97 3.6.5 空间分配担保 98 3.7 本章小结 100 第 4 章虚拟机性能监控与故障处理工具 101 4.1 概述 101 4.2JDK 的命令行工具 101 4.2.1jps:虚拟机进程状况工具 104 4.2.2jstat:虚拟机统计信息监视工具 105 4.2.3jinfo:Java 配置信息工具 106 4.2.4jmap:Java 内存映像工具 107 4.2.5jhat:虚拟机堆转储快照分析工具 108 4.2.6jstack:Java 堆栈跟踪工具 109 4.2.7HSDIS:JIT 生成代码反汇编 111 4.3JDK 的可视化工具 114 4.3.1JConsole:Java 监视与管理控制台 115 4.3.2VisualVM:多合一故障处理工具 122 4.4 本章小结 131 第 5 章调优案例分析与实战 132 5.1 概述 132 5.2 案例分析 132 5.2.1 高性能硬件上的程序部署策略 132 5.2.2 集群间同步导致的内存溢出 135 5.2.3 堆外内存导致的溢出错误 136 5.2.4 外部命令导致系统缓慢 137 5.2.5 服务器 JVM 进程崩溃 138 5.2.6 不恰当数据结构导致内存占用过大 139 5.2.7 由 Windows 虚拟内存导致的长时间停顿 141 5.3 实战:Eclipse 运行速度调优 142 5.3.1 调优前的程序运行状态 142 5.3.2 升级 JDK1.6 的性能变化及兼容问题 145 5.3.3 编译时间和类加载时间的优化 150 5.3.4 调整内存设置控制垃圾收集频率 153 5.3.5 选择收集器降低延迟 157 5.4 本章小结 160 第三部分虚拟机执行子系统 第 6 章类文件结构 162 6.1 概述 162 6.2 无关性的基石 162 6.3Class 类文件的结构 164 6.3.1 魔数与 Class 文件的版本 166 6.3.2 常量池 167 6.3.3 访问标志 173 6.3.4 类索引、父类索引与接口索引集合 174 6.3.5 字段表集合 175 6.3.6 方法表集合 178 6.3.7 属性表集合 180 6.4 字节码指令简介 196 6.4.1 字节码与数据类型 197 6.4.2 加载和存储指令 199 6.4.3 运算指令 200 6.4.4 类型转换指令 202 6.4.5 对象创建与访问指令 203 6.4.6 操作数栈管理指令 203 6.4.7 控制转移指令 204 6.4.8 方法调用和返回指令 204 6.4.9 异常处理指令 205 6.4.10 同步指令 205 6.5 公有设计和私有实现 206 6.6Class 文件结构的发展 207 6.7 本章小结 208 第 7 章虚拟机类加载机制 209 7.1 概述 209 7.2 类加载的时机 210 7.3 类加载的过程 214 7.3.1 加载 214 7.3.2 验证 216 7.3.3 准备 219 7.3.4 解析 220 7.3.5 初始化 225 7.4 类加载器 227 7.4.1 类与类加载器 228 7.4.2 双亲委派模型 229 7.4.3 破坏双亲委派模型 233 7.5 本章小结 235 第 8 章虚拟机字节码执行引擎 236 8.1 概述 236 8.2 运行时栈帧结构 236 8.2.1 局部变量表 238 8.2.2 操作数栈 242 8.2.3 动态连接 243 8.2.4 方法返回地址 243 8.2.5 附加信息 244 8.3 方法调用 244 8.3.1 解析 244 8.3.2 分派 246 8.3.3 动态类型语言支持 258 8.4 基于栈的字节码解释执行引擎 269 8.4.1 解释执行 269 8.4.2 基于栈的指令集与基于寄存器的指令集 270 8.4.3 基于栈的解释器执行过程 272 8.5 本章小结 275 第 9 章类加载及执行子系统的案例与实战 276 9.1 概述 276 9.2 案例分析 276 9.2.1Tomcat:正统的类加载器架构 276 9.2.2OSGi:灵活的类加载器架构 279 9.2.3 字节码生成技术与动态代理的实现 282 9.2.4Retrotranslator:跨越 JDK 版本 286 9.3 实战:自己动手实现远程执行功能 289 9.3.1 目标 290 9.3.2 思路 290 9.3.3 实现 291 9.3.4 验证 298 9.4 本章小结 299 第四部分程序编译与代码优化 第 10 章早期(编译期)优化 302 10.1 概述 302 10.2Javac 编译器 303 10.2.1Javac 的源码与调试 303 10.2.2 解析与填充符号表 305 10.2.3 注解处理器 307 10.2.4 语义分析与字节码生成 307 10.3Java 语法糖的味道 311 10.3.1 泛型与类型擦除 311 10.3.2 自动装箱、拆箱与遍历循环 315 10.3.3 条件编译 317 10.4 实战:插入式注解处理器 318 10.4.1 实战目标 318 10.4.2 代码实现 319 10.4.3 运行与测试 326 10.4.4 其他应用案例 327 10.5 本章小结 328 第 11 章晚期(运行期)优化 329 11.1 概述 329 11.2HotSpot 虚拟机内的即时编译器 329 11.2.1 解释器与编译器 330 11.2.2 编译对象与触发条件 332 11.2.3 编译过程 337 11.2.4 查看及分析即时编译结果 339 11.3 编译优化技术 345 11.3.1 优化技术概览 346 11.3.2 公共子表达式消除 350 11.3.3 数组边界检查消除 351 11.3.4 方法内联 352 11.3.5 逃逸分析 354 11.4Java 与 C/C++的编译器对比 356 11.5 本章小结 358 第五部分高效并发 第 12 章 Java 内存模型与线程 360 12.1 概述 360 12.2 硬件的效率与一致性 361 12.3Java 内存模型 362 12.3.1 主内存与工作内存 363 12.3.2 内存间交互操作 364 12.3.3 对于 volatile 型变量的特殊规则 366 12.3.4 对于 long 和 double 型变量的特殊规则 372 12.3.5 原子性、可见性与有序性 373 12.3.6 先行发生原则 375 12.4Java 与线程 378 12.4.1 线程的实现 378 12.4.2Java 线程调度 381 12.4.3 状态转换 383 12.5 本章小结 384 第 13 章线程安全与锁优化 385 13.1 概述 385 13.2 线程安全 385 13.2.1Java 语言中的线程安全 386 13.2.2 线程安全的实现方法 390 13.3 锁优化 397 13.3.1 自旋锁与自适应自旋 398 13.3.2 锁消除 398 13.3.3 锁粗化 400 13.3.4 轻量级锁 400 13.3.5 偏向锁 402 13.4 本章小结 403 附录 附录 A 编译 Windows 版的 OpenJDK406 附录 B 虚拟机字节码指令表 414 附录 CHotSpot 虚拟机主要参数表 420 附录 D 对象查询语言(OQL)简介 424 附录 EJDK 历史版本轨迹 430

2019-05-15

HTTP权威指南 mobi+epub+azw3

基本概述: HTTP(HyperText Transfer Protocol,超文本传输协议)是 Web 客户端与服务器交互文档和信息时所使用的协议,是每个成功 Web 事务的幕后推手。众所周知,我们每天访问公司内部网络、搜索书籍、研究统计信息时所使用的浏览器的核心是 HTTP。但 HTTP 的应用远不仅仅是浏览 Web 内容。由于 HTTP 既简单又普及,很多其他网络应用程序也选择了它,尤其是采用 SOAP 和 XML-RPC 这样的 Web 服务。 详细解释了 HTTP 协议,包括它是如何工作的,如何用它来开发基于 Web 的应用程序。但本书并不只介绍了 HTTP,还探讨了 HTTP 有效工作所依赖的所有其他核心因特网技术。尽管 HTTP 是本书的中心内容,但本书的本质是理解 Web 的工作原理,以及如何将这些知识应用到 Web 编程和管理之中去,主要涵盖 HTTP 的技术运作方式、产生动机、性能和目标,以及一些相关技术问题。 本书是 HTTP 协议及相关 Web 技术方面的著作,主要内容包括: HTTP 方法、首部以及状态码 优化代理和缓存的方法 设计 Web 机器人和爬虫的策略 Cookies、认证以及安全 HTTP 国际化及内容协商 重定向及负载平衡策略 本书由具有多年实践经验的专家编写,通过简洁语言和大量翔实的细节图解帮助读者形象地理解 Web 幕后所发生的事情,详细说明了 Web 上每条请求的实际运行情况。要想高效地进行 Web 开发,所有 Web 程序员、管理员和应用程序都应该熟悉 HTTP。很多书籍只介绍了 Web 的使用方式,而本书则深入说明了 Web 的工作原理。 目录: 第一部分 HTTP:Web 的基础 第 1 章 HTTP 概述 1.1 HTTP——因特网的多媒体信使 1.2 Web 客户端和服务器 1.3 资源 1.3.1 媒体类型 1.3.2 UIU 1.3.3 URL 1.3.4 URN 1.4 事务 1.4.1 方法 1.4.2 状态码 1.4.3 Web 页面中可以包含多个对象 1.5 报文 1.6 连接 1.6.1 TCMP 1.6.2 连接、IP 地址及端口号 1.6.3 一个使用 Telnet 的实例 1.7 协议版本 1.8 Web 的结构组件 1.8.1 代理 1.8.2 缓存 1.8.3 网关 1.8.4 隧道 1.8.5 Agent 代理 1.9 起始部分的结束语 1.10 更多信息 1.10.1 HTTP 协议信息 1.10.2 历史透视 1.10.3 其他万维网信息 第 2 章 URL 与资源 2.1 浏览因特网资源 2.2 URL 的语法 2.2.1 方案——使用什么协议 2.2.2 主机与端口 2.2.3 用户名和密码 2.2.4 路径 2.2.5 参数 2.2.6 查询字符串 2.2.7 片段 2.3 URL 快捷方式 2.3.1 相对 UPL 2.3.2 自动扩展 URL 2.4 各种令人头疼的字符 2.4.1 URL 字符集 2.4.2 编码机制 2.4.3 字符限制 2.4.4 另外一点说明 2.5 方案的世界 2.6 未来展望 2.7 更多信息 第 3 章 HTTP 报文 3.1 报文流 3.1.1 报文流入源端服务器 3.1.2 报文向下游流动 3.2 报文的组成部分 3.2.1 报文的语法 3.2.2 起始行 3.2.3 首部 3.2.4 实体的主体部分 3.2.5 版本 0.9 的报文 3.3 方法 3.3.1 安全方法 3.3.2 GET 3.3.3 HEAD 3.3.4 PUT 3.3.5 POST 3.3.6 TRACE 3.3.7 OPTIONS 3.3.8 DELETE 3.3.9 扩展方法 3.4 状态码 3.4.1 100~199——信息性状态码 3.4.2 200~299——成功状态码 3.4.3 300~399——重定向状态码 3.4.4 400~499——客户端错误状态码 3.4.5 500~599——服务器错误状态码 3.5 首部 3.5.1 通用首部 3.5.2 请求首部 3.5.3 响应首部 3.5.4 实体首部 3.6 更多信息 4 章连接管理 4.1 TCP 连接 4.1.1 TCP 的可靠数据管道 4.1.2 TCP 流是分段的、由 IP 分组传送 4.1.3 保持 TCP 连接持续不断地运行 4.1.4 用 TCP 套接字编程 4.2 对 TCP 性能的考虑 4.2.1 HTTP 事务的时延 4.2.2 性能聚焦区域 4.2.3 TCP 连接的握手时延 4.2.4 延迟确认 4.2.5 TCP 慢启动 4.2.6 Nagle 算法与 TCP—NODELAY 4.2.7 TIME WAIT 累积与端口耗尽 4.3 HTTP 连接的处理 4.3.1 常被误解的 Connection 首部 4.3.2 串行事务处理时延 4.4 并行连接 4.4.1 并行连接可能会提高页面的加载速度 4.4.2 并行连接不一定更快 …… 第二部分 HTTP 结构 第 5 章 Web 服务器 第 6 章 代理 第 7 章 缓存 第 8 章 集成点:网关、隧道及中继 第 9 章 Web 机器人 第 10 章 HTTP—NG 第三部分 识别、认证与安全 第 11 章 客户端识别与 cookie 机制 第 12 章 基本认证机制 第 13 章 摘要认证 第 14 章 安全 HTTP 第四部分 实体、编码和国际化 第 15 章 实体和编码 第 16 章 国际化 第 17 章 内容协商与转码 第五部分 内容发布与分发 第 18 章 Web 主机托管 第 19 章 发布系统 第 20 章 重定向与负载均衡 第 21 章 日志记录与使用情况跟踪 第六部分 附录 附录 A URI 方案 附录 B HTTP 状态码 附录 C HTTP 首部参考 附录 D MIME 类型 附录 E Base—64 编码 附录 F 摘要认证 附录 G 语言标记 附录 H MIME 字符集注册表 索引

2019-05-15

大话Java性能优化.rar

目录: 第 1 章 性能调优策略概述 1 1.1 为什么需要调优 1 1.2 性能优化的参考因素 5 1.2.1 传统计算机体系的分歧 5 1.2.2 导致系统瓶颈的计算资源 7 1.2.3 程序性能衡量指标 8 1.2.4 性能优化目标 9 1.2.5 性能优化策略 10 1.3 性能调优分类方法 11 1.3.1 业务方面 12 1.3.2 基础技术方面 12 1.3.3 组件方面 17 1.3.4 架构方面 19 1.3.5 层次方面 20 1.4 本章小结 21 第 2 章 优化前的准备知识 22 2.1 服务器知识 23 2.1.1 内存 23 2.1.2 GPU/CPU44 2.1.3 硬盘 49 2.1.4 网络架构 51 2.2 新兴技术 53 第 3 章 JavaAPI 调用优化建议 54 3.1 面向对象及基础类型 55 3.1.1 采用 Clone()方式创建对象 55 3.1.2 避免对 boolean 判断 55 3.1.3 多用条件操作符 56 3.1.4 静态方法代替实例方法 56 3.1.5 有条件地使用 final 关键字 58 3.1.6 避免不需要的 instanceof 操作 58 3.1.7 避免子类中存在父类转换 59 3.1.8 建议多使用局部变量 60 3.1.9 运算效率最高的方式——位运算 60 3.1.10 用一维数组代替二维数组 62 3.1.11 布尔运算代替位运算 64 3.1.12 提取表达式优化 65 3.1.13 不要总是使用取反操作符(!)66 3.1.14 不要重复初始化变量 66 3.1.15 变量初始化过程思考 66 3.1.16 对象的创建、访问过程 69 3.1.17 在 switch 语句中使用字符串 70 3.1.18 数值字面量的改进 73 3.1.19 优化变长参数的方法调用 74 3.1.20 针对基本数据类型的优化 75 3.1.21 空变量 76 3.2 集合类概念 77 3.2.1 快速删除 List 里面的数据 78 3.2.2 集合内部避免返回 null80 3.2.3 ArrayList、LinkedList 比较 82 3.2.4 Vector、HashTable 比较 85 3.2.5 HashMap 使用经验 87 3.2.6 EnumSet、EnumMap91 3.2.7 HashSet 使用经验 92 3.2.8 LinkedHashMap、TreeMap 比较 96 3.2.9 集合处理优化新方案 99 3.2.10 优先考虑并行计算 107 3.3 字符串概念 108 3.3.1 String 对象 108 3.3.2 善用 String 对象的 SubString 方法 111 3.3.3 用 charat()代替 startswith()113 3.3.4 在字符串相加的时候,使用''代替””114 3.3.5 字符串切割 114 3.3.6 字符串重编码 117 3.3.7 合并字符串 118 3.3.8 正则表达式不是万能的 122 3.4 引用类型概念 123 3.4.1 强引用(Strong Reference)126 3.4.2 软引用(Soft Reference)131 3.4.3 弱引用(Weak Reference)135 3.4.4 引用队列 141 3.4.5 虚引用(Phantom Reference)142 3.5 其他相关概念 146 3.5.1 JNI 技术提升 146 3.5.2 异常捕获机制 150 3.5.3 ExceptionUtils 类 154 3.5.4 循环技巧 155 3.5.5 替换 switch157 3.5.6 优化循环 158 3.5.7 使用 arrayCopy()159 3.5.8 使用 Buffer 进行 I/O 操作 161 3.5.9 使用 clone()代替 new164 3.5.10 I/O 速度 166 3.5.11 Finally 方法里面释放或者关闭资源占用 167 3.5.12 资源管理机制 167 3.5.13 牺牲 CPU 时间 169 3.5.14 对象操作 172 3.5.15 正则表达式 172 3.5.16 压缩文件处理 174 3.6 本章小结 175 第 4 章 程序设计优化建议 176 4.1 算法优化概述 176 4.1.1 常用算法逻辑描述 177 4.1.2 多核算法优化原理 186 4.1.3 Java 算法优化实践 188 4.2 设计模式 196 4.2.1 设计模式的六大准则 196 4.2.2 单一对象控制 200 4.2.3 并行程序设计模式 202 4.2.4 接口适配 205 4.2.5 访问方式隔离 219 4.3 I/O 及网络相关优化 225 4.3.1 I/O 操作优化 225 4.3.2 Socket 编程 231 4.3.3 NIO2.0 文件系统 235 4.4 数据应用优化 236 4.4.1 关系型数据库优化 236 4.4.2 向 HBase 插入大量数据 240 4.4.3 解决海量数据缓存 251 4.5 其他优化 256 4.5.1 Web 系统性能优化建议 256 4.5.2 死锁情况解决方案 259 4.5.3 JavaBeans 组件 268 4.6 本章小结 269 第 5 章 Java 并行程序优化建议 270 5.1 并行程序优化概述 270 5.1.1 资源限制带来的挑战 271 5.1.2 进程、线程、协程 272 5.1.3 使用多线程的原因 281 5.1.4 线程不安全范例 282 5.1.5 重排序机制 284 5.1.6 实例变量的数据共享 286 5.1.7 生产者与消费者模式 288 5.1.8 线程池的使用 290 5.2 锁机制对比 296 5.2.1 锁机制概述 296 5.2.2 Synchronized 使用技巧 298 5.2.3 Volatile 的使用技巧 303 5.2.4 队列同步器 304 5.2.5 可重入锁 307 5.2.6 读写锁 308 5.2.7 偏向锁和轻量级锁 309 5.3 增加程序并行性 310 5.3.1 并发计数器 311 5.3.2 减少上下文切换次数 312 5.3.3 针对 Thread 类的更新 314 5.3.4 Fork/Join 框架 314 5.3.5 Executor 框架 318 5.4 JDK 类库使用 319 5.4.1 原子值 320 5.4.2 并行容器 324 5.4.3 非阻塞队列 332 5.4.4 阻塞队列 338 5.4.5 并发工具类 365 5.5 本章小结 376 第 6 章 JVM 性能测试及监控 377 6.1 监控计算机设备层 378 6.1.1 监控 CPU380 6.1.2 监控内存 405 6.1.3 监控磁盘 417 6.1.4 监控网络 423 6.2 监控 JVM 活动 428 6.2.1 监控垃圾收集目的 429 6.2.2 GC 垃圾回收报告分析 430 6.2.3 图形化工具 431 6.2.4 GC 跟踪示例 437 6.3 本章小结 438 第 7 章 JVM 性能调优建议 439 7.1 JVM 相关概念 439 7.1.1 内存使用相关概念 440 7.1.2 字节码相关知识 443 7.1.3 自动内存管理 448 7.2 JVM 系统架构 451 7.2.1 JVM 的基本架构 451 7.2.2 JVM 初始化过程 453 7.2.3 JVM 架构模型与执行引擎 456 7.2.4 解释器与 JIT 编译器 456 7.2.5 类加载机制 457 7.2.6 虚拟机 458 7.3 垃圾回收机制相关 459 7.3.1 GC 相关概念 459 7.3.2 垃圾回收算法 468 7.3.3 垃圾收集器 476 7.4 实用 JVM 实验 490 7.4.1 将新对象预留在年轻代 490 7.4.2 大对象进入年老代 494 7.4.3 设置对象进入年老代的年龄 495 7.4.4 稳定与震荡的堆大小 497 7.4.5 吞吐量优先案例 498 7.4.6 使用大页案例 499 7.4.7 降低停顿案例 499 7.4.8 设置最大堆内存 499 7.4.9 设置最小堆内存 500 7.4.10 设置年轻代 503 7.4.11 设置持久代 504 7.4.12 设置线程栈 504 7.4.13 堆的比例分配 505 7.4.14 堆分配参数总结 508 7.4.15 垃圾回收器相关参数总结 509 7.4.16 查询 GC 命令 515 7.5 本章小结 515 第 8 章 其他优化建议 516 8.1 Java 现有机制及未来发展 516 8.1.1 Java 体系结构变化历史 516 8.1.2 Java 语言面临的挑战 520 8.1.3 Java8 的新特性 522 8.1.4 Java 语言前景 523 8.1.5 物联网:Java 和你是一对 524 8.1.6 Java 模块化发展 525 8.1.7 OpenJDK 的发展 527 8.2 系统架构优化建议 528 8.2.1 系统架构调优 528 8.2.2 Java 项目优化方式分享 530 8.2.3 面向服务架构 534 8.2.4 程序隔离技术 538 8.2.5 团队并行开发准则 544 8.3 与编程无关 546 8.3.1 工程师品格 546 8.3.2 如何成为技术大牛 547 8.3.3 编程方法分享 548 8.4 本章小结 549

2019-05-15

Docker进阶与实战 (容器技术系列) mobi+epub+azw3

本书概述: Docker在国内的发展如火如荼,短短一两年时间里就陆续出现了一批关于Docker的创业公司。华为公司作为国内开源领域的领导者,对Docker也有很大的投入,我们认为有必要把自己的知识积累和实践经验总结出来分享给广大开发者。除了吸引更多的人投入到Docker的生态建设以外,我们也希望通过本书帮助更多的读者更好、更快地掌握Docker关键技术。本书不仅适合一般的Docker用户,也适合 Docker 生态圈中的开发者,希望它可以成为一本 Docker 进阶的图书,帮助读者快速提升。

2019-05-15

第一本Docker书(修订版)mobi+epub+azw3

本书概述: Docker是一个开源的应用容器引擎,开发 者可以利用Docker打包自己的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 本书由Docker公司前服务与支持副总裁 James Turnbull 编写,是Docker开发指南。本书专注于Docker 1.9 及以上版本,指导读者完成Docker的安装、部署、管理和扩展,带领读者经历从测试到生产的整个开发生命周期,让读者了解 Docker 适用于什么场景。书中先介绍 Docker 及其组件的基础知识,然后介绍用 Docker 构建容器和服务来完成各种任务:利用 Docker 为新项目建立测试环境,演示如何使用持续集成的工作流集成 Docker,如何构建应用程序服务和平台,如何使用 Docker 的 API,如何扩展 Docker。 目录: 第 1 章简介 1.1Docker 简介 1.1.1 提供一个简单、轻量的建模方式 1.1.2 职责的逻辑分离 1.1.3 快速、高效的开发生命周期 1.1.4 鼓励使用面向服务的架构 1.2Docker 组件 1.2.1Docker 客户端和服务器 1.2.2Docker 镜像 1.2.3Registry 1.2.4 容器 1.3 能用 Docker 做什么 1.4Docker 与配置管理 1.5Docker 的技术组件 1.6 本书的内容 1.7Docker 资源 第 2 章安装 Docker 2.1 安装 Docker 的先决条件 2.2 在 Ubuntu 和 Debian 中安装 Docker 2.2.1 检查前提条件 2.2.2 安装 Docker 2.2.3Docker 与 UFW 2.3 在 RedHat 和 RedHat 系发行版中安装 Docker 2.3.1 检查前提条件 2.3.2 安装 Docker 2.3.3 在 RedHat 系发行版中启动 Docker 守护进程 2.4 在 OS X 中安装 Docker Toolbox 2.4.1 在 OS X 中安装 Docker Toolbox 2.4.2 在 OS X 中启动 Docker Toolbox 2.4.3 测试 Docker Toolbox 2.5 在 Windows 中安装 Docker Toolbox 2.5.1 在 Windows 中安装 Docker Toolbox 2.5.2 在 Windows 中启动 Docker Toolbox 2.5.3 测试 Docker Toolbox 2.6 使用本书的 Docker Toolbox 示例 2.7Docker 安装脚本 2.8 二进制安装 2.9Docker 守护进程 2.9.1 配置 Docker 守护进程 2.9.2 检查 Docker 守护进程是否正在运行 2.10 升级 Docker 2.11Docker 用户界面 2.12 小结 第 3 章 Docker 入门 3.1 确保 Docker 已经就绪 3.2 运行我们的第一个容器 3.3 使用第一个容器 3.4 容器命名 3.5 重新启动已经停止的容器 3.6 附着到容器上 3.7 创建守护式容器 3.8 容器内部都在干些什么 3.9Docker 日志驱动 3.10 查看容器内的进程 3.11Docker 统计信息 3.12 在容器内部运行进程 3.13 停止守护式容器 3.14 自动重启容器 3.15 深入容器 3.16 删除容器 3.17 小结 第 4 章使用 Docker 镜像和仓库 4.1 什么是 Docker 镜像 4.2 列出镜像 4.3 拉取镜像 4.4 查找镜像 4.5 构建镜像 4.5.1 创建 DockerHub 账号 4.5.2 用 Docker 的 commit 命令创建镜像 4.5.3 用 Dockerfile 构建镜像 4.5.4 基于 Dockerfile 构建新镜像 4.5.5 指令失败时会怎样 4.5.6Dockerfile 和构建缓存 4.5.7 基于构建缓存的 Dockerfile 模板 4.5.8 查看新镜像 4.5.9 从新镜像启动容器 4.5.10Dockerfile 指令 4.6 将镜像推送到 DockerHub 4.7 删除镜像 4.8 运行自己的 DockerRegistry 4.8.1 从容器运行 Registry 4.8.2 测试新 Registry 4.9 其他可选 Registry 服务 4.10 小结 第 5 章在测试中使用 Docker 5.1 使用 Docker 测试静态网站 5.1.1Sample 网站的初始 Dockerfile 5.1.2 构建 Sample 网站和 Nginx 镜像 5.1.3 从 Sample 网站和 Nginx 镜像构建容器 5.1.4 修改网站 5.2 使用 Docker 构建并测试 Web 应用程序 5.2.1 构建 Sinatra 应用程序 5.2.2 创建 Sinatra 容器 5.2.3 扩展 Sinatra 应用程序来使用 Redis 5.2.4 将 Sinatra 应用程序连接到 Redis 容器 5.2.5Docker 内部连网 5.2.6Docker Networking 5.2.7 使用容器连接来通信 5.2.8 连接容器小结 5.3Docker 用于持续集成 5.3.1 构建 Jenkins 和 Docker 服务器 5.3.2 创建新的 Jenkins 作业 5.3.3 运行 Jenkins 作业 5.3.4 与 Jenkins 作业有关的下一步 5.3.5Jenkins 设置小结 5.4 多配置的 Jenkins 5.4.1 创建多配置作业 5.4.2 测试多配置作业 5.4.3Jenkins 多配置作业小结 5.5 其他选择 5.5.1Drone 5.5.2Shippable 5.6 小结 第 6 章使用 Docker 构建服务 6.1 构建第一个应用 6.1.1Jekyll 基础镜像 6.1.2 构建 Jekyll 基础镜像 6.1.3Apache 镜像 6.1.4 构建 Jekyll Apache 镜像 6.1.5 启动 Jekyll 网站 6.1.6 更新 Jekyll 网站 6.1.7 备份 Jekyll 卷 6.1.8 扩展 Jekyll 示例网站 6.2 使用 Docker 构建一个 Java 应用服务 6.2.1WAR 文件的获取程序 6.2.2 获取 WAR 文件 6.2.3Tomecat7 应用服务器 6.2.4 运行 WAR 文件 6.2.5 基于 Tomcat 应用服务器的构建服务 6.3 多容器的应用栈 6.3.1Node.js 镜像 6.3.2Redis 基础镜像 6.3.3Redis 主镜像 6.3.4Redis 副本镜像 6.3.5 创建 Redis 后端集群 6.3.6 创建 Node 容器 6.3.7 捕获应用日志 6.3.8Node 程序栈的小结 6.4 不使用 SSH 管理 Docker 容器 6.5 小结 第 7 章 Docker 编配和服务发现 7.1DockerCompose 7.1.1 安装 Docker Compose 7.1.2 获取示例应用 7.1.3docker—compose.yml 文件 7.1.4 运行 Compose 7.1.5 使用 Compose 7.1.6Compose 小结 7.2Consul、服务发现和 Docker 7.2.1 构建 Consul 镜像 7.2.2 在本地测试 Consul 容器 7.2.3 使用 Docker 运行 Consul 集群 7.2.4 启动具有自启动功能的 Consul 节点 7.2.5 启动其余节点 7.2.6 配合 Consul,在 Docker 里运行一个分布式服务 7.3DockerSwarm 7.3.1 安装 Swam 7.3.2 创建 Swarm 集群 7.3.3 创建容器 7.3.4 过滤器 7.3.5 策略 7.3.6 小结 7.4 其他编配工具和组件 7.4.1Fleet 和 etcd 7.4.2Kubernetes 7.4.3Apache Mesos 7.4.4Helios 7.4.5Centurion 7.5 小结 第 8 章使用 DockerAPI 8.1DockerAPI 8.2 初识 Remote API 8.3 测试 Docker Remote API 8.3.1 通过 API 来管理 Docker 镜像 8.3.2 通过 API 管理 Docker 容器 8.4 改进 TProv 应用 8.5 对 Docker Remote API 进行认证 8.5.1 建立证书授权中心 8.5.2 创建服务器的证书签名请求和密钥 8.5.3 配置 Docker 守护进程 8.5.4 创建客户端证书和密钥 8.5.5 配置 Docker 客户端开启认证功能 8.6 小结 第 9 章获得帮助和对 Docker 进行改进 9.1 获得帮助 9.1.1Docker 用户、开发邮件列表及论坛 9.1.2IRC 上的 Docker 9.1.3GitHub 上的 Docker 9.2 报告 Docker 的问题 9.3 搭建构建环境 9.3.1 安装 Docker 9.3.2 安装源代码和构建工具 9.3.3 检出源代码 9.3.4 贡献文档 9.3.5 构建开发环境 9.3.6 运行测试 9.3.7 在开发环境中使用 Docker 9.3.8 发起 pull request 9.3.9 批准合并和维护者 9.4 小结

2019-05-15

Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书) - 董西成著 mobi+epub+azw3

基本概述: 本书由 hadoop 领域资深的实践者亲自执笔,首先介绍了 mapreduce 的设计理念和编程模型,然后从源代码的角度深入分析了 rpc 框架、客户端、jobtracker、tasktracker 和 task 等 mapreduce 运行时环境的架构设计与实现原理,最后从实际应用的角度深入讲解了 hadoop 的性能优化、安全机制、多用户作业调度器和下一代 mapreduce 框架等高级主题和内容。本书适合 hadoop 的二次开发人员、应用开发工程师、运维工程师阅读。

2019-05-15

Spark快速大数据分析 mobi+epub+azw3

基本概述: 本书由 Spark 开发者及核心成员共同打造,讲解了网络大数据时代应运而生的、能高效迅捷地分析处理数据的工具——Spark,它带领读者快速掌握用 Spark 收集、计算、简化和保存海量数据的方法,学会交互、迭代和增量式分析,解决分区、数据本地化和自定义序列化等问题。 目录: 第 1 章 Spark 数据分析导论 1 1.1 Spark 是什么 1 1.2 一个大一统的软件栈 2 1.2.1 Spark Core 2 1.2.2 Spark SQL 3 1.2.3 Spark Streaming 3 1.2.4 MLlib 3 1.2.5 GraphX 3 1.2.6 集群管理器 4 1.3 Spark 的用户和用途 4 1.3.1 数据科学任务 4 1.3.2 数据处理应用 5 1.4 Spark 简史 5 1.5 Spark 的版本和发布 6 1.6 Spark 的存储层次 6 第 2 章 Spark 下载与入门 7 2.1 下载 Spark 7 2.2 Spark 中 Python 和 Scala 的 shell 9 2.3 Spark 核心概念简介 12 2.4 独立应用 14 2.4.1 初始化 SparkContext 15 2.4.2 构建独立应用 16 2.5 总结 19 第 3 章 RDD 编程 21 3.1 RDD 基础 21 3.2 创建 RDD 23 3.3 RDD 操作 24 3.3.1 转化操作 24 3.3.2 行动操作 26 3.3.3 惰性求值 27 3.4 向 Spark 传递函数 27 3.4.1 Python 27 3.4.2 Scala 28 3.4.3 Java 29 3.5 常见的转化操作和行动操作 30 3.5.1 基本 RDD 30 3.5.2 在不同 RDD 类型间转换 37 3.6 持久化( 缓存) 39 3.7 总结 40 第 4 章 键值对操作 41 4.1 动机 41 4.2 创建 Pair RDD 42 4.3 Pair RDD 的转化操作 42 4.3.1 聚合操作 45 4.3.2 数据分组 49 4.3.3 连接 50 4.3.4 数据排序 51 4.4 Pair RDD 的行动操作 52 4.5 数据分区(进阶) 52 4.5.1 获取 RDD 的分区方式 55 4.5.2 从分区中获益的操作 56 4.5.3 影响分区方式的操作 57 4.5.4 示例:PageRank 57 4.5.5 自定义分区方式 59 4.6 总结 61 第 5 章 数据读取与保存 63 5.1 动机 63 5.2 文件格式 64 5.2.1 文本文件 64 5.2.2 JSON 66 5.2.3 逗号分隔值与制表符分隔值 68 5.2.4 SequenceFile 71 5.2.5 对象文件 73 5.2.6 Hadoop 输入输出格式 73 5.2.7 文件压缩 77 5.3 文件系统 78 5.3.1 本地/“常规”文件系统 78 5.3.2 Amazon S3 78 5.3.3 HDFS 79 5.4 Spark SQL 中的结构化数据 79 5.4.1 Apache Hive 80 5.4.2 JSON 80 5.5 数据库 81 5.5.1 Java 数据库连接 81 5.5.2 Cassandra 82 5.5.3 HBase 84 5.5.4 Elasticsearch 85 5.6 总结 86 第 6 章 Spark 编程进阶 87 6.1 简介 87 6.2 累加器 88 6.2.1 累加器与容错性 90 6.2.2 自定义累加器 91 6.3 广播变量 91 6.4 基于分区进行操作 94 6.5 与外部程序间的管道 96 6.6 数值 RDD 的操作 99 6.7 总结 100 第 7 章 在集群上运行 Spark 101 7.1 简介 101 7.2 Spark 运行时架构 101 7.2.1 驱动器节点 102 7.2.2 执行器节点 103 7.2.3 集群管理器 103 7.2.4 启动一个程序 104 7.2.5 小结 104 7.3 使用 spark-submit 部署应用 105 7.4 打包代码与依赖 107 7.4.1 使用 Maven 构建的用 Java 编写的 Spark 应用 108 7.4.2 使用 sbt 构建的用 Scala 编写的 Spark 应用 109 7.4.3 依赖冲突 111 7.5 Spark 应用内与应用间调度 111 7.6 集群管理器 112 7.6.1 独立集群管理器 112 7.6.2 Hadoop YARN 115 7.6.3 Apache Mesos 116 7.6.4 Amazon EC2 117 7.7 选择合适的集群管理器 120 7.8 总结 121 第 8 章 Spark 调优与调试 123 8.1 使用 SparkConf 配置 Spark 123 8.2 Spark 执行的组成部分:作业、任务和步骤 127 8.3 查找信息 131 8.3.1 Spark 网页用户界面 131 8.3.2 驱动器进程和执行器进程的日志 134 8.4 关键性能考量 135 8.4.1 并行度 135 8.4.2 序列化格式 136 8.4.3 内存管理 137 8.4.4 硬件供给 138 8.5 总结 139 第 9 章 Spark SQL 141 9.1 连接 Spark SQL 142 9.2 在应用中使用 Spark SQL 144 9.2.1 初始化 Spark SQL 144 9.2.2 基本查询示例 145 9.2.3 SchemaRDD 146 9.2.4 缓存 148 9.3 读取和存储数据 149 9.3.1 Apache Hive 149 9.3.2 Parquet 150 9.3.3 JSON 150 9.3.4 基于 RDD 152 9.4 JDBC/ODBC 服务器 153 9.4.1 使用 Beeline 155 9.4.2 长生命周期的表与查询 156 9.5 用户自定义函数 156 9.5.1 Spark SQL UDF 156 9.5.2 Hive UDF 157 9.6 Spark SQL 性能 158 9.7 总结 159 第 10 章 Spark Streaming 161 10.1 一个简单的例子 162 10.2 架构与抽象 164 10.3 转化操作 167 10.3.1 无状态转化操作 167 10.3.2 有状态转化操作 169 10.4 输出操作 173 10.5 输入源 175 10.5.1 核心数据源 175 10.5.2 附加数据源 176 10.5.3 多数据源与集群规模 179 10.6 24/7 不间断运行 180 10.6.1 检查点机制 180 10.6.2 驱动器程序容错 181 10.6.3 工作节点容错 182 10.6.4 接收器容错 182 10.6.5 处理保证 183 10.7 Streaming 用户界面 183 10.8 性能考量 184 10.8.1 批次和窗口大小 184 10.8.2 并行度 184 10.8.3 垃圾回收和内存使用 185 10.9 总结 185 第 11 章 基于 MLlib 的机器学习 187 11.1 概述 187 11.2 系统要求 188 11.3 机器学习基础 189 11.4 数据类型 192 11.5 算法 194 11.5.1 特征提取 194 11.5.2 统计 196 11.5.3 分类与回归 197 11.5.4 聚类 202 11.5.5 协同过滤与推荐 203 11.5.6 降维 204 11.5.7 模型评估 206 11.6 一些提示与性能考量 206 11.6.1 准备特征 206 11.6.2 配置算法 207 11.6.3 缓存 RDD 以重复使用 207 11.6.4 识别稀疏程度 207 11.6.5 并行度 207 11.7 流水线 API 208 11.8 总结 209

2019-05-15

oracle导入详细脚本

Oracle导入详细脚本 Oracle导入详细脚本 Oracle导入详细脚本

2018-07-20

09-17年408计算机全国统考真题及详细答案解析

2009年-2017年408计算机全国统一考试真题及详细答案解析

2018-07-20

Maven+SSM的博客系统源码和系统设计文档以及数据库脚本

基于SSM框架的博客系统还包括系统设计文档 数据库脚本等等 详细写明了 设计过程和设计思路 系统代码中含有大量的注释 方便理解和阅读

2018-04-10

HTML5捕鱼游戏源码

HTML5捕鱼游戏源码 HTML5捕鱼游戏源码 HTML5捕鱼游戏源码 HTML5捕鱼游戏源码

2017-10-27

HTML5开心消消乐小游戏

HTML5开心消消乐小游戏 HTML5开心消消乐小游戏 HTML5开心消消乐小游戏 HTML5开心消消乐小游戏 HTML5开心消消乐小游戏

2017-10-27

3D元素周期表

3D元素周期表 太炫酷了,看了用了你就知道了。

2017-10-27

Dev-Cpp【C/C++语言】

Dev-Cpp【C/C++语言】 适合写C语言/C++ 小巧但非常好使用 强烈推荐!

2017-10-14

JAVA WEB从入门到精通PDF

重要的事情说三遍: 适合有java基础的同学学习 适合有java基础的同学学习 适合有java基础的同学学习

2017-10-13

Java EE 7权威指南pdf

重要的事情说三遍: 适合有java基础的同学学习! 适合有java基础的同学学习! 适合有java基础的同学学习!

2017-10-13

JavaFx开发的经典魔塔

完美还原魔塔,JavaFx开发的经典魔塔半成品,给魔塔爱好者继续补充! 资源对象都有,直接调用即可,50层太多了,就没继续下去了,你们继续补充!

2017-10-13

史上最全经典数据结构算法c语言实现代码合集

16进制10进制.txt 32.txt asm.txt Crctable.txt C标志符命名源程序.txt erre.txt erre2.txt ff.txt for循环的.txt list.log N皇后问题回溯算法.txt ping.txt re.txt source.txt winsock2.txt ww.txt 万年历.txt 万年历的算法 .txt 乘方函数桃子猴.txt 乘法矩阵.txt 二分查找1.txt 二分查找2.txt 二叉排序树.txt 二叉树.txt 二叉树实例.txt 二进制数.txt 二进制数2.txt 余弦曲线.txt 余弦直线.txt 傻瓜递归.txt 冒泡排序.txt 冒泡法改进.txt 动态计算网络最长最短路线.txt 十五人排序.txt 单循环链表.txt 单词倒转.txt 单链表.txt 单链表1.txt 单链表2.txt 单链表倒序.txt 单链表的处理全集.txt 双链表正排序.txt 反出字符.txt 叠代整除.txt 各种排序法.txt 哈夫曼算法.txt 哈慢树.txt 四分砝码.txt 四塔1.txt 四塔2.txt 回文.txt 图.txt 圆周率.txt 多位阶乘.txt 多位阶乘2.txt 大加数.txt 大小倍约.txt 大整数.txt 字符串查找.txt 字符编辑.txt 字符编辑技术(插入和删除) .txt 完数.txt 定长串.txt 实例1.txt 实例2.txt 实例3.txt 小写数字转换成大写数字1.txt 小写数字转换成大写数字2.txt 小写数字转换成大写数字3.txt 小字库DIY-.txt 小字库DIY.txt 小孩分糖果.txt 小明买书.txt 小白鼠钻迷宫.txt 带头结点双链循环线性表.txt 平方根.txt 建树和遍历.txt 建立链表1.txt 扫描码.txt 挽救软盘.txt 换位递归.txt 排序法.txt 推箱子.txt 数字移动.txt 数据结构.txt 数据结构2.txt 数据结构3.txt 数组完全单元.txt 数组操作.txt 数组递归退出.txt 数组递归退出2.txt 文件加密.txt 文件复制.txt 文件连接.txt 无向图.txt 时间陷阱.txt 杨辉三角形.txt 栈单元加.txt 栈操作.txt 桃子猴.txt 桶排序.txt 检出错误.txt 检测鼠标.txt 汉字字模.txt 汉诺塔.txt 汉诺塔2.txt 灯塔问题.txt 猴子和桃.txt 百鸡百钱.txt 矩阵乘法动态规划.txt 矩阵转换.txt 硬币分法.txt 神经元模型.txt 穷举搜索法.txt 符号图形.txt 简单数据库.txt 简单计算器.txt 简单逆阵.txt 线性顺序存储结构.txt 线索化二叉树.txt 绘制圆.txt 编随机数.txt 网络最短路径Dijkstra算法.txt 自我复制.txt 节点.txt 苹果分法.txt 螺旋数组1.txt 螺旋数组2.txt 试题.txt 诺汉塔画图版.txt 读写文本文件.txt 货郎担分枝限界图形演示.txt 货郎担限界算法.txt 质因子.txt 输出自已.txt 迷宫.txt 迷宫问题.txt 逆波兰计算器.txt 逆矩阵.txt 逆阵.txt 递堆法.txt 递归桃猴.txt 递归车厢.txt 递推.txt 逻辑移动.txt 链串.txt 链栈.txt 链表十五人排序.txt 链表(递归).txt 链队列.txt 队列.txt 阶乘递归.txt 阿姆斯特朗数.txt 非递归.txt 顺序栈.txt 顺序表.txt 顺序队列.txt 骑士遍历1.txt 骑士遍历2.txt 骑士遍历回逆.txt 黑白.txt

2017-10-13

Java语言程序设计.进阶篇.原书第10版PDF

Java语言程序设计.进阶篇.原书第10版PDF,已经学过基础篇的可以下载学习。

2017-10-13

HTML-3D相册

HTML-3D相册。可跟随鼠标360旋转。场面炫酷,可以自己学习或者修改。

2017-10-13

HTML-3D旋转表白爱心

html-3D旋转表白爱心!适合向女神表白!可以直接修改,表白必备!

2017-10-13

数据结构(java)第四版_叶核亚【全套】

数据结构Java版全套详细资料。包含电子课件、源代码、配套资料、习题解答等详细资料。强烈推荐!!!

2017-10-13

Sublime Text3 中文破解版(附一些常用插件和安装说明)【适合新手】

Sublime Text3 Build3126 中文破解版 下载解压后,直接安装即可(有详细的安装说明)。 已经配置好了一些常用的小插件,非常适合新手!!!

2017-10-11

Sublime Text3中文破解版(附带一些常用的插件)安装包

Sublime Text3 Build3126 中文破解版 下载直接安装即可。 已经配置好了一些常用的小插件,非常适合新手。

2017-10-11

空空如也

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

TA关注的人

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