- 博客(13)
- 问答 (1)
- 收藏
- 关注
原创 优惠券秒杀-小众点评黑马点评项目Go语言实现--Hertz+Redis练手项目
例如在第一个请求查询到库存为1后发生了协程交替执行,此时协程2也会查询到库存剩余,然后两个请求同时扣减,这样就带来了库存超卖问题。乐观锁:通过库存比较的方式,也能解决超卖问题,但是当并发时候,大量的请求查询到了订单,但是当尝试扣减订单时,由于库存发生变化,会扣减失败,效率也不高。优惠券秒杀包含:分布式系统全局ID生成器,redis操作原子性,优惠券下单,和基于分布式锁的秒杀并发安全,消息队列。改进方式:在扣减库存时,不和查询到的值进行对比,而是判断只要有库存就进行扣减。在秒杀场下单中,业务流程如下。
2025-03-06 12:53:07
338
原创 Go使用Gorm连接Oracle
在go开发中,没有官方的oracle驱动支持,这使得在使用gorm操作oracle特别复杂,但是又不得不用Oracle数据库。这是社区开发并维护的开源项目,它为 Go 语言提供了一个强大的 Oracle 数据库驱动程序。是纯go实现的,不在需要Oracle client 或者cgo支持。在github中看到gorm的oracle支持是godror这个项目,但是这个项目需要cgo的支持,在需要跨平台编译的项目中体验很不好。方法来获取dsn,它会自动完成特殊字符的转义,减少开发中出错的可能。
2024-09-25 14:30:08
830
1
原创 消息推送-小众点评黑马点评项目Go语言实现--Hertz+Redis练手项目
这样博主的消息队列中就存在一条待消费的消息,然后编写sse逻辑。需要注意的是,redis的stream使用消费者组读取方式,读取前需要创建消费者组,读取后需要确认消息。如果对于消息队列有较高的要求,请考虑其他专业的消息队列。redis中有三种方式可以实现消息队列,分别是list,pub/sub,stream,他们的区别如下。
2024-08-13 14:19:46
845
1
原创 好友关注-小众点评黑马点评项目Go语言实现--Hertz+Redis练手项目
粉丝读取收信箱,需要注意的是,由于Feed流中的数据是随时间变化不断更新的,传统的分页方式为根据每页几条pageSize和当前第几页页Page来计算查询范围,这对于Feed流中的动态列表而言会有重复读的问题,应当采用滚动分页模式。在本文中采取推模式作为案例。redis中实现feed流需要使用zset,当博主发布一条动态时往粉丝的收件箱(redis的zset)写一条数据。查看博客或则个人主页时候都会有关注/取消关注按钮,取决于用户是否关注了该博主。好友关注涉及到取Set的增加、删除、取交集,Feed流推送。
2024-08-13 12:51:21
718
原创 达人探店-小众点评黑马点评项目Go语言实现--Hertz+Redis练手项目
本项目是黑马程序员的Redis实战项目,使用Go语言重构的版本。用户信息使用userDto结构体定义,需要通过user对象转换而来,避免频繁转换,直接将字段定义才Blog结构体中,并使用gorm:-表示不属于blog表的字段,需要忽略。查看博客时,除了显示博客内容以外还要显示用户头像、是否关注等信息。
2024-08-13 10:45:33
440
原创 redis实现Feed流推送
在T1时刻查询到6、5、4三条数据后,在下一次查询(T3)时刻前有人往数据库写入一条记录7,在T3时刻查询时候根据pageSize和page计算从第四条记录开始查3条,就会得到重复的记录:4。大v:其粉丝分两种粉丝,一种是活跃用户,一种是普通用户;第一次查询后记住lastId为4,即上一次查询的最小值,在第二次查询时从lastId往后查找,即使中间有人插入数据也不会影响查询结果。后续查询时,max应当设置成上一次查询的最小分数,再此处设置为7.如果此时将offset设置为1,查询结果会变成。
2024-08-12 22:45:09
836
原创 小众点评黑马点评项目Go语言实现--Hertz+Redis练手项目
项目地址本项目是黑马程序员的Redis实战项目,使用Go语言重构的版本。目前项目还在开发中,本文会持续更新。
2024-08-12 19:11:05
1000
原创 解决gin设置session中间件Cookie无效
当使用session时会发现登陆过后能正常写入session,但是第二次请求时候又会被重定向到cas登陆,这是因为cookie没用被正常写入。检查前端请求的响应头和请求头的cookie时发现报错“尝试通过Set-Cookie标头设置Cookie时被阻止,因为它具有“Secure“属性,但未通过安全连接发送”。2、如果你的服务通过nginx反代,还需要检查nginx的配置中是否有Secure:配置,如果有需要将其删除。1、如果你的服务是http的,在创建session时,需要将Secure设置为false,
2024-07-08 14:10:35
393
原创 Go CAS认证实现 gin+cas认证 单点登录
这里只根据cas原理实现了一个基本的CAS客户端认证流程,包括了请求检查、重定向处理、票据验证和用户信息解析,并通过Gin中间件集成到了Web应用程序中。
2024-07-03 10:06:36
688
原创 ESP32-MicroPython实现ssl连接mqtt服务器EMQX
为了节省时间,没有自行部署mqtt服务器,选择使用EMQX提供的Serveless免费的mqtt服务器。EMQX官方说明免费版是多租户模式,出于安全考虑,只能选择ssl/tls加密协议连接。在PC上无论使用Golang、Python或者其它语言都能够正常连接,但在esp32中由于MicroPython对ssl的支持比较简陋,使用emqx官方提供的demo连接时,会发现代码报错,连接失败。的使用上海乐鑫提供的官方软件,将下载的固件烧录到开发板。到此,正常连接,收发数据正常,问题解决。
2024-03-10 18:35:06
1467
6
原创 Gin 和 Gorm 来构建一个简单的在线商城。
我们需要定义一些 Gorm 模型来映射数据库表。package models import "time" // 用户模型定义 type User struct {完整代码请戳我获取。
2023-05-02 13:36:20
273
3
原创 (毕设)Django+uniapp实现医疗管理小程序
在当今医疗行业越发依赖于信息化技术的背景下,使用Python Django作为后端开发医疗管理小程序,并利用自带的admin进行内容管理以及使用websocket实现在线问诊是一种很好的选择。本文将介绍如何实现这样一个小程序。接下来,创建Django项目:创建一个名为patient的Django应用,运行以下命令:运行以下命令迁移数据库:在中定义序列化器:
2023-04-30 22:52:01
862
1
空空如也
Clion中MinGw无法编译
2021-09-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人