自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 leecode_数组

此题应用了双指针这一经典算法,从两边往中间遍历排序。

2024-08-08 12:51:44 101

原创 ConcurrentHashMap

(1)类的继承关系Concurrenthashmap继承自Abstractmap继承自Map(2)成员变量//最大容量private static final int MAXIMUM_CAPACITY = 1 << 30;//默认容量 16private static final int DEFAULT_CAPACITY = 16;//加载因子private static final float LOAD_FACTOR = 0.75f;//转为红黑树判断条件之一 bin数量大于

2020-07-31 21:18:20 456

原创 VIOLATE

Violate(1)内存模型相关概念Java内存模型是一种抽象的概念,并不是真实存在的。JVM运行程序的实体是线程,每一个线程都有自己私有的工作内存。Java内存模型中规定了所有变量都存储在主内存中,主内存是一块共享内存区域,所有线程都可以访问。但是线程对变量的读取赋值等操作必须在自己的工作内存中进行,在操作之前先把变量从主内存中复制到自己的工作内存中,然后对变量进行操作,操作完成后再把变量写回主内存。线程不能直接操作主内存中的变量,线程的工作内存中存放的是主内存中变量的副本。(2)并发编程的三大特性

2020-07-31 21:16:16 153

原创 线程间的通信

Synchrnoized加锁的线程的Object类的wait/notify/notiAll(1)这三个方法是本地方法,同时是final方法,无法被重写(2)wait()使用当前线程进入阻塞notify()唤醒一个正在等待当前对象mointor锁的线程,如果有多个线程都在等待对象mointor,随机选择唤醒(3)wait/notify/notifyAll使用在synchronized方法中或同步代码块中锁池:获取某一对象的monitor lock,如果当前对象的monitor lock被其他线程锁获

2020-07-31 19:09:03 97

原创 ReentrantLock实现机制

公平锁和非公平锁公平锁的实现:谁等待时间长,谁先获取锁非公平锁:随机获取的过程,谁运气好,cpu时间片论询到那个线程,谁先获取锁不可重入锁和可重入锁不可重入锁就是当前线程执行某个方法已知获取了该锁,那么在方法中尝试再次获取锁时就获取不到被阻塞,可重入锁恰好与之相反,不会被阻塞Reentrant lock提供了无条件的,可轮询的,定时的,以及可中断的锁获取操作而且加锁和解锁都是显式的底层实现try Acquire(ary)–>获取独占锁,获取成功直接返回,获取成功直接返回,获取不成功,调用

2020-07-31 18:49:20 104

原创 死锁

死锁的四个条件(1)互斥条件,某一个资源在某一个时间段只能由一个线程占用,不能让两个或两个以上的线程占用(2)不可抢占条件,线程获得资源在没有使用完毕之前,其他线程不能强行地夺走资源(3)占有与申请条件,线程至少占有一个资源,但是又申请新的资源,由于该资源被另外的线程占有,该线程会阻塞(4)循环等待,一个线程等待其他线程释放资源,其他的线程又在等待另外的线程释放资源,最后一个线程等待第一个线程释放资源解决死锁Object.wait()能使线程阻塞 同时释放资源Object.notif

2020-07-31 16:58:51 102

原创 Synchronizeed的底层实现

Syncronized底层原理同步方法ACC_SYNCHRONIZED标识符jvm根据以上标识符去判断该方法是否为同步方法,如果是,执行的线程会获取monitor lock,获取执行方法体,在方法体执行完之后释放monitor,方法执行期间,其他任何线程都没有办法去获得当前的monitor对象,只能阻塞同步代码块每一个对象都与一个monitor相关联,一个monitor lock只能被一个线程在同一时间锁获得(1) 如果monitor计数器为0,表示当前monitor lock未被获取,该线程获

2020-07-31 16:40:40 143

原创 Hashmap总结

Hashmap是基于哈希表的Mao接口的非同步实现,此实现提供所有可选的映射操作,幷允许使用nullhashmap实际上是一个 链表散列 的数据结构,数组和链表的结合体,数组中保存两种数据结构,一种是链表,一种是红黑树,当新建一个hashmap的时候就会初始化一个数组。数组的散列性越大,碰撞概率就越低,数组的大小一定要是2的n次幂,如果数组该位置已经放置了元素,那么在该位置上的元素将以链表...

2020-04-02 17:21:32 117

原创 PriorityQueue总结

优先级队列PriorityQueue特点:1.不能添加null元素,可以重复,默认构建是小根堆2 数据结构:object[]数组,大根堆,小根堆3. 不允许使用null元素,且对象必须是可比较的add()方法:public void add(E value){ if(size == elements.length){ elements = Arr...

2020-04-02 16:47:39 609

原创 Arraylist总结

ArraylistArraylist 就是底层基于数组实现的容量大小的动态变化,会占用一片连续的内存空间,Arraylist线程不安全,允许元素为null,好处就是可以动态的增加或删除元素,灵活的设置数组大小,但查询快,增删慢。核心方法:add方法 public void add(T value){ //判断是否需要扩容 if(size == element...

2020-04-02 16:33:38 92

原创 封装

关于java中的封装封装封装:把对象的属性和方法结合成一个独立的整体,隐藏实现细节,并提供对外访问的接口。封装的优点:1.隐藏实现细节。2.安全性。比如你在程序中私有化了age属性,并提供了对外的get和set方法,当外界 使用set方t方法为属性设值的时候 你可以在set方法里面做个if判断,把值设值在0-80岁,那样他就不能随意赋值了。3.增加代码复用性。比如在工具中封装的各...

2019-11-24 11:49:18 397 1

原创 java中的多态原理

java中多态的应用多态的应用有三个条件1)继承2)重写3)向上转换 (基本引用去去引用派生类对象)什么叫多态?上概念:就是用基类引用,引用不同的派生类对象,通过基类的引用变量调用同名覆盖方法,这个基类引用引用了哪个派生类对象,就会调用哪个派生类对象重写的方法感觉这个概念已经很简洁了,有不懂的兄弟,可以多读几遍理解一下静多态:编译时确定调用哪个方法 重载动多态:运行时确定调用哪...

2019-11-23 17:50:34 117

原创 继承

关于java中继承的概念解释以及代码应用继承,关键字extends,是java中经常用到的东西,实现继承需要几个基本条件:1.基类,派生类基类也叫父类,基类中有些方法是派生类中所需要的,就需要派生类继承基类来调用基类中的方法和属性如果有需要的话再添加一部分方法和属性,继承的好处是避免了代码的复用,减少了程序员的工作量,极大的提高了工作效率。super引用:基类对象引用 调用成员方法或者属性...

2019-11-23 16:09:54 96

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除