什么是虚拟线程
是JDK而不是OS实现的轻量级线程,由JVM调度,许多虚拟线程共享同一个操作系统,虚拟线程的数量可以远大于操作系统线程的数量
虚拟线程是非常轻量级的,可以在单个线程中创建成百上千个虚拟线程而不会导致过多的线程创建和上下文切换。减少资源开销,由于虚拟线程是由于JVM实现,它能够更高效的利用底层资源,例如CPU和内存,虚拟线程的上下文切换比平台线程更轻量。
为什么先更新数据库再删缓存
先更新数据库,再删除缓存会出现数据不一致的问题,但是概率不高。因为缓存的写入通常要远远快于数据库的写入,所以再次删除缓存时,会将带有旧值的缓存删除。
linux kill-9
系统会发出sigkill命令,他要求接受到该信号的程序立即结束执行,不能被阻塞或者忽略
服务端大量的链接是timewait状态原因
TIME_WAIT状态下,TCP连接占用的本地端口将一直无法释放
如果TIME_WAIT连接吧所有可用端口都占完了(TCP端口数量上限是65535) 而且还未被系统回收,就会出现无法向服务器创建新的socket连接的情况。
产生的原因是大量短连接的存在,浏览器和服务器每进行一次HTTP操作,就会建立一次连接,任务结束后就会断开连接,而断开连接这个请求是由server去发起,主动关闭连接请求一端才会有TIME_WAIT状态连接
object中的方法
getClass()用于final关键字修饰,故不允许子类重写
hashCode()用于返回对象的哈希码,主要使用在哈希表中
clone()用于创建并返回当前对象的一份拷贝
equals()用于比较2个对象的内存地址是否相等
toStr