自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

空空如也

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条:考虑用序列化代理代替序列化实例

2018-06-10

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

2018-06-10

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 正式版开发手册翻译项目

2018-06-06

Java 企业面试题精选

java基础 OOP JavaSe 数据库 JDBC xml web基础 servlet和JSP spring mybatis Struts2 springMVC Hibernate

2018-06-06

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 测验答案 

2018-06-06

设计模式之禅.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

2018-06-06

你必须知道的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?

2018-06-06

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

2018-06-06

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

2018-06-06

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

2018-05-27

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值的处理 

2018-05-27

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

2018-05-21

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

2018-05-13

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的替代方案 为什么注册服务这么慢?

2018-04-28

Java8 新特性

Java8 新特性Java8 新特性Java8 新特性Java8 新特性Java8 新特性Java8 新特性

2018-04-27

sts插件,eclipse集成sts插件

sts插件,eclipse集成sts插件,sts插件,eclipse集成sts插件.

2018-04-23

官方清理office残余文件

官方清理office残余文件,下载后直接点击运行,下一步,自动清理office残余文件。

2018-04-23

jdk 1.9中文aip,java9中文api

java9中文aip,java开发人员的福音,英文不好的小伙伴福音。

2018-04-23

安装MySQL数据库.docx

自己写的文档,一步一步来,绝对没有错。CentOS的默认数据库已经不再是MySQL了,而是MariaDB。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

2019-06-11

mysql 8.0官方文档

mysql 8.0官方文档.pdf  

2018-10-04

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 安装和配置

2018-08-05

thymeleaf_3.0.5_中文参考手册

Thymeleaf一个优秀的模板引擎,一起学习,一起讨论。 Thymeleaf中文参考手册3.0.5版,本书以Thymeleaf官方文档为基础,科学系统地、循序渐进地将Thymeleaf的使用方法、技术细节、扩展思路铺展开来,带您走进Thymeleaf的欢乐世界

2018-08-04

构建高可用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 小结

2018-07-09

收获,不止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 命名规范

2018-07-09

深入分析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中的其他组件

2018-07-01

《Oracle Database 11g &amp; 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

2018-06-28

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事件驱动编程之监听器

2018-06-24

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 练习

2018-06-21

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章 提高效率的分析 。。。

2018-06-20

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物化视图

2018-06-15

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

2018-06-14

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

2018-06-12

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

2018-06-12

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 明智地进行选择

2018-06-12

高性能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 索引

2018-06-12

重构-改善既有代码的设计

第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

2018-06-10

空空如也

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

TA关注的人

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