摘要:
CS144 Lab2 开始有点痛苦了,因为文档给的并不全面,光读文档是没法覆盖所有的test case的,有太多的业务逻辑要自己考虑。接下来分别就几个难点总结一下: SYN/FIN 有几种情况要特判: 当前没收到过SYN,要拒绝所有的segment 当前收到过SYN了,又收到了新的SYN,这得拒绝 阅读全文
摘要:
shared_ptr shared_ptr主要是维护裸指针和计数器,除了基本的构造函数和析构函数外,还要重载:赋值、拷贝、解引用。 #include<iostream> template <typename T> class shared_ptr{ private: T* ptr; size_t* 阅读全文
摘要:
lab1 这次作业主要完成两个类 StreamReassembler 和 ByteStream。我的思路是每读入数据就O(n)扫一遍,用map维护每个index对应的数据,用一个指针指向当前需要写入值的位置,不断向后移动。原本没深刻认识到overleap的含义,记录的是整串string,然而测试数据 阅读全文
摘要:
CS144 Lab0 0 热身 手动给网站发请求 在终端依次输入以下命令: telnet cs144.keithw.org http GET /hello HTTP/1.1 //这是在告诉服务url部分 Host: cs144.keithw.org //这是在告诉服务host path Connec 阅读全文
摘要:
尝试在“新建连接后,把连接交给SubReactor负责”这一环节写一个新的调度算法,而非取余后随机调度,过程中遇到了以下问题。 1.epoll wait 解决方案:根据返回的信号判断是否重新调用。有的错误并不会影响程序运行,开发时虽然都要抛出异常,但其实可以等等再重连。 代码修改为: std::ve 阅读全文
摘要:
《网络是怎样连接的》 设备:集线器/路由器/交换机 发送者发出的消息首先经过子网中的集线器,转发到距离发送者最近的路由器上。 集线器:工作在第一层,原理是向所有端口进行广播,后来被交换机取代。 交换机工作在第二层,原理是根据Mac地址有选择地转发。 而路由器则工作在第三层,能根据IP地址转发到不同的 阅读全文
摘要:
计算机如何启动(bios) BIOS先加电自检(键鼠、cpu等),再初始化设备(IO端口地址、分配中断请求线等),接下来加载引导程序并移交控制权。 中断与内核 硬中断软中断 中断处理程序的上部分和下半部可以理解为: 上半部直接处理硬件请求,也就是硬中断,主要是负责耗时短的工作,特点是快速执行; 下半 阅读全文
摘要:
原github传送门:https://github.com/yuesong-feng/30dayMakeCppServer/tree/main 感谢每一位写教程的人,此处记录我的学习过程和清晰易懂的知识点补充。 你要愿意的话,看我的也可以^_^ Day01从最简单的socket开始 前置知识: ma 阅读全文
摘要:
Github传送门:https://github.com/miloyip/json-tutorial 记录自己做这个项目的过程 是的,在很久以前就开始想做这个东西,但是鸽了很久..终于又重新开始学了:p Part1 较为简单,略。 Part2 task 1.重构合并 lept_parse_null( 阅读全文
摘要:
传送门:2024-2025 ICPC Northwestern European Regional Programming Contest (NWERC 2024) 欧洲区域赛,希望以后有机会能打现场。 A - Alphabetical Aristocrats 签到题,根据题意模拟 #include 阅读全文