自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 MyISAM和InnoDB索引引擎的B+树索引实现

1. MyISAM索引实现:1)主键索引:MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM主键索引的原理图:                                                                           (图myisam1)这里设表一共有三列,

2017-03-31 20:00:15 7853 2

原创 B+树与数据库索引

本文对两篇文章进行了提取总结:http://www.cnblogs.com/heiming/p/5865101.htmlhttp://www.ruzuojun.com/topic/420.html一、innodb存储引擎索引概述:innodb存储引擎支持两种常见的索引:B+树索引和哈希索引。innodb支持哈希索引是自适应的,innodb会根据表的使

2017-03-31 19:41:37 1569

原创 图解B+树并和B-树特点对比总结

摘要: 一,    M阶B+树的定义(M阶是指一个节点最多能拥有的孩子数,M>2): 图1.1 3阶B+树         (1)根结点只有1个,分支数量范围[2,m]。         (2)除根以外的非叶子结点,每个结点包含分支数范围[[m/2],m],其中[m/2]表示取大于m/2的最小整数。一,    M阶B+树的定义(M阶是指一个节点最多能拥有的孩子数,M>2):

2017-03-31 14:09:36 3909

转载 如何线程安全的使用HashMap

进入正题,在周二面试时,一面的面试官有问到 HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别。当时有些紧张只是简单说了下HashMap不是线程安全的;Hashtable 线程安全,但效率低,因为是 Hashtable 是使用 sync

2017-03-30 17:11:54 9242 1

原创 B-树特征及插入删除操作总结

一. B-树特征和基本概念:B-树中所有结点孩子结点个数的最大值是B-树的阶。对于一个 m 阶的B-树(为了查找效率考虑,要求m >= 3):结构要求:1. 根节点至少有2个分支,1个关键字 2. 非根结点至少有 m/2(向上取整)个分支,(m/2) - 1 个关键字。3. 所有结点最多有 m 个分支,m - 1 个关键字。特点:1. 有 n 个分支的结点有 n -

2017-03-30 16:14:30 7852 2

转载 Java包装类、自动装箱与拆箱知识总结

面试题:结果:truetruefalsetrue下文转自:http://blog.csdn.net/zhangliangzi/article/details/50552587因为在学习集合时知道集合里存放的对象都是Object类型,取出的时候需要强制类型转换为目标类型(使用泛型集合不需要),如int a = (Inte

2017-03-29 11:17:49 307

原创 Java 多线程加锁的方式总结及对比

参考博文:http://www.cnblogs.com/handsomeye/p/5999362.html一.Java多线程可以通过:1. synchronized关键字2. Java.util.concurrent包中的lock接口和ReentrantLock实现类这两种方式实现加锁。二.synchronized关键字加锁的缺陷:如果一个代码块被s

2017-03-28 14:27:53 78630 9

原创 java 运算符总面试题总结

题目:请写出下面几个表达式的结果,答案可以用10进制或16进制书写1. 0xaa | 0x552. 15 & 2403. 10 ^ 124. -2 >> 15. -2 >>> 1解答:1. 分析:十六进制数用0x……来表示,后面一个十六进制位是四位,两个十六进制位为一个字节,最多后面可以有8个十六进制位,32个字节,如:0xFFFFFFFF

2017-03-28 11:19:19 3249

转载 Java中普通代码块,构造代码块,静态代码块区别

//执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” 2 public class CodeBlock01{ 3

2017-03-26 21:08:35 213

转载 Java多线程生产消费者模式和BlockingQueue同步队列

前言:     在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个

2017-03-24 14:05:06 739

原创 Synchronized同步静态方法和非静态方法总结

1.Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”。       Java中每个对象都有一个锁,并且是唯一的。假设分配的一个对象空间,里面有多个方法,相当于空间里面有多个小房间,如果我们把所有的小房间都加锁,因为这个对象只有一把钥匙,因此同一时间只能有一个人打开一个小房间,然后用完了还回去,再由JVM 去分配下一个获得钥匙的人。情况1:同一个

2017-03-23 14:54:53 40558 16

转载 TCP三次握手详解及释放连接过程(三次握手四次挥手)

TCP头部: 其中 ACK   SYN  序号  这三个部分在以下会用到,它们的介绍也在下面。暂时需要的信息有:ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接

2017-03-22 19:42:55 977

转载 平衡二叉树原理

平衡二叉树简称平衡树,是由Adelson-Velskii和Landis于1962年首先提出的,所以又称为AVL树。他的定义很简单,就是若一棵二叉树的每个左右节点的高度差最多相差1,此二叉树即是平衡二叉树。把二叉树的每个节点的左子树减去右子树定义为该节点的平衡因子。二叉平衡树的平衡因子只能是1、0或者-1。平衡二叉树是对二叉搜索树(又称为二叉排序树)的一种改进。二叉搜索树有一个缺点就是,树的

2017-03-21 14:54:42 647 1

转载 哈夫曼树

注:本文转载仅做个人学习备忘原文: http://blog.csdn.net/shuangde800/article/details/7341289一、哈夫曼树的概念和定义 什么是哈夫曼树?让我们先举一个例子。判定树:        在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。例如,编制

2017-03-21 14:52:59 1135

转载 正确使用Volatile关键字

Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。Java 语言

2017-03-20 17:55:39 254

转载 java中的synchronized(同步代码块和同步方法的区别)

问题的由来:看到这样一个面试题://下列两个方法有什么区别public synchronized void method1(){}public void method2(){ synchronized (obj){}}12345671234567synchronized用于解决同步问题,当有多条线程同时访问共享数据时,如果不进行同步,就会发生错误,Java提供

2017-03-20 17:38:26 201

转载 java中的Iterator和Iterable 区别

java.lang.Iterable java.util.Iterator Iterator是迭代器类,而Iterable是接口。 好多类都实现了Iterable接口,这样对象就可以调用iterator()方法。 一般都是结合着用,比如 HashMap类就实现了Iterable接口,而要访问或打印出Map中所有内容时,就可以这样: HashMap hashMap;

2017-03-19 19:10:09 433

转载 深入浅析Java中Static Class及静态内部类和非静态内部类的不同

java中的类可以是static吗?答案是可以。在java中我们可以有静态实例变量、静态方法、静态块。类也可以是静态的。java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java中,我们不能用static修饰顶级类(top level class)。只有内部类可以为static。     静态内部类和非

2017-03-19 13:34:15 343

转载 Java反射机制详解

| |目录1反射机制是什么2反射机制能做什么3反射机制的相关API·通过一个对象获得完整的包名和类名·实例化Class类对象·获取一个对象的父类与实现的接口·获取某个类中的全部构造函数 - 详见下例·通过反射机制实例化一个类的对象·获取某个类的全部属性·获取某个类的全部方法·通过反射机制调用某个类的方法·通过反射机制操作某个类的属性·

2017-03-18 13:27:46 213

转载 泛型的内部原理:类型擦除以及类型擦除带来的问题

注:本文仅供个人学习参考备忘原文:http://blog.csdn.net/lonelyroamer/article/details/7868820参考:java核心技术一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type

2017-03-18 12:09:07 677

转载 MapReduce:详解Shuffle过程

注:本文将两篇网上看到的文章进行了整理,仅供自己学习备忘原文:http://langyu.iteye.com/blog/992916(介绍的很详细)          http://www.cnblogs.com/gwgyk/p/3997849.html(总结性比较强)  Shuffle的正常意思是洗牌或弄乱,可能大家更熟悉的是Java API里的Collections.shu

2017-03-17 13:15:30 455

转载 hadoop中map和reduce的数量设置问题

map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务的分布式并行计算,从这个观点来看,如果将map和reduce的数量设置为1,那么用户的任务就没有并行执行,但是map和reduce的数量也不能过多,数量过多虽然可以提高任务并行度,但是太多的map和reduce也会导致整个hadoop框架因为过度的系统资源开销而使任

2017-03-17 13:07:49 4793

转载 Spring IoC和DI(反转控制和依赖注入)原理

IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩。Java程序员都知道:java程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,每个对象在使用他的合作对象时,自己均要使用像new object() 这样的语法来完成合作对象的申请工作。你会发现:对象间的耦合度高了。而IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。

2017-03-16 17:17:40 366

原创 JVM内存分配策略

内存分配策略1)大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。(注:Minor GC和Full GC的区别:新生代GC即Minor GC,指发生在新生代的垃圾收集侗族,因为Java对象大多都具备招生熄灭的特性,所以Minor GC非常频繁,一般回收速度也比较快;老年代GC即Full GC或称Major GC,只发生在老年代

2017-03-16 15:56:10 276

原创 JVM垃圾回收器总结

垃圾收集器(7种)(内存回收动作的执行)1) Serial收集器:一个单线程收集器,用于新生代;进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。(Client模式下经常使用)2) ParNew收集器:是Serial收集器的多线程版本,可以使用多条线程进行垃圾收集。(Server模式下经常使用,用于新生代)3) Parallel Scavenge收集器:是一个新生代收集器,也是

2017-03-16 15:55:02 282

原创 JVM垃圾回收机制和算法详解

1.判断对象已死吗?两种算法:1)引用计数算法2)可达性分析算法 1) 引用计数算法:实现思路:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1,;任何时刻计数器为0的对象就是不可能在被使用的。缺点:很难解决对象之间相互循环引用的问题。(两个对象互为引用)  2) 可达性分析算法:(主流JVM使用的算法)实现思路:

2017-03-16 15:48:28 302

原创 JVM 内存区域详解

JVM内存分为 五个部分:1)方法区;2)java虚拟机栈;3)本地方法栈;4)堆;5)程序计数器 Ø 程序计数器:可以看做是当前线程所执行的字节码的行号指示器。下一条需要执行的字节码指令,分之,循环,跳转,异常处理,县城回复等基础功能都需要依赖这个计数器来完成。每个线程都有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,为“线程私有的内存”。Ø Java虚

2017-03-16 14:42:04 253

转载 HashMap实现原理

1.    HashMap概述:   HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2.    HashMap的数据结构:   在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本

2017-03-16 14:04:48 192

空空如也

空空如也

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

TA关注的人

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