Day: 2022年10月7日

HTTP2 下的 Transfer-Encoding: chunked

在 HTTP 中传输数据有一个 chunked 的方式, 又称“分块传输”。在响应报文里用头字段Transfer-Encoding: chunked 来表示。意思是报文里的 body 部分不是一次性发过来的,而是分成了许多的块(chunk)逐个发送。而 HTTP2.0 协议作为 HTTP协议的升级,自然是对chunked模式做支持?不然!

HTTP2 是没有 chunked 的!

分块传输也可以用于“流式数据”,例如由数据库动态生成的表单页面,这种情况下 body 数据的长度是未知的,无法在头字段“Content-Length”里给出确切的长度,所以也只能用 chunked 方式分块发送。

chunked 的编码规则

  • 每个分块包含两个部分,长度头和数据块;
  • 长度头是以 CRLF(回车换行,即rn)结尾的一行明文,用 16 进制数字表示长度;
  • 数据块紧跟在长度头后,最后也用 CRLF 结尾,但数据不包含 CRLF;
  • 最后用一个长度为 0 的块表示结束,即“0rnrn”

HTTP2 下的分块传输

先说结论,HTTP2 是不支持 

写出清晰代码的六条规则

让我们看看如何通过最小化变量的可见性来防止意大利面条代码现象的一些建议。

我们的目标是尽可能减少变量在源代码中可见的代码部分,即减少变量的范围

范围最小化是一种结构化代码的过程,它很容易:

  • 声明具有最小范围的变量,并且
  • 为变量分配具有最小范围的数据。

事实上,定义变量可见性的是代码结构。

解决Chrome浏览器翻译无法使用

由于谷歌翻译退出中国,目前,谷歌浏览器Chrome的翻译功能也无法使用,根据科技博客TechCrunch的消息称,谷歌发言人通过电子邮件告诉TechCrunch,该公司由于“使用率低”的原因,已停止中国大陆的谷歌翻译服务。这一变化也影响了中国用户曾经可以使用的谷歌浏览器Chrome内置翻译功能。

不过,由于用户访问英文或其他语言网页,非常需要浏览器内置的翻译功能,这里就介绍一下解决方法。

修改本地的hosts文件:

hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定。当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,浏览器会立即打开对应网页。

hosts文件位于 C:\Windows\System32\drivers\etc 。复制路径,打开桌面上的计算机图标,地址栏点击右键粘贴并按回车,即可访问。

右键点击hosts文件,在右键菜单点击opendlg,选择使用“记事本”打开。

在文件的结尾加上一行后保存关闭。

特定IP地址 translate.googleapis.com

其中“特定IP地址”是一个可用的translate.googleapis.com的IP地址,由于该地址可能会经常变化,并且不宜广泛传播,因此请通过以下方法获取:

扫描下面二维码订阅微信公众号“月光博客” (名称是 williamlonginfo ),之后发送信息“谷歌翻译”,即可获得“特定IP地址”,将该IP地址加入hosts文件,谷歌浏览器Chrome的翻译功能就可以正常使用了。

如果不知道怎么修改各个操作系统的Hosts文件,请参考这篇文章《月光博客:编辑Hosts文件的方法

 

linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性

uned简介

对普通用户而言,Linux应用环境优化是比较困难的。领域多,范围广:CPU、存储、缓存策略、内存管理等涉及的参数。Linux内部虽然有默认设置值,可以应对大多数的情况场景,但是针对一些特殊场景,例如高性能、高并发和高可用的系统,就需要我们进行调整。本文介绍的tuned特性就是目前Linux系统上常用的一种调优特性。…