Java
文章平均质量分 52
〆、风神
一只热爱编程的程序猿
展开
-
DozerMapper:对象转换器使用教程
【代码】DozerMapper:对象转换器使用教程。原创 2022-12-22 11:28:12 · 514 阅读 · 0 评论 -
JAVA反射之访问字段
Java的反射API提供的Field类封装了字段的所有信息:通过Class实例的方法可以获取Field实例:getField(),getFields(),getDeclaredField(),getDeclaredFields();通过Field实例可以获取字段信息:getName(),getType(),getModifiers();通过Field实例可以读取或设置某个对象的字段,如果存在访问限制,要首先调用来访问非public字段。通过反射读写字段是一种非常规方法,它会破坏对象的封装。原创 2022-12-20 18:14:50 · 142 阅读 · 0 评论 -
使用EasyExcel导出excel
【代码】使用EasyExcel导出excel。原创 2022-09-22 17:26:32 · 331 阅读 · 0 评论 -
MySQL8.0.24版本`decimal` 的最大位数是 `65`,最大小数点位数是 `30`
【代码】MySQL8.0.24版本`decimal` 的最大位数是 `65`,最大小数点位数是 `30`原创 2022-09-22 16:14:12 · 941 阅读 · 0 评论 -
谈谈new Thread的弊端及Java四种线程池的使用
1.new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub }}).start();说说弊端:a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c原创 2022-05-21 18:24:42 · 1155 阅读 · 0 评论 -
Spring注解@Transactional是什么?具体的使用方法
本篇文章,我将和大家介绍 Spring 中的一个注解 @Transactional,将介绍一下 @Transactional的基本概念以及具体的使用方法。希望本篇文章能够对对大家的学习有所帮助!一、Transactional声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。简而言之,@Transactional注解在代码执行出错的时候能够进行事务的回滚。二、实战1、首先我在Mysql原创 2022-05-21 18:14:36 · 1345 阅读 · 0 评论 -
RSA加解密、签名及验签的原理及工具类
package com.ahysf.common.utils;import cn.hutool.core.codec.Base64;import com.ahysf.controller.saas.SaaSDemo;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.Cipher;import java.nio.charset.StandardCharsets;import java原创 2022-03-15 11:37:33 · 2235 阅读 · 0 评论 -
Lombok之EqualsAndHashCode注解
1)测试准备(父类People,子类User)@Data//不能在此加@EqualsAndHashCode(callSuper = true),会出现报错//Generating equals/hashCode with a supercall to java.lang.Object is pointless.//翻译:生成对该对象的equals和hashcode方法是毫无意义的,最后分析完原理在回答这个错误的原因public class People { private Integer原创 2022-03-15 11:52:24 · 2266 阅读 · 0 评论 -
Linux 中安装 JDK(rpm包安装)
1、进入链接下载 rpm 安装包https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html2、下载完成后,上传到 Linux3、开始安装命令sudo rpm -ivh jdk-8u211-linux-x64.rpm4、查询 jdk 安装路径查询命令find / -name java进入到安装路径下cd /usr/java/jdk1.8.0_211-amd64/查看当前路径,并将该路径进行原创 2022-02-19 01:15:49 · 2460 阅读 · 0 评论 -
HashMap的扩容机制
为了方便说明,这里明确几个名词:capacity 即容量,默认16。loadFactor 加载因子,默认是0.75threshold 阈值。阈值=容量*加载因子。默认12。当元素数量超过阈值时便会触发扩容。什么时候触发扩容?一般情况下,当元素数量超过阈值时便会触发扩容。每次扩容的容量都是之前容量的2倍。HashMap的容量是有上限的,必须小于1<<30,即1073741824。如果容量超出了这个数,则不再增长,且阈值会被设置为Integer.MAX_VALUE( ,即永远不会超原创 2021-11-15 10:38:02 · 2817 阅读 · 0 评论 -
漫画:什么是HashMap?
简介众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。那你知道HashMap默认的初识长度是多少?为什么这么规定?高并发情况下,为什么HashMap可能会出现死锁?在Java8当中,HashMap的结构有什么样的优化?本文将为你深度解读HashMap的灵魂三问!众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做En原创 2021-11-15 15:29:21 · 119 阅读 · 0 评论 -
HashMap的实现原理
概述HashMap是Java中对Map接口的实现类。是其最常用的实现类中之一。主要有以下几个特性:HashMap中的key和value都允许为null,但最多只能拥有一个null的key,再次加入null的key会覆盖上一次的keyHashMap不保证顺序。HashMap非线程安全。HashMap的数据结构HashMap(jdk1.7)内部是以数组+链表的方式储存的数据。可以参考下图:从上图中可以看出,HashMap 底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个 Ha原创 2021-11-15 10:24:07 · 4394 阅读 · 0 评论 -
java8对类集合使用 Comparator.comparing 进行排序
List<类> list; 代表某集合 //返回 对象集合以类属性一升序排序list.stream().sorted(Comparator.comparing(类::属性一)); //返回 对象集合以类属性一降序排序 注意两种写法list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序list.stream().sorted(Comparator.comparing(类::属性原创 2021-10-14 11:47:09 · 1226 阅读 · 0 评论 -
Date的after和before详解
Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等于时,返回false;原创 2021-10-14 10:02:23 · 926 阅读 · 0 评论 -
JsonNode与java相互转换
将Jackson JsonNode数组转换为Java List <string>JsonNode jsonNode = getJsonPayload();JsonNode partial = jsonNode.path("someArrayField");List<String> z = new ObjectMapper().readValue(partial.traverse(), new TypeReference<ArrayList<String>>(){})原创 2021-06-29 19:20:20 · 4664 阅读 · 0 评论 -
调用企业微信API返回的json体实体类接收不到?
调用企业微信API过程中,发现对方返回的字段都不符合驼峰命名法,例如 OrderNo、User等面对这种事情,也只能选择默默忍受,把字段全改成首字母大写,package com.byfunds.app.model;import com.fasterxml.jackson.annotation.JsonIgnoreProperties;import com.fasterxml.jackson.annotation.JsonInclude;import com.fasterxml.jackson.原创 2021-06-23 10:34:13 · 373 阅读 · 0 评论 -
Java8新特性-Optional
本篇文章将详细介绍 Optional 类,以及如何用它消除代码中的 null 检查。在开始之前首先来看下什么是 NPE,以及在 Java 8 之前是如何处理 NPE 问题的。空指针异常(NullPointException,简称 NPE)可以说是所有 Java 程序员都遇到过的一个异常,虽然 Java 从设计之初就力图让程序员脱离指针的苦海,但是指针确实是实际存在的,而 Java 设计者也只能是让指针在 Java 语言中变得更加简单易用,而不能完全剔除,所以才有了常见对的关键字 null。Optiona原创 2021-06-09 16:11:00 · 198 阅读 · 1 评论 -
Java8新特性-Stream
Stream API。它位于java.util.stream包中。Stream API的特点是:Stream API提供了一套新的流式处理的抽象序列;Stream API支持函数式编程和链式操作;Stream可以表示无限序列,并且大多数情况下是惰性求值的。创建StreamStream.of()创建Stream最简单的方式是直接用Stream.of()静态方法,传入可变参数即创建了一个能输出确定元素的Stream:、public class Main { public static v原创 2021-06-09 11:52:37 · 164 阅读 · 0 评论 -
java stream distinct() 按指定对象属性进行去重
方式一distinct()不提供按照属性对对象列表进行去重的直接实现。它是基于hashCode()和equals()工作的。如果我们想要按照对象的属性,对对象列表进行去重,我们可以通过其它方法来实现public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { Map<Object,Boolean> seen = new Concur原创 2021-06-04 15:57:43 · 11672 阅读 · 0 评论 -
java之Builder模式
@Datapublic class Student { private String id; private String name; private String sex; private int age; private String grade; private String email; private String addr; public static class Builder { // 必须初始化的属性 private String id; private.原创 2021-05-25 18:13:25 · 240 阅读 · 0 评论 -
java对象的序列化和反序列化
一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会原创 2021-05-24 18:24:22 · 281 阅读 · 1 评论 -
java之接口(interface)
接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和抽象方法的定义,而没有变量和方法的实现。案例:动物都会吃饭,睡觉首先定义一个动物吃饭的接口:package cn.com.qwer;/*如果一个类中,既有抽象方法,又有非抽象方法,那么该类只能定义为抽象类,不能定义为接口如果一个类中,只有抽象方法,没有非抽象方法,那么该类可以定义为接口 一般就定义为接口定义一个接口,使用in原创 2021-05-24 16:27:28 · 157 阅读 · 0 评论 -
Java基本数据类型和长度
8种基本类型————字符类型:char————布尔类型:boolean————数值类型:是整数类型还是浮点数类型————————整数类型:byte、short、int、long————————浮点数类型:float、double类型字节表示范围包装类byte(字节型)1-128~127Byteshort(短整型)2-32768~32767Shortint(整型)4-2147483648~2147483647Integerlong(长整型原创 2021-04-27 19:22:59 · 653 阅读 · 0 评论 -
java 集合 之 如何选择集合
是否需要存储键值对——否:Set或者List————数据是否唯一——————是:Set——————是否有序————————是,用LinkedHashSet,TreeSet————————否,用HashSet————————如果你只知道数据要唯一但不确定是否有序,就要HashSet——————否:List————————是否线程安全——————————是:Vector——————————否:ArrayList,LinkedList————————————查询多用ArrayList—.原创 2021-04-22 14:14:00 · 121 阅读 · 0 评论 -
Java中List集合的交集,差集,并集
交集、差集、并集的概念交集:以属于A且属于B的元素为元素的集合成为A与B的交(集)差集:以属于A而不属于B的元素为元素的集合成为A与B的差(集)并集:以属于A或属于B的元素为元素的集合成为A与B的并(集)使用需求list的方法说明备注交集listA.retainAll(listB)listA内容变为listA和listB都存在的对象listB不变差集listA.removeAll(listB)listA内容变为listA存在而listB不存在的对象list原创 2021-04-20 16:15:12 · 694 阅读 · 1 评论 -
BigDecimal的用法详解
一、简介Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的转载 2021-04-22 11:32:20 · 312 阅读 · 0 评论