自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 MySql对于时间段交集的处理和通用实现方式(MyBatis-Plus)

一般传统时间筛选是在[ 开始时间 → 结束时间 ]这个区间内的子集,也就是全包含查询方式,这种只会筛选一种情况。如果场景需要是开展一个活动,需要活动时间检索应该但凡包含就返回,也就是需要查询这个时间段有涉及的都需要筛选出来,即返回产生交集的数据。

2024-04-21 22:03:15 335

原创 DataChangeRecorderInnerInterceptorde简单了解

前言今天遇到一个需求,是想要保存一下用户操作数据的记录,因为使用的是mybatisplus,可以使用它的DataChangeRecorderInnerInterceptor(数据变动记录插件)来实现这个功能,通过查找资料,发现网上相关的资料不是很多,官方文档也只有大段代码没有详细的使用过程,所以先对DataChangeRecorderInnerInterceptorde有个初步了解,后续继续深入学习一下这个插件。DataChangeRecorderInnerInterceptorde的官方文档地址如下:

2024-04-14 21:32:14 682

原创 MySQL的sql_mode模式简介

今天同事使用数据库时报错,排查问题时发现配置文件里的sql_mode配置被人注释了,所以通过查询资料对这个配置进行了下了解。mysql为了支持在不同的环境下运行,允许我们给它设置不同的运行模式(sql_mode)。不同的运行模式,mysql处理我们的sql语句也不相同(mysql提供了18个运行模式,它们可任意组合使用)。sql model 常用来解决下面几类问题通过设置sql mode, 可以完成不同严格程度的数据校验,有效地保障数据准备性。

2024-04-07 17:53:13 924

原创 Windows MySQL通过data 文件夹恢复数据

在MySql数据库中,为了备份和恢复数据,通常会使用mysqldump工具来导出和导入数据。但是,如果数据库非常大,name导出和导入数据可能会需要很长时间。这时,一种更快速的备份和恢复数据的方式就是直接复制mysql的data文件夹。什么是mysql的data文件夹MySQL的Data文件夹是存储数据库数据的文件夹。它包含了数据库的表、索引、视图等对象的数据文件。在文件系统中,每个数据库都对应一个文件夹,文件夹的名称就是数据库的名称。

2024-03-29 15:15:04 606

原创 【Redis】在Java中操作Redis

今天简单学习一下怎样在java springboot中使用redis进行数据的操作,我们将使用SpringDataRedis,它 是Spring Boot 集成的Redis服务。Spring Data Redis 是 Spring 的一部分,提供了在 Spring 应用中通过简单的配置就可以访问 Redis 服务,对 Redis 底层开发包进行了高度封装。在 Spring 项目中,可以使用Spring Data Redis来简化 Redis 操作。

2024-03-24 20:09:51 400

原创 MYSQL报 - Lock wait timeout exceeded; try restarting transaction

今天在使用数据库编辑数据时,页面突然卡主,退出程序后重新编辑,发现报错,1205 - Lock wait timeout exceeded;try restarting transaction(如下图),正巧在和同事开会,他正好遇到这个问题,为此专门记录下怎么解决。最终问题完美解决,所以要多跟同事交流学习,有些问题自己没遇到,别人可能已经遇到过了,可以减少自己查询问题的时间,提高效率,也让自己学到了新的知识。

2024-03-17 20:15:28 446

原创 什么是线程池,线程池的概念、优点、缺点,如何使用线程池,最大线程池怎么定义?

线程池的优点包括重用线程、控制并发度、提供线程管理和监控等。通过适当地配置线程池的大小和任务队列的容量,可以充分利用系统资源,提高程序的性能和响应速度。同时,线程池可以避免线程创建和销毁的开销,减少了资源的浪费。线程池的基本概念是,在应用程序启动时创建一定数量的线程,并将它们保存在线程池中。当需要执行任务时,从线程池中获取一个空闲的线程,将任务分配给该线程执行。线程池的设计思想是为了避免频繁地创建和销毁线程的开销,以及控制并发执行的线程数量,从而提高系统的性能和资源利用率。

2024-03-10 18:35:12 3353 1

原创 CommandLineRunner的使用

定义一个类实现CommandLineRunner接口,模拟启动项目时的预加载处理。此时注掉前面两个实现类的@Order()注解。

2024-03-03 21:58:15 436

原创 Java客户端调用Websocket服务端(Springboot)

今天使用Java客户端调用Websocket服务端。在项目启动时,开启Websocket服务。

2024-02-25 21:11:04 715

原创 获取本机请求时真实ip

有时候我们需要调用别人的接口,需要对自己的真实ip加入白名单才能调通,但是请求发出后会经过层层代理,导致我们不知道自己请求的真实ip,下面这个方法可以拿到/*** 获取用户真实IP地址,不使用request.getRemoteAddr()的原因是有可能用户使用了代理软件方式避免真实IP地址,* 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值*/try {= 0 &&!// 多次反向代理后会有多个ip值,第一个ip才是真实ip。

2024-01-28 21:34:55 711

原创 原子操作以及原子操作类AtomicInteger简介

问:什么是原子操作什么是原子操作,所谓原子操作,就是一个操作是不能打断的操作。确切的说应该是不备其他线程或者任务影响的操作。没错,原子操作就是你在家里的一次上厕所的操作 >> 进厕所,上锁,执行操作… 身心愉悦,开锁,离开…在程序中的体现就是一个线程在执行某个任务占用某个资源在操作的时候,不会被其他的线程或者任务抢走资源,直 到这个任务结束释放资源,其他的线程或者任务才能使用这个资源。嗯 其实就是我们说的给资源上锁,就是同步操作。。。。。看看案例我们都知道 i++ 是给i变量加1。

2024-01-21 20:40:29 895

原创 后端使用response.reset()导致出现跨域问题

ApiOperation("下载附件")try {// 清空response。

2024-01-14 21:50:24 624

原创 freemarker模板生成的word文档优化

通过freemarker模板生成的word文档实际上不是真正意义上的ms word标准文档,它仍然是xml文件,而docx实际上是一个压缩文件。所以使用以下方法对freemarker模板生成的word进行优化,保证生成的文件是真正意义上的ms word标准文档。

2024-01-07 19:55:02 542

原创 MySQL 中的 JSON_CONTAINS 函数详解

在处理 MySQL 中的 JSON 数据时,我们经常需要检查一个 JSON 文档是否包含特定的值。这时,JSON_CONTAINS 函数就显得非常有用。JSON_CONTAINS 是 MySQL 提供的一个 JSON 函数,用于测试一个 JSON 文档是否包含特定的值。如果包含则返回 1,否则返回 0。target: 待搜索的目标 JSON 文档。candidate: 在目标 JSON 文档中要搜索的值。path(可选): 路径表达式,指示在哪里搜索候选值。

2024-01-01 20:47:20 1684

原创 mysql空间查询之搜索在不规则图形范围内点的数据

这次的需求是在地图上画一个不规则图形,查询这个范围内的数据,类似下图:前端会把每个折现点的经纬度传过来,比如:0 0, 0 10, 10 10, 10 0, 0 0,注意要首尾相连,这样才是一个完整的图形。数据准备:有一个包含点的数据表,并且该表具有一个名为point的列来存储每个点的坐标,数据格式跟下面一样.point(经度 纬度),要注意范围要在-90,90,具体操作可以看我之前的文章.

2023-12-22 10:02:02 499

原创 mysql使用st_distance_sphere函数报错Incorrect arguments to st_distance_sphere

最近使用空间点位查询数据时函数报错Incorrect arguments to st_distance_sphere报错。

2023-12-17 22:02:16 681

原创 根据详细位置获取点位的经纬度(天地图api)

最近有需求是跟据数据的详细位置来找到对应的经纬度信息,发现天地图有对应的api,就简单介绍下。天地图地理编码API是一类简单的HTTP/HTTPS接口,是指由结构化地址数据(如:北京市海淀区莲花池西路28号)转换为对应坐标点(经纬度)功能,地址解析仅限于国内。使用地理编码服务前您需要申请Key。

2023-12-10 21:42:51 909

原创 java读取word文件转html

【代码】java读取word文件转html。

2023-12-03 20:22:50 579

原创 WebSocket了解

WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议。

2023-11-26 22:00:13 1430

原创 解决between and不包含有边界问题

今天测出了个bug,是在列表查询时时间段查询无法查询到结束日期当天的数据,发现是因为用了between and的问题,现在说下解决方案。

2023-11-19 17:51:29 219

原创 使用jmeter进行简单压力测试

最近项目要上线,需要项目进行简单的压力测试,本次使用的是jmeter来进行的,由于本人不是专业测试,只是对本次使用过程进行简单的记录.

2023-11-10 10:37:01 784

原创 Java设计模式——策略模式

策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得算法可独立于使用它的用户而变化在策略模式中定义了一系列算法,将每一个算法封装起来,并让它们 可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式。策略模式是一种对象行为型模式。策略模式包含三个角色:环境类在解决某个问题时可以采用多种策略, 在环境类中维护一个对抽象策略类的引用实例。

2023-11-05 16:32:00 1291 2

原创 Mysql存在则编辑不存在则新增

on duplicate key 如果遇到重复的唯一索引则会进行update,否则进行新增,没有replcae的坑,不会先进行delete 在进行 insert。此方法有坑,如果主键是自增的,且通过唯一索引来进行操作时,主键会变更,该方法底层是先进性delete,在insert。但是此方法也有坑,如果表中不止一个唯一索引的话,在特定版本的mysql中容易产生dead lock(死锁)replace into 会根据唯一索引或主键进行判断,如果存在则覆盖写入字段,如果不存在则新增。

2023-10-30 10:00:01 398

原创 Java Stream流详解

Stream API主要提供了两种类型的操作:中间操作 和 终止操作。

2023-10-22 15:20:22 534

原创 Nginx正向代理配置(http)

在工作中我们经常使用nginx进行反向代理,今天介绍下怎么进行正向代理,支持http请求,暂不支持https首先先介绍下正向代理和反向代理。

2023-10-13 16:25:51 960

原创 将OSGB格式数据转换为3d tiles的格式

现有需求需要将已有的一些OSGB数据加载到CesiumJS中展示,但是CesiumJS本身不支持osbg格式的数据渲染所以我们需要将其转换一下,有两种格式可以转换一种是glTF格式,另一种是我们今天要介绍的3D Tiles格式。

2023-09-24 21:42:10 1201

原创 Java 中将多个 PDF 文件合并为一个 PDF

1. 将文件中的多个 PDF 合并为单个 PDF2. 将流中的多个 PDF 合并为单个 PDF。

2023-09-15 10:35:07 700

原创 EasyExcel实现指定行列的相同内容单元格合并

【代码】EasyExcel实现指定行列的相同内容单元格合并。

2023-09-10 22:01:45 2193

原创 使用Java Bean Validation API非空校验

其中**Set<ConstraintViolation> violations = validator.validate(user);**就是返回的为空字段的个数,如果size为0,证明该实体加了 @NotNull的字段全部验证通过。1.注意导包javax.validation。

2023-09-03 21:21:42 242

原创 Java 8:Stream API 流式操作(学习)

最后,使用 collect 方法,结合 Collectors.toList() 收集器,将符合条件的元素收集到一个新的列表 filtered 中。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等;函数式接口是只包含一个抽象方法的接口,Lambda 表达式可以作为函数式接口的实例进行传递;:最后,使用 collect 方法将排序后的 Stream 对象收集为一个新的 List,即排序后的 noticeResponses 列表。

2023-08-27 19:39:48 1384

原创 mybatisplus集成geometry实现增改功能

在我们工作中想要实现将空间点位信息存储到数据库时,一般使用以下语句实现INSERT INTO ` test-point `(point , text) VALUES(st_GeomFromText('POINT(1 1)') , '第1个点');但是这样每次都要去编写新增与编辑的sql语句非常麻烦,体现不出mybatisplus的便捷性,所以可以增加GeometryTypeHandler在mybatisplus生成新增编辑语句时将st_GeomFromText ()函数拼接到sql语句上,更加方便快捷。

2023-08-04 11:12:49 1109 5

原创 mysql中point的使用

MySQL中的point用于表示GIS中的地理坐标,在GIS中广泛使用,本文主要讲解point类型的简单使用。

2023-07-27 17:25:50 1186

原创 git使用学习:解决报错error: Your local changes to the following files would be overwritten by merge

在工作中git merge时的一个报错error: Your local changes to the following files would be overwritten by merge,出现的原因是git merge时本地分支的更改没有保存下来。解决办法有两种。

2023-07-21 15:25:27 1265 1

原创 @TableLogic注解说明,以及对增删改查的影响

@tablelogic

2023-07-16 20:46:31 1454

原创 使用rewriteBatchedStatements属性优化Mybatis-Plus批量插入数据

由于项目是使用MyBatis-Plus开发的,用起来也确实比较方便,尤其是service层封装好的一些通用的增删改查方法,省去了不少sql语句的书写,但是在开发过程中,我也发现MyBatis-Plus的saveBatch批量插入方法针对MySQL数据库可能会出现效率贼低的情况,通过不断查询资料发现可以通过加rewriteBatchedStatements参数来解决(保证5.1.13以上版本)。

2023-07-04 11:13:36 2323

原创 Linux下安装Redis的详细安装步骤

bind 127.0.0.1 改为bind 0.0.0.0将 protected-mode yes 改为 protected-mode no设置redis秘密,requirepass 123456设置密码后登陆需要如下图操作OK。

2023-07-02 22:44:56 13392

原创 java开发最少知识原则

如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个应用。迪米特法则强调:在类的结构设计上,每一个类都应该尽量降低成员变量的访问权限。也就是说一个类应该包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开;迪米特法则的根本思想是:强调类之间的松耦合;类之间的耦合越弱,越有利于复用,一个处于弱耦合的类被修改了,不会对有关系的类造成波及;问题由来。

2023-06-25 09:41:34 179 1

原创 java经纬度小数与度分秒相互转换工具类

如果对精度有要求,可以使用以下代码对精度进行控制。

2023-06-16 17:27:44 1005

原创 MySQL报错“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法

今天使用mysql简单的一句分组查询语句(GROUP BY)报错了。但是如果是这样就不会报错查了问题原因和解决方法,成功解决。

2023-06-11 20:53:56 308

原创 java根据模板生成pdf文件并导出

进去到编辑页面,打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框(其实无需任何操作,一般情况下不需要修改什么东西,至少我没有修改哦。3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件(注:如果没有这个软件可以通过我的百度云下载,链接:http://pan.baidu.com/s/1pL2klzt)4.点击右边的"准备表单"按钮,选择"测试.pdf"选择开始。5.做完上面的工作后,直接"另存为"将pdf存储就可以。2.下面就是生成pdf代码了。

2023-06-04 20:37:04 552

空空如也

空空如也

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

TA关注的人

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