新書推薦:
《
英国简史(刘金源教授作品)
》
售價:NT$
449.0
《
便宜货:廉价商品与美国消费社会的形成
》
售價:NT$
352.0
《
读书是一辈子的事(2024年新版)
》
售價:NT$
352.0
《
乐道文库·什么是秦汉史
》
售價:NT$
367.0
《
汉娜·阿伦特与以赛亚·伯林 : 自由、政治与人性
》
售價:NT$
500.0
《
女性与疯狂(女性主义里程碑式著作,全球售出300万册)
》
售價:NT$
500.0
《
药食同源中药鉴别图典
》
售價:NT$
305.0
《
设计中的比例密码:建筑与室内设计
》
售價:NT$
398.0
|
編輯推薦: |
要掌握C 这门强大的编程语言吗?本书将成为你的最佳伙伴!从C 的历史渊源到未来发展,从基础语法到高级特性,这本全面的指南涵盖了你需要了解的一切。
特色亮点:
1. 全面覆盖:基础语法、面向对象设计、STL与模板、多线程编程,应有尽有。
2. 实践导向:大量实例和练习,让你在实操中掌握知识。
3. 深入浅出:作者凭借多年工作经验,解答初学者最常见、最关切的问题。
4. step by step:详细指导如何一步步编写功能齐备的程序。
无论你是编程新手还是想要提升技能的开发者,这本书都能满足你的需求。让我们一起踏上C 大师之路,释放你的编程潜力!
|
內容簡介: |
《你好,C 》主要介绍C 开发环境的搭建、基础语法知识、面向对象编程思想以及标准模板库的应用,特别针对初学者在学习C 过程中可能遇到的难点提供了解决方案。全书共分13章,以一个工资程序的不断优化和完善为线索,展示了如何利用C 进行设计和解决实际问题。《你好,C 》遵循最新的C 23标准,更新了所有代码和讲解,并增加了新标准引入的特性,如智能指针、std::thread等,使读者能够掌握最新的C 知识。每章末尾都配有“本章练习”,帮助读者通过实际编写代码来加深对知识的理解。
《你好,C 》语言风格轻松幽默,还收录了一些公司的典型笔试题,无论是C 初学者还是中级程序员提升技能,都是极佳的选择。同时,《你好,C 》也适合作为应用型本科及高职高专相关专业的教材使用。
|
關於作者: |
陈良乔,程序员、自由撰稿人,毕业于西安交通大学。敏而好学,乐于分享,连续六年获得微软最有价值专家(MVP)称号。因撰写一系列Visual Studio 2010技术文章和Windows 7开发技术文章,2010年获“MSDN原创之星”称号。曾组织翻译Bjane Stroustrup的《C 11 FAQ》。著有《我的第一本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 学习之旅将充满乐趣。
学习C ,就是学习如何用这门语言描述和表达现实世界。本书系统地介绍了C 的基本数据类型、逻辑控制语句、函数、面向对象编程、类与对象,以及标准模板库等核心概念。通过学习,你将能够使用int、double、string等数据类型来描述现实世界的数据;掌握if...else等逻辑控制语句来实现条件判断;理解如何用函数封装算法;利用面向对象的封装、继承和多态来抽象现实世界;以及运用标准模板库来简化数据管理和算法处理。这些基础知识是C 语言中最实用的核心部分,能帮助你用C 解决现实问题。
面对C 语言的复杂性,学习之路是否充满挑战?
答案是肯定的。但幸运的是,你拥有了《你好,C 》这本书。
本书不深究语法细节,也不堆砌编程技巧,而是以简单实用为原则,用通俗易懂的方式介绍C 的精髓。通过阅读本书,你将发现逻辑控制语句如何串联程序流程,函数如何封装程序逻辑,面向对象如何赋予程序结构,算法如何丰富程序功能。本书以一个工资程序的优化过程为例,展示了C 知识的实际应用,让你在轻松的故事中掌握C 。
拜师学艺,不仅学习的是师傅的技术,更重要的是传承师傅的经验。作者凭借10多年的C 开发经验和微软最有价值专家(Most Valuable Professional,MVP)的荣誉,将丰富的实践经验融入本书。你将从中获得关于如何选择float和double、理解const关键字的重要性、区分指针和引用等实用问题的解答,使你从新手成长为熟练的开发者。如果你已是C 开发者,这些经验同样能助你的编程技能更进一步。
那么,为何不立即开始我们的C 学习之旅呢?
配书资源
本书配套提供源代码,读者可用微信扫描下面二维码获取。如果在阅读本书的过程中发现问题或有疑问,请联系booksaga@126.com,邮件主题为“你好,C ”。
致 谢
在本书的创作过程中,我得到了许多人的帮助和支持。感谢家人的默默支持,感谢康雁老师、周静姐姐、唐总和兰姐的教诲,感谢单春辉、丁春利、马洪旭在困难时刻的无私帮助。特别感谢Elmar Driesch先生、Andreas Muench先生及Thorsten Thomsen先生的帮助和指导,以及Bjane Stroustrup先生在创作过程中的宝贵指导。感谢所有参与翻译《C 0x FAQ中文版》的志愿者们,本书的部分章节参考借鉴了该文档。同时,也感谢网络上的知识分享者们提供的资料。
感谢所有关心我的朋友,我爱你们!
陈良乔
2024年5月于西安
|
|