Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARTS 第四周(2019.7.22~2019.7.28) #4

Open
catcuts opened this issue Jul 29, 2019 · 0 comments
Open

ARTS 第四周(2019.7.22~2019.7.28) #4

catcuts opened this issue Jul 29, 2019 · 0 comments
Labels

Comments

@catcuts
Copy link
Owner

catcuts commented Jul 29, 2019

ARTS 第四周(2019.7.22~2019.7.28)

Algorithm 反转字符串

题目:

反转字符串

代码

/**
 * @param {character[]} s
 * @return {void} Do not return anything, modify s in-place instead.
 */
var reverseString = function(s) {
    let len = s.length;
    for (let i = ~~(len / 2); i--;) {
        let left = i, right = len - 1 - i;
        [s[left], s[right]] = [s[right], s[left]];
    }
};

思路:
两头遍历,成对交换。

对比:
与高分对比:
本代码运行 478 个测试用例花费约 172ms,平均一个测试用例约 2.78ms;
高分代码运行 478 个测试用例花费约 172ms,平均一个测试用例约 2.78ms。

附最高分代码:

/**
 * @param {character[]} s
 * @return {void} Do not return anything, modify s in-place instead.
 */
var reverseString = function(s) {
    return s.reverse();
};

相当于自己实现了内置函数 reverse 的功能。

Review 迁移到 HTTP/2 的理由

阅读:
Migrating your REST APIs to HTTP/2: Why and How?

点评:
天下苦 HTTP/1.x 久矣。

受制于浏览器对多路请求的限制、TCP 的慢启动、HTTP/1.x的大头部文本传输以及单向通讯,我们常常不能体验到大宽带所能带来的快感。

HTTP/2.0 的推出,解决了上述这些问题,带来了网络上的飞一般体验。

为什么要尽快迁移到 HTTP/2.0,有如下理由:

  1. 多路复用Multiplexing:允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息;
  2. 二进制分帧Binary Framing:分帧层将信息分割为更小的消息和帧(frame),并对它们采用二进制格式的编码,让所有数据流共用同一个连接;
  3. 首部压缩Header Compression:用 HPACK 算法压缩首部,对带有 cookie 的大首部特别有效;
  4. 服务端推送Server Push:允许服务器对客户端的一个请求发送多个响应,主动为客户端提供所需文件,并且可以更新客户端缓存

不过 Express.js 似乎还不支持 HTTP/2,见:
HTTP/2 support in Express
Express.js Release 5.0

拓展阅读:
HTTP/2.0 相比1.0有哪些重大改进? - 知乎

Tip Linux find 按文件最后访问/状态修改/内容修改时间查找文件

  • 概念

  时间概念包括:某个时间点前、某个时间段内、某个时间点前的某个时间段内。

  1. 某个时间点前(+n):某个时间点之前的时间段内,是一段时间内;

  2. 某个时间段内(-n):某个时间段内,也是一段时间内;

  3. 某个时间点前的某个时间段内(n):某个时间点之前的某个时间段内,也是一段时间内;

  文件操作包括:访问、状态修改、内容修改。

  1. 访问(-atime):access time;

  2. 状态修改(-ctime):change time;

  3. 内容修改(-mtime):modify time;

  • 用法
  1. 查找 n+1 天前 内容修改的文件:find /path/to/dir -mtime +n

  2. 查找 n 天内 内容修改的文件:find /path/to/dir -mtime -n

  3. 查找 n+1 天前的 n 天内 内容修改的文件:find /path/to/dir -mtime n

  • 参考
  1. Linux:find 按文件修改时间查找文件

Share HTTP/2.0 相比1.0有哪些重大改进?

分享一篇知乎技术问答关于 HTTP/2.0 相比1.0有哪些重大改进?

@catcuts catcuts added the ARTS label Jul 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant