自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在使用ragflow时docker desktop出现内存不足的问题

在与聊天助手发消息时出现报错。

2025-02-24 11:26:02 686

原创 大模型相关学习(本地部署deepseek)

检索(Retrieval)的详细过程准备外部知识库:外部知识库可能来自本地的文件、搜索引擎结果、API 等。通过 Embedding(嵌入)模型,对知识文件进行解析:Embedding 的主要作用是将自然语言转化为机器理解的高维向量,并且通过这一过程捕获到文本背后的语义信息(比如不同文本之间的相似关系)。通过 Embedding(嵌入)模型,对用户的提问进行处理:用户的输入同样会经过嵌入(Embedding)处理,生成一个高维向量。拿用户的提问去匹配本地知识库。

2025-02-19 18:32:37 915

原创 调用deepseek接口

【代码】调用deepseek接口。

2025-02-18 15:59:03 355

原创 使用gson构建Body请求体

【代码】使用gson构建Body请求体。

2025-02-18 10:16:36 101

原创 excel表头国际化(easyexcel)

【代码】excel表头国际化(easyexcel)

2025-02-17 16:44:52 233

原创 EasyExcel的简单使用

关键是写一个监听器,实现AnalysisEventListener, 每解析一行数据会调用invoke方法返回解析的数据, 当全部解析完成后会调用doAfterAllAnalysed方法. 我们重写invoke方法和doAfterAllAnalysed方法即可.将Java对象中指定的属性, 插入到Eexcel表格中的指定列(在Excel表格中进行列排序), 使用index属性指定列顺序.上面的写已经提到了转换器, 读也是一样. 将Excel文件中的字符串枚举值转换成要存入db的整数类型的枚举.

2025-02-17 16:27:28 1367

原创 枚举类的常用方法

举类(enum)在 Java 中是一种特殊的类,除了可以定义自己的字段、方法和构造函数外,还自带了一些内置方法。这些方法是由编译器自动生成的,可以直接使用。

2025-01-08 17:30:56 943

原创 网关的国际化改造

网关的国际化改造和web服务的改造有所不同。

2025-01-08 09:53:42 387

原创 idea全局替换显示不全(ctrl+shift+R)

idea的默认显示条数为100,可以修改成10000。修改一下idea的配置就行。

2025-01-06 15:36:04 432

原创 SpringBoot使用Validation校验参数

虽然Bean Validation和Hibernate Validator已经提供了非常丰富的校验注解,但是在实际业务中,难免会碰到一些现有注解不足以校验的情况;这时,我们可以考虑自定义Validation注解。第一步:创建自定义注解/*** 自定义校验注解* 提示:* 1、message、contains、payload是必须要写的* 2、还需要什么方法可根据自己的实际业务需求,自行添加定义即可* 注:当没有指定默认值时,那么在使用此注解时,就必须输入对应的属性值*/

2024-12-25 16:22:55 1021

原创 参数校验国际化改造

(1)创建Resource Bundle(2)在Resource Bundle下创建各国的properties(3)在properties以key-value的形式定义响应消息(4)在入参处使用key作为message(5)配置MessageConfig// 设置消息资源文件的基路径(注意这里的messages是创建Resource Bundle时设置的base name)//可以设置多个BaseName// 设置默认编码@Bean。

2024-12-09 11:34:23 938

原创 Spring Data Elasticsearch

接口的继承所有方法@Api(tags = "增删改查(文档)")@Autowired@ApiOperation("添加单个文档")blog.setTitle("Spring Data ElasticSearch学习教程" + id);blog.setContent("这是添加单个文档的实例" + id);@ApiOperation("添加多个文档")i

2024-12-03 16:15:04 1791

原创 Redis 实战篇

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

2024-06-17 16:07:38 1276

原创 java面试题

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

2024-06-11 15:59:15 1025

原创 在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 1102

原创 搭建gateway网关

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

2024-06-03 14:15:31 1438

原创 SDK开发

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

2024-05-31 12:56:48 825

原创 API签名认证

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

2024-05-30 18:35:56 558

原创 Hutool

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

2024-05-30 17:35:13 326

原创 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 1324

原创 java多线程

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

2024-05-18 17:14:39 848

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

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

2024-05-18 10:45:12 1191

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

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

2024-05-17 18:55:55 1907

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

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

2024-05-16 16:35:50 1640

原创 OAuth2

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

2024-05-15 08:30:42 1082

原创 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 1059

原创 微服务熔断降级

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

2024-05-14 10:04:30 600

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

在启动类添加@EnableFeignClients注解。

2024-05-14 09:00:38 374

原创 文件相关api

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

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

原创 页面静态化

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

2024-05-11 17:51:44 232

原创 分布式事务技术方案

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

2024-05-10 18:46:03 1231

原创 模板引擎Freemarker

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

2024-05-09 17:47:53 355

原创 视 频 处 理

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

2024-05-08 16:36:28 1547

原创 视频断点上传

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

2024-05-07 17:05:37 2229

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

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

2024-05-06 15:15:03 2598

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

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

2024-05-06 11:19:27 412

原创 分布式文件系统minio

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

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

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

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

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

原创 JSR303校验

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

2024-04-26 10:21:50 364

原创 Stream流入门

操作集合和数组的工具。

2024-04-25 17:03:18 602

空空如也

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

TA关注的人

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