- 博客(5)
- 收藏
- 关注
原创 缓存概述及解决方案
一,为什么使用缓存?JDK的缓存应用1,高性能2,高可用二,什么是缓存穿透?缓存击穿?缓存雪崩?怎么解决?1,缓存穿透: 缓存中查不到,数据库中也查不到。解决方案: 1>对产生进行合法性校验。2>将数据库中没有查到的结果的数据也写入缓存。这时要注意为了防止Redis被无用的Key占满,这一类缓存的有效期要设置得短一点。3>引入布隆过滤器,在访问Redis之前判断数据是否存在。要注意布隆过滤器可能存在一定的误判率,并且布隆过滤器只能加数据不能减数据。2,缓存击穿:缓存中没
2021-04-25 11:32:27
164
原创 java网络通信
一:TCP和UDP有什么区别?TCP为什么是三次握手,而不是两次?TCP是一种面向连接的,可靠的,传输层通信协议。特点:好比是打电话,面向连接的,点对点的通信,高可靠的,效率比较低,占用的系统资源比较多。UDP 是一种简单的无连接的,不可靠的,传输层通信协议。特点:好比是广播: 不需要连接,发送方不管接收方有没有准备好,直接发消息,可以进行广播发送的,传输不可靠,有可能丢失消息;效率比较高,协议就会比较简单,占用系统资源较少。TCP建立连接三次握手,断开连接四次挥手如果是两次握手,可能会造成连接
2021-04-25 11:31:58
169
原创 多线程面试概要
描述一下synchrnoized和reentrantlock的底层实现及重入的底层原理synchrnoized (CAS)是通过1.8JVM虚拟机的ho+spot实现下的compareAndSwapInt对应的C和C++的Unsafe_CompareAndSwapObject下的Unsafe_CompareAndSwapInt函数。cmpxchg=compare and exchange最后追踪到atomic_linux_x86.inIine.hpp。调用了一条Lock_IF_MP(mp)
2021-04-25 11:31:33
189
原创 java面试概要
String是final修饰的,不可变,每次操作都会产生新的String对象StringBuffer和StringBuilder都是在原对象上操作StringBuffer是线程安全的,StringBuilder是线程不安全的StrubgVffer方法都是synchronized修饰的性能:StringBuilder>StringBuffer >String使用场景:经常需要改变字符串内容时使用后面两个优先使用StringBuilder,多线程使用共享变量是使用StringBuffer
2021-04-25 11:31:01
1569
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人