Java
文章平均质量分 86
Java
zzhongcy
因为站在了巨人的肩上,所以我看得更远。
当你发现自己的才华撑不起野心时,就请安静下来学习吧
展开
-
Quartz 调度框架介绍
Quartz转载 2024-08-06 17:31:17 · 211 阅读 · 0 评论 -
AES解密报错Invalid AES key length: xx bytes与Given final block not properly padded的解决方法
最近和其它系统联调接口,用到了Java的AES加解密。由其它系统AES加密,本人的系统获取到加密报文后,AES解密,获取到内容。本来是比较简单的,可是其它系统只提供了秘钥,没有提供解密方法,解密方法需要我们自己写……正常应该是加密方提供解密方法的吧,我觉得……还好最后都解决了,在此记录下。转载 2024-07-25 18:03:27 · 553 阅读 · 0 评论 -
mybatis报错:Error querying database. Cause: java.lang.NumberFormatException: For input string: xx
'Y',此时,mybatis认为拿一个字符串(String)和一个字符(char)比较,也会报错。参数格式化异常导致,例如在动态sql拼接中String类型参数和数字比较。2. 改为双引号"2",外层使用单引号。3. 加转义实体字符串引号。转载 2024-06-14 16:53:38 · 325 阅读 · 0 评论 -
mybatis 跨库查询 mysql
跨库,表关联的查询,实现起来很简单:selecta.uidfrom只要在表的前边加上库名即可。原创 2024-05-11 11:00:05 · 782 阅读 · 0 评论 -
Mybatis 批量插入数据 SQL
上面代码中在 SQL 语句的最外层使用了 for 循环,好处是将 List 类型的集合传递来写入数据时可以有的是新增有的是修改,例如3行数据,第一三行由于主键字段对应属性 sid 被设置为 NULL ,会向数据库中新增行,第二行数据设置了 sid ,并且该值在数据库中有对应行,那么会修改数据库中的该行上的数据。通过在 java 中测试,发现上面的语句新增一行成功后会返回1,修改成功后会返回2(这里有疑惑,如果清楚原因的麻烦跟帖科普下)。这种写法适合插入数据的项不变,原创 2024-02-02 11:11:45 · 2907 阅读 · 0 评论 -
mybatis&Mysql分页查询,以及SQL_CALC_FOUND_ROWS与count(*) 性能对比
温故而知新,这里记录一下。原创 2024-01-11 17:48:18 · 1419 阅读 · 0 评论 -
Redis实战之Redisson使用技巧详解
什么是 Redisson?来自于官网上的描述内容如下!Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了许多分布式服务,例如分布式锁、分布式对象、分布式集合、分布式远程服务、分布式调度任务服务等等。相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端,Redisson 提供的功能更加高端和抽象,逼格高!转载 2023-12-07 19:13:39 · 1950 阅读 · 1 评论 -
WebMvcConfigurer配置详解
WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-based方式的spring mvc配置,需要创建一个类并实现接口;在Spring Boot 1.5版本都是靠重写的方法来添加自定义拦截器,消息转换器等。原创 2023-11-14 10:17:42 · 2027 阅读 · 0 评论 -
SpringBoot项目中ModelMapper配置以及使用
项目中对象与对象赋值转换使用的频率非常的高,比如数据库表实体对象(Entity)与业务类对象(Model)之间的赋值传递,或者模型对象(Model)与视图对象(ViewModel)之间的赋值传递。如果我们一个一个字段的赋值,将是非常繁琐并且毫无价值的重复工作,此时虽然我们可以自己通过反射提取个公共的方法来处理,但是更高效的方式是查看是否有第三方已经提供了比较成熟稳定的工具包,避免重复造轮子的工作。原创 2023-11-13 16:06:32 · 1003 阅读 · 0 评论 -
Spring Data JPA方法名命名规则
简单条件查询:查询某一个实体类或者集合。按照Spring Data的规范的规定,查询方法以find | read | get开头(比如 find、findBy、read、readBy、get、getBy),涉及查询条件时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母大写。框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。原创 2023-11-13 11:29:29 · 1808 阅读 · 0 评论 -
Shiro的基础知识、回顾URL拦截
本文主要讲解的知识点有以下:权限管理的基础知识模型粗粒度和细粒度的概念回顾URL拦截的实现Shiro的介绍与简单入门只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。用户认证用户授权shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。转载 2023-10-13 15:59:56 · 457 阅读 · 0 评论 -
SpringBoot, EventListener事件监听的使用
1、事件(event)可以封装和传递监听器中要处理的参数,如对象或字符串,并作为监听器中监听的目标。2、监听器(listener)具体根据事件发生的业务处理模块,这里可以接收处理事件中封装的对象或字符串。3、事件发布者(publisher)事件发生的触发者。原创 2023-10-07 10:47:34 · 303 阅读 · 0 评论 -
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
大家在连接mysql的时候,启动项目,会警告你推荐使用com.mysql.cj.jdbc.Driver 而不是com.mysql.jdbc.Driver。当5之后的版本选择的时候,会有警告提示,替换为查看源码可知,老版本的Driver继承了新版本的Driver那么这两者到底有什么区别呢。转载 2023-07-27 14:51:29 · 891 阅读 · 0 评论 -
Spring Boot 2.7.8以后mysql-connector-java与mysql-connector-j
如果升级到Spring Boot 2.7.8,可以看到因为找不到mysql-connector-java依赖而出现错误。原创 2023-07-27 14:23:42 · 12159 阅读 · 1 评论 -
Java获取 User-Agent介绍
根据获取访问设备信息。Http 协议请求头中的User-Agent属性会将客户端设备的信息传递给服务器,这些信息包括客户端操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。原创 2023-06-08 09:41:26 · 2546 阅读 · 0 评论 -
Spring AOP在项目中的典型应用场景
Spring AOP在项目中的典型应用场景_spring aop应用场景__江南一点雨的博客-CSDN博客原创 2023-06-05 13:38:33 · 244 阅读 · 0 评论 -
AbandonedConnectionCleanupThread$ConnectionFinalizerPhantomReference内存溢出
有些读者看到这里知道 mysql-connector-java 生成的虚引用对 GC 有一些副作用,但是还不太了解虚引用到底是什么,有什么作用,这里我们在虚引用上做一点点拓展。Java 虚引用(Phantom Reference)是Java中一种特殊的引用类型,它是最弱的一种引用。与其他引用不同,虚引用并不会影响对象的生命周期,也不会影响对象的垃圾回收。虚引用主要用于在对象被回收时收到系统通知,以便在回收时执行一些必要的清理工作。上述虚引用的定义还是比较难理解,我们用代码来辅助理解://虚引用队列。原创 2023-05-29 14:09:47 · 5656 阅读 · 1 评论 -
为什么JDK中String类的indexof不使用KMP或者Boyer-Moore等时间复杂度低的算法编辑器
indexOf原创 2023-01-18 14:37:25 · 2043 阅读 · 0 评论 -
提高kafka消费速度之从源码去了解Spring-kafka的concurrency参数
kafka转载 2023-01-13 16:38:40 · 6541 阅读 · 3 评论 -
JAVA踩坑之Arrays.asList().contains()
contains原创 2023-01-09 17:33:19 · 2536 阅读 · 1 评论 -
spring-data-redis中同时使用set()、get()、increment()的问题
redis原创 2022-12-28 17:14:29 · 1668 阅读 · 0 评论 -
@KafkaListener如何动态指定多个topic,特殊topic解析处理
KafkaListener,多个topic原创 2022-08-17 18:15:46 · 2892 阅读 · 0 评论 -
Spring相关术语
Spring&SpringBoot 相关缩写说明原创 2022-07-07 17:01:12 · 417 阅读 · 0 评论 -
guava多线程,futurecallback线程调用不平均
guava的多个futurecallback线程调用不平均原创 2022-06-13 17:56:22 · 920 阅读 · 1 评论 -
springboot+mybatis, SqlSessionTemplate线程安全
springboot+mybatis, SqlSessionTemplate线程安全原创 2022-06-01 09:17:29 · 3790 阅读 · 3 评论 -
Springboot, link failure、SSL peer shut down incorrectly、Unsupported record version Unknown-0.0问题
1.错误现象最近升级Springboot 2.6.2到Springboot 2.6.7,DB配置:spring.datasource.url=jdbc:mysql://IP:3306/testmysql?useUnicode=true&characterEncoding=UTF8&allowMultiQueries=true&useSSL=true发现下面错误:com.mysql.cj.jdbc.exceptions.CommunicationsEx..原创 2022-04-29 10:02:16 · 4430 阅读 · 0 评论 -
cookie setSecure详解
最近项目用检测漏洞在cas中或其他web开发中,会碰到安全cookie的概念,因为CAS中TGT是存放在安全cookie中的。下面是安全cookie 的理解: Set-Cookie 的 secure 属性就是处理这方面的情况用的,它表示创建的 cookie 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以绝对不会被窃听到。 在setSecure(true); 的情况下,只有https才传递到服务器端。http是不会传...原创 2022-03-31 16:09:37 · 8020 阅读 · 1 评论 -
Mybatis运行常见错误汇总
1. 找不到类中的 get 属性 1 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userName' in 'class com.q18idc.Xxxx' 检查取值表达式中的属性名是否写错了,例如:{转载 2022-03-29 15:15:56 · 3333 阅读 · 0 评论 -
Tomcat中LegacyCookieProcessor与Rfc6265CookieProcessor
最近升级某个依赖库,遇到cookie解析失败的问题,网上查了查资料,在这里学习记录一下。背景 近日有用户反馈tomcat升级后应用出现了一些问题,出现问题的这段时间内,tomcat从8.0.47升级到了8.5.43。 问题主要分为两类:cookie写入过程中,domain如果以.开头则无法写入,比如.xx.com写入会报错,而写入xx.com则没问题。 cookie读取后应用无法解析,写入cookie的值采用的是Base64算法。定位 经过一番搜索,发现tomca...原创 2022-02-17 14:43:58 · 3774 阅读 · 0 评论 -
Lombok详解
网上看到这篇文章,这里记录学习一下。用????Lombok,让 Java 更简洁 - ENCODE the WORLD零、 历史 一个标准的 Java bean。一个典型的 Java bean 一般具有几个属性。每个属性具有一个accessor和mutator(getter和setter)。通常还会有一个toString()方法、一个equals()方法和一个hashCode()方法。初看上去,其中可预见的冗余就已经非常多了。如果每个属性都具有一个 getter 和...转载 2022-02-15 17:16:19 · 13690 阅读 · 1 评论 -
Redis:缓存穿透/缓存击穿/缓存雪崩,解决方案
这篇文章来自于网络,这里直接转载记录一下,供大家学习参考。1、前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题。 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度问题有严重的性能弊端,详细的磁盘读写原理请参考这一片[]。 在这一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读...原创 2021-11-24 11:03:34 · 2156 阅读 · 0 评论 -
Spring Boot 2.5.6 发布,缺陷修复,依赖升级
10月21日,Spring官方发布了Spring Boot 2.5.6版本,此版本包括 43 个错误修复、文档改进和依赖项升级。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> <r原创 2021-11-22 16:08:46 · 2274 阅读 · 0 评论 -
spring-boot 2.5.6 问题:WARN: This connection is using TLSv1.1
WARN: This connection is using TLSv1.1 which is now deprecated and will be removed in a future release of Connector/J.问题描述:在测试服务器上,java程序启动的时候,日志里面出现javax.net.ssl.SSLHandshakeException,这个错误目前还没有发现是什么原因导致的,大概率是有人升级了mysql或者jdk的版本。 在查找多方资料发现,是jdk8和mysql原创 2021-11-16 17:08:29 · 6792 阅读 · 0 评论 -
指定SpringBoot内嵌Tomcat的版本,修复(CVE-2021-42340)漏洞
1、查看当前使用的Tomcat版本号1.1、Maven Repository中查看比如我们需要查Spring Boot 2.3.12.RELEASE 的内嵌Tomcat版本, 可以打开链接:https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent/2.3.12.RELEASE如下图, 红框标记的就是tomcat的版本。1.2、查看depen...原创 2021-11-15 18:24:30 · 12118 阅读 · 2 评论 -
Java正确获取星期Calendar.DAY_OF_WEEK
正确获取星期几(Calendar.DAY_OF_WEEK)Calendar now = Calendar.getInstance();//一周第一天是否为星期天boolean isFirstSunday = (now.getFirstDayOfWeek() == Calendar.SUNDAY);//获取周几int weekDay = now.get(Calendar.DAY_OF_WEEK);//若一周第一天为星期天,则-1if(isFirstSunday){ weekDay转载 2021-11-09 16:54:23 · 11178 阅读 · 0 评论 -
springboot之线程池ThreadPoolTaskExecutor以及@Async异步注解
前言 最近项目当中有需求,要进行异步的处理,需要使用到线程池,很久没有使用到线程池了,一来是做JAVAweb开发基本上很少用到异步处理,二来是发现有的老项目里面,线程和线程池的使用比较混乱,有好几个线程池,有的线程池是通过spring管理的,有的是自己创建的,然后有的地方是直接创建的线程。所以这里记录下自己在项目当中如何优雅的使用线程池!避免项目当中到处都是线程池!!!SpringBoot整合ThreadPoolTaskExecutor线程池 ThreadPoolExecut...转载 2021-09-26 16:12:27 · 5332 阅读 · 0 评论 -
Spring Boot 注入接口 @Autowired interface
前言:针对接口注入这一点@Service @Component @Configuration的注入方式相同1.若接口只有唯一一个实现类的注入方式先创建一个接口VideoServicepublic interface VideoService { String getVideoName();}创建一个接口的实现类VideoServiceImpl,使用@Service注解@Servicepublic class VideoServiceImplA implements Vid转载 2021-08-31 09:52:23 · 4496 阅读 · 0 评论 -
spring boot实现超轻量级网关(反向代理、转发)
在我们的rest服务中,需要暴露一个中间件的接口给用户,但是需要经过rest服务的认证,这是典型的网关使用场景。可以引入网关组件来搞定,但是引入zuul等中间件会增加系统复杂性,这里实现一个超轻量级的网关,只实现请求转发,认证等由rest服务的spring security来搞定。 如何进行请求转发呢? 熟悉网络请求的同学应该很清楚,请求无非就是请求方式、HTTP header,以及请求body,我们将这些信息取出来,透传给转发的url即可。举例:/graphdb/**...转载 2021-08-30 16:55:56 · 1737 阅读 · 0 评论 -
[springboot, lettuce] io.lettuce.core.RedisCommandTimeoutException: Command timed out after
环境上用的springboot2.3.1, 项目上线已经两年,今天第一次遇到这个lettuce的Redis “Command timed out”,于是网上查了查资料,找一下原因和解决方法。列举一下处理方式1、修改spring.redis.timeout和cluster.refresh 当然这个是第一步,可以进行观察是否有作用#Spring Boot 从 2.0版本开始,将默认的Redis客户端Jedis替换为Lettucespring.redis.lettuc...原创 2021-07-20 15:49:20 · 21647 阅读 · 0 评论 -
Java 去掉jsonString内部key和value间的空格
1、org.codehaus.jackson的JsonNode处理public String replaceJsonBlank() throws JsonParseException, IOException { String jsonString = "{ \"k1\": \"v1\", \"k2\":\"v2\"}"; ObjectMapper mapper = new ObjectMapper(); JsonNode actualObj = map...原创 2021-07-06 17:12:33 · 3203 阅读 · 0 评论