Java
文章平均质量分 61
zijikanwa
这个作者很懒,什么都没留下…
展开
-
函数式接口的使用
文章目录一. 背景二. 正常写法三. 使用函数式接口改良一. 背景最近在降低代码重复度的时候,发现有很多方法的整体流程相同,只是中间某些环节的细节不同。为了降低代码重复度,第一次知道函数式接口可以这样用,写出来看着还是很高级的,下面记录一下。二. 正常写法可以看到,TestApiImpl中三个方法都用了try…catch…的写法,整体流程类似,只是处理方式不同,看起来代码很冗余。public interface TestApi { ResultModel<ATestDTO&原创 2021-03-23 16:52:56 · 270 阅读 · 0 评论 -
刷数据之旅
一. 背景今天刷数据,需要根据表T中列a的值来更新列b的值。最开始用程序写的,结果刷完的数据一直有问题,后来让胜哥帮忙看问题,刷成功了。后来又找到一种用sql刷数据的方法。在这里记录一下。刷数据的逻辑:如果某条记录的列b=0,则更新列a=食盐;如果某条记录的列b=1,则更新列a=食醋。二. 刷数据之旅1. 程序刷java代码List<DTO> list = attrDao.listAllnfo();list.stream().forEach(dto->{ if原创 2021-03-17 17:17:26 · 528 阅读 · 0 评论 -
外部sdk的jar包在maven库中的部署
文章目录一. 背景二. 法1:将jar包存储到maven仓库1. 存储到本地仓库2. 存储到XX中央仓库三. 法2:将jar包拷贝到服务器,然后在maven中引入这个jar包一. 背景最近项目里需要引入外部sdk到工程里,本以为是很简单的事情,结果卡在了如何将外部的jar包以maven形式出现在pom文件里。卡了一天,终于解决了。。。将外部jar包在pom文件中使用,通常包含以下三种方式:如果项目可以直接导入jar包,那直接将外部sdk引入到lib中就可以了。如果项目是以maven形式导入p原创 2021-01-22 21:42:32 · 828 阅读 · 0 评论 -
MySQL和Mybatis中JSON类型的使用
文章目录一. 背景二. MySQL中JSON类型的使用2.1 概述2.2 MySQL中json的使用三. MyBatis中JSON类型的使用3.1 概述3.2 要点讲解(1) concat()函数的使用(2)${...} & #{...}3.3 MyBatis中json 的使用(1)法1:collection="params.keys"(不推荐)(2)法2:collection为自定义map,index为map的key,item为map的value四. 参考资料一. 背景最近在做项目的时候,由原创 2021-01-22 20:55:50 · 11710 阅读 · 0 评论 -
InputStream转为String的两种方式
一. 背景在项目开发过程中,经常会从某种存储介质中读取到InputStream流中,之后我们需要将InputStream流转换为String字符串的形式,然后使用这个String串进行后面的操作。经过查询,整理了如下两种方式。二. InputStream转为String的方式1. 使用 inputStream.read 和 ByteArrayOutputStream优点:速度快public static String getStringByInputStream_1(InputStream原创 2020-09-28 15:24:57 · 16464 阅读 · 0 评论 -
fastjson包JSON.parseObject()方法的大坑
一. 大炕1:解析对象字符串为空String body = "";Map<String, String> map = JSON.parseObject(body, Map.class);System.out.println(map);System.out.println(map.isEmpty()); // 抛出异常执行结果nullException in thread “main” java.lang.NullPointerExceptionat com.xxx.xxx原创 2020-08-26 15:34:19 · 6885 阅读 · 0 评论 -
分批获取list集合中的元素
一. 背景项目开发中经常需要将一个list集合分批进行处理,这个处理最近发现比较频繁,因此总结一个小方法,以便后期查看和使用。二. 分批获取list集合代码// 初始化list数据List<String> list = Lists.newArrayList();for(int i=0;i<100;i++){ list.add(""+i);}System.out.println("原始list:"+list);// 分批获取(每5个元素获取一个子集合)for(原创 2020-08-26 10:54:06 · 1712 阅读 · 0 评论 -
stream的Collectors.groupingBy()方法的大坑
1.前言在开发过程中,java8流行的stream流非常的好用,简化代码,又容易读懂,但是它有一个大炕。2. 大坑重现当list集合里某个元素的属性为空,并且你使用Collectors.groupingBy()方法对这个属性进行分组,这时系统会报错。List<DTO> list = Lists.newArrayList();for(int i=0;i<5;i++){ DTO dto = new DTO(); dto.setCode("code"+i);原创 2020-08-20 19:40:08 · 10034 阅读 · 1 评论 -
list和map是否为空
1. 背景项目开发过程中,经常需要判断list和map是否为空(==null)或者空集合(isEmpty())的问题,有时候不知道需不需无效判断,但又怕不判断变成空指针问题,因此总结一下目前遇到的问题。2. 总结通过MyBatis的Dao层查询出的list:如果DB查询结果为空,则返回的list为[]。通过list转换为map:如果list为[],则返回的map为{}。List<String> list = Lists.newArrayList();Map<String原创 2020-08-11 15:31:11 · 868 阅读 · 0 评论 -
字符串和日期格式转换工具类
public class DateUtil { /** * 预定义的日期格式 */ public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; public static final String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm"; /** * 字符串转换成日期 * @param str 字符串 * @param dateFormat 字符串的格式原创 2020-07-08 19:11:34 · 571 阅读 · 0 评论 -
Java范型类的一种使用
文章目录一. 背景和使用二. 实例1. 产品实体DTO2. 工作流3. 抽象操作4. Manager.java5. 运行结果一. 背景和使用今天在看项目代码的时候,发现一个范型类的使用方式,稍稍研究了一下,写了一个Demo。这种范型类的使用场景:多种产品(Adto,Bdto)具有相似的工作流(AbstractWorkflow),但这些工作流(AWorkflow,BWorkflow)的处理方...原创 2020-04-22 16:03:50 · 545 阅读 · 0 评论 -
日期·String类型和Date类型的转换
文章目录一. 概述二. 日期时间工具类三.Test参考资料一. 概述在开发过程中,很多时候都需要用到日期,日期类在后端Java类中的工具类是java.util.Date,但前端展示时并不一定是什么格式的日期形式(比如yyyy-MM-dd,又或yyyy-MM-dd HH:mm:ss,又或其他形式),因此在后端代码编写时,需要将前端传入的String类型日期形式转换为Date(并存入数据库),又...原创 2020-04-13 15:40:21 · 1944 阅读 · 0 评论 -
Java中金额·元和分的转换
一. 概述private final static String VALUE_100 = "100";/** * 1. 分转元 * @param fenAmount 分 * @return */ private String fenConvertToYuan(Long fenAmount){ return new BigDecimal(String.valueO...原创 2020-04-13 12:00:36 · 889 阅读 · 0 评论 -
Mysql字段类型和Java类型的对应关系
文章目录一. 问题复现1. mapper.xml2. dao.java3. manager.java二. 问题解答1. 原因概述2. 原因解读参考资料一. 问题复现之前操作表的时候,都自认为Mysql的bigint类型对应Java的Long类型。今天写一个查询语句返回Map,结果出现类转换异常。怀疑了好久,查了好半天,终于搞清楚是为什么了。问题现场是这样子滴…1. mapper.xml...原创 2020-03-31 16:37:37 · 1554 阅读 · 1 评论 -
Map的keySet()方法得到的顺序问题
文章目录一. 结论二. 代码实现一. 结论Map的常用实现类Hashtable、TreeMap、HashMap、LinkedHashMap的keySet()方法获取key的顺序:LinkedHashMap.keySet()得到的Set是有序的;其他三个得到的Set都是无序的。二. 代码实现public class MapKeySetTest { private H...原创 2020-01-13 14:16:31 · 7698 阅读 · 1 评论 -
前后缀的高级写法
文章目录一. 字符串·前缀二. 字符串·后缀一. 字符串·前缀通常写法String prefix = "CAINIAO_";String resultStr = prefix+"LBX123456";System.out.println(resultStr);高级写法// 前缀是CAINIAO_String prefix1 = "CAINIAO_%s";String ...原创 2019-12-16 11:28:38 · 224 阅读 · 0 评论 -
MyBatis中@Param的使用
文章目录一. Dao层方法参数是基本数据类型1. 方法参数只有一个1.1 法1:不加@Param注解1.2 法2:加@Parma注解2. 方法参数有多个二. Dao层方法参数是String类1. 方法参数只有一个1.1 法1:不加@Param注解1.2 法2:加@Parma注解2. 方法参数有多个三. Dao层方法参数是对象类参考资料总结 <![if supportMisalig...原创 2019-11-13 20:38:21 · 1109 阅读 · 0 评论 -
方法传递过程中对象引用和对象赋值问题
文章目录一. 问题提出一. 问题提出今天在项目的调试过程中,出现一个我咋看咋对,但日志打出来却是错误的问题,我又请凯哥,栋哥和波哥都帮我看一下,他们也都觉着是这段代码没有问题,但结果为什么是错误的呢?下面来看一下是什么问题?问题代码复现class A{ private String features; public String getFeatures() { ...原创 2019-11-13 18:27:33 · 296 阅读 · 0 评论 -
List集合的加减操作
文章目录一. 对List本身有改变二. 对List本身无改变参考资料一. 对List本身有改变概述List1.addAll(List2); // List1与List2两个集合相加,返回boolean值。原有List1值有变化,List2不变List1.removeAll(List2); // List1与List2两个集合相减,返回boolean值。原有List1值有变...原创 2019-11-13 10:29:28 · 8806 阅读 · 3 评论 -
Collection转List
文章目录一. 任务发布1. 法1:Java7 for循环解决2. 法2:使用Streams+lambda3. 法3:使用Streams+方法引用参考资料一. 任务发布Collection<Collection<Double>> items -> List<List<Double>> itemsList1. 法1:Java7 for循...原创 2019-11-12 20:12:43 · 2126 阅读 · 0 评论 -
Java8 Collectors.toMap的两个大坑
文章目录一. 坑1:Duplicate Key时抛出IllegalStateException异常1. 概述2. 大坑复现3. 大坑解决二. 坑2:value为空时抛出NullPointerException异常1. 概述2. 大坑复现3. 大坑解决3.1 法1:value值判空设置3.2 法2:使用`collect(Supplier supplier, BiConsumerCollector...原创 2019-11-12 17:53:27 · 6809 阅读 · 0 评论 -
List列表去重方法
文章目录一. 对列表元素为String类的去重二. 对列表元素为实体类的去重三. 对列表元素为实体类某属性的去重参考资料一. 对列表元素为String类的去重推荐方法:使用Jav8 Stream类的distinct()方法。该方法使用hashCode()和eqauls()方法获取不同元素。因此,需要去重的类必须实现这两个方法。因为String类已经重写了这两个方法,因此去重可以直接使...原创 2019-11-12 16:05:37 · 945 阅读 · 0 评论 -
两个Long和两个String之间的比较
文章目录一. 两个Long类的比较1. 使用equals()方法2. 使用Long类的longValue()方法二. 两个String类的比较1. 使用equals()方法参考资料一. 两个Long类的比较1. 使用equals()方法Long a = new Long(3);Long b = new Long(3);System.out.println(a.equals(b));...原创 2019-11-12 14:56:57 · 689 阅读 · 0 评论 -
IDEA编译报错 [javacTask:源发行版1.8 需要目标发行版1.8]
1. 问题IDEA编译时出现以下问题2. 解决perferences -> Build,Execution, Deployment -> Compiler -> Java Compiler设置相应Module的 bytecode version参考资料[idea] 编译报错 javacTask:源发行版1.8 需要目标发行版1.8...原创 2019-10-15 11:37:47 · 360 阅读 · 0 评论 -
Usage of API documented as @since 1.8+”报错解决
1. 问题2. 问题原因由于使用了JAVA8的新特性,但是Language Level(最低可支持的版本)比较低,无法支持这些特性。我这里设置的Language Level为6.0,可是却使用了8.0/9.0的新特性Lambda表达式,6.0无法解析这些特性,出现报错信息。3. 解决打开Project Structure,选泽侧边栏的Modules,在Sources窗口中修改La...原创 2019-10-15 10:42:03 · 662 阅读 · 0 评论 -
Runnable实现类的成员变量之线程安全问题
文章目录一. 先上结论二. 问题复现三. 解决方法1. 法1:使用原子类AtomicInteger2. 法2:使用synchronized关键字一. 先上结论当多个线程共用一个Runnable实现类的对象numRunnable时(Thread thread = new Thread(numRunnable,"thread"+i)),Runnable实现类的成员变量是线程不安全的!二. ...原创 2019-08-14 14:37:35 · 1442 阅读 · 0 评论 -
包装类的默认值是null
文章目录1. 先放结论2. 示例问题描述:今天写代码过,没有给包装类的成员变量赋值,本以为它会有默认值,结果发现包装类的成员变量值为null,网上差了差,才知道包装类的默认值为null。1. 先放结论包装类的默认值都是null。2. 示例public class baozhuanlei { private static Boolean b; private stati...原创 2019-08-05 19:41:09 · 2288 阅读 · 0 评论 -
junit单元测试和Main方法之多线程
文章目录一. 先放结论二. junit执行多线程示例遇到的问题:这两天写项目需求遇见一个大坑,代码两下写完了,测试卡了我整整一天,报错信息显示各种连接异常(oss异常或者sql异常),导致我大部分时间都陷入查找oss为什么连接不上的问题,耗费了大量时间。后来发现是单元测试时执行了异步任务的问题!把异步任务取消后,程序立马跑通了,搞了我一整天的问题终于落在帷幕,避免以后再次卡住,在此记录juni...原创 2019-08-03 09:49:00 · 1938 阅读 · 1 评论 -
map.getOrDefault(value,defaultValue)方法的坑
今天项目上线,结果竟然出现了空指针异常,很尬,赶紧排查问题。原来是没有详细了解这个方法出现的问题。1. 方法解释Map接口的getOrDefault()方法的源代码default V getOrDefault(Object key, V defaultValue) { V v; return (((v = get(key)) != null) || co...原创 2018-08-02 17:11:25 · 4262 阅读 · 0 评论 -
Class.getResource()的资源路径问题
在Java中,使用Class.getResource()获取资源时,经常会遇到读取资源文件时的路径问题。1. 项目结构2. Class.getResource(String path)说明//path不以"/"开头:当前类所在的包目录//path以"/"开头:class path,即当前项目System.out.println(Main.class.getResource...原创 2018-06-04 19:19:50 · 5415 阅读 · 0 评论 -
Java apache的StringUtils
文章目录@[toc]一. 概述一. 概述StringUtils类是操作String类型数据的常用工具类。所属包:org.apache.commons.lang.StringUtils或org.apache.commons.lang3.StringUtils(建议使用后者)maven依赖<dependency> <groupId>org.apache.common...原创 2019-11-08 20:44:42 · 295 阅读 · 0 评论 -
增强for循环和stream.forEach()遍历集合时的跳出操作
文章目录一. 先说结论二. 代码验证1. 增强for循环·break2. 增强for循环·continue3. stream.forEach()·return参考资料一. 先说结论普通for循环遍历集合:可以使用break跳出整个for循环,使用continue跳出本次循环。增强for循环:可以使用break跳出整个for循环,使用continue跳出本次循环。stream.forE...原创 2019-11-08 19:44:18 · 24165 阅读 · 0 评论 -
forEach语句能否修改集合元素的值?
文章目录一. 先说结论二. 问题复现1. 数组元素为变量2. 集合/数组元素为对象三. 赋值测试1. 赋值测试·变量赋值2. 赋值测试·对象赋值参考资料一. 先说结论forEach语句可以修改集合/数组元素为对象的值,但不可以修改数组元素为变量的值。forEach语句不能在集合/数组中添加或删除对象。二. 问题复现1. 数组元素为变量结论:当数组元素为变量时,forEach循...原创 2019-11-08 15:06:23 · 5293 阅读 · 0 评论 -
Enum的通用写法
文章目录一. Enum的通用写法二. Enum在switch中的用法参考资料一. Enum的通用写法public enum TypeEnum { /** * 类型枚举实例 */ TYLE_1("1","类型1"), TYPE_2("2","类型2"), TYPE_3("3","类型3"); TypeEnum(String code...原创 2019-10-29 22:32:23 · 1424 阅读 · 0 评论 -
[lambda表达式]-[函数式接口]-[Stream接口]
文章目录一. lambda表达式1. lambda表达式基础语法格式2. lambda表达式支持的方法引用和构造器引用二. 函数式接口1. 函数式接口简介2. 常用的函数式接口介绍2.1 JDK1.8之前已有的函数式接口2.2 java8中java.util.function包下内置的核心接口2.3 java8中java.util.function包下内置的其他常用的函数式接口3. Java8 F...原创 2019-10-29 20:56:01 · 198 阅读 · 0 评论 -
状态代码
状态代码 状态代码(也称作错误代码),指为服务器所接收每个请求(网页点击)分配的 3 位数代码。多数有效网页点击都有状态代码 200("正常")。"网页未找到"错误会生产 404 错误。某些常见的代码以粗体显示。1xx(临时响应)用于表示临时响应并需要请求者执行操作才能继续的状态代码。代码说明100(继续)请求者应当原创 2017-01-23 10:27:25 · 677 阅读 · 0 评论 -
Fastjson概述和使用
文章目录一. Fastjson概述二. Fastjson的常用方法1. Java对象-> JSON字符串2. JSON 字符串->Java 对象3. 创建JSON对象三. @JSONField注解1. @JSONField注解概述2. @JSONField的配置方式1. `name`:序列化对象的名称2. `ordinal`:指定字段的顺序3. `format `:格式化 Date 属...原创 2019-07-29 10:41:34 · 260 阅读 · 0 评论 -
Java截取字符串的方法
文章目录1. split()方法:按正则表达式截取字符串2. subString()方法:按索引截取字符串2.1 传入一个参数:subString(int beginIndex)2.2 传入两个参数:substring(int beginIndex, int endIndex)2.3 substring()+indexOf():根据某个字符截取字符串参考资料1. split()方法:按正则表达...原创 2019-08-06 16:23:23 · 1019 阅读 · 0 评论 -
java判断字符串转换为数字
文章目录一. Integer.parseInt(String str)1. 定义字符串是否可以转换为数字的方法2. 测试二. matcher.matches()1. 定义字符串是否可以转换为数字的方法2. 测试3. 使用三. Integer.valueOf(String s)1. 方法描述2. 使用方法参考资料一. Integer.parseInt(String str)1. 定义字符串是否...原创 2019-08-06 19:28:01 · 2553 阅读 · 0 评论 -
Java判断数字转换为字符串
文章目录一. int转换为String的方法1. 法1:num + ""2. 法2:String.valueOf(num)3. 法3:Integer.toString(num)二. Object转换为String的方法1. 法1:object+""2. 法2:String.valueOf(object)一. int转换为String的方法1. 法1:num + “”public class...原创 2019-08-14 15:41:17 · 226 阅读 · 0 评论