0%

不可避免地,这两天被《后浪》刷了屏。

看到后浪二字,我一开始想到的是那家后浪出版公司。我还在读《vista看天下》时,这家出版公司就有许多存在感。虽然知乎上只看梵语原著的大佬们将其打为营销号的同类,但我至少认同他们在选书和装帧上的天分。对于一家出版公司,这好像也就是最重要的:把那些有趣有用的书以亲近可人的姿态送进大街小巷的书店,让那些或许仅仅是为刻奇所驱使,亦或许真正识文解意的爱书人,能够看到那个熟悉的图标就忍不住算算自己的余额。

显然,我是属于前一种“爱书人”。也许上次去书店我抽出了《山海经校注》,这次我找来了一本《中国神话史》,下次还要考虑着把那套《火鸟》扛走……但是实际上堆在桌上,自己经常翻看的还是诸如《C#高级编程》和《Unity 5.x从入门到精通》之类,“科技类图书四大社”的俗套玩意。

噢,不——在那堆东西里甚至还夹着一本没翻过几页的《日本书纪》。

冠位十二阶 宪法十七条

阅读全文 »

数组可以说是在任何语言中都非常基本的数据结构了。这篇笔记以C#中的数组为引,再延伸到C#的几种集合类(Collections)以及一些相关的基本概念。

数组 Array

概述

数组存储相同种类的元素,其大小固定,且是顺序存储的,即在内存中占据一段连续的地址。

数组作为一种引用类型(其基类是System.Array),需要用new来创建实例。

1
2
3
4
5
//初始化时指定大小
double[] balance = new double[10];

//可以直接赋值来初始化
int[] marks = {99, 98, 92, 97, 95};

初始化而尚未赋值的数组,编译器会根据其类型隐式地将所有元素设置为默认值。

数组最大的特点还是能够用下标索引来随机访问其中的元素:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
double salary = balance[9];

//以下是C# 8.0引入的好东西!

//末尾运算符 ^
//[^n]表示[length-n],类似Python用负数索引[-n]表示[length-n]
double salary = balance[^1];

//范围运算符 ..
//[a..b]表示从[a]到[b]的范围(但不包含[b]!),类似Python的切片[a:b]
//省略a代表0,省略b代表^0
double[] salaries1 = balance[..^3];
//如果a比b还大,会抛出异常(Python中则是返回空列表)
double[] salaries2 = balance[3..2]; //ArgumentOutOfRangeException
//a和b一样大时,返回长度为0的集合
double[] salaries3 = balance[3..3];
Console.WriteLine(salaries3.Length); //0

由于实现了IEnumerable接口,数组可以使用foreach...in...的方式进行迭代访问,还可以使用LINQ,这样就无需获取数组长度再用for循环迭代了。关于这个接口及其相关的内容,我在本文稍后的部分记述。

阅读全文 »

前方高能!
这篇笔记断断续续花了近10天,思路、结构较为混沌,如果没有充分做好心理准备,建议立刻关闭窗口。
(其实就是我写完实在不愿审阅)

首先说明,异步是极为高深的高级编程技术,这篇文章只是才疏学浅的我阅读文档之后的一些思考与理解,可能有极多描述不准确乃至完全错误之处,还望批评指导。顺便吐槽,C#文档翻译得实在是太烂了,很多地方一看就是机翻的,却没有机翻警告。很多地方百思不得其解的词,切换到英语就发现其实很简单,翻译的用词完全错误,难受啊!

何为异步

与异步相对的是“同步”,代表着一句代码的执行结束是其后一句代码的执行开始,整个流程是按照固定的顺序进行的,这是一般程序的逻辑。然而,某些语句可能需要花较长时间才能得到结果——比如网络通信和文件读写——这些语句的执行并不怎么占用CPU,但会阻塞整个线程,后续的语句需要等待这些语句执行完成,造成大量的浪费。特别是如果网络环境很不好、读取的文件好几个G,那可是尤其要命,可能整个程序都会出现肉眼可见的卡顿甚至崩溃。

为了解决这种飞快的CPU与龟爬的IO之间的不平衡,传统的方案是单独开个线程让它去执行耗时的操作,让主线程继续运行与耗时操作的结果无关的代码。但是线程操作很麻烦、开销很高,线程数量也有限,不是能随便使用的,所以依然不是个完美的方法。

异步就是为了解决这个问题而存在的。当代码需要执行一个耗时的操作时,它只发出指令,并不等待结果,然后就去执行其他代码了。一段时间后,当耗时操作返回结果时,再通知CPU进行处理。

阅读全文 »

到了清明节,很奇怪的,今年并没有下雨。印象中每年的清明正应那句“清明时节雨纷纷”,这几天就该是细雨连绵,气温恰好舒适得让人头脑清晰。气象数据统计上也反映了这一点。杏花村所在的安徽池州,历年来清明前后的降雨概率高达85%。湖北离得不远,这印象是有基础的。

下不下雨倒是无关紧要,今天有其更大的意义。

新华社北京4月3日电 为表达全国各族人民对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼,国务院今天发布公告,决定2020年4月4日举行全国性哀悼活动。在此期间,全国和驻外使领馆下半旗志哀,全国停止公共娱乐活动。4月4日10时起,全国人民默哀3分钟,汽车、火车、舰船鸣笛,防空警报鸣响。

清明追思

阅读全文 »