作者 |
施懿民 约瑟夫·阿坝哈瑞 埃里克·约翰森 |
丛书名 |
华章程序员书库 |
出版社 |
机械工业出版社 |
ISBN |
9782107161757 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8082392 - C#编程魔法书--------------------------- 全书分为三部分。 1.基础语法部分介绍C#编程特性,将语法与实际编程框架穿插起来讲解,而不是一开始将所有的语法特性解释完毕再来解释实际应用。 2.结合编程框架部分介绍C#使用.NET编程框架,结合基础常见的功能进行讲解。 3.实际编程案例部分通过开发一个分布式爬虫系统来将本书讲解的所有语法合并到成一个实际的项目案例,让读者有一个切身的体会。 通过阅读本书,读者可以掌握C#编程技巧,胜任大部分一般性的服务器端开发工作。 ---------------------------8081278 - C# 8.0核心技术指南--------------------------- 本书全方位地介绍了 C# 的语言特性。在内容上,它兼顾了各种类型的读者。对于初学者,本书不论是介绍基本的语法,还是介绍高级的语言特性,都采用了讲解和示例结合的方法。而对于经验丰富的读者,本书的每一章都详尽而系统,是绝佳的案头参考书。 本书在前一版的基础上进行了大量的修订工作。不但将既有的内容和范例全部迁移到 .NET Core 之上,对 C# 8.0 与 .NET Core 3.x 提供的新特性进行了详细的介绍,还在部分示例中专门对编写跨平台运行的程序的技巧或陷阱进行了说明。可以说,本书从内容上涵盖了目前 C# 与 .NET Core 全新正式发行版的内容。 |
目录 |
[套装书具体书目] 8081278 - C# 8.0核心技术指南 - 9787111682561 - 机械工业出版社 - 定价 279 8082392 - C#编程魔法书 - 9787111685784 - 机械工业出版社 - 定价 99 ---------------------------8082392 - C#编程魔法书--------------------------- 前言 第1章 快速认识C# /1 1.1 创建helloworld 2 1.1.1 使用文本编辑器和命令行编译器创建 2 1.1.2 使用Visual Studio Community创建 5 1.1.3 helloworld源码解读 7 1.1.4 C#脚本语言 8 1.2 C#语言特性 9 1.3 C#与.NET框架 10 1.4 多操作系统支持 12 1.4.1 在Ubuntu 14.04上安装和使用.NET Core 13 1.4.2 跨平台运行.NET Core程序 14 1.4.3 在Ubuntu 14.04上安装和使用Mono 15 1.5 本章小结 17 第2章 C#编程基础 /18 2.1 字符串操作 18 2.1.1 格式化字符串输出 19 2.1.2 $符号:字符串内插 21 2.1.3 字符串比较 22 2.1.4 修改字符串 24 2.1.5 字符编码 25 2.2 正则表达式 31 2.2.1 构造分组 33 2.2.2 反向引用 37 2.2.3 替换 38 2.3 访问文件 40 2.3.1 文件和文件夹基本操作 40 2.3.2 流处理 42 2.3.3 管道 45 2.3.4 内存映射文件 48 2.4 编码国际化 54 2.5 时间和日期 60 2.6 本章小结 63 第3章 C#面向对象编程 /64 3.1 面向对象 64 3.1.1 RESTful编程 65 3.1.2 WebSocket编程 72 3.1.3 面向对象封装 76 3.1.4 使用接口 79 3.1.5 使用继承 81 3.2 读写日志 86 3.2.1 使用Debug和Trace记录日志 86 3.2.2 使用第三方日志库记录日志 92 3.2.3 使用Microsoft.Extension.Logging记录日志 96 3.2.4 记录日志的推荐方法 99 3.3 依赖注入 100 3.4 配置文件 108 3.4.1 .NET框架配置文件 108 3.4.2 .NET Core配置文件 111 3.5 程序案例 117 3.6 本章小结 119 第4章 反射与动态编程 /120 4.1 反射 120 4.1.1 获取类型信息 121 4.1.2 动态加载 125 4.1.3 序列化 128 4.1.4 使用特性 132 4.1.5 版本控制 140 4.2 代码生成和动态执行 146 4.2.1 CodeDOM生成源码 147 4.2.2 Reflection.Emit 152 4.2.3 IL语言 157 4.2.4 多模块组装件 161 4.3 dynamic关键字 163 4.4 动态语言运行时 166 4.4.1 IronPython 166 4.4.2 DLR 170 4.5 本章小结 172 第5章 数据处理编程 /173 5.1 ADO.NET 175 5.1.1 使用ODBC连接数据源 178 5.1.2 在线读写数据 181 5.2 Lambda和LINQ 187 5.2.1 匿名方法和Lambda表达式 188 5.2.2 本地方法 191 5.3 LINQ 195 5.3.1 LINQ to Object 195 5.3.2 LINQ to SQL和Entity Framework Core 198 5.3.3 LINQ部分源码解读 201 5.3.4 可空引用类型 205 5.4 Entity Framework 208 5.4.1 使用EF Code First构建和映射数据库 208 5.4.2 使用EF迁移数据库 212 5.4.3 EF对关系的映射 216 5.4.4 EF的性能考量 220 5.5 本章小结 224 第6章 多线程编程 /225 6.1 多线程编程基础 225 6.1.1 创建和使用多线程 226 6.1.2 使用线程池 227 6.2 多线程同步 229 6.2.1 阻塞式等待 229 6.2.2 锁 231 6.2.3 信号 242 6.2.4 屏障 246 6.3 主动取消等待 249 6.3.1 在线程中主动响应取消请求 250 6.3.2 统一的取消任务等待操作 251 6.4 其他多线程元素 254 6.4.1 Lazy 254 6.4.2 线程本地存储 256 6.4.3 定时器 259 6.5 无锁编程 260 6.5.1 内存屏障和volatile关键字 260 6.5.2 使用无锁编程 261 6.6 本章小结 263 第7章 并行编程 /264 7.1 并行编程基础 264 7.1.1 使用Task类型实现并行 264 7.1.2 使用Parallel.For实现并行 268 7.2 硬件特性 270 7.2.1 内存访问顺序 271 7.2.2 伪共享 272 7.3 基于数据并行 275 7.3.1 Parallel.For和Parallel.ForEach 275 7.3.2 跳出循环 278 7.4 基于任务的并行 280 7.4.1 网络异步编程的适用场景 280 7.4.2 使用连续任务 281 7.4.3 Thread.Sleep和Task.Delay的区别 284 7.5 async和await关键字 286 7.5.1 使用async和await异步编程 286 7.5.2 使用状态机实现async方法 288 7.5.3 async方法实现机制 292 7.5.4 扩展async方法 296 7.5.5 async方法执行上下文 296 7.6 函数式编程 298 7.6.1 函数式编程简介 298 7.6.2 高阶方法 299 7.6.3 偏函数应用 300 7.6.4 柯里化方法 301 7.6.5 数据封装 302 7.6.6 错误处理 304 7.6.7 模式匹配 305 7.7 本章小结 308 第8章 分布式编程 /309 8.1 C#对分布式编程的支持 309 8.1.1 Web服务技术 310 8.1.2 Remoting技术 311 8.1.3 RESTful API 312 8.1.4 gRPC 313 8.2 分布式系统举例 323 8.2.1 消息队列 324 8.2.2 ZeroMQ 325 8.2.3 系统架构 334 8.2.4 交易所各模块 335 8.2.5 测试交易所系统 340 8.3 本章小结 347 ---------------------------8081278 - C# 8.0核心技术指南--------------------------- 前言 1 第1章 C#和.NET Core简介7 1.1 面向对象7 1.2 类型安全性8 1.3 内存管理8 1.4 平台支持9 1.5 C#和公共语言运行时9 1.6 框架与基础类库10 1.7 遗留框架和小众框架11 1.8 Windows Runtime12 1.9 C#简史14 第2章 C#语言基础26 2.1 第一个C#程序26 2.2 语法29 2.3 类型基础32 2.4 数值类型40 2.5 布尔类型和运算符48 2.6 字符串和字符49 2.7 数组52 2.8 变量和参数57 2.9 表达式和运算符68 2.10 null运算符72 2.11 语句74 2.12 命名空间84 第3章 在C#中创建类型91 3.1 类91 3.2 继承108 3.3 object类型117 3.4 结构体120 3.5 访问权限修饰符123 3.6 接口125 3.7 枚举类型131 3.8 嵌套类型134 3.9 泛型136 第4章 C#的高级特性149 4.1 委托149 4.2 事件158 4.3 Lambda表达式164 4.4 匿名方法169 4.5 try语句和异常169 4.6 枚举类型和迭代器178 4.7 可空值类型183 4.8 可空引用类型(C# 8)188 4.9 扩展方法191 4.10 匿名类型193 4.11 元组194 4.12 模式198 4.13 特性202 4.14 调用者信息特性204 4.15 动态绑定205 4.16 运算符重载213 4.17 不安全的代码和指针216 4.18 预处理指令220 4.19 XML文档222 第5章 框架概述227 5.1 .NET Standard227 5.2 框架与C#语言版本的关系230 5.3 参考程序集231 5.4 CLR和BCL231 5.5 应用程序框架235 第6章 框架基础239 6.1 字符串与文本处理239 6.2 日期和时间252 6.3 日期和时区259 6.4 格式化和解析265 6.5 标准格式字符串与解析标记271 6.6 其他转换机制278 6.7 全球化282 6.8 操作数字283 6.9 枚举287 6.10 Guid结构体290 6.11 相等比较291 6.12 顺序比较301 6.13 实用类304 第7章 集合309 7.1 枚举309 7.2 ICollection和IList接口316 7.3 Array类320 7.4 List、Queue、Stack和Set328 7.5 字典336 7.6 自定义集合与代理342 7.7 不可变集合348 7.8 扩展相等比较和排序操作351 第8章 LINQ查询359 8.1 入门359 8.2 流式语法361 8.3 查询表达式367 8.4 延迟执行372 8.5 子查询378 8.6 构造方式381 8.7 映射方式384 8.8 解释型查询386 8.9 EF Core393 8.10 构建查询表达式404 第9章 LINQ运算符409 9.1 概述410 9.2 筛选413 9.3 映射417 9.4 连接429 9.5 排序437 9.6 分组440 9.7 集合运算符443 9.8 转换方法444 9.9 元素运算符447 9.10 聚合方法449 9.11 量词运算符453 9.12 生成序列的方法455 第10章 LINQ to XML456 10.1 架构概述456 10.2 X-DOM概述457 10.3 实例化X-DOM460 10.4 导航和查询463 10.5 更新X-DOM468 10.6 使用Value471 10.7 文档和声明474 10.8 名称和命名空间477 10.9 注解483 10.10 将数据映射到X-DOM484 第11章 其他XML与JSON技术488 11.1 XmlReader488 11.2 XmlWriter496 11.3 XmlReader/XmlWriter的使用模式498 11.4 处理JSON502 第12章 对象销毁与垃圾回收509 12.1 IDisposable接口、Dispose方法和Close方法509 12.2 自动垃圾回收514 12.3 终结器517 12.4 垃圾回收器的工作方式521 12.5 托管内存泄漏527 12.6 弱引用530 第13章 诊断534 13.1 条件编译534 13.2 Debug和Trace类537 13.3 调试器的集成541 13.4 进程与线程处理542 13.5 StackTrace和StackFrame类542 13.6 Windows事件日志544 13.7 性能计数器546 13.8 Stopwatch类551 13.9 跨平台诊断工具551 第14章 并发与异步556 14.1 概述556 14.2 线程557 14.3 任务572 14.4 异步原则580 14.5 C#的异步函数585 14.6 异步模式603 14.7 旧有的异步编程模式611 第15章 流与I/O614 15.1 流的架构614 15.2 使用流616 15.3 流适配器629 15.4 压缩流637 15.5 操作ZIP文件640 15.6 文件与操作641 15.7 在UWP中进行文件I/O操作652 15.8 操作系统安全性656 15.9 内存映射文件659 第16章 网络663 16.1 .NET网络架构663 16.2 地址与端口665 16.3 URI666 16.4 客户端类668 16.5 使用HTTP681 16.6 编写HTTP服务器685 16.7 使用FTP687 16.8 使用DNS689 16.9 通过SmtpClient类发送邮件690 16.10 使用TCP691 16.11 使用TCP接收POP3邮件694 16.12 在UWP中使用TCP696 第17章 序列化699 17.1 序列化的概念699 17.2 XML 序列化器703 17.3 JSON 序列化器712 17.4 二进制序列化器721 17.5 二进制序列化特性723 17.6 使用ISerializable接口进行二进制序列化725 第18章 程序集729 18.1 程序集的组成部分729 18.2 强名称和程序集签名733 18.3 程序集名称735 18.4 认证代码签名737 18.5 资源和附属程序集739 18.6 程序集的加载、解析与隔离747 第19章 反射和元数据768 19.1 反射和激活类型768 19.2 反射和调用成员775 19.3 反射程序集788 19.4 使用特性789 19.5 动态生成代码794 19.6 生成程序集和类型800 19.7 生成类型成员803 19.8 生成泛型方法和泛型类型809 19.9 复杂的生成目标811 19.10 解析IL814 第20章 动态编程820 20.1 动态语言运行时820 20.2 数值类型统一822 20.3 动态成员重载解析823 20.4 实现动态对象828 20.5 与动态语言进行互操作832 第21章 加密834 21.1 概述834 21.2 Windows数据保护835 21.3 散列算法836 21.4 对称加密837 21.5公钥加密和签名842 第22章 高级线程处理846 22.1 同步概述846 22.2 排他锁847 22.3 锁和线程安全性855 22.4 非排他锁860 22.5 使用事件等待句柄发送信号866 22.6 Barrier类874 22.7 延迟初始化875 22.8 线程本地存储877 22.9 定时器881 第23章 并行编程885 23.1 选择PFX的原因885 23.2 PLINQ888 23.3 Parallel类900 23.4 任务并行907 23.5 处理AggregateException916 23.6 并发集合919 23.7 BlockingCollection类922 第24章 Span和Memory926 24.1 Span和切片927 24.2 Memory类930 24.3 前向枚举器931 24.4 操作栈分配内存和非托管内存933 第25章 原生程序和COM组件互操作性935 25.1 调用原生DLL935 25.2 类型的封送936 25.3 非托管代码中的回调函数940 25.4 模拟C共用体941 25.5 共享内存942 25.6 将结构体映射到非托管内存944 25.7 COM互操作性948 25.8 在C#中调用COM组件950 25.9 内嵌互操作类型953 25.10 在COM中访问C#对象954 第26章 正则表达式956 26.1 正则表达式基础956 26.2 量词符号961 26.3 零宽度断言962 26.4 分组965 26.5 替换并分割文本966 26.6 正则表达式实例968 26.7 正则表达式语言参考971 第27章 Roslyn编译器975 27.1 Roslyn架构975 27.2 语法树976 27.3 编译过程和语义模型991 作者介绍 封面介绍 |