
java
文章平均质量分 50
菜鸟-要努力
这个作者很懒,什么都没留下…
展开
-
java 泛型里面直接使用T 或 T extends X 有和区别
简言:在我们开发过程中特别是代码封装底层经常可以看到,泛型使用 T 或 T extends X 为啥不直接使用T还要使用继承的方式约束泛型类型呢?使用T extends X时,确保传入的类型至少具备X类中的属性和方法,增强了类型安全性和代码的可读性。T extends X表示类型参数T必须是X类型或X的子类型。使用T extends X时,类型参数必须是X或其子类型。T extends X 表示类型T必须是X或者X的子类。直接使用T表示类型参数T可以是任何类型。使用T时,类型参数没有任何限制。原创 2025-01-08 10:34:28 · 340 阅读 · 0 评论 -
POI版本升级需要调整的代码整理(3.15升级到5+版本)
简言:项目发现POI引入的包版本比较多,最终统一升级高版本,向下兼容程序,版本:3.15升级到5.1.0版本。原创 2023-10-17 14:33:26 · 8967 阅读 · 0 评论 -
List list=new ArrayList()抛出的ArrayIndexOutOfBoundsException异常
上面代码是对ids 分片按照10条记录查询远程接口,并将结果集放到list riskSummaryList 对象中 riskSummaryList.add(new DTO() )最后输出结果.分析:这种情况是多线程并发情况下添加数据ensureCapacity 这个方法是非线程安全的导致计算值扩容不够抛出的异常。1.使用官网提供的方法Collections.synchronizedList。2.new一个对象CopyOnWriteArrayList方法。原创 2023-08-07 18:05:57 · 1238 阅读 · 0 评论 -
Idea项目application.properties配置文件默认GBK,如何设置默认为UTF-8编码
简述:java程序在项目中一般设置都是UTF-8编码格式,但是项目文件默认是GBK,需要手工修改默认编码格式。原创 2023-06-29 16:03:58 · 3911 阅读 · 0 评论 -
Java【基础版本】SerializationUtils#Clone浅拷贝、深拷贝
引入:今天工作中同事使用了Java8 Lists.partition 函数来批量更新/查询数据,架构组在mybatis插件扩展了mybatis#Interceptor 方法,具体实现拦截网上有大量资料可以查询下,这里就不引入介绍,连接器中使用方法,来序列号param 对象,在对象复制的时候Lists.partition后得到的list 是一个Partition对象,该对象是继承了AbstractList 完成list 切分的。原创 2023-03-07 19:06:05 · 2638 阅读 · 0 评论 -
java优化-代码重,让代码更优美和简洁
java代码重构原创 2023-01-03 15:01:22 · 723 阅读 · 0 评论 -
jmeter基本使用和快速生成测试报告
jmeter测试,并发测试,通过jmeter生成测试报告原创 2022-10-17 19:54:25 · 810 阅读 · 0 评论 -
Drools 开发决策表
drools 决策表语法原创 2022-07-19 16:41:20 · 322 阅读 · 0 评论 -
Lombok java: 找不到符号 符号: 方法 builder()运行错误异常
java 引入lombo运行时异常原创 2022-07-12 11:14:37 · 5248 阅读 · 3 评论 -
BigDecimal基本使用与闭坑介绍
前言:我们在做开发过程中经常使用BigDecimal 来做金额的数据类型,特别是保留小数点2位,提高科学计算的准备度,但是BigDecimal 如果使用不当也会导致精度丢失问题,与double 类似情况。一. 首先我们来验证下上面说的问题 ,程序员执行上代码输出内容:上面倒数第二输出,就存在精度丢失问题,推荐使用BigDecimal.valueOf()方法来完成初始化值,少用构造方法对BigDecimal赋值,BigDecimal构造器会对不同数据类型调用不通的构造方法,具体代码大家可以点开源码了解下。原创 2022-06-09 15:54:10 · 241 阅读 · 0 评论 -
Java8 Stream中findAny和findFirst的区别
前言:java 8在使用流时候会用到findAny() 与findFirst() 方法使用,下面就对这两个方法使用结合源码做下区分。首先我们来看下源码:这两个方法都是在接口Stream类中:1 .findFirst() 方法根据命名可以大致知道是获取Optional流中的第一个元素2 .findAny() 方法是获取Optional 流中任意一个,存在随机性,其实里面也是获取元素中的第一个具体实现方法是类似的,看下源码ReferencePipeline @Override publ原创 2022-05-19 17:38:21 · 11109 阅读 · 2 评论 -
java 8之函数编程自定义函数接口@FunctionalInterface
什么是函数式接口(Functional Interface)所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。补充下:方法也可以有具体默认实现逻辑,需要用default修饰这种类型的接口也称为SAM接口,即Single Abstract Method interfaces。函数式接口用途它们主要用在Lambda表达式和方法引用(实际上也可认为是Lambda表达式)上。我会通过两个例子介绍具体使用,也是我项目中使用比较常见的用法先定义一个函数接口package原创 2022-04-29 10:48:41 · 2674 阅读 · 0 评论 -
java 8 之函数编程BiFunction
文章对java 8 BiFunction接口使用及源码做解释,在java 8 后interface 支持方法体,但是需要用default 修饰我们先来看下源码import java.util.Objects;/** * Represents a function that accepts two arguments and produces a result. * This is the two-arity specialization of {@link Function}. * *原创 2022-04-15 10:51:05 · 2605 阅读 · 0 评论 -
java8中Collectors.groupingBy 用法
按照项目分组:Map<String, List<Product>> prodMap= prodList.stream().collect(Collectors.groupingBy(Product::getCategory));//{"啤酒":[{"category":"啤酒","id":4,"name":"青岛啤酒","num":3,"price":10},{"category":"啤酒","id":5,"name":"百威啤酒","num":10,"price":15}.原创 2022-02-23 11:43:17 · 965 阅读 · 0 评论 -
idea启动应用build过慢
使用idea的时候每次启动项目都会build很长时间,如果启动的项目过大,在build时还会出现GC的情况,查了很多资料都是说修改idea.exe.vmoptions中的内存分配-Xms512m-Xmx2048m-XX:ReservedCodeCacheSize=480m但是我修改了内存分配之后,build速度并没有改善,且大项目build依然会出现GC,而在eclipse中配置2048是可以起来的,所以我认为在编译的时候idea还有其他的配置,故而去settings中找编译的配置,果然找到了编译原创 2021-12-28 15:14:27 · 5957 阅读 · 0 评论 -
国内阿里云maven库
maven库地址:https://maven.aliyun.com/mvn/view操作1进入maven->config->settings.xml找到对应的mirrors添加/修改配置:<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>htt原创 2021-06-17 17:29:48 · 562 阅读 · 0 评论 -
Arrays.asList(T... a)替代方法,异常:Exception in thread “main“ java.lang.UnsupportedOperationException
众所周知Arrays.asList(T… a):该方法返回定长的 List,不支持 add 和 remove 操作该方法返回的 List 与传入数组是映射关系(视图):set/get 操作直接作用于数组;直接修改数组,list 也会改变替代方案://直接声明 List<String> list = new ArrayList<>(Arrays.asList("a", "b","c"));//简介声明String[] arr = {"a", "b", "c"};Lis原创 2021-02-24 20:04:21 · 319 阅读 · 0 评论 -
代理模式实现方式及优缺点对比
代理模式实现方式及优缺点对比代理模式最典型的应用就是AOP,本文结合主要讲解了代理模式的几种实现方式:静态代理和动态代理,这里动态代理又可以分为jdk代理和Cglib代理,另外,本文也对这几种代理模式的优缺点进行了对比。代理,顾名思义,即代替被请求者来处理相关事务。代理对象一般会全权代理被请求者的全部只能,客户访问代理对象就像在访问被请求者一样,虽然代理对象最终还是可能会访问被请求者,但是其可以在请求之前或者请求之后进行一些额外的工作,或者说客户的请求不合法,直接拒绝客户的请求。如下图所示为代理模式的一原创 2021-02-20 16:21:41 · 1788 阅读 · 0 评论 -
swagger2 注解说明
swagger2 注解说明转载 2020-09-08 17:11:22 · 124 阅读 · 0 评论 -
String,StringBuilder,StringBuffer 实现原理解析
定义:从jdk1.5开始提供的新的封装字符串的类,StringBuilder,其字符串拼接操作的效率远远高于 String。Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串简介:我们知道字符串其实就是由若干个字符线性排列而成的,可以理解为字符数组Array,那么既然是数组实现的,那就需要考虑到数组的特性,数组在内存中是一块连续的地址空间块,即在定义数组的时候需要指定数组的大小换言之, 数组就分为可变数组和不可变数组。可变数组能够动态插入和删除原创 2020-07-18 15:11:37 · 286 阅读 · 0 评论 -
zookeeper集群部署
下载地址 http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz下载不了可以:http://mirror.bit.edu.cn/apache/zookeeper注意请下载:下面包在下载使用后报错:Error: Could not find or load main ...原创 2019-12-31 15:15:21 · 178 阅读 · 0 评论 -
java中常用到的javabean 转换另一javabean 对象
在开发中经常返现对user对象转换其他的user对象时候需要相互转换时,下面方法可参考:/** * 将一个对象转换为另一个对象 * @param <T1> 要转换的对象 * @param <T2> 转换后的类 * @param orimodel 要转换的对象 * @param castClass 转换后的类 * @return 转换后的对象 ...原创 2019-12-04 15:55:07 · 851 阅读 · 0 评论