知学传课
文章平均质量分 85
豆恭梓
在读计算机研究生一枚^_^
展开
-
day08-领取优惠券(高并发优化:超卖、锁失效、事务边界、事务失效)
超卖这样的线程安全问题,解决方案有哪些?悲观锁:添加同步锁,让线程串行执行优点:简单粗暴缺点:性能一般乐观锁:不加锁,在更新时判断是否有其它线程在修改优点:性能好缺点:存在成功率低的问题在事务和锁并行存在时,一定要考虑事务和锁的边界问题。由于事务的隔离级别问题,可能会导致不同事务之间数据不可见,往往会产生一些不可预期的现象。原创 2023-09-01 18:13:24 · 1755 阅读 · 0 评论 -
day07-优惠券管理
还有一个是跟兑换码有关。就是在发放优惠券的时候,如果发现优惠券的领取方式是指定发放,则需要生成兑换码。不管怎么发,优惠券都有过期时间。可见这个列表就是一个典型的带过滤条件的分页查询。这就要求我们在发放优惠券的时候做判断,如果发现是指定发放模式,则需要提前生成兑换码。不过,新增的优惠券并不会立刻出现在用户端页面,管理员还需要对优惠券信息做审核,可以看出来,这是一个有过滤条件的分页查询功能。我们可以在这里实现优惠券的基础的增删改查功能。也可以在需要的时候重新发放优惠券。一个是立刻发放,一个是定时发放。原创 2023-08-14 16:48:59 · 1382 阅读 · 1 评论 -
day06-点赞系统
当热心用户或者老师给学生回答了问题以后,所有学员可以给自己心仪的回答点赞,点赞越高,排名也越靠前。首先我们来分析整理一下点赞业务的需求,一个通用点赞系统需要满足下列特性:要保证安全,避免重复点赞,我们就必须保存每一次点赞记录。只有这样在下次用户点赞时我们才能查询数据,判断是否是重复点赞。同时,因为业务方经常需要根据点赞数量排序,因此每个业务的点赞数量也需要记录下来。综上,点赞的基本思路如下:点赞系统可以在点赞数变更时,通过MQ通知业务方,这样业务方就可以更新自己的点赞数量了。并且还避免了点赞系统与业原创 2023-08-14 15:46:12 · 593 阅读 · 1 评论 -
day05问答系统
学员在学习的过程中可以随时提问问题老师、其他学员都可以回答问题老师、学员也都可以对回答多次回复老师、学员也都可以对评论多次回复老师可以在管理端管理问题、回答、评论的状态业务流程并不复杂。原创 2023-08-03 21:01:20 · 106 阅读 · 0 评论 -
day04-高并发优化
首先,我们要定义一个工具类,帮助我们改造整个业务。在提交学习记录业务中,需要用到异步任务和缓存的地方有以下几处:① 添加播放记录到Redis,并添加一个延迟检测任务到DelayQueue② 查询Redis缓存中的指定小节的播放记录③ 删除Redis缓存中的指定小节的播放记录④ 异步执行DelayQueue中的延迟检测任务,检测播放进度是否变化,如果无变化则写入数据库//这是放到redis的hash中的value数据 private Long id;原创 2023-08-03 10:51:25 · 281 阅读 · 0 评论 -
day03-学习计划和进度
查询结果中有很多对于已经学习的小节数量的统计,因此将来我们一定要保存用户对于每一个课程的学习记录,哪些小节已经学习了,哪些已经学完了。因此,查询这个接口的请求肯定是请求到课程微服务,查询课程、章节信息,再由课程微服务向学习微服务查询学习进度,合并后一起返回给前端即可。用户创建完计划自然要开始学习课程,在用户学习视频的页面,首先要展示课程的一些基础信息。用户每学习一个小节,就会新增一条学习记录,当该课程的全部小节学习完毕,则该课程就从学习中进入已学完状态了。课程信息是必备的,而学习进度却不一定存在。原创 2023-08-01 15:42:55 · 279 阅读 · 1 评论 -
day02-实现我的课表接口功能
请求方式请求路径请求参数格式返回值格式@Slf4j @Component @RequiredArgsConstructor //用于构造注入 public class LessonChangeListener {/*** 监听订单支付或课程报名的消息* @param order 订单信息。原创 2023-07-27 21:58:13 · 230 阅读 · 0 评论 -
day01-修复BUG、分支管理
在咱们项目中,master分支用来给大家提供完整版本代码了,而lesson-init分支作为初始化分支。不过需要注意的是,默认情况下我们推送的代码不管是哪个分支都会触发构建,而且构建默认是基于lesson-init分支,需要重新配置。在刚刚进入项目组后,一般不会布置开发任务,而是先熟悉项目代码。为了帮助大家熟悉整个项目,我们预留了一个BUG,让大家在修复BUG的过程中熟悉项目代码。微服务获取用户是基于请求头来传递的,因此我们设置全局参数时添加一个user-info的请求头参数即可。原创 2023-07-26 14:47:54 · 444 阅读 · 2 评论 -
day01-本地部署、Maven生命周期
执行安装时compile编译, test测试、 package打包会依次执行,但是不会执行clean,因为不是同一套。对于需要开发功能的微服务,则需要在本地部署,不过首先我们要把代码拉取下来。部署到虚拟机中会使用dev环境配置,而在本地应该使用local环境配置。聚合:父工程通过modules标签,将子模块聚集起来,好处方便管理,继承:子模块通过parent标签,可以从父工程。生命周期内部,执行后面命令时,会。三套生命周期相互独立,但是在。注意,开发时需要使用。原创 2023-07-26 12:54:10 · 85 阅读 · 0 评论 -
day01-持续集成、部署
我们开发时,是否能把所有的项目代码都拉取到本地,然后在本地部署运行、开发测试?为了模拟真实环境,我们在虚拟机中已经提供了一套持续集成的开发环境,代码一旦自测完成,push到Git私服后即可自动编译部署。而开发我们负责的微服务时,则需要在本地启动运行部分微服务。原创 2023-07-25 21:57:27 · 51 阅读 · 0 评论 -
day01-导入虚拟机、环境搭建
为了模拟真实的开发场景,我们设定的场景是这样的:项目已经完成1.0.0版本60%的功能开发,能够实现项目的等业务流程。现在需要加入等功能。原创 2023-07-25 21:04:43 · 171 阅读 · 0 评论 -
day01项目介绍
知学传课是一个基于微服务架构的生产级在线教育项目。原创 2023-07-25 17:46:39 · 474 阅读 · 0 评论