- 博客(24)
- 收藏
- 关注
原创 lab前言简介(必读)
文件说明apps # 应用层函数CMakeLists.txt # 构建脚本doctests # 内置函数测试脚本libsponge # 应用层函数tests # lab测试脚本build # 构建文件compile_commands.json # 编译命令etc # 配置文件README.md # 使用文档writeups # lab0-4的文档极详细文档使用说明创建build文件夹自动生成makefilecmake ..构建make运行可执行文件。
2023-04-07 19:33:12 177
原创 Lab3 the TCP sender
在lab0中,我我们实现了ByteStream这个类似于socket的抽象在lab1中,我们实现了字节重组器,将乱序、重复、丢失的字符串重组成一个字节流。在lab2中,我们将把到来的数据报转换成可靠的字节流。在lab3中,我们实现了整个TCP接收端,用于接收数据,返回ackno()和窗口大小。
2023-04-07 19:22:25 125
原创 Lab1 stitching substrings into a byte stream
在lab0中,我们用了socket接口获取网页和发送邮件信息,基于linux内置的TCP协议。同样我们实现了ByteStream这个类似于socket的抽象在接下来的四周里,你将实现TCP去提供不同主机之间的可靠字节流。向ByteStream写入数据TCPSender在合适时机将数据发出收到ack时,将改变发送窗口的大小添加seqno、SYN、payload、FIN、端口号等得到数据报将数据报加上ip头部发送到网络层。
2023-04-07 19:20:53 142
原创 Lab4 the TCP Connection
在lab0中,我们实现了字节流的抽象ByteStream在lab1,lab2,lab3中,我们实现了TCP发送端和接收端在lab4中,你将会实现一个叫做TCPConnection的一个重要的模块,将TCP发送端和接收端结合在一起处理连接问题,用来解决和其他计算机的通信问题。
2023-04-07 19:20:45 140
原创 Lab0 networking warmup
在完成实验前,你最好阅读完所有的文档在接下来的八个实验中,你将要实现互联网中几个重要的部分:路由器、网络接口,TCP协议在接下来的四周里,你将实现TCP去提供不同主机之间的可靠字节流。这里的实验不是唯一的,当你发现实验过程中有歧义时,也可以有自己的实现。
2023-04-07 19:19:07 141
原创 Lab 2 the TCP receiver
在lab0中,我我们实现了ByteStream这个类似于socket的抽象在lab1中,我们实现了字节重组器,将乱序、重复、丢失的字符串重组成一个字节流。在lab2中,我们将把到来的数据报转换成可靠的字节流。数据报从网络层过来,调用segment_received方法调用StreamReassembler重组字节流,将重组好的字符串写到ByteStream中最后应用层从ByteStream读取数据。
2023-04-07 19:19:05 74
原创 正则表达式
正则表达式入门基础入门关于正则表达式匹配中由字符匹配符号和次数匹配符号两种。字符匹配符号为: ‘.’ ‘[]’ ‘^’次数匹配符号为 :’+’ ‘*’ ‘?’ ’{}‘如需要查找A字符出现B次的字符串,那么就需要字符匹配符号和次数匹配符号组合。’ . ’ 匹配任意一个字符’ + ’ 匹配1或多次出现的字符’ ? ’ 匹配0-1次出现的字符’ * ‘ 匹配0次或者多次出现的字符* [Pp]ython 匹配python和Python* [a-
2022-03-29 16:23:29 417
原创 高级软件工程复习资料大全
1.概述功能 用例图结构 业务类图形式 数据模式高质量需求的特点有哪些需求类型需求分析的两类基本方法用例满足的四个必要条件统一过程的核心要义是什么模块化的基本原理本地化外部接口是什么含义接口的5个基本要素通用接口定义的基本方法依赖倒置原则的含义及其应用价值MVC架构为什么更灵活以及MVVM架构为什么更智能(10分)执行视图、部署视图、分解视图没有银弹的含义简述v模型团队强度和项目特点的关系简述敏
2022-03-29 16:21:08 1204
原创 高级软件工程 c语言实现多态
第五次作业 需要自己编写一个程序来使用链表接口用c语言实现多态。其中Linktable.h和Linktable.c文件可以借鉴前面lab中的文件,自己需要实现一个程序,作用是调用Linktable的接口来实现数据的存储和读取,实现了对于数据增加、删除、查找以及遍历的功能,最后得到的结果如下。 总体来说主要分为以下三个程序:Linktable.h#ifndef _LINK_TABLE_H_#define _LINK_TABLE_H_#define SUCCESS 0#define
2022-03-29 16:20:06 884
原创 高级软件工程 回调函数
回调函数(callback函数)1.函数的名字可作为参数。2.函数名作为参数传递给其他函数。作用:1.恰当时机发通知2.让程序设计更加灵活3.提高效率编译运行:使用gcccd xxx/lab4 gcc menu.c linktable.c -o menu -lpthread # lab5.1 5.2同样可以使用这个命令配置launch.json和task.json其中launch.json的配置与作业3一样,修改task.json如下即可:{
2022-03-29 16:17:03 146
原创 高级软件工程 VScode开发环境搭建
作业三:VScode开发环境搭建1.开发环境搭建安装mingw-x64编译器(GCC for windows64), Cmake工具(选装)可自行去官网下载设置环境变量,并检查是否成功进入cmd:gdb -v gcc -v // 如果出现版本号即为配置成功VSCode插件安装c/c++cmake(选装)cmake tools(选装)2.配置launch.json和task.json文件需要懂一些基本的makefile或者cmake文件的语法,可自行学习
2022-03-29 09:55:56 291
原创 高级软件工程 正则表达式
回顾: 先说说课件上这个练习题吧,这题我想了挺久,还是有难度的。• 你需要检查数据库中的所有用户名。以下是创建用户名时用户必须遵循的一些简单规则。•(1)用户名中唯一的数字必须在末尾。末尾可以有零个或多个数字。•(2)用户名字母可以是小写和大写,用户名只有数字和大小写字母组成。•(3)用户名必须至少有两个字符长度。双字母用户名只能使用字母表的字母字符。•写出正则表达式以符合上面列出的规则。解答: 首先第1个条件表达不清,应该理解成用户名中的数字必须在末尾,并且末尾有0或者多个数字。除此
2022-03-28 22:28:34 110
原创 高级软件工程 git rebase操作
第一次作业实时查看git提交生成树 1. 在线学习网站,windows,linux均可,可用于自己测试。 https://learngitbranching.js.org/?locale=zh_CN 2. 如用linux操作系统,可使用gitk --all命令查看提交历史。如没有gitk也可使用命令sudo apt-get install gitk则需提前安装。 3. 如用windows系统,自行安装git bash,可直接使用命令gitk --all查看提交记录。实现上图所示的提交生成树
2022-03-28 22:27:01 433
原创 形式化方法 Assignment 8: Symbolic execution
LAB8 符号执行 这里主要讨论三个部分,操作语义、符号执行、并行执行。Part A Concrete execution B ::= + | - | * | / | == | != | > | < | >= | <= E ::= n | x | E B E S ::= pass | x = E | seq(S, S) | f(E1, ..., En) | if(E, S, S)
2022-03-28 21:54:22 863
原创 形式化方法 Assignment 7: Theories for Data Structures
LAB7 数据结构理论Part A bit vectorsexercise 1运行如下代码,解释输出。x, y = BitVecs('x y', 2)solve(x+y==9) 得到的结果如下为,[y = 0, x = 1], 由于定义一个两位的位向量,而9明显超过了2bit的表示范围,所以有(x + y) % 4 == 9 % 4,即为(x + y) % 4 == 1, 因此z3得到结果x = 1, y = 0, 满足题意。exercise 2lab2需要实现一个计数器,实现对于一个B
2022-03-28 21:53:25 791
原创 形式化方法 Assignment 6: Linear arithmetic
LAB6 线性算法linear arithmetic 线性算法linear programming 线性规划作业共分为三个部分第一部分介绍了LA/LP理论的基本背景知识第二部分介绍了LA/LP理论的应用,解决了一些NPC问题第三部分包括解决一些复杂的问题PartA 基础线性算法理论exercise1x, y = Reals('x y')solver = Solver()solver.add(x + y == 0.8, x - y == 0.2)res = solver.che
2022-03-28 21:52:43 572
原创 二分法模板大全
最近看了看刷了刷二分的题目,发现自己对于二分的理解还不够透彻,参考了其他大佬的资料再加上自己的总结,重新手写了一遍二分的模板,具体模板如下:#include <bits/stdc++.h> using namespace std;//返回小于等于num的第一个数字 int bs_1(int arr[], int num, int l, int r){ while (l < r){ int mid = (l + r) / 2; if (arr[mid] >= nu
2021-02-09 15:52:01 346
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人