
go fast学习
文章平均质量分 85
go 笔记
张璐月
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go web框架实现与使用
Server定义、路由树、context上下文、AOP方案(Middleware)、静态资源服务与文件处理、页面渲染template、Session、优雅退出。测试代码:web/test/graceful_shutdown_test.go 注意:该代码必须放在main函数下运行,test文件下无法监听到退出信号。支持路由:静态路由、参数路由(/a/:id)、正则匹配、动态路由(通配符 /a/*),路由命中优先级按照前面的顺序。测试代码:web/test/server_route_test.go。原创 2025-06-19 00:37:34 · 953 阅读 · 0 评论 -
go orm框架 支持分库分表查询
ORM框架支持基于Builder模式构建SQL查询,利用reflect与unsafe技术处理结果集,同时具备元数据维护、中间件集成、链式调用、事务管理和分库分表查询能力。duplicateKey语句: on conflict columnName do update set col1=exclued.col1。duplicateKey语句:on duplicate key update col1=values(col1)维护数据结构(如User)和数据库中相应表、字段的关系。quoter -> 双引号。原创 2025-06-18 22:34:59 · 633 阅读 · 0 评论 -
go 并发队列、优先级队列、延迟队列
好处:b.queue = b.queue[1:]会引起内存频繁分配,ringBuffer复用固定资源。等待时使用for,而不是if // 广播唤醒多个,但只有一个抢到了锁,其他需要重新等待枪锁。好处: ringBuffer使用固定内存,可能实际不需要,链表支持动态连接。ringBuffer比链表的优势:支持复杂操作,如随机访问。由于sync.cond没有超时控制,所以自行设计cond。ringBuffer替代[]*T。链表替代ringBuffer。使用cond进行超时阻塞控制。原创 2025-06-17 15:17:28 · 465 阅读 · 0 评论 -
go 服务注册与发现
注册中心连接不上服务端会进行重试,若多次重试连接不上,就认为服务端挂了,通知客户端。可能是因为客户端和服务端中有防火墙,当服务端连接不上时,客户端需要从本地的可用节点列表中移除相应的服务实例;从可用性的角度考虑,客户端继续服务,并尝试重新连接注册中心,这段时间使用缓存数据。若是服务端主动续约,没有心跳的情况:取决于租约超时时间和注册中心租约超时重试机制。从一致性的角度考虑,客户端立即终止服务调用,直到与注册中心恢复连接。若是注册中心主动与服务端保持心跳的情况:取决于心跳重试的次数和间隔。原创 2025-06-09 19:55:14 · 970 阅读 · 0 评论 -
go 连接池
在简单tcp服务中,每次请求耗费一个连接net.dial()。所以我们可以考虑复用连接,实现连接池。说明:仅简单测试,未提供完备测试用例。原创 2025-06-09 14:29:54 · 247 阅读 · 0 评论 -
go 缓存
一般情况下,击穿不会有问题,访问一次db就能回写redis;key数量超大时,需要限制,比如限制轮询key的个数或者轮询时长。问题:定时轮询不能访问到所有key,所以有过期key没处理,不能单独定时轮询。大量goroutine同时访问一个key时,singleflight会让其他的原地等待,只有一个访问db。存在第三方比如bloomFilter,先确认db上是否hasKey,存在再请求db。穿透:大量不存在的key访问redis不存在,打到db上。击穿:key不在缓存中,但在db中。原创 2025-06-03 16:32:31 · 380 阅读 · 0 评论 -
go 任务池
任务池用来管理并发任务,没有任务池面临的问题:并发任务来一个开一个goroutine。无缓冲缓冲小了会阻塞任务提交;缓冲过大会导致资源浪费。快任务、慢任务分开放在两个任务池中配置、处理。// 这篇文章我喜欢他的场景示例和数据对比。task pool中task介绍。// todo: 压缩图片上传。原创 2025-05-30 13:43:30 · 324 阅读 · 0 评论 -
go 消息队列 涉及channel、ring buffer
文章主要是针对消息队列的思考,消息队列核心实现使用了channel、ring buffer和map结构。文章开篇介绍了channel的实现原理,然后是对消息队列的分析与实现,其中消息缓冲使用ring buffer存储,所以在文章第三部分介绍了ring buffer。原创 2025-05-29 15:33:19 · 350 阅读 · 0 评论 -
go rpc调用
【代码】go 简版pool连接池实现。原创 2025-03-11 18:02:15 · 284 阅读 · 0 评论 -
Cookie、Session和Token的关系和区别
Cookie是服务端发送给浏览器并储存在本地的一小段文本数据(通常<=4KB),浏览器后续请求自动携带该数据回传服务端核心作用会话跟踪:记录用户行为,如购物车商品身份认证:存储用户登录后的身份标识,如session_idSession是服务器为每个用户分配的唯一会话标识,存储用户登录状态或临时数据与cookie的关系服务端通过Cookie将session_id返回客户端客户端后续请求携带该id,服务端通过该id从内存或数据库中查找对应的会话数据为什么需要Session。原创 2025-04-02 16:58:17 · 470 阅读 · 0 评论 -
go 反射reflect速记
reflect go 基础梳理原创 2025-02-14 10:18:33 · 266 阅读 · 0 评论 -
go 原子操作、加锁、MVCC多版本并发控制
MVCC是Mysql InnoDB用于进行数据并发访问控制的协议。MVCC主要是通过版本链实现的。在InnoDB引擎里面,每行都有额外两列:trx_id和roll_ptr。trx_id表示修改该行数据的事务ID。roll_ptr表示回滚指针。InnoDB引擎通过回滚指针将不同版本串联起来,构成版本链。这些串联起来的历史版本,存在undolog里面。当某一事务发起查询时,MVCC会根据事务的隔离级别生成相应的read view, 返回合适的数据。原创 2025-02-26 11:15:10 · 523 阅读 · 0 评论 -
go 代码生成技术
编译器地址:https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.4下载 win-64版本,把bin文件夹的路径放到环境变量path下相关教程:https://blog.csdn.net/weixin_51952373/article/details/123098967命令:go install github.com/golang/protobuf/protoc-gen-gogitee: https://gitee.com/luyue_原创 2025-03-17 14:59:24 · 363 阅读 · 0 评论 -
go 微服务架构
比如缓存模式下,正常情况下,缓存中查不到就查询数据库;当触发限流后,缓存中查不到可以返回默认值或错误。可以结合failover考虑,返回客户端302重定向,让客户端重新找一个可用节点。当触发限流后,服务接收到请求直接返回202,再异步处理请求。触发限流后直接返回固定响应这一步可以在服务拦截器里实现。故障检测触发限流,限流缓解故障影响、检测优化限流策略。微服务框架服务于微服务架构,核心:通信、治理。漏桶、令牌桶、固定窗口、滑动窗口。go 微服务框架-广播实现讲解。分而治之,独立部署、治理。原创 2025-03-20 18:36:45 · 419 阅读 · 0 评论 -
单点登录&OAuth2.0
在多系统共存环境下,一个系统登录后,其他系统无需登录;即一处登录后获得所有系统信任。全局独一份内容,比如是否登录存中央session中;个性信息存在自己的服务中。说明:此处代码实现分别存储session的sso。多设备指手机、笔记本、电脑等,需要分别登录。负载均衡、熔断限流、来源验证 // 最好网关做。鉴权:是合法用户的你有哪些权限。原创 2025-04-02 17:11:11 · 351 阅读 · 0 评论 -
go 用户身份认证的核心机制
readme&源码: https://gitee.com/luyue_zhang/sso_oauth2/blob/master/single_sign_on/readme.md。readme&源码: https://gitee.com/luyue_zhang/sso_oauth2/blob/master/oauth2/readme.md。readme&源码: https://gitee.com/luyue_zhang/sso_oauth2/blob/master/sso/readme.md。原创 2025-04-08 10:12:52 · 238 阅读 · 0 评论 -
go 文件上传系统
文件上传系统是前后端分离项目,实现普通文件上传、大文件分片上传功能;大文件分片上传提供断点续传、并发上传等能力,通过分片md5、文件md5验证完整性。原创 2025-04-28 09:58:56 · 256 阅读 · 0 评论