当前位置: 首页 > news >正文

新书速览|你好,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

环境&#xff1a;Spring Cloud Gateway 需求&#xff1a;防止用户绕过网关直接访问服务器&#xff0c;用户只需引入依赖即可。 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炮)(持续更新迭代)

目录 目录 目录 &#xff08;第一炮&#xff09;一、Redis&#xff1f;常用数据结构&#xff1f; 1. 项目里面到了Redis&#xff0c;为什么选用Redis&#xff1f; 2. Redis 是什么&#xff1f; 3. Redis和关系型数据库的本质区别有哪些&#xff1f; 4. Redis 的线程模型…...

selenium元素定位

find_element和find_elements 元素定位有两个表达式&#xff0c;分别为find_element()和find_elements()&#xff0c;它们的不同点如下&#xff1a; find_element()&#xff1a;找出的为单个元素&#xff0c;若有多个元素为同一表达式&#xff0c;则默认定位第一个元素&#…...

美畅物联丨视频汇聚从“设”开始:海康威视摄像机设置详解

在运用畅联云平台进行视频汇聚与监控管理时&#xff0c;海康威视的安防摄像机凭借其卓越的性能与广泛的应用兼容性&#xff0c;成为了众多用户的首选产品。海康威视摄像机参数设置与调试对于实现高效的安防监控至关重要。今天&#xff0c;让我们一同深入学习海康摄像机的参数设…...

聊天机器人羲和的代码04

进一步完善和优化聊天机器人GUI,使其更加丰富和美观,采取了以下措施: 添加图标:为应用程序添加一个图标。 调整布局:进一步优化布局,使其更加美观。 增加样式:使用更多的样式和主题来提升视觉效果。 添加动画:增加加载动画以提高用户体验。 优化控件:使用更现代的控件…...

Linux安装配置Jupyter Lab并开机自启

文章目录 1、安装配置jupyter lab首先需要使用pip3安装&#xff1a;生成配置文件和密码&#xff1a; 2、设置开机自启首先通过which jupyter查询到可执行文件路径&#xff1a;设置自启服务&#xff1a; 1、安装配置jupyter lab 首先需要使用pip3安装&#xff1a; pip3 instal…...

Java基础——`UUID.randomUUID()` 方法详细介绍

这里写自定义目录标题 UUID.randomUUID() 方法详细介绍1. 概述2. UUID 的结构与格式UUID 的 128 位结构划分&#xff1a; 3. UUID.randomUUID() 方法详解3.1 方法签名3.2 使用示例3.3 生成原理3.4 随机数生成的范围3.5 随机字符的取值范围 4. UUID 的版本与特性4.1 UUID 版本 4…...

前端面试常见手写代码题【详细篇】

文章目录 前言&#xff1a;防抖节流函数柯里化函数组合instanceof 实现实现new操作符的行为深拷贝继承实现&#xff1a;手写Promise数组中常见函数的实现 前言&#xff1a; 在前端面试中&#xff0c;经常会遇到要求手写的代码的题目&#xff0c;主要是考察我们的编程能力、和对…...

当代最厉害的哲学家改名大师颜廷利:北京、上海、广州和深圳房价精准预测

在2024年国庆节期间&#xff0c;北京、上海、广州和深圳的房地产市场异常活跃。作为山东济南籍的国际易学权威颜廷利教授&#xff0c;连续收到了这些大城市客户的感谢信和电话。 来自北京的王先生在信中写道&#xff1a;“非常感谢颜廷利教授这几年来对我们的鼓励和支持。在经历…...

MySQL常用指令码

本文精心挑选了一系列MySQL指令码&#xff0c;助你提升资料库效率、解决常见问题&#xff0c;让你的资料储存体验更加高效、可靠。 常用功能指令码 1.汇出整个资料库 mysqldump - u 使用者名称- p – default - character - set latin1 资料库名>汇出的档名(资料库预设编…...

OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【扩展组件】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… C支持 基本概念 C作为目前使用最广泛的编程语言之一&#xff0c;…...

官方ROM 免费下载! 王者归来! 华为秘盒media Q M310(续)

最近在捣鼓电视盒子&#xff0c; 前帖讨论了如何拯救华为华为秘盒media Q M310&#xff0c; 详情请点击这里&#xff01; https://blog.csdn.net/weixin_62598385/article/details/142658048 CSDN上有精简版的M310 ROM下载&#xff0c; 但是我点不进去&#xff0c; 要收年费&am…...

【Docker】05-Docker部署前端项目

1. nginx.conf worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/json;sendfile on;keepalive_timeout 65;server {listen 18080;# 指定前端项目所在的位置location / {root /usr/share/nginx…...

SQL进阶技巧:如何优化NULL值引发的数据倾斜问题?

目录 0 场景描述 1 问题分析 1.1 问题剖析 1.2 解决方案 2 小结 0 场景描述 实际业务中有些大量的null值或者一些无意义的数据参与到计算作业中,表中有大量的null值,如果表之间进行join操作,就会有shuffle产生,这样所有的null值都会被分配到一个reduce中,必然产生数…...

【09】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Class类基础全解(属性、方法、继承复用、判断)

序言&#xff1a; 本文详细讲解了关于我们在程序设计中所用到的class类的各种参数及语法。 笔者也是跟着B站黑马的课程一步步学习&#xff0c;学习的过程中添加部分自己的想法整理为笔记分享出来&#xff0c;如有代码错误或笔误&#xff0c;欢迎指正。 B站黑马的课程链接&am…...