04 2019 档案

摘要:什么是缓存穿透? 恶意用户模拟请求很多缓存和数据库中不存在的数据,导致这些请求短时间内直接落在数据库上,导致数据库异常,比如抢购、秒杀活动的接口被用户恶意刷,或者查询id为-1的数据。 缓存穿透解决方案: 1.增加校验,不符合基本查询数据规则的数据直接拦截,eg:id<=0的数据不让查询 2.给该k 阅读全文
posted @ 2019-04-30 09:53 劈天造陆 阅读(440) 评论(0) 推荐(0)
摘要:工作中常用线程池的(通过Executors)创建方法分为以下四种: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列 阅读全文
posted @ 2019-04-30 09:46 劈天造陆 阅读(467) 评论(0) 推荐(0)
摘要:/** * 冒泡排序的核心就是,按顺序进行两两比较,如果第一个比第二个大则交换位置 */ public class MaoPaoPaiXu { private static int[] bubbleSort(int[] a) { // 至少进行n-1轮比较 for (int i = 0; i a[j + 1]) { ... 阅读全文
posted @ 2019-04-29 18:35 劈天造陆 阅读(177) 评论(0) 推荐(0)
摘要:public class BinarySearch { public static void main(String[] args) { int[] a = {1,2,3,4,5,6,7,8,9}; int binarySerach = binarySerach(a, 4); System.out.println(binarySe... 阅读全文
posted @ 2019-04-29 18:34 劈天造陆 阅读(244) 评论(0) 推荐(0)
摘要:synchronized和RetreenLock锁区别 1、synchronized是java关键字,RetreenLock是个java类 2、synchronized无法获取锁状态,Lock可以判断是否持有锁 3、synchronized会自动释放锁,Lock需要在finally中unlock() 阅读全文
posted @ 2019-04-29 18:18 劈天造陆 阅读(4266) 评论(2) 推荐(0)
摘要:什么是死锁? 由于两个或者多个线程互相持有对方所需要的资源,导致线程处于等待状态,造成死锁。 为什么会产生死锁(为什么会互相占用对方的资源) 因为系统资源不足。 进程运行推进的顺序不合适。 资源分配不当等。 产生死锁的四个必要条件 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程 阅读全文
posted @ 2019-04-29 18:11 劈天造陆 阅读(1309) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示