Java学习笔记
文章平均质量分 52
令人作呕的溏心蛋
人生何处不青山
展开
-
Spring Boot 中 PGSQL 判断打卡点是否经过轨迹优化代码,循环查询物理表修改生成临时表,向临时表插入数据后再做ST_DWithin判断,引入线程池提升判断效率
记录一下一个业务问题,流程是这样的,我现在有一个定时任务,5分钟执行一次,更新车辆打卡的情况。现在有20俩车,每辆车都分配了路线,每条路线都有打卡点,每个打卡点分配了不同的时间段,也就是说,一条路线可能有几百个打卡点,这几百个打卡点中每一个都分配了时间段,有可能是1个时间段,比如8:00 - 10:00这个时间段,要去打卡。也有可能有的打卡点分配了几个时间段,比如上午两个时间段,下午两个时间段。这个时候要去判断今天的打卡情况,只能先获取路线的打卡点,然后再获取单个打卡点下面的时间段,再进行判断操作。但是问题原创 2024-07-02 20:37:01 · 627 阅读 · 0 评论 -
解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决
然后我找到了Druid的配置,把全部配置都注释掉,居然可以成功的执行了。然后我一个一个配置排查发现,有个filters的配置,引起的报错,只要把这个注释了,就能成功执行,不管切换什么版本的Druid。我在navicat中尝试了一下执行相同的sql创建临时表语句,确实是能执行的。然后我又进行了一次测试,在xml中的sql创建临时表语句把TEMPORARY删除,直接创建一张物理表,确实成功的执行了。在网上搜索了一下,说把Druid版本升级到最新,我试着升级到了最新,确实不报这个错误了,又报了一个新的错误。原创 2024-07-02 19:19:00 · 307 阅读 · 0 评论 -
【JVM排查问题】JProfiler性能分析工具连接远程服务器Docker容器中的Java服务
【JVM排查问题】JProfiler性能分析工具连接远程服务器Docker容器中的Java服务原创 2024-07-02 09:42:57 · 306 阅读 · 0 评论 -
【JVM排查问题】JProfiler中的传出引用(outgoing references)和传入引用(incoming referen)是什么意思?有什么区别?代码示例!内存泄漏问题排查
因此,当我们需要排查内存泄漏时,更倾向于使用传入引用来分析对象的引用链,找出导致对象无法释放的原因。通过这种方式,可以有效地定位和解决内存泄漏问题,提高应用程序的健壮性和性能。原创 2024-06-29 15:17:57 · 802 阅读 · 0 评论 -
Java中处理double、float、Double、Float、BigDecimal、String类型对象的小数工具类,保留小数位或取整,是否四舍五入
由于每次都要处理小数,很麻烦,所以封装一个工具类来去处理,这个工具类专门用来处理小数位的,就比如我是double、float、Double、Float、BigDecimal、String这些。工具类提供三个参数,一个是泛型的value用来传入任何类型的(double、float、Double、Float、BigDecimal、String)值,一个是保留多少位scale用来截取多少位,一个是是否需要四舍五入判断指标isHalf用来判断是否需要四舍五入,如我value是double类型1.336,scale是原创 2024-06-20 09:14:46 · 355 阅读 · 0 评论 -
idea如何使用git reset进行回退以及如何使用git stash将暂存区文件储藏,打包后重新恢复暂存区文件
idea如何使用git reset进行回退以及如何使用git stash将暂存区文件储藏,打包后重新恢复暂存区文件。最近遇到一个棘手的问题,本来按照计划表开发,但是项目经理突然让你改一个小bug,改完需要马上部署到线上,但是你手上的活做到一半还没做完,提交上去那肯定是不可行的。这时就可以使用git stash命令先把当前进度(工作区和暂存区)储藏起来,等打包完成后再把储藏的文件恢复回来,这样既不影响我们的手上没修改完的活,也不影响小bug修复上线。原创 2024-06-07 16:08:06 · 516 阅读 · 0 评论 -
如何避免在for循环中对数据库操作
以上是一些常见的优化方法,具体要根据实际情况和数据访问模式来选择合适的优化方案。总之,减少循环中的数据库操作是提高性能的有效手段,应该尽量避免频繁的数据库访问。避免在循环中频繁进行数据库操作可以显著提高程序的性能。原创 2024-06-04 17:29:33 · 379 阅读 · 0 评论 -
Java中PostgreSQl一大批数据(3000+)插入数据库,后台直接报错An I/O error occurred while sending to the backend.
Java中PostgreSQl一大批数据(3000+)插入数据库,后台直接报错An I/O error occurred while sending to the backend.原创 2024-05-08 09:01:53 · 327 阅读 · 1 评论 -
在Java中假设我有一个List<String>列表,有两个数据在里面分别是04:00:00和12:00:00,如何比较大小保留最小的或最大的其中一个
【代码】在Java中假设我有一个List列表,有两个数据在里面分别是04:00:00和12:00:00,如何比较大小保留最小的或最大的其中一个。原创 2024-04-25 17:17:13 · 131 阅读 · 0 评论 -
Java中使用List的stream流19中常用方法操作以及使用常用的filter、map、distinct、count、collect、skip、limit等方法进行数据列表的处理以及数据列表的分页
【代码】Java中使用List的stream流19中常用方法操作以及使用常用的filter、map、distinct、count、collect、skip、limit等方法进行数据列表的处理以及数据列表的分页。原创 2024-04-25 14:41:28 · 646 阅读 · 0 评论 -
Java中double数值保留两位小数的四种实现方式
【代码】Java中double数值保留两位小数的四种实现方式。原创 2024-04-25 14:21:04 · 1274 阅读 · 1 评论 -
Java中使用List的stream流实现分页,有时候我们的需求并不能使用mybatis或mysql去实现分页,我们就需要处理好数据后使用stream流去处理分页
Java 9 或更高版本中使用 toList() 方法。如果你使用的是 Java 8,则可以使用 collect(Collectors.toList()) 方法来替换 toList()。使用 skip() 和 limit() 方法。skip(n) 方法用于跳过前 n 个元素,而 limit(n) 方法用于限制元素的数量为 n。结合这两个方法,你可以实现分页效果。将.toList() 替换成 .collect(Collectors.toList());原创 2024-04-19 10:08:55 · 473 阅读 · 0 评论 -
Java 判断两个Date类型的时间是否大于6天
cardDeviceTrajectoryInfo.getGpstime().toInstant() 是表中最后一条数据的时间,并转换成Instant对象。new Date().toInstant() 是获取当前时间,并转换成Instant对象。原创 2024-04-17 14:58:55 · 204 阅读 · 0 评论 -
Linux中判断某个Docker容器服务的内存是否超过临界值,比如到达3G,则在凌晨4点执行定时任务执行重新构建命令
监测NAME是blade-jiangxinzhougarden的服务,如果内存(MEM USAGE)超过10G则在凌晨4点执行重新构建命令。原创 2024-03-14 16:00:17 · 425 阅读 · 0 评论 -
使用Java自带的VisualVM监控远程服务器部署在Docker容器中的Java项目并使用Mat在线工具排查服务器内存泄露或内存溢出的原因。项目解耦,与业务模块分离单独运行定时任务
事情是这样的,我们项目最近应业主的要求迁移到了新的服务器,起初一切正常,部署、上线、测试都没有问题,项目大概运行了一周的工作日时间都没出现问题,直到周六那天,项目经理打电话过来说服务器崩了,图片上传不了,验证码加载不出来等各种问题。。。然后火速连到服务器查看了一下Docker 命令中用来显示容器资源利用情况,发现这个Java服务一直在持续的上涨到15G左右(正常也就几百兆),以至于涨到服务器挂掉了。。。额,我初步怀疑是定时任务太多的问题。原创 2024-03-13 16:14:46 · 1685 阅读 · 0 评论 -
在Java中内存泄漏(Memory Leak)和内存溢出(Memory Overflow)的区别
内存泄漏指的是程序中已经不再使用的内存没有被正确释放或回收的情况。这种情况下,内存中仍然存在一些对象占用空间,但由于程序无法访问到这些对象,导致这部分内存无法被重新利用,随着时间的推移会造成系统可用内存逐渐减少。原创 2024-03-13 16:14:05 · 434 阅读 · 0 评论 -
Java中将List集合数据转成带反斜杠的字符串格式
【代码】Java中将List集合数据转成带反斜杠的字符串格式。原创 2023-12-14 14:06:49 · 988 阅读 · 0 评论 -
Spring Boot中有很多个定时任务@Scheduled(cron = “0 0 0 * * ?“),怎么通过.yml配置一下,可以控制所有定时任务开启或者不开启?
然后,在你的定时任务类中使用@ConditionalOnProperty注解,根据配置的属性值来决定是否启用定时任务。要通过.yml配置文件控制所有定时任务的开启或关闭,你可以使用Spring Boot的属性配置功能。这样子我们只需要在.yml文件中的控制true开启或false不开启即可。原创 2023-12-13 15:17:38 · 825 阅读 · 0 评论 -
解决mybatis-plus中,当属性为空的时候,update方法、updateById方法无法set null,直接忽略了
在实体类对应的字段上加注解@TableField(strategy=FieldStrategy.IGNORED),忽略null值的判断即可。需要注意的是使用该注解后这个属性就会全局忽略null值的判断。我们会发现sql中indexId这个属性也set为null了。sql语句中没有了set indexId这一属性。当indexId set 22的时候是可以set的。但是当我们indexId为空的时候。既然属性都没了,表是肯定没做修改的。那么表自然也会修改成null值。我们发现sql语句也是正常的。原创 2023-12-06 15:05:48 · 898 阅读 · 0 评论 -
Java中通过List中的stream流去匹配相同的字段去赋值,避免for循环去查询数据库进行赋值操作
接着,使用forEach方法遍历equipmentDeviceMessageInfo列表,根据phone匹配userMap,如果找到匹配项,则将对应的name赋值给equipmentDeviceMessageInfo中的name字段。:上面两个列表怎么使用流,根据equipmentDeviceMessageInfo中的phone字段去匹配userList 中的phone字段再获取userList 中是name赋值给equipmentDeviceMessageInfo 中的name。原创 2023-10-16 15:21:58 · 1332 阅读 · 0 评论 -
Java中的Date类型、LocalTime类型、LocalDate类型、LocalDateTime类型有什么区别?
类型在处理日期和时间上存在一些问题,因为它不是线程安全的,且大部分方法已被标记为过时。因此,在Java 8及以后的版本,引入了新的日期和时间API。类型是在旧版Java中引入的,用于表示日期和时间。它包含了年、月、日、时、分、秒等信息,但不包含时区信息。类型包含日期和时间信息,并且在处理时需要注意其线程安全性和过时方法的使用。提供了丰富的方法用于处理日期和时间操作,如日期时间的加减、格式化、比较等。在编写Java代码时,推荐使用新的日期和时间API中的。这四种类型的区别主要在于其所包含的信息和使用方式。原创 2023-10-16 14:18:27 · 535 阅读 · 0 评论 -
解决net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “>=“ <OP_GREATERTHANEQUALS>
Sql在Navicat里面能执行,但是在项目中却执行不了报错。直接在Mapper接口对应的方法上加上这个注解就好了!原创 2023-09-21 13:15:37 · 432 阅读 · 0 评论 -
springboot中entity层、dto层、vo层通俗理解三者的区别
用于返回数据给前端,也就是说当我们在写业务的时候,前端不一定要全部的数据,他有可能只需要三四个,或者更少的数据,这时候我们就需要用到vo了,我们只需要在vo里面写三四个属性就好了,直接把这个vo返回给前端。:用于后端接收前端返回的数据,一般是post请求,前端会给我们返回一个json对象,我们这个dto就用于接收这个json对象,dto的每个属性名和json对象的key是对应的。:这个类的属性是跟数据库字段一模一样的(驼峰命名),当我们使用MyBatis-Plus的时候经常用得到。原创 2023-09-02 14:29:03 · 2068 阅读 · 1 评论 -
Mybatis Plus中使用LambdaQueryWrapper进行分页以及模糊查询对比传统XML方式进行分页
return Page类型可以得到数据的总数,你也可以通过.getRecords()方式获取List集合。传统的XML方式只能使用limit以及offset进行分页,通过判断name和bindState是否为空,不为空则拼接条件。只需要在Service实现类中直接调用Mybatis Plus的方法即可进行操作。这样子,我们就可以通过Mybatis Plus得到分页数据了!原创 2023-08-18 09:18:15 · 2916 阅读 · 0 评论 -
在Java中如何使用List集合实现分页,以及模糊查询后分页
【代码】在Java中如何使用List集合实现分页,以及模糊查询后分页。原创 2023-08-11 13:25:31 · 558 阅读 · 0 评论 -
MyBatis动态传入表名以及#{}和${}的区别
总结一下,就是当我们需要拼接的变量上不能带单引号时,就必须使用${},其他情况都尽量使用#{}的方式,因为${}会有sql注入的问题。而如果我们使用${}的方式编写的sql时,${} 是进行sql拼接,${} 对应的变量是不会被加上单引号 ’ ’ 的。参数user上会带着单引号,而单引号在mysql中会被识别为字符串,select一个字符串肯定是会报错的。在mybatis中如果我们使用#{}的方式编写的sql时,#{} 对应的变量自动加上单引号 ’ ’原创 2023-07-26 15:37:55 · 554 阅读 · 0 评论 -
在Java中自定义的注解是如何使用的?为什么别人的注解源码里面什么都没有也可以执行?
Target 和 @Retention 代表元注解。@Target 用于描述注解的使用范围(也就是说这个注解是否可以在类上面使用、是否可以在方法上面使用等)。@Retention 表示需要在什么级别保存该注释信息,用于描述该注解的生命周期 (SOURCE < CLASS < RUNTIME) 默认:RUNTIME。/*** @Target 和 @Retention -> 元注解。原创 2023-06-04 17:03:06 · 267 阅读 · 0 评论 -
Java、MySQL中所有类型的默认字节和所占位数
【代码】Java、MySQL中所有类型的默认字节和所占位数。原创 2023-04-23 17:05:24 · 784 阅读 · 1 评论 -
Java多线程学习笔记
前言:笔记是参考B站up主遇见狂神说,图片、代码都是哦。因为最近特别喜欢他教的课程,所以就一边跟着学习,一边在blog写笔记~(图片、代码来源狂神说Java,侵权必删!)狂神说Java学习路线B站网站:https://www.bilibili.com/read/cv5702420原创 2022-05-12 23:51:30 · 121 阅读 · 0 评论 -
JVM学习笔记
前言:笔记是参考B站up主遇见狂神说,图片、代码都是哦。因为最近特别喜欢他教的课程,所以就一边跟着学习,一边在blog写笔记~(图片、代码来源狂神说Java,侵权必删!)狂神说Java学习路线B站网站:https://www.bilibili.com/read/cv5702420原创 2022-05-12 23:50:38 · 107 阅读 · 0 评论 -
JavaSE、JavaWeb、JavaEE、以及进阶所需要学习的知识内容
JavaSE:Java基础,我们入门所学的基础语法循环判断之后还有面向对象、网络编程、多线程、注解和反射、JVC、JUC等等。学习地址:https://www.bilibili.com/video/BV12J41137huJavaWeb:pojo层(pojo=entity=domain):实体类dao层:业务逻辑层、直接操作数据库service层:服务层、负责业务调度dao层、对外提供功能servlet层:转发、重定向、控制页面的跳转jsp/html层:web页面代码编写搭建web项目,需原创 2022-03-05 10:58:09 · 14217 阅读 · 0 评论 -
Java面向对象学习笔记
构造器有参构造:一旦定义了有参构造,无参构造就必须显示定义构造器:和类名相同没有返回值作用:new本质在调用构造方法初始化对象的值封装(属性私有 get/set)提高程序的安全性,保护数据隐藏代码的实现细节统一接口系统可维护增强了class Student{ //属性私有private private int id; private String name; private String sex; //使用get、set提供原创 2021-09-25 23:48:58 · 138 阅读 · 0 评论