lab1 这次作业主要完成两个类 StreamReassembler 和 ByteStream。我的思路是每读入数据就O(n)扫一遍,用map维护每个index对应的数据,用一个指针指向当前需要写入值的位置,不断向后移动。原本没深刻认识到overleap的含义,记录的是整串string,然而测试数据相当于把一个字符串随机剁碎,字符串反而不好维护。 这是第三个...
这个lab需要复用之前的git拉下来的Sponge仓库代码,需要做下面的工作: 先提交你之前的代码,之前我们修改了webget.cc, byte_stream.cc, byte_stream.hh。我们得先git commit他们。 然后直接将lab1-startercode这个分支merge到当前分支(如果不提交之前的代码,我们的修改贮存在git缓冲区是无法merge的):git merge origin/...
stringdata,boolis_last_substring){size_t_first_unassembled=output_.writer().bytes_pushed();size_t_first_unaccept=_first_unassembled+_capacity;// 处理空的最后子串的特殊情况if(data.empty()&&is_last_substring){_is_eof=true;_eof_index=first_index;// 如果当前已组装到EOF位置,...
CS144-lab1 Checkpoint 1 Writeup 该lab要根据首字母索引来对收到的字符串进行重组,还原为原始数据(字符串可能乱序到达,可能有重叠) 思路是将按顺序并小于可用容量的字符串(可能是部分子串)直接推流到输出流,将失序但在可用容量内的字符串放入本地buffer。 考虑到最好用首字符索引对收到的字符串进行排序,这样可以...
在lab1要求编写一个名为"StreamReassembler"的数据结构,它负责重新组装数据。该结构将接收子串(由一串字节和大数据流中该串的第一个字节的索引组成),并提供一个名为"ByteStream"的输出,其中所有的数据都被正确排序。 三、实验内容 输入"cd minnow/build"切换到实验作业的存储库中,运行”git fetch”来检索实验作业...
https://github.com/wine99/cs1... 任务 TCP 接受方接收到乱序且可能重叠的报文段,StreamReassembler 需要将收到的报文段按情况送入 ByteStream (lab0 实现的),或丢弃,或暂存(在合适的时候重组送入 ByteStream)。 注意点: 报文段包含索引、长度、内容,lab1 的索引从 0 开始增长,不会溢出绕回。
Lab 1 对应的PDF:Lab Checkpoint 1: stitching substrings into a byte stream 实验结构 这幅图完整的说明了CS144 这门实验的结构: 其中,ByteStream是我们已经在 Lab0 中实现完成的。 我们将在接下来的实验中分别实现: Lab1StreamReassembler:实现一个流重组器,一个将字节流的字串或者小段按照正确顺序来拼接回连...
1. 图2-7编译结果 (5)输入”makechecklab1”进行测试,测试结果如图2-8所示。可以看到,所有测试结果全部通过。 AI检测代码解析 make check lab1 1. 图2-8测试结果 实现的整体框架如图2-9所示。 图2-9整体框架 2.4 实验体会 1lab1需要完成“stitchingsubstringsintoabytestream”(将子字符串拼接成字节流)。此...
CS144 lab1 笔记 CS144 lab1 笔记 上图是TCP实现中模块和数据流的安排,我们要实现的就是StreamReassembler 一个字符重组器,将乱序的字符串,按照索引排序,使其成为连续字符,供TCPSender和TCPReceiver使用 有容量限制,超出的字符直接丢掉(不是整个片段) TCP接收到的片段从零开始,不会溢出...
lab0和lab1:不总结了,就是数据结构层面的东西,实现一个byte_stream,并封装成自动给不按顺序到达的bytes排序的assembler lab2:前两个实验中,为原始的字节流提供一个header,里面存储这段bytes的信息:lab2中用到的主要是 syn初始号,ack确认号,fin结束号,以及普通的isn(seq)字节的序列号 ...