基础
风影楼c
这个作者很懒,什么都没留下…
展开
-
IO、NIO、AIO简述
IO又叫BIO,是同步阻塞IO NIO是同步非阻塞IO AIO是异步IO 异步一定非阻塞 IO是一个socket连接对应一个线程,会造成大量阻塞。 NIO是对于IO的改进,基于Reactor模型,一个请求对应一个线程。 AIO是对于NIO的进一步改进,基于Proactor模型,一个有效请求对应一个线程。 R和P都会用到事件分离器 NIO在事件分离器注册读就绪事件和读就绪事件处理器。...原创 2019-03-25 17:45:56 · 430 阅读 · 0 评论 -
hashcode和equals方法
两个方法都是Object类中的方法 在未进行重写的情况下,equals和==是等价的,都返回两个对象地址的比较 而hashcode的引入是为了减少equals的次数 hashcode是通过某种复杂的移位实现得到某个int值,但是不同的对象可能得到该值碰巧相等 如果两个对象==,那么它们的hashcode一定相等,所以在需要进行对象是否相等的判断之前,判断hashcode是否相等,如果不相等...原创 2019-03-23 16:13:46 · 87 阅读 · 0 评论 -
发生死锁的情况以及解决的办法
首先,死锁是指两个或多个线程,彼此间持有对方所需资源,使得每一个线程都处在等待的状态。 发生死锁通常要满足以下四个条件: 1、互斥条件:一个资源只能同时被一条线程占用。 2、请求和保持条件:当一个线程因获取不到其他资源而阻塞时,对自己所持有的资源保持不放。 3、不剥夺条件:除非线程自己释放资源,否则其占有的资源不可以被剥夺。 4、环路条件:处于死锁等待中的线程一定会形成一条环路。 ...原创 2019-03-23 16:26:25 · 1182 阅读 · 0 评论 -
gc简述
jvm的gc分为 年轻代的minor gc,老年代的major gc,和整个堆空间的full gc。 -Xmx 设置jvm最大堆内存 -Xms 设置jvm初始堆内存,最好设置成与Xmx相同 -Xss 设置每个线程的栈大小 -XX:Newsize 年轻代初始值 -XX:MaxNewsize 年轻代最大值 -XX:NewRatio 年轻代与年老代的比值 jvm命令:jps查看有哪些虚拟...原创 2019-03-23 17:09:20 · 435 阅读 · 0 评论 -
hashmap、concurrenthashmap
java1.7及以前 hashmap是entry的数组+链表 concurrenthashmap是若干(16)个segment组成,每个segment都是继承了ReentrantLock的一个hashmap类型的结构 java1.8及以后 hashmap中的链表结构当数量大于等于8时会转为红黑树,为了增加查找效率(logn + 转化为树的时间 < 平均遍历时间n/2) 为什么不直...原创 2019-03-24 15:08:23 · 65 阅读 · 0 评论