
ĴAVA基础篇
文章平均质量分 70
大白给小白讲故事
大白给小白讲技术那点事,目前专注于Java领域(朋友,你好像有点东西)
展开
-
JDK动态代理实现原理
概念动态代理类的代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。相比于静态代理, 动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法。 动态代理的实现方式有两种,JDK实现和CGlib实现。本文重点讲解JDK实现原理,进一步了解动态代理。简单使用1、创建一个接口(JDK动态代理实现需要被代理对象必须实现一个接口)public interface Calculator { int add(int i,原创 2020-05-26 13:26:33 · 673 阅读 · 0 评论 -
JAVA8函数式接口使用
概念函数式接口在java中是指:有且仅有一个抽象方法的接口函数式接口,即适用于函数式编程场景的接口。而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。备注:“语法糖"是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实底层的实现原理仍然是迭代器,这便是“语法糖”。从应用层面来讲,Java中的Lambda可以被当做是匿名内部类的“语法转载 2020-05-26 12:25:01 · 694 阅读 · 0 评论 -
快速了解23种设计模式
设计模式的分类设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。根据目的来分根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式3种。创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式:用于描述如何将类或对象按某...转载 2019-08-12 10:34:10 · 389 阅读 · 0 评论 -
Java-HashMap、Hashtable、ConcurrentHashMap的区别
以下是基于java1.8源码进行对比:类型 HashMap Hashtable ConcurrentHashMap 数据结构 数组+链表+红黑树 数组+链表 数组+链表+红黑树 数组容量 默认容量为16,且要求底层数组的容量一定为2的整数次幂 默认容量为11,且不要求底层数组的容量一定为2的整数次幂 默认容量为16,且要求底层数组的...原创 2019-05-12 17:31:46 · 142 阅读 · 0 评论 -
java常见异常问题整理(一)
1、线程池(coreSize=0,submit方法)coreSize的问题代码:newThreadPoolExecutor(0,50,60,TimeUnit.SECONDS,newArrayBlockingQueue(1000));问题:发到线上后,发现CPU莫名其妙多次100%。原因:自定义线程池coreSize不能为0,否则该线程池永远只有一条线程在跑,数据量...原创 2019-05-01 17:52:31 · 480 阅读 · 0 评论 -
Java8之list.stream的常见使用
public static void main(String[] args) { List<Student> list = Lists.newArrayList(); list.add(new Student("测试", "男", 18)); list.add(new Student("开发", "男", 20)); l...原创 2019-02-23 13:21:20 · 46872 阅读 · 7 评论 -
subList引起的序列化问题:Can not construct instance of java.util.ArrayList$SubList: no default no-argume
起因:项目上做一个导入功能,我需要将查询到的数据按批次存入redis传递给其他程序进行插入。使用了List.subList()方法对数据执行切割,在从redis读取的时候出现了序列化的问题。完整的错误提示如下: 解决方法:代码是:List x = list.subList(a,b));此后x将无法序列化,因为从subList()返回的子列表对象未实现它。改为 List x ...原创 2018-09-30 10:33:44 · 8968 阅读 · 1 评论 -
基础篇-线程
1、创建线程的方式及实现1)、继承Thread类创建线程类 1.重写run方法。该run()方法的方法体就代表了线程需要完成的任务。2.创建Thread子类的实例。3.调用线程对象的start()方法来启动该线程。 2)、实现Runnable接口创建线程类 1.定义Runnable的实现类,重写run()方法。2.创建Runnable实现类的实例,并以此作为...原创 2018-08-25 11:52:28 · 195 阅读 · 0 评论 -
基础篇-集合
1、hashMap和ConcurrentHashMap的区别 ConcurrentHashMap是线程安全的,在并发的环境下不需要增加额外的同步 HashMap可以使用Collections.synchronizedMap(HashMap)来包装成为同步容器,使得HaspMap的作用几乎和Hashtable一样,每次对Map做修改操作的时候都会锁住这个Map对象。而Concurren...原创 2018-08-25 11:51:34 · 209 阅读 · 0 评论 -
基础篇-基本功
1、int和integer的区别1.1、int是java的基本类型,integer是int的包装类1.2、int的默认值为0,integer的默认值为NULL1.3、integer是需要声明才能使用,创建一个指针指向该对象。int可以直接使用,存储的是数据值 2、面向对象的特征1、封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不...原创 2018-08-25 11:49:17 · 281 阅读 · 0 评论