computer-network-lab3
LAB3要求
实验3-1:利用数据报套接字在用户空间实现面向连接的可靠数据传输,功能包括:建立连接、差错检测、确认重传等。流量控制采用停等机制,完成给定测试文件的传输。实验3-2:在实验3-1的基础上,将停等机制改成基于滑动窗口的流量控制机制,采用固定窗口大小,支持累积确认,完成给定测试文件的传输。实验3-3:在实验3-2的基础上,选择实现一种拥塞控制算法,也可以是改进的算法,完成给定测试文件的传输。实验3-4:基于给定的实验测试环境,通过改变延迟时间和丢包率,完成下面3组性能对比实验:(1)停等机制与滑动窗口机制性能对比;(2)滑动窗口机制中不同窗口大小对性能的影响;(3)有拥塞控制和无拥塞控制的性能比较。
实验要求:实现单向传输。对于每一个任务要求给出详细的协议设计。给出实现的拥塞控制算法的原理说明。完成给定测试文件的传输,显示传输时间和平均吞吐率。性能测试指标:吞吐率、时延,给出图形结果并进行分析。完成详细的实验报告(每个任务完成一份)。编写的程序应结构清晰,具有较好的可读性。提交程序源码和实验报告。
评分标准:每个任务最高100分。每个任务分值分配协议设计、功能实现(40分)演 ...
computer-network-lab3-4
要求
NKU COMPUTER NETWORK LAB3-4
基于给定的实验测试环境,通过改变延迟时间和丢包率,完成下面3组性能对比实验:(1)停等机制与滑动窗口机制性能对比;(2)滑动窗口机制中不同窗口大小对性能的影响;(3)有拥塞控制和无拥塞控制的性能比较。
本实验没啥可说的。
注意尽量不要使用给的router.exe跑程序,很容易出问题具体分析见lxm的博客。
务必要注意:必须控制变量!不然得分会极低!
高分技巧是把图画的漂亮一些!尽量使用sns或者echarts等绘图工具,多画图,分就高。
数据是否真实并不重要这里上传一个绘图的代码
python12345678910import matplotlib.pyplot as pltx=[]y=[]plt.plot(x, y, "b", marker='D', markersize=5)#绘制坐标轴标签plt.xlabel("xx")plt.ylabel("xx")plt.title("xx")plt.show()
computer-network-lab3-3
要求
NKU COMPUTER NETWORK LAB3-3
在实验3-2的基础上,选择实现一种拥塞控制算法,也可以是改进的算法,完成给定测试文件的传输。
实验设计
事实上3-2和3-3都是看懂理论之后,就不算太难了。只需要加很少的代码就行了。当然,代码涉及到多线程可能会比较困难。由于3-2编程有很多底层细节压根就没学会,也没时间了,因此到3-3彻底摆了。不过在看懂了3-2的代码之后,3-3的修改会变得非常简单而且轻松。具体内容见实验报告吧,在知道拥塞控制的原理之后,就没啥了。
一些说明
还是时钟的问题,时钟的线程很多人写的都是错的。目前看到写对的人很少,20级有几个。
computer-network-lab3-2
要求
NKU COMPUTER NETWORK LAB3-2
在实验3-1的基础上,将停等机制改成基于滑动窗口的流量控制机制,采用固定窗口大小,支持累积确认,完成给定测试文件的传输。
实验流程
大部分内容与3-1相同。此处应该采用多线程编程,由于我不会多线程,因此摆了,没弄懂机制自己改了改别人的程序就交了。具体内容见实验报告吧。。。
一些说明
我的代码并没有完美解决线程的并发控制等问题,因此有各种毁灭性BUG。不建议参考。毕竟我给出了足够多的参考链接,可供选择了。非阻塞这事,如果设置成非阻塞,系统会自己给你开四个线程,因此在3-1中能够实现很多功能,在3-2中可以参考朱浩泽的继续这样做,也可以自己写线程(大多数人应该选择自己实现多线程)。
线程这块可能会有很多死锁问题和并发控制的问题,我也没学过也没时间自学了,只能在此提醒后来人注意此处了。
另,很多人貌似实现了多线程,首先收发其实并不是真正的GBN or SR所要求的样子,只能说勉强实现了功能(仔细一看还是非阻塞停等),其次很多人对于时钟的设计都是错的,建议在研究理论并看明白那些人的代码以后参考。20级很多人也写的不对,我在单步他们的 ...
computer-network-lab3-1
要求
NKU COMPUTER NETWORK LAB3-1
实验要求
利用数据报套接字在用户空间实现面向连接的可靠数据传输,功能包括:建立连接、差错检测、确认重传等。流量控制采用停等机制,完成给定测试文件的传输。
写在前面
实验报告的.tex文件,我也附在了GITHUB仓库之中,有需要的自取,记得STAR。
一些说明
也是不同评分对应不同要求吧,比如说rdt2.0 2.1 2.2 3.0,肯定会有评分上的不同的,不过一般写到这个作业的时候已经比较紧了,编译和OS的压力很大,那么最推荐的情况就是完成基础要求,顺利拿到90分。
当然我是20级,深陷内卷地狱之中,实在是不敢不卷,因此我一直在实现一些加分的要求。~~学弟学妹们可以直接使用rdt2.0,只完成两次握手,不完成挥手,这样在我看来是最简单的。当然,看着我的代码,可以自己修改,或者直接减少某些功能,这样也会降低实验难度。~~好像不太星,因为rdt2.0没有重传的机制,这时候建议魔改rdt2.2,是比较好的实现方式。
实验步骤
协议本身
最最重要的一点,协议要自己设计一下。
有以下几种选择以及具体实现:
定义一个很大的字符数组,不 ...
os-knwoledge2
本文主要来自《精髓与设计原理》一书,黑书作为补充,部分来自于PPT,发现PPT的相当多内容来自于《精髓与设计原理》,看来这书得反复看。
不知道为什么宫老师的课讲的和哪本书都不能完全对上,因此我也是串着看,串着写。
一些总结
进程主要是由于Timesharing(时分复用)的观念而产生,希望最大限度利用CPU。
进程的实现,主要由进程控制块解决。
进程的切换,主要涉及进程控制块PCB的内容。
进程的设计目标:
由全部寄存器打包组成“上下文”context,通过保存和恢复“上下文”,实现进程的无感知启停切换
通过对“触发慢操作”的函数的封装和指令权限限定,实现进程的运行与等待状态切换的感知
监控硬件事件,用以驱动“进程状态机的变化”,从而实现对多个进程正确分类,有效处理
CPU资源的时分复用:
进程切换:CPU资源的当前占用者切换
保存当前进程在PCB中的执行上下文(CPU状态)
恢复下一个进程的执行上下文
处理机调度
从就绪队列中挑选下一个占用CPU运行的进程
从多个可用CPU中挑选就绪进程可使用的CPU资源
调度程序:挑选就绪进程的内核函数
调度策 ...
Algorithm Week1
写在最前
本篇博客为躬行之路中week1的对应博客,主要记录我学习到的算法还有在leetcode上做的题。学数据结构、算法,甚至是计算机科学,甚至我认为包括一切理工科,只看书不动手是不行的。很遗憾在大学的前两年浪费了太多的时光,因此C++没有很好的基础,同时也没有学习算法,使得自己至今不会程序设计,很遗憾。不过万幸,悟已往之不谏,知来者之可追。实迷途其未远,觉今是而昨非。 同时,我再次引用陆游的诗。
《冬夜读书示子聿》(宋)陆游古人学问无遗力,少壮工夫老始成。纸上得来终觉浅,绝知此事要躬行。
一些前言
躬行之路的周更博客中并不会写一些被其他人写烂了的内容,抄教材并不是什么优秀且值得骄傲的行为。由于这是互联网形式,因此,所有我在学习时所看的资料,都会以链接的形式直接贴在博客当中。关于我所学的内容本身,我只会写一些自己的想法和心得体会在博客里面。所有算法都会尝试用C和python两种语言实现,并且尽量在python中压行,一行解决问题。不过重心仍然放在C之上,一方面是因为面试几乎都是用C++,另一方面也是python底层也不知道在干什么,也没有什么自己需要实现的数据结构,同时我认为py ...
computer-network-lab2
第二个实验
NKU COMPUTER NETWORK LAB2 计算机网络实验二
lab2不难,用wireshark抓包然后分析这些东西。
实验过程
编写HTML
首先我们需要写一个HTML,在软件安全那个课上应该已经学过了,没学过也应该不难学。
123456789<html> <head> <title>TephrocactusHC</title> <h1>你的学号xxxx 你的姓名 你的专业</h1> </head> <body> <img src=你的图片.jpg"/> </body></html>
搭建服务器
然后将HTML部署在你的服务器上。这里很多人不知道怎么部署服务器,我的建议是用软件安全的虚拟机里面的PHPNow那一套东西,把你的HTML文件部署到阿帕奇的hosts文件夹底下。上学期软件安全都学过了。不会的话自己查查。。。
也可以使用其他集成开发环境,什么xmapp还是什 ...
os-lab
#ucore-lab2
大概就是记录一下lab2这些东西,前面的代码基本上是阅读得到的结果,主要写写自己怎么实现的伙伴系统就完了(
ex1
首先需要掌握关于ucore里边双向链表的东西,这里直接贴实验指导书的内容,这一部分就是关于ucore的数据结构的知识。这个空闲块链表实际上是将各个块首页的指针集合(由prev和next构成)的指针(或者说指针集合所在地址)相连。这块需要看懂。说实话这玩意挺巧的。。。
然后就可以看本次实验了。ex1很水,就改几行,但是自己要懂原理。也就这个能自己写出来
ex2 ex3
一个比一个恶心了。得先看书,把内存管理那块看懂,不然绝对看裂开。其实明白了内存管理,然后再看注释,可能自己也差不多能写出来了,但是考虑到要自己调试,基本上要裂开一定的过程,就算了,阅读代码即可。
ch1
写在前面
伙伴系统,一个被人实现了快烂了的东西。大概有三种数据结构可以写这个东西,分别是队列数组、树状数组和线段树。我采用线段树实现。当然,由于伙伴系统的优美特性,是满二叉树的结构,那么其实可以采用zkw线段树实现,代码更少更优美。据网络上说随着zkw线段树的普及,基本上没人用树状数组 ...
深入浅出Embedding-1
写在前面
本文为阅读《深入浅出Embedding》系列读书笔记的第一篇。这本书本身并不算很精品,只能算作质量还好的科普,但是它引用的博客都写的很不错,对很多模型写得很细致,讲得很清楚,可以进去看看。
Embedding
Embedding最早是在NLP领域中被提出,前面一些部分将浅浅写一下NLP的原始内容。
传统方法
事实上,在近代的NLP问题当中,核心问题只有一个 Representation(文本表示) 。因为我们知道,文本是一种非结构化数据,是以固定的编码方式存储的一段字符串。而这样的存储方式,意味着我们无法对其进行计算。那么,早期的语言模型,主要提出了独热编码和整数编码两种对文本的表示方式。这两种方法较为基础,在此并不做更多介绍了。在本文的参考链接中,可以看到这两种方法的信息。总的来说,Embedding之前的方法,无法展示出文本之间的关联和内在信息,在可解释性上也面临较大困难。
word2vector
Word2Vec是语言模型中的一种,它是从大量文本预料中以无监督方式学习语义知识的模型,被广泛地应用于自然语言处理中。2013年横空出世。这里附上原始论文。(PDF) Effi ...