Java
文章平均质量分 56
韩师学子--小倪
不要告诉别人你的计划,只需要让别人知道结果就行了。
展开
-
keyStore类处理
keyStore对象返回公钥证书的原始内容。加载公钥证书, 成为keyStore。原创 2024-03-27 16:56:22 · 228 阅读 · 0 评论 -
按字节长度截取字符串
按字节长度截取字符串,要求不能出现中文乱码,即尾部不能拼成完整多字节字符的字节会进行舍弃。原创 2023-12-19 09:26:47 · 644 阅读 · 0 评论 -
java堆栈、gc、dump文件在线分析
HeapHero是一款简单的,易用的内存分析工具,进行dump文件分析。jstack文件在线分析。原创 2023-01-07 14:41:12 · 1349 阅读 · 0 评论 -
Java发送post请求,使用multipart/form-data方式传递MultipartFile参数,实现服务间文件的传递
Java发送post请求,使用multipart/form-data方式传递MultipartFile参数,实现服务间文件的传递转载 2022-11-08 18:13:41 · 12295 阅读 · 2 评论 -
JAXB--java对象与xml之间的转换
JAXB--java对象与xml之间的转换原创 2022-06-05 19:58:14 · 1332 阅读 · 1 评论 -
修改源码实践
背景项目里会引入很多依赖包,有的依赖包中的方法高度封装且私有不对外公开,当依赖包中的方法无法满足我们的需求时就需要修改源码。案例依赖包里JobExecutor只有一个初始化方法start(),该初始化方法执行两步操作:1、runFirst()2、 runSecond()public class JobExecutor { public void start() { runFirst(this.access); runSecond();..原创 2022-04-05 12:20:47 · 903 阅读 · 0 评论 -
JDK8 Date--Localdate,Localdatetime,Localtime
简介localdate是针对于年月日的,localtime是针对于时分秒,localdatetime是针对于年月日时分秒JDK8 Date优势1、不变性:新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处。2、关注点分离:新的API将人可读的日期时间和机器时间(unix timestamp)明确分离,它为日期(Date)、时间(Time)、日期时间(DateTime)、时间戳(unix timestamp)以及时区定义了不同的类。3、清晰:在所有的类中,方法都被明确定原创 2022-04-01 15:49:07 · 1194 阅读 · 0 评论 -
排查显示调用System.gc()方法的调用栈
背景项目里查看gc日志发现是由于显式调用了System.gc()导致的full gc, 需要排查该方法的调用栈。Arthas的下载与使用可以看之前写的文档:利用Arthas进行简单的故障注入_韩师学子--小倪的博客-CSDN博客执行第一步,由于java.lang.System是JDK自带的类,Arthas默认关闭了对JDK类的自带类的增强,需要通过options命令打开options unsafe true第二步,使用stack命令,观察谁调用了java.lang.Syst.原创 2022-03-29 23:55:40 · 665 阅读 · 0 评论 -
排查线程卡死问题
问题现象handleComplaintStateTask定时任务每十分钟执行一次,某天xxljob一直发出该任务执行超时的邮件报警。查看项目运行日志,没有匹配到对应任务的运行情况。获取线程堆栈信息内容jstack是java虚拟机自带的一种堆栈跟踪工具。#-l 长列表,打印关于锁的附加信息 jstack -l 进程pid > jstack.txt 将jstack.txt文件上传至线程分析在线工具中进行分析【网址:fastthread.io】,如下图:在jsta..原创 2022-01-16 17:14:06 · 3746 阅读 · 0 评论 -
spring构造bean时运行初始化方法相关
一、可以把相关代码放在static块中二、@PostConstruct使用,如下运行时不被调用的原因1、配置文件没有配置 <context:annotation-config/>2、如果在配置文件中配置使用,延迟加载的话,被@Service等注解的类,需要在注入使用的时候,才会被初始化。如图:三、xml配置文件直接初始化bean,特别注意:lazy-init="false"<bean id="testRedisService" class="service原创 2021-11-04 21:42:38 · 211 阅读 · 0 评论 -
修改依赖jar中的代码
方法一、直接复制一份想要扩展的类,在项目中创建同包同名的类。(根据加载顺序可知,如果我们工程中有自己的和jar中包名类名一样的文件,加载时会默认加载我们自己写的文件,如果我们没写才会去jar包中找。)方法二、AOP方法三、代理模式 / 装饰模式方法四、继承你想要扩展的类,重写想要扩展的方法方法五、直接修改这个类的字节码,然后重新打包成jar文件修改jar包中的源码,将jar包反编译重新生成一个jar包...原创 2021-09-11 11:43:33 · 971 阅读 · 0 评论 -
不同包中含有全限定类名相同的类时的加载顺序
问题如果有两个不同的jar包中含有两个全限定类名完全相同的类,那么如果我们程序中使用到了这个类,会加载哪一个呢?jvm加载1、优先加载classes目录下的class文件2、然后再加载lib下的jar包测试1、在idea单元测试里, jvm加载类时是按pom.xml添加依赖的顺序添加的,项目.iml文件定义了各jar包的加载顺序,测试时没问题。2、部署到服务器时,tomcat是按包的文件名排序来添加的,控制不了加载的顺序解决办法1、maven打成的jar包名称是以artifa原创 2021-08-27 23:29:51 · 1689 阅读 · 0 评论 -
Java 读取resources下的资源文件
Web项目中应该经常有这样的需求,在maven项目的resources目录下放一些文件。比如一些配置文件,资源文件等。文件的读取方式有好几种方式,本文会对常用的读取方式做一个总结,并说明一下应该注意的地方。打包项目为wap时,pom.xml需要进行配置:<resources> <resource> <directory>${project.basedir}/src/main/resources/cert</directory&g原创 2021-08-12 13:39:09 · 4911 阅读 · 0 评论 -
Mockito详解
一、介绍mockito是众多mock技术中的佼佼者,功能强大,api简洁。相关文档地址:【官网地址】 【文档地址】 【中文文档】二、api(一)Mockitoorg.mockito.Mockito是mockito提供的核心api,提供了大量的静态方法,用于帮助我们来mock对象,验证行为等等,然后需要注意的是,很多方法都被封装在了MockitoCore类里面,下面对一些常用的方法做一些介绍。mock:构建一个我们需要的对象;可以mock具体的对象,也可以mock接口。spy:构建原创 2021-04-10 13:13:52 · 22471 阅读 · 0 评论 -
利用Arthas进行简单的故障注入
目录一、概念二、整体逻辑三、相关文档四、故障注入实践一、概念Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。二、整体逻辑Arthas的整体逻辑也是在 Java 的Instrumentation基础上来实现,所有在加载的类会通过Agent的加载, 通过addTransforme...原创 2021-03-17 19:13:22 · 2018 阅读 · 0 评论 -
java语言的优缺点
java语言的优缺点转载:https://blog.csdn.net/bingshanyijiao_fkx/article/details/51613954角度一:优点:简单、安全、稳定、跨平台缺点:需要运行环境、不适合开发桌面应用程序应用:BS结构的ERP系统、金融系统、电子商务系统、网站等几乎所...原创 2018-09-14 13:55:56 · 851 阅读 · 0 评论 -
标记字节顺序符BOM
背景在Windows下用文本编辑器创建的文本文件,如果选择以UTF-8等Unicode格式保存,会在文件头(第一个字符)加入一个BOM标识。这个标识在Java读取文件的时候,不会被去掉,而且String.trim()也无法删除。如果用readLine()读取第一行存进String里面,这个String的length会比看到的大1,而且第一个字符就是这个BOM。什么是BOM?BOM = Byte Order MarkBOM是Unicode规范中推荐的标记字节顺序的方法。比如说对于UTF-16,原创 2020-11-11 08:50:20 · 387 阅读 · 0 评论 -
instanceof, isinstance,isAssignableFrom的区别
instanceof, isinstance,isAssignableFrom的区别instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。形象地:自身实例或子类实例 instanceof 自身类 返回trueString s=new String("javaisland");System.out.println(s instanceof String); //true...原创 2020-10-22 11:07:36 · 160 阅读 · 0 评论 -
java开源验证框架OVAL帮助文档
OVAL验证框架帮助文档java开源验证框架oval,功能非常强大,使用简单;1.注解说明1.1、@Assert检查指定语言的表达式返回值是否为true;这里表达式是groovy。 参数 说明 expr 表达式 lang 指明脚本语言 errorCode 错误编码(共有属性) (可以修改成自己的异常编码串)...原创 2020-10-18 10:22:28 · 901 阅读 · 0 评论 -
MessageFormat.format()用法
MessageFormat.format()用法MessageFormat模式FormatElement{ ArgumentIndex }:是从0开始的入参位置索引{ ArgumentIndex , FormatType }{ ArgumentIndex , FormatType , FormatStyle }FormatType:指定使用不同的Format子类对入参进行格式化处理。值范围如下:number:调用NumberFormat进行格式化date:调用DateF.原创 2020-08-06 19:10:26 · 9898 阅读 · 0 评论 -
RandomStringUtils工具类
RandomStringUtils工具类[b]//产生5位长度的随机字符串,中文环境下是乱码[/b]RandomStringUtils.random(5);[b]//使用指定的字符生成5位长度的随机字符串[/b]RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'});[b]//生成指定长度的字母和数字的随机组合字符串[/b]RandomStringUti...原创 2020-07-16 14:17:24 · 211 阅读 · 0 评论 -
Base64算法、Base64Encode、UrlEcode编码及应用
Base64算法、Base64Encode、UrlEcode编码及应用目录Base64算法的由来Base64算法的原理Base64编码与urlEncode编码的区别Base64算法的由来Base64算法最早应用于解决电子邮件传输问题,在早期,电子邮件只支持ASCII码字符。如果要传输一封带有非ASCII码字符的电子邮件,当它经过部分网关时就可能出现问题,这个网...转载 2020-04-28 17:04:04 · 1281 阅读 · 0 评论 -
前端浏览器 UA 客户端信息识别模块 -- uadetector
前端浏览器 UA 客户端信息识别模块 -- uadetectormaven依赖如下:<dependency> <groupId>net.sf.uadetector</groupId> <artifactId>uadetector-resources</artifact...原创 2020-04-20 14:35:52 · 980 阅读 · 0 评论 -
POI API讲解
POI API讲解转载:https://blog.csdn.net/luo4105/article/details/76612376excel的操作类POI是java操作office文件的函数库,下面是POI操作excel的基本类。POI操作excel的主要类和方法图POI操作Excel主要...原创 2019-05-01 22:25:22 · 1629 阅读 · 0 评论 -
自增序列
自增序列需求,并发情况下1 、System.currentTimeMillis(); 获取时间戳, 到秒是倒数第四位。2、取后四位,然后同秒就按之前取的seq递增,不同秒就按新取的缺点:可能会有情况,同秒的请求数超过三位数,递增的话也会超过三位数,有点懵了。比如 2200, 然后递增到3050以...原创 2019-07-13 16:54:53 · 2078 阅读 · 4 评论 -
javaweb文件上传路径在windows和linux上的兼容性问题
javaweb文件上传路径在windows和linux上的兼容性问题转载:https://blog.csdn.net/challenge_me/article/details/829755311、根据系统的不同获取文件路径的分隔符System.getProperty("file.separator");2、Java常见的系统路径与获取方法// 用户主...转载 2019-07-11 20:07:56 · 1051 阅读 · 0 评论 -
Base64Utils 和 DigestUtils的调用
Base64Utils 和 DigestUtils的调用import org.springframework.util.Base64Utils;import org.springframework.util.DigestUtils;//MD5加密DigestUtils.md5DigestAsHex((内容+盐值).getBytes())/...原创 2019-08-29 17:16:20 · 836 阅读 · 0 评论 -
为什么if中null要写在前面?
为什么if中null要写在前面? 转载:https://blog.csdn.net/u012410733/article/details/51584086 在java里面,它们是一样的。但是为什么把name==null写成是null==name,具体点来说,是在C语言里面引申出来的。 在C语言里面,为了防止少敲一个...转载 2019-02-23 10:31:15 · 1635 阅读 · 0 评论 -
Java中BasicNameValuePair的使用
Java中BasicNameValuePair的使用转载:https://blog.csdn.net/zdb292034/article/details/806637921.BasicNameValuePair通常是用来封装post请求中的参数名称和值;public String httpPost(Map<String,...转载 2019-04-05 17:14:55 · 7862 阅读 · 0 评论 -
java中异常抛出后代码还会继续执行吗
java中异常抛出后代码还会继续执行吗转载:https://www.cnblogs.com/wangyingli/p/5912269.html今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢?public void add(int index, E element){ if(...转载 2019-03-25 21:52:46 · 536 阅读 · 0 评论 -
Linux下Jdk1.8的安装与环境变量配置教程(添加完整配置)
Linux下Jdk1.8的安装与环境变量配置教程(添加完整配置) 转载:https://blog.csdn.net/hello_world_qwp/article/details/78861247转载 2018-12-18 21:08:04 · 259 阅读 · 0 评论 -
StringUtils工具类的isBlank()方法使用说明
StringUtils工具类的isBlank()方法使用说明 在校验一个String类型的变量是否为空时,通常存在3中情况是否为 null 是否为 "" 是否为空字符串(引号中间有空格) 如: " "。StringUtils的isBlank()方法可以一次性校验这三种情况,返回值都是truemaven的地址包 <de...原创 2018-09-24 14:22:54 · 9280 阅读 · 0 评论 -
java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一
java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一转载:https://blog.csdn.net/s10461/article/details/53941091 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java 泛型详解、Java中的泛型方法、 java泛型详解1....转载 2018-09-24 13:17:32 · 354 阅读 · 0 评论 -
Java:对double值进行四舍五入,保留两位小数的几种方法
Java:对double值进行四舍五入,保留两位小数的几种方法 转载:https://blog.csdn.net/xiaobing_122613/article/details/710772251. 功能将程序中的double值精确到小数点后两位。可以四舍五入,也可以直接截断。比如:输入12345.6789,输出可以是12345.68也可以是12345.67。至...转载 2018-09-07 10:04:41 · 832 阅读 · 0 评论 -
在java中如何跳出当前的多重嵌套循环?
在java中如何跳出当前的多重嵌套循环?在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如:ok: for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { System.out.prin...原创 2018-07-07 12:15:12 · 276 阅读 · 0 评论 -
启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法
我安装的是Myeclipse 10.7.1。装上好久没用,今天启动突然报错:Failed to create the Java Virtual Machine。检查Myeclipse安装好使用时好的啊,近期也没用,可能是近期升级了本地单独安装的jre版本导致的吧(Myeclipse使用自己的jre的)。整理了如下2个解决办法,可以选择一个使用,我选择的是第2个。经测试都ok。方法一:找到Myecl...转载 2017-11-16 17:05:01 · 1030 阅读 · 0 评论 -
The method of type must override a superclass method解决方式
The method of type must override a superclass method解决方式在jdk1.5下要使用@Override 这个annotation 必须保证 被标注方法来源于class 而不是interface。报错原因:jdk版本过低。解决方法:第一种:直接删掉override注解。第二种:maven的pom文件中加入如下配置:<plugin> ...原创 2018-03-17 20:07:16 · 6792 阅读 · 0 评论 -
java关于日历的运算
蔡勒公式蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。 W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1、符号的意义:w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六c:世纪减1(年份前两位数原创 2017-12-25 01:06:52 · 739 阅读 · 0 评论 -
java的日期转换
在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类。这个类最主要的作用就是获取当前时间,我们来看下 Date 类的使用:使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下:其中, Wed 代表 Wednesday (星期三), Jun原创 2017-07-08 16:35:11 · 1191 阅读 · 0 评论 -
java的文件xml读取,4种方式的不同
原创 2017-07-11 22:46:40 · 250 阅读 · 0 评论