mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2024-11-14 21:11:31 +08:00
Merge pull request #318 from spartucus/master
refactor some translations
This commit is contained in:
commit
f2d1e9385b
@ -30,15 +30,15 @@ Rust 也为系统编程世界带来了现代化的开发工具:
|
||||
|
||||
### 学生
|
||||
|
||||
Rust 适用于学生和任何对学习操作系统概念感兴趣的人。通过 Rust,很多人已经了解了像操作系统开发这样的主题。社区非常欢迎并乐于解答学生们的问题。通过类似于本书这样的努力,Rust 团队希望更多人了解操作系统的概念,特别是编程新手。
|
||||
Rust 适用于学生和有兴趣学习系统概念的人。通过 Rust,很多人已经了解了操作系统开发等主题。社区非常欢迎和乐于解答学生们的问题。通过本书的努力,Rust 团队希望系统概念能被更多人了解,特别是编程新手。
|
||||
|
||||
### 公司
|
||||
|
||||
数以百计的公司,无论规模大小,正将 Rust 用于生产环境中的多种任务。这些任务包括命令行工具、web 服务、DevOps 工具、嵌入式设备、音视频分析与转码、数字货币(cryptocurrencies)、生物信息学(bioinformatics)、搜索引擎、物联网(internet of things, IOT)程序、机器学习,甚至还包括 Firefox 浏览器的大部分内容。
|
||||
数以百计的公司,无论规模大小,都在生产中使用Rust来完成各种任务。这些任务包括命令行工具、web 服务、DevOps 工具、嵌入式设备、音视频分析与转码、加密货币(cryptocurrencies)、生物信息学(bioinformatics)、搜索引擎、物联网(internet of things, IOT)程序、机器学习,甚至还包括 Firefox 浏览器的大部分内容。
|
||||
|
||||
### 开源开发者
|
||||
|
||||
Rust 适用于希望构建 Rust 编程语言、社区、开发工具和库的开发者。我们期望你为 Rust 语言做贡献。
|
||||
Rust 适用于希望构建 Rust 编程语言、社区、开发工具和库的开发者。我们很乐意您为 Rust 语言做贡献。
|
||||
|
||||
### 重视速度和稳定性的开发者
|
||||
|
||||
@ -68,7 +68,7 @@ Rust 语言也希望能支持很多其他用户,这里提及的只是最大的
|
||||
|
||||
第十六章会学习不同的并发编程模型,并讨论 Rust 如何助你无畏的编写多线程程序。第十七章着眼于比较 Rust 风格与你可能熟悉的面向对象编程原则。
|
||||
|
||||
第十八章是一个模式与模式匹配的参考章节,他们是在整个 Rust 程序中表达意图的强大方式。第十九章是一个高级主题大杂烩,包括 unsafe Rust、宏和更多关于生命周期、 trait、类型、函数和闭包的内容。
|
||||
第十八章是关于模式和模式匹配的参考章节,它是在Rust程序中表达思想的有效方式。第十九章是一个高级主题大杂烩,包括 unsafe Rust、宏和更多关于生命周期、 trait、类型、函数和闭包的内容。
|
||||
|
||||
第二十章将会完成一个项目,我们会实现一个底层的、多线程的 web server!
|
||||
|
||||
|
@ -142,7 +142,7 @@ message-body
|
||||
|
||||
请求行接下来的部分是 */*,它代表客户端请求的 **统一资源标识符**(*Uniform Resource Identifier*,*URI*) —— URI 大体上类似,但也不完全类似于 URL(**统一资源定位符**,*Uniform Resource Locators*)。URI 和 URL 之间的区别对于本章的目的来说并不重要,不过 HTTP 规范使用术语 URI,所以这里可以简单的将 URL 理解为 URI。
|
||||
|
||||
最后,是客户端使用的 HTTP 版本,接着请求行以一个 **CRLF 序列**(CRLF 是**回车**,*carriage return* 和 **换行**,*line feed* 的缩写,这些术语来自打字机时代!)结尾。结尾。CRLF 序列也可以写作 `\r\n`:`\r` 是回车而 `\n` 是换行。CRLF 序列将请求行与其余的请求数据分开。注意当 CRLF 被打印时,会看到开始了一个新行而不是 `\r\n`。
|
||||
最后一部分是客户端使用的HTTP版本,然后请求行以 **CRLF序列** (CRLF代表回车和换行,*carriage return line feed*,这是打字机时代的术语!)结束。CRLF序列也可以写成`\r\n`,其中`\r`是回车符,`\n`是换行符。 CRLF序列将请求行与其余请求数据分开。 请注意,打印CRLF时,我们会看到一个新行,而不是`\r\n`。
|
||||
|
||||
观察目前运行程序所接收到的数据的请求行,可以看到 `GET` 是 method,*/* 是请求 URI,而 `HTTP/1.1` 是版本。
|
||||
|
||||
|
@ -45,9 +45,9 @@ fn handle_connection(mut stream: TcpStream) {
|
||||
|
||||
这段代码有些凌乱,不过对于模拟的目的来说已经足够。这里创建了第二个请求 `sleep`,我们会识别其数据。在 `if` 块之后增加了一个 `else if` 来检查 */sleep* 请求,当接收到这个请求时,在渲染成功 HTML 页面之前会先休眠五秒。
|
||||
|
||||
现在就可以真切的看出我们的 server 有多么的原始;真实的库将会以更简洁的方式处理多请求识别问题!
|
||||
现在就可以真切的看出我们的 server 有多么的原始:真实的库将会以更简洁的方式处理多请求识别问题!
|
||||
|
||||
使用 `cargo run` 启动 server,并接着打开两个浏览器窗口:一个请求 *http://127.0.0.1:7878/* 而另一个请求 *http://127.0.0.1:7878/sleep*。如果像之前一样多次请求 */*,会发现响应的比较快速。不过如果请求 */sleep* 之后在请求 */*,就会看到 */* 会等待直到 `sleep` 休眠完五秒之后才出现。
|
||||
使用 `cargo run` 启动 server,并接着打开两个浏览器窗口:一个请求 *http://127.0.0.1:7878/* 而另一个请求 *http://127.0.0.1:7878/sleep* 。如果像之前一样多次请求 */*,会发现响应的比较快速。不过如果请求 */sleep* 之后在请求 */*,就会看到 */* 会等待直到 `sleep` 休眠完五秒之后才出现。
|
||||
|
||||
这里有多种办法来改变我们的 web server 使其避免所有请求都排在慢请求之后;我们将要实现的一个便是线程池。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user