下载频道  >  kxjrzyk的资源
  • 代码之殇(原书第2版).[美]Eric Brechner(带书签文字版).pdf

    如果你想了解礼仪,你会直接光顾网站MissManners;如果你在恋爱上遇到什么麻烦,你可能就会浏览论坛DearAbby; 如果你想了解微软到底出了什么状况以及一位名叫I.M.Wright的大个头到底是怎么办事的,那么这本书就是为你而写的。I.M.Wright就是在微软众所周知的EricBrechner。 《代码之殇(原书第2版)》是《代码大全》的姊妹篇,资深软件开发专家30余年工作经验结晶,被誉为“软件行业的财富”,微软公司软件工程师必读之书。 它从软件开发流程、技术、方法、项目管理、团队管理、人际沟通等多角度总结出90余个具有代表性的问题(大多数问题可能会给公司或软件项目带来毁灭性灾难),并给出了问题的解决方案和最佳实践,值得所有软件工程师和项目管理者研读。 本书根据主题的不同,将这90余个问题分为10章:第1章讨论如何通过管理风险、范围和沟通来保障项目按时完成;第2章介绍消除经验主义的大量过程改进的方法与技巧;第3章讨论消除低效率的策略;第4章主要讨论开发者与其他工种之间的关系; 第5章重点阐释软件质量问题;第6章解析软件设计的基本原理和错综复杂的本性;第7章探讨如何规划职业生涯;第8章分析工作与生活中存在的缺点的原因与纠正措施;第9章讨论如何进行有效管理;第10章分析如何成功应对一个软件业务所面临的挑战。 本书赞誉 译者序 序 前言 第1版前言 第1章 项目管理失当 2001年6月1日:“开发时间表、飞猪和其他幻想” 2001年10月1日:“竭尽所能,再论开发时间表” 2002年5月1日:“我们还开心吗?分诊的乐趣” 2004年12月1日:“向死亡进军” 2005年10月1日:“揭露真相” 2008年9月1日:“我得估算一下” 2009年5月1日:“一切从产品开始” 2009年9月1日:“按计划行事” 2010年5月1日:“敏捷的团队合作” 第2章 过程改进,没有灵丹妙药 2002年9月2日:“六西格玛?饶了我吧!” 2004年10月1日:“精益:比五香熏牛肉还好” 2005年4月1日:“客户不满” 2006年3月1日:“敏捷子弹” 2007年10月1日:“你怎么度量你自己?” 2010年10月1日:“有我呢。” 2010年11月1日:“我在缠着你吗?Bug报告。” 2010年12月1日:“生产第一” 2011年2月1日:“周期长度--生产力的老生常谈” 第3章 根除低下的效率 2001年7月1日:“迟到的规范书:生活现实或先天不足” 2002年6月1日:“闲置人手” 2004年6月1日:“我们开会的时候” 2006年7月1日:“停止写规范书,跟功能小组呆在一起” 2007年2月1日:“糟糕的规范书:该指责谁?” 2008年2月1日:“路漫漫,其修远--分布式开发” 2008年12月1日:“伪优化” 2009年4月1日:“世界,尽在掌握” 2011年4月1日:“你必须做个决定” 第4章 跨越工种 2002年4月1日:“现代临时夫妇?开发与测试” 2004年7月1日:“感觉性急--测试者的角色” 2005年5月1日:“模糊逻辑--君子之道” 2005年11月1日:“废除工种--有什么理由搞专业化?” 2009年1月1日:“持续工程的鬼话” 2011年5月1日:“测试不该不受尊重” 第5章 软件质量不是梦 2002年3月1日:“你对你的安全放心吗” 2002年11月1日:“牛肉在哪里?为什么我们要质量” 2004年4月1日:“软件发展之路--从手工艺到工程” 2005年7月1日:“复审一下这个--审查” 2006年10月1日:“对质量的大胆预测” 2008年5月1日:“碰撞测试:恢复” 2008年10月1日:“盯紧标称” 第6章 有时间就做软件设计 2001年9月1日:“错误处理的灾难” 2002年2月1日:“太多的厨师弄馊了一锅好汤--唯一权威” 2004年5月1日:“通过设计解决” 2006年2月1日:“质量的另一面--设计师和架构师” 2006年8月1日:“美妙隔离--更好的设计” 2007年11月1日:“软件性能:你在等什么?” 2008年4月1日:“为您效劳” 2008年8月1日:“我的试验成功了!(原型设计)” 2009年2月1日:“绿野中长满蛆了” 第7章 职业生涯历险记 2001年12月1日:“当熟练就是目标” 2002年10月1日:“人生是不公平的--考核曲线” 2006年11月1日:“职业阶段上的角色” 2007年5月1日:“与世界相连” 2007年11月1日:“找个好工作--发现新角色” 2007年12月1日:“要么带头做事,要么唯命是从,要么赶紧离开” 2008年7月1日:“猩猩套装中的机遇” 2010年3月1日:“我是很负责的” 2010年4月1日:“新来的伙计” 2010年6月1日:“升级” 2010年9月1日:“辉煌时代” 2011年1月1日:“个体领导者” 第8章 自我完善 2002年12月1日:“合作还是分道扬镳--协商” 2005年2月1日:“最好学会平衡生活” 2005年6月1日:“有的是时间” 2005年8月1日:“寓利于乐,控制你的上司” 2006年4月1日:“你在跟我讲吗?沟通的基础” 2007年3月1日:“不是公开与诚实那么简单” 2009年3月1日:“我听着呢” 2009年7月1日:“幻灯片” 2009年12月1日:“不要悲观” 2010年8月1日:“我捅娄子了” 2011年3月1日:“你也不赖” 第9章 成为管理者,而不是邪恶的化身 2003年2月1日:“不仅仅是数字--生产力” 2004年9月1日:“面试流程之外” 2004年11月1日:“最难做的工作--绩效不佳者” 2005年9月1日:“随波逐流--人才的保持和流动” 2005年12月1日:“管理我在行” 2006年5月1日:“比较的恶果--病态团队” 2008年3月1日:“必须改变:掌控改变” 2009年6月1日:“奖赏,很难” 2009年10月1日:“招人总是后悔” 2009年11月1日:“管理馊了” 2010年1月1日:“一对一与多对多” 2010年7月1日:“文化冲击” 第10章 微软,你会喜欢它的 2001年11月1日:“我是怎样懂得不再焦虑并爱上重组的” 2005年3月1日:“你的产品单元经理是个游民吗?” 2006年9月1日:“有幸成为Windows的主宰者” 2006年12月1日:“Google:严重的威胁还是糟糕的拼写?” 2007年4月1日:“中年危机” 2008年11月1日:“虚无主义及其他的创新毒药” 2010年2月1日:“我们是功能型的吗?” 术语表

    2019-05-06
    22
  • Redis设计与实现.黄健宏(epub+mobi+azw3).zip

    《redis设计与实现》全面而完整地讲解了redis的内部机制与实现方式,对redis的大多数单机功能以及所有多机功能的实现原理进行了介绍,展示了这些功能的核心数据结构以及关键的算法思想,图示丰富,描述清晰,并给出大量参考信息。通过阅读本书,读者可以快速 有效地了解redis的内部构造以及运作机制,更好 更高效地使用redis。 《redis设计与实现》主要分为四大部分。第一部分“数据结构与对象”介绍了redis中的各种对象及其数据结构,并说明这些数据结构如何影响对象的功能和性能。第二部分“单机数据库的实现”对redis实现单机数据库的方法进行了介绍,包括数据库 rdb持久化 aof持久化 事件等。第三部分“多机数据库的实现”对redis的sentinel 复制 集群三个多机功能进行了介绍。第四部分“独立功能的实现”对redis中各个相对独立的功能模块进行了介绍,涉及发布与订阅 事务 lua脚本 排序 二进制位数组 慢查询日志 监视器等。本书作者专门维护了www.redisbook.com网站,提供带有详细注释的redis源代码,以及本书相关的更新内容。

    2019-04-29
    12
  • 大数据基础编程、实验和案例教程.林子雨(带详细书签).pdf

    本书以大数据分析全流程为主线,介绍了数据采集、数据存储与管理、数据处理与分析、数据可视化等环节典型软件的安装、使用和基础编程方法。本书内容涵盖操作系统(Linux和Windows)、开发工具(Eclipse)以及大数据相关技术、软件(Sqoop、Kafka、Flume、Hadoop、HDFS、MapReduce、HBase、Hive、Spark、MySQL、MongoDB、Redis、R、Easel.ly、D3、魔镜、ECharts、Tableau)等。同时,本书还提供了丰富的课程实验和综合案例,以及大量免费的在线教学资源,可以较好地满足高等院校大数据教学实际需求。 本书是《大数据技术原理与应用——概念、存储、处理、分析与应用》的“姊妹篇”,可以作为高等院校计算机、信息管理等相关专业的大数据课程辅助教材,用于指导大数据编程实践;也可供相关技术人员参考。 第1章 大数据技术概述 1 1.1 大数据时代 1 1.2 大数据关键技术 2 1.3 大数据软件 3 1.3.1 Hadoop 4 1.3.2 Spark 5 1.3.3 NoSQL数据库 5 1.3.4 数据可视化 6 1.4 内容安排 7 1.5 在线资源 8 1.5.1 在线资源一览表 9 1.5.2 下载专区 9 1.5.3 在线视频 10 1.5.4 拓展阅读 11 1.5.5 大数据课程公共服务平台 11 1.6 本章小结 12 第2章 Linux系统的安装和使用 13 2.1 Linux系统简介 13 2.2 Linux系统安装 13 2.2.1 下载安装文件 14 2.2.2 Linux系统的安装方式 14 2.2.3 安装Linux虚拟机 15 2.2.4 生成Linux虚拟机镜像文件 36 2.3 Linux系统及相关软件的基本使用方法 38 2.3.1 Shell 38 2.3.2 root用户 38 2.3.3 创建普通用户 38 2.3.4 sudo命令 39 2.3.5 常用的Linux系统命令 40 2.3.6 文件解压缩 40 2.3.7 常用的目录 41 2.3.8 目录的权限 41 2.3.9 更新APT 41 2.3.10 切换中英文输入法 43 2.3.11 vim编辑器的使用方法 43 2.3.12 在Windows系统中使用SSH方式登录Linux系统 44 2.3.13 在Linux中安装Eclipse 48 2.3.14 其他使用技巧 49 2.4 关于本书内容的一些约定 49 2.5 本章小结 50 第3章 Hadoop的安装和使用 51 3.1 Hadoop简介 51 3.2 安装Hadoop前的准备工作 52 3.2.1 创建hadoop用户 52 3.2.2 更新APT 52 3.2.3 安装SSH 52 3.2.4 安装Java环境 53 3.3 安装Hadoop 55 3.3.1 下载安装文件 55 3.3.2 单机模式配置 56 3.3.3 伪分布式模式配置 57 3.3.4 分布式模式配置 66 3.3.5 使用Docker搭建Hadoop分布式集群 75 3.4 本章小结 87 第4章 HDFS操作方法和基础编程 88 4.1 HDFS操作常用Shell命令 88 4.1.1 查看命令使用方法 88 4.1.2 HDFS目录操作 90 4.2 利用HDFS的Web管理界面 92 4.3 HDFS编程实践 92 4.3.1 在Eclipse中创建项目 93 4.3.2 为项目添加需要用到的JAR包 94 4.3.3 编写Java应用程序 96 4.3.4 编译运行程序 98 4.3.5 应用程序的部署 100 4.4 本章小结 102 第5章 HBase的安装和基础编程 103 5.1 安装HBase 103 5.1.1 下载安装文件 103 5.1.2 配置环境变量 104 5.1.3 添加用户权限 104 5.1.4 查看HBase版本信息 104 5.2 HBase的配置 105 5.2.1 单机模式配置 105 5.2.2 伪分布式配置 107 5.3 HBase常用Shell命令 109 5.3.1 在HBase中创建表 109 5.3.2 添加数据 110 5.3.3 查看数据 110 5.3.4 删除数据 111 5.3.5 删除表 112 5.3.6 查询历史数据 112 5.3.7 退出HBase数据库 112 5.4 HBase编程实践 113 5.4.1 在Eclipse中创建项目 113 5.4.2 为项目添加需要用到的JAR包 116 5.4.3 编写Java应用程序 117 5.4.4 编译运行程序 123 5.4.5 应用程序的部署 124 5.5 本章小结 124 第6章 典型NoSQL数据库的安装和使用 125 6.1 Redis安装和使用 125 6.1.1 Redis简介 125 6.1.2 安装Redis 125 6.1.3 Redis实例演示 127 6.2 MongoDB的安装和使用 128 6.2.1 MongDB简介 129 6.2.2 安装MongoDB 129 6.2.3 使用Shell命令操作MongoDB 130 6.2.4 Java API编程实例 136 6.3 本章小结 139 第7章 MapReduce基础编程 140 7.1 词频统计任务要求 140 7.2 MapReduce程序编写方法 141 7.2.1 编写Map处理逻辑 141 7.2.2 编写Reduce处理逻辑 141 7.2.3 编写main方法 142 7.2.4 完整的词频统计程序 143 7.3 编译打包程序 144 7.3.1 使用命令行编译打包词频统计程序 145 7.3.2 使用Eclipse编译运行词频统计程序 145 7.4 运行程序 154 7.5 本章小结 156 第8章 数据仓库Hive的安装和使用 157 8.1 Hive的安装 157 8.1.1 下载安装文件 157 8.1.2 配置环境变量 158 8.1.3 修改配置文件 158 8.1.4 安装并配置MySQL 159 8.2 Hive的数据类型 161 8.3 Hive基本操作 162 8.3.1 创建数据库、表、视图 162 8.3.2 删除数据库、表、视图 163 8.3.3 修改数据库、表、视图 164 8.3.4 查看数据库、表、视图 165 8.3.5 描述数据库、表、视图 165 8.3.6 向表中装载数据 166 8.3.7 查询表中数据 166 8.3.8 向表中插入数据或从表中导出数据 166 8.4 Hive应用实例: WordCount 167 8.5 Hive编程的优势 167 8.6 本章小结 168 第9章 Spark的安装和基础编程 169 9.1 基础环境 169 9.2 安装Spark 169 9.2.1 下载安装文件 169 9.2.2 配置相关文件 170 9.3 使用 Spark Shell编写代码 171 9.3.1 启动Spark Shell 171 9.3.2 读取文件 172 9.3.3 编写词频统计程序 174 9.4 编写Spark独立应用程序 174 9.4.1 用Scala语言编写Spark独立应用程序 175 9.4.2 用Java语言编写Spark独立应用程序 178 9.5 本章小结 182 第10章典型的可视化工具的使用方法 183 10.1 Easel.ly信息图制作方法 183 10.1.1 信息图 183 10.1.2 信息图制作基本步骤 183 10.2 D3可视化库的使用方法 186 10.2.1 D3可视化库的安装 187 10.2.2 基本操作 187 10.3 可视化工具Tableau使用方法 194 10.3.1 安装Tableau 195 10.3.2 界面功能介绍 195 10.3.3 Tableau简单操作 197 10.4 使用“魔镜”制作图表 202 10.4.1 “魔镜”简介 202 10.4.2 简单制作实例 202 10.5 使用ECharts图表制作 206 10.5.1 ECharts简介 206 10.5.2 ECharts图表制作方法 206 10.5.3 两个实例 210 10.6 本章小结 217 第11章 数据采集工具的安装和使用 218 11.1 Flume 218 11.1.1 安装Flume 218 11.1.2 两个实例 220 11.2 Kafka 225 11.2.1 Kafka相关概念 225 11.2.2 安装Kafka 225 11.2.3 一个实例 225 11.3 Sqoop 227 11.3.1 下载安装文件 227 11.3.2 修改配置文件 228 11.3.3 配置环境变量 228 11.3.4 添加MySQL驱动程序 228 11.3.5 测试与MySQL的连接 229 11.4 实例: 编写Spark程序使用Kafka数据源 230 11.4.1 Kafka准备工作 230 11.4.2 Spark准备工作 232 11.4.3 编写Spark程序使用Kafka数据源 234 11.5 本章小结 239 第12章 大数据课程综合实验案例 241 12.1 案例简介 241 12.1.1 案例目的 241 12.1.2 适用对象 241 12.1.3 时间安排 241 12.1.4 预备知识 241 12.1.5 硬件要求 242 12.1.6 软件工具 242 12.1.7 数据集 242 12.1.8 案例任务 242 12.2 实验环境搭建 243 12.3 实验步骤概述 244 12.4 本地数据集上传到数据仓库Hive 245 12.4.1 实验数据集的下载 245 12.4.2 数据集的预处理 246 12.4.3 导入数据库 249 12.5 Hive数据分析 253 12.5.1 简单查询分析 253 12.5.2 查询条数统计分析 255 12.5.3 关键字条件查询分析 256 12.5.4 根据用户行为分析 258 12.5.5 用户实时查询分析 259 12.6 Hive、MySQL、HBase数据互导 260 12.6.1 Hive预操作 260 12.6.2 使用Sqoop将数据从Hive导入MySQL 261 12.6.3 使用Sqoop将数据从MySQL导入HBase 265 12.6.4 使用HBase Java API把数据从本地导入到HBase中 269 12.7 利用R进行数据可视化分析 275 12.7.1 安装R 275 12.7.2 安装依赖库 277 12.7.3 可视化分析 278 12.8 本章小结 283 第13章 实验 284 13.1 实验一: 熟悉常用的Linux操作和Hadoop操作 284 13.1.1 实验目的 284 13.1.2 实验平台 284 13.1.3 实验步骤 284 13.1.4 实验报告 286 13.2 实验二: 熟悉常用的HDFS操作 286 13.2.1 实验目的 286 13.2.2 实验平台 286 13.2.3 实验步骤 287 13.2.4 实验报告 287 13.3 实验三: 熟悉常用的HBase操作 288 13.3.1 实验目的 288 13.3.2 实验平台 288 13.3.3 实验步骤 288 13.3.4 实验报告 290 13.4 实验四: NoSQL和关系数据库的操作比较 290 13.4.1 实验目的 290 13.4.2 实验平台 290 13.4.3 实验步骤 290 13.4.4 实验报告 293 13.5 实验五: MapReduce初级编程实践 294 13.5.1 实验目的 294 13.5.2 实验平台 294 13.5.3 实验步骤 294 13.5.4 实验报告 297 附录A 大数据课程实验答案 298 A.1 实验一: 熟悉常用的Linux操作和Hadoop操作 298 A.1.1 实验目的 298 A.1.2 实验平台 298 A.1.3 实验步骤 298 A.2 实验二: 熟悉常用的HDFS操作 303 A.2.1 实验目的 303 A.2.2 实验平台 303 A.2.3 实验步骤 303 A.3 实验三: 熟悉常用的HBase操作 323 A.3.1 实验目的 323 A.3.2 实验平台 323 A.3.3 实验步骤 323 A.4 实验四: NoSQL和关系数据库的操作比较 331 A.4.1 实验目的 331 A.4.2 实验平台 331 A.4.3 实验步骤 332 A.5 实验五: MapReduce初级编程实践 349 A.5.1 实验目的 349 A.5.2 实验平台 349 A.5.3 实验步骤 350 附录B Linux系统中的MySQL安装及常用操作 360 B.1 安装MySQL 360 B.2 MySQL常用操作 363 参考文献 367

    2019-04-16
    33
  • 深入RabbitMQ.[美]Gavin M.Roy(带详细书签).pdf

    本书对 RabbitMQ 这一业界主流的消息中间件做了全面介绍,给出了如何使用 RabbitMQ 构建消息通信系统的方法和实践。本书从 AMQP 协议出发,深入介绍各种消息属性,给出 RabbitMQ 在发送和消费消息上的特性和最佳实践,并阐述基于 RabbitMQ 所特有的交换器组件实现灵活的消息路由机制。同时,本书也讨论了如何利用 RabbitMQ 强大的集群机制实现分布式环境下的消息通信,并展示了如何在 RabbitMQ中,使用其他传输协议以及数据库集成等功能来实现各种定制化需求。本书的读者对象为从事互联网行业中各种分布式和服务化系统开发的研究人员、高等院校计算机相关专业的研究生和本科生,以及广大的 IT 爱好者。 第一篇 RabbitMQ和应用程序体系结构 1 第1章 RabbitMQ基础 3 1.1 RabbitMQ特性以及好处 4 1.1.1 RabbitMQ与Erlang 5 1.1.2 RabbitMQ与AMQP 6 1.2 谁在使用RabbitMQ,在怎么用 7 1.3 松耦合架构的优势 8 1.3.1 解耦你的应用 10 1.3.2 解耦数据库写入 11 1.3.3 无缝添加新功能 12 1.3.4 复制数据与事件 12 1.3.5 多主(Multi-Master)互联化数据与事件 13 1.3.6 高级消息队列模型 14 1.4 小结 16 第2章 使用AMQ协议与Rabbit进行交互 18 2.1 AMQP作为一种RPC传输机制 19 2.1.1 启动会话 20 2.1.2 调整正确的信道 20 2.2 AMQP RPC帧结构 21 2.2.1 AMQP帧组件 21 2.2.2 帧类型 22 2.2.3 将消息编组成帧 23 2.2.4 方法帧结构 24 2.2.5 内容头帧 26 2.2.6 消息体帧 26 2.3 使用协议 27 2.3.1 声明交换器 27 2.3.2 声明队列 28 2.3.3 绑定队列到交换器 29 2.3.4 发布消息到RabbitMQ 29 2.3.5 从RabbitMQ中消费消息 30 2.4 用Python编写消息发布者 32 2.5 从RabbitMQ中获取消息 36 2.6 小结 37 第3章 消息属性详解 38 3.1 合理使用属性 39 3.2 使用content-type属性创建显式的消息契约 41 3.3 通过gzip和content-encoding属性压缩消息大小 43 3.4 使用message-id和correlation-id引用消息 45 3.4.1 Message-id 45 3.4.2 Correlation-id 45 3.5 创建时间:timestamp属性 46 3.6 消息自动过期 47 3.7 使用delivery-mode平衡速度和安全性 48 3.8 使用app-id和user-id验证消息来源 49 3.8.1 app-id 50 3.8.2 user-id 51 3.9 使用type属性获取明细 51 3.10 使用reply-to属性实现动态工作流 52 3.11 使用消息头自定义属性 53 3.12 优先级属性 54 3.13 不能使用的属性:cluster-id/reserved 54 3.14 小结 55 第4章 消息发布的性能权衡 58 4.1 平衡投递速度与可靠投递 59 4.1.1 如果没有保证机制我们能期待什么 60 4.1.2 使用mandatory设置,RabbitMQ将不接受不可路由消息 62 4.1.3 发布者确认作为事务的轻量级替代方法 64 4.1.4 使用备用交换器处理无法路由的消息 66 4.1.5 基于事务的批量处理 68 4.1.6 使用HA队列避免节点故障 70 4.1.7 HA队列与事务 72 4.1.8 通过设置delivery-mode为2将消息持久化到磁盘 72 4.2 RabbitMQ回推 75 4.2.1 使用rabbitpy来检测连接状态 77 4.2.2 使用管理API管理连接状态 77 4.3 小结 78 第5章 消费消息,避免拉取 79 5.1 对比Basic.Get 和Basic.Consume 80 5.1.1 Basic.Get 80 5.1.2 Basic.Consume 82 5.2 优化消费者性能 84 5.2.1 使用no-ack模式实现更快的吞吐量 85 5.2.2 通过服务质量设置控制消费者预取 86 5.2.3 消费者使用事务 89 5.3 拒绝消息 90 5.3.1 Basic.Reject 90 5.3.2 Basic.Nack 91 5.3.3 死信交换器 92 5.4 控制队列 94 5.4.1 临时队列 94 5.4.2 永久队列 97 5.4.3 任意队列设置 99 5.5 小结 99 第6章 消息路由模式 101 6.1 通过direct交换器路由消息 102 6.1.1 创建应用架构 103 6.1.2 创建RPC工作者 107 6.1.3 编写简单的RPC发布者 110 6.2 通过fanout交换器广播消息 115 6.2.1 修改面部检测消费者 116 6.2.2 创建一个简单的图片哈希消费者 117 6.3 使用topic交换器有选择地路由消息 119 6.4 使用headers交换器有选择地路由消息 122 6.5 交换器性能基准 124 6.6 交换器间路由 125 6.7 使用一致性哈希交换器路由消息 127 6.8 小结 131 第二篇 管理数据中心或云中的RabbitMQ 133 第7章 RabbitMQ集群 135 7.1 集群简介 136 7.1.1 集群和管理界面 137 7.1.2 集群节点类型 138 7.1.3 集群和队列行为 139 7.2 集群设置 142 7.2.1 虚拟机设置 143 7.2.2 向集群中添加节点 144 7.3 小结 147 第8章 跨集群的消息分发 148 8.1 联合交换器和联合队列 149 8.1.1 联合交换器 149 8.1.2 联合队列 152 8.2 创建RabbitMQ虚拟机 153 8.2.1 创建首个实例 153 8.2.2 复制EC2实例 159 8.3 连接上游节点 162 8.3.1 定义联合中的上游节点 162 8.3.2 定义策略 164 8.3.3 利用上游集合 167 8.3.4 双向联合交换器 170 8.3.5 使用联合来升级集群 171 8.4 小结 173 第三篇 集成与定制 175 第9章 使用替代协议 177 9.1 MQTT和RabbitMQ 178 9.1.1 MQTT协议 178 9.1.2 通过MQTT发送消息 182 9.1.3 MQTT订阅者 184 9.1.4 MQTT插件配置 187 9.2 STOMP和RabbitMQ 189 9.2.1 STOMP协议 190 9.2.2 发布消息 191 9.2.3 消费消息 195 9.2.4 配置STOMP插件 198 9.2.5 在Web浏览器中使用STOMP 199 9.3 通过HTTP进行无状态发布 200 9.3.1 statelessd的由来 200 9.3.2 使用statelessd 201 9.3.3 运营架构 202 9.3.4 通过statelessd来发布消息 203 9.4 小结 203 第10章 数据库集成 205 10.1 PostgreSQL扩展:pg_amqp 206 10.1.1 安装pg_amqp扩展 207 10.1.2 配置pg_amqp扩展 209 10.1.3 通过pg_amqp发送消息 210 10.2 监听PostgreSQL通知 212 10.2.1 安装PostgreSQL LISTEN交换器 213 10.2.2 基于策略的配置 215 10.2.3 创建交换器 217 10.2.4 创建并绑定测试队列 217 10.2.5 通过NOTIFY发送消息 218 10.3 将消息存入InfluxDB中 219 10.3.1 InfluxDB的安装与设置 220 10.3.2 安装InfluxDB存储交换器 222 10.3.3 创建测试交换器 223 10.3.4 测试交换器 224 10.4 小结 227 附录 准备就绪 228 A.1 安装VirtualBox 228 A.2 安装Vagrant 230 A.3 设置Vagrant虚拟机 233 A.4 确认安装 234 A.5 小结 236

    2019-04-11
    33
  • C和C++程序员面试秘笈.董山海(带详细书签).pdf

    众多高 级语言都从C/C++有所借鉴,所以说C/C++的语言基础对从事软件开发的人员来说非常重要。 《C和C++程序员面试秘笈》是一本解析C/C++面试题的书,可以帮助求职者更好地准备面试。《C和C++程序员面试秘笈》共包含12章,囊括了目前企业中常见的面试题类型和考点,包括C/C++程序基础,预处理、const、static与sizeof,引用和指针,字符串,位运算与嵌入式编程,C++面向对象,C++继承和多态,数据结构,排序,泛型编程,STL,算法和逻辑思维等最常见的面试题。《C和C++程序员面试秘笈》通过技术点解析、代码辅佐的方式让读者能深刻领会每个考点背后的技术。 《C和C++程序员面试秘笈》紧扣面试精髓,对各种技术的剖析一针见血,是目前想找工作的C/C++程序员和刚毕业的大学生的面试宝典。 第1章 C/C++程序基础 1 面试题1 看代码写输出——一般赋值语句 1 面试题2 看代码写输出——C++域操作符 3 面试题3 看代码写输出——i++和++i的区别 4 面试题4 i++与++i哪个效率更高 6 面试题5 选择编程风格良好的条件比较语句 7 面试题6 看代码写结果——有符号变量与无符号变量的值的转换 9 面试题7 不使用任何中间变量如何将a、b的值进行交换 10 面试题8 C++与C有什么不同 12 面试题9 如何理解C++是面向对象化的,而C是面向过程化的 13 面试题10 标准头文件的结构 13 面试题11 #include 和#include "head.h" 有什么区别 15 面试题12 C++中main函数执行完后还执行其他语句吗 15 第2章 预处理、const、static与sizeof 17 面试题1 预处理的使用 17 面试题2 用#define实现宏并求最大值和最小值 19 面试题3 宏定义的使用 20 面试题4 看代码写输出——宏参数的连接 21 面试题5 用宏定义得到一个字的高位和低位字节 21 面试题6 用宏定义得到一个数组所含的元素个数 22 面试题7 找错——const的使用 23 面试题8 说明const与#define的特点及区别 24 面试题9 C++中const有什么作用(到少说出3个) 25 面试题10 static有什么作用(到少说出2个) 25 面试题11 static全局变量与普通的全局变量有什么区别 26 面试题12 看代码写结果——C++类的静态成员 27 面试题13 使用sizeof计算普通变量所占空间大小 29 面试题14 使用sizeof计算类对象所占空间大小 30 面试题15 使用sizeof计算含有虚函数的类对象的空间大小 33 面试题16 使用sizeof计算虚拟继承的类对象的空间大小 35 面试题18 sizeof与strlen有哪些区别 37 面试题19 sizeof有哪些用途 38 面试题20 找错——使用strlen()函数代替sizeof计算字符串长度 38 面试题21 使用sizeof计算联合体的大小 40 面试题22 #pragma pack的作用 42 面试题23 为什么要引入内联函数 43 面试题24 为什么inline能很好地取代表达式形式的预定义 43 面试题25 说明内联函数使用的场合 44 面试题26 为什么不把所有的函数都定义成内联函数 45 面试题27 内联函数与宏有什么区别 45 第3章 引用和指针 47 面试题1 一般变量引用 47 面试题2 指针变量引用 49 面试题3 看代码找错误——变量引用 50 面试题4 如何交换两个字符串 51 面试题5 程序查错——参数引用 52 面试题6 参数引用的常见错误 54 面试题7 指针和引用有什么区别 55 面试题8 为什么传引用比传指针安全 56 面试题9 复杂指针的声明 57 面试题10 看代码写结果——用指针赋值 59 面试题11 指针加减操作 60 面试题12 指针比较 61 面试题13 看代码找错误——内存访问违规 62 面试题14 指针的隐式转换 63 面试题15 指针常量与常量指针的区别 64 面试题16 指针的区别 65 面试题17 找错——常量指针和指针常量的作用 66 面试题18 this指针的正确叙述 67 面试题19 看代码写结果——this指针 68 面试题20 指针数组与数组指针的区别 69 面试题21 找错——指针数组和数组指针的使用 71 面试题22 函数指针与指针函数的区别 72 面试题23 数组指针与函数指针的定义 74 面试题24 各种指针的定义 75 面试题25 代码改错——函数指针的使用 75 面试题26 看代码写结果——函数指针的使用 77 面试题27 typedef用于函数指针定义 78 面试题28 什么是“野指针” 78 面试题29 看代码查错——“野指针”的危害 79 面试题30 有了malloc/free,为什么还要new/delete 80 面试题31 程序改错——指针的初始化 81 面试题32 各种内存分配和释放的函数的联系和区别 85 面试题33 程序找错——动态内存的传递 86 面试题34 动态内存的传递 88 面试题35 比较分析两个代码段的输出——动态内存的传递 90 面试题36 程序查错——“野指针”用于变量值的互换 92 面试题37 内存的分配方式有几种 92 面试题38 什么是句柄 93 面试题39 指针与句柄有什么区别 94 第4章 字符串 96 面试题1 使用库函数将数字转换为字符串 96 面试题2 不使用库函数将整数转换为字符串 98 面试题3 使用库函数将字符串转换为数字 100 面试题4 不使用库函数将字符串转换为数字 101 面试题5 编程实现strcpy函数 102 面试题6 编程实现memcpy函数 104 面试题7 strcpy与memcpy的区别 105 面试题8 改错——数组越界 105 面试题9 分析程序——数组越界 107 面试题10 分析程序——打印操作可能产生数组越界 108 面试题11 编程实现计算字符串的长度 108 面试题12 编程实现字符串中子串的查找 110 面试题13 编程实现字符串中各单词的翻转 111 面试题14 编程判断字符串是否为回文 113 面试题15 编程实现stcmp库函数 115 面试题16 编程查找两个字符串的最大公共子串 116 面试题17 不使用printf,将十进制数以二进制和十六进制的形式输出 118 面试题18 编程实现转换字符串、插入字符的个数 120 面试题19 字符串编码例题 121 面试题20 反转字符串,但其指定的子串不反转 124 面试题21 编写字符串反转函数strrev 126 面试题22 编程实现任意长度的两个正整数相加 129 面试题23 编程实现字符串的循环右移 131 面试题24 删除指定长度的字符 132 面试题25 字符串的排序及交换 134 面试题26 编程实现删除字符串中所有指定的字符 135 面试题27 分析代码——使用strcat连接字符串 137 面试题28 编程实现库函数strcat 138 面试题29 编程计算含有汉字的字符串长度 139 面试题30 找出01字符串中0和1连续出现的最大次数 140 面试题31 编程实现字符串的替换 142 第5章 位运算与嵌入式编程 144 面试题1 位制转换 144 面试题2 看代码写出结果——位运算 146 面试题3 设置或清除特定的位 147 面试题4 计算一个字节里有多少bit被置1 148 面试题5 位运算改错 149 面试题6 运用位运算交换a、b两数 150 面试题7 列举并解释C++中的4种运算符转化以及它们的不同点 151 面试题8 用#define声明一个常数 152 面试题9 如何用C语言编写死循环 152 面试题10 如何访问特定位置的内存 153 面试题11 对中断服务代码的评论 154 面试题12 看代码写结果——整数的自动转换 154 面试题13 关键字static的作用是什么 155 面试题14 关键字volatile有什么含义 156 面试题15 判断处理器是Big_endian还是Little_endian 156 面试题16 评价代码片断——处理器字长 157 第6章 C++面向对象 159 面试题1 描述面向对象技术的基本概念 159 面试题2 判断题——类的基本概念 160 面试题3 选择题——C++与C语言相比的改进 161 面试题4 class和struct有什么区别 161 面试题5 改错——C++类对象的声明 165 面试题6 看代码写结果——C++类成员的访问 165 面试题7 找错——类成员的初始化 166 面试题8 看代码写结果——静态成员变量的使用 167 面试题9 与全局对象相比,使用静态数据成员有什么优势 169 面试题10 有哪几种情况只能用intialization list,而不能用assignment 169 面试题11 静态成员的错误使用 171 面试题12 对静态数据成员的正确描述 173 面试题13 main函数执行前还会执行什么代码 173 面试题14 C++中的空类默认会产生哪些类成员函数 174 面试题15 构造函数和析构函数是否可以被重载 175 面试题16 关于重载构造函数的调用 175 面试题17 构造函数的使用 176 面试题18 构造函数explicit与普通构造函数的区别 178 面试题19 explicit构造函数的作用 179 面试题20 C++中虚析构函数的作用是什么 180 面试题21 看代码写结果——析构函数的执行顺序 182 面试题22 复制构造函数是什么?什么是深复制和浅复制 183 面试题23 编译器与默认的copy constructor 187 面试题24 写一个继承类的复制函数 187 面试题25 复制构造函数与赋值函数有什么区别 188 面试题26 编写类String的构造函数、析构函数和赋值函数 189 面试题27 了解C++类各成员函数的关系 192 面试题28 C++类的临时对象 193 面试题29 复制构造函数和析构函数 196 面试题30 看代码写结果——C++静态成员和临时对象 198 面试题31 什么是临时对象?临时对象在什么情况下产生 200 面试题32 为什么C语言不支持函数重载而C++能支持 202 面试题33 判断题——函数重载的正确声明 204 面试题34 重载和覆写有什么区别 205 面试题35 编程题——MyString类的编写 206 面试题36 编程题——各类运算符重载函数的编写 209 面试题37 看代码写输出——new操作符重载的使用 214 第7章 C++继承和多态 216 面试题1 C++类继承的三种关系 217 面试题2 C++继承关系 219 面试题3 看代码找错——C++继承 221 面试题4 私有继承有什么作用 222 面试题5 私有继承和组合有什么相同点和不同点 223 面试题6 什么是多态 226 面试题7 虚函数是怎么实现的 228 面试题8 构造函数调用虚函数 229 面试题9 看代码写结果——虚函数的作用 230 面试题10 看代码写结果——虚函数 232 面试题11 虚函数相关的选择题 234 面试题12 为什么需要多重继承?它的优缺点是什么 235 面试题13 多重继承中的二义性 238 面试题14 多重继承二义性的消除 239 面试题15 多重继承和虚拟继承 240 面试题16 为什么要引入抽象基类和纯虚函数 242 面试题17 虚函数与纯虚函数有什么区别 244 面试题18 程序找错——抽象类不能实例化 244 面试题19 应用题——用面向对象的方法进行设计 245 面试题20 什么是COM 248 面试题21 COM组件有什么特点 249 面试题22 如何理解COM对象和接口 250 面试题23 简述COM、ActiveX和DCOM 251 面试题24 什么是DLL HELL 252 第8章 数据结构 259 面试题1 编程实现一个单链表的建立 260 面试题2 编程实现一个单链表的测长 261 面试题3 编程实现一个单链表的打印 262 面试题4 编程实现一个单链表节点的查找 263 面试题5 编程实现一个单链表节点的插入 264 面试题6 编程实现一个单链表节点的删除 264 面试题7 实现一个单链表的逆置 266 面试题8 寻找单链表的中间元素 267 面试题9 单链表的正向排序 267 面试题10 判断链表是否存在环型链表问题 269 面试题11 有序单链表的合并 270 面试题12 约瑟夫问题的解答 273 面试题13 编程实现一个双向链表的建立 275 面试题14 编程实现一个双向链表的测长 277 面试题15 编程实现一个双向链表的打印 277 面试题16 编程实现一个双向链表节点的查找 278 面试题17 编程实现一个双向链表节点的插入 279 面试题18 编程实现一个双向链表节点的删除 279 面试题19 实现有序双向循环链表的插入操作 280 面试题20 删除两个双向循环链表的相同结点 283 面试题21 编程实现队列的入队、出队、测长、打印 287 面试题22 队列和栈有什么区别 291 面试题23 简答题——队列和栈的使用 292 面试题24 选择题——队列和栈的区别 292 面试题25 使用队列实现栈 293 面试题26 选择题——栈的使用 297 面试题27 用C++实现一个二叉排序树 298 面试题28 使用递归与非递归方法实现中序遍历 305 面试题29 使用递归与非递归方法实现先序遍历 306 面试题30 使用递归与非递归方法实现后序遍历 308 面试题31 编写层次遍历二叉树的算法 310 面试题32 编写判别给定二叉树是否为二叉排序树的算法 312 第9章 排序 314 面试题1 编程实现直接插入排序 314 面试题2 编程实现希尔(Shell)排序 317 面试题3 编程实现冒泡排序 319 面试题4 编程实现快速排序 322 面试题5 编程实现选择排序 324 面试题6 编程实现堆排序 326 面试题7 实现归并排序的算法(使用自顶向下的方法) 329 面试题8 使用基数排序对整数进行排序 332 面试题9 选择题——各排序算法速度的性能比较 335 面试题10 各排序算法的时间复杂度的比较 336 第10章 泛型编程 338 面试题1 举例说明什么是泛型编程 338 面试题2 函数模板与类模板分别是什么 340 面试题3 使用模板有什么缺点?如何避免 343 面试题4 选择题——类模板的实例化 345 面试题5 解释什么是模板的特化 346 面试题6 部分模板特例化和全部模板特例化有什么区别 348 面试题7 使用函数模板对普通函数进行泛型化 349 面试题8 使用类模板对类进行泛型化 351 面试题9 通过类模板设计符合要求的公共类 352 第11章 STL(标准模板库) 355 面试题1 什么是STL 356 面试题2 具体说明STL如何实现vector 358 面试题3 看代码回答问题——vector容器中iterator的使用 360 面试题4 看代码找错——vector容器的使用 361 面试题5 把一个文件中的整数排序后输出到另一个文件中 363 面试题6 list和vector有什么区别 365 面试题7 分析代码问题并修正——list和vector容器的使用 366 面试题8 stl::deque是一种什么数据类型 368 面试题9 在做应用时如何选择vector和deque 369 面试题10 看代码找错——适配器stack和queue的使用 370 面试题11 举例说明set的用法 372 面试题12 举例说明map的用法 373 面试题13 STL中map内部是怎么实现的 374 面试题14 map和hashmap有什么区别 375 面试题15 什么是STL算法 375 面试题16 分析代码功能——STL算法的使用 377 面试题17 vector中的erase方法与algorithm中的remove有什么区别 378 面试题18 什么是auto_ptr(STL智能指针)?如何使用 380 面试题19 看代码找错——智能指针auto_ptr的使用 382 面试题20 智能指针如何实现 382 面试题21 使用std::auto_ptr有什么方面的限制 385 面试题22 如何理解函数对象 386 面试题23 如何使用bind1st和bind2nd 388 面试题24 实现bind1st的函数配接器 389 第12章 智力测试题 392 面试题1 元帅领兵 393 面试题2 两龟赛跑 393 面试题3 电视机的价格 394 面试题4 这块石头 有多重 395 面试题5 四兄弟的年龄 396 面试题6 爬楼梯 396 面试题7 3只砝码称东西 397 面试题8 称米 398 面试题9 比萨饼交易 399 面试题10 伊沙贝拉时装精品屋 399 面试题11 烧绳子的时间计算问题 400 面试题12 给工人的金条 401 面试题13 被污染的药丸 401 面试题14 称量罐头 402 面试题15 有20元钱可以喝到几瓶汽水 403 面试题16 判断鸟的飞行距离 404 面试题17 按劳取酬 405 面试题18 空姐分配物品 405 面试题19 消失的1元钱 406 面试题20 分物品 407 面试题21 称出4升的水 408 面试题22 通向诚实国和说谎国的路 409 面试题23 排序问题 410 面试题24 两个同一颜色的果冻 411 面试题25 怎样称才能用3次就找到球 412 面试题26 计算生日是哪一 天 414 面试题27 3个女儿的年龄 416 面试题28 取回黑袜和白袜 417 面试题29 谁先击完40下鼠标 418 面试题30 聪明人是怎样发财的 419 面试题31 谁打碎了花瓶 419 面试题32 大有作为 421 面试题33 宴会桌旁 422 面试题34 过桥问题 424 面试题35 一句不可信的话 425 面试题36 海盗分宝石 426 面试题37 如何推算有几条病狗 427 面试题38 判断谁是盗窃犯 428 面试题39 向导 429 面试题40 扑克牌问题 431 面试题41 谁是机械师 432 面试题42 帽子的颜色 433 面试题43 两个大于1小于10的整数 434 面试题44 谁用1美元的纸币付了糖果钱 437 面试题45 有哪些人参加了会议 441 面试题46 小虫 442 面试题47 相遇 443 面试题48 约会 444 面试题49 30秒答题 445 面试题50 1分钟答题 446 面试题51 现代斯芬克斯之谜 447 面试题52 所有开着的灯的编号 448

    2019-04-11
    19
  • 渗透测试高手:打造固若金汤的安全网络.[美]Wil Allsopp(带详细书签).pdf

    如何使用专业黑客的技术构建不可逾越的防线传统的渗透测试往往过于刻板,仅快速审计目标网络和应用程序的安全性。高价值目标必须进一步加固自己的IT基础设施以防御当前高度积极和专业的攻击者,而这只能依靠精通专业的攻击者手段和渗透测试技术的安全分析师与工程师来实现。 《渗透测试高手 打造固若金汤的安全网络》由曾为《财富》世界100强企业执行入侵与渗透测试的顶级安全专家撰写,旨在向读者传授证书培训或常规防御扫描器未涉及的针对并攻陷高安全性环境的技术。作者Wil Allsopp并未局限于Kali linux和Metasploit,而是向读者提供了一个复杂且高度现实的攻击模拟。他综合社会工程学、编程及漏洞利用等多学科的知识,向读者介绍如何: ● 发现并创建攻击向量 ● 在目标企业中隐蔽地移动,侦察网络和操作系统信息,并测试架构 ● 通过社会工程学策略完成初始攻击 ● 攻陷目标机器并在其上部署稳健的命令与控制基础设施 ● 使用高级数据渗漏技术——即使目标并未直接连接到互联网 ● 使用高级权限提升方法 ● 利用收集到的用户名和密码等凭据渗透至网络及操作系统 ● 使用VBA、Windows Scripting Host、C、Java、JavaScript及Flash等编写自定义的代码 第1章 医疗记录的安全性 1 1.1 高级持续性威胁仿真介绍 2 1.2 背景与任务简介 2 1.3 攻击载荷传递第一部分:学会使用VBA宏指令 5 1.3.1 如何不发动VBA攻击 5 1.3.2 检查VBA代码 9 1.3.3 避免使用shellcode 9 1.3.4 自动执行代码 10 1.3.5 使用VBA/VBS双传输器 11 1.3.6 尽量保持代码的通用 11 1.3.7 代码混淆 12 1.3.8 引诱用户 13 1.4 命令与控制第一部分:基础知识与要领 16 1.5 攻击 19 1.6 小结 22 1.7 练习 23 第2章 数据窃取研究 25 2.1 背景与任务介绍 26 2.2 攻击载荷传递第二部分:使用Java小程序 27 2.2.1 Java代码签名 27 2.2.2 编写一个Java小程序传输器 30 2.2.3 编造令人信服的借口 33 2.2.4 对传输器签名 34 2.3 攻击载荷持久性的相关要点 35 2.3.1 Windows操作系统 35 2.3.2 Linux操作系统 36 2.3.3 OSX操作系统 38 2.4 命令与控制第二部分:高级攻击管理 39 2.4.1 隐蔽性增强及多系统管理 39 2.4.2 实现命令结构 40 2.4.3 创建管理界面 41 2.5 攻击 42 2.5.1 态势感知 42 2.5.2 通过活动目录收集情报 43 2.5.3 分析活动目录的输出 44 2.5.4 攻击脆弱的二级系统 45 2.5.5 通过密码重用攻击主要的目标系统 46 2.6 小结 47 2.7 练习 47 第3章 21世纪的抢劫 49 3.1 可能奏效的方式 49 3.2 一切皆不安全 50 3.3 部门政治 50 3.4 APT建模与传统渗透测试 51 3.5 背景与任务简介 51 3.6 命令与控制第三部分:高级通道与数据窃取 52 3.6.1 有关入侵检测和安全运维中心的注意事项 55 3.6.2 SOC小组 56 3.6.3 SOC的运转机制 56 3.6.4 SOC反应时间与干扰 57 3.6.5 规避入侵检测系统 57 3.6.6 事件误报 58 3.7 攻击载荷传递第三部分:物理媒介 58 3.7.1 一种全新的社会工程学攻击方式 59 3.7.2 目标位置分析 59 3.7.3 收集目标 59 3.8 攻击 62 3.9 小结 64 3.10 练习 64 第4章 制药业 65 4.1 背景与任务简介 66 4.2 攻击载荷传递第四部分:客户端利用 67 4.2.1 Flash的诅咒 67 4.2.2 至少你可以弃用Flash 68 4.2.3 内存崩溃缺陷:相关注意事项 68 4.2.4 寻找攻击目标 70 4.3 命令与控制第四部分:集成Metasploit 72 4.3.1 基本的Metasploit集成 72 4.3.2 服务器配置 73 4.3.3 黑帽子/白帽子 73 4.3.4 反病毒软件 74 4.3.5 跳板攻击 75 4.4 攻击 75 4.4.1 硬盘防火墙失效 75 4.4.2 Metasploit验证 76 4.4.3 实质 77 4.4.4 Admin的益处 78 4.4.5 典型的子网克隆 81 4.4.6 恢复密码 81 4.4.7 创建数据清单 83 4.5 小结 85 4.6 练习 85 第5章 枪支弹药 87 5.1 背景与任务简介 88 5.2 攻击载荷传递第五部分:仿真勒索软件攻击 89 5.2.1 勒索软件简介 90 5.2.2 仿真勒索软件攻击的原因 90 5.2.3 勒索软件仿真模型 90 5.2.4 非对称加密 91 5.2.5 远程生成密钥 92 5.2.6 锁定目标文件 92 5.2.7 索要赎金 93 5.2.8 维持C2 94 5.2.9 结语 94 5.3 命令与控制第五部分:创建隐蔽的C2解决方案 94 5.3.1 洋葱路由器简介 94 5.3.2 torrc文件 95 5.3.3 配置C2代理使用Tor网络 96 5.3.4 Tor网桥 97 5.4 有关隐蔽性及部署的新策略 97 5.4.1 VBA Redux:另一种命令行攻击向量 97 5.4.2 PowerShell 98 5.4.3 FTP 98 5.4.4 Windows脚本宿主(WSH) 99 5.4.5 BITSadmin 99 5.4.6 对攻击载荷进行简单混淆 100 5.4.7 规避反病毒软件的其他策略 102 5.5 攻击 105 5.5.1 枪械设计工程师的回答 105 5.5.2 识别玩家 106 5.5.3 (更)灵活的VBA文档部署 108 5.5.4 电子邮件与保存的密码 109 5.5.5 键盘记录器与cookies 111 5.5.6 总结 111 5.6 小结 112 5.7 练习 113 第6章 犯罪情报 115 6.1 攻击载荷传递第六部分:使用HTA部署 116 6.2 在Microsoft Windows系统中提升权限 118 6.2.1 通过本地漏洞利用提升权限 119 6.2.2 利用自动化操作系统安装 122 6.2.3 利用任务调度器 123 6.2.4 利用易受攻击的服务 124 6.2.5 DLL劫持 126 6.2.6 挖掘Windows注册表 129 6.3 命令与控制第六部分:爬虫盒 129 6.3.1 爬虫盒说明书 130 6.3.2 Raspberry Pi及其组件介绍 130 6.3.3 通用输入/输出 131 6.3.4 选择操作系统 132 6.3.5 配置全硬盘加密 132 6.3.6 隐蔽性 136 6.3.7 使用3G/4G配置带外命令与控制 136 6.3.8 创建透明网桥 139 6.3.9 将Raspberry Pi用作远程键盘记录器的无线访问点 140 6.4 攻击 143 6.5 小结 145 6.6 练习 145 第7章 战争游戏 147 7.1 背景与任务简介 148 7.2 攻击载荷传递第七部分:USB霰弹攻击法 149 7.2.1 USB存储媒介 149 7.2.2 简单的社会工程学 151 7.3 命令与控制第七部分:高级自主数据渗漏 151 7.3.1 “自主”的含义 151 7.3.2 不同的数据出口方式 151 7.4 攻击 155 7.4.1 构建攻击保密网络的攻击载荷 157 7.4.2 隐蔽安装3G/4G软件 157 7.4.3 攻击目标并部署攻击载荷 158 7.4.4 有效的“突发式”数据渗漏 159 7.5 小结 159 7.6 练习 160 第8章 攻击出版社 161 8.1 简介 161 8.2 社会工程学中的高级概念 162 8.3 命令与控制中的实验概念 166 8.3.1 方案一:C2服务器引导代理管理 166 8.3.2 方案二:半自主C2代理管理 168 8.4 攻击载荷传递第八部分:令人眼花缭乱的网页内容 170 8.4.1 Java Web Start 171 8.4.2 Adobe Air 171 8.4.3 浅谈HTML5 172 8.5 攻击 172 8.6 小结 175 8.7 练习 175

    2019-04-11
    20
  • 深度学习之PyTorch实战计算机视觉.唐进民(带详细书签).pdf

    计算机视觉、自然语言处理和语音识别是目前深度学习领域很热门的三大应用方向,《深度学习之PyTorch实战计算机视觉》旨在帮助零基础或基础较为薄弱的读者入门深度学习,达到能够独立使用深度学习知识处理计算机视觉问题的水平。通过阅读本书,读者将学到人工智能的基础概念及Python 编程技能,掌握PyTorch 的使用方法,学到深度学习相关的理论知识,比如卷积神经网络、循环神经网络、自动编码器,等等。在掌握深度学习理论和编程技能之后,读者还会学到如何基于PyTorch 深度学习框架实战计算机视觉。《深度学习之PyTorch实战计算机视觉》中的大量实例可让读者在循序渐进地学习的同时,不断地获得成就感。 《深度学习之PyTorch实战计算机视觉》面向对深度学习技术感兴趣、但是相关基础知识较为薄弱或者零基础的读者。 第1章 浅谈人工智能、神经网络和计算机视觉 1 1.1 人工还是智能 1 1.2 人工智能的三起两落 2 1.2.1 两起两落 2 1.2.2 卷土重来 3 1.3 神经网络简史 5 1.3.1 生物神经网络和人工神经网络 5 1.3.2 M-P模型 6 1.3.3 感知机的诞生 9 1.3.4 你好,深度学习 10 1.4 计算机视觉 11 1.5 深度学习+ 12 1.5.1 图片分类 12 1.5.2 图像的目标识别和语义分割 13 1.5.3 自动驾驶 13 1.5.4 图像风格迁移 14 第2章 相关的数学知识 15 2.1 矩阵运算入门 15 2.1.1 标量、向量、矩阵和张量 15 2.1.2 矩阵的转置 17 2.1.3 矩阵的基本运算 18 2.2 导数求解 22 2.2.1 一阶导数的几何意义 23 2.2.2 初等函数的求导公式 24 2.2.3 初等函数的和、差、积、商求导 26 2.2.4 复合函数的链式法则 27 第3章 深度神经网络基础 29 3.1 监督学习和无监督学习 29 3.1.1 监督学习 30 3.1.2 无监督学习 32 3.1.3 小结 33 3.2 欠拟合和过拟合 34 3.2.1 欠拟合 34 3.2.2 过拟合 35 3.3 后向传播 36 3.4 损失和优化 38 3.4.1 损失函数 38 3.4.2 优化函数 39 3.5 激活函数 42 3.5.1 Sigmoid 44 3.5.2 tanh 45 3.5.3 ReLU 46 3.6 本地深度学习工作站 47 3.6.1 GPU和CPU 47 3.6.2 配置建议 49 第4章 卷积神经网络 51 4.1 卷积神经网络基础 51 4.1.1 卷积层 51 4.1.2 池化层 54 4.1.3 全连接层 56 4.2 LeNet模型 57 4.3 AlexNet模型 59 4.4 VGGNet模型 61 4.5 GoogleNet 65 4.6 ResNet 69 第5章 Python基础 72 5.1 Python简介 72 5.2 Jupyter Notebook 73 5.2.1 Anaconda的安装与使用 73 5.2.2 环境管理 76 5.2.3 环境包管理 77 5.2.4 Jupyter Notebook的安装 79 5.2.5 Jupyter Notebook的使用 80 5.2.6 Jupyter Notebook常用的快捷键 86 5.3 Python入门 88 5.3.1 Python的基本语法 88 5.3.2 Python变量 92 5.3.3 常用的数据类型 94 5.3.4 Python运算 99 5.3.5 Python条件判断语句 107 5.3.6 Python循环语句 109 5.3.7 Python中的函数 113 5.3.8 Python中的类 116 5.4 Python中的NumPy 119 5.4.1 NumPy的安装 119 5.4.2 多维数组 119 5.4.3 多维数组的基本操作 125 5.5 Python中的Matplotlib 133 5.5.1 Matplotlib的安装 133 5.5.2 创建图 133 第6章 PyTorch基础 142 6.1 PyTorch中的Tensor 142 6.1.1 Tensor的数据类型 143 6.1.2 Tensor的运算 146 6.1.3 搭建一个简易神经网络 153 6.2 自动梯度 156 6.2.1 torch.autograd和Variable 156 6.2.2 自定义传播函数 159 6.3 模型搭建和参数优化 162 6.3.1 PyTorch之torch.nn 162 6.3.2 PyTorch之torch.optim 167 6.4 实战手写数字识别 169 6.4.1 torch和torchvision 170 6.4.2 PyTorch之torch.transforms 171 6.4.3 数据预览和数据装载 173 6.4.4 模型搭建和参数优化 174 第7章 迁移学习 180 7.1 迁移学习入门 180 7.2 数据集处理 181 7.2.1 验证数据集和测试数据集 182 7.2.2 数据预览 182 7.3 模型搭建和参数优化 185 7.3.1 自定义VGGNet 185 7.3.2 迁移VGG16 196 7.3.3 迁移ResNet50 203 7.4 小结 219 第8章 图像风格迁移实战 220 8.1 风格迁移入门 220 8.2 PyTorch图像风格迁移实战 222 8.2.1 图像的内容损失 222 8.2.2 图像的风格损失 223 8.2.3 模型搭建和参数优化 224 8.2.4 训练新定义的卷积神经网络 226 8.3 小结 232 第9章 多模型融合 233 9.1 多模型融合入门 233 9.1.1 结果多数表决 234 9.1.2 结果直接平均 236 9.1.3 结果加权平均 237 9.2 PyTorch之多模型融合实战 239 9.3 小结 246 第10章 循环神经网络 247 10.1 循环神经网络入门 247 10.2 PyTorch之循环神经网络实战 249 10.3 小结 257 第11章 自动编码器 258 11.1 自动编码器入门 258 11.2 PyTorch之自动编码实战 259 11.2.1 通过线性变换实现自动编码器模型 260 11.2.2 通过卷积变换实现自动编码器模型 267 11.3 小结 273

    2019-04-10
    13
  • 极简算法史:从数学到机器的故事.[法]吕克·德·布拉班迪尔(带书签文字版).pdf

    数学、逻辑学、计算机科学三大领域实属一家,彼此成就,彼此影响。从古希腊哲学到“无所不能”的计算机,数字、计算、推理这些貌似简单的概念在三千年里融汇、碰撞。如何将逻辑赋予数学意义?如何从简单运算走向复杂智慧?这背后充满了人类智慧的闪光:从柏拉图、莱布尼茨、罗素、香农到图灵都试图从数学公式中证明推理的合理性,缔造完美的思维体系。他们是凭天赋制胜,还是鲁莽地大胆一搏?本书描绘了一场人类探索数学、算法与逻辑思维,并最终走向人工智能的梦想之旅,展现了哲学家、逻辑学家与数学家独特的思维方式,探讨了算法与人工智能对科学和社会的巨大影响。 第一部分 莱布尼茨之梦  1 从前的数学故事  3 最美的逻辑故事  13 有缘无分,只因意气不相投  23 第二部分 三座丰碑  43 托马斯·贝叶斯,真正的互联网巨星  45 香农证明,如何计算1 + 1  57 诺伯特·维纳与控制论  69 第三部分 自动化理性批判  79 连接互联网,却脱离现实  83 算法“布鲁斯”  88 诺查丹玛斯与大数据  95 全球化管理的重要性  100 死亡电脑社  107 人工智能:许多问题之一  112 后记  119 附录  125 答案  126 参考文献  133 人名索引  134

    2019-04-08
    16
  • Visual FoxPro9.0程序设计教程.金勤(带书签文字版).pdf

    《Visual FoxPro9.0程序设计教程》《Visual FoxPro9.0程序设计教程》共分11章,主要内容包括:数据库系统概述,Visual FoxPro语言基础,数据表的建立与操作,数据库的基本操作,结构化程序设计基础,子程序与自定义函数,面向对象程序设计基础,常用表单控件的使用,表单设计应用,查询、视图及报表设计,应用程序的管理及编译等。

    2019-04-07
    10
  • Java Web从入门到精通(第2版).明日科技(带详细书签).pdf

    《Java Web从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了进行Java Web应用程序开发应该掌握的各方面技术。《Java Web从入门到精通(第2版)》共分21章,包括Java Web应用开发概述、HTML与CSS网页开发基础、JavaScript脚本语言、搭建开发环境、JSP基本语法、JSP内置对象、JavaBean技术、Servlet技术、过滤器和监听器、Java Web的数据库操作、EL(表达式语言)、JSTL标签、Ajax技术、Struts2基础、Struts2高级技术、Hibernate技术、Hibernate高级应用、Spring核心之IoC、Spring核心之AOP、JSP操作XML、清爽夏日九宫格日记网等。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会Java Web应用程序开发的精髓,快速提高开发技能。 《Java Web从入门到精通(第2版)》可作为软件开发入门者的自学用书,也可作为高等院校相关专业的教学参考书,还可供开发人员查阅、参考。 第1篇 Web开发基础 1 第1章 Java Web应用开发概述 2 1.1 程序开发体系结构 3 1.1.1 C/S体系结构介绍 3 1.1.2 B/S体系结构介绍 3 1.1.3 两种体系结构的比较 4 1.2 Web应用程序的工作原理 4 1.3 Web应用技术 5 1.3.1 客户端应用的技术 6 1.3.2 服务器端应用的技术 8 1.4 Java Web成功案例 9 1.5 常用网上资源 10 1.5.1 常用资源下载网 10 1.5.2 技术社区 11 1.6 小结 11 第2章 HTML与CSS网页开发基础 12 2.1 HTML标记语言 13 2.1.1 创建第一个HTML文件 13 2.1.2 HTML文档结构 14 2.1.3 HTML常用标记 15 2.1.4 表格标记 18 2.1.5 HTML表单标记 20 2.1.6 超链接与图片标记 25 2.2 HTML 5新增内容 26 2.2.1 新增的元素 27 2.2.2 新增的input元素类型 28 2.3 CSS样式表 28 2.3.1 CSS规则 29 2.3.2 CSS选择器 29 2.3.3 在页面中包含CSS 31 2.4 CSS 3的新特征 33 2.4.1 模块与模块化结构 33 2.4.2 一个简单的CSS 3实例 34 2.5 小结 36 2.6 实践与练习 36 第3章 JavaScript脚本语言 37 3.1 JavaScript概述 38 3.1.1 什么是JavaScript 38 3.1.2 JavaScript的主要特点 38 3.2 JavaScript语言基础 39 3.2.1 JavaScript的语法 39 3.2.2 JavaScript中的关键字 40 3.2.3 JavaScript的数据类型 41 3.2.4 变量的定义及使用 43 3.2.5 运算符的应用 44 3.3 流程控制语句 47 3.3.1 if条件判断语句 47 3.3.2 switch多分支语句 50 3.3.3 for循环语句 52 3.3.4 while循环语句 53 3.3.5 do…while循环语句 55 3.3.6 break与continue语句 56 3.4 函数 57 3.4.1 函数的定义 57 3.4.2 函数的调用 58 3.5 事件处理 59 3.5.1 什么是事件处理程序 59 3.5.2 JavaScript常用事件 59 3.5.3 事件处理程序的调用 60 3.6 常用对象 61 3.6.1 Window对象 61 3.6.2 String对象 65 3.6.3 Date对象 69 3.7 DOM技术 71 3.7.1 DOM的分层结构 71 3.7.2 遍历文档 72 3.7.3 获取文档中的指定元素 74 3.7.4 操作文档 75 3.8 小结 77 3.9 实践与练习 77 第4章 搭建开发环境 78 4.1 Java Web应用的开发环境概述 79 4.2 Tomcat的安装与配置 79 4.2.1 下载Tomcat 79 4.2.2 Tomcat的目录结构 81 4.2.3 修改Tomcat的默认端口 81 4.2.4 部署Web应用 81 4.3 Eclipse的下载与使用 82 4.3.1 Eclipse的下载与安装 82 4.3.2 启动Eclipse 84 4.3.3 Eclipse工作台 85 4.3.4 使用Eclipse开发Web应用 85 4.4 小结 90 4.5 实践与练习 90 第2篇 JSP语言基础 91 第5章 JSP基本语法 92 5.1 JSP页面概述 93 5.2 指令标识 94 5.2.1 page指令 95 5.2.2 include指令 97 5.2.3 taglib指令 99 5.3 脚本标识 99 5.3.1 JSP表达式 100 5.3.2 声明标识 100 5.3.3 代码片段 101 5.4 JSP注释 102 5.4.1 HTML中的注释 102 5.4.2 带有JSP表达式的注释 103 5.4.3 隐藏注释 105 5.4.4 动态注释 106 5.5 动作标识 106 5.5.1 包含文件标识 106 5.5.2 请求转发标识 109 5.5.3 传递参数标识 111 5.6 小结 112 5.7 实践与练习 112 第6章 JSP内置对象 113 6.1 JSP内置对象概述 114 6.2 request对象 114 6.2.1 访问请求参数 114 6.2.2 在作用域中管理属性 115 6.2.3 获取cookie 117 6.2.4 解决中文乱码 119 6.2.5 获取客户端信息 120 6.2.6 显示国际化信息 121 6.3 response对象 122 6.3.1 重定向网页 122 6.3.2 处理HTTP文件头 123 6.3.3 设置输出缓冲 123 6.4 session对象 124 6.4.1 创建及获取客户的会话 125 6.4.2 从会话中移动指定的绑定对象 125 6.4.3 销毁session 126 6.4.4 会话超时的管理 126 6.4.5 session对象的应用 126 6.5 application对象 128 6.5.1 访问应用程序初始化参数 129 6.5.2 管理应用程序环境属性 130 6.6 out对象 130 6.6.1 向客户端输出数据 130 6.6.2 管理响应缓冲 131 6.7 其他内置对象 132 6.7.1 获取会话范围的pageContext对象 132 6.7.2 读取web.xml配置信息的config对象 132 6.7.3 应答或请求的page对象 133 6.7.4 获取异常信息的exception对象 134 6.8 小结 135 6.9 实践与练习 135 第7章 JavaBean技术 136 7.1 JavaBean介绍 137 7.1.1 JavaBean概述 137 7.1.2 JavaBean种类 138 7.2 JavaBean的应用 141 7.2.1 获取JavaBean属性信息 141 7.2.2 对JavaBean属性赋值 143 7.2.3 在JSP页面中应用JavaBean 144 7.3 在JSP中应用JavaBean 148 7.3.1 解决中文乱码的JavaBean 148 7.3.2 在JSP页面中用来显示时间的JavaBean 151 7.3.3 数组转换成字符串 154 7.4 小结 157 7.5 实践与练习 157 第8章 Servlet技术 158 8.1 Servlet基础 159 8.1.1 Servlet结构体系 159 8.1.2 Servlet技术特点 159 8.1.3 Servlet与JSP的区别 160 8.1.4 Servlet代码结构 161 8.2 Servlet API编程常用接口和类 162 8.2.1 Servlet接口 162 8.2.2 ServletConfig接口 163 8.2.3 HttpServletRequest接口 163 8.2.4 HttpServletResponse接口 164 8.2.5 GenericServlet类 164 8.2.6 HttpServlet类 165 8.3 Servlet开发 165 8.3.1 Servlet创建 165 8.3.2 Servlet配置 166 8.4 小结 168 8.5 实践与练习 168 第9章 过虑器和监听器 169 9.1 Servlet过滤器 170 9.1.1 什么是过滤器 170 9.1.2 过滤器核心对象 171 9.1.3 过滤器创建与配置 172 9.1.4 字符编码过滤器 175 9.2 Servlet监听器 180 9.2.1 Servlet监听器简介 180 9.2.2 Servlet监听器的原理 180 9.2.3 Servlet上下文监听 180 9.2.4 HTTP会话监听 181 9.2.5 Servlet请求监听 182 9.2.6 Servlet监听器统计在线人数 183 9.3 Servlet 3.0新特性 186 9.3.1 新增注释 186 9.3.2 对文件上传的支持 191 9.3.3 异步处理 193 9.4 小结 194 9.5 实践与练习 194 第3篇 JSP高级内容 195 第10章 Java Web的数据库操作 196 10.1 JDBC技术 197 10.1.1 JDBC简介 197 10.1.2 JDBC连接数据库的过程 197 10.2 JDBC API 199 10.2.1 Connection接口 199 10.2.2 DriverManager类 200 10.2.3 Statement接口 201 10.2.4 PreparedStatement接口 202 10.2.5 ResultSet接口 203 10.3 JDBC操作数据库 204 10.3.1 添加数据 204 10.3.2 查询数据 207 10.3.3 修改数据 211 10.3.4 删除数据 213 10.3.5 批处理 215 10.3.6 调用存储过程 218 10.4 JDBC在Java Web中的应用 221 10.4.1 开发模式 221 10.4.2 分页查询 222 10.5 小结 229 10.6 实践与练习 229 第11章 EL(表达式语言) 230 11.1 EL概述 231 11.1.1 EL的基本语法 231 11.1.2 EL的特点 232 11.2 与低版本的环境兼容—禁用EL 232 11.2.1 使用斜杠“\”符号 232 11.2.2 使用page指令 233 11.2.3 在web.xml文件中配置元素 233 11.3 保留的关键字 233 11.4 EL的运算符及优先级 234 11.4.1 通过EL访问数据 235 11.4.2 在EL中进行算术运算 236 11.4.3 在EL中判断对象是否为空 237 11.4.4 在EL中进行逻辑关系运算 237 11.4.5 在EL中进行条件运算 239 11.5 EL的隐含对象 240 11.5.1 页面上下文对象 240 11.5.2 访问作用域范围的隐含对象 242 11.5.3 访问环境信息的隐含对象 243 11.6 定义和使用EL函数 246 11.6.1 定义和使用函数 246 11.6.2 定义和使用EL函数时常见的错误 248 11.7 小结 250 11.8 实践与练习 250 第12章 JSTL标签 251 12.1 JSTL标签库简介 252 12.2 JSTL的配置 253 12.3 表达式标签 255 12.3.1 输出标签 255 12.3.2 变量设置标签 257 12.3.3 变量移除标签 260 12.3.4 捕获异常标签 261 12.4 URL相关标签 263 12.4.1 导入标签 263 12.4.2 动态生成URL标签 265 12.4.3 重定向标签 266 12.4.4 传递参数标签 267 12.5 流程控制标签 268 12.5.1 条件判断标签 268 12.5.2 条件选择标签 270 12.5.3 条件测试标签 271 12.5.4 其他条件标签 272 12.6 循环标签 274 12.6.1 循环标签 274 12.6.2 迭代标签 276 12.7 小结 278 12.8 实践与练习 278 第13章 Ajax技术 279 13.1 当下谁在用Ajax 280 13.1.1 百度搜索提示 280 13.1.2 淘宝新会员免费注册 280 13.1.3 明日科技编程词典服务网 280 13.2 Ajax开发模式与传统开发模式的比较 281 13.3 Ajax使用的技术 282 13.4 使用XMLHttpRequest对象 284 13.4.1 初始化XMLHttpRequest对象 284 13.4.2 XMLHttpRequest对象的常用方法 285 13.4.3 XMLHttpRequest对象的常用属性 287 13.5 与服务器通信—发送请求与处理响应 288 13.5.1 发送请求 288 13.5.2 处理服务器响应 290 13.5.3 一个完整的实例—检测用户名是否唯一 291 13.6 解决中文乱码问题 294 13.6.1 发送请求时出现中文乱码 294 13.6.2 获取服务器的响应结果时出现中文乱码 295 13.7 Ajax重构 295 13.7.1 Ajax重构的步骤 295 13.7.2 应用Ajax重构实现实时显示公告信息 297 13.8 Ajax常用实例 298 13.8.1 级联下拉列表 298 13.8.2 显示进度条 302 13.9 小结 305 13.10 实践与练习 305 第4篇 流行框架与XML技术 306 第14章 Struts2基础 307 14.1 Struts2概述 308 14.1.1 理解MVC原理 308 14.1.2 Struts2框架的产生 309 14.1.3 Struts2的结构体系 309 14.2 Struts2入门 310 14.2.1 Struts2的获取与放置 310 14.2.2 第一个Struts2程序 311 14.3 Action对象 314 14.3.1 认识Action对象 314 14.3.2 请求参数的注入原理 315 14.3.3 Action的基本流程 315 14.3.4 什么是动态Action 316 14.3.5 动态Action的应用 317 14.4 Struts2的配置文件 320 14.4.1 Struts2的配置文件类型 320 14.4.2 Struts2的包配置 320 14.4.3 名称空间配置 321 14.4.4 Action相关配置 321 14.4.5 通配符实现简化配置 323 14.4.6 返回结果的配置 324 14.5 Struts2的开发模式 325 14.5.1 实现与Servlet API的交互 325 14.5.2 域模型DomainModel 326 14.5.3 驱动模型ModelDriven 327 14.6 典型应用 328 14.6.1 Struts2处理表单数据 328 14.6.2 使用Map类型的request、session和application 331 14.7 小结 334 14.8 实践与练习 334 第15章 Struts2高级技术 335 15.1 OGNL表达式语言 336 15.1.1 认识OGNL 336 15.1.2 Struts2框架中的OGNL 336 15.1.3 操作普通的属性与方法 338 15.1.4 访问静态方法与属性 341 15.1.5 访问数组 341 15.1.6 访问List、Set、Map集合 342 15.1.7 投影与选择 342 15.2 Struts2的标签库 343 15.2.1 数据标签的应用 343 15.2.2 控制标签的应用 347 15.2.3 表单标签的应用 349 15.3 拦截器的使用 350 15.3.1 了解拦截器 350 15.3.2 拦截器API 351 15.3.3 使用拦截器 352 15.4 数据验证机制 354 15.4.1 手动验证的实现 354 15.4.2 验证文件的命名规则 354 15.4.3 验证文件的编写风格 355 15.5 典型应用 356 15.5.1 Struts2标签下的用户注册 356 15.5.2 使用验证框架对数据校验 359 15.6 小结 361 15.7 实践与练习 361 第16章 Hibernate技术 362 16.1 初识Hibernate 363 16.1.1 理解ORM原理 363 16.1.2 Hibernate简介 363 16.2 Hibernate入门 364 16.2.1 获取Hibernate 364 16.2.2 Hibernate配置文件 365 16.2.3 了解并编写持久化类 366 16.2.4 Hibernate映射 367 16.2.5 Hibernate主键策略 368 16.3 Hibernate数据持久化 369 16.3.1 Hibernate实例状态 369 16.3.2 Hibernate初始化类 370 16.3.3 保存数据 371 16.3.4 查询数据 373 16.3.5 删除数据 374 16.3.6 修改数据 375 16.3.7 关于延迟加载 376 16.4 使用Hibernate的缓存 377 16.4.1 一级缓存的使用 377 16.4.2 配置并使用二级缓存 378 16.5 小结 380 16.6 实践与练习 380 第17章 Hibernate高级应用 381 17.1 实体关联关系映射 382 17.1.1 数据模型与领域模型 382 17.1.2 理解并配置多对一单向关联 382 17.1.3 理解并配置多对一双向关联 384 17.1.4 理解并配置一对一主键关联 386 17.1.5 理解并配置一对一外键关联 387 17.1.6 理解并配置多对多关联关系 389 17.1.7 了解级联操作 391 17.2 实体继承关系映射 392 17.2.1 类继承树映射成一张表 392 17.2.2 每个子类映射成一张表 394 17.2.3 每个具体类映射成一张表 395 17.3 Hibernate查询语言 396 17.3.1 了解HQL语言 396 17.3.2 实体对象查询 397 17.3.3 条件查询 398 17.3.4 HQL参数绑定机制 399 17.3.5 排序查询 399 17.3.6 聚合函数的应用 399 17.3.7 分组方法 400 17.3.8 联合查询 400 17.3.9 子查询 401 17.4 小结 402 17.5 实践与练习 402 第18章 Spring核心之IoC 403 18.1 Spring概述 404 18.1.1 初识Spring 404 18.1.2 Spring的获取 405 18.1.3 简单配置Spring 405 18.1.4 使用BeanFactory管理bean 406 18.1.5 AplicationContext的应用 407 18.2 依赖注入 408 18.2.1 什么是控制反转与依赖注入 409 18.2.2 bean的配置 410 18.2.3 Setter注入 410 18.2.4 构造器注入 411 18.2.5 引用其他的bean 412 18.2.6 匿名内部JavaBean的创建 413 18.3 自动装配 414 18.3.1 按bean名称装配 414 18.3.2 按bean类型装配 415 18.3.3 自动装配的其他方式 416 18.4 bean的作用域 417 18.4.1 了解Spring中的bean 417 18.4.2 singleton的作用域 418 18.4.3 prototype的作用域 419 18.5 对bean的特殊处理 419 18.5.1 初始化与销毁 420 18.5.2 自定义属性编辑器 420 18.6 小结 423 18.7 实践与练习 423 第19章 Spring核心之AOP 424 19.1 AOP概述 425 19.1.1 了解AOP 425 19.1.2 AOP的简单实现 427 19.2 Spring的切入点 428 19.2.1 静态切入点与动态切入点 428 19.2.2 深入静态切入点 429 19.2.3 深入切入点底层 430 19.2.4 Spring中其他切入点 430 19.3 Aspect对AOP的支持 431 19.3.1 了解Aspect 431 19.3.2 Spring中的Aspect 432 19.3.3 DefaultPointcutAdvisor切入点配置器 432 19.3.4 NameMatchMethodPointcutAdvisor切入点配置器 433 19.4 Spring持久化 433 19.4.1 DAO模式介绍 434 19.4.2 Spring的DAO理念 434 19.4.3 事务应用的管理 437 19.4.4 应用JdbcTemplate操作数据库 440 19.4.5 与Hibernate整合 441 19.5 小结 444 19.6 实践与练习 444 第20章 JSP操作XML 445 20.1 XML简介 446 20.1.1 XML文档结构 446 20.1.2 XML语法要求 447 20.1.3 为XML文档中的元素定义属性 448 20.1.4 XML的注释 448 20.1.5 处理字符数据 449 20.2 dom4j概述 451 20.2.1 dom4j简介 451 20.2.2 dom4j的下载与配置 451 20.3 创建XML文档 452 20.3.1 创建XML文档对象 452 20.3.2 创建根节点 453 20.3.3 添加注释 454 20.3.4 添加属性 454 20.3.5 创建子节点 454 20.3.6 设置节点的内容 455 20.3.7 设置编码 456 20.3.8 设置输出格式 456 20.3.9 输出XML文档 456 20.4 解析XML文档 457 20.4.1 构建XML文档对象 458 20.4.2 获取根节点 458 20.4.3 获取子节点 458 20.5 修改XML文档 459 20.5.1 修改节点 460 20.5.2 删除节点 461 20.6 典型应用 461 20.6.1 保存公告信息到XML文件 461 20.6.2 对保存到XML文件中的公告信息进行管理 464 20.7 小结 472 20.8 实践与练习 472 第5篇 项目实战 473 第21章 清爽夏日九宫格日记网 474 21.1 项目设计思路 475 21.1.1 功能阐述 475 21.1.2 网站预览 475 21.1.3 功能结构 476 21.1.4 文件夹组织结构 477 21.2 数据库和数据表设计 478 21.2.1 数据库设计 478 21.2.2 数据表设计 478 21.3 公共模块设计 479 21.3.1 编写数据库连接及操作的类 479 21.3.2 编写保存分页代码的JavaBean 482 21.3.3 配置解决中文乱码的过滤器 484 21.3.4 编写实体类 485 21.4 主界面设计 486 21.4.1 主界面概述 486 21.4.2 让采用DIV CSS布局的页面内容居中 487 21.4.3 主界面的实现过程 488 21.5 用户模块设计 489 21.5.1 用户模块概述 489 21.5.2 实现Ajax重构 490 21.5.3 用户注册的实现过程 492 21.5.4 用户登录的实现过程 502 21.5.5 退出登录的实现过程 505 21.5.6 找回密码的实现过程 506 21.6 显示九宫格日记列表模块设计 509 21.6.1 显示九宫格日记列表概述 509 21.6.2 展开和收缩图片 509 21.6.3 查看日记原图 512 21.6.4 对日记图片进行左转和右转 512 21.6.5 显示全部九宫格日记的实现过程 515 21.6.6 我的日记的实现过程 519 21.6.7 删除我的日记的实现过程 520 21.7 写九宫格日记模块设计 521 21.7.1 写九宫格日记模块概述 521 21.7.2 应用jQuery让PNG图片在IE 6下背景透明(选学) 522 21.7.3 填写日记信息的实现过程 523 21.7.4 预览生成的日记图片的实现过程 528 21.7.5 保存日记图片的实现过程 532 21.8 项目发布 534 21.9 小结 535

    2019-04-07
    29
img
kxjrzyk

关注 私信