提效常识
脑图:https://www.processon.com/mindmap/60e03d931efad40c1bf3ed39
软件安装
安装homebrew
在terminal内复制执行下面这段代码(官方版):
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
如果网络问题一直没反应或者报错,可以用国内镜像版:
1 | /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)" |
brew 常用命令
1 | # 检测是否安装homebrew |
1 | # 安装各种软件 |
终端软件:iTerm2
快捷键提效:RayCast
服务命令
机器指标
磁盘占用情况
1 | > du -sh * |
总内存大小:
1 | > cat /proc/meminfo | grep MemTotal |
总的内存使用情况:
1 | > free |
内存 + 进程使用
1 | > top |
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示 该进程优先值为负
%CPU:进程占用CPU的使用
%MEM:进程使用的物理内存和总内存的百分
具体进程使用内存情况:
1 | > ps aux --sort -rss |
命令行命令
1 | # 批量清除日志 |
服务日志
1 | // 展示关键词上下文20行 |
Redis
1 | # 连接Redis服务 |
info memory 命令详情 | 详情参考:https://cloud.tencent.com/developer/article/1562172 |
---|---|
used_memory_human |
表示 Redis 服务器当前使用的内存大小 |
used_memory_rss_human |
表示 Redis 进程占用的总物理内存 |
maxmemory_human |
表示 Redis 服务器的最大内存限制,以字节为单位。如果未设置最大内存限制,该值将为 0。 |
used_memory_peak_human | 表示 Redis 服务器历史上使用的最大内存峰值 |
used_memory_dataset_perc | 数据占用的内存大小的百分比,100%*(used_memory_dataset/(used_memory-used_memory_startup)) |
used_memory_peak_perc | 使用内存达到峰值内存的百分比,即: used_memory/ used_memory_peak) *100% |
Docker:
1 | docker images | grep XXX |
mac命令:
打开:
1 | open ~/.ssh/ |
复制粘贴
1 | pbcopy < ~/.ssh/id_rsa.pub |
后台任务管理界面
1 | Command+Option+Esc |
搜索技巧
1 | 桌面:shift+command+D |
显示”允许任何安装来源“
1 | sudo spctl --master-disable |
查看 Mac下已安装的jdk版本及其安装目录,打开终端,输入:
1 | /usr/libexec/java_home -V |
显示隐藏文件和文件夹
1 | defaults write com.apple.finder AppleShowAllFiles -bool true; |
文本编辑
系统命令
展示行号
1 | cat -n 1.txt |
Vim
跳转操作
- 最后一行:按“G”
- 最后一个字符:按“G”, + 按“$”键
- 第一个字符:按两次“g”
编辑操作
1 | # 展示行号 |
复制剪切内容命令:
:9,15 copy 16 或 :9,15 co 16
由此可有:
:9,15 move 16 或 :9,15 m 16 将第9行到第15行的文本内容到第16行的后面
行号移动: gg(第一行) G(最后一行) nG/:n
移动: h、j、k、l 0 $ H、M、L
搜索:
/{搜索的字符} n下一个 N上个 忽略大小写 :set ic
选择行:V
复制 yy/Y nyy/nY
剪切 dd ndd
粘贴 p/P
替换 r R + Esc
全文替换指定字符串: %s/原串/新串/g 或者 :%s/原串/新串/c 【多一个判断】
n1到n2行范围替换指定字符串 :n1,n2s/原串/新串/g :n1,n2s/原串/新串/c
删除: x nx dd ndd dG D :n1,n2d
CR 黑话
缩写 | 全称 | 含义 |
---|---|---|
PR | Pull request | 给其他项目提交代码 |
TBD | To be done | 一般都是还没搞定的意思 |
WIP | Work in progress | 表明功能还未完成,方便维护者提前 review 部分提交的代码 |
PTAL | Please take a look | 提示别人来看一下 |
TBR | To be reviewed | 提示让人review一下 |
LGTM | Look Good to me | 知道了/通过了 |
SGTM | Soudes Good to me | 知道了/通过了 |
TL;DR | Too long;Didn’t Read | 太长懒得看(很多文档在做简略描述之前会写这么一句) |
Commit 黑话
缩写 | 含义 |
---|---|
feat | 新特性,但不是脚本的新特性 |
fix | bug 修复,但不是脚本的修复 |
docs | 文档改动 |
style | 代码风格修改,无代码逻辑变动 |
refactor | 重构代码,如变量重命名等等 |
test | 测试用例的增删改 |
chore | 更新脚本、配置、依赖等等与代码逻辑无关的内容 |
interface类型在底层的实现(type,data)
(*interface{})(nil)传递参数类型
利用了(*interface{})(nil)携带数据类型的特点,只用一个空指针就搞定了数据类型的传输,而且扩展了同类型数据的绑定。
动态并数据类型
接口约定
目标
- 尽可能的缩小沟通的成本,开最少的会,确定大部分的事。
- 花最少的时间写文档,保证90%的开发人员看懂所有内容。
- 哪怕不看文档,也能知道各种接口逻辑。
- 不重复写代码
- 尽可能的写高可读性的代码
做什么?
统一接口规范(post、put、get、patch、delete)
统一了调试工具
统一了接口文档
接口文档选型
swagger
阿里的rap
Word文档
其它
Resultfull接口约定
post方法
新增一条XXX
比如 ……/products
则代表新增一条产品入参json如下:
基础请求前缀 /v3/{模块名}
请求类型 | 命名规则 | 注释 |
---|---|---|
POST | remark/add | 新建保存 |
POST | remark/update/{id} | 整体编辑保存 |
GET | remark/delete/{id} | 删除操作 |
GET | remark/detail/{id} | 详情页 |
GET | remark/list/{typeId}/{linkeId} | 获取列表 |
请求类型 | 命名规则 | 注释 |
---|---|---|
GET | XXXX/create | 新建页 |
GET | XXXX/edit/{id} | 编辑页 |
GET | XXXX/detail/{id} | 详情页 |
POST | XXXX/add | 新建保存 |
POST | XXXX/update/{id} | 整体编辑保存 |
GET | XXXX/delete/{id} | 删除操作 |
GET | XXXX/list | 获取列表 |
GET | XXXX/pageList | 分页获取列表 |
GET | XXXX/updateInfo/{id} | 修改个别信息 |
提供的SCF服务
评论
日志
- 新增日志接口
传参 | 描述 |
---|---|
objectType | 操作对象类型 |
| operateType | 操作类型 |
| userName | 操作人 |
| operate_viewid| 操作对象viewid |
| relateObjectType | 关联对象类型 |
| relate_id | 关联对象id |
| relateViewid | 关联对象viewid |
| oldObject | 操作对象类型 |
| newObject | 操作对象类型 |
接口返回参数
参数吗 | 类型 | 说明 |
---|---|---|
code | string | ‘OK’, ‘FAILURE’, ‘SYS_ERROR’ |
msg | string | 说明文字 |
data | json | json数据 |
code说明:
- ‘OK’ => 成功
- ‘FAILURE’ => 业务失败
- ‘SYS_ERROR’ => 系统失败
代码示例
{
"code": "OK",
"msg": "查询成功",
"data": {
"userCode": "123456789",
"name": "教主",
"idCard": "123456789012345678"
}
}
{
"code": "FAILURE",
"msg": "登录失败,用户名密码不匹配",
"data": null,
"errCode":"301"
}
{
"code": "SYS_ERROR",
"msg": "服务器连接失败",
"data": null
}