
Java基础
雪落南城
这一场人间流浪,长随步履温柔相候
展开
-
mapstruct提示 No property named exists in source parameter(s)
mapstruct找不到属性原创 2022-07-12 13:16:49 · 3581 阅读 · 1 评论 -
动态代理实战及注意点
直接上代码:public class DynamicProxy { public static void main(String[] args) { //CGlib Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(User.class); enhancer.setCallback(new MyCgProxy()); User o = (User)原创 2021-10-10 15:06:26 · 256 阅读 · 0 评论 -
String什么情况下用不到常量池?
三种情况1.String str = “小鹿”;2.String str = new String(“小鹿”);3.public class demo {private String text;}1.在编译的时候,在常量池中创建"小鹿"运行时,返回常量池中的内容2.在编译的时候,在常量池中创建"小鹿"在调用new的时候,在堆中创建String对象,引用常量池中的内容3.在运行时,创建的String会在堆中,不会在常量池中但是,动态创建的字符串对象,调用intern方法,在JDK1.6版原创 2021-05-12 12:54:36 · 713 阅读 · 1 评论 -
Java写入txt文件
package com.example.demo.testmain;import lombok.extern.slf4j.Slf4j;import org.apache.commons.collections.CollectionUtils;import org.apache.commons.io.IOUtils;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;impor原创 2020-09-08 10:57:48 · 796 阅读 · 0 评论 -
线程池中用到的阻塞队列-BlockingQueue
接口源码:public interface BlockingQueue<E> extends Queue<E> { /** * 向队列中添加元素 成功返回true,队列满了则抛出异常 */ boolean add(E e); /** * 向队列中添加元素,成功返回true,队列满了返回false */ ...原创 2020-02-21 18:46:28 · 567 阅读 · 0 评论 -
Java关键字-volatile
volatile作用:1、保证可见性2、禁止指令重排3、不保证原子性JMM java memory model Java内存模型1、可见性2、原子性3、有序性关于单利模式中 DCL(double check lock)机制 线程不安全原因解析...原创 2020-02-16 22:33:23 · 201 阅读 · 0 评论 -
Java锁-Synchronized
ReentrantLock的原理是改变抽象队列同步器中的state值来判断是否加锁synchronized的原理是 修改对象头中的值原创 2020-02-14 15:39:18 · 482 阅读 · 0 评论 -
查看对象结构
Java对象的结构概念我们都了解对象头、实例数据、填充数据那么如何将Java对象结构展现出来呢1、pom文件<dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version&g...原创 2020-02-14 15:27:52 · 305 阅读 · 0 评论 -
HttpClient和RestTemplate添加代理proxy
@Bean("innerHttpClient")public CloseableHttpClient innerHttpClient() { PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); // Increase max total connection to 2...原创 2020-01-10 11:18:41 · 3438 阅读 · 0 评论 -
Java只有值传递-相关证明
先放结论:java只有值传递,即使是引用类型也是拷贝一份引用地址作为值代码public static void main(String[] args) { UserDTO userDTO = new UserDTO(); userDTO.setId(0); userDTO.setName("main"); pass1(userD...原创 2020-01-03 16:36:58 · 229 阅读 · 0 评论 -
Java对象结构
32位JVM中 mark word结构信息:锁状态 25bit 4bit 1bit 2bit 23bit 2bit 是否偏向锁 锁标志位 无锁 对象的HashCode 分代年龄 0 01 偏向锁 线程ID Epoch 分代年龄 1 01 轻量级锁 指向栈中锁记录的指针...原创 2020-01-02 15:19:47 · 191 阅读 · 0 评论 -
controller层利用JSON接收对象数组
某些场景下,我们需要接收自定义对象的List/数组,这时候使用form表单格式传送可能不方便可以使用JSON的格式首先 后端://com.alibaba.fastjson;@PostMapping("/submitApply")//@RequestParam Long settlementApplyId, @RequestBody ArrayList<UploadF...原创 2019-12-30 18:38:32 · 5154 阅读 · 0 评论 -
查询指定路径下某个类的所有子类
@Testpublic void testKafkaException() throws Exception { List<Class<RetriableException>> subClasses = getSubClasses(RetriableException.class, "org.apache.kafka.common.errors"); ...原创 2019-11-08 16:30:00 · 431 阅读 · 0 评论 -
基本类型和包装类型
基本类型和包装类型的区别主要有以下 4 点。01、包装类型可以为 null,而基本类型不可以别小看这一点区别,它使得包装类型可以应用于 POJO 中,而基本类型则不行。POJO 是什么呢?这里稍微说明一下。POJO 的英文全称是Plain Ordinary Java Object,翻译一下就是,简单无规则的 Java 对象,只有属性字段以及 setter 和 getter 方法,...原创 2019-10-18 16:42:02 · 212 阅读 · 0 评论 -
Java类成员的初始化顺序
先上结论:父类静态代码块-子类静态代码块-父类非静态代码块-父类构造方法-子类非静态代码块-子类构造方法附加结论:静态变量和静态代码块,实例变量和非静态代码块分别是按照代码顺序初始化的代码:package testInherit;/** * @Author:Luobh * @create: 2019-10-16 **/public class Inheritanc...原创 2019-10-16 14:37:48 · 172 阅读 · 0 评论 -
Synchornized原理
使用javap 指令javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。使用方法:1、进入类的java文件所在路径2、javac SynchronizedTest.java3、javap -vSynchronizedTest.class即可查看示...原创 2019-10-14 18:10:41 · 253 阅读 · 0 评论 -
指令重排
原文:https://www.cnblogs.com/akaneblog/p/11437403.htmljava代码是否一定按顺序执行?这个问题听起来有点蠢,串行的代码确实会按代码语意正确的执行,但是编译器对于代码本身的优化却并不一定会按实际的代码一步一步的执行。比如:r1=a;r2=r1.x;r3=r1.x;编译器则可能会进行优化,将r3=r1.x这条指令替换成r3...原创 2019-10-14 00:10:46 · 2080 阅读 · 1 评论 -
LocalDate的compareTo的坑!附获取两个日期的天数差
返回的并不是相差的天数!测试代码://今天System.out.println(LocalDate.now());//同一月内:LocalDate userDate = LocalDate.now().minusDays(3);LocalDate capitalDate = LocalDate.now();System.out.println(capitalDate.comp...原创 2019-10-11 16:48:09 · 3334 阅读 · 0 评论 -
BigDecimal截取整数位放弃小数位,不进位
例:9.9 截取整数位后9代码:BigDecimal c1 = BigDecimal.valueOf(99400).divide(BigDecimal.valueOf(10000), 0, BigDecimal.ROUND_DOWN);或者BigDecimal c2 = BigDecimal.valueOf(9.9).setScale(0, BigDecimal.ROU...原创 2019-09-09 15:54:29 · 15325 阅读 · 9 评论 -
构造Bean并根据Field赋值
public ProductPlanCalculateConfigDTO listToBean(List<FinancialPlanCalculateConfigDTO> list) { ProductPlanCalculateConfigDTO configDTO = new ProductPlanCalculateConfigDTO(); Class clazz ...原创 2019-09-06 14:45:58 · 799 阅读 · 0 评论 -
String.valueOf
1、String.valueOf(null);2、String.valueOf((Object) null)原创 2019-02-12 18:43:26 · 168 阅读 · 0 评论 -
Java反射
基本反射流程Class clazz = Father.class;Object o = clazz.newInstance();Method method = clazz.getDeclaredMethod("getFather2");method.setAccessible(true);method.invoke(o);如果调用的方法为public的 可以不setAccessi...原创 2019-02-12 18:44:17 · 111 阅读 · 0 评论 -
IDEA
参考链接:https://www.cnblogs.com/cralor/p/9092971.htmlhttps://blog.youkuaiyun.com/zlgydx/article/details/51130627在intellij idea 中配置好maven后 是这样的如果加载失败,则需要自定义远程仓库,这里以阿里maven仓库为例,...转载 2019-02-28 13:55:19 · 146 阅读 · 0 评论 -
Java注释/*和/**的区别
Java注释的三种类型1、单选注释:符号是://2、块注释: 符号是: /* */ 可以跨多行3、javadoc注释: 符号是: /** */ 可以跨多行,生成javadoc时,这样的注释会被生成标准的javaapi注释。/** */注释的话,你在调用类和方法的时候会出现提示,内容就是你写的注释。而/* */就没有了。/* */就是//的多行版...原创 2019-03-05 10:02:34 · 13376 阅读 · 0 评论 -
Java读取本地Txt文件
import org.apache.commons.io.IOUtils;import java.io.FileInputStream;public static void main(String[] args) throws Exception{ List<String> list = IOUtils.readLines(new FileInputStream(...原创 2019-03-14 11:52:01 · 4604 阅读 · 0 评论 -
Java操作透明图片并保持背景透明
最近的一个需求,需要对背景为透明的图片加汉字,加完后会出现背景变黑的情况,附上解决方案public static void pressText2(String sourceImg,String targetImg) { try { File file = new File(sourceImg); File targetfile = new File(t...原创 2019-04-15 17:26:07 · 2401 阅读 · 0 评论 -
Java IO/NIO模型(一)---概述
参考:JAVA核心知识点整理参考:https://mp.weixin.qq.com/s?__biz=MzU0MzQ5MDA0Mw==&mid=2247483907&idx=1&sn=3d5e1384a36bd59f5fd14135067af1c2&chksm=fb0be897cc7c61815a6a1c3181f3ba3507b199fd7a8c9025e9d8...原创 2019-04-25 09:56:11 · 1200 阅读 · 0 评论 -
Java IO/NIO模型(二)---NIO模型
【1】NIO的与IO的区别:总的来说java 中的IO 和NIO的区别主要有3点:1)IO是面向流的,NIO是面向缓冲的;2)IO是阻塞的,NIO是非阻塞的;3)IO是单线程的,NIO 是通过选择器来模拟多线程的;1. 通道通道 Channel 是对原 I/O 包中的流的模拟,可以通过它读取和写入数据。通道与流的不同之处在于,流只能在一个方向上移动(一个流必须是 InputSt...转载 2019-04-25 10:47:09 · 651 阅读 · 0 评论 -
Bean转Map
Map map = org.apache.commons.beanutils.BeanUtils.describe(contractParamBean);@Datapublic class ContractParamBean implements Serializable { /** * 订单创建时间 **/ private Object nowd...原创 2019-04-25 10:53:49 · 2062 阅读 · 0 评论 -
深入理解ThreadLocal
使用方法:private static ThreadLocal<String> stringThreadLocal = new ThreadLocal<>();private static ThreadLocal<Integer> integerThreadLocal = new ThreadLocal<>();private stati...转载 2019-05-06 16:54:19 · 177 阅读 · 0 评论 -
Java Stream流之sorted
List<Integer> list = new ArrayList();list.add(1);list.add(4);list.add(9);list.add(6);list.add(2);list.add(7);//倒序list.stream().sorted(Comparator.comparing(Integer::intValue).reversed())...原创 2019-05-31 15:30:44 · 5498 阅读 · 0 评论 -
使用Java缓存
实际开发中,有些配置类的东西不需要每次都去查库可以存在内存中,提高查询效率代码示例@Componentpublic class OrderTypeRuleHelper { private static Logger logger = LogManager.getLogger(OrderTypeRuleHelper.class); @Autowired p...原创 2019-06-19 15:41:54 · 3616 阅读 · 0 评论 -
Java stream将两个list合为一个list
示例:两个bean,一个汇总bean@Datapublic class RepaymentPlanUserDTO implements Serializable {/** * 当前期数 **/private Integer period;/** * 应还日期 按账单生成规则进行生成,格式:yyyy-mm-dd hh:mm:ss(默认零点) **/private ...原创 2019-07-02 10:59:48 · 22120 阅读 · 0 评论 -
Java Stream流之求和
BigDecimal:BigDecimal bb =list.stream().map(Plan::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);int、double、long:double max = list.stream().mapToDouble(User::getHeight).sum();...原创 2019-07-15 17:56:38 · 201605 阅读 · 8 评论 -
Bean复制忽略null值,BeanUtils
大部分情况下 我们复制bean用的是Spring的BeanUtilsimport org.springframework.beans.BeanUtils;但是target中非空的字段会被source中空值覆盖然而有时候不想被null值覆盖这时候!<dependency> <groupId>cn.hutool</groupId> ...原创 2019-09-02 17:40:12 · 3877 阅读 · 0 评论 -
线程池ThreadPoolExecutor
ThreadPoolExecutor是Executors调用的底层实现,Executors提供四种线程池newFixedThreadPool,newSingleThreadExecutor,newCachedThreadPool,newScheduledThreadPool例如:ExecutorService executorService = Executor...原创 2019-02-15 15:49:30 · 237 阅读 · 1 评论