
java
java复习为主
醒着的罐头
这个作者很懒,什么都没留下…
展开
-
2020 3月面试总结
面试告一段落啦,4月份就要入职新公司了,现将面试题总结如下java基础问题HashMap底层原理(被问到不下5次) 回答这个问题要从底层进行回答,首先回答是主干结构是个数组结构,数据按照Hash值放入一个个桶中,初始大小默认为16,如果出现Hash碰撞会将数据放在这个桶的下方,以一个链表的方式。 这时候要指出问题,如果Hash碰撞过多导致链表过长,会导致查询最差时间复杂度为O(N)...原创 2020-04-04 18:03:44 · 551 阅读 · 0 评论 -
算法(链表相关)
以下是链表的一些基础题目,但是通过这些题目的组合和解决问题的方法可以解决链表的复杂问题,如k个为一组进行链表翻转就需要翻转链表的方法,整理基本题目如下方便复习。1.合并两个有序链表,合并后还是有序链表classSolution{publicListNodemergeTwoLists(ListNodel1,ListNodel2){if(l1=...原创 2020-02-26 18:15:57 · 287 阅读 · 0 评论 -
ArrayList线程不安全以及解决方案
ArrayList:ArrayList底层为一个Object类型的数组,初始大小为10,在多线程操作ArrayList时会产生各种各样的线程不安全问题,该文章首先还原问题,用三种方法解决该问题。问题还原public class ArrayListExample { public static void main(String[] args) { List list ...原创 2020-02-20 11:02:42 · 1195 阅读 · 0 评论 -
CAS简介以及CAS的缺点和处理方法
CAS是什么CAS是指比较并交换(compy and set),底层原理为native修饰,直接操作地址生活中的例子如修改成绩单,老师将成绩单贴到墙上,可以很多同学去观看,但对成绩单进行修改时只能一个人修改,比如数学老师正在对成绩单修改,同学们这时看到的还是老版成绩单,修改完成后重新贴到墙上。如果这时候语文老师也要修改,要先保证成绩单是新的(也就是数学老师修改后的版本),才能进行修改。C...原创 2020-02-19 16:20:46 · 935 阅读 · 0 评论 -
volatile单例模式的用法
传统做法使用Synchronized完成单例模式class SingleDemoOld{ private static SingleDemoOld instance = null; private SingleDemoOld(){ System.out.println(Thread.currentThread().getName()+"\t"+"构造方法Si...原创 2020-02-18 14:41:13 · 296 阅读 · 0 评论 -
Volatile理解
1.volatile理解volatile是一种轻量级的同步机制保证可见性(主内存被修改,其他线程可见) 不保证原子性 禁止指令重排JMM模型:Java Memory Mode,一般保证可见性,原子性,禁止指令重排。volatile可见性的证明import java.util.concurrent.TimeUnit;class ShareData{ volatile...原创 2020-02-18 11:23:54 · 442 阅读 · 2 评论 -
java 多线程控制练习题
//AA打印5次,BB打印10次,CC打印15次//接着同上//来10轮根据题目需要精准控制线程,使用Lock来实现import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;c...原创 2020-02-15 23:09:34 · 225 阅读 · 0 评论