
Java 基础
北漂编程小王子
程序猿的工作日记
展开
-
java csv.writer.writerow在字段中用逗号写不正确
java csv逗号解析问题原创 2022-11-24 14:23:23 · 910 阅读 · 0 评论 -
AESGCM256 加密解密
Java AESGCM256加密解密原创 2022-05-20 13:41:20 · 3430 阅读 · 1 评论 -
java BigDecimal 加减乘除运算
注意除法运算,分母为0的问题,还有就是除法后保留几位小数点的问题 //两个flot相加 public float twoFloatAdd(float a, float b) { BigDecimal a1 = new BigDecimal(Float.toString(a)); BigDecimal b1 = new BigDecimal(Float.toString(b)); Float add = a1.add(b1).floatValue()原创 2021-11-29 15:14:51 · 1188 阅读 · 0 评论 -
BigDecimal 四舍五入保留两位小数
/** * 保留小数点后两位,直接转成String,一般用于前端直接显示 * * @param value * @return */ public static String keep2DecimalPlaces(float value) { BigDecimal b1 = new BigDecimal(value); return b1.setScale(2, BigDecimal.ROUND_HALF_UP).t.原创 2021-11-28 16:05:29 · 13398 阅读 · 1 评论 -
Java8 findAny和findFirst的区别
List<String> lst1 = Arrays.asList("Jhonny", "David", "Jack", "Duke", "Jill","Dany","Julia","Jenish","Divya");List<String> lst2 = Arrays.asList("Jhonny", "David", "Jack", "Duke", "Jill","Dany","Julia","Jenish","Divya"); Optional<String>原创 2021-11-28 13:52:51 · 699 阅读 · 0 评论 -
Future 实现异步调用
项目需要实现操作异步调用,直接上代码:@ApiOperation("执行操作")@PutMapping("/xxxx")public ResultBody approval(@RequestBody @Validated Param param) { try { //逻辑处理 .... Future<Object> result = this.service.do(param); //阻塞上面的方法执行,时间不超过2秒原创 2021-10-22 17:17:30 · 351 阅读 · 0 评论 -
future.get方法阻塞问题的解决,实现按照任务完成的先后顺序获取任务的结果
1、FutureFuture模式是多线程设计常用的一种设计模式。Future模式可以理解成:我有一个任务,提交给了Future,Future替我完成这个任务。期间我自己可以去做任何想做的事情。一段时间之后,我就便可以从Future那儿取出结果。Future提供了三种功能:判断任务是否完成能够中断任务能够获取任务执行的结果向线程池中提交任务的submit方法不是阻塞方法,而Future.get方法是一个阻塞方法,当submit提交多个任务时,只有所有任务都完成后,才能使用get按照任务的提交顺序得原创 2021-10-22 16:40:34 · 6400 阅读 · 0 评论 -
JAVA中“...”三个点
可变长参数,就是这个位置可以传入任意个该类型参数,简单来说就是个数组。public void task(Integer p, Person… persons) {for (Person person : persons) {System.out.println(person.getName+":"+person.getAge()+“岁”)}}原创 2021-08-01 22:08:52 · 134 阅读 · 0 评论 -
jdk1.8 集合中对象按照属性递增排序
List<BillingRealCostDto> sorted = realCostDtos.stream().sorted(Comparator.comparingInt(BillingRealCostDto::getMonth)).collect(toList());原创 2021-07-22 14:28:04 · 735 阅读 · 0 评论 -
java8 lambda 统计list中对象的重复次数
List<Integer> list = new ArrayList() { { add(12); add(20); add(12); add(22); add(22); add(23); add(159);转载 2021-07-08 11:57:41 · 1957 阅读 · 0 评论 -
List int元素倒序排序问题
list集合中是int元素,如何让集合元素按照从大到小排序呢?直接上代码,注意下面例子中有一种是网上找的方法,实测不通过,大家注意,使用最后一种方法!List<Integer> intList = new ArrayList();intList.add(15);intList.add(30);intList.add(45);intList.add(1);intList.add(3);intList.add(7);System.out.println("原始排序:" + intL原创 2021-05-26 15:19:18 · 1140 阅读 · 1 评论 -
Java以逗号分隔的String字符串转int集合
Java 8 Stream实现String ids = "7,8,9,10,11";List<Integer> idList = Arrays.stream(ids.split(",")).map(Integer::parseInt).collect(Collectors.toList());jdk1.8真是很方便,以前版本需要写十多行代码,现在一行代码轻松搞定!...原创 2021-05-26 11:12:14 · 1375 阅读 · 0 评论 -
jdk1.8循环遍历两个List,根据条件,进行相关的赋值操作
首先创建两个对象男生和女生:// 男生 get set和toString这里省略public class SchoolBoy { private String girlId; private String id; private String name; private String grilName;}// 女生 get set和toString这里省略public class Girl { private String id; private String name原创 2021-05-11 14:11:02 · 2770 阅读 · 1 评论 -
springboot+mybatis-plus在log控制台输出sql语句
springboot+mybatis-plus在log控制台输出sql语句的方法,有两种方法可以实现:1.第一种将log-impl 配置到原有的mybatis-plus的configuration下(格式为yml的规范),该方法会将sql语句和查询的结果都打印到控制台mybatis-plus: configuration: # 是否将sql打印到控制面板(该配置会将sql语句和查询的结果都打印到控制台) log-impl: org.apache.ibatis.原创 2021-03-16 10:55:53 · 3745 阅读 · 0 评论 -
LocalDateTime 时间格式问题
LocalDateTime 时间格式问题实体类LocalDateTime 字段上加注解:@JsonFormat(shape=JsonFormat.Shape.STRING, pattern=“yyyy-MM-dd HH:mm:ss”)@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”) //,timezone=”GMT+8”@DateTimeFormat 是用来接收前端传入的字符串时间,解析成Date@JsonFormat 是用来向前端传送Date时进原创 2021-03-14 19:02:58 · 1373 阅读 · 0 评论 -
java枚举类-根据key获取value及根据value获取key
package com.lw.coodytest.enums;/** * @Description 汽车类型枚举 */public enum CarTypeEnum { CAR_TYPE_BMW("bmw", "宝马"), CAR_TYPE_BC("bc", "奔驰"), CAR_TYPE_AUDI("audi", "奥迪"); private String type; private String desc; private CarType原创 2021-03-02 13:29:32 · 2476 阅读 · 0 评论 -
String.format()的简单用法介绍
Java中String.format()的简单用法介绍在运用字符串的时候,我们常常会用到String.fromat()函数来对字符串进行加工,得到我们想要的格式,那我们就来看看一些简单用法。String.format()函数相当于将括号内的量,按照自己的想要的格式拼接成一个字符串,然后输出。作用效果有点像C语言中的printf()函数。常用转换符:①通用浮点数:比%f,%a长度更短的一种格式输出,显示6位有效数字,而且会进行四舍五入。②散列码:不必用冗长的线性搜索技术来查找一个键,而是用一个原创 2021-02-18 12:58:46 · 168274 阅读 · 1 评论 -
Java之泛型<T> T与T的用法
<T> T表示返回值是一个泛型,传递什么类型,就返回什么类型的数据,而单独的T就是表示当前对象创建时,就限制你传递的参数类型,下面案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T> T 和T的两种方法实现。1、<T>T 用法这个<T> T 表示的是返回值T是泛型,T是一个占位符,用来告诉编译器,这个东西先给我留着,等我编译的时候,告诉你。package xxxx;import java.util.ArrayList;原创 2021-01-17 12:09:52 · 7055 阅读 · 0 评论 -
Java:集合,对列表(List)中的自定义对象按属性(字段)排序(正序、倒序)的方法
package com.ncic.eam.app.service.mdm2eam;import com.ncic.eam.command.domainmodel.mdm2eam.SkyDevOrg;import com.ncic.eam.command.domainmodel.others.SkydevUser;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import ja原创 2021-01-06 15:02:20 · 848 阅读 · 0 评论 -
java httpResponse调用getEntity()方法时注意事项
项目中需要调用外部的接口,接口返回HttpResponse 对象,在取返回值里的内容的时候,犯了一个很隐蔽的问题!httpResponse.getEntity()不能调用多次,只能调用获取一次,存成一个临时的变量接收一下,在用这个临时变量进行后续的逻辑,如果不用变量接收的话,第二次再调用的时候取出来的对象就是null,导致后续处理报空指针异常!错误示例://注意这个地方取了一次log.info("responseStri:"+EntityUtils.toString(httpResponse.getE原创 2020-08-07 18:11:46 · 20220 阅读 · 0 评论 -
Java base64加密解密 两种实现方式
1、为什么要使用Base 64Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输。 由于一些二进制字符在传输协议中属于控制字符,不能直接传送,所以需要转换一下才可以。由于某些系统中只能使用ASCII字符,Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法,Base64特别适合在http,mime协议下快速传输数据。比如网络中图片的传输。 Base64,并非安全领域下的加密解密算法。虽然经常遇到所谓的base64的加密解密。但base64只能算是转载 2020-08-03 17:34:24 · 889 阅读 · 0 评论 -
BigDecimal大小比较
BigDecimal比较大小方法:使用compareTo方法。int flag = bigdemical1.compareTo(bigdemical2)flag = -1,表示bigdemical1小于bigdemical2;flag = 0,表示bigdemical1等于bigdemical2;flag = 1,表示bigdemical1大于bigdemical2;实际应用中直接跟0比较就可以了,大于0就是bigdemical大于bigdemical1等于0就是bigdemical等于b原创 2020-05-19 10:38:39 · 97154 阅读 · 2 评论 -
java如何进行字符串与数字进行加减乘除四则运算
我们将举例说明:String str1 = "123.456";String str2 = "456.789";先将字符串转化为大数字BigDecimal:BigDecimal num1 = new BigDecimal(str1);BigDecimal num2 = new BigDecimal(str2);通过BigDecimal的加减乘除方法,进行运算://加法:BigDecimal result = num1.add(num2);//减法:result = num1原创 2020-05-15 16:49:45 · 4351 阅读 · 0 评论 -
Float精度丢失处理方法
项目开发过程中,有很多涉及到金额、款项类的输入框,前端输入后传递到后端接收,很多时候直接用Float,Double类型接收,数值不是很大时候没问题,精度不会出错,但是一般数值过大就会出现小数点精度丢失,原理应该是跟Float,double类型的底层存储位数有关系,本文介绍java中如何处理此类问题!处理方法是 后台用 java.math.BigDecimal类型的参数接收,不要使用Float,Double类型,BigDecimal会将前端传递的参数精准的接收,在直接入库就可以啦!还有就是在后端项目涉及数原创 2020-05-09 12:08:32 · 1990 阅读 · 0 评论 -
用Float类型接收前台传递String类型精度异常
项目里很多使用涉及金额钱的输入框,oralce数据库一般设置成number(18,2)就能满足大多数项目存储需求但是后台使用Float类型接收的时候,会出现精度错误,例如前台录入的是29999999,后台用Float接收后,自动+1,转成30000000,而且Float自动转换使用了科学计数法,导致精度错误了,正常要求个位数输入多少就传递多少才对,小数点一般四舍五入没问题。解决办法,后台接收的...原创 2020-04-29 11:12:49 · 960 阅读 · 0 评论 -
List集合切割分组成多个固定长度的多个集合
项目遇到这种场景,一个很大List集合对象,需要批量的插入到数据库中,为了提高保存的效率,采用切割的方法,将一个大的集合,切割成多个固定大小的多个集合,再分多次,批量将这些集合保存入库,前提交代清楚,程序员还是看代码比较直接,代码如下:封装的核心Util类public class ChoppedUtil {//第一个参数表示要切割的List集合,第二个参数表示分割后的集合大小 pu......原创 2020-04-21 14:21:11 · 1727 阅读 · 0 评论 -
Timestamp和String相互转换
Timestamp和String类型相互转换例子: String str = "2018-05-06 10:30:40"; //String 转 Timestamp Timestamp time = Timestamp.valueOf(str); //Timestamp 转 String String strn = new Simpl...原创 2020-04-16 12:35:28 · 8299 阅读 · 0 评论 -
jdk1.8集合操作新特性
jdk1.8出了很多新特性,对集合操作很多,整理了一下方法,供大家使用Map<String,Supplier> map = materialSupplierList.stream().collect(Collectors.toMap(MaterialSupplier::getMaterialCode, supplier -> supplier));List<Lon...原创 2019-07-25 16:44:37 · 3163 阅读 · 0 评论 -
jdk1.8如何找到List集合中重复对象
项目在开发大批量导入功能的时候,除了要要将导入的每一行和数据库比对,校验数据是否已经存在,还要判断自身导入的EXCEL数据里的重复数据呢。List里对象属性特别多,而且可能有变化,如何快速的过滤数据…jdk 1.8以后对集合操作提供了流对象的便捷操作,可以实现以上需求,废话不多说,程序猿还是直接看代码直观一些!!!!第一步、利用lombokjar包里的EqualsAndHashCode注解,...原创 2019-07-25 16:32:27 · 12074 阅读 · 3 评论 -
java中finally唯一不执行的情况
在try块或者catch块中调用了退出虚拟机的方法(即System.exit(1);),否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块总是会被执行的。...原创 2019-02-26 09:54:10 · 2478 阅读 · 0 评论 -
java 排除法定节假日以及正常周六日,计算两个Date相差的小时数
项目组有一个需求,计算两个Date类型参数,相差的小时数。业务上有一些特殊的用途,可能用于绩效考核的目的吧…如果不排除节假日周六日的话,处理起来非常easy,是个程序员都能写出来,但是…如果要排除法定节假日,排除正常周六日,同时特殊支持法定的工作日(有一些周六日,国家强制正常上班),那么处理起来就非常麻烦,我耗时大概1天半的时间,用基础的Date和Calendar实现,下面是具体的实现代码,要是...原创 2019-01-14 17:10:44 · 6154 阅读 · 9 评论