
Java
文章平均质量分 83
Java
zzhongcy
因为站在了巨人的肩上,所以我看得更远。
当你发现自己的才华撑不起野心时,就请安静下来学习吧
展开
-
Quartz 调度框架介绍
Quartz转载 2024-08-06 17:31:17 · 388 阅读 · 0 评论 -
AES解密报错Invalid AES key length: xx bytes与Given final block not properly padded的解决方法
最近和其它系统联调接口,用到了Java的AES加解密。由其它系统AES加密,本人的系统获取到加密报文后,AES解密,获取到内容。本来是比较简单的,可是其它系统只提供了秘钥,没有提供解密方法,解密方法需要我们自己写……正常应该是加密方提供解密方法的吧,我觉得……还好最后都解决了,在此记录下。转载 2024-07-25 18:03:27 · 2227 阅读 · 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 · 588 阅读 · 0 评论 -
mybatis 跨库查询 mysql
跨库,表关联的查询,实现起来很简单:selecta.uidfrom只要在表的前边加上库名即可。原创 2024-05-11 11:00:05 · 1173 阅读 · 0 评论 -
Redis实战之Redisson使用技巧详解
什么是 Redisson?来自于官网上的描述内容如下!Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了许多分布式服务,例如分布式锁、分布式对象、分布式集合、分布式远程服务、分布式调度任务服务等等。相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端,Redisson 提供的功能更加高端和抽象,逼格高!转载 2023-12-07 19:13:39 · 2305 阅读 · 1 评论 -
Shiro的基础知识、回顾URL拦截
本文主要讲解的知识点有以下:权限管理的基础知识模型粗粒度和细粒度的概念回顾URL拦截的实现Shiro的介绍与简单入门只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。用户认证用户授权shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。转载 2023-10-13 15:59:56 · 550 阅读 · 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 · 1354 阅读 · 0 评论 -
提高kafka消费速度之从源码去了解Spring-kafka的concurrency参数
kafka转载 2023-01-13 16:38:40 · 6864 阅读 · 3 评论 -
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 · 3436 阅读 · 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 · 13862 阅读 · 1 评论 -
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 · 12341 阅读 · 0 评论 -
springboot之线程池ThreadPoolTaskExecutor以及@Async异步注解
前言 最近项目当中有需求,要进行异步的处理,需要使用到线程池,很久没有使用到线程池了,一来是做JAVAweb开发基本上很少用到异步处理,二来是发现有的老项目里面,线程和线程池的使用比较混乱,有好几个线程池,有的线程池是通过spring管理的,有的是自己创建的,然后有的地方是直接创建的线程。所以这里记录下自己在项目当中如何优雅的使用线程池!避免项目当中到处都是线程池!!!SpringBoot整合ThreadPoolTaskExecutor线程池 ThreadPoolExecut...转载 2021-09-26 16:12:27 · 5793 阅读 · 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 · 4759 阅读 · 0 评论 -
spring boot实现超轻量级网关(反向代理、转发)
在我们的rest服务中,需要暴露一个中间件的接口给用户,但是需要经过rest服务的认证,这是典型的网关使用场景。可以引入网关组件来搞定,但是引入zuul等中间件会增加系统复杂性,这里实现一个超轻量级的网关,只实现请求转发,认证等由rest服务的spring security来搞定。 如何进行请求转发呢? 熟悉网络请求的同学应该很清楚,请求无非就是请求方式、HTTP header,以及请求body,我们将这些信息取出来,透传给转发的url即可。举例:/graphdb/**...转载 2021-08-30 16:55:56 · 1891 阅读 · 0 评论 -
SpringBoot集成JWT实现token验证,token注销
JWT官网: [https://jwt.io/][https_jwt.io]JWT(Java版)的github地址:[https://github.com/jwtk/jjwt][https_github.com_jwtk_jjwt]什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).**定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。**因为数字签名的存在,这些信息是可信的转载 2021-06-01 16:09:23 · 3157 阅读 · 0 评论 -
java SprintBoot Opencsv处理csv文件, csv文件读取时第一列无法读取到的问题
网上发现这篇文章,这里转载给发家分享一下。原文:https://www.jianshu.com/p/6414185b2f011. 什么叫做CSVComma-Separated Value ([卡门 赛婆乱提的]逗号分隔)(CSV),因分隔符没有严格的要求,可以使用逗号,也可以使用其他字符(如制表符\t,分号等),所以CSV也被称为逗号分隔或者其他字符分隔值。csv文件是使用纯文本来存储表格数据(只能存储文本,不能存储二进制)。2. CSV解析的API方法2.1. Maven依赖&.转载 2021-03-19 11:29:16 · 6086 阅读 · 0 评论 -
SpringBoot2.3中如何定制错误页面的方法
网上发现这篇文章,这里转载给发家分享一下。原文:https://m.yisu.com/zixun/310510.html这篇文章主要介绍SpringBoot2.3中如何定制错误页面的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一. 问题背景后台: SpringBoot 2.3.1(官方2.3版本修改了很多,抛弃了很多以前能用的方法)前端: Layui(前端用哪个框架问题不大)技术: SpringBoot+Thymeleaf+Layui情况:我想将La.转载 2021-03-19 11:22:11 · 3229 阅读 · 0 评论 -
Spring RestTemplate 调用带请求体的 Delete 方法(Delete With Request Body)
前言 Spring 框架的RestTemplate 类定义了一些我们在通过 java 代码调用 Rest 服务时经常需要用到的方法,使得我们通过 java 调用 rest 服务时更加方便、简单。但是 RestTemplate 的 delete 方法并不支持传入请求体(Request Body)。经测试,通过调用RestTemplate 类的exchange(String url, HttpMethod method, HttpEntity<?> requestEntity,...转载 2021-03-18 10:29:54 · 2772 阅读 · 0 评论 -
SpringWebflux与SpringMVC性能对比及适用场景分析
今天网上看到这篇文章,很欣赏作者进行性能对比时的分析思路,这里转载分享一下前言最近在做一个开源项目OpenQueue,这是一个IO密集型应用,需要API网关级别的并发性能。后端采用SpringBoot+Redis开发,原型开发完成后做了并发性能测试,和理想中的结果还有差距,因此开始寻找提升并发性能的途径。后来听说了WebFlux这样一种在Spring5中引进的非阻塞编程模型,而与之相对应的是SpringBoot默认的SpringMVC这样一种阻塞式模型。一看到非阻塞就想到了高性能,肯定是ngi...转载 2021-02-26 17:26:12 · 6155 阅读 · 1 评论 -
JVM 内存分析工具 MAT 的深度讲解与实践
常见内存分析工具对比下图中 Y 表示支持,N 表示不支持,时间截至发稿前。产品功能 MAT JProfiler Visual VM jhat jmap hprof 对象关联分析、深浅堆、GC ROOT、内存泄漏检测、线程分析、提供自定义程序扩展扩展 Y N N N N N 离线全局分析 Y N Y Y N N 内存实时分配情况 N Y Y Y Y...转载 2020-12-30 14:01:11 · 697 阅读 · 0 评论 -
Spring Boot使用ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal
简介首先说一下这三者之间的区别:ThreadLocal:是JDK rt.jar包中的类,包为java.lang。它的作用是给线程提供一个本地变量,当线程消失的时候,所有的本地示例都会被回收。 InheritableThreadLocal:同样是JDK rt.jar包中的类,包为java.lang。它是ThreadLocal的升级类,ThreadLocal在父子线程之间存在传递值的问题。在多线程和高并发流行的时代,ThreadLocal已经不能胜任线程的本地变量这个工作了。 Transmit...转载 2020-12-29 11:14:37 · 3069 阅读 · 0 评论 -
转载:Spring Boot引起的“堆外内存泄漏”排查及经验总结
发现一篇排查sprintboot内存泄漏的文章,发现作者分析很到位,这里转载学习一下。Native Memory Tracking (NMT)首先,我们先了解一下Native Memory Tracking (NMT)。Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能。我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据。NMT介绍工欲善其事必先利其器,我们先把相关需要的配置和工具介绍清楚,再通过例子来.转载 2020-09-10 14:57:22 · 1589 阅读 · 0 评论 -
mybatis foreach Collection的List、Array、Map
mybatis的foreach官方文档解释:对一个集合进行遍历,通常是在构建IN条件语句的时候使用。例如<select id="selectPostIn" resultType="domain.blog.Post"> SELECT * FROM POST P WHERE ID in <foreach item="item" index="index" coll...转载 2019-10-21 10:50:44 · 6834 阅读 · 0 评论 -
UUID详解
想必大家都用过UUID,但是UUID也有可能重复,在某些情况下我们需要注意。最近在网上看了几篇关于说明UUID的文章,这里转载记录一下。1 定义UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,目的是让分布式系统中的所有元素,都有唯一辨识,而不需要通过中央控制端来做辨识指定。由算法机器生成。为保证UUID的唯一性,规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。UUID转载 2020-05-26 14:14:36 · 3038 阅读 · 0 评论 -
SpringBoot常用注解大全
转自:https://itworld520.com/2020/04/29/springboot%E5%B8%B8%E7%94%A8%E6%B3%A8%E8%A7%A3%E5%A4%A7%E5%85%A8%EF%BC%8C%E6%9C%80%E5%B8%B8%E7%94%A8%E7%9A%84%E9%83%BD%E5%9C%A8%E8%BF%99%E9%87%8C%E4%BA%86%EF%BC%8C...转载 2020-05-07 17:25:01 · 818 阅读 · 0 评论 -
SpringBoot2.x Data JPA 多数据源爬坑
环境版本:SpringBoot 2.1.3JPA 官方文档官方文档5.1.2. Annotation-based ConfigurationThe Spring Data JPA repositories support can be activated not only through an XML namespace but also by using an anno...转载 2020-04-22 15:57:14 · 680 阅读 · 0 评论 -
jackson反序列化泛型类的使用方法
1.先简单看下没有泛型的处理(这里用DataBinding处理,当然网上也有很多其他方法,就不多说啦)首先假设请求返回的json是这样:{"status":0,"message":"miaomiao",data:[{"username":"chino","age":"13"},{"username":"kotori","age":"16"}]}然后是2个类:@Getter @...转载 2020-03-23 16:44:55 · 1395 阅读 · 1 评论 -
几种Java读写数据的流性能对比
最近关乎性能问题,网上查了查资料,这里记录一下。近来,在做服务器后台处理数据的时候,需要用到Java自带的几种流对数据进行读写,初始时没怎么在意,就随便用了一个,结果发现性能上并不尽如人意。于是对几种常用的流做了个小小的性能测试。测试代码如下: 1 public static int FileOutputStreamTime = 0; 2 public s...转载 2020-03-18 16:13:20 · 2038 阅读 · 0 评论 -
Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
其他参考:https://www.jianshu.com/p/f716726ba340https://blog.youkuaiyun.com/ClementAD/article/details/47045673https://www.codercto.com/a/69064.html那在做tomcat bio nio apr 模式之前,先来了解下 java 的一些特性吧。Java B...转载 2020-03-13 18:15:59 · 544 阅读 · 0 评论 -
11种将InputStream转换成String的方法以及性能分析
从其他回答中总结出了11种能将InputStream转换成String的方法(如下),并且对所有方法进行了性能测试(对比结果如下):将InputStream转换成String的方法:1.使用IOUtils.toString(Apache Utils)String result = IOUtils.toString(inputStream, StandardCharse...转载 2020-03-11 17:29:59 · 6176 阅读 · 1 评论 -
Spring中使用@Autowired注解静态变量
问题最近项目小组在重新规划工程的业务缓存,其中涉及到部分代码重构,过程中发现有些工具类中的静态方法需要依赖别的对象实例(该实例已配置在xml成bean,非静态可以用@Autowired加载正常使用),而我们知道,类加载后静态成员是在内存的共享区,静态方法里面的变量必然要使用静态成员变量,这就有了如下代码:@Componentpublic class TestClass { @...转载 2020-03-10 14:20:21 · 4277 阅读 · 2 评论 -
在Maven2中运行单个测试用例并添加JVM参数
1、参考:http://blog.tfd.co.uk/2007/09/05/surefire-unit-test-arguments-in-maven-2/http://maven.apache.org/plugins/maven-surefire-plugin/howto.htmlhttp://mavenize.blogspot.com/2007/07/setting-command...转载 2020-03-09 14:21:59 · 2412 阅读 · 0 评论 -
restTemplate 发文件 java.lang.OutOfMemoryError: Java heap space
使用RestTemplate实现跨服务大文件上传,大概2G@Configurationpublic class RestTemplateConfig { @Bean public RestTemplate restTemplate() { SimpleClientHttpRequestFactory requestFactory = new Simpl...转载 2020-03-09 14:18:14 · 3090 阅读 · 0 评论 -
Spring RestTemplate中GET/ POST/ PUT/ DELETE请求方式
最近要是用RestTemplate做一些操作,这里记录一下。在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了一个很好用的对象,叫做RestTemplate,当时我们只使用了RestTemplate中最简单的一个功能getForEntity发起了一个get请求去调用服务端的数据,同时,我们还通过配置@LoadBalanced注解开启客户端...转载 2020-03-05 14:53:50 · 4104 阅读 · 0 评论 -
Sprintboot 解压Zip文件,ZipEntry的zipEntry.getSize()为-1的问题
简介这几天在做通过流下载zip文件以及上传zip文件不解压读取zip文件内容的功能,在读取zip文件内容的时候遇到了size为-1的情况,在此记录下遇到的情况、解决办法、以及未解决的问题。示例将上传和下载zip文件的功能做成了一个示例,放到了github上,链接:export-import-zip-use-stream,可以尝试运行下。遇到的问题通过流下载zip文件之...转载 2020-03-03 17:02:44 · 5277 阅读 · 0 评论 -
springboot2对应tomcat的AJP漏洞
背景2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的ApacheTomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2020-1938)。攻击者利用该漏洞,可在未授权的情况下远程读取特定目录下的任意文件。目前,漏洞细节尚未公开,厂商已发布新版本完成漏洞修复。具体公告:https://www.cnvd.org.cn/web...转载 2020-03-02 18:17:32 · 4325 阅读 · 0 评论 -
SpringBoot RestTemplate HttpClient : java.net.SocketException: Connection reset
最近遇到一个java.net.SocketException: Connection reset问题,网上查了查资料,这里整理记录一下。1. 问题排查 httpclient : 4.5.5 排查过程 ,也就是上面的问题:一次SocketException:Connection reset 异常排查 主要原因 : 调用 http 请求时发生了 SocketException ...转载 2020-02-28 14:38:52 · 17792 阅读 · 0 评论 -
Sprintboot事务和锁(ReentrantLock VS synchronized)
问题(1)ReentrantLock有哪些优点?(2)ReentrantLock有哪些缺点?(3)ReentrantLock是否可以完全替代synchronized?简介synchronized是Java原生提供的用于在多线程环境中保证同步的关键字,底层是通过修改对象头中的MarkWord来实现的。ReentrantLock是Java语言层面提供的用于在多线程环境中保证同步...转载 2019-12-17 16:36:39 · 3762 阅读 · 2 评论 -
JSON.parseObject解析@JsonProperty注解失败
jackson的maven依赖<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version>&l...转载 2019-10-22 17:10:33 · 5070 阅读 · 0 评论 -
绕过 Java 编译器检查,在任何地方抛出受检异常
1 Java 异常简介 众所周知,Java 的所有异常都派生自 Throwable 类,在继承结构上,从 Throwable 派生出了 Error 和 Exception 两大类。其中,Error 表示系统级别的严重程序错误,一般由 JVM 抛出,我们也不应该捕获这类异常,用户自定义的异常一般都派生自 Exception 类。 从是否被编译器强制检查一点,异常又可...转载 2019-10-15 16:26:59 · 627 阅读 · 0 评论