![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 57
十步杀一人_千里不留行
当你还不能写出自己满意的程序时,你就不要去睡觉。
展开
-
jdk的最新下载方法,网上大部分教程都失效了,这是最新
值得注意的是,官网下载需要注册一个账号,大家用邮箱注册一下即可,很容易的。点进去,再往下翻,右侧找到自己需要的版本下载即可。在这个页面往下翻即可。原创 2023-01-30 21:26:13 · 841 阅读 · 0 评论 -
使用jRebel在IntelliJ IDEA 中进行 Java 热部署
1.在IntelliJ IDEA中安装jRebel插件2.配置IDEA:Idea中ctrl+shift+alt+/,在弹出浮层中输入registry;进入如下界面,将compiler.automake.allow.when.app.running 选中,退出该界面3.设置idea为自动编译。设置完毕后ctrl+s时会自动帮你重新编译4.项目中配置Jrebel:在项...原创 2018-08-31 21:40:33 · 737 阅读 · 0 评论 -
MyBatisPlus的in方法入参数量过多导致的JVM频繁FullGC案例
在我们的认知中,通常认为Mybatis和MyBatisPlus的in方法入参数量超过1000条就会报错但如果入参数量达到上百万,那就会陷入循环中,导致虚拟机内存占用飙升,频繁GC,昨日我司生产环境就发生了这样的问题,先记录如下。...原创 2022-08-05 15:39:14 · 1756 阅读 · 0 评论 -
mybatis循环超过1000条报错的处理办法
112让3人原创 2022-06-01 18:03:00 · 967 阅读 · 1 评论 -
XStream应用实例
XStream xStream = new XStream() { @Override protected MapperWrapper wrapMapper(MapperWrapper next){ return new MapperWrapper(next) { @Override public boolean shouldSerializeMe.原创 2022-01-04 10:33:43 · 954 阅读 · 0 评论 -
使用XStream进行对象和xml的转换,极度舒适
代码: XStream xStream = new XStream(); XStream.setupDefaultSecurity(xStream); xStream.allowTypesByRegExp(new String[] { ".*" }); xStream.alias("Body",CmlabsReturn.ReportListResult.class); xStream.alias("Result",Cmlab原创 2021-10-20 15:04:33 · 1059 阅读 · 0 评论 -
查看java的dump日志并进行分析
1.进入自己jdk的bin目录,打开命令行工具cd C:\Program Files\Java\jdk1.8.0_211\bin>2.查看当前运行的java进程.\jps.exe3.下载dump文件.\jmap.exe -dump:format=b,file=d:/ext.dump 254844.使用工具jvisualvm.exe进行查看...原创 2021-10-20 11:31:22 · 4786 阅读 · 0 评论 -
拦截增删改sql,并在事务提交中做后续操作
import com.alibaba.fastjson.JSONObject;import org.apache.ibatis.executor.statement.StatementHandler;import org.apache.ibatis.plugin.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Configuration;.原创 2021-08-20 15:19:58 · 434 阅读 · 0 评论 -
java Lambda妙用-从集合中过滤最适合的一条记录
List<Predicate<LabItemRange>> filterList = new ArrayList<>();filterList.add(e->compareCode(e,report)&&compareAge(e,report)&&compareSex(e,report));filterList.add(e ->Objects.isNull(e.getSex())&&compareCode(.原创 2021-08-16 09:48:04 · 1291 阅读 · 0 评论 -
Datax将Oracle数据导入ElasticSearch7完成教程
网上关于此方面的内容较少,而且比较零散,正好项目中需要对ES7做预研,所以整理出了这篇文章。ElasticSearch版本为7.13.2分如下几个主题:1.Datax的es导入插件elasticsearchwriter1.1.从datax的github地址(https://github.com/alibaba/DataX)下载源码工程(Datax-master)工程内容很多,如果在idea中构建,需要的时间比较长,需要耐心等待。如果不需要构建,那直接在文件夹中打开文件,进行第2步的操作。原创 2021-07-21 10:22:44 · 2535 阅读 · 7 评论 -
对A1A2A10B1B2N12排序
// rowList为待排序的集合 String reg = "[^\\d]"; Collections.sort(rowList, (o1, o2) -> { int first = Integer.parseInt(o1.getHoleNo().replaceAll(reg, ""))+o1.getHoleNo().getBytes()[0]*100; int second = Int...原创 2021-06-11 14:50:35 · 350 阅读 · 2 评论 -
excel冻结窗格线的设置问题
在使用easypoi导出excel后,发现表头列下面有一个横线:原创 2021-05-31 11:25:44 · 1268 阅读 · 0 评论 -
16进制转中文
接口接收到一串十六进制数,需要转换为中文来显示。十六进制为:[0xe7][0xad][0xbe][0xe5][0x90][0x8d][0xe9][0xaa][0x8c][0xe8][0xaf][0x81][0xe5][0xa4][0xb1][0xe8][0xb4][0xa5],[0xe8][0xae][0xbf][0xe9][0x97][0xae][0xe6][0x8e][0xa5][0xe5][0x8f][0xa3][0xe8][0xb6][0x85][0xe6][0x97][0xb6]!首先把十原创 2021-03-04 16:09:33 · 11897 阅读 · 4 评论 -
SpringBoot项目请求路径中有正反斜杠的处理办法
在Application中添加静态代码块: //默认情况下Tomcat等服务器是拒绝url中带%2F或者%5C的URL,因为它们经浏览器解析之后就变成了/和\, // 服务器默认是拒绝访问的,所以需要通过服务的配置来解决这个问题。 static { //解决URL中包含%2F的问题 System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true"); //解决URL中包含%5C原创 2020-11-10 15:25:52 · 4025 阅读 · 1 评论 -
idea中jar包依赖了但还是找不到类的解决方案
新项目check到本地,导入到idea中后,编译的时候很多类都报错了,打开发现有些框架中的类找不到,现象为:控制台报错:点击这个包,明明发现是有这个依赖的说明项目是依赖了这个jar包的,打开项目配置,查看依赖树:问题找到,idea这里将这个包设置为了运行时,那编译期当前就报错了,改为Compile,问题解决。...原创 2020-10-10 08:54:10 · 15892 阅读 · 4 评论 -
解决FastJson中“$ref 循环引用检测”的问题的几种方式
一、现象:项目中用json形式来存储一个集合对象,用fastjson发现多了一些东西:$ref,了解之后才发现是重复引用的问题。[ { "id":"1", "orderList":[ { "id":2, "date":"2020-08-17 12:57:21", "name":"帽子" }, { "id":3, "date":"2020-08-17 12:57:21", "name":"鞋子" } ], "r原创 2020-09-28 17:01:56 · 6120 阅读 · 4 评论 -
动态修改实体类转json的属性名
//需要字段转换的序列维护 public static final Map<String,Integer> o = new HashMap<>(); static { o.put("1001", 0); o.put("1002", 1); o.put("1003", 2); o.put("9999", 3); }实体类注意,字段需要改为public,否则注解要加到set方法上,这样才能根据alternateNames别名来动态生成字段如果是...原创 2020-09-17 17:50:31 · 2068 阅读 · 0 评论 -
使用lambda去重、map排序、按任意时间间隔(小时、半小时、分钟)进行结果统计
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) { Map<Object, Boolean> seen = new ConcurrentHashMap<>(); return object -> seen.putIfAbsent(keyExtractor.apply(object), .原创 2020-09-15 10:49:51 · 2354 阅读 · 3 评论 -
Shiro 权限标签
guest标签 <shiro:guest> </shiro:guest> 用户没有身份验证时显示相应信息,即游客访问信息。user标签 <shiro:user> </shiro:user> 用户已经身份验证/记住我登录后显示相应的信息。authenticated标签 <shiro:authenticated> </shiro:authenticated> 用户已经身份验证通过,即Sub转载 2020-09-04 09:55:04 · 552 阅读 · 0 评论 -
screw (螺丝钉) ~ 简洁好用的数据库表结构文档生成工具
https://gitee.com/leshalv/screw特点简洁、轻量、设计良好 多数据库支持 多种格式文档 灵活扩展 支持自定义模板数据库支持MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB文档生成支持html word markdwon使用方式普通方式引入依赖<dependency> <groupId>cn.small...转载 2020-07-27 09:59:34 · 4015 阅读 · 0 评论 -
自定义类加载器
public class MyClassLoader extends ClassLoader { @Override public Class<?> loadClass(String name) throws ClassNotFoundException { String fileName = name.substring(name.lastInde...原创 2020-04-16 11:36:20 · 269 阅读 · 0 评论 -
JVM虚拟机-Class文件之属性表集合
一、概述在class文件中,属性表集合包括Java虚拟机预先规范定义的属性以及用户自定义的属性,对于用户自定义的属性,虚拟机加载的时候会自动忽略掉。class文件、字段表、方法表都可以携带自己的属性表集合,便于描述某些场景专有的信息。二、组成虚拟机中预定义的属性有:属性名称 使用位置 含义 Code 方法表 Java代码编译成的字节码指令 Con...原创 2020-04-10 17:26:14 · 646 阅读 · 0 评论 -
JVM虚拟机-Class文件之方法表集合
一、概述方法表集合与属性表集合的结构类似,是对方法的修饰符、返回类型、方法名、参数个数、参数类型、方法体的描述集合。方法表集合的结构是一个类似于数组的结构,JVM在对java文件进行编译时,会将类中的方法个数放到方法计数器中,然后将每个方法组成method_info结构,依次存在在方法计数器之后。二、方法表集合的构成方法表集合的结构与字段表结构非常的类似,开头也是用了两个字节表...原创 2020-04-10 16:51:21 · 595 阅读 · 0 评论 -
JVM虚拟机-Class文件之字段表集合
一、概述在接口索引集合后面 的就是字段表集合了。字段表(field_info)用于描述接口或者类中声明的变量。字段包括类级变量以及实例级变量,但是不包括在方法内部声明的局部变量。二、字段表集合的构成1.字段计数器字段表集合是由很多field_info组成的,所以字段表集合的前两个字节表示有多少个字段,占两个字节,16位。2.field_info每个field_info的...原创 2020-04-10 15:39:26 · 473 阅读 · 0 评论 -
JVM虚拟机-Class文件之类索引、父类索引和接口索引集合
一、概述前面介绍了class文件,包括魔数、次版本号、主版本号、常量池和访问标志.接下来的就是用于确定这个类的继承关系的类索引(this_class)、父类索引(super_class)与接口索引集合(interfaces)这三项。类索引、父类索引和接口索引集合都按顺序排列在访问标志之后,类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名。由于Java语言不允许多继...原创 2020-04-08 17:05:09 · 461 阅读 · 0 评论 -
JVM虚拟机-Class文件之访问标志
一、访问标志的概念常量池结束之后,紧接着的两个字节代表访问标志,这个标志用于识别一些类或者接口层次的访问信息,包括:这个Class是接口还是类;是否被定义为public类型;是否定义为abstract类型;如果是类的话,是否被声明为final等。access_flages中共有两个字节(16位)可以使用,没有使用到的标志为要求一律为0。如果有多个访问标志,那通过“OR”的方式组合在一起。...原创 2020-04-08 16:22:41 · 546 阅读 · 0 评论 -
JVM虚拟机-Class文件之常量池
一、常量池的作用在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置:常量池可以比喻为Class文件里的资源仓库,它是Class 文件结构中与其他项目关联最多的数据,通常也是占用Class文件空间最大的数据项目之一,另外,它还是在Class文件中第一个出现的表类型数据项目。二、常量池的结构常量池的结构比较简单,前面的两个字节叫做常...原创 2020-04-08 15:38:27 · 680 阅读 · 0 评论 -
JVM虚拟机-Class文件之魔数
一、魔数之定义魔数这个词在不同领域代表不同的含义。在计算机领域,魔数有两个含义,一指用来判断文件类型的魔数;二指程序代码中的魔数,也称魔法值。大多数情况下,我们都是通过扩展名来识别一个文件的类型的,比如我们看到一个.txt类型的文件我们就知道他是一个纯文本文件。但是,扩展名是可以修改的,当一个文件的扩展名被修改过,怎么识别一个文件的类型呢?这就用到了我们提到的“魔数”。 所谓魔数和魔字符...原创 2020-04-08 11:11:00 · 575 阅读 · 0 评论 -
JVM虚拟机-Class文件简介
参考资料:https://blog.csdn.net/IT_GJW/article/details/80447947原创 2020-04-08 09:39:35 · 515 阅读 · 0 评论 -
Java虚拟机-常用工具
一、命令行工具1. jpsJVM Process Status Tool,显示虚拟机进程。这个命令的使用频率很高,当服务器上运行大量Java项目的时候,系统管理员会通过该命令来查看对应的进程是否启动。用法:jps [-q] [-mlvV]参数说明-q:打印进程号 -l:打印启动类的全限定名 -m:打印启动类的 main 方法入参 -v:打印指定的虚拟机参数 -V:打印类...原创 2020-04-03 15:52:27 · 867 阅读 · 0 评论 -
Java虚拟机-逃逸分析(Escape Analysis)和栈上分配
我们都知道Java中的对象默认都是分配到堆上,在调用栈中,只保存了对象的指针。当对象不再使用后,需要依靠GC来遍历引用树并回收内存。如果堆中对象数量太多,回收对象还有整理内存,都会会带来时间上的消耗,GC表示压力很大,然后影响性能。所以,在我们日常开发中,内存,时间都是相当的宝贵,该如何优化堆栈开销,是一个比较重要的问题。逃逸分析(Escape Analysis)和栈上分配是对JVM进行优化的...原创 2020-04-03 11:23:11 · 750 阅读 · 0 评论 -
Java虚拟机-内存分配策略
优先分配到eden大对象直接分配到老年代长期存活的对象分配到老年代空间分配担保动态对象年龄判断逃逸分析与栈上分配原创 2020-04-02 11:51:25 · 434 阅读 · 0 评论 -
Java虚拟机-垃圾回收器
一、如何查看垃圾回收器查看JVM的默认垃圾回收器,可以看出JDK8中UseParallelGC即Parallel Scavenge+Serial Oldjava -XX:+PrintCommandLineFlags -version-XX:InitialHeapSize=266359616 -XX:MaxHeapSize=4261753856 -XX:+PrintCommandLi...原创 2020-04-01 11:36:24 · 458 阅读 · 0 评论 -
Java虚拟机-垃圾回收简介
一、如何判定对象为垃圾对象引用计数法可达性分析法二、如何回收回收策略标记-清除算法 复制算法 标记-整理算法 分代收集算法垃圾回收器Serial parnew Cms G1...原创 2020-04-01 09:44:01 · 451 阅读 · 0 评论 -
在Java中如何从一个多层嵌套循环中直接跳出?
一、问题描述最近发现一个有趣的问题,在Java中如何从一个多层嵌套循环中退出呢?例如下面,有两层循环,break只能退出第一个for循环,不能直接跳出第二个for循环外面。 public static void main(String[] args) { for (Type type : types) { for (Type t : ty...原创 2020-03-13 16:32:28 · 4890 阅读 · 0 评论 -
【实战】Spring生成beanName冲突的解决之道:附源码分析
一、问题描述最近公司项目打算模块化,其实一个原因也是为了能够整合公司多个业务的代码,比如一个资源xxx,两个业务中都有对这个资源的管理,虽然是一个资源,但是是完全不同的定义、完全不同的表、不同的处理逻辑。所以打算把类名弄成一样的,但是包名不一样。但这样会产生问题,按照Spring的默认beanName生成规则,会直接将类名首字母小写作为bean的名字,如两个模块里的这个资源都叫xxxJob...原创 2020-03-11 09:28:06 · 2533 阅读 · 0 评论 -
使用easyexcel导出时行高不自动调整的解决
easyexcel在使用模板填充的方式时,有些文字比较长,需要设置自动换行显示,文档中并没有在此处说明如何设置,翻到前面的写excel中有设置自定义样式的方式,照着搬过来即可: // 内容的策略 WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); // ...原创 2020-02-22 18:49:39 · 17403 阅读 · 10 评论 -
SpringCloud系列-Feign的基本应用
一、Feign 概述Feign 是一个声明式的 Web Service 客户端。它的出现使开发 Web Service 客户端变得很简单。使用 Feign 只需要创建一个接口加上对应的注解,比如:@FeignClient 注解。 Feign 有可插拔的注解,包括 Feign 注解和 AX-RS 注解。Feign 也支持编码器和解码器,Spring Cloud Open Feign 对 Feig...原创 2019-09-08 13:29:38 · 909 阅读 · 0 评论 -
SpringCloud系列-Ribbon的基本应用
一Ribbon简介Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。在SpringCloud中,当Ribbon与Eureka配合使...转载 2019-09-08 13:26:32 · 783 阅读 · 0 评论 -
Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现
Spring Boot 在关闭时,如果有请求没有响应完,在不同的容器会出现不同的结果,例如,在 Tomcat 和 Undertow 中会出现中断异常,那么就有可能对业务造成影响。所以,优雅停机非常有必要性,目前官方是没有提供很好的策略来实现。Each SpringApplication registers a shutdown hook with the JVM to ensure that th...原创 2018-04-20 09:20:54 · 1336 阅读 · 0 评论