登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』C++嵌入式开发实例精解

書城自編碼: 3770470
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: [美]艾格尔·威亚契克 著 刘?J 译
國際書號(ISBN): 9787302607809
出版社: 清华大学出版社
出版日期: 2022-07-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:NT$ 607

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
跨界:蒂利希思想研究
《 跨界:蒂利希思想研究 》

售價:NT$ 500.0
千万别喝南瓜汤(遵守规则绘本)
《 千万别喝南瓜汤(遵守规则绘本) 》

售價:NT$ 203.0
大模型启示录
《 大模型启示录 》

售價:NT$ 510.0
东法西渐:19世纪前西方对中国法的记述与评价
《 东法西渐:19世纪前西方对中国法的记述与评价 》

售價:NT$ 918.0
养育男孩:官方升级版
《 养育男孩:官方升级版 》

售價:NT$ 230.0
小原流花道技法教程
《 小原流花道技法教程 》

售價:NT$ 500.0
少女映像室 唯美人像摄影从入门到实战
《 少女映像室 唯美人像摄影从入门到实战 》

售價:NT$ 505.0
詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究)
《 詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究) 》

售價:NT$ 398.0

建議一齊購買:

+

NT$ 509
《 设计模式之美 》
+

NT$ 380
《 网站设计与开发从新手到高手 》
+

NT$ 509
《 用Go语言自制解释器 》
+

NT$ 743
《 R语言实战 第2版 》
+

NT$ 414
《 Java Web应用开发技术(Java EE 8 +Tomcat 9) 》
+

NT$ 551
《 JavaScript设计模式与开发实践 》
編輯推薦:
随着硬件开发的不断进步,越来越多的嵌入式系统由廉价而强大的系统芯片驱动,甚至能够运行通用的多任务系统,如Linux。不断增长的硬件能力需要我们编写更加复杂的软件,因此,C 越来越多地成为新的嵌入式系统的首选语言。C 允许开发人员创建使用计算和内存资源的应用程序,就像使用C语言编写的应用程序一样,但为开发人员提供了更多的工具处理复杂性和更安全的资源管理问题,如面向对象编程和RAII习惯用法。
內容簡介:
本书详细阐述了与C 嵌入式开发相关的基本解决方案,主要包括嵌入式系统的基础知识,配置开发环境,与不同的体系结构协同工作,处理中断,调试、日志和分析,内存管理,多线程和同步机制,通信和序列化,外围设备,降低功耗,时间点和时间间隔,错误处理和容错机制,实时系统、安全性系统的指导原则,微控制器编程等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
目錄
第1章 嵌入式系统的基础知识 1
1.1 考查嵌入式系统 1
1.1.1 与台式机或Web应用程序的不同之处 1
1.1.2 嵌入式系统的类型 2
1.1.3 微控制器 2
1.1.4 片上系统 3
1.1.5 专用集成电路 4
1.1.6 现场可编程门阵列 4
1.2 与有限的资源协同工作 4
1.3 考查性能影响 4
1.4 与不同的架构协同工作 5
1.4.1 字节顺序 5
1.4.2 对齐问题 7
1.4.3 定宽整数类型 8
1.5 处理硬件错误 8
1.5.1 硬件的早期版本 8
1.5.2 硬件的不可靠性 9
1.5.3 环境条件的影响 9
1.6 C 嵌入式开发 9
1.6.1 不必为无用的事务付诸实践 10
1.6.2 基于面向对象编程的代码复杂度计算 12
1.6.3 资源获取时即初始化 12
1.6.4 异常机制 14
1.6.5 强大的标准库 16
1.6.6 线程和内存模型 16
1.7 远程部署软件 17
1.8 远程运行软件 18
1.9 日志和诊断 18
1.10 本章小结 19
第2章 配置开发环境 21
2.1 在Docker容器中配置构建系统 22
2.1.1 实现方式 22
2.1.2 工作方式 23
2.1.3 更多内容 24
2.2 与模拟器协同工作 24
2.2.1 实现方式 25
2.2.2 工作方式 25
2.2.3 更多内容 27
2.3 交叉编译 27
2.3.1 准备工作 27
2.3.2 实现方式 27
2.3.3 工作方式 28
2.3.4 更多内容 31
2.4 连接至嵌入式系统 31
2.4.1 准备工作 31
2.4.2 实现方式 31
2.4.3 工作方式 32
2.4.4 更多内容 33
2.5 调试嵌入式应用程序 34
2.5.1 准备工作 34
2.5.2 实现方式 34
2.5.3 工作方式 35
2.5.4 更多内容 36
2.6 针对远程调试使用gdbserver 37
2.6.1 准备工作 37
2.6.2 实现方式 37
2.6.3 工作方式 38
2.6.4 更多内容 39
2.7 使用CMake作为构建系统 40
2.7.1 准备工作 40
2.7.2 实现方式 40
2.7.3 工作方式 41
2.7.4 更多内容 44
第3章 与不同的体系结构协同工作 45
3.1 定宽整数类型 45
3.1.1 实现方式 46
3.1.2 工作方式 47
3.1.3 更多内容 48
3.2 处理size_t类型 48
3.2.1 实现方式 48
3.2.2 工作方式 49
3.2.3 更多内容 50
3.3 检测平台的字节顺序 50
3.3.1 实现方式 51
3.3.2 工作方式 52
3.3.3 更多内容 53
3.4 转换字节顺序 53
3.4.1 实现方式 54
3.4.2 工作方式 57
3.5 处理数据对齐问题 58
3.5.1 实现方式 59
3.5.2 工作方式 60
3.5.3 更多内容 61
3.6 处理打包结构 61
3.6.1 实现方式 62
3.6.2 工作方式 62
3.6.3 更多内容 63
3.7 缓存行对齐数据 63
3.7.1 实现方式 63
3.7.2 工作方式 65
3.7.3 更多内容 66
第4章 处理中断 67
4.1 数据轮询 67
4.2 中断服务程序 68
4.3 对ISR的一般考虑 68
4.4 8051微控制器中断 69
4.5 实现中断服务程序 70
4.5.1 实现方式 70
4.5.2 工作方式 72
4.6 通过8位自动重载模式生成一个5 kHz的方波信号 73
4.6.1 实现方式 74
4.6.2 工作方式 75
4.7 使用Timer 1作为事件计数器计数一个1 Hz脉冲 76
4.7.1 实现方式 76
4.7.2 工作方式 78
4.7.3 更多内容 79
4.8 串行接收和传输数据 79
4.8.1 实现方式 80
4.8.2 工作方式 80
4.8.3 更多内容 81
第5章 调试、日志和分析 83
5.1 技术需求 83
5.2 在GDB中运行源程序 84
5.2.1 实现方式 84
5.2.2 工作方式 86
5.2.3 更多内容 90
5.3 处理断点 91
5.3.1 实现方式 91
5.3.2 工作方式 92
5.3.3 更多内容 96
5.4 处理核心转储 96
5.4.1 实现方式 96
5.4.2 工作方式 97
5.4.3 更多内容 99
5.5 使用gdbserver进行调试 99
5.5.1 准备工作 100
5.5.2 实现方式 100
5.5.3 工作方式 100
5.6 添加调试日志机制 101
5.6.1 实现方式 101
5.6.2 工作方式 102
5.6.3 更多内容 104
5.7 与调试和发布版本协同工作 104
5.7.1 实现方式 105
5.7.2 工作方式 106
5.7.3 更多内容 108
第6章 内存管理 109
6.1 使用动态内存分配 109
6.1.1 实现方式 110
6.1.2 工作方式 112
6.2 对象池 112
6.2.1 实现方式 113
6.2.2 工作方式 115
6.2.3 更多内容 118
6.3 环状缓冲区 118
6.3.1 实现方式 119
6.3.2 工作方式 121
6.4 使用共享内存 124
6.4.1 实现方式 125
6.4.2 工作方式 128
6.4.3 更多内容 131
6.5 使用专用内存 131
6.5.1 实现方式 131
6.5.2 工作方式 133
6.5.3 更多内容 135
第7章 多线程和同步机制 137
7.1 C 语言中的线程支持 137
7.1.1 实现方式 138
7.1.2 工作方式 139
7.2 数据同步机制 140
7.2.1 实现方式 140
7.2.2 工作方式 141
7.2.3 更多内容 143
7.3 使用条件变量 143
7.3.1 实现方式 143
7.3.2 工作方式 145
7.3.3 更多内容 147
7.4 使用原子变量 147
7.4.1 实现方式 148
7.4.2 工作方式 150
7.4.3 更多内容 151
7.5 使用C 内存模型 152
7.5.1 实现方式 152
7.5.2 工作方式 154
7.5.3 更多内容 155
7.6 无锁同步机制 155
7.6.1 实现方式 155
7.6.2 工作方式 157
7.6.3 更多内容 158
7.7 在共享内存中使用原子变量 159
7.7.1 实现方式 159
7.7.2 工作方式 162
7.8 异步函数和特性 164
7.8.1 实现方式 165
7.8.2 工作方式 166
7.8.3 更多内容 168
第8章 通信和序列化 169
8.1 在应用程序中使用进程间的通信 169
8.1.1 实现方式 170
8.1.2 工作方式 172
8.1.3 更多内容 175
8.2 进程间的通信机制 175
8.2.1 准备工作 175
8.2.2 实现方式 176
8.2.3 工作方式 177
8.2.4 更多内容 178
8.3 消息队列和发布者-订阅者模式 178
8.3.1 实现方式 179
8.3.2 工作方式 182
8.3.3 更多内容 184
8.4 针对回调使用C lambda函数 185
8.4.1 实现方式 185
8.4.2 工作方式 186
8.4.3 更多内容 187
8.5 数据序列化 187
8.5.1 实现过程 188
8.5.2 工作方式 190
8.5.3 更多内容 191
8.6 使用FlatBuffers库 192
8.6.1 实现方式 192
8.6.2 工作方式 194
8.6.3 更多内容 195
第9章 外围设备 197
9.1 控制通过GPIO连接的设备 197
9.1.1 实现方式 197
9.1.2 工作方式 199
9.2 脉冲宽度调制 201
9.2.1 实现方式 201
9.2.2 工作方式 203
9.2.3 更多内容 204
9.3 在Linux中使用ioctl访问实时时钟 204
9.3.1 实现方式 205
9.3.2 工作方式 207
9.3.3 更多内容 208
9.4 使用libgpiod控制GPIO引脚 208
9.4.1 实现方式 209
9.4.2 工作方式 210
9.4.3 更多内容 211
9.5 控制I2C外围设备 211
9.5.1 实现方式 212
9.5.2 工作方式 216
9.5.3 更多内容 219
第10章 降低功耗 221
10.1 技术需求 221
10.2 考查Linux中的节能模式 221
10.2.1 实现方式 222
10.2.2 工作方式 223
10.2.3 更多内容 224
10.3 利用RTC进行唤醒 224
10.3.1 实现方式 224
10.3.2 工作方式 225
10.3.3 更多内容 226
10.4 控制USB设备的自动挂起 226
10.4.1 实现方式 226
10.4.2 工作方式 227
10.4.3 更多内容 229
10.5 配置CPU频率 230
10.5.1 实现方式 230
10.5.2 工作方式 231
10.5.3 更多内容 235
10.6 等待事件 235
10.6.1 实现方式 235
10.6.2 工作方式 238
10.6.3 更多内容 241
10.7 利用PowerTOP分析功耗 241
10.7.1 实现方式 241
10.7.2 工作方式 242
10.7.3 更多内容 244
第11章 时间点和时间间隔 245
11.1 C Chrono库 245
11.1.1 实现方式 245
11.1.2 工作方式 246
11.1.3 更多内容 247
11.2 测量时间间隔 247
11.2.1 实现方式 248
11.2.2 工作方式 249
11.2.3 更多内容 250
11.3 处理延迟问题 250
11.3.1 实现方式 250
11.3.2 工作方式 252
11.3.3 更多内容 253
11.4 使用单调递增时钟 254
11.4.1 实现方式 254
11.4.2 工作方式 256
11.4.3 更多内容 257
11.5 使用POSIX时间戳 258
11.5.1 实现方式 258
11.5.2 工作方式 259
11.5.3 更多内容 260
第12章 错误处理和容错机制 261
12.1 处理错误代码 261
12.1.1 实现方式 261
12.1.2 工作方式 264
12.1.3 更多内容 265
12.2 针对错误处理使用异常 265
12.2.1 实现方式 266
12.2.2 工作方式 267
12.2.3 更多内容 269
12.3 捕捉异常时使用常量引用 269
12.3.1 实现方式 269
12.3.2 工作方式 271
12.3.3 更多内容 272
12.4 处理静态对象 273
12.4.1 实现方式 273
12.4.2 工作方式 275
12.5 与定时器协同工作 276
12.5.1 实现方式 277
12.5.2 工作方式 278
12.6 高可用系统的心跳信号 280
12.6.1 实现方式 280
12.6.2 工作方式 283
12.6.3 更多内容 287
12.7 实现软件反抖动逻辑 287
12.7.1 实现方式 287
12.7.2 工作方式 289
第13章 实时系统 291
13.1 使用Linux中的实时调度器 291
13.1.1 实现方式 292
13.1.2 工作方式 293
13.2 使用静态分配的内存 295
13.2.1 实现方式 295
13.2.2 工作方式 297
13.2.3 更多内容 298
13.3 避免错误处理异常 298
13.3.1 实现方式 299
13.3.2 工作方式 301
13.3.3 更多内容 302
13.4 实时系统 302
13.4.1 实现方式 302
13.4.2 工作方式 303
13.4.3 更多内容 304
第14章 安全性系统的指导原则 305
14.1 使用全部函数的返回值 305
14.1.1 实现方式 306
14.1.2 工作方式 308
14.1.3 更多内容 310
14.2 使用静态代码分析器 310
14.2.1 实现方式 311
14.2.2 工作方式 311
14.2.3 更多内容 312
14.3 使用前置条件和后置条件 312
14.3.1 实现方式 313
14.3.2 工作方式 314
14.3.3 更多内容 316
14.4 代码正确性的正规验证方案 316
14.4.1 实现方式 316
14.4.2 工作方式 317
14.4.3 更多内容 319
第15章 微控制器编程 321
15.1 设置开发环境 321
15.1.1 实现方式 321
15.1.2 工作方式 322
15.1.3 更多内容 323
15.2 编译并上传程序 323
15.2.1 实现方式 323
15.2.2 工作方式 323
15.2.3 更多内容 325
15.3 调试微控制器代码 326
15.3.1 实现方式 326
15.3.2 工作方式 327
內容試閱
长久以来,嵌入式系统开发基本通过C语言或汇编语言予以实现,其原因在于,硬件往往缺少应有的资源运行高级编程语言(如C 、Java或Python)编写的程序。更为重要的是,没有必要使用这些语言编写软件。有限的硬件资源限制了软件的复杂性,嵌入式应用程序的功能依然相对简单,这也使得C语言足以胜任此项工作。
随着硬件开发的不断进步,越来越多的嵌入式系统由廉价而强大的系统芯片驱动,甚至能够运行通用的多任务系统,如Linux。不断增长的硬件能力需要我们编写更加复杂的软件,因此,C 越来越多地成为新的嵌入式系统的首选语言。C 允许开发人员创建使用计算和内存资源的应用程序,就像使用C语言编写的应用程序一样,但为开发人员提供了更多的工具处理复杂性和更安全的资源管理问题,如面向对象编程和RAII习惯用法。
具有丰富C语言经验的资深嵌入式开发人员通常倾向于以类似的、习惯性的方式使用C 编写代码,并将这种语言视为C语言的面向对象扩展,即带有类的C语言。然而,现代C 语言拥有自己的最佳实践方案和概念,如果使用得当,它可以帮助开发人员避免常见的陷阱,并允许开发人员在几行代码中完成诸多工作。
另一方面,当具有C 经验的开发人员步入嵌入式系统这一领域时,他们需要了解特定的硬件平台,以及应用程序领域的需求、限制条件和相关功能,进而设计C 代码。
本书旨在填补这一项空白,并演示如何在嵌入式系统中应用现代C 语言的特性和最佳实践方案。
适用读者
本书适用于软件开发人员、电子硬件工程师、软件工程师和系统芯片工程师,可帮助他们通过C 语言构建高效的嵌入式程序。
嵌入式系统涵盖了较为广泛的领域,本书试图讨论其中的一种类型,即运行Linux操作系统的SoC,如树莓派或BeagleBoard,并简要介绍底层微控制器,如Arduino。
本书希望读者了解与C 这门编程语言相关的基础知识,但并不需要具备丰富的C 知识或嵌入式系统经验。

本书内容
第1章定义了嵌入式系统的具体含义、嵌入式系统与其他系统之间的区别、所需的特定编程技术,以及为何大多数时候C 语言是嵌入式开发的首选方案。另外,本章还将介绍嵌入式开发人员在日常工作中所面临的约束和挑战,即有限的系统资源和CPU性能、处理硬件错误和远程调试。
第2章解释了嵌入式系统开发环境与Web或桌面应用程序开发的区别,并介绍了构建和目标系统、交叉编译和交叉工具箱、串行控制台和远程Shell等概念。对于运行Windows、macOS或Linux的大多数常见桌面配置,本章还提供了设置虚拟化构建和目标主机的实际操作步骤。
第3章解释了C 代码中目标系统的CPU架构和内存配置之间的差别。
第4章介绍了中断和中断服务例程的底层概念。在现代操作系统中,开发人员或启动程序需要使用操作系统提供的高层API,因而需要通过8051微控制器考查中断技术。
第5章讨论基于Linux的嵌入式系统的调试技术,如在目标板(target board)上直接运行gdb、针对远程调试机制的gdb服务器,以及针对调试和故障根源分析的日志机制的重要性。
第6章提供与内存分配相关的多个示例和最佳实践方案,这对于嵌入式系统的开发人员来说十分有用。其间讨论了为何需要在嵌入式应用程序中避免使用动态内存分配,以及快速、专用内存分配的相关替代方案。
第7章将讨论如何使用C 标准库中的函数和类实现高效的多线程应用程序,同时发挥现代多核CPU的最大功效。
第8章将讨论进程和系统通信间的一些概念、挑战性问题和最佳实践方案,如Socket、管道、共享内存和基于FlatBuffers库的高效内存序列化机制。另外,本章还讨论如何将应用程序解耦为独立的组件,且这些组件使用定义良好的异步协议相互通信,这实际上是扩展软件系统同时保持其快速和容错的标准方法。
第9章将介绍如何在C 程序中与各种外围设备协同工作。虽然大多数设备通信API并不依赖于特定的编程语言,但我们仍将通过C 语言的强大功能编写封装器(这对于开发人员来说十分方便),并防止出现创建的资源泄露错误。
第10章将探讨编写高效节能的应用程序,以及利用操作系统电源管理功能的最佳实践方案。本章针对基于Linux的嵌入式系统提供了多个示例,在此基础上,相同的概念也可扩展至其他操作系统和平台。
第11章介绍与时间管理相关的各种话题,如测算时间间隔、增加延时。此外,我们还将学习C Chrono标准库提供的API,并以此构建可移植的应用程序。
第12章将讨论C 嵌入式应用程序中错误机制的可能实现和最佳实践方案,同时还将解释如何高效地使用C 异常机制,并将该机制与其他替代方案进行比较,如传统的错误代码和复杂的返回机制。其间将涉及一些基本的容错机制,如看门狗计时器和心跳信号。
第13章讨论实时系统规范,主要介绍实时系统的定义方式,以及实时系统所包含的类型。本章通过实际案例探讨了如何使应用程序的行为更具确定性,这也是实时系统的关键需求。
第14章考查什么是安全关键系统,以及安全系统与其他嵌入式系统之间的不同之处。本章涵盖了开发关键安全系统时所需的开发方法和工具,如编码指南(包括MISRA、AUTOSAR或JSF)、静态代码分析、软件验证工具。
第15章简要介绍微处理器C 代码的编写、编译和调试等概念。同时使用Arduino电路板作为示例,并讨论如何设置开发环境。
嵌入式系统开发意味着应用程序将与某些专用硬件进行交互,如特定的SoC平台、特定的微控制器或特定的外围设备。因此,存在多种可能的硬件配置,以及与这些硬件设置协同工作的专用操作系统或IDE。
本书旨在指导读者学习如何实现嵌入式系统编程,但不会过多地涉及硬件内容。因此,大多数示例工作于虚拟Linux环境或模拟器中,某些示例可能需要使用真实的硬件设备。这些示例将运行于Raspberry Pi或Arduino这些广泛使用且价格低廉的平台上,具体内容如表1所示。
表1
本书涉及的软件/硬件 操 作 系 统
Docker(https://www.docker.com/products/docker-desktop) ? 64位Microsoft Windows 10专业版或企业版
? macOS 10.13或更新的版本
? Ubuntu Linux 16.04或更新的版本
? Debian Linux Stretch(9)或Buster(10)
? Fedora Linux 30或更新的版本
QEMU(https://www.qemu.org/download/) ? Windows 8或更新的版本(32位或64位)
? macOS 10.7或更新的版本
? Linux(各个版本)
Raspberry Pi 3 Model B
Arduino UNO R3或ELEGOO UNO R3
如果读者正在阅读本书的电子版,建议输入代码或通过GitHub存储库查看代码,这有助于防止代码复制、粘贴过程中出现的潜在错误。
下载示例代码文件
读者可访问www.packt.com并通过个人账户下载本书的示例代码文件。无论读者在何处购买了本书,均可访问www.packt.com/support,经注册后我们会直接将相关文件通过电子邮件的方式发送给您。
下载代码文件的具体操作步骤如下。
(1)访问www.packt.com并注册。
(2)选择Support选项卡。
(3)单击Code Downloads。
(4)在Search搜索框中输入书名。
当文件下载完毕后,可利用下列软件的最新版本解压或析取文件夹中的内容。
? WinRAR/7-Zip(Windows环境)。
? Zipeg/iZip/UnRarX(Mac环境)。
? 7-Zip/PeaZip(Linux环境)。
另外,本书的代码包也托管于GitHub上,对应网址为https://github.com/PacktPublishing/ Embedded-Programming-with-Modern-CPP-Cookbook。若代码被更新,现有的GitHub库也会保持同步更新。
读者还可访问https://github.com/PacktPublishing/并从对应分类中查看其他代码包和视频内容。
下载彩色图像
我们还进一步提供了本书中截图/图表的彩色图像,读者可访问https://static.packt-cdn. com/downloads/9781838821043_ColorImages.pdf进行查看。
图标表示警告或重要的注意事项。
图标表示提示信息和操作技巧。

读者反馈和客户支持
欢迎读者对本书提出建议或意见并予以反馈。
对此,读者可向customercare@packtpub.com发送邮件,并以书名作为邮件标题。
勘误表
尽管我们希望将本书做到尽善尽美,但疏漏依然在所难免。如果读者发现谬误,无论是文字错误或是代码错误,还望不吝赐教。对此,读者可访问http://www.packtpub.com/ submit-errata,选取对应书籍,输入并提交相关问题的详细内容。
版权须知
一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知我们网络地址或网站名称,我们将对此予以处理。关于盗版问题,读者可发送邮件至copyright@packtpub.com。
若读者针对某项技术具有专家级的见解,抑或计划撰写书籍或完善某部著作的出版工作,可访问authors.packtpub.com。
问题解答
若读者对本书有任何疑问,可发送邮件至questions@packtpub.com,我们将竭诚为您服务。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.