超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

不再提示
关闭
图书盲袋,以书为“药”
欢迎光临中图网 请 | 注册
> >>
深入CLR(第4版 中文限量版)

深入CLR(第4版 中文限量版)

出版社:清华大学出版社出版时间:2024-07-01
开本: 32开 页数: 1760
中 图 价:¥140.6(7.1折) 定价  ¥198.0 登录后可看到会员价
加入购物车 收藏
运费6元,满39元免运费
?新疆、西藏除外
本类五星书更多>

深入CLR(第4版 中文限量版) 版权信息

深入CLR(第4版 中文限量版) 本书特色

作者Jeffrey Richter,全球知名的.NET和Windows大师,经典畅销书《Windows核心编程》和《CLR》系列的作者,其著作曾因其专业性和影响力荣获中国书刊业发行协会“全行业畅销书品种”称号。 专业力作全新全面升级
名著名译再现经典魅力
基于.NET Framework 4.5和VC# 2012,适用于2022版
重点探讨Framework Class Library(FCL)的核心类型
深度剖析垃圾回收、异常、泛型和线程处理等核心概念 享有全球盛誉的编程专家Jeffrey Richter,微软.NET团队长达十几年的知名技术顾问,在本书中以简洁流畅的语言将其数十年的经验和心得娓娓道来,独到而深刻的见解,深思熟虑之后形成的洞见,这些都让人醍醐灌顶,为日后构建健壮、可靠和响应快的应用程序与组件奠定良好的基础。

深入CLR(第4版 中文限量版) 内容简介

本书针对CLR和.NET Framework 4.5(及更高版本)进行深入、全面的探讨,并结合实例介绍了如何利用它们进行设计、开发和调试。全书分5部分共30章。第Ⅰ部分介绍CLR基础,第Ⅱ部分解释如何设计类型,第Ⅲ部分介绍基本类型,第Ⅳ部分以核心机制为主题展开介绍,第Ⅴ部分重点介绍线程处理。
通过本书的阅读,读者可以掌握CLR和.NET Framework的精髓,轻松、高效地创建高性能应用程序。

深入CLR(第4版 中文限量版) 目录

第I部分 CLR基础
第1章 CLR的执行模型
第2章 生成、打包、部署和管理应用程序及类型
第3章 共享程序集和强命名程序集
第Ⅱ部分 设计类型
第4章 类型基础
第5章 基元类型、引用类型和值类型
第6章 类型和成员基础
第7章 常量和字段
第8章 方法
第9章 参数
第10章 属性
第11章 事件
第12章 泛型
第13章 接口
第Ⅲ部分 基本类型
第14章 字符、字符串和文本处理
第15章 枚举类型和位标志
第16章 数组
第17章 委托
第18章 定制特性
第19章 可空值类型
第Ⅳ部分 核心机制
第20章 异常和状态管理
第21章 托管堆和垃圾回收
第22章 CLR寄宿和AppDomain
第23章 程序集加载和反射
第24章 运行时序列化
第25章 与WinRT组件互操作
第Ⅴ部分 线程处理
第26章 线程基础
第27章 计算限制的异步操作
第28章 I/O限制的异步操作
第29章 基元线程同步构造
第30章 混合线程同步构造
术语表
详细目录 第I部分 CLR基础
第1章 CLR的执行模型 003
1.1 将源代码编译成托管模块 003
1.2 将托管模块合并成程序集 007
1.3 加载公共语言运行时(CLR) 008
1.4 执行程序集的代码 011
1.4.1 IL和验证 017
1.4.2 不安全的代码 018
1.5 本机代码生成器NGen.exe 020
1.6 Framework类库简介 022
1.7 通用类型系统 025
1.8 公共语言规范 027
1.9 与非托管代码的互操作性 031
第2章 生成、打包、部署和管理应用程序及类型 033
2.1 .NET Framework部署目标 034
2.2 将类型生成到模块中 035
2.3 元数据概述 038
2.4 将模块合并成程序集 045
2.4.1 使用Visual Studio IDE将程序集添加到项目中 052
2.4.2 使用程序集链接器 053
2.4.3 为程序集添加资源文件 054
2.5 程序集版本资源信息 055
2.6 语言文化 060
2.7 简单应用程序部署(私有部署的程序集) 061
2.8 简单管理控制(配置) 063
第3章 共享程序集和强命名程序集 067
3.1 两种程序集,两种部署 068
3.2 为程序集分配强名称 069
3.3 全局程序集缓存 074
3.4 在生成的程序集中引用强命名程序集 076
3.5 强命名程序集能防篡改 077
3.6 延迟签名 078
3.7 私有部署强命名程序集 081
3.8 “运行时”如何解析类型引用 082
3.9 高级管理控制(配置) 085
第Ⅱ部分 设计类型
第4章 类型基础 093
4.1 所有类型都从System.Object派生 093
4.2 类型转换 095
4.3 命名空间和程序集 100
4.4 在运行时的相互关系 104
第5章 基元类型、引用类型和值类型 113
5.1 编程语言的基元类型 113
5.2 引用类型和值类型 121
5.3 值类型的装箱和拆箱 127
5.3.1 使用接口更改已装箱值类型中的字段(以及为何不该这样做) 139
5.3.2 对象相等性和同一性 142
5.4 对象哈希码 145
5.5 dynamic基元类型 147
第6章 类型和成员基础 155
6.1 类型的各种成员 155
6.2 类型的可见性 158
6.3 成员的可访问性 160
6.4 静态类 162
6.5 分部类、结构和接口 163
6.6 组件、多态和版本控制 164
6.6.1 CLR如何调用虚方法、属性和事件 167
6.6.2 合理使用类型的可见性和成员的可访问性 171
6.6.3 对类型进行版本控制时的虚方法的处理 173
第7章 常量和字段 179
7.1 常量 179
7.2 字段 181
第8章 方法 185
8.1 实例构造器和类(引用类型) 185
8.2 实例构造器和结构(值类型) 189
8.3 类型构造器 192
8.4 操作符重载方法 196
8.5 转换操作符方法 200
8.6 扩展方法 204
8.6.1 规则和指导原则 206
8.6.2 用扩展方法扩展各种类型 207
8.6.3 ExtensionAttribute类 209
8.7 分部方法 210
第9章 参数 215
9.1 可选参数和命名参数 215
9.1.1 规则和指导原则 217
9.1.2 DefaultParameterValue特性和Optional特性 218
9.2 隐式类型的局部变量 219
9.3 以传引用的方式向方法传递参数 221
9.4 向方法传递可变数量的参数 227
9.5 参数和返回类型的设计规范 229
9.6 常量性 231
第10章 属性 233
10.1 无参属性 233
10.1.1 自动实现的属性 237
10.1.2 合理定义属性 238
10.1.3 对象和集合初始化器 241
10.1.4 匿名类型 243
10.1.5 System.Tuple类型 246
10.2 有参属性 248
10.3 调用属性访问器方法时的性能 253
10.4 属性访问器的可访问性 254
10.5 泛型属性访问器方法 254
第11章 事件 255
11.1 设计要公开事件的类型 257
11.1.1 **步:定义类型来容纳所有需要发送给事件通知接收者的附加信息 257
11.1.2 第二步:定义事件成员 258
11.1.3 第三步:定义负责引发事件的方法来通知事件的登记对象 259
11.1.4 第四步:定义方法将输入转化为期望事件 262
11.2 编译器如何实现事件 262
11.3 设计侦听事件的类型 264
11.4 显式实现事件 266
第12章 泛型 271
12.1 FCL中的泛型 276
12.2 泛型基础结构 277
12.2.1 开放类型和封闭类型 278
12.2.2 泛型类型和继承 280
12.2.3 泛型类型同一性 282
12.2.4 代码爆炸 283
12.3 泛型接口 284
12.4 泛型委托 285
12.5 委托和接口的逆变和协变泛型类型实参 286
12.6 泛型方法 288
12.7 泛型和其他成员 291
12.8 可验证性和约束 291
12.8.1 主要约束 294
12.8.2 次要约束 295
12.8.3 构造器约束 296
12.8.4 其他可验证性问题 297
第13章 接口 301
13.1 类和接口继承 302
13.2 定义接口 302
13.3 继承接口 304
13.4 关于调用接口方法的更多探讨 306
13.5 隐式和显式接口方法实现(幕后机制) 308
13.6 泛型接口 309
13.7 泛型和接口约束 312
13.8 实现多个具有相同方法名和签名的接口 313
13.9 用显式接口方法实现来增强编译时类型安全性 314
13.10 谨慎使用显式接口方法实现 316
13.11 设计:基类还是接口 319
第Ⅲ部分 基本类型
第14章 字符、字符串和文本处理 323
14.1 字符 323
14.2 System.String类型 327
14.2.1 构造字符串 327
14.2.2 字符串是不可变的 329
14.2.3 比较字符串 330
14.2.4 字符串留用 337
14.2.5 字符串池 340
14.2.6 检查字符串中的字符和文本元素 340
14.2.7 其他字符串操作 342
14.3 高效率构造字符串 343
14.3.1 构造StringBuilder对象 343
14.3.2 StringBuilder的成员 344
14.4 获取对象的字符串表示:ToString 347
14.4.1 指定具体的格式和语言文化 347
14.4.2 将多个对象格式化成一个字符串 352
14.4.3 提供定制格式化器 353
14.5 解析字符串来获取对象:Parse 356
14.6 编码:字符和字节的相互转换 358
14.6.1 字符和字节流的编码和解码 364
14.6.2 Base-64字符串编码和解码 365
14.7 安全字符串 366
第15章 枚举类型和位标志 371
15.1 枚举类型 371
15.2 位标志 378
15.3 向枚举类型添加方法 381
第16章 数组 383
16.1 初始化数组元素 386
16.2 数组转型 388
16.3 所有数组都隐式派生自System.Array 391
16.4 所有数组都隐式实现IEnumerable、ICollection和IList 391
16.5 数组的传递和返回 392
16.6 创建下限非零的数组 393
16.7 数组的内部工作原理 395
16.8 不安全的数组访问和固定大小的数组 399
第17章 委托 403
17.1 初识委托 403
17.2 用委托回调静态方法 406
17.3 用委托回调实例方法 408
17.4 委托揭秘 408
17.5 用委托回调多个方法(委托链) 412
17.5.1 C#语言对委托链的支持 417
17.5.2 取得对委托链调用的更多控制 417
17.6 委托定义不要太多(泛型委托) 420
17.7 C#为委托提供的简化语法 421
17.7.1 简化语法1:不需要构造委托对象 422
17.7.2 简化语法2:不需要定义回调方法(lambda表达式) 422
17.7.3 简化语法3:局部变量不需要手动包装到类中即可传给回调方法 426
17.8 委托和反射 429
第18章 定制特性 433
18.1 使用定制特性 434
18.2 定义自己的特性类 437
18.3 特性构造器和字段/属性数据类型 441
18.4 检测定制特性 442
18.5 两个特性实例的相互匹配 447
18.6 检测定制特性时不创建从Attribute派生的对象 450
18.7 条件特性类 453
第19章 可空值类型 455
19.1 C#语言对可空值类型的支持 457
19.2 C#语言的空接合操作符 460
19.3 CLR对可空值类型的特殊支持 461
19.3.1 可空值类型的装箱 462
19.3.2 可空值类型的拆箱 462
19.3.3 通过可空值类型调用GetType 463
19.3.4 通过可空值类型调用接口方法 463
第Ⅳ部分 核心机制
第20章 异常和状态管理 467
20.1 定义“异常” 468
20.2 异常处理机制 469
20.2.1 try块 470
20.2.2 catch块 471
20.2.3 finally块 473
20.3 System.Exception类 476
20.4 FCL定义的异常类 480
20.5 抛出异常 484
20.6 定义自己的异常类 485
20.7 牺牲可靠性来换取开发效率 488
20.8 设计规范和*佳实践 497
20.8.1 善用finally块 497
20.8.2 不要什么都捕捉 499
20.8.3 得体地从异常中恢复 500
20.8.4 发生不可恢复的异常时回滚部分完成的操作——维持状态 501
20.8.5 隐藏实现细节来维系协定 502
20.9 未处理的异常 505
20.10 对异常进行调试 509
20.11 异常处理的性能问题 511
20.12 约束执行区域(CER) 514
20.13 代码协定 517
第21章 托管堆和垃圾回收 525
21.1 托管堆基础 525
21.1.1 从托管堆分配资源 526
21.1.2 垃圾回收算法 527
21.1.3 垃圾回收和调试 530
21.2 代:提升性能 533
21.2.1 垃圾回收触发条件 538
21.2.2 大对象 539
21.2.3 垃圾回收模式 539
21.2.4 强制垃圾回收 542
21.2.5 监视应用程序的内存使用 544
21.3 使用需要特殊清理的类型 545
21.3.1 使用包装了本机资源的类型 552
21.3.2 一个有趣的依赖性问题 557
21.3.3 GC为本机资源提供的其他功能 558
21.3.4 终结的内部工作原理 563
21.3.5 手动监视和控制对象的生存期 565
第22章 CLR寄宿和AppDomain 573
22.1 CLR寄宿 574
22.2 AppDomain 576
22.3 卸载AppDomain 590
22.4 监视AppDomain 592
22.5 AppDomain FirstChance异常通知 594
22.6 宿主如何使用AppDomain 594
22.6.1 可执行应用程序 594
22.6.2 Silverlight富Internet应用程序 595
22.6.3 ASP.NET和XML Web服务应用程序 595
22.6.4 SQL Server 596
22.6.5 更多的用法只局限于想象力 596
22.7 高级宿主控制 597
22.7.1 使用托管代码管理CLR 597
22.7.2 写健壮的宿主应用程序 598
22.7.3 宿主如何拿回它的线程 599
第23章 程序集加载和反射 603
23.1 程序集加载 604
23.2 使用反射构建动态可扩展应用程序 609
23.3 反射的性能 610
23.3.1 发现程序集中定义的类型 610
23.3.2 类型对象的准确含义 611
23.3.3 构建Exception派生类型的层次结构 613
23.3.4 构造类型的实例 615
23.4 设计支持加载项的应用程序 618
23.5 使用反射发现类型的成员 620
23.5.1 发现类型的成员 621
23.5.2 调用类型的成员 625
23.5.3 使用绑定句柄减少进程的内存消耗 631
第24章 运行时序列化 635
24.1 序列化/反序列化快速入门 637
24.2 使类型可序列化 641
24.3 控制序列化和反序列化 643
24.4 格式化器如何序列化类型实例 647
24.5 控制序列化/反序列化的数据 648
24.6 流上下文 655
24.7 类型序列化为不同类型,对象反序列化为不同对象 657
24.8 序列化代理 660
24.9 反序列化对象时重写程序集/类型 665
第25章 与WinRT组件互操作 667
25.1 CLR投射与WinRT组件类型系统规则 669
25.2 框架投射 673
25.2.1 从.NET代码中调用异步WinRT API 674
25.2.2 WinRT流和.NET流之间的互操作 678
25.2.3 在CLR和WinRT之间传输数据块 680
25.3 用C#语言定义WinRT组件 683
第Ⅴ部分 线程处理
第26章 线程基础 693
26.1 Windows为什么要支持线程 694
26.2 线程开销 695
26.3 停止疯狂 698
26.4 CPU发展趋势 701
26.5 CLR线程和Windows线程 702
26.6 使用专用线程执行异步的计算限制操作 703
26.7 使用线程的理由 705
26.8 线程调度和优先级 707
26.9 前台线程和后台线程 712
26.10 深入学习 714
第27章 计算限制的异步操作 715
27.1 CLR线程池基础 716
27.2 执行简单的计算限制操作 717
27.3 执行上下文 718
27.4 协作式取消和超时 720
27.5 任务 725
27.5.1 等待任务完成并获取结果 726
27.5.2 取消任务 728
27.5.3 任务完成时自动启动新任务 730
27.5.4 任务可以启动子任务 732
27.5.5 任务内部揭秘 733
27.5.6 任务工厂 735
27.5.7 任务调度器 737
27.6 Parallel的静态方法For、ForEach和Invoke 739
27.7 并行语言集成查询(PLINQ) 743
27.8 执行定时计算限制操作 746
27.9 线程池如何管理线程 750
27.9.1 设置线程池限制 750
27.9.2 如何管理工作者线程 751
第28章 I/O限制的异步操作 753
28.1 Windows如何执行I/O操作 754
28.2 C#的异步函数 758
28.3 编译器如何将异步函数转换成状态机 760
28.4 异步函数扩展性 764
28.5 异步函数和事件处理程序 768
28.6 FCL的异步函数 768
28.7 异步函数和异常处理 770
28.8 异步函数的其他功能 771
28.9 应用程序及其线程处理模型 774
28.10 以异步方式实现服务器 777
28.11 取消I/O操作 777
28.12 有的I/O操作必须同步进行 779
28.13 I/O请求优先级 780
第29章 基元线程同步构造 783
29.1 类库和线程安全 785
29.2 基元用户模式和内核模式构造 786
29.3 用户模式构造 788
29.3.1 易变构造 789
29.3.2 互锁构造 794
29.3.3 实现简单的自旋锁 799
29.3.4 Interlocked Anything模式 803
29.4 内核模式构造 805
29.4.1 Event构造 809
29.4.2 Semaphore构造 811
29.4.3 Mutex构造 812
第30章 混合线程同步构造 815
30.1 一个简单的混合锁 816
30.2 自旋、线程所有权和递归 817
30.3 FCL中的混合构造 820
30.3.1 ManualResetEventSlim类和SemaphoreSlim类 820
30.3.2 Monitor类和同步块 821
30.3.3 ReaderWriterLockSlim类 826
30.3.4 OneManyLock类 829
30.3.5 CountdownEvent类 831
30.3.6 Barrier类 831
30.3.7 线程同步构造小结 832
30.4 著名的双检锁技术 834
30.5 条件变量模式 839
30.6 异步的同步构造 841
30.7 并发集合类 846
术语表 851
展开全部

深入CLR(第4版 中文限量版) 作者简介

杰弗瑞·李希特(Jeffrey Richter)
Wintellect联合创始人。目前为微软的软件架构师合伙人,他是公认的Windows和.NET大师,数十年来影响了数十万优秀的程序员,他是多部经典著作的缔造者。他崇尚大道至简,注重效率与实用性,尤其热爱化繁为简,去芜存菁。值得一提的是,他特别擅长授人以渔,能够以通俗易懂、条理清晰的方式将普通读者望而却步的关键概念讲得透彻,讲得精彩。
他出版过很多本Windows/.NET畅销书,担任过MSDN的特约编辑、Win32、.NET两个答疑专栏以及Concurrent Affairs(关于并发那些事儿)专栏的作者。他还在很多全球性商业研讨会上发表演讲。作为最懂Windows和.NET的人,他从1990年开始以顾问身份为微软提供服务,他写的代码先后被微软的很多产品采用。此外,他还为AT T、IBM、英特尔、梦工厂、通用和惠普等提供过咨询服务。
他爱好广泛,拥有飞机驾照和直升机驾照,还是国际魔法师协会成员。他爱好音乐(尤其是20世纪70年代的爵士乐和前卫摇滚乐)、击鼓、火车模型和空手道。他还喜欢旅游和戏剧。他与家人居住在华盛顿州的柯克兰。杰弗瑞·李希特(Jeffrey Richter)
Wintellect联合创始人。目前为微软的软件架构师合伙人,他是公认的Windows和.NET大师,数十年来影响了数十万优秀的程序员,他是多部经典著作的缔造者。他崇尚大道至简,注重效率与实用性,尤其热爱化繁为简,去芜存菁。值得一提的是,他特别擅长授人以渔,能够以通俗易懂、条理清晰的方式将普通读者望而却步的关键概念讲得透彻,讲得精彩。
他出版过很多本Windows/.NET畅销书,担任过MSDN的特约编辑、Win32、.NET两个答疑专栏以及Concurrent Affairs(关于并发那些事儿)专栏的作者。他还在很多全球性商业研讨会上发表演讲。作为最懂Windows和.NET的人,他从1990年开始以顾问身份为微软提供服务,他写的代码先后被微软的很多产品采用。此外,他还为AT&T、IBM、英特尔、梦工厂、通用和惠普等提供过咨询服务。
他爱好广泛,拥有飞机驾照和直升机驾照,还是国际魔法师协会成员。他爱好音乐(尤其是20世纪70年代的爵士乐和前卫摇滚乐)、击鼓、火车模型和空手道。他还喜欢旅游和戏剧。他与家人居住在华盛顿州的柯克兰。 周靖
微软MVP(最有价值专家),技术型知名译者。涉猎广泛,具有深厚的技术功底和良好的文学素养。早期痴迷于硬件,曾多年担任《微型计算机》杂志特约作者。继而潜心钻研程序设计并积累了丰富的编程经验。翻译风格严谨、准确、朴实、流畅,深受读者好评。代表译著有《C 入门经典》(第10版)、《Windows核心编程》(第5版中文限量版)、《深入CLR》(第4版 中文限量版)、《Visual C#从入门到精通》(第10版)、《学习Python》(第6版)以及《学习C 20》(中文版)等。
近两年,对机器学习有浓厚的兴趣,翻译出版《机器学习与人工智能实战:基于业务场景的工程应用》之后,开始研究、训练和应用大语言模型。

商品评论(0条)
暂无评论……
书友推荐
本类畅销
编辑推荐
返回顶部
中图网
在线客服