使用clink优化cmd参考链接 chrisant996/clink: Bash’s powerful command line editing in cmd.exe (github.com) chrisant996/clink-flex-prompt: Flex prompt for Clink (github.com) 预先准备 苦于powershell每次都要一秒多的启动速度,偶然这两天发现了clink这个 2023-06-17 安装引导 #Windows #cmd
CS144-Lab6 计算机网络:路由转发路由转发 这个实验就是最后一个需要写代码的实验了。主要需要解决的问题是一个IP数据包传入之后,如何通过已有的路由表确定下一跳的IP地址 这个实验中主要的问题点就是CIDR的匹配。解决这个问题,我们只需要先将CIDR转为子网掩码,也就是以0为基数,左移(32 - 前缀)位,最后得到的也是子网掩码的值。但是这里有一个问题就是,当mask是uint32_t的时候,如果前缀的长度为0,那么子网掩码会变成 2023-04-24 知识记录 #cs144 #network
CS144-Lab5 计算机网络:Network Interface的功能Network Interface 在通过TCP协议将数据包进行封装准备好以后,就需要“快递公司”来对这些数据包进行分发了。这个过程可以划分为两个部分,一个是数据包在中转转发的过程中需要经过的“中转”设备有哪些,其次就是如何选择“中转”的线路。 在网络接口的部分,主要实现的逻辑是作为发送的某一个节点,在知道了下一个中转站的IP地址以后,如何将数据包进行交付。 需要实现的逻辑 首先对目前的知识进 2023-04-24 知识记录 #cs144 #network
CS144-Lab4 计算机网络:TCP Connection的实现TCP Connection TCP Connection的部分本身并不难,这个实验的主要核心是学习使用tshark或wireshark一类的工具对TCP的网络状况进行分析,找出正确或错误的数据包。 需要实现的逻辑 在这个实验中我们需要将前面写的TCP Sender和TCP Receiver两个部分的逻辑进行合并,使得两者之间可以进行数据的传输。 除了几个可以直接调用前面实验函数的函数以外,我 2023-04-10 知识记录 #cs144 #network
使用Yadm管理Linux配置文件今年暑假看Missing-course的时候开始意识到备份Linux配置文件的重要性,以后即使切换机器也可以很容易的恢复自己喜欢的编程环境。在简单搜索了几个方式以后,决定使用yadm作为管理工具,并且写了一个模板,便于分享和使用。 Yadm Dotfiles 使用说明 该仓库的主要用途为使用yadm作为管理工具,通过Github来同步自己的Dotfiles 先在自己当前环境下安装yadm 2022-12-12 小技巧 #Linux #Yadm
CS144-Lab3 计算机网络:TCP Sender的实现TCP Sender 需要实现的主要逻辑 追踪Receiver返回的windows_size(可接受的剩余容量)和ackno(已经确认接收的字符位置) 只要数据来了就直接对数据进行封装并发送,只有在窗口被消耗为零的情况下才停止发送 将没有被acknowledge的数据包存储起来,在超时的时候进行发送 实现细节 对于超时重传的时间判断,使用已经提供的tick()函数,每次调用的时候传入多 2022-12-03 知识记录 #cs144 #network
CS144-Lab2 计算机网络:TCP Receiver的实现TCP Receiver Index和Seqno的转换 为了节省在TCP Header当中的空间,在StreamReassembler里面写的index虽然是一个uint64_t的类型,但是在实际的Header中是使用一个uint32_t的seqno来进行标记位置的。对于uint32_t的seqno和uint64_t的index的相互转换则是通过以4GiB (2^32 bytes)为一个长度进 2022-11-22 知识记录 #cs144 #network
CS144-Lab1 计算机网络:字节流重组器思路总结 有问题的方案 这个方案是采用了一个无限长的字符串cache,所有的TCP段中的部分数据先寄存在cache当中。之后通过创建一个在cache上滑动的写入位指针write_p来将能够顺序写入的内容写入_output当中,其中write_p每次滑动的距离len受限于_output还剩下的可容纳空间。 添加的私有成员: 12345678// 用于存放缓存std::string cache; 2022-11-07 知识记录 #cs144 #network
CS144-Lab0 计算机网络:流的输入和读出热身 lab0前后分为两个较为简单的小任务,第一个任务是写一个类似telnet中通信的webget小应用,第二个任务是实现一个简单的ByteStream的类,只需要在单线程的情况下能正常运行即可 任务一 第一个任务的参考主要是从项目文件本身的doctests开始着手,其中在提示中已经说了我们将会使用到TCPSocket和Address,在对应的doctests/socket_example_2 2022-10-29 知识记录 #cs144 #network
ArchWSL安装及基础配置准备工作 在Windows上安装ArchWSL直接使用scoop来安装是比较便捷的一种方案,具体如何在Windows上配置·scoop`可以参考这篇教程: Windows上通过Scoop管理和安装软件 在配置好了scoop以后,首先通过以下指令安装ArchWSL 1scoop install archwsl 只要按正常流程,按win+s,通过Windows搜索找“Turn Windows f 2022-07-09 安装引导 #WSL #Arch