
java
文章平均质量分 56
码农-文若书生
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用gradle将java项目推送至maven中央仓库(最新版)
maven中央仓库于2024年3月进行改版,下面介绍新的推送方式。原创 2024-10-14 14:34:04 · 1412 阅读 · 0 评论 -
将phantomjs制成docker镜像
几个前的一篇文章中介绍了phantomjs+echarts生成图表图片的一种方式,但其部署复杂,制作为docker镜像运行就方便多了。原创 2024-02-20 20:14:54 · 699 阅读 · 0 评论 -
基于OpenAPI、freemarker动态生成swagger文档
通过观察一个swagger文档的openapi结构,将其中需要动态替换的部分写成变量,生成freemaker的ftl模板。通过点击swagger图示链接可以查看openapi的json结构。修改一个json结构,生成一个ftl模板,将模板放在springboot项目的resources/static/data-service-swagger-templates下面"info": {"title": "通用查询-[${interfaceName}]接口",原创 2023-10-23 21:25:45 · 760 阅读 · 0 评论 -
自定义类加载器
java中自定义类加载器,并将双亲委派改为逆向双亲委派。原创 2023-09-01 15:55:34 · 571 阅读 · 0 评论 -
Java各种方式加解密工具类
JAVA能够实现各种加解密方式,这里对各种加密方式做了封装,包括AES、DES、BCrypt、MD5、SHA、RSA、SM3、SM4、Http Basic等。ASE为对称加密。工具类:单元测试:2.DESDES为对称加密工具类:单元测试:3、BCryptBCrpty为单向加密工具类:单元测试:4、Http Basic工具类:5、MD5MD5为单向加密引入依赖(MAVEN):引入依赖(gradle):工具类:单元测试:6、RSARSA为非对称加密工具类:单元测试:7、原创 2023-02-25 16:47:20 · 7294 阅读 · 0 评论 -
解决Gradle在IDEA中运行Java17的Junit单元测试程序报错:module java.base does not “opens java.lang“ to unnamed module
【代码】解决Gradle在IDEA中运行Java17的Junit单元测试程序报错:module java.base does not "opens java.lang" to unnamed module。原创 2023-01-07 19:26:02 · 6036 阅读 · 0 评论 -
Jackson中LocalDateTime和LocalDate自定义JSON序列化反序列化方式
上一篇文章介绍了在SpringBoot中统一定义LocalDateTime和LocalDate的Json序列化和反序列hauler方式,在某些情况下,我们需要直接操作ObjectMapper实现JSON操作,而不是通过访问接口。此时需在ObjectMapper中定义这两种时间类型的序列化方式。核心在后面添加了JavaTimeModule并注册到mapper中,此后再用mapper,则不会在序列化的字符串中出现T了。与Date类型的序列化方式一致了。原创 2023-01-03 10:55:57 · 2348 阅读 · 0 评论 -
使用jsch和commons-pool2为sftp创建连接池
使用jsch和common-pool2为sftp创建连接池原创 2022-09-14 09:57:40 · 3096 阅读 · 3 评论 -
mybatis的使用及源码分析(十六) Mybatis使用foreach遍历Map
这里是一个批量新增操作,最外层的foreach遍历List集合,第二个foreach遍历了map的所有key,第三个foreach遍历了map的所有value.如上,通过foreach遍历map的key,通过分别取得map对应的key和value。注意的是无法在外层再套用foreach,因为#{updateEntity.data[${key}]}无法引用上层foreach的item,所以此种方式无法实现批量修改UpdateEntity实体如下。...原创 2022-07-12 10:51:03 · 1590 阅读 · 2 评论 -
java使用jol打印对象信息
maven:gradle:2、测试运行结果:3、对象结构说明对象的结构包括:对象头、对象体、对齐字节对象头包含三部分,Mark Word、Klass Word、数组长度。如果对象不是数组,数组长度可以忽略。以下是 Java对象处于5种不同状态时,Mark Word中 64位的表现形式,上面每一行代表对象处于某种状态时的样子。其中各部分的含义如下:1、lock。2位,锁状态的标记位,2、biased_lock。1位。对象是否存在偏向锁标记。lock与biased_lock共同表示锁对象处于什原创 2022-06-26 15:17:57 · 1733 阅读 · 0 评论 -
java线程/线程池异常处理机制
JAVA中线程和线程池异常处理问题原创 2022-06-14 20:04:43 · 1974 阅读 · 0 评论 -
DruidDatasource取消失败后无限重试
DruidDatasource默认是无限自动重试,可能导致程序卡死。处理方式如下:DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setUrl(jdbcUrl);druidDataSource.setUsername(username);druidDataSource.setPassword(password);// 失败后重连的次数druidDataSource.setConnectionEr.原创 2022-03-03 09:29:12 · 3143 阅读 · 0 评论 -
jdk11中httpclient工具类封装
jdk从9开始改进了UrlConnection提供了新的httpclient,jdk11中 从java9的jdk.incubator.httpclient模块迁移到java.net.http模块,包名由jdk.incubator.http改为java.net.http工具类支持GET/POST/PUT/DELETE四种请求方式,支持文件上传、下载,支持同步、异步请求,支持https,支持http2。为了简单的构建文件上传流,借用了httpmime中的MultipartEntityBuilder,以后有.原创 2021-12-04 17:31:34 · 1332 阅读 · 0 评论 -
java后端使用phantomjs生成echarts图片
很多时候需要自动生成一些文档,并在文档中插入一些图片,一般B/S系统中图片由Echarts生成,但文档在java后台生成,这时怎样在后台调用Echarts的功能呢?答案是phantomJS。1、安装phantomJS下载地址:https://bitbucket.org/ariya/phantomjs/downloads/,国内镜像地址:http://npm.taobao.org/dist/phantomjs/有各种版本的,我这里以windows为例。2、下载EchartsConvert下载地址.原创 2021-11-24 21:45:13 · 2177 阅读 · 2 评论 -
JDK中使用方法句柄MethodHandle
文章目录前言一、几个重要的类1.MethodHandle2.MethodType3.Lookup二、使用步骤1.普通调用2.静态方法调用3.调用构造器4.调用Getter方法5.调用Setter方法6.通过Method调用7.invoke和invokeExact的区别总结前言Java通过反射可以在运行时获取类型信息,但其有个缺点就是执行速度较慢。于是从Java 7开始提供了另一套API MethodHandle 。其与反射的作用类似,可以在运行时访问类型信息,但是据说其执行效率比反射更高,也被称为原创 2021-10-31 19:32:32 · 490 阅读 · 0 评论 -
Apache commons-exec的使用
文章目录前言一、同步调用二、异步调用三、处理超时总结前言在调用SHELL命令或DOS命令时,使用Runtime.getRuntime().exec(command);这个方法。但是执行某些命令时,程序可能就卡在那了,需要在执行的过程中新开启几个线程来不断地读取标准输出,以及错误输出,这样很不方便,好在commons-exec提供了更加友好的使用方式。一、同步调用commons-exec的command不需要考虑执行环境,比如windows下不需要添加"cmd /c "的前缀。可以使用自定义的流原创 2021-10-24 19:35:58 · 5601 阅读 · 2 评论 -
java使用commons-pool2创建对象池
文章目录前言一、对象池是什么?二、使用步骤1.引入库2.对象实体3.生产对象的工厂4.使用对象池5.补充第三步代码中用到的ReflectUtils#initObj总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、对象池是什么?对象池模式经常用在频繁创建、销毁对象(并且对象创建、销毁开销很大)的场景,比如数据库连接池、线程池、原创 2021-08-19 22:02:07 · 2070 阅读 · 0 评论 -
java实现将线程绑定到某个CPU核上(线程亲和性)
如果需要开发低延迟的网络应用,那应该对线程亲和性(Thread affinity)有所了解。线程亲和性能够强制使你的应用线程运行在特定的一个或多个cpu上。通过这种方式,可以消除操作系统进行调度造成的线程的频繁的上下文切换。实现方式:1、引入依赖maven:<!-- https://mvnrepository.com/artifact/net.openhft/affinity --><dependency> <groupId>net.openhft<原创 2021-07-07 21:27:59 · 3296 阅读 · 4 评论 -
验证码在服务器部署后不生效
验证码在部署到服务器后报错:Caused by: java.lang.reflect.InvocationTargetException: nullat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConst.原创 2021-05-07 17:35:12 · 719 阅读 · 0 评论 -
lambda表达式异常处理工具
lambda表达式可以让我们的代码更加简介,业务逻辑更加清晰,但是在lambda表达式中使用的Functional Interface并没有很好的处理异常,因为JDK提供的这些Functional Interface通常都是没有抛出异常的,这意味着需要我们自己手动来处理异常。Lambda表达式能够自动抛出非检查异常,检查异常,必须catch,如果每个表达式都去处理,代码会非常臃肿,可以看一下如下代码:private List<String> list = Arrays.asList("1.原创 2021-02-17 14:43:44 · 515 阅读 · 0 评论 -
Integer类所有的静态函数测试
使用的JDK版本为11package com.iscas.common.tools.jdk;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.JUnit4;/** * Integer 静态方法测试 * * @author zhuquanwen * @vesion 1.0 * @date 2021/2/3 20:48 * @.原创 2021-02-03 22:32:15 · 303 阅读 · 0 评论 -
测试CompletableFutrue的使用
很多场景下,获取线程运行的结果,使用execute方法去提交任务是无法获得结果的,这时候会改用submit方法去提交,以便获得线程运行的结果。而submit方法返回的就是Future,一个未来对象。 使用future.get() 方法去获取线程执行结果,包括如果出现异常,也会随get方法抛出。future.get()方法去取得线程执行结果时,get方法是阻塞的,当主线程执行到get()方法,当前线程会去等待异步任务执行完成,换言之,异步的效果在我们使用get()拿结果时,会变得无效。JDK1.8.原创 2021-01-30 21:35:47 · 855 阅读 · 0 评论 -
gradle使用插件将jar包以及源码打入nexus的maven私服
之前写过一篇文章https://blog.youkuaiyun.com/u011943534/article/details/89173294,使用gradle的maven-publish插件将源码打成jar并推送至了maven私服。现在想让源码也打入maven私服,方便查看源码。实现方式很简单,只需做一点修改。1、添加sourceJar Tasktask sourcesJar(type: Jar) { from sourceSets.main.allJava archiveCl.原创 2021-01-23 14:41:08 · 965 阅读 · 0 评论 -
使用screw生成数据库文档
发现一个数据库文档生成工具screw,在写文档过程中还是很有用的screw项目地址:https://gitee.com/leshalv/screw1、引入依赖maven:<!-- https://mvnrepository.com/artifact/cn.smallbun.screw/screw-core --><dependency> <groupId>cn.smallbun.screw</groupId> <artifa.原创 2020-11-22 19:27:18 · 476 阅读 · 0 评论 -
精确浮点运算工具类以及BigDecimal.valueOf(double d)与new BigDecimal(double d)的区别
工具类如下:BigDecimal.valueOf与new BigDecimal的区别测试如下: @Test public void testBigDecimal() { double d = 0.999; BigDecimal b1 = BigDecimal.valueOf(d); BigDecimal b2 = new BigDecimal("0.999"); BigDecimal b3 = new BigDecimal(d原创 2020-08-11 22:04:53 · 763 阅读 · 0 评论 -
idea debug报错command line is too long
打开.idea/workspace.xml找到标签:<component name="PropertiesComponent">添加子标签:这样就可以了原创 2020-02-29 12:37:26 · 549 阅读 · 0 评论 -
Java中json与xml相互转换
1、引入依赖// https://mvnrepository.com/artifact/net.sf.json-lib/json-lib compile ("net.sf.json-lib:json-lib:${jsonlibVersion}") // https://mvnrepository.com/artifact/org.json/json compile gr...原创 2020-01-20 16:16:09 · 1177 阅读 · 0 评论 -
JDK11移除jaxb导致java.lang.ClassNotFoundException:javax.xml.bind.JAXBException的解决方案
JAXB API被认为是Java EE API,因此不再包含在Java SE 9中的默认类路径中。在Java 11中,它们已从JDK中删除。要解决此问题,需要手动引入。1、MAVEN引入方式<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api&l...原创 2020-01-05 20:19:24 · 4142 阅读 · 0 评论 -
Springboot学习(十九) springboot2.0+druid+jpa启动报错org.hibernate.persister.entity.SingleTableEntityPersiste
启动报错Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister添加javassist依赖就可以了gradle:compile group: 'javassist', name: 'javassist', version: '3.12.1.GA'maven:<...原创 2019-05-15 17:02:17 · 515 阅读 · 0 评论 -
springboot学习(十八) 处理springboot中@Configuration中无法通过@Value注入配置文件配置的问题
由于springboot涉及的一些加载顺序的问题,在@Configuration修改的配置类中有时无法获取到配置文件的数据,使用@Value总是获取到的是null,在我使用它配置mybatis-plus时,无论是用网上说的方式,使用static修饰或者注入placeHolder等统统无效,总是null.其实处理方法很简单,只需要使用Enviroment获取配置就可以了,不过类要实现Envir...原创 2019-04-22 09:57:03 · 9135 阅读 · 1 评论 -
使用jarslink实现版本隔离
JarsLink (原名Titan) 是一个基于JAVA的模块化开发框架,它提供在运行时动态加载模块(一个JAR包)、卸载模块和模块间调用的API。也是阿里巴巴的开源项目之一 https://github.com/alibaba/jarslink,目前在微贷事业群广泛使用。github例子地址:https://github.com/zhuquanwen/jarslink-demo使用介绍参...原创 2019-04-17 10:28:56 · 1757 阅读 · 0 评论 -
Spring IO Platform介绍
https://www.cnblogs.com/chenpi/p/6295855.html转载 2019-04-10 09:22:03 · 289 阅读 · 0 评论 -
JVM配置参数
JVM配置参数以及说明:一、Trace: 1. -XX:+printGC 打印GC信息 2. -XX:+pringGCDetails 打印GC详细信息 3. -XX:+pringGCTimeStamps 打印GC发生的时间戳 4. -Xloggc:/home/xxx.log 将GC日志输出至文件 5. -XX:+TraceClassLoading 打印类加载信...原创 2018-05-19 12:03:58 · 149 阅读 · 0 评论 -
处理mybatis读取mysql数据差8个时区的问题
添加 在连接URL中添加:jdbc:mysql://localhost:3306/table_name?useTimezone=true&serverTimezone=UTC原创 2019-05-21 14:39:58 · 1483 阅读 · 0 评论 -
Java实现Http反向代理功能
最近项目中要实现一个HTTP请求反向代理功能,类似Ngix,但还要在代理中做一些自己的处理,所以自己用Java实现了一个反向代理功能采用Jetty作为服务器,采用反向代理库smiley-http-proxy-servlet废话不多说,很简单,看一下源码就可以了https://git.dev.tencent.com/zhuquanwen/http-proxy.git...原创 2019-06-10 20:18:51 · 8455 阅读 · 1 评论 -
springboot学习(二十) springboot中使用原生websocket
1 引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>...原创 2019-06-20 15:39:44 · 838 阅读 · 6 评论 -
使得几个线程有序执行的两种方式
1、使用Thread.join()方法thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程Bpublic class ThreadTest1 { public static void main(String[] args) { Thread...原创 2019-06-10 21:03:14 · 1721 阅读 · 0 评论 -
Netty(十四) Netty实现HTTP与WebSocket代理服务器
目前想实现一个HTTP代理服务,能够支持HTTP和Websocket的代理。最开始的实现思路是使用Jetty服务+Http-proxy框架实现的,后来发现支持Websocket比较困难。换了另一种思路,使用Netty来实现。github源码:https://github.com/zhuquanwen/netty-http-websocket-proxy1、引入依赖dependencie...原创 2019-07-18 10:07:36 · 5370 阅读 · 0 评论 -
Java获取某个包下的所有Class类对象
废话不多说,直接上代码package com.iscas.common.tools.core.reflect;import org.apache.commons.lang3.StringUtils;import java.io.File;import java.io.FileFilter;import java.io.IOException;import java.net.Ja...原创 2019-07-11 20:44:49 · 10094 阅读 · 0 评论 -
gradle使用插件将jar包打入nexus的maven私服
1、build.gradle中引入maven插件apply plugin: 'maven-publish'2、配置publish//上传至nexuspublishing { publications { maven(MavenPublication) { groupId project.group artifactI...原创 2019-04-10 09:00:27 · 1376 阅读 · 0 评论