Java最新2022版面试题及解答(266页)
Java最新2022版面试题及解答(266页)
基础篇
JVM篇
多线程&并发篇
Spring篇
MyBatis篇
SpringBoot篇
MySQL篇
SpringCloud篇
Dubbo篇
Nginx篇
MQ篇
数据结构与算法
Linux篇
Zookeeper篇
Redis篇
分布式锁
网络篇
设计模式
maven篇
ElasticSearch篇
tomcat篇
Git篇
软实力篇
八大机器学习模型大比拼!看看谁的表现最好?
八大机器学习模型大比拼!看看谁的表现最好?
最近在看华泰的《人工智能选股系列》 , 然后就想用现在的数据实现一下. 比较了K近邻、逻辑回归、决策树、朴素贝叶斯、随机森林、Adaboost、支持向量机、XGboost一共八种机器学习选股模型在中证500指数上的表现。
本人才疏学浅,编程能力有限,虽然所有模型的表现都超越了中证500,但是收益并不可观。还望各路大神能够指点一下
Spring Boot 2.1-参考手册-中文版(高清文字版带目录).pdf
目录
I. Spring Boot 文件
1. 关于文档
2. 获得帮助
3. 第一步
4. 使用Spring Boot
5. 了解Spring Boot 功能
6. 转向生产
7. 高级主题
II 。 入门
8. 介绍Spring Boot
9. 系统要求
9.1.Servlet 容器
10. 安装Spring Boot
10.1.Java Developer 的安装说明
10.1.1.Maven安装
10.1.2.Gradle安装
10.2. 安装Spring Boot CLI
10.2.1.手动安装
10.2.2.使用SDKMAN安装!
10.2.3.OSX Homebrew安装
10.2.4.MacPorts安装
10.2.5.命令行完成
10.2.6.Windows Scoop安装
10.2.7.快速启动Spring CLI示例
10.3. 从早期版本的Spring Boot 升级
11. 开发您的第一个Spring Boot 应用程序
11.1. 创建POM
11.2. 添加Classpath 依赖项
11.3. 编写代码
11.3.1.@RestController和@RequestMapping Annotations
11.3.2.@EnableAutoConfiguration注释
11.3.3.“主要”方法
11.4. 运行示例
11.5. 创建一个可执行的Jar
12. 接下来要阅读的内容
III 。 使用Spring Boot
13. 构建系统
13.1. 依赖管理
13.2.Maven
13.2.1.继承Starter Parent
13.2.2.在没有父POM的情况下使用Spring Boot
13.2.3.使用Spring Boot Maven插件
13.3.Gradle
13.4.Ant
13.5.Starters
14. 构建您的代码
14.1. 使用“ 默认” 包
14.2. 找到主应用程序类
15. 配置类
15.1. 导入其他配置类
15.2. 导入XML 配置
16. 自动配置
16.1. 逐步更换自动配置
16.2. 禁用特定的自动配置类
17. Spring Beans 和依赖注入
18. 使用@SpringBootApplication Annotation
19. 运行您的应用程序
19.1. 从IDE 运行
19.2. 作为打包应用程序运行
19.3. 使用Maven 插件
19.4. 使用Gradle 插件
19.5. 热插拔
20. 开发人员工具
20.1.Property 默认值
20.2. 自动重启
20.2.1.记录条件评估中的更改
20.2.2.不包括资源
20.2.3.观看其他路径
20.2.4.禁用重启
20.2.5.使用触发器文件
20.2.6.自定义重新启动类加载器
20.2.7.已知限制
20.3.LiveReload
20.4. 全局设置
20.5. 远程应用
20.5.1.运行远程客户端应用程序
20.5.2.远程更新
21. 包装您的生产应用程序
22. 接下来要阅读的内容
IV 。Spring Boot 功能
23. SpringApplication
23.1. 启动失败
23.2. 自定义横幅
23.3. 自定义SpringApplication
23.4.Fluent Builder API
23.5. 应用程序事件和监听器
23.6. 网络环境
23.7. 访问应用程序参数
23.8. 使用ApplicationRunner 或CommandLineRunner
23.9. 申请退出
23.10. 管理功能
24. 外部配置
24.1. 配置随机值
24.2. 访问命令行属性
24.3. 应用程序Property 文件
24.4. 配置文件特定的属性
24.5. 属性中的占位符
24.6. 加密属性
24.7. 使用YAML 而不是属性
24.7.1.加载YAML
24.7.2.在Spring环境中将YAML公开为属性
24.7.3.多个档案的YAML文件
24.7.4.YAML缺点
24.8. 类型安全的配置属性
24.8.1.第三方配置
24.8.2.轻松绑定
24.8.3.合并复杂类型
24.8.4.属性转换
转换持续时间
转换数据大小
24.8.5.@ConfigurationProperties验证
24.8.6.@ConfigurationProperties vs. @Value
25. 简介
25.1. 添加活动配置文件
25.2. 以编程方式设置配置文件
25.3. 配置文件特定的配置文件
26. 记录
26.1. 日志格式
26.2. 控制台输出
26.2.1.彩色编码输出
26.3. 文件输出
26.4. 日志级别
26.5. 日志组
26.6. 自定义日志配置
26.7.Logback Extensions
26.7.1.特定于配置文件的配置
26.7.2.环境属性
27. JSON
27.1.Jackson
27.2.GSON
27.3.JSON-B
28. 开发Web 应用程序
28.1.“Spring Web MVC 框架”
28.1.1.Spring MVC自动配置
28.1.2.HttpMessageConverters
28.1.3.自定义JSON序列化程序和反序列化程序
28.1.4.MessageCodesResolver的信息
28.1.5.静态内容
28.1.6.欢迎页面
28.1.7.自定义Favicon
28.1.8.路径匹配和内容协商
28.1.9.ConfigurableWebBindingInitializer
28.1.10.模板引擎
28.1.11.错误处理
自定义错误页面
将错误页面映射到Spring MVC之外
28.1.12.Spring HATEOAS
28.1.13.CORS支持
28.2.“Spring WebFlux 框架”
28.2.1.Spring WebFlux自动配置
28.2.2.带有HttpMessageReaders和HttpMessageWriters的HTTP编解码器
28.2.3.静态内容
28.2.4.模板引擎
28.2.5.错误处理
自定义错误页面
28.2.6.网络过滤器
28.3.JAX-RS 和Jersey
28.4. 嵌入式Servlet 容器支持
28.4.1.Servlet,过滤器和监听器
注册Servlet,过滤器和监听器Spring Beans
28.4.2.Servlet上下文初始化
扫描Servlet,过滤器和侦听器
28.4.3.ServletWebServerApplicationContext
28.4.4.自定义嵌入式Servlet容器
程序化定制
直接自定义ConfigurableServletWebServerFactory
28.4.5.JSP限制
28.5. 嵌入式Reactive Server 支持
28.6.Reactive Server 资源配置
29. 安全
29.1.MVC 安全
29.2.WebFlux 安全
29.3.OAuth2
29.3.1.客户
OAuth2共同提供者的客户注册
29.3.2.资源服务器
29.3.3.授权服务器
29.4. 执行器安全
29.4.1.跨站点请求伪造保护
30. 使用SQL 数据库
30.1. 配置DataSource
30.1.1.嵌入式数据库支持
30.1.2.连接到生产数据库
30.1.3.连接到JNDI数据源
30.2. 使用JdbcTemplate
30.3.JPA 和Spring Data JPA
30.3.1.实体类
30.3.2.Spring数据JPA存储库
30.3.3.创建和删除JPA数据库
30.3.4.在View中打开EntityManager
30.4.Spring 数据JDBC
30.5. 使用H2 的Web 控制台
30.5.1.更改H2控制台的路径
30.6. 使用jOOQ
30.6.1.代码生成
30.6.2.使用DSLContext
30.6.3.jOOQ SQL方言
30.6.4.自定义jOOQ
31. 使用NoSQL Technologies
31.1.Redis
31.1.1.连接到Redis
31.2.MongoDB 的
31.2.1.连接到MongoDB数据库
31.2.2.MongoTemplate
31.2.3.Spring数据MongoDB存储库
31.2.4.嵌入式Mongo
31.3.Neo4j 的
31.3.1.连接到Neo4j数据库
31.3.2.使用嵌入模式
31.3.3.Neo4jSession
31.3.4.Spring数据Neo4j存储库
31.4.Gemfire
31.5.Solr 的
31.5.1.连接到Solr
31.5.2.Spring Data Solr存储库
31.6.Elasticsearch
31.6.1.通过REST客户端连接到Elasticsearch
31.6.2.使用Jest连接到Elasticsearch
31.6.3.使用Spring数据连接到Elasticsearch
31.6.4.Spring Data Elasticsearch存储库
31.7.Cassandra
31.7.1.连接到Cassandra
31.7.2.Spring数据Cassandra存储库
31.8.Couchbase
31.8.1.连接到Couchbase
31.8.2.Spring数据Couchbase存储库
31.9.LDAP
31.9.1.连接到LDAP服务器
31.9.2.Spring数据LDAP存储库
31.9.3.嵌入式内存LDAP服务器
31.10.InfluxDB
31.10.1.连接到InfluxDB
32. 缓存
32.1. 支持的缓存提供程序
32.1.1.通用
32.1.2.JCache(JSR-107)
32.1.3.EhCache 2.x
32.1.4.Hazelcast
32.1.5.Infinispan
32.1.6.Couchbase
32.1.7.Redis
32.1.8.Caffeine
32.1.9.简单
32.1.10.None
33. 消息传递
33.1.JMS
33.1.1.ActiveMQ支持
33.1.2.Artemis支持
33.1.3.使用JNDI ConnectionFactory
33.1.4.发送消息
33.1.5.收到消息
33.2.AMQP
33.2.1.RabbitMQ支持
33.2.2.发送消息
33.2.3.收到消息
33.3.Apache Kafka 支持
33.3.1.发送消息
33.3.2.收到消息
33.3.3.卡夫卡流
33.3.4.其他Kafka Properties
34. 使用 RestTemplate 调用REST 服务
34.1.RestTemplate 自定义
35. 使用 WebClient 调用REST 服务
35.1.WebClient 运行时
35.2.WebClient 自定义
36. 验证
37. 发送电子邮件
38. 使用JTA 的分布式事务
38.1. 使用Atomikos 事务管理器
38.2. 使用Bitronix 事务管理器
38.3. 使用Java EE 托管事务管理器
38.4. 混合XA 和非XA JMS 连接
38.5. 支持替代嵌入式事务管理器
39. Hazelcast
40. Quartz Scheduler
41. 任务执行和调度
42. Spring Integration
43. Spring Session
44. 对JMX 的监测和管理
45. 测试
45.1. 测试范围依赖性
45.2. 测试Spring 应用程序
45.3. 测试Spring Boot 应用程序
45.3.1.检测Web应用程序类型
45.3.2.检测测试配置
45.3.3.排除测试配置
45.3.4.使用模拟环境进行测试
45.3.5.使用正在运行的服务器进
45.3.6.使用JMX
45.3.7.嘲弄和间谍Beans
45.3.8.自动配置的测试
45.3.9.自动配置的JSON测试
45.3.10.自动配置的Spring MVC测试
45.3.11.自动配置Spring WebFlux测试
45.3.12.自动配置的数据JPA测试
45.3.13.自动配置的JDBC测试
45.3.14.自动配置的数据JDBC测试
45.3.15.自动配置的jOOQ测试
45.3.16.自动配置的数据MongoDB测试
45.3.17.自动配置的数据Neo4j测试
45.3.18.自动配置的数据Redis测试
45.3.19.自动配置的数据LDAP测试
45.3.20.自动配置的REST客户端
45.3.21.自动配置的Spring REST文档测试
使用Mock MVC自动配置Spring REST文档测试
使用REST Assured自动配置Spring REST文档测试
45.3.22.额外的自动配置和切片
45.3.23.用户配置和切片
45.3.24.使用Spock测试Spring Boot应用程序
45.4. 测试实用程序
45.4.1.ConfigFileApplicationContextInitializer
45.4.2.TestPropertyValues
45.4.3.OutputCapture
45.4.4.TestRestTemplate
46. WebSockets
47. 网络服务
48. 使用 WebServiceTemplate 调用Web 服务
49. 创建自己的自动配置
49.1. 了解自动配置Beans
49.2. 找到自动配置候选者
49.3. 条件Annotations
49.3.1.课程条件
49.3.2.Bean条件
49.3.3.Property条件
49.3.4.资源条件
49.3.5.网络应用条件
49.3.6.SpEL表达条件
49.4. 测试您的自动配置
49.4.1.模拟Web上下文
49.4.2.覆盖Classpath
49.5. 创建自己的初学者
49.5.1.命名
49.5.2. autoconfigure 模块
49.5.3.入门模块
50. Kotlin 的支持
50.1. 要求
50.2. 空安全
50.3.Kotlin API
50.3.1.runApplication
50.3.2.扩展
50.4. 依赖管理
50.5. @ConfigurationProperties
50.6. 测试
50.7. 资源
50.7.1.进一步阅读
50.7.2.例子
51. 接下来要阅读的内容
V. Spring Boot Actuator :生产就绪功能
52. 启用生产就绪功能
53. 终点
53.1. 启用端点
53.2. 公开端点
53.3. 保护HTTP 端点
53.4. 配置端点
53.5. 用于执行器Web 端点的超媒体
53.6.CORS 支持
53.7. 实现自定义端点
53.7.1.接收输入
输入类型转换
53.7.2.自定义Web端点
Web端点请求谓词
路径
HTTP方法
消费
产生
Web端点响应状态
Web端点范围请求
Web端点安全
53.7.3.Servlet端点
53.7.4.控制器端点
53.8. 健康信息
53.8.1.自动配置的HealthIndicators
53.8.2.编写自定义HealthIndicators
53.8.3.反应健康指标
53.8.4.自动配置的ReactiveHealthIndicators
53.9. 应用信息
53.9.1.自动配置的InfoContributors
53.9.2.定制应用信息
53.9.3.Git提交信息
53.9.4.建立信息
53.9.5.编写自定义InfoContributors
54. 通过HTTP 进行监控和管理
54.1. 自定义管理端点路径
54.2. 自定义管理服务器端口
54.3. 配置特定于管理的SSL
54.4. 自定义管理服务器地址
54.5. 禁用HTTP 端点
55. 对JMX 的监测和管理
55.1. 自定义MBean 名称
55.2. 禁用JMX 端点
55.3. 通过HTTP 使用Jolokia for JMX
55.3.1.定制Jolokia
55.3.2.禁用Jolokia
56. 记录器
56.1. 配置记录器
57. 度量标准
57.1. 入门
57.2. 支持的监控系统
57.2.1.AppOptics
57.2.2.Atlas
57.2.3.Datadog
57.2.4.Dynatrace
57.2.5.Elastic
57.2.6.Ganglia
57.2.7.Graphite
57.2.8.Humio
57.2.9.Influx
57.2.10.JMX
57.2.11.KairosDB
57.2.12.New Relic
57.2.13.Prometheus
57.2.14.SignalFx
57.2.15.简单
57.2.16.StatsD
57.2.17.Wavefront
57.3. 支持的指标
57.3.1.Spring MVC指标
57.3.2.Spring WebFlux指标
57.3.3.Jersey服务器指标
57.3.4.HTTP客户端度量标准
57.3.5.缓存指标
57.3.6.数据源度量标准
57.3.7.Hibernate度量标准
57.3.8.RabbitMQ指标
57.4. 注册自定义指标
57.5. 自定义个别指标
57.5.1.常用标签
57.5.2.Per-meter属性
57.6. 度量标准端点
58. 审计
59. HTTP 跟踪
59.1. 自定义HTTP 跟踪
60. 过程监测
60.1. 扩展配置
60.2. 编程
61. Cloud Foundry 支持
61.1. 禁用Extended Cloud Foundry Actuator 支持
61.2.Cloud Foundry 自签名证书
61.3. 自定义上下文路径
62. 接下来要阅读的内容
VI 。 部署Spring Boot 应用程序
63. 部署到云端
63.1.Cloud Foundry
63.1.1.绑定到服务
63.2.Heroku 的
63.3.OpenShift
63.4. 亚马逊网络服务(AWS )
63.4.1.AWS Elastic Beanstalk
使用Tomcat平台
使用Java SE平台
63.4.2.摘要
63.5.Boxfuse 和亚马逊网络服务
63.6. 谷歌云
64. 安装Spring Boot 应用程序
64.1. 支持的操作系统
64.2.Unix / Linux 服务
64.2.1.安装为 init.d 服务(系统V)
保护 init.d 服务
64.2.2.安装为 systemd 服务
64.2.3.自定义启动脚本
写入时自定义启动脚本
它运行时自定义脚本
64.3.Microsoft Windows 服务
65. 接下来要阅读的内容
七。Spring Boot CLI
66. 安装CLI
67. 使用CLI
67.1. 使用CLI 运行应用程序
67.1.1.推断“抓住”依赖关系
67.1.2.推断“抓住”坐标
67.1.3.默认导入语句
67.1.4.自动主要方法
67.1.5.自定义依赖关系管理
67.2. 多源文件的应用程序
67.3. 打包您的应用程序
67.4. 初始化一个新项目
67.5. 使用嵌入式Shell
67.6. 将扩展添加到CLI
68. 使用Groovy Beans DSL 开发应用程序
69. 使用 settings.xml 配置CLI
70. 接下来要阅读的内容
八。 构建工具插件
71. Spring Boot Maven 插件
71.1. 包括插件
71.2. 打包可执行文件夹和War 文件
72. Spring Boot Gradle 插件
73. Spring Boot AntLib 模块
73.1.Spring Boot Ant 任务
73.1.1. spring-boot:exejar
73.1.2.例子
73.2. spring-boot:findmainclass
73.2.1.例子
74. 支持其他构建系统
74.1. 重新包装档案
74.2. 嵌套库
74.3. 寻找主类
74.4. 重新打包实施示例
75. 接下来要阅读的内容
IX 。' 如何' 指南
76. Spring Boot 申请
76.1. 创建自己的失败分析器
76.2. 自动配置疑难解答
76.3. 在开始之前自定义Environment 或ApplicationContext
76.4. 构建ApplicationContext 层次结构(添加父或根上下文)
76.5. 创建非Web 应用程序
77. 属性和配置
77.1. 在构建时自动展开属性
77.1.1.使用Maven自动Property扩展
77.1.2.使用Gradle自动Property扩展
77.2. 外化 SpringApplication 的配置
77.3. 更改应用程序的外部属性的位置
77.4. 使用“ 短” 命令行参数
77.5. 使用YAML 作为外部属性
77.6. 设置活动Spring Profiles
77.7. 根据环境更改配置
77.8. 发现外部属性的内置选项
78. 嵌入式Web 服务器
78.1. 使用其他Web 服务器
78.2. 禁用Web 服务器
78.3. 更改HTTP 端口
78.4. 使用随机未分配的HTTP 端口
78.5. 在运行时发现HTTP 端口
78.6. 启用HTTP 响应压缩
78.7. 配置SSL
78.8. 配置HTTP / 2
78.8.1.带有Undertow的HTTP / 2
78.8.2.带Jetty的HTTP / 2
78.8.3.与Tomcat的HTTP / 2
78.8.4.带有Reactor Netty的HTTP / 2
78.9. 配置Web 服务器
78.10. 向应用程序添加Servlet ,过滤器或监听器
78.10.1.使用Spring Bean添加Servlet,过滤器或监听器
禁用Servlet或过滤器的注册
78.10.2.使用类路径扫描添加Servlet,过滤器和侦听器
78.11. 配置访问日志记录
78.12. 在前端代理服务器后面运行
78.12.1.自定义Tomcat的代理配置
78.13. 使用Tomcat 启用多个连接器
78.14. 使用Tomcat 的LegacyCookieProcessor
78.15. 使用Undertow 启用多个侦听器
78.16. 使用@ServerEndpoint 创建WebSocket 端点
79. Spring MVC
79.1. 编写JSON REST 服务
79.2. 编写XML REST 服务
79.3. 自定义Jackson ObjectMapper
79.4. 自定义@ResponseBody 渲染
79.5. 处理多部分文件上载
79.6. 关闭Spring MVC DispatcherServlet
79.7. 关闭默认MVC 配置
79.8. 自定义ViewResolvers
80. 使用Spring 安全性进行测试
81. Jersey
81.1. 使用Spring 安全性保护Jersey 端点
82. HTTP 客户端
82.1. 配置RestTemplate 以使用代理
83. 记录
83.1. 配置Logging for Logging
83.1.1.配置仅文件输出的回溯
83.2. 配置Log4j 进行日志记录
83.2.1.使用YAML或JSON配置Log4j 2
84. 数据访问
84.1. 配置自定义数据源
84.2. 配置两个DataSource
84.3. 使用Spring 数据存储库
84.4. 从Spring 配置中分离@Entity 定义
84.5. 配置JPA 属性
84.6. 配置Hibernate 命名策略
84.7. 配置Hibernate 二级缓存
84.8. 在Hibernate 组件中使用依赖注入
84.9. 使用自定义EntityManagerFactory
84.10. 使用两个EntityManagers
84.11. 使用传统的 persistence.xml 文件
84.12. 使用Spring Data JPA 和Mongo Repositories
84.13. 自定义Spring 数据的Web 支持
84.14. 将Spring 数据存储库公开为REST 端点
84.15. 配置JPA 使用的组件
84.16. 使用两个DataSource 配置jOOQ
85. 数据库初始化
85.1. 使用JPA 初始化数据库
85.2. 使用Hibernate 初始化数据库
85.3. 初始化数据库
85.4. 初始化Spring 批处理数据库
85.5. 使用更高级别的数据库迁移工具
85.5.1.在启动时执行Flyway数据库迁移
85.5.2.在启动时执行Liquibase数据库迁移
86. 消息传递
86.1. 禁用事务处理的JMS 会话
87. 批量申请
87.1. 在启动时执行Spring 批处理作业
88. 执行器
88.1. 更改执行器端点的HTTP 端口或地址
88.2. 自定义'whitelabel' 错误页面
88.3. 消除明智的价值观
89. 安全
89.1. 关闭Spring Boot 安全配置
89.2. 更改UserDetailsService 和添加用户帐户
89.3. 在代理服务器后运行时启用HTTPS
90. 热插拔
90.1. 重新加载静态内容
90.2. 重新加载模板而不重新启动容器
90.2.1.Thymeleaf模板
90.2.2.FreeMarker模板
90.2.3.Groovy模板
90.3. 快速申请重新启动
90.4. 重新加载Java 类而不重新启动容器
91. 建立
91.1. 生成构建信息
91.2. 生成Git 信息
91.3. 自定义依赖性版本
91.4. 使用Maven 创建可执行JAR
91.5. 使用Spring Boot 应用程序作为依赖项
91.6. 可执行jar 运行时提取特定库
91.7. 使用排除项创建不可执行的JAR
91.8. 使用Maven 开始远程调试Spring Boot 应用程序
91.9. 从Ant 构建可执行文件,而不使用 spring-boot-antlib
92. 传统部署
92.1. 创建可部署的War 文件
92.2. 将现有应用程序转换为Spring Boot
92.3. 将WAR 部署到WebLogic
92.4. 使用Jedis 代替Lettuce
X. 附录
A. 常见应用程序属性
B. 配置元数据
B.1. 元数据格式
B.1.1.组属性
B.1.2.Property属性
B.1.3.提示属性
B.1.4.重复的元数据项
B.2. 提供手动提示
B.2.1.价值提示
B.2.2.价值提供者
任何
课程参考
处理为
记录器名称
Spring Bean参考
Spring个人资料名称
B.3. 使用注释处理器生成自己的元数据
B.3.1.嵌套属性
B.3.2.添加其他元数据
C. 自动配置类
C.1. 来自“spring-boot-autoconfigure” 模块
C.2. 来自“spring-boot-actuator-autoconfigure” 模块
D. 测试自动配置注释
E. 可执行的Jar 格式
E.1. 嵌套的JAR
E.1.1.可执行Jar文件结构
E.1.2.可执行文件War文件结构
E.2.Spring Boot 的“JarFile” 课程
E.2.1.与标准Java“JarFile”的兼容性
E.3. 启动可执行的Jars
E.3.1.启动器清单
E.3.2.爆炸档案
E.4. PropertiesLauncher 功能
E.5. 可执行的Jar 限制
E.6. 替代单罐解决方案
F.依赖版本
Docker 容器与容器云(第2版)-高清带目录
本书根据Docker 1.10版和Kubernetes 1.2版对第1版进行了全面更新,从实践者的角度出发,以Docker和Kubernetes为重点,沿着“基本用法介绍”到“核心原理解读”到“高级实践技巧”的思路,一本书讲透当前主流的容器和容器云技术,有助于读者在实际场景中利用Docker容器和容器云解决问题并启发新的思考。全书包括两部分,首部分深入解读Docker容器技术,包括Docker架构与设计、核心源码解读和高级实践技巧;第二部分归纳和比较了三类基于Docker的主流容器云项目,包括专注Docker容器编排与部署的容器云、专注应用支撑的容器云以及一切皆容器的Kubernetes,进而详细解读了Kubernetes核心源码的设计与实现,介绍了几种典型场景下的Kubernetes实践。
本书适用于有一定Docker基础的开发者、架构师、IT专业学生以及探索基于Docker构建云计算平台的技术人员,也非常适合作为高校教材或培训资料。
目录
第一部分 Docker深入解读
第1章 从容器到容器云 2
1.1 云计算平台 2
1.2 容器,新的革命 3
1.3 进化:从容器到容器云 7
第2章 Docker基础 8
2.1 Docker的安装 8
2.2 Docker操作参数解读 9
2.3 搭建你的第一个Docker应用栈 16
2.3.1 Docker集群部署 16
2.3.2 第一个Hello World 17
2.3.3 开发、测试和发布一体化 27
第3章 Docker核心原理解读 28
3.1 Docker背后的内核知识 28
3.1.1 namespace资源隔离 28
3.1.2 cgroups资源限制 45
3.2 Docker架构概览 53
3.3 client和daemon 55
3.3.1 client模式 55
3.3.2 daemon模式 57
3.3.3 从client到daemon 63
3.4 libcontainer 66
3.4.1 libcontainer的工作方式 68
3.4.2 libcontainer实现原理 69
3.4.3 使用nsinit与libcontainer进行交互 74
3.5 Docker镜像管理 76
3.5.1 什么是Docker镜像 76
3.5.2 Docker镜像关键概念 78
3.5.3 Docker镜像操作解析 80
3.5.4 Docker容器的迁移方法 84
3.6 Docker存储驱动 85
3.6.1 存储驱动的功能与管理 86
3.6.2 aufs与Device Mapper驱动 87
3.7 Docker数据卷 93
3.7.1 数据卷的使用方式 94
3.7.2 数据卷原理解读 98
3.8 Docker网络管理 102
3.8.1 Docker网络基础 102
3.8.2 Docker daemon网络配置原理 107
3.8.3 libcontainer网络配置原理 111
3.8.4 Link原理解析 115
3.9 Docker与容器安全 118
3.9.1 Docker的安全机制 118
3.9.2 Docker安全问题 122
3.9.3 Docker安全的解决方案 126
第4章 Docker高级实践技巧 138
4.1 容器化思维 138
4.1.1 SSH服务器的替代方案 139
4.1.2 Docker内应用日志管理方案 139
4.1.3 其他技巧汇总 140
4.2 Docker高级网络实践 142
4.2.1 玩转Linux network namespace 143
4.2.2 pipework原理解析 148
4.2.3 pipework跨主机通信 154
4.2.4 OVS划分VLAN 159
4.2.5 OVS隧道模式 163
4.3 Dockerfile最佳实践 175
4.3.1 Dockerfile的使用 176
4.3.2 Dockerfile实践心得 180
4.4 Docker容器的监控手段 182
4.4.1 Docker容器监控维度 182
4.4.2 容器监控命令 183
4.4.3 常用的容器监控工具 186
4.5 容器化应用构建的基础:高可用配置中心 189
4.5.1 etcd经典应用场景 190
4.5.2 etcd实现原理 194
第二部分 Docker云平台解读
第5章 构建自己的容器云 210
5.1 再谈云平台的层次架构 210
5.2 从小工到专家 213
第6章 专注编排与部署:三剑客与Fleet 218
6.1 编排小神器Fig 218
6.1.1 再谈容器编排与部署 218
6.1.2 Compose原理:一探究竟 221
6.2 环境透明化工具Machine 225
6.2.1 Machine与虚拟机软件 226
6.2.2 Machine与IaaS平台 227
6.2.3 Machine小结 228
6.3 集群抽象工具Swarm 229
6.3.1 Swarm简介 229
6.3.2 试用Swarm 230
6.3.3 Swarm集群的多种创建方式 231
6.3.4 Swarm对请求的处理 233
6.3.5 Swarm集群的调度策略 233
6.3.6 Swarm与Machine 234
6.4 编排之秀Fleet 235
6.4.1 旧问题新角度:Docker distro 235
6.4.2 Fleet的原理剖析 239
第7章 专注应用支撑和运行时:Flynn 和Deis 245
7.1 Flynn,一个小而美的两层架构 245
7.1.1 第0层:容器云的基础设施 246
7.1.2 第1层:容器云的功能框架 246
7.1.3 Flynn体系架构与实现原理 247
7.2 谈谈Deis与Flynn 257
7.2.1 应用发布上的比较 258
7.2.2 关于Deis的一些思考 260
第8章 一切皆容器:Kubernetes 261
8.1 Kubernetes简介 261
8.2 Kubernetes的设计解读 262
8.2.1 一个典型案例:Guestbook.263
8.2.2 Kubernetes核心概念剖析 265
8.3 Kubernetes核心组件解读 294
8.3.1 APIServer 294
8.3.2 Scheduler 301
8.3.3 Controller Manager 309
8.3.4 kubelet 314
8.3.5 kube—proxy 320
8.3.6 核心组件协作流程 325
8.4 Kubernetes用户认证授权与资源管理 328
8.4.1 namespace解析 328
8.4.2 基于token文件或客户端证书的认证机制 333
8.4.3 基于访问规则的授权机制 334
8.4.4 基于资源的授权控制AdmissionControl 336
8.5 Kubernetes网络核心原理 347
8.5.1 单pod单IP模型 348
8.5.2 pod和网络容器 350
8.5.3 实现Kubernetes的网络模型 353
8.6 Kubernetes高级实践 356
8.6.1 Kubernetes高级实践之应用健康检查 356
8.6.2 Kubernetes高级实践之高可用性 358
8.6.3 Kubernetes高级实践之日志 362
8.6.4 Kubernetes高级实践之集成DNS 364
8.6.5 Kubernetes高级实践之容器上下文环境 366
8.7 不要停止思考 368
第三部分 附录
附录A Docker的安装 372
附录B 阅读Docker源代码的神兵利器 379
附录C 快速熟悉开源项目 388
附录D cgroups的测试与使用 391
附录E cgroups子系统配置参数介绍 395
附录F Kubernetes的安装 400
后记 403
Docker技术入门与实战第2版-高清文字版(修复图片)
原来的版本有图片问题,新版本已修复
原版:https://download.csdn.net/download/zl245437_/10325344
杨保华 戴王剑 曹亚仑 编著
学习Docker的第一本入门书,畅销书升级
基于Docker1.12及以上版本
目录
第2版前言
第1版前言
第一部分
基础入门
第1章
初识容器与 Docker
1.1 什么是Docker
1.2
为什么要使用 Docker
1.3 Docker 与虚拟化
1.4
本章小结
第2章 核心概念与安装配置
2.1 核心概念
2.2 安装Docker
2.3 配置Docker 服务
2.4
推荐实践环境
2.5
本章小结
第3章 使用Docker 镜像
3.1
获取镜像
3.2
查看镜像信息
3.3
搜寻镜像
3.4
删除镜像
3.5
创建镜像
3.6
存出和载入镜像
3.7
上传镜像
3.8
本章小结
第4章 操作Docker容器
4.1
创建容器
4.2
终止容器
4.3
进入容器
4.4
删除容器
4.5
导入和导出容器
4.6
本章小结
第5章
访问 Docker 仓库
5.1 Docker Hub 公共镜像市场
5.2
时速云镜像市场
5.3
搭建本地私有仓库
5.4
本章小结
第6章 Docker数据管理
6.1 数据卷
6.2 数据卷容器
6.3 利用数据卷容器来迁移数据
6.4
本章小结
第7章
端口映射与容
器互联
7.1
端口映射实现访问容器
7.2
互联机制实现便捷互访
7.3
本章小结
第8章 使用Dockerfile 创建镜像
8.1
基本结构
8.2
指令说明
8.3
创建镜像
8.4 使用.dockerignore文件
8.5
最佳实践
8.6
本章小结
第二部分
实战案例
第9章
操作系统
9.1 BusyBox
9.2 Alpine
9.3 Debian/Ubuntu
9.4 CentOS/Fedora
9.5
本章小结
第10章
为镜像添加 SSH 服务
10.1 基于commit 命令创建
10.2 使用Dockerfile 创建
10.3
本章小结
第11章 Web 服务与应用
11.1 Apache
11.2 Nginx
11.3 Tomcat
11.4 Jetty
11.5 LAMP
11.6 CMS
11.7
持续开发与管理
11.8
本章小结
第12章
数据库应用
12.1 MySQL
12.2 MongoDB
12.3 Redis
12.4 Memcached
12.5 CouchDB
12.6 Cassandra
12.7
本章小结
第13章
分布式处理与大数据平台
13.1 RabbitMQ
13.2 Celery
13.3 Hadoop
13.4 Spark
13.5 Storm
13.6 Elasticsearch
13.7
本章小结
第14章
编程开发
14.1 C/C++
14.2 Java
14.3 Python
14.4 JavaScript
14.5 Go
14.6 PHP
14.7 Ruby
14.8 Perl
14.9 R
14.10 Erlang
14.11
本章小结
第15章
容器与云服务
15.1
公有云容器服务
15.2
容器云服务
15.3
阿里云容器服务
15.4
时速云容器平台
15.5
本章小结
第16章
容器实战思考
16.1 Docker 为什么会成功
16.2
研发人员该如何看容器
16.3
容器化开发模式
16.4
容器与生产环境
16.5
本章小结
第三部分
进阶技能
第17章 Docker 核心实现技术
17.1 基本架构
17.2
命名空间
17.3
控制组
17.4
联合文件系统
17.5 Linux 网络虚拟化
17.6
本章小结
第18章
配置私有仓库
18.1 安装Docker Registry
18.2 配置TLS 证书
18.3
管理访问权限
18.4 配置Registry
18.5
批量管理镜像
18.6
使用通知系统
18.7
本章小结
第19章
安全防护与配置
19.1
命名空间隔离的安全
19.2
控制组资源控制的安全
19.3 内核能力机制
19.4 Docker 服务端的防护
19.5 更多安全特性的使用
19.6
使用第三方检测工具
19.7
本章小结
第20章
高级网络功能
20.1
网络启动与配置参数
20.2 配置容器DNS和主机名
20.3
容器访问控制
20.4
映射容器端口到宿主主机的实现
20.5 配置docker0 网桥
20.6
自定义网桥
20.7 使用OpenvSwitch 网桥
20.8
创建一个点到点连接
20.9
本章小结
第21章 libnetwork 插件化网络功能
21.1
容器网络模型
21.2 Docker 网络相关命令
21.3
构建跨主机容器网络
21.4
本章小结
第四部分
开源项目
第22章 Etcd—— 高可用的键值数据库
22.1
简介
22.2 安装和使用Etcd
22.3 使用etcdctl 客户端
22.4 Etcd集群管理
22.5
本章小结
第23章 Docker 三剑客之 Docker Machine
23.1
简介
23.2 安装Machine
23.3 使用Machine
23.4 Machine命令
23.5
本章小结
第24章 Docker 三剑客之 Docker Compose
24.1
简介
24.2
安装与卸载
24.3 Compose 命令说明
24.4 Compose 环境变量
24.5 Compose模板文件
24.6 Compose 应用案例一: Web 负载均衡
24.7 Compose 应用案例二:大数据 Spark集群
24.8
本章小结
第25章 Docker 三剑客之 Docker Swarm
25.1
简介
25.2 安装Swarm
25.3 使用Swarm
25.4
使用其他服务发现后端
25.5 Swarm 中的调度器
25.6 Swarm 中的过滤器
25.7
本章小结
第26章 Mesos—— 优秀的集群资源调度平台
26.1
简介
26.2 Mesos安装与使用
26.3 原理与架构
26.4 Mesos 配置项解析
26.5
日志与监控
26.6
常见应用框架
26.7
本章小结
第27章 Kubernetes—— 生产级容器集群平台
27.1
简介
27.2 核心概念
27.3
快速体验
27.4 安装部署
27.5
重要组件
27.6 使用kubectl
27.7
网络设计
27.8
本章小结
第28章
其他相关项目
28.1
平台即服务方案
28.2
持续集成平台 Drone
28.3 容器管理
28.4
编程开发
28.5
网络支持
28.6
日志处理
28.7
服务代理工具
28.8
标准与规范
28.9
其他项目
28.10
本章小结
附录
附录 A 常见问题总结
附录 B
Docker 命令查询
附录 C 参考资源链接
Spring+Cloud与Docker微服务架构实战-高清带目录
作为一部帮助大家实现微服务架构落地的作品,《Spring Cloud与Docker微服务架构实战》覆盖了微服务理论、微服务开发框架(Spring Cloud)以及运行平台(Docker)三大主题。全书可分为三部分,第1章对微服务架构进行了系统的介绍;第2-11章使用Spring Cloud开发框架编写了一个“电影售票系统”;第12-14章则讲解了如何将微服务应用运行在Docker之上。全书Demo驱动学习,以连贯的场景、具体的代码示例来引导读者学习相关知识,最终使用特定的技术栈实现微服务架构的落地。
目录
1 微服务架构概述....... . . . . . . . . . 1
1.1 单体应用架构存在的问题1
1.2 如何解决单体应用架构存在的问题3
1.3 什么是微服务3
1.4 微服务架构的优点与挑战5
1.4.1 微服务架构的优点5
1.4.2 微服务架构面临的挑战5
1.5 微服务设计原则6
1.6 如何实现微服务架构7
1.6.1 技术选型7
1.6.2 架构图及常用组件8
2 微服务开发框架——Spring Cloud.... . . . . . . . 10
2.1 Spring Cloud 简介10
2.2 Spring Cloud 特点10
2.3 Spring Cloud 版本11
2.3.1 版本简介11
2.3.2 子项目一览12
2.3.3 Spring Cloud/Spring Boot 版本兼容性13
3 开始使用Spring Cloud 实战微服务..... . . . . . 14
3.1 Spring Cloud 实战前提14
3.1.1 技术储备14
3.1.2 工具及软件版本15
3.2 服务提供者与服务消费者16
3.3 编写服务提供者16
3.3.1 手动编写项目17
3.3.2 使用Spring Initializr 快速创建Spring Boot 项目21
3.4 编写服务消费者23
3.5 为项目整合Spring Boot Actuator 25
3.6 硬编码有哪些问题27
4 微服务注册与发现....... . . . . . . . 29
4.1 服务发现简介29
4.2 Eureka 简介31
4.3 Eureka 原理31
4.4 编写Eureka Server 33
4.5 将微服务注册到Eureka Server 上35
4.6 Eureka Server 的高可用36
4.6.1 将应用注册到Eureka Server 集群上38
4.7 为Eureka Server 添加用户认证39
4.7.1 将微服务注册到需认证的Eureka Server 40
4.8 理解Eureka 的元数据41
4.8.1 改造用户微服务41
4.8.2 改造电影微服务41
4.9 Eureka Server 的REST 端点43
4.9.1 示例45
4.9.2 注销微服务实例49
4.10 Eureka 的自我保护模式51
4.11 多网卡环境下的IP 选择52
4.11.1 忽略指定名称的网卡52
4.11.2 使用正则表达式,指定使用的网络地址52
4.11.3 只使用站点本地地址53
4.11.4 手动指定IP 地址53
4.12 Eureka 的健康检查53
5 使用Ribbon 实现客户端侧负载均衡..... . . . . 56
5.1 Ribbon 简介56
5.2 为服务消费者整合Ribbon 57
5.3 使用Java 代码自定义Ribbon 配置60
5.4 使用属性自定义Ribbon 配置63
5.5 脱离Eureka 使用Ribbon 64
6 使用Feign 实现声明式REST 调用..... . . . . . . 66
6.1 Feign 简介67
6.2 为服务消费者整合Feign 67
6.3 自定义Feign 配置69
6.4 手动创建Feign 72
6.4.1 修改用户微服务72
6.4.2 修改电影微服务76
6.5 Feign 对继承的支持78
6.6 Feign 对压缩的支持79
6.7 Feign 的日志80
6.8 使用Feign 构造多参数请求82
6.8.1 GET 请求多参数的URL 82
6.8.2 POST 请求包含多个参数83
7 使用Hystrix 实现微服务的容错处理..... . . . . 85
7.1 实现容错的手段85
7.1.1 雪崩效应85
7.1.2 如何容错86
7.2 使用Hystrix 实现容错88
7.2.1 Hystrix 简介88
7.2.2 通用方式整合Hystrix 89
7.2.3 Hystrix 断路器的状态监控与深入理解91
7.2.4 Hystrix 线程隔离策略与传播上下文93
7.2.5 Feign 使用Hystrix 96
7.3 Hystrix 的监控101
7.3.1 Feign 项目的Hystrix 监控102
7.4 使用Hystrix Dashboard 可视化监控数据103
7.5 使用Turbine 聚合监控数据105
7.5.1 Turbine 简介105
7.5.2 使用Turbine 监控多个微服务105
7.5.3 使用消息中间件收集数据108
8 使用Zuul 构建微服务网关..... . . . . . . . . . . . . . 113
8.1 为什么要使用微服务网关113
8.2 Zuul 简介115
8.3 编写Zuul 微服务网关115
8.4 Zuul 的路由端点118
8.5 Zuul 的路由配置详解119
8.6 Zuul 的安全与Header 122
8.6.1 敏感Header 的设置122
8.6.2 忽略Header 123
8.7 使用Zuul 上传文件124
8.7.1 编写文件上传微服务124
8.8 Zuul 的过滤器127
8.8.1 过滤器类型与请求生命周期127
8.8.2 编写Zuul 过滤器128
8.8.3 禁用Zuul 过滤器130
8.9 Zuul 的容错与回退130
8.9.1 为Zuul 添加回退131
8.10 Zuul 的高可用133
8.10.1 Zuul 客户端也注册到了Eureka Server 上133
8.10.2 Zuul 客户端未注册到Eureka Server 上133
8.11 使用Sidecar 整合非JVM 微服务134
8.11.1 编写Node.js 微服务135
8.11.2 编写Sidecar 136
8.11.3 Sidecar 的端点138
8.11.4 Sidecar 与Node.js 微服务分离部署139
8.11.5 Sidecar 原理分析139
9 使用Spring Cloud Config 统一管理微服务配置... . . . . . . . . 142
9.1 为什么要统一管理微服务配置142
9.2 Spring Cloud Config 简介143
9.3 编写Config Server 144
9.3.1 Config Server 的端点145
9.4 编写Config Client 147
9.5 Config Server 的Git 仓库配置详解149
9.6 Config Server 的健康状况指示器152
9.7 配置内容的加解密153
9.7.1 安装JCE 153
9.7.2 Config Server 的加解密端点153
9.7.3 对称加密153
9.7.4 存储加密的内容154
9.7.5 非对称加密155
9.8 使用/refresh 端点手动刷新配置155
9.9 使用Spring Cloud Bus 自动刷新配置157
9.9.1 Spring Cloud Bus 简介157
9.9.2 实现自动刷新158
9.9.3 局部刷新159
9.9.4 架构改进159
9.9.5 跟踪总线事件160
9.10 Spring Cloud Config 与Eureka 配合使用161
9.11 Spring Cloud Config 的用户认证162
9.11.1 Config Client 连接需用户认证的Config Server 163
9.12 Config Server 的高可用164
9.12.1 Git 仓库的高可用164
9.12.2 RabbitMQ 的高可用164
9.12.3 Config Server 自身的高可用165
10 使用Spring Cloud Sleuth 实现微服务跟踪... . . . . . . . . . . . . . 167
10.1 为什么要实现微服务跟踪167
10.2 Spring Cloud Sleuth 简介168
10.3 整合Spring Cloud Sleuth 170
10.4 Spring Cloud Sleuth 与ELK 配合使用172
10.5 Spring Cloud Sleuth 与Zipkin 配合使用176
10.5.1 Zipkin 简介176
10.5.2 编写Zipkin Server 176
10.5.3 微服务整合Zipkin 178
10.5.4 使用消息中间件收集数据181
10.5.5 存储跟踪数据183
11 Spring Cloud 常见问题与总结..... . . . . . . . . . . 186
11.1 Eureka 常见问题186
11.1.1 Eureka 注册服务慢186
11.1.2 已停止的微服务节点注销慢或不注销187
11.1.3 如何自定义微服务的Instance ID 188
11.1.4 Eureka 的UNKNOWN 问题总结与解决189
11.2 Hystrix/Feign 整合Hystrix 后首次请求失败190
11.2.1 原因分析191
11.2.2 解决方案191
11.3 Turbine 聚合的数据不完整191
11.3.1 解决方案192
11.4 Spring Cloud 各组件配置属性193
11.4.1 Spring Cloud 的配置193
11.4.2 原生配置193
11.5 Spring Cloud 定位问题思路总结194
12 Docker 入门....... . . . . . . . . . . . . . 197
12.1 Docker 简介197
12.2 Docker 的架构197
12.3 安装Docker 199
12.3.1 系统要求199
12.3.2 移除非官方软件包199
12.3.3 设置Yum 源199
12.3.4 安装Dokcer 200
12.3.5 卸载Docker 201
12.4 配置镜像加速器201
12.5 Docker 常用命令202
12.5.1 Docker 镜像常用命令202
12.5.2 Docker 容器常用命令204
13 将微服务运行在Docker 上..... . . . . . . . . . . . . . 209
13.1 使用Dockerfile 构建Docker 镜像209
13.1.1 Dockerfile 常用指令210
13.1.2 使用Dockerfile 构建镜像215
13.2 使用Docker Registry 管理Docker 镜像217
13.2.1 使用Docker Hub 管理镜像217
13.2.2 使用私有仓库管理镜像219
13.3 使用Maven 插件构建Docker 镜像220
13.3.1 快速入门221
13.3.2 插件读取Dockerfile 进行构建222
13.3.3 将插件绑定在某个phase 执行223
13.3.4 推送镜像224
13.4 常见问题与总结226
14 使用Docker Compose 编排微服务..... . . . . . . 227
14.1 Docker Compose 简介227
14.2 安装Docker Compose 227
14.2.1 安装Compose 228
14.2.2 安装Compose 命令补全工具228
4.3 Docker Compose 快速入门229
14.3.1 基本步骤229
14.3.2 入门示例229
14.3.3 工程、服务、容器230
14.4 docker-compose.yml 常用命令230
14.4.1 build 230
14.4.2 command 231
14.4.3 dns 231
14.4.4 dns_search 231
14.4.5 environment 231
14.4.6 env_file 232
14.4.7 expose 232
14.4.8 external_links 232
14.4.9 image 232
14.4.10 links 232
14.4.11 networks 233
14.4.12 network_mode 233
14.4.13 ports 233
14.4.14 volumes 233
14.4.15 volumes_from 234
14.5 docker-compose 常用命令234
14.5.1 build 234
14.5.2 help 235
14.5.3 kill 235
14.5.4 logs 235
14.5.5 port 235
14.5.6 ps 235
14.5.7 pull 235
14.5.8 rm 236
14.5.9 run 236
14.5.10 scale 236
14.5.11 start 236
14.5.12 stop 236
14.5.13 up 236
14.6 Docker Compose 网络设置237
14.6.1 基本概念237
14.6.2 更新容器237
14.6.3 links 238
14.6.4 指定自定义网络238
14.6.5 配置默认网络239
14.6.6 使用已存在的网络239
14.7 综合实战:使用Docker Comose 编排Spring Cloud 微服务240
14.7.1 编排Spring Cloud 微服务240
14.7.2 编排高可用的Eureka Server 243
14.7.3 编排高可用Spring Cloud 微服务集群及动态伸缩245
14.8 常见问题与总结247
后记......... . . . . . . . 248
Docker开发指南 高清文字版
Docker 容器轻量和可移植的特性尤其适用于动态和分布式的环境,它的兴起给软件开发流
程带来了一场革命。本书对 Docker 进行了全面讲解,包括开发、生产以至维护的整个软件生命
周期,并对其中可能出现的一些问题进行了探讨,如软件版本差异、开发环境与生产环境的差异、
系统安全问题,等等。
本书适合软件开发者、运维工程师和系统管理员,尤其是对 DevOps 模式感兴趣的读者
目录
前言 .............. xi
第一部分 背景与基础
第 1 章 何谓容器,为何需要它 ........... 3
1.1 容器与虚拟机的比较 ....... 4
1.2 Docker 与容器 ............ 5
1.3 Docker 的历史 ............ 7
1.4 插件与基础设施 ......... 8
1.5 64 位 Linux ........... 9
第 2 章 安装 ....... 10
2.1 在 Linux 上安装 Docker ....... 10
2.1.1 将 SELinux 置于宽容模式下运行 ...... 11
2.1.2 不使用 sudo 命令执行 Docker ...... 11
2.2 在 Mac OS 及 Windows 上安装 Docker .... 12
2.3 快速确认 ......... 13
第 3 章 迈出第一步 ......... 15
3.1 运行第一个镜像 ............. 15
3.2 基本命令 ......... 16
3.3 通过 Dockerfile 创建镜像 .... 20
3.4 使用寄存服务 ........... 22
vi | 目录
3.5 使用 Redis 官方镜像 ...... 24
3.6 总结 ........... 27
第 4 章 Docker 基本概念 ........... 28
4.1 Docker 系统架构 ............ 28
4.1.1 底层技术 ............ 29
4.1.2 周边技术 ............ 30
4.1.3 Docker 托管 ........ 31
4.2 镜像是如何生成的 ......... 32
4.2.1 构建环境的上下文 ............ 32
4.2.2 镜像层 .......... 33
4.2.3 缓存 .............. 35
4.2.4 基础镜像 ............ 35
4.2.5 Dockerfile 指令 ......... 37
4.3 使容器与世界相连 ......... 39
4.4 容器互联 ......... 40
4.5 利用数据卷和数据容器管理数据 ....... 41
4.5.1 共享数据 ............ 43
4.5.2 数据容器 ............ 44
4.6 Docker 常用命令 ............ 45
4.6.1 run 命令 ........ 46
4.6.2 容器管理 ............ 48
4.6.3 Docker 信息 ........ 50
4.6.4 容器信息 ............ 50
4.6.5 镜像管理 ............ 52
4.6.6 使用寄存服务器 ...... 54
4.7 总结 ........... 55
第二部分 Docker 与软件生命周期
第 5 章 在开发中应用 Docker ............ 59
5.1 说声“Hello World!”........... 59
5.2 通过 Compose 实现自动化 ............ 67
5.3 总结 ........... 69
第 6 章 创建一个简单的 Web 应用 ........ 71
6.1 创建一个基本网页 ......... 72
目录 |
vii
6.2 利用现有镜像 ........... 73
6.3 实现缓存功能 ........... 78
6.4 微服务 ....... 81
6.5 总结 ........... 81
第 7 章 镜像分发 .............. 82
7.1 镜像及镜像库的命名方式 ............. 82
7.2 Docker Hub ............... 83
7.3 自动构建 ......... 85
7.4 私有分发 ......... 86
7.4.1 运行自己的寄存服务 ........ 86
7.4.2 商业寄存服务 .......... 92
7.5 缩减镜像大小 ........... 92
7.6 镜像出处 ......... 94
7.7 总结 ........... 94
第 8 章 Docker 持续集成与测试 ............. 95
8.1 为 identidock 添加单元测试 .......... 95
8.2 创建 Jenkins 容器 ......... 100
8.3 推送镜像 ........... 106
8.3.1 给镜像正确的标签 .......... 106
8.3.2 准生产及生产环境 .......... 108
8.3.3 镜像数量激增的问题 ............ 108
8.3.4 使用 Docker 部署 Jenkins slaves ....... 109
8.4 备份 Jenkins 数据 ......... 109
8.5 持续集成的托管解决方案 ........... 109
8.6 测试与微服务 ......... 110
8.7 总结 ......... 111
第 9 章 部署容器 ............ 113
9.1 通过 Docker Machine 配置资源 ........ 114
9.2 使用代理 ........... 117
9.3 执行选项 ........... 122
9.3.1 shell 脚本 .......... 122
9.3.2 使用进程管理器(或用 systemd 控制所有进程) .......... 124
9.3.3 使用配置管理工具 .......... 127
9.4 主机配置 ........... 130
9.4.1 选择操作系统 ........ 130
viii | 目录
9.4.2 选择存储驱动程序 .......... 130
9.5 专门的托管方案 ........... 132
9.5.1 Triton ........... 132
9.5.2 谷歌容器引擎 ........ 134
9.5.3 亚马逊 EC2 容器服务 ........... 135
9.5.4 Giant Swarm ........... 136
9.6 持久性数据和生产环境容器 ............. 138
9.7 分享秘密信息 ......... 139
9.7.1 在镜像中保存秘密信息 ........ 139
9.7.2 通过环境变量传递密钥 ........ 139
9.7.3 通过数据卷传递密钥 ............ 140
9.7.4 使用键值存储 ........ 140
9.8 网络连接 ........... 141
9.9 生产环境的寄存服务 ......... 141
9.10 持续部署 / 交付 .......... 141
9.11 总结 ....... 142
第 10 章 日志记录和监控 ........ 143
10.1 日志记录 ............... 144
10.1.1 Docker 默认的日志记录 .......... 144
10.1.2 日志汇总 ....... 145
10.1.3 使用 ELK 进行日志记录 ......... 146
10.1.4 通过 syslog 实现日志管理 ....... 155
10.1.5 从文件抓取日志 ........... 160
10.2 监控和警报 ........... 161
10.2.1 使用 Docker 工具进行监测 ..... 161
10.2.2 cAdvisor ........ 162
10.2.3 集群解决方案 ..... 163
10.3 商用的监听及日志记录解决方案 ......... 166
10.4 总结 ....... 166
第三部分 工具和技术
第 11 章 联网和服务发现 ........ 169
11.1 大使容器 ............... 170
11.2 服务发现 ............... 173
11.2.1 etcd .......... 173
目录 |
ix
11.2.2 SkyDNS ......... 177
11.2.3 Consul ............ 181
11.2.4 服务注册 ....... 185
11.2.5 其他解决方案 ..... 186
11.3 联网选项 ............... 187
11.3.1 网桥模式 ....... 187
11.3.2 主机模式 ....... 188
11.3.3 容器模式 ....... 188
11.3.4 未联网模式 ........ 188
11.4 全新的 Docker 联网功能 ........... 188
11.5 网络解决方案 ............. 190
11.5.1 Overlay .......... 191
11.5.2 Weave ............ 193
11.5.3 Flannel ........... 196
11.5.4 Calico 项目 .......... 201
11.6 总结 ....... 205
第 12 章 编排?集群和管理 ............. 207
12.1 集群和编排工具 ......... 208
12.1.1 Swarm ............ 208
12.1.2 fleet .......... 214
12.1.3 Kubernetes ........... 219
12.1.4 Mesos 和 Marathon ............. 226
12.2 容器管理平台 ............. 235
12.2.1 Rancher .......... 236
12.2.2 Clocker .......... 237
12.2.3 Tutum ............ 238
12.3 总结 ....... 239
第 13 章 容器安全与限制容器 ......... 241
13.1 需要考虑的事项 ......... 242
13.2 纵深防御 ............... 244
13.3 如何保护 identidock ......... 245
13.4 以主机隔离容器 ......... 246
13.5 进行更新 ............... 246
13.6 镜像出处 ............... 249
13.6.1 Docker 摘要 ........ 250
13.6.2 Docker 的内容信任机制 .......... 250
x | 目录
13.6.3 可复制及可信任的 Dockerfile ....... 254
13.7 安全建议 ............... 256
13.7.1 设置用户 ....... 256
13.7.2 限制容器联网 ..... 257
13.7.3 删除 setuid 和 setgid 的二进制文件 ........ 258
13.7.4 限制内存使用 ..... 259
13.7.5 限制 CPU 使用 ............. 260
13.7.6 限制重新启动 ..... 261
13.7.7 限制文件系统 ..... 261
13.7.8 限制内核能力 ..... 262
13.7.9 应用资源限制 ..... 263
13.8 运行加固内核 ............. 264
13.9 Linux 安全模块 .......... 265
13.9.1 SELinux ......... 265
13.9.2 AppArmor ........... 268
13.10 审核 ........... 268
13.11 事件响应 ............. 269
13.12 未来特性 ............. 269
13.13 总结 ........... 270
作者简介 ........ 271
关于封面 ........ 271
Spring In Action Spring实战 第四版 中英文文字版+源代码
Spring实战 第四版 中文+英文 高清文字版+源代码
目录
第1部分 Spring的核心
第1章 Spring之旅
1.1 简化Java开发
1.1.1 激发POJO的潜能
1.1.2 依赖注入
1.1.3 应用切面
1.1.4 使用模板消除样板式代码
1.2 容纳你的Bean
1.2.1 使用应用上下文
1.2.2 bean的生命周期
1.3 俯瞰Spring风景线
1.3.1 Spring模块
1.3.2 Spring Portfolio
1.4 Spring的新功能
1.4.1 Spring 3.1新特性
1.4.2 Spring 3.2新特性
1.4.3 Spring 4.0新特性
1.5 小结
第2章 装配Bean
2.1 Spring配置的可选方案
2.2 自动化装配bean
2.2.1 创建可被发现的bean
2.2.2 为组件扫描的bean命名
2.2.3 设置组件扫描的基础包
2.2.4 通过为bean添加注解实现自动装配
2.2.5 验证自动装配
2.3 通过Java代码装配bean
2.3.1 创建配置类
2.3.2 声明简单的bean
2.3.3 借助JavaConfig实现注入
2.4 通过XML装配bean
2.4.1 创建XML配置规范
2.4.2 声明一个简单的<bean>
2.4.3 借助构造器注入初始化bean
2.4.4 设置属性
2.5 导入和混合配置
2.5.1 在JavaConfig中引用XML配置
2.5.2 在XML配置中引用JavaConfig
2.6 小结
第3章 高级装配
3.1 环境与profile
3.1.1 配置profile bean
3.1.2 激活profile
3.2 条件化的bean
3.3 处理自动装配的歧义性
3.3.1 标示首选的bean
3.3.2 限定自动装配的bean
3.4 bean的作用域
3.4.1 使用会话和请求作用域
3.4.2 在XML中声明作用域代理
3.5 运行时值注入
3.5.1 注入外部的值
3.5.2 使用Spring表达式语言进行装配
3.6 小结
第4章 面向切面的Spring
4.1 什么是面向切面编程
4.1.1 定义AOP术语
4.1.2 Spring对AOP的支持
4.2 通过切点来选择连接点
4.2.1 编写切点
4.2.2 在切点中选择bean
4.3 使用注解创建切面
4.3.1 定义切面
4.3.2 创建环绕通知
4.3.3 处理通知中的参数
4.3.4 通过注解引入新功能
4.4 在XML中声明切面
4.4.1 声明前置和后置通知
4.4.2 声明环绕通知
4.4.3 为通知传递参数
4.4.4 通过切面引入新的功能
4.5 注入AspectJ切面
4.6 小结
第2部分 Web中的Spring
第5章 构建Spring Web应用程序
5.1 Spring MVC起步
5.1.1 跟踪Spring MVC的请求
5.1.2 搭建Spring MVC
5.1.3 Spittr应用简介
5.2 编写基本的控制器
5.2.1 测试控制器
5.2.2 定义类级别的请求处理
5.2.3 传递模型数据到视图中
5.3 接受请求的输入
5.3.1 处理查询参数
5.3.2 通过路径参数接受输入
5.4 处理表单
5.4.1 编写处理表单的控制器
5.4.2 校验表单
5.5 小结
第6章 渲染Web视图
6.1 理解视图解析
6.2 创建JSP视图
6.2.1 配置适用于JSP的视图解析器
6.2.2 使用Spring的JSP库
6.3 使用Apache Tiles视图定义布局
6.3.1 配置Tiles视图解析器
6.4 使用Thymeleaf
6.4.1 配置Thymeleaf视图解析器
6.4.2 定义Thymeleaf模板
6.5 小结
第7章 Spring MVC的高级技术
7.1 Spring MVC配置的替代方案
7.1.1 自定义DispatcherServlet配置
7.1.2 添加其他的Servlet和Filter
7.1.3 在web.xml中声明DispatcherServlet
7.2 处理multipart形式的数据
7.2.1 配置multipart解析器
7.2.2 处理multipart请求
7.3 处理异常
7.3.1 将异常映射为HTTP状态码
7.3.2 编写异常处理的方法
7.4 为控制器添加通知
7.5 跨重定向请求传递数据
7.5.1 通过URL模板进行重定向
7.5.2 使用flash属性
7.6 小结
第8章 使用Spring Web Flow
8.1 在Spring中配置Web Flow
8.1.1 装配流程执行器
8.1.2 配置流程注册表
8.1.3 处理流程请求
8.2 流程的组件
8.2.1 状态
8.2.2 转移
8.2.3 流程数据
8.3 组合起来:披萨流程
8.3.1 定义基本流程
8.3.2 收集顾客信息
8.3.3 构建订单
8.3.4 支付
8.4 保护Web流程
8.5 小结
第9章 保护Web应用
9.1 Spring Security简介
9.1.1 理解Spring Security的模块
9.1.2 过滤Web请求
9.1.3 编写简单的安全性配置
9.2 选择查询用户详细信息的服务
9.2.1 使用基于内存的用户存储
9.2.2 基于数据库表进行认证
9.2.3 基于LDAP进行认证
9.2.4 配置自定义的用户服务
9.3 拦截请求
9.3.1 使用Spring表达式进行安全保护
9.3.2 强制通道的安全性
9.3.3 防止跨站请求伪造
9.4 认证用户
9.4.1 添加自定义的登录页
9.4.2 启用HTTP Basic认证
9.4.3 启用Remember-me功能
9.4.4 退出
9.5 保护视图
9.5.1 使用Spring Security的JSP标签库
9.5.2 使用Thymeleaf的Spring Security方言
9.6 小结
第3部分 后端中的Spring
第10章 通过Spring和JDBC征服数据库
10.1 Spring的数据访问哲学
10.1.1 了解Spring的数据访问异常体系
10.1.2 数据访问模板化
10.2 配置数据源
10.2.1 使用JNDI数据源
10.2.2 使用数据源连接池
10.2.3 基于JDBC驱动的数据源
10.2.4 使用嵌入式的数据源
10.2.5 使用profile选择数据源
10.3 在Spring中使用JDBC
10.3.1 应对失控的JDBC代码
10.3.2 使用JDBC模板
10.4 小结
第11章 使用对象-关系映射持久化数据
11.1 在Spring中集成Hibernate
11.1.1 声明Hibernate的Session工厂
11.1.2 构建不依赖于Spring的Hibernate代码
11.2 Spring与Java持久化API
11.2.1 配置实体管理器工厂
11.2.2 编写基于JPA的Repository
11.3 借助Spring Data实现自动化的JPA Repository
11.3.1 定义查询方法
11.3.2 声明自定义查询
11.3.3 混合自定义的功能
11.4 小结
第12章 使用NoSQL数据库
12.1 使用MongoDB持久化文档数据
12.1.1 启用MongoDB
12.1.2 为模型添加注解,实现MongoDB持久化
12.1.3 使用MongoTemplate访问MongoDB
12.1.4 编写MongoDB Repository
12.2 使用Neo4j操作图数据
12.2.1 配置Spring Data Neo4j
12.2.2 使用注解标注图实体
12.2.3 使用Neo4jTemplate
12.2.4 创建自动化的Neo4j Repository
12.3 使用Redis操作key-value数据
12.3.1 连接到Redis
12.3.2 使用RedisTemplate
12.3.3 使用key和value的序列化器
12.4 小结
第13章 缓存数据
13.1 启用对缓存的支持
13.1.1 配置缓存管理器
13.2 为方法添加注解以支持缓存
13.2.1 填充缓存
13.2.2 移除缓存条目
13.3 使用XML声明缓存
13.4 小结
第14章 保护方法应用
14.1 使用注解保护方法
14.1.1 使用@Secured注解限制方法调用
14.1.2 在Spring Security中使用JSR-250的@RolesAllowed注解
14.2 使用表达式实现方法级别的安全性
14.2.1 表述方法访问规则
14.2.2 过滤方法的输入和输出
14.3 小结
第4部分 Spring集成
第15章 使用远程服务
15.1 Spring远程调用概览
15.2 使用RMI
15.2.1 导出RMI服务
15.2.2 装配RMI服务
15.3 使用Hessian和Burlap发布远程服务
15.3.1 使用Hessian和Burlap导出bean的功能
15.3.2 访问Hessian/Burlap服务
15.4 使用Spring的HttpInvoker
15.4.1 将bean导出为HTTP服务
15.4.2 通过HTTP访问服务
15.5 发布和使用Web服务
15.5.1 创建基于Spring的JAX-WS端点
15.5.2 在客户端代理JAX-WS服务
15.6 小结
第16章 使用Spring MVC创建REST API
16.1 了解REST
16.1.1 REST的基础知识
16.1.2 Spring是如何支持REST的
16.2 创建第一个REST端点
16.2.1 协商资源表述
16.2.2 使用HTTP信息转换器
16.3 提供资源之外的其他内容
16.3.1 发送错误信息到客户端
16.3.2 在响应中设置头部信息
16.4 编写REST客户端
16.4.1 了解RestTemplate的操作
16.4.2 GET资源
16.4.3 检索资源
16.4.4 抽取响应的元数据
16.4.5 PUT资源
16.4.6 DELETE资源
16.4.7 POST资源数据
16.4.8 在POST请求中获取响应对象
16.4.9 在POST请求后获取资源位置
16.4.10 交换资源
16.5 小结
第17章 Spring消息
17.1 异步消息简介
17.1.1 发送消息
17.1.2 评估异步消息的优点
17.2 使用JMS发送消息
17.2.1 在Spring中搭建消息代理
17.2.2 使用Spring的JMS模板
17.2.3 创建消息驱动的POJO
17.2.4 使用基于消息的RPC
17.3 使用AMQP实现消息功能
17.3.1 AMQP简介
17.3.2 配置Spring支持AMQP消息
17.3.3 使用RabbitTemplate发送消息
17.3.4 接收AMQP消息
17.4 小结
第18章 使用WebSocket和STOMP实现消息功能
18.1 使用Spring的低层级WebSocket API
18.2 应对不支持WebSocket的场景
18.3 使用STOMP消息
18.3.1 启用STOMP消息功能
18.3.2 处理来自客户端的STOMP消息
18.3.3 发送消息到客户端
18.4 为目标用户发送消息
18.4.1 在控制器中处理用户的消息
18.4.2 为指定用户发送消息
18.5 处理消息异常
18.6 小结
第19章 使用Spring发送Email
19.1 配置Spring发送邮件
19.1.1 配置邮件发送器
19.1.2 装配和使用邮件发送器
19.2 构建丰富内容的Email消息
19.2.1 添加附件
19.2.2 发送富文本内容的Email
19.3 使用模板生成Email
19.3.1 使用Velocity构建Email消息
19.3.2 使用Thymeleaf构建Email消息
19.4 小结
第20章 使用JMX管理Spring Bean
20.1 将Spring bean导出为MBean
20.1.1 通过名称暴露方法
20.1.2 使用接口定义MBean的操作和属性
20.1.3 使用注解驱动的MBean
20.1.4 处理MBean冲突
20.2 远程MBean
20.2.1 暴露远程MBean
20.2.2 访问远程MBean
20.2.3 代理MBean
20.3 处理通知
20.3.1 监听通知
20.4 小结
第21章 借助Spring Boot简化Spring开发
21.1 Spring Boot简介
21.1.1 添加Starter依赖
21.1.2 自动配置
21.1.3 Spring Boot CLI
21.1.4 Actuator
21.2 使用Spring Boot构建应用
21.2.1 处理请求
21.2.2 创建视图
21.2.3 添加静态内容
21.2.4 持久化数据
21.2.5 尝试运行
21.3 组合使用Groovy与Spring Boot CLI
21.3.1 编写Groovy控制器
21.3.2 使用Groovy Repository实现数据持久化
21.3.3 运行Spring Boot CLI
21.4 通过Actuator获取了解应用内部状况
21.5 小结
Spring Boot实战 丁雪丰 译
目录
第 1 章 入门 ................................................ 1
1.1 Spring 风云再起 ........................................ 1
1.1.1 重新认识 Spring ............................ 2
1.1.2 Spring Boot 精要 ........................... 3
1.1.3 Spring Boot 不是什么 ................... 6
1.2 Spring Boot 入门 ....................................... 6
1.2.1 安装 Spring Boot CLI .................... 7
1.2.2 使用 Spring Initializr 初始化
Spring Boot 项目 .......................... 10
1.3 小结 ......................................................... 18
第 2 章 开发第一个应用程序 .................... 19
2.1 运用 Spring Boot ..................................... 19
2.1.1 查看初始化的 Spring Boot
新项目 .......................................... 21
2.1.2 Spring 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
第 4 章 测试 ............................................... 66
4.1 集成测试自动配置 .................................. 66
4.2 测试 Web 应用程序 ................................. 68
4.2.1 模拟 Spring MVC ........................ 69
4.2.2 测试 Web 安全 ............................. 72
4.3 测试运行中的应用程序 ........................... 74
4.3.1 用随机端口启动服务器 ............... 75
4.3.2 使用 Selenium 测试 HTML
页面 ............................................. 76
4.4 小结 ......................................................... 78
第 5 章 Groovy 与 Spring Boot CLI ......... 80
5.1 开发 Spring Boot CLI 应用程序 .............. 80
5.1.1 设置 CLI 项目 .............................. 81
5.1.2 通过 Groovy 消除代码噪声 ......... 81
5.1.3 发生了什么 .................................. 85
5.2 获取依赖 .................................................. 86
5.2.1 覆盖默认依赖版本 ....................... 87
5.2.2 添加依赖仓库 .............................. 88
5.3 用 CLI 运行测试 ...................................... 89
5.4 创建可部署的产物 .................................. 91
5.5 小结 ......................................................... 91
第 6 章 在 Spring Boot 中使用 Grails ...... 93
6.1 使用 GORM 进行数据持久化 ................. 93
2 目 录
6.2 使用 Groovy Server Pages 定义视图 ....... 98
6.3 结合 Spring Boot 与 Grails 3 ................. 100
6.3.1 创建新的 Grails 项目 ................. 100
6.3.2 定义领域模型 ............................ 103
6.3.3 开发 Grails 控制器 ..................... 104
6.3.4 创建视图 .................................... 105
6.4 小结 ....................................................... 107
第 7 章 深入 Actuator .............................. 108
7.1 揭秘 Actuator 的端点 ............................ 108
7.1.1 查看配置明细 ............................ 109
7.1.2 运行时度量 ................................ 115
7.1.3 关闭应用程序 ............................ 121
7.1.4 获取应用信息 ............................ 121
7.2 连接 Actuator 的远程 shell .................... 122
7.2.1 查看 autoconfig 报告 ........... 123
7.2.2 列出应用程序的 Bean ............... 124
7.2.3 查看应用程序的度量信息 ......... 124
7.2.4 调用 Actuator 端点 .................... 125
7.3 通过 JMX 监控应用程序 ....................... 126
7.4 定制 Actuator ......................................... 128
7.4.1 修改端点 ID ............................... 128
7.4.2 启用和禁用端点 ........................ 129
7.4.3 添加自定义度量信息 ................. 129
7.4.4 创建自定义跟踪仓库 ................. 132
7.4.5 插入自定义健康指示器 ............. 134
7.5 保护 Actuator 端点 ................................ 136
7.6 小结 ....................................................... 138
第 8 章 部署 Spring Boot 应用程序 ........ 139
8.1 衡量多种部署方式 ................................ 139
8.2 部署到应用服务器 ................................ 140
8.2.1 构建 WAR 文件 ......................... 141
8.2.2 创建生产 Profile ........................ 142
8.2.3 开启数据库迁移 ........................ 145
8.3 推上云端 ............................................... 150
8.3.1 部署到 Cloud Foundry ............... 150
8.3.2 部署到 Heroku ........................... 153
8.4 小结 ....................................................... 155
附录 A Spring Boot 开发者工具 .............. 157
附录 B Spring Boot 起步依赖 ................. 163
附录 C 配置属性 ...................................... 169
附录 D Spring Boot 依赖 ......................... 202
GitHub入门与实践 高清文字版带目录
目录
第1章 欢迎来到GitHub的世界 …………………………………………1
1.1 … 什么是 GitHub …............................................................................................... 2
GitHub 公司与 octocat ….................................................................................... 2
并不只是 Git 仓库的托管服务 … ........................................................................ 3
GitHub 的使用情况 …........................................................................................... 3
Column …专栏 :GitHub 与 Git 的区别 …........................................................... 4
1.2 … 使用 GitHub 会带来哪些变化 …................................................................. 4
协作形式变化 …..................................................................................................... 4
在开发者之间引发化学反应的 Pull…Request ….................................................. 5
对特定用户进行评论 … ...................................................................................... 6
GitHub…Flavored…Markdown ….......................................................................... 7
Column …专栏 :还可以这样写 !! …................................................................... 7
能看到更多其他团队的软件 …........................................................................... 7
与开源软件相同的开发模式 …........................................................................... 8
1.3 … 社会化编程 …....................................................................................................... 9
1.4 … 为什么需要社会化编程 …............................................................................. 10
不要闭目塞听,要接触不同的文化 …............................................................ 10
会写代码的程序员更受青睐 …......................................................................... 11
GitHub 最大的特征是“面向人”
…................................................................. 11
1.5 … GitHub 提供的主要功能 ….......................................................................... 12
Git 仓库 … .............................................................................................................. 12
Organization ….................................................................................................... 12
Issue … ................................................................................................................... 13
Wiki …..................................................................................................................... 13
Pull Request ….................................................................................................... 13
Column …专栏 :GitHub 上受到瞩目的软件 …................................................. 14
1.6 … 小结 …................................................................................................................... 14
图灵社区会员 lxghost2 专享 尊重版权
x 目录
参考资料 … ............................................................................................................ 14
第2章 Git的导入 …………………………………………………………… 17
2.1 … 诞生背景 ….......................................................................................................... 18
2.2 … 什么是版本管理 …........................................................................................... 18
集中型与分散型 … ............................................................................................... 19
集中型 …......................................................................................................... 19
分散型 …......................................................................................................... 19
集中型与分散型哪个更好 …............................................................................. 20
2.3 … 安装 …................................................................................................................... 21
Mac 与 Linux ….................................................................................................... 21
Windows …........................................................................................................... 21
组件的选择 ….................................................................................................. 22
设置环境变量 ….............................................................................................. 22
换行符的处理 ….............................................................................................. 23
Git…Bash …...................................................................................................... 23
本书所用的环境 … ............................................................................................... 24
2.4 … 初始设置 ….......................................................................................................... 24
设置姓名和邮箱地址 …...................................................................................... 24
提高命令输出的可读性 … .................................................................................. 25
2.5 … 小结 …................................................................................................................... 25
第3章 使用GitHub的前期准备 ……………………………………… 27
3.1 … 使用前的准备 …................................................................................................ 28
创建账户 … ............................................................................................................ 28
设置头像 … ............................................................................................................ 29
设置 SSH Key … .................................................................................................. 29
添加公开密钥 …................................................................................................... 30
使用社区功能 …................................................................................................... 31
图灵社区会员 lxghost2 专享 尊重版权
目录 xi
3.2 … 实际动手使用 …................................................................................................ 31
创建仓库 … ............................................................................................................ 31
Repository…name …......................................................................................... 32
Description ….................................................................................................. 32
Public、Private …............................................................................................ 32
Initialize…this…repository…with…a…README … ..................................................... 32
Add….gitignore … .............................................................................................. 33
Add…a…license … ............................................................................................... 33
连接仓库 … ............................................................................................................ 33
README.md … ............................................................................................... 33
GitHub…Flavored…Markdown …........................................................................ 34
公开代码 … ............................................................................................................ 34
clone 已有仓库 …............................................................................................ 34
编写代码 … ...................................................................................................... 35
提交 …............................................................................................................. 36
Column …专栏 :公开时的许可协议 …............................................................. 37
进行 push ….................................................................................................... 37
3.3 … 小结 …................................................................................................................... 38
第4章 通过实际操作学习Git … ……………………………………… 39
4.1 … 基本操作 ….......................................................................................................... 40
git init——初始化仓库 …................................................................................... 40
git status——查看仓库的状态 …..................................................................... 40
git add——向暂存区中添加文件 …................................................................ 41
git commit——保存仓库的历史记录 ….......................................................... 42
记述一行提交信息 …....................................................................................... 42
记述详细提交信息 …....................................................................................... 42
中止提交 … ...................................................................................................... 43
查看提交后的状态 …....................................................................................... 43
git log——查看提交日志 …............................................................................... 43
只显示提交信息的第一行 …............................................................................ 44
只显示指定目录、文件的日志 …..................................................................... 44
显示文件的改动 …........................................................................................... 45
图灵社区会员 lxghost2 专享 尊重版权
xii 目录
git diff——查看更改前后的差别 ….................................................................. 45
查看工作树和暂存区的差别 …......................................................................... 45
查看工作树和最新提交的差别 …..................................................................... 46
4.2 … 分支的操作 …..................................................................................................... 47
git branch——显示分支一览表 …................................................................... 48
git checkout - b——创建、切换分支 ….......................................................... 48
切换到 feature - A 分支并进行提交 …............................................................... 48
切换到 master 分支 …..................................................................................... 49
切换回上一个分支 …....................................................................................... 50
特性分支 … ............................................................................................................ 50
主干分支 … ............................................................................................................ 51
git merge——合并分支 …................................................................................. 51
git log -- graph——以图表形式查看分支 …................................................... 52
4.3 … 更改提交的操作 …........................................................................................... 53
git reset——回溯历史版本 …........................................................................... 53
回溯到创建 feature - A 分支前 …...................................................................... 53
创建 fix - B 分支 …............................................................................................ 54
推进至 feature - A 分支合并后的状态 ............................................................ 55
消除冲突 … ............................................................................................................ 56
查看冲突部分并将其解决 …............................................................................ 57
提交解决后的结果 …....................................................................................... 57
git commit -- amend——修改提交信息 ...................................................... 58
git rebase - i——压缩历史 …............................................................................ 59
创建 feature - C 分支 …..................................................................................... 59
修正拼写错误 ….............................................................................................. 60
更改历史 … ...................................................................................................... 61
合并至 master 分支 …..................................................................................... 63
4.4 … 推送至远程仓库 …........................................................................................... 63
git remote add——添加远程仓库 …............................................................... 64
git push——推送至远程仓库 …....................................................................... 64
推送至 master 分支 …..................................................................................... 64
推送至 master 以外的分支 ….......................................................................... 65
4.5 … 从远程仓库获取 …........................................................................................... 65
git clone——获取远程仓库 ….......................................................................... 65
图灵社区会员 lxghost2 专享 尊重版权
目录 xiii
获取远程仓库 ….............................................................................................. 65
获取远程的 feature - D 分支 ….......................................................................... 66
向本地的 feature - D 分支提交更改 …............................................................... 67
推送 feature - D 分支 … ..................................................................................... 67
git pull——获取最新的远程仓库分支 …........................................................ 67
4.6 … 帮助大家深入理解 Git 的资料 …............................................................... 68
Pro Git ................................................................................................................ 68
LearnGitBranching …......................................................................................... 69
tryGit … ................................................................................................................... 69
4.7 … 小结 …................................................................................................................... 70
第5章 详细解说GitHub的功能 ……………………………………… 71
5.1 … 键盘快捷键 …..................................................................................................... 72
5.2 … 工具栏 … ............................................................................................................... 73
关于 UI …............................................................................................................... 73
1 LOGO …..................................................................................................... 73
2 Notifications … ............................................................................................ 73
3 搜索窗口 …................................................................................................. 73
4 Explore … .................................................................................................... 73
5 Gist …......................................................................................................... 74
6 Blog …........................................................................................................ 74
7 Help …........................................................................................................ 74
8 头像、用户名 ….......................................................................................... 74
9 Create…a…new... …....................................................................................... 74
? Account…settings … ..................................................................................... 75
? Sign…out ….................................................................................................. 75
5.3 … 控制面板 ….......................................................................................................... 75
关于 UI …............................................................................................................... 75
❶ News…Feed …............................................................................................. 76
❷ Pull…Requests … .......................................................................................... 76
❸ Issues …..................................................................................................... 76
❹ Stars …....................................................................................................... 76
❺ Broadcast … ................................................................................................ 76
图灵社区会员 lxghost2 专享 尊重版权
xiv 目录
❻ Repositories…you…contribute…to …............................................................... 76
❼ Your…Repositories …................................................................................... 76
5.4 … 个人信息 ….......................................................................................................... 77
关于 UI …............................................................................................................... 77
1…用户信息 …................................................................................................. 77
2 Popular…Repositories … ............................................................................... 78
3 Repositories…contributed…to ….................................................................... 78
4 Public…contributions …................................................................................ 78
5 Contribution…Activity …............................................................................... 78
6 Repositories … ............................................................................................ 78
7 Public…Activity …......................................................................................... 79
5.5 … 仓库 …................................................................................................................... 80
关于 UI …............................................................................................................... 80
❶ 用户名(组织名)/ 仓库名 …...................................................................... 80
❷ Watch/Star/Fork …...................................................................................... 80
❸ Code …....................................................................................................... 81
❹ Issue …....................................................................................................... 81
❺ Pull…Requests … .......................................................................................... 81
❻ Wiki … ......................................................................................................... 82
❼ Pulse …....................................................................................................... 82
❽ Graphs ….................................................................................................... 82
❾ Network ….................................................................................................. 82
❿ Settings ….................................................................................................. 82
⓫ SSH…clone…URL …....................................................................................... 82
⓬ Clone…in…Desktop ….................................................................................... 82
⓭ Download…ZIP …......................................................................................... 83
a commits … .................................................................................................. 83
b branches …................................................................................................. 83
c releases ….................................................................................................. 83
d contributors …............................................................................................ 83
e Compare…&…review … .................................................................................. 83
f branch …..................................................................................................... 83
g path … ......................................................................................................... 84
h Fork…this…project…and…Create…a…new…file …................................................... 84
i files …......................................................................................................... 84
文件的相关操作 … ............................................................................................... 84
Column …专栏 :通过部分名称搜索文件 …...................................................... 85
图灵社区会员 lxghost2 专享 尊重版权
目录 xv
查看差别 … ............................................................................................................ 85
查看分支间的差别 …....................................................................................... 85
查看与几天前的差别 … .................................................................................... 86
查看与指定日期之间的差别 …......................................................................... 87
5.6 … Issue …................................................................................................................. 87
简洁且表现力丰富的描述方法 … ..................................................................... 88
语法高亮 … ...................................................................................................... 89
添加图片 … ...................................................................................................... 90
添加标签以便整理 ….......................................................................................... 90
添加里程碑以便管理 …...................................................................................... 91
Column …专栏 :了解贡献时的规则! ….......................................................... 92
Tasklist 语法 … ..................................................................................................... 92
通过提交信息操作 Issue …............................................................................... 93
在相关 Issue 中显示提交 …............................................................................. 93
Close…Issue …................................................................................................. 93
将特定的 Issue 转换为 Pull Request … ......................................................... 94
5.7 … Pull Request … ................................................................................................. 94
Column …专栏 :获取 diff 格式与 patch 格式的文件 … ..................................... 96
Conversation .................................................................................................... 96
Column …专栏 :引用评论 …............................................................................ 96
Commits …............................................................................................................ 97
Column …专栏 :在评论中应用表情 …............................................................. 98
Files Changed …................................................................................................. 98
5.8 … Wiki …................................................................................................................... 99
Pages … ............................................................................................................... 100
History .............................................................................................................. 101
Column …专栏 :在 Wiki 中显示侧边栏 …...................................................... 101
5.9 … Pulse …............................................................................................................... 102
active pull requests …...................................................................................... 103
active issue ….................................................................................................... 103
commits …........................................................................................................... 104
Releases published …..................................................................................... 104
Unresolved Conversations …........................................................................ 104
图灵社区会员 lxghost2 专享 尊重版权
xvi 目录
5.10 … Graphs … ........................................................................................................... 105
Contributors …................................................................................................... 105
Commit Activity …............................................................................................. 106
Code Frequency …........................................................................................... 106
Punchcard …...................................................................................................... 108
5.11 … Network …....................................................................................................... 108
5.12 … Settings …........................................................................................................ 109
Options …............................................................................................................ 109
❶ Settings …................................................................................................ 109
❷ Features … ................................................................................................ 110
❸ GitHub…Pages … ........................................................................................ 111
❹ Danger…Zone …......................................................................................... 111
Collaborators …................................................................................................. 111
Webhooks & Services …................................................................................. 112
Deploy Keys …................................................................................................... 112
5.13 … Notifications ….............................................................................................. 112
5.14 … 其他功能 …........................................................................................................ 114
GitHub Pages …................................................................................................ 114
GitHub Jobs …................................................................................................... 114
GitHub Enterprise … ......................................................................................... 114
GitHub API …..................................................................................................... 115
5.15 … 小结 …................................................................................................................. 115
Column …专栏 :在 Mac 的通知中心查看 GitHub 的 Notifications …............. 115
第6章 尝试Pull Request ……………………………………………… 117
6.1 … Pull Request 的概要 …............................................................................... 118
什么是 Pull Request ….................................................................................... 118
Pull Request 的流程 ….................................................................................... 118
6.2 … 发送 Pull Request 前的准备 …............................................................... 119
查看要修正的源代码 ….................................................................................... 120
图灵社区会员 lxghost2 专享 尊重版权
目录 xvii
Fork ….................................................................................................................. 120
clone … ................................................................................................................. 120
branch ….............................................................................................................. 121
为何要在特性分支中进行作业 …................................................................... 121
确认分支 … .................................................................................................... 121
创建特性分支 …............................................................................................ 121
添加代码 … .......................................................................................................... 122
提交修改 … .......................................................................................................... 122
创建远程分支 …................................................................................................. 123
6.3 … 发送 Pull Request ….................................................................................... 123
6.4 … 让 Pull Request 更加有效的方法 …...................................................... 126
在开发过程中发送 Pull Request 进行讨论 …............................................ 126
明确标出“正在开发过程中”
…..................................................................... 127
不进行 Fork 直接从分支发送 Pull Request …........................................... 128
6.5 … 仓库的维护 …................................................................................................... 128
仓库的 Fork 与 clone …................................................................................... 129
给原仓库设置名称 …........................................................................................ 129
获取最新数据 …................................................................................................. 130
6.6 … 小结 …................................................................................................................. 130
第7章 接收Pull Request ……………………………………………… 131
7.1 … 采纳 Pull Request 的方法 ….................................................................... 132
7.2 … 采纳 Pull Request 前的准备 …............................................................... 133
代码审查 … .......................................................................................................... 133
查看图片的差别 … ............................................................................................. 134
2 - up …........................................................................................................... 134
Swipe …........................................................................................................ 135
Onion…Skin … ................................................................................................. 135
Difference …................................................................................................. 136
在本地开发环境中反映 Pull Request 的内容 …........................................ 136
将接收方的本地仓库更新至最新状态 …........................................................ 136
图灵社区会员 lxghost2 专享 尊重版权
xviii 目录
获取发送方的远程仓库 ….............................................................................. 137
创建用于检查的分支 … .................................................................................. 138
合并 …........................................................................................................... 138
删除分支 … .................................................................................................... 139
Column …专栏 :如何提升代码管理技术 ….................................................... 139
7.3 … 采纳 Pull Request ….................................................................................... 139
合并到主分支 …................................................................................................. 140
push 修改内容 …............................................................................................... 141
7.4 … 小结 …................................................................................................................. 142
Column …专栏 :请协助我们共同创建互相学习的场所 ............................... 142
第8章 与GitHub相互协作的工具及服务 ……………………… 143
8.1 … hub 命令 …....................................................................................................... 144
概要 ….................................................................................................................. 144
安装 ….................................................................................................................. 144
安装 …........................................................................................................... 145
确认运行情况 …............................................................................................ 145
设置别名 … .................................................................................................... 145
实现 shell 上的功能补全 …............................................................................ 146
~/.config/hub …............................................................................................. 146
命令 ….................................................................................................................. 146
hub…clone ….................................................................................................. 146
hub…remote…add … ......................................................................................... 147
hub…fetch …................................................................................................... 147
hub…cherry - pick …......................................................................................... 147
hub…fork …..................................................................................................... 148
hub…pull - request …........................................................................................ 148
hub…checkout …............................................................................................ 148
hub…create …................................................................................................. 149
hub…push …................................................................................................... 149
hub…browse …............................................................................................... 150
hub…compare …............................................................................................. 150
Column …专栏 :让 GitHub…Enterprise 支持 hub 命令 …................................ 151
图灵社区会员 lxghost2 专享 尊重版权
目录 xix
8.2 … Travis CI …....................................................................................................... 151
概要 ….................................................................................................................. 151
实际尝试 … .......................................................................................................... 152
编写配置文件 …............................................................................................ 152
检测配置文件是否有问题 ….......................................................................... 152
与 GitHub 集成 ….......................................................................................... 153
将 Travis…CI 的结果添加至 README.md …................................................... 155
8.3 … Coveralls …...................................................................................................... 156
概要 ….................................................................................................................. 156
安装 ….................................................................................................................. 157
注册 …........................................................................................................... 157
添加对象仓库 …............................................................................................ 158
编写配置文件 …............................................................................................ 158
添加 gem …................................................................................................... 159
查看报告 … .................................................................................................... 160
8.4 … Gemnasium …............................................................................................... 160
8.5 … Code Climate …............................................................................................ 161
8.6 … Jenkins …......................................................................................................... 162
概要 ….................................................................................................................. 162
安装 ….................................................................................................................. 164
创建 bot 账户 …................................................................................................. 165
bot 账户的权限设置 … ...................................................................................... 165
对象为个人账户时 …..................................................................................... 165
对象为 Organization 账户时 … ....................................................................... 165
检查设置 … .................................................................................................... 167
给 Jenkins 设置 SSH 密钥 …......................................................................... 167
初次使用 Jenkins 时 ….................................................................................. 167
已经在使用 Jenkins 时 ….............................................................................. 168
GitHub pull request builder plugin 的安装 …............................................. 169
Git plugin 的设置 … ........................................................................................... 170
Github Pull Requests Builder 的设置 …...................................................... 170
Github…server…api…URL …............................................................................... 171
Access…Token … ............................................................................................ 171
图灵社区会员 lxghost2 专享 尊重版权
xx 目录
Admin…list ….................................................................................................. 172
job 的创建与设置 ….......................................................................................... 172
GitHub…project …........................................................................................... 172
源码管理 … .................................................................................................... 172
构建触发器 …................................................................................................ 173
构建 …........................................................................................................... 174
通知结果 … .......................................................................................................... 174
测试执行中的状态 …..................................................................................... 175
Failed … ......................................................................................................... 175
All…is…well …................................................................................................... 175
commit…status …........................................................................................... 175
通过评论进行控制 …........................................................................................ 176
执行任务 … .................................................................................................... 176
添加至 White…list …....................................................................................... 176
重新执行任务 …............................................................................................ 176
变更指定评论 …............................................................................................ 177
8.7 … 小结 …................................................................................................................. 177
Column …专栏 :用 Coderwall 生成 GitHub 上的个人信息 …......................... 178
第9章 使用GitHub的开发流程 …………………………………… 179
9.1 … 团队使用 GitHub 时的注意事项 …........................................................ 180
一切从简 … .......................................................................................................... 180
项目管理工具与 GitHub 的区别 …................................................................. 180
项目管理工具与 GitHub 相异的原因 ….......................................................... 181
不 Fork 仓库的方法 …...................................................................................... 182
9.2 … GitHub Flow——以部署为中心的开发模式 …................................ 183
9.3 … GitHub Flow 的流程 … ............................................................................... 184
随时部署,没有发布的概念 …....................................................................... 184
进行新的作业时要从 master 分支创建新分支 …...................................... 185
在新创建的分支中进行提交 …....................................................................... 186
定期 push …........................................................................................................ 186
使用 Pull Request …......................................................................................... 187
图灵社区会员 lxghost2 专享 尊重版权
目录 xxi
务必让其他开发者进行审查 …....................................................................... 187
合并后立刻部署 … ............................................................................................. 187
9.4 … 实践 GitHub Flow 的前提条件 ….......................................................... 188
部署作业完全自动化 ….................................................................................... 188
使用部署工具 …............................................................................................ 189
通过 Web 界面进行部署的工具 …................................................................. 189
导入开发时的注意事项 ….............................................................................. 190
重视测试 … .......................................................................................................... 190
让测试自动化 …............................................................................................ 190
编写测试代码,通过全部测试 …................................................................... 190
维护测试代码 …............................................................................................ 190
9.5 … 模拟体验 GitHub Flow ….......................................................................... 191
Fizzbuzz 的说明 …............................................................................................ 191
添加新功能 …..................................................................................................... 192
创建新的分支 …................................................................................................. 192
如果尚未 clone 仓库 ….................................................................................. 192
如果之前 clone 过仓库 ….............................................................................. 193
创建特性分支 …............................................................................................ 193
实现新功能 …..................................................................................................... 194
创建 Pull Request …......................................................................................... 196
接收反馈 … .......................................................................................................... 196
修正缩进 … .......................................................................................................... 197
添加测试 … .......................................................................................................... 199
培育 Pull Request …......................................................................................... 202
Pull Request 被合并 ….................................................................................... 202
9.6 … 团队实践 GitHub Flow 时的几点建议 …............................................ 203
减小 Pull Request 的体积 … ........................................................................... 204
准备可供试运行的环境 … ................................................................................ 204
不要让 Pull Request 中有太多反馈 …......................................................... 205
不要积攒 Pull Request …................................................................................ 206
9.7 … GitHub Flow 的小结 … ............................................................................... 206
9.8 … Git Flow——以发布为中心的开发模式 …......................................... 207
图灵社区会员 lxghost2 专享 尊重版权
xxii 目录
便于理解的标准流程 ….................................................................................... 207
有时显得过于复杂 …........................................................................................ 209
9.9 … 导入 Git Flow 前的准备 …........................................................................ 209
安装 git - flow … .................................................................................................... 209
Mac 下的安装 …............................................................................................ 209
Linux 下的安装 ….......................................................................................... 210
确认运行状况 …............................................................................................ 210
仓库的初始设置 … ............................................................................................. 210
创建仓库 … .................................................................................................... 210
进行 git…flow 的初始设置 …........................................................................... 211
在远程仓库中也创建 develop 分支 …............................................................ 212
9.10 … 模拟体验 Git Flow …................................................................................... 212
master 分支与 develop 分支的区别 …......................................................... 213
master 分支 …............................................................................................... 213
develop 分支 …............................................................................................. 213
在 feature 中进行的工作 …............................................................................. 213
创建分支 … .................................................................................................... 214
在分支中进行作业 …..................................................................................... 215
发送 Pull Request …......................................................................................... 216
通过代码审查提高代码质量 …....................................................................... 217
更新本地的 develop 分支 …........................................................................... 219
在 release 分支中进行的工作 … .................................................................... 220
Column …专栏 :设置默认分支 … ................................................................... 220
创建分支 … .................................................................................................... 221
分支内的工作 …............................................................................................ 222
进行发布与合并 …......................................................................................... 222
查看版本标签 …............................................................................................ 224
更新到远程仓库 … ............................................................................................. 225
在 hotfix 分支中进行的工作 ........................................................................ 226
创建分支 … .................................................................................................... 226
创建标签和进行发布 … .................................................................................. 228
从 hotfix 分支合并至 develop 分支 …............................................................ 230
9.11 … Git Flow 的小结 …........................................................................................ 232
Column …专栏 :版本号的分配规则 …........................................................... 232
图灵社区会员 lxghost2 专享 尊重版权
目录 xxiii
第10章 将GitHub应用到企业 ……………………………………… 233
10.1 … 将世界标准的开发环境引入企业现场 ….............................................. 234
企业引入 GitHub 的好处 …............................................................................. 234
使用 Organization …......................................................................................... 235
确认 Github 的安全性 ….................................................................................. 235
注意维护时间 …................................................................................................. 235
查看故障信息 …................................................................................................. 236
10.2 … GitHub Enterprise ….................................................................................. 237
概述 ….................................................................................................................. 238
引入的好处 …..................................................................................................... 238
引入的弊端 …..................................................................................................... 239
适合引入 GitHub Enterprise 的几种情况 … ................................................ 239
源代码不可外传 …......................................................................................... 239
Column …专栏 :将 GitHub 的仓库作为 Subversion 仓库使用 … .................... 240
希望维护与故障时间可控 ….......................................................................... 240
10.3 … 能实现 Git 托管的软件 …........................................................................... 241
Column …专栏 :Bitbucket …......................................................................... 241
10.4 … 小结 …................................................................................................................. 242
附录A 支持GitHub的GUI客户端 ………………………………… 243
A.1 … GitHub for Mac,GitHub for Windows ….................................... 244
A.2 … SourceTree …................................................................................................. 246
附录B 通过Gist轻松实现代码共享 ……………………………… 247
B.1 … Gist 的特点 ….................................................................................................. 248
B.2 … 创建 Gist …....................................................................................................... 248
UI 讲解 …............................................................................................................. 249
1 Gist…description... … .................................................................................. 249
图灵社区会员 lxghost2 专享 尊重版权
xxiv 目录
2 name…this…file... …..................................................................................... 249
3 language …............................................................................................... 250
4 ACE…Editor …............................................................................................ 250
5 文件 …....................................................................................................... 250
6 Add…another…File …................................................................................... 251
7 Create…Secret…Gist …................................................................................ 251
8 Create…Public…Gist …................................................................................. 251
B.3 … 查看 Gist …....................................................................................................... 252
Gist 的菜单 …..................................................................................................... 252
❶ Gist…Detail …............................................................................................. 253
❷ Revisions ….............................................................................................. 253
❸ Download…Gist …...................................................................................... 253
❹ Clone…this…gist …....................................................................................... 253
❺ Embed…this…gist … ..................................................................................... 253
❻ Link…to…this…gist …..................................................................................... 253
文件的菜单 …..................................................................................................... 254
B.4 … Your Gists …................................................................................................... 254
B.5 … 小结 …................................................................................................................. 255
Effective Java 第三版高清英文原版
Effective Java 最新第三版高清文字版,JAVA四大名著之一,Update for Java 9,
Storm源码分析高清文字带目录
本书从源代码的角度详细分析了Storm 的设计与实现,共分为三个部分,第一部分介绍了Storm 的基本原理以及Storm 集群系统的搭建方法,第二部分深入剖析了Storm 的底层架构,如Nimbus、Supervisor、, Worker 以及Task,第三部分系统讨论了Storm 如何实现可靠的消息传输,如Transaction Topology 以及Trident。, 本书适用于程序员、架构师以及计算机专业的学生。
目录
第 1 章总体架构与代码结构
第 2 章 搭 建 Storm 集 群
第 3 章 Storm 编程基础
第 4 章基础函数和工具类
第 5 章 通 信 机 制
第 6 章 Nimbus
第 7 章 Scheduler
第 8 章 Scheduler
第 9 章 Worker
第 10 章 Executor
第 11 章 Task
第 12 章 Storm 的 Ack 框架
第 13 章系统运行统计
第 14 章系统运行统计的另一种实现
第 15 章 事 务 Topology 的 实 现
第 16 章 事 务 Topology 示 例
第 17 章 Trident 的 Spout 节点
第 18 章 Trident 的存储
第 19 章 Trident 消息
第 20 章 Trident 操作与处理节点
第 21 章 Trident 流的基本操作
第 22 章 Trident 中流的交互操作
第 23 章 Trident 中的 Bolt 节点
第 24 章 Trident 的执行优化
第 25 章 Trident 与 DRPC
第 26 章 Trident 的 Topology 构建器
第 27 章 多 语 言
第 28 章 Storm 中的配置项
决战大数据:驾驭未来商业的利器-车品觉
目录
前言 忘掉大数据
第一部分 从数据化运营到运营数据
01 大数据,为什么很多人只会谈,不会做
大数据从来不是免费的午餐
人的断层
模型数据从何而来
更主动的管理,更多的创新
数据化思考 问题就是答案
02 大数据的本质就是还原用户的真实需求
识别,让似是而非的行为数据串联起来
价值,企业价值 Vs 客户价值
场景,你知道当时所有的场景吗
还原是一个瞄准器
数据化思考 CEO 们关心哪三个数据
03 “活”的数据才是大数据
“活”做数据收集,抓住相关性
“活”看数据指标,动态地使用数据
数据化思考 别再做“碰巧游戏”
04 无线数据,大数据的颠覆者
无线数据正在将整个数据变成“噪音”
PC 数据与无线数据的关系
多屏思维下的电子商务
数据化思考 样本的偏见
05 数据分类与数据价值,什么才是你的核心数据
数据分类为什么如此重要
数据分类的 4 大维度
数据的5 大价值
数据化思考 用傻瓜的视角去观察
06 从用数据到养数据
数据应用因小而美
把数据放进“框”之中
如何用框架来做决策
养数据,重要的数据战略
数据化思考 远离“或”选择
07 数据的盲点,负面数据的力量
数据盲点
小偷思维
数据盲点的价值
数据化思考 为什么数据会骗人:常态、时态与变态
第二部分 阿里巴巴的大数据秘密
08 阿里巴巴的大数据实践
假定数据是稳定的
假定数据是可获取的
数据化思考 先开枪,后瞄准
09 混、通、晒,阿里巴巴数据化运营的内三板斧
混,“混 ”出数据
通,打“通”“混” 的数据
晒,“晒”出“混”和“通”的数据
数据化思考 思考,要学会关窗口
10 存、管、用,阿里巴巴运营数据的外三板斧
存,数据收集的开始
管,保护好存储数据
用,从收集数据到管理数据
数据化思考 用化骨绵掌解决本质问题
11 大数据,未来商业的利器
假定数据是脏的
学会慢慢淡化数据
数据的标签化管理
重要的是数据和数据之间的关系,而不是数据本身
数据的实时化与实时性分层
未来是人机的结合体
数据化思考 忽略了趋势,过去的价值一文不值
结 语 开启属于你的个人大数据管理
后 记 像李小龙的格斗一样去思考
品觉的话 人在修行的路上,不要单打独斗
李航-统计学习方法-高清文字版
目录
前言
符号表
第1章
统计学习方法概论
1.1
统计学习
1.2
监督学习
1.2.1 基本概念
1.2.2
问题的形式化
1.3
统计学习三要素
1.3.1 模型
1.3.2 策略
1.3.3 算法
1.4
模型评估与模型选择
1.4.1
训练误差与测试误差
1.4.2
过拟合与模型选择
1.5
正则化与交叉验证
1.5.1
正则化
1.5.2
交叉验证
1.6 泛化能力
1.6.1
泛化误差
1.6.2
泛化误差上界
1.7
生成模型与判别模型
1.8
分类问题
1.9
标注问题
1.10
回归问题
本章概要
继续阅读
习题
参考文献
第2章 感知机
2.1 感知机模型
2.2
感知机学习策略
2.2.1
数据集的线性可分性
2.2.2
感知机学习策略
2.3
感知机学习算法
2.3.1
感知机学习算法的原始形式
2.3.2
算法的收敛性
2.3.3
感知机学习算法的对偶形式
本章概要
继续阅读
习题
参考文献
第3章 k 近邻法
3.1 k 近邻算法
3.2 k 近邻模型
3.2.1 模型
3.2.2 距离度量
3.2.3 k 值的选择
3.2.4
分类决策规则
3.3 k 近邻法的实现: kd 树
3.3.1 构造kd 树
3.3.2 搜索kd 树
本章概要
继续阅读
习题
参考文献
第4章
朴素贝叶斯法
4.1
朴素贝叶斯法的学习与分类
4.1.1 基本方法
4.1.2
后验概率最大化的含义
4.2
朴素贝叶斯法的参数估计
4.2.1
极大似然估计
4.2.2
学习与分类算法
4.2.3
贝叶斯估计
本章概要
继续阅读
习题
参考文献
第5章
决策树
5.1
决策树模型与学习
5.1.1
决策树模型
5.1.2
决策树与 if-then 规则
5.1.3
决策树与条件概率分布
5.1.4
决策树学习
5.2
特征选择
5.2.1
特征选择问题
5.2.2 信息增益
5.2.3 信息增益比
5.3
决策树的生成
5.3.1 ID3算法
5.3.2 C4.5的生成算法
5.4
决策树的剪枝
5.5 CART算法
5.5.1 CART生成
5.5.2 CART剪枝
本章概要
继续阅读
习题
参考文献
第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.2.4
极大似然估计
6.3
模型学习的最优化算法
6.3.1
改进的迭代尺度法
6.3.2
拟牛顿法
本章概要
继续阅读
习题
参考文献
第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.3
非线性支持向量机与核函数
7.3.1 核技巧
7.3.2 正定核
7.3.3 常用核函数
7.3.4
非线性支持向量分类机
7.4
序列最小最优化算法
7.4.1
两个变量二次规划的求解方法
7.4.2
变量的选择方法
7.4.3 SMO算法
本章概要
继续阅读
习题
参考文献
第8章 提升方法
8.1 提升方法AdaBoost算法
8.1.1 提升方法的基本思路
8.1.2 AdaBoost算法
8.1.3 AdaBoost的例子
8.2 AdaBoost 算法的训练误差分析
8.3 AdaBoost 算法的解释
8.3.1 前向分步算法
8.3.2 前向分步算法与AdaBoost
8.4
提升树
8.4.1
提升树模型
8.4.2
提升树算法
8.4.3 梯度提升
本章概要
继续阅读
习题
参考文献
第9章 EM算法及其推广
9.1 EM算法的引入
9.1.1 EM算法
9.1.2 EM 算法的导出
9.1.3 EM 算法在非监督学习中的应用
9.2 EM 算法的收敛性
9.3 EM 算法在高斯混合模型学习中的应用
9.3.1 高斯混合模型
9.3.2
高斯混合模型参数估计的 EM算法
9.4 EM算法的推广
9.4.1 F函数的极大-极大算法
9.4.2 GEM算法
本章概要
继续阅读
习题
参考文献
第10章
隐马尔可夫模型
10.1
隐马尔可夫模型的基本概念
10.1.1
隐马尔可夫模型的定义
10.1.2
观测序列的生成过程
10.1.3
隐马尔可夫模型的 3 个基本问题
10.2
概率计算算法
10.2.1
直接计算法
10.2.2 前向算法
10.2.3 后向算法
10.2.4
一些概率与期望值的计算
10.3
学习算法
10.3.1
监督学习方法
10.3.2 Baum-Welch算法
10.3.3 Baum-Welch 模型参数估计公式
10.4
预测算法
10.4.1 近似算法
10.4.2
维特比算法
本章概要
继续阅读
习题
参考文献
第11章
条件随机场
11.1
概率无向图模型
11.1.1
模型定义
11.1.2
概率无向图模型的因子分解
11.2
条件随机场的定义与形式
11.2.1
条件随机场的定义
11.2.2
条件随机场的参数化形式
11.2.3
条件随机场的简化形式
11.2.4
条件随机场的矩阵形式
11.3
条件随机场的概率计算问题
11.3.1 前向-后向算法
11.3.2
概率计算
11.3.3
期望值的计算
11.4
条件随机场的学习算法
11.4.1
改进的迭代尺度法
11.4.2
拟牛顿法
11.5
条件随机场的预测算法
本章概要
继续阅读
习题
参考文献
第12章
统计学习方法总结
附录 A
梯度下降法
附录 B 牛顿法和拟牛顿法
附录 C 拉格朗日对偶性
索引
Docker技术入门与实战第2版-高清文字版
杨保华 戴王剑 曹亚仑 编著
学习Docker的第一本入门书,畅销书升级
基于Docker1.12及以上版本
目录
第2版前言
第1版前言
第一部分
基础入门
第1章
初识容器与 Docker
1.1 什么是Docker
1.2
为什么要使用 Docker
1.3 Docker 与虚拟化
1.4
本章小结
第2章 核心概念与安装配置
2.1 核心概念
2.2 安装Docker
2.3 配置Docker 服务
2.4
推荐实践环境
2.5
本章小结
第3章 使用Docker 镜像
3.1
获取镜像
3.2
查看镜像信息
3.3
搜寻镜像
3.4
删除镜像
3.5
创建镜像
3.6
存出和载入镜像
3.7
上传镜像
3.8
本章小结
第4章 操作Docker容器
4.1
创建容器
4.2
终止容器
4.3
进入容器
4.4
删除容器
4.5
导入和导出容器
4.6
本章小结
第5章
访问 Docker 仓库
5.1 Docker Hub 公共镜像市场
5.2
时速云镜像市场
5.3
搭建本地私有仓库
5.4
本章小结
第6章 Docker数据管理
6.1 数据卷
6.2 数据卷容器
6.3 利用数据卷容器来迁移数据
6.4
本章小结
第7章
端口映射与容器互联
7.1
端口映射实现访问容器
7.2
互联机制实现便捷互访
7.3
本章小结
第8章 使用Dockerfile 创建镜像
8.1
基本结构
8.2
指令说明
8.3
创建镜像
8.4 使用.dockerignore文件
8.5
最佳实践
8.6
本章小结
第二部分
实战案例
第9章
操作系统
9.1 BusyBox
9.2 Alpine
9.3 Debian/Ubuntu
9.4 CentOS/Fedora
9.5
本章小结
第10章
为镜像添加 SSH 服务
10.1 基于commit 命令创建
10.2 使用Dockerfile 创建
10.3
本章小结
第11章 Web 服务与应用
11.1 Apache
11.2 Nginx
11.3 Tomcat
11.4 Jetty
11.5 LAMP
11.6 CMS
11.7
持续开发与管理
11.8
本章小结
第12章
数据库应用
12.1 MySQL
12.2 MongoDB
12.3 Redis
12.4 Memcached
12.5 CouchDB
12.6 Cassandra
12.7
本章小结
第13章
分布式处理与大数据平台
13.1 RabbitMQ
13.2 Celery
13.3 Hadoop
13.4 Spark
13.5 Storm
13.6 Elasticsearch
13.7
本章小结
第14章
编程开发
14.1 C/C++
14.2 Java
14.3 Python
14.4 JavaScript
14.5 Go
14.6 PHP
14.7 Ruby
14.8 Perl
14.9 R
14.10 Erlang
14.11
本章小结
第15章
容器与云服务
15.1
公有云容器服务
15.2
容器云服务
15.3
阿里云容器服务
15.4
时速云容器平台
15.5
本章小结
第16章
容器实战思考
16.1 Docker 为什么会成功
16.2
研发人员该如何看容器
16.3
容器化开发模式
16.4
容器与生产环境
16.5
本章小结
第三部分
进阶技能
第17章 Docker 核心实现技术
17.1 基本架构
17.2
命名空间
17.3
控制组
17.4
联合文件系统
17.5 Linux 网络虚拟化
17.6
本章小结
第18章
配置私有仓库
18.1 安装Docker Registry
18.2 配置TLS 证书
18.3
管理访问权限
18.4 配置Registry
18.5
批量管理镜像
18.6
使用通知系统
18.7
本章小结
第19章
安全防护与配置
19.1
命名空间隔离的安全
19.2
控制组资源控制的安全
19.3 内核能力机制
19.4 Docker 服务端的防护
19.5 更多安全特性的使用
19.6
使用第三方检测工具
19.7
本章小结
第20章
高级网络功能
20.1
网络启动与配置参数
20.2 配置容器DNS和主机名
20.3
容器访问控制
20.4
映射容器端口到宿主主机的实现
20.5 配置docker0 网桥
20.6
自定义网桥
20.7 使用OpenvSwitch 网桥
20.8
创建一个点到点连接
20.9
本章小结
第21章 libnetwork 插件化网络功能
21.1
容器网络模型
21.2 Docker 网络相关命令
21.3
构建跨主机容器网络
21.4
本章小结
第四部分
开源项目
第22章 Etcd—— 高可用的键值数据库
22.1
简介
22.2 安装和使用Etcd
22.3 使用etcdctl 客户端
22.4 Etcd集群管理
22.5
本章小结
第23章 Docker 三剑客之 Docker Machine
23.1
简介
23.2 安装Machine
23.3 使用Machine
23.4 Machine命令
23.5
本章小结
第24章 Docker 三剑客之 Docker Compose
24.1
简介
24.2
安装与卸载
24.3 Compose 命令说明
24.4 Compose 环境变量
24.5 Compose模板文件
24.6 Compose 应用案例一: Web 负载均衡
24.7 Compose 应用案例二:大数据 Spark集群
24.8
本章小结
第25章 Docker 三剑客之 Docker Swarm
25.1
简介
25.2 安装Swarm
25.3 使用Swarm
25.4
使用其他服务发现后端
25.5 Swarm 中的调度器
25.6 Swarm 中的过滤器
25.7
本章小结
第26章 Mesos—— 优秀的集群资源调度平台
26.1
简介
26.2 Mesos安装与使用
26.3 原理与架构
26.4 Mesos 配置项解析
26.5
日志与监控
26.6
常见应用框架
26.7
本章小结
第27章 Kubernetes—— 生产级容器集群平台
27.1
简介
27.2 核心概念
27.3
快速体验
27.4 安装部署
27.5
重要组件
27.6 使用kubectl
27.7
网络设计
27.8
本章小结
第28章
其他相关项目
28.1
平台即服务方案
28.2
持续集成平台 Drone
28.3 容器管理
28.4
编程开发
28.5
网络支持
28.6
日志处理
28.7
服务代理工具
28.8
标准与规范
28.9
其他项目
28.10
本章小结
附录
附录 A 常见问题总结
附录 B
Docker 命令查询
附录 C 参考资源链接
阿里巴巴Java开发手册(终极版).pdf
前言
一、编程规约 . ........................................................................ 1
(一)命名风格 . .................................................................. 1
(二)常量定义 . .................................................................. 3
(三)代码格式 . .................................................................. 4
(四)OOP 规约 . .................................................................. 6
(五)集合处理 . .................................................................. 9
(六)并发处理 . ................................................................. 12
(七)控制语句 . ................................................................. 14
(八)注释规约 . ................................................................. 16
(九)其它 . ..................................................................... 17
二、异常日志 . ....................................................................... 18
(一) 异常处理 . ................................................................. 18
(二) 日志规约 . ................................................................. 19
三、单元测试 . ....................................................................... 21
四、安全规约 . ....................................................................... 23
五、MySQL 数据库 . ................................................................... 24
(一)建表规约 . ................................................................. 24
(二)索引规约 . ................................................................. 25
(三)SQL 语句 . ................................................................. 27
(四)ORM 映射 . ................................................................. 28
六、工程结构 . ....................................................................... 30
(一)应用分层 . ................................................................. 30
(二)二方库依赖 . ............................................................... 31
(三)服务器 . ................................................................... 32
附 1:版本历史 . ...................................................................... 34
附 2:本手册专有名词 . ................................................................ 35
Docker基础入门到实践
前言
修订记录
如何贡献
Docker 简介
什么是 Docker
为什么要用 Docker
基本概念
镜像
容器
仓库
安装 Docker
Ubuntu
Debian
CentOS
Raspberry Pi
macOS
Windows PC
镜像加速器
使用镜像
获取镜像
列出镜像
删除本地镜像
利用 commit 理解镜像构成
使用 Dockerfile 定制镜像
Dockerfile 指令详解
COPY 复制文件
ADD 更高级的复制文件
CMD 容器启动命令
ENTRYPOINT 入口点
ENV 设置环境变量
ARG 构建参数
VOLUME 定义匿名卷
EXPOSE 暴露端口
WORKDIR 指定工作目录
USER 指定当前用户
HEALTHCHECK 健康检查
ONBUILD 为他人作嫁衣裳
参考文档
Dockerfile 多阶段构建
其它制作镜像的方式
实现原理
操作容器
启动
守护态运行
终止
进入容器
导出和导入
删除
访问仓库
Docker Hub
私有仓库
私有仓库高级配置
数据管理
数据卷
监听主机目录
使用网络
外部访问容器
容器互联
配置 DNS
高级网络配置
快速配置指南
容器访问控制
端口映射实现
配置 docker0 网桥
自定义网桥
工具和示例
编辑网络配置文件
实例:创建一个点到点连接
Docker 三剑客之 Compose 项目
简介
安装与卸载
使用
命令说明
Compose 模板文件
实战 Django
实战 Rails
实战 WordPress
Docker 三剑客之 Machine 项目
安装
使用
Docker 三剑客之 Docker Swarm
Swarm mode
基本概念
创建 Swarm 集群
部署服务
使用 compose 文件
管理敏感数据
管理配置信息
安全
内核命名空间
控制组
服务端防护
内核能力机制
其它安全特性
总结
底层实现
基本架构
命名空间
控制组
联合文件系统
容器格式
网络
Etcd 项目
简介
安装
集群
使用 etcdctl
CoreOS 项目
简介
工具
快速搭建 CoreOS 集群
Kubernetes 项目
简介
快速上手
基本概念
kubectl 使用
架构设计
Mesos - 优秀的集群资源调度平台
Mesos 简介
安装与使用
原理与架构 Mesos 配置项解析 日志与监控
常见应用框架
本章小结
容器与云计算
简介
亚马逊云
腾讯云
阿里云
小结
实战案例-操作系统
Busybox
Alpine
Debian Ubuntu
CentOS Fedora
本章小结
实战案例-CI/CD
Drone
Docker 开源项目
LinuxKit
附录
附录一:常见问题总结
附录二:热门镜像介绍
Ubuntu
CentOS
MySQL
MongoDB
Redis
Nginx
WordPress
Node.js
附录三:Docker 命令查询
附录四:Dockerfile 最佳实践 附录五:资源链接
附录六:Docker 中文资源
重构-改善既有代码的设计(高清)+Clean Code 代码整洁之道(中文带书签)
重构-改善既有代码的设计[高清版] && clean code-代码整洁之道(中文完整版-带书签)
重构-改善既有代码的设计目录
第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
参考书目 413
要点列表 417
索引 419
Clean Code 代码整洁之道(中文带书签)
第1章 整洁代码 1
1.1 要有代码 2
1.2 糟糕的代码 2
1.3 混乱的代价 3
1.3.1 华丽新设计 4
1.3.2 态度 4
1.3.3 迷题 5
1.3.4 整洁代码的艺术 5
1.3.5 什么是整洁代码 6
1.4 思想流派 10
1.5 我们是作者 11
1.6 童子军军规 12
1.7 前传与原则 12
1.8 小结 12
1.9 文献 13
第2章 有意义的命名 15
2.1 介绍 15
2.2 名副其实 16
2.3 避免误导 17
2.4 做有意义的区分 18
2.5 使用读得出来的名称 19
2.6 使用可搜索的名称 20
2.7 避免使用编码 21
2.7.1 匈牙利语标记法 21
2.7.2 成员前缀 21
2.7.3 接口和实现 22
2.8 避免思维映射 22
2.9 类名 23
2.10 方法名 23
2.11 别扮可爱 23
2.12 每个概念对应一个词 24
2.13 别用双关语 24
2.14 使用解决方案领域名称 25
2.15 使用源自所涉问题领域的名称 25
2.16 添加有意义的语境 25
2.17 不要添加没用的语境 27
2.18 最后的话 27
第3章 函数 29
3.1 短小 32
3.2 只做一件事 33
3.3 每个函数一个抽象层级 34
3.4 switch语句 35
3.5 使用描述性的名称 36
3.6 函数参数 37
3.6.1 一元函数的普遍形式 38
3.6.2 标识参数 38
3.6.3 二元函数 38
3.6.4 三元函数 39
3.6.5 参数对象 39
3.6.6 参数列表 40
3.6.7 动词与关键字 40
3.7 无副作用 40
3.8 分隔指令与询问 42
3.9 使用异常替代返回错误码 42
3.9.1 抽离Try/Catch代码块 43
3.9.2 错误处理就是一件事 44
3.9.3 Error.java依赖磁铁 44
3.10 别重复自己 44
3.11 结构化编程 45
3.12 如何写出这样的函数 45
3.13 小结 45
3.14 SetupTeardownIncluder程序 46
3.15 文献 48
第4章 注释 49
4.1 注释不能美化糟糕的代码 50
4.2 用代码来阐述 51
4.3 好注释 51
4.3.1 法律信息 51
4.3.2 提供信息的注释 51
4.3.3 对意图的解释 52
4.3.4 阐释 53
4.3.5 警示 53
4.3.6 TODO注释 54
4.3.7 放大 54
4.3.8 公共API中的Javadoc 55
4.4 坏注释 55
4.4.1 喃喃自语 55
4.4.2 多余的注释 56
4.4.3 误导性注释 58
4.4.4 循规式注释 58
4.4.5 日志式注释 59
4.4.6 废话注释 59
4.4.7 可怕的废话 61
4.4.8 能用函数或变量时就别用注释 62
4.4.9 位置标记 62
4.4.10 括号后面的注释 62
4.4.11 归属与署名 63
4.4.12 注释掉的代码 63
4.4.13 HTML注释 64
4.4.14 非本地信息 64
4.4.15 信息过多 65
4.4.16 不明显的联系 65
4.4.17 函数头 66
4.4.18 非公共代码中的Javadoc 66
4.4.19 范例 66
4.5 文献 69
第5章 格式 71
5.1 格式的目的 72
5.2 垂直格式 72
5.2.1 向报纸学习 73
5.2.2 概念间垂直方向上的区隔 73
5.2.3 垂直方向上的靠近 74
5.2.4 垂直距离 75
5.2.5 垂直顺序 79
5.3 横向格式 79
5.3.1 水平方向上的区隔与靠近 80
5.3.2 水平对齐 81
5.3.3 缩进 82
5.3.4 空范围 84
5.4 团队规则 84
5.5 鲍勃大叔的格式规则 85
第6章 对象和数据结构 87
6.1 数据抽象 87
6.2 数据、对象的反对称性 89
6.3 得墨忒耳律 91
6.3.1 火车失事 91
6.3.2 混杂 92
6.3.3 隐藏结构 92
6.4 数据传送对象 93
6.5 小结 94
6.6 文献 94
第7章 错误处理 95
7.1 使用异常而非返回码 96
7.2 先写Try-Catch-Finally语句 97
7.3 使用不可控异常 98
7.4 给出异常发生的环境说明 99
7.5 依调用者需要定义异常类 99
7.6 定义常规流程 100
7.7 别返回null值 101
7.8 别传递null值 102
7.9 小结 103
7.10 文献 104
第8章 边界 105
8.1 使用第三方代码 106
8.2 浏览和学习边界 107
8.3 学习log4j 108
8.4 学习性测试的好处不只是免费 110
8.5 使用尚不存在的代码 110
8.6 整洁的边界 111
8.7 文献 112
第9章 单元测试 113
9.1 TDD三定律 114
9.2 保持测试整洁 115
9.3 整洁的测试 116
9.3.1 面向特定领域的测试语言 118
9.3.2 双重标准 119
9.4 每个测试一个断言 121
9.5 F.I.R.S.T. 122
9.6 小结 123
9.7 文献 124
第10章 类 125
10.1 类的组织 126
10.2 类应该短小 126
10.2.1 单一权责原则 128
10.2.2 内聚 129
10.2.3 保持内聚性就会得到许多短小的类 130
10.3 为了修改而组织 136
10.4 文献 139
第11章 系统 141
11.1 如何建造一个城市 142
11.2 将系统的构造与使用分开 142
11.2.1 分解main 143
11.2.2 工厂 143
11.2.3 依赖注入 144
11.3 扩容 145
11.4 Java代理 148
11.5 纯Java AOP框架 150
11.6 AspectJ的方面 152
11.7 测试驱动系统架构 153
11.8 优化决策 154
11.9 明智使用添加了可论证价值的标准 154
11.10 系统需要领域特定语言 154
11.11 小结 155
11.12 文献 155
第12章 迭进 157
12.1 通过迭进设计达到整洁目的 157
12.2 简单设计规则1:运行所有测试 158
12.3 简单设计规则2~4:重构 158
12.4 不可重复 159
12.5 表达力 161
12.6 尽可能少的类和方法 162
12.7 小结 162
12.8 文献 162
第13章 并发编程 163
13.1 为什么要并发 164
13.2 挑战 165
13.3 并发防御原则 166
13.3.1 单一权责原则 166
13.3.2 推论:限制数据作用域 166
13.3.3 推论:使用数据复本 167
13.3.4 推论:线程应尽可能地独立 167
13.4 了解Java库 167
13.5 了解执行模型 168
13.5.1 生产者-消费者模型 169
13.5.2 读者-作者模型 169
13.5.3 宴席哲学家 169
13.6 警惕同步方法之间的依赖 169
13.7 保持同步区域微小 170
13.8 很难编写正确的关闭代码 170
13.9 测试线程代码 171
13.9.1 将伪失败看作可能的线程问题 171
13.9.2 先使非线程代码可工作 171
13.9.3 编写可插拔的线程代码 172
13.9.4 编写可调整的线程代码 172
13.9.5 运行多于处理器数量的线程 172
13.9.6 在不同平台上运行 172
13.9.7 装置试错代码 173
13.9.8 硬编码 173
13.9.9 自动化 174
13.10 小结 175
13.11 文献 175
第14章 逐步改进 176
14.1 Args的实现 177
14.2 Args:草稿 183
14.2.1 所以我暂停了 195
14.2.2 渐进 195
14.3 字符串参数 197
14.4 小结 234
第15章 JUnit内幕 235
15.1 JUnit框架 236
15.2 小结 249
第16章 重构SerialDate 251
16.1 首先,让它能工作 252
16.2 让它做对 254
16.3 小结 266
16.4 文献 267
第17章 味道与启发 269
17.1 注释 270
17.2 环境 271
17.3 函数 271
17.4 一般性问题 272
17.5 Java 288
17.6 名称 291
17.7 测试 294
17.8 小结 295
17.9 文献 296
附录A 并发编程II 297
A.1 客户端/服务器的例子 297
A.1.1 服务器 297
A.1.2 添加线程代码 298
A.1.3 观察服务器端 299
A.1.4 小结 301
A.2 执行的可能路径 301
A.2.1 路径数量 302
A.2.2 深入挖掘 303
A.2.3 小结 305
A.3 了解类库 305
A.3.1 Executor框架 305
A.3.2 非锁定的解决方案 306
A.3.3 非线程安全类 307
A.4 方法之间的依赖可能破坏并发代码 308
A.4.1 容忍错误 309
A.4.2 基于客户代码的锁定 309
A.4.3 基于服务端的锁定 311
A.5 提升吞吐量 312
A.5.1 单线程条件下的吞吐量 313
A.5.2 多线程条件下的吞吐量 313
A.6 死锁 314
A.6.1 互斥 315
A.6.2 上锁及等待 315
A.6.3 无抢先机制 315
A.6.4 循环等待 315
A.6.5 不互斥 316
A.6.6 不上锁及等待 316
A.6.7 满足抢先机制 317
A.6.8 不做循环等待 317
A.7 测试多线程代码 317
A.8 测试线程代码的工具支持 320
A.9 小结 320
A.10 教程:完整代码范例 321
A.10.1 客户端/服务器非线程代码 321
A.10.2 使用线程的客户端/服务器代码 324
附录B org.jfree.date.SerialDate 327
结束语 389
deeplearning英文原版
这本书对各类读者都有一定用处,但我们主要是为两类受众对象而写的。其中
一类受众对象是学习机器学习的大学生(本科或研究生),包括那些已经开始职业
生涯的深度学习和人工智能研究者。另一类受众对象是没有机器学习或统计背景但
希望能快速地掌握这方面知识并在他们的产品或平台中使用深度学习的软件工程师。
深度学习在许多软件领域都已被证明是有用的,包括计算机视觉、语音和音频处理、
自然语言处理、机器人技术、生物信息学和化学、电子游戏、搜索引擎、网络广告和
金融
Notepad++ sql格式化插件 Poor Man's T-SQL Formatter 1.5.1
Notepad++ sql格式化插件 Poor Man's T-SQL Formatter 1.5.1
锋利的jQuery(第2版)源码
锋利的jQuery(第2版)源码
第2版不仅在内容方面进行了更新,而且还在上一版的基础上做了大量的修订和扩展。涵盖了如下几个方面。
例子全部改用最新的jQuery库。
例子使用了全新的UI,并且代码更符合语义化。
修订了上一版已发现的所有印刷错误。
增加了jQuery Mobile的章节。
增加了jQuery版本变化的章节。
增加了jQuery性能优化和技巧的章节。
Linux Shell 编程 入门、提高、精通
第一部分 shell
第1章文件安全与权限
第2章使用find和xargs
第3章后台执行命令
第4章文件名置换
第5章shell输入与输出
第6章命令执行顺序
第二部分文本过滤
第7章正则表达式介绍
第8章grep 家族
第9章AWK 介绍
第10章sed 用法介绍
第11章合并与分割
第12章tr 用法
第三部分登录环境
第13章登录环境
第14章环境和shell变量
第15章引号
第四部分基础shell编程
第16章shell脚本介绍
第17章条件测试
第18章控制流结构
第19章shell 函数
第20章向脚本传递参数
第21章创建屏幕输出
第22章创建屏幕输入
第23章调试脚本
第24章shell嵌入命令
第五部分高级shell编程技巧
第25章深入讨论<<
第26章shell 工具
第27章几个脚本例子
第28章运行级别脚本
第29章cgi 脚本
附录常用shell命令
SecureCRT_7.0 32位&64;位(含注册机)
最新的SecureCRT 7.0 ,包含32位和64位,内含注册机,亲测可用~
BTrace实现原理
BTrace整个实现的原理是Java Agent+ASM+Java instrument+ Java Complier Api
Proteus元件库对应名称
PROTEUS元件库元件名称及中英对照
AND 与门
ANTENNA 天线
BATTERY 直流电源
BELL 铃,钟
BVC 同轴电缆接插件
BRIDEG 1 整流桥(二极管)
BRIDEG 2 整流桥(集成块)
BUFFER 缓冲器
BUZZER 蜂鸣器
CAP 电容
CAPACITOR 电容
CAPACITOR POL 有极性电容
CAPVAR 可调电容
CIRCUIT BREAKER 熔断丝
COAX 同轴电缆
CON 插口
CRYSTAL 晶体整荡器
DB 并行插口
DIODE 二极管
DIODE SCHOTTKY 稳压二极管
DIODE VARACTOR 变容二极管
DPY_3-SEG 3段LED
DPY_7-SEG 7段LED
DPY_7-SEG_DP 7段LED(带小数点)
ELECTRO 电解电容
FUSE 熔断器
INDUCTOR 电感
INDUCTOR IRON 带铁芯电感
INDUCTOR3 可调电感
JFET N N沟道场效应管
JFET P P沟道场效应管
LAMP 灯泡
LAMP NEDN 起辉器
LED 发光二极管
METER 仪表
MICROPHONE 麦克风
MOSFET MOS管
MOTOR AC 交流电机
MOTOR SERVO 伺服电机
NAND 与非门
NOR 或非门
NOT 非门
NPN NPN三极管
NPN-PHOTO 感光三极管
OPAMP 运放
OR 或门
PHOTO 感光二极管
PNP 三极管
...
...
Proteus快速入门
Proteus轻松入门
子情境1:简单实例助你快速掌握PROTEUS的用法 12
1.1 子情境内容:让单片机动起来,用单片机控制一个LED灯闪烁发光。 15
1.2 子情境目标: 15
1.3 子情境步骤 15
1.3.1步骤一: PROTEUS电路设计 15
1.3.2步骤二:源程序设计与生成目标代码文件 20
(1)程序流程图 20
(2)源程序设计 21
1.3.3 步骤三:PROTEUS仿真 22
1.4 扩展练习 24
子情境二:用发光二极管实现流水灯乒乓球效果 25
2.1 子情境目标: 25
2.2 子情境步骤 25
2.2.1 步骤一: PROTEUS电路设计 25
2.2.2步骤二:源程序设计与目标代码文件生成 26
(1)程序流程图 26
(2)源程序设计 27
2.2.3 步骤三:PROTEUS仿真 29
2.4 扩展练习 29
子情境三:数码管动态扫描 30
3.1子情境内容:利用动态扫描让四位数码管稳定的显示1234。 30
3.2 子情境目标: 30
(1)掌握单片机控制四位数码管的动态扫描技术,包括程序设计和电 30
3.3 知识点链接 30
3.4 任务步骤 31
3.4.1 步骤一:PROTEUS电路设计,单片机控制四位共阴极数码管动态扫描显示的原理图如图5-17所示。 31
3.4.2 步骤二:源程序设计与目标代码文件生成 33
(1)程序流程图 33
(2)源程序设计 33
3.4.3 步骤三:PROTEUS仿真 35
3.5 扩展练习 36
子情境四:定时/计数器的使用——方波发生器 37
4.1子情境内容:用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现周期为2s的方波,并能在虚拟示波器上直观地显示波形。 37
4.2 子情境目标: 37
4.3 知识点链接 37
4.4.1 步骤一:PROTEUS电路设计,实现周期为2s的方波的原理图如图5-22所示。 37
(1)程序流程图 38
(2)源程序设计 38
4.4.3 步骤三:PROTEUS仿真 39
4.5 扩展练习 41
子情境五:单片机外部中断仿真 42
5.1子情境内容:外部中断是单片机的重要内容,本子情境用外部中断功能改变流水灯和数码管的显示状态。 42
5.2 子情境目标: 42
(1)理解单片机的中断原理及中断过程 42
(2)用PROTEUS设计、仿真单片机的外部中断。 42
5.3 知识点链接 42
5.4 任务步骤 42
5.4.1 步骤一:PROTEUS电路设计,实现外部中断功能改变流水灯和数码管的显示状态的原理图 42
5.4.2 步骤二:源程序设计与目标代码文件生成 43
(1)程序流程图 43
(2)源程序设计 43
5.4.3 步骤三:PROTEUS仿真 45
5.5 扩展练习 47
主程序中数码管从0至9顺序显示数字,中断发生后(在单片机P3.2引脚上有低电平),数码管从9至0反序显示。 47
子情境六:直流电机正反转 48
6.1子情境内容:用单片机AT89C51控制直流电机正反转。 48
6.2 子情境目标: 48
(1)掌握趋动电机正反转的电路 48
(2)用PROTEUS实现电机正反转电路的设计,并进行实时交互仿真 48
6.3 知识点链接 48
6.4 任务步骤 48
6.4.1 步骤一:PROTEUS电路设计,实现用单片机AT89C51控制直流电机正反转原理图 48
6.4.2 步骤二:源程序设计与目标代码文件生成 50
(1)程序流程图 50
(2)源程序设计 51
6.4.3 步骤三:PROTEUS仿真 52
6.5 扩展练习 53
子情境七:用ADC0809实现电压表 55
7.1子情境内容:利用单片机AT89C52和ADC0809设计一个数字电压表,能够测量0-5V之间的电压值,用四位数码管显示。 55
7.2 子情境目标: 55
(1)掌握PROTEUS中电压探针和电压表的使用方法 55
(2)通过制作简易电压表,学会AD转换芯片在单片机应用系统中的硬件接口技术和编程方法。 55
7.3 知识点链接 55
了解ADC0809芯片的功能以及使用方法 55
(1)功能:ADC0809芯片为8通道模/数转换器,可以和单片机直接接口,将IN0~IN7任何一通道输入的模拟电压转换成八位二进制数,在时钟为500KHZ时,一次变换时间约为100us。 55
(2)使用方法:28脚双列直插式封装如图5-39所示,各引脚功能如下: 55
7.4 任务步骤 56
7.4.1 步骤一:PROTEUS电路设计,利用单片机AT89C52和ADC0809设计一个数字电压表的原理图如图5-40所示。 56
7.4.2 步骤二:源程序设计与目标代码文件生成 58
(1)程序流程图 58
(2)源程序设计 59
7.4.3 步骤三:PROTEUS仿真 62
7.5 扩展练习 66
子情境八:1602液晶显示器 67
8.1子情境内容:利用单片机AT89C52控制液晶显示器(Liquid Crystal Display,简称为LCD)实时显示。在1602液晶的第一行显示“I LOVE MY FAMILY”,在第二行显示“WWW.YZCIT.CN”。 67
8.2 子情境目标: 67
(1)掌握1602液晶与单片机的接口电路 67
(2)通过控制LCD,学会LCD液晶模块在单片机应用系统中的编程方法。 67
8.3 知识点链接 67
了解LCD1602芯片的功能以及使用方法 67
(1)功能:本情境中所使用的液晶显示器型号为1602,意思是每行显示16个字符,一共可以显示两行。此液晶只能显ASCII字符,如数字、大小写字母、各种符号等。 67
(2)使用方法:1602液晶的引脚图 67
8.4 任务步骤 68
8.4.1 步骤一:PROTEUS电路设计,利用单片机AT89C52控制液晶显示器实时显示的原理图如图5-46所示。 68
8.4.2 步骤二:源程序设计与目标代码文件生成 69
(1)程序流程图 69
(2)源程序设计 69
8.4.3 步骤三:PROTEUS仿真 71
8.5 扩展练习 72
子情境九:简易秒表制作 73
9.1子情境内容:制作简易秒表,利用按键构成键盘实现秒表的启动、停止与复位,利用LED数码管显示时间。 73
9.2 子情境目标: 73
(1)通过简易秒表的制作,进一步熟悉LED数码管与单片机的接口电路 73
(2)学习定时/计数器、中断技术的综合运用并会使用简易键盘 73
9.3 知识点链接 73
9.4 任务步骤 73
9.4.1 步骤一:PROTEUS电路设计,简易秒表的原理图如图5-51所示。 73
9.4.2 步骤二:源程序设计与目标代码文件生成 74
(1)程序流程图 74
(2)源程序设计 76
9.4.3 步骤三:PROTEUS仿真 79
9.5 扩展练习 81
此子情境设计的秒表只能显示两位整数,如果要记录110跨栏12:88秒的成绩,则必须再增加两位数码管来显示小数位。想想硬件和软件应该做如何改动。 81
子情境十:点阵LED简单图形显示技术 82
10.1子情境内容:利用单片机AT89C52在8×8点阵上逐次显示心形、圆形和菱形图。 82
10.2 子情境目标: 82
(1)通过学习点阵LED显示技术,掌握单片机与点阵的接口电路。 82
(2)进一步熟悉单片机I/O口的运用方法,了解动态显示的编程方法 82
10.3 知识点链接 82
10.4 任务步骤 83
10.4.1 步骤一:PROTEUS电路设计,LED点阵的原理图如图5-56所示。 83
10.4.2 步骤二:源程序设计与目标代码文件生成 84
(1)程序流程图 84
(2)源程序设计 85
10.4.3 步骤三:PROTEUS仿真 87
10.5 扩展练习 88
计算机硬件实习报告+计算机组装与维护
计算机硬件实习报告和计算机组装与维护要领