脑图: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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 检测是否安装homebrew
brew -v
brew update 更新 Homebrew
brew search package 搜索软件包
brew install package 安装软件包
brew uninstall package 卸载软件包
`brew upgrade 升级所有软件包`
brew upgrade package 升级指定软件包
brew list 列出已安装的软件包列表
brew services command package 管理 brew 安装软件包
brew services list 列出 brew 管理运行的服务
brew info package 查看软件包信息
brew deps package 列出软件包的依赖关系
brew help 查看帮助
brew cleanup 清除过时软件包
brew link package 创建软件包符号链接
brew unlink package 取消软件包符号链接
brew doctor 检查系统是否存在问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装各种软件
brew install cmake protobuf rust python@3.10 git wget
# 验证
cmake: `cmake --version`
protobuf: `protoc --version`
rust:` rustc --version`
python@3.10:` python3.10 --version`
git:` git --version`
wget: `wget --version`

# 启动MySQL
brew services start mysql
$ mysql.server start
$ mysql.server restart
$ mysql.server stop
$ mysql.server status
$ mysql -u root -p

截图软件: Xnip or Snipaste

终端软件: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
2
3
4
5
6
# 批量清除日志
find ./ -name "*feedback.log.2018*” -print0 | xargs -0 rm -rf
find ./ | xargs grep "IworkApplicationContext"
netstat ap | grep
netstat ano | grep
lsof -i:8080

服务日志

1
2
// 展示关键词上下文20行
grep -H20 {keyword} {filename}

Redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 连接Redis服务
telnet r-xxx 6379
auth xxx

# 选择DB0
SELECT 0

info cpu
# CPU
used_cpu_sys 表示 Redis 服务器消耗的系统 CPU 时间,
used_cpu_user 表示 Redis 服务器消耗的用户 CPU 时间。

# 内存的相关信息,包括已使用内存、最高使用内存等。
info memory

# 键空间的相关信息,包括键的数量、过期键的数量等。
info keyspace

# 连接信息,包括连接的客户端数量以及各个客户端的状态等。
info clients

# 运行状态信息,包括 Redis 的连接状态、命令执行次数等。
info stats
quit
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
2
3
4
5
6
7
8
9
10
11
docker images  | grep XXX
docker run XXX
docker ps -a
docker restart XX
docker stop XX
docker rm XXX
netstat -ntlpu

docker exec -it ******(容器id) /bin/bash

docker run -p 4306:3306 --name mysql001 -v /Users/Golden/Docker/mysql/conf:/etc/mysql/conf.d -v /Users/Golden/Docker/mysql/data:/var/lib/mysql -v /Users/Golden/Docker/mysql/logs:/logs -d mysql:5.6 -e MYSQL_ROOT_PASSWORD=123456

mac命令:

打开:

1
open ~/.ssh/

复制粘贴

1
pbcopy < ~/.ssh/id_rsa.pub

后台任务管理界面

1
Command+Option+Esc

搜索技巧

1
2
3
4
桌面:shift+command+D
我的文档:shift+command+O
下载目录:是option+command+L
表情符合快捷键:control+command+空格

显示”允许任何安装来源“

1
sudo spctl --master-disable

查看 Mac下已安装的jdk版本及其安装目录,打开终端,输入:

1
/usr/libexec/java_home -V

显示隐藏文件和文件夹

1
2
defaults write com.apple.finder AppleShowAllFiles -bool true;
KillAll Finder

文本编辑

系统命令

展示行号

1
cat -n 1.txt

Vim

跳转操作

  • 最后一行:按“G”
  • 最后一个字符:按“G”, + 按“$”键
  • 第一个字符:按两次“g”

编辑操作

1
2
3
4
# 展示行号
:set nu
# 隐藏行号
:set nonu

复制剪切内容命令:
: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说明:

  1. ‘OK’ => 成功
  2. ‘FAILURE’ => 业务失败
  3. ‘SYS_ERROR’ => 系统失败

代码示例

{
    "code": "OK",
    "msg": "查询成功",
    "data": {
        "userCode": "123456789",
        "name": "教主",
        "idCard": "123456789012345678"
    }
}

{
    "code": "FAILURE",
    "msg": "登录失败,用户名密码不匹配",
    "data": null,
    "errCode":"301"
}

{
    "code": "SYS_ERROR",
    "msg": "服务器连接失败",
    "data": null
}