java
qq_30035749
这个作者很懒,什么都没留下…
展开
-
String、StringBuffer和StringBuilder
String的对象不可变,StringBuffer和StringBuilder是可变的速度:StringBuilder执行速度最佳,StringBuffe次之,String最慢String,StringBuffer是线程安全的,StringBuilder是线程不安全的三个类都是被final修饰的,因此不可继承StringBuilder和StringBuffer有公共父类AbstractS...原创 2019-03-26 22:17:21 · 117 阅读 · 0 评论 -
链表排序
Sort a linked list in O(n log n) time using constant space complexity.# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = ...原创 2019-03-26 11:40:16 · 121 阅读 · 0 评论 -
MinStack
class MinStack: def __init__(self): """ initialize your data structure here. """ self.stack=[] def push(self, x: int) -> None: if(not self.stack):...原创 2019-03-26 11:23:03 · 128 阅读 · 0 评论 -
HashMap实现原理
HashMap基于Map接口的非同步实现,允许null键和null值此类不保证映射顺序,不保证该顺序永远不变HashMap的数据结构:链表和数组的结合体底层实现是一个数组,数组的每一项就是一个链表,Entry是一个static class,其中包含key、value以及next,它的key和hash是final的HashMap在容量总是2的n次方,h&(length-1)相当于对...原创 2019-03-25 15:54:48 · 103 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap:数组加链表,ConcurrentHashMap 包含一个Segment数组,而Segment是ConcurrentHashMap的内部类,在Segment中柏含一个HashEntry的数组,而HashEntry是ConcurrentHashMap的内部类,HashEntry中包含key和value以及next指针,所以HashEntry可以构成一个链表,通俗的讲...原创 2019-03-25 11:23:46 · 158 阅读 · 0 评论 -
volatile不保证原子性
我的理解是,在volatile单独的读和写,都是直接从主内存中读,写入主内存,但是,在volatile i++的时候,另外一个线程假设已经改变了i的值,并写入主内存,并告诉其他线程你们缓存的数据已经失效了,但是本线程已经完成i++,并且不需要再读取i的值,我现在要做的事情是写i。所以我不会再去读取i的最新值。volatile保证的是,在读的时候会从主存中读,在写的时候写入主存。在生成汇编代码时会...原创 2019-03-13 10:22:39 · 144 阅读 · 0 评论 -
抽象类与接口
抽象类的抽象方法必须全部把子类实现,如果不能全部实现,则子类也必须是抽象类。抽象类可以没有抽象方法一个类中有抽象方法,这个类一定是抽象类抽象类中方法必须全部被实现·,抽象方法不能是静态方法,也不能是private方法接口设计的目的是对类行为的约束,提供一种机制,约束不同的类具有相同的行为,它只约束行为的可有可无,但是不对如何实现进行限制。抽象类除了不能被实例化之外,和普通类一模一样,如...原创 2019-03-12 19:39:03 · 144 阅读 · 0 评论