摘要: 一、什么是可重入锁 var mu sync.Mutex func main() { mu.Lock() mu.Lock() } 这段 Go 程序会阻塞吗?不会,会报以下错误: fatal error: all goroutines are asleep - deadlock! Go 显然是不支持可重 阅读全文
posted @ 2024-01-04 20:20 李若盛开 阅读(309) 评论(0) 推荐(0)
摘要: 服务端如何防止重复支付 如图是一个简化的下单流程,首先是提交订单,然后是支付。支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。 这个过程中经常可能遇 阅读全文
posted @ 2024-01-04 20:04 李若盛开 阅读(162) 评论(0) 推荐(0)
摘要: 401 Unauthorized状态码401表示认证失败,表示请求没有被认证或者认证失败。通常由web服务器返回,而不是web应用。场景:token失效、token缺失、token伪造,导致服务端无法识别身份。403 Forbidden状态码403表示授权失败,通常表示用户通过了身份验证,但缺少权限 阅读全文
posted @ 2024-01-04 13:13 李若盛开 阅读(1412) 评论(0) 推荐(0)
摘要: 为什么要做优化 互联网公司本质是将用户共通的行为流程进行了集中化管理,通过中心化的信息交换达到效率提升的目的,同时用规模效应降低了数据交换的成本。 用人话来讲,公司希望的是用尽量少的机器成本来赚取尽量多的利润。利润的提升与业务逻辑本身相关,与技术关系不大。而降低成本则是与业务无关,纯粹的技术话题。这 阅读全文
posted @ 2024-01-04 01:32 李若盛开 阅读(125) 评论(0) 推荐(0)
摘要: 代码重构是在不改变外部功能的情况下对现有代码进行改进。它是编程的核心部分之一,不容忽视,否则就无法获得更好的代码版本。代码重构可以增强代码的可读性、可维护性和可扩展性,它还旨在提高性能和开发人员的工作效率。 如何重构 在寻找重构的技术之前,看看如何将代码重构集成到编码过程中。以下建议可用于此目的: 阅读全文
posted @ 2024-01-04 00:43 李若盛开 阅读(89) 评论(0) 推荐(0)
摘要: 背景:Golang服务通过docker部署在了线上环境中,但是该服务经常出现内存爆满导致容器自动被kill而退出的现象。因为是线上环境,排查问题会耗时很长,因此先在线上服务的容器上加了个–restart=always的参数,这样可以让容器退出后自动重启,继续进行任务。但在排查内存爆满问题时,线上环境 阅读全文
posted @ 2024-01-04 00:13 李若盛开 阅读(155) 评论(0) 推荐(0)