自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

啦啦啦啦啦啦博客

一个默默学习的小程序员

  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 线程池7大参数详细讲解

源码中7大参数位置:七大参数:拒绝请求执行的runnable的策略。理解图:1. corePoolSize线程池中的常驻核心线程数3. keepAliveTime多余的线程存活核心线程满了,阻塞队列也满了,才会开启max最大线程数,如果还是满了,就会启动拒绝策略。如果流量降下来,就按照设置的时间最大数,慢慢的回到了核心线程数。原理:注意:阿里巴巴规范拒绝策略:public class ThreadPoolDemo { public static void m

2020-12-31 16:53:06 1178

原创 Executors三个线程池的使用及场景

好处:底层都是ThreadPoolExecutorExecutors.newFixedThreadPoolpublic class ThreadPoolDemo { public static void main(String[] args) { ExecutorService threadPool = Executors.newFixedThreadPool(5);//一池5个处理线程 try { for (int i

2020-12-30 17:50:07 430

原创 线程的第三种创建方式-Callable的使用

线程的第三种创建方式Callable的使用public class MyThread implements Callable { @Override public Integer call() throws Exception { System.out.println(Thread.currentThread().getName()+ ":11111111"); return 1024; }}public class CallableDemo

2020-12-30 17:21:57 260

原创 BlockingQueue实现生产者消费者

前提:之前生产者,消费者需要线程自己控制等待,唤醒。现在使用blockingQueue不需要。代码:public class MySource { private volatile boolean isTrue = true; private AtomicInteger atomicInteger = new AtomicInteger(); private BlockingQueue blockingQueue = null; public MySource(Bloc

2020-12-30 12:50:19 421

原创 Synchronized和Lock的区别?

一 原始构成二 使用方法三 等待是否可中断四 加锁是否公平五 锁绑定多个条件condition代码:精确通知:public class ShareResource { private int number = 1; //a:1 b:2 c:3 private Lock lock = new ReentrantLock(); private Condition condition1 = lock.newCondition(); private C

2020-12-30 10:34:18 230 1

原创 多线程生产者消费者模式

前提知识synchronized 使用wait等待线程,notify唤醒线程lock使用Condition condition = lock.newCondition();condition中的await等待线程,signal唤醒线程。上代码:public class ShareDate { private int number = 0; private Lock lock = new ReentrantLock(); private Condition conditi

2020-12-30 09:39:27 73

原创 列队,阻塞列队,BlockingQueue的使用

列队/阻塞列队空的话消费者阻塞,因为没有东西可消费。满的话生产者阻塞,因为列队放满了。BlockingQueue有7种列队实现BlockingQueue接口抛出异常element()作用检查队列是否为空,队首元素是谁。特殊值...

2020-12-30 08:55:54 108

原创 Semaphore使用

Semaphore就是信号量代码:总结;跟CountDownLatch和CyclicBarrier区别就是,Semaphore可以达到复用,有减,有加,一直使用。而CountDownLatch和CyclicBarrier要一直累加和减,不好达到复用。

2020-12-29 10:55:18 542

原创 CyclicBarrier使用

理论:与CountDownLatch相反,CountDownLatch是做减法的,减到0才开始。而CyclicBarrier是做加法,加到一定数值,才开始执行。代码:public class CycllicBarrierDemo{ public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(7, new Thread(new Runnable() {

2020-12-29 10:45:38 139

原创 CountDownLatch

CountDownLatch使用例子:需要main线程最后一个触发,最后结果是main线程并非最后一个运行,引入countdownlatch加入countdownlatch结果,实现了需求。枚举使用使用枚举线程i被替换成相应的values。...

2020-12-29 10:27:28 66

原创 集合类不安全的问题

ArrayList是不安全的第一次运行。数量正确,但是为空第二次运行。数量不对,又为空。线程30个,出现异常:解决方案一 new Vector()可以解决。二 collections 工具类collections 还提供其他很多安全的。三 new CopyOnWriteArrayList原理:源码,参考上面的图:hashSet也是线程不安全的例子:解决方法:一 Collections工具类CopyOnWriteSet()底层是hashMap为什

2020-12-28 16:41:08 96

原创 Volatile详解

JMM三大特性:可见性,原子性,有序性.可见性volatile轻量级。保证可见性代码验证:结果:没有输出mission is over。加上volatile结果:有一个线程修改了值,其他的线程会收到通知,立马输出。总结:原子性vlolatile不保证原子性代码验证:如果正常能保证原子性,结果应该为20000,运行多次都没达到20000。1.因为每个线程初始都是把开始值为0放入自己的工作内存,线程1把值增加为2写入主内存,线程2把值增加成1也写回主内存,就

2020-12-28 11:18:34 151

原创 Redis算法-手写Lru算法

题目来源:力扣146题思想问:查找快,删除快,且还需要先后排序,哪一种数据结构满足要求?hash+链表,哈希查找快,链表插入删除快。移动前,如图:移动后,如图:第一种算法java自带实现数据结构,LinkedHashMap,实现该类就可以使用:注意:父类的构造方法为false是一种情况import java.util.LinkedHashMap;import java.util.Map;public class LruCache<K,V> extends Li

2020-12-24 11:18:57 235

原创 Redis缓存过期淘汰策略

Redis默认内存?设置内存推荐最大物理内存*0.75修改文件方式如果在运行,动态的修改,就命令方式info memory也可以查看redis内存使用超出了设置的最大值?也会出现错误 缓存过期淘汰策略从配置文件中看有8种默认三种不同删除策略定时删除总结:惰性删除总结定期删除内存淘汰策略记忆图,第二种最长使用最近最少使用,频率最少使用配置文件设置:命令行配置...

2020-12-23 21:57:21 110

原创 Redis分布式锁-Redisson使用

Redisson使用redisConfig配置使用测试jemeter进行压测成功!完善finally 那样写有可能会报错! 推荐写法

2020-12-23 20:20:28 82

原创 Redis分布式锁-基础篇

前提知识:创建两台单机版,端口号不同的redis服务。主要代码如下:问题一:多线程,没加锁,有两种锁,synchronized和lock,lock会更加灵活,可以tryLock,如下:为了方便,使用synchronized,单机版下使用没用问题。但是分布式部署下,单机锁还是会出现超卖问题,因为不是在同一个jvm层面的锁,所有需要分布式锁。问题二 使用nginx进行负载均衡,轮询发送部署两台服务器,用Jemeter进行压测,就出现了超卖现象。解决:解锁:解决:单机版sy

2020-12-23 20:08:06 119

原创 Redis使用和应用场景

redis两个注意点String使用和场景Hash使用和应用场景List使用和应用场景Set使用和应用场景无序,无重复微博好友关注社交关系共同关注我关注的人也关注他QQ内推可能认识的人Zset使用和应用场景统计,排序销售数量排序热搜...

2020-12-23 15:26:26 73

原创 Spring循环依赖和三级缓存

循环依赖定义JavaSE代码演示构造器注入结论:构造器方法注入无法解决,会一直报错setter注入 注意:没有构造方法测试:Setter可以解决

2020-12-23 11:25:54 145

原创 Spring4和Spring5的AOP顺序

Spring4和Spring5的AOP顺序Spring4的AOP顺序正常情况异常情况结论Spring5的AOP顺序正常情况异常情况结论Spring4和Spring5的对比Spring4和Spring5测速的小不同Spring4的测试如下:Spring5的测试如下:Spring4的AOP顺序正常情况异常情况结论Spring5的AOP顺序正常情况异常情况结论@before-------->@afterReturning------------->@after@befor

2020-12-22 19:25:33 976

屏幕录像专家完整版-精简版录频软件

屏幕录像专家完整版

2020-12-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除