谈数据结构的时候,到底在谈论什么?本质上就是谈论两个东西,分别是 ** 数组 (Array) 链表 (Linked List)**。

数据物理结构和数据逻辑结构

数组和链表,是数据存储计算机的物理结构,所以叫做数据物理结构。而队列、散列表、堆、树、图等,已经超出了物理结构,是方便我们使用的应用层结构,根据数据的 1-1、1-n、n-1、n-n 逻辑关系,引申出了数据逻辑结构。分别为线性结构和非线性结构,相见下图:

参加工作后的这几年,评价哪一年比较平庸或许都不好,毕竟都是自己亲身经历过的时光,每一年都是像孩子一样善待过,不忍心批评。

但就像每人心里都有一个钟意的水杯,我还是很想投 2019 一票,因为这一年,我的确有不少变化。

这一年,我在技能成长、认知提升、工作、家庭生活、业余生活上都有很大变化。优秀肯定无从谈起,人一定要对自己有自知,但我一定是在向前走的,这让我很高兴。

技能成长

先从 2019 年的技能成长说起,因为它给我的温差最大,有时候我激动万分,有时候也在半夜垂头懊恼。

在 Swift 中,struct(值类型)和 class(引用类型)的区别,不仅仅在于对象复制时候表现出来的差异,也不仅仅是构造器和继承的异同,本质上却是数据抽象层级的高低。
如果不能把值传参、地址传参和引用传参与类对象联系起来,也无法理解不同传参下对象的使用和 struct、class 的应用场景。

因为 struct 和 class 表现出来的是语法层面的差异,而项目使用中体现的是语义层级的差异。比如,Objective-C 里面的 NSString,它是引用类型,但是我们却在使用它的值语义。

1
2
3
4
5
6
7
NSMutableString *oldname = @"hello".mutableCopy;
NSMutableString *newname = oldname;
newname = @"word".mutableCopy;
NSLog(@"\n oldName:%@ \n newName:%@", oldname, newname);

> oldName:hello
> newName:word

我们使用了引用类型的 NSMutableString,但是 newname 并没有引用复制 oldname,仅仅是指针地址复制了 oldname。这样导致了 newname 并不是 oldname 的别名 (alias)。
如果 newname 是 oldname 的别名,那么对 newname 的所有 all 操作,都会同步到 oldname。
这里,newname 如果改变了对象数据是可以同步到 oldname,但是却不能改变 oldname 变量的值(oldname 的存储值,即 “hello” 的指针地址)。
所以,这里的 NSMutableString 虽然是引用类型,却具有值语义。

因为编程语言概念上的模糊,下面首先介绍 struct 和值类型的关系。
然后重点说明值类型和引用类型的区别,这是重点,直接解释了 struct 和 class 的根本区别。
最后加一点小彩蛋,介绍 Swift 里面 struct 特性。

我刚刚关闭了自己的花呗。紧接着开始逐渐关闭一些信用卡的绑定。
这种温水煮青蛙的花钱方式,我经历了 6 年了。现在,因为穷,我有些适应不下去了。
我不知道为什么每个月都有这么多的钱要还,我更不知道为什么我要办理 4 张信用卡和花呗一起使用。
我就知道,我已经很久没有带现金外出过了,我家里也很少有现金。
但是,一点点的无知觉消费,使得每个月都有很多钱要还。计算机 / 服务器永远不会自己计算错,说明还的钱都是有依据的。无感知的消费,使得每个月消费金额过多。

相信我,远离信用卡和花呗。过段时间,我会贴出重回现金生活的感受。我想,一定非常棒。

0x01 问题描述和表现

对于 let 和 var,struct 和 class,分成两类来说,很多人比较容易理解。let:不可变,var:可变,struct:栈空间,class:堆空间。
当我想要确认他们的原理的时候,截止发文为止,我没有在中文互联网上搜索到相关信息。所以我把他们的原理写在下面。

下面的示例,你能够理清楚多少?

1
2
3
4
5
6
7
8
struct Person1 {
let name1: String = "name1"
var name2: String = "name2"
}
class Person2 {
let name1: String = "name1"
var name2: String = "name2"
}

上面定义了一个 struct,一个 class,我们下面的代码会有什么结果?

网易这家公司挺邪乎的(自然科学解释不了),相比来说 x 浪 x 度也只能叫奇葩。

他家产品基本都是 “用不久但长活” 系列。
产品有猪肉、邮箱、游戏、新闻、音乐、课堂、阅读、购物等。

挑几个重点来说,邮箱当年我可是力挺的,同事朋友要找工作,我那给的第一个建议就是:” 不要用 QQ 邮箱,一定要用 126 邮箱。“但是几年前,我已经转到 Gmail,头都没有回一下。

因为要参加亲戚婚礼,我在杭州前往马鞍山的绿皮火车上。许久没有坐过绿皮火车了,入站前我还有了丝丝害怕。害怕火车站是否有危险。

普通火车站只能是普通打工者最廉价的出行方式了。一路上的感慨。即使是杭州,这样的一线城市,杭州火车站也显的太过落寞。路上经过一个小巷,有浓浓的尿骚味。火车站也落魄的很,明显已经完全不在受到重视。

这样说,近几年国家经济发展迅速,尤其杭州为代表的一线城市,不仅在经济还是科技都属于一流水平。但是火车站,还是和几年前见到的一样,没有丝毫的改变,至少我没有看到。

我通过水泥地的走道进入了候车室,就像 80 年代一样的怀旧感。在候车室有两个人尬聊,一人说到,自己是个做菜的,算不上厨师。在杭州也就是混口饭吃,因为没有立足点,感觉到与杭州人群的格格不入。说到自己一个月 3000-4000 左右。

绿皮车厢里面呢,有不少抽烟者和随地而睡的人。

车厢很闷。根据我坐绿皮车的经验,车厢里面不是有点冷就是有点热。这经验也是我到车上后回忆起来的。我记性很差,努力回忆一下,之前的经验就如同刚才所说。这一次是有点热。

车厢的气味都没有变化,还是那种幽幽的,不想闻但一定会吸入的怀旧气息。

我是有些不习惯了,因为这些年一直都是做高铁,的确舒服很多。
工作生活中也遇不到绿皮火车和车上的人,隔阂的确越来越远,以至于像两个平行的时间线。

终究离发达国家还是有不少差距,大家都还是生活在困苦之中。
勇敢面对。

没事不要喝酒。没事不要喝酒。喝酒前一定明确自己当前的处境。我多年喝酒善意的总结。

酒精对人的刺激,非常明显。少量酒精会像兴奋剂一样使人高亢。少量酒精还真不会有什么出格的事情发生,喝点就喝点嘛,谁都管不着,还真的不用怎么担心。但是一定要注意,超出预期的酒精也是从少量酒精过度过去的。

HK,我没有去过,但是我觉得这个地方很神奇。
为什么呢?
1. 美国棱镜门在 2013 年 6 月被曝光,美国政府遭遇百年一遇的全球信任危机,曝光人斯诺登选择在 HK 将相关资料公众于世。
2. 朝鲜目前最高领导人金正恩的弟弟金正男,于 2017 年 2 月被刺杀。之前呆过比较久的地方,一个是前苏联,一个是 HK。
3. HK 的香港大学世界闻名,比肩国内的清华与北大。而 HK 世界闻名的大学达到数十个。
4. 中国公司上市地点有三个,HK、深圳、上海。HK 这么小的面积却拥有大量的公司前往,中国众多巨头纷纷前往。
5. HK 首富李嘉诚的身价,在国内也没有几个人能够比得上。
还有很多其他的经得起推敲的新闻点,很多新闻都表明,HK 是一个在政治、经历、教育等方面在全球都非常有影响力。前些年经常可以在大陆媒体上看到 HK 的发展和一国两制的自豪。这两年逐渐听到的少了,也或许和我不再看新闻有关。不过在代购上,经常看到 HK 的字眼。

HK 近期成为全球人的聚焦点,有人骂有人赞更多是在观看。时间不会停下来,什么事情一定会有一个结局,或许几多年后,我们可以叫这次事件为 “反送中案件”。

杭州的云服务建设的非常快。
下图中白云的后面就有非常强大的软硬件储备,撑起了几乎整个中国互联网的基础建设。

与微软亚马逊等科技公司不同,国外巨头一般把服务器存放在大海里,方便散热降低能耗。

0%