自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Mysql加锁过程详解(6)-初步理解MySQL的gap锁

1. 什么是gapA place in an InnoDB index data structure where new values could be inserted. 说白了gap就是索引树中插入新记录的空隙。相应的gap lock就是加在gap上的锁,还有一个next-key锁,是记录+记录前面的gap的组合的锁。2. gap锁或next-key锁的作用T...

2019-06-14 15:43:00 398

转载 Mysql加锁过程详解(5)-数据库隔离级别

一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。√: 可能出现×: 不会出现脏读不可重复读幻读Read uncommitt...

2019-06-14 12:02:00 157

转载 Mysql加锁过程详解(4)-innodb 多版本并发控制原理详解

多版本并发控制技术已经被广泛运用于各大数据库系统中,如Oracle,MS SQL Server 2005+, Postgresql, Firebird, Maria等等,开源数据库MYSQL中流行的INNODB引擎也采用了类似的并发控制技术.本文就将结合实例来解析不同事务隔离等级下INNODB的MVCC实现原理.1MVCC概述1.1MVCC简介MVCC (Multiver...

2019-06-14 11:27:00 149

转载 Mysql加锁过程详解(3)-select for update/lock in share mode 对事务并发性影响

事务并发性理解事务并发性,粗略的理解就是单位时间内能够执行的事务数量,常见的单位是 TPS( transactions per second).那在数据量和业务操作量一定的情况下,常见的提高事务并发性主要考虑的有哪几点呢?1.提高服务器的处理能力,让事务的处理时间变短。这样不仅加快了这个事务的执行时间,也降低了其他等待该事务执行的事务执行时间。2.尽量将事务涉及到的 ...

2019-06-13 10:56:00 193

转载 Mysql加锁过程详解(2)-关于mysql 幻读理解

这里给出 mysql 幻读的比较形象的场景:users: id 主键1、T1:select * from users where id = 1;2、T2:insert into `users`(`id`, `name`) values (1, 'big cat');3、T1:insert into `users`(`id`, `name`) values (1...

2019-06-13 09:56:00 145

转载 Mysql加锁过程详解(1)-基本知识

1、背景  MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚...

2019-06-12 09:55:00 185

转载 Kafka:Consumer

1.预览1.1 消费者组(Consumer Group)一个consumer group可能有若干个consumer实例同一个group里面,topic的每条信息只能被发送到group下的一个consumer实例topic消息可以被发送到多个group为什么需要consumer group?consumer group是用于实现高伸缩性、高容错性的co...

2019-05-28 12:33:00 230

转载 Kafka:Producer

1.producer端的基本数据结构1.ProducerRecord一个ProducerRecord封装了一条待发送的消息public class ProducerRecord<K, V> { private final String topic; private final Integer partition; privat...

2019-05-26 11:23:00 195

转载 Kafka的消息处理语义

1.消息交付语义client端常见的3钟消息交付语义:最多一次:消息可能丢失也可能被处理,但最多只会被处理一次。至少一次:消息不会丢失,但可能被处理多次精确一次:消息被处理且只会被处理一次在0.11.0.0版本之前,Kafka producer默认提供的是at least once语义。设想一下这个场景:如当producer向broker发送新消息后,分区le...

2019-05-25 14:37:00 195

转载 Java虚拟机:字节码

Java的使命是一次编写、到处执行,在不同的操作系统、不同硬件平台上,均可以不用修改代码即可顺畅的执行?如何实现跨平台?中间码应运而生,即字节码(Bytecode).Java的所有指令有200个左右,而1个字节可以存储256个指令,一个这样的字节就称为字节码。在代码执行的过程中,JVM将字节码进行解析,屏蔽了对底层操作系统的依赖;JVM也可以将字节码编译执行,如果是热点代码,会通...

2019-04-18 16:30:00 167

转载 Java集合:HashSet和TreeSet

从前文可知,List中的元素是可以重复的,而Map中的key是不可重复的,但是它存放的是一个key-value对的映射,那么有没有一种结构,可以让它存放不重复的数据呢?答案就是Set。Set最常用的实现类就是HashSet和TreeMap,下面分别进行介绍。HashSetHashSet的底层实际上是一个HashMap,因此它的元素是无序的,可以插入null值,它的绝大部分方法...

2019-04-11 17:36:00 115

转载 Java集合:HashMap

原文:Java 8系列之重新认识HashMap,有删改。JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理,文章末尾附有HashMap的put方法和resize方法的源码解析。简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主...

2019-04-10 21:34:00 104

转载 Java集合:CopyOnWriteArrayList与SynchronizedList

CopyOnWriteArrayList首先提两点:1、CopyOnWriteArrayList位于java.util.concurrent包下,可想而知,这个类是为并发而设计的2、CopyOnWriteArrayList,顾名思义,Write的时候总是要Copy,也就是说对于CopyOnWriteArrayList,任何可变的操作(add、set、remove等等)都是伴随...

2019-04-10 17:16:00 399

转载 Java集合:LinkedList

初识LinkedList上一篇中讲解了ArrayList,本篇文章讲解一下LinkedList的实现。LinkedList是基于链表实现的,所以先讲解一下什么是链表。链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储单元里面,这个存储单元里面除了存放有待存储的数据以外,还存储有其下一个存储单元的地址(下一个存储单元的地址是必要的,有些存储结构还存放...

2019-04-10 16:16:00 101

转载 Java集合:ArrayList

前言这个分类中,将会写写Java中的集合。集合是Java中非常重要而且基础的内容,因为任何数据必不可少的就是该数据是如何存储的,集合的作用就是以一定的方式组织、存储数据。这里写的集合,一部分是比较常见的、一部分是不常用但是我个人平时见到过的,一些比较相似的集合(比如HashMap和Hashtable)就只讲一个,突出它们之间的区别即可。最后,要指出一点,对于集合,我认为关注的点主...

2019-04-10 13:09:00 97

转载 java静态代理与动态代理简单分析

代理这个词大家肯定已经非常熟悉,因为现实中接触的很多,其实现实中的东西恰恰可以非常形象和直观地反映出模式的抽象过程以及本质。现在房子不是吵得热火朝天吗?我们就以房子为例,来拨开代理的面纱。假设你有一套房子要卖,一种方法是你直接去网上发布出售信息,然后直接带要买房子的人来看房子、过户等一直到房子卖出去,但是可能你很忙,你没有时间去处理这些事情,所以你可以去找中介,让中介帮你...

2019-04-10 10:48:00 98

转载 Java设计模式:适配器模式

适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。  适配器模式有两种:类适配器、对象适配器、接口适配器  前二者在实现上有些许区别,作用一样,第三个接口适配器差别较大。1、类适配器模式:  原理:通过继承来实现适配器功能。  当我们要访问的接口A中没有我们想要的方法 ,却在另一个接口...

2019-04-09 21:54:00 95

转载 Java设计模式:策略模式

策略模式策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式的结构策略模式是对算法的包装,是把使用算法的责任和算法本身分开。策略模式通常是把一系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。策略模式涉及到三个角色:1、环境角色持有一个策略...

2019-04-09 20:54:00 67

转载 Java设计模式:单例模式

前言非常重要,单例模式是各个Java项目中必不可少的一种设计模式。本文的关注点将重点放在单例模式的写法以及每种写法的线程安全性上。所谓"线程安全性"的意思就是保证在创建单例对象的时候不存在竞争,只会创建出一个单例对象。单例模式作为对象的创建模式,单例模式确保其某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。单例模式有以下特点:1、单例...

2019-04-08 18:34:00 77

转载 Java设计模式:工厂方法模式

工厂方法模式工厂方法模式是类的创建模式。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工厂推迟到子类中。工厂方法模式工厂方法模式是对简单工厂模式进一步抽象的结果。假如是不使用反射的工厂方法模式,那么所有的if...else if...else都放在工厂类中,势必造成工厂类的无限臃肿这时候就需要工厂方法模式来处理这个问题了。工厂方法模式中,核心...

2019-04-08 18:32:00 67

转载 Ubuntu16.04上搭建CDH5.14集群

硬件平台介绍集群总共包括三台电脑,一台主机两台从机,电脑名称和名称对应关系如下:hadoop-master 大电脑hadoop-slave1 一体机hadoop-slave2 台式机各个主机通过路由器组件局域网,通常路由器会给每个主机分配固定的IP地址,在Ubuntu终端下,可以使用ifconfig查看机器的IP地址。如下为集群的主机和IP对应关系(需要根据自...

2019-02-16 19:51:00 321

转载 Spark 消息通信架构

一、前言在 Spark 事件总线 一篇中有介绍组件内之间的通信,那 Spark 集群内,各组件之间又是怎么通信的? Spark 有内置的 RPC 框架(在 Spark 2.0.0 之前,是借助 Akka 来实现的,虽然没有具体用过,但社区评论都赞 Akka 是非常优秀的开源分布式框架。那 Spark 为什么弃用了 Akka?主要原因是解决用户的Spark Application 中 ...

2018-09-30 09:26:00 178

转载 spark性能优化之shuffle优化

1.Shuffle原理概述什么样的情况下,会发生shuffle?在spark中,主要是以下几个算子:groupByKey、reduceByKey、countByKey、join,等等。什么是shuffle?groupByKey:要把分布在集群各个节点上的数据中的同一个key,对应的values,都给集中到一块儿,集中到集群中同一个节点上,更严密一点说,就是集中到一个节...

2018-09-12 09:14:00 652

转载 spark的性能优化

1、在实际项目中分配更多的资源分配更多资源:性能调优的王道,就是增加和分配更多的资源,性能和速度上的提升,是显而易见的;基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,进行性能调优的时候,首先第一步,我觉得,就是要来调节最优的资源配置;在这个基础之上,如果说你的spark作业,能够分配的资源达到了你的能力范围的顶端之后,无法再分配更多的资...

2018-09-09 09:17:00 172

转载 Hbase 的 Compaction

了解HBase的童鞋都知道,HBase是一种LSM(Log-Structured Merge Tree)架构模式,用户数据写入先写WAL,再写缓存,满足一定条件后缓存数据会执行flush操作真正落盘,形成一个数据文件HFile。随着数据写入不断增多,flush次数也会不断增多,进而HFile数据文件就会越来越多。然而,太多数据文件会导致数据查询IO次数增多,因此HBase尝试着不断对这些...

2018-06-10 22:58:00 269

转载 Hbase要掌握的内容

HBase与传统关系型数据库(如MySQL)的区别数据类型:没有数据类型,都是字节数组(有一个工具类Bytes,将java对象序列化为字节数组)。数据操作:HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系,而传统数据库通常有各式各样的函数和连接操作。存储模式:Hbase适合于非结构化数据存储,基于列存储而不是行。数据维护:HBase的...

2018-06-06 22:44:00 623

转载 yarn的架构及原理

1. YARN产生背景 MapReduce本身存在着一些问题: 1)JobTracker单点故障问题;如果Hadoop集群的JobTracker挂掉,则整个分布式集群都不能使用了。 2)JobTracker承受的访问压力大,影响系统的扩展性。 3)不支持MapReduce之外的计算框架,比如Storm、Spark、Flink等。 与旧MapReduce相比...

2018-05-24 21:59:00 543

转载 MapReduce工作原理

1 InputFormat数据输入1.1 切片与MapTask并行度决定机制1.2 Job提交流程源码和切片源码详解Job提交流程源码详解waitForCompletion()submit();// 1建立连接connect(); // 1)创建提交Job的代理new Cluster(getConfiguration());...

2018-05-20 19:36:00 116

转载 Java虚拟机:对象创建和垃圾回收

对象实例化在实例化对象的过程中,JVM发生了什么化学反应?(1)下面从最简单的 Object ref = new Object(); 进行分析,查看字节码如下:18: new #8 // class java/lang/Object21: dup22: invokespecial #9 ...

2018-04-24 19:15:00 162

转载 四种引用状态

在JDK1.2之前,Java中的引用的定义很传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。这种定义很纯粹,但是太过狭隘,一个对象在这种情况下只有被引用或者没有被引用两种状态,对于如何描述一些"食之无味,弃之可惜"的对象就显得无能为力。我们希望能描述这样一类对象:当内存空间还足够时,则能保留在内存之中;如果内存空间在进行垃圾收...

2018-04-23 23:41:00 267

转载 Java虚拟机:JVM内存布局

JVM内存布局规定了Java在运行过程中内存申请、分配和管理的策略,保证了JVM的高效稳定运行。结合JVM规范,来探讨一下经典的JVM内存布局,下面的内存布局基于Jdk1.8,JVM是HotSpot1.Heap(堆区)Heap是OOM故障主要的发源地,它存储几乎所有的实例对象,堆由垃圾回收器自动回收,堆区各子线程共享。由图所示,堆区由新生代和老年代组成,而...

2018-04-23 22:05:00 219

转载 Java虚拟机:类加载过程

在冯诺依曼的计算机模型中,任何程序都要加载到内存才能与CPU进行交流。字节码.class文件同样需要加载到内存中,才可以实例化。其中,类加载器ClassLoader的使命就是加载.class文件到内存中。在加载类时,使用的是Parents Delegation Model,即双亲委派模型。Java类加载器是一个运行时核心基础设施模块,如下图,主要是在启动之初进行类的加载(Lo...

2018-04-20 17:10:00 101

空空如也

空空如也

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

TA关注的人

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