自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 深入浅出一致性Hash原理

一、前言 在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。 但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器...

2019-08-27 00:21:00 207

转载 布隆过滤器redis缓存

Bloom Filter布隆过滤器 算法背景 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希 表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换...

2019-08-27 00:00:00 240

转载 算法从小白到大神之荷兰国旗问题&快排&堆排

题目一: 给定一个数组arr,和一个数num,请把小于等于num的数放在数 组的左边,大于num的数放在数组的右边。 要求额外空间复杂度O(1),时间复杂度O(N) 问题二(荷兰国旗问题) 给定一个数组arr,和一个数num,请把小于num的数放在数组的 左边,等于num的数放在数组的中...

2019-08-22 20:27:00 311

转载 算法从小白到大神之时间复杂度&几种排序算法探究

认识时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是 固定时间内完成的操作,叫做常数操作。 时间复杂度为一个算法流程中,常数操作数量的指标。常用O (读作big O)来表示。具体来说,在常数操作数量的表达式中, 只要高阶项,不要低阶项,也不要高阶项的系数,剩下的...

2019-08-21 23:12:00 137

转载 一篇文章带你领略——JVM运行原理揭秘

JVM运行时数据区 线程共享:所有线程能访问这块内存数据,随虚拟机或GC而创建和销毁 线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁 线程安全问题:共享资源的抢占、线程共享的内存区域 方法区 方法区作用:存储加载的类信息、常量、静态...

2019-08-18 10:32:00 117

转载 两个Integer的引用对象传递给一个swap方法的内部进行交换,返回后,两个引用的值是否会发生变化...

示例一: /** * 大厂面试题(微博、百度、腾讯): * 两个Integer的引用对象传递给一个swap方法的内部进行交换,返回后,两个引用的值是否会发生变化 */public class Test001 { public static void m...

2019-08-17 14:23:00 554

转载 深入分布式缓存从原理到实战之无处不在的缓存

缓存分类 一.按照所处位置来分: 客户端缓存 服务端缓存 网络中缓存 二.按照规模和部署方式来分: 单体缓存 缓存集群 分布式缓存 可见,在软件系统中缓存几乎无处不在! 为什么去使用缓存 一:提高...

2019-08-15 23:15:00 191

转载 史上最通俗易懂的Mybatis源码分析之执行流程总结

一:Mybatis源码分析流程 public static void main(String[] args) { try { // 基本mybatis环境 // 1.定义mybatis_config文件地址 Strin...

2019-08-14 20:07:00 157

转载 Java集合源码分析之LinkedList

前言 前面一篇我们分析了ArrayList的源码,这一篇分享的是LinkedList。我们都知道它的底层是由链表实现的,所以我们要明白什么是链表? 一、LinkedList简介 1.1、LinkedList概述   LinkedList是一种可以在任何位置进行高...

2019-08-09 17:11:00 152

转载 Java集合源码分析之ArrayList

前言: 既然是看源码那我们要怎么看一个类的源码呢?这里我推荐的方法是: 1)看继承结构 看这个类的层次结构,处于一个什么位置,可以在自己心里有个大概的了解。 2)看构造方法 在构造方法中,看做了哪些事情,跟踪方法中里面的方法。 3)看常用的方法 跟构造方法...

2019-08-08 10:29:00 109

转载 Spring5.0源码深度解析之容器的功能扩展

版权所有:https://my.oschina.net/u/3995125,禁止转载 容器的功能扩展 前期准备: 同样,我们还是以AnnotationConfigApplicationContext 作为切入点,开始对整体功能进行分析。 AnnotationCon...

2019-08-04 16:03:00 174

转载 SpringMVC源码深度解析之HandlerAdapter适配器模式源码分析

SpringMVC中的HandlerAdapter适配器 什么是适配器模式 定义:将一个系统的接口转换成另外一种形式,从而使原来不能直接调用的接口变得可以调用。 适配器模式应用场景 Mybatis多种日志框架的整合 SpringMVC适配器模式 ...

2019-08-02 17:40:00 261

转载 SpringMVC源码深度解析之DispatcherServlet源码分析

DispatcherServlet源码分析 SpringMVC核心就是DispatcherServlet,所有得请求都会转发到DispatcherServlet,然后再通过DispatcherServlet执行具体得控制层(Handler)返回ModelAndView给客户端视图...

2019-08-02 07:50:00 225

转载 SpringMVC源码深度解析之拦截器&过滤器&视图层&异步源码分析

SpringMVC核心 SpringMVC注解方式开启视图层 整合Jsp 视图层 @Beanpublic InternalResourceViewResolver internalResourceViewResolver() { // 1.需要前缀 ...

2019-08-01 14:41:00 153

转载 SpringMVC源码深度解析之SpringServletContainerInitializer原理分析

SpringMVC 对SpringMVC或者其它比较成熟的MVC框架而言,解决的问题无外乎以下几点: 将web页面的请求传给服务器 根据不同的请求处理不同的逻辑单元 返回处理结果数据并跳转至响应的页面 Servlet与SpringMVC之间的...

2019-08-01 10:42:00 586

转载 Spring5.0源码深度解析之SpringBean循环依赖问题解决方案

Spring循环依赖 什么是Spring的循环依赖?循环依赖会存在哪些问题? 示例:AService依赖BService; BService依赖AService @Servicepublic class AService { // @Autowired...

2019-08-01 01:18:00 261

转载 Spring5.0源码深度解析之SpringBean声明事务底层实现原理

Spring事务 Spring声明式事务让我们从复杂的事务处理中得到解脱,使我们再也不用去处理这些步骤:获得连接、关闭连接、事务提交和回滚操作。再也不需要在事务相关方法中处理大量的try..catch..finally代码。 Spring中事务的使用虽然已经相对简单的多,但是...

2019-07-31 15:02:00 848

转载 Spring5.0源码深度解析之SpringBean的Aop通知调用链源码分析

SpringAOP原理探究 思考:springAOP底层运用了什么设计模式? 生成代理类:代理设计模式、底层五个通知形成调用链采用:责任链设计模式 下面我们回顾下SpringAop实现流程: 1、配置@EnableAspectJAutoProxy:开启AOP权限 ...

2019-07-30 15:06:00 308

转载 Spring5.0源码深度解析之SpringBean的Aop源码分析

SpringAop源码分析:需要关联SpringBean的生命周期 思考: 1.什么时候创建代理类对象 2.SpringAop中如何综合运用CGLIB和JDK动态代理 @EnableAspectJAutoProxy:开启AOP的权限 注入到Spring容器中 ...

2019-07-29 22:50:00 228

转载 Spring5.0源码深度解析之SpringBean的Aop的使用

SpringAOP 什么是Aop编程 Aop面向切面编程,在方法之前和之后实现处理 应用场景在于:日志打印、事务实现、安全等。 因为AOP可以解决我们程序上的代码冗余问题 Spring的AOP 前置通知 后置通知 环绕通知 运行通知 异常通...

2019-07-29 14:42:00 148

转载 Spring5.0源码深度解析之SpringBean的生命周期

SpringBean的生命周期 一:单例与多例对象是如何初始化 单例默认情况下是在容器被加载的时候就会初始化 多例是在每次获取Bean对象的时候初始化 代码验证: @Componentpublic class UserEntity { public ...

2019-07-29 09:09:00 434

转载 Spring5.0源码深度解析之Spring基于注解启动流程分析

主要内容: 一、IOC容器的初始化流 创建IOC容器 注册配置类 BeanFactory后置处理器 Bean的后置处理器 创建Bean对象 IOC容器的初始化流程 从: ApplicationContext ...

2019-07-28 23:09:00 254

转载 Spring5.0源码深度解析之Spring核心注解

Spring核心注解原理 这篇文章主要针对Spring核心注解进行分析 一:@Condition注解 Condition 是在spring4.0 增加的条件注解,通过这个可以功能可以实现选择性的注入Bean操作,接下来先学习下Condition是如何使用的,然后分析spri...

2019-07-28 16:59:00 416

转载 Spring5.0源码深度解析之理解Configuration注解

Spring5.0之:@Configuration的使用 @Configuration用于定义配置类,可替换XML配置文件,被注解的类内部包含有一个或者多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或者Annotat...

2019-07-28 15:33:00 119

转载 Mybatis深入源码分析之SqlSessionFactory二级缓存原理分析

上篇内容回顾可以参考;Mybatis深入源码分析之SQLSession一级缓存原理分析 这里再概括下上篇源码分析内容: 一:Mybatis一级缓存 mybatis的一级缓存是SqlSession缓存,在操作数据库的时候需要先创建SQL会话对象,在对象中有个HashMap用于存储缓存...

2019-07-27 13:44:00 445

转载 Mybatis深入源码分析之SQLSession一级缓存原理分析

通过前面几篇文章,Mybatis深入源码分析之SqlSessionFactoryBuilder源码分析,Mybatis深入源码分析之Mapper与接口绑定原理源码分析。我们对Mybatis源码也有了一定的了解。本篇文章,我们继续分析:SQLSession一级缓存原理。 一:invoke...

2019-07-27 08:49:00 191

转载 Mybatis深入源码分析之Mapper与接口绑定原理源码分析

紧接上篇文章:Mybatis深入源码分析之SqlSessionFactoryBuilder源码分析,这里再来分析下,Mapper与接口绑定原理。 本章疑问: // 5.操作Mapper接口UserMapper mapper = sqlSession.getMapper(UserM...

2019-07-26 14:02:00 1024

转载 Mybatis深入源码分析之SqlSessionFactoryBuilder源码分析

一:源码分析代码片段 public static void main(String[] args) { try { // 基本mybatis环境 // 1.定义mybatis_config文件地址 String res...

2019-07-26 00:30:00 122

转载 Java并发编程笔记——J.U.C之executors框架:ScheduledThreadPoolExecutor

一、ScheduledThreadPoolExecutor简介 在executors框架设计理念 一节中,我们曾经提到过一种可对任务进行延迟/周期性调度的执行器(Executor),这类Executor一般实现了ScheduledExecutorService这个接口。Schedule...

2019-07-25 22:38:00 144

转载 Java并发编程笔记——J.U.C之executors框架:ThreadPoolExecutor

一、ThreadPoolExecutor简介 在J.U.C之executors框架:executors框架设计理念的章节中,我们已经简要介绍过ThreadPoolExecutor了,通过Executors工厂,用户可以创建自己需要的执行器对象。ThreadPoolExecutor,它是...

2019-07-25 10:21:00 114

转载 Java并发编程笔记——J.U.C之executors框架:executors框架设计理念

一、executors框架简介 juc-executors框架是整个J.U.C包中类/接口关系最复杂的框架,真正理解executors框架的前提是理清楚各个模块之间的关系,高屋建瓴,从整体到局部才能透彻理解其中各个模块的功能和背后的设计思路。 网上有太多文章讲executors框架,...

2019-07-24 11:22:00 144

转载 Java并发编程笔记——J.U.C之collections框架:ConcurrentLinkedQueue

一:ConcurrentLinkedQueue简介 ConcurrentLinkedQueue是线程安全的无界非阻塞队列,其底层数据结构使用单向链表实现,对于入队和出队操作使用CAS来实现线程安全。 Doug Lea在实现ConcurrentLinkedQueue时,并没有...

2019-07-23 22:13:00 173

转载 一篇文章搞定——JDK8中新增的StampedLock

一、StampedLock类简介 StampedLock类,在JDK1.8时引入,是对读写锁ReentrantReadWriteLock的增强,该类提供了一些功能,优化了读锁、写锁的访问,同时使读写锁之间可以互相转换,更细粒度控制并发。 首先明确下,该类的设计初衷是作为一个内部工具类...

2019-07-21 23:24:00 190

转载 读写锁——ReentrantReadWriteLock原理详解

1.读写锁ReentrantReadWriteLock的原理 解决线程安全问题使用ReentrantLock就可以了,但是ReentrantLock是独占锁,某一时刻只有一个线程可以获取该锁,而实际中会有写少读多的场景,显然ReentrantLock满足不了这个需求,所以Reentr...

2019-07-21 11:16:00 1505

转载 可重入的独占锁——ReentrantLock源码分析

ReentrantLock面试题分析 1、ReentrantLock是怎么实现的? 2、ReentrantLock的公平锁和非公平锁是如何实现的? 1.ReentrantLock类图结构 从类图我们可以直观地了解到,ReentrantLock最终还是使用A...

2019-07-20 16:23:00 109

转载 抽象同步队列AQS——AbstractQueuedSynchronizer锁详解

AQS——锁的底层支持 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常...

2019-07-19 00:08:00 205

转载 LockSupport实现线程挂起和唤醒——深入浅出原码分析

面试题 (1)LockSupport比Object的wait/notify有两大优势,分别是什么? (2)LockSupport源码是如何实现的,具体说说你的看法? (1)LockSupport比Object的wait/notify有两大优势,分别是什么? LockSu...

2019-07-18 15:48:00 377

转载 ArrayList和CopyOnWriteArrayList面试题总结与源码分析

面试题 (1)ArrayList和CopyOnWriteArrayList的增删改查实现原理? (2)为什么说ArrayList查询快而增删慢? (3)弱一致性的迭代器原理是怎么样的? (4)CopyOnWriteArrayList为什么并发安全且性能比Vector好? ...

2019-07-18 11:22:00 808

转载 比LongAddr功能更强大的LongAccumulator原子类原理探究

面试题 (1)LongAccumulator与LongAddr类的结构 (2)LongAddr与LongAccumulator类有什么区别? (3)LongAddr与LongAccumulator类相同点? (1)LongAccumulator与LongAddr类的结...

2019-07-17 21:11:00 201

转载 六个面试题层层剖析——LongAddr原子类原理探究

并发编程面试题 (1)LongAddr的结构是怎样的? (2)当前线程应该访问Cell数组里面的哪一个Cell元素? (3)如何初始化Cell数组? (4)Cell数组如何扩容? (5)线程访问分配的Cell元素有冲突后如何处理? (6)如何保证线程操作被分配的C...

2019-07-17 18:18:00 801

空空如也

空空如也

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

TA关注的人

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