- 博客(120)
- 收藏
- 关注
原创 day14--项目优化
本文针对课程查询接口在高并发场景下的性能优化问题,提出了一套完整的优化方案。首先通过压力测试分析了接口性能指标,包括吞吐量、响应时间、QPS和错误率等。然后采用Redis缓存技术优化查询性能,并详细探讨了缓存穿透、雪崩和击穿三大问题的解决方案:使用空值缓存和布隆过滤器防止穿透,设置随机过期时间避免雪崩,采用分布式锁应对击穿。重点介绍了基于Redisson的分布式锁实现,通过加锁机制、看门狗自动延期和Lua脚本保证原子性操作,有效解决了高并发环境下的数据一致性问题。文章最后给出了优化后的课程查询接口实现代码,
2025-07-24 10:19:47
1126
原创 day13--在线学习+项目部署
本文介绍了在线学习系统的功能实现与DevOps部署方案。系统实现了课程学习资格校验、视频点播、课程信息查询等功能,通过Nginx配置API路由,并开发了获取课程发布信息的接口。在部署方面,详细讲解了DevOps理念和CI/CD流程,包括使用Docker容器化部署、自动化构建测试、以及通过Jenkins实现代码提交后的自动构建。文章还提供了前端门户和机构端的前端部署步骤,包括Nginx配置和静态资源部署,最终实现了一个完整的在线学习系统从开发到部署的全流程解决方案。
2025-07-24 09:41:55
615
原创 day12--支付
本文详细介绍了在线教育平台支付系统的设计与实现。系统采用通用订单服务架构,支持微信支付和支付宝支付,主要流程包括:选课记录创建、订单生成、支付二维码生成、支付结果处理及消息通知。关键技术点包括:1. 支付流程设计,涵盖选课记录、订单创建、支付接口调用;2. 支付宝沙箱环境集成,实现测试支付功能;3. 消息队列实现支付结果异步通知;4. 支付结果验签与状态更新机制。系统采用RabbitMQ保证消息可靠性,通过生产者确认、持久化和消费者确认机制确保支付结果准确传递。该方案实现了支付功能与业务解耦,具备良好的扩展
2025-07-23 15:39:57
1065
原创 day12--用户授权、添加选课
本文介绍了RBAC权限控制模型及其实施流程,包括基于角色和基于资源的两种授权方式,以及如何在资源服务内部通过注解实现细粒度授权。同时,详细阐述了教学机构用户授权流程,包括用户权限查询、异常处理和测试验证。此外,文章还介绍了学习中心服务的选课功能开发,包括免费课程和收费课程的不同处理逻辑,以及如何通过RPC调用内容管理服务获取课程信息。最后,提供了前后端联调测试的步骤,验证选课记录和我的课程表数据的正确性。整个系统实现了从用户认证、权限控制到课程选课的全流程功能。
2025-07-22 09:56:01
994
原创 day11--用户认证+微信扫码登录
本文详细介绍了基于SpringSecurity的用户认证系统设计与实现方案。系统采用模块化设计,主要包含以下核心功能: 多模式认证体系: 实现账号密码认证(支持BCrypt加密) 支持手机验证码认证 集成微信扫码登录(基于OAuth2协议) 关键技术实现: 通过自定义UserDetailsService连接用户中心数据库 扩展用户身份信息存储 开发独立验证码服务(支持图片验证码) 构建微信认证服务(包含令牌获取、用户信息同步)
2025-07-21 17:52:07
787
原创 day10--认证授权
本文介绍了认证授权模块的技术实现方案,主要内容包括: 认证授权基础概念:身份认证验证用户身份合法性,用户授权控制资源访问权限; OAuth2协议应用:采用授权码模式实现微信扫码登录,密码模式用于前端访问微服务; JWT令牌技术:通过JWT实现无状态认证,解决传统session认证的性能问题; 架构设计:网关负责统一认证(校验JWT合法性和白名单管理),微服务负责具体授权; 技术实现:基于Spring Security和OAuth2构建认证服务,使用JWTTokenStore存储令牌,网关通过过滤器实现统一认
2025-07-21 15:45:09
750
原创 day8--课程审核、课程发布
摘要:本文详细介绍了在线教育平台的课程审核与发布流程。课程状态包括"未提交"、"已提交"、"已发布"和"下架"等,通过预发布表解决审核与编辑冲突问题。发布流程涉及数据库、Redis、Elasticsearch和MinIO的多系统数据同步,采用分布式事务保证一致性。技术实现上使用消息表记录任务状态,通过SDK封装通用处理逻辑,结合XXL-JOB进行任务调度。系统设计了严格的校验机制,包括机构权限、课程完整度检查等,确保数据安全性和
2025-07-20 16:17:13
853
原创 day7--绑定媒资、课程发布
"fileName": "22-Hmily实现TCC事务-开发bank2的confirm方法.avi",课程信息编辑完毕即可发布课程,发布课程相当于一个确认操作,课程发布后学习者在网站可以搜索到课程,然后查看课程的详细信息,进一步选课、支付、在线学习。下边是课程编辑与发布的整体流程:为了课程内容没有违规信息、课程内容安排合理,在课程发布之前运营方会进行课程审核,审核通过后课程方可发布。
2025-07-19 16:28:40
878
原创 面试题--xxl-job分布式任务调度
服务由调用中心和执行器组成,调用中心负责按任务调度策略向执行器下发任务,执行器负责接收任务执行任务。xxl-job的工作原理是什么?xxl-job是什么怎么工作?
2025-07-14 11:37:23
156
原创 day6--视频处理
视频处理与分布式任务调度方案摘要 本文介绍了视频处理与分布式任务调度的技术方案。主要内容包括:1)视频转码技术,使用FFmpeg工具进行视频格式转换;2)XXL-JOB分布式任务调度框架,实现任务分片广播、负载均衡和故障转移;3)视频处理具体方案,通过分片参数保证任务不重复执行,采用分布式锁防止并发冲突;4)任务状态管理,包括任务查询、执行状态更新和结果存储。系统采用多线程处理视频文件,支持弹性扩容,确保高可用性和任务幂等性,最终实现高效的分布式视频处理流程。
2025-07-14 11:30:27
910
原创 day5--上传视频
摘要:本文介绍了基于断点续传技术的视频上传系统设计与实现。系统采用分块上传方案解决大文件上传问题:1.前端将文件分块并校验分块状态;2.使用多线程上传未完成分块至MinIO;3.服务端合并分块并校验文件完整性。关键技术包括:分块算法(5MB/块)、MinIO存储、MD5校验机制、未完成文件清理(定时任务删除无效分块)。系统包含检查文件、上传分块、合并文件等核心接口,通过数据库记录文件状态,确保上传可靠性。该方案有效解决了网络中断导致重复上传的问题,提升了大文件传输的用户体验
2025-07-13 13:20:49
924
原创 day4--上传图片、视频
摘要: 本文详细介绍了基于MinIO的分布式文件系统设计与实现,用于解决海量文件存储与访问问题。主要内容包括: 分布式文件系统概述:通过多台计算机协同工作提升处理能力,确保数据高可用与就近访问。 MinIO技术选型:轻量级、兼容S3接口,支持多语言SDK,适合存储非结构化数据(如视频、图片)。 实现步骤: 环境搭建:Docker部署MinIO,配置公开访问的存储桶(如mediafiles)。 核心功能:文件上传、删除、查询的Java SDK集成,结合MD5校验确保数据完整性。 业务逻辑:课程图片上传流程,涉
2025-07-12 17:13:05
601
原创 day4--媒资管理模块(Nacos+网关)
摘要:本文介绍了在线教育平台的媒资管理系统(MAM)设计与实现,重点分析了系统架构与Nacos配置中心的搭建。系统功能包括视频/图片上传、转码处理、审核及课程绑定,采用微服务架构(内容管理、系统管理、媒资管理)并通过SpringCloudGateway网关统一路由。为解决多服务配置问题,使用Nacos作为服务发现和配置中心,实现环境隔离(dev/test/prod)和配置优先级管理(本地配置>扩展配置>共享配置)。网关配置采用负载均衡(lb://service-name)方式路由请求,通过路径匹配(如/co
2025-07-12 14:41:23
1039
原创 day3--课程计划相关业务
文章摘要: 本文详细介绍了基于SpringBoot的课程管理系统开发过程,主要内容包括:1. JSR303参数校验实现,通过spring-boot-starter-validation在Controller层进行基础校验,并展示了分组校验的应用场景;2. 课程管理模块开发,包含新增、修改课程的接口设计与实现,重点说明了DTO设计、业务校验和异常处理;3. 课程计划管理功能,实现树形结构的课程大纲查询,通过自连接SQL查询和TeachplanDto扩展类构建树形数据;4. 新增/修改课程计划功能,处理不同层级
2025-07-09 17:54:19
771
原创 面试题--系统如何处理异常
*** 业务异常*/super(msg);捕获后端产生的异常信息/*** 全局异常处理器,处理项目中抛出的业务异常*/@Slf4j/*** 捕获业务异常* @return*/log.error("异常信息:{}", ex.getMessage());// 获取异常信息// 截取到username字段,将其封装成提示信息给前端提示用户// 将错误信息通过空格截取成数组// 获取数组的第三个元素 :zhangsan。
2025-07-08 19:24:30
356
原创 day2--课程查询,新增,异常处理
摘要:本文详细介绍了课程管理系统的开发过程,主要包括三个核心功能模块的实现。1)课程分页查询:使用MyBatis-Plus框架开发持久层,配置分页插件并完成单元测试;2)课程分类树形查询:通过递归SQL实现多级分类查询,前端以树形结构展示;3)新增课程功能:涉及课程基本信息和营销信息的联合操作,采用事务管理确保数据一致性。系统采用前后端分离架构,通过Swagger进行接口测试,并实现了全局异常处理机制。开发过程中解决了Node版本兼容、前后端联调等技术难点,最终完成了具备完整增删改查功能的课程管理系统。
2025-07-08 19:09:57
1002
原创 java项目pom文件中<dependencyManagement>的作用
版本管理在微服务项目中非常常见,通常在父工程进行依赖管理,如果大家在写项目的时候发现依赖导入不进去,可以尝试把标签<dependencyManagement>注掉,进行刷新,当依赖全部导入之后再加上<dependencyManagement>标签就ok。可以在 dependencyManagement 中定义依赖项的版本号,避免在多个模块或项目中重复声明相同的版本。当需要升级依赖版本时,只需修改 dependencyManagement 中的版本号即可影响所有相关模块。
2025-07-08 12:42:29
217
原创 本人对Java就业前景感受:机遇、挑战与突围策略
Java作为一门拥有近30年历史的编程语言,在2025年依然保持着强大的生命力,但同时也面临着前所未有的挑战与变革。
2025-07-07 18:43:32
931
原创 day1--项目搭建and内容管理模块
《学成在线内容管理模块开发总结》 本文详细记录了学成在线教育平台内容管理模块的开发过程。首先通过Maven搭建多模块项目结构,包括父工程xuecheng-plus-parent和基础工程xuecheng-plus-base,并配置了Spring Boot 3.5.3、MyBatis-Plus、Redis等核心依赖。 内容管理模块采用分层架构设计: 模型层(xuecheng-plus-content-model)定义课程相关数据模型 业务层(xuecheng-plus-content-service)实现核心
2025-07-07 18:08:09
813
原创 Vue脚手架搭建项目+基础知识
本文介绍了Vue项目开发的关键技术点:1. 项目搭建流程,包括使用Vue CLI创建项目、项目结构解析、端口配置等;2. Vue基础语法,涵盖文本插值、属性/事件/双向绑定、条件渲染等核心功能;3. Axios网络请求的实现与跨域解决方案;4. Vue-Router路由配置,包括基本路由、编程式导航和嵌套路由;5. Vuex状态管理的应用,展示共享数据管理和异步操作处理;6. TypeScript基础,包括类型标注、接口、类等特性。文章通过具体代码示例,系统性地讲解了Vue生态中这些重要技术的使用方法。
2025-07-05 17:59:59
1405
原创 苍穹外卖day12--Apache POI导出Excel报表
摘要:本文介绍了基于Java的工作台数据展示系统开发与Excel报表导出功能实现。系统采用Spring Boot框架,通过WorkSpaceController实现营业额、订单、菜品、套餐等数据的查询接口,包括当日营业数据统计、订单状态分析等功能模块。同时利用Apache POI技术实现Excel报表导出,支持30天运营数据的自动填充与下载。系统包含数据概览和明细两部分,通过模板文件生成标准化报表,为餐饮管理系统提供数据可视化支持。测试表明系统运行稳定,数据统计准确,报表导出功能完善。
2025-07-02 11:51:40
768
原创 苍穹外卖day11--Echart数据统计图
摘要:本文介绍了基于Apache ECharts的数据可视化统计系统开发过程,主要包含营业额统计、用户统计、订单统计和销量排名Top10四个功能模块。系统采用Spring Boot框架开发,通过ECharts实现数据可视化展示。其中营业额统计使用折线图展示每日完成订单金额,用户统计展示总量和新增用户趋势,订单统计分析有效订单和完成率,销量排名则以柱状图呈现商品销售前10名。文章详细阐述了各模块的产品原型、业务规则、接口设计及代码实现,包括VO对象设计、Controller层、Service层和Mapper层
2025-07-02 10:32:34
1060
原创 苍穹外卖day10--Spring Task+WebSocket(订单状态、来单提醒、客户催单)
摘要:本文介绍了SpringTask定时任务和WebSocket技术的应用。SpringTask通过cron表达式实现定时调度,可用于订单状态管理,如超时取消订单和自动完成派送中订单。WebSocket实现全双工通信,用于来单提醒和客户催单功能。系统通过WebSocketServer保持长连接,当订单状态变化时向管理端推送JSON消息(包含类型、订单ID及内容)。对于未实现支付功能的情况,建议在用户提交订单时触发提醒。客户催单功能通过WebSocket推送催单消息,实现了餐厅管理端的实时消息提示和语音播报。
2025-07-01 16:28:58
765
原创 苍穹外卖day9--用户下单+订单支付
本文介绍了电商系统中用户下单及微信支付功能的实现方案。在用户下单部分,详细阐述了订单业务逻辑设计、数据库表结构(orders表和order_detail表的一对多关系)、DTO/VO实体类定义、以及完整的代码实现流程,包括Controller层、Service层和Mapper层的开发。在微信支付部分,说明了支付流程设计、安全配置要求和内网穿透解决方案,提供了支付接口的实现代码,包括预支付交易单生成和支付状态更新等功能。整个系统采用事务处理确保数据一致性,并实现了从购物车到订单生成再到支付完成的完整业务流程。
2025-07-01 10:52:51
969
原创 苍穹外卖day8--购物车的添加、查看、清空操作
本文介绍了购物车和地址簿功能的开发实现。购物车功能包括:1)添加商品到购物车,支持菜品和套餐两种类型,菜品需选择规格;2)查看购物车内容;3)清空购物车。数据库使用shopping_cart表存储购物车数据,通过用户ID关联。地址簿功能包括:1)查询、新增、修改和删除地址;2)设置默认地址;3)查询默认地址。使用address_book表存储地址信息,通过is_default字段标识默认地址。两个功能均采用分层架构开发,包含Controller、Service和Mapper层,并实现了前后端联调测试。
2025-06-30 19:55:23
737
原创 苍穹外卖day7--缓存菜品+缓存套餐
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:EHCacheCaffeineRedis(常用)
2025-06-29 18:08:09
679
原创 用IDEA内置的AI通义灵码,开发效率直接起飞!
作为老Java开发,在用上IDEA内置的通义灵码插件,真的有种"回不去了"的感觉。这玩意儿不是简单的代码补全工具,简直就是个24小时待命的编程助手,让我来唠唠它到底有多香。
2025-06-28 18:25:35
476
原创 苍穹外卖day5--Redis设置店铺营业状态
Redis入门与Java应用实践 摘要:本文介绍了Redis的基本概念,包括其作为内存数据库的特点(高性能、支持多种数据结构)和安装方法(Windows/Linux)。详细讲解了Redis的五种数据类型(String、Hash、List、Set、Zset)及其常用命令,以及通用操作命令。重点阐述了在Java项目中使用SpringDataRedis的操作方法,包括配置RedisTemplate和针对不同数据类型的CRUD操作。最后通过"店铺营业状态管理"的实战案例,展示了Redis在实际业
2025-06-27 21:00:39
1062
原创 苍穹外卖day4--菜品分页查询+菜品删除修改操作
本文介绍了餐饮管理系统中菜品模块的三个核心功能实现: 菜品分页查询:通过分页方式展示菜品列表,支持按菜品名称、分类和状态筛选,采用MyBatis分页插件实现数据分页查询逻辑。 菜品删除功能:实现单条/批量删除,包含业务规则校验(起售菜品不可删、套餐关联菜品不可删),采用事务处理同步删除菜品口味数据。 菜品修改功能:包含菜品信息回显和更新操作,采用先删除原有口味再批量新增的方式处理口味数据变更。 系统采用分层架构(Controller-Service-Mapper),通过MyBatis动态SQL实现复杂查询,
2025-06-27 19:28:41
1118
原创 苍穹外卖day3--公共字段填充+新增菜品
AutoFill类中定义用于标识需要进行公共字段自动填充的方法@Target注解指定该注解可以标注在方法上,用于标识哪些方法需要进行自动填充操作@Retention注解定义该注解的生命周期为运行时(RUNTIME),确保可以通过反射获取到该注解信息/*** 自定义注解,用于标识需要自动填充的字段* @Target 注解指定该注解可以标注在方法上,用于标识哪些方法需要进行自动填充操作。
2025-06-26 23:00:02
1114
原创 苍穹外卖day2-员工+分类模块功能
ThreadLocal 并不是一个Thread,而是Thread的局部变量。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。
2025-06-25 11:20:24
750
原创 苍穹外卖day1--项目环境搭建
本项目(苍穹外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括系统管理后台和小程序端应用 两部分。其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行统计,同时也可进行来单语音播报功能。小程序端主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等管理端功能员工登录/退出 , 员工信息管理 , 分类管理 , 菜品管理 , 套餐管理 , 菜品口味管理 , 订单管理 ,数据统计,来单提醒用户端功能。
2025-06-24 22:14:46
948
原创 超好用的AI工具集
不管是办公、设计、编程、学习都可以找到合适的工具,还可以直接访问官网。AI工具集官网 | 1000+ AI工具集合,国内外AI工具集导航大全。有些还支持调用API接口。
2025-06-23 09:47:52
220
原创 SpringBoot电脑商城项目--AOP统计业务方法耗时
使用环绕通知的方式来进行编写是 Spring AOP 和 AspectJ 中的一个接口,用于表示一个可执行的连接点(Join Point)。在切面中使用 @Around 环绕通知时,会传入一个 ProceedingJoinPoint 类型的参数,它允许你控制目标方法的执行流程。// 被spring容器管理@Component// 告诉spring当前类是一个切面类@Aspect/*** 定义环绕通知,用于统计目标方法的执行时间。
2025-06-22 17:22:35
343
原创 SpringBoot电脑商城项目--创建订单+统计业务方法耗时
*** 根据收货地址id,查询收货地址详情* @param aid 收货地址id* @return 匹配的收货地址详情,如果没有匹配的数据,则返回null*//*** 创建订单* @param aid 收货地址id* @param uid 用户id* @param cids 购物车数据id* @param username 用户名* @return 订单id*/
2025-06-22 17:03:07
411
原创 SpringBoot电脑商城项目--显示勾选+确认订单页收货地址
用户在购物车列表页中通过随即勾选相关的商品,在点击“结算按钮后,跳转到”结算“页面,在这个页面中需要展示用户在上个页面所勾选的购物车对应的数据,列表的展示,展示的内容还是在于购物车的表。两个页面需要用户勾选的多个cid传递给下一个页面uid,pid,#{cid}</foreach>order by。
2025-06-21 20:52:05
495
原创 SpringBoot电脑商城项目--增加减少购物车商品数量
在BaseController中捕获CartNotFoundException异常。要查询的数据不存在,CartNotFoundException异常。启动项目,先登录,再通过访问url地址进行测试。增加减少购物车商品数量的逻辑基本上是一样的。查询时数据是否有访问的权限。更新时产生的更新异常。
2025-06-21 16:57:31
541
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人