跳到主要内容

194 篇博文 含有标签「后端开发」

查看所有标签

Go 里更隐蔽的问题,往往不是死锁而是 goroutine 泄漏

· 阅读需 2 分钟
一介布衣
全栈开发者

刚开始学 Go,并发部分最容易让人紧张的词就是“死锁”。这当然没错,因为死锁一出现,程序常常会非常明显地挂在那里。可等你真正把 Go 服务跑起来一段时间后,会发现另一类问题更难受:goroutine 没有马上死掉,而是在后台一点点堆起来。

Java 项目里的 DAO、Service、Controller 命名最好早点统一

· 阅读需 3 分钟
一介布衣
全栈开发者

2016 年接手 Java 项目时,我遇到过一种很典型的混乱:同样是处理用户逻辑的类,有的叫 UserDao,有的叫 UserMapper,有的叫 UserServiceImpl,还有的直接叫 UserManager。项目还能跑,但只要需求稍微一变,大家就会先花时间猜“这个类到底管什么”。

Node.js 图片上传接口,先限制大小再谈体验

· 阅读需 2 分钟
一介布衣
全栈开发者

图片上传这类接口最容易在需求讨论里被说成一句话:选文件,传上去,返回地址。
可 2016 年我在做这类功能时越来越明显地感觉到,一个上传接口如果一开始只关注“体验顺不顺”,却没有先限制大小、类型和错误边界,后面出问题会非常频繁。

接口缓存不是一开就快

· 阅读需 3 分钟
一介布衣
全栈开发者

2016 年做接口优化时,缓存几乎是最容易被提起的方案。接口慢了,加缓存;数据库忙了,加缓存;列表页扛不住了,还是加缓存。可真正做过几轮之后,我反而越来越谨慎,因为缓存很少是“开了就完事”的提速按钮。

Node.js 连 Redis 时,key 命名和过期时间最好一起设计

· 阅读需 3 分钟
一介布衣
全栈开发者

2014 年前后,Node.js 配 Redis 是很常见的一套轻量组合。大家一开始都觉得 Redis 上手快,setget 会用就能干活,但真把它放进登录态、验证码、计数器、页面缓存之后,问题很快就来了:key 越堆越多,过期时间各写各的,最后自己都看不懂线上到底存了什么。