0%

又是一个月,我还是没有写技术方面的博客,这两个月的状况恰如自己突然变得稀疏的GitHub页面:

GitHub突然稀疏

再这么下去,我可真的要写不来代码了。

最大的事儿,当然是入职了。这次加入的是成立不久的央企中国信科,由历史悠久的烽火通信和大唐电信合并而成,一言蔽之如今是在通信行业排在华为和中兴之后第三位的公司。

中国信科

说实话,以前我与烽火通信几乎没有什么交集,而大唐电信倒是早有耳闻,不仅仅是因为它那霸气侧漏的名字,最主要的是3G时代大唐电信给中国移动搞的那套备受吐槽的TD-SCDMA制式,让我这个当年的G3用户深切认识到了什么叫“如果G3就是3G,那么国美就是美国”。

阅读全文 »

距离上一次更新竟然过去了一个半月。倒也不是我不想写,每当念起时总有些“俗事缠身”。而当处理完这些事,我要么是没有安静的适合写作的环境,要么便是只想躺平刷微博,失却了敲键盘的热情。

今天终于得闲,慢慢地来记几笔吧。

五月初,我终于得知毕设deadline的确切日期已经不远,而且那时我的春招战果虽不算好,但总归拿到了保底的offer,唯一要做的就是赶进度了。To Do List上的待办事项随着Commit被勾掉一些,那时我充满热情,状态是相当理想的。我又满怀兴奋地购入一堆技术书籍——不必说,它们自然还是没有被翻过几页。

我的Unity终于有了点入门的感觉,开发就像华科的施工队般“日新月异”。为了保持这种节奏,毕设所需要写的那些形式上的文书之类一度令我深恶痛绝,但很快我就从中感受到了回顾与总结既往工作的乐趣,这项杂务实际上是大有裨益的,让人能暂时跳出“此山中”,不至于沉迷于手头的问题而“不见庐山真面目”。

到了线上答辩的时刻,大家的课题多是大型分布式系统或者机器学习等等非常“Computer Science”的内容,我的《基于Unity的东方Project同人ARPG游戏设计与开发》无论什么时候都那么格格不入。偏偏我的答辩排在最后几位,只好先接受了数个小时的天书洗礼。

阅读全文 »

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

看到后浪二字,我一开始想到的是那家后浪出版公司。我还在读《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循环迭代了。关于这个接口及其相关的内容,我在本文稍后的部分记述。

阅读全文 »