要么改变世界,要么适应世界。

0%

教育背景

目前广东某高校在读研究生,方向为区块链安全。
本科毕业于扬州大学,专业为计算机科学与技术。

阅读全文 »

前言

在开始之前,我们要明白互斥和同步是不同的概念,简单来说,互斥就是同一时间,某个资源只能运行一个访问者访问;同步指的是某些操作在时间上具有一定顺序,例如A操作必须在B操作之后,在很多时候,同步需要借助互斥。

阅读全文 »

估计不少人会被问到这个问题,这个其实是外排序问题,不同于内排序全程都可以在内存中进行,外排序一般数据量巨大,当然也是有解决方案的,解决方案不外乎几种:

  1. 分块读取,然后插入数据库中,让数据库帮我们排序,我们分块查询数据库,然后分块读取保存进文件(这种方法简单直接,技术难度没那么大,但是对数据库服务器要求比较高)
  2. 分治法,将原始大文件切割成小文件,使得小文件内的数据能够一次性加载进内存,小文件内的数据先排序,然后每次从这些小文件中读取若干数据出来,使用归并排序合并成大的文件。
  3. 如果这些数据的范围都不大,则有很多数据是重复的,我们使用计数排序即可。

不过方法三有较大的局限性,如果某个数字重复非常多,那么有可能在计数过程就溢出了(当然你可能还会说:就算是有100亿个重复的,C语言中使用long long类型来保存计数那就不存在溢出了,可是如果不止100亿呢,而且每个数字范围还很大,超过数组的下标范围呢,例如C语言中数组的下标是int类型的)。

下面演示一下方法二的整个实操过程。

阅读全文 »

模型转dict

1
2
3
4
# 获取所有的Dataset对象的QuerySet
dataset_all = Dataset.objects.all()
# 使用model_to_dict将每个对象转换为字典
dataset_all_dicts = [model_to_dict(obj) for obj in dataset_all]

调用model_to_dict的时候我们还可以指定包含或者排除的字段:

阅读全文 »

认识红黑树

上篇文章我们主要认识了二叉树搜索树,这篇文章正式介绍红黑树。

红黑树在二叉搜索树的基础上,加了些性质,包含colorkeyleftrightp,颜色取值为红色或者黑色,此外,我们把NIL节点视为特殊的节点,具体而言,视为外部节点,也叫叶子节点,把带有关键字的节点视为内部节点。

阅读全文 »

前言

红黑树是二叉搜索树中的一种,只不过增加了一个性质“在所有的叶子到根的路径中,没有一条路径会比其他路径长出2倍”,因此,可以保证最坏情况下基本动态集合操作(例如删除节点、插入节点和查找节点)的时间复杂度为O(lg n),本篇是第一部分,二叉搜索树。

阅读全文 »

前言

本实验要求我们实现一个代理服务器,充当一个在用户和目标服务器之间的桥梁角色,深入了解各个主机之间建立连接的流程。话不多说,打开电脑,带上键盘,开启实验!

阅读全文 »

本实验要求我们实现一个简单的动态存储分配器,主要完成mallocfreerealloc的功能,实现过程要同时兼顾内存利用率和吞吐量。

话不多说,打开电脑,带上键盘,开启实验!

阅读全文 »

总体要求

实现一个小小的shell程序,涉及进程调度,信号处理,并发处理的知识,需要掌握教材第8章。

话不多说,打开电脑,带上键盘,开启实验!

阅读全文 »

实验包括两个小实验,第一个是仿真Cache,第二个是针对不同情况下,用不同的方式实现矩阵转置。

话不多说,打开电脑,带上键盘,开启实验!

阅读全文 »