业务开发方法论(抽象模型快速开发)
大家好,这里是Corey的专属频道,下面谈谈我根据工作经验总结出来的一套方法论,非常实用。
我校招期间拿到的三个offer使用的语言分别是Java、GoLang、Erlang,因为待遇和发展问题,我最终选择转Go,于是在提前实习的一个星期里,我疯狂补Go的知识,好在去到公司后我又有一个多月的缓冲期,又夯实了一遍Go语言,在工作中边使用边深入了解,后面因为我觉得公司的业务发展方向跟我的职业发展方向不符合,所以我实习结束之后就选择了终止三方协议。当然,是因为我在期间通过社招拿到了一个Go语言的待遇不错的小公司,对于马上要毕业的我来说确实是挺不错了。经过几个月的工作努力和不断的学习,我又有勇气冲击当时屡战屡败的BAT,当我尝试联系Tencent的同学,让他帮我内推时,他告诉我没有应届生身份基本不可能,我的心又开始拔凉拔凉了。我在Tencent社招官网看到了3个关于后端的在招岗位,2个是招leader的,另外一个终于不是招leader了,我点进去一看招聘条件,其中一条写着5年以上工作经验,这时的天空下起了茫茫细雨,仿佛老天都感受到了我的心情。所以我决定将字节作为我努力的目标。
下面言归正传,下面是我个人总结出来的后端业务开发方法论,分以下几种类型:
- 对于共享资源的操作,在查看校验和最终确定修改它时,要把整个过程形成同步(这里的同步可以理解为单线程)原子操作,可以通过Redis分布式锁将整个过程锁起来,操作完成之后再释放锁。
- 对于已经明确了的对共享资源的不同部分操作,可以降低锁的粒度,提高并发率,比如一条评论的点赞数和回复数,点赞数只在用户点赞和取消点赞时才会触发变动,而回复数只在用户回复该条评论时或者删除回复时才会触发变动,这时可以通过两个锁来排队,降低锁的粒度。