cs144 lab0 warmup

lab0

https://cs144.github.io

  1. 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

格式化代码

  1. 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 结束

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇