第3期 ARTS 打卡计划

2020-06-09 15:10:48 浏览数 (1)

ARTS 起源

关于 ARTS:一个需要持续地坚持的高效学习项目,每周写一个ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。

本周 ARTS:

  • Algorithm: 移动零
  • Review: The 7 most important software design patterns
  • Tip: 使用 ab 对 HTTP 接口快速压测
  • Share: 如何用 Docker 快速搭建 MySQL 主从

Algorithm:移动零

来源:283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/move-zeroes 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:双指针法
  • 定义变量 k 为末位的非零元素位置,初始值为 0,i 为遍历数组的首位置;
  • 遍历数组时,如果遇到零元素则跳过当前循环,遇到非零元素时就将所在项的值赋值给 k 位置元素;
  • 如果存在零元素, k 与 i 就会不一致,此时就将 i 位置的元素赋值为 0,相当于i 位置元素与 k 位置元素交换;
  • 最后末位的非零元素位置后移,即 k 。
代码语言:javascript复制
class Solution {

    public void moveZeroes(int[] nums) {
        int k = 0;
        for (int i = 0; i < nums.length; i  ) {
            if (nums[i] != 0) {
                nums[k] = nums[i];
                if (i != k) {
                    nums[i] = 0;
                }
                k  ;
            }
        }
    }
}

时间复杂度:O(N)

Review:The 7 most important software design patterns

原文来源:medium

https://www.educative.io/blog/the-7-most-important-software-design-patterns

阅读评论:最常用的设计模式介绍

文章介绍了7个最常用的设计模式,单例模式,工厂模式,策略模式,适配器模式,状态模式,观察者模式的关键点和使用场景。

Tip:使用 ab 对 HTTP 接口快速压测

主题:ab 进行性能测试快速上手

首先介绍下什么是 ab: 全称为 Apache Bench,是 Apache HTTP 服务器专门用来对服务进行基准测试的性能测试工具,属于 httpd-tools 包的一部分,专门用于测试 Web 服务,并且上手容易,使用简单,特别适合我们对单个接口进行性能测试和高并发测试。 下面再介绍下 Linux 环境下 ab 的安装和常见用法。 使用 yum 安装 yum -y install httpd-tools ,安装完成后输入 ab 命令,看到以下提示表示安装完成:

接下来看下如何分别对 GET 接口和 POST 接口进行测试:

  • GET 请求测试 ab -c 10 -n 100 https://www.baidu.com/
  • POST 请求测试 ab -n 100 -c 10 -p 'post.txt' -T 'application/x-www-form-urlencoded' 'http://test.api.com/test/register' 其中 post.txt 内容为 POST 请求参数:usernanme=test&password=test&sex=1 。 这里再说明下上述 ab 命令所用到的参数:
  • -n:总请求次数,默认为 1;
  • -c:并发次数,默认为 1,不能超过总请求次数,比如发起 100 个请求要求100 个并发,实际就是 1 人 1 次请求。
  • -p:指定 post 参数文档路径
  • -T:指定 header 头文件参数

更多的其他参数使用方式可以参考命名 ab -help 。 最后再来命令执行后的输出内容,针对几个重要的参数指标进行说明。

  • Time taken for tests:完成所有请求所花的时间
  • Requests per second:吞吐率,表示当前并发次数下 1 秒时间内处理的请求数。
  • Time per request:用户平均请求等待时间和服务器平均请求处理时间
  • Percentage of the requests served within a certain time:所有请求的时间分布情况
参考资料
  • ab 官方文档:https://httpd.apache.org/docs/2.4/programs/ab.html

Share:如何用 Docker 快速搭建 MySQL 主从

主题:Docker,MySQL 主从

介绍了如何使用 Docker 容器技术快递搭建 MySQL 主从架构。

文章地址

https://www.yuque.com/docs/share/92cc8140-72e9-43a8-b38f-85de9f04ab0a?#

0 人点赞