自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(360)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用注解的方式实现数据脱敏

数据脱敏可以分为静态数据脱敏和动态数据脱敏,其中静态数据脱敏一般应用于数据外发场景,例如需要将数据导出发送给开发人员、测试人员等,静态数据脱敏会将变化后的数据进行保存,供数据使用方使用;动态数据脱敏一般应用于直接连接生产数据的场景,例如运维人员直接连接生产数据库进行运维,动态数据脱敏会在数据获取过程中对数据进行变化处理,不会修改原始数据。

2024-05-21 14:55:50 281

原创 使用递归将list转换成tree

【代码】使用递归将list转换成tree。

2024-01-11 14:27:13 620

原创 使用EasyPoi导入数据并返回失败xls

【代码】使用EasyPoi导入数据并返回失败xls。

2024-01-05 16:26:12 524

原创 PDF添加文字或者图片

outPutPdfFilePath输出文件路径。inputPdfFilePath输入文件路径。imagePros图片集合。pdfList文字集合。

2023-11-23 15:19:00 149

原创 PDF转成图片

【代码】PDF转成图片。

2023-11-22 14:35:38 787

原创 一个基于RedisTemplate静态工具类

每次是用RedisTemplate的时候都需要进行自动注入实在是太麻烦了,于是找到一个讨巧的办法。

2023-11-22 09:31:44 493

原创 重启服务器引发的Docker异常

尝试了重新启动docker服务,docker ps还是看不到进程。执行sudo dockerd发现服务已经启动了,无法再次启动。使用dockerd &后台启动,可以安全关闭连接工具了。然后发现找不到容器和镜像列表了,但是容器都启动了。猜想是docker服务启动异常导致查询不到容器列表。公司使用云服务器需要硬盘扩容,服务器重启才生效。重启以后发现拉取远程镜像的命令登录失败了!关闭docker重启启动docker如何。查看docker运行状态都是正常的。

2023-08-11 16:35:37 808

原创 Mysql推荐使用规范

a)null的列使索引/索引统计/值比较都更加复杂,对MySQL来说更难优化b)null 这种类型MySQL内部需要进行特殊处理,增加数据库处理记录的复杂性;同等条件下,表中有较多空字段的时候,数据库的处理性能会降低很多c)null值需要更多的存储空间,无论是表还是索引中每行中的null的列都需要额外的空间来标识d)对null 的处理时候,只能采用is null或is not null,而不能采用=、in、<、<>、!=、not in这些操作符号。如:where name!

2023-08-04 15:11:14 286

原创 Redis基本数据类型常用操作以及使用场景

单值缓存对象缓存分布式锁计数器分布式系统全局序列号。

2023-06-29 10:30:33 281

原创 @JsonRawValue注解的使用

例如,如果我们在Java类中有一个String字段,则将JSON值括在引号(“”内),但是当我们使用@JsonRawValue批注对该字段进行注释时,Jackson库将忽略引号。对于一些不定项的结果,比如可配置的检查项需要保存检查结果的时候,我们如果使用关系型数据库建表来保存对应数据就很麻烦,我们可以把检查结果序列号成json串保存到数据。原因是java中使用String类型存储数据的时候双引号"会自动添加转义符\导致返回数据序列话的时候无法正常序列化。但是查询的时候会变成这样。

2023-05-09 15:52:33 894 1

原创 docker容器内使用cat命令修改文件

v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外。-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行。-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号。-A, --show-all 实际结果是在每行最后处增加显示$-b, –number-nonblank 对非空白行输出行编号。-E, --show-ends 在每行最后处增加显示$-T, --show-tabs 将跳格字符显示为 ^I。

2023-05-09 15:25:13 1504

原创 什么是虚拟电厂

总之,虚拟电厂是一种新型的电力系统,它可以通过将分散的、分布式的能源资源进行整合和管理,实现对电力系统的优化和协调。虚拟电厂的出现,不仅可以提高电力系统的可靠性和稳定性,还可以促进清洁能源的发展和利用,为能源转型和可持续发展做出了重要贡献。虚拟电厂是一种新型的电力系统,它通过将分散的、分布式的能源资源进行整合和管理,实现了对电力系统的优化和协调。虚拟电厂的出现,不仅可以提高电力系统的可靠性和稳定性,还可以促进清洁能源的发展和利用,为能源转型和可持续发展做出了重要贡献。二、促进清洁能源的发展和利用。

2023-05-09 15:24:56 1467

原创 将一个单体服务重构成微服务

1. 拆分服务:将单体服务拆分成多个小服务,每个服务只负责一个特定的功能。拆分的原则是将服务按照业务功能进行划分,每个服务都应该是相对独立的。7. 通信协议:为服务之间的通信设计协议,包括RESTful API、消息队列、RPC等。3. 选择技术栈:选择适合每个服务的技术栈,包括编程语言、框架、数据库等。10. 测试管理:为每个服务设计测试方案,包括单元测试、集成测试、端到端测试等。9. 安全管理:为每个服务设计安全管理方案,包括身份认证、授权、加密等。安全管理应该是可靠的,可以保证服务的安全性和可用性。

2023-05-09 15:22:38 1412

原创 Redis中key过期的删除机制是什么

key 设置了过期时间时,Redis 会把该 key 带上过期时间存储到一个中过期字典保存了数据库中所有 key 的过期时间。

2023-04-03 20:14:50 315

原创 使用注解JSON序列化

JSON序列化

2023-02-17 11:14:59 806

原创 method breakpoints may dramatically slow down debugging问题

由于JVM的设计,方法断点会大大降低调试器的运行速度,它们的评估成本很高。删除方法断点并考虑使用常规行断点。、

2023-02-14 10:24:34 633

原创 为用户信息修改添加审核功能

尝试了一种新的方式,用一张表记录更新的字段和值,审核通过以后把修改值更新到记录里面。这样做的优势在于在很多表都需要做更新审核的时候可以直接复用这个功能,不需要为每个更新添加修改逻辑。最近做了一个功能为用户信息修改添加审核功能,审核通过以后修改才会生效。一般的做法是修改的时候添加一条记录,审核通过以后再把修改记录更新到原始的记录中。使用反射记录更新的字段名称和值。通过反射对数据进行更新。

2023-02-07 17:01:33 496

原创 eCharts工具类

ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。

2023-01-16 11:00:41 379

原创 基于Flink+kafka实时告警

某项目使用告警系统的逻辑是将实时数据保存到本地数据库再使用定时任务做判断,然后产生告警数据。这种方式存在告警的延时实在是太高了。数据从产生到保存,从保存到判断都会存在时间差,按照保存数据定时5分钟一次,定时任务5分钟一次。最高会产生10分钟的误差,这种告警就没什么意义了。

2023-01-16 10:29:01 1723

原创 Map的merge方法

Java 8 最大的特性无异于更多地面向函数,比如引入了 lambda等,可以更好地进行函数式编程。JDK8开始增加了map.merge方法。

2022-08-26 17:36:36 4874

原创 “Map.get“ and value test should be replaced with single method call

在JAVA8的Map接口中,增加了一个computeIfAbsent

2022-08-26 16:21:05 830

原创 DateUtils最新工具类

String、Date、LocalDate、LocalDateTime互转

2022-08-26 11:21:55 101

原创 使用mybatis批量修改多个字段

统计表批量更新多个字段

2022-08-26 11:05:47 960

原创 Http请求封装返回对象

封装了一个方法用于http请求,使用类来继承ResDAO来封装json返回对象。如果请求的token过期了,返回状态码是403就可以进行重新获取token再次进去远端接口。 http单例工具类: httpClient工具的单例封装_钦拆大仁的博客-CSDN博客...

2022-06-27 22:31:24 533

原创 httpClient工具的单例封装

httpClient客户端采用单例设计模式,CloseableHttpClient单例。

2022-06-16 17:11:07 485

原创 fastjson-JAVA对象、JSON对象、JSON字符串互转

使用fastjson进行JAVA对象、JSON对象、JSON字符串互转

2022-06-09 13:50:15 259

原创 MybatisPlus报错error: entityList must not be empty

saveBatch方法保存空集合也没出过问题,这个saveOrUpdateBatch方法里面有对集合的判断,集合为空直接报错。解决方法在保存之前加个判断,如果集合为空直接结束。在批量处理数据的方法里面要注意各种极端情况,注意对空集合空数据的判断,以免出现各种错误。......

2022-06-06 09:54:20 2996

原创 唯一ID生成类NanoId

NanoIDh和UUID一样都是是软件开发中最常用的通用标识符之一。<dependency> <groupId>com.aventrix.jnanoid</groupId> <artifactId>jnanoid</artifactId> <version>2.0.0</version></dependency>使用自定义工具类可以做定制化开发import java.se

2022-05-23 16:43:28 3093

原创 数据计算工具类ArithmeticUtils

BigDecimal类的特点总结 在需要精确的小数计算时再使用BigDecimal,BigDecimal的性能比double和float差,在处理庞大,复杂的运算时尤为明显。故一般精度的计算没必要使用BigDecimal。 尽量使用参数类型为String的构造函数。 BigDecimal都是不可变的(immutable)的, 在进行每一次四则运算时,都会产生一个新的对象 ,所以在做加减乘除运算时要记得要保存操作后的值。 工具类用于高精确处理常用的数学运算Arithm

2022-05-19 15:46:34 349

原创 @Autowired正确的打开方式

使用@Autowired注解时,发现IDEA报了一个 warning,拥有强迫症的我怎么受得了这个。 Spring Team recommends “Always use constructor based dependency injection in your beans. Always use assertions for mandatory dependencies”.使用alt+enter代码改成这样了这个两种方式有区别吗?@Autowired 可以对成员变量、方法以及构造

2022-05-19 12:12:40 128

原创 SpringBoot 启动时如何自动运行代码

概述目前开发的SpringBoot项目在启动的时候需要做一些数据缓存、加载一些资源。最常见的可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能。查阅资料可以知道可以自动运行代码的方式很多包括:java自身的启动时加载方式static静态代码块,在类加载的时候即自动执行。在对象初始化时执行。执行顺序在static静态代码块之后。Spring启动时加载方式PostConstruct注解使用在方法上,这个方法在对象依

2022-05-16 17:04:27 214

原创 POJO可以使用基本数据类型吗

在《阿里巴巴Java开发手册》中,对于POJO中如何选择变量的类型以及 RPC 接口中的返回值类型也有着一些规定先看一段代码public class BooleanMainTest { public static void main(String[] args) { Demo demo = new Demo(); System.out.println("demo : " + demo); }}@Dataclass Demo { /** * 封装类型 */ p

2022-05-16 16:14:29 339

原创 IDE打断点小技巧

调试代码的时候如果某次循环报错需要调试的时候,循环里面打了断点需要一遍一遍的进入比较麻烦。public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); list.add("f"); list.add("g"); f

2022-05-16 15:14:31 483

原创 for与foreach的区别

同事使用foreach删除元素发生了错误,我建议他使用迭代器删除于是我研究了普通的for循环删除元素的可能性List<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("c");log.info(list.toString());for (int i = 0; i <list.size(); i++) { list.remove("a");}log.info

2022-05-16 11:03:57 186

原创 “java.nio.file.NoSuchFileException: /tmp/undertow.xxx文件上报错

今天自测测试环境时发现上传文件失败找了一下原因SpringBoot项目直接启动时,会在操作系统的 /tmp 目录下生成一个包含undertow的临时目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时 /tmp 目录下的文件,在长时间不访问文件被清理。在上传的时候,服务器需要 临时文件找不到父目录。解决方法:yml文件配置spring: servlet: multipart: location: /data/tmpFile...

2022-02-10 16:34:30 3856

原创 批量插入rewriteBatchedStatements=true

今天写导入数据涉及到批量插入的地方使用mybatisPlus saveBatch,结果执行的时候大于sql语句发现是一条一条插入的。查阅资料发现MySQL JDBC驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,批量插入实际上是单条插入,直接造成较低的性能。只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL另外这个选项对INSERT/UPDATE/DELETE都有效

2021-12-01 16:49:39 1836

原创 根据传入的Class类返回决定返回值类型

excelpoicn.afterturn.easypoi.excel包下有这样一段代码public static <T> List<T> importExcel(InputStream inputstream, Class<?> pojoClass, ImportParams params) throws Exception { return (new ExcelImportService()).importExcelByIs(inputs...

2021-12-01 09:00:28 1948

原创 Springboot项目时候异步提高接口的响应速度

asynchronous CALL(异步调用)一个可以无需等待被调用函数的返回值就让操作继续进行的方法1、启动类上添加开启异步注解@EnableAsyncpublic class Application {2、编写异步方法import org.springframework.scheduling.annotation.Async;import org.springframework.scheduling.annotation.AsyncResult;import org.spr..

2021-11-01 15:26:32 1214

原创 MyBatisPlus+MySQL解决查询语句中字段名为关键字的问题

当查询语句中字段名为关键字时,会出现语法问题select desc from user_info where id = 1sql语句应该写成select `desc` from user_info where id = 1MybatisPlus中的做法,在实体类字段上加上TableField注解 @TableField("`desc`") private String desc;...

2021-10-25 16:20:28 1204

原创 解决前后端开发中的跨域问题

CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域,就好产生跨域问题。import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.w

2021-10-22 13:57:49 126

redis持久化

1.大纲 1、Redis的持久化 2、Redis的主从 3、Redis的集群

2017-05-26

空空如也

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

TA关注的人

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