【Linux命令】- 性能监控

使用操作系统的过程中,我们经常需要查看当前的性能如何,需要了解 CPU、内存和硬盘的使用情况;
本节介绍的这几个工具能满足日常工作要求;

监控 CPU

1
top

查询内存

1
free -m

【Linux命令】- 文本处理

find 文件查找

find 默认是会把所有目录和文件都一起输出,除非加了type -f,此时就只会输出文件,type -d,此时就只会输出目录

查找 txt 和 pdf 文件

1
2
3
4
find ./ \( -name "*.php" -o -name "*.p" \)
find ./ \( -name "*.php" -or -name "*.p" \)
// 同时包含命名
find ./ \( -name "*.php" -and -name "*.p" \)

正则方式查找.txt 和.pdf

1
find ./ -regex ".*\(php\|p\)"
  • iregex:忽略大小写的正则

否定参数,查找所有非 txt 文件

1
find ./ -name "*.txtx"

指定搜索深度,打印出当前目录的文件(深度为 1,默认为 1):

1
find ./ -maxdepth 1 -type f

【Linux命令】- 文件及目录管理

创建和删除

  • 创建:mkdir
  • 删除:rm
  • 删除目录(递归+强制):rm -rf dir
  • 删除文件(强制) rm -f file
  • 删除统一后缀 rm *log(等价于:find ./ -name "*log" -exec rm -f {}find ./ -name "*.log" -exec rm -f {} \;)(注意,\;必须加,否则报错)
  • 移动:mv file
  • 复制(目录):cp(-r) file[dir]

查看当前目录下的文件个数

find ./ | wc -l

复制目录:

【基础算法】- 排序 - 直接插入排序

说明

直接插入排序算法

  • 稳定排序

PHP 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Insert
{
public function __invoke(array $args)
{
$length = count($args);
for ($i = 1; $i < $length; $i++) {
if ($args[$i] < $args[$i - 1]) {
$k = $args[$i];
for ($j = $i - 1; $j >= 0 && $args[$j] > $k; $j--) {
$args[$j + 1] = $args[$j];
}
$args[$j + 1] = $k;
}
}
return $args;
}
}

$data = [3, 5, 1, 2, 8, 6, 7, 9];

$sort = new Insert();
$sortData = $sort($data);

print_r($sortData);

【基础算法】- 排序 - 快排

说明

快排算法,比普通的冒泡排序要快,原因说明将在时间复杂度和空间复杂度的文章中说明。

PHP 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php

/**
* Created by PhpStorm.
* User: admin
* Date: 2018/2/24
* Time: 9:39
*/
class Quick
{
public function __invoke(array $args)
{
$length = count($args);
if ($length < 1) {
return;
}
$this->quickSort($args, 0, $length - 1);

return $args;
}

public function quickSort(array &$args, int $low, int $high)
{
if ($low > $high) {
return;
}

$frist = $low;
$last = $high;
$k = $args[$low];

// $i = 0;
while ($frist < $last) {
// $i++;
while ($frist < $last && $args[$last] >= $k) {
$last--;
}
$args[$frist] = $args[$last];
// echo '[' . $i . ']last -- : $frist ' . $frist . ' . $last ' . $last . PHP_EOL;
// foreach ($args as $value){
// echo $value . ' ';
// }
echo PHP_EOL;
while ($frist < $last && $args[$frist] <= $k) {
$frist++;
}
$args[$last] = $args[$frist];

// echo '[' . $i . ']last -- : $frist ' . $frist . ' . $last ' . $last . PHP_EOL;
// foreach ($args as $value){
// echo $value . ' ';
// }
// echo PHP_EOL;
}

$args[$frist] = $k;
// print_r($args);
// exit;
$this->quickSort($args, $low, $frist - 1);
$this->quickSort($args, $frist + 1, $high);
}
}

$data = [3, 5, 1, 2, 8, 6, 7, 9];

$sort = new Quick();
$sortData = $sort($data);

print_r($sortData);

【基础算法】- 排序 - 冒泡

说明

感觉一些基础的排序算法,貌似我的博客并没有说明,虽然我也很多了,但是还会记录一下,和大家分享一下,并且终结一下我每次的写排序算法的心得。

先贴代码,再讲原理。

PHP 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Bubble
{
public function __invoke(array $args)
{
$length = count($args);
for ($i = 0; $i < $length - 1; $i++) {
for ($j = 0; $j < $length - 1 - $i; $j++) {
if ($args[$j] > $args[$j + 1]) {
$tmp = $args[$j];
$args[$j] = $args[$j + 1];
$args[$j + 1] = $tmp;
}
}
}
return $args;
}
}

$data = [3, 5, 1, 2, 8, 6, 7, 9];

$sort = new Bubble();
$sortData = $sort($data);

print_r($sortData);

【Mongodb】- 知识整理

说明

Mongodb 作为 nosql 数据库的代表,和传统的 mysql 的关系型数据库不同,他的数据结构只有一种,那就是 BSON,没有固定的 schema,所以他是 no schema 的数据存储方式。

需要注意的是,Mongodb 只支持单文档事务,所以用到的业务中不应该有事务性强的数据源。

这么说比较直白。具体举例几个应用场景:

  • 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新

  • 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

  • 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能

等等

【Redis】- 配置管理

说明

redis 的常用知识就不详细说了。记录一下我认为值得记录的知识点

基本常用的配置参数、命令

  1. daemonize no
    配置 redis 是否以守护进程的方式运行,默认 no
    pidfile /var/run/redis.pid

  2. Redis 以守护进程方式运行时,pid 的写入文件。默认为/var/run/redis.pid

  3. port 6379
    监听端口,默认为 6379

  4. bind 127.0.0.1
    绑定的主机地址

  5. timeout 300
    客户端限制多长时间后关闭连接

  6. loglevel verbose
    日志级别,支持 debug/verbos/notice/warning,默认为 verbose