lab0
- check web_get
prepare:
如何检查环境设置是否到位呢?
我们可以尝试用telnet命令
telnet cs144.keithw.org http
观察到如下打印:
而后输入
GET /hello HTTP/1.1
Host: cs144.keithw.org
Connection: close
键入空格,告诉服务端http请求结束, 回显如下
根据教程配置好环境后,将github 仓库关联到本地上,以后提交代码用git push github
实现
lab0是一个热身,读一下框架的代码,构造一个request即可,而后将response回显,测试:
seems ok
自动测试一下:
通过
格式
注意!
交作业前,用
cmake --build build --target tidy
来检查代码风格
cmake --build build --target format
格式化代码
- An in-memory reliable byte stream
实现一个字节流,不用考虑线程安全
Your byte stream is for use in a single thread—you don’t have to worry about concurrent writers/readers, locking, or race conditions.
既然只是单线程的话,是比较好处理的,一开始没有明白每个函数要做什么,后面看了下测试用例才搞清楚。
这里选择下数据结构。首先尝试用deque去做缓存,但是性能比较差,最后使用的是 std::queue<string>
来做缓存结构。
如果是多线程的话,那要考虑什么呢?
- condition race — 存在race的数据都需要用原子变量声明及操作
- 考虑函数的可重入问题,并发的函数都需要是可重入的
- buffer 考虑到性能应做成无锁队列
- …
反复尝试后通过测试:
commit前记得规范下格式
cmake --build build --target tidy
cmake --build build --target format
提交完成
lab0 warm up 结束