
项目学习
文章平均质量分 96
清风微凉 aaa
这个作者很懒,什么都没留下…
展开
-
第10章 项目总结02:针对当前项目的面试题
由多个服务通过网络完成一个事务叫分布式事务。比如:课程发布操作不仅要在本地数据库插入课程信息,而且还要请求索引服务将课程信息添加到索引库,还要请求MinIO将课程静态化并上传静态页面,这里就存在分布式事务。1)缓存穿透:去访问一个数据库不存在的数据无法将数据进行缓存,导致查询数据库,当并发较大就会对数据库造成压力。缓存穿透可以造成数据库瞬间压力过大,连接数等资源用完,最终数据库拒绝连接不可用。解决的方法:缓存一个null值。使用布隆过滤器。原创 2024-07-06 20:14:24 · 1217 阅读 · 0 评论 -
第9章 项目总结01:项目流程,每个模块的介绍
1、确定协议定义一个接口首先确定接口的协议,Http协议及具体的方法(GET、POST、PUT、DELETE)2、请求接下来需要分析请求及响应的数据格式与内容。get 请求时,前端请求key/value串,SpringMVC采用基本数据类型(String、Integer等)或自定义类型接收。原创 2024-07-06 20:13:58 · 1131 阅读 · 0 评论 -
第8章 项目优化:优化需求,压力测试,缓存优化(穿透,雪崩,击穿,分布式锁)
使用缓存后代码的性能有了很大的提高,虽然性能有很大的提升但是控制台打出了很多“从数据库查询”的日志,明明判断了如果缓存存在课程信息则从缓存查询,为什么要有这么多从数据库查询的请求的?这是因为并发数高,很多线程会同时到达查询数据库代码处去执行。我们分析下代码:如果存在恶意攻击的可能,如果有大量并发去查询一个不存在的课程信息会出现什么问题呢?比如去请求/content/course/whole/181,查询181号课程,该课程并不在课程发布表中。进行压力测试发现会去请求数据库。原创 2024-07-06 20:13:35 · 726 阅读 · 0 评论 -
第7章 项目部署:什么是DevOps,什么是CI/CD,DevOps实战
如何来落地实现DevOps呢?DevOps兴起于2009年,近年来由于云计算、互联网的发展,促进了DevOps的基础设施及工具链的发展,涌现了一大批优秀的工具,这些工具包括开发、测试、运维的各各领域,例如:GitHub、Docker、Jenkins、Hudson、K8S、Ant/Maven/Gradle、Selenium、QUnit、JMeter等。下图是DevOps相关的工具集:好的工具有利于DevOps的实施,但并不代表实施DevOps就一定需要去引入一堆工具。原创 2024-07-06 20:13:19 · 1378 阅读 · 0 评论 -
第6章 选课学习:需求分析,添加选课,支付,支付通知,在线学习
1 模块需求分析1.1 模块介绍本模块实现了学生选课、下单支付、学习的整体流程。网站的课程有免费和收费两种,对于免费课程学生选课后可直接学习,对于收费课程学生需要下单且支付成功方可选课、学习。选课:是将课程加入我的课程表的过程。我的课程表:记录我在网站学习的课程,我的课程表中有免费课程和收费课程两种,对于免费课程可直接添加到我的课程表,对于收费课程需要下单、支付成功后自动加入我的课程表。模块整体流程如下:1.2 业务流程1.2.1 学习引导用户通过搜索课程、课程推荐等信息进入课程详情页面原创 2024-07-06 20:13:07 · 1110 阅读 · 0 评论 -
第5章 认证授权:需求分析,Security介绍(OAuth2,JWT),用户认证,微信扫码登录,用户授权
1 模块需求分析1.1 什么是认证授权截至目前,项目已经完成了课程发布功能,课程发布后用户通过在线学习页面点播视频进行学习。如何去记录学生的学习过程呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间学习什么课程,如果用户要购买课程也需要知道用户的身份信息。所以,去管理学生的学习过程最基本的要实现用户的身份认证。认证授权模块实现平台所有用户的身份认证与用户授权功能。什么是用户身份认证?用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的原创 2024-07-06 20:12:39 · 1845 阅读 · 0 评论 -
第4章 课程发布:模块需求分析,课程预览(模板引擎 静态页面),课程审核,课程发布(分布式事务,页面静态化:熔断降级),课程搜索(es索引)
1 模块需求分析1.1 模块介绍课程信息编辑完毕即可发布课程,发布课程相当于一个确认操作,课程发布后学习者在网站可以搜索到课程,然后查看课程的详细信息,进一步选课、支付、在线学习。下边是课程编辑与发布的整体流程:为了课程内容没有违规信息、课程内容安排合理,在课程发布之前运营方会进行课程审核,审核通过后课程方可发布。作为课程制作方即教学机构,在课程发布前通过课程预览功能可以看到课程发布后的效果,哪里的课程信息存在问题方便查看,及时修改。下图是课程预览的效果图,也是课程正式发布后的课程详情界面:原创 2024-07-06 20:12:11 · 1113 阅读 · 0 评论 -
第3章 媒资管理:需求分析,搭建模块环境(nacos、Gateway),分布式文件系统(MinIO),上传图片,上传视频(断点传续),视频处理(FFmpeg、分布式任务处理、XXL-JOB),绑定媒资
1 模块需求分析1.1 模块介绍媒资管理系统是每个在线教育平台所必须具备的,查阅百度百科对它的定义如下:媒体资源管理(Media Asset Management,MAM)系统是建立在多媒体、网络、数据库和数字存储等先进技术基础上的一个对各种媒体及内容(如视/音频资料、文本文件、图表等)进行数字化存储、管理以及应用的总体解决方案,包括数字媒体的采集、编目、管理、传输和编码转换等所有环节。其主要是满足媒体资源拥有者收集、保存、查找、编辑、发布各种信息的要求,为媒体资源的使用者提供访问内容的便捷方法,实现原创 2024-07-06 20:11:39 · 1123 阅读 · 0 评论 -
第2章 内容管理模块:模块需求分析,创建模块工程,课程查询(Httpclient测试、跨域),课程分类查询,新增课程(SR303校验),修改课程,查询课程计划,新增/修改计划,项目实战
1 模块需求分析1.1 什么是需求分析在百度百科中对需求分析的定义如下:需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。简单理解就是要搞清楚问题域,问题域就是用户的需求,软件要为用户解决什么问题,实现哪些业务功能,满足什么样的性能要求。如何作需求分析?第一:首先确认用户需求用户需求即用户的原始需求。通过用户访谈、问卷调查、开原创 2024-07-06 20:11:08 · 1009 阅读 · 0 评论 -
第1章(学成在线): 项目背景,项目介绍,环境搭建
1.项目背景1.1 在线教育市场环境以下内容摘自https://report.iresearch.cn/content/2021/01/358854.shtml在线教育行业是一个有着极强的广度和深度的行业,从校内到校外;从早幼教到职业培训;从教育工具到全信息化平台等等。2020年的新冠疫情外生冲击,让在线教育再次站在聚光灯下。疫情下教育领域获融资最多,而其中在线教育最受资本青睐。据艾瑞咨询统计,2020年教育行业累计融资1164亿元,其中在线教育融资金额1034亿元,占比89%。与此同时,在行业处于原创 2024-07-06 20:10:23 · 2641 阅读 · 2 评论 -
苍穹外卖-day15:套餐管理
现在需要将套餐分类下拉框中的数据改为动态获取,即前端需要发送Ajax请求,调用后端的分类查询接口,然后将后端返回的套餐分类数据动态展示在下拉框中。下面我们就按照上面的几个关键步骤来开发,每开发完一个关键步骤,就需要测试一下,来验证我们的代码是否正确。前面我们已经实现了前后端数据交互,现在就需要将后端返回的数据通过表格展示出来,我们可以使用ElementUI提供的表格组件,具体使用方法可以参照官方提供的示例 https://element.eleme.io/#/zh-CN/component/table。原创 2024-03-18 23:11:35 · 1653 阅读 · 0 评论 -
苍穹外卖-day14:前端环境搭建、员工管理
前端环境搭建员工分页查询启用禁用员工账号新增员工修改员工。原创 2024-03-18 23:09:51 · 3622 阅读 · 2 评论 -
苍穹外卖-day13(vue基础回顾+进阶):vue基础(脚手架、基本语法,axios,axios配置跨域),路由,状态管理,TypeScript
vue 属于单页面应用,所谓路由,就是根据浏览器路径不同,用不同的视图组件替换这个页面内容。单页面应用:在整个vue应用中,实际上只有一个页面,我们看到的浏览器多个页面其实是一种假象,它是通过页面切换 切换不同的视图组件现实举例:一块黑板,不同的老师上课把之前老师写的内容删除掉,之后写上自己课的内容。这个替换的过程就是通过路由来完成的。如上图所示:不同的访问路径,对应不同的页面展示。原创 2024-03-18 23:09:17 · 1821 阅读 · 0 评论 -
苍穹外卖-day12:工作台业务代码,Apache POI,导出运营数据Excel报表(业务逻辑)
Apache POI 是一个处理Miscrosoft Office(微软办公软件)各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件(Word、Excel、PowerPoint等等)进行读写操作。一般情况下,POI 主要都是用于操作 Excel 文件。银行网银系统导出交易明细各种业务系统导出Excel报表批量导入业务数据。原创 2024-03-18 23:06:21 · 1154 阅读 · 0 评论 -
苍穹外卖-day11:Apache ECharts(前端技术),营业额统计(业务逻辑)集合转字符串,年月日转年月日时分秒,用户统计(业务逻辑),订单统计(业务逻辑),销量排名Top10(业务逻辑)
Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。官网地址1). 柱形图2). 饼形图3). 折线图总结:不管是哪种形式的图形,最本质的东西实际上是数据,它其实是对数据的一种可视化展示。原创 2024-03-18 23:06:07 · 1967 阅读 · 0 评论 -
苍穹外卖-day10:Spring Task、订单状态定时处理、来单提醒(WebSocket的应用)、客户催单(WebSocket的应用)
是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定位:定时任务框架作用:定时自动执行某段Java代码为什么要在Java程序中使用Spring Task?1). 信用卡每月还款提醒2). 银行贷款每月还款提醒3). 火车票售票系统处理未支付订单4). 入职纪念日为用户发送通知强调只要是需要定时处理的场景都可以使用Spring TaskWebSocket 是基于 TCP 的一种新的网络协议。原创 2024-03-18 23:05:53 · 2419 阅读 · 0 评论 -
苍穹外卖-day09:用户端历史订单模块(理解业务逻辑),商家端订单管理模块(理解业务逻辑),校验收货地址是否超出配送范围(相关API)
产品原型:业务规则接口设计:参见接口文档。原创 2024-03-18 23:05:37 · 5295 阅读 · 8 评论 -
苍穹外卖-day08:导入地址簿功能代码(单表crud)、用户下单(业务逻辑)、订单支付(业务逻辑,cpolar软件)
苍穹外卖-day08课程内容导入地址簿功能代码用户下单订单支付功能实现:用户下单、订单支付用户下单效果图:订单支付效果图:1. 导入地址簿功能代码(单表crud)1.1 需求分析和设计1.1.1 产品原型(业务功能和接口的关系)地址簿,指的是消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。默认地址的作用:当用户下单的时候,默认就会使用这个地址。效果图:对于地址簿管理,我们需要实现以下几个功能:查询地址原创 2024-03-18 23:05:17 · 2527 阅读 · 1 评论 -
苍穹外卖-day07:缓存菜品(业务逻辑),缓存套餐(Spring Cache),添加购物车(业务逻辑、冗余字段、动态sql属性字段位置),查看购物车,删除购物车中一个商品
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。EHCacheCaffeineRedis(常用)原创 2024-03-18 23:04:54 · 2317 阅读 · 0 评论 -
苍穹外卖-day06:HttpClient、微信小程序开发、微信登录(业务流程)、导入商品浏览功能代码(业务逻辑)
苍穹外卖-day06课程内容HttpClient微信小程序开发微信登录导入商品浏览功能代码功能实现:微信登录、商品浏览微信登录效果图:商品浏览效果图:1. HttpClient1.1 介绍HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient作用:发送HTTP请求接收响应数据总结:可以在java程序中原创 2024-03-18 23:04:39 · 1815 阅读 · 6 评论 -
苍穹外卖-day05:Redis简单学习(Windows版本,Another客户端工具,Spring Data Redis常用方法),店铺营业状态设置(Swagger接口分组展示)
Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。官网中文网key-value结构存储:基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的NoSql数据库。NoSql(Not Only SQL),不仅仅是SQL,泛指。原创 2024-03-18 23:04:24 · 1537 阅读 · 1 评论 -
苍穹外卖-day04:项目实战-套餐管理(新增套餐,分页查询套餐,删除套餐,修改套餐,起售停售套餐)业务类似于菜品模块
注意:此时查询出套餐表中的字段 套餐名称为name,分类表中的字段分类名称也是name,那这样的话我们在封装数据的时候就会出现问题,通过mybatis框架去封装数据的时候由于这2个字段名相同,封装VO这个数据的时候就会对应错,分类表中的字段分类名称是name字段,SetmealVO是categoryName属性,字段名和属性名不一致所以封装不了数据。问题:类似于菜品分页查询,在套餐分页查询中,套餐表setmeal保存的字段是category_id分类id,而接口文档要求返回的数据是分类名称。原创 2024-03-18 23:04:09 · 6486 阅读 · 12 评论 -
苍穹外卖-day03:公共字段自动填充(AOP实现),新增菜品(配置文件引用配置文件 文件上传,多张表插入数据),菜品分页查询(字段和属性不一致),删除菜品(业务逻辑),修改菜品(业务逻辑)、起售停售
苍穹外卖-day03课程内容公共字段自动填充新增菜品菜品分页查询删除菜品修改菜品功能实现:菜品管理菜品管理效果图:1. 公共字段自动填充1.1 问题分析在上一章节我们已经完成了后台系统的员工管理功能和菜品分类功能的开发,在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工或者编辑菜品分类时需要设置修改时间、修改人等字段。这些字段属于公共字段,也就是也就是在我们的系统中很多表中都会有这些字段,如下:序号字段名含义数据类型原创 2024-03-18 23:03:43 · 2029 阅读 · 0 评论 -
苍穹外卖-day02:员工管理模块(统一前缀,必须非必须、实体类接收缺点、log占位符、属性拷贝,TODO、常全局参数、本地线程、分页插件、日期格式化、启用禁用 动态更新)分类管理模块(分类删除前提)
苍穹外卖-day02课程内容新增员工员工分页查询启用禁用员工账号编辑员工导入分类模块功能代码功能实现:员工管理、菜品分类管理。单表员工管理效果:菜品分类管理效果:1. 新增员工(员工管理)1.1 需求分析和设计1.1.1 产品原型一般在做需求分析时,往往都是对照着产品原型进行分析,因为产品原型比较直观,便于我们理解业务。后台系统中可以管理员工信息,通过新增员工来添加后台系统用户。新增员工原型:当填写完表单信息, 点击"保存"按钮后, 会提交该表单的数据到服务端,原创 2024-03-18 23:03:21 · 1834 阅读 · 0 评论 -
苍穹外卖-day01:软件开发整体介绍,项目介绍,环境搭建( DTO VO、Git、builder构建对象、nginx、MD5加密),导入接口文档(YAPI),Swagger接口测试
作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。那么这一小节,我们将从 软件开发流程、角色分工、软件环境 三个方面整体介绍一下软件开发。在开发苍穹外卖这个项目之前,我们需要全方位的来介绍一下当前我们学习的这个项目。接下来,我们将从项目简介、产品原型、技术选型三个方面来介绍苍穹外卖这个项目。本项目(苍穹外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括系统管理后台和小程序端应用两部分。原创 2024-03-18 23:02:43 · 1364 阅读 · 0 评论