
Java项目
文章平均质量分 96
Java项目记录。
-代号9527
逢山开路,遇水搭桥!纸上得来终觉浅,绝知此事要躬行。
展开
-
【网课平台】Day16.项目优化:压测、加缓存优化与分布式锁
此时,过期时间到了以后,进来一个线程,只查一次数据库,下一个线程进来拿到锁,此时Redis已有数据,但这时吞吐量很低。但此时存在问题:线程A查询操作还没结束时,key过期,另一个线程B抢锁成功,线程A操作结束后,执行finally,把锁删除了,但此时删除的却是别人的锁。数据库连接资源珍贵,但优化的这个接口,不存在复杂的SQL,也不存在数据库连接不释放的问题,暂时不考虑数据库方面的优化。如果缓存了空值或特殊值要。原子性即同成功,同失败,整个执行过程,CPU一气呵成的执行完,中间不要暂停,切换到其他线程。原创 2023-04-28 16:32:25 · 1225 阅读 · 0 评论 -
【网课平台】Day15.Devops:持续集成与持续交付
一个软件的生命周期包括:需求分析阶、设计、开发、测试、上线、维护、升级、废弃。产品人员进行需求分析设计人员进行软件架构设计和模块设计每个模块的开发人员并行开发,设计接口、进行编码,并进行单元测试开发完毕,将代码集成部署到测试服务器,测试人员进行测试测试人员发现bug,提交bug、开发人员修改bugbug修改完毕再次集成、测试测试完毕,项目上线运维人员进行安装部署、培训用户提出问题,返回给运维人员运维人员反馈给开发人员,开发人员进行问题处理再次提交测试。原创 2023-04-27 11:29:17 · 1423 阅读 · 0 评论 -
【网课平台】Day14.集成RabbitMQ:消息队列实现异步通知
ApiOperation("获取课程发布信息") @ResponseBody @GetMapping("/course/whole/{courseId}") public CoursePreviewVo getCoursePublish(@PathVariable("courseId") Long courseId) {//查询课程发布信息 CoursePublish coursePublish = coursePublishService . getCoursePublish(courseId);原创 2023-04-26 14:37:51 · 1194 阅读 · 0 评论 -
【网课平台】Day13.订单支付模式:生成支付二维码与查询支付
在订单服务中定义生成支付二维码的接口。/*** 总价/*** 订单类型/*** 订单名称/*** 订单描述/*** 订单明细json,不可为空/*** 外部系统业务id//继承支付记录Po类 @Data @ToString public class PayRecordVo extends XcPayRecord {//二维码 private String qrcode;原创 2023-04-25 16:15:34 · 1950 阅读 · 0 评论 -
【网课平台】Day12.对接支付宝沙箱环境测试
ZXing是一个开源的类库,是用Java编写的多格式的1D / 2D条码图像处理库,使用ZXing可以生成、识别QR Code(二维码)。沙箱环境是支付宝为开发者提供的与生产环境完全隔离的一个联调测试环境,沙箱环境中调用接口不会对生产环境的数据产生影响。一个网站要支持在线支付功能通常接入第三方支付平台,比如:微信支付、支付宝、其它的聚合支付(一码扫所有)平台。除了在pc网站扫码支付还可以实现公众号页面内支付,可以实现在手机端H5页面唤起微信客户端完成支付。创建订单服务及数据库。原创 2023-04-25 09:40:03 · 989 阅读 · 0 评论 -
【网课平台】Day11.基于资源的访问控制RBAC与授权模型表
在课程发布controller中没找到这个功能的接口,在里面重新定义课程查询接口。一个例子:用户A和用户B都是教学机构,他们都拥有“我的课程”权限,但是两个用户所查询到的数据是不一样的。此时给用户分配(添加或者删除)权限:(创建角色就是为了方便分配权限,加权限就是加角色)以上的实现是通过解析令牌拿到当前操作用户的权限,拿这个权限和接口上注解的权限比对。里的课,是能学习的。细粒度授权也叫数据范围授权,即不同的用户所拥有的操作。完善获取学习资格的代码。,根据不同的参数查询不同的数据或操作不同的数据。原创 2023-04-23 15:55:08 · 651 阅读 · 0 评论 -
【网课平台】Day10.对接第三方:实现微信扫码登录
注意这里,前端代码中已经定义了,用户授权后的重定向地址。=====>log . debug("微信扫码回调,code:{},state:{}" , code , state);//请求微信申请令牌 //拿到令牌查询用户信息 //将用户信息写入本项目数据库 XcUser xcUser = new XcUser();//暂时硬编写,目的是调试环境,看能不能跳到下面的地址 xcUser . setUsername("t1");} }接Day9内容,一个认证接口,写不同的实现类。/**原创 2023-04-21 15:03:19 · 3126 阅读 · 0 评论 -
【网课平台】Day9.用户认证与验证码服务
网站主流认证方式有:账号密码认证、手机验证码认证、扫码登录…实际开发中,用户的账户和密码等信息存在数据库表:之前测试Spring-security则是使用硬编码将用户暂存在内存中:Spring-Security原理与源码参考Spring-Security的工作原理流程图:查询用户信息的逻辑是:DaoAuthenticationProvider源码:UserDetailsService是一个接口:UserDetails是用户信息接口:框架调用loadUserByUsername()方法拿到用户原创 2023-04-20 16:09:56 · 666 阅读 · 0 评论 -
【网课平台】Day8.Spring Security实现统一认证授权(OAuth2.0与JWT)
本项目中,认证服务即auth,资源即其他微服务,如内容管理服务。所有访问微服务的请求都要经过网关,所以不用在每个微服务里加校验,而是在网关进行用户身份的认证,这样就可以将很多非法的请求拦截到微服务以外 ===> 网关认证。Payload:负载,也是一个json对象,这里存信息字段,如iss(签发者),exp(过期时间戳), sub(面向的用户)或其他自定义字段。,公钥和私钥是配对的,成对的公钥和私钥才可以正常加密和解密,非对称加密效率低但相比对称加密非对称加密更安全一些。如此,就省去了用户注册成本。原创 2023-04-14 12:09:49 · 1052 阅读 · 1 评论 -
【网课平台】Day7.分布式事务控制与微服务的远程调用
/提交审核接口 @ResponseBody @PostMapping("/courseaudit/commit/{courseId}") public void commitAudit(@PathVariable("courseId") Long courseId) {@Api(value = "课程预览发布接口" , tags = "课程预览发布接口") @Controller public class CoursePublishController {原创 2023-04-13 10:54:53 · 953 阅读 · 0 评论 -
【网课平台】Day6.模板引擎Freemarker
ApiOperation(value = "课程计划和媒资信息绑定") @PostMapping("/teachplan/association/media") public void associationMedia(@RequestBody BindTeachplanMediaDto bindTeachplanMediaDto) {在多张表中整合出课程预览需要的信息(数据)使用模板引擎渲染出页面返回给浏览器传参为:课程id,表示要预览哪一门课程课程详情页面。原创 2023-04-11 11:14:35 · 576 阅读 · 0 评论 -
【网课平台】Day5.XXL-Job实现分布式任务调度
视频文件的内容主要包括视频和音频,其文件格式是按照一 定的编码格式去编码,并且按照该文件所规定的封装格式将视频、音频、字幕等信息封装在一起,播放器会根据它们的封装格式去提取出编码,然后由播放器解码,最终播放音视频。以上三种能完成简单的任务,如给定开始时间与重复间隔,重复执行某任务,但比较复杂的实现不了,如:设置每月第一天凌晨1点执行任务、复杂调度任务的管理、任务间传递数据等等。任务的调度,即指系统为了完成特定业务,基于给定时间点,给定时间间隔或者给定执行次数,去自动执行任务。原创 2023-04-06 00:00:49 · 653 阅读 · 0 评论 -
【网课平台】Day4.大文件的断点续传
与前端约定结果类RestResponse.java,操作成功返回{code:0}否则返回{code:-1}@Api(value = "大文件上传接口" , tags = "大文件上传接口") @RestController public class BigFilesController {原创 2023-04-04 23:45:14 · 507 阅读 · 0 评论 -
【网课平台】Day3.网关与分布式文件系统
请求地址: /media/upload/coursefile请求内容:form-data;filename=“具体的文件名称”响应:定义vo类} //注意这里虽然前端要求返回的字段和表对应的po一样 //但别直接用po,万一以后前端要求少返回一个字段, 你又不能动po定义接口。原创 2023-03-26 23:46:17 · 403 阅读 · 0 评论 -
【网课平台】Day2.异常的统一处理与JSR303入参校验
课程分类要返回全部的课程分类,以树形结构JSON {"id" : "1-2" , "isLeaf" : null , "isShow" : null , "label" : "移动开发" , "name" : "移动开发" , "orderby" : 2 , "parentid" : "1" , "childrenTreeNodes" : [ {原创 2023-03-22 00:44:12 · 2187 阅读 · 0 评论 -
【网课平台】Day1.模型类(Dto.Po.Vo)与跨域
项目背景:项目业务介绍:* * 技术架构图: * *开发配置环境、git等常规配置此处跳过分页查询模型类由于分页查询这一类的接口在项目较多,这里针对分页查询的参数(当前页码、每页显示记录数)单独在xuecheng-plus-base基础工程中定义。/*** @description 分页查询通用参数//当前页码 private Long pageNo = 1L;//每页记录数默认值 private Long pageSize = 10L;} }原创 2023-03-21 10:36:57 · 752 阅读 · 0 评论