速查表

xiaohai 2021-06-17 11:51:53 6447人围观 标签: 随笔 
简介速查表是自己整理了一份在工作中常用的一些资料,包含了自己在日常开发中需要常常用到的相关技术。可以给读者进行参考。

[TOCM]

目录

  • 一、操作快捷键
  •       1.1、操作系统快捷键
  •             1.1.1、Windows系统操作快捷键
  •       1.2、编辑器快捷键
  •             1.2.1、PHPStorm
  •             1.2.2、VS Code
  •             1.2.3、IDEA
  • 二、服务器
  •       2.1、Linux命令
  •       2.2、Git
  •       2.3、Docker
  • 三、编程语言
  •       3.1、PHP
  •       3.2、Golang
  •       3.3、Python
  • 四、数据库
  •       4.1、Mysql
  •       4.2、MongoDB
  • 一、操作快捷键

    1.1、操作系统快捷键

    1.1.1、Windows系统操作快捷键

    - Win+R:打开运行窗口
    - Alt+Tab:切换窗口
    - Win+Tab:选择窗口
    - Ctrl+Tab:切换窗口标签
    - Cmd+calc:调用计算器
    - Cmd+notepad:调用记事本
    - Cmd+notepad++:调用Notepad++
    - Win+pause:快速打开控制面板,就可以看到控制面板了,pause键在home键上面;
    - Win+d:回到桌面,且已打开窗口最小化,win+m也可最小化所有窗口
    - Win+L:锁定屏幕,不用大写,这里大写只是因为小写l容易与|竖线混淆,设置密码锁屏后需密码解锁
    - Win+e:打开此电脑(即我的电脑)
    - Ctrl+Shift+Esc:任务管理器
    - Ctrl +d (或 Delete):将选中的文件(选定项)移动到回收站
    - Win+Shift+m,将最小化的窗口还原到桌面,与回到桌面对应
    - Win++:开启放大镜,win+-可缩小
    - F11:浏览器全屏

    1.2、编辑器快捷键

    1.2.1、PHPStorm

    - Shift+Ctrl+N:根据文件名搜索文件
    - Shift+Ctrl+Alt+N:搜索当前文件中的函数
    - Shift+Ctrl+向上/向下:移动代码块
    - Ctrl+F12:当前文件的所有方法
    - Ctrl+X:删除当前行

     

    1.2.2、VS Code

    - Shift+Alt+F:格式化代码
    - Shift+Alt+X:打开扩展
    - Shift+Ctrl+n:多窗口
    - Ctrl+`:打开命令行
    - Ctrl+Shift+P:显示所有命令
    - Ctrl+p:搜索文件
    - Ctrl+Shift+F:搜索文件内容
    - Ctrl+Shift+E:显示文件目录
    - Ctrl+Alt+V:markdown中粘贴图片(需要安装扩展)

    1.2.3、IDEA

    - Alt+Insert:调用添加getter、setter、toString等方法的快捷键

    二、服务器

    2.1、Linux命令

    网络命令

    netstat -an  #查看网络状态
    
    netstat -an|grep 80 #查看8080端口连接情况
    
    netstat -nat | grep -i "80" | wc -l #统计80端口连接数
    
    ps -ef | grep httpd | wc -l #统计httpd协议连接数
    
    netstat -na | grep ESTABLISHED | wc -l #统计已连接上的,状态为“established'  
    
    netstat -na | grep ESTABLISHED | awk '{print$5}' | awk -F : '{print$1}' |sort |uniq -c | sort -r  #查出每个IP地址连接数 
    
    nslookup www.baidu.com #查询域名DNS解析

    匹配命令

    grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行
    grep -B 5 foo file 显示foo及前5行
    grep -A 5 foo file 显示foo及后5行

    防火墙命令

    systemctl status firewalld #查看防火墙状态
    
    systemctl stop firewalld #停止防火墙
    
    systemctl disable firewalld #关闭开机启动
    
    systemctl enable firewalld #开机启动

    centos同步时区

    timedatectl set-timezone Asia/Shanghai #设置成上海时区
    
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #拷贝时区到/etc

    centos7同步时间

    yum -y install ntp ntpdate #安装ntp工具
    
    ntpdate cn.pool.ntp.org #同步时间
    
    hwclock --systohc #将时间写入硬件
    
    timedatectl #查看时间和时区信息

    Centos8同步时间
    centon8不能再直接通过yum安装ntpdate,centos8需要使用:chrony

    yum install -y chrony #安装
    
    #加入开机启动和开启
    systemctl enable chronyd
    systemctl start chronyd
    
    #修改配置文件/etc/chrony.conf,将第一个配置修改为:pool ntp.ntsc.ac.cn iburst
    
    chronyc -a makestep #手动同步,返回200 OK即为成功

    2.2、Git

    本地没有仓库

    # 本地仓库操作
    git init  #初始化仓库
    git add . #添加当前目录下所有文件到仓库中
    git commit -m '提交信息' #提交信息
    
    # 需要同步到远程仓库,这里使用github
    git remote add origin 远程仓库的地址    #添加远程仓库
    git push -u origin master #推所有文件到远程仓库

    本地已经有仓库

    git remote add origin 远程仓库的地址    #添加远程仓库
    git push -u origin master #推所有文件到远程仓库

    常用命令
    1、初始化仓库

    git init

    2、新增文件到仓库中

    git add .  #增加当前目录下所有文件到仓库
    git add readme.md #增加单个文件到仓库
    git add readme.md api.doc #增加多个文件到仓库

    3、提交文件到仓库

    git commit -m "描述信息"

    4、查看状态

    git status

    5、推送到远程仓库

    git push -u origin master

    6、推送

    git push

    7、拉取

    git pull

    8、查看分支

    git branch

    9、强制覆盖

    git fetch --all
    git reset --hard origin/master #后面的版本一定要指定
    git pull

    git强制覆盖本地命令(单条执行):

    git fetch --all && git reset --hard origin/master && git pull

    2.3、Docker

    Docker相关命令

    docker images #查看所有镜像
    
    docker rm 容器名称 #删除停止的容器
    
    docker rmi 镜像名称 #删除镜像
    
    docker ps #查看运行的容器
    
    docker ps -a #查看所有容器
    
    docker exec -it 容器ID /bin/bash #进入容器
    
    docker exec -it 容器ID /bin/sh #进入容器
    
    docker build -t 镜像名称:版本号 .  #Dockerfile编译镜像
    
    docker login xxx.xxx.xxx.xxx:port #登录Docker仓库
    
    docker tag 镜像名称:版本号 xxx.xxx.xxx.xxx:port/镜像地址:标签名称 #镜像打标签
    
    docker push xxx.xxx.xxx.xxx:port/镜像地址:标签名称 #推送镜像到仓库
    
    docker pull xxx.xxx.xxx.xxx:port/镜像地址:标签名称 #拉取镜像
    
    docker images|grep none|awk '{print $3}'|xargs docker rmi #批量删除标签为None的镜像

    docker-compose相关命令
    这些命令一定是在docker-compose.yml文件目录下执行

    1、基础命令
    docker-compose 命令 --help                  #获得一个命令的帮助
    docker-compose version                     #查看docker-compose版本信息
     
    2、构建、卸载
    docker-compose up -d C                     #构建启动某个容器
    docker-compose down                        #停止并删除所有容器、网络、镜像等
     
    3、启动、停止、重启、删除容器
    docker-compose stop C
    docker-compose start C                    
    docker-compose restart C
    docker-compose rm C                        #删除容器(删除前必须关闭容器,执行stop)
     
    4、列出所有容器
    docker-compose ps
     
    5、进入到容器中
    docker-compose exec 容器名称 /bin/bash            #登录到容器中
     
    6、查看容器的实时日志
    docker-compose logs  -f  C                  #查看容器的实时日志
    docker-compose logs --tail 10 -f C          #查看容器的实时日志(从最后10行开始)
     
    7、列出所有镜像
    docker-compse images
     
    8、检查并查看配置信息
    docker-compose config                       #配置错误时,会输出错误信息
     
    9、查看各个容器内运行的进程
    docker-compose top
     
    10、其它
    docker-compose build C                       #构建镜像
    docker-compose build --no-cache C            #不带缓存的构建
    docker-compose events --json C               #以json形式输出容器的日志
    docker-compose pause C                       #暂停容器
    docker-compose unpause C                     #恢复容器
    
    

    注意事项

    • 应用内部的开发地址要使用0.0.0.0,否者访问不到

    • 宿主机防火墙如果关闭后后需要重启Docker服务

    • Docker内部链接可以直接使用容器名称

     

    三、编程语言

    3.1、PHP

    1、二维数组排序

    array_multisort(array_column($studentList, 'is_online'), SORT_DESC, array_column($studentList, 'sort_num'), SORT_DESC, $studentList);

    2、

    3.2、Golang

    1、string、int、int64互相转换

    import "strconv"  //先导入strconv包
    
    // string到int
    int, err := strconv.Atoi(string)
    
    // string到int64
    int64, err := strconv.ParseInt(string, 10, 64)
    
    // int到string
    string := strconv.Itoa(int)
    
    // int64到string
    string := strconv.FormatInt(int64,10)

    2、获取时间

    // 获取当前时间
    dateTime := time.Now()
    fmt.Println(dateTime)
    
    // 获取年 月 日 时 分 秒 纳秒
    year := time.Now().Year() //年
    
    fmt.Println(year)
    
    month := time.Now().Month() //月
    fmt.Println(month)
    
    day := time.Now().Day() //日
    fmt.Println(day)
    
    hour := time.Now().Hour() //小时
    fmt.Println(hour)
    
    minute := time.Now().Minute() //分钟
    fmt.Println(minute)
    
    second := time.Now().Second() //秒
    fmt.Println(second)
    
    nanosecond := time.Now().Nanosecond() //纳秒
    fmt.Println(nanosecond)
    
    // 获取当前时间戳
    timeUnix := time.Now().Unix()         //单位秒
    timeUnixNano := time.Now().UnixNano() //单位纳秒
    
    fmt.Println(timeUnix)
    fmt.Println(timeUnixNano)
    
    
    // 将时间戳格式化
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
    
    // 时间戳转为 go 格式的时间
    var timeUnix int64 = 1562555859
    fmt.Println(time.Unix(timeUnix,0))
    // 之后可以用Format 比如
    fmt.Println(time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05"))
    
    // str 格式化时间转时间戳
    t := time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local).Unix()
    fmt.Println(t)

    3、时间计算

    // 获取今天 0 点 0 时 0 分的时间戳
    currentTime := time.Now()
    startTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, currentTime.Location())
    fmt.Println(startTime)
    fmt.Println(startTime.Format("2006/01/02 15:04:05"))
    
    
    // 获取今天 23:59:59 秒的时间戳
    currentTime := time.Now()
    endTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 23, 59, 59, 0, currentTime.Location())
    fmt.Println(endTime)
    fmt.Println(endTime.Format("2006/01/02 15:04:05"))
    
    // 获取 1 分钟之前的时间
    m, _ := time.ParseDuration("-1m")
    result := currentTime.Add(m)
    
    fmt.Println(result)
    fmt.Println(result.Format("2006/01/02 15:04:05"))
    
    // 获取 1 小时之前的时间
    m, _ := time.ParseDuration("-1h")
    result := currentTime.Add(m)
    fmt.Println(result)
    fmt.Println(result.Format("2006/01/02 15:04:05"))
    
    // 获取 1 分钟之后的时间
    m, _ := time.ParseDuration("1m")
    result := currentTime.Add(m)
    
    fmt.Println(result)
    fmt.Println(result.Format("2006/01/02 15:04:05"))
    
    //获取 1 小时之后的时间
    m, _ := time.ParseDuration("1h")
    result := currentTime.Add(m)
    fmt.Println(result)
    fmt.Println(result.Format("2006/01/02 15:04:05"))
    
    
    // 计算两个时间戳
    afterTime, _ := time.ParseDuration("1h")
    result := currentTime.Add(afterTime)
    
    beforeTime, _ := time.ParseDuration("-1h")
    result2 := currentTime.Add(beforeTime)
    
    m := result.Sub(result2)
    fmt.Printf("%v 分钟 n", m.Minutes())
    
    h := result.Sub(result2)
    fmt.Printf("%v小时 n", h.Hours())
    
    d := result.Sub(result2)
    fmt.Printf("%v 天n", d.Hours()/24)
    
    // 判断一个时间是否在一个时间之后
    stringTime, _ := time.Parse("2006-01-02 15:04:05", "2019-12-12 12:00:00")
    beforeOrAfter := stringTime.After(time.Now())
    
    if true == beforeOrAfter {
        fmt.Println("2019-12-12 12:00:00在当前时间之后!")
    } else {
        fmt.Println("2019-12-12 12:00:00在当前时间之前!")
    }
    
    
    // 判断一个时间相比另外一个时间过去了多久
    startTime := time.Now()
    time.Sleep(time.Second * 5)
    
    fmt.Println("离现在过去了:", time.Since(startTime))
    

    3.3、Python

    四、数据库

    4.1、Mysql

    1、多字段查询

    select * from user_course where (user_id,course_id) in select user_id,course_id from user_order_course;

    2、

    4.2、MongoDB

    1、根据时间删除数据

    db.getCollection("watch_offline_logs").remove({"created_at" : { $lt : "2019-08-01 00:00:00" }})

    2、创建用户

    db.createUser(
        {
            user:"root",
            pwd:"xthk78479",
            roles:[
                {role:"root", db:"admin"}
            ]
        }
    )

    3、创建索引

    //match是匹配字段,project是显示字段,sort是排序字段
    db.getCollection("quality_statics_city_comment_day").createIndex(
        {"comment_template_id": 1,"city_id": 1},
        {name: "quality_statics_city_comment_day_index_1",sparse: true});

    4、聚合查询

    db.getCollection("quality_statics_class_comment_day").aggregate([{
        $match: {
            date: 20200531,
            is_default_grade: 1,
            comment_rate: {
                $lt: 60
            }
        }
    }, {
        $project: {
            _id: 0,
            "日期": "$date",
            "班级ID": "$class_id",
            "教师姓名": "$teacher_name",
            "年级": "$grade_titles",
            "科目": "$subject_title",
            "城市": "$city_title",
            "班型": "$class_type_title",
            "评价率": "$comment_rate"
        }
    }, {
        $sort: {
            "评价率": 1
        }
    }])

    5、聚合查询之分段查询

    db.getCollection("quality_statics_teacher_comment_day").aggregate([{
        $match: {
            date: 20200604
        }
    }, {
        $project: {
            "count_field": 
            {
                $switch: {
                    branches: [
                        {
                            case: {
                                $eq: ["$satisfaction", 100]
                            },
                            then: "100"
                        },
                        {
                            case: {
                                $and: [{
                                    $gte: ["$satisfaction", 95]
                                }, {
                                    $lte: ["$satisfaction", 100]
                                }]
                            },
                            then: "[95,100)"
                        },
                        {
                            case: {
                                $and: [{
                                    $gte: ["$satisfaction", 90]
                                }, {
                                    $lte: ["$satisfaction", 95]
                                }]
                            },
                            then: "[90,95)"
                        },
                        {
                            case: {
                                $and: [{
                                    $gte: ["$satisfaction", 85]
                                }, {
                                    $lte: ["$satisfaction", 90]
                                }]
                            },
                            then: "[85,90)"
                        },
                        {
                            case: {
                                $and: [{
                                    $gte: ["$satisfaction", 80]
                                }, {
                                    $lte: ["$satisfaction", 85]
                                }]
                            },
                            then: "[80,85)"
                        },
                        {
                            case: {
                                $eq: ["$satisfaction", 0]
                            },
                            then: "0"
                        },
                    ],
                    default: "(0,80)"
                }
            }
        }
    }, {
        $group: {
            _id: "$count_field",
            "总数": {
                $sum: 1
            }
        }
    }, {
        $sort: {
    			"_id":1
        }
    }])