Effective Java 第二版
第1章 引言
第2章 创建和销毁对象
第1条:考虑用静态工厂方法代替构造器
第2条:遇到多个构造器参数时要考虑用构建器
第3条:用私有构造器或者枚举类型强化Singleton属性
第4条:通过私有构造器强化不可实例化的能力
第5条:避免创建不必要的对象
第6条:消除过期的对象引用
第7条:避免使用终结函数
第3章 对于所有对象都通用的方法
第8条:改写equals时请遵守通用约定
第9条:改写equals时总要改写hashCode
第10条:始终要改写toString
第11条:谨慎地改写clone
第12条:考虑实现Comparable接口
第4章 类和接口
第13条:使类和成员的可访问性最小化
第14条:在公有类中使用访问方法而非公有域
第15条:使非可变性最小化
第16条:复合优先于继承
第17条:要么为继承而设计,并提供文档说明,要么就禁止继承
第18条:接口优于抽象类
第19条:接口只用于定义类型
第20条:类层次优于标签类
第21条:用函数对象表示策略
第22条:优先考虑静态成员类
第5章 泛型
第23条:请不要在新代码中使用原生态类型
第24条:消除非受检警告
第25条:列表优先于数组
第26条:优先考虑泛型
第27条:优先考虑泛型方法
第28条:利用有限制通配符来提升API的灵活性
第29条:优先考虑类型安全的异构容器
第6章 枚举和注解
第30条:用enum代替int常量
第31条:用实例域代替序数
第32条:用EnumSet代替位域
第33条:用EnumMap代替序数索引
第34条:用接口模拟可伸缩的枚举
第35条:注解优先于命名模式
第36条:坚持使用Override注解
第37条:用标记接口定义类型
第7章 方法
第38条:检查参数的有效性
第39条:必要时进行保护性拷贝
第40条:谨慎设计方法签名
第41条:慎用重载
第42条:慎用可变参数(varargs)
第43条:返回零长度的数组或者集合,而不是null
第44条:为所有导出的API元素编写文档注释
第8章 通用程序设计
第45条:将局部变量的作用域最小化
第46条:for-each循环优先于传统的for循环
第47条:了解和使用类库
第48条:如果需要精确的答案,请避免使用float和double
第49条:原语类型优先于装箱的原语类型
第50条:如果其他类型更适合,则尽量避免使用字符串
第51条:了解字符串连接的性能
第52条:通过接口引用对象
第53条:接口优先于反射机制
第54条:谨慎地使用本地方法
第55条:谨慎地进行优化
第56条:遵守普遍接受的命名惯例
第9章 异常
第57条:只针对异常的条件才使用异常
第58条:对可恢复的条件使用受检异常,对编程错误使用运行时异常
第59条:避免不必要地使用受检的异常
第60条:尽量使用标准的异常
第61条:抛出与抽象相对应的异常
第62条:每个方法抛出的所有异常都要有文档
第63条:在细节消息中包含失败-捕获信息
第64条:努力使失败保持原子性
第65条:不要忽略异常
第10章 并发
第66条:同步访问共享的可变数据
第67条:避免过多同步
第68条:executor和task优先于线程
第69条:并发工具优先于wait和notify
第70条:线程安全性的文档化
第71条:慎用延迟初始化
第72条:不要依赖于线程调度器
第73条:避免使用线程组
第11章 序列化
第74条:谨慎地实现Serializable
第75条:考虑使用自定义的序列化形式
第76条:保护性地编写readObject方法
第77条:对于实例控制,枚举类型优先于readResolve
第78条:考虑用序列化代理代替序列化实例
JAVA并发编程实战
《Java并发编程实战》
对本书的赞誉
译者序
前 言
第1章 简介1
1.1 并发简史1
1.2 线程的优势2
1.2.1 发挥多处理器的强大能力2
1.2.2 建模的简单性3
1.2.3 异步事件的简化处理3
1.2.4 响应更灵敏的用户界面4
1.3 线程带来的风险4
1.3.1 安全性问题5
1.3.2 活跃性问题7
1.3.3 性能问题7
1.4 线程无处不在7
第一部分 基础知识
第2章 线程安全性11
2.1 什么是线程安全性13
2.2 原子性14
2.2.1 竞态条件15
2.2.2 示例:延迟初始化中的竞态条件16
2.2.3 复合操作17
2.3 加锁机制18
2.3.1 内置锁20
2.3.2 重入21
2.4 用锁来保护状态22
2.5 活跃性与性能23
第3章 对象的共享27
3.1 可见性27
3.1.1 失效数据28
3.1.2 非原子的64位操作29
3.1.3 加锁与可见性30
3.1.4 Volatile变量 30
3.2 发布与逸出32
3.3 线程封闭35
3.3.1 Ad-hoc线程封闭35
3.3.2 栈封闭36
3.3.3 ThreadLocal类37
3.4 不变性38
3.4.1 Final域39
3.4.2 示例:使用Volatile类型来发布不可变对象40
3.5 安全发布41
3.5.1 不正确的发布:正确的对象被破坏42
3.5.2 不可变对象与初始化安全性42
3.5.3 安全发布的常用模式43
3.5.4 事实不可变对象44
3.5.5 可变对象44
3.5.6 安全地共享对象44
第4章 对象的组合46
4.1 设计线程安全的类46
4.1.1 收集同步需求47
4.1.2 依赖状态的操作48
4.1.3 状态的所有权48
4.2 实例封闭49
4.2.1 Java监视器模式51
4.2.2 示例:车辆追踪51
4.3 线程安全性的委托53
4.3.1 示例:基于委托的车辆追踪器54
4.3.2 独立的状态变量55
4.3.3 当委托失效时56
4.3.4 发布底层的状态变量57
4.3.5 示例:发布状态的车辆追踪器58
4.4 在现有的线程安全类中添加功能59
4.4.1 客户端加锁机制60
4.4.2 组合62
4.5 将同步策略文档化62
第5章 基础构建模块66
5.1 同步容器类66
5.1.1 同步容器类的问题66
5.1.2 迭代器与Concurrent-ModificationException68
5.1.3 隐藏迭代器69
5.2 并发容器70
5.2.1 ConcurrentHashMap71
5.2.2 额外的原子Map操作72
5.2.3 CopyOnWriteArrayList72
5.3 阻塞队列和生产者-消费者模式73
5.3.1 示例:桌面搜索75
5.3.2 串行线程封闭76
5.3.3 双端队列与工作密取77
5.4 阻塞方法与中断方法77
5.5 同步工具类78
5.5.1 闭锁79
5.5.2 FutureTask80
5.5.3 信号量82
5.5.4 栅栏83
5.6 构建高效且可伸缩的结果缓存85
第二部分 结构化并发应用程序
第6章 任务执行93
6.1 在线程中执行任务93
6.1.1 串行地执行任务94
6.1.2 显式地为任务创建线程94
6.1.3 无限制创建线程的不足95
6.2 Executor框架96
6.2.1 示例:基于Executor的Web服务器97
6.2.2 执行策略98
6.2.3 线程池98
6.2.4 Executor的生命周期99
6.2.5 延迟任务与周期任务101
6.3 找出可利用的并行性102
6.3.1 示例:串行的页面渲染器102
6.3.2 携带结果的任务Callable与Future103
6.3.3 示例:使用Future实现页面渲染器104
6.3.4 在异构任务并行化中存在的局限106
6.3.5 CompletionService:Executor与BlockingQueue106
6.3.6 示例:使用CompletionService实现页面渲染器107
6.3.7 为任务设置时限108
6.3.8 示例:旅行预定门户网站109
第7章 取消与关闭111
7.1 任务取消111
7.1.1 中断113
7.1.2 中断策略116
7.1.3 响应中断117
7.1.4 示例:计时运行118
7.1.5 通过Future来实现取消120
7.1.6 处理不可中断的阻塞121
7.1.7 采用newTaskFor来封装非标准的取消122
7.2 停止基于线程的服务124
7.2.1 示例:日志服务124
7.2.2 关闭ExecutorService127
7.2.3 “毒丸”对象128
7.2.4 示例:只执行一次的服务129
7.2.5 shutdownNow的局限性130
7.3 处理非正常的线程终止132
7.4 JVM关闭135
7.4.1 关闭钩子135
7.4.2 守护线程136
7.4.3 终结器136
第8章 线程池的使用138
8.1 在任务与执行策略之间的隐性耦合138
8.1.1 线程饥饿死锁139
8.1.2 运行时间较长的任务140
8.2 设置线程池的大小140
8.3 配置ThreadPoolExecutor141
8.3.1 线程的创建与销毁142
8.3.2 管理队列任务142
8.3.3 饱和策略144
8.3.4 线程工厂146
8.3.5 在调用构造函数后再定制ThreadPoolExecutor147
8.4 扩展 ThreadPoolExecutor148
8.5 递归算法的并行化149
第9章 图形用户界面应用程序156
9.1 为什么GUI是单线程的156
9.1.1 串行事件处理157
9.1.2 Swing中的线程封闭机制158
9.2 短时间的GUI任务160
9.3 长时间的GUI任务161
9.3.1 取消162
9.3.2 进度标识和完成标识163
9.3.3 SwingWorker165
9.4 共享数据模型165
9.4.1 线程安全的数据模型166
9.4.2 分解数据模型166
9.5 其他形式的单线程子系统167
第三部分 活跃性、性能与测试
第10章 避免活跃性危险169
10.1 死锁169
10.1.1 锁顺序死锁170
10.1.2 动态的锁顺序死锁171
10.1.3 在协作对象之间发生的死锁174
10.1.4 开放调用175
10.1.5 资源死锁177
10.2 死锁的避免与诊断178
10.2.1 支持定时的锁178
10.2.2 通过线程转储信息来分析死锁178
10.3 其他活跃性危险180
10.3.1 饥饿180
10.3.2 糟糕的响应性181
10.3.3 活锁181
第11章 性能与可伸缩性183
11.1 对性能的思考183
11.1.1 性能与可伸缩性184
11.1.2 评估各种性能权衡因素185
11.2 Amdahl定律186
11.2.1 示例:在各种框架中隐藏的串行部分188
11.2.2 Amdahl定律的应用189
11.3 线程引入的开销189
11.3.1 上下文切换190
11.3.2 内存同步190
11.3.3 阻塞192
11.4 减少锁的竞争192
11.4.1 缩小锁的范围(“快进快出”)193
11.4.2 减小锁的粒度195
11.4.3 锁分段196
11.4.4 避免热点域197
11.4.5 一些替代独占锁的方法198
11.4.6 监测CPU的利用率199
11.4.7 向对象池说“不”200
11.5 示例:比较Map的性能200
11.6 减少上下文切换的开销201
第12章 并发程序的测试204
12.1 正确性测试205
12.1.1 基本的单元测试206
12.1.2 对阻塞操作的测试207
12.1.3 安全性测试208
12.1.4 资源管理的测试212
12.1.5 使用回调213
12.1.6 产生更多的交替操作214
12.2 性能测试215
12.2.1 在PutTakeTest中增加计时功能215
12.2.2 多种算法的比较217
12.2.3 响应性衡量218
12.3 避免性能测试的陷阱220
12.3.1 垃圾回收220
12.3.2 动态编译220
12.3.3 对代码路径的不真实采样222
12.3.4 不真实的竞争程度222
12.3.5 无用代码的消除223
12.4 其他的测试方法224
12.4.1 代码审查224
12.4.2 静态分析工具224
12.4.3 面向方面的测试技术226
12.4.4 分析与监测工具226
第四部分 高级主题
第13章 显式锁227
13.1 Lock与 ReentrantLock227
13.1.1 轮询锁与定时锁228
13.1.2 可中断的锁获取操作230
13.1.3 非块结构的加锁231
13.2 性能考虑因素231
13.3 公平性232
13.4 在synchronized和ReentrantLock之间进行选择234
13.5 读-写锁235
第14章 构建自定义的同步工具238
14.1 状态依赖性的管理238
14.1.1 示例:将前提条件的失败传递给调用者240
14.1.2 示例:通过轮询与休眠来实现简单的阻塞241
14.1.3 条件队列243
14.2 使用条件队列244
14.2.1 条件谓词244
14.2.2 过早唤醒245
14.2.3 丢失的信号246
14.2.4 通知247
14.2.5 示例:阀门类248
14.2.6 子类的安全问题249
14.2.7 封装条件队列250
14.2.8 入口协议与出口协议250
14.3 显式的Condition对象251
14.4 Synchronizer剖析253
14.5 AbstractQueuedSynchronizer254
14.6 java.util.concurrent同步器类中的 AQS257
14.6.1 ReentrantLock257
14.6.2 Semaphore与CountDownLatch258
14.6.3 FutureTask259
14.6.4 ReentrantReadWriteLock259
第15章 原子变量与非阻塞同步机制261
15.1 锁的劣势261
15.2 硬件对并发的支持262
15.2.1 比较并交换263
15.2.2 非阻塞的计数器264
15.2.3 JVM对CAS的支持265
15.3 原子变量类265
15.3.1 原子变量是一种“更好的volatile”266
15.3.2 性能比较:锁与原子变量267
15.4 非阻塞算法270
15.4.1 非阻塞的栈270
15.4.2 非阻塞的链表272
15.4.3 原子的域更新器274
15.4.4 ABA问题275
第16章 Java内存模型277
16.1 什么是内存模型,为什么需要它277
16.1.1 平台的内存模型278
16.1.2 重排序278
16.1.3 Java内存模型简介280
16.1.4 借助同步281
16.2 发布283
16.2.1 不安全的发布283
16.2.2 安全的发布284
16.2.3 安全初始化模式284
16.2.4 双重检查加锁286
16.3 初始化过程中的安全性287
附录A 并发性标注289
参考文献291
Spring-Reference_zh_CN(Spring中文参考手册)
1. 简介
1.1. 概览
1.2. 使用场景
2. Spring 2.0 的新特性
2.1. 简介
2.2. 控制反转(IoC)容器
2.2.1. 更简单的XML配置
2.2.2. 新的bean作用域
2.2.3. 可扩展的XML编写
2.3. 面向切面编程(AOP)
2.3.1. 更加简单的AOP XML配置
2.3.2. 对@AspectJ 切面的支持
2.4. 中间层
2.4.1. 在XML里更为简单的声明性事务配置
2.4.2. JPA
2.4.3. 异步的JMS
2.4.4. JDBC
2.5. Web层
2.5.1. Spring MVC的表单标签库
2.5.2. Spring MVC合理的默认值
2.5.3. Portlet 框架
2.6. 其他特性
2.6.1. 动态语言支持
2.6.2. JMX
2.6
.3. 任务规划
2.6.4. 对Java 5(Tiger)的支持
2.7. 移植到Spring 2.0
2.7.1. 一些变化
2.7.1.1. Jar包
2.7.1.2. XML配置
2.7.1.3. Deprecated的类和方法
2.7.1.4. Apache OJB
2.7.1.5. iBatis
2.8. 更新的样例应用
2.9. 改进的文档
I. 核心技术
3. 控制反转容器
3.1. 简介
3.2. 容器和bean的基本原理
3.2.1. 容器
3.2.1.1. 配置元数据
3.2.2. 实例化容器
3.2.2.1. 组成基于XML配置元数据
3.2.3. 多种bean
3.2.3.1. 命名bean
3.2.3.2. 实例化bean
3.2.4. 使用容器
3.3. 依赖
3.3.1. 注入依赖
3.3.1.1. Setter注入
3.3.1.2. 构造器注入
3.3.1.3. 一些例子
3.3.2. 构造器参数的解析
3.3.2.1. 构造器参数类型匹配
3.3.2.2. 构造器参数的索引
3.3.3. bean属性及构造器参数详解
3.3.3.1. 直接量(基本类型、Strings类型等。)
3.3.3.2. 引用其它的bean(协作者)
3.3.3.3. 内部bean
3.3.3.4. 集合
3.3.3.5. Nulls
3.3.3.6. XML-based configuration metadata shortcuts
3.3.3.7. 组合属性名称
3.3.4. 使用depends-on
3.3.5. 延迟初始化bean
3.3.6. 自动装配(autowire)协作者
3.3.6.1. 设置Bean使自动装配失效
3.3.7. 依赖检查
3.3.8. 方法注入
3.3.8.1. Lookup方法注入
3.3.8.2. 自定义方法的替代方案
3.4. bean的作用域
3.4.1. Singleton作用域
3.4.2. Prototype作用域
3.4.3. 其他作用域
3.4.3.1. 初始化web配置
3.4.3.2. Request作用域
3.4.3.3. Session作用域
3.4.3.4. global session作用域
3.4.3.5. 作用域bean与依赖
3.4.4. 自定义作用域
3.5. 定制bean特性
3.5.1. Lifecycle接口
3.5.1.1. 初始化回调
3.5.1.2. 析构回调
3.5.2. 了解自己
3.5.2.1. BeanFactoryAware
3.5.2.2. BeanNameAware
3.6. bean定义的继承
3.7. 容器扩展点
3.7.1. 用BeanPostProcessor定制bean
3.7.1.1. 使用BeanPostProcessor的Hello World示例
3.7.1.2. RequiredAnnotationBeanPostProcessor示例
3.7.2. 用BeanFactoryPostProcessor定制配置元数据
3.7.2.1. PropertyPlaceholderConfigurer示例
3.7.2.2. PropertyOverrideConfigurer示例
3.7.3. 使用FactoryBean定制实例化逻辑
3.8. ApplicationContext
3.8.1. 利用MessageSource实现国际化
3.8.2. 事件
3.8.3. 底层资源的访问
3.8.4. ApplicationContext在WEB应用中的实例化
3.9. 粘合代码和可怕的singleton
3.9.1. 使用Singleton-helper类
4. 资源
4.1. 简介
4.2. Resource 接口
4.3. 内置 Resource 实现
4.3.1. UrlResource
4.3.2. ClassPathResource
4.3.3. FileSystemResource
4.3.4. ServletContextResource
4.3.5. InputStreamResource
4.3.6. ByteArrayResource
4.4. ResourceLoader
4.5. ResourceLoaderAware 接口
4.6. 把Resource作为属性来配置
4.7. Application context 和Resource 路径
4.7.1. 构造application context
4.7.1.1. 创建 ClassPathXmlApplicationContext 实例 - 简介
4.7.2. Application context构造器中资源路径的通配符
4.7.2.1. Ant风格的pattern
4.7.2.2. classpath*: 前缀
4.7.2.3. 其他关于通配符的说明
4.7.3. FileSystemResource 提示
5. 校验,数据绑定,BeanWrapper,与属性编辑器
5.1. 简介
5.2. 使用Spring的Validator接口进行校验
5.3. 从错误代码到错误信息
5.4. Bean处理和BeanWrapper
5.4.1. 设置和获取属性值以及嵌套属性
5.4.2. 内建的PropertyEditor实现
5.4.2.1. 注册用户自定义的PropertyEditor
6. 使用Spring进行面向切面编程(AOP)
6.1. 简介
6.1.1. AOP概念
6.1.2. Spring AOP的功能和目标
6.1.3. Spring的AOP代理
6.2. @AspectJ支持
6.2.1. 启用@AspectJ支持
6.2.2. 声明一个切面
6.2.3. 声明一个切入点(pointcut)
6.2.3.1. 切入点指定者的支持
6.2.3.2. 合并切入点表达式
6.2.3.3. 共享常见的切入点(pointcut)定义
6.2.3.4. 示例
6.2.4. 声明通知
6.2.4.1. 前置通知(Before advice)
6.2.4.2. 返回后通知(After returning advice)
6.2.4.3. 抛出后通知(After throwing advice)
6.2.4.4. 后通知(After (finally) advice)
6.2.4.5. 环绕通知(Around Advice)
6.2.4.6. 通知参数(Advice parameters)
6.2.4.7. 通知(Advice)顺序
6.2.5. 引入(Introductions)
6.2.6. 切面实例化模型
6.2.7. 例子
6.3. Schema-based AOP support
6.3.1. 声明一个切面
6.3.2. 声明一个切入点
6.3.3. 声明通知
6.3.3.1. 通知(Advice)
6.3.3.2. 返回后通知(After returning advice)
6.3.3.3. 抛出异常后通知(After throwing advice)
6.3.3.4. 后通知(After (finally) advice)
6.3.3.5. 通知
6.3.3.6. 通知参数
6.3.3.7. 通知顺序
6.3.4. 引入
6.3.5. 切面实例化模型
6.3.6. Advisors
6.3.7. 例子
6.4. AOP声明风格的选择
6.4.1. Spring AOP还是完全用AspectJ?
6.4.2. Spring AOP中使用@AspectJ还是XML?
6.5. 混合切面类型
6.6. 代理机制
6.7. 编程方式创建@AspectJ代理
6.8. 在Spring应用中使用AspectJ
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入
6.8.1.1. @Configurable object的单元测试
6.8.1.2. 多application context情况下的处理
6.8.2. Spring中其他的AspectJ切面
6.8.3. 使用Spring IoC来配置AspectJ的切面
6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW)
6.9. 其它资源
7. Spring AOP APIs
7.1. 简介
7.2. Spring中的切入点API
7.2.1. 概念
7.2.2. 切入点实施
7.2.3. AspectJ切入点表达式
7.2.4. 便利的切入点实现
7.2.4.1. 静态切入点
7.2.4.2. 动态切入点
7.2.5. 切入点的基类
7.2.6. 自定义切入点
7.3. Spring的通知API
7.3.1. 通知的生命周期
7.3.2. Spring里的通知类型
7.3.2.1. 拦截around通知
7.3.2.2. 前置通知
7.3.2.3. 异常通知
7.3.2.4. 后置通知
7.3.2.5. 引入通知
7.4. Spring里的advisor(Advisor) API
7.5. 使用ProxyFactoryBean创建AOP代理
7.5.1. 基础
7.5.2. JavaBean属性
7.5.3. 基于JDK和CGLIB的代理
7.5.4. 对接口进行代理
7.5.5. 对类进行代理
7.5.6. 使用“全局”advisor
7.6. 简化代理定义
7.7. 使用ProxyFactory通过编程创建AOP代理
7.8. 操作被通知对象
7.9. 使用“自动代理(autoproxy)”功能
7.9.1. 自动代理bean定义
7.9.1.1. BeanNameAutoProxyCreator
7.9.1.2. DefaultAdvisorAutoProxyCreator
7.9.1.3. AbstractAdvisorAutoProxyCreator
7.9.2. 使用元数据驱动的自动代理
7.10. 使用TargetSources
7.10.1. 热交换目标源
7.10.2. 池化目标源
7.10.3. 原型目标源
7.10.4. ThreadLocal目标源
7.11. 定义新的通知类型
7.12. 更多资源
8. 测试
8.1. 简介
8.2. 单元测试
8.3. 集成测试
8.3.1. Context管理和缓存
8.3.2. 测试fixture的依赖注入
8.3.3. 事务管理
8.3.4. 方便的变量
8.3.5. 示例
8.3.6. 运行集成测试
8.4. 更多资源
II. 中间层数据访问
9. 事务管理
9.1. 简介
9.2. 动机
9.3. 关键抽象
9.4. 使用资源同步的事务
9.4.1. 高层次方案
9.4.2. 低层次方案
9.4.3. TransactionAwareDataSourceProxy
9.5. 声明式事务管理
9.5.1. 理解Spring的声明式事务管理实现
9.5.2. 第一个例子
9.5.3. 回滚
9.5.4. 为不同的bean配置不同的事务语义
9.5.5. <tx:advice/> 有关的设置
9.5.6. 使用 @Transactional
9.5.6.1. @Transactional 有关的设置
9.5.7. 插入事务操作
9.5.8. 结合AspectJ使用 @Transactional
9.6. 编程式事务管理
9.6.1. 使用 TransactionTemplate
9.6.2. 使用 PlatformTransactionManager
9.7. 选择编程式事务管理还是声明式事务管理
9.8. 与特定应用服务器集成
9.8.1. BEA WebLogic
9.8.2. IBM WebSphere
9.9. 公共问题的解决方案
9.9.1. 对一个特定的 DataSource 使用错误的事务管理器
9.10. 更多的资源
10. DAO支持
10.1. 简介
10.2. 一致的异常层次
10.3. 一致的DAO支持抽象类
11. 使用JDBC进行数据访问
11.1. 简介
11.1.1. Spring JDBC包结构
11.2. 利用JDBC核心类实现JDBC的基本操作和错误处理
11.2.1. JdbcTemplate类
11.2.2. NamedParameterJdbcTemplate类
11.2.3. SimpleJdbcTemplate类
11.2.4. DataSource接口
11.2.5. SQLExceptionTranslator接口
11.2.6. 执行SQL语句
11.2.7. 执行查询
11.2.8. 更新数据库
11.3. 控制数据库连接
11.3.1. DataSourceUtils类
11.3.2. SmartDataSource接口
11.3.3. AbstractDataSource类
11.3.4. SingleConnectionDataSource类
11.3.5. DriverManagerDataSource类
11.3.6. TransactionAwareDataSourceProxy类
11.3.7. DataSourceTransactionManager类
11.4. 用Java对象来表达JDBC操作
11.4.1. SqlQuery类
11.4.2. MappingSqlQuery类
11.4.3. SqlUpdate类
11.4.4. StoredProcedure类
11.4.5. SqlFunction类
12. 使用ORM工具进行数据访问
12.1. 简介
12.2. Hibernate
12.2.1. 资源管理
12.2.2. 在Spring的application context中创建 SessionFactory
12.2.3. HibernateTemplate
12.2.4. 不使用回调的基于Spring的DAO实现
12.2.5. 基于Hibernate3的原生API实现DAO
12.2.6. 编程式的事务划分
12.2.7. 声明式的事务划分
12.2.8. 事务管理策略
12.2.9. 容器资源 vs 本地资源
12.2.10. 在应用服务器中使用Hibernate的注意点
12.3. JDO
12.3.1. 建立PersistenceManagerFactory
12.3.2. JdoTemplate和JdoDaoSupport
12.3.3. 基于原生的JDO API实现DAO
12.3.4. 事务管理
12.3.5. JdoDialect
12.4. Oracle TopLink
12.4.1. SessionFactory 抽象层
12.4.2. TopLinkTemplate 和 TopLinkDaoSupport
12.4.3. 基于原生的TopLink API的DAO实现
12.4.4. 事务管理
12.5. iBATIS SQL Maps
12.5.1. iBATIS 1.x和2.x的概览与区别
12.5.2. iBATIS SQL Maps 1.x
12.5.2.1. 创建SqlMap
12.5.2.2. 使用 SqlMapTemplate 和 SqlMapDaoSupport
12.5.3. iBATIS SQL Maps 2.x
12.5.3.1. 创建SqlMapClient
12.5.3.2. 使用 SqlMapClientTemplate 和 SqlMapClientDaoSupport
12.5.3.3. 基于原生的iBATIS API的DAO实现
12.6. JPA
12.6.1. 在Spring环境中建立JPA
12.6.1.1. LocalEntityManagerFactoryBean
12.6.1.2. LocalContainerEntityManagerFactoryBean
12.6.1.3. 处理多个持久化单元
12.6.2. JpaTemplate 和 JpaDaoSupport
12.6.3. 基于原生的JPA实现DAO
12.6.4. 异常转化
12.6.5. 事务管理
12.6.6. JpaDialect
III. Web
13. Web框架
13.1. 介绍
13.1.1. 与其他web框架的集成
13.1.2. Spring Web MVC框架的特点
13.2. DispatcherServlet
13.3. 控制器
13.3.1. AbstractController 和 WebContentGenerator
13.3.2. 其它的简单控制器
13.3.3. MultiActionController
13.3.4. 命令控制器
13.4. 处理器映射(handler mapping)
13.4.1. BeanNameUrlHandlerMapping
13.4.2. SimpleUrlHandlerMapping
13.4.3. 拦截器(HandlerInterceptor)
13.5. 视图与视图解析
13.5.1. 视图解析器
13.5.2. 视图解析链
13.5.3. 重定向(Rediret)到另一个视图
13.5.3.1. RedirectView
13.5.3.2. redirect:前缀
13.5.3.3. forward:前缀
13.6. 本地化解析器
13.6.1. AcceptHeaderLocaleResolver
13.6.2. CookieLocaleResolver
13.6.3. SessionLocaleResolver
13.6.4. LocaleChangeInterceptor
13.7. 使用主题
13.7.1. 简介
13.7.2. 如何定义主题
13.7.3. 主题解析器
13.8. Spring对分段文件上传(multipart file upload)的支持
13.8.1. 介绍
13.8.2. 使用MultipartResolver
13.8.3. 在表单中处理分段文件上传
13.9. 使用Spring的表单标签库
13.9.1. 配置标签库
13.9.2. form标签
13.9.3. input标签
13.9.4. checkbox标签
13.9.5. radiobutton标签
13.9.6. password标签
13.9.7. select标签
13.9.8. option标签
13.9.9. options标签
13.9.10. textarea标签
13.9.11. hidden标签
13.9.12. errors标签
13.10. 处理异常
13.11. 惯例优先原则(convention over configuration)
13.11.1. 对控制器的支持: ControllerClassNameHandlerMapping
13.11.2. 对模型的支持:ModelMap (ModelAndView)
13.11.3. 对视图的支持: RequestToViewNameTranslator
13.12. 其它资源
14. 集成视图技术
14.1. 简介
14.2. JSP和JSTL
14.2.1. 视图解析器
14.2.2. 'Plain-old' JSPs versus JSTL 'Plain-old' JSP与JSTL
14.2.3. 帮助简化开发的额外的标签
14.3. Tiles
14.3.1. 需要的资源
14.3.2. 如何集成Tiles
14.3.2.1. InternalResourceViewResolver
14.3.2.2. ResourceBundleViewResolver
14.4. Velocity和FreeMarker
14.4.1. 需要的资源
14.4.2. Context 配置
14.4.3. 创建模板
14.4.4. 高级配置
14.4.4.1. velocity.properties
14.4.4.2. FreeMarker
14.4.5. 绑定支持和表单处理
14.4.5.1. 用于绑定的宏
14.4.5.2. 简单绑定
14.4.5.3. 表单输入生成宏
14.4.5.4. 重载HTML转码行为并使你的标签符合XHTML
14.5. XSLT
14.5.1. 写在段首
14.5.1.1. Bean 定义
14.5.1.2. 标准MVC控制器代码
14.5.1.3. 把模型数据转化为XML
14.5.1.4. 定义视图属性
14.5.1.5. 文档转换
14.5.2. 小结
14.6. 文档视图(PDF/Excel)
14.6.1. 简介
14.6.2. 配置和安装
14.6.2.1. 文档视图定义
14.6.2.2. Controller 代码
14.6.2.3. Excel视图子类
14.6.2.4. PDF视图子类
14.7. JasperReports
14.7.1. 依赖的资源
14.7.2. 配置
14.7.2.1. 配置ViewResolver
14.7.2.2. 配置View
14.7.2.3. 关于报表文件
14.7.2.4. 使用 JasperReportsMultiFormatView
14.7.3. 构造ModelAndView
14.7.4. 使用子报表
14.7.4.1. 配置子报表文件
14.7.4.2. 配置子报表数据源
14.7.5. 配置Exporter的参数
15. 集成其它Web框架
15.1. 简介
15.2. 通用配置
15.3. JavaServer Faces
15.3.1. DelegatingVariableResolver
15.3.2. FacesContextUtils
15.4. Struts
15.4.1. ContextLoaderPlugin
15.4.1.1. DelegatingRequestProcessor
15.4.1.2. DelegatingActionProxy
15.4.2. ActionSupport 类
15.5. Tapestry
15.5.1. 注入 Spring 托管的 beans
15.5.1.1. 将 Spring Beans 注入到 Tapestry 页面中
15.5.1.2. 组件定义文件
15.5.1.3. 添加抽象访问方法
15.5.1.4. 将 Spring Beans 注入到 Tapestry 页面中 - Tapestry 4.0+ 风格
15.6. WebWork
15.7. 更多资源
16. Portlet MVC框架
16.1. 介绍
16.1.1. 控制器 - MVC中的C
16.1.2. 视图 - MVC中的V
16.1.3. Web作用范围的Bean
16.2. DispatcherPortlet
16.3. ViewRendererServlet
16.4. 控制器
16.4.1. AbstractController和PortletContentGenerator
16.4.2. 其它简单的控制器
16.4.3. Command控制器
16.4.4. PortletWrappingController
16.5. 处理器映射
16.5.1. PortletModeHandlerMapping
16.5.2. ParameterHandlerMapping
16.5.3. PortletModeParameterHandlerMapping
16.5.4. 增加 HandlerInterceptor
16.5.5. HandlerInterceptorAdapter
16.5.6. ParameterMappingInterceptor
16.6. 视图和它们的解析
16.7. Multipart文件上传支持
16.7.1. 使用PortletMultipartResolver
16.7.2. 处理表单里的文件上传
16.8. 异常处理
16.9. Portlet应用的部署
IV. 整合
17. 使用Spring进行远程访问与Web服务
17.1. 简介
17.2. 使用RMI暴露服务
17.2.1. 使用 RmiServiceExporter 暴露服务
17.2.2. 在客户端链接服务
17.3. 使用Hessian或者Burlap通过HTTP远程调用服务
17.3.1. 为Hessian配置DispatcherServlet
17.3.2. 使用HessianServiceExporter暴露你的bean
17.3.3. 客户端连接服务
17.3.4. 使用Burlap
17.3.5. 对通过Hessian或Burlap暴露的服务使用HTTP基础认证
17.4. 使用HTTP调用器暴露服务
17.4.1. 暴露服务对象
17.4.2. 在客户端连接服务
17.5. Web服务
17.5.1. 使用JAXI-RPC暴露服务
17.5.2. 访问Web服务
17.5.3. 注册bean映射
17.5.4. 注册自己的处理方法
17.5.5. 使用XFire来暴露Web服务
17.6. 对远程接口不提供自动探测
17.7. 在选择这些技术时的一些考虑
18. Enterprise Java Bean(EJB)集成
18.1. 简介
18.2. 访问EJB
18.2.1. 概念
18.2.2. 访问本地的无状态Session Bean(SLSB)
18.2.3. 访问远程SLSB
18.3. 使用Spring提供的辅助类实现EJB组件
19. JMS
19.1. 简介
19.2. 使用Spring JMS
19.2.1. JmsTemplate
19.2.2. 连接工厂
19.2.3. (消息)目的地管理
19.2.4. 消息侦听容器
19.2.4.1. SimpleMessageListenerContainer
19.2.4.2. DefaultMessageListenerContainer
19.2.4.3. ServerSessionMessageListenerContainer
19.2.5. 事务管理
19.3. 发送一条消息
19.3.1. 使用消息转换器
19.3.2. SessionCallback 和ProducerCallback
19.4. 接收消息
19.4.1. 同步接收
19.4.2. 异步接收 - 消息驱动的POJOs
19.4.3. SessionAwareMessageListener 接口
19.4.4. MessageListenerAdapter
19.4.5. 事务中的多方参与
20. JMX
20.1. 介绍
20.2. 输出bean到JMX
20.2.1. 创建一个MBeanServer
20.2.2. 复用现有的MBeanServer
20.2.3. MBean的惰性初始化
20.2.4. MBean的自动注册
20.2.5. 控制注册行为
20.3. 控制bean的管理接口
20.3.1. MBeanInfoAssembler 接口
20.3.2. 使用源码级元数据
20.3.3. 使用JDK 5.0注解
20.3.4. 源代码级的元数据类型
20.3.5. 接口AutodetectCapableMBeanInfoAssembler
20.3.6. 用Java接口定义管理接口
20.3.7. 使用MethodNameBasedMBeanInfoAssembler
20.4. 控制bean的 ObjectName
20.4.1. 从Properties中读取ObjectName
20.4.2. 使用 MetadataNamingStrategy
20.5. JSR-160连接器
20.5.1. 服务器端连接器
20.5.2. 客户端连接器
20.5.3. 基于Burlap/Hessian/SOAP的JMX
20.6. 通过代理访问MBeans
20.7. 通知
20.7.1. 为通知注册监听器
20.7.2. 发布通知
20.8. 更多资源
21. JCA CCI
21.1. 介绍
21.2. 配置CCI
21.2.1. 连接器配置
21.2.2. 在Spring中配置ConnectionFactory
21.2.3. 配置CCI连接
21.2.4. 使用一个 CCI 单连接
21.3. 使用Spring的 CCI访问支持
21.3.1. 记录转换
21.3.2. CciTemplate 类
21.3.3. DAO支持
21.3.4. 自动输出记录生成
21.3.5. 总结
21.3.6. 直接使用一个 CCI Connection 接口和Interaction接口
21.3.7. CciTemplate 使用示例
21.4. 建模CCI访问为操作对象
21.4.1. MappingRecordOperation
21.4.2. MappingCommAreaOperation
21.4.3. 自动输出记录生成
21.4.4. 总结
21.4.5. MappingRecordOperation 使用示例
21.4.6. MappingCommAreaOperation 使用示例
21.5. 事务
22. Spring邮件抽象层
22.1. 简介
22.2. Spring邮件抽象结构
22.3. 使用Spring邮件抽象
22.3.1. 可插拔的MailSender实现
22.4. 使用 JavaMail MimeMessageHelper
22.4.1. 创建一条简单的MimeMessage,并且发送出去
22.4.2. 发送附件和嵌入式资源(inline resources)
23. Spring中的定时调度(Scheduling)和线程池(Thread Pooling)
23.1. 简介
23.2. 使用OpenSymphony Quartz 调度器
23.2.1. 使用JobDetailBean
23.2.2. 使用 MethodInvokingJobDetailFactoryBean
23.2.3. 使用triggers和SchedulerFactoryBean来包装任务
23.3. 使用JDK Timer支持类
23.3.1. 创建定制的timers
23.3.2. 使用 MethodInvokingTimerTaskFactoryBean类
23.3.3. 打包:使用TimerFactoryBean来设置任务
23.4. SpringTaskExecutor抽象
23.4.1. TaskExecutor接口
23.4.2. 何时使用TaskExecutor接口
23.4.3. TaskExecutor类型
23.4.4. 使用TaskExecutor接口
24. 动态语言支持
24.1. 介绍
24.2. 第一个例子
24.3. 定义动态语言支持的bean
24.3.1. 公共概念
24.3.1.1. <lang:language/> 元素
24.3.1.2. Refreshable bean
24.3.1.3. 内置动态语言源文件
24.3.1.4. 理解dynamic-language-backed bean context的构造器注入
24.3.2. JRuby beans
24.3.3. Groovy beans
24.3.4. BeanShell beans
24.4. 场景
24.4.1. Spring MVC控制器脚本化
24.4.2. Validator脚本化
24.5. 更多的资源
25. 注解和源代码级的元数据支持
25.1. 简介
25.2. Spring的元数据支持
25.3. 注解
25.3.1. @Required
25.3.2. Spring中的其它@Annotations
25.4. 集成Jakarta Commons Attributes
25.5. 元数据和Spring AOP自动代理
25.5.1. 基本原理
25.5.2. 声明式事务管理
25.5.3. 缓冲
25.5.4. 自定义元数据
25.6. 使用属性来减少MVC web层配置
25.7. 元数据属性的其它用法
25.8. 增加对额外元数据API的支持
A. XML Schema-based configuration
A.1. Introduction
A.2. XML Schema-based configuration
A.2.1. Referencing the schemas
A.2.2. The util schema
A.2.2.1. <util:constant/>
A.2.2.2. <util:property-path/>
A.2.2.3. <util:properties/>
A.2.2.4. <util:list/>
A.2.2.5. <util:map/>
A.2.2.6. <util:set/>
A.2.3. The jee schema
A.2.3.1. <jee:jndi-lookup/> (simple)
A.2.3.2. <jee:jndi-lookup/> (with single JNDI environment setting)
A.2.3.3. <jee:jndi-lookup/> (with multiple JNDI environment settings)
A.2.3.4. <jee:jndi-lookup/> (complex)
A.2.3.5. <jee:local-slsb/> (simple)
A.2.3.6. <jee:local-slsb/> (complex)
A.2.3.7. <jee:remote-slsb/>
A.2.4. The lang schema
A.2.5. The tx (transaction) schema
A.2.6. The aop schema
A.2.7. The tool schema
A.2.8. The beans schema
A.3. Setting up your IDE
A.3.1. Setting up Eclipse
A.3.2. Setting up IntelliJ IDEA
A.3.3. Integration issues
A.3.3.1. XML parsing errors in the Resin v.3 application server
B. Extensible XML authoring
B.1. Introduction
B.2. Authoring the schema
B.3. Coding a NamespaceHandler
B.4. Coding a BeanDefinitionParser
B.5. Registering the handler and the schema
B.5.1. META-INF/spring.handlers
B.5.2. META-INF/spring.schemas
C. spring-beans-2.0.dtd
D. spring.tld
D.1. Introduction
D.2. The bind tag
D.3. The escapeBody tag
D.4. The hasBindErrors tag
D.5. The htmlEscape tag
D.6. The message tag
D.7. The nestedPath tag
D.8. The theme tag
D.9. The transform tag
E. spring-form.tld
E.1. Introduction
E.2. The checkbox tag
E.3. The errors tag
E.4. The form tag
E.5. The hidden tag
E.6. The input tag
E.7. The label tag
E.8. The option tag
E.9. The options tag
E.10. The password tag
E.11. The radiobutton tag
E.12. The select tag
E.13. The textarea tag
F. Spring 2.0 开发手册中文化项目
F.1. 声明
F.2. 致谢
F.3. 参与人员及任务分配
F.4. Spring 2.0 正式版开发手册翻译说明
F.5. 项目历程
F.5.1. Spring 2.0 RC2 开发手册翻译项目
F.5.2. Spring 2.0 正式版开发手册翻译项目
Java 企业面试题精选
java基础 OOP JavaSe
数据库 JDBC xml
web基础 servlet和JSP
spring mybatis Struts2 springMVC Hibernate
Oracle Database 11g PLSQL编程实战_pdf
《oracle database 11g pl/sql编程实战》通过动手练习、大量的示例以及实际的项目帮助读者掌握pl/sql。书中包含大量*实践,涵盖了pl/sql语言所有的*功能和改进之处。每章末尾配有测验题,可以帮助读者进一步巩固所学内容,书中的示例代码也可以通过www.oraclepressbooks.com和www.tupwk.com.cn/downpage下载获取。即使是经验丰富的oracle专业人员,也可以从这本实战手册中受益。
第Ⅰ部分 pl/sql基础
第1章 oracle开发概述
1.1 历史和背景知识
1.2 架构
1.2.1 两层模型
1.2.2 三层模型
1.3 可下载代码
1.4 小结
1.4.1 最佳实践回顾
1.4.2 测验
第2章 pl/sql基础
2.1 pl/sql块
2.1.1 原型
2.1.2 基本匿名块
2.1.3 hello world匿名块
2.1.4 hello somebody匿名块
2.1.5 hello somebody命名块
2.1.6 嵌套块
2.2 变量:类型、赋值和运算符
2.2.1 文本数据类型
2.2.2 日期和时间戳类型
2.2.3 数值类型
2.2.4 复合变量类型
2.3 控制结构
2.3.1 if语句
2.3.2 case语句
2.3.3 循环结构
2.4 批量操作
2.5 可下载代码
2.6 小结
2.6.1 最佳实践回顾
2.6.2 测验
第3章 事务作用域
3.1 数据库acid测试
3.1.1 原子性
3.1.2 一致性
3.1.3 隔离性
3.1.4 持久性
3.2 多版本并发控制
3.3 保存点、提交和事务回滚
3.3.1 保存点和回滚
3.3.2 提交
3.4 dml锁定和隔离控制
3.5 调用者和定义者权限
3.6 可下载代码
3.7 小结
3.7.1 最佳实践回顾
3.7.2 测验
第4章 错误管理
4.1 错误类型
4.1.1 编译时错误
4.1.2 语义错误
4.2 pl/sql工具
4.3 可下载代码
4.4 小结
4.4.1 最佳实践回顾
4.4.2 测验
第Ⅱ部分 pl/sql编程
第Ⅲ部分 pl/sql高级编程
第Ⅳ部分 附 录
附录a 包装pl/sql
附录b pl/sql层次性能分析器
附录c pl/scope
附录d pl/sql内置包和类型
附录e 测验答案
设计模式之禅.pdf
目 录
第 1 章 策略模式【STRATEGY PATTERN】 ..........................................................................................................4
第 2 章 代理模式【PROXY PATTERN】 ...............................................................................................................8
第 3 章 单例模式【SINGLETON PATTERN】 ...................................................................................................... 12
第 4 章 多例模式【MULTITION PATTERN】 ...................................................................................................... 16
第 5 章 工厂方法模式【FACTORY METHOD PATTERN】 ................................................................................... 19
第 6 章 抽象工厂模式【ABSTRACT FACTORY PATTERN】 ................................................................................. 31
第 7 章 门面模式【FACADE PATTERN】 ........................................................................................................... 44
第 8 章 适配器模式【ADAPTER PATTERN】 ..................................................................................................... 51
第 9 章 模板方法模式【TEMPLATE METHOD PATTERN】 ................................................................................. 63
第 10 章 建造者模式【BUILDER PATTERN】 ...................................................................................................... 82
第 11 章 桥梁模式【BRIDGE PATTERN】 ............................................................................................................ 97
第 12 章 命令模式【COMMAND PATTERN】 ................................................................................................... 112
第 13 章 装饰模式【DECORATOR PATTERN】 .................................................................................................. 126
第 14 章 迭代器模式【ITERATOR PATTERN】 .................................................................................................. 137
第 15 章 组合模式【COMPOSITE PATTERN】 ................................................................................................... 147
第 16 章 观察者模式【OBSERVER PATTERN】 ................................................................................................. 175
第 17 章 责任链模式【CHAIN OF RESPONSIBILITY PATTERN】 ......................................................................... 194
第 18 章 访问者模式【VISITOR PATTERN】 ..................................................................................................... 210
第 19 章 状态模式【STATE PATTERN】 ............................................................................................................ 236
第 20 章 原型模式【PROTOTYPE PATTERN】 ................................................................................................... 255
第 21 章 中介者模式【MEDIATOR PATTERN】 ................................................................................................. 268
第 22 章 解释器模式【INTERPRETER PATTERN】 ............................................................................................. 286
第 23 章 亨元模式【FLYWEIGHT PATTERN】 .................................................................................................... 298
第 24 章 备忘录模式【MEMENTO PATTERN】 ................................................................................................. 299
第 25 章 模式大PK........................................................................................................................................... 300
第 26 章 六大设计原则.................................................................................................................................... 301
26.1 单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】 ............................................................................................ 301
26.2 里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】 .............................................................................................. 308
26.3 依赖倒置原则【DEPENDENCE
第 2 页您的设计模式
INVERSION PRINCIPLE】 ..................................................................................................................................................... 320
26.4 接口隔离原则【INTERFACE SEGREGATION PRINCIPLE】 .......................................................................................... 321
26.5 迪米特法则【LOW OF DEMETER】 ..................................................................................................................... 331
26.6 开闭原则【OPEN CLOSE PRINCIPLE】 .................................................................................................................. 341
第 27 章 混编模式讲解.................................................................................................................................... 358
第 28 章 更新记录: ....................................................................................................................................... 360
相关说明............................................................................................................................................................... 361
相关说明............................................................................................................................................................... 361
第 29 章 后序................................................................................................................................................... 362
你必须知道的261个java语言问题
本书以问答的形式组织内容,讨论了学习或使用Java语言的过程中经常遇到的一些问题。这些问题均是在经过充分调研的基础上,从实际应用中总结出来的,是作者和众多Java开发者的经验总结。书中精选了Java开发人员经常遇到的261个典型问题,涵盖了基本概念、环境配置、基本语法、异常处理、流操作、图形用户界面编程、网络编程、线程、序列化、数据库操作、Java Web程序设计等各方面的主题,并分别给出了详细的解答,而且结合代码示例阐明了技术要点。 本书结构清晰、讲解透彻、实用性强,是各高校相关专业Java语言课程很好的教学参考书,也是各层次Java程序员的优秀实践指南。 本书以问答的形式组织内容,讨论了学习或使用Java语言的过程中经常遇到的一些问题。这些问题均是在经过充分调研的基础上,从实际应用中总结出来的,是作者和众多Java发者的经验总结。书中精选了Java发人员经常遇到的261个典型问题,涵盖了基本概念、环境配置、基本语法、异常处理、流操作、图形用户界面编程、网络编程、线程、序列化、数据库操作、Java Web程序设计等各方面的主题,并分别给出了详细的解答,而且结合代码示例阐明了技术要。
本书结构清晰、讲解透彻、实用性强,是各高校相关专业Java语言课程很好的教学参考书,也是各层次Java程序员的优秀实践指南。
第1章 Java基本概念及环境配置
FAQl.O1 什么是面向对象程序设计?
FAQl.02 面向对象程序设计的基本特征有哪些?
FAQl.03 Java语言是如何产生和发展的?
FAQl.04 Android与Java语言有什么关系?
FAQl.05 Java SE、Java EE和Java ME有什么区别?
FAQl.06 Java语言的运行机制如何?
FAQl.07 什么是JVM?有什么作用?工作机制如何?
FAQl.08 什么是JRE(或J2RE)?
FAQl.09 什么是JDK?
FAQl.10 JDK、JRE和JVM之间有什么区别?
FAQl.11 什么是GC?GC的工作原理如何?
FAQl.12 如何安装Java基本开发环境JDK?
FAQl.13 为何在JDK安装路径下存在两个JRE?
HTML.5与CSS.3权威指南_pdf版本
第1章Web时代的变迁/I
1.1迎接新的Web时代/ 2
1.1.1 HTML 5时代即将来临/ 2
1.1.2 HTML 5的目标/4
1.2 HTML 5会深受欢迎的理由/ 4
1.2.1世界知名浏览器厂商对HTML 5的支持/ 4 1.2.2第一个理由:时代的要求/5
1.2.3 第二个理由:Internet Explorer 8 / 6 1.3可以放心使用HTML 5的三个理由/ 6
1.4 HTML 5要解决的三个问题/ 7
第2章HTML5与1«\11^4的区别/9
2.1语法的改变/ 10
2.1.1 HTML 5的语法变化/ 10
2.1.2 HTML 5中的标记方法/II
2.1.3 HTML 5确保了与之前HTML版本的兼容性/II 2.1.4标记示例/ 13
2.2新增的元素和废除的元素/ 13 2.2.1新增的结构元索/ 13
2.2.2新增的其他元素/ 15 2.2.3新增的input元素的类型/ 19 2.2.4废除的元素/ 19 2.3新增的属性和废除的属性/ 20 2.3.1新增的属性/ 20 2.3.2废除的属性/ 21 2.4全局属性/ 23
2.4.1 coptentEditable属性 / 23
2.4.2 designMode属性 / 24
2.4.3 hidden属性 / 25
2.4.4 spellcheck属性 / 25
2.4.5 tabindex属性 / 25
第3章HTML 5的结构/ 27
3.1新增的主体结构元素/ 28
3.1.1 article元素 / 28
3.1.2 section元素 / 30
3.1.3 nav元素/32
3.1.4 aside元素/33
3.1.5 time元素与微格式/ 35 3 • 1.6 pubdate属性 / 36
3.2新增的非主体结构元素/ 36
3.2/1 header元素 / 37
3.2.2 hgroup元素 / 38
3.2.3 footer元素 / 38
3.2.4 address元素 / 39
3.3 HTML 5结构 / 40
3.3.1 大纲 /40
3.3.2对新的结构元素使用样式M3
3.3.3 article元素的样式/ 44
第4章表单与文件/ 45 4.1新增元素与属性/ 46 4.1.1新增属性/ 46
4丄2大幅度地增加与改良了 i叩ut元素的种类/49 4.1.3对新的表单元素使用样式/54
4.1.4 output元素的追加/ 55 4.2表单验证/ 55
4.2.1自动验证/ 55 4.2.2显式验证/ 57 4.2.3取消验证/ 58 4.2.4自定义错误信息/ 58 4.3增强的页面元素/ 59
4.3.1新增的figure元素与figcaption元素/ 60 4.3.2新增的details元素/ 61 4.3.3新增的mark元素/ 62
4.3.4 新增的progress元素 / 64 4.3.5新增的meter元素/ 65
4.3.6新增的menu元素与command元素/ 66
4.3/7改良的〇1列表/ 66
4.3.8改良的dl列表/67
4.3.9加以严格限制的cite元素/ 68
4.3.10重新定义的small元素/ 69
4.4 文件API/69
4.4.1 FileUst对象与file对象 / 69
4.4.2 B】ob对象/70
4.4.3 FileReader接口/72
4.5 拖放 API/77
4.5.1实现拖放的步骤/ 77
4.5.2 DataTransfer对象的属性与方法/80 4.5.3设定拖放时的视觉效果/ 80
4.5.4自定义拖放图标/81
第5章绘制图形/ 82
5.1 canvas元素的基础知识/ 83
5.1.1在页面中放置canvas元素/ 83 5.1.2绘制矩形/ 84 5.2使用路径/ 86
5.2.1绘制圆形/ 86
5.2.2如果没有关闭路径会怎么样/ 88
5.2.3 moveTo 与 lineTo / 90
5.2.4使用bezierCurveTo绘制贝济埃曲线/ 91 .5.3绘制渐变图形/ 93
5.3.1绘制线性渐变/ 93 5.3.2绘制径向渐变/ 95 5.4绘制变形图形/ 96 5.4.1坐标变换/ 96 5.4.2坐标变换与路径的结合使用/98 5.4.3矩阵变换/ 99 5.5图形组合/ 103 5.6给图形绘制阴影/〗05 5.7使用图像/ 107
5.7.1绘制图像/ 107 5.7.2图像平铺/ 109 5.7.3图像裁剪/111 5.7.4像素处理/ 113 5.8绘制文字/ 115 5.9补充知识/ 117
5.9.1保存与恢复状态/ 117 5.9.2保存文件/ 118 5.9.3简单动画的制作/ 119
第6章多媒体播放/ 122
6.1 video元素与audio元素的基础知识/ 123
6.1.1 HTML 4页面中播放视频或音频的方法/123
翁 *
6.1.2 HTML 5页面中播放视频或音频的方法/ 124
6.2 属性 / 125
6.3 方法 / 129
6.4 事件 / 132
6.4.1事件处理方式/ 132 6.4.2事件介绍/ 132 6.4.3事件捕捉示例/ 133
第7章本地存储/ 135
7.1 Web Storage / 136
7.1.1 Web Storage是什么 / 136 7.1.2简单Web留言本/ 139
7.1.3作为简易数据库来利用/ 141 7.2本地数据库/I44
7.2.1 本地数据库的基本概念/ 144
7.2.2 用executeSql来执行查询 / 145 7.2.3使用数据库实现Web留言本/ 146
7.2.4 transaction方法中的处理 / 149
第8章离线应用程序/ 151
8.1离线Web应用程序详解/ 152 8.1.1新增的本地缓存/ 152 8.1.2本地缓存与浏览器网页缓存的区别/ 152
8.2 manifest文件 / 153
8.3浏览器与服务器的交互过程/ 155
8.4 applicationCache对象 / 156
8.4.1 swapCache方法 / 157
8.4.2 applicationCache对象的事件 / 158
第9章通信API/162
9.1跨文档消息传输/ 163
9.1.1跨文档消息传输的基本知识/ 163 9.1.2跨文档消息传输示例/ 163
9.2 Web Sockets通信 / 166
9.2.1 Web Sockets通信的基本知识/ 166
9.2.2 使用 Web Sockets API / 166
9.2.3 Web Sockets API使用示例 / 167 9.2.4发送对象/ 168
第10章使用Web Workers处理线程/170
10.1基础知识/ 171
10.2与线程进行数据的交互/ 174
10.3线程嵌套/ 176
10.3.1单层嵌套/ 176
10.3.2在多个子线程中进行数据的交互/178 10.4线程中可用的变量、函数与类/ 180
第11章获取地理位置信息/ 181
11.1 Geolocation API的基本知识 / 182 11.1.1取得当前地理位置/ 182
11.1.2持续监视当前地理位置的信息/ 184 11.1.3停止获取当前用户的地理位置信息/ 184
11.2 position对象 / 184 11.3在页面上使用google地图/ 186
第12章CSS3槪述/189 12.1概要介绍/ 190
12丄1 CSS3是什么/190
12.1.2 CSS 3的历史 / 190 12.2使用CSS 3能做什么/ 191
12.2.1模块与模块化结构/ 191
12.2.2 —个简单的CSS 3示例/ 192
第13章选择器/ 195
13.1选择器槪述/ 197 13.2属性选择器/ 197
13.2.1属性选择器是什么/ 197
13.2.2 CSS 3中的属性选择器/ 199 13.2.3灵活运用属性选择器/ 200
13.3结构性伪类选择器/ 201
13.3.1 CSS中的伪类选择器及伪元素/201
13.3.2 选择器 root、not、empty 和 target/205
13.3.3 选择器:first-child、last-child、nth-child和nth-last-child/210
13.3.4 选择器:nth-of-type和nth-last-of-type / 214 13.3.5循环使用样式/216
13.3.6 only-child选择器 / 218
13.4 UI元素状态伪类选择器/ 219
13.4.1 选择器:E:hover、E:active和E:focus/220
13.4.2 E:enabled伪类选择器与E:disabled伪类选择器/ 222
13.4.3 E: read-only伪类选择器与E:read-write伪类选择器/ 223
13.4.4 伪类选择器:E:checked、E:default 和 E: indeterminate/224
13.4.5 E::selection伪类选择器 / 226 13.5通用兄弟元素选择器/ 228
第14章使用选择器在页面中插入内容/ 230
14.1使用选择器来插入文字/ 231
14.1.1使用选择器来插入内容/231
14.1.2指之个别元素不进行插入/ 232 14.2插入图像文件/ 234
14.2.1在标题前插入图像文件/ 234 14.2.2插入图像文件的好处/ 234 14.2.3将alt属性的值作为图像的标题来显示/ 236 14.3使用content属性来插入项目编号/ 237 14.3.1在多个标题前加上连续编号/ 237 14.3.2在项目编号中追加文字/238 14.3.3指定编号的样式/ 238 14,3.4指定编号的种类/238 14.3.5编号嵌套/ 239 14.3.6中编号中嵌入大编号/240 M.3.7在字符串两边添加嵌套文字符号/242
第15章文字与字体相关样式/ 244
15、1给文字添加阴影——text-shadow属性/ 245
15.1.1 text-shadow属性的使用方法/ 245 15.1.2位移距离/ 247
15丄3阴影的模糊半径/247 15.1.4阴影的颜色/ 248 15.1.5指定多个阴影/ 248 15.2让文本自动换行——word-break属性/ 249 15.2.1依靠浏览器让文本自动换行/ 249 15.2.2指定自动换行的处理方法/ 249 .
15.3让长单词与URL地址自动换行——word-wrap属性/ 251 15.4使用服务器端字体——Web Fon^@font-face属性/ 251 15.4.1在网页上显示服务器端字体/ 252 15.4.2定义斜体或粗体字体/ 253 15.4.3显示客户端本地的字体/ 255 15.4.4属性值的指定/ 256
15.5修改字体种类而保持字体尺寸不变——fom-size-adjust属性/ 257 15.5.1字体不同导致文字大小的不同/257
15.5.2 font-size-adjust属性的使用方法 / 259 15.5.3浏览器对于aspect值的计算方法/ 259
15.5.4 font-size-adjust属性的使用示例 / 260
第16章盒相关样式/ 262 16.1盒的类型/ 263
16.1.1盒的基本类型/263 16 • 1.2 inline-block 类型 / 264
16.1.3 inline-table类型 / 270 •
16.1.4 list-item类型 / 272
16.1.5 run-in类型与compact类型 / 273 16.1.6表格相关类型/ 274
16.1.7 none类型 / 276
16.1.8各种浏览器对于各种盒类型的支持情况/277 16.2对于盒中容纳不下的内容的显示/ 277
16.2.1 overflow属性 / 278
16.2.2 overflow-x 属性与 overflow-y 属性 / 281
16.2.3 text-overflow属性 / 281 16.3对盒使用阴影/ 283
16.3.1 box-shadow属性的使用方法/ 283 16.3.2将参数设定为0/284
16.3.3对盒内子元素使用阴影/285 16.3.4对第一个文字或第一行使用阴影/ 286 16.3.5对表格及单元格使用阴影/ 287 16.4指定针对元素的宽度与高度的计算方法/ 288
16.4.1 box-sizing属性 / 288
16.4.2为什么要使用box-sizing属性/291
第17章与背景和边框相关样式/ 293 17.1与背景相关的新增属性/ 294
17.1.1指定背景的显示范围——background-clip属性/ 294 17.1.2指定绘制背景图像的绘制起点——background-origin属性/ 296 17• 1.3指定背景图像的尺寸——background-size属性/ 299 17.1.4指定内联元素背景图像进行平铺时的掮环方式——background»break4性/301 17.2在一个元素中显示多个背景图像/ 302 17.3圆角边框的绘制/ 303
17.3.1 border-radius属性 / 304
17.3.2在border-radius属性中指定两个半径/ 305 .
17.3.3不显示边框的时候/ 306
17.3.4修改边框种类的时候/ 306 17.3.5绘制四个角不同半径的圆角边框/306 17.4使用图像边框/ 307
17.4.1 border-image属性 / 307
17.4.2 border-image属性最简单的使用方法/ 308
17.4.3使用border-image属性来指定边框宽度/ 310 17.4.4中央图像的自动拉伸/311 17.4.5指定四条边中图像的显示方法/312 17.4.6使用背景图像/315
第18章CSS 3中的变形处理/ 317
18.1 transform功能的基础知识/ 318
18.1.1 如何使用 transform功能 / 318
18.1.2 transform功能的分类 / 319 18.2对一个元素使用多种变形的方法/ 323
18.2.1两个变形示例/ 323 18.2.2指定变形的基准点/ 325
第19章CSS 3中的动画功能/ 328
19.1 Transitions功能 / 329 ,
19.1.1 Transitions功能的使用方法/ 329
19.1.2使用Transitions功能同时平滑过渡多个属性值/ 330
19.2 Animations功能 / 333
19.2.1 Animations功能的使用方法/ 333 19.2.2实现多个属性值同时改变的动画/335 19.2.3实现动画的方法/337
19.2.4实现网页的淡入效果/ 339
第20章布局相关样式/ 340
20.1多栏布局/ 341
20.1.1使用float属性或position属性的缺点/ 341 20.1.2使用多栏布局方式/343 20.2盒布局/ 346
20.2.1 盒布局的基础知识/ 346 20.2.2弹性盒布局/ 350
第21章Media Queries相关样式/ 362
21.1根据浏览器的窗口大小来选择使用不同的样式/ 363
21.2在iPhone中的显示/ 367
21.3 Media Queries的使用方法 / 368
第22章CSS 3的其他重要样式和属性/ 371
22.1颜色相关样式/ 372
22.1.1利用alpha通道来设定颜色/ 372 22 • 1.2 alpha通道与opacity属性的区别/ 374
22.1.3 指定颜色值为transparent / 376 22.2用户界面相关样式/ 377 22.2.1轮廓相关样式/ 377
22.2.2 resize属性 / 380
22.3取消对元素的样式指定——initial属性值/ 381 22.3.1取消对元素的样式指定/ 381
22.3.2使用initial属性值并不等于取消样式设定的特例/ 383 第23章综合实例/ 385
23.1实例1:使用HTML 5中新增结构元素来构建网页/ 386 23.1.1组织网页结构/ 386
23.1.2 header元素中的内容/ 388
23.1.3 aside元素中的内容/ 395
23.1.4 section元素中的内容/ 398
23.1.5 footer元素中的内容/ 400
23.2实例2:使用HTML 5+CSS 3来构建Web应用程序/ 401
23.2.1 HTML 5页面代码分析/ 402
23.2.2 CSS 3样式代码分析/ 405
23.2.3 JavaScript脚本代码分析 / 409
HTML.5与CSS.3权威指南_word版
第1章Web时代的变迁/I
1.1迎接新的Web时代/ 2
1.1.1 HTML 5时代即将来临/ 2
1.1.2 HTML 5的目标/4
1.2 HTML 5会深受欢迎的理由/ 4
1.2.1世界知名浏览器厂商对HTML 5的支持/ 4 1.2.2第一个理由:时代的要求/5
1.2.3 第二个理由:Internet Explorer 8 / 6 1.3可以放心使用HTML 5的三个理由/ 6
1.4 HTML 5要解决的三个问题/ 7
第2章HTML5与1«\11^4的区别/9
2.1语法的改变/ 10
2.1.1 HTML 5的语法变化/ 10
2.1.2 HTML 5中的标记方法/II
2.1.3 HTML 5确保了与之前HTML版本的兼容性/II 2.1.4标记示例/ 13
2.2新增的元素和废除的元素/ 13 2.2.1新增的结构元索/ 13
2.2.2新增的其他元素/ 15 2.2.3新增的input元素的类型/ 19 2.2.4废除的元素/ 19 2.3新增的属性和废除的属性/ 20 2.3.1新增的属性/ 20 2.3.2废除的属性/ 21 2.4全局属性/ 23
2.4.1 coptentEditable属性 / 23
2.4.2 designMode属性 / 24
2.4.3 hidden属性 / 25
2.4.4 spellcheck属性 / 25
2.4.5 tabindex属性 / 25
第3章HTML 5的结构/ 27
3.1新增的主体结构元素/ 28
3.1.1 article元素 / 28
3.1.2 section元素 / 30
3.1.3 nav元素/32
3.1.4 aside元素/33
3.1.5 time元素与微格式/ 35 3 • 1.6 pubdate属性 / 36
3.2新增的非主体结构元素/ 36
3.2/1 header元素 / 37
3.2.2 hgroup元素 / 38
3.2.3 footer元素 / 38
3.2.4 address元素 / 39
3.3 HTML 5结构 / 40
3.3.1 大纲 /40
3.3.2对新的结构元素使用样式M3
3.3.3 article元素的样式/ 44
第4章表单与文件/ 45 4.1新增元素与属性/ 46 4.1.1新增属性/ 46
4丄2大幅度地增加与改良了 i叩ut元素的种类/49 4.1.3对新的表单元素使用样式/54
4.1.4 output元素的追加/ 55 4.2表单验证/ 55
4.2.1自动验证/ 55 4.2.2显式验证/ 57 4.2.3取消验证/ 58 4.2.4自定义错误信息/ 58 4.3增强的页面元素/ 59
4.3.1新增的figure元素与figcaption元素/ 60 4.3.2新增的details元素/ 61 4.3.3新增的mark元素/ 62
4.3.4 新增的progress元素 / 64 4.3.5新增的meter元素/ 65
4.3.6新增的menu元素与command元素/ 66
4.3/7改良的〇1列表/ 66
4.3.8改良的dl列表/67
4.3.9加以严格限制的cite元素/ 68
4.3.10重新定义的small元素/ 69
4.4 文件API/69
4.4.1 FileUst对象与file对象 / 69
4.4.2 B】ob对象/70
4.4.3 FileReader接口/72
4.5 拖放 API/77
4.5.1实现拖放的步骤/ 77
4.5.2 DataTransfer对象的属性与方法/80 4.5.3设定拖放时的视觉效果/ 80
4.5.4自定义拖放图标/81
第5章绘制图形/ 82
5.1 canvas元素的基础知识/ 83
5.1.1在页面中放置canvas元素/ 83 5.1.2绘制矩形/ 84 5.2使用路径/ 86
5.2.1绘制圆形/ 86
5.2.2如果没有关闭路径会怎么样/ 88
5.2.3 moveTo 与 lineTo / 90
5.2.4使用bezierCurveTo绘制贝济埃曲线/ 91 .5.3绘制渐变图形/ 93
5.3.1绘制线性渐变/ 93 5.3.2绘制径向渐变/ 95 5.4绘制变形图形/ 96 5.4.1坐标变换/ 96 5.4.2坐标变换与路径的结合使用/98 5.4.3矩阵变换/ 99 5.5图形组合/ 103 5.6给图形绘制阴影/〗05 5.7使用图像/ 107
5.7.1绘制图像/ 107 5.7.2图像平铺/ 109 5.7.3图像裁剪/111 5.7.4像素处理/ 113 5.8绘制文字/ 115 5.9补充知识/ 117
5.9.1保存与恢复状态/ 117 5.9.2保存文件/ 118 5.9.3简单动画的制作/ 119
第6章多媒体播放/ 122
6.1 video元素与audio元素的基础知识/ 123
6.1.1 HTML 4页面中播放视频或音频的方法/123
翁 *
6.1.2 HTML 5页面中播放视频或音频的方法/ 124
6.2 属性 / 125
6.3 方法 / 129
6.4 事件 / 132
6.4.1事件处理方式/ 132 6.4.2事件介绍/ 132 6.4.3事件捕捉示例/ 133
第7章本地存储/ 135
7.1 Web Storage / 136
7.1.1 Web Storage是什么 / 136 7.1.2简单Web留言本/ 139
7.1.3作为简易数据库来利用/ 141 7.2本地数据库/I44
7.2.1 本地数据库的基本概念/ 144
7.2.2 用executeSql来执行查询 / 145 7.2.3使用数据库实现Web留言本/ 146
7.2.4 transaction方法中的处理 / 149
第8章离线应用程序/ 151
8.1离线Web应用程序详解/ 152 8.1.1新增的本地缓存/ 152 8.1.2本地缓存与浏览器网页缓存的区别/ 152
8.2 manifest文件 / 153
8.3浏览器与服务器的交互过程/ 155
8.4 applicationCache对象 / 156
8.4.1 swapCache方法 / 157
8.4.2 applicationCache对象的事件 / 158
第9章通信API/162
9.1跨文档消息传输/ 163
9.1.1跨文档消息传输的基本知识/ 163 9.1.2跨文档消息传输示例/ 163
9.2 Web Sockets通信 / 166
9.2.1 Web Sockets通信的基本知识/ 166
9.2.2 使用 Web Sockets API / 166
9.2.3 Web Sockets API使用示例 / 167 9.2.4发送对象/ 168
第10章使用Web Workers处理线程/170
10.1基础知识/ 171
10.2与线程进行数据的交互/ 174
10.3线程嵌套/ 176
10.3.1单层嵌套/ 176
10.3.2在多个子线程中进行数据的交互/178 10.4线程中可用的变量、函数与类/ 180
第11章获取地理位置信息/ 181
11.1 Geolocation API的基本知识 / 182 11.1.1取得当前地理位置/ 182
11.1.2持续监视当前地理位置的信息/ 184 11.1.3停止获取当前用户的地理位置信息/ 184
11.2 position对象 / 184 11.3在页面上使用google地图/ 186
第12章CSS3槪述/189 12.1概要介绍/ 190
12丄1 CSS3是什么/190
12.1.2 CSS 3的历史 / 190 12.2使用CSS 3能做什么/ 191
12.2.1模块与模块化结构/ 191
12.2.2 —个简单的CSS 3示例/ 192
第13章选择器/ 195
13.1选择器槪述/ 197 13.2属性选择器/ 197
13.2.1属性选择器是什么/ 197
13.2.2 CSS 3中的属性选择器/ 199 13.2.3灵活运用属性选择器/ 200
13.3结构性伪类选择器/ 201
13.3.1 CSS中的伪类选择器及伪元素/201
13.3.2 选择器 root、not、empty 和 target/205
13.3.3 选择器:first-child、last-child、nth-child和nth-last-child/210
13.3.4 选择器:nth-of-type和nth-last-of-type / 214 13.3.5循环使用样式/216
13.3.6 only-child选择器 / 218
13.4 UI元素状态伪类选择器/ 219
13.4.1 选择器:E:hover、E:active和E:focus/220
13.4.2 E:enabled伪类选择器与E:disabled伪类选择器/ 222
13.4.3 E: read-only伪类选择器与E:read-write伪类选择器/ 223
13.4.4 伪类选择器:E:checked、E:default 和 E: indeterminate/224
13.4.5 E::selection伪类选择器 / 226 13.5通用兄弟元素选择器/ 228
第14章使用选择器在页面中插入内容/ 230
14.1使用选择器来插入文字/ 231
14.1.1使用选择器来插入内容/231
14.1.2指之个别元素不进行插入/ 232 14.2插入图像文件/ 234
14.2.1在标题前插入图像文件/ 234 14.2.2插入图像文件的好处/ 234 14.2.3将alt属性的值作为图像的标题来显示/ 236 14.3使用content属性来插入项目编号/ 237 14.3.1在多个标题前加上连续编号/ 237 14.3.2在项目编号中追加文字/238 14.3.3指定编号的样式/ 238 14,3.4指定编号的种类/238 14.3.5编号嵌套/ 239 14.3.6中编号中嵌入大编号/240 M.3.7在字符串两边添加嵌套文字符号/242
第15章文字与字体相关样式/ 244
15、1给文字添加阴影——text-shadow属性/ 245
15.1.1 text-shadow属性的使用方法/ 245 15.1.2位移距离/ 247
15丄3阴影的模糊半径/247 15.1.4阴影的颜色/ 248 15.1.5指定多个阴影/ 248 15.2让文本自动换行——word-break属性/ 249 15.2.1依靠浏览器让文本自动换行/ 249 15.2.2指定自动换行的处理方法/ 249 .
15.3让长单词与URL地址自动换行——word-wrap属性/ 251 15.4使用服务器端字体——Web Fon^@font-face属性/ 251 15.4.1在网页上显示服务器端字体/ 252 15.4.2定义斜体或粗体字体/ 253 15.4.3显示客户端本地的字体/ 255 15.4.4属性值的指定/ 256
15.5修改字体种类而保持字体尺寸不变——fom-size-adjust属性/ 257 15.5.1字体不同导致文字大小的不同/257
15.5.2 font-size-adjust属性的使用方法 / 259 15.5.3浏览器对于aspect值的计算方法/ 259
15.5.4 font-size-adjust属性的使用示例 / 260
第16章盒相关样式/ 262 16.1盒的类型/ 263
16.1.1盒的基本类型/263 16 • 1.2 inline-block 类型 / 264
16.1.3 inline-table类型 / 270 •
16.1.4 list-item类型 / 272
16.1.5 run-in类型与compact类型 / 273 16.1.6表格相关类型/ 274
16.1.7 none类型 / 276
16.1.8各种浏览器对于各种盒类型的支持情况/277 16.2对于盒中容纳不下的内容的显示/ 277
16.2.1 overflow属性 / 278
16.2.2 overflow-x 属性与 overflow-y 属性 / 281
16.2.3 text-overflow属性 / 281 16.3对盒使用阴影/ 283
16.3.1 box-shadow属性的使用方法/ 283 16.3.2将参数设定为0/284
16.3.3对盒内子元素使用阴影/285 16.3.4对第一个文字或第一行使用阴影/ 286 16.3.5对表格及单元格使用阴影/ 287 16.4指定针对元素的宽度与高度的计算方法/ 288
16.4.1 box-sizing属性 / 288
16.4.2为什么要使用box-sizing属性/291
第17章与背景和边框相关样式/ 293 17.1与背景相关的新增属性/ 294
17.1.1指定背景的显示范围——background-clip属性/ 294 17.1.2指定绘制背景图像的绘制起点——background-origin属性/ 296 17• 1.3指定背景图像的尺寸——background-size属性/ 299 17.1.4指定内联元素背景图像进行平铺时的掮环方式——background»break4性/301 17.2在一个元素中显示多个背景图像/ 302 17.3圆角边框的绘制/ 303
17.3.1 border-radius属性 / 304
17.3.2在border-radius属性中指定两个半径/ 305 .
17.3.3不显示边框的时候/ 306
17.3.4修改边框种类的时候/ 306 17.3.5绘制四个角不同半径的圆角边框/306 17.4使用图像边框/ 307
17.4.1 border-image属性 / 307
17.4.2 border-image属性最简单的使用方法/ 308
17.4.3使用border-image属性来指定边框宽度/ 310 17.4.4中央图像的自动拉伸/311 17.4.5指定四条边中图像的显示方法/312 17.4.6使用背景图像/315
第18章CSS 3中的变形处理/ 317
18.1 transform功能的基础知识/ 318
18.1.1 如何使用 transform功能 / 318
18.1.2 transform功能的分类 / 319 18.2对一个元素使用多种变形的方法/ 323
18.2.1两个变形示例/ 323 18.2.2指定变形的基准点/ 325
第19章CSS 3中的动画功能/ 328
19.1 Transitions功能 / 329 ,
19.1.1 Transitions功能的使用方法/ 329
19.1.2使用Transitions功能同时平滑过渡多个属性值/ 330
19.2 Animations功能 / 333
19.2.1 Animations功能的使用方法/ 333 19.2.2实现多个属性值同时改变的动画/335 19.2.3实现动画的方法/337
19.2.4实现网页的淡入效果/ 339
第20章布局相关样式/ 340
20.1多栏布局/ 341
20.1.1使用float属性或position属性的缺点/ 341 20.1.2使用多栏布局方式/343 20.2盒布局/ 346
20.2.1 盒布局的基础知识/ 346 20.2.2弹性盒布局/ 350
第21章Media Queries相关样式/ 362
21.1根据浏览器的窗口大小来选择使用不同的样式/ 363
21.2在iPhone中的显示/ 367
21.3 Media Queries的使用方法 / 368
第22章CSS 3的其他重要样式和属性/ 371
22.1颜色相关样式/ 372
22.1.1利用alpha通道来设定颜色/ 372 22 • 1.2 alpha通道与opacity属性的区别/ 374
22.1.3 指定颜色值为transparent / 376 22.2用户界面相关样式/ 377 22.2.1轮廓相关样式/ 377
22.2.2 resize属性 / 380
22.3取消对元素的样式指定——initial属性值/ 381 22.3.1取消对元素的样式指定/ 381
22.3.2使用initial属性值并不等于取消样式设定的特例/ 383 第23章综合实例/ 385
23.1实例1:使用HTML 5中新增结构元素来构建网页/ 386 23.1.1组织网页结构/ 386
23.1.2 header元素中的内容/ 388
23.1.3 aside元素中的内容/ 395
23.1.4 section元素中的内容/ 398
23.1.5 footer元素中的内容/ 400
23.2实例2:使用HTML 5+CSS 3来构建Web应用程序/ 401
23.2.1 HTML 5页面代码分析/ 402
23.2.2 CSS 3样式代码分析/ 405
23.2.3 JavaScript脚本代码分析 / 409
Oracle Database 11gR2 性能调整与优化
在Oracle认证大师Richard Niemiec的帮助下,系统地识别和排除数据库的性能问题:《Oracle Database 11g R2性能调整与优化》一书详细介绍了*的监控、故障排除和优化的方法,取自真实世界的案例研究和*实践遍及全书,从中您可以学会如何找出和解决瓶颈问题、如何配置存储设备、如何有效运行查询以及如何开发无错误的 SQL和PL/SQL代码。由Oracle出版社出版的这部书中还介绍了有关测试、报表和安全功能等方面的改进。
主要内容
● 正确运用 Oracle 11g R2数据库的索引和分区技术
● 运用V$视图和X$表来紧急处理数据库问题
● 使用Oracle Exadata和Oracle Exalogic弹性云
● 运用Oracle RAT来分布工作负载
● 有效地管理磁盘驱动器、磁盘阵列和内存
● 运用Oracle的Statspack和AWR等工具来生成报告
● 运用Oracle的SQL提示和TRACE实用工具来优化查询
● 运用sar、vmstat和iostat来监控系统统计信息
第1章 11g R1 & R2新特性介绍(针对DBA和开发者)
1.1 轮到Exadata出场了!
1.2 高级压缩
1.3 自动诊断信息库(Automatic Diagnostic Repository,ADR)
1.4 自动共享内存管理(Automatic Shared Memory Management,ASMM)的改进
1.5 ASM的改进
1.5.1 从ASM首选镜像读取
1.5.2 滚动升级/打补丁
1.5.3 更快的重新平衡
1.5.4 ASM磁盘组兼容性
1.5.5 ASMCMD命令扩展
1.6 自动SQL优化
1.7 数据卫士的增强
1.7.1 快照备用(Snapshot Standby)
1.7.2 活动数据卫士
1.7.3 混合平台支持
1.7.4 高级压缩支持逻辑备用数据库(11gR2)
1.7.5 透明数据加密支持逻辑备用数据库
1.7.6 增强的数据泵压缩
1.7.7 数据泵加密Dump文件集
1.7.8 数据泵的传统模式
1.8 增强了的统计信息
1.8.1 增强了的I/O统计信息
1.8.2 减少收集分区对象的统计信息
1.8.3 待定统计信息
1.8.4 多列统计信息
1.8.5 表达式统计信息
1.9 闪回数据归档(Flashback Data Archive,FBDA)
1.10 健康监控器(Health Monitor)
1.11 事件打包服务(Incident Packaging Service,IPS)
1.12 不可视索引(invisible index)
1.13 分区新特性
1.13.1 区间分区
1.13.2 REF分区
1.13.3 系统分区
1.13.4 虚拟列分区
1.13.5 分区顾问
1.14 只读表
1.15 RAC One Node和RAC Patching
1.16 真正应用测试(Real Application Testing,RAT)
1.17 SQL性能分析器(SQL Performance Analyzer,SPA)
1.18 结果集缓存(Result Cache)
1.19 RMAN的新特性
1.19.1 备份的优化
1.19.2 长期备份处理的改进
1.19.3 并行备份巨大的数据文件
1.19.4 更快的备份压缩(改进的压缩)
1.19.5 活动数据库复制(Active Database Duplication)
1.19.6 更好的恢复目录管理
1.19.7 增强的归档日志删除策略
1.19.8 数据恢复顾问(Data Recovery Advisor)
1.19.9 虚拟专用目录
1.19.10 主动的健康检查
1.19.11 块恢复(闪回日志)
1.19.12 块恢复(物理备用)
1.20 安全文件
1.20.1 压缩
1.20.2 加密
1.20.3 重复数据删除
1.21 流(GoldenGate是流的未来)的增强
1.21.1 XStream In
1.21.2 XStream Out
1.21.3 流支持高级压缩(11gR2)
1.22 临时表空间的收缩
1.23 透明数据加密(TDE)的改进
1.24 11g新的后台进程
1.25 版本对照表
1.26 新特性回顾
1.27 参考文献
第2章 索引基本原理(针对DBA和初级开发人员)
2.1 索引基本概念
2.2 不可视索引
2.3 组合索引
2.4 索引抑制
2.4.1 使用不等于运算符(<>、!=)
2.4.2 使用IS NULL或IS NOT NULL
2.4.3 使用LIKE
2.4.4 使用函数
2.4.5 比较不匹配的数据类型
2.5 选择性
2.6 集群因子
2.7 二元高度(Binary Height)
2.8 使用直方图
2.9 快速全扫描
2.10 跳跃式扫描
2.11 索引的类型
2.11.1 B树索引
2.11.2 位图索引
2.11.3 哈希索引
2.11.4 索引组织表
2.11.5 反键索引
2.11.6 基于函数的索引
2.11.7 分区索引
2.11.8 位图连接索引
2.12 快速重建索引
2.13 在线重建索引
2.14 要诀回顾
2.15 参考文献
第3章 磁盘安装启用的方法和ASM(针对DBA)
3.1 磁盘阵列:必然之选
3.1.1 使用磁盘阵列改进性能和可用性
3.1.2 所需的磁盘数量
3.1.3 可用的RAID级别
3.1.4 更新的RAID 5
3.2 传统文件系统的安装和维护
3.3 在硬件磁盘之间分布关键数据文件
3.3.1 分开存储数据和索引文件
3.3.2 避免I/O磁盘争用
3.3.3 通过移动数据文件来均衡文件I/O
3.4 本地管理的表空间
3.4.1 创建本地管理的表空间
3.4.2 把字典管理的表空间迁移到本地管理的表空间
3.4.3 Oracle大文件表空间
3.4.4 Oracle管理文件
3.5 ASM简介
3.5.1 IT部门内各个角色之间的沟通
3.5.2 ASM实例
3.5.3 ASM初始化参数
3.5.4 ASM的安装
3.5.5 ASM初始化参数和SGA调整
3.5.6 ASM和权限
3.5.7 ASM磁盘
3.5.8 ASM和多路径
3.5.9 ASM磁盘组
3.5.10 ASM磁盘组和数据库
3.5.11 ASM冗余和故障组
3.5.12 新的空间相关列
3.5.13 集群同步服务
3.5.14 数据库实例和ASM
3.5.15 使用ASM进行数据库整合和集群化
3.5.16 支持ASM的数据库进程
3.5.17 大文件和ASM
3.5.18 支持ASM的数据库初始化参数
3.5.19 ASM和数据库部署最佳实践
3.5.20 ASM存储管理和分配
3.5.21 ASM重新平衡和重新分布
3.6 使用分区来避免磁盘争用
3.6.1 获得关于分区的更多信息
3.6.2 其他类型的分区
3.6.3 Oracle 11gR2的新分区选项
3.6.4 其他分区选项
3.7 使用索引分区
3.8 导出分区
3.9 消除碎片
3.9.1 使用正确的区大小
3.9.2 创建新的表空间并把数据移到其中
3.9.3 导出和重新导入表
3.9.4 正确设定PCTFREE以避免链化(Chaining)现象
3.9.5 重建数据库
3.10 增加日志文件尺寸和LOG_CHECKPOINT_ INTERVAL以提高速度
3.10.1 确定重做日志文件的大小是否存在问题
3.10.2 确定日志文件的大小和检查点的时间间隔
3.11 快速恢复区(Fast Recovery Area,FRA)
3.12 增加恢复的可能性:在每次批处理后提交
3.12.1 把大的事务隔离到它们自己的回滚段上
3.12.2 使用UNDO表空间
3.12.3 监控UNDO空间
3.12.4 结束有问题的会话
3.13 在不同磁盘和控制器上存放多个控制文件
3.14 磁盘I/O的其他注意事项和提示
3.15 设计阶段需要注意的问题
3.16 要诀回顾
3.17 参考文献
第4章 通过初始化参数调优数据库(针对DBA)
4.1 升级到Oracle 11gR2之后
4.2 识别重要的初始化参数
4.3 在不重启数据库的情况下修改初始化参数
4.4 通过Oracle实用程序洞察初始化参数
4.5 用企业管理器查看初始化参数
4.6 优化DB_CACHE_SIZE来提高性能
4.6.1 使用V$DB_CACHE_ADVICE优化DB_CACHE_SIZE
4.6.2 保持数据缓存命中率超过95%
4.6.3 监控V$SQLAREA视图以查找较慢的查询
4.7 设定DB_BLOCK_SIZE来反映数据读的大小
4.8 把SGA_MAX_SIZE设置为主内存大小的25%到50%
4.9 优化SHARED_POOL_SIZE以获取最佳性能
4.9.1 使用存储过程来优化共享SQL区域的使用
4.9.2 设定足够大的SHARED_POOL_SIZE以保证充分利用DB_CACHE_SIZE
4.9.3 保证数据字典缓存命中率至少为95%
4.9.4 保证库缓存的重载率为0,并使命中率在95%以上
4.9.5 使用可用内存来判断SHARED_POOL_SIZE是否设置正确
4.9.6 使用X$KSMSP表详细观察共享池
4.9.7 关于缓存大小需要记住的要点
4.9.8 与初始化参数相关的等待
4.10 在Oracle中使用多个缓冲池
4.10.1 与DB_CACHE_SIZE相关并为数据分配内存的池
4.10.2 修改LRU算法
4.10.3 与SHARED_POOL_SIZE相关并为语句分配内存的池
4.11 调整PGA_AGGREGATE_TARGET以优化内存的使用
4.12 修改SGA大小以避免换页(Paging)和交换(Swapping)
4.13 了解Oracle优化器
4.14 创建足够的调度程序(Dispatcher)
4.14.1 足够的打开的游标(OPEN_CURSORS)
4.14.2 不要让DDL语句失败(使用DDL锁超时机制)
4.15 两个重要的Exadata初始化参数(仅针对Exadata)
4.16 25个需要深思熟虑的重要初始化参数
4.16.1 历年的初始化参数
4.16.2 查找未公开的初始化参数
4.17 理解典型的服务器
4.17.1 典型服务器的建模
4.17.2 Oracle Application数据库选型
4.18 要诀回顾
4.19 参考文献
第5章 企业管理器和网格控制器(针对DBA和开发人员)
5.1 企业管理器(EM)基础
5.2 从All Targets和其他分组开始
5.3 SQL性能分析器(SPA)
5.4 ADDM
5.4.1 “数据库实例服务器”选项卡和“数据库管理”选项卡
5.4.2 “数据库实例服务器”选项卡:表空间
5.4.3 “数据库实例服务器”选项卡:聚焦实例级别
5.4.4 “数据库实例服务器”选项卡:所有初始化参数
5.4.5 “数据库实例服务器”选项卡:管理优化器统计
5.4.6 “数据库实例服务器”选项卡:资源管理器(消费者组)
5.4.7 “数据库维护”选项卡
5.4.8 “数据库拓扑”选项卡
5.4.9 “数据库性能”选项卡
5.5 监控主机
5.6 监控应用服务器
5.7 监控Web应用程序
5.8 SQL顾问(SQL Advisors)
5.9 Deployments选项卡(补丁选项)
5.10 调度中心和Jobs选项卡
5.11 Reports选项卡
5.12 ASM(自动存储管理)的性能
5.13 真正应用测试(数据库回放)
5.14 Exadata的企业管理器
5.15 小结
5.16 要诀回顾
5.17 参考文献
第6章 使用EXPLAIN PLAN和SQL计划管理(针对开发人员和DBA)
6.1 Oracle的SQL跟踪(SQL Trace)实用工具
6.1.1 对简单查询使用SQL跟踪的简单步骤
6.1.2 TRACE输出部分
6.1.3 深入探讨TKPROF输出
6.2 使用DBMS_MONITOR
6.3 单独使用EXPLAIN PLAN
6.3.1 EXPLAIN PLAN--自顶而下还是从下往上读
6.3.2 EXPLAIN PLAN的另一种输出方法:构建树结构
6.3.3 使用执行树的另一个例子
6.3.4 在开发者产品中利用跟踪/EXPLAIN发现有问题的查询
6.3.5 PLAN_TABLE表中的重要列
6.3.6 未公开的跟踪初始化参数
6.4 使用STORED OUTLINES(存储纲要)
6.5 使用SPM (11g新特性)
6.6 要诀回顾
6.7 参考文献
第7章 基本的提示语法(针对开发人员和DBA)
7.1 最常用的提示
7.1.1 慎用提示
7.1.2 首先修正设计方案
7.2 可用提示及归类
7.2.1 执行路径提示
7.2.2 访问方法提示
7.2.3 查询转换提示
7.2.4 连接操作提示
7.2.5 并行执行提示
7.2.6 其他提示
7.3 指定提示
7.4 指定多个提示
7.5 使用别名时,提示别名而非表名
7.6 提示
7.6.1 Oracle的演示样板:HR方案
7.6.2 FIRST_ROWS提示
7.6.3 ALL_ROWS提示
7.6.4 FULL提示
7.6.5 INDEX提示
7.6.6 NO_INDEX提示
7.6.7 INDEX_JOIN提示
7.6.8 INDEX_COMBINE提示
7.6.9 INDEX_ASC提示
7.6.10 INDEX_DESC提示
7.6.11 INDEX_FFS提示
7.6.12 ORDERED提示
7.6.13 LEADING提示
7.6.14 NO_EXPAND提示
7.6.15 DRIVING_SITE提示
7.6.16 USE_MERGE提示
7.6.17 USE_NL提示
7.6.18 USE_HASH提示
7.6.19 QB_NAME提示
7.6.20 PUSH_SUBQ提示
7.6.21 PARALLEL提示
7.6.22 NO_PARALLEL提示
7.6.23 PARALLEL_INDEX提示
7.6.24 PQ_DISTRIBUTE提示
7.6.25 APPEND提示
7.6.26 NOAPPEND提示
7.6.27 CACHE提示
7.6.28 NOCACHE提示
7.6.29 RESULT_CACHE提示
7.6.30 CURSOR_SHARING_EXACT提示
7.7 杂项提示及注意事项
7.7.1 未公开的提示
7.7.2 如何在视图中使用提示
7.7.3 关于提示和STORED OUTLINES(11g中的SPM)的注意事项
7.8 提示为什么不起作用
7.9 提示一览
7.10 要诀回顾
7.11 参考文献
第8章 查询优化(针对开发人员和初级DBA)
8.1 应该优化哪些查询?查询V$SQLAREA和V$SQL视图
8.1.1 从V$SQLAREA视图中选出最糟糕的查询
8.1.2 从V$SQL视图中选出最糟糕的查询
8.2 使用Oracle 11g视图定位占用大量资源的会话和查询
8.2.1 从V$SESSMETRIC视图中选出当前最占用资源的会话
8.2.2 查看可用的AWR快照
8.2.3 从DBA_HIST_SQLSTAT视图中发现最糟糕的查询
8.2.4 从DBA_HIST_SQLSTA
Java EE核心框架实战
《Java EE核心框架实战》旨在提高读者的学习效率,增强其项目实战能力。为此,《Java EE核心框架实战》摒弃了软件公司中不常用或不实用的技术,而是采用近200个开发案例,为读者讲解了开发商业软件的必备知识,帮组读者进行“精要”式的学习,汲取JavaEE的思想,正确地进行项目实战。
《Java EE核心框架实战》涵盖了MyBatis 3、Struts 2、Ajax+JSON、Spring 4 MVC、Hibernate 4、Spring 4、WebLogic+EJB3等主流JavaEE框架的核心开发技术,介绍了MVC框架的原理实现、上传、下载、数据验证、国际化、多模块分组开发、转发/重定向;JSON的解析;将Ajax及JSON和MVC框架进行整合开发;ORM框架的CURD及MyBatis和Hibernate中映射文件的使用;Spring 4中的IOC及AOP技术;企业中常使用的Struts 2、Spring 4 MVC、MyBatis 3、Hibernate 4、Spring 4整合开发,以及通过WebLogic+EJB3深入学习JavaEE的体系结构等实用内容。
《Java EE核心框架实战》语言简洁,示例丰富,适合具有一定Java编程基础的读者阅读,以及使用Java进行软件开发、测试的从业人员阅读。
第1章 MyBatis 3操作数据库
1.1 MyBatis介绍
1.2 MyBatis操作数据库的步骤
1.2.1 使用XML配置文件创建SqlSessionFactory对象
1.2.2 SqlSessionFactoryBuilder和SqlSessionFactory类的结构
1.2.3 使用MyBatis Generator工具逆向
1.2.4 使用SqlSession对象在MsSql数据库中新建记录
1.2.5 使用SqlSession对象在Oracle数据库中新建记录
1.3 使用MyBatis针对3种数据库(Oracle、MSSQL和MySQL)实现CURD
1.3.1 针对Oracle的CURD
1.3.2 针对MSSQL的CURD
1.3.3 针对MySQL的CURD
1.4 MyBatis核心对象的生命周期与封装
1.4.1 创建GetSqlSessionFactory.java类
1.4.2 创建GetSqlSession.java类
1.4.3 创建DBOperate.java类
1.4.4 创建userinfoMapping.xml映射文件
1.4.5 创建连接数据库的mybatis-config.xml配置文件
1.4.6 创建名为test的Servlet对象
1.4.7 添加记录及异常回滚的测试
1.4.8 删除记录
1.4.9 更改记录
1.4.10 查询单条记录
1.4.11 查询多条记录
第2章 MyBatis 3常用技能
2.1 MyBatis 3的SQL映射文件
2.2 连接DB数据库的参数来自于Properties对象
2.3 标签
2.4 标签
2.5 将SQL语句作为字符串变量传入
2.6 动态SQL的使用
2.6.1 插入null值时的处理第1种方法——jdbcType
2.6.2 插入null值时的处理第2种方法——
2.6.3 标签的使用
2.6.4 标签的使用
2.6.5 标签的使用
2.7 插入超大的字符串文本内容
2.8 分页
第3章 Struts 2必备开发技能
3.1 使用Struts 2进行登录功能的开发
3.1.1 为什么要使用MVC
3.1.2 准备JAR文件
3.1.3 创建Web项目、添加jar文件及配置web.xml文件
3.1.4 创建控制层Controller文件——Login.java
3.1.5 创建业务逻辑层Model文件——UserinfoService.java
3.1.6 创建视图层View文件——login.jsp
3.1.7 添加核心配置文件struts.xml及解释
3.1.8 添加ok.jsp和no.jsp登录结果文件
3.1.9 运行项目
3.1.10 Struts 2的拦截器
3.1.11 Struts 2的数据类型自动转换
3.2 MVC框架的开发模型
3.2.1 基础知识准备1——解析并创建xml文件
3.2.2 基础知识准备2——Java的反射
3.2.3 实现MVC模型——自定义配置文件
3.2.4 实现MVC模型——ActionMapping.java封装信息
3.2.5 实现MVC模型——ResultMapping.java以封装信息
3.2.6 实现MVC模型——管理映射信息的ActionMappingManager.java对象
3.2.7 实现MVC模型——创建反射Action的ActionManager.java对象
3.2.8 实现MVC模型——创建核心控制器ActionServlet.java
3.2.9 实现MVC模型——创建Action接口及控制层Controller实现类
3.2.10 实现MVC模型——创建视图层V对应的JSP文件
3.2.11 实现MVC模型——在web.xml中配置核心控制器
3.2.12 实现MVC模型——运行结果
3.3 Struts 2的刷新验证功能
3.3.1 Action接口
3.3.2 Validateable和ValidationAware接口
3.3.3 TextProvider和LocaleProvider接口
3.3.4 使用ActionSupport实现有刷新的验证
3.4 对Struts 2有刷新验证的示例进行升级
3.4.1 加入xml配置来屏蔽自动生成的table/tr/td代码
3.4.2 解决“出错信息不能自动显示”的问题
3.5 用标签显示全部出错信息
3.6 出错信息进行传参及国际化
3.6.1 创建info_en_US.properties和info_zh_CN.properties属性文件
3.6.2 在JSP文件中显示国际化的静态文本
3.6.3 在JSP文件中显示国际化的静态文本时传递参数
3.6.4 在Action中使用国际化功能
3.7 用实体类封装URL中的参数——登录功能的URL封装
3.8 Struts 2中的转发操作
3.8.1 Servlet中的转发操作
3.8.2 Struts 2中的转发操作
3.9 由Action重定向到Action——无参数
3.9.1 何种情况下使用重定向
3.9.2 新建起始控制层Login.java
3.9.3 新建目的控制层List.java
3.9.4 在struts.xml文件中配置重定向的重点
3.9.5 新建显示列表的JSP文件
3.10 由Action重定向到Action——有参数
3.10.1 何种情况下需要重定向传递参数
3.10.2 新建起始控制层Login.java文件
3.10.3 更改struts.xml配置文件
3.10.4 新建目的控制层List.java文件
3.10.5 用JSTL和EL在JSP文件中输出数据
3.11 让Struts 2支持多模块多配置文件开发
3.11.1 新建4个模块的控制层
3.11.2 新建3个模块的配置文件
3.11.3 使用include标记导入多个配置文件
3.11.4 创建各模块使用的JSP文件
3.11.5 运行各模块的结果
3.12 在Action中有多个业务方法时的处理
3.12.1 第一种实现方式——通过url叹号“!”参数
3.12.2 第二种实现方式——在action标记中加入method属性
3.13 自定义全局result
3.13.1 新建全局result实例和控制层代码
3.13.2 声明全局result对象
3.13.3 部署项目并运行
3.14 在Action中使用Servlet的API(紧耦版)
3.14.1 将数据放到不同的作用域中
3.14.2 从不同作用域中取值
3.15 在Action中使用Servlet的API(松耦版)
3.15.1 新建控制层
3.15.2 新建JSP视图
3.16 Session与Cookie在request与response对象中的运行机制
3.17 在MyEclipse中使用Web Service
第4章 Struts 2文件的上传与下载
4.1 使用Struts 2进行单文件上传
4.1.1 Struts 2上传功能的底层依赖
4.1.2 新建上传文件的JSP文件
4.1.3 新建上传文件的控制层Register.java文件
4.1.4 Action中File实例的命名规则
4.1.5 设置上传文件的大小
4.1.6 设计struts.xml配置文件
4.1.7 成功上传单个文件
4.2 使用Struts 2进行多文件上传
4.2.1 新建上传多个文件的JSP
4.2.2 设计上传的控制层代码
4.2.3 成功上传多个文件
4.3 使用属性驱动形式的文件上传
4.3.1 创建上传多个文件的JSP
4.3.2 设计上传文件的控制层
4.3.3 新建上传文件的封装类
4.3.4 将JSP文件中s:file标签的name属性进行更改
4.3.5 以属性驱动方式成功上传多个文件
4.4 用Struts 2实现下载文件的功能(支持中文文件名)
4.4.1 新建下载文件的JSP文件
4.4.2 新建下载文件的控制层文件
4.4.3 更改struts.xml配置文件
4.4.4 成功下载中文文件名的文件
第5章 JSON、Ajax、jQuery与Struts 2联合使用
5.1 JSON介绍
5.2 用JSON创建对象
5.2.1 用JSON创建对象的语法格式
5.2.2 在JSP中用JSON创建对象
5.2.3 运行结果
5.3 用JSON创建字符串的限制
5.3.1 需要转义的特殊字符
5.3.2 在JSP中对JSON特殊字符进行转义
5.3.3 运行结果
5.4 用JSON创建数字类型的语法格式
5.4.1 在JSP中用JSON创建数字类型
5.4.2 运行结果
5.5 用JSON创建数组对象的语法格式
5.5.1 在JSP中用JSON创建数组对象
5.5.2 运行结果
5.6 用JSON创建嵌套的对象类型
5.7 将对象转换成JSON字符串
5.7.1 什么情况下需要将对象转换成JSON字符串
5.7.2 在JSP中用stringify方法将对象转换成JSON字符串
5.8 将对象转换成JSON字符串提交到Action并解析(以post方式提交)
5.8.1 在JSP中创建JSON和Ajax对象
5.8.2 用Action控制层接收通过Ajax传递过来的JSON字符串
5.8.3 运行结果
5.8.4 在控制台输出的数据
5.9 将对象转换成JSON字符串提交到Action并解析(以get方式提交)
5.9.1 新建创建JSON字符串的JSP文件
5.9.2 新建接收JSON字符串的Action控制层
5.9.3 运行结果
5.9.4 在控制台输出的数据
5.10 将数组转换成JSON字符串提交到Action并解析(以get和post方式提交)
5.10.1 在服务器端用get方法解析JSON字符串
5.10.2 在服务器端用post方法解析JSON字符串
5.10.3 运行结果
5.10.4 在控制台输出的数据
5.11 使用Ajax调用Action并生成JSON再传递到客户端(以get和post方式提交)
5.11.1 新建具有Ajax提交功能的JSP
5.11.2 在Action控制层创建List中存放的String
5.11.3 在Action控制层创建List中存放的Bean
5.11.4 在Action控制层创建Map中存放的String
5.11.5 在Action控制层创建Map中存放的Bean
5.11.6 单击不同的button按钮调用不同的Action
5.12 jQuery、JSON和Struts 2
5.12.1 jQuery框架的Ajax功能介绍
5.12.2 用jQuery的Ajax功能调用远程action(无返回结果)
5.12.3 jQuery的Ajax方法的结构
5.12.4 用jQuery的Ajax功能调用远程action(有返回结果)
5.12.5 用jQuery的Ajax功能调用远程action并且传递JSON格式参数(有返回值)
5.12.6 用jQuery解析从action返回List中存放String的JSON字符串
第6章 Spring 4 MVC实用开发
6.1 Spring 4 MVC介绍
6.1.1 Spring 4 MVC核心控制器
6.1.2 基于注解的Spring 4 MVC开发
6.2 Spring 4 MVC的第一个登录测试
6.2.1 添加Spring 4 MVC的依赖jar文件
6.2.2 在web.xml中配置核心控制器
6.2.3 新建springMVC-servlet.xml配置文件
6.2.4 新建相关的JSP文件
6.2.5 新建控制层Java类文件
6.2.6 部署项目并运行
6.2.7 第一个示例的总结
6.2.8 Spring更加方便的参数获取方法
6.3 执行Controller控制层与限制提交的method方式
6.3.1 新建控制层ListUsername.java文件
6.3.2 新建登录及显示数据的JSP文件
6.3.3 部署项目并测试
6.4 解决多人开发路径可能重复的问题
6.4.1 错误的情况
6.4.2 解决办法
6.5 在控制层中使用指定方式处理get或post提交方式
6.5.1 控制层代码
6.5.2 新建JSP文件并运行
6.6 控制层重定向到控制层——无参数传递
6.6.1 新建控制层Java文件
6.6.2 创建JSP文件并运行项目
6.7 控制层重定向到控制层——有参数传递
6.7.1 创建两个控制层Java文件
6.7.2 部署项目并运行
6.8 匹配URL路径执行指定Controller
6.8.1 新建控制层文件
6.8.2 部署项目并运行
6.9 在服务器端获取JSON字符串并解析——方式1
6.9.1 在web.xml中配置字符编码过滤器
6.9.2 新建JSP文件
6.9.3 新建控制层Java文件
6.9.4 添加依赖的jar包文件
6.9.5 运行项目
6.10 在服务器端获取JSON字符串并解析——方式2
6.10.1 新建封装JSON对象属性的实体类
6.10.2 新建控制层
6.10.3 在配置文件中添加注解
6.10.4 新建JSP文件
6.10.5 添加jacksonJSON解析处理类库并运行
6.10.6 解析不同格式的JSON字符串示例
6.11 将URL中的参数转成实体的示例
6.11.1 新建控制层文件
6.11.2 新建登录用途的JSP文件
6.11.3 在web.xml中注册编码过滤器
6.11.4 运行结果
6.12 在控制层传回JSON对象示例
6.12.1 新建控制层文件
6.12.2 新建JSP文件
6.12.3 部署项目并运行
6.13 在控制层传回JSON字符串示例
6.13.1 新建控制层文件
6.13.2 新建JSP文件及在配置文件中注册utf——8编码处理
6.13.3 运行项目
6.14 在控制层获取HttpServletRequest和HttpServletResponse对象
6.14.1 新建控制层
6.14.2 JSP文件中的EL代码及运行结果
6.14.3 直接使用HttpServletResopnse对象输出响应字符
6.15 通过URL参数访问指定的业务方法
6.15.1 新建控制层文件List.java
6.15.2 运行结果
6.16 Spring 4 MVC单文件上传——写法1
6.16.1 新建控制层
6.16.2 在配置文件springMVC-servlet.xml中声明上传请求
6.16.3 创建前台JPS文件
6.16.4 运行结果
6.17 Spring 4 MVC单文件上传——写法2
6.18 Spring 4 MVC多文件上传
6.18.1 新建控制层及JSP文件
6.18.2 运行结果
6.19 Spring 4 MVC支持下载文件名为中文的文件
6.20 控制层返回List对象及实体的结果
6.20.1 新建控制层文件
6.20.2 新建JSP文件
6.20.3 更改springMVC-servlet.xml配置文件
6.20.4 运行结果
6.21 控制层ModelMap对象
6.21.1 新建控制层
6.21.2 JSP文件代码
6.21.3 运行结果
6.22 对Spring 4 MVC提交的表单进行手动数据验证
6.22.1 创建控制层文件
6.22.2 创建JSP文件
6.22.3 运行结果
第7章 Spring 4 MVC必备知识
7.1 web.xml中的不同配置方法
7.1.1 将配置文件存放于src路径中
7.1.2 指定存放路径
7.1.3 指定多个配置文件
7.2 路径中添加通配符的功能
7.3 Service业务逻辑层在Controller中进行注入
7.3.1 新建业务逻辑层
7.3.2 创建控制层文件
7.3.3 设计springMVC-servlet.xml配置文件
7.3.4 运行结果
7.3.5 多个实现类的情况
7.4 对象ModelAndView的使用
7.4.1 创建控制层及JSP文件
7.4.2 程序运行结果
7.5 控制层返回void数据的情况
7.5.1 创建控制层及index.jsp文件
7.5.2 更改配置文件
7.5.3 部署项目并运行程序
7.6 使用Spring 4 MVC中的注解来操作HttpSession中的对象
7.6.1 创建控制层文件PutGetSession.java
7.6.2 创建显示不同作用域中值的JSP文件
7.6.3 部署项目并运行程序
第8章 Spring 4 MVC+MyBatis 3+Spring 4整合
8.1 准备Spring 4的jar包文件
8.2 准备MyBatis的jar包文件
8.3 准备MyBatis 3与Spring 4整合的jar文件
8.4 创建Web项目
8.5 配置web.xml文件
8.6 配置springMVC-servlet.xml文件
8.7 配置MyBatis配置文件
8.8 创建MyBatis与映射有关文件
8.9 配置applicationContext.xml文件
8.10 创建DAO对象
8.11 创建Service对象
8.12 创建Controller对象
8.13 测试整合效果
8.14 回滚的测试
第9章 用Hibernate 4操作数据库
9.1 Hibernate概述与优势
9.2 持久层与持久化与ORM
9.3 用MyEclipse开发第一个Hibernate示例
9.3.1 用MyEclipse Database Explorer工具连接Oracle 11g数据库
9.3.2 创建一个支持Hibernate4环境的Web项目
9.3.3 对数据表进行Hibernate逆向工程
9.3.4 逆向工程后的项目orm结构
9.3.5 使用Hibernate进行持久化
第10章 Hibernate 4核心技能
10.1 Configuration介绍
10.2 SessionFactory介绍
10.3 Session介绍
10.4 使用Session实现CURD操作
10.4.1 Session操作目标表USERINFO
10.4.2 逆向工程后的项目结构
10.4.3 新建添加记录的Servlet
10.4.4 新建查询记录的Servlet
10.4.5 新建更改记录的Servlet
10.4.6 新建删除记录的Servlet
10.5 在Hibernate中使用JNDI技术
10.5.1 备份Tomcat/conf路径下的配置文件
10.5.2 更改配置文件context.xml
10.5.3 更改配置文件web.xml
10.5.4 添加Hibernate框架配置的关键步骤
10.5.5 逆向工程
10.5.6 支持JNDI的hibernate.cfg.xml配置文件内容
10.5.7 创建查询数据的Servlet
10.5.8 部署项目并验证结果
10.6 缓存与实体状态
10.6.1 Hibernate的OID与缓存
10.6.2 Hibernate中的对象状态:瞬时状态、持久化状态和游离状态
10.7 双向一对多在MyEclipse中的实现
10.7.1 创建主表MAIN
10.7.2 创建子表SUB
10.7.3 添加主外键约束对象
10.7.4 设置主外键关系
10.7.5 逆向主从表外键关系
10.7.6 集合与多对一
10.7.7 新建主表main数据
10.7.8 新建子表SUB数据
10.7.9 删除子表SUB数据
10.7.10 删除主表MAIN数据
10.8 Hibernate备忘知识点
10.9 对主从表结构中的HashSet进行排序
10.10 Hibernate中延迟加载的调试实验
10.10.1 主从表表结构的设计
10.10.2 对省表和市表内容的填充
10.10.3 更改映射文件
10.10.4 新建测试用的Servlet对象
10.10.5 更改映射文件Sheng.hbm.xml
10.11 Hibernate中对Oracle中CLOB字段类型的读处理
10.12 Hibernate中的inverse与cascade的测试
第11章 在Hibernate 4中使用HQL语言进行检索
11.1 Hibernate的检索方式
11.2 HQL表别名
11.3 HQL对结果进行排序与list()和iterator()方法的区别
11.4 HQL索引参数绑定
11.5 HQL命名参数绑定与安全性
11.6 HQL方法链的使用
11.7 HQL中的uniqueResult()方法的使用
11.8 HQL中的Where子句与查询条件
11.9 HQL中的聚集函数:distinct、count、min、max、sum和avg
11.10 HQL中的分组查询
第12章 Spring 4的AOP和IOC
12.1 Spring介绍
12.2 Spring架构
12.3 IOC的介绍
12.4 AOP的介绍
12.5 IOC容器
12.6 使用传统方式保存数据功能的测试
12.7 使用Spring的IOC方式保存数据功能的测试
12.8 BeanFactory与ApplicationContext
12.9 Spring的IOC容器的注入类型
12.9.1 通过IOC容器注入基本数据类型
12.9.2 通过IOC容器注入引用数据类型
12.9.3 通过IOC容器注入null类型
12.9.4 通过IOC容器注入Properties类型
12.9.5 通过IOC容器对构造方法进行注入
12.10 Spring中Bean在Singleton和Prototype中的作用域
12.11 Spring中注入外部属性文件的属性值
12.12 Spring中多个applicationContext.xml配置文件的使用
12.13 AOP的概念与介绍
12.13.1 静态代理的实现
12.13.2 动态代理的实现
12.14 实现MethodBeforeAdvice接口——方法执行前增强
12.15 实现AfterReturningAdvice接口——方法执行后增强
12.16 实现MethodInterceptor接口——方法执行前后环绕增强
第13章 Struts 2+Hibernate 4+ Spring 4整合
13.1 目的
13.2 新建Oracle数据表userinfo
13.2.1 新建数据表userinfo
13.2.2 创建序列对象
13.3 新建整合用的Web项目
13.4 添加Struts 2框架支持环境
13.4.1 添加Struts 2框架
13.4.2 在web.xml文件中注册Struts 2的过滤器
13.4.3 在项目的src目录下创建struts.xml配置文件
13.4.4 添加Struts 2框架后的项目文件结构图
13.5 添加Hibernate Database Explorer数据库连接
13.6 添加Hibernate 4框架支持
13.7 添加Spring 4框架支持文件
13.8 创建的applicationContext.xml文件
13.9 在web.xml文件中添加Spring的utf-8编码过滤器和Spring监听器
13.10 添加Spring 4框架后的Web项目结构
13.11 对Oracle 11g数据表userinfo进行Hibernate逆向工程
13.12 创建Hibernate 4的DAO类
13.13 创建All_DAO对象
13.14 创建UserinfoService.java服务对象
13.15 创建AllService服务对象
13.16 继续更改applicationContext.xml和hibernate.cfg.xml
13.17 新建自定义action的父类BaseAction
13.18 新建操作userinfo表中数据的Action
13.19 在applicationContext.xml中配置/base和/test
13.20 部署到Tomcat容器
第14章 有状态/无状态会话Bean和消息驱动Bean
14.1 EJB3概述
14.1.1 Java EE体系结构
14.1.2 容器的概念
14.2 有状态会话Bean和无状态会话Bean
14.2.1 会话Bean的作用
14.2.2 会话Bean的种类
14.2.3 在MyEclipse中无状态会话Bean的创建
14.2.4 用Web方式调用本地SayHello接口
14.2.5 本地和远程无状态会话Bean的区别
14.2.6 EJB组件接口无注解时的默认情况
14.2.7 调用远程类型的无状态会话Bean
14.2.8 无状态会话Bean的回调函数和生命周期
14.2.9 无状态会话Bean实例变量值保留的问题与无状态会话Bean实例池
14.2.10 有状态会话Bean
14.2.11 有状态会话Bean的创建与状态特性
14.2.12 将远程无状态会话Bean共享的服务重命名
14.2.13 使用注解声明会话Bean的第2种写法
14.2.14 有状态会话Bean的钝化与激活
14.2.15 有状态会话Bean的回调函数和生命周期
14.2.16 有状态会话Bean的@Remove回调函数的使用
14.2.17 注入其他本地类型的EJB对象
14.3 消息驱动Java Bean(MDB)和在WebLogic中创建消息目的
14.3.1 创建持久性存储对象
14.3.2 创建JMS服务器
14.3.3 创建JMS模块
14.3.4 在JMS模块中创建子部署
14.3.5 在JMS模块中创建资源
14.3.6 点对点式消息驱动Java Bean
14.3.7 发布-订阅式消息驱动Java Bean
14.4 Web Service与在EJB3中创建基于Web Service的业务服务
14.5 计时器与作业调度
第15章 实体Bean
15.1 实体Bean概述
15.2 持久层、持久化与ORM
15.2.1 在WebLogic的JNDI树中创建节点与对象
15.2.2 在WebLogic的JNDI树中创建子节点
15.2.3 在WebLogic的JNDI树中查找节点
15.2.4 在WebLogic的JNDI树中删除节点
15.3 从保存记录开始
15.3.1 安装Oracle11g数据库
15.3.2 使用Toad管理Oracle数据库
15.3.3 使用MyEclipse Database Explorer工具连接Oracle11G数据库
15.3.4 创建EJB3项目
15.3.5 更改实体的主键与序列映射
15.3.6 创建调用外观的Serlvet
15.3.7 更改persistence.xml配置文件
15.3.8 KODO的简要介绍
15.3.9 部署到WebLogic中并且运行
15.3.10 使用JPA技术向Oracle 11g数据库成功添加记录
15.3.11 改成JNDI连接池的示例
15.4 解析实体类所使用的注解
15.5 在SQL 2005数据库中插入记录
15.6 在MySQL数据库中插入记录
15.7 使用表在Oracle数据库中生成主键
15.8 使用EJB3在Oracle中插入Date时间类型
15.9 处理CLOB数据类型
15.10 在WebLogic中实现JDBC+JNDI全局性分布式事务实验
15.10.1 JTA和2PC的概述
15.10.2 进入WebLogic控制台
15.10.3 配置数据源名称
15.10.4 配置数据源属性
15.10.5 设置数据源连接数据库的详细信息
15.10.6 测试是否连接到数据库
15.10.7 将数据源归属到AdminServer服务器
15.10.8 新建名为b_jndi的数据源
15.10.9 数据源列表
15.10.10 SQL在正确的情况下实现多数据源提交事务
15.10.11 SQL在错误的情况下实现多数据源回滚事务
第16章 JPA核心技能
16.1 EntityManager类的概述
16.1.1 实体类的状态
16.1.2 EJB3中的事务
16.2 EntityManager类的方法使用
16.2.1 persist(Object)方法
16.2.2 merge(T)方法和find(Class, Object)方法
16.2.3 remove(Object)方法
16.2.4 getReference(Class, Object)方法
16.2.5 createNativeQuery()方法
16.2.6 close()和isOpen()方法
16.2.7 refresh(Object)方法
16.2.8 clear()和contains(Object)方法
16.2.9 createQuery(String)方法
16.2.10 createNamedQuery(String)方法
16.3 EntityManagerFactory对象介绍
16.4 用Java SE客户端调用远程EJB3组件(使用逆向DAO)
16.5 在Java SE客户端使用EntityManagerFactory实现持久化(手动配置)
16.6 在Java SE客户端使用EntityManagerFactory实现持久化(自动配置)
16.7 在会话Bean中生成EntityManagerFactory
16.8 双向一对多的CURD实战
16.8.1 新建数据表Sheng
16.8.2 新建数据表Shi
16.8.3 配置主从键约束关系
16.8.4 创建企业项目
16.8.5 逆向EJB实体
16.8.6 添加主键生成策略的注解
16.8.7 配置persistence.xml文件
16.8.8 persistence.xml配置文件再次提醒
16.8.9 生成的Sheng.java和Shi.java代码引用
16.8.10 创建Sheng的Servlet
16.8.11 创建Shi的Servlet
16.8.12 更新Sheng的Servlet
16.8.13 更新Shi的Servlet
16.8.14 删除没有市的省
16.8.15 删除有市的省
第17章 JPQL必备技能
17.1 JPQL介绍
17.2 命名参数和索引式参数及实体参数式查询
17.2.1 参数索引式查询
17.2.2 命名式参数查询
17.2.3 为实现主从关联示例创建sheng表和shi表
17.2.4 sheng表和shi表两种关联查询的方式
17.3 JPQL支持的运算符
17.3.1 +、-、*、/、=、>=、>、<、<=、<>、between、like、in运算符的使用
17.3.2 not运算符的使用
17.3.3 is null运算符的使用
17.3.4 is empty运算符的使用
17.4 order by的使用
17.5 查询指定字段的示例
17.6 聚合函数avg、count、max、min、sum的使用
17.7 group by和having的使用
17.8 左外连接的使用
17.9 通过distinct去除重复记录
17.10 JPQL的字符串操作函数
17.11 通过JPQL取得当前的日期和日期时间
17.12 JPQL语言对日期的判断
17.13 JPQL的数学函数
17.14 JPQL中的分页功能
第18章 FreeMarker模板引擎的使用
18.1 输出8种简单数据类型
18.2 简单数据类型的计算
18.3 输出复杂数据类型——数组
18.4 输出集合对象——List
18.5 输出集合对象——Set
18.6 输出集合对象——Map
18.7 输出嵌套类型——List中有Map
18.8 输出嵌套类型——Map中有List
18.9 判断#if和#else标签的使用
18.10 输出实体类的属性及boolean类型注意事项
18.11 FreeMarker中的注释
18.12 FreeMarker中的导入
18.13 FreeMarker中对不存在的变量或null值的处理
Spring Boot实战 丁雪丰 (译者)
Spring改变了企业级Java应用开发方式,让Java开发更简单、高效;Sping Boot作为Spring开发的黄金助手,则在这个基础上,让开发者的生活更上一个台阶!n
n
本书是Spring Boot的**指南,以自动配置、起步依赖、命令行界面和Actuator这四个核心特性为基础,深入介绍Spring Boot的用法,让所有Java开发人员不费吹灰之力就构建出满足生产需求的服务,真正享受技术达人的乐趣!
内容提要
本书以Spring应用程序开发为中心,全面讲解如何运用Spring Boot提高效率,使应用程序的开发和管理更加轻松有趣。作者行文亲切流畅,以大量示例讲解了Spring Boot在各类情境中的应用,内容涵盖起步依赖、Spring Boot CLI、Groovy、Grails、Actuator。对于Spring Boot开发应用中较为繁琐的内容,附录奉上整理完毕的表格,一目了然,方便读者查阅。
目录
第1章 入门1
1.1Spring风云再起1
1.1.1重新认识Spring2
1.1.2Spring Boot精要3
1.1.3Spring Boot不是什么6
1.2Spring Boot入门6
1.2.1安装Spring Boot CLI7
1.2.2使用Spring Initializr初始化Spring Boot项目10
1.3小结18
第2章 开发个应用程序19
2.1运用Spring Boot19
2.1.1查看初始化的Spring Boot新项目21
2.1.2Spring Boot项目构建过程解析24
2.2使用起步依赖27
2.2.1指定基于功能的依赖28
2.2.2覆盖起步依赖引入的传递依赖29
2.3使用自动配置30
2.3.1专注于应用程序功能31
2.3.2运行应用程序36
2.3.3刚刚发生了什么38
2.4小结41
第3章 自定义配置42
3.1覆盖Spring Boot自动配置42
3.1.1保护应用程序43
3.1.2创建自定义的安全配置44
3.1.3掀开自动配置的神秘面纱48
3.2通过属性文件外置配置49
3.2.1自动配置微调50
3.2.2应用程序Bean的配置外置55
3.2.3使用Profile进行配置59
3.3定制应用程序错误页面62
3.4小结64
JavaEE开发的颠覆者 Spring Boot实战 完整版
内容简介
在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。
本书从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。
当你学完本书后,你将能使用Spring Boot 解决Java EE 开发中所遇到的绝大多数问题。
目录
第一部分 点睛Spring 4.x
第1 章 Spring 基础 ..........................................2
1.1 Spring 概述 ............................................. 2
1.2 Spring 项目快速搭建 .................................. 5
1.3 Spring 基础配置 .....................................17
第2 章 Spring 常用配置 .... ............................ 30
2.1 Bean 的Scope .... ................................... 30
2.2 Spring EL 和资源调用 .... ...................... 33
2.3 Bean 的初始化和销毁 .... ...................... 37
2.4 Profile .... .... .......... 40
2.5 事件(Application Event) .... .............. 44
第3 章 Spring 高级话题 .... ............................ 48
3.1 Spring Aware .... ..................................... 48
3.2 多线程 .... .... ......... 51
3.3 计划任务 .... .... ..... 54
3.4 条件注解@Conditional .... .................... 56
3.5 组合注解与元注解 .... ........................... 60
3.6 @Enable*注解的工作原理 .... .............. 63
VIII ∣ Java EE 开发的颠覆者:Spring Boot 实战
3.7 测试 .... .... ............. 66
第二部分 点睛Spring MVC 4.x
第4 章 Spring MVC 基础 .... .......................... 72
第三部分 实战Spring Boot
第5 章 Spring Boot 基础 .... ......................... 122
第6 章 Spring Boot 核心 .... ......................... 138
X ∣ Java EE 开发的颠覆者:Spring Boot 实战
第7 章 Spring Boot 的Web 开发 .... ............ 170
7.1 Spring Boot 的Web 开发支持 .... ....... 170
7.2 Thymeleaf 模板引擎 .... ....................... 171
7.2.4 实战 .... ...................................... 177
7.3 Web 相关配置 .... ................................. 182
7.4 Tomcat 配置 .... .................................... 187
7.5 Favicon 配置 .... ................................... 196
7.6 WebSocket .... ....................................... 197
7.7 基于Bootstrap 和AngularJS 的现代Web 应用 .................. 212
第8 章 Spring Boot 的数据访问 .... .............. 233
8.1 引入Docker .... .................................... 237
8.2 Spring Data JPA .... .............................. 248
8.3 Spring Data REST .... ........................... 284
8.4 声名式事务 .... ..................................... 297
8.5 数据缓存Cache .... .............................. 309
8.6 非关系型数据库NoSQL .... ................ 320
8.6.1 MongoDB .... ............................. 320
8.6.2 Redis .... ..................................... 329
第9 章 Spring Boot 企业级开发 .... .............. 340
9.1 安全控制Spring Security .... ............... 340
9.2 批处理Spring Batch .... ....................... 362
9.3 异步消息 .... ......................................... 385
9.4 系统集成Spring Integration .... ........... 395
第10 章 Spring Boot 开发部署与测试 .... ..... 407
第11 章 应用监控 .... ................................... 431
第12 章 分布式系统开发 .... ........................ 456
12.1 微服务、原生云应用 .... ................... 456
12.2 Spring Cloud 快速入门 .... ................. 457
12.3 实战 .... .... ......... 458
12.4 基于Docker 部署 ...................................478
附录A
Spring +Cloud+Dalston+中文文档+参考手册+中文版
云原生应用程序
Spring Cloud上下文:应用程序上下文服务
引导应用程序上下文
应用程序上下文层次结构
改变引导位置Properties
覆盖远程Properties的值
自定义引导配置
自定义引导属性源
环境变化
刷新范围
加密和解密
端点
Spring Cloud Commons:普通抽象
@EnableDiscoveryClient
ServiceRegistry
Spring RestTemplate作为负载平衡器客户端
多个RestTemplate对象
忽略网络接口
Spring Cloud ConÒg
快速开始
客户端使用
Spring Cloud ConÒg服务器
环境库
健康指标
安全
加密和解密
密钥管理
创建用于测试的密钥库
使用多个键和键旋转
服务加密Properties
服务替代格式
服务纯文本
嵌入配置服务器
推送通知和Spring Cloud Bus
Spring Cloud ConÒg客户端
配置第一引导
发现第一个引导
配置客户端快速失败
配置客户端重试
查找远程配置资源
安全
Vault
Spring Cloud NetÓix
服务发现:Eureka客户端
如何包含Eureka客户端
注册Eureka
使用Eureka服务器进行身份验证
状态页和健康指标
注册安全应用程序
Eureka的健康检查
Eureka实例和客户端的元数据
使用EurekaClient
本机NetÓix EurekaClient的替代方案
为什么注册服务这么慢?
Java8 新特性
Java8 新特性Java8 新特性Java8 新特性Java8 新特性Java8 新特性Java8 新特性
sts插件,eclipse集成sts插件
sts插件,eclipse集成sts插件,sts插件,eclipse集成sts插件.
官方清理office残余文件
官方清理office残余文件,下载后直接点击运行,下一步,自动清理office残余文件。
jdk 1.9中文aip,java9中文api
java9中文aip,java开发人员的福音,英文不好的小伙伴福音。
安装MySQL数据库.docx
自己写的文档,一步一步来,绝对没有错。CentOS的默认数据库已经不再是MySQL了,而是MariaDB。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
mysql 8.0官方文档
mysql 8.0官方文档.pdf
Oracle Database 11g DBA手册.pdf
Bob Bryla 是Oracle9i和10g的认证专家,在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的经验,是威斯康星州Dodgeville的Lands’ End 公司的首席Internet数据库设计师和Oracle DBA。
第Ⅰ部分 数据库体系结构
第1章 OracIe体系结构概述
1.1 数据库和实例概述
1.1.1 数据库
1.1.2 实例
1.2 Oracle逻辑存储结构
1.2.1 表空间
1.2.2 块
1.2.3 盘区
1.2.4 段
1.3 Oracle逻辑数据库结构
1.3.1 表
1.3.2 约束
1.3.3 索引
1.3.4 视图
1.3.5 用户和模式
1.3.6 配置文件
1.3.7 序列
1.3.8 同义词
1.3.9 PL/SQL
1.3.10 外部文件访问
1.3.11 数据库链接和远程数据库
1.4 Oracle物理存储结构
1.4.1 数据文件
1.4.2 重做日志文件
1.4.3 控制文件
1.4.4 归档的日志文件
1.4.5 初始参数文件
1.4.6 警报和跟踪日志文件
1.4.7 备份文件
1.4.8 Oracle管理文件
1.4.9 密码文件
1.5 多元复用数据库文件
1.5.1 自动存储管理
1.5.2 手动的多元复用
1.6 Oracle内存结构
1.6.1 系统全局区域
1.6.2 程序全局区域
1.6.3 软件代码区域
1.6.4 后台进程
1.7 备份/恢复概述
1.7.1 导出/导入
1.7.2 脱机备份
1.7.3 联机备份
1.7.4 RMAN
1.8 安全功能
1.8.1 权限和角色
1.8.2 审核
1.8.3 细粒度的审核
1.8.4 虚拟私有数据库
1.8.5 标号安全性
1.9 实时应用集群
1.10 Oracle流
1.11 Oracle企业管理器
1.12 Oracle初始参数
1.12.1 基本初始参数
1.12.2 高级初始参数
第2章 Oracle Database 11g的升级
2.1 选择升级方法
2.2 升级前的准备工作
2.3 使用数据库升级助手
2.4 执行手动直接升级
2.5 使用Export和Import
2.5.1 使用的Export和Import版本
2.5.2 执行升级
2.6 使用数据复制方法
2.7 升级后的工作
第3章 计划和管理表空间
3.1 表空间的体系结构
3.1.1 表空间类型
3.1.2 优化灵活体系结构
……
第Ⅱ部分 数据库管理
第4章 物理数据库布局和存储管理
第5章 开发和实现应用程序
第6章 监控空间利用率
第7章 使用撤销表空间管理事务
第8章 数据库调整
第9章 数据库安全性和审计
第Ⅲ部分 高可用性
第10章 实时应用集群
第11章 备份和恢复选项
第12章 使用恢复管理器(RMAN)
第13章 Oracle Data Guard
第14章 其他各种高可用性特性
第Ⅳ部分 网络化的Oracle
第15章 Oracle网络(Oracle Net)
第16章 管理大型数据库
第17章 管理分布式数据库
附录A 安装和配置
thymeleaf_3.0.5_中文参考手册
Thymeleaf一个优秀的模板引擎,一起学习,一起讨论。
Thymeleaf中文参考手册3.0.5版,本书以Thymeleaf官方文档为基础,科学系统地、循序渐进地将Thymeleaf的使用方法、技术细节、扩展思路铺展开来,带您走进Thymeleaf的欢乐世界
构建高可用Linux服务器(第3版)
读书简介目录累计评论(1条)
读书简介目录累计评论(1条)
本书是Linux运维领域公认的经典畅销书,是51CTO、IT168等知名网站和多位资深运维专家共同推荐的运维工程师必备的工具书! 酒哥在Linux运维领域潜心实践近10年,一直在运维一线,技术和思维都紧跟时代的发展,非常清楚运维工程师们需要什么,应该学习什么。本书不仅是他近10年工作经验的结晶,同时也是他的数万名读者和数十万粉丝共同需求和集体智慧的呈现。本书自第1版出版以来,就广受关注和好评,曾被《程序员》杂志和51CTO等权威IT媒体评为“10大*技术影响力的图书”和“最受读者喜爱的原创图书”。笔者根据运维技术的发展和读者的反馈意见,不断地对书的内容进行优化:更新了过时的技术;补充了*的内容;限于篇幅,部分内容作为电子版免费提供给读者在线阅读,从而使得这本书的内容更加完善。 本书是Linux运维领域公认的经典畅销书,是51CTO、IT168等知名网站和多位资深运维专家共同推荐的运维工程师必备的工具书!
酒哥在Linux运维领域潜心实践近10年,一直在运维一线,技术和思维都紧跟时代的发展,非常清楚运维工程师们需要什么,应该学习什么。本书不仅是他近10年工作经验的结晶,同时也是他的数万名读者和数十万粉丝共同需求和集体智慧的呈现。本书自第1版出版以来,就广受关注和好评,曾被《程序员》杂志和51CTO等权威IT媒体评为“10大*技术影响力的图书”和“最受读者喜爱的原创图书”。笔者根据运维技术的发展和读者的反馈意见,不断地对书的内容行优化:更新了过时的技术;补充了*的内容;限于篇幅,部分内容作为电子版免费提供给读者在线阅读,从而使得这本书的内容更加完善。
前言
第1章 Linux服务器的构建基础
1.1 使用PXE+DHCP+Apache+Kickstart无人值守安装CentOS 5.8 x86_64
1.2 全面了解Linux服务器
1.2.1 查看Linux服务器的CPU详细情况
1.2.2 查看Linux服务器的内存使用情况
1.2.3 查看Linux服务器的硬盘使用情况
1.2.4 查看Linux系统的平均负载
1.2.5 查看Linux系统的其他参数
1.3 Linux服务器的网络配置
1.3.1 配置Linux服务器的网络
1.3.2 查看Linux服务器的网络连接
1.3.3 查看Linux服务器的进程
1.3.4 在CentOS 5.8、FreeBSD 8.1及Windows下添加静态路由
1.4 Linux服务器的日志管理
1.4.1 系统日志syslog.conf的配置详解
1.4.2 Linux下的日志维护技巧
1.5 Linux服务器的优化
1.5.1 如何根据服务器应用来选购服务器
1.5.2 CentOS 5.8最小化安装后的优化
1.5.3 优化Linux下的内核TCP参数以提高系统性能
1.6 用开源工具Nagios监控Linux服务器
1.6.1 CentOS 5.8下的监控工具
1.6.2 Nagios应该监控的服务器基础选项
1.6.3 工作中的Nagios使用心得
1.7 小结
第2章 生产环境下服务器的故障诊断与排除
2.1 快速排障的重要性和必要性
2.2 安装系统时容易发生的错误描述与处理方法
2.2.1 忘记CentOS 5.8的root密码怎么办
2.2.2 正确重设root密码
2.2.3 安装FreeBSD 8.1时不要设置/boot分区
2.2.4 安装CentOS 5.8时忘了关闭iptalbes和SELinux
2.3 网络配置时容易发生的错误描述与处理方法
2.3.1 安装CentOS 5.8时忘了激活网卡
2.3.2 CentOS 5.8网卡文件备份的正确方法
2.3.3 在CentOS 5.8下如何正确配置网关
2.3.4 防火墙初始化的注意事项
2.4 系统维护时应该注意的地方
2.4.1 服务器硬件改动进入了Emergency模式
2.4.2 如何以普通用户的身份编辑无权限的文件
2.4.3 在Linux下配置最大文件打开数的方法
2.4.4 在crontab下正确防止脚本运行冲突
2.5 紧急处理线上服务器故障的办法
2.5.1 更改Administrator密码导致计划任务无法执行
2.5.2 CentOS 5.8的root密码被恶意篡改
2.5.3 bash文件损坏该如何正确处理
2.5.4 正确操作nohup让程序始终在后台运行
2.5.5 Nginx负载均衡器出现故障
2.6 检查机房应注意的位置和细节问题
2.7 系统维护时应注意的非技术因素
2.8 小结
第3章 生产环境下的Shell脚本
3.1 Vim的基础用法及进阶心得
3.2 Sed的基础用法及实用举例
3.2.1 Sed的基础语法格式
3.2.2 Sed的用法举例说明
3.3 基础正则表达式
3.4 Linux下强大的查找命令find
3.5 汇总Linux/UNIX下的bash快捷键
3.6 生产环境下的Shell脚本分类
3.6.1 生产环境下的Shell脚本备份类
3.6.2 生产环境下的开发类Shell脚本
3.6.3 生产环境下的统计类Shell脚本
3.6.4 生产环境下的监控类Shell脚本
3.6.5 生产环境下的自动化类Shell脚本
3.7 小结
第4章 构建高可用的Linux集群
4.1 负载均衡高可用的核心概念和常用软件
4.1.1 什么是负载均衡高可用
4.1.2 以F5 BIG-IP作为负载均衡器
4.1.3 以LVS作为负载均衡器
4.1.4 以Nginx作为负载均衡器
4.1.5 以HAProxy作为负载均衡器
4.1.6 高可用软件Keepalived
4.1.7 高可用软件Heartbeat
4.1.8 高可用块设备DRBD
4.2 负载均衡中的名词解释
4.2.1 什么是Session
4.2.2 什么是Session共享及实现的方法
4.2.3 什么是会话保持
4.3 负载均衡器的会话保持机制
4.3.1 F5 Big-IP的会话保持机制
4.3.2 LVS的会话保持机制
4.3.3 Nginx的会话保持机制
4.3.4 HAProxy的会话保持机制
4.4 Linux集群的项目案例分享
4.4.1 项目案例一:用Nginx+Keepalived实现在线票务系统
4.4.2 项目案例二:企业级Web负载均衡高可用之Nginx+Keepalived
4.4.3 项目案例三:用LVS+Keepalived构建高可用JSP集群
4.4.4 项目案例四:Nginx主主负载均衡架构
4.4.5 项目案例五:生产环境下的高可用NFS文件服务器
4.4.6 项目案例六:HAProxy双机高可用方案之HAProxy+Keepalived
4.4.7 项目案例七:百万级PV高可用网站架构设计
4.4.8 项目案例八:千万级PV高性能高并发网站架构设计
4.5 软件级负载均衡器的特点对比
4.6 项目实践中Linux集群的总结和思考
4.7 细分五层解说网站架构
4.8 网站架构应关注和研究的方向
4.9 部分项目施工图纸
4.10 小结
第5章 MySQL性能调优及高可用案例分享
5.1 MySQL数据库的优化
5.1.1 服务器物理硬件的优化
5.1.2 线上环境中MySQL应该采用的编译安装方法
5.1.3 MySQL配置文件的优化
5.1.4 MySQL上线后根据status状态进行适当优化
5.2 MySQL数据库的高可用架构方案
5.2.1 生产环境下的MySQL数据库主从Replication同步
5.2.2 生产环境下的DRBD+Heartbeat+MySQL双机高可用
5.2.3 利用MySQL Proxy 0.8.2实现数据的读写分离
5.3 利用sysbench对磁盘I/O作性能测试
5.4 生产环境下的MySQL数据库备份
5.5 小结
第6章 分布式自动化部署管理工具puppet
6.1 puppet的基本概念及工作流程
6.2 安装puppet前的准备工作
6.3 puppet的详细安装步骤
6.4 puppet简单的文件应用
6.5 puppet的进阶操作
6.5.1 如何同步puppet-agent端上的常用服务
6.5.2 如何在puppet-agent上自动安装常用的软件包
6.5.3 如何自动同步puppet服务器端的目录文件
6.5.4 如何根据不同的puppet-agent名推送不同的文件
6.5.5 如何在puppet-agent端自动执行Shell脚本
6.5.6 如何快速同步puppet服务器端的目录文件
6.5.7 ERB模板来自动配置Apache虚拟主机
6.6 puppet利用Nginx多端口实现负载均衡
6.7 puppet配置文件的管理
6.8 小结
第7章 开源VPN软件在企业中的应用
7.1 流行的VPN技术及其分类
7.2 如何选择自己需要的VPN
7.3 PPTPD VPN在企业中的部署应用
7.4 OpenVPN VPN在企业中的部署应用
7.4.1 案例一:在CentOS 5.8下路由模式配置OpenVPN服务器
7.4.2 案例二:在FreeBSD 8下网桥模式配置OpenVPN服务器
7.5 部署OpenVPN服务器的注意事项
7.5.1 OpenVPN如何注销用户
7.5.2 OpenVPN服务器的安全问题
7.6 OpenVPN VPN软件的应用范畴
7.7 小结
第8章 Linux防火墙及系统安全
8.1 基础网络知识
8.1.1 OSI网络参考模型
8.1.2 TCP/IP中三次握手及四次挥手的过程详解
8.1.3 其他基础网络知识
8.2 Linux防火墙的概念
8.3 Linux防火墙在企业中的作用
8.4 Linux防火墙的语法
8.5 iptables基础知识
8.5.1 iptables的状态
8.5.2 iptables的Conntrack记录
8.5.3 关于iptables模块的说明
8.5.4 iptables防火墙初始化的注意事项
8.5.5 如何保存运行中的iptables规则
8.6 如何流程化编写iptables脚本
8.7 学习iptables应该掌握的工具
8.7.1 命令行的抓包工具TCPDump
8.7.2 图形化抓包工具Wireshark
8.7.3 强大的命令行扫描工具Nmap
8.8 iptables的简单脚本学习
8.8.1 普通的Web主机防护脚本
8.8.2 如何让别人ping通自己而自己也能ping通别人
8.8.3 建立安全vsftpd服务器
8.9 线上生产服务器的iptables脚本
8.9.1 安全的主机iptables防火墙脚本
8.9.2 自动分析黑名单及白名单的iptables脚本
8.9.3 利用recent模块限制同一IP的连接数
8.9.4 利用DenyHosts工具和脚本来防止SSH暴力破解
8.10 TCP_wrappers应用级防火墙的介绍和应用
8.11 系统运维工作中的Linux防火墙总结
8.12 Linux系统自身的安全防护
8.12.1 SELinux简介
8.12.2 SELinux的相关设置
8.13 Linux系统安全相关的工具
8.13.1 Rootkit检测工具Chkrootkit
8.13.2 文件系统完整性检查工具Tripwire
8.13.3 防恶意扫描软件PortSentry
8.14 Linux服务器基础防护篇
8.15 如何防止入侵
8.16 小结
收获,不止Oracle
在《收获,不止Oracle》这本书里读者将会跟随作者一同对Oracle数据库的相关知识进行梳理,最终共同提炼出必须最先掌握的那部分知识,无论你是数据库开发、管理、优化、设计人员,还是从事Java、C的开发人员。接下来作者再将这部分知识中最实用的内容进一步提炼,浓缩出最精华的部分,分享给大家。这是二八现象的一次经典应用。
这部分知识就是Oracle的物理体系结构、逻辑体系结构、表、索引以及表连接五大部分。通过阅读这些章节,读者将会在最短时间内以一种有史以来最轻松的方式,完成对Oracle数据库的整体认识,不仅能在工作中解决常规问题,还能具备一定的设计和调优能力。相信通过这些章节的学习,会给读者的Oracle学习带来极大的收获。
然而,作者最希望看到的是:让读者的收获,不止Oracle。
为达到此目的,作者精心将全书分成了上下两篇,刚才所描述的具体知识点体现在全书的上篇,而在下篇中,读者将通过各种精彩故事、生动案例,体会到该如何学习和如何思考,在意识的天空抛开束缚,无拘无束、尽情飞翔。
在这里,读者也许会有疑问,前面说的有史以来最轻松的方式是一种什么样的方式呢?还请亲爱的读者自己去揭晓谜底吧。
上篇 开启惊喜之门--带意识地学Oracle
第1章 意识,少做事从学习开始
1.1 选择先学什么颇有学问
1.1.1 梁老师课堂爆笑开场
1.1.2 看似跑题的手机分类
1.1.3 学什么先了解做什么
1.2 善于规划分类才有效果
1.2.1 分类与角色密切相关
1.2.2 角色自我认识有讲究
1.3 明白学以致用方有意义
第2章 震惊,体验物理体系之旅
2.1 必须提及的系列知识
2.2 物理体系从老余开店慢慢铺开
2.2.1 老余的三个小故事
2.2.1.1 顾客的尺寸
2.2.1.2 有效的调整
2.2.1.3 记录的习惯
2.2.2 体系结构原理初探
2.2.2.1 从一普通查询SQL说起
2.2.2.2 老余故事终现用心良苦
2.2.2.3 一起体会Oracle代价
2.2.3 体系结构原理再探
2.2.3.1 从一普通更新语句说起
2.2.3.2 体系结构中提交的探讨
2.2.3.3 劳模的评选
2.2.3.4 回滚的研究
2.2.3.5 一致的查询
2.2.3.6 一致读的原理
2.2.3.7 实践的体会
2.3 体系学习让SQL性能提升千倍
2.3.1 一起探索体系学习的意义
2.3.1.1 同学们不知所学何用
2.3.1.2 实际上大有用武之地
2.3.2 单车到飞船的经典之旅
2.3.2.1 未优化前,单车速度
2.3.2.2 绑定变量,摩托速度
2.3.2.3 静态改写,汽车速度
2.3.2.4 批量提交,动车速度
2.3.2.5 集合写法,飞机速度
2.3.2.6 直接路径,火箭速度
2.3.2.7 并行设置,飞船速度
2.3.3 精彩的总结与课程展望
2.3.3.1 最大的收获应该是思想
2.3.3.2 老师的课程展望与规划
第3章 神奇,走进逻辑体系世界
3.1 长幼有序的逻辑体系
3.2 逻辑体系从老余养殖细细说起
3.2.1 农场之体系逻辑结构
3.2.2 农场之 BLOCK 漫谈
3.2.3 农场之区与段
3.2.4 农场之表空间的分类
3.2.4.1 表空间与系统农场
3.2.4.2 表空间与临时农场
3.2.4.3 表空间与回滚农场
3.2.5 逻辑结构之初次体会
3.2.5.1 逻辑结构之 BLOCK
3.2.5.2 逻辑结构之 TABLESPACE
3.2.5.3 逻辑结构之 USER
3.2.5.4 逻辑结构之 EXTENT
3.2.5.5 逻辑结构之 SEGMENT
3.2.6 逻辑结构之二次体会
3.2.6.1 BLOCK的大小与调整
3.2.6.2 PCTFREE参数与调整
3.2.6.3 PCTFREE与生效范围
3.2.6.4 EXTENT 尺寸与调整
3.2.7 逻辑结构之三次体会
3.2.7.1 已用与未用表空间情况
3.2.7.2 表空间大小与自动扩展
3.2.7.3 回滚表空间新建与切换
3.2.7.4 临时表空间新建与切换
3.2.7.5 临时表空间组及其妙用
3.3 课程结束你给程序安上了翅膀
3.3.1 过度扩展与性能
3.3.2 PCTFREE与性能
3.3.3 行迁移与优化
3.3.4 块的大小与应用
第4章 祝贺,表的设计成就英雄
4.1 表的设计之五朵金花
4.2 表的特性从老余一家展开描述
4.2.1 老余一家各施所长
4.2.2 普通堆表不足之处
4.2.2.1 表更新日志开销较大
4.2.2.2 delete无法释放空间
4.2.2.3 表记录太大检索较慢
4.2.2.4 索引回表读开销很大
4.2.2.5 有序插入却难有序读出
4.2.3 奇特的全局临时表
4.2.3.1 分析全局临时表的类型
4.2.3.2 观察各类DML的REDO量
4.2.3.3 全局临时表两大重要特性
4.2.4 神通广大的分区表
4.2.4.1 分区表类型及原理
4.2.4.2 分区表最实用的特性
4.2.4.3 分区索引类型简述
4.2.4.4 分区表之相关陷阱
4.2.5 有趣的索引组织表
4.2.6 簇表的介绍及应用
4.3 理解表设计的你成为项目组英雄
第5章 惊叹,索引天地妙不可言
5.1 看似简单无趣的索引知识
5.2 索引探秘从小余缉凶拉开帷幕
5.2.1 BTREE索引的精彩世界
5.2.1.1 BTREE索引结构图展现
5.2.1.2 到底是物理还是逻辑结构
5.2.1.3 索引结构三大重要特点
5.2.1.4 插播小余缉凶精彩故事
5.2.1.5 妙用三特征之高度较低
5.2.1.6 巧用三特征之存储列值
5.2.1.7 活用三特征之索引有序
5.2.1.8 不可不说的主外键设计
5.2.1.9 组合索引高效设计要领
5.2.1.10 变换角度看索引的危害
5.2.1.11 如何合理控制索引数量
5.2.2 位图索引的玫瑰花之刺
5.2.2.1 统计条数奋勇夺冠
5.2.2.2 即席查询一骑绝尘
5.2.2.3 遭遇更新苦不堪言
5.2.2.4 重复度低一败涂地
5.2.2.5 了解结构真相大白
5.2.3 小心函数索引步步陷阱
5.2.3.1 列运算让索引失去作用
5.2.3.2 函数索引是这样应用的
5.2.3.3 避免列运算的经典案例
5.3 索引让一系列最熟悉的SQL飞起来了
第6章 经典,表的连接学以致用
6.1 表的连接之江南三剑客
6.2 三大类型从小余跳舞一一道来
6.2.1 跳舞也能跳出连接类型
6.2.1.1 感觉怪异的嵌套循环
6.2.1.2 排序合并及哈希连接
6.2.2 各类连接访问次数差异
6.2.2.1 嵌套循环的表访问次数
6.2.2.2 哈希连接的表访问次数
6.2.2.3 排序合并的表访问次数
6.2.3 各类连接驱动顺序区别
6.2.3.1 嵌套循环的表驱动顺序
6.2.3.2 哈希连接的表驱动顺序
6.2.3.3 排序合并的表驱动顺序
6.2.4 各类连接排序情况分析
6.2.4.1 除嵌套循环都需排序
6.2.4.2 排序只需取部分字段
6.2.4.3 关于排序的经典案例
6.2.5 各类连接限制场景对比
6.2.5.1 哈希连接的限制
6.2.5.2 排序合并的限制
6.2.5.3 嵌套循环无限制
6.3 你动手装备的表连接威震三军
6.3.1 嵌套循环与索引
6.3.2 哈希连接与索引
6.3.3 排序合并与索引
下篇 飞翔意识天空--思想与案例的分享
第7章 搞定!不靠技术靠菜刀
7.1 SQL被一刀剁了
7.2 整个模块丢弃了
7.3 调用次数减少了
7.4 排序不再需要了
7.5 大表砍成小表了
7.6 排重操作消失了
7.7 插入阻碍小多了
7.8 迁移事情不做了
第8章 升级!靠技术改隐形刀
8.1 大表等同小表了
8.2 大表切成小表了
8.3 索引变身小表了
8.4 删除动作不做了
8.5 清表角度变换了
8.6 提交次数缩减了
8.7 迁移越来越快了
8.8 SQL语句精简了
第9章 提问,也是智慧的体现
9.1 描述要考虑周全
9.2 用词要尽量准确
9.3 说明要力求简洁
9.4 问过的避免再问
9.5 能搜能试不急问
第10章 买鱼,居然买出方法论
10.1 小余买鱼系列故事
10.1.1 诊断与改进
10.1.2 需求与设计
10.1.3 资源的利用
10.1.4 真正的需求
10.2 买鱼买出了方法论
10.2.1 一套流程
10.2.2 两大法宝
10.3 方法论的应用案例
10.3.1 从我们的这一套流程说起
10.3.1.1 诊断
10.3.1.2 改进优化(首次优化)
10.3.1.3 需求与设计(再次优化)
10.3.1.4 资源利用(花絮)
10.3.2 案例映衬了经典两大法宝
第11章 宝典,规范让你少做事
11.1 抓狂,为何事总忙不完
11.1.1 技术能力不足的新人们
11.1.2 不懂提问智慧的求助者
11.1.3 产生各种失误的粗心者
11.1.3.1 啊,小黄的DDL惹祸
11.1.3.2 惨,老师登错环境了
11.1.3.3 糟,小罗忘操作……
11.1.4 解决问题缓慢的技术员
11.1.4.1 优化效率低下的小高
11.1.4.2 为何老师能快速解决
11.1.5 陷入种种困境的开发者
11.1.5.1 超长SQL使小郑烦恼
11.1.5.2 缺少注释让小叶沮丧
11.1.6 总是考虑不全的设计者
11.1.6.1 未提前规划的王工
11.1.6.2 不了解特性的刘工
11.2 淡定,规范少做无谓事
11.2.1 学习规范--促成新人快速成长
11.2.2 求助规范--引导求助不再迷糊
11.2.3 操作规范--协助粗心者不犯错
11.2.4 流程规范--保障问题快速解决
11.2.4.1 动态整体
11.2.4.2 动态局部
11.2.4.3 静态整体
11.2.4.4 静态局部
11.2.5 开发规范--让开发者驾轻就熟
11.2.5.1 SQL编写规范
11.2.5.2 PL/SQL编写规范
11.2.6 设计规范--助设计者运筹帷幄
11.2.6.1 表规范
11.2.6.2 索引规范
11.2.6.3 环境参数规范
11.2.6.4 命名规范
深入分析Java Web技术内幕
本书围绕Java Web相关技术从三方面全面深入地进行阐述。首先介绍前端知识,主要介绍JavaWeb开发中涉及的一些基本知识,包括Web请求过程、HTTP协议、DNS技术和CDN技术。其次深入介绍Java技术,包括I/O技术、中文编码问题、Javac编译原理、class文件结构解析、ClassLoader工作机制及JVM的内存管理等。最后介绍Java服务端技术,主要包括Servlet、Session与Cookie、Tomcat与Jetty服务器、Spring容器、Ibatis框架和Velocity框架等原理介绍。本书不仅介绍这些技术和框架的工作原理,而且结合示例来讲解,通过通俗易懂的文字和丰富生动的配图,让读者充分并深入理解它们的内部工作原理,同时还结合了设计模式来介绍这些技术背后的架构思维。
第1章 深入Web请求过程
1.1 B/S网络架构概述
1.2 如何发起一个请求
1.3 HTTP协议解析
1.3.1 查看HTTP信息的工具
1.3.2 浏览器缓存机制
1.4 DNS域名解析
1.4.1 DNS域名解析过程
1.4.2 跟踪域名解析过程
1.4.3 清除缓存的域名
1.4.4 几种域名解析方式
1.5 CDN工作机制
1.5.1 CDN架构
1.5.2 负载均衡
1.6 总结
第2章 深入分析Java I/O的工作机制
2.1 Java的I/O类库的基本架构
2.1.1 基于字节的I/O操作接口
2.1.2 基于字符的I/O操作接口
2.1.3 字节与字符的转化接口
2.2 磁盘I/O工作机制
2.2.1 几种访问文件的方式
2.2.2 Java访问磁盘文件
2.2.3 Java序列化技术
2.3 网络I/O工作机制
2.3.1 TCP状态转化
2.3.2 影响网络传输的因素
2.3.3 Java Socket的工作机制
2.3.4 建立通信链路
2.3.5 数据传输
2.4 NIO的工作方式
2.4.1 BIO带来的挑战
2.4.2 NIO的工作机制
2.4.3 Buffer的工作方式
2.4.4 NIO的数据访问方式
2.5 I/O调优
2.5.1 磁盘I/O优化
2.5.2 TCP网络参数调优
2.5.3 网络I/O优化
2.6 设计模式解析之适配器模式
2.6.1 适配器模式的结构
2.6.2 Java I/O中的适配器模式
2.7 设计模式解析之装饰器模式
2.7.1 装饰器模式的结构
2.7.2 Java I/O中的装饰器模式
2.8 适配器模式与装饰器模式的区别
2.9 总结
第3章 深入分析Java Web中的中文编码问题
3.1 几种常见的编码格式
3.1.1 为什么要编码
3.1.2 如何“翻译”
3.2 Java中需要编码的场景
3.2.1 I/O操作中存在的编码
3.2.2 内存操作中的编码
3.3 Java中如何编解码
3.3.1 按照ISO-8859-1编码
3.3.2 按照GB2312编码
3.3.3 按照GBK编码
3.3.4 按照UTF-16编码
3.3.5 按照UTF-8编码
3.3.6 UTF-8编码代码片段
3.3.7 几种编码格式的比较
3.4 Java Web中涉及的编解码
3.4.1 URL的编解码
3.4.2 HTTP Header的编解码
3.4.3 POST表单的编解码
3.4.4 HTTP BODY的编解码
3.5 JS中的编码问题
3.5.1 外部引入JS文件
3.5.2 JS的URL编码
3.5.3 其他需要编码的地方
3.6 常见问题分析
3.6.1 中文变成了看不懂的字符
3.6.2 一个汉字变成一个问号
3.6.3 一个汉字变成两个问号
3.6.4 一种不正常的正确编码
3.7 总结
第4章 Javac编译原理
4.1 Javac是什么
4.2 Javac编译器的基本结构
4.3 Javac工作原理分析
4.3.1 词法分析器
4.3.2 语法分析器
4.3.3 语义分析器
4.3.4 代码生成器
4.4 设计模式解析之访问者模式
4.4.1 访问者模式的结构
4.4.2 Javac中访问者模式的实现
4.5 总结
第5章 深入class文件结构
5.1 JVM指令集简介
5.1.1 类相关的指令
5.1.2 方法的定义
5.1.3 属性的定义
5.1.4 其他指令集
5.2 class文件头的表示形式
5.3 常量池
5.3.1 UTF8常量类型
5.3.2 Fieldref、Methodref常量类型
5.3.3 Class常量类型
5.3.4 NameAndType常量类型
5.4 类信息
5.5 Fields和Methods定义
5.6 类属性描述
5.7 Javap生成的class文件结构
5.7.1 LineNumberTable
5.7.2 LocalVariableTable
5.8 总结
第6章 深入分析ClassLoader
6.1 ClassLoader类结构分析
6.2 ClassLoader的等级加载机制
6.3 如何加载class文件
6.3.1 加载字节码到内存
6.3.2 验证与解析
6.3.3 初始化Class对象
6.4 常见加载类错误分析
6.4.1 ClassNotFoundException
6.4.2 NoClassDefFoundError
6.4.3 UnsatisfiedLinkError
6.4.4 ClassCastException
6.4.5 ExceptionInInitializerError
6.5 常用的ClassLoader分析
6.6 如何实现自己的ClassLoader
6.6.1 加载自定义路径下的class文件
6.6.2 加载自定义格式的class文件
6.7 实现类的热部署
6.8 Java应不应该动态加载类
6.9 总结
第7章 JVM体系结构与工作方式
7.1 JVM体系结构
7.1.1 何谓JVM
7.1.2 JVM体系结构详解
7.2 JVM工作机制
7.2.1 机器如何执行代码
7.2.2 JVM为何选择基于栈的架构
7.2.3 执行引擎的架构设计
7.2.4 执行引擎的执行过程
7.2.5 JVM方法调用栈
7.3 总结
第8章 JVM内存管理
8.1 物理内存与虚拟内存
8.2 内核空间与用户空间
8.3 Java中哪些组件需要使用内存
8.3.1 Java堆
8.3.2 线程
8.3.3 类和类加载器
8.3.4 NIO
8.3.5 JNI
8.4 JVM内存结构
8.4.1 PC寄存器
8.4.2 Java栈
8.4.3 堆
8.4.4 方法区
8.4.5 运行时常量池
8.4.6 本地方法栈
8.5 JVM内存分配策略
8.5.1 通常的内存分配策略
8.5.2 Java中内存分配详解
8.6 JVM内存回收策略
8.6.1 静态内存分配和回收
8.6.2 动态内存分配和回收
8.6.3 如何检测垃圾
8.6.4 基于分代的垃圾收集算法
8.7 内存问题分析
8.7.1 GC日志分析
8.7.2 堆快照文件分析
8.7.3 JVM Crash日志分析
8.8 实例1
8.9 实例2
8.1 实例3
8.11 总结
第9章 Servlet工作原理解析
9.1 从Servlet容器说起
9.1.1 Servlet容器的启动过程
9.1.2 Web应用的初始化工作
9.2 创建Servlet实例
9.2.1 创建Servlet对象
9.2.2 初始化Servlet
9.3 Servlet体系结构
9.4 Servlet如何工作
9.5 Servlet中的Listener
9.6 Filter如何工作
9.7 Servlet中的url-pattern
9.8 总结
第10章 深入理解Session与Cookie
10.1 理解Cookie
10.1.1 Cookie属性项
10.1.2 Cookie如何工作
10.1.3 使用Cookie的限制
10.2 理解Session
10.2.1 Session与Cookie
10.2.2 Session如何工作
10.3 Cookie安全问题
10.4 分布式Session框架
10.4.1 存在哪些问题
10.4.2 可以解决哪些问题
10.4.3 总体实现思路
10.5 Cookie压缩
10.6 表单重复提交问题
10.7 总结
第11章 Tomcat的系统架构与 设计模式
11.1 Tomcat总体设计
11.1.1 Tomcat总体结构
11.1.2 Connector组件
11.1.3 Servlet容器Container
11.1.4 Tomcat中的其他组件
《Oracle Database 11g & MySQL 5.6开发手册
Michael McLaughlin,OracleACE,是美国爱达荷州杨百翰大学计算机信息技术系教授,Michael参与Oracle公司系列产品的研发已经有20年了,担任过开发者、DBA,以及电子商务套件应用程序DBA。
他在咨询、支持和开发方面都有建树。他还是ATOMS事务架构(美国专利号#7 206 805和#7 290056)的发明者。这两项专利均归属Oracle公司。
他撰写了6本有关Oracle技术著作,其中包括清华大学出版社引进并出版的《Oracle Database 11gPL/SQL程序设计》、《Oracle Database11gPL/SQL编程实践》等。
第I部分开发组件
第1章 架构 3
1.1 通用的客户端-服务器
计算模型 4
1.2 Oracle Database 11g8
1.2.1 客户端软件:SQL*Plus 8
1.2.2 Oracle11g服务器软件9
1.2.3 Oracle数据字典17
1.3 Oracle MySQL 5.6 17
1.3.1 客户端软件:
MySQL Monitor18
1.3.2 MySQL服务器软件18
1.3.3 MySQL数据字典22
1.4 小结22
1.5 习题23
第2章 客户端接口25
2.1 SQL*Plus 26
2.1.1 与SQL*Plus连接和
断开连接 26
2.1.2 在SQL*Plus环境下
工作 30
2.1.3 在SQL*Plus中编写
SQL语句34
2.1.4 用SQL*Plus保存
SQL语句36
2.1.5 用SQL*Plus编辑
SQL语句36
2.1.6 从缓冲区重新运行
SQL*Plus的SQL语句36
2.1.7 在SQL*Plus中取消
SQL语句条目37
2.1.8 调用并运行SQL*Plus
脚本文件 37
2.1.9 向SQL*Plus脚本文件
传递参数 39
2.1.10 调用PL/SQL程序41
2.1.11 编写SQL*Plus日志
文件 45
2.2 MySQL Monitor 46
2.2.1 连接和断开
MySQL Monitor46
2.2.2 编写MySQL的
SQL语句51
2.2.3 保存MySQL的
SQL语句53
2.2.4 编辑MySQL的
SQL语句54
2.2.5 取消MySQL的
SQL语句55
2.2.6 调用和运行MySQL
脚本文件 56
2.2.7 设置会话变量 56
2.2.8 调用SQL/PSM程序57
2.2.9 编写MySQL的日志
文件 60
2.3 小结62
2.4 习题62
第3章 安全模型 65
3.1 安全屏障66
3.1.1 网络的安全防护 66
3.1.2 操作系统的安全防护 66
3.1.3 数据库的安全防护 66
3.2 安全权限69
3.3 定义者和调用者权利79
3.3.1 定义者权利79
3.3.2 调用者权利80
3.4 小结81
3.5 习题81
第4章 事务模型 83
4.1 数据事务84
4.2 ACID兼容的SQL语句87
4.2.1 INSERT语句88
4.2.2 UPDATE语句91
4.2.3 DELETE语句92
4.3 存储程序93
4.4 触发器 95
4.5 小结96
4.6 习题97
第5章 约束 99
5.1 NOTNULL约束101
5.1.1 Oracle数据库的
NOT NULL约束102
5.1.2 MySQL数据库的
NOT NULL约束103
5.2 UNIQUE约束103
5.2.1 Oracle数据库的
UNIQUE约束104
5.2.2 MySQL数据库的
UNIQUE约束105
5.2.3 唯一索引106
5.3 主键约束107
5.3.1 Oracle数据库的
主键约束 107
5.3.2 MySQL数据库的
主键约束 108
5.4 外键约束108
5.4.1 Oracle数据库的
外键约束 110
5.4.2 MySQL数据库的
外键约束 111
5.5 CHECK约束112
5.5.1 Oracle数据库的
CHECK约束113
5.5.2 MySQL数据库的
CHECK约束113
5.6 触发器约束114
5.7 小结115
5.8 习题115
第II部分SQL开发
第6章 创建用户和结构119
6.1 用户120
6.1.1 Oracle数据库的用户120
6.1.2 MySQL数据库的用户126
6.2 数据库131
6.2.1 Oracle的模式131
6.2.2 MySQL的数据库132
6.3 表 134
6.3.1 Oracle数据库的表135
6.3.2 MySQL数据库的表161
6.4 索引179
6.4.1 Oracle数据库的索引180
6.4.2 MySQL数据库的索引181
6.5 小结182
6.6 习题182
第7章 修改用户和结构185
7.1 用户186
7.1.1 Oracle数据库的用户186
7.1.2 MySQL数据库的用户189
7.2 数据库190
7.3 会话190
7.3.1 启用SQL的追踪190
7.3.2 启用条件性编译 192
7.4 表 193
7.4.1 数据目录的表定义194
7.4.2 添加、修改和抛弃列 199
7.4.3 抛弃表213
7.5 索引214
7.5.1 Oracle数据库的
索引维护 215
7.5.2 My
servlet和jsp学习指南
《Servlet和JSP学习指南》是系统学习Servlet和JSP的必读之作。由全球知名的Java技术专家(《How Tomcat Works》作者)亲自执笔,不仅全面解读Servlet和JSP的*技术,重点阐述Java Web开发的重要编程概念和设计模型,而且包含大量可操作性极强的案例。
《Servlet和JSP学习指南》共18章:第1章介绍Servlet API和几个简单的Servlet;第2章讨论Session追踪,以及保持状态的4种技术;第3章和第4章系统讲解JSP的语法以及JSP中的重要特性之一:Expression Language;第5~7章分别阐述JSTL中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论Servlet中的事件驱动编程、过滤器,以及Model 2架构;第11章展示如何利用Servlet 3的文件上传特性,以及如何在客户端改善用户的体验;第12章解释如何通过编程方式将资源发送到浏览器;第13章介绍如何利用Decorator模式以及类来改变Servlet请求和响应的行为;第14章讨论Servlet 3中的一项新特性,用来处理异步的操作;第15章阐述如何通过声明和编程方式来保护Java的Web应用程序;第16章讨论Servlet/JSP应用程序的部署过程,以及部署描述符中的元素;第17章阐述Servlet 3中的两项新特性;第18章介绍Struts 2的用法。
第1章 Servlet
1.1 Servlet API概述
1.2 Servlet
1.3 编写基础的Servlet应用程序
1.4 ServletRequest
1.5 ServletResponse
1.6 ServletConfig
1.7 ServletContext
1.8 GenericServlet
1.9 HTTP Servlet
1.10 处理HTML表单
1.11 使用部署描述符
1.12 小结
第2章 Session管理
2.1 网址重写
2.2 隐藏域
2.3 cookie
2.4 HttpSession对象
2.5 小结
第3章 JSP
3.1 JSP概述
3.2 备注
3.3 隐式对象
3.4 指令
3.5 脚本元素
3.6 动作
3.7 小结
第4章 EL
4.1 EL语法
4.2 访问JavaBean
4.3 EL隐式对象
4.4 使用其他EL运算符
4.5 使用EL
4.6 在JSP 2.0及更高版本中配置EL
4.7 小结
第5章 JSTL
5.1 下载JSTL
5.2 JSTL类库
5.3 通用动作指令
5.4 条件式动作指令
5.5 iterator动作指令
5.6 格式化动作指令
5.7 函数
5.8 小结
第6章 编写定制标签
6.1 定制标签概述
6.2 简单的标签处理器
6.3 SimpleTag范例
6.4 处理属性
6.5 管理标签主体
6.6 编写EL函数
6.7 发布定制标签
6.8 小结
第7章 标签文件
7.1 标签文件简介
7.2 我们的第一个标签文件
7.3 标签文件指令
7.4 doBody
7.5 invoke
7.6 小结
第8章 监听器
8.1 监听器接口和注册
8.2 Servlet Context监听器
8.3 Session监听器
8.4 ServletRequest监听器
8.5 小结
第9章 过滤器
9.1 Filter API
9.2 过滤器的配置
9.3 范例1:日志过滤器
9.4 范例2:图片保护过滤器
9.5 范例3:下载计数过滤器
9.6 过滤器的顺序
9.7 小结
第10章 应用程序设计
10.1 Model 1概述
10.2 Model 2概述
10.3 基于Servlet Controller的Model 2
10.4 基于Filter Dispatcher的Model 2
10.5 验证器
10.6 数据库访问
10.7 依赖注入
10.8 小结
第11章 文件上传
11.1 客户端编程
11.2 服务器端编程
11.3 上传Servlet范例
11.4 多文件上传
11.5 上传客户端
11.6 小结
第12章 文件下载
12.1 文件下载概述
12.2 范例1:隐藏资源
12.3 范例2:防止跨站引用
12.4 小结
第13章 请求和响应的装饰
13.1 Decorator模式
13.2 Servlet Wrapper类
13.3 范例:AutoCorrect过滤器
13.4 小结
第14章 异步处理
14.1 概述
14.2 编写异步的Servlet和Filter
14.3 编写异步的Servlet
14.4 异步监听器
14.5 小结
第15章 安全性
15.1 验证和授权
15.2 验证方法
15.3 SSL
15.4 通过编程确保安全性
15.5 小结
第16章 部署
16.1 部署描述符概述
16.2 部署
16.3 Web Fragment
16.4 小结
第17章 动态注册和Servlet容器初始化
17.1 动态注册
17.2 Servlet容器初始化
17.3 小结
第18章 Struts 2简介
18.1 Struts 2的优势
18.2 Struts 2工作原理
18.3 拦截器
18.4 Struts 2的配置文件
18.5 简单的Struts应用程序
18.6 小结
附录A Tomcat
附录B Web注解
附录C SSL证书
显示部分信息
前 言
前 言
欢迎你阅读本书,其内容涵盖了Servlet 3.0和JSP 2.2方面的技术。
JavaServlet技术,或简称Servlet,是Java中用于开发Web应用程序的基本技术。Sun公司于1996年发布了JavaServlet技术,与CGI(Common GatewayInterface,公共网关接口)形成竞争。之后,它成为在Web中生成动态内容的标准。CGI的主要问题在于,它为每一个HTTP请求都创建一个新的进程。因为创建进程需要花费大量的CPU周期,这使得编写可扩展的CGI程序变得极为困难。另一方面,Servlet程序也比CGI程序运行得更快,这是因为Servlet执行完它的第一个请求之后,就会驻留在内存中,等待后续的请求。
自从Servlet面世以来,也开发出了许多基于Java的Web框架,以帮助程序员更迅速地编写Web应用程序。这些框架可以使我们只关注业务逻辑,而不在编写样板代码(boilerplatecode)上花费太多的时间。但你还是需要了解Servlet的基本知识。后来,JavaServerPages(JSP)发布了,这使得编写Servlet变得更加轻松了。或许你正在使用一种很好的框架,如Struts 2、SpringMVC,或者JavaServerFaces。但是,如果没有充分理解Servlet和JSP方面的知识,你将无法进行高效的编码。顺便说一下,Servlets是指在Servlet容器中运行的Java类。Servlet容器或者Servlet引擎,就像是一个Web服务器,但它能够生成动态的内容,而不只是提供静态的资源。
显示全部信息
免费在线读
译者序
Sun公司于1996年发布了Java Servlet技术,与CGI(Common GatewayInterface,公共网关接口)形成竞争,之后,它成为在Web中生成动态内容的标准。自从Servlet面世以来,也开发出了许多基于Java的Web框架,以帮助程序员更迅速地编写Web应用程序。目前全世界拥有了众多的JavaWeb开发人员,也是最热门的编程技术。作者Budi Kurniawan是BrainySoftware.com的高级架构师,也是《HowTomcat Works》、《Java for the Web with Servlets, JSP andEJB》以及《Struts 2 Design and Programming》、《Java 7: A Beginner抯Tutorial》的作者。他已经发表了上百篇技术文章,并编写过授权给全球著名的大公司使用的软件。
本书读者对象
本书是针对有Java编程语言基础的Web开发者的,JavaWeb应用程序开发是一种很成熟并且很热门的编程技术。同时,它也汇集各种技术于一身,经常令初学者不知道从何入手。如果你也有同感,那么本书就很适合你,因为它就是一本特意为初学者量身定制的教程。作为一套面对初学者的教程,本书不是要教会你每一种Servlet/JSP技术。如果你是一名有经验的Web应用开发者,对Servlet3.0的新特性感兴趣,那么本书涵盖新特性的章节正是你所需要阅读并实践的内容。
章节简介
本书介绍了最重要的编程概念,并教你如何编写Servlet/JSP,以及如何使用Servlet核心类库。对于编写真实的Web应用程序提供了很好的指导。本书是你所能找到的最全面的JavaWeb应用程序开发之入门教程,其主题有:
Java Web编程的核心技术Servlet
4种Session管理技术
JSP
表达式语言
JSTL以及定制标签
定制标签文件
Servlet事件驱动编程之监听器
Java入门经典(第6版)
Java入门经典(第6版)》通过大量示例程序循序渐进地引导读者快速掌握使用Java开发程序的基本技能。 《Java入门经典(第6版)》总共24章,先讲解了Java程序的编写流程、工作原理等内容;然后介绍了有关Java编程的基本知识,包括变量、条件语句、循环语句、数组和对象等内容;随后介绍了创建图形用户界面、编写交互式Web程序、读写文件,以及使用字体、颜色和图形等相关的知识。本书还介绍了如何使用Java来开发Android app。《Java入门经典(第6版)》每章都提供了示例程序清单,并辅以示例输出和代码分析,以阐述该章介绍的主题。为加深读者对所学内容的理解,每章末尾都提供了常见问题及其答案以及练习和测验。 《Java入门经典(第6版)》可作为初学者学习Java编程技术的教程,也可供其他语言的程序员学习Java时参考。
《Java门经典(第6版)》通过大量示例程序循序渐地引导读者快速掌握使用Java发程序的基本技能。
《Java门经典(第6版)》总共24章,先讲解了Java程序的编写流程、工作原理等内容;然后介绍了有关Java编程的基本知识,包括变量、条件语句、循环语句、数组和对象等内容;随后介绍了创建图形用户界面、编写交互式Web程序、读写文件,以及使用字体、颜色和图形等相关的知识。本书还介绍了如何使用Java来发Android app。《Java门经典(第6版)》每章都提供了示例程序清单,并辅以示例输出和代码分析,以阐述该章介绍的主题。为加深读者对所学内容的理解,每章末尾都提供了常见问题及其答案以及练习和测验。
《Java门经典(第6版)》可作为初学者学习Java编程技术的教程,也可供其他语言的程序员学习Java时参考。
内容提要
关于作者
前言
第1章 成为程序员
1.1 选择编程语言
1.2 告诉计算机做什么
1.3 程序的工作原理
1.4 为什么程序不能正常工作
1.5 选择 Java编程工具
1.6 安装 Java开发工具
1.7 总结
1.8 问与答
1.9 测验
1.9.1 问题
1.9.2 答案
1.10 练习
第2章 编写第一个程序
2.1 编写程序所需的工具
2.2 创建 Saluton 程序
2.3 开始输入程序
2.3.1 class语句
2.3.2 main语句的作用
2.3.3 大括号
2.4 在变量中存储信息
2.5 保存编写好的程序
2.6 将程序编译为 class文件
2.7 修复错误
2.8 运行 Java程序
2.9 总结
2.10 问与答
2.11 测验
2.11.1 问题
2.11.2 答案
2.12 练习
第3章 Java之旅
3.1 第一站:Oracle
3.2 去 Java学校
3.3 在 JavaWorld 用午餐
3.4 在 NASA仰望天穹
3.5 回归正题
3.6 到 Java Boutique 去问路
3.7 在手机上运行 Java
3.8 总结
3.9 问与答
3.10 测验
3.10.1 问题
3.10.2 答案
3.11 练习
第4章 理解Java程序的工作原理
4.1 创建应用程序
4.2 向应用程序传递参数
4.3 创建 applet
4.4 总结
4.5 问与答
4.6 测验
4.6.1 问题
4.6.2 答案
4.7 练习
第5章 在程序中存储和修改信息
5.1 语句和表达式
5.2 指定变量类型
5.2.1 整数和浮点数
5.2.2 字符和字符串
5.2.3 其他数值类型的变量
5.2.4 布尔型变量
5.3 给变量命名
5.4 在变量中存储信息
5.5 运算符
5.5.1 变量的递增与递减
5.5.2 运算符优先级
5.6 使用表达式
5.7 总结
5.8 问与答
5.9 测验
5.9.1 问题
5.9.2 答案
5.10 练习
第6章 使用字符串来交流
6.1 在字符串中存储文本
6.2 在程序中显示字符串
6.3 在字符串中使用特殊字符
6.4 拼接字符串
6.5 将其他变量用于字符串中
6.6 字符串的高级处理
6.6.1 比较两个字符串
6.6.2 确定字符串的长度
6.6.3 改变字符串的大小写
6.6.4 查找字符串
6.7 导演及演员名单
6.8 总结
6.9 问与答
6.10 测验
6.10.1 问题
6.10.2 答案
6.11 练习
第7章 使用条件测试进行判断
7.1 if语句
7.1.1 小于和大于的比较
7.1.2 相等和不等
7.1.3 使用块语句组织程序
7.2 if-else 语句
7.3 switch语句
7.4 条件运算符
7.5 观察时钟
7.6 总结
7.7 问与答
7.8 测验
7.8.1 问题
7.8.2 答案
7.9 练习
第8章 使用循环重复执行操作
8.1 for循环
8.2 while 循环
8.3 do-while 循环
8.4 退出循环
8.5 给循环命名
8.6 测试计算机的运行速度
8.7 总结
8.8 问与答
8.9 测验
8.9.1 问题
8.9.2 答案
8.10 练习
第9章 使用数组存储信息
9.1 创建数组
9.2 使用数组
9.3 多维数组
9.4 对数组进行排序
9.5 对字符串中的字符计数
9.6 总结
9.7 问与答
9.8 测验
9.8.1 问题
9.8.2 答案
9.9 练习
第10章 创建第一个对象
10.1 面向对象编程的工作原理
10.2 对象示例
10.3 什么是对象
10.4 理解继承
10.5 建立继承层次
10.6 转换对象和简单变量
10.6.1 简单变量的类型转换
10.6.2 对象类型转换
10.6.3 在简单变量和对象之间进行转换
10.6.4 自动封装和拆封
10.7 创建对象
10.8 总结
10.9 问与答
10.10 测验
10.10.1 问题
10.10.2 答案
10.11 练习
第11章 描述对象
11.1 创建变量
11.2 创建类变量
11.3 用方法来创建行为
11.3.1 声明方法
11.3.2 参数不同的类似方法
11.3.3 构造函数
11.3.4 类方法
11.3.5 方法中变量的作用域
11.4 将一个类放在另一个类中
11.5 使用关键字this
11.6 使用类方法和类变量
11.7 总结
11.8 问与答
11.9 测验
11.9.1 问题
11.9.2 答案
11.10 练习
第12章 充分利用现有对象
12.1 继承的威力
12.1.1 继承行为和属性
12.1.2 覆盖方法
12.2 建立继承
12.3 使用现有的对象
12.4 将相同类型的对象存储到 Vector 中
12.5 创建子类
12.6 总结
12.7 问与答
12.8 测验
12.8.1 问题
12.8.2 答案
12.9 练习
第13章 创建简单的用户界面
13.1 Swing 和抽象窗口工具包
13.2 使用组件
13.2.1 窗口和框架
13.2.2 按钮
13.2.3 标签和文本框
13.2.4 复选框
13.2.5 组合框
13.2.6 文本区域
13.2.7 面板
13.3 创建自己的组件
13.4 总结
13.5 问与答
13.6 测验
13.6.1 问题
13.6.2 答案
13.7 练习
第14章 用户界面的布局
14.1 使用布局管理器
14.1.1 GridLayout管理器
14.1.2 BorderLayout管理器
14.1.3 BoxLayout管理器
14.1.4 使用Insets将组件隔开
14.2 应用程序的界面布局
14.3 总结
14.4 问与答
14.5 测验
14.5.1 问题
14.5.2 答案
14.6 练习
第15章 响应用户输入
15.1 让程序监听
15.2 设置要监听的组件
15.3 处理用户事件
15.3.1 复选框和组合框事件
15.3.2 键盘事件
15.3.3 启用和禁用组件
15.4 完善图形应用程序
15.5 总结
15.6 问与答
15.7 测验
15.7.1 问题
15.7.2 答案
15.8 练习
第16章 创建复杂的用户界面
16.1 滚动窗格
16.2 滑块
16.3 变更监听器
16.4 使用图像图标和工具栏
16.5 总结
16.6 问与答
16.7 测验
16.7.1 问题
16.7.2 答案
16.8 练习
第17章 创建交互式Web程序
17.1 标准applet方法
17.1.1 在applet窗口中绘画
17.1.2 初始化applet
17.1.3 启动和停止applet
17.1.4 销毁applet
17.2 将applet放到Web页面中
17.3 创建applet
17.3.1 在applet窗口中绘画
17.3.2 测试SalutonApplet程序
17.4 从Web页面传递参数
17.5 在applet中接收参数
17.6 在applet中处理参数
17.7 使用object标记
17.8 总结
17.9 问与答
17.10 测验
17.10.1 问题
17.10.2 答案
17.11 练习
第18章 处理程序中的错误
18.1 异常
18.1.1 在try-catch块中捕获异常
18.1.2 捕获多种不同的异常
18.1.3 出现异常后进行处理
18.1.4 抛出异常
18.1.5 忽略异常
18.2 抛出和捕获异常
18.3 总结
18.4 问与答
18.5 测验
18.5.1 问题
18.5.2 答案
18.6 练习
第19章 创建线程程序
19.1 线程
19.1.1 降低程序的速度
19.1.2 创建线程
19.2 使用线程
19.2.1 声明类
19.2.2 创建变量
19.3 从init( )开始
19.4 在创建URL时捕获错误
19.5 在paint( )方法中处理屏幕更新
19.6 启动线程
19.6.1 运行线程
19.6.2 停止线程
19.7 处理鼠标单击
19.8 循环显示链接
19.9 总结
19.10 问与答
19.11 测验
19.11.1 问题
19.11.2 答案
19.12 练习
第20章 读写文件
20.1 流
20.1.1 文件
20.1.2 从流中读取数据
20.1.3 缓冲输入流
20.2 将数据写入流中
20.3 读写配置属性
20.4 总结
20.5 问与答
20.6 测验
20.6.1 问题
20.6.2 答案
20.7 练习
第21章 读写XML数据
21.1 创建XML文件
21.2 读取XML文件
21.3 读取 RSS 聚合内容(Syndication Feeds)
21.4 总结
21.5 问与答
21.6 测验
21.6.1 问题
21.6.2 答案
21.7 练习
第22章 利用JAX-WS开发Web服务
22.1 定义服务端点接口
使用注解来简化Java代码
22.2 创建服务实现Bean
22.3 发布Web服务
22.4 使用Web服务描述语言文件
22.5 创建Web服务客户端
22.6 总结
22.7 问与答
22.8 测验
22.8.1 问题
22.8.2 答案
22.9 练习
第23章 创建Java2D图形
23.1 使用Font类
23.2 使用Color类
23.3 创建自定义颜色
23.4 绘制直线和形状
23.4.1 绘制直线
23.4.2 绘制矩形
23.4.3 绘制椭圆和圆
23.4.4 绘制弧线
23.5 绘制饼图
23.6 总结
23.7 问与答
23.8 测验
23.8.1 问题
23.8.2 答案
23.9 练习
第24章 编写Android app
24.1 Android简介
24.2 创建 Android app
24.2.1 剖析一个Android新项目
24.2.2 创建app
24.2.3 安装Android模拟器
24.2.4 创建调试配置
24.3 运行app
24.4 设计真实的app
24.4.1 组织资源
24.4.2 配置app的Manifest文件
24.4.3 设计用户界面
24.4.4 编写Java代码
24.5 总结
24.6 问与答
24.7 测验
24.7.1 问题
24.7.2 答案
24.8 练习
HTML5 Canvas游戏开发实战.pdf
《HTML5 Canvas游戏开发实战》主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读者不仅知其然,而且知其所以然。在本书中,除了介绍了HTML5 Canvas的基础API之外,还重点阐述了如何在JavaScript中运用面向对象的编程思想来进行游戏开发。 《HTML5 Canvas游戏开发实战》在介绍每个游戏开发的过程时,都会包括游戏分析、开发过程、代码解析和小结等相关内容,以帮助读者了解每种类型游戏开发的详细步骤,让读者彻底掌握各种类型游戏的开发思想。最后,还通过数据对比分析,指导读者提升程序的性能,写出高效的代码,从而开发出运行流畅的游戏。
《HTML5 Canvas游戏发实战》主要讲解使用HTML5 Canvas来发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏发实例深剖析了其内在原理,让读者不仅知其然,而且知其所以然。在本书中,除了介绍了HTML5 Canvas的基础API之外,还重阐述了如何在JavaScript中运用面向对象的编程思想来行游戏发。
《HTML5 Canvas游戏发实战》在介绍每个游戏发的过程时,都会包括游戏分析、发过程、代码解析和小结等相关内容,以帮助读者了解每种类型游戏发的详细步骤,让读者彻底掌握各种类型游戏的发思想。最后,还通过数据对比分析,指导读者提升程序的性能,写出高效的代码,从而发出运行流畅的游戏。
【推荐语】
系统讲解HTML 5 Canvas的基础知识和高级技巧,深剖析源库件lufylegend的原理与使用
以实例为向导,详细讲解射游戏、物理游戏、网络游戏、页面游戏等各类游戏的发思路和技巧
【作者】
张路斌,资深前端发工程师和游戏发工程师,从事Web发和游戏发多年,精通HTML5和Flash等技术。HTML5源游戏引擎lufylegend.js的发者,利用HTML5和Flash等技术独立发了大型网页游戏、Flash、多平台游戏三国记系列,以及数十款手机小游戏,游戏发经验十分丰富。
前言
为什么要写这本书
读者对象
如何阅读本书
勘误和支持
致谢
第一部分 准备工作篇
第1章 准备工作
第二部分 基础知识篇
第2章 Canvas基本功能
第3章 Canvas高级功能
第4章 lufylegend开源库件
第三部分 开发实战篇
第5章 从简单做起—“石头剪子布”游戏
第6章 开发“俄罗斯方块”游戏
第7章 开发“是男人就下一百层”游戏
第8章 开发射击类游戏
第9章 开发物理游戏
第10章 开发网络游戏
第四部分 技能提高篇
第11章 提高效率的分析
。。。
Oracle Database 12c完全参考手册 第7版
通过强大的新工具以及专为云而改进的Oracle Database12c,维护可扩展、高可用的企业级平台并有效降低复杂性。本权威手册覆盖从安装、配置、性能调整到管理所有方面,包含建立和发布Oracle数据库、执行高效率的查询、设计应用程序和加密企业级数据。附录涵盖命令行、关键字、特性和函数。
主要内容
● 建立Oracle Database12c数据库以及如何从早期版本升级
● 设计Oracle 数据库和规划应用程序的部署
● 建立SQL和SQL*Plus语句,执行高效的查询
● 使用角色、权限、虚拟化和加密管理数据安全
● 使用SQL*Loader和Oracle Data Pump进行数据迁移
● 使用闪回和自动回滚段管理(AUM)恢复数据库
第Ⅰ部分数据库核心概念
第1章OracleDatabase12c架构选件
1.1数据库和实例
1.2数据库技术
1.2.1存储数据
1.2.2数据保护
1.2.3可编程的结构
1.3选择体系结构和选件
第2章安装OracleDatabase12c和创建数据库
2.1许可证和安装选项概览
2.2安装Oracle软件
2.2.1安装GridInfrastructure
2.2.2安装Oracle数据库
第3章升级到OracleDatabase12c
3.1选择升级方法
3.2升级之前的准备
3.3升级GridInfrastructure和数据库
3.3.1升级GridInfrastructure
3.3.2升级数据库
3.4升级之后的工作
第4章规划Oracle应用程序--方法、风险和标准
4.1协作方法
4.2每个人都有"数据"
4.3熟悉的Oracle语言
4.3.1存储信息的表
4.3.2结构化查询语言
4.3.3简单的Oracle查询
4.3.4为什么称作"关系"
4.4一些通用的、常见的示例
4.5风险所在
4.6新视角的重要性
4.6.1变化的环境
4.6.2代码、缩写和命名标准
4.7如何减少混淆
4.7.1规范化
4.7.2表和列的英文名称
4.7.3数据中的英文单词
4.8名称和数据中的大写
4.9规范化名称
4.10人性化和优秀的设计
4.10.1理解应用程序的任务
4.10.2任务概要
4.11理解数据
4.11.1原子数据模型
4.11.2原子业务模型
4.11.3业务模型
4.11.4数据项
4.11.5查询和报告
4.12关于对象名称的规范化
4.12.1级别-名称完整性
4.12.2外键
4.12.3单数名称
4.12.4简洁
4.12.5对象名辞典
4.13智能键和列值
4.14建议
第Ⅱ部分SQL和SQL*Plus
第5章SQL中的基本语法
5.1样式
5.2创建NEWSPAPER表
5.3用SQL从表中选择数据
5.4select、from、where和orderby
5.5逻辑和值
5.5.1单值测试
5.5.2值列表的简单测试
5.5.3组合逻辑
5.6WHERE的另一个用途:子查询
5.6.1从子查询得到单值
5.6.2从子查询得到值列表
5.7组合表
5.8创建视图
5.9扩展视图
第6章基本的SQL*Plus报表和命令
6.1构建简单的报表
6.1.1REMARK
6.1.2SETHEADSEP
6.1.3TTITLE和BTITLE
6.1.4COLUMN
6.1.5BREAKON
6.1.6COMPUTEAVG
6.1.7SETLINESIZE
6.1.8SETPAGESIZE
6.1.9SETNEWPAGE
6.1.10SPOOL
6.1.11/**/
6.1.12关于列标题的一些说明
6.2其他特性
6.2.1命令行编辑器
6.2.2设置停顿
6.2.3保存
6.2.4存储
6.2.5编辑
6.2.6HOST
6.2.7添加SQL*Plus命令
6.2.8START
6.3检查SQL*Plus环境
6.4构件块
第7章文本信息的收集与更改
7.1数据类型
7.2什么是串
7.3表示法
7.4连接符(||)
7.5剪切和粘贴串
7.5.1RPAD和LPAD
7.5.2LTRIM、RTRIM和TRIM
7.5.3组合两个函数
7.5.4使用TRIM函数
7.5.5再次使用填充函数
7.5.6LOWER、UPPER和INITCAP
7.5.7LENGTH
7.5.8SUBSTR
7.5.9INSTR
7.5.10ASCII和CHR
7.6在ORDERBY和WHERE子句中使用串函数
7.6.1SOUNDEX
7.6.2国际语言支持
7.6.3正则表达式支持
7.7小结
第8章正则表达式搜索
8.1搜索串
8.2REGEXP_SUBSTR
8.3REGEXP_INSTR
8.4REGEXP_LIKE
8.5REPLACE和REGEXP_
REPLACE
8.6REGEXP_COUNT
第9章数值处理
9.1三类数值函数
9.2表示法
9.3单值函数
9.3.1加减乘除
9.3.2NULL
9.3.3NVL:空值置换函数
9.3.4ABS:绝对值函数
9.3.5CEIL
9.3.6FLOOR
9.3.7MOD
9.3.8POWER
9.3.9SQRT:求平方根
9.3.10EXP、LN和LOG
9.3.11ROUND和TRUNC
9.3.12SIGN
9.3.13SIN、SINH、COS、COSH、TAN、TANH、ACOS、ATAN、ATAN2和ASIN
9.4聚集函数
9.4.1组值函数中的NULL
9.4.2单值函数和组值函数的示例
9.4.3AVG、COUNT、MAX、MIM和SUM
9.4.4组值函数和单值函数的组合
9.4.5STDDEV和VARIANCE
9.4.6组函数中的DISTINCT
9.5列表函数
9.6使用MAX或MIN函数查找行
9.7优先级和圆括号的应用
9.8小结
第10章日期:过去、现在及日期的差
10.1日期算法
10.1.1SYSDATE、CURRENT_DATE及SYSTIMESTAMP
10.1.2两个日期的差
10.1.3添加月份
10.1.4减少月份
10.1.5GREATEST和LEAST
10.1.6NEXT_DAY
10.1.7LAST_DAY
10.1.8MOMTHS_BETWEEN
10.1.9组合日期函数
10.2日期计算中的ROUND和TRUNC
10.3使用TO_DATE和TO_CHAR设置日期格式
10.3.1最常见的TO_CHAR错误
10.3.2NEW_TIME:切换时区
10.3.3TO_DATE计算
10.4WHERE子句中的日期
10.5处理多个世纪
10.6使用EXTRACT函数
10.7使用TIMESTAMP数据类型
第11章转换函数与变换函数
11.1基本的转换函数
11.1.1数据类型的自动转换
11.1.2关于自动转换的注意事项
11.2特殊的转换函数
11.3变换函数
11.3.1TRANSLATE
11.3.2DECODE
11.4小结
第12章分组函数
12.1GROUPBY和HAVING的用法
12.1.1添加ORDERBY子句
12.1.2执行顺序
12.2分组视图
12.3用别名重命名列
12.4分组视图的功能
12.4.1在视图中使用ORDERBY
12.4.2HAVING子句中的逻辑
12.4.3对列和分组函数进行排序
12.4.4连接列
12.5更多分组可能性
第13章当一个查询依赖于另一个查询时
13.1高级子查询
13.1.1相关子查询
13.1.2并列的逻辑测试
13.1.3EXISTS及其相关子查询的使用
13.2外部连接
13.2.1Oracle9i以前版本中的外部连接语法
13.2.2现在的外部连接语法
13.2.3用外部连接代替NOTIN
13.2.4用NOTEXISTS代替NOTIN
13.3自然连接和内部连接
13.4UNION﹑INTERSECT和MINUS
13.4.1IN子查询
13.4.2UNION、INTERSECT和MINUS的限制
第14章一些复杂的技术
14.1复杂的分组
14.2使用临时表
14.3使用ROLLUP﹑GROUPING和CUBE
14.4家族树和CONNECTBY
14.4.1排除个体和分支
14.4.2向根遍历
14.4.3找出叶节点
14.4.4基本规则
第15章更改数据:插入﹑更新﹑合并和删除
15.1插入
15.1.1插入时间
15.1.2用SELECT插入
15.1.3使用APPEND提示改善插入性能
15.2ROLLBACK、COMMIT和AUTOCOMMIT命令
15.2.1使用SAVEPOINT
15.2.2隐式提交
15.2.3自动回滚
15.3多表插入
15.4DELETE命令
15.5UPDATE命令
15.5.1用嵌入式SELECT进行更新
15.5.2用NULL更新
15.6使用MERGE命令
15.7处理错误
第16章DECODE和CASE:SQL中的if-then-else
16.1if-then-else
16.2通过DECODE替换值
16.3DECODE中的DECODE
16.4DECODE中的大于和小于
16.5使用CASE
16.6使用PIVOT
第17章创建和管理表、视图、索引、集群和序列
17.1创建表
17.1.1字符宽度和数值精度
17.1.2在插入时进行舍入
17.1.3在CREATETABLE中定义约束
17.1.4指定索引表空间
17.1.5命名约束
17.2删除表
17.3更改表
17.3.1添加或修改列的规则
17.3.2创建只读表
17.3.3更改当前使用的表
17.3.4创建虚拟列
17.3.5删除列
17.4根据一个表创建另一个表
17.5创建索引组织表
17.6创建视图
17.6.1视图的稳定性
17.6.2视图中的ORDERBY
17.6.3创建只读视图
17.7索引
17.7.1创建索引
17.7.2实施唯一性
17.7.3创建唯一索引
17.7.4创建位图索引
17.7.5何时创建索引
17.7.6创建不可见索引
17.7.7索引列的变化
17.7.8一个表能使用的索引数目
17.7.9在数据库中放置索引
17.7.10重建索引
17.7.11基于函数的索引
17.8集群
17.9序列
第18章分区
18.1创建分区表
18.2列表分区
18.3创建子分区
18.4创建引用分区和间隔分区
18.4.1引用分区
18.4.2间隔分区
18.5索引分区
18.6管理分区表
第19章Oracle基本安全
19.1用户、角色和权限
19.1.1创建用户
19.1.2密码管理
19.1.3标准角色
19.1.4GRANT命令的格式
19.1.5撤消权限
19.2可以授予用户何种权限
19.2.1使用CONNECT切换到另一个用户
19.2.2创建同义词
19.2.3使用未授权的权限
19.2.4权限的传递
19.2.5创建角色
19.2.6为角色授权
19.2.7将一个角色授予另一个角色
19.2.8为用户授予角色
19.2.9为角色添加密码
19.2.10删除角色的密码
19.2.11启用和禁用角色
19.2.12撤消角色的权限
19.2.13删除角色
19.2.14给指定的列授予UPDATE权限
19.2.15撤消对象权限
19.2.16用户安全性
19.2.17给public授予访问权
19.3有限资源的授权
第Ⅲ部分进阶
第20章高级安全性--虚拟专用数据库
20.1初始配置
20.2创建应用程序上下文
20.3创建登录触发器
20.4创建安全策略
20.5将安全策略应用于表
20.6测试VPD
20.7如何实现列级别的VPD
20.8如何禁用VPD
20.9如何使用策略组
第21章高级安全性:透明数据加密
21.1列的透明数据加密
21.1.1设置TDE以便使用加密列
21.1.2RAC数据库的额外设置
21.1.3钱夹的打开和关闭
21.1.4列的加密和解密
21.2表空间的加密
21.2.1在表空间上设置TDE
21.2.2创建加密的表空间
第22章使用表空间
22.1表空间与数据库的结构
22.1.1表空间内容
22.1.2表空间中的RECYCLEBIN空间
22.1.3只读表空间
22.1.4无日志表空间
22.1.5临时表空间
22.1.6用于系统管理撤消的表空间
22.1.7大文件表空间
22.1.8加密的表空间
22.1.9支持闪回数据库
22.1.10移动表空间
22.2规划表空间的使用
22.2.1分离活动表与静态表
22.2.2分离索引与表
22.2.3分离大对象与小对象
22.2.4将应用程序表与核心对象分开
第23章用SQL*Loader加载数据
23.1控制文件
23.2开始加载
23.3逻辑记录与物理记录
23.4控制文件语法注释
23.5管理数据加载
23.6重复数据加载
23.7调整数据加载
23.8直接路径加载
23.9SQL*LoaderExpressMode
23.10附加功能
第24章使用DataPumpExport和DataPumpImport
24.1创建目录
24.2DataPumpExport选项
24.3启动DataPumpExport作业
24.3.1停止和重新启动运行的作业
24.3.2从另一个数据库中导出
24.3.3使用EXCLUDE、INCLUDE和QUERY
24.4DataPumpImport选项
24.5启动DataPumpImport作业
24.5.1停止和重新启动运行的作业
24.5.2EXCLUDE、INCLUDE和QUERY
24.5.3生成SQL
第25章访问远程数据
25.1数据库链接
25.1.1数据库链接是如何工作的
25.1.2利用数据库链接进行远程查询
25.1.3对同义词和视图使用数据库链接
25.1.4利用数据库链接进行远程更新
25.1.5数据库链接的语法
25.2为位置透明性使用同义词
25.3在视图中使用USER伪列
第26章使用物化视图
26.1功能
26.2必需的系统权限
26.3必需的表权限
26.4只读物化视图与可更新的物化视图
26.5创建物化视图的语法
26.5.1物化视图的类型
26.5.2基于ROWID和基于主键的物化视图
26.5.3使用预建表
26.5.4为物化视图表创建索引
26.6用物化视图更改查询执行路径
26.7使用DBMS_ADVISOR
26.8刷新物化视图
26.8.1可执行何种刷新
26.8.2用CONSIDERFRESH快速刷新
26.8.3自动刷新
26.8.4人工刷新
26.9创建物化视图日志的语法
26.10更改物化视图和日志
26.11删除物化视图和日志
第27章使用OracleText进行文本搜索
27.1将文本添加到数据库中
27.2文本查询和文本索引
27.2.1文本查询
27.2.2可用的文本查询表达式
27.2.3精确匹配单个单词的搜索
27.2.4精确匹配多个单词的搜索
27.2.5短语精确匹配的搜索
27.2.6搜索互相接近的单词
27.2.7在搜索中使用通配符
27.2.8搜索具有相同词根的单词
27.2.9模糊匹配搜索
27.2.10搜索发音相似的词
27.2.11使用ABOUT运算符
27.2.12索引同步
27.3索引集
第28章使用外部表
28.1访问外部数据
28.2创建外部表
28.2.1外部表创建选项
28.2.2创建时加载外部表
28.3更改外部表
28.3.1ACCESSPARAMETERS子句
28.3.2ADDCOLUMN子句
28.3.3DEFAULTDIRECTORY子句
28.3.4DROPCOLUMN子句
28.3.5LOCATION子句
28.3.6MODIFYCOLUMN子句
28.3.7PARALLEL子句
28.3.8PROJECTCOLUMN子句
28.3.9REJECTLIMIT子句
28.3.10RENAMETO子句
28.4外部表的优缺点和潜在用途
第29章使用闪回查询
29.1基于时间的闪回示例
29.2保存数据
29.3基于SCN的闪回示例
29.4闪回查询失败的后果
29.5什么SCN与每一行关联
29.6闪回版本查询
29.7闪回计划
第30章闪回:表和数据库
30.1FLASHBACKTABLE命令
30.1.1必需的权限
30.1.2恢复删除的表
30.1.3启用和禁用回收站
30.1.4闪回SCN或时间戳
30.1.5索引和统计信息
30.2FLASHBACKDATABASE命令
第31章SQL重放
31.1高级别配置
31.1.1分离和连接
31.1.2创建工作负载目录
31.2捕获工作负载
31.2.1定义过滤器
31.2.2启动捕获
31.2.3停止捕获
31.2.4导出AWR数据
31.3处理工作负载
31.4重放工作负载
31.4.1控制和启动重放客户
31.4.2初始化和运行重放
31.4.3导出AWR数据
第Ⅳ部分PL/SQL
第32章PL/SQL简介
32.1PL/SQL概述
32.2声明部分
32.3可执行命令部分
32.3.1条件逻辑
32.3.2循环
32.3.3case语句
32.4异常处理部分
第33章应用程序在线升级
33.1高可用数据库
33.1.1OracleDataGuard(数据卫士)体系结构
33.1.2创建备用数据库配置
33.1.3管理角色--切换和故障转移
33.2最小化DDL变更的影响
33.2.1创建虚拟列
33.2.2改变正在使用的表
33.2.3添加NOTNULL列
33.2.4在线对象重新组织
33.2.5删除列
第34章触发器
34.1必需的系统权限
34.2必需的表权限
34.3触发器的类型
34.3.1行级触发器
34.3.2语句级触发器
34.3.3BEFORE和AFTER触发器
34.3.4INSTEADOF触发器
34.3.5模式触发器
34.3.6数据库级触发器
34.3.7复合触发器
34.4触发器语法
34.4.1DML触发器类型的组合
34.4.2设置插入值
34.4.3维护复制的数据
34.4.4定制错误条件
34.4.5在触发器中调用过程
34.4.6命名触发器
34.4.7创建DDL事件触发器
34.4.8创建数据库事件触发器
34.4.9创建复合触发器
34.5启用和禁用触发器
34.6替换触发器
34.7删除触发器
第35章过程、函数与程序包
35.1必需的系统权限
35.2必需的表权限
35.3过程与函数
35.4过程与程序包
35.5CREATEPROCEDURE语法
35.6CREATEFUNCTION语法
35.6.1在过程中引用远程表
35.6.2调试过程
35.6.3创建自己的函数
35.6.4定制错误条件
35.6.5命名过程和函数
35.7CREATEPACKAGE语法
35.8查看过程对象的源代码
35.9编译过程、函数和程序包
35.10替换过程、函数和程序包
35.11删除过程、函数和程序包
第36章使用本地动态SQL和DBMS_SQL
36.1使用EXECUTEIMMEDIATE
36.2使用绑定变量
36.3使用DBMS_SQL
36.3.1OPEN_CURSOR
36.3.2PARSE
36.3.3BIND_VARIABLE和BIND_ARRAY
36.3.4EXECUTE
36.3.5DEFINE_COLUMN
36.3.6FETCH_ROWS、EXECUTE_AND_FETCH和COLUMN_VALUE
36.3.7CLOSE_CURSOR
第37章PL/SQL调整
37.1调整SQL
37.2调整PL/SQL的步骤
37.3在SQL语句中使用PL/SQL
37.4使用DBMS_PROFILE识别问题
37.5将PL/SQL特性用于批量操作
37.5.1forall
37.5.2bulkcollect
第Ⅴ部分面向对象数据库
第38章实现对象类型、对象视图和方法
38.1使用对象类型
38.1.1对象类型的安全性
38.1.2索引对象类型属性
38.2实现对象视图
38.2.1通过对象视图操作数据
38.2.2使用INSTEADOF触发器
38.3方法
38.3.1创建方法的语法
38.3.2管理方法
第39章收集器(嵌套表和可变数组)
39.1可变数组
39.1.1创建可变数组
39.1.2描述可变数组
39.1.3向可变数组中插入记录
39.1.4从可变数组中选择数据
39.2嵌套表
39.2.1指定嵌套表的表空间
39.2.2向嵌套表中插入记录
39.2.3使用嵌套表
39.3嵌套表与可变数组的附加函数
39.4嵌套表和可变数组的管理问题
39.4.1收集器的可变性
39.4.2数据的位置
第40章使用大对象
40.1可用的数据类型
40.2为LOB数据指定存储参数
40.3LOB值的操作和选择
40.3.1初始化值
40.3.2用子查询插入数据
40.3.3更新LOB值
40.3.4使用串函数处理LOB值
40.3.5使用DBMS_LOB操作LOB值
40.3.6删除LOB
第41章面向对象的高级概念
41.1行对象和列对象
41.2对象表和OID
41.2.1把行插入对象表
41.2.2从对象表中选择值
41.2.3从对象表中更新和删除数据
41.2.4使用REF函数
41.2.5使用DEREF函数
41.2.6使用VALUE函数
41.2.7无效引用
41.3具有REF的对象视图
41.3.1对象视图的简要回顾
41.3.2包含引用的对象视图
41.4对象PL/SQL
41.5数据库中的对象
第Ⅵ部分Java相关知识
第42章Java简介
42.1Java与PL/SQL概述
42.2开始
42.3声明
42.4可执行命令
42.4.1条件逻辑
42.4.2循环
42.4.3异常处理
42.4.4保留字
42.5类
第43章JDBC程序设计
43.1使用JDBC类
43.2使用JDBC进行数据操作
第44章Java存储过程
44.1将类加载到数据库中
44.2如何访问类
44.2.1直接调用Java存储过程
44.2.2在何处执行命令
第Ⅶ部分指南
第45章Oracle数据字典指南
45.1关于名称的说明
45.2OracleDatabase12c中引入的新视图
45.3OracleDatabase11g中引入的新视图
45.4路线图:DICTIONARY(DICT)和DICT_COLUMNS
45.5从表、列、视图、同义词和序列中选择
45.5.1目录:USER_CATALOG(CAT)
45.5.2对象:USER_OBJECTS(OBJ)
45.5.3表:USER_TABLES(TABS)
45.5.4列:USER_TAB_COLUMNS(COLS)
45.5.5视图:USER_VIEWS
45.5.6同义词:USER_SYNONYMS(SYN)
45.5.7序列:USER_SEQUENCES(SEQ)
45.6回收站:USER_RECYCLEBIN和DBA_RECYCLEBIN
45.7约束和注释
45.7.1约束:USER_CONSTRAINTS
45.7.2约束列:USER_CONS_COLUMNS
45.7.3约束异常:EXCEPTIONS
45.7.4表注释:USER_TAB_COMMENTS
45.7.5列注释:USER_COL_COMMENTS
45.8索引和集群
45.8.1索引:USER_INDEXES(IND)
45.8.2索引列:USER_IND_COLUMNS
45.8.3集群:USER_CLUSTERS(CLU)
45.8.4集群列:USER_CLU_COLUMNS
45.9抽象数据类型和LOB
45.9.1抽象数据类型:USER_TYPES
45.9.2LOB:USER_LOBS
45.10数据库链接和物化视图
45.10.1数据库链接:USER_DB_LINKS
45.10.2物化视图
Spring Cloud微服务实战_Penstaro-高清 带索引书签目录_翟永超(著)
本书从时下流行的微服务架构概念出发,详细介绍了Spring Cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,本书主要以示例与源码结合的方式来帮助读者更好地理解这些组件的使用方法以及运行原理。同时,在介绍的过程中,还包含了作者在实践中所遇到的一些问题和解决思路,可供读者在实践中作为参考。本书适合所有Java开发人员,尤其适合正在做微服务架构技术选型或正在实施微服务架构的团队查阅和参考。
目录
第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
请求压缩 214
日志配置 215
第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
后记 421
JavaScript基础教程第8版
《JavaScript基础教程(第8版)》循序渐进地讲述了JavaScript及相关的CSS、DOM、Ajax、jQuery等技术。书中从JavaScript语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式、用户事件和cookie,并在上一版的基础上新增了两章,讲述jQuery框架的基础知识。本书不仅介绍了基础知识和使用方法,也深入探讨了JavaScript应用示例。 《JavaScript基础教程(第8版)》适合有志于从事Web开发和Web设计的初学者阅读,也是高校相关课程理想的教材。
第1章 了解JavaScript 1
1.1 JavaScript是什么 1
1.2 JavaScript不是Java 2
1.3 JavaScript的起源 3
1.4 JavaScript可以做什么 3
1.5 JavaScript不能做什么 3
1.6 Ajax是什么 4
1.7 组合式(snap-together)语言 5
1.7.1 对象 5
1.7.2 属性 6
1.7.3 方法 6
1.7.4 将对象、属性和方法组合在一起 6
1.7.5 DOM简介 7
1.8 处理事件 7
1.9 值和变量 8
1.9.1 操作符 8
1.9.2 赋值和比较 9
1.9.3 比较 9
1.10 编写对JavaScript友好的HTML 10
1.10.1 结构、表现和行为 10
1.10.2 div和span 10
1.10.3 class和id 11
1.11 要使用什么工具 12
第2章 开始 13
2.1 将脚本放在哪里 13
2.2 关于函数 14
2.3 使用外部脚本 15
2.4 在脚本中添加注释 17
2.5 向用户发出警告 18
2.6 确认用户的选择 19
2.7 提示用户 21
2.8 用链接对用户进行重定向 22
2.9 使用JavaScript改进链接 25
2.10 使用多级条件 28
2.11 处理错误 30
第3章 第一个Web应用程序 33
3.1 用循环进行重复操作 33
3.2 将值传递给函数 37
3.3 探测对象 39
3.4 处理数组 40
3.5 处理有返回值的函数 42
3.6 更新数组 43
3.7 使用do/while循环 44
3.8 以多种方式调用脚本 46
3.9 组合使用JavaScript和CSS 47
3.10 检查状态 50
3.11 处理字符串数组 55
第4章 处理图像 59
4.1 创建翻转器 59
4.2 创建更有效的翻转器 61
4.3 构建三状态翻转器 64
4.4 由链接触发翻转器 66
4.5 让多个链接触发一个翻转器 68
4.6 处理多个翻转器 71
4.7 创建循环的广告条 74
4.8 在循环广告条中添加链接 76
4.9 建立循环式幻灯片 78
4.10 显示随机图像 80
4.11 随机开始循环显示图像 81
第5章 窗口与框架 83
5.1 防止页面显示在框架中 83
5.2 设置目标 84
5.3 用JavaScript加载iframe 86
5.4 Iframes的使用 87
5.5 创建动态iframe 89
5.6 在文档之间共享函数 90
5.7 打开新窗口 92
5.8 为窗口加载不同的内容 96
第6章 表单处理 98
6.1 选择并转移导航菜单 99
6.2 动态地改变菜单 102
6.3 建立必须填写的字段 104
6.4 根据其他字段对字段进行检查 109
6.5 标识有问题的字段 111
6.6 准备进行表单验证 113
6.7 处理单选按钮 117
6.8 用一个字段设置另一个字段 119
6.9 检验Zip编码 122
6.10 验证电子邮件地址 126
第7章 表单和正则表达式 131
7.1 用正则表达式验证电子邮件地址 131
7.2 验证文件名 136
7.3 提取字符串 139
7.4 格式化字符串 141
7.5 对字符串进行格式化和排序 144
7.6 对字符串进行格式化和验证 146
7.7 使用正则表达式替换元素 148
第8章 处理事件 151
8.1 处理窗口事件 151
8.1.1 onload1事件 151
8.1.2 onunload事件 154
8.1.3 onresize事件 154
8.1.4 onmove事件 156
8.1.5 onabort事件 156
8.1.6 onerror事件 156
8.1.7 onfocus事件 156
8.1.8 onblur事件 157
8.2 处理鼠标事件 158
8.2.1 onmousedown事件 158
8.2.2 onmouseup事件 161
8.2.3 onmousemove事件 161
8.2.4 onmouseover事件 163
8.2.5 onmouseout事件 163
8.2.6 ondblclick事件 164
8.2.7 onclick事件 165
8.3 表单事件处理 165
8.3.1 onsubmit事件 165
8.3.2 onreset事件 165
8.3.3 onchange事件 166
8.3.4 onselect事件 166
8.3.5 onclick事件 166
8.3.6 onblur事件 166
8.3.7 onfocus事件 168
8.4 键事件处理 169
8.4.1 onkeydown事件 169
8.4.2 onkeyup事件 172
8.4.3 onkeypress事件 172
第9章 JavaScript和cookie 173
9.1 建立第一个cookie 173
9.2 读取cookie 176
9.3 显示cookie 177
9.4 使用cookie作为计数器 178
9.5 删除cookie 180
9.6 处理多个cookie 182
9.7 显示新内容提醒信息 184
第10章 对象和DOM 189
10.1 关于节点操纵 189
10.1.1 DOM 2和W3C 189
10.1.2 DOM 2术语 189
10.1.3 DOM 3 190
10.2 添加节点 191
10.3 删除节点 192
10.4 删除特定的节点 194
10.5 插入节点 197
10.6 替换节点 199
10.7 用对象字面值编写代码 202
第11章 建立动态页面 206
11.1 在网页上显示当前日期 206
11.2 处理周中的日期 208
11.3 根据时间对消息进行定制 209
11.4 根据时区显示日期 210
11.5 把24小时制转换为12小时制 213
11.6 创建倒数计数器 216
11.7 隐藏和显示层 219
11.8 移动文档中的对象 221
11.9 日期方法 223
第12章 JavaScript应用示例 225
12.1 使用可折叠菜单 225
12.2 添加下拉菜单 228
12.3 改进下拉菜单 230
12.4 带说明的幻灯片 233
12.5 一个无聊的姓名生成器 236
12.6 柱状图生成器 240
12.7 样式表切换器 246
第13章 Ajax简介 253
13.1 Ajax的定义 253
13.2 读取服务器数据 255
13.3 解析服务器数据 261
13.4 刷新服务器数据 266
13.5 从服务器获得数据 267
13.6 用Ajax预览链接 270
13.7 自动补全表单字段 273
第14章 工具包、框架和库 279
14.1 添加jQuery 280
14.2 使用jQuery更新页面 282
14.3 使用jQuery交互 282
14.4 交互与更新 284
14.5 自动完成字段 287
第15章 用jQuery设计页面 289
15.1 突出显示新元素 289
15.2 创建可折叠菜单 292
15.3 创建更漂亮的对话框 294
15.4 条纹表格 298
15.5 表格排序 301
第16章 基于jQuery的应用 306
16.1 以jQuery为基础 306
16.2 使用ThemeRoller定制外观 307
16.3 在页面中添加日历 309
16.4 拖放元素 313
16.5 使用jQuery处理外部数据 316
16.6 使用jQuery插件 322
第17章 bookmarklet 328
17.1 第一个bookmarklet 328
17.2 改变页面的背景颜色 333
17.3 改变页面样式 334
17.4 查询单词 335
17.5 查看图像 337
17.6 显示ISO Latin字符 339
17.7 将RGB值转换为十六进制 340
17.8 对值进行转换 341
17.9 bookmarklet计算器 342
17.10 缩短URL 344
17.11 检验页面 344
17.12 通过电子邮件发送页面 345
17.13 改变页面大小 346
Spring Cloud微服务实战_PDF电子书下载 高清 带索引书签目录_翟永超(著)
√ Spring Cloud是集微服务框架之大成的“全家桶”
√ 深入剖析核心组件,透过实例|源码剖析运行原理
√ 简明上手,指导以极低开发成本实现搭建微服务架构
√ 作者亲历大量生产实践,为该技术社区繁荣主要推动者
本书从时下流行的微服务架构概念出发,详细介绍了Spring Cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,本书主要以示例与源码结合的方式来帮助读者更好地理解这些组件的使用方法以及运行原理。同时,在介绍的过程中,还包含了作者在实践中所遇到的一些问题和解决思路,可供读者在实践中作为参考。本书适合所有Java开发人员,尤其适合正在做微服务架构技术选型或正在实施微服务架构的团队查阅和参考。
目录
第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
请求压缩 214
日志配置 215
第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
Java虚拟机并发编程
作者简介
Venkat Subramaniam 资深Java技术专家、并发编程专家和敏捷技术专家,拥有超过20年的软件开发经验,在Java领域(整个Java平台)、敏捷开发领域有非常深入的研究,并进行了大量实践。他是Agile Developer公司创始人,在美洲、欧洲和亚洲等多个国家和地区开展培训和指导工作,已经帮助数以千计的软件开发人员成功地在其软件项目中运用敏捷方法。
他经常受邀在大型国际软件会议和用户组活动中发表技术演讲,深受欢迎。他著作颇丰,先后独自撰写了《.NET Gotchas》、《Programming Groovy》、《Programming Scala》等经典著作,尤为值得一提的是,他与人合著的《Practices of an Agile Developer》一书获得了2007年的Jolt生产力大奖。
译者简介
薛笛 资深软件开发工程师,精通分布式系统开发和Java相关技术,对JVM有深入的研究。目前就职于腾讯公司,担任高级开发工程师,负责手机QQ、手机Qzone等应用的后台开发。热衷于技术分享,在《程序员》杂志和IBM Developers Work上发表过多篇技术文章,CSDN博客专家。
译者序
前言
第1章 并发的威力与风险
1.1 线程:程序的执行流程
1.2 并发的威力
1.3 并发的风险
1.4 小结
第一部分 并发策略
第2章 分工原则
2.1 从顺序到并发
2.2 在IO密集型应用程序中使用并发技术
2.3 并发方法对IO密集型应用程序的加速效果
2.4 在计算密集型应用程序中使用并发技术
2.5 并发方法对于计算密集型应用程序的加速效果
2.6 有效的并发策略
2.7 小结
第3章 设计方法
3.1 处理状态
3.2 探寻设计选项
3.3 共享可变性设计
3.4 隔离可变性设计
3.5 纯粹不可变性设计
3.6 持久的/不可变的数据结构
3.7 选择一种设计方法
3.8 小结
第二部分 现代Java/JDK并发模型
第4章 可扩展性和线程安全
4.1 用ExecutorService管理线程
4.2 使线程协作
4.3 数据交换
4.4 Java 7 Fork-Join API
4.5 可扩展集合类
4.6 Lock和Synchronized
4.7 小结
第5章 驯服共享可变性
5.1 共享可变性 != Public
5.2 定位并发问题
5.3 保持不变式
5.4 管理好资源
5.5 保证可见性
5.6 增强并发性
5.7 保证原子性
5.8 小结
第三部分 软件事务内存
第6章 软件事务内存导论
6.1 同步与并发水火不容
6.2 对象模型的缺陷
6.3 将实体与状态分离
6.4 软件事务内存
6.5 STM中的事务
6.6 用STM实现并发
6.7 用Akka/Multiverse STM实现并发
6.8 创建事务
6.9 创建嵌套事务
6.10 配置Akka事务
6.11 阻塞事务-有意识地等待
6.12 提交和回滚事件
6.13 集合与事务
6.14 处理写偏斜异常
6.15 STM的局限性
6.16 小结
第7章 在Clojure、Groovy、Java、JRuby和Scala中使用STM
7.1 Clojure STM
7.2 Groovy集成
7.3 Java集成
7.4 JRuby集成
7.5 Scala中的可选方案
7.6 小结
第四部分 基于角色的并发模型
第8章 讨喜的隔离可变性
8.1 用角色实现隔离可变性
8.2 角色的特性
8.3 创建角色
8.4 收发消息
8.5 同时使用多个角色
8.6 多角色协作
8.7 使用类型化角色
8.8 类型化角色和murmurs
8.9 混合使用角色和STM
8.10 使用transactor
8.11 调和类型化角色
8.12 远程角色
8.13 基于角色模型的局限性
8.14 小结
第9章 在Groovy、Java、JRuby和Scala中使用角色
9.1 在Groovy中使用GPars提供的角色实现
9.2 在Java中使用Akka提供的角色实现
9.3 在JRuby中使用Akka提供的Actor实现
9.4 在Scala中使用角色
9.5 小结
第五部分 后记
第10章 并发编程之禅
10.1 慎重选择
10.2 并发:程序员指南
10.3 并发:架构师指南
10.4 明智地进行选择
高性能MySQL(第3版)
第1章 MySQL 架构与历史
1.1 MySQL 逻辑架构
1.1.1 连接管理与安全性
1.1.2 优化与执行
1.2 并发控制
1.2.1 读写锁
1.2.2 锁粒度
1.3 事务
1.3.1 隔离级别
1.3.2 死锁
1.3.3 事务日志
1.3.4 MySQL 中的事务
1.4 多版本并发控制
1.5 MySQL 的存储引擎
1.5.1 InnoDB 存储引擎
1.5.2 MyISAM 存储引擎
1.5.3 MySQL 内建的其他存储引擎
1.5.4 第三方存储引擎
1.5.5 选择合适的引擎
1.5.6 转换表的引擎
1.6 MySQL 时间线(Timeline)
1.7 MySQL 的开发模式
1.8 总结
第2章 MySQL 基准测试
2.1 为什么需要基准测试
2.2 基准测试的策略
2.2.1 测试何种指标
2.3 基准测试方法
2.3.1 设计和规划基准测试
2.3.2 基准测试应该运行多长时间
2.3.3 获取系统性能和状态
2.3.4 获得准确的测试结果
2.3.5 运行基准测试并分析结果
2.3.6 绘图的重要性
2.4 基准测试工具
2.4.1 集成式测试工具
2.4.2 单组件式测试工具
2.5 基准测试案例
2.5.1 http_load
2.5.2 MySQL 基准测试套件 .
2.5.3 sysbench
2.5.4 数据库测试套件中的dbt2 TPC-C 测试
2.5.5 Percona 的TPCC-MySQL 测试工具
2.6 总结
第3章 服务器性能剖析
3.1 性能优化简介
3.1.1 通过性能剖析进行优化
3.1.2 理解性能剖析
3.2 对应用程序进行性能剖析
3.2.1 测量PHP 应用程序
3.3 剖析MySQL 查询
3.3.1 剖析服务器负载
3.3.2 剖析单条查询
3.3.3 使用性能剖析
3.4 诊断间歇性问题
3.4.1 单条查询问题还是服务器问题
3.4.2 捕获诊断数据
3.4.3 一个诊断案例
3.5 其他剖析工具
3.5.1 使用USER_STATISTICS 表
3.5.2 使用strace
3.6 总结
第4章 Schema 与数据类型优化
4.1 选择优化的数据类型
4.1.1 整数类型
4.1.2 实数类型
4.1.3 字符串类型
4.1.4 日期和时间类型
4.1.5 位数据类型
4.1.6 选择标识符(identifier)
4.1.7 特殊类型数据
4.2 MySQL schema 设计中的陷阱
4.3 范式和反范式
4.3.1 范式的优点和缺点
4.3.2 反范式的优点和缺点 .
4.3.3 混用范式化和反范式化
4.4 缓存表和汇总表
4.4.1 物化视图
4.4.2 计数器表
4.5 加快ALTER TABLE 操作的速度
4.5.1 只修改.frm 文件
4.5.2 快速创建MyISAM 索引
4.6 总结
第5章 创建高性能的索引
5.1 索引基础
5.1.1 索引的类型
5.2 索引的优点
5.3 高性能的索引策略
5.3.1 独立的列
5.3.2 前缀索引和索引选择性
5.3.3 多列索引
5.3.4 选择合适的索引列顺序
5.3.5 聚簇索引
5.3.6 覆盖索引
5.3.7 使用索引扫描来做排序
5.3.8 压缩(前缀压缩)索引
5.3.9 冗余和重复索引
5.3.10 未使用的索引
5.3.11 索引和锁
5.4 索引案例学习
5.4.1 支持多种过滤条件
5.4.2 避免多个范围条件
5.4.3 优化排序
5.5 维护索引和表
5.5.1 找到并修复损坏的表 .
5.5.2 更新索引统计信息
5.5.3 减少索引和数据的碎片
5.6 总结
第6章 查询性能优化
6.1 为什么查询速度会慢
6.2 慢查询基础:优化数据访问
6.2.1 是否向服务器请求了不需要的数据
6.2.2 MySQL 是否在扫描额外的记录
6.3 重构查询的方式
6.3.1 一个复杂查询还是多个简单查询
6.3.2 切分查询
6.3.3 分解关联查询
6.4 查询执行的基础
6.4.1 MySQL 客户端/ 服务器通信协议
6.4.2 查询缓存
6.4.3 查询优化处理
6.4.4 查询执行引擎
6.4.5 返回结果给客户端
6.5 MySQL 查询优化器的局限性
6.5.1 关联子查询
6.5.2 UNION 的限制
6.5.3 索引合并优化
6.5.4 等值传递
6.5.5 并行执行
6.5.6 哈希关联
6.5.7 松散索引扫描
6.5.8 最大值和最小值优化 .
6.5.9 在同一个表上查询和更新
6.6 查询优化器的提示(hint)
6.7 优化特定类型的查询
6.7.1 优化COUNT() 查询
6.7.2 优化关联查询
6.7.3 优化子查询
6.7.4 优化GROUP BY 和DISTINCT
6.7.5 优化LIMIT 分页
6.7.6 优化SQL_CALC_FOUND_ROWS
6.7.7 优化UNION 查询
6.7.8 静态查询分析
6.7.9 使用用户自定义变量 .
6.8 案例学习
6.8.1 使用MySQL 构建一个队列表
6.8.2 计算两点之间的距离 .
6.8.3 使用用户自定义函数 .
6.9 总结
第7章 MySQL 高级特性
7.1 分区表
7.1.1 分区表的原理
7.1.2 分区表的类型
7.1.3 如何使用分区表
7.1.4 什么情况下会出问题 .
7.1.5 查询优化
7.1.6 合并表
7.2 视图
7.2.1 可更新视图
7.2.2 视图对性能的影响
7.2.3 视图的限制
7.3 外键约束
7.4 在MySQL 内部存储代码
7.4.1 存储过程和函数
7.4.2 触发器
7.4.3 事件
7.4.4 在存储程序中保留注释
7.5 游标
7.6 绑定变量
7.6.1 绑定变量的优化
7.6.2 SQL 接口的绑定变量
7.6.3 绑定变量的限制
7.7 用户自定义函数
7.8 插件
7.9 字符集和校对
7.9.1 MySQL 如何使用字符集
7.9.2 选择字符集和校对规则
7.9.3 字符集和校对规则如何影响查询
7.10 全文索引
7.10.1 自然语言的全文索引
7.10.2 布尔全文索引
7.10.3 MySQL5.1 中全文索引的变化
7.10.4 全文索引的限制和替代方案
7.10.5 全文索引的配置和优化
7.11 分布式(XA)事务
7.11.1 内部XA 事务
7.11.2 外部XA 事务
7.12 查询缓存
7.12.1 MySQL 如何判断缓存命中
7.12.2 查询缓存如何使用内存
7.12.3 什么情况下查询缓存能发挥作用
7.12.4 如何配置和维护查询缓存
7.12.5 InnoDB 和查询缓存 .
7.12.6 通用查询缓存优化
7.12.7 查询缓存的替代方案
7.13 总结
第8章 优化服务器设置
8.1 MySQL 配置的工作原理
8.1.1 语法、作用域和动态性
8.1.2 设置变量的副作用
8.1.3 入门
8.1.4 通过基准测试迭代优化
8.2 什么不该做
8.3 创建MySQL 配置文件
8.3.1 检查MySQL 服务器状态变量
8.4 配置内存使用
8.4.1 MySQL 可以使用多少内存?
8.4.2 每个连接需要的内存 .
8.4.3 为操作系统保留内存 .
8.4.4 为缓存分配内存
8.4.5 InnoDB 缓冲池(Buffer Pool)
8.4.6 MyISAM 键缓存(Key Caches)
8.4.7 线程缓存
8.4.8 表缓存(Table Cache)
8.4.9 InnoDB 数据字典(Data Dictionary)
8.5 配置MySQL 的I/O 行为
8.5.1 InnoDB I/O 配置
8.5.2 MyISAM 的I/O 配置 .
8.6 配置MySQL 并发 .
8.6.1 InnoDB 并发配置
8.6.2 MyISAM 并发配置
8.7 基于工作负载的配置
8.7.1 优化BLOB 和TEXT 的场景
8.7.2 优化排序(Filesorts).
8.8 完成基本配置
8.9 安全和稳定的设置
8.10 高级InnoDB 设置
8.11 总结
第9章 操作系统和硬件优化
9.1 什么限制了MySQL 的性能
9.2 如何为MySQL 选择CPU
9.2.1 哪个更好:更快的CPU 还是更多的CPU
9.2.2 CPU 架构
9.2.3 扩展到多个CPU 和核心
9.3 平衡内存和磁盘资源
9.3.1 随机I/O 和顺序I/O
9.3.2 缓存,读和写
9.3.3 工作集是什么
9.3.4 找到有效的内存/ 磁盘比例
9.3.5 选择硬盘
9.4 固态存储
9.4.1 闪存概述
9.4.2 闪存技术
9.4.3 闪存的基准测试
9.4.4 固态硬盘驱动器(SSD)
9.4.5 PCIe 存储设备
9.4.6 其他类型的固态存储 .
9.4.7 什么时候应该使用闪存
9.4.8 使用Flashcache
9.4.9 优化固态存储上的MySQL
9.5 为备库选择硬件
9.6 RAID 性能优化
9.6.1 RAID 的故障转移、恢复和镜像
9.6.2 平衡硬件RAID 和软件RAID
9.6.3 RAID 配置和缓存
9.7 SAN 和NAS
9.7.1 SAN 基准测试
9.7.2 使用基于NFS 或SMB 的SAN
9.7.3 MySQL 在SAN 上的性能
9.7.4 应该用SAN 吗
9.8 使用多磁盘卷
9.9 网络配置
9.10 选择操作系统
9.11 选择文件系统
9.12 选择磁盘队列调度策略
9.13 线程
9.14 内存交换区
9.15 操作系统状态
9.15.1 如何阅读vmstat 的输出
9.15.2 如何阅读iostat 的输出
9.15.3 其他有用的工具
9.15.4 CPU 密集型的机器
9.15.5 I/O 密集型的机器
9.15.6 发生内存交换的机器
9.15.7 空闲的机器
9.16 总结
第10章 复制
10.1 复制概述
10.1.1 复制解决的问题
10.1.2 复制如何工作
10.2 配置复制
10.2.1 创建复制账号
10.2.2 配置主库和备库
10.2.3 启动复制
10.2.4 从另一个服务器开始复制
10.2.5 推荐的复制配置
10.3 复制的原理
10.3.1 基于语句的复制
10.3.2 基于行的复制
10.3.3 基于行或基于语句:哪种更优
10.3.4 复制文件
10.3.5 发送复制事件到其他备库
10.3.6 复制过滤器
10.4 复制拓扑
10.4.1 一主库多备库
10.4.2 主动- 主动模式下的主- 主复制
10.4.3 主动- 被动模式下的主- 主复制
10.4.4 拥有备库的主- 主结构
10.4.5 环形复制
10.4.6 主库、分发主库以及备库
10.4.7 树或金字塔形
10.4.8 定制的复制方案
10.5 复制和容量规划
10.5.1 为什么复制无法扩展写操作
10.5.2 备库什么时候开始延迟
10.5.3 规划冗余容量
10.6 复制管理和维护
10.6.1 监控复制
10.6.2 测量备库延迟
10.6.3 确定主备是否一致
10.6.4 从主库重新同步备库
10.6.5 改变主库
10.6.6 在一个主- 主配置中交换角色
10.7 复制的问题和解决方案
10.7.1 数据损坏或丢失的错误
10.7.2 使用非事务型表
10.7.3 混合事务型和非事务型表
10.7.4 不确定语句
10.7.5 主库和备库使用不同的存储引擎
10.7.6 备库发生数据改变
10.7.7 不唯一的服务器ID .
10.7.8 未定义的服务器ID .
10.7.9 对未复制数据的依赖性
10.7.10 丢失的临时表
10.7.11 不复制所有的更新 .
10.7.12 InnoDB 加锁读引起的锁争用
10.7.13 在主- 主复制结构中写入两台主库
10.7.14 过大的复制延迟
10.7.15 来自主库的过大的包
10.7.16 受限制的复制带宽 .
10.7.17 磁盘空间不足
10.7.18 复制的局限性
10.8 复制有多快
10.9 MySQL 复制的高级特性
10.10 其他复制技术
10.11 总结
第11章 可扩展的MySQL
11.1 什么是可扩展性
11.1.1 正式的可扩展性定义
11.2 扩展MySQL
11.2.1 规划可扩展性
11.2.2 为扩展赢得时间
11.2.3 向上扩展
11.2.4 向外扩展
11.2.5 通过多实例扩展
11.2.6 通过集群扩展
11.2.7 向内扩展
11.3 负载均衡
11.3.1 直接连接
11.3.2 引入中间件
11.3.3 一主多备间的负载均衡
11.4 总结
第12章 高可用性
12.1 什么是高可用性
12.2 导致宕机的原因
12.3 如何实现高可用性
12.3.1 提升平均失效时间(MTBF)
12.3.2 降低平均恢复时间(MTTR)
12.4 避免单点失效
12.4.1 共享存储或磁盘复制
12.4.2 MySQL 同步复制
12.4.3 基于复制的冗余
12.5 故障转移和故障恢复
12.5.1 提升备库或切换角色
12.5.2 虚拟IP 地址或IP 接管
12.5.3 中间件解决方案
12.5.4 在应用中处理故障转移
12.6 总结
第13章 云端的MySQL
13.1 云的优点、缺点和相关误解
13.2 MySQL 在云端的经济价值
13.3 云中的MySQL 的可扩展性和高可用性
13.4 四种基础资源
13.5 MySQL 在云主机上的性能
13.5.1 在云端的MySQL 基准测试
13.6 MySQL 数据库即服务(DBaaS)
13.6.1 Amazon RDS
13.6.2 其他DBaaS 解决方案
13.7 总结
第14章 应用层优化
14.1 常见问题
14.2 Web 服务器问题
14.2.1 寻找最优并发度
14.3 缓存
14.3.1 应用层以下的缓存
14.3.2 应用层缓存
14.3.3 缓存控制策略
14.3.4 缓存对象分层
14.3.5 预生成内容
14.3.6 作为基础组件的缓存
14.3.7 使用HandlerSocket 和memcached
14.4 拓展MySQL
14.5 MySQL 的替代品
14.6 总结
第15章 备份与恢复
15.1 为什么要备份
15.2 定义恢复需求
15.3 设计MySQL 备份方案
15.3.1 在线备份还是离线备份
15.3.2 逻辑备份还是物理备份
15.3.3 备份什么
15.3.4 存储引擎和一致性
15.4 管理和备份二进制日志
15.4.1 二进制日志格式
15.4.2 安全地清除老的二进制日志
15.5 备份数据
15.5.1 生成逻辑备份
15.5.2 文件系统快照
15.6 从备份中恢复
15.6.1 恢复物理备份
15.6.2 还原逻辑备份
15.6.3 基于时间点的恢复
15.6.4 更高级的恢复技术
15.6.5 InnoDB 崩溃恢复
15.7 备份和恢复工具
15.7.1 MySQL Enterprise Backup
15.7.2 Percona XtraBackup .
15.7.3 mylvmbackup
15.7.4 Zmanda Recovery Manager
15.7.5 mydumper
15.7.6 mysqldump.
15.8 备份脚本化
15.9 总结
第16章 MySQL 用户工具
16.1 接口工具
16.2 命令行工具集
16.3 SQL 实用集
16.4 监测工具
16.4.1 开源的监控工具
16.4.2 商业监控系统
16.4.3 Innotop 的命令行监控
16.5 总结
附录A MySQL 分支与变种
附录B MySQL 服务器状态
附录C 大文件传输
附录D EXPLAIN
附录E 锁的调试
附录F 在MySQL 上使用Sphinx
索引
重构-改善既有代码的设计
第1章 重构,第一个案例 1
1.1 起点 1
1.2 重构的第一步 7
1.3 分解并重组statement() 8
1.4 运用多态取代与价格相关的条件逻辑 34
1.5 结语 52
第2章 重构原则 53
2.1 何谓重构 53
2.2 为何重构 55
2.3 何时重构 57
2.4 怎么对经理说 60
2.5 重构的难题 62
2.6 重构与设计 66
2.7 重构与性能 69
2.8 重构起源何处 71
第3章 代码的坏味道 75
3.1 Duplicated Code(重复代码) 76
3.2 Long Method(过长函数) 76
3.3 Large Class(过大的类) 78
3.4 Long Parameter List(过长参数列) 78
3.5 Divergent Change(发散式变化) 79
3.6 Shotgun Surgery(霰弹式修改) 80
3.7 Feature Envy(依恋情结) 80
3.8 Data Clumps(数据泥团) 81
3.9 Primitive Obsession(基本类型偏执) 81
3.10 Switch Statements(switch惊悚现身) 82
3.11 Parallel InheritanceHierarchies(平行继承体系) 83
3.12 Lazy Class(冗赘类) 83
3.13 Speculative Generality(夸夸其谈未来性) 83
3.14 Temporary Field(令人迷惑的暂时字段) 84
3.15 Message Chains(过度耦合的消息链) 84
3.16 Middle Man(中间人) 85
3.17 Inappropriate Intimacy(狎昵关系) 85
3.18 Alternative Classes with Different Interfaces(异曲同工的类) 85
3.19 Incomplete Library Class(不完美的库类) 86
3.20 Data Class(纯稚的数据类) 86
3.21 Refused Bequest(被拒绝的遗赠) 87
3.22 Comments(过多的注释) 87
第4章 构筑测试体系 89
4.1 自测试代码的价值 89
4.2 JUnit测试框架 91
4.3 添加更多测试 97
第5章 重构列表 103
5.1 重构的记录格式 103
5.2 寻找引用点 105
5.3 这些重构手法有多成熟 106
第6章 重新组织函数 109
6.1 Extract Method(提炼函数) 110
6.2 Inline Method(内联函数) 117
6.3 Inline Temp(内联临时变量) 119
6.4 Replace Temp with Query(以查询取代临时变量) 120
6.5 Introduce Explaining Variable(引入解释性变量) 124
6.6 Split Temporary Variable(分解临时变量) 128
6.7 Remove Assignments to Parameters(移除对参数的赋值) 131
6.8 Replace Method with Method Object(以函数对象取代函数) 135
6.9 Substitute Algorithm(替换算法) 139
第7章 在对象之间搬移特性 141
7.1 Move Method(搬移函数) 142
7.2 Move Field(搬移字段) 146
7.3 Extract Class(提炼类) 149
7.4 Inline Class(将类内联化) 154
7.5 Hide Delegate(隐藏“委托关系”) 157
7.6 Remove Middle Man(移除中间人) 160
7.7 Introduce Foreign Method(引入外加函数) 162
7.8 Introduce Local Extension(引入本地扩展) 164
第8章 重新组织数据 169
8.1 Self Encapsulate Field(自封装字段) 171
8.2 Replace Data Value with Object(以对象取代数据值) 175
8.3 Change Value to Reference(将值对象改为引用对象) 179
8.4 Change Reference to Value(将引用对象改为值对象) 183
8.5 Replace Array with Object(以对象取代数组) 186
8.6 Duplicate Observed Data(复制“被监视数据”) 189
8.7 Change Unidirectional Association to Bidirectional(将单向关联改为双向关联) 197
8.8 Change Bidirectional Association to Unidirectional(将双向关联改为单向关联) 200
8.9 Replace Magic Number with Symbolic Constant(以字面常量取代魔法数) 204
8.10 Encapsulate Field(封装字段) 206
8.11 Encapsulate Collection(封装集合) 208
8.12 Replace Record with Data Class(以数据类取代记录) 217
8.13 Replace Type Code with Class(以类取代类型码) 218
8.14 Replace Type Code with Subclasses(以子类取代类型码) 223
8.15 Replace Type Code with State/Strategy(以State/Strategy取代类型码) 227
8.16 Replace Subclass with Fields(以字段取代子类) 232
第9章 简化条件表达式 237
9.1 Decompose Conditional(分解条件表达式) 238
9.2 Consolidate Conditional Expression(合并条件表达式) 240
9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 243
9.4 Remove Control Flag(移除控制标记) 245
9.5 Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件表达式) 250
9.6 Replace Conditional with Polymorphism(以多态取代条件表达式) 255
9.7 Introduce Null Object(引入Null对象) 260
9.8 Introduce Assertion(引入断言) 267
第10章 简化函数调用 271
10.1 Rename Method(函数改名) 273
10.2 Add Parameter(添加参数) 275
10.3 Remove Parameter(移除参数) 277
10.4 Separate Query from Modifier(将查询函数和修改函数分离) 279
10.5 Parameterize Method(令函数携带参数) 283
10.6 Replace Parameter with Explicit Methods(以明确函数取代参数) 285
10.7 Preserve Whole Object(保持对象完整) 288
10.8 Replace Parameter with Methods(以函数取代参数) 292
10.9 Introduce Parameter Object(引入参数对象) 295
10.10 Remove Setting Method(移除设值函数) 300
10.11 Hide Method(隐藏函数) 303
10.12 Replace Constructor with Factory Method(以工厂函数取代构造函数) 304
10.13 Encapsulate Downcast(封装向下转型) 308
10.14 Replace Error Code with Exception(以异常取代错误码) 310
10.15 Replace Exception with Test(以测试取代异常) 315
第11章 处理概括关系 319
11.1 Pull Up Field(字段上移) 320
11.2 Pull Up Method(函数上移) 322
11.3 Pull Up Constructor Body(构造函数本体上移) 325
11.4 Push Down Method(函数下移) 328
11.5 Push Down Field(字段下移) 329
11.6 Extract Subclass(提炼子类) 330
11.7 Extract Superclass(提炼超类) 336
11.8 Extract Interface(提炼接口) 341
11.9 Collapse Hierarchy(折叠继承体系) 344
11.10 Form Tem Plate Method(塑造模板函数) 345
11.11 Replace Inheritance with Delegation(以委托取代继承) 352
11.12 Replace Delegation with Inheritance(以继承取代委托) 355
第12章 大型重构 359
12.1 Tease Apart Inheritance(梳理并分解继承体系) 362
12.2 Convert Procedural Design to Objects(将过程化设计转化为对象设计) 368
12.3 Separate Domain from Presentation(将领域和表述/显示分离) 370
12.4 Extract Hierarchy(提炼继承体系) 375
第13章 重构,复用与现实 379
13.1 现实的检验 380
13.2 为什么开发者不愿意重构他们的程序 381
13.3 再论现实的检验 394
13.4 重构的资源和参考资料 394
13.5 从重构联想到软件复用和技术传播 395
13.6 小结 397
13.7 参考文献 397
第14章 重构工具 401
14.1 使用工具进行重构 401
14.2 重构工具的技术标准 403
14.3 重构工具的实用标准 405
14.4 小结 407
第15章 总结 409