自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 问答 (1)
  • 收藏
  • 关注

原创 Redis 实战篇

在这个方案中,他确实可以使用对应路径的拦截,同时刷新登录token令牌的存活时间,但是现在这个拦截器他只是拦截需要被拦截的路径,假设当前用户访问了一些不需要拦截的路径,那么这个拦截器就不会生效,所以此时令牌刷新的动作实际上就不会执行,所以这个方案他是存在问题的。

2024-06-17 16:07:38 625

原创 java面试题

给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮。缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。bitmap(位图):相当于是一个以(bit)位为单位的数组,数组中每个单元只能存储二进制数0或1。误判率:数组越小误判率就越大,数组越大误判率就越小,但是同时带来了更多的内存消耗。缺点:消耗内存,可能会发生不一致的问题。优点:内存占用较少,没有多余key。

2024-06-11 15:59:15 856

原创 在gateway网关中使用feign远程调用

由于 gateway 采用 spring-boot-starter-webflux 异步的 web 组件,该组件和 spring-boot-starter-web 有较大区别,我们的 openFeign 对 spring-boot-starter-web 比较契合,而对于 前者则需要做一些适配。因为 gateway 是异步,而 FeignClient 是同步请求,同步请求在 gateway 中是不被允许的。所以我们需要采取异步的方式发送请求,这使得我们在调用微服务请求时需要做一个包装。

2024-06-06 18:55:49 326

原创 搭建gateway网关

Order(-1)@Component@Override// 1.获取请求参数// 2.获取authorization参数// 3.校验// 放行// 4.拦截// 4.1.禁止访问,设置状态码// 4.2.结束处理过滤器的执行顺序:请求进入网关会碰到三类过滤器:当前路由的过滤器、DefaultFilter、GlobalFilter。

2024-06-03 14:15:31 542

原创 SDK开发

理想情况:开发者只需关心调用哪些接口,传递哪些参数就跟调用自己写的代码一样简单。开发starter的好处:开发者引入之后,可以直接在application.yml中写配置,自动创建客户端。

2024-05-31 12:56:48 778

原创 API签名认证

定义:API签名认证是一种安全机制,通过为每个请求生成一个唯一的签名值来验证其合法性。作用身份验证:验证请求发送者的身份是否合法。防止篡改:确保请求在传输过程中没有被篡改。防止重放攻击:防止攻击者重复发送之前截获的合法请求。

2024-05-30 18:35:56 466

原创 Hutool

综上所述,Hutool是一个功能强大、简单易用、灵活可选的Java工具库,能够帮助开发者更高效地完成Java开发工作。,旨在简化Java开发中的各种常见操作。

2024-05-30 17:35:13 183

原创 mySql从入门到入土

net start mysql // 启动mysql服务net stop mysql // 停止mysql服务mysql -uroot -p1234//登录MYSQL(-u为用户名-p为密码)//登录参数mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)exit //退出mysqlquit //退出mysql· 2.MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。

2024-05-19 18:48:52 1121

原创 java多线程

首先,什么是线程安全问题呢?线程安全问题指的是,多个线程同时操作同一个共享资源的时候,可能会出现业务安全问题。下面通过一个取钱的案例给同学们演示一下。案例需求如下场景:小明和小红是一对夫妻,他们有一个共享账户,余额是10万元,小红和小明同时来取钱,并且2人各自都在取钱10万元,可能出现什么问题呢?如下图所示,小明和小红假设都是一个线程,本类每个线程都应该执行完三步操作,才算是完成的取钱的操作。但是真实执行过程可能是下面这样子的。

2024-05-18 17:14:39 754

原创 用户授权(控制用户访问资源权限)

本项目是基于角色分配权限,如果要删除用户的权限可以给用户换角色,那么新角色下的权限就是用户的权限;如果不换用户的角色可以删除角色下的权限即删除角色权限关系表相应记录,这样操作是将角色下的权限删除,属于该角色的用户都将删除此权限。一个例子:用户A和用户B都是教学机构,他们都拥有“我的课程”权限,但是两个用户所查询到的数据是不一样的。细粒度授权涉及到不同的业务逻辑,通常在service层实现,根据不同的用户进行校验,根据不同的参数查询不同的数据或操作不同的数据。

2024-05-18 10:45:12 1060

原创 用户认证(含微信扫码登录和用户名密码登录)

参考接口规范中“请求获取授权码” 定义接收微信下发的授权码接口,

2024-05-17 18:55:55 894

原创 Spring Security框架下jwt令牌的使用

这个过程就是无状态认证。拿到了jwt令牌下一步就要携带令牌去访问资源服务中的资源,本项目各个微服务就是资源服务,比如:内容管理服务,客户端申请到jwt令牌,携带jwt去内容管理服务查询课程信息,此时内容管理服务要对jwt进行校验,只有jwt合法才可以继续访问。令牌采用JWT格式即可解决上边的问题,用户认证通过后会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。

2024-05-16 16:35:50 1430

原创 OAuth2

在前边我们提到微信扫码认证,这是一种第三方认证的方式,这种认证方式是基于OAuth2协议实现,OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。

2024-05-15 08:30:42 916

原创 Spring Security 认证研究

认证功能几乎是每个项目都要具备的功能,并且它与业务无关,市面上有很多认证框架,如:Apache Shiro、CAS、Spring Security等。由于本项目基于Spring Cloud技术构建,Spring Security是spring家族的一份子且和Spring Cloud集成的很好,所以本项目选用Spring Security作为认证服务的技术框架。Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,它是一个专注于为 Java 应用程序提供身份验证和授权的框架。

2024-05-14 23:24:19 1006

原创 微服务熔断降级

微服务中难免存在服务之间的远程调用,比如:内容管理服务远程调用媒资服务的上传文件接口,当微服务运行不正常会导致无法正常调用微服务,此时会出现异常,如果这种异常不去处理可能导致雪崩效应。微服务的雪崩效应表现在服务与服务之间调用,当其中一个服务无法提供服务可能导致其它服务也死掉,比如:服务B调用服务A,由于A服务异常导致B服务响应缓慢,最后B、C等服务都不可用,像这样由一个服务所引起的一连串的多个服务无法提供服务即是微服务的雪崩效应,如下图:如何解决由于微服务异常引起的雪崩效应呢?

2024-05-14 10:04:30 556

原创 使用feign调用媒资服务完成静态页面的上传

在启动类添加@EnableFeignClients注解。

2024-05-14 09:00:38 337

原创 文件相关api

代表操作系统的文件对象,它提供了定位文件位置,获取文件中的信息,创建文件,删除文件等,但不能读写内容。

2024-05-12 16:31:05 751 1

原创 页面静态化

页面静态化则强调将生成html页面的过程提前,提前使用模板引擎技术生成html页面,当客户端请求时直接请求html页面,由于是静态页面可以使用nginx、apache等高性能的web服务器,并发性能高。课程预览功能通过模板引擎技术在页面模板中填充数据,生成html页面,这个过程是当客户端请求服务器时服务器才开始渲染生成html页面,最后响应给浏览器,服务端渲染的并发能力是有限的。根据课程发布的业务需求,虽然课程发布后仍可以修改课程信息,但需要经过课程审核,且修改频度不大,所以适合使用页面静态化。

2024-05-11 17:51:44 161

原创 分布式事务技术方案

一次课程发布操作需要向数据库、redis、elasticsearch、MinIO写四份数据,这里存在分布式事务问题。什么是分布式事务?首先理解什么是本地事务?平常我们在程序中通过spring去控制事务是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,此数据库只属于该应用,所以基于本应用自己的关系型数据库的事务又被称为本地事务。

2024-05-10 18:46:03 1186

原创 模板引擎Freemarker

即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。根据前边的数据模型分析,课程预览就是把课程的相关信息进行整合,在课程预览界面进行展示,课程预览界面与课程发布的课程详情界面一致。所以模板引擎就是:模板+数据=输出,Jsp页面就是模板,页面中嵌入的jsp标签就是数据,两者相结合输出html网页。2、服务器渲染页面,渲染的过程就是向jsp页面(模板)内填充数据(模型)。下边在内容管理接口层搭建Freemarker的运行环境并进行测试。

2024-05-09 17:47:53 321

原创 视 频 处 理

视频上传成功后需要对视频进行转码处理。什么是视频编码?查阅百度百科如下:

2024-05-08 16:36:28 1443

原创 视频断点上传

通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了没有上传完成,需要客户重新上传,用户体验非常差,所以对于大文件上传的要求最基本的是断点续传。什么是断点续传:

2024-05-07 17:05:37 2098

原创 修改idea缓存的默认存储位置

将${user.home}替换成你要存储到的路径。再次打开idea时会弹出消息,点击ok即可。打开idea.properties。

2024-05-06 15:15:03 443

原创 接收文件(文件上传)

ApiOperation("文件上传接口")//具体实现。

2024-05-06 11:19:27 321

原创 分布式文件系统minio

MinIO 是一个非常轻量的服务,可以很简单的和其他应用的结合使用,它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。它一大特点就是轻量,使用简单,功能强大,支持各种平台,单个文件最大5TB,兼容 Amazon S3接口,提供了 Java、Python、GO等多版本SDK支持。MinIO集群采用去中心化共享架构,每个结点是对等关系,通过Nginx可对MinIO进行负载均衡访问。去中心化有什么好处?

2024-05-01 00:41:38 1271 1

原创 使用nacos实现注册中心和配置中心

在pom文件中导入在bootstrap.yml中写下如下配置。

2024-04-30 18:06:11 395 2

原创 JSR303校验

前端请求后端接口传输参数,是在controller中校验还是在Service中校验?答案是都需要校验,只是分工不同。Contoller中校验请求参数的合法性,包括:必填项校验,数据格式校验,比如:是否是符合一定的日期格式,等。Service中要校验的是业务规则相关的内容,比如:课程已经审核通过所以提交失败。Service中根据业务规则去校验不方便写成通用代码,Controller中则可以将校验的代码写成通用代码。

2024-04-26 10:21:50 316

原创 Stream流入门

操作集合和数组的工具。

2024-04-25 17:03:18 542

原创 递归sql,用于实现存储树状结构的表进行查询

cte_name :公共表达式的名称,可以理解为表名,用来表示as后面跟着的子查询col_name :公共表达式包含的列名,可以写也可以不写输出:说明:t1 相当于一个表名select 1 相当于这个表的初始值,这里使用UNION ALL 不断将每次递归得到的数据加入到表中。n<5为递归执行的条件,当n>=5时结束递归调用。

2024-04-24 19:21:42 712

原创 SpringBoot配置LocalDateTime类型的序列化和反序列化方式

【代码】SpringBoot配置LocalDateTime类型的序列化和反序列化方式。

2024-04-24 11:28:23 268

原创 SpringBoot配置跨域请求过滤器

【代码】SpringBoot配置跨域请求过滤器。

2024-04-24 11:22:54 113

原创 项目如何部署

Nginx是一款高性能的Web服务器和反向代理服务器,具有许多显著的特点和优势,使其在各种应用场景中都能发挥出色。首先,Nginx的设计重点在于高并发、高性能和低内存消耗。它采用异步、非阻塞的事件驱动架构,能够高效地处理大量并发连接,尤其是对于静态文件请求,效率极高。同时,在保持高性能的同时,Nginx对系统资源特别是内存的占用率较低,使得在相同的硬件条件下能提供更高的服务能力。其次,Nginx作为反向代理服务器,功能强大且灵活。

2024-04-20 22:42:37 1169

原创 Java后端需要掌握的前端知识

function 函数名(参数) {// 函数体return 结果;例。

2024-03-24 19:57:21 908

原创 基于spring boot实现接口管理平台

【代码】基于spring boot实现接口管理平台。

2024-03-18 12:47:24 522

原创 VS Code安装

vscode不像IDE一样能够直接在浏览器中打开html,而该插件支持快捷键与鼠标右键快速在浏览器中打开html文件,支持自定义打开指定的浏览器,包括:Firefox,Chrome,Opera,IE以及Safari。Vue多功能集成插件,包括:语法高亮,智能提示,emmet,错误提示,格式化,自动补全,debugger。VS Code提供了非常丰富的插件功能,根据你的需要,安装对应的插件可以大大提高开发效率。给括号加上不同的颜色,便于区分不同的区块,使用者可以定义不同括号类型和不同颜色。

2024-03-18 11:29:22 931

原创 分布式搜索引擎(3)

*[聚合(](](](实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。

2024-03-14 19:22:38 1264

原创 分布式搜索引擎elasticsearch(2)

match和multi_match的区别是什么?match:根据一个字段查询multi_match:根据多个字段查询,参与查询字段越多,查询性能越差精确查询常见的有哪些?

2024-03-13 15:27:43 1344 1

原创 安装elasticsearch

因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。

2024-03-10 18:51:34 1066

原创 分布式搜索elasticsearch(1)

什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch什么是Lucene?是Apache的开源搜索引擎类库,提供了搜索引擎的核心API。

2024-03-10 16:05:44 1158

原创 RabbitMQ

基本消息队列的消息发送流程:建立connection创建channel利用channel声明队列利用channel向队列发送消息基本消息队列的消息接收流程:建立connection创建channel利用channel声明队列定义consumer的消费行为handleDelivery()利用channel将消费者与队列绑定多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?接收publisher发送的消息。

2024-03-10 15:38:49 1382

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除