文档章节

关于新书《修炼之道:.NET开发要点精讲》的各种说明

IT周见智
 IT周见智
发布于 2015/06/05 17:17
字数 2928
阅读 29
收藏 0
点赞 0
评论 0

索引

 

1.新书介绍

从2013年年底到2014年9月,历时将近10个月,这本书终于看到了“出版发行”的曙光。书中内容是笔者对自己这些年工作经验的一些总结与整理,书中每段话、每个观点阐述均是经过笔者思考再三才被写进去的,笔者希望能将自己的这些经验传授给技术后辈,希望他们未来在技术的探索道路上,能够少走弯路。有关本书的详细信息请参见本文后面的【新书目录】、【试读章节】以及【原稿试读】。

就我个人而言,其实更倾向于阅读电子书(除了少数经典名著外)。我电脑和手机中存储了不少技术、人文科技之类的电子书籍,我觉得电子书阅读起来更方便、更易携带。但我从小有一个“作家梦”,梦想有一天别人也会阅读我写的“书”,这里的书当然是指纸质书,因为在我小时候根本没有电子书这一说:),正因为这样,我还是选择了将这本书出版成“纸质书”。出版过程涉及到书号费用、印刷费用以及运作费用,这些全部包含在了图书定价中。这样一来,我更加有压力了,书稿我反复审查,希望不要有一丁点的观点阐述错误,因为这样会让读者觉得花几十块钱购买这本书不值,间接让我内心不安,觉得愧疚,毕竟,传播技术知识才是我出版本书的真正缘由。

我确保我已经审查书稿很多遍,但这只能保证书中所述观点与我的一致,并不能保证书中观点就真的是正确的。阅读过程中,若有疑问,请参见本文后面的【反馈方式】给予宝贵的建议!

2.新书封面

 1)设计封面

2)实物照片

3)部分截图

3.新书目录

目 录
第1章 另辟蹊径:解读.NET 1
1.1 前.NET时代 2
1.2 .NET的组成 3
  1.2.1 .NET中的语言 4
  1.2.2 .NET中的框架库 5
  1.2.3 公共类型系统 5
  1.2.4 公共语言规范 5
  1.2.5 公共语言运行时 6
  1.2.6 .NET程序的运行流程 7
1.3 .NET中的程序集 8
  1.3.1 程序集与EXE文件的区别 8
  1.3.2 程序集的组成 9
  1.3.3 程序集的特点 10
1.4 .NET的跨平台 10
  1.4.1 Write Once, Run Anywhere的真实现状 10
  1.4.2 .NET与Java平台出现的目的 11
  1.4.3 重新看待.NET 12
1.5 .NET平台出现的意义 12
1.6 本章回顾 14
1.7 本章思考 14
第2章 高屋建瓴:梳理编程约定 15
2.1 代码中的Client与Server 16
2.2 方法与线程的关系 17
2.3 调用线程与当前线程 19
2.4 阻塞方法与非阻塞方法 20
2.5 UI线程与线程 21
2.6 原子操作 22
2.7 线程安全 22
2.8 调用与回调 26
2.9 托管资源与非托管资源 27
2.10 框架与库 28
2.11 面向(或基于)对象与面向(或基于)组件 29
2.12 接口 30
2.13 协议 32
2.14 本章回顾 36
2.15 本章思考 36
第3章 编程之基础:数据类型 37
3.1 引用类型与值类型 38
  3.1.1 内存分配 39
  3.1.2 字节序 41
  3.1.3 装箱与拆箱 42
3.2 对象相等判断 43
  3.2.1 引用类型判等 43
  3.2.2 简单值类型判等 44
  3.2.3 复合值类型判等 45
3.3 赋值与复制 48
  3.3.1 引用类型赋值 48
  3.3.2 值类型赋值 49
  3.3.3 传参 50
  3.3.4 浅复制 53
  3.3.5 深复制 55
3.4 对象的不可改变性 59
  3.4.1 不可改变性定义 59
  3.4.2 定义不可改变类型 60
3.5 本章回顾 62
3.6 本章思考 62
第4章 物以类聚:对象也有生命 65
4.1 堆和栈 66
4.2 堆中对象的出生与死亡 69
  4.2.1 引用和实例 69
  4.2.2 析构方法 71
  4.2.3 正确使用对象 73
4.3 管理非托管资源 75
  4.3.1 释放非托管资源的最佳时间 75
  4.3.2 继承与组合中的非托管资源 77
4.4 正确使用IDisposable接口 82
  4.4.1 Dispose模式 83
  4.4.2 对象的Dispose()和Close() 87
4.5 本章回顾 88
4.6 本章思考 88
第5章 重中之重:委托与事件 91
5.1 什么是.NET中的委托 92
  5.1.1 委托的结构 92
  5.1.2 委托链表 95
  5.1.3 委托的“不可改变”特性 101
  5.1.4 委托的作用 103
5.2 事件与委托的关系 105
5.3 使用事件编程 107
  5.3.1 注销跟注册事件同样重要 107
  5.3.2 多线程中使用事件 107
  5.3.3 委托链表的分步调用 109
  5.3.4 正确定义一个使用了事件的类 111
5.4 弱委托 116
  5.4.1 强引用与弱引用 116
  5.4.2 弱委托的定义 119
  5.4.3 弱委托的使用场合 121
5.5 本章回顾 121
5.6 本章思考 122
第6章 线程的升级:异步编程模型 123
6.1 异步编程的必要性 124
  6.1.1 同步调用与异步调用 124
  6.1.2 异步调用的优点 125
6.2 委托的异步调用 126
  6.2.1 BeginInvoke与EndInvoke 126
  6.2.2 AsyncCallback 128
  6.2.3 处理异步调用时的异常 131
  6.2.4 异步调用的应用 132
6.3 非委托的异步调用 134
  6.3.1 异步方法 134
  6.3.2 FileStream.BeginRead/FileStream.BeginWrite 136
6.4 异步编程时的注意事项 137
6.5 本章回顾 138
6.6 本章思考 138
第7章 可复用代码:组件的来龙去脉 141
7.1 .NET中的组件 142
  7.1.1 组件的定义 142
  7.1.2 Windows Forms中的组件 142
  7.1.3 Windows Forms中的控件 143
7.2 容器-组件-服务模型 144
  7.2.1 容器的另类定义 144
  7.2.2 容器与组件的合作 145
  7.2.3 窗体设计器 150
7.3 设计时与运行时 154
  7.3.1 组件的设计时与运行时 154
  7.3.2 区分组件的当前状态 155
  7.3.3 组件状态的应用 157
7.4 控件 157
  7.4.1 控件基类 157
  7.4.2 用户自定义控件 158
7.5 本章回顾 160
7.6 本章思考 160
第8章 经典重视:桌面GUI框架揭秘 163
8.1 了解传统Win32应用程序的必要性 164
8.2 Win32应用程序的结构 165
  8.2.1 运行平台决定程序结构 165
  8.2.2 Windows消息循环 167
  8.2.3 窗口过程 169
  8.2.4 创建基于Win32的单窗体应用程序 171
  8.2.5 创建基于Win32的多窗体应用程序 178
8.3 .NET Winform程序与传统Win32程序的关联 184
8.4 Windows Forms框架 184
8.5 Winform程序的结构 187
  8.5.1 UI线程 188
  8.5.2 消息循环 189
  8.5.3 创建窗体 195
  8.5.4 窗口过程 197
8.6 模式窗体与非模式窗体 200
8.7 本章回顾 205
8.8 本章思考 205
第9章 沟通无碍:网络编程 207
9.1 两种Socket通信方式 208
  9.1.1 IP与端口 208
  9.1.2 基于连接的TCP通信 209
  9.1.3 基于无连接的UDP通信 211
  9.1.4 应用层协议 212
  9.1.5 .NET中Socket编程的相关类型 215
9.2 TCP通信的实现 217
  9.2.1 定义TCP通信应用层协议 218
  9.2.2 编写TCP通信服务端 219
  9.2.3 编写TCP通信客户端 225
9.3 UDP通信的实现 227
  9.3.1 定义UDP通信应用层协议 228
  9.3.2 编写UDP通信客户端 229
9.4 异步编程在网络编程中的应用 235
  9.4.1 异步发送数据 237
  9.4.2 异步实现“泵”结构 238
9.5 本章回顾 241
9.6 本章思考 241
第10章 动力之源:代码中的“泵” 243
10.1 “泵”的概念 244
  10.1.1 现实生活中的“泵” 244
  10.1.2 代码中的“泵” 245
  10.1.3 代码中“泵”的作用 247
10.2 常见的“泵”结构 249
  10.2.1 桌面GUI框架中的“泵” 249
  10.2.2 Socket通信中的“泵” 250
  10.2.3 Web服务器中的“泵” 251
10.3 “泵”对框架的意义 258
  10.3.1 重新回到框架定义 258
  10.3.2 框架离不开“泵” 258
10.4 本章回顾 259
10.5 本章思考 259
第11章 规绳矩墨:模式与原则 261
11.1 软件的设计模式 262
  11.1.1 观察者模式 262
  11.1.2 Windows Forms中的观察者模式 265
  11.1.3 设计模式分类 267
11.2 软件的设计原则 267
  11.2.1 SOLID原则概述 267
  11.2.2 单一职责原则 268
  11.2.3 开闭原则 270
  11.2.4 里氏替换原则 272
  11.2.5 接口隔离原则 275
  11.2.6 依赖倒置原则 276
11.3 设计模式与设计原则对框架的意义 278
11.4 本章回顾 279
11.5 本章思考 279
第12章 难免的尴尬:代码依赖 281
12.1 从面向对象开始 282
  12.1.1 对象基础:封装 282
  12.1.2 对象扩展:继承 286
  12.1.3 对象行为:多态 289
12.2 不可避免的代码依赖 292
  12.2.1 依赖存在的原因 292
  12.2.2 耦合与内聚 294
  12.2.3 依赖造成的“尴尬” 295
12.3 降低代码依赖 297
  12.3.1 认识“抽象”与“具体” 297
  12.3.2 再看“依赖倒置原则” 299
  12.3.3 依赖注入 302
12.4 框架的“代码依赖” 305
  12.4.1 控制转换 305
  12.4.2 依赖注入对框架的意义 306
12.5 本章回顾 306
12.6 本章思考 306

 

4.试读章节(前两章)

 

5.原稿试读

 初稿。由于内容过多,我第一次尝试使用word发布博客,本以为一切顺利,结果发布后的格式很多都乱了,尤其是图片和代码,后来不得不一点点的手动修改。调整格式用了很长时间。初稿中有些表述可能不太好,出版社编辑进行了一些修改。

第二章 高屋建瓴:梳理编程约定

第三章 编程之基础:数据类型(一)

第三章 编程之基础:数据类型(二)

第十章 动力之源:代码中的“泵”

6.网购地址

如果觉得值得一读,可以购买一本,多谢支持!

1.天猫商城(清华大学出版社旗舰店)

2.亚马逊

3.京东

7.规格参数

作者:周见智,博图轩     

出版社:清华大学出版社          

图书书号/ISBN:9787302393306  

出版日期:2015年5月    

开本:16开                            

图书页数:320

图书装订:平装            

图书规格:185mm×240mm     

版次:1-1

印张:20

字数:446千字

8.反馈方式

阅读本书时如有任何问题、建议以及疑惑均可以通过以下方式与笔者联系,笔者会认真阅读并虚心回复:

(1)QQ:568826820;QQ群:440170769

(2)邮箱:zhouzhi@syxysoft.com;

(3)在本篇博客下面直接留言。

9.一些感谢

(1)感谢博客园、CSDN等技术社区平台,感谢广大网友的热心支持;

(2)感谢博图轩图书工作室、清华大学出版社(各位编辑们)、网上认识的几位大牛(老师),如@张善友@程序员邹欣@教书匠金旭亮@出版人周筠老师等等;

(3)感谢@青柠檬、一些同学以及一些同事的持续支持与鼓励。

10.附加说明

 在这里会陆续更新各种问题。

1.第一章中有关.NET跨平台的内容是在2014年11月份之前写的,后来没来得及修改,所以并没有提到.NET新版本官方支持的跨平台、开源等特性;

2.P39页“注”部分“Int32 a = new Int32(0);”由于疏忽,应改为“Int32 a = new Int32();”;

 

QQ交流群:440170769

 

© 著作权归作者所有

共有 人打赏支持
IT周见智

IT周见智

粉丝 10
博文 61
码字总数 185891
作品 0
西青
OSC 第 77 期高手问答 — .NET 开发

OSCHINA 本期高手问答 ( 6月3日- 6月9日) 我们请来了@IT周见智(周见智)为大家解答关于 .NET 开发方面的问题。 周见智,资深.NET开发工程师,公司首席系统架构师。在软件架构、软件设计模式...

叶秀兰 ⋅ 2015/06/03 ⋅ 51

7本软书,助你突破职场天花板

来,审视一下你所在的公司,是不是存在下面的现象: 有个人技术水平不如你,却是你的领导 有个人技术水平不如你,却是项目经理 有个人技术水平不如你,却比你薪水高 有个人技术水平不如你,却...

foruok ⋅ 2017/12/30 ⋅ 0

飞龙的程序员书单 – 思想、工程、架构、职业发展

思想 编程珠玑 编程珠玑,字字珠玑。这本书并不单纯讲解算法,而是由一系列实际问题切入,引导读者理解这些问题并学会解决方法,使用现有的算法,或者程序设计技巧解决问题。本书的特色是通过...

apachecn_飞龙 ⋅ 2016/01/16 ⋅ 0

福利丨总说程序员内功修炼,究竟修的是啥?

于是,在2018新年之际,小编联合了图灵社区 带来一期“程序员综合技能修炼”的书籍推荐,在这3本口碑、内容都不错的好书里,你既可以学到构建易维护代码的硬技术实践,也可以得到思维学习、工...

DBAplus社群 ⋅ 01/04 ⋅ 0

经典编程书籍大全

经典编程书籍大全 100+ 经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关...

Oscarfff ⋅ 2016/10/30 ⋅ 0

【外刊IT评论】清除代码异味

本文是从 Cleaning up code smells: Venkat Subramaniam @ Chennai 这篇文章翻译而来。 今天,Venkat Subramaniam 就关于清除代码异味的话题给我们做了一个非常有趣的演讲。下面就是我记录的...

红薯 ⋅ 2011/05/18 ⋅ 8

如果有人让你推荐编程技术书,请叫他看这个列表

这个列表包括了 100 多本经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相...

jason_wu_2 ⋅ 2016/12/23 ⋅ 0

程序员经典书籍清单

从网上看到的,还不错。 来源: https://github.com/jobbole/awesome-programming-books 计算机系统与网络 《图灵的秘密:他的生平、思想及论文解读》 《计算机系统概论》 《深入理解Linux内核...

wangtaotao ⋅ 2016/12/27 ⋅ 0

计算机书籍目录

计算机系统与网络 《图灵的秘密》 《计算机系统概论》 《深入理解Linux内核》 《深入Linux内核架构》 《TCP/IP详解 卷1:协议》 《Linux系统编程(第2版)》 《Linux内核设计与实现(第3版)...

Reborn-D ⋅ 2016/11/01 ⋅ 0

老男孩的MySQL私房菜新书视频1-9章先堵为快

201705老男孩的MySQL私房菜深入浅出精品视频课程第1-2章 说明:关系数据库及非关系数据库的介绍,产品发布知识 http://edu.51cto.com/course/course_id-9073.html 201705老男孩的MySQL私房菜...

老男孩oldboy ⋅ 2017/06/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部