笔记 | 初探Kotlin协程

如何理解协程

协程是一种不同于进程线程的存在,其本质是一种函数,同一线程中的多个协程是串行执行的,但为了理解仍然需要三者一起对比。

进程、线程、协程三者的上下文切换对比:

进程线程协程
切换者操作系统操作系统用户(编程者/应用程序)
切换时机根据操作系统自己的切换策略,用户不感知根据操作系统自己的切换策略,用户不感知用户自己(的程序)决定
切换内容页全局目录&内核栈&硬件上下文内核栈&硬件上下文硬件上下文
切换内容的保存保存于内核栈中保存于内核栈中保存于用户自己的变量(用户栈或者堆)
切换过程用户态 - 内核态 - 用户态用户态 - 内核态 - 用户态用户态(没有陷入内核态)
切换效率

算法 | byte值的按位不定长存储算法 [C/C++]

问题背景
首先,在基于动态规划的灰度图像压缩算法中,压缩前灰度值序列的每个值原本以8bit,即1byte进行存储,压缩后,灰度值序列分为n个段,每个段中的每个元素都不一定以8bit存储,具体存储位数存放在一个大小为n的byte数组中。我们称这为不定长存储。

其次,我们知道在计算机中一般为按字节编址和存储,在Python、C/C++等编程语言中主要提供的读写的最小单位也是字节,而不是比特。但要实现灰度值序列的不定长存储,按比特读写是更方便的。

info:在实际使用时,请注意考虑大小端存储的问题。

解决问题:现有一个byte值序列data[data_size],和另外一个byte值序列B[data_size]。其中第i个元素B[i],表示data[i]将以B[i]个bit存储。例如B[i]=3表示data[i]希望以3个bit存储。

输出结果

将12个值不定长存入byte数组(buffer)将12个值不定长存入byte数组(buffer)

输入输出原理解释输入输出原理解释

计网 | Cisco Packet Tracer下模拟交换机及VLAN配置实验记录

实验目的和要求

  • 熟悉交换机各种命令模式和基本命令
  • 学习交换机的基本配置,制作网络拓扑图(1台交换机、2台PC),2台PC能够ping通(截图)。
  • 截图网络拓扑图(2台PC),2台pc机分别用连通线和交叉线连接,然后测试其连通性。
  • 学习交换机VLAN的配置方法,正确的配置交换机的VLAN,截图网络拓扑图;
  • 查看配置pc1、pc2和pc3在配置VLAN前后的连通性。
  • 了解交换机VLAN配置常用命令

杂谈 | 从刘慈欣科幻小说到元宇宙

《超新星纪元》是我国著名科幻小说作家刘慈欣写于1991的长篇科幻小说,我在今年寒假读完了这本书。也正是在这个寒假看完这本书后,元宇宙的概念开始火到出圈,,各大科技巨头纷纷宣布入场。因而联想起《超新星纪元》中早早就出现了大刘对于元宇宙、大数据、数据挖掘和人工智能等技术的大胆构想!

元宇宙印象概念图元宇宙印象概念图