- 博客(27)
- 收藏
- 关注
原创 openfeign 增强解码器
你可以通过实现接口来创建自定义解码器。这个接口有一个方法decode(),你需要根据响应来实现具体的解码逻辑。@Slf4j@Overridetry {//判断响应是否为null,对应着openfeign请求有没有成功throw new DecodeException(response.status(), "没有数据响应", response.request());//将响应的数据转成 字符串//再次将响应的数据转换成JSON类型。
2024-05-30 21:11:24
365
原创 PDF动态填充数据并下载
TextPDF(现在也称为iText 7)是一款强大的Java库,专门用于创建、填充、阅读、操纵和维护PDF文档。:iTextPDF能够从零开始创建PDF文档,也可以读取已有的PDF文件并对其中的内容进行修改,如添加、删除或更新页面内容。:可以在PDF文档中插入文本、图片、图表等内容。:支持复杂表格的创建和填充,包括单元格合并、样式设定等。:支持创建和填充交互式PDF表单,包括文本字段、复选框、列表框等,并且可以对表单域进行读写操作。:提供对PDF文档进行数字签名的支持,确保文档的安全性和完整性。
2024-05-18 09:05:18
394
原创 无感刷新-双token
双token系统通常用于提高安全性和分离不同级别的权限。:这是用户直接使用来访问资源的token。它的有效期较短,一旦过期,用户需要重新认证来获取新的access token。这样做的好处是即使access token被泄露,由于其有效期短,攻击者利用它进行不当操作的时间窗口有限。:Refresh token是用来在access token过期后重新获取新的access token的。它的有效期通常较长,甚至可以说是永久的。但是,refresh token通常不会直接发送给客户端,而是保存在服务器端。
2024-05-18 09:02:19
427
原创 MongoDB安装及使用
MongoDB是一种开源的数据库管理系统,它使用类似于JSON的BSON格式(Binary JSON)来存储数据。与传统关系型数据库不同,MongoDB不使用表和行的结构,而是采用集合(Collection)()和文档(Document)()的概念来组织数据。MongoDB的主要特点包括:1. 强大的灵活性:MongoDB的文档模型允许存储的数据,使用者可以轻松地添加、修改和删除字段,而无需进行复杂的模式迁移。2. 高性能:MongoDB支持水平扩展,可以实现高并发和大规模的数据处理。
2024-05-18 08:58:02
1075
原创 Docker常用命令
简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!我们运行的容器可能在镜像的基础上做了一些修改,有时候我们希望保存起来,封装成一个新的镜像,这时候我们就需要使用 commit 命令来构建一个新的镜像。这使得容器可以直接使用主机的网络接口,无需进行端口映射。总结来说, -p 选项允许你手动指定容器和主机的端口映射关系,而 -P 选项则是自动将容器的所有暴露的端口映射到主机的随机端口上。
2024-03-20 21:46:02
1639
原创 Docker介绍
Docker是一款开源的应用容器引擎,由Docker Inc.公司开发,自推出以来迅速成为云计算领域中的关键技术之一。Docker利用Linux的内核特性如cgroups(Control Groups)和namespaces实现了资源隔离与限制,可以在同一主机系统上轻松地创建和管理多个容器实例,每个容器都像是一个轻量级的、独立运行的虚拟环境。
2024-03-20 21:30:12
1533
原创 Linux 进程管理工具top ps
top和ps是 Linux 系统中两个非常重要的用于管理和监控进程的命令工具。top:动态视图:top 提供了一个实时动态更新的视图,能够持续显示系统中当前正在运行的进程信息及其资源占用情况。系统性能监控:除了显示进程信息外,top 还可以显示系统的整体性能指标,如平均负载(uptime,load average)、CPU使用率(%CPU)、内存使用量(%MEM)等。更新频率:默认情况下,top命令会定期(通常是3秒钟)刷新输出,更新进程列表和系统状态。top -d 2ps:静态视图。
2024-03-19 21:33:45
1118
1
原创 Linux命令二
Local Address 部分的0.0.0.0:873表示监听服务器上所有ip地址的所有(0.0.0.0表示本地所有ip),比如你的服务器是有172.172.230.210和 172.172.230.11两个ip地址,那么0.0.0.0:873此时表示监听172.172.230.210,172.172.230.211,127.0.0.1三个地址的873端口。-p或--programs:显示正在使用Socket的程序识别码和程序名称;--ip或--inet:此参数的效果和指定"-A inet"参数相同。
2024-03-19 21:26:42
701
原创 Linux命令
1.安装yum包:2.yum移除包:3.重新安装一个yum包:4.搜索yum包:5.显示yum包的信息:6.更新安装的yum包:7.更新具体的yum包:8.显示yum历史:9.显示已启用的yum存储库的列表:10.清除yum缓存。
2024-03-18 21:18:05
1015
1
原创 Java代码实现数据脱敏
数据脱敏(Data Masking)是一种数据安全技术,旨在通过预先设定的规则和算法,对原始数据中包含的敏感信息进行变形处理,使得这些信息在非生产环境(例如开发、测试、分析或培训场景)中使用时,既能保持原有数据格式和业务逻辑的真实性,又能有效保护个人隐私和商业机密不被泄露。在实施数据脱敏时,对诸如身份证号、手机号、银行卡号、个人姓名、家庭住址、电子邮件地址、医疗记录等敏感信息采取替换、遮盖、乱序、加密、截断等手段进行处理,以防止这些敏感信息在未经授权的情况下被识别或滥用。@Override。
2024-03-14 21:14:14
2882
2
原创 阿里云OSS对象存储的使用和实现万能文件上传
OSS是(Object Storage Service)的缩写,是一种分布式存储服务,用于存储和访问大规模数据。它提供了可靠、安全、低成本的数据存储解决方案,可以通过网络随时随地访问存储的数据。oss常用于存储图片、视频、文档等非结构化数据。
2024-03-07 16:18:59
1459
1
原创 事务 失效的八种情况
Transactional注解只能在在public修饰的方法下使用。/** * 私有方法上的注解,不生效(因私有方法Spring扫描不到该方法,所以无法生成代理) */ @Transactional private boolean test() {
2024-03-06 21:40:34
547
1
原创 Springboot入门
Spring Boot banner在线生成工具,制作下载英文banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.net2、将生成的banner.txt复制到resources目录中3、测试。
2024-01-15 20:54:15
869
1
原创 Spring的纯注解开发配置
该注解只能写在方法上,表明使用此方法创建一个对象,并且放入spring容器。@Import注解是用来导入配置类或者一些需要前置加载的类。value[]:用于指定properties文件位置。用于指定spring在初始化容器时要扫描的包。用于加载*.properties文件中的配置。basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。value[]:用于指定其他配置类的字节码。
2024-01-15 20:34:38
1964
1
原创 Spring的IOC解决程序耦合
注意:Jar包彼此存在依赖,只需引入最外层Jar即可由Maven自动将相关依赖Jar引入到项目中。核心容器由 beans、core、context 和 expression(Spring Expression Language,SpEL)4个模块组成。spring-beans和spring-core模块是Spring框架的核心模块,包含了控制反转(Inversion of Control,IOC)和依赖注入(Dependency Injection,DI)。
2024-01-04 21:18:39
379
1
原创 Spring的工程模式的IOC解决程序耦合
IOC (Inverse of Control)即控制反转:正传是自己创建依赖对象;反正是有IOC工厂来创建依赖对象;原来:我们在获取对象时,都是采用new的方式。是主动的。现在:我们获取对象时,同时跟工厂要,有工厂为我们查找或者创建对象。是被动的。这种被动接收的方式获取对象的思想就是控制反转,它是spring框架的核心之一。
2024-01-04 21:11:42
887
1
原创 servlet的生命周期
Servlet的生命周期就是servlet类对象什么时候创建?什么时候调用对应的方法,什么时候销毁。//创建对象// 使用对象// 使用对象// 销毁对象也就是说自定义对象的生命周期由我们程序员自己手动控制。但是!!!Servlet它不是一个普通的java类。是一个被tomcat服务器调用的。所以Servlet是生命周期是被tomcat服务器去控制的。
2023-12-25 20:24:59
337
1
原创 MyBatis的延迟加载
当我们在使用MyBatis进行数据库查询时,通常会使用一种称为“立即加载”的方式。这意味着当查询主对象时,MyBatis会立即加载该对象及其关联对象的所有数据。但是,有时关联对象的数据可能会很大,而且并不一定每次都需要完整加载所有的关联对象数据。这就是延迟加载的作用。,它允许在需要的时候才去加载关联对象的数据,而不是在查询主对象时就一次性加载所有关联对象。这样可以避免不必要的数据库查询,提高查询性能和减轻数据库负载。开启延迟加载后,在真正使用数据的时候才发起级联查询,不用的时候不查询。
2023-12-22 20:40:03
400
原创 MyBatis的关联查询
实体间的关系(拥有 has、属于 belong)OneToOne:一对一关系(account ←→ user)OneToMany:一对多关系(user ←→ account)ManyToMany:多对多关系(user ←→ role)注:account user role 为数据库表什么是关联查询当访问关系的一方时,如果需要查看与之关联的另一方数据,则必须使用表链接查询,将查询到的另一方数据,保存在本方的属性中关联查询的语法指定“一方”关系时(对象),使用指定“多方”关系时(集合),使用。
2023-12-22 20:23:43
996
原创 MyBatis的ORM映射
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
2023-12-20 20:29:30
384
1
原创 关于MyBatis的模糊查询的SQL注入问题
{}可以接收简单类型值或 pojo 属性值。#{}表示一个占位符号 通过#{}可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换。${}表示拼接 sql 串 通过${}可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换。${}可以接收简单类型值或 pojo 属性值,如果 parameterType 传输单个简单类型值,${}括号中只能是 value。1.${}不防止SQL注入 #{}可以防止SQL注入。
2023-12-19 21:23:52
437
1
原创 MyBatis运行原理
映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。:在 Executor 接口的执行方法中有一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法,是一个既可以发送sql执行并返回结果的,也可以获取mapper的接口。
2023-12-19 20:49:25
364
1
原创 1.MyBatis介绍
框架(framework)(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性,即已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。
2023-12-19 20:40:28
332
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人