java 主要知识点记录

jdk主要数据结构:数组,链表,树(红黑树)

a;基础知识

1:ArrayList,LinkedList 等相关的list集合

    ArrayList==》数组实现;LinkedList==》链表


2:HashMap,TreeMap等相关的map集合

    HashMap==》数组+链表(转红黑树)Object(hoshcode)==>Map(hash)==>和长度与运算获得数组下标==》下标存在数据(不相同)==》链表(红黑树)

    TreeMap==》红黑树实现

3:HashSet,TreeSet等相关的set集合

    set==》map集合的key值集合(链表)

4:其他jdk集合基本都是使用 数组,链表,树(红黑树)实现

b;线程,线程安全和线程池

1:线程实现方式

继承 Thread 类和实现 Runnable 接口(没有返回结果)

实现 Callable 接口(可以获取返回结果)

2:线程安全

两个以及两个以上线程共享同一个资源(方法区或者堆内)并且对该资源有更改操作导致获取到的数据不真实,导致后续执行了错误的逻辑操作

解决方法:乐观锁==》版本号控制(cas);悲观锁==》加锁(lock,synchronized)

常用线程安全工具包:详细的可以参见 java.util.concurrent

3:线程池

预计n个线程执行任务,多余任务放入队列,后续发现一边直线任务一边放入队列放,队列放下不了,在增加n个线程执行任务,后来发现还是不能解决问题,想其他办法。

4:线程是cpu指挥的最小单位颗粒(最底层),运行规律和时间都是需要根据cpu实现方式而定,只要有线程在运行java程序就在运行,所以线程都是被动竞争上岗工作,获取上岗工作机会,可以主动放弃上岗工作,有其他线程竞争上岗或者与其他一起再次竞争上岗,也可以上岗后,拖着不工作。

5:其他==》Semaphore、CountDownLatch、 CyclicBarrier,AQS的思想

c;jvm 虚拟机

1:组成部分

程序计数器(控制等),堆(对象等),方法区(类二进制信息等),本地方法栈(native等),虚拟机栈(正在运行方法的地方)

2:自带工具,垃圾回收(监督并清理垃圾,保证虚拟机正常运行)

 

垃圾定义:没有被别人使用也就是对外引用为0或者找不到根节点

回收的方法:先标记需要回收的垃圾,然后回收==》这一块,那一块==》内存随便化

                      分出两大片区域==》当正在使用的地方用完以后,就把非垃圾复制过去,清空当前区域==》空间利用率太低

                      

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值