新书速览|你好,C++

《你好,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/442876.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

速度白嫖:Minimax海螺上线图生视频功能

一、什么是Minimax海螺 网址:https://hailuoai.video/ Minimax海螺是一款创新的内容创作工具,专注于将静态图像转化为动态视频。它利用先进的图像处理与生成算法,帮助用户将普通图片迅速转变为引人入胜的短视频,适合社交媒体、…

【HarmonyOS开发笔记 1】 -- 开发环境的搭建

DevEco Studio 的下载与安装 下载 下载路径: https://developer.huawei.com/consumer/cn/download/ 安装 解压后双击 deveco-studio-5.0.3.814.exe 指定安装目录,或者默认,然后下一步 一直“下一步”, 直到最后安装完成 新…

视频消重pr模板|胶片损伤特效视频去重pr模板工程文件

可以用于视频消重效果的pr去重模板,10种胶片损伤特效视频叠加素材pr工程文件。 Premiere Pro模板,可以使用这些效果来增强您的媒体。音乐不包括在内。 下载地址:Pr模板网 下载链接:https://prmuban.com/40591.html

分享我“Excel 表格”关键字的博客笔记(python脚本全程自动)

Python脚本全程自动,全部Python内建工具脚本纯净。 (笔记模板由python脚本于2024年10月05日 19:51:06创建,本篇笔记适合喜欢Excel和Python的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大…

Qt - QMenu

QMenu 1、menu转string输出 //GlobalEnum.h #include <QObject> #include <QMetaEnum> class GlobalEnum : public QObject {Q_OBJECT public:EnumTest();enum Enum_Test{ZhangSan 0,WangWu,};Q_ENUM(Enum_Test) };#define EnumToString(e) \ QMetaEnum::fromTy…

手把手教你如何配置好VS Code的WEB基础开发环境(保姆级)

1. VS Code介绍 微软旗下的多场景开发环境软件&#xff0c;支持JAVA、C、C#、C、WEB、VUE、CSS、HTML、Python等等等 如果你刚刚开始编程或者准备学习WEB&#xff0c;那么我强烈建议你使用这款软件 缺点&#xff1a;&#xff08;针对初学者&#xff09; 需要安装各种各样的插…

数据分析-29-基于pandas的窗口操作和对JSON格式数据的处理

文章目录 1 窗口操作1.1 滑动窗口思想1.2 函数df.rolling2 JSON格式数据2.1 处理简单JSON对象和JSON列表2.1.1 处理简单的JSON结构2.1.2 处理空字段2.1.3 获取部分字段2.2 处理多级json2.2.1 展开所有级别(默认)2.2.2 自定义展开层级2.3 处理嵌套列表JSON3 参考附录1 窗口操作 …

每日学习一个数据结构-图

文章目录 图基础一、图的定义二、图的相关概念三、图的分类四、图的使用场景 和图相关的算法一、图的遍历算法二、最短路径算法三、最小生成树算法四、图匹配算法五、网络流算法 图基础 一、图的定义 在数学中&#xff0c;图是描述于一组对象的结构&#xff0c;其中某些对象对…

YOLOv11模型地址

地址链接 项目Git地址&#xff1a;https://github.com/ultralytics/ultralytics?tabreadme-ov-file

大模型生成PPT大纲优化方案:基于 nVidia NIM 平台的递归结构化生成

大模型生成PPT大纲优化方案&#xff1a;基于 nVidia NIM 平台的递归结构化生成 待解决的问题 生成PPT大纲是一种大模型在办公场景下应用的常见需求。 然而&#xff1a; 目前直接让大模型生成大纲往往是非结构化的&#xff0c;输出格式多样&#xff0c;难以统一和规范&#…

Idea 2024.2.3 找不到Cache Recovery设置

idea找不到官网所说的设置 下面是解决办法 1.找到对应位置 2.增加配置文件内容 idea.is.internaltrue3.重启idea 4.查看结果 解决方案原文

Kubernetes(K8s)的简介

一、Kubernetes的简介 1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个阶段&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;不能为应…

MySQL 查询数据

MySQL 数据库使用SQL SELECT语句来查询数据。 你可以通过 mysql> 命令提示窗口中在数据库中查询数据&#xff0c;或者通过PHP脚本来查询数据。 语法 以下为在MySQL数据库中查询数据通用的 SELECT 语法&#xff1a; SELECT column_name,column_name FROM table_name [WHER…

OpenCV高级图形用户界面(5)获取指定滑动条(trackbar)的当前位置函数getTrackbarPos()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 返回滑动条的位置。 该函数返回指定滑动条的当前位置。 cv::getTrackbarPos() 函数用于获取指定滑动条&#xff08;trackbar&#xff09;的当前…

7-3 简单计算器

本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示&#xff0c;计算器由两个堆栈组成&#xff0c;一个堆栈 S1​ 存放数字&#xff0c;另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键&#xff0c;每次按下这个键&#xff0c;计算器就…

GPT系列

GPT&#xff08;Generative Pre-Training&#xff09;&#xff1a; 训练过程分两步&#xff1a;无监督预训练有监督微调 模型结构是decoder-only的12层transformer 1、预训练过程&#xff0c;窗口为k&#xff0c;根据前k-1个token预测第k个token&#xff0c;训练样本包括700…

c++ 计算同一行上的最大点数(Count maximum points on same line)

示例图 给定二维平面上的 N 点作为一对 (x, y) 坐标&#xff0c;我们需要找到位于同一条线上的最大点数。 例子&#xff1a; 输入&#xff1a;points[] {-1, 1}, {0, 0}, {1, 1}, {2, 2}, {3, 3}, {3, 4} 输出&#xff1a;4 那么位于同一条线上的点…

专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结

目录 搜索 vs 深度优先遍历 vs 深度优先搜索 vs 宽度优先遍历 vs 宽度优先搜索 vs 暴搜 1.深度优先遍历 vs 深度优先搜索(dfs) 2.宽度优先遍历 vs 宽度优先搜索(bfs) 2.关系图暴力枚举一遍所有的情况 3.拓展搜索问题全排列 决策树 1. 计算布尔⼆叉树的值&#xff08;medi…

JAVA智能国际商城跨境电商系统小程序源码

智能国际商城跨境电商系统——全球购物&#xff0c;一触即达 &#x1f30d; 开篇&#xff1a;智能科技&#xff0c;重塑跨境购物新体验 在这个全球化的时代&#xff0c;跨境购物已经不再是遥不可及的事情。而“智能国际商城跨境电商系统”正是这样一款将智能科技与跨境电商完…

Badge插件的用法

文章目录 1 概念介绍2 实现方法3 示例代码我们在上一章回中介绍了WebView组件相关的内容,本章回中将介绍如何在图标旁边添加小红点.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 在实际项目中有时候需要在图标旁边显示小红点,而且小红点内还有数字,比如购物车图标显示…