摘要:本文首发于的博客转载请注明出处与的区别作用对象是类的静态方法,作用于当前线程是类的成员方法,作用于对象本身作用调用方法,线程进入休眠状态调用方法,线程进入阻塞状态锁的释放不会释放持有的锁会释放锁唤醒自然唤醒或者显式调用方法调用或者方法调用不
本文首发于cartoon的博客
转载请注明出处:https://cartoonyu.github.io/c...
sleep与wait的区别
作用对象
sleep是Thread类的静态方法,作用于当前线程
wait是Object类的成员方法,作用于对象本身
作用
调用sleep方法,线程进入休眠状态
调用wait方法,线程进入阻塞状态
锁的释放
sleep不会释放持有的锁
wait会释放锁
唤醒
自然唤醒或者显式调用interrupt方法
调用notify或者notifyAll方法
调用
sleep不需要在同步代码中调用
wait需要在同步代码中调用,否则抛出IllegalMonitorStateException
使用场景
sleep作用于周期性任务的执行
wait作用于互斥资源的使用
hashMap的扩容机制
相关成员属性
HashMap是JAVA集合框架的一个存储key-value对的实现类,有关于扩容机制的成员属性主要有三个
默认值为16的capicity
默认值为0.75的loadFactory
默认值为0的size
触发时机
插入元素时
实现
JDK 1.7
传入newCapicity参数
新建newCapicity长度的Entry数组
将原数组元素重新hash放入新数组
将原有数组引用指向新数组
JDK 1.8之后
如果节点的链表元素个数大于8时,原有的数组链表会转换成数组红黑树的逻辑结构进行使用
如果当前size大于loadFactory*capicity的阈值,触发扩容机制
新建一个newCap的int变量,大小为2*oldCapicity
新建一个大小为newCap的数组
原数组元素索引进行2次幂的计算放入新数组
将newCap赋值给原有的capicity
返回新数组
ReentantLock的了解
存在位置
ReentantLock是JDK的一个显式锁的API,具体通过AQS队列实现功能
锁的种类
ReentantLock是可重入的锁,内部通过判断state当前占有线程进行重入的判断
ReentantLock可以实现公平锁以及非公平锁,在构造对象时显式传入fair
同步机制
ReentantLock是同步非阻塞式的,采用乐观并发策略
ReentantLock需要显式控制锁的获取与释放,而且可以响应中断
List实现类的比较
底层实现
Arraylist为数组
LinkedList为链表
线程安全
ArrayList,LinkedList为线程不安全
Vector为线程安全
实现时间
ArrayList,LinkedList为JDK1.2开始实现
Vector为JDK1.1开始实现
NIO的了解
NIO是java中用于实现数据的输入/输出的API,是同步非阻塞式的
核心对象
selector,选择器,用于对channel的选择
channel,通道,用于连接java程序与对象的通道
buffer,缓冲区,用于数据的暂时存放
工作步骤
java程序与操作对象建立channel
数据放入buffer中
selector轮询channel,监控IO状况,控制输入输出
ConcurrentHashMap同步的实现(JDK1.7 1.8)
JDK1.7实现
ConcurrentHashMap中数据存放在Segment(默认为16个)中
ConcurrentHashMap为区域锁,锁定对象是Segment
在写数据时,会经过计算得出使用的Segment,并检查是否持有Segment的锁
JDK1.8实现
ConcurrentHashMap中数据存放在数组链表/红黑树中
ConcurrentHashMap是行级锁,锁定对象是链表的头结点或者红黑树的根结点
在写数据,计算访问的数据索引,检查锁,访问链表或者红黑树
JVM
G1的工作流程
初始标记
并发标记
最终标记
筛选回收
CMS的工作流程
初始标记(stw现象)
并发标记
重新标记(stw现象)
并发清理
重置线程
Spring
spring bean的生命周期
对象被实例化
Spring进行IOC的注入
可选
传入对象
实现BeanNameAware接口,传入bean的ID
实现ApplicationFactoryAware接口,传入Spring工厂
实现ApplicationContextAware接口,传入Spring上下文
初始化
实现BeanPostProcessor接口,对bean内容进行修改
使用
清理
网络
输入域名到返回页面的过程
浏览器部分
利用DNS进行域名解析
检查本地host文件
组装http报文
http报文经过OSI底层包装发送请求
http请求在第三次tcp握手上发送
传输
路由器根据IP进行选择转发到目标主机
目标主机
后端进行报文的拆解获取真实请求
根据请求返回相应页面
传输
路由器根据IP进行选择转发到目标主机
源主机
拆解报文,获取实部数据
交给浏览器渲染页面
算法两数之和(leetcode 1)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75597.html
摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...
摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...
摘要:本文首发于的博客转载请注明出处和的区别是什么内存分配字节字节范围到和到到和到在显示时会发生精度缺失,不会的内连接左连接右连接有什么区别内连接关键词特点返回两个表中符合条件的交集左连接关键词特点返回全部数据以及符合条件的的数 本文首发于cartoon的博客 转载请注明出处:https://cartoonyu.github.io/c... float 和 double 的...
阅读 3511·2021-11-23 10:13
阅读 877·2021-09-22 16:01
阅读 921·2021-09-09 09:33
阅读 648·2021-08-05 09:58
阅读 1733·2019-08-30 11:14
阅读 1979·2019-08-30 11:02
阅读 3280·2019-08-29 16:28
阅读 1496·2019-08-29 16:09