速查表
[TOCM]
目录
一、操作快捷键
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
}
}])