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 。
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?#