- 博客(21)
- 资源 (54)
- 收藏
- 关注
转载 Spring 循环引用 ——理解singleton与prototype初始化的区别
所谓的循环引用,就是A依赖B,B又依赖A,A与B两个对象相互持有。像下面这种情况: class A{ B b; public A(B b) { this.b=b; }}class B{ A a; public B(A a ) { this.a=a; } }我们知道spring在获取对象或者在加载的时候,触发依赖注入。例如触发A对象的依赖注入,发现...
2018-09-25 13:29:43 1031 1
转载 MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第...
2018-09-21 15:28:43 138
转载 B树和B+树的总结
B树为什么要B树磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写。那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费时间比较大的一块,毕竟机械运动花费的时候要远远大于电子运动的时间。当大规模数据存储到磁盘中的时候,显然定位是一个非常花费时间的过程,但是...
2018-09-21 15:09:16 134
转载 理解mysql的锁、事务隔离级别及事务传播行为
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。ACID,是指在可靠数据库管理系统(DBMS)中,事务(Transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性 原子性是指事务是一个不...
2018-09-21 12:19:23 227
转载 深入分析Volatile的实现原理
引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能...
2018-09-21 12:03:45 111
转载 RabbitMQ之消息确认机制(事务+Confirm)
概述在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认情况下我们的生产者是不知道消息有没有正确到达broker的,如果在消息到达broker之前已经丢失...
2018-09-21 12:00:28 263
转载 RabbitMQ消息的可靠性
消息可靠性在项目中使用RabbitMQ时,我们可能会遇到这样的问题:如一个订单系统当用户付款成功时我们往消息中间件添加一条记录期望消息消费者修改订单状态,但是最终实际订单状态并没有被修改成功。遇到这种问题我们排查的思路如下:1.消息是否已经成功发送到消息中间件2.消息是否有丢失的情况 消息是否已经被消费成功在生产环境下是不容许出现消息投递/消费错误的情况的,因为这可能会对企业产生巨...
2018-09-21 11:37:20 8275
转载 RabbitMQ和Kafka对比以及场景使用说明
1.架构模型 rabbitmq RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consu...
2018-09-21 10:14:58 210
转载 Rabbitmq原理和分析
1、基本原理MQ全称为Message Queue,是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列中的消息。RabbitMQ是MQ产品的典型代表,是一款基于AMQP协议可复用的企业消息系统。业务上,可以实现服务提供者和消费者之间的数据解耦,提供高可用性的消息传输机制,在实际生产中...
2018-09-21 09:19:03 1003
转载 Spring源码初探-IOC(4)-Bean的初始化-循环依赖的解决
前言在实际工作中,经常由于设计不佳或者各种因素,导致类之间相互依赖。这些类可能单独使用时不会出问题,但是在使用Spring进行管理的时候可能就会抛出BeanCurrentlyInCreationException等异常 。当抛出这种异常时表示Spring解决不了该循环依赖,本文将简要说明Spring对于循环依赖的解决方法。循环依赖的产生和解决的前提循环依赖的产生可能有很多种情况,例如:...
2018-09-21 09:08:36 91
转载 就是要你懂Java中volatile关键字实现原理
前言我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识,掌握这部分知识一定会让我们更好地理解volatile的原理,从而更好、更正确地地使用volati...
2018-09-20 14:00:37 229
转载 MySQL存储引擎中的MyISAM和InnoDB区别详解
在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息:MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transa...
2018-09-20 12:46:16 110
转载 Java集合-ConcurrentHashMap工作原理和实现JDK7
概述本文学习知识点1.ConcurrentHashMap与HashMap的区别。2.数据存储结构。3.如何提高并发读写性能。4.put和get方法源码实现分析。5.size方法如何实现。与HashMap的区别1.ConcurrentHashMap和HashMap都是Map的实现,提供key,value的读写。2.都继承自AbstractMap类,但实现的接口不同,如下...
2018-09-20 10:46:58 122
转载 Java集合-ConcurrentHashMap工作原理和实现JDK8
概述本文主要介绍ConcurrentHashMap在JDK8中的源码实现和原理。在JDK8中,开发人员几乎把ConcurrentHashMap的源码重写了一遍,源码由之前的2000多行增加到了6300行左右,因此实现也就复杂很多。在学习之前,最好先了解下如下知识:1、ReentrantLock的实现和原理。2、Synchronized的实现和原理。3、硬件对并发支持的CAS操作及JV...
2018-09-20 10:46:21 516
转载 ConcurrentHashMap与红黑树实现分析Java8
本文学习知识点1、二叉查找树,以及二叉树查找带来的问题。2、平衡二叉树及好处。3、红黑树的定义及构造。4、ConcurrentHashMap中红黑树的构造。在正式分析红黑树之前,有必要了解红黑树的发展过程,请读者耐心阅读。二叉查找树红黑树的起源得从二叉查找树(二叉排序树)说起。先来看二叉查找树的定义:1、要么为一颗空树,要么就是一颗具有如下特性的二叉树。2、左子节...
2018-09-20 10:20:57 1388
转载 Java中的四种引用类型(强、软、弱、虚)
为什么需要不同的引用类型从Java1.2开始,JVM开发团队发现,单一的强引用类型,无法很好的管理对象在JVM里面的生命周期,垃圾回收策略过于简单,无法适用绝大多数场景。为了更好的管理对象的内存,更好的进行垃圾回收,JVM团队扩展了引用类型,从最早的强引用类型增加到强、软、弱、虚四个引用类型。引用类图引用类图StrongRerence为JVM内部实现。其他三类引用类型全部继承自...
2018-09-20 10:07:58 240
转载 ThreadLocal内存泄漏真因探究
ThreadLocal原理回顾 ThreadLocal的原理:每个Thread内部维护着一个ThreadLocalMap,它是一个Map。这个映射表的Key是一个弱引用,其实就是ThreadLocal本身,Value是真正存的线程变量Object。也就是说ThreadLocal本身并不真正存储线程的变量值,它只是一个工具,用来维护Thread内部的Map,帮助存和取。注意上图的虚线...
2018-09-20 10:03:31 513
转载 ThreadLocal-面试必问深度解析
ThreadLocal是什么ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。从数据结构入手下图为ThreadLocal的内部结构图ThreadLocal结构内部从上面的结构图,我们已经窥见ThreadLo...
2018-09-19 16:52:38 5478
转载 Mycat中间件---MySQL读写分离
MySQL主从复制的几种方案数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。 从数据库的角度来说,对于大多数应用来说,从集中到分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即SQL查询的瓶颈,我们知道,正常情况下,Insert SQL就是几十个毫秒的时间内写入完成,而系统中的大多数Select SQL则要几秒到几分钟才能有结果,很多复杂的SQ...
2018-09-19 15:39:50 191
转载 事务的传播行为(讲得比较好)
我们都知道事务的概念,那么事务的传播特性是什么呢?(此处着重介绍传播特性的概念,关于传播特性的相关配置就不介绍了,可以查看spring的官方文档) 在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层 那么当我们调用Service层的一个方法的时候它能够保证我们的这个方法中执行的所有的对数据库的更新操作保持在一个事务中,在事务层里面调用的这些方法要么全部成功,要么全部失败。那么事...
2018-09-18 10:51:12 304
转载 MySQL事务隔离级别和Spring事务关系介绍
事务隔离级别介绍隔离级别 脏读 不可重复读 幻读 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed) 不可能 可能 可能 可重复读(Repeatable read) 不可能 不可能 可能 可串行化(Serializable ) 不可能 不可能...
2018-09-18 10:51:04 1277
Postman-win64 安装版
2018-12-16
彩色UML建模_机械工业出版社_[美]Peter Coad,Eric Lefebvre,Jeff De Luca著 中文完整版
2017-12-22
实现领域驱动设计 中文完整版 大小108M
2017-12-22
微信 java weixin-java-tools-springmvc-master
2017-12-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人