会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
李若盛开
一枚喜欢跑步,热衷于技术的深漂Gopher ~
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
11
12
13
14
15
16
17
18
19
···
40
下一页
2024年1月11日
Golang - Sync.Cond的使用和实现原理
摘要: 一、概念 Go标准库提供了Cond原语,sync.Cond(条件变量)是一个用于在多个goroutine之间进行同步和通信的重要工具,可以让 Goroutine 在满足特定条件时被阻塞和唤醒。 条件变量的作用并不保证在同一时刻仅有一个协程(线程)访问某个共享的数据资源,而是在对应的共享数据的状态发生
阅读全文
posted @ 2024-01-11 00:19 李若盛开
阅读(1518)
评论(0)
推荐(0)
2024年1月10日
HTTP3.0 为什么彻底放弃TCP
摘要: 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)
2024年1月7日
WaitGroup的用法和原理、常见错误
摘要: WaitGroup的介绍 WaitGroup就是package sync用来做任务编排的一个并发原语,这个要解决的就是并发-等待的问题:现有一个goroutine A在检查点(chaeckpoint)等待一组goroutine全部完成,如果在执行任务的这些goroutine还没有全部完成,那么gor
阅读全文
posted @ 2024-01-07 01:17 李若盛开
阅读(1059)
评论(0)
推荐(0)
2024年1月4日
Go 如何实现可重入锁
摘要: 一、什么是可重入锁 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)
如何区分HTTP状态码401和403
摘要: 401 Unauthorized状态码401表示认证失败,表示请求没有被认证或者认证失败。通常由web服务器返回,而不是web应用。场景:token失效、token缺失、token伪造,导致服务端无法识别身份。403 Forbidden状态码403表示授权失败,通常表示用户通过了身份验证,但缺少权限
阅读全文
posted @ 2024-01-04 13:13 李若盛开
阅读(1412)
评论(0)
推荐(0)
Go 应用的性能优化
摘要: 为什么要做优化 互联网公司本质是将用户共通的行为流程进行了集中化管理,通过中心化的信息交换达到效率提升的目的,同时用规模效应降低了数据交换的成本。 用人话来讲,公司希望的是用尽量少的机器成本来赚取尽量多的利润。利润的提升与业务逻辑本身相关,与技术关系不大。而降低成本则是与业务无关,纯粹的技术话题。这
阅读全文
posted @ 2024-01-04 01:32 李若盛开
阅读(125)
评论(0)
推荐(0)
3个实用重构技术,优化代码
摘要: 代码重构是在不改变外部功能的情况下对现有代码进行改进。它是编程的核心部分之一,不容忽视,否则就无法获得更好的代码版本。代码重构可以增强代码的可读性、可维护性和可扩展性,它还旨在提高性能和开发人员的工作效率。 如何重构 在寻找重构的技术之前,看看如何将代码重构集成到编码过程中。以下建议可用于此目的:
阅读全文
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
下一页
公告