Java
文章平均质量分 68
Hello Guava
坚持写一些JAVA、大数据相关的博文,有助于自己工作、学习、成长!
展开
-
集合相关的总结
ArrayList底层是一个动态数组,1.8及以后初始化的时候是一个长度为0的数组,在第一次调用add方法时再创建一个长度为10的数组,每次扩容是扩1.5倍。查询快,增删慢。增删的时候需要把删除后面的元素位置都向前移动,因为数组在内存中是一片连续的内存空间;查询的时候只需要根据下标查询就行了。如果提前知道存入集合元素的数量,初始化的时候可以指定集合大小,减少扩容,提高效率,因为扩容需要把原数组元素copy到新数组中。ArrayList是非线程安全的,如果要保证线程安全,使用如下方法:1)使用Ve原创 2021-07-12 14:40:38 · 219 阅读 · 0 评论 -
SpringCloud+Eureka+Seata:整合分布式事务
版本说明:seata-server:1.1.0SpringCloud:Greenwich.SR5spring-cloud-starter-alibaba-seata:2.2.0.RELEASEseata-spring-boot-starter:1.2.0理论知识:何为2PC:flink专栏有篇文章介绍过,因为flink端到端的Exactly Once就是依赖2PC实现的seata的设计思想Seata的设计目标其一是对业务无侵入,因此从业务无侵入的2PC方案着手,在传统2PC的基础原创 2020-06-23 20:18:59 · 1875 阅读 · 0 评论 -
Java动态代理:基于JDK的动态代理和基于CGLIB的动态代理
前言学习Spring aop的时候,一直都知道是基于动态代理实现的,那么到底什么是动态代理,又该如何自己实现一个动态代理呢,对此做一个记录。所谓动态代理,一般是为了给需要实现的方法添加预处理或者添加后续操作,但是不干预实现类的正常业务,把一些基本业务和主要的业务逻辑分离。基于JDK的动态代理两个核心的类Proxy、InvocationHandler(接口);基于JDK的动态代理是需要被代理的类实现某个接口。下面贴一下代码应用:首先要有一个接口和实现类,实现类就是需要被代理的类;业务很简单,就是打印原创 2020-06-28 10:12:53 · 192 阅读 · 0 评论