文章列表

356 1 分钟

线性表 Merge Sorted Array E 设置答案表ans,设置两个指针i和j,表示当前所指的位置,一开始指针指向表头。比较两个指针所指元素大小,谁小谁先进ans表。如果有一个指针指到了表尾就不比了,直接把剩下没处理完的内容直接放进ans表。 Remove Element E 太简单,略过。至于怎么使用O(1)的空间复杂度来进行操作。可以用双指针进行操作。i是表头,j是表尾,如果i表示的元素要被删除,就从j中取一个元素放到i对应的位置。(这样就被删掉了),如果不要被删除,那么让i+1就好。 Remove Duplicates from Sorted Array...
2.1k 2 分钟

[4] Smart Traffic Monitoring System using Computer Vision and Edge Computing Background:交通堵塞检测和超速检测。 Motivation:I、交通管理系统可捕获大量视频数据,并利用视频处理技术的进步来检测和监控交通事故。传统上,收集的数据会转发到流量管理中心 (TMC) 进行深入分析,因此可能会加剧到 TMC 的网络时延。(数据量大导致时延增大)。II、我们建议利用边缘通过为靠近摄像头的边缘节点配备计算资源(例如 Cloudlet)进行计算。与 TMC 相比,Cloudlet...
4.9k 4 分钟

目标检测概论目标检测,通俗点说就是给定一个图像,在图像中框出符合要求的区域。 用数学语言表达,就是: 训练集的输入是$(x_1,b_1),\dots,(x_n,b_n)$(其中$x_i=(x_{i1},x_{i2},…,x_{ik})\in R^{mn}$ 是原始$mn$,k通道的图片,$b_i = {b_{i1},b_{i2},…,b_{ij},c_{i1},c_{i2},…,c_{ij}}$是若干个符合要求的区域$b_{ik}\in...
1.4k 1 分钟

Python异步编程使用asycn和await两个关键词进行修饰。其中asycn关键词修饰过程,而await修饰操作本身。 EventLoop(事件循环)Python异步编程的核心是维护若干个事件循环,学过操作系统的可以把事件简单地认为是“进程”。Python的事件循环维护若干个Task(协程),当Task被阻塞或者Task完成了,就从Task池(我起的名字)中获取下一个可以用的Task来执行。你可以通过get_running_loop()和get_event_loop()来获取当前的事件循环。区别是前者如果没有正在运行的事件循环则会引发...
1.7k 2 分钟

Raft究竟做什么?众所周知,一个可靠的分布式系统需要冗余。因为一个人是很容易出错的,这时候需要一群人来帮忙纠错。这就是分布式系统的可靠性。当一个机器出现故障或者错误,那么其他机器需要帮助这个机器进行恢复。那么阅读实验文档,Raft也干这么一件事。Raft是一个用于分布式系统的状态机协议,这个协议维护一个数据的完整副本,也就是说每一个机器,都拥有一组数据或者叫状态。Raft将客户端请求组织成一个序列,称为日志,并确保所有副本服务器看到相同的日志。每个副本按日志顺序执行客户端请求,将其应用于服务状态的本地副本。由于所有实时副本都看到相同的日志内容,它们都以相同的顺序执行相同的请求,因此继续具有相...
2.1k 2 分钟

由于最近事情比较多,但是又想刷一下6.824的实验,慕名已久了,于是就看了一下实验手册和大佬分享的代码。在这里写了一点自己的个人感悟。 什么是MapReduce分布式计算的核心就是有一个主节点,驱动若干个副节点进行计算。MapReduce是一种非常特殊的分布式计算策略,因为所有的副节点都会执行相同的map操作和reduce操作。map操作和reduce操作之间是有一个barrier,做完map才能做reduce。map和reduce操作都可以自己人为定义的。但是需要满足一个条件。map操作需要收集若干条数据,生成若干条key-value对,reduce操作负责合并这些key-value对。对于...
7.5k 7 分钟

词法分析flex用法flex可以用于词法分析。一个flex文件可以分成2个部分:引导区和规则区(我起的名) 引导区的内容会原封不动地放到.c文件中。规则区是由若干个规则组成的区域,flex的目的就是为了把规则区的内容进行解释,变成词法分析的.c文件中。(理论:正则表达式转化为NFA,然后再转化为DFA)。规则区的每一个规则由三部分组成<执行状态><正则式><匹配规则>。在规则区内部可以执行两种特殊的操作,一种是正则式的宏定义,例如[0-9] DIGIT是将0-9的数字定义成DIGIT。一种是状态声明%START...
4.6k 4 分钟

PA1南大pa是一个设计非常巧妙而且指引非常足的一个实验,由于其指引已经很足了,我在这里不会写实验具体是怎么做的,具体写一下我的思考。 开天辟地的篇章程序的执行可以看成是一个有限状态机,每一个时刻可能对应一个状态。状态可以用程序计数器的值来进行表述,在不同的状态下,执行的指令和存储器的值也是不一样的,每一个状态可以指令一个访存或者计算指令。不同的程序是不同的状态机。 RTFSCpa的实验分成三个部分,一个是基础的nemu,nemu本质上是一个硬件模拟,它并不承担软件的部分,它为其他的部份提供硬件层面上的支持。对于其他的部份来说,他们会天真的认为自己是在一个真实的计算机进行执行,但是这一切都是n...
81k 1:13

1:Operating System Overview1 xv6系统的启动过程:1.1xv6引导器当x86系列的PC机启动的时候,首先会执行BIOS程序,BIOS程序一般会存放在固定的ROM中,一般在磁盘固定扇区中.BIOS 的作用是在启动时进行硬件的准备工作,接着BIOS程序会把控制权递交给操作系统.具体来说,BIOS会把控制权递交给从引导扇区中的固定的代码中(BIOS会把引导扇区存储的代码加载到内存0x7c00处),接着引导程序会把操作系统内核载入到内存中,控制权递交给内核,程序是M态的. 在xv6系统,引导程序由汇编引导程序和代码引导程序. 1.2...
39k 36 分钟

1:Xv6 and Unix utilities运行环境:Ubuntu 20.04 qemu 在做6.s081的实验之前我们首先要先下载Xv6操作系统以及qemu虚拟机: 1sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu Lab1_1:Boot xv6运行并安全退出xv6系统: 运行的方法很简单:cd进xv6的文件夹里面,然后输入`make...