自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

转载 大白话布隆过滤器

本文是站在小白的角度去讨论布隆过滤器,如果你是科班出身,或者比较聪明,又或者真正想完全搞懂布隆过滤器的可以移步。不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大燥,仿佛身在互联网,做着开发的,无人不知,无人不晓,哪怕对技术不是很关心的小伙伴也听过它的名号。我也花了不少时间去研究布隆过滤器,看了不少博客,无奈不是科班出身,又没有那么聪明的头脑,又比较懒...经过“放弃,拿起,放...

2019-05-23 12:18:00 123

转载 剑指Spring源码(三)俯瞰Spring的Bean的生命周期(大众版)

距离上一次写Spring源码解析,已经过去了快要好几个月了,主要原因还是Spring的源码解析类文章太难写了,不像我先前写的什么CAS源码,AQS源码,LinkedBlockingQueue等等,这些无非就是分析几个核心方法,代码也不算太长,就像比较复杂的AQS源码也是两篇搞定的,虽然AQS源码也很多东西也不能算是百分百的理解,但是核心思想应该是还算理解的。解析完毕成就感也满满的,写完博...

2019-05-15 09:56:00 128

转载 ThreadLocal源码解析,内存泄露以及传递性

我想ThreadLocal这东西,大家或多或少都了解过一点,我在接触ThreadLocal的时候,觉得这东西很神奇,在网上看了很多博客,也看了一些书,总觉得有一个坎跨不过去,所以对ThreadLocal一直是一知半解的,好在这东西在实际开发中毕竟用的不多,所以也就得过且过了。当然我说的“用的不多”,只是对于普通的上层业务开发而言,其实在很多框架中,都用到了ThreadLocal,甚至有的...

2019-05-13 09:33:00 126

转载 并发编程基础(下)

书接上文。上文主要讲了下线程的基本概念,三种创建线程的方式与区别,还介绍了线程的状态,线程通知和等待,join等,本篇继续介绍并发编程的基础知识。sleep当一个执行的线程调用了Thread的sleep方法,调用线程会暂时让出指定时间的执行权,在这期间不参与CPU的调度,不占用CPU,但是不会释放该线程锁持有的监视器锁。指定的时间到了后,该线程会回到就绪的状态,再次等待分配CPU资源...

2019-05-06 09:21:00 102

转载 并发编程基础(上)

从我开始写博客到现在,已经写了不少关于并发编程的了,差不多还有一半内容整个并发编程系列就结束了,而今天这篇博客是比较简单的,只是介绍下并发编程的基础知识( = =!其实,对于大神来说,前面所有博客都是基础)。本来我不太想写这篇博客,因为这篇博客的很多内容都是以记忆为主,而且网上也有大把大把的博客,都写的相当不错,但是我最终决定还是要写一写,因为没有这篇博客,并发编程系列就不能算是一个完整...

2019-05-05 09:14:00 115

转载 Random在高并发下的缺陷以及JUC对其的优化

Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了。但并不是每个人都知道Random的原理,知道Random在高并发下的缺陷的人应该更少。这篇博客,我就来分析下Random类在并发下的缺陷以及JUC对其的优化。Random的原理及缺陷 public sta...

2019-04-22 09:31:00 104

转载 LinkedBlockingQueue源码解析

上一篇博客,我们介绍了ArrayBlockQueue,知道了它是基于数组实现的有界阻塞队列,既然有基于数组实现的,那么一定有基于链表实现的队列了,没错,当然有,这就是我们今天的主角:LinkedBlockingQueue。ArrayBlockQueue是有界的,那么LinkedBlockingQueue是有界还是无界的呢?我觉得可以说是有界的,也可以说是无界的,为什么这么说呢?看下去你就...

2019-04-16 09:29:00 82

转载 ArrayBlockQueue源码解析

清明节和朋友去被抖音带火的一个餐厅,下午两点钟取晚上的号,前面已经有十几桌了,四点半餐厅开始正式营业,等轮到我们已经近八点了。餐厅分为几个区域,只有最火的区域(在小船上)需要排号,其他区域基本上是随到随吃的,最冷清的区域几乎都没什么人。菜的价格异常的贵,味道也并不好。最后送出两张图:好了,进入今天的正题,今天要讲的是ArrayBlockQueue,ArrayBlockQueue是J...

2019-04-08 09:16:00 166

转载 难以理解的AQS(下)

在上一篇博客,简单的说下了AQS的基本概念,核心源码解析,但是还有一部分内容没有涉及到,就是AQS对条件变量的支持,这篇博客将着重介绍这方面的内容。条件变量基本应用我们先通过模拟一个消费者/生产者模型来看下条件变量的基本应用:当有数据的时候,生产者停止生产数据,通知消费者消费数据;当没有数据的时候,消费者停止消费数据,通知生产者生产数据;public class Comm...

2019-04-01 09:44:00 88

转载 难以理解的AQS(上)

在一篇博客中,我们看了下CopyOnWriteArrayList的源码,不是很难,里面用到了一个可重入的排他锁: ReentrantLock,这东西看上去和Synchronized差不多,但是和Synchronized是完全不同的东西。Synchronized锁的特性是JVM保证的,ReentrantLock锁的特性是上层的Java代码控制的。而ReentrantLock的基础就是AQ...

2019-03-26 09:42:00 114

转载 CopyOnWriteArrayList源码解析

Java并发包提供了很多线程安全的集合,有了他们的存在,使得我们在多线程开发下,可以和单线程一样去编写代码,大大简化了多线程开发的难度,但是如果不知道其中的原理,可能会引发意想不到的问题,所以知道其中的原理还是很有必要的。今天我们来看下Java并发包中提供的线程安全的List,即CopyOnWriteArrayList。刚接触CopyOnWriteArrayList的时候,我总感觉这...

2019-03-18 09:10:00 82

转载 浅谈负载均衡算法与实现

记得,我刚工作的时候,同事说了一个故事:在他刚工作的时候,他同事有一天兴冲冲的跑到公司说,你们知道吗,公司请了个大牛。大牛?对,那人会写AJAX!哇,真是大牛啊,跟着他,可以学不少东西啊。我听了笑了,但有点难以理解,因为现在几乎只要是一个开发,都会写AJAX,怎么写个AJAX就算大牛呢?后来我明白了,三年前高深莫测的技术到现在变得普普通通,不足为奇,就像我们今天要讲的负载均衡,在几何时,...

2019-03-11 10:02:00 99

转载 CAS、原子操作类的应用与浅析及Java8对其的优化

前几天刷朋友圈的时候,看到一段话:如果现在我是傻逼,那么我现在不管怎么努力,也还是傻逼,因为我现在的傻逼是由以前决定的,现在努力,是为了让以后的自己不再傻逼。话糙理不糙,如果妄想现在努力一下,马上就不再傻逼,那是不可能的,需要积累,需要沉淀,才能慢慢的不再傻逼。好了,鸡汤喝完。今天我们的内容是CAS以及原子操作类应用与源码浅析,还会利用CAS来完成一个单例模式,还涉及到伪共享等。因为...

2019-03-04 09:11:00 81

转载 三种方式实现观察者模式 及 Spring中的事件编程模型

观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧,你可以自信的告诉他,Spring中的ApplicationListener就运用了观察者模式。让我们一步一步来,首先我们要知道到底什么是观察者模式,用Java是如何实现的,在这里,我将会用...

2019-02-23 19:16:00 80

转载 剑指Spring源码(二)

这是春节后的第一篇博客,我在构思这篇博客的时候,一度想放弃,想想要不要换个东西写,因为毕竟个人水平有限,Spring源码实在博大精深,不是我这个菜的抠脚的菜鸡可以驾驭的,怕误人子弟,还有就是源码分析类的博客实在是太难写了,和一般的博客真心不同,可能写了很多,自己都不知道自己在写些什么,但是还是要坚持,从接触博客的那一天开始,就非常佩服那些大神,乐于分享,无私奉献,我也从那些博客中学到了不...

2019-02-14 14:05:00 96

转载 C#中为什么会出现空静态构造方法的写法

再过几个小时,就要回家过春节了,今天说些简单点的东西,大家在看C#代码的时候,一定会对这样的写法非常迷茫:在一个类中会出现一个空的静态构造方法。这不是多此一举吗,这样做的目的是什么?今天我就来说说这个内容。前段时间,小伙伴遇到一个问题,百思不得其解,我先来模拟下这个问题: class Program { static void Main(string[] ar...

2019-02-02 11:05:00 119

转载 剑指Spring源码(一)

Spring,相信每个Java开发都用过,而且是每天都在用,那强大又神秘的IoC,AOP,让我们的开发变得越来越简单,只需要一个注解搞定一切,但是它内部到底是什么样子的呢?跟着我,一起探究Spring源码把。写在前面的话:Spring项目距今已有15年左右的历史了,是众多Java大神们的杰作,由于我个人水平有限,时间有限,不保证我说的全部都是正确的,但是我可以保证每一句话都是反复推敲,...

2019-01-30 09:19:00 233

转载 Spring中你可能不知道的事(二)

在上一节中,我介绍了Spring中极为重要的BeanPostProcessor BeanFactoryPostProcessor Import ImportSelector,还介绍了一些其他的零碎知识点,正如我上一节所说的,Spring实在是太庞大了,是众多Java开发大神的结晶,很多功能,很多细节,可能一辈子都不会用到,不会发现,作为普通开发的我们,只能尽力去学习,去挖掘,也许哪天可以...

2019-01-22 16:37:00 174

转载 Spring中你可能不知道的事(一)

Spring作为Java的王牌开源项目,相信大家都用过,但是可能大家仅仅用到了Spring最常用的功能,Spring实在是庞大了,很多功能可能一辈子都不会用到,今天我就罗列下Spring中你可能不知道的事。一是可以帮助大家以后阅读源码,知道Spring为什么会这么写,二是可以作为知识储备,当人家不会的时候,你正好知道这个点,三下五除二就搞定了,嘿嘿。三是平时吹牛的时候可以更有资本。。。当...

2019-01-16 10:58:00 85

转载 有点深度的聊聊JDK动态代理

在接触SpringAOP的时候,大家一定会被这神奇的功能所折服,想知道其中的奥秘,底层到底是如何实现的。于是,大家会通过搜索引擎,知道了一个陌生的名词:动态代理,慢慢的又知道了动态代理有多种实现方式,比如 JDK动态代理,Cglib 等等。今天我就来简单说说JDK动态代理。JDK动态代理的简单应用我们还是从一个最简单的例子着手:首先我们需要定义一个接口:public interf...

2019-01-09 16:54:00 271

转载 简单的单例模式其实也不简单

单例模式可以说只要是一个合格的开发都会写,但是如果要深究,小小的单例模式可以牵扯到很多东西,比如 多线程是否安全,是否懒加载,性能等等。还有你知道几种单例模式的写法呢?如何防止反射破坏单例模式?今天,我就花一章内容来说说单例模式。关于单例模式的概念,在这里就不在阐述了,相信每个小伙伴都了如指掌。我们直接进入正题:饿汉式public class Hungry { priva...

2019-01-03 09:52:00 82

转载 Volatile的那些事

上一篇中,我们了解了Synchronized关键字,知道了它的基本使用方法,它的同步特性,知道了它与Java内存模型的关系,也明白了Synchronized可以保证“原子性”,“可见性”,“有序性”。今天我们来看看另外一个关键字Volatile,这也是极其重要的关键字之一。毫不夸张的说,面试的时候谈到Synchronized,必定会谈到Volatile。一个小栗子public cla...

2018-12-27 16:34:00 94

转载 Synchronized的那些事

在上一篇博客中,我“蜻蜓点水”般的介绍了下Java内存模型,在这一篇博客,我将带着大家看下Synchronized关键字的那些事,其实把Synchronized关键字放到上一篇博客中去介绍,也是符合 “Java内存模型”这个标题的,因为Synchronized关键字和Java内存模型有着密不可分的关系。但是这样,上一节的内容就太多了。同样的,这一节的内容也相当多。好了,废话不多说,让我...

2018-12-24 09:02:00 68

转载 浅谈Java内存模型

Java内存模型虽说是一个老生常谈的问题 ,也是大厂面试中绕不过的,甚至初级面试也会问到。但是真正要理解起来,还是相当困难,主要这个东西看不见,摸不着。网上已经有大量的博客,但是人家的终究是人家的,自己也要好好的去理解,去消化。今天我也来班门弄斧,说下Java内存模型。说到Java内存模型,不得不说到 计算机硬件方面的知识。计算机硬件体系我们都知道CPU 和 内存是计算机中比较核心...

2018-12-16 23:31:00 92

转载 被标记为事务的方法互相调用的坑(下)

参考:https://www.iteye.com/topic/1122740上一节,主要分析了 被标记为事务的方法互相调用,事务失效的原因,思考比较多,这一节主要说说解决方案,思考会少一些。解决方案的核心: 通过代理对象去调用方法1.把方法放到不同的类:我们需要新建一个接口:public interface OtherService { void insertCodeM...

2018-12-12 21:07:00 84

转载 被标记为事务的方法互相调用的坑(上)

相信大家一定用过Spring中的注解型事务,配合上Spring Boot,只需要在方法上打一个@Transactional 就可以完成,真香。但是如果大家对其中的机制一知半解的话,可能一不小心就会掉进坑,然后久久无法爬出来。下面我就分享下 被标记为事务的方法互相调用的坑。首先我写两个事务方法: @Autowired AccountMapper mapper; ...

2018-12-07 15:10:00 75

转载 几种实现延时任务的方式(三)

上篇文章介绍了使用Redis来实现延时任务,这是一个比较好的方案,但是这种方式是把Redis作为消息队列去使用,而Redis作为消息队列还是有一些缺点的:Redis本身没有提供监控、管理界面,需要自己去实现。我们无法方便的知道现在队列的情况,比如是否有积压,消费情况是如何的,生产情况又是如何的。消息可能被重复消费,如果是幂等性操作也没什么,但是如果非幂等性操作,就需要其他的解决方案...

2018-12-03 09:42:00 93

转载 几种实现延时任务的方式(二)

在上一节中,我们讲了三种方式来实现延时任务,其实,将三种方式结合起来用,对于一些中小型公司已经足够了,但是在中大型互联网公司还是远远不够的。想必大家对Redis起码有一个初步的概念:基于内存的非关系型数据库。在平时的业务开发中,Redis经常会被用做缓存,来提高网站的性能,减少数据库的访问,所以一想到Redis,脑海中第一个浮现出来的就是缓存。没办法,对于搬砖业务开发,所使用到的Re...

2018-11-28 17:07:00 80

转载 几种实现延时任务的方式(一)

大家肯定都有过在饿了么,或者在美团外卖下单的经历,下完单后,超过一定的时间,订单就被自动取消了。这就是延时任务。延时任务的应用场景相当广泛,不仅仅上面所说的饿了吗,美团外卖,还有12306,或者是淘宝,携程等等 都有这样的场景。这延时任务是怎么实现的呢?跟着我,继续看下去吧。1.在SQL查询,Serive层组装的时候做手脚在拼接SQL或者Serive层做一些判断,比如 订单状态为 “...

2018-11-27 21:32:00 202

空空如也

空空如也

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

TA关注的人

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