自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hive浅析

概述Hive——Hadoop最常用的工具。对于Hadoop的出现,无论是业界还是学术界对其都给予了极高的关注度,Hadoop及其生态圈提供了一个成熟高校的处理海量数据集的解决方案。数据基础架构大都基于关系型数据库(RDBMS)和结构化查询语言(SQL)。这就是Hive出现的原因。Mapreduce需要几十行代码完成的工作,Hive区区几行HiveQL就能胜任。HiveQL是SQL语句的一种方言(di

2017-03-29 14:56:19 438 1

原创 算法数学基础

定理①如果存在正参数c和n0使得当N≥n0时T(N)≤cf(N),则记为T(N)=O(f(N))。如果存在正参数c和n_0使得当N≥n_0时T(N)≤cf(N),则记为T(N)=O(f(N))。②如果存在正参数c和n0使得当N≥n0时T(N)≥cg(N),则记为T(N)=Ω(g(N))。如果存在正参数c和n_0使得当N≥n_0时T(N)≥cg(N),则记为T(N)=\Omega(g(N))。③当且仅

2017-03-26 15:59:59 609 1

原创 Java线程状态转换

1、概述2、线程的优先级和线程让步yield()线程的让步是通过Thread.yield()来实现的。yield()方法的作用是:暂停当前正在执行的线程对象,并执行其他线程。要理解yield(),必须了解线程的优先级的概念。线程总是存在优先级,优先级范围在1~10之间。JVM线程调度程序是基于优先级的抢先调度机制。在大多数情况下,当前运行的线程优先级将大于或等于线程池中任何线程的优先级。但这仅仅是大

2017-03-24 21:16:54 320

转载 你真的了解try{ return }finally{}中的return吗?

谁能给我我解释一下这段程序的结果为什么是2而不是3?class Test { public int aaa() { int x = 1; try { return ++x; } catch (Exception e) { } finally { ++x; }

2017-03-24 20:47:25 301

原创 Java NIO之Buffer中flip()、rewind()、clear()方法解析

1、flip() public final Buffer flip() { limit = position;//将当前的position位置赋值给limit position = 0;//将position赋值为0,即归位 mark = -1; return this; }2、rewind() public fin

2017-03-18 14:52:23 1041

原创 final关键字解析

1、修饰类该类称为“final类”。该类不能被其他类继承。该类的成员变量可根据需要用final修饰。该类的成员方法默认被final修饰。2、修饰方法该方法不能被子类重写。注意:private方法会隐式将其指定为final方法。3、修饰变量修饰基本数据类型变量时(如int、float、double等),变量的值不能被修改;修饰引用数据类型变量时(如Integer等),引用不能被修改(不能将其他引用指向

2017-03-16 13:54:14 250

原创 Java 内存模型简介

Java 内存模型是通过各种操作来定义的,包括对变量的读 / 写操作,监视器的加锁和释放操作,以及线程的启动和合并操作。JVM 为程序中所有的操作定义了一个偏序关系,称为 Happens-Before。要想保证执行操作 B 的线程看到操作 A 的结果,在 A 和 B 中之间必须满足 Happens-Before 关系。如果两个操作之间缺乏 Happens-Before 关系,那么 JVM 可以对它们

2017-03-13 14:23:08 252

原创 AVL 平衡二叉树旋转方法

1、预备知识定义树(tree)的一种自然的方式是递归的方式。一棵树使一些节点的集合。这个集合可以是空集;若不是空集,则树由称作根(root)的节点 r 以及 0 个或多个非空的(子)树 T1,T2,T3,…,Tk 组成。这些子树每一颗的根都被来自根 r 的一条有向的边所连结。每一颗子树的根叫做根 r 的儿子(child),而根 r 是每一颗子树的根的父亲(parent)。没有儿子的根叫做树叶(lea

2017-03-10 21:05:10 10793 5

原创 设计模式六大原则

一、单一职责原则定义:一个类只负责一个功能领域中的相应职责。在开发中,一个类愈是集成多的功能,凝聚多的职责,这个类的复用性,可扩展性就愈弱。因此,我们在开发某个软件的各个功能模块时,尽量使一个类就负责履行具体某一类的职责,实现其应有的功能。单一职责原则是软件开发中高内聚,低耦合的指导方针。开发过程应紧紧围绕这一方针进行,这有利于软件的后期维护。二、开闭原则定义:一个软件实体应当对扩展开放,对修改关闭

2017-03-09 21:56:11 271

转载 Java 字节流和字符流的区别

转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。 下面以两个写文件的操作为主

2017-03-08 11:08:15 253

原创 “==”与 equals 方法的区别

“==”比较的是栈内存中两个引用(reference)在堆内存中的对象的内存地址值。equals 用于自定义比较法则,一般情况下,多用于比较两个对象值的大小。在 Object 类中,“==”与 equals 方法的作用完全相同,equals 方法体内就是“==”。这是 Object 中有关 equals 方法的源代码:public boolean equals(Object obj) {

2017-03-07 22:25:08 246

转载 Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一

2017-03-06 14:42:00 311

原创 堆排序(Heap Sort)

1、算法原理堆是完全二叉树,堆分为小根堆和大根堆,这里主要讲大根堆,也就是堆的最顶部比其他任何一个子节点都要大(或者等于)。堆的排序复杂度为O(nlogn)。①时间复杂度它是不稳定的排序方法。(排序的稳定性是指如果在排序的序列中,存在前后相同的两个元素的话,排序前 和排序后他们的相对位置不发生变化)②算法稳定性堆排序的时间,主要由建立初始堆和反复重建堆这两部分的时间开销构成,它们均是通过调用Heap

2017-03-05 21:51:16 438

原创 Maven快速镜像(大幅提高下载速度)

<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>

2017-03-05 15:55:37 524

原创 JVM解析

1、JVM概述JVM(Java Virtual Machine)即 Java 虚拟机。虚拟机就是抽象计算机(虚拟计算机)。Java 虚拟机将 Java 、Scala、Kotlin、Groovy、JRuby、Jython、PHP8(IBM) 等基于 Java 虚拟机的高级语言所编写的程序代码转换为本地的机器指令,这些机器指令经过专用的编译器编译之后,交给 CPU(Central Processing

2017-03-05 14:02:05 254

原创 Java之transient关键字解析

1、概述transient 关键字只能修饰变量,不能修饰类、方法。被 transient 关键字修饰的变量不能被自动序列化(实现Serializable接口)。被 static 关键字修饰的变量,无论是否被 transient 关键字修饰,都不能被自动序列化。被 static 关键字修饰的变量,在反序列化时,看似被得到了之前序列化对象的值了,其实不然,是 JVM 方法区中的动态属性,非反序列

2017-03-02 20:06:28 319

原创 TreeSet源码分析

1、概述TreeSet 是 Set 接口的另一个实现类,它内部采用自平衡的排序二叉树来存储元素,这种结构保证 TreeSet 集合中没有重复的元素,并且对元素进行排序。TreeSet 集合存入一个元素时,都会将存入的元素与其他元素比较,这就要求 TreeSet 集合存入的元素必须是实现Comparable接口的compareTo方法的,否则运行时将报异常。附 Type hierarchy:①平衡二叉

2017-03-02 19:01:28 605

原创 Java IO流经典实例

IO流框架字节流1、FileInputStream&FileOutputStreamimport java.io.FileInputStream;import java.io.FileOutputStream;/** * @author Hanlin Wang */public class FileStream { public static void main(String[] ar

2017-03-01 21:38:27 2462 1

原创 Java网络编程实例

UDP传输1、接收端import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;/** * @author Hanlin Wang */public c

2017-02-28 21:42:11 718

原创 Java面试题集锦

抽象类是否可实现(implements) 接口?抽象类是否可继承具体类(concrete class)?抽象类中是否可以有静态的 main 方法?抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中可以有静态的 main 方法。多态一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。Java中实现多态的机制是

2017-02-27 20:53:02 270

原创 Spark实例

1、入门object HelloSpark { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("Simple Application").setMaster("local") val sc = new SparkContext(conf) sc.addJar("C

2017-02-27 15:10:12 522

原创 归并排序(Merge Sort)

1、概述归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中

2017-02-27 14:13:16 343

转载 Spring面试题及答案(69道)

1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2. 使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了

2017-02-26 17:20:22 465

原创 Spring-Bean之基于注解(Annotation)装配解析

1、概述在Spring中,尽管使用XML配置文件可以实现Bean的装配工作,但如果XML配置的bean非常的多,XML配置文件代码将变得非常臃肿,不利于代码的后期维护。自从JDK 1.5之后,Java提供了注解(Annotation)功能,与此同时,Spring 3也提供了Annotation的全面支持,如注解装配Bean、注解实现AspectJ AOP编程等。在Spring 3中,常用的注解如下:

2017-02-26 15:19:32 902

原创 CGLIB动态代理

1、概述我们知道,Java动态代理使用起来非常简单,但也有其局限性。使用Java动态代理时,被代理的类必须实现一个或多个接口,若想给没有实现接口的类实现动态代理,就需要使用CGLIB动态代理。CGLIB(Code Generation Library)是一个高性能开源代码生成包,它的底层通过ASM(Java字节码操控框架)来转换字节码,为一个类创建子类,然后对子类进行增强,解决无接口代理问题。CGL

2017-02-26 11:27:51 209

原创 Lucene教程

1、什么是“全文检索”(Full-Text Search)①全文检索的概念全文检索首先将要查询的目标文档中的词提取出来,组成索引,通过查询索引达到搜索目标文档的目的。这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。全文检索(Full-Text Retrieval)是指以文本作为检索对象,找出含有指定词汇的文本。全面、准确和快速是衡量全文检索系统的关键指标。

2017-02-25 17:28:29 444

原创 ElasticSearch安装

官网及Github地址: http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html https://github.com/elastic/elasticsearch【在多台机器上执行下面的命令】es启动时需要使用非root用户,所有创建一个bigdata用户:useradd bi

2017-02-25 12:40:51 290

原创 MySQL事务

1、事务的概念现实生活中,会遇到转账的情况。转账可分为两部分:转入和转出。若转入和转出其中的任意一部分出现异常无法完成转入或转出,就无法完成交易。为了防止以上情况的发生,MySQL引入了事务(Transaction)。事务是针对数据库的一组操作,它可以有一条或多条SQL语句组成。2、事务的操作①开启事务START TRANSACTION;SELECT * FROM user若要使用MySQL,那么

2017-02-24 22:13:29 263

原创 Java泛型

1、概述Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,所操作的数据类型被指定为一个参数。假定有这样一个需求:写一个排序方法,能够对整形数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?这里就可以使用到 Java 泛型。我们可以写一个泛型方法来对一个对象数组排序。然后

2017-02-22 16:50:20 307

原创 Python学习笔记(1)

1、集合框架# coding=utf-8# 列表,是可变的,以"["list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]print list# 修改list列表中下标号为0的元素list[0] = 'wanghanlin'print listlist2 = [ 'abcd', 786 , 2.23, 'john', 70.2 ]print list2#

2017-02-22 15:31:09 395

原创 Java动态代理

1、概述建议大家在看这篇博文之前,去我的博客中阅读Java代理模式一文。里面讲解了代理模式的相关概念。①代理模式我们在实践过程中,常常需要对一个类的功能进行完善和增强。于是,我们经常会用继承类和实现接口的方式来增强一个类,但这样或多或少会造成类与类之间的耦合:继承类之后不能再继承其他类;实现接口的话必须实现接口中的所有方法,且若接口的方法发生改变,实现接口类也必须做出改变,这样不利于最大限度扩展。代

2017-02-21 15:33:04 429

原创 快速排序(Quick Sort)

概述快速排序(Quick Sort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。注意!一定要用到递归!算法原理设要排序的数组是a[0]…a[N-1],

2017-02-21 12:00:10 606

原创 Java数据类型

Java数据类型结构图Java基本数据类型概述1 byte = 8 bit,也就是一字节(byte)占八位(bit)①整型 类型 存储需求 bit数 取值范围 byte 1字节 1*8 (-2的31次方到2的31次方-1) short 2字节 2*8 -32768~32767 int 4字节 4*8 (-2的63次方到2的63次方-1

2017-02-21 11:29:53 270

原创 Hadoop之MapReduce单词计数经典实例

MapReduce实现单词计数示意图MapReduce实现单词计数实例代码(Java)①Mapperimport java.io.IOException;import org.apache.commons.lang.StringUtils;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;impo

2017-02-20 19:25:45 1734

原创 MySQL进阶操作

LIKE子句MySQL 中使用 SELECT 命令来读取数据。通过 SELECT 语句中使用WHERE 子句来获取指定的记录。LIKE 子句通常用于 WHERE 子句中。LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号(*)。如果没有使用百分号(%), LIKE 子句与等号(=)的效果是一样的。SELECT field_1, field_2

2017-02-20 16:26:46 346

原创 MySQL基础操作

创建数据库CREATE DATABASE database_name选择数据库use database_name删除数据库DROP DATABASE database_name创建表CREATE TABLE table_name删除表DROP TABLE table_name向表中插入数据INSERT INTO table_name(column_1, column_2,..., column_n)

2017-02-20 13:26:11 316

原创 Redis安装教程

1、Redis下载官网地址:http://redis.io/下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz2、Redis安装Redis是C语言开发,建议在Linux系统上运行,本教程使用Centos6.8作为安装环境。①在VMware中搭建Linux服务器集群准备三台虚拟机 192.168.1.100 192.168.1.10

2017-02-19 16:11:47 240

原创 希尔排序(Shell Sort)

1、概述希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序按其设计者希尔(Donald Shel

2017-02-18 16:01:12 234

原创 插入排序(Insertion Sort)

1、概述有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n²)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一

2017-02-18 14:35:57 394

原创 选择排序(Selection Sort)

1、概述选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。排序趟数为n-1次,n为元素大小。2、算法原理对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续

2017-02-17 17:12:43 400

空空如也

空空如也

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

TA关注的人

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