新书速览|你好,C++

news2024/10/8 17:39:23

《你好,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.coloradmin.cn/o/2196859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT助力文献综述写作:提升效率与写作技巧!

文献综述在论文写作中占有举足轻重的地位。它不仅帮助我们梳理已有的研究成果,还能为自己的研究奠定基础。许多同学在撰写文献综述时常常感到头疼:如何处理海量的信息?如何将不同的观点有条理地整合起来?再加上学术语言的高要求&a…

定时任务。

引入 1.启动类上加上注解 2.新建一个定时任务的管理类,交给Spring管理 案例 案例1:fixedRate //上次任务开始到下次任务开始的时间间隔为5秒 //每隔5秒执行一次,不需要等上个任务执行完 Scheduled(fixedRate 5000) public void mask01() throws Inte…

python:web自动化工具selenium安装和配置(1)

UI自动化测试 UI自动化测试(User Interface Automation Testing)是一种通过编写脚本或使用自动化测试工具,对界面(UI)进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面,自动化执行用户界…

【Java 问题】基础——泛型

接上文 泛型 47.Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? 47.Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? 什么是泛型? Java 泛型(generics)是…

REINFORCEMENT LEARNING THROUGH ACTIVE INFERENCE

摘要 强化学习(RL)的核心原则是智能体寻求最大化累积奖励之和。相比之下,主动推理,认知和计算神经科学中的一个新兴框架,提出代理人采取行动,以最大限度地提高有偏见的生成模型的证据。在这里,…

上门安装维修系统小程序开发详解及源码示例

随着智能家居和设备的普及,消费者对上门安装和维修服务的需求日益增加。为了满足这一市场需求,开发一款上门安装维修系统小程序成为了一种有效的解决方案。本文将详细介绍上门安装维修系统小程序的开发过程,并提供一个简单的源码示例&#xf…

人工智能的未来

引言 人工智能的未来发展将是科技与人类社会深度融合的过程。随着技术的不断进步,AI将在全球经济、文化、政治及道德伦理等领域产生深远影响。本文将探讨人工智能在未来可能的技术进步、应用领域、社会影响、伦理挑战,以及对全球未来的展望。 一、技术前…

数据结构之——二叉树

一、二叉树的基本概念 二叉树是数据结构中的重要概念,每个节点最多有两个子树,分别为左子树和右子树。这种结构具有明确的层次性和特定的性质。 二叉树有五种基本形态: 空二叉树:没有任何节点。只有一个根结点的二叉树&#xff…

【HTTPS】深入解析 https

我的主页:2的n次方_ 1. 背景介绍 在使用 http 协议的时候是不安全的,可能会出现运营商劫持等安全问题,运营商通过劫持 http 流量,篡改返回的网页内容,例如广告业务,可能会通过 Referer 字段 来统计是…

kubernetes get pods的STATUS字段显示ImagePullBackOff 的解决办法

问题: [rootmaster ingress]# kubectl -n ingress-nginx get pods NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-mcrc6 0/1 ImagePullBackOff 0 37m ingress-…

掌握RocketMQ——基本概念和系统架构

简述RcoketMQ 概念:RocketMQ是一个开源的分布式消息中间件,由阿里巴巴开发并贡献给Apache软件基金会。它用于处理高吞吐量、低延迟的消息传递,并广泛应用于现代分布式系统中。 1 基本概念 1.1 消息 (Message) 概念:消息是信息传…

自定义协议以及序列化和反序列化

我们知道TCP是全双工的,可以同时进行发收,因为他有一个发送缓冲区和一个接收缓冲区 我们使用write其实是把数据拷贝到发送缓冲区,使用read接收缓冲区的数据,其实是把数据拷贝到文件缓冲区里,发送的过程中,我…

脸书(Facebook)高效开发国外客户的6个技巧

Facebook作为全球使用人数最多的社媒平台,全球三分之一的人都在用。做外贸的话基本上是必须要去掌握的一个平台,因为通过Facebook是可以开发到很多其他渠道平时开发不到的优质客户的。 Facebook跟LinkedIn不同,LinkedIn比较偏向于大B的客户&…

传热学一些“数”和意义

物体单位面积上的导热热阻/单位表面积上的对流换热热阻 无量纲时间 Nu与Bi的表达式相同,但是意义是无量纲的h。它们表达式里的长度取值不同,比如同样一个平板,Bi的L是厚度,Nu是长度,因为Bi面向固体,λ为固…

八种基本服务器类型,看这篇完全够了

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 上午好,我的网工朋友。 服务器作为网络基础设施的核心组件,其重要性不言而喻。 无论是个人空间还是大型企业的数据中心&…

激波是什么?

你肯定能听懂。激波,激烈的波,代表特征:激波扫过你时,重则五脏震动,支离破碎。轻则耳膜震动,隆隆作响,当然也有相对你而言尺度很小的激波,没啥伤害。 所以激波,和相对于…

【VScode】VScode如何离线安装扩展

VScode如何离线安装扩展 一,简介二,操作步骤2.1 扩展下载2.2 扩展安装 三,总结 一,简介 本文以“C/C Extension Pack”扩展为例,介绍如何在没有网络的环境下给VScode安装扩展,供参考。 二,操作…

gradle.properties的注释乱码的解决方案

问题描述: gradle项目的配置脚本的注解出现乱码:(#?????) gradle.properties #??? PRODSERVER2193.168.0.22 解决方案:(3步) 增…

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(上)

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 本文章是基于瑞芯微RK3568芯片的DAYU200开发板,进行标准…

解决AWS Organizatiion邀请多个Linker账号数量限额问题

文章目录 情景再现什么是 AWS Organizations?操作步骤完整支持工单截图参考链接 情景再现 冷知识:默认情况下,一个组织中允许的原定设置最大账户数为10个。新创建的账户和组织的限额可能会低于默认的 10 个账户。 现在需要用一个AWS账号&…