- 博客(75)
- 问答 (1)
- 收藏
- 关注
原创 大模型相关学习(本地部署deepseek)
检索(Retrieval)的详细过程准备外部知识库:外部知识库可能来自本地的文件、搜索引擎结果、API 等。通过 Embedding(嵌入)模型,对知识文件进行解析:Embedding 的主要作用是将自然语言转化为机器理解的高维向量,并且通过这一过程捕获到文本背后的语义信息(比如不同文本之间的相似关系)。通过 Embedding(嵌入)模型,对用户的提问进行处理:用户的输入同样会经过嵌入(Embedding)处理,生成一个高维向量。拿用户的提问去匹配本地知识库。
2025-02-19 18:32:37
915
原创 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
原创 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
原创 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
原创 页面静态化
页面静态化则强调将生成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
原创 视频断点上传
通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了没有上传完成,需要客户重新上传,用户体验非常差,所以对于大文件上传的要求最基本的是断点续传。什么是断点续传:
2024-05-07 17:05:37
2229
原创 修改idea缓存的默认存储位置
将${user.home}替换成你要存储到的路径。再次打开idea时会弹出消息,点击ok即可。打开idea.properties。
2024-05-06 15:15:03
2598
原创 分布式文件系统minio
MinIO 是一个非常轻量的服务,可以很简单的和其他应用的结合使用,它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。它一大特点就是轻量,使用简单,功能强大,支持各种平台,单个文件最大5TB,兼容 Amazon S3接口,提供了 Java、Python、GO等多版本SDK支持。MinIO集群采用去中心化共享架构,每个结点是对等关系,通过Nginx可对MinIO进行负载均衡访问。去中心化有什么好处?
2024-05-01 00:41:38
2178
1
原创 JSR303校验
前端请求后端接口传输参数,是在controller中校验还是在Service中校验?答案是都需要校验,只是分工不同。Contoller中校验请求参数的合法性,包括:必填项校验,数据格式校验,比如:是否是符合一定的日期格式,等。Service中要校验的是业务规则相关的内容,比如:课程已经审核通过所以提交失败。Service中根据业务规则去校验不方便写成通用代码,Controller中则可以将校验的代码写成通用代码。
2024-04-26 10:21:50
364
空空如也
在实现通讯录功能时,保存的联系人信息无法从文件中读入内存
2022-12-04
实现单链表的逆置时出现的问题
2022-06-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人