上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 40 下一页
摘要: 一、概念 Go标准库提供了Cond原语,sync.Cond(条件变量)是一个用于在多个goroutine之间进行同步和通信的重要工具,可以让 Goroutine 在满足特定条件时被阻塞和唤醒。 条件变量的作用并不保证在同一时刻仅有一个协程(线程)访问某个共享的数据资源,而是在对应的共享数据的状态发生 阅读全文
posted @ 2024-01-11 00:19 李若盛开 阅读(1518) 评论(0) 推荐(0)
摘要: 1. 简介 从HTTP/1.0开始,一直到HTTP/2,不管应用层协议如何改进,TCP一直以来都是HTTP协议的基础,主要是因为能提供可靠连接。 但是,从HTTP 3.0开始,这个情况就有所变化了。 因为,在最新推出的HTTP 3.0中,已经彻底弃用TCP协议了。 2. 缺点 1)TCP队头阻塞 T 阅读全文
posted @ 2024-01-10 23:45 李若盛开 阅读(346) 评论(0) 推荐(0)
摘要: TCP 三次握手期间的异常 1 )第一次握手丢失了,会发生什么?当客户端想和服务端建立 TCP 连接的时候,首先第一个发的就是 SYN 报文,然后进入到SYN_SENT状态。在这之后,如果客户端迟迟收不到服务端的 SYN-ACK 报文(第二次握手),就会触发超时重传机制。不同版本的操作系统可能超时时 阅读全文
posted @ 2024-01-10 13:13 李若盛开 阅读(53) 评论(0) 推荐(0)
摘要: WaitGroup的介绍 WaitGroup就是package sync用来做任务编排的一个并发原语,这个要解决的就是并发-等待的问题:现有一个goroutine A在检查点(chaeckpoint)等待一组goroutine全部完成,如果在执行任务的这些goroutine还没有全部完成,那么gor 阅读全文
posted @ 2024-01-07 01:17 李若盛开 阅读(1059) 评论(0) 推荐(0)
摘要: 一、什么是可重入锁 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)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 40 下一页