博客

  • K9068 广州->佛山

    看百度地图心血来潮,决定不坐地铁,改乘火车回佛山,编号K9068,票价¥9。

    我从广州站出发,本以为暑期旅游专线会人满为患,没想到车上乘客基本都在广州下车,上车发现车厢里空空荡荡,几乎只有我一人(又可以包车^_^)。可是上车后我没习惯性地掏出手机到处拍,因为车厢卫生实在太难以形容,弥漫着方便面的气味。

    虽然只有短短的二十分钟车程,但这趟旅程让我感受到了不同于地铁的体验。没有拥挤的人潮,没有匆忙的脚步,只有窗外飞逝的风景和车厢里难得的宁静。

    列车到达佛山站。只见零星几个旅客下车。这也是我第一次来到佛山站,一个中式风格的老旧火车站。总体感觉还好,主要车程短人还少。

  • Linux 常用命令完整大全

    目录

    1. 文件与目录操作
    2. 文件查看/编辑
    3. 权限与用户组
    4. 进程与系统监控
    5. 磁盘/挂载/文件系统
    6. 网络操作
    7. 软件包管理(CentOS/RHEL & Ubuntu/Debian)
    8. 压缩解压
    9. 文本处理三剑客:grep / sed / awk
    10. 系统信息、时间、环境变量
    11. 远程连接与文件传输
    12. 服务管理(systemd)
    13. 快捷辅助命令

    一、文件与目录操作

    命令 作用 常用示例
    pwd 打印当前工作目录 pwd
    cd 切换目录 cd /etccd ~ 回家目录、cd - 返回上一级目录
    ls 列出目录内容 ls -l 详细列表、ls -a 显示隐藏文件、ls -lh 人性化大小
    mkdir 创建目录 mkdir testmkdir -p a/b/c 递归创建多级目录
    rmdir 删除空目录 rmdir test
    rm 删除文件/目录 rm file.txtrm -rf dir 强制递归删除(慎用)
    cp 复制文件/目录 cp a.txt /tmp/cp -r dir1 dir2 复制文件夹
    mv 移动/重命名 mv old.txt new.txtmv file /home/
    touch 创建空文件/更新时间戳 touch log.txt
    ln 创建软硬链接 ln -s /etc/hosts link_hosts 软链接
    find 查找文件 find / -name "*.log"find . -size +100M 查找大于100M文件

    二、文件查看/编辑

    命令 作用 常用示例
    cat 一次性读取全部文件 cat info.txtcat > new.txt 写入内容
    more 分页浏览(只能下翻) more access.log
    less 分页浏览(上下翻、搜索) less nginx.log
    head 查看文件前N行 head -20 test.log 前20行
    tail 查看末尾N行、实时跟踪日志 tail -f nginx.log 实时刷新、tail -n 50 log
    wc 统计行数、单词、字符 wc -l file.txt 统计行数
    du 查看目录占用磁盘 du -sh * 当前目录各文件夹大小
    vim / vi 终端文本编辑器 vim nginx.conf
    nano 简易轻量编辑器 nano test.txt

    三、权限、用户、用户组

    命令 作用 常用示例
    chmod 修改文件权限 chmod 755 run.shchmod +x run.sh 添加执行权限
    chown 修改文件属主/属组 chown root:root test.txt
    useradd 创建用户 useradd admin
    userdel 删除用户 userdel -r admin 连带家目录删除
    passwd 修改密码 passwd root
    groupadd 创建用户组 groupadd dev
    usermod 修改用户附属组 usermod -aG docker root
    id 查看当前用户UID/GID id
    who / w 查看登录用户 w 显示登录用户及操作
    su 切换用户 su root
    sudo 临时以管理员执行 sudo systemctl restart nginx

    四、进程与系统监控

    命令 作用 常用示例
    ps 查看进程快照 ps -efps aux
    top 实时进程资源监控 top
    htop 增强版top(需安装) htop
    kill 终止进程 kill 1234kill -9 1234 强制杀死
    pkill 按进程名杀死 pkill nginx
    nice / renice 调整进程优先级 nice -n -10 ./app
    free 查看内存使用 free -h 人性化单位
    vmstat 虚拟内存、IO状态 vmstat 2 每2秒刷新
    uptime 系统运行时长、负载 uptime

    五、磁盘、挂载、文件系统

    命令 作用 常用示例
    df 磁盘分区使用率 df -h
    mount 挂载磁盘/镜像 mount /dev/sdb1 /data
    umount 卸载挂载点 umount /data
    fdisk 磁盘分区工具 fdisk -l 列出所有磁盘
    blkid 查看磁盘UUID blkid
    fsck 文件系统修复(卸载后执行) fsck /dev/sdb1

    六、网络操作

    命令 作用 常用示例
    ip 新版网络工具(替代ifconfig) ip a 查看网卡、ip route 路由表
    ifconfig 旧网卡信息工具 ifconfig eth0
    ping 连通性测试 ping baidu.com
    netstat 查看端口、连接 netstat -tulnp 监听端口
    ss 替代netstat,更快 ss -tulnp
    curl 网络请求工具 curl https://www.baidu.com
    wget 文件下载 wget https://xxx/file.zip
    telnet 端口连通测试 telnet 127.0.0.1 80
    traceroute 路由追踪 traceroute baidu.com
    host / nslookup DNS解析 nslookup www.qq.com

    七、软件包管理

    1)CentOS / RHEL / Rocky Linux(yum/dnf)

    命令 作用
    yum list installed 列出已装软件
    yum install nginx 安装软件
    yum remove nginx 卸载
    yum update 全系统升级
    yum search mysql 搜索软件包
    rpm -ivh xxx.rpm 本地rpm包安装
    rpm -qa | grep nginx 查询是否安装

    2)Ubuntu / Debian(apt)

    命令 作用
    apt update 更新软件源缓存
    apt install nginx 安装
    apt remove nginx 卸载
    apt full-upgrade 系统升级
    apt search nginx 搜索包
    dpkg -i xxx.deb 本地deb安装

    八、压缩解压

    命令 格式 示例
    tar -zcvf tar.gz 打包压缩 tar -zcvf file.tar.gz dir/
    tar -zxvf 解压tar.gz tar -zxvf file.tar.gz
    tar -jcvf tar.bz2 tar -jcvf file.tar.bz2 dir
    unzip zip解压 unzip file.zip
    zip -r zip压缩文件夹 zip -r out.zip dir
    gzip 单文件压缩 gzip test.txt

    九、文本三剑客:grep / sed / awk

    命令 作用 示例
    grep 文本匹配搜索 grep "error" nginx.loggrep -v "info" 排除匹配行
    sed 流编辑器,替换/删除 sed 's/old/new/g' file.txt 全局替换
    awk 结构化文本统计、切割 awk '{print $1}' log.txt 打印第一列

    十、系统信息、时间、环境变量

    命令 作用
    uname -a 内核、系统版本
    hostname 主机名
    hostnamectl 修改主机名(systemd)
    date 当前系统时间
    timedatectl 时区时间管理
    env / printenv 查看环境变量
    echo $PATH 打印PATH变量
    history 查看历史执行命令
    clear 清屏

    十一、远程连接 & 文件传输

    命令 作用 示例
    ssh 远程登录服务器 ssh root@192.168.1.100
    scp 服务器之间传文件 scp local.zip root@ip:/tmp/
    sftp 交互式远程文件传输 sftp root@ip
    rsync 增量同步文件(备份首选) rsync -avz dir/ root@ip:/data/

    十二、Systemd 服务管理(主流 Linux)

    命令 作用
    systemctl start nginx 启动服务
    systemctl stop nginx 停止
    systemctl restart nginx 重启
    systemctl enable nginx 开机自启
    systemctl disable nginx 关闭自启
    systemctl status nginx 查看运行状态
    systemctl list-units --type=service 列出所有服务
    journalctl -u nginx 查看服务日志

    十三、开关机、权限辅助、管道重定向

    命令 说明
    reboot 重启服务器
    shutdown -h now 立即关机
    shutdown -r 10 10分钟后重启
    > 输出覆盖文件:echo 123 > a.txt
    >> 追加写入文件:echo abc >> a.txt
    \| 管道,传递输出:ps aux \| grep nginx
    & 后台运行进程:./app &
    nohup 脱离终端后台运行:nohup ./app &
    alias ll='ls -lh' 设置命令别名

    十四、高危命令警示(务必谨慎)

    1. rm -rf / 清空整个系统,绝对禁止
    2. dd if=/dev/zero of=/dev/sda 清空整块硬盘
    3. chmod 777 所有用户完全读写执行,存在安全漏洞
    4. kill -9 1 强制杀死systemd/init,服务器直接宕机
  • pt / px / em 单位换算说明 + 完整对照表

    一、单位基础定义与换算公式

    1. 各单位含义

    1. pt(point,磅) 物理固定长度单位,1pt = 1/72 英寸。
    2. px(pixel,像素) 屏幕虚拟像素单位,换算物理尺寸依赖 DPI(每英寸像素):
    • Windows 默认:96 DPI
    • Apple / 印刷标准:72 DPI
    1. em(相对字体单位) 相对于当前基础字号的倍数,前端通用基准:1em = 16px

    2. 换算公式(Windows 96DPI)

    [ pt = px \times \frac{72}{DPI} ] 代入 Windows 96DPI: [ pt = px \times \frac{72}{96} = px \times 0.75 ]

    二、字号 pt / px / em 完整对照表(基准 1em=16px,Windows96DPI)

    中文字号 pt(磅) px(像素) em 倍数
    初号 42pt 56px 3.5em
    小初 36pt 48px 3em
    34pt 45px 2.75em
    32pt 42px 2.55em
    30pt 40px 2.45em
    29pt 38px 2.35em
    28pt 37px 2.3em
    27pt 36px 2.25em
    一号 26pt 35px 2.2em
    25pt 34px 2.125em
    小一 24pt 32px 2em
    二号 22pt 29px 1.8em
    20pt 26px 1.6em
    小二 18pt 24px 1.5em
    17pt 23px 1.45em
    三号 16pt 22px 1.4em
    小三 15pt 21px 1.3em
    14.5pt 20px 1.25em
    四号 14pt 19px 1.2em
    13.5pt 18px 1.125em
    13pt 17px 1.05em
    小四 12pt 16px 1em
    11pt 15px 0.95em
    五号 10.5pt 14px 0.875em
    10pt 13px 0.8em
    小五 9pt 12px 0.75em
    8pt 11px 0.7em
    六号 7.5pt 10px 0.625em
    7pt 9px 0.55em
    小六 6.5pt 8px 0.5em
    七号 5.5pt 7px 0.4375em
    八号 5pt 6px 0.375em
  • 【CSS】常用样式(持续更新)

    CSS Hack

    书写顺序:Chrome -> FF -> IE8 -> IE7 -> IE6

    * 版本
    _ IE6以下
    \9 IE6+
    * IE7 以下
    *+ IE7
    \0 IE8+ 和 Opera

    Media Queries

    <link rel="stylesheet" href="big.css" media="screen and (min-width: 641px)">
    <link rel="stylesheet" href="small.css" media="screen and (max-width: 640px)">
    <link rel="stylesheet" href="style.css" media="screen and (min-width:640px) and (max-width:900px)">

    Flex水平垂直居中

    {
      display: flex;
      align-item: center;
      justify-content: center;
    }

    屏幕自动居中

    {
      position: absolute;
      top: 50%;
      left: 50%;
      width: 320px;
      transform: translate(-50%, -50%);
    }

    单行文本溢出

    {
      text-overflow: ellipsis;
      white-space: nowrap;
        overflow: hidden;
    }

    多行文本溢出

    {
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 3;
      overflow: hidden;
    }

    ios平滑滚动效果

    {
      -webkit-overflow-scrolling: touch;
    }

    清除浮动

    :after {
      display: block;
      clear: both;
      content: " ";
    }

    字体&规范

    • OOCSS、SMACSS、BEM

    • 移动端字体

      {
      font-family: Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", sans-self;
      }
    • PC端字体

      {
      font-family: Tahoma, Arial, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei", Simsun, sans-self;
      }
    • 移动 & PC 字体

      {
      font-family: Tahoma,Arial,Roboto,"Droid Sans","Helvetica Neue","Microsoft YaHei","Droid Sans Fallback","Heiti SC","Hiragino Sans GB",Simsun,sans-self;
      }

    中文两端对齐

    {
      text-justify: inter-ideograph;
      text-align: justify;
    }

    省略文字

    {
      text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
    }

    文字适应浏览器宽度
    ```css
    {
      white-space: pre-wrap;
      word-wrap: break-word;
    }
    ```
    
    ### 自动换行
    ```css
    {
      white-space: normal;
      word-wrap: break-word;
      word-break: normal;
    }
    ```
    
    ### 三角形
    ```css
    {
      width: 0;
      height: 0;
      border-right: 50px solid transparent;
      border-left: 50px solid transparent;
      border-bottom: 50px solid red;
    }
    ```
    
    ### 自定义字体
    ```css
    @font-face {
      font-family: 'iconfont';
      src: url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.eot');
      src: url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.eot?#iefix') format('embedded-opentype'),
      url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.woff2') format('woff2'),
      url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.woff') format('woff'),
      url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.ttf') format('truetype'),
      url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.svg#iconfont') format('svg');
    }
    ```
    
    ### 移动端1px
    ```css
    .box {
      position: relative;
      width: 100%;
      height: 1px;
      margin: 20px 0;
    }
    .box::after {
      position: absolute;
      bottom: 0;
      width: 100%;
      height: 1px;
      content: '';
      background: red;
      transform: scaleY(0.5);
      transform-origin: 0 0;
    }
    ```
    
    ### calc 函数
    ```css
    #div {
      position: absolute;
      left: 50px;
      width: calc( 100% / (100px * 2) );
      border: 1px solid black;
    }
    ```
    
    ### css 禁止用户选择
    ```css
    body {
      -webkit-touch-callout: none;
      -webkit-user-select: none;
      user-select: none;
    }
    ```
    
    ### 消除 transtration 闪屏
    ```css
    .css {
      -webkit-transform-style: preserve-3d;
      -webkit-backface-visibility: hidden;
      -webkit-perspective: 1000;
    }
    ```
    
    ### 去掉Chrome中input获得焦点时的颜色边框
    ```css
    input {
      outline: none;
    }
    ```
  • 【JS】常用正则表达式

    数字

    判断数字
    ^[0-9]*$
    n位的数字
    ^\d{n}$
    至少n位的数字
    ^\d{n,}$
    m-n位的数字:
    ^\d{m,n}$
    零和非零开头的数字
    ^(0|[1-9][0-9]*)$
    非零开头的最多带两位小数的数字
    ^([1-9][0-9]*)+(\.[0-9]{1,2})?$
    带1-2位小数的正数或负数
    ^(\-)?\d+(\.\d{1,2})$
    正数、负数、和小数
    ^(\-|\+)?\d+(\.\d+)?$
    有两位小数的正实数
    ^[0-9]+(\.[0-9]{2})?$
    有1~3位小数的正实数
    ^[0-9]+(\.[0-9]{1,3})?$
    非零的正整数
    ^[1-9]\d*$
    ^([1-9][0-9]*){1,3}$
    ^\+?[1-9][0-9]*$
    非零的负整数
    ^\-[1-9][]0-9"*$
    ^-[1-9]\d*$
    非负整数
    ^\d+$
    ^[1-9]\d*|0$
    非正整数
    ^-[1-9]\d*|0$
    ^((-\d+)|(0+))$
    非负浮点数
    ^\d+(\.\d+)?$
    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
    非正浮点数
    ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
    ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
    正浮点数
    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
    ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
    负浮点数
    ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
    ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
    浮点数
    ^(-?\d+)(\.\d+)?$
    ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

    字符

    汉字
    ^[\u4e00-\u9fa5]{0,}$
    英文和数字
    ^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
    长度为3-20的所有字符
    ^.{3,20}$
    由26个英文字母组成的字符串
    ^[A-Za-z]+$
    由26个大写英文字母组成的字符串
    ^[A-Z]+$
    由26个小写英文字母组成的字符串
    ^[a-z]+$
    由数字和26个英文字母组成的字符串
    ^[A-Za-z0-9]+$
    由数字、26个英文字母或者下划线组成的字符串
    ^\w+$ 或 ^\w{3,20}$
    中文、英文、数字包括下划线
    ^[\u4E00-\u9FA5A-Za-z0-9_]+$
    中文、英文、数字但不包括下划线等符号
    ^[\u4E00-\u9FA5A-Za-z0-9]+$
    ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
    可以输入含有^%&’,;=?$\"等字符
    [^%&',;=?$\x22]+
    禁止输入含有~的字符
    [^~\x22]+

    常用验证

    Email地址
    ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    域名
    [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
    Internet URL
    [a-zA-z]+://[^\s]*
    ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
    国内电话号码(0511-4405222、021-87888822)
    \d{3}-\d{8}|\d{4}-\d{7}
    身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X
    (^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
    帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
    ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)
    ^[a-zA-Z]\w{5,17}$
    强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间)
    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
    强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间)
    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
    日期格式
    ^\d{4}-\d{1,2}-\d{1,2}
    一年的12个月(01~09和1~12)
    ^(0?[1-9]|1[0-2])$
    一个月的31天(01~09和1~31)
    ^((0?[1-9])|((1|2)[0-9])|30|31)$
    xml文件
    ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
    中文字符的正则表达式
    [\u4e00-\u9fa5]
    双字节字符
    [^\x00-\xff]

    (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

    空白行的正则表达式
    \n\s*\r

    (可以用来删除空白行)

    HTML标记的正则表达式
    <(\S*?)[^>]*>.*?|<.*? /> 

    ( 首尾空白字符的正则表达式:^\s|\s$或(^\s)|(\s$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

    中国邮政编码
    [1-9]\d{5}(?!\d)

    (中国邮政编码为6位数字)

    IP地址
    ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
    钱的输入格式:
    • 有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":
        ^[1-9][0-9]*$
    • 这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:
        ^(0|[1-9][0-9]*)$
    • 一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:
        ^(0|-?[1-9][0-9]*)$
    • 这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分:
        ^[0-9]+(.[0-9]+)?$
    • 必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:
        ^[0-9]+(.[0-9]{2})?$
    • 这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:
        ^[0-9]+(.[0-9]{1,2})?$
    • 这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:
        ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
    • 1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:
        ^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

    备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里