《你好,C++》
本书内容
《你好,C++》主要介绍C++开发环境的搭建、基础语法知识、面向对象编程思想以及标准模板库的应用,特别针对初学者在学习C++过程中可能遇到的难点提供了解决方案。全书共分13章,以一个工资程序的不断优化和完善为线索,展示了如何利用C++进行设计和解决实际问题。《你好,C++》遵循最新的C++23标准,更新了所有代码和讲解,并增加了新标准引入的特性,如智能指针、std::thread等,使读者能够掌握最新的C++知识。每章末尾都配有“本章练习”,帮助读者通过实际编写代码来加深对知识的理解。
本书作者
陈良乔,程序员、自由撰稿人,毕业于西安交通大学。敏而好学,乐于分享,连续六年获得微软最有价值专家(MVP)称号。因撰写一系列Visual Studio 2010技术文章和Windows 7开发技术文章,2010年获“MSDN原创之星”称号。曾组织翻译Bjane Stroustrup的《C++11 FAQ》。著有《我的第一本C++书》和《C语言程序伴侣》。
本书读者
《你好,C++》语言风格轻松幽默,还收录了一些公司的典型笔试题,无论是C++初学者还是中级程序员提升技能,都是极佳的选择。同时,《你好,C++》也适合作为应用型本科及高职高专相关专业的教材使用。
本书目录
目 录
第1部分 基础篇
第1章 需要提前掌握的知识 2
1.1 Node中的请求与响应对象 2
1.1.1 原生Node处理HTTP请求 2
1.1.2 Express处理HTTP请求 4
1.1.3 Nest处理HTTP请求 7
1.2 TypeScript基础与应用 7
1.2.1 TypeScript编译 8
1.2.2 TypeScript类型系统 9
第2章 Nest初识 15
2.1 什么是Nest 15
2.1.1 Nest概述 15
2.1.2 Nest的主要特点 15
2.1.3 Nest的应用场景 16
2.2 快速上手Nest CLI 16
2.2.1 Nest CLI的安装 16
2.2.2 创建项目 17
2.2.3 生成指定的代码片段 19
2.2.4 构建应用 22
2.2.5 启动开发调试 24
2.2.6 查看项目信息 25
2.3 创建第一个Nest应用 25
2.3.1 生成后端项目 26
2.3.2 生成前端项目 26
2.3.3 准备工作 27
2.3.4 运行结果 29
2.3.5 模块化开发 30
2.4 Nest的AOP架构理念 32
2.4.1 MVC架构概述 32
2.4.2 AOP解决的问题 33
2.4.3 AOP在Nest中的应用 33
2.5 IoC思想解决了什么问题 40
2.5.1 IoC核心思想概述 40
2.5.2 IoC在Nest中的应用 41
2.6 学会调试Nest应用 44
2.6.1 Chrome DevTools调试 44
2.6.2 VS Code调试 46
2.6.3 扩展调试技巧 48
第3章 Nest核心概念介绍 51
3.1 贯穿全书的装饰器 51
3.1.1 基本概念 51
3.1.2 装饰器的种类 51
3.1.3 Nest中的装饰器 59
3.2 井然有序的模块化 60
3.2.1 基本概念 60
3.2.2 创建模块 61
3.2.3 共享模块 62
3.2.4 全局模块 64
3.2.5 动态模块 65
3.3 控制器与服务的默契配合 66
3.3.1 基本概念 66
3.3.2 Controller管理请求路由 67
3.3.3 Controller处理请求参数与请求体 68
3.3.4 Service处理数据层 70
3.3.5 服务与服务提供者 71
3.4 耳熟能详的中间件 71
3.4.1 类中间件 71
3.4.2 函数式中间件 74
3.4.3 局部中间件 74
3.4.4 全局中间件 74
3.5 拦截器与RxJS知多少 75
3.5.1 基本概念 75
3.5.2 创建项目 76
3.5.3 拦截器的基本使用方法 76
3.6 数据之源守护者:管道 79
3.6.1 基本概念 79
3.6.2 内置管道 80
3.6.3 自定义管道 88
3.7 Nest实现文件上传 89
3.7.1 初识Multer 89
3.7.2 单文件上传 91
3.7.3 多文件上传 94
3.7.4 上传任意文件 98
3.7.5 文件验证 99
第2部分 进阶篇
第4章 Nest与数据库 102
4.1 快速上手MySQL 102
4.1.1 安装和运行 102
4.1.2 MySQL的常用命令 105
4.1.3 可视化操作MySQL 107
4.2 MySQL表之间的关系 112
4.2.1 一对一关系 112
4.2.2 一对多/多对一关系 119
4.2.3 多对多关系 121
4.3 快速上手TypeORM 126
4.3.1 基本概念 126
4.3.2 项目准备 126
4.3.3 创建模型及实体 126
4.3.4 定义数据列及类型 127
4.3.5 连接数据库 128
4.3.6 使用Repository操作CRUD 129
4.3.7 使用QueryBuilder操作CRUD 131
4.4 使用TypeORM处理多表关系 134
4.4.1 一对一关系 134
4.4.2 一对多/多对一关系 140
4.4.3 多对多关系 142
4.5 在Nest中使用TypeORM操作MySQL 144
4.5.1 项目准备 144
4.5.2 使用EntityManager操作实体 147
4.5.3 使用Repository操作实体 148
4.5.4 使用QueryBuilder操作实体 151
第5章 性能优化之数据缓存 154
5.1 快速上手Redis 154
5.1.1 安装和运行 154
5.1.2 Redis的常用命令 155
5.2 在Nest中使用Redis缓存 162
5.2.1 项目准备 162
5.2.2 Redis初始化 164
5.2.3 建表并构建缓存 165
5.2.4 运行代码 167
5.2.5 设置缓存有效期 169
5.2.6 选择合理的有效期 170
第6章 身份验证与授权 171
6.1 Cookie、Session、Token、JWT、SSO详解 171
6.1.1 什么是身份验证 171
6.1.2 什么是授权 172
6.1.3 什么是凭证 172
6.1.4 什么是Cookie 172
6.1.5 什么是Session 173
6.1.6 Session与Cookie的区别 173
6.1.7 什么是Token 174
6.1.8 什么是JWT 176
6.1.9 JWT与Token的区别 177
6.1.10 什么是SSO 177
6.2 基于Passport和JWT实现身份验证 180
6.2.1 基本概念 181
6.2.2 项目准备 181
6.2.3 用本地策略实现用户登录 182
6.2.4 用JWT策略实现接口校验 184
6.2.5 代码优化 188
6.3 基于RBAC实现权限控制 191
6.3.1 基本概念 191
6.3.2 数据表设计 192
6.3.3 项目准备 193
6.3.4 创建实体 194
6.3.5 启动服务 196
6.3.6 实现角色守卫控制 196
6.3.7 生成测试数据 200
6.3.8 测试效果 202
第7章 系统部署与扩展 203
7.1 快速上手Docker 203
7.1.1 初识Docker 203
7.1.2 安装Docker 204
7.1.3 Docker的使用 205
7.2 快速上手Dockerfile 209
7.2.1 Docker的基本概念 209
7.2.2 Dockerfile的基本语法 210
7.2.3 Dockerfile实践 210
第3部分 扩展篇
第8章 单元测试与端到端测试 216
8.1 重新认识单元测试 216
8.1.1 什么是单元测试 216
8.1.2 为什么大部分公司没有进行单元测试 217
8.1.3 为什么要编写单元测试 217
8.1.4 先编写单元测试还是先编写代码 218
8.1.5 测试驱动开发 219
8.2 在Nest中使用Jest编写单元测试 220
8.2.1 初识Jest 220
8.2.2 项目准备 223
8.2.3 编写测试用例 224
8.2.4 实现业务代码 225
8.2.5 重构代码 229
8.3 集成测试 230
8.3.1 编写测试用例 230
8.3.2 测试效果 232
8.4 端到端测试 232
8.4.1 编写测试用例 233
8.4.2 实现业务代码 235
第9章 日志与错误处理 237
9.1 如何在Nest中记录日志 237
9.1.1 为什么要记录日志 238
9.1.2 内置日志器Logger 238
9.1.3 定制日志器 240
9.1.4 记录日志的正确姿势 241
9.1.5 第三方日志器Winston 241
9.2 Winston日志管理实践 241
9.2.1 Winston的基础使用 242
9.2.2 本地持久化日志 244
9.3 面向切面日志统计实践 248
9.3.1 中间件日志统计 248
9.3.2 拦截器日志统计 249
9.3.3 过滤器日志统计 251
第4部分 Nest项目实战篇
第10章 数字门店管理平台开发 254
10.1 产品需求分析与设计 254
10.1.1 产品需求说明 254
10.1.2 功能原型图 255
10.2 技术选型与项目准备 262
10.2.1 前端技术选型 262
10.2.2 初始化前端项目 262
10.2.3 前端架构设计 263
10.2.4 后端技术选型 264
10.2.5 初始化后端项目 265
10.2.6 后端架构设计 266
10.3 API接口及数据库表设计 268
10.3.1 API接口功能划分 268
10.3.2 数据库设计 269
10.4 实现注册登录 273
10.4.1 页面效果展示 273
10.4.2 接口实现 281
10.5 实现用户与角色模块 290
10.5.1 页面效果展示 290
10.5.2 表关系设计 295
10.5.3 接口实现 299
10.6 实现商品与订单模块 303
10.6.1 页面效果展示 304
10.6.2 表关系设计 306
10.6.3 接口实现 307
10.7 基于Redis实现商品热销榜 315
10.7.1 页面效果展示 316
10.7.2 接口实现 317
10.8 实现活动模块与定时任务 320
10.8.1 页面效果展示 320
10.8.2 表关系设计 322
10.8.3 接口实现 323
10.9 使用Docker Compose部署项目 325
10.9.1 编写后端Docker Compose文件 325
10.9.2 编写Dockerfile文件 330
完结语:是终点,更是新的起点 334
一个小小的决定 334
时间的杠杆 334
结语 334
本书特色
本文摘自《你好,C++》,获出版社和作者授权发布。
你好,C++——jd