自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 关系型数据库与非关系型数据库

1. 关系型数据库关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念:

2017-07-31 13:56:15 287

转载 AtomicInteger源码分析

AtomicInteger源码分析

2017-07-31 11:39:08 273

原创 归并排序的算法应用

利用归并排序去解决问题

2017-07-30 23:41:17 287

转载 JVM GC回收算法

转载:生命壹号:http://www.cnblogs.com/smyhvae/文章来源:http://www.cnblogs.com/smyhvae/p/4744233.html本文主要内容:GC的概念GC算法    引用计数法(无法解决循环引用的问题,不被java采纳)      根搜索算法      现代虚拟机中的垃圾搜集算法

2017-07-26 16:14:49 315

原创 TCP重传机制

TCP进行传输时,在阻塞情况下,发出去的请求包在规定时间内没有收到ACK,不管是请求包丢失,还是ACK包丢失,还是网络延迟,总之,这里都是需要有个重传机制的。常见的导致重传情况有:数据报传输途中丢失、接收端的ACK确认报文在传输途中丢失、接收端异常未响应ACK或被接收端丢弃。TCP的重传机制有两种:超时重传和快速重传。超时重传说白了就是在请求包发出去的时候,

2017-07-26 15:29:12 1028

原创 Java程序编译和运行的过程

两个过程:源文件由编译器编译成字节码文件(ByteCode)JVM执行字节码文件编译:源文件被编译成.class文件。编译后的字节码文件格式主要分为两种:常量池:记录代码出现过的所有token(类名、成员变量名、符号引用(方法引用,成员变量引用)等)字节码:类中各个方法的字节码运行:类的加载+类的执行参考:类的编译运行

2017-07-26 10:36:05 371

原创 HTTP1.0和HTTP1.1的区别

1、HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。HTTP1支持长连接,在请求头里面有Connection:Keep-Alive。在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。举个例子:一个包含有许多图像的网

2017-07-25 23:22:13 1302

原创 N个数组的问题

一、打印N个有序数组整体最大的TopK题目:有N个长度不一的数组,所有数组有序,请从大到小打印这N个数组的整体最大的前K个数。分析:构建一个大小为N的大顶堆,初始元素为每个有序数组的最后一个元素。调整初始堆。 打印当前堆顶元素,为最大的。假设堆顶元素来自于a数组的i位置,接下来把堆顶元素的位于a数组的前一个元素a[i-1]放在堆顶,然后调整堆。重复前两步,直到打印前K个。在步骤3中,如

2017-07-24 11:03:10 951

原创 minor gc和full gc

新生代(Eden + From Survior + To Survior)老年代:数组和大的对象,新生代中发生minor gc超过一定次数(默认15)的对象堆中:新生代+老年代方法区:永久代minor gc:发生在新生代中,当Eden区满的时候发生,Survior满的时候不会引发gcfull gc:指发生在老年代中的GC(1)当老年代满时会引发Full GC,Full GC

2017-07-23 20:33:44 556

转载 Spring事务的管理和传播特性

何为事务原子性、一致性、隔离性、持久性定义事务管理器常见的事务管理器有JDBC事务、HIBERNATE事务、JTA事务、选择使用事务管理器可以根据项目的需要。JDBC事务: HIBERNATE事务: 定义事务属性事务隔离1、ISOLATION_DEFAULT: 这是一个PlatfromTransacti

2017-07-23 16:13:19 355

原创 单例模式

单例模式

2017-07-23 14:50:25 218

转载 深入研究java.lang.ThreadLocal类

ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。

2017-07-20 17:22:31 214

原创 Java线程状态的转换

Java线程间的状态转换:可以分为五个状态:新建,可运行,运行,阻塞,死亡。其中阻塞分为:等待阻塞,同步阻塞,其他阻塞

2017-07-20 15:57:49 368

原创 java.concurrent包常见类详解

一、线程安全的集合类1、CopyOnWriteArrayListArrayList的一个线程安全的实体。其中所有可变操作都是通过对底层数组经常一次新的复制来实现的。比如add(E)时,容器自动copy一次出来然后在尾部添加。看源码:public boolean add(E e) { final ReentrantLock lock = this.lock;

2017-07-20 10:02:48 4075

转载 普通锁和可重入锁分析

简单锁在讲述简单锁的实现之前,我们先来看一个锁的应用例子:public class Counter{ private Lock lock = new Lock(); private int count = 0; public int inc(){ lock.lock(); this.count++; lock.unlo

2017-07-18 15:15:48 357

原创 进程与线程的区别

进程:进程是系统进行资源分配和调度的一个独立单位。线程:是进程的一个实体,是CPU调度和分派的基本单位。区别:(1)拥有资源:进程是系统拥有资源的基本单位,线程仅拥有能保证独立运行的资源:用于PC、保留局部变量、少数状态参数和返回地址等的一组寄存器和栈。(2)独立性:每个进程都拥有独立的地址空间和其他资源。除了共享全局变量以外,不允许其他进程访问。线程拥有栈等,同一进程的线

2017-07-16 22:22:23 194

原创 TCP/IP、Http、Socket的关系理解

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。       关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELN

2017-07-16 22:03:12 8653 1

原创 死锁的四个必要条件

死锁的定义、产生原因、四个必要条件

2017-07-16 21:26:49 309

转载 数据库事务的四大特性以及事务的隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。如果一个数据库声称支持事务的操作,那么该数据库必须要具备四个特性。事物具有四个隔离级别。

2017-07-16 10:53:58 188

原创 JAVA四种线程池详解

Java提供的四种线程池的特点:1. 重用存在的线程,减少对象创建、消亡的开销,性能佳。2. 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。3. 提供定时执行、定期执行、单线程、并发数控制等功能。

2017-07-16 09:09:43 1007

转载 Java内存溢出异常(OOM)完全指南

本文分析什么情况会导致OOM出现,提供示例代码的同时为您提供解决指南。

2017-07-13 19:21:37 445

原创 Java实现多线程的三种方式

Java实现多线程的三种方式

2017-07-13 19:02:38 218

转载 Hadoop MapReduce执行过程实例详解

MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出。Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中

2017-07-12 17:45:23 474

转载 MapReduce的Shuffle过程详解

Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方。要想理解MapReduce, Shuffle是必须要了解的。

2017-07-12 15:01:31 593 1

转载 Hadoop Map/Reduce执行流程详解

Hadoop Map/Reduce执行流程详解转载Map/Reduce一个Map/Reduce 作业(job) 通常会把输入的数据(input file)切分为若干独立的数据块(splits),然后由 map任务(task)以完全并行的方式处理它们。Map/Reduce框架会对map的输出做一个 Shuffle 操作,Shuffle 操作的后的结果会输入给reduce任

2017-07-12 11:24:56 1603

原创 jdk1.8的新特性

jdk1.8的新特性

2017-07-11 21:23:56 410

原创 Integer和int的区别

Integer和int的区别

2017-07-11 20:10:02 657

转载 HashMap的jdk1.8分析

HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。

2017-07-11 17:41:22 240

原创 JVM类加载机制

类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

2017-07-09 22:22:51 267

原创 JAVA垃圾回收算法

在确定了哪些垃圾可以被回收后,垃圾收集器要做的事情就是开始进行垃圾回收,但是这里面涉及到一个问题是:如何高效地进行垃圾回收。由于Java虚拟机规范并没有对如何实现垃圾收集器做出明确的规定,因此各个厂商的虚拟机可以采用不同的方式来实现垃圾收集器,所以在此只讨论几种常见的垃圾收集算法的核心思想。

2017-07-09 16:25:15 290

原创 Java垃圾回收策略

垃圾回收策略: 哪些内存需要回收?什么时候回收?如何回收?

2017-07-09 15:05:53 505

原创 Java对象的访问定位

一、引言建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方式也是取决于虚拟机实现而定的。对象的访问涉及到三个区域:栈、堆、方法区例如定义一个对象: Object refere

2017-07-09 14:49:33 1033

原创 Java对象创建的具体过程

Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?

2017-07-09 14:31:59 3342 2

原创 Spring AOP 动态代理机制

Spring AOP的动态代理有两种:一是JDK的动态代理;另一个是cglib动态代理(通过修改字节码来实现代理)。今天主要讨论JDK动态代理的方式。JDK的代理方式主要就是通过反射跟动态编译来实现的,主要实现InvocationHandler接口和生成Proxy对象。

2017-07-08 20:05:33 1491

原创 synchronized修饰静态方法和普通方法有什么区别

在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。 在static方法前加synchronizedstatic:静态方法属于类方法,它属于这个类,获取到的锁,是属于类的锁。 在普通方法前加synchronizedstatic:非static方法获取到的锁,是属于当前对象的锁。

2017-07-08 16:51:39 13197

转载 ThreadLocal

当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。   从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的意思。二、接口方法在JDK5.0中,ThreadLocal已经支持泛型。

2017-07-08 16:15:59 364

原创 实现线程安全的几种方式

实现线程安全的几种方式

2017-07-08 10:50:31 4222

原创 java集合类

List和Set实现Collection接口,Set无序,不重复,List有序,可重复。 Map键值对,键唯一,值不唯一。 List: 1. Vector 线程安全,Stack继承于Vector 2. ArrayList 线程不安全 3. LinkedList 线程不安全Set: 1. HashSet 2. LinkedHashSet 3. TreeSetMap: 1. Hash

2017-07-08 10:09:00 314

原创 CopyOnWriteArrayList

Copy-On-Write Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOn

2017-07-08 00:22:41 396

转载 多叉树求最优解问题

多叉树求最优解问题

2017-07-07 20:36:48 994

空空如也

空空如也

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

TA关注的人

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