File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -66,13 +66,14 @@ Debug 调试技巧
6666- 资源没有关闭。打开的文件等资源一定要关闭,防止资源泄露。go 的 defer 和 python 的 with 最好用上
6767- 连接池使用不当打满连接数。连接池应该是全局共享的(单例),而不是每个请求都要去创建连接池。连接池应该是一个应用共享的
6868- 深浅拷贝问题。不同语言可能又不同的拷贝模型,确定你的参数是深拷贝还是浅拷贝,能否修改,修改了之后是否有副作用。
69- - 请求超时。网络请求的 client 是否有设置超时,比如有些 go 的 client 需要显示自己传进去超时参数
70- - 数组越界错误。注意涉及到数组的时候使用的下标是否会越界。
69+ - 请求超时。网络请求的 client 是否有设置超时,比如有些 go 的 client 需要显式自己传进去超时参数
70+ - 数组越界错误。注意涉及到数组的时候使用的下标是否会越界。越界了 python 抛出异常,go 直接 panic 掉。
7171- 参数校验。一般来自用户的输入都要假设参数可能是错误甚至是恶意参数,后台必须要进行类型,长度等检查
72- - 参数单位是否匹配。比如 go 需要时间的参数有没有乘以对应的 time.Second/MilliSecond 等。
73- - 数据库查询参数错误。查询数据库的时候可能因为一些不合法参数导致数据库慢查询, 可以在入口处做一下限制。比如限制limit 大小
74- - 路径错误。编写一些脚本需要处理文件的时候,使用绝对路径比较不容易出错 。
72+ - 参数单位是否匹配。比如 go 需要时间的参数 time.Duration 有没有乘以对应的 time.Second/MilliSecond 等。
73+ - 数据库查询参数错误。查询数据库的时候可能因为一些不合理参数导致数据库慢查询,比如过量查询导致慢查询。 可以在入口处做一下限制。比如限制limit 大小
74+ - 路径错误。编写一些脚本需要处理文件的时候,推荐使用绝对路径比较不容易出错 。
7575- 空值错误。比如直接赋值一个 go 里边的 map 会 panic,你需要先给 map make 一个值,很多 go 新手会重复犯这个错(go slice 却可以直接声明之后 append)
76+ - 零值和空值。有时候我们根据业务来区分零值(一个类型的初始化值)和空值 (None/nil等),注意处理上的细微区别。
7677- 闭包问题。循环里闭包引用的是最后一个循环变量的值,需要注意一下,很多语言都有类似问题,可以通过临时变量或者传参的方式避免
7778- 遍历修改列表问题。一边遍历,一边修改可能会使得迭代器失效而出错,最好不要遍历的时候修改列表。
7879- 遍历修改元素值问题。这一点 go 和 python 表现不同,go 比如你去循环一个 []Struct 是无法修改每个元素的,go 会拷贝每一个元素值,需要通过下标或者指针修改
You can’t perform that action at this time.
0 commit comments