新书速览|你好,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
相关文章:

新书速览|你好,C++
《你好,C》 本书内容 《你好,C》主要介绍C开发环境的搭建、基础语法知识、面向对象编程思想以及标准模板库的应用,特别针对初学者在学习C过程中可能遇到的难点提供了解决方案。全书共分13章,以一个工资程序的不断优化和完善为线索…...
ufw:Linux网络防火墙
一、命令简介 ufw(Uncomplicated Firewall)是一个为 Linux 系统提供简单易用的命令行界面的防火墙管理工具。它是基于 iptables 的,但提供了更简洁的语法和更直观的操作方式,使得配置防火墙变得更加简单,特别适…...

[C++]使用纯opencv部署yolov11-cls图像分类onnx模型
【算法介绍】 在C中使用纯OpenCV部署YOLOv11-cls图像分类ONNX模型是一项具有挑战性的任务,因为YOLOv11通常是用PyTorch等深度学习框架实现的,而OpenCV本身并不直接支持加载和运行PyTorch模型。然而,可以通过一些间接的方法来实现这一目标&am…...

如何使用Immersity AI将图片转换成3D效果视频
随着技术的进步,图片处理变得越来越强大和直观。借助Immersity AI这样的工具,我们现在可以轻松地将平面图片转换成3D效果视频。以下是如何使用Immersity AI进行这一转换的详细步骤。 第一步:访问Immersity AI网站 首先,打开你的…...
安全运营 -- GPO审计
0x00 背景 审计GPO,目的是审计哪些GPO权限分配不合理,包括但不限于审计预期以外的用户具有对GPO的写权限。 0x01 开启审核 在一台windows服务器上 开始 -- 运行 -- 输入 server manager 依次点击Manage -- Add Roles and Features Wizard 角色和功能…...

thinkphp6入门(25)-- 分组查询 GROUP_CONCAT
假设表名为 user_courses,字段为 user_id 和 course_name,存储每个用户选修的课程,想查询每个学生选修的所有课程 SQL 原生查询 SELECT user_id, GROUP_CONCAT(course_name) as courses FROM user_courses GROUP BY user_id; ThinkPHP 代码…...

小米 MIX FOLD工程固件 更换字库修复分区 资源预览与刷写说明
小米 MIX FOLD机型代号 :cetus 该手机搭载骁龙888旗舰处理器 。对于一些因为字库问题损坏导致的故障,更换字库后要先刷写对应的工程底层修复固件。绑定cpu后在写入miui量产固件。 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝💝-----此…...
Flutter全局统一自定义导航栏返回按钮
Flutter全局统一自定义导航栏返回按钮 在Flutter开发中,导航栏(AppBar)是用户界面的重要组成部分,它不仅提供了页面标题,还可能包含返回按钮、导航按钮等。默认情况下,每个Scaffold的AppBar都会包含一个返…...

微信图片的超能力:5大隐秘功能揭秘,让你成为信息处理大师
在数字化时代,微信已成为我们日常生活中不可或缺的通讯工具。 它不仅仅是聊天的平台,更是一个功能强大的信息处理工具。 今天,我们将揭秘微信中图片背后的五大隐秘功能,让你在使用微信时更加得心应手,成为信息处理的…...

python实现RC4加解密算法
RC4算法 一、算法介绍1.1 背景1.2 密钥调度算法(KSA)1.3 伪随机生成算法(PRGA) 二、代码实现三、演示效果 一、算法介绍 1.1 背景 RC4算法是由Ron Rivest在1987年为RSA数据安全公司设计的一种流密码算法,其安全性主要依赖于其密钥流的随机性和不可预测性。该算法因…...
BLE MESH学习2——自定义MESH网络架构思考
BLE MESH学习2——自定义MESH网络架构思考 基于对WCH CH582这款单片机的了解,其可以实现mesh配网、朋友节点、低功耗节点和中继节点的角色,基本功能无问题。在此基础上,考虑满足IoT需求的MESH架构设计,作为后续设计的“白皮书”。…...

路由器的工作机制
在一个家庭或者一个公司中 路由器的作用主要有两个(①路由–决定了数据包从来源到目的地的路径 通过映射表决定 ②转送–通过路由器知道了映射表 就可以将数据包从路由器的输入端转移给合适的输出端) 我们可以画一张图来分析一下: 我们好好来解析一下这张图&#x…...

Studying-多线程学习Part3 - condition_variable与其使用场景、C++11实现跨平台线程池
来源:多线程学习 目录 condition_variable与其使用场景 生产者与消费者模型 C11实现跨平台线程池 condition_variable与其使用场景 生产者与消费者模型 生产者-消费者模式是一种经典的多线程设计模式,用于解决多个线程之间的数据共享和协作问题。…...

开发自定义starter
环境:Spring Cloud Gateway 需求:防止用户绕过网关直接访问服务器,用户只需引入依赖即可。 1、创建项目 首先创建一个spring boot项目 2、配置pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xm…...

Vue2电商平台(五)、加入购物车,购物车页面
文章目录 一、加入购物车1. 添加到购物车的接口2. 点击按钮的回调函数3. 请求成功后进行路由跳转(1)、创建路由并配置路由规则(2)、路由跳转并传参(本地存储) 二、购物车页面的业务1. uuid生成用户id2. 获取购物车数据3. 计算打勾商品总价4. 全选与商品打勾(1)、商品全部打勾&a…...

众数信科 AI智能体政务服务解决方案——寻知智能笔录系统
政务服务解决方案 寻知智能笔录方案 融合民警口供录入与笔录生成需求 2分钟内生成笔录并提醒错漏 助办案人员二次询问 提升笔录质量和效率 寻知智能笔录系统 众数信科AI智能体 产品亮点 分析、理解行业知识和校验规则 AI实时提醒用户文书需注意部分 全文校验格式、内容…...

Redis篇(面试题 - 连环16炮)(持续更新迭代)
目录 目录 目录 (第一炮)一、Redis?常用数据结构? 1. 项目里面到了Redis,为什么选用Redis? 2. Redis 是什么? 3. Redis和关系型数据库的本质区别有哪些? 4. Redis 的线程模型…...
selenium元素定位
find_element和find_elements 元素定位有两个表达式,分别为find_element()和find_elements(),它们的不同点如下: find_element():找出的为单个元素,若有多个元素为同一表达式,则默认定位第一个元素&#…...

美畅物联丨视频汇聚从“设”开始:海康威视摄像机设置详解
在运用畅联云平台进行视频汇聚与监控管理时,海康威视的安防摄像机凭借其卓越的性能与广泛的应用兼容性,成为了众多用户的首选产品。海康威视摄像机参数设置与调试对于实现高效的安防监控至关重要。今天,让我们一同深入学习海康摄像机的参数设…...
聊天机器人羲和的代码04
进一步完善和优化聊天机器人GUI,使其更加丰富和美观,采取了以下措施: 添加图标:为应用程序添加一个图标。 调整布局:进一步优化布局,使其更加美观。 增加样式:使用更多的样式和主题来提升视觉效果。 添加动画:增加加载动画以提高用户体验。 优化控件:使用更现代的控件…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...