Docker技术入门与实战
Docker技术入门与实战/杨保华,戴王剑,曹 亚 仑 编 著 .一 北 京 :机械工业出版社
程序员必读之软件架构
高清非扫描 带书签目录
作者:Simon Brown
译者:邓钢
ISBN:978-7-115-37107-2
软件定义存储:原理、实践与生态
高清非扫描 带书签目录
叶毓睿 雷迎春 李炫辉 王豪迈 等著
ISBN:978-7-111-53957-5
目录
作者简介
序1
序2
序3
序4
序5
序6
前言
第1章 软件定义存储之介绍
1.1 什么是软件定义
1.2 什么是软件定义存储
1.2.1 VMware眼里的SDS
1.2.2 EMC眼里的SDS
1.2.3 IBM眼里的SDS
1.2.4 华为眼里的SDS
1.2.5 Gartner眼里的SDS
1.2.6 IDC眼里的SDS
1.2.7 SNIA眼里的SDS
1.2.8 本书对SDS的定义
1.3 为什么出现软件定义存储
1.3.1 背景
1.3.2 数据迅猛增长
1.3.3 硬盘的发展异常缓慢
1.3.4 深刻改变存储架构的新技术
1.4 本章小结
PHP核心技术与最佳实践
作者: 列旭松,陈文
出版社: 机械工业出版社
出版年: 2013-1-1
页数: 860
装帧: 平装
ISBN: 9787111401926
编写高质量代码之Java
高清非扫描版 带目录
两本合集
秦小波 成林 著
ISBN:978-7-111-36259-3
ISBN:978-7-111-39905-6
编写高质量代码:改善Java程序的151个建议纸版由机械工业出版社于2011年出版,编写
高质量代码:改善JavaScript程序的188个建议纸版由机械工业出版社于2012年出版。电子
版由华章分社(北京华章图文信息有限公司)全球范围内制作与发行。
Java加密与解密的艺术
高清非扫描版 带目录
梁栋 著
ISBN:978-7-111-29762-8
目 录
赞誉
前言
第一部分 基础篇
第1章 企业应用安全
1.1 我们身边的安全问题
1.2 拿什么来拯救你,我的应用
1.2.1 安全技术目标
1.2.2 OSI安全体系结构
1.2.3 TCP/IP安全体系结构
1.3 捍卫企业应用安全的银弹
1.3.1 密码学在安全领域中的身影
1.3.2 密码学与Java EE
1.4 为你的企业应用上把锁
1.5 小结
第2章 企业应用安全的银弹—密码学
2.1 密码学的发家史
2.1.1 手工加密阶段
Java程序员修炼之道
高清非扫描版 带书签
作者:Benjamin J. Evans, Martijn Verburg
译者:吴海星
ISBN:978-7-115-32195-4
目录
版权声明
序
前言
致谢
关于本书
阅读须知
读者对象
路线图
代码约定及下载
软件需求
作者在线
关于作者
关于封面图片
第一部分 用Java 7做开发
第1章 初识Java 7
1.1 语言与平台
1.2 Coin项目:浓缩的都是精华
1.3 Coin项目中的修改
1.3.1 switch语句中的String
1.3.2 更强的数值文本表示法
1.3.3 改善后的异常处理
1.3.4 Try-with-resources(TWR)
1.3.5 钻石语法
1.3.6 简化变参方法调用
1.4 小结
第2章 新I/O
2.1 Java I/O简史
2.1.1 Java 1.0到1.3
2.1.2 在Java 1.4中引入的NIO
2.1.3 下一代I/O-NIO.2
2.2 文件I/O的基石:Path
2.2.1 创建一个Path
2.2.2 从Path中获取信息
2.2.3 移除冗余项
2.2.4 转换Path
2.2.5 NIO.2 Path和Java已有的File类
2.3 处理目录和目录树
2.3.1 在目录中查找文件
2.3.2 遍历目录树
2.4 NIO.2的文件系统I/O
2.4.1 创建和删除文件
2.4.2 文件的复制和移动
大道至易:实践者的思想 第二版
本书可以看成是《大道至简》的姊妹篇,是以软件工程为体系、以组织结构为视角的全新著述。全书围绕对人的理解、对项目目标的理解,以及对工程整体性的理解三个大的方向,构划了一个相当宏大的论述结构。在具体的讨论中,作者仍然采用其早期著作《大道至简》中“着笔于章句之末”的写作手法,置喙于文中而留意于言外。并且延续了《大道至简》一书有关广义工程和具体工程的讨论,进一步地引导读者回到“工程的本质问题是组织”这样的视角。
本书适合各类工程管理人员阅读。
图
Git权威指南
非扫描版
蒋鑫 著
ISBN:978-7-111-34967-9
目 录
前言
本书的组织
适用读者
排版约定
在线资源
致谢
第1篇 初识Git
第1章 版本控制的前世和今生
1.1 黑暗的史前时代
1.2 CVS——开启版本控制大爆发
1.3 SVN——集中式版本控制集大成者
1.4 Git——Linus的第二个伟大作品
第2章 爱上Git的理由
2.1 每日工作备份
2.2 异地协同工作
2.3 现场版本控制
2.4 避免引入辅助目录
2.5 重写提交说明
2.6 想吃后悔药
2.7 更好用的提交列表
2.8 更好的差异比较
2.9 工作进度保存
2.10 代理SVN提交实现移动式办公
2.11 无处不在的分页器
2.12 快
第3章 Git的安装和使用
3.1 在Linux下安装和使用Git
3
3.1.1 包管理器方式安装
3.1.2 从源代码进行安装
3.1.3 从Git版本库进行安装
3.1.4 命令补齐
3.1.5 中文支持
3.2 在Mac OS X下安装和使用Git
3.2.1 以二进制发布包的方式安装
3.2.2 安装Xcode
3.2.3 使用Homebrew安装Git
3.2.4 从Git源码进行安装
3.2.5 命令补齐
3.2.6 其他辅助工具的安装
3.2.7 中文支持
3.3 在Windows下安装和使用Git(Cygwin篇)
3.3.1 安装Cygwin
3.3.2 安装Git
3.3.3 Cygwin的配置和使用
3.3.4 Cygwin下Git的中文支持
3.3.5 Cygwin下Git访问SSH服务
3.4 Windows下安装和使用Git(msysGit篇)
3.4.1 安装msysGit
3.4.2 msysGit的配置和使用
3.4.3 msysGit中shell环境的中文支持
3.4.4 msysGit中Git的中文支持
3.4.5 使用SSH协议
3.4.6 TortoiseGit的安装和使用
3.4.7 TortoiseGit的中文支持
第2篇 Git独奏
第4章 Git初始化
4
4.1 创建版本库及第一次提交
4.2 思考:为什么工作区根目录下有一个.git目录
4.3 思考:git config命令的各参数有何区别
4.4 思考:是谁完成的提交
4.5 思考:随意设置提交者姓名,是否太不安全
4.6 思考:命令别名是干什么的
4.7 备份本章的工作成果
第5章 Git暂存区
5.1 修改不能直接提交吗
5.2 理解Git暂存区(stage)
5.3 Git Diff魔法
5.4 不要使用git commit-a
5.5 搁置问题,暂存状态
第6章 Git对象
6.1 Git对象库探秘
6.2 思考:SHA1哈希值到底是什么,是如何生成的
6.3 思考:为什么不用顺序的数字来表示提交
第7章 Git重置
7.1 分支游标master探秘
7.2 用reflog挽救错误的重置
7.3 深入了解git reset命令
第8章 Git检出
8.1 HEAD的重置即检出
8.2 挽救分离头指针
8.3 深入了解git checkout命令
第9章 恢复进度
9.1 继续暂存区未完成的实践
9.2 使用git stash
9.3 探秘git stash
5
第10章 Git基本操作
10.1 先来合个影
10.2 删除文件
10.2.1 本地删除不是真的删除
10.2.2 执行git rm命令删除文件
10.2.3 命令git add-u快速标记删除
10.3 恢复删除的文件
10.4 移动文件
10.5 一个显示版本号的Hello World
10.6 使用git add-i选择性添加
10.7 Hello World引发的新问题
10.8 文件忽略
10.9 文件归档
第11章 历史穿梭
11.1 图形工具:gitk
11.2 图形工具:gitg
11.3 图形工具:qgit
11.4 命令行工具
11.4.1 版本表示法:git rev-parse
11.4.2 版本范围表示法:git rev-list
11.4.3 浏览日志:git log
11.4.4 差异比较:git diff
11.4.5 文件追溯:git blame
11.4.6 二分查找:git bisect
11.4.7 获取历史版本
第12章 改变历史
12.1 悔棋
12.2 多步悔棋
12.3 回到未来
6
12.3.1 时间旅行一
12.3.2 时间旅行二
12.3.3 时间旅行三
12.4 丢弃历史
12.5 反转提交
第13章 Git克隆
13.1 鸡蛋不装在一个篮子里
13.2 对等工作区
13.3 克隆生成裸版本库
13.4 创建生成裸版本库
第14章 Git库管理
14.1 对象和引用哪里去了
14.2 暂存区操作引入的临时对象
14.3 重置操作引入的对象
14.4 Git管家:git-gc
14.5 Git管家的自动执行
第3篇 Git和声
第15章 Git协议与工作协同
15.1 Git支持的协议
15.2 多用户协同的本地模拟
15.3 强制非快进式推送
15.4 合并后推送
15.5 禁止非快进式推送
第16章 冲突解决
16.1 拉回操作中的合并
16.2 合并一:自动合并
16.2.1 修改不同的文件
16.2.2 修改相同文件的不同区域
16.2.3 同时更改文件名和文件内容
7
16.3 合并二:逻辑冲突
16.4 合并三:冲突解决
16.4.1 手工编辑完成冲突解决
16.4.2 图形工具完成冲突解决
16.5 合并四:树冲突
16.5.1 手工操作解决树冲突
16.5.2 交互式解决树冲突
16.6 合并策略
16.7 合并相关的设置
第17章 Git里程碑
17.1 显示里程碑
17.2 创建里程碑
17.2.1 轻量级里程碑
17.2.2 带说明的里程碑
17.2.3 带签名的里程碑
17.3 删除里程碑
17.4 不要随意更改里程碑
17.5 共享里程碑
17.6 删除远程版本库的里程碑
17.7 里程碑命名规范
第18章 Git分支
18.1 代码管理之殇
18.1.1 发布分支
18.1.2 特性分支
18.1.3 卖主分支
18.2 分支命令概述
18.3 "Hello World"开发计划
18.4 基于特性分支的开发
18.4.1 创建分支user1/getopt
8
18.4.2 创建分支user2/i18n
18.4.3 开发者user1完成功能开发
18.4.4 将user1/getopt分支合并到主线
18.5 基于发布分支的开发
18.5.1 创建发布分支
18.5.2 开发者user1工作在发布分支
18.5.3 开发者user2工作在发布分支
18.5.4 开发者user2合并推送
18.5.5 发布分支的提交合并到主线
18.6 分支变基
18.6.1 完成user2/i18n特性分支的开发
18.6.2 分支user2/i18n变基
第19章 远程版本库
19.1 远程分支
19.2 分支追踪
19.3 远程版本库
19.4 PUSH和PULL操作与远程版本库
19.5 里程碑和远程版本库
19.6 分支和里程碑的安全性
第20章 补丁文件交互
20.1 创建补丁
20.2 应用补丁
20.3 StGit和Quilt
20.3.1 StGit
20.3.2 Quilt
第4篇 Git协同模型
第21章 经典Git协同模型
21.1 集中式协同模型
21.1.1 传统集中式协同模型
9
21.1.2 Gerrit特殊的集中式协同模型
21.2 金字塔式协同模型
21.2.1 贡献者开放只读版本库
21.2.2 以补丁方式贡献代码
第22章 Topgit协同模型
22.1 作者版本控制系统的三个里程碑
22.2 Topgit原理
22.3 Topgit的安装
22.4 Topgit的使用
22.5 用Topgit方式改造Topgit
22.6 Topgit使用中的注意事项
第23章 子模组协同模型
23.1 创建子模组
23.2 克隆带子模组的版本库
23.3 在子模组中修改和子模组的更新
23.4 隐性子模组
23.5 子模组的管理问题
第24章 子树合并
24.1 引入外部版本库
24.2 子目录方式合并外部版本库
24.3 利用子树合并跟踪上游改动
24.4 子树拆分
24.5 git-subtree插件
第25章 Android式多版本库协同
25.1 关于repo
25.2 安装repo
25.3 repo和清单库的初始化
25.4 清单库和清单文件
25.5 同步项目
10
25.6 建立Android代码库本地镜像
25.7 repo的命令集
25.8 repo命令的工作流
25.9 好东西不能Android独享
25.9.1 repo+Gerrit模式
25.9.2 repo无审核模式
25.9.3 改进的repo无审核模式
第26章 Git和SVN协同模型
26.1 使用git-svn的一般流程
26.2 git-svn的奥秘
26.2.1 Git库配置文件的扩展及分支映射
26.2.2 Git工作分支和Subversion如何对应
26.2.3 其他辅助文件
26.3 多样的git-svn克隆模式
26.4 共享git-svn的克隆库
26.5 git-svn的局限
第5篇 搭建Git服务器
第27章 使用HTTP协议
27.1 哑传输协议
27.2 智能HTTP协议
27.3 Gitweb服务器
27.3.1 Gitweb的安装
27.3.2 Gitweb的配置
27.3.3 版本库的Gitweb相关设置
27.3.4 即时Gitweb服务
第28章 使用Git协议
28.1 Git协议语法格式
28.2 Git服务软件
28.3 以inetd方式配置运行
11
28.4 以runit方式配置运行
第29章 使用SSH协议
29.1 SSH协议语法格式
29.2 服务架设方式比较
29.3 关于SSH公钥认证
29.4 关于SSH主机别名
第30章 Gitolite服务架设
30.1 安装Gitolite
30.1.1 服务器端创建专用账号
30.1.2 Gitolite的安装/升级
30.1.3 关于SSH主机别名
30.1.4 其他的安装方法
30.2 管理Gitolite
30.2.1 管理员克隆gitolite-admin管理库
30.2.2 增加新用户
30.2.3 更改授权
30.3 Gitolite授权详解
30.3.1 授权文件的基本语法
30.3.2 定义用户组和版本库组
30.3.3 版本库ACL
30.3.4 Gitolite授权机制
30.4 版本库授权案例
30.4.1 对整个版本库进行授权
30.4.2 通配符版本库的授权
30.4.3 用户自己的版本库空间
30.4.4 对引用的授权:传统模式
30.4.5 对引用的授权:扩展模式
30.4.6 对引用的授权:禁用规则的使用
30.4.7 用户分支
12
30.4.8 对路径的写授权
30.5 创建新版本库
30.5.1 在配置文件中出现的版本库,即时生成
30.5.2 通配符版本库,管理员通过推送创建
30.5.3 直接在服务器端创建
30.6 对Gitolite的改进
30.7 Gitolite功能拓展
30.7.1 版本库镜像
30.7.2 Gitweb和Git daemon支持
30.7.3 其他功能拓展和参考
第31章 Gitosis服务架设
31.1 安装Gitosis
31.1.1 Gitosis的安装
31.1.2 服务器端创建专用账号
31.1.3 Gitosis服务初始化
31.2 管理Gitosis
31.2.1 管理员克隆gitolit-admin管理库
31.2.2 增加新用户
31.2.3 更改授权
31.3 Gitosis授权详解
31.3.1 Gitosis默认设置
31.3.2 管理版本库gitosis-admin
31.3.3 定义用户组和授权
31.3.4 Gitweb整合
31.4 创建新版本库
31.5 轻量级管理的Git服务
第32章 Gerrit代码审核服务器
32.1 Gerrit的实现原理
32.2 架设Gerrit的服务器
13
32.3 Gerrit的配置文件
32.4 Gerrit的数据库访问
32.5 立即注册为Gerrit管理员
32.6 管理员访问SSH的管理接口
32.7 创建新项目
32.8 从已有的Git库创建项目
32.9 定义评审工作流
32.10 Gerrit评审工作流实战
32.10.1 开发者在本地版本库中工作
32.10.2 开发者向审核服务器提交
32.10.3 审核评审任务
32.10.4 评审任务没有通过测试
32.10.5 重新提交新的补丁集
32.10.6 新修订集通过评审
32.10.7 从远程版本库更新
32.11 更多Gerrit参考
第33章 Git版本库托管
33.1 Github
33.2 Gitorious
第6篇 迁移到Git
第34章 CVS版本库到Git的迁移
34.1 安装cvs2svn(含cvs2git)
34.1.1 Linux下cvs2svn的安装
34.1.2 Mac OS X下cvs2svn的安装
34.2 版本库转换的准备工作
34.2.1 版本库转换注意事项
34.2.2 文件名乱码问题
34.2.3 提交说明乱码问题
34.3 版本库转换
14
34.3.1 配置文件解说
34.3.2 运行cvs2git完成转换
34.4 迁移后的版本库检查
第35章 更多版本控制系统的迁移
35.1 SVN版本库到Git的迁移
35.2 Hg版本库到Git的迁移
35.3 通用版本库迁移
35.4 Git版本库整理
35.4.1 环境变量过滤器
35.4.2 树过滤器
35.4.3 暂存区过滤器
35.4.4 父节点过滤器
35.4.5 提交说明过滤器
35.4.6 提交过滤器
35.4.7 里程碑名字过滤器
35.4.8 子目录过滤器
第7篇 Git的其他应用
第36章 etckeeper
36.1 安装etckeeper
36.2 配置etckeeper
36.3 使用etckeeper
第37章 Gistore
37.1 Gistore的安装
37.1.1 软件依赖
37.1.2 从源码安装Gistore
37.1.3 用easy_install安装
37.2 Gistore的使用
37.2.1 创建并初始化备份库
37.2.2 Gistore的配置文件
15
37.2.3 Gistore的备份项管理
37.2.4 执行备份任务
37.2.5 查看备份日志
37.2.6 查看及恢复备份数据
37.2.7 备份回滚及设置
37.2.8 注册备份任务别名
37.2.9 自动备份:crontab
37.3 Gistore双机备份
第38章 补丁中的二进制文件
38.1 Git版本库中二进制文件变更的支持
38.2 对非Git版本库中二进制文件变更的支持
38.3 其他工具对Git扩展补丁文件的支持
第39章 云存储
39.1 现有云存储的问题
39.2 Git式云存储畅想
第8篇 Git杂谈
第40章 跨平台操作Git
40.1 字符集问题
40.2 文件名大小写问题
40.3 换行符问题
第41章 Git的其他特性
41.1 属性
41.1.1 属性定义
41.1.2 属性文件及优先级
41.1.3 常用属性介绍
41.2 钩子和模板
41.2.1 Git钩子
41.2.2 Git模板
41.3 稀疏检出和浅克隆
16
41.3.1 稀疏检出
41.3.2 浅克隆
41.4 嫁接和替换
41.4.1 提交嫁接
41.4.2 提交替换
41.5 Git评注
41.5.1 评注的奥秘
41.5.2 评注相关命令
41.5.3 评注相关配置
第9篇 附录
附录A Git命令索引
A.1 常用的Git命令
A.2 对象库操作相关命令
A.3 引用操作相关命令
A.4 版本库管理相关命令
A.5 数据传输相关命令
A.6 邮件相关命令
A.7 协议相关命令
A.8 版本库转换和交互相关命令
A.9 合并相关的辅助命令
A.10 杂项
附录B Git与CVS面对面
B.1 面对面访谈录
B.2 Git和CVS命令对照
附录C Git与SVN面对面
C.1 面对面访谈录
C.2 Git和SVN命令对照
附录D Git与Hg面对面
D.1 面对面访谈录
17
D.2 Git和Hg命令对照
狂人C:程序员入门必备
非扫描版
键盘农夫著
ISBN 978-7-115-23649-4
目 录
前 言
第1篇 理解程序设计
第1章 基础知识
1.1 什么是编程
1.1.1 计算机如何工作
1.1.2 内存中的程序是哪里来的
1.1.3 可执行文件的制作
1.1.4 C语言的演化
1.2 怎样用C语言编程
1.2.1 学习C语言编程都需要什么
1.2.2 最简单的C语言程序的基本结构
1.2.3 Dev C++
1.3 printf()函数初步
1.3.1 简单的一般用法
1.3.2 特殊的字符
1.4 C语言的“字母”和“单词”
1.4.1 C语言的“字母”
1.4.2 C语言的“词”
小结
概念与术语
风格与习惯
常见错误
牛角尖
练习与自测
第2章 数据类型
10
2.1 什么是数据类型
2.1.1 “三个世界”理论
2.1.2 问题世界:“万物皆数”
2.1.3 代码世界:书写规则及含义
2.1.4 机器世界里的“机器数”
2.1.5 输出问题
2.1.6 计算2的1到10次幂
2.1.7 代码质量的改进
2.2 让程序记住计算结果——变量
2.2.1 计算机的记忆功能
2.2.2 在代码中实现“记忆”
2.3 int类型——总结与补充
2.3.1 计算机表示负整数的几种方法
2.3.2 计算机码制和C语言的关系
2.3.3 暂时不必关心的一些细节
2.3.4 int类型值的范围
2.3.5 int类型常量在代码中的其他写法
2.3.6 Dev C++中int类型的机器数
2.4 对数据类型的进一步讨论
2.4.1 int数据类型的运算
2.4.2 数学公式与数据类型
2.4.3 数据类型——代码与编译器的约定
2.5 莫名其妙的“整型”
2.5.1 unsigned int类型
2.5.2 long、short关键字描述的整数类型
2.5.3 没有常量的char类型
2.5.4 其他
2.6 浮点类型
2.6.1 double类型常量的代码书写规则
2.6.2 浮点类型数据存储模型
2.6.3 浮点类型的一些特性
2.6.4 浮点类型的运算
2.6.5 浮点类型的输出及其他
2.7 数据类型与算法
2.7.1 错误的数据类型
2.7.2 所谓算法
11
2.7.3 一个技巧
2.7.4 更高效率的写法
2.8 算法的特性
小结
概念与术语
风格与习惯
常见错误
牛角尖
练习与自测
第3章 运算符、表达式及语句
3.1 C的“动词”及“动词”的“宾语”
3.2 表达式——C语言的“词组”
3.2.1 初等表达式
3.2.2 被误解的“()”
3.2.3 带运算符的表达式
3.2.4 不像表达式的表达式
3.2.5 表达式:专业与副业
3.2.6 赋值运算符左侧的标识符称为左值
3.2.7 函数调用是表达式不是语句
3.3 谁是谁的谁
3.3.1 流行的谬误:优先级决定运算次序
3.3.2 “左结合性”是运算对象先与左面的运算符相结合吗
3.3.3 运算符、表达式小结
3.4 右值的类型转换
3.4.1 明确写出的显式转换——cast运算
3.4.2 cast运算的规则
3.4.3 赋值中的转换
3.4.4 1+1.0=?
3.4.5 算术转换:早已废弃的规则和依然有效的规则
3.5 语句的概念
3.5.1 关于语句的闲话
3.5.2 空语句有两种
3.5.3 表达式语句
12
3.5.4 顺序结构
3.5.5 复合语句
3.6 例题
3.6.1 简单的类型转换
3.6.2 最基础的算法——交换变量的值
3.6.3 编程不是列公式
3.7 算法和数据结构初窥
3.8 在程序运行时提供数据
小结
概念与术语
风格与习惯
常见错误
牛角尖
练习与自测
第4章 选择语句
4.1 关系运算
4.1.1 “<”的数学含义及代码含义
4.1.2 4种关系运算符
4.1.3 常见误区及与常识不符的结果
4.2 if语句
4.2.1 语法格式及含义
4.2.2 例题
4.2.3 ()内的表达式
4.2.4 ()后面的语句
4.3 判等运算
4.4 表达复杂的条件
4.5 if-else语句
4.6 鸡肋——_Bool类型(C99)
4.7 判断三角形种类
4.8 显得很有学问的运算符
4.9 大师如是说goto
4.10 给程序更多选项——switch语句
4.10.1 switch语句的一种应用形式
13
4.10.2 switch语句中的break语句
4.11 程序开发的过程
小结
概念与术语
风格与习惯
常见错误
牛角尖
练习与自测
第5章 从循环到穷举
5.1 造句:当……就……
5.1.1 语法要素
5.1.2 猴子吃桃问题更简洁的写法
5.1.3 错误的循环变量
5.1.4 次数不定的循环
5.1.5 逗号表达式及其应用
5.2 do-while语句
5.2.1 语法要素
5.2.2 例题
5.3 for语句
5.3.1 语法要素
5.3.2 “++”之惑
5.3.3 for语句应用
5.4 不规则的循环及对循环的修整
5.4.1 循环语句中的break语句
5.4.2 continue语句
5.5 循环的嵌套与穷举法
5.5.1 循环的嵌套
5.5.2 穷举法
小结
概念与术语
风格与习惯
常见错误
牛角尖
练习与自测
第2篇 结构化程序设计与简单的数据结构
14
第6章 最复杂的运算符——“()”
6.1 什么是函数
6.2 步骤1:函数的声明
6.3 步骤2:函数的定义
6.3.1 函数定义的结构
6.3.2 函数定义的位置
6.3.3 函数头的写法、形参
6.3.4 函数体的写法、return关键字
6.4 步骤3:函数的调用
6.5 程序的执行过程
6.6 例题——为什么使用函数
6.7 使用函数小结
6.7.1 使用函数的步骤和方法
6.7.2 常见问题
6.8 函数与结构化程序设计
6.8.1 明确程序功能
6.8.2 确定程序的基本框架
6.8.3 设计数据结构和算法
6.8.4 任务的分解及函数原型
6.8.5 完成函数定义
6.8.6 编程的步骤
6.8.7 代码结构
6.9 变量的作用域
6.10 递归
6.10.1 什么是递归
6.10.2 递归是函数对自身的调用
6.10.3 递归的实现过程
6.10.4 递归与循环
6.10.5 递归的力量——Hanoi塔问题
6.10.6 间接递归
6.11 对局部变量的进一步修饰
6.11.1 几乎一直是摆设的关键字——auto
6.11.2 static类别的局部变量
15
6.12 使用库函数
6.13 inline关键字(C99)
小结
概念与术语
风格与习惯
忠告
牛角尖
练习与自测
第7章 作为类型说明符和运算符的“[]”
7.1 使用数组
7.1.1 老式的解决办法
7.1.2 首先要定义数组
7.1.3 如何称呼数组中的各个数据对象
7.1.4 完整的演示
7.2 深入理解数组
7.2.1 数组是一种数据类型
7.2.2 数组定义的含义
7.2.3 数组名是什么
7.2.4 一维数组元素的引用
7.2.5 数组元素引用是一个表达式
7.2.6 数组名有值吗
7.2.7 重复一遍
7.3 熟练应用一维数组
7.3.1 一维数组的遍历
7.3.2 翻卡片问题
7.3.3 筛法
7.3.4 一维数组元素的赋初值
7.4 数组名做实参
7.4.1 数组名的值究竟是什么
7.4.2 对应的形参
7.4.3 调用原理
7.4.4 不可以只有数组名这一个实参
7.4.5 const关键字
16
7.4.6 例题——冒泡法排序
7.4.7 测试与调试技巧——使用文件输入输出
7.5 多维数组
7.5.1 二维数组的定义
7.5.2 二维数组元素的赋初值
7.5.3 二维数组元素的引用和遍历
7.5.4 更高维的数组
7.5.5 生命游戏(Game of Life)
小结
概念与术语
风格与习惯
常见错误
牛角尖
练习与自测
第8章 结构体、共用体与位运算
8.1 结构体
8.1.1 从一个简单例题说起
8.1.2 声明结构体的类型
8.1.3 定义结构体变量
8.1.4 结构体数据的基本运算
8.1.5 结构体变量赋初值及成员值的输入问题
8.1.6 结构体“常量”(C99)
8.1.7 一个不太专业的技巧
8.1.8 结构体的其他定义方式及无名的结构体
8.2 C语言中复数类型的历史和现状
8.2.1 借助struct描述的复数类型
8.2.2 _Complex、_Imaginary关键字(C99)
8.3 共用体union
8.3.1 概述
8.3.2 对double类型的解析
8.4 位运算
8.4.1 位运算符
8.4.2 更节省空间的筛法
17
8.5 “小的变量”——位段
8.5.1 位段概述
8.5.2 如何定义位段
8.5.3 位段的性质
8.5.4 按二进制输出float类型数据
8.5.5 对齐等问题
小结
概念
风格
常见错误
忠告
牛角尖
练习与自测
第9章 指针
9.1 指针是什么
9.1.1 指针是一类数据类型的统称
9.1.2 指针是派生数据类型
9.1.3 指针是一类数据的泛称
9.1.4 指针专用的类型说明符——“*”
9.1.5 指针的分类
9.2 指向数据对象的指针
9.2.1 什么是“数据对象”
9.2.2 一元“&”运算
9.2.3 数据指针变量的定义
9.2.4 指针的赋值运算
9.2.5 不是乘法的“*”运算
9.3 指针的应用与误用
9.3.1 指针有什么用
9.3.2 C代码中的“XXX到此一游”
9.3.3 分桔子问题
9.4 指针与一维数组
9.4.1 数据指针与整数的加减法
9.4.2 数据指针的减法
18
9.4.3 数据指针的关系运算
9.4.4 数据指针的判等运算
9.4.5 “[]”运算
9.4.6 数组名是指针
9.4.7 数组名不仅仅是指针
9.4.8 指向数组的指针
9.4.9 与数组名对应的形参
9.5 指针的应用(二)
9.6 高维数组名
9.6.1 高维数组名是指针
9.6.2 高维数组名是内存
9.6.3 “a[0]”或“*a”的含义
9.6.4 数组与指针关系总结
9.6.5 例题
9.7 变量长度数组——VLA(C99)
9.7.1 简述
9.7.2 变量修饰类型(Variably modified type)
9.7.3 变量长度数组与函数参数
9.8 数组类型的字面量(C99)
9.9 指针与结构体
9.9.1 类型问题
9.9.2 通过指针读写结构体的成员
9.10 指针与函数
9.10.1 函数名是指针
9.10.2 指向函数指针的性质
9.10.3 指向函数指针的运算
9.10.4 例题
9.11 指向虚无的指针
9.12 参数不确定的函数
9.12.1 printf()的函数原型
9.12.2 “…”是什么
9.12.3 实现原理
9.12.4 标准形式
小结
概念与术语
常见错误
19
风格
牛角尖
练习与自测
第10章 字符串、字符数组及指向字符的指针
10.1 字符串文字量
10.2 字符串的输入与存储
10.2.1 为输入的字符串准备存储空间
10.2.2 puts()函数
10.2.3 字符数组的初始化
10.3 例题
10.3.1 求字符串长度
10.3.2 比较两个字符串的大小
10.3.3 scanf中的转换
10.3.4 字符处理库函数
10.4 形参说明符“[]”里的修饰符(C99)
10.5 常用的字符串函数
10.5.1 字符串操作函数
10.5.2 sscanf、sprintf()函数
10.5.3 restrict关键字(C99)及memcpy()函数集
10.5.4 字符串转换函数
10.6 main()的参数
10.6.1 指向指针的指针
10.6.2 main()函数的第二种写法
10.7 体现代码优美的数据类型——枚举类型
小结
概念
风格
常见错误
牛角尖
练习与自测
第3篇 复杂的数据结构、算法及其他话题
20
第11章 复杂的数据类型与算法
11.1 2 2 2 2=0
11.2 复杂数据类型的构造和解读
11.2.1 数据类型的构造方法
11.2.2 复杂数据类型的解读
11.2.3 添乱的const等类型限定符
11.2.4 5 5 5 5 5=19
11.3 递归、穷举、回溯、排列
11.3.1 2、9、6能组成多少个两位数
11.3.2 更自然地思考
11.3.3 进一步的抽象和概括
11.3.4 回溯法
11.3.5 排列问题
11.4 更自由地使用内存
11.4.1 100!=?
11.4.2 老土的办法
11.4.3 动态分配内存函数
11.4.4 改进的方法
11.4.5 C99中的柔性数组成员(C99)
11.4.6 进一步的思考
11.4.7 用链表解决问题
11.5 typedef
小结
概念
风格
常见错误
忠告
牛角尖
练习与自测
第12章 程序的输入与输出
12.1 面向文件的输入与输出
12.1.1 把程序输出写入文件
21
12.1.2 C程序怎样读文件
12.1.3 格式化输入、输出的格式
12.1.4 fprintf()与printf()函数的等效性
12.2 文卷、流、“FILE”及“FILE *”
12.2.1 文卷(File)
12.2.2 流(stream)
12.2.3 “FILE”结构体
12.2.4 FILE *
12.2.5 文本流和二进制流
12.2.6 自动打开的流
12.2.7 EOF
12.2.8 其他几个用于文本文卷的I/O函数
12.3 二进制文卷的读写
12.3.1 二进制流
12.3.2 用fwrite()写二进制文卷
12.3.3 用fread()读二进制文卷
12.3.4 feof()函数和ferror()函数
12.3.5 讨论
12.4 定位问题
12.4.1 ftell()函数
12.4.2 fseek()函数
12.4.3 rewind()函数
12.4.4 fgetpos()函数和fsetpos()函数
12.5 制作素数表
小结
概念
常见错误
风格
牛角尖
练习与自测
第13章 程序组织与编译预处理
13.1 简介
13.1.1 一般特点
22
13.1.2 预处理的几个阶段
13.2 文件包含
13.3 Tic-Tac-Toe游戏
13.3.1 分割——思考、手段和意义
13.3.2 总结
13.3.3 回到起点
13.3.4 “走两步”
13.3.5 重复#include的问题
13.3.6 如何处理测试用的代码
13.3.7 再次回到起点
13.3.8 抽象的棋盘
13.4 重新开始
13.4.1 明确任务
13.4.2 程序功能的初步定义
13.4.3 输出
13.4.4 抽签
13.5 宏定义与宏替换
13.5.1 类似对象的宏
13.5.2 把东西都塞到柜子里去
13.5.3 类似函数的宏
13.5.4 显示空的棋盘
13.6 使用外部变量
13.6.1 外部变量
13.6.2 外部变量的应用
13.7 走棋
13.7.1 多态
13.7.2 拼接单词
13.7.3 static函数
13.7.4 完成“棋手”模块
13.7.5 抽象棋盘——对封装的模拟
13.7.6 具象棋盘的处理
13.7.7 反省与检讨
13.8 预处理命令的其他话题
13.8.1 再谈宏
13.8.2 其他编译预处理命令
小结
23
概念
常见错误
风格
牛角尖
练习与自测
第14章 标准库简介
14.1 使用标准库的一些常识
14.1.1 标准头与标准头文件
14.1.2 使用库的禁忌
14.1.3 并存的宏与函数
14.1.4 函数定义域问题
14.2 对语言的补充
14.2.1 标准定义stddef.h
14.2.2 iso646.h
14.2.3 limits.h和float.h
14.2.4 stdarg.h
14.2.5 stdbool.h(C99)
14.2.6 stdint.h(C99)
14.3 stdio.h
14.3.1 数据类型
14.3.2 宏
14.3.3 函数
14.4 通用函数:stdlib.h
14.4.1 数值转换
14.4.2 系列伪随机数生成函数
14.4.3 内存管理函数
14.4.4 环境通信函数
14.4.5 查找与排序函数
14.4.6 整数算术函数
14.4.7 多字节、宽字节字符
14.5 inttypes.h(C99)
14.6 string.h
14.7 数值计算
14.7.1 math.h(C89)
24
14.7.2 math.h(C99)
14.7.3 complex.h(C99)
14.7.4 tgmath.h(C99)
14.7.5 fenv.h(C99)
14.8 错误处理:errno.h
14.8.1 errno:一个左值
14.8.2 errno的值
14.9 断言与调试:assert.h
14.10 非本地跳转setjmp.h
14.11 信号处理signal.h
14.12 time.h
14.13 国际化问题
14.13.1 locale.h
14.13.2 ctype.h与wctype.h(C99)
14.13.3 wchar.h
附录
附录A C语言的关键字
附录B C语言的数据类型
附录C ASCII表
附录D C语言运算符
参考文献
25
深入理解C++11 ——C++11新特性解析与应用
非扫描版
[加]Michael Wong
IBM XL编译器中国开发团队 著
ISBN:978-7-111-42660-8
第1章 新标准的诞生
1.1 曙光:C++11标准的诞生
1.1.1 C++11/C++0x(以及C11/C1x)——新标准诞生
1.1.2 什么是C++11/C++0x
1.1.3 新C++语言的设计目标
1.2 今时今日的C++
1.2.1 C++的江湖地位
1.2.2 C++11语言变化的领域
1.3 C++11特性的分类
1.4 C++特性一览
1.4.1 稳定性与兼容性之间的抉择
1.4.2 更倾向于使用库而不是扩展语言来实现特性
1.4.3 更倾向于通用的而不是特殊的手段来实现特性
1.4.4 专家新手一概支持
3
1.4.5 增强类型的安全性
1.4.6 与硬件紧密合作
1.4.7 开发能够改变人们思维方式的特性
1.4.8 融入编程现实
1.5 本书的约定
1.5.1 关于一些术语的翻译
1.5.2 关于代码中的注释
1.5.3 关于本书中的代码示例与实验平台
第2章 保证稳定性和兼容性
2.1 保持与C99兼容
2.1.1 预定义宏
2.1.2 __func__预定义标识符
2.1.3 _Pragma操作符
2.1.4 变长参数的宏定义以及__VA_ARGS__
2.1.5 宽窄字符串的连接
2.2 long long整型
2.3 扩展的整型
2.4 宏__cplusplus
2.5 静态断言
2.5.1 断言:运行时与预处理时
2.5.2 静态断言与static_assert
2.6 noexcept修饰符与noexcept操作符
2.7 快速初始化成员变量
2.8 非静态成员的sizeof
2.9 扩展的friend语法
2.10 final/override控制
2.11 模板函数的默认模板参数
4
2.12 外部模板
2.12.1 为什么需要外部模板
2.12.2 显式的实例化与外部模板的声明
2.13 局部和匿名类型作模板实参
2.14 本章小结
第3章 通用为本,专用为末
3.1 继承构造函数
3.2 委派构造函数
3.3 右值引用:移动语义和完美转发
3.3.1 指针成员与拷贝构造
3.3.2 移动语义
3.3.3 左值、右值与右值引用
3.3.4 std::move:强制转化为右值
3.3.5 移动语义的一些其他问题
3.3.6 完美转发
3.4 显式转换操作符
3.5 列表初始化
3.5.1 初始化列表
3.5.2 防止类型收窄
3.6 POD类型
3.7 非受限联合体
3.8 用户自定义字面量
3.9 内联名字空间
3.10 模板的别名
3.11 一般化的SFINEA规则
3.12 本章小结
第4章 新手易学,老兵易用
5
4.1 右尖括号>的改进
4.2 auto类型推导
4.2.1 静态类型、动态类型与类型推导
4.2.2 auto的优势
4.2.3 auto的使用细则
4.3 decltype
4.3.1 typeid与decltype
4.3.2 decltype的应用
4.3.3 decltype推导四规则
4.3.4 cv限制符的继承与冗余的符号
4.4 追踪返回类型
4.4.1 追踪返回类型的引入
4.4.2 使用追踪返回类型的函数
4.5 基于范围的for循环
4.6 本章小结
第5章 提高类型安全
5.1 强类型枚举
5.1.1 枚举:分门别类与数值的名字
5.1.2 有缺陷的枚举类型
5.1.3 强类型枚举以及C++11对原有枚举类型的扩展
5.2 堆内存管理:智能指针与垃圾回收
5.2.1 显式内存管理
5.2.2 C++11的智能指针
5.2.3 垃圾回收的分类
5.2.4 C++与垃圾回收
5.2.5 C++11与最小垃圾回收支持
5.2.6 垃圾回收的兼容性
6
5.3 本章小结
第6章 提高性能及操作硬件的能力
6.1 常量表达式
6.1.1 运行时常量性与编译时常量性
6.1.2 常量表达式函数
6.1.3 常量表达式值
6.1.4 常量表达式的其他应用
6.2 变长模板
6.2.1 变长函数和变长的模板参数
6.2.2 变长模板:模板参数包和函数参数包
6.2.3 变长模板:进阶
6.3 原子类型与原子操作
6.3.1 并行编程、多线程与C++11
6.3.2 原子操作与C++11原子类型
6.3.3 内存模型,顺序一致性与memory_order
6.4 线程局部存储
6.5 快速退出:quick_exit与at_quick_exit
6.6 本章小结
第7章 为改变思考方式而改变
7.1 指针空值——nullptr
7.1.1 指针空值:从0到NULL,再到nullptr
7.1.2 nullptr和nullptr_t
7.1.3 一些关于nullptr规则的讨论
7.2 默认函数的控制
7.2.1 类与默认函数
7.2.2 “=default”与“=deleted”
7.3 lambda函数
7
7.3.1 lambda的一些历史
7.3.2 C++11中的lambda函数
7.3.3 lambda与仿函数
7.3.4 lambda的基础使用
7.3.5 关于lambda的一些问题及有趣的实验
7.3.6 lambda与STL
7.3.7 更多的一些关于lambda的讨论
7.4 本章小结
第8章 融入实际应用
8.1 对齐支持
8.1.1 数据对齐
8.1.2 C++11的alignof和alignas
8.2 通用属性
8.2.1 语言扩展到通用属性
8.2.2 C++11的通用属性
8.2.3 预定义的通用属性
8.3 Unicode支持
8.3.1 字符集、编码和Unicode
8.3.2 C++11中的Unicode支持
8.3.3 关于Unicode的库支持
8.4 原生字符串字面量
8.5 本章小结
附录A C++11对其他标准的不兼容项目
A.1 C++11和C++03的不兼容项目
A.2 C++和ISO C标准的不兼容项目
A.3 C++11与C11的区别
A.4 针对C++03的完善
8
附录B 弃用的特性
附录C 编译器支持
附录D 相关资源
D.1 C++11特性建议稿
D.2 其他有用的资源
9
征服C指针 非扫描版 作者:前橋和弥 译者:吴雅明
ISBN:978-7-115-30121-5
目录
版权声明
译者序
前言
第 0 章 本书的目标与结构——引言
0.1 本书的目标
0.2 目标读者和内容结构
第 1 章 从基础开始——预备知识和复习
1.1 C 是什么样的语言
1.2 关于指针
1.3 关于数组
第 2 章 做个实验见分晓——C 是怎么使用内存的
2.1 虚拟地址
2.2 C 的内存的使用方法
2.3 函数和字符串常量
2.4 静态变量
2.5 自动变量(栈)
2.6 利用 malloc()来进行动态内存分配(堆)
2.7 内存布局对齐
2.8 字节排序
2.9 关于开发语言的标准和实现——对不起,前面的内容都是忽悠的
第 3 章 揭秘 C 的语法——它到底是怎么回事
3.1 解读 C 的声明
3.2 C 的数据类型的模型
3.3 表达式
3.4 解读 C 的声明(续)
3.5 其他
3.6 应该记住:数组和指针是不同的事物
第 4 章 数组和指针的常用方法
4.1 基本的使用方法
4.2 组合使用
4.3 违反标准的技巧
第 5 章 数据结构——真正的指针的 使用方法
5.1 案例学习 1:计算单词的出现频率
5.2 案例学习 2:绘图工具的数据结构
第 6 章 其他——拾遗
6.1 陷阱
6.2 惯用句法
Vivado HLS 视频课程总结
视频课程源:http://xilinx.eetop.cn/category-83
目录
1 从软件工程师的角度来看 FPGA 架构 3
2 Vivado HLS的工作机制 5
3-4 HLS设计流程基本概念 9
5 任意精度数据类型 15
5.1 C语言支持的数据类型 15
5.2 sizeof()函数使用 16
5.3 设置Visual Studio支持任意精度数据类型 17
6 数组类型转换 17
6.1 变量的定义和初始化 17
6.2 定点数据类型 18
6.3 浮点数据类型的定义和初始化 19
6.4 隐式数据类型转换 19
6.5 显示数据类型转换 19
7 Vivado HLS中的复合数据类型 20
7.1 结构体 20
7.2 枚举类型 22
8 Vivado HLS中的C++基本运算 23
9 测试平台的基本架构 25
9.1 Test Bench 25
9.2 C Test Bench 26
10 测试激励 28
11 测试输出检测与格式控制 28
11.1 Scoreboard 28
11.2 输出格式控制 30
12 接口综合基本介绍 33
12.1 接口综合概述 33
12.2 block-level interface protocol和port-level interface protocol 34
13 接口综合之数组 35
14 接口综合案例演示 37
14.1 添加寄存器 37
14.2 添加时钟使能信号 38
14.3 指令优化 38
15 for循环优化-基本性能指标 40
15.1 基本衡量指标 40
15.2 for循环pipeline 41
15.3 for循环UNROLL展开 41
15.4 for循环变量i 42
16 for循环优化-循环合并 42
17 for循环优化-数据流 46
18 for循环优化-嵌套的for循环优化 54
18.1 循环嵌套类型 54
18.2 Perfect loop nest示例 55
18.3 Imperfect loop nest示例 56
19 for循环优化-其他优化方法 59
19.1 for循环的并行性 59
19.2 for循环pipeline时的rewind选项 61
19.3 for循环的循环边界是变量时处理方法 64
20 数组优化-数组分割 67
20.1 数组接口 67
20.2 数组分割 67
21 数组优化-数组映射和重组 69
21.1 数组的映射 69
21.2 数组的重组 72
21.3 综合对比 72
22 数组优化-其他优化方法 72
22.1 定义ROM 72
22.2 数组的初始化 74
23 函数层面优化 75
23.1 代码风格 75
23.2 Inline 75
23.3 Allocation 75
23.3 Dataflow 75
24 总结分析 77
24.1 改善吞吐率(Throughput) 77
24.2 改善时延(Latency) 78
24.3 改善资源(Area) 79
线性代数 美 Steven J. Leon 原书第9版
本书译自StevenJ. Leon所著的《Linear Algebra with Applications, Ninth Edition》一书, 是一本既具有深刻的理论意义, 又具有重要应用价值的书籍. 本书不仅适合作为本科生学习线性代数基本知识的教材, 也可作为普通读者工程实践中的参考书.
原书作者从事线性代数的教学和研究工作几十年, 有着非常丰富的教学和研究经验. 本书前八版得到了众多读者的肯定, 本版又增添了新的章节, 并调整了部分章节的顺序
本书包含的内容非常丰富, 除了对线性代数的基本概念进行了必要的阐述和证明外, 还给出了大量的应用实例. 这些实例均与现代科学技术及生产、 生活实践紧密相关. 通过这些例子, 读者可在学习线性代数基本知识的同时, 了解这些基本知识是如何在实践中应用的, 从而大大提高学习线性代数的兴趣, 并将线性代数的理论与应用实践 紧密结合起来.
本书另外一个重要的特色是, 紧密结合数学工具软件MATLAB. 在每一章的结尾都包含很多计算机操作的练习, 附录中还给出了完成这些练习所需掌握的基本知识. 这 些计算机练习将为读者进一步理解线性代数的基本内容, 把握线性代数研究的实质, 灵活运用线性代数的基本方法, 提供十分有益的帮助.
在本书的翻译过程中, 得到了机械工业出版社华章公司的大力支持与帮助, 在此表示感谢
动⼿学深度学习 A. Zhang, M. Li, Z. C. Lipton, and A. J. Smola
1 引⾔1
1.1 前⾔. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 深度学习简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 如何使⽤本书. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 预备知识21
2.1 获取和运⾏本书代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 数据操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 ⾃动求梯度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4 查阅MXNet ⽂档. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3 深度学习基础41
3.1 线性回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2 线性回归的从零开始实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3 线性回归的Gluon 实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4 Softmax 回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.5 图像分类数据集(Fashion-MNIST) . . . . . . . . . . . . . . . . . . . . . . . . 62
3.6 Softmax 回归的从零开始实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.7 Softmax 回归的Gluon 实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.8 多层感知机. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
i
3.9 多层感知机的从零开始实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.10 多层感知机的Gluon 实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.11 模型选择、⽋拟合和过拟合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.12 权重衰减. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.13 丢弃法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.14 正向传播、反向传播和计算图. . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.15 数值稳定性和模型初始化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.16 实战Kaggle ⽐赛:房价预测. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4 深度学习计算121
4.1 模型构造. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.2 模型参数的访问、初始化和共享. . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.3 模型参数的延后初始化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.4 ⾃定义层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.5 读取和存储. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.6 GPU 计算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5 卷积神经⽹络145
5.1 ⼆维卷积层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.2 填充和步幅. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.3 多输⼊通道和多输出通道. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.4 池化层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
5.5 卷积神经⽹络(LeNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.6 深度卷积神经⽹络(AlexNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
5.7 使⽤重复元素的⽹络(VGG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.8 ⽹络中的⽹络(NiN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.9 含并⾏连结的⽹络(GoogLeNet) . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.10 批量归⼀化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.11 残差⽹络(ResNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.12 稠密连接⽹络(DenseNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
6 循环神经⽹络203
6.1 语⾔模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
6.2 循环神经⽹络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
6.3 语⾔模型数据集(周杰伦专辑歌词) . . . . . . . . . . . . . . . . . . . . . . . . 210
ii
6.4 循环神经⽹络的从零开始实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
6.5 循环神经⽹络的Gluon 实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
6.6 通过时间反向传播. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
6.7 ⻔控循环单元(GRU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
6.8 ⻓短期记忆(LSTM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
6.9 深度循环神经⽹络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
6.10 双向循环神经⽹络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
7 优化算法249
7.1 优化与深度学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
7.2 梯度下降和随机梯度下降. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
7.3 小批量随机梯度下降. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
7.4 动量法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
7.5 Adagrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
7.6 RMSProp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
7.7 Adadelta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
7.8 Adam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
8 计算性能293
8.1 命令式和符号式混合编程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
8.2 异步计算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
8.3 ⾃动并⾏计算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
8.4 多GPU 计算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
8.5 多GPU 计算的Gluon 实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
9 计算机视觉323
9.1 图像增⼴. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
9.2 微调. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
9.3 ⽬标检测和边界框. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
9.4 锚框. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
9.5 多尺度⽬标检测. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
9.6 ⽬标检测数据集(⽪卡丘) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
9.7 单发多框检测(SSD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
9.8 区域卷积神经⽹络(R-CNN)系列. . . . . . . . . . . . . . . . . . . . . . . . . . 371
9.9 语义分割和数据集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
iii
9.10 全卷积⽹络(FCN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
9.11 样式迁移. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
9.12 实战Kaggle ⽐赛:图像分类(CIFAR-10) . . . . . . . . . . . . . . . . . . . . . 404
9.13 实战Kaggle ⽐赛:狗的品种识别(ImageNet Dogs) . . . . . . . . . . . . . . . . . 413
10 ⾃然语⾔处理423
10.1 词嵌⼊(word2vec) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
10.2 近似训练. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
10.3 Word2vec 的实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
10.4 ⼦词嵌⼊(fastText) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
10.5 全局向量的词嵌⼊(GloVe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
10.6 求近义词和类⽐词. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
10.7 ⽂本情感分类:使⽤循环神经⽹络. . . . . . . . . . . . . . . . . . . . . . . . . . 452
10.8 ⽂本情感分类:使⽤卷积神经⽹络(textCNN) . . . . . . . . . . . . . . . . . . 458
10.9 编码器—解码器(seq2seq) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
10.10 束搜索. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
10.11 注意⼒机制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
10.12 机器翻译. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
11 附录487
11.1 主要符号⼀览. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
11.2 数学基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
11.3 使⽤Jupyter 记事本. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
11.4 使⽤AWS 运⾏代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
11.5 GPU 购买指南. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
11.6 如何为本书贡献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
11.7 gluonbook 包索引. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
设计模式之禅(第2版) 秦小波著
ISBN:978-7-111-43787-1
非扫描版
目 录
前言
第一部分 大旗不挥,谁敢冲锋——6大设计原则全新解读
第1章 单一职责原则
1.1 我是“牛”类,我可以担任多职吗
1.2 绝杀技,打破你的传统思维
1.3 我单纯,所以我快乐
1.4 最佳实践
第2章 里氏替换原则
2.1 爱恨纠葛的父子关系
2.2 纠纷不断,规则压制
2.3 最佳实践
第3章 依赖倒置原则
3.1 依赖倒置原则的定义
3.2 言而无信,你太需要契约
3.3 依赖的三种写法
3.4 最佳实践
第4章 接口隔离原则
4.1 接口隔离原则的定义
4.2 美女何其多,观点各不同
4.3 保证接口的纯洁性
4.4 最佳实践
第5章 迪米特法则
5.1 迪米特法则的定义
5.2 我的知识你知道得越少越好
5.3 最佳实践
3
第6章 开闭原则
6.1 开闭原则的定义
6.2 开闭原则的庐山真面目
6.3 为什么要采用开闭原则
6.4 如何使用开闭原则
6.5 最佳实践
第二部分 真刀实枪 ——23种设计模式完美演绎
第7章 单例模式
7.1 我是皇帝我独苗
7.2 单例模式的定义
7.3 单例模式的应用
7.4 单例模式的扩展
7.5 最佳实践
第8章 工厂方法模式
8.1 女娲造人的故事
8.2 工厂方法模式的定义
8.3 工厂方法模式的应用
8.4 工厂方法模式的扩展
8.5 最佳实践
第9章 抽象工厂模式
9.1 女娲的失误
9.2 抽象工厂模式的定义
9.3 抽象工厂模式的应用
9.4 最佳实践
第10章 模板方法模式
10.1 辉煌工程——制造悍马
10.2 模板方法模式的定义
4
10.3 模板方法模式的应用
10.4 模板方法模式的扩展
10.5 最佳实践
第11章 建造者模式
11.1 变化是永恒的
11.2 建造者模式的定义
11.3 建造者模式的应用
11.4 建造者模式的扩展
11.5 最佳实践
第12章 代理模式
12.1 我是游戏至尊
12.2 代理模式的定义
12.3 代理模式的应用
12.4 代理模式的扩展
12.5 最佳实践
第13章 原型模式
13.1 个性化电子账单
13.2 原型模式的定义
13.3 原型模式的应用
13.4 原型模式的注意事项
13.5 最佳实践
第14章 中介者模式
14.1 进销存管理是这个样子的吗
14.2 中介者模式的定义
14.3 中介者模式的应用
14.4 中介者模式的实际应用
14.5 最佳实践
5
第15章 命令模式
15.1 项目经理也难当
15.2 命令模式的定义
15.3 命令模式的应用
15.4 命令模式的扩展
15.5 最佳实践
第16章 责任链模式
16.1 古代妇女的枷锁——“三从四德”
16.2 责任链模式的定义
16.3 责任链模式的应用
16.4 最佳实践
第17章 装饰模式
17.1 罪恶的成绩单
17.2 装饰模式的定义
17.3 装饰模式应用
17.4 最佳实践
第18章 策略模式
18.1 刘备江东娶妻,赵云他容易吗
18.2 策略模式的定义
18.3 策略模式的应用
18.4 策略模式的扩展
18.5 最佳实践
第19章 适配器模式
19.1 业务发展——上帝才能控制
19.2 适配器模式的定义
19.3 适配器模式的应用
19.4 适配器模式的扩展
6
19.5 最佳实践
第20章 迭代器模式
20.1 整理项目信息——苦差事
20.2 迭代器模式的定义
20.3 迭代器模式的应用
20.4 最佳实践
第21章 组合模式
21.1 公司的人事架构是这样的吗
21.2 组合模式的定义
21.3 组合模式的应用
21.4 组合模式的扩展
21.5 最佳实践
第22章 观察者模式
22.1 韩非子身边的卧底是谁派来的
22.2 观察者模式的定义
22.3 观察者模式的应用
22.4 观察者模式的扩展
22.5 最佳实践
第23章 门面模式
23.1 我要投递信件
23.2 门面模式的定义
23.3 门面模式的应用
23.4 门面模式的注意事项
23.5 最佳实践
第24章 备忘录模式
24.1 如此追女孩子,你还不乐
24.2 备忘录模式的定义
7
24.3 备忘录模式的应用
24.4 备忘录模式的扩展
24.5 最佳实践
第25章 访问者模式
25.1 员工的隐私何在
25.2 访问者模式的定义
25.3 访问者模式的应用
25.4 访问者模式的扩展
25.5 最佳实践
第26章 状态模式
26.1 城市的纵向发展功臣——电梯
26.2 状态模式的定义
26.3 状态模式的应用
26.4 最佳实践
第27章 解释器模式
27.1 四则运算你会吗
27.2 解释器模式的定义
27.3 解释器模式的应用
27.4 最佳实践
第28章 享元模式
28.1 内存溢出,司空见惯
28.2 享元模式的定义
28.3 享元模式的应用
28.4 享元模式的扩展
28.5 最佳实践
第29章 桥梁模式
29.1 我有一个梦想……
8
29.2 桥梁模式的定义
29.3 桥梁模式的应用
29.4 最佳实践
第三部分 谁的地盘谁做主 ——设计模式PK
第30章 创建类模式大PK
30.1 工厂方法模式VS建造者模式
30.2 抽象工厂模式VS建造者模式
第31章 结构类模式大PK
31.1 代理模式VS装饰模式
31.2 装饰模式VS适配器模式
第32章 行为类模式大PK
32.1 命令模式VS策略模式
32.2 策略模式VS状态模式
32.3 观察者模式VS责任链模式
第33章 跨战区PK
33.1 策略模式VS桥梁模式
33.2 门面模式VS中介者模式
33.3 包装模式群PK
第四部分 完美世界 ——设计模式混编
第34章 命令模式+责任链模式
34.1 搬移UNIX的命令
34.2 混编小结
第35章 工厂方法模式+策略模式
35.1 迷你版的交易系统
35.2 混编小结
第36章 观察者模式+中介者模式
36.1 事件触发器的开发
9
36.2 混编小结
第五部分 扩展篇
第37章 MVC框架
37.1 MVC框架的实现
37.2 最佳实践
第38章 新模式
38.1 规格模式
38.2 对象池模式
38.3 雇工模式
38.4 黑板模式
38.5 空对象模式
附录 23种设计模式彩图
10
算法帝国 中文非扫面版
算法帝国中文非扫面版 克里斯托弗 斯坦纳 著
第1章 华尔街,第一张多米诺骨牌
1987 年年初的一天,纳斯达克交易所的一位工作人员出现在世贸中心电梯间,我们
就叫他琼斯吧。他找到合适的电梯,按下按钮。他是来例行拜访一位快速增长的客户。琼
斯知道接下来见到的人是什么样儿,华尔街从事股权交易的人都大同小异:拥有常春藤名
校教育背景、追逐利润的白人男性,没什么特别的。
深度学习(中文文字版 无水印无广告)
深度学习(中文版 无水印无广告版)
724页,个人纯手工去水印去广告,还加了封面(个人强迫症,不喜欢的可以删掉)
作者
[美] Ian Goodfellow
[加] Yoshua Bengio
[加] Aaron Courville
第3章 80x86微处理器.ppt
第3章 80x86微处理器.ppt
第1章 微型计算机系统导论new.ppt
第1章 微型计算机系统导论new.ppt
20101231175737_微机原理课后习题答案.pdf
20101231175737_微机原理课后习题答案.pdf
第六届单片机高年级组培训.pdf
第六届单片机高年级组培训.pdf
ATmega16相关例程
基本的ATmega16的程序,包括LED,PWM,键盘和1602、12864液晶屏等基础程序。