项目技术整合
文章平均质量分 79
林寻星辰
这个作者很懒,什么都没留下…
展开
-
异常统一处理实现
从 Spring 3.0 - Spring 3.2 版本之间,对 Spring 架构和 SpringMVC 的Controller 的异常捕获提供了相应的异常处理。在异常处理测试之前首先在代码中抛出自定义类型的异常,这里以新增课程的service方法为例进行代码修改。至此,项目异常处理的测试完毕,我们在开发中对于业务分支中错误的情况要抛出项目自定义的异常类型。代码中统一抛出项目的自定义异常类型,这样可以统一去捕获这一类或几类的异常。通过测试发现,前端正常提示代码 中抛出的异常信息。原创 2023-08-02 18:18:22 · 390 阅读 · 3 评论 -
RPC框架dubbo的学习
Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。原创 2023-02-21 19:12:28 · 791 阅读 · 12 评论 -
媒资管理模块之视频断点续传需求分析
通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了没有上传完成,需要客户重新上传,用户体验非常差,所以对于大文件上传的要求最基本的是断点续传。什么是断点续传:原创 2023-02-16 21:58:46 · 477 阅读 · 0 评论 -
Maven的安装步骤(保姆级安装教程)
(一般会用阿里云的镜像库,但不知道是我电脑还是网络的原因,下载jar包总会出错,换了很多阿里云镜像都不管用,最后换了腾讯云的就好了,所有这里给出了三个镜像)3.配置私服,因为中央仓库在国外导致下载jar包很慢或者失败,所以我们改为国内的服务器,下面三个选择一个就可以了。4.验证安装是否成功,win+R运行cmd,输入mvn -v,如图所示则配置成功。(1)在maven安装目录下新建本地仓库文件夹maven_repository。3.编辑系统变量Path,添加变量值%MAVEN_HOME%\bin。原创 2023-02-16 19:04:48 · 645 阅读 · 0 评论 -
Redis实战篇笔记之黑马点评项目
在这个方案中,他确实可以使用对应路径的拦截,同时刷新登录token令牌的存活时间,但是现在这个拦截器他只是拦截需要被拦截的路径,假设当前用户访问了一些不需要拦截的路径,那么这个拦截器就不会生效,所以此时令牌刷新的动作实际上就不会执行,所以这个方案他是存在问题的前言什么是缓存?就像自行车,越野车的避震器举个例子:越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;原创 2023-02-04 13:12:23 · 1900 阅读 · 0 评论 -
UV统计的学习
UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。PV:全称Page View,也叫页面访问量或点击量,用户每访问网站的一个页面,记录1次PV,用户多次打开页面,则记录多次PV。Hyperloglog(HLL)是从Loglog算法派生的概率算法,用于确定非常大的集合的基数,而不需要存储其所有值。通常来说UV会比PV大很多,所以衡量同一个网站的访问量,我们需要综合考虑很多因素,所以我们只是单纯的把这两个值作为一个参考值。作为代价,其测量结果是概率性的,原创 2023-02-02 10:39:40 · 782 阅读 · 3 评论 -
好友关注-Feed流实现方案
推拉模式是一个折中的方案,站在发件人这一段,如果是个普通的人,那么我们采用写扩散的方式,直接把数据写入到他的粉丝中去,因为普通的人他的粉丝关注量比较小,所以这样做没有压力,如果是大V,那么他是直接将数据先写入到一份到发件箱里边去,然后再直接写一份到活跃粉丝收件箱里边去,现在站在收件人这端来看,如果是活跃粉丝,那么大V和普通的人发的都会直接写入到自己收件箱里边来,而如果是普通的粉丝,由于他们上线不是很频繁,所以等他们上线时,再从发件箱里边去拉信息。:也叫做读写混合,兼具推和拉两种模式的优点。原创 2023-02-02 00:14:33 · 523 阅读 · 0 评论 -
Redis实现消息队列
所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。注意:当我们指定起始ID为$时,代表读取最新的消息,如果我们处理一条消息的过程中,又有超过1条以上的消息到达队列,则下次获取时也只能获取到最新的一条,会出现漏读消息的问题。原创 2023-02-01 16:54:44 · 1862 阅读 · 0 评论 -
内网穿透的学习
比如常用的办公室软件等,一般在办公室或家里,通过拨号上网,这样办公软件只有在本地的局域网之内才能访问,那么问题来了,如果是手机上,或者公司外地的办公人员,如何访问到办公软件呢?开启隧道之后,网穿透工具会分配一个专属域名/端口,办公软件就已经在公网上了,在外地的办公人员可以在任何地方愉快的访问办公软件了~~1、在内网穿透服务器上开通隧道,配置外网域名,配置穿透内网的端口即本地电脑上的端口。2、在本地电脑上安装内网穿透的工具,工具上配置内网穿透服务器隧道token。可以使用内网穿透技术,什么是内网穿透?原创 2023-02-01 10:38:48 · 101 阅读 · 0 评论 -
支付宝沙箱准备开发环境
沙箱环境是支付宝开放平台为开发者提供的与生产环境完全隔离的联调测试环境,开发者在沙箱环境中完成的接口调用不会对生产环境中的数据造成任何影响。第三方支付接口流程大同小异,考虑开发及教学的方便性,支付宝提供支付宝沙箱环境开发支付接口,在教学中接入支付宝手机网站支付接口。详细参见:https://docs.open.alipay.com/200/105311/本文档使用支付宝沙箱进行开发测试,这里主要介绍支付宝沙箱环境配置。使用沙箱环境的买家账号登录沙箱版本的支付宝。安装模拟器,安装在没有空格和中文的目录。原创 2023-01-21 13:37:11 · 2524 阅读 · 5 评论 -
添加选课模块分析
本模块实现了学生选课、下单支付、学习的整体流程。网站的课程有免费和收费两种,对于免费课程学生选课后可直接学习,对于收费课程学生需要下单且支付成功方可选课、学习。选课:是将课程加入我的课程表的过程。我的课程表:记录我在网站学习的课程,我的课程表中有免费课程和收费课程两种,对于免费课程可直接添加到我的课程表,对于收费课程需要下单、支付成功后自动加入我的课程表。原创 2023-01-20 22:53:53 · 1398 阅读 · 0 评论 -
JWT学习
这个过程就是无状态认证。拿到了jwt令牌下一步就要携带令牌去访问资源服务中的资源,本项目各个微服务就是资源服务,比如:内容管理服务,客户端申请到jwt令牌,携带jwt去内容管理服务查询课程信息,此时内容管理服务要对jwt进行校验,只有jwt合法才可以继续访问。令牌采用JWT格式即可解决上边的问题,用户认证通过后会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。原创 2023-01-19 12:38:38 · 1446 阅读 · 8 评论 -
什么是OAuth2
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。Spring Security支持OAuth2认证,OAuth2提供授权码模式、密码模式、简化模式、客户端模式等四种授权模式,前边举的微信扫码登录的例子就是基于授权码模式,这四种模式中授权码模式和密码模式应用较多,本节使用Spring Security演示授权码模式、密码模式,其余两种请自行查阅相关资料。授权码模式简单理解是使用授权码去获取令牌,要想获取令牌先要获取授权码,授权码的获取需要资源拥有者亲自授权同意才可以获取。原创 2023-01-19 10:45:52 · 1565 阅读 · 0 评论 -
Spring Security 认证研究
FilterChainProxy是一个代理,真正起作用的是FilterChainProxy中SecurityFilterChain所包含的各个Filter,同时这些Filter作为Bean被Spring管理,它们是Spring Security核心,各有各的职责,但他们并不直接处理用户的。用于处理来自表单提交的认证。当访问以/r/开头的url时会判断用户是否认证,如果没有认证则跳转到登录页面,如果已经认证则判断用户是否具有该URL的访问权限,如果具有该URL的访问权限则继续,否则拒绝访问。原创 2023-01-18 23:33:27 · 1596 阅读 · 0 评论 -
认证授权功能分析
扫码登录的好处是用户不用输入账号和密码,操作简便,另外一个好处就是有利于用户信息的共享,互联网的优势就是资源共享,用户也是一种资源,对于一个新网站如果让用户去注册是很困难的,如果提供了微信扫码登录将省去用户的注册成本,是一种非常有效的推广手段。用户认证通过后去访问系统的资源,系统会判断用户是否拥有访问资源的权限,只允许访问有权限的系统资源,没有权限的资源将无法访问,这个过程叫用户授权。认证通过由认证服务向给用户颁发令牌,相当于访问系统的通行证,用户拿着令牌去访问系统的资源。什么是用户身份认证?原创 2023-01-18 16:21:39 · 662 阅读 · 0 评论 -
elasticsearch项目整合全文检索功能
是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。全文搜索搜索引擎数据库中的数据。搜索功能是一个系统的重要功能,是信息查询的方式。课程搜索是课程展示的渠道,用户通过课程搜索找到课程信息,进一步去查看课程的详细信息,进行选课、支付、学习。当课程发布时请求添加课程接口添加课程信息到索引,当课程下架时请求删除课程接口从索引中删除课程信息,这里先实现添加课程接口。原创 2023-01-18 15:28:14 · 939 阅读 · 0 评论 -
Freemarker页面静态化开发
页面静态化则强调将生成html页面的过程提前,提前使用模板引擎技术生成html页面,当客户端请求时直接请求html页面,由于是静态页面可以使用nginx、apache等高性能的web服务器,并发性能高。课程预览功能通过模板引擎技术在页面模板中填充数据,生成html页面,这个过程是当客户端请求服务器时服务器才开始渲染生成html页面,最后响应给浏览器,这个过程支持并发是有限的。根据课程发布的业务需求,虽然课程发布后仍可以修改课程信息,但需要经过课程审核,且修改频度不大,所以适合使用页面静态化。原创 2023-01-17 23:27:42 · 624 阅读 · 0 评论 -
分布式事务问题
现在的需求是课程发布操作后将数据写入数据库、redis、elasticsearch、MinIO四个地方,这四个地方已经不限制在一个数据库内,是由四个分散的服务去提供,与这四个服务去通信需要网络通信,而网络存在不可到达性,这种分布式系统环境下,通过与不同的服务进行网络通信去完成事务称之为。本地事务具有ACID四大特性,数据库事务在实现时会将一次事务涉及的所有操作全部纳入到一个不可分割的执行单元,该执行单元中的所有操作 要么都成功,要么都失败,只要其中任一操作执行失败,都将导致整个事务的回滚。原创 2023-01-17 21:20:13 · 530 阅读 · 0 评论 -
springboot整合Freemarker模板引擎
即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。FreeMarker 是。根据前边的数据模型分析,课程预览就是把课程的相关信息进行整合,在课程预览界面进行展示,课程预览界面与课程发布的课程详情界面一致,保证了教学机构人员发布前看到什么样,发布后也会看到什么样。在进行课程预览时需要展示课程的图片,在线插放课程视频,课程图片、视频这些都在MinIO文件系统存储,下边统一由Nginx代理,通过文件服务域名统一访问。原创 2023-01-16 16:48:10 · 1397 阅读 · 0 评论 -
分布式任务处理xxljob
视频上传成功需要对视频的格式进行处理,如何用Java程序对视频进行处理呢?这里有一个关键的需求就是当视频比较多的时候我们如何可以高效处理。如何去高效处理一批任务呢?1、多线程多线程是充分利用单机的资源。2、分布式加多线程充分利用多台计算机,每台计算机使用多线程处理。方案2可扩展性更强。方案2是一种分布式任务调度的处理方案。什么是分布式任务调度?我们可以先思考一下下面业务场景的解决方案:某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。原创 2023-01-15 16:05:35 · 1019 阅读 · 2 评论 -
分布式文件系统
Minio使用纠删码技术来保护数据,它是一种恢复丢失和损坏数据的数学算法,它将数据分块冗余的分散存储在各各节点的磁盘上,所有的可用磁盘组成一个集合,上图由8块硬盘组成一个集合,当上传一个文件时会通过纠删码算法计算对文件进行分块存储,除了将文件本身分成4个数据块,还会生成4个校验块,数据块和校验块会分散的存储在这8块硬盘上。它一大特点就是轻量,使用简单,功能强大,支持各种平台,单个文件最大5TB,兼容 Amazon S3接口,提供了 Java、Python、GO等多版本SDK支持。原创 2023-01-15 15:01:28 · 1019 阅读 · 0 评论 -
springboot整合gateway网关
本项目使用Spring Cloud Gateway作为网关,下边创建网关工程。原创 2023-01-15 09:11:29 · 3879 阅读 · 0 评论 -
搭建nacos环境(保姆级教程)
根据上节讲解的网关的架构图,要使用网关首先搭建Nacos。首先搭建Nacos服务发现中心。在搭建Nacos服务发现中心之前需要搞清楚两个概念:namespace和groupnamespace:用于区分环境、比如:开发环境、测试环境、生产环境。group:用于区分项目,比如:xuecheng-plus项目、xuecheng2.0项目首先在nacos配置namespace:登录Centos,启动Naocs,使用sh /data/soft/restart.sh将自动启动Nacos。原创 2023-01-14 22:13:13 · 6483 阅读 · 7 评论 -
springboot整合JSR303校验
此时就用到了分组校验,同一个属性定义多个校验规则属于不同的分组,比如:添加订单定义@NULL规则属于insert分组,更新订单定义@NotEmpty规则属于update分组,insert和update是分组的名称,是可以修改的。我们用class类型来表示不同的分组,所以我们定义不同的接口类型(空接口)表示不同的分组,由于校验分组是公用的,所以定义在 base工程中。Contoller中校验请求参数的合法性,包括:必填项校验,数据格式校验,比如:是否是符合一定的日期格式,等。原创 2023-01-14 18:32:58 · 742 阅读 · 0 评论 -
安装Jenkins
这是直接修改的配置文件,如果前边Jenkins用sudo启动的话,那么这里的两个sed前均需要加上sudo。通过命令source /etc/profile让profile文件立即生效。通过命令source /etc/profile让profile文件立即生效。选择添加的用户,上面的红色提示信息消失,说明连接成功,如下图。第一步:安装必要的一些系统工具。第一步:上传或下载安装包。第五步、测试是否安装成功。第一步:上传或下载安装包。第五步、测试是否安装成功。第五步、测试是否安装成功。第一步:上传或下载安装包。原创 2022-12-12 16:20:02 · 142 阅读 · 0 评论 -
阿里巴巴注册中心nacos
Spring Cloud Config 为分布式系统的外部配置提供了服务端和客户端的支持方案。在配置的服务端您可以在所有环境中为应用程序管理外部属性的中心位置。客户端和服务端概念上的Spring Environment 和 PropertySource 抽象保持同步, 它们非常适合Spring应用程序,但是可以与任何语言中运行的应用程序一起使用。当应用程序在部署管道中从一个开发到测试直至进入生产时,您可以管理这些环境之间的配置,并确保应用程序在迁移时具有它们需要运行的所有内容。原创 2022-12-12 14:43:01 · 839 阅读 · 0 评论 -
SpringSecurity安全框架
1、框架介绍Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证()和用户授权()两个部分。(1)用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。(2)用户授权指的是验证某个用户是否有权限执行某个操作。原创 2022-12-11 21:28:34 · 3131 阅读 · 0 评论 -
springboot整合Canal实时同步数据库表
在前面的统计分析功能中,我们采取了服务调用获取统计数据,这样耦合度高,效率相对较低,目前我采取另一种实现方式,通过实时同步数据库表的方式实现,例如我们要统计每天注册与登录人数,我们只需把会员表同步到统计库中,实现本地统计就可以了,这样效率更高,耦合度更低,Canal就是一个很好的数据库同步工具。canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL。2、Canal环境搭建。原创 2022-12-11 16:14:57 · 1534 阅读 · 0 评论 -
前端整合ECharts
ECharts是百度的一个项目,后来百度把Echart捐给apache,用于图表展示,提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。原创 2022-12-11 14:09:56 · 2012 阅读 · 2 评论 -
SpringBoot整合定时任务
在这个类里面使用表达式来设置什么时候去执行。原创 2022-12-11 11:55:22 · 245 阅读 · 0 评论 -
RabbitMQ学习笔记之快速入门
目录创建一个maven项目2.1. 依赖2.2. 消息生产者2.3. 消息消费者将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者,介绍 Java API 中的一些细节。在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ 代表使用者保留的消息缓冲区2.2. 消息生产者运行结果:运行结果原创 2022-12-04 15:53:28 · 112 阅读 · 0 评论 -
MinIO 对象存储(可以当作免费的图床)
什么是MinloMinIO与传统的存储和其他的对象存储不同的是特征一.快速入门1.下载直接去官网2.新建minio安装目录,执行如下命令3.后台启动4.查看状态二、进行访问,并设置桶1.访问三、springboot进行实现1.引入依赖2.在 application.yml 文件中加入 MinIO 服务器的相关信息3.创建实体类4、创建核心配置类5、上传工具类6.controller接口测试MiniO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常原创 2022-12-04 14:57:20 · 2499 阅读 · 0 评论 -
RabbitMQ学习笔记
目录尚硅谷mq视频学习笔记1.1. MQ 的相关概念1.1.1. 什么是MQ1.1.2. 为什么要用MQ1.1.3. MQ 的分类1.ActiveMQ2.Kafka3.RocketMQ4.RabbitMQ1.1.4. MQ 的选择1.Kafka2.RocketMQ3.RabbitMQ1.2. RabbitMQ1.2.1. RabbitMQ 的概念1.2.2. 四大核心概念1.2.3. RabbitMQ 核心部分1.2.4. 各个名词介绍1.2.5. 安装安装包安装(比较麻烦)docker安装(比较快捷方便)原创 2022-12-04 14:11:47 · 335 阅读 · 0 评论 -
封装自己的SDK
我们在开发Spring项目时常常会引入各种的依赖包,然后在配置文件中填入必要的信息,就可以使用依赖提供好的容器。这里是在鱼皮新项目直播中学习到的,特此记录一下。可在未来封装自己的SDK进行封装与装逼。原创 2022-12-03 16:22:00 · 1164 阅读 · 0 评论 -
阿里云短信验证项目整合
【代码】阿里云短信验证项目整合。原创 2022-11-30 19:42:43 · 1699 阅读 · 0 评论