05__数组:为什么很多编程语言中数组都从0开始编号?

提到数组,我想你肯定不陌生,甚至还会自信地说,它很简单啊。

是的,在每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。尽管数组看起来非常基础、简单,但是我估计很多人都并没有理解这个基础数据结构的精髓。

05__数组:一秒钟,定义_1000_个变量

你好,我是胡光,咱们又见面了。通过前几节的学习,你已经了解了基本的程序结构。我们来简单总结一下,其中第一种结构就是顺序结构,它指的是我们所写的按照顺序执行的代码,执行完上一行,再执行下一行这种的。第二种就是分支结构,主要是用 if 条件分支语句来实现,主要特征是根据表达式的真假,选择性地执行后续代码。最后一种就是循环结构,用来重复执行某段代码的结构。

05__思考题解读:如何实现可自我迭代的计算机?

你好,我是七牛云许式伟。

在第 3 讲“汇编:编程语言的诞生”中,我给出了一个架构思考题:

第一台以键盘 + 显示器为标准输入输出的现代计算机出现后,一个最小功能集,但计算能力可自我迭代的计算机应该是什么样的?

05__索引(下):位移索引和时间戳索引的区别是什么?

你好,我是胡夕。今天,我们继续说索引那些事儿。

在上节课,我带你重点学习了 Kafka 源码中索引的抽象父类 AbstractIndex。我分析了 AbstractIndex 类的大体对象结构,还介绍了社区改进版的二分查找算法在 Kafka 索引上的应用。

05__图标(上):把现实装进你的笔记

你好,我是高伟。欢迎你继续跟我学习视觉笔记。

前面几节课中,我们学习了“点线面”、人物、容器等简单视觉元素的画法,这个过程其实就是在帮你组建属于你自己的“视觉元素后台”。

05__团队试点(二):打造一支无往不胜的敏捷团队

你好,我是宋宁。

上节课我讲了怎么做团队敏捷试点前的准备工作,这节课我们一起来看看具体怎么推进敏捷试点。

你可能要问了,既然准备工作已经做好,万事俱备,还等什么,直接推进试点不就可以了吗?

05__系统设计目标(三):如何让系统易于扩展?

从架构设计上来说,高可扩展性是一个设计的指标,它表示可以通过增加机器的方式来线性提高系统的处理能力,从而承担更高的流量和并发。

你可能会问:“在架构设计之初,为什么不预先考虑好使用多少台机器,支持现有的并发呢?”这个问题我在“03 | 系统设计目标(一):如何提升系统性能?”一课中提到过,答案是峰值的流量不可控。

05__系统实例:怎样设计一个简易物联网系统?

你好,我是郭朝斌。

通过前几讲的学习,你应该已经熟悉了物联网系统的基本框架,并且知道设备层、网络层和应用层大概是怎么回事儿。不过你现在的理解,可能还停留在盲人摸象的阶段,虽然已经可以说出某些局部的特点,但是还没法儿准确地画出整头大象的样子。

05__消息序号生成器:如何保证你的消息不会乱序?

你好,我是袁武林。

前面几节课,我们较为系统地介绍了如何解决消息实时到达的问题,也对如何保证消息可靠投递的几种实战中常用的方式进行了一一讲解。

那么,今天的课程我们继续一起聊一聊,IM 系统设计中另一个比较复杂,但又非常重要的话题:消息收发的一致性。需要提醒的是,我们这里的讲到的一致性,一般来说是指消息的时序一致性。