自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

将来的你一定会感谢现在努力的自己

走我走过的路,你会不会感到高兴?

  • 博客(37)
  • 收藏
  • 关注

转载 数据结构(二)之二叉树

数据结构(二)之二叉树基础概念    二叉树(binary tree)是一棵树,其中每个结点都不能有多于两个儿子。  二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:    (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;    (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;    (3)左、右子树也分别为二叉排序树; 二叉树的遍历  二叉树的遍...

2018-03-11 19:36:06 244

转载 数据结构(一)之线性表

数据结构(一)之线性表基础概念数据结构:是相互之间存在一种或多种关系的数据元素的集合。逻辑结构和物理结构 关于数据结构,我们可以从逻辑结构和物理结构这两个维度去描述逻辑结构是数据对象中数据元素之间的关系,是从逻辑意义上去描述的数据之间的组织形式。逻辑结构有4种:集合结构(数据元素之间仅以集合的方式体现,元素之间没有别的关系)线性结构(数据元素之间存在一对一的关系)树(数据元素之间为一对多或多对一的...

2018-03-11 19:34:56 266

转载 Java原子类实现原理分析

Java原子类实现原理分析  在谈谈java中的volatile一文中,我们提到过并发包中的原子类可以解决类似num++这样的复合类操作的原子性问题,相比锁机制,使用原子类更精巧轻量,性能开销更小,本章就一起来分析下原子类的实现机理。悲观的解决方案(阻塞同步)  我们知道,num++看似简单的一个操作,实际上是由1.读取 2.加一 3.写入 三步组成的,这是个复合类的操作(所以我们之前提到过的vo...

2018-03-11 19:31:39 565

转载 谈谈Java中的volatile

谈谈Java中的volatile内存可见性留意复合类操作解决num++操作的原子性问题禁止指令重排序总结内存可见性  volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰当的合理的使用volatil...

2018-03-11 19:28:39 189

转载 ConcurrentHashMap实现原理及源码分析

ConcurrentHashMap实现原理及源码分析  ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分...

2018-03-11 19:23:41 229

转载 java八大排序算法(五)之快速排序——三数取中法

图解排序算法(五)之快速排序——三数取中法快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列基本步骤三数取中  在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列...

2018-03-11 19:21:09 1945 3

转载 HashMap实现原理及源码分析

HashMap实现原理及源码分析  哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录  一、...

2018-03-11 19:17:25 170

转载 java八大排序算法(四)之归并排序

图解排序算法(四)之归并排序基本思想  归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之   可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采...

2018-03-11 19:13:39 154

转载 java八大排序算法(三)之堆排序

图解排序算法(三)之堆排序预备知识堆排序  堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆  堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号...

2018-03-11 19:11:42 162

转载 java八大排序算法(二)之希尔排序

图解排序算法(二)之希尔排序  希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。基本思想  希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少...

2018-03-11 19:10:07 162

转载 java八大排序算法(一)之3种简单排序(选择,冒泡,直接插入)

图解排序算法(一)之3种简单排序(选择,冒泡,直接插入)  排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。  先定义个交换数组元素的函数,供排序时调用 /** * 交换数组元素 * @param...

2018-03-11 19:07:46 169

转载 python json.dumps() json.dump()的区别

python json.dumps() json.dump()的区别首先说明基本功能:dumps是将dict转化成str格式,loads是将str转化成dict格式。dump和load也是类似的功能,只是与文件操作结合起来了。 看代码实例:1234567

2017-12-16 15:42:48 299

转载 Spark Streaming + Kafka direct 从Zookeeper中恢复offset(三)

在上一遍《将 Spark Streaming + Kafka direct 的 offset 保存进入Zookeeper》中,我们已经成功的将 topic 的 partition 的 offset 保存到了 Zookeeper中,使监控工具发挥了其监控效果。那现在是时候来处理《“Spark Streaming + Kafka direct + checkpoints + 代码改变” 引发的

2017-11-07 11:10:26 376

转载 将 Spark Streaming + Kafka direct 的 offset 保存进入Zookeeper(二)

在上一遍《“Spark Streaming + Kafka direct + checkpoints + 代码改变” 引发的问题》中说到,当时是将 topic 的 partition 的 offset 保存到了 MySQL 数据库中,其存在一个问题,就是无法在现有的监控工具中进行体现(如:Kafka Manager)。那我们现在就来将此offset保存到zookeeper中,从而使用监控工具发

2017-11-07 11:07:32 458

转载 "Spark Streaming + Kafka direct + checkpoints + 代码改变" 引发的问题(一)

一、基础内容Spark Streaming 从Kafka中接收数据,其有两种方法:(1)、使用Receivers和Kafka高层次的API;(2)、使用 Direct API,这是使用低层次的Kafka API,并没有使用到Receivers,是Spark1.3.0中开始引入。由于本篇文章使用的是第二种 Direct API 方式,所以对其进行简单的介绍一下:其会定期地从 Kafk

2017-11-07 11:04:26 345

转载 Collections 洗牌算法源码

如何打乱List 或 Array元素的顺序打乱List或者Array数据元素的顺序,其实就是让集合中的元素变得随机,举个例子,有如下一个Array数据: 其中存储了 1, 2, 3, 4, 5 一共五个元素,经过程序随机排序后得到另外一个随机乱序的数组。其Java实现代码如下:public class ArrayRandomUtils { public s

2017-06-22 15:28:14 466

转载 JVM性能调优

一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)  其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。

2017-06-13 14:40:58 366

转载 Storm概念、原理详解及其应用(二)Storm Cluster

概念:特点介绍:Storm 采用云计算框架中最实用的master/slave结构,静态设置。主节点为nimbus,半容错;从节点supervisor;中间关系通过Zookeeper维护。半容错:由于Nimbus不参与数据处理过程,且topology不会自动停止。所以只能对topology初始化、任务分发和监控,不会影响任务处理过程。但如果supervisor挂掉,nimbus不能再

2017-06-13 14:35:22 577

转载 Storm概念、原理详解及其应用(一)BaseStorm

本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出。写这篇文章,是想把一些官文和资料中基础、重点拿出来,能总结出便于大家理解的话语。与大多数“wordcount”代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:“知其然,并知其所以然”。Storm是什么?为什么要用Storm?为什么不用Spark?

2017-06-13 14:30:36 401

转载 SparkContext源码解读

SparkContext的初始化SparkContext是应用启动时创建的Spark上下文对象,是进行Spark应用开发的主要接口,是Spark上层应用与底层实现的中转站(SparkContext负责给executors发送task)。SparkContext在初始化过程中,主要涉及一下内容:SparkEnvDAGSchedulerTaskSchedulerSchedule

2017-06-10 16:11:55 1385

转载 spark-submit提交参数设置

spark-submit提交参数设置 /apps/app/spark-1.6.1-bin-hadoop2.6/bin/spark-submit --class com.zdhy.zoc2.sparksql.core.JavaSparkSqlLogRegularApp --files /apps/app/apache-hive-1.2.1-bin/conf/hive-si

2017-05-09 18:40:39 1246

转载 Quartz定时调度框架

什么是QuartzQuartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法:     public void exec

2017-04-16 11:05:49 451

转载 new Integer()和Integer.valueOf()效率比较

Integer a=new Integer(1) Integer a=Integer.valueOf(1); 两个都是得到一个Integer对象,但是Integer.valueOf的效率高。为什么呢?因为Integer.valueOf用到了缓存。看看Integer.valueOf的代码: Java代码 1.    public static Integer valueO

2017-04-16 10:56:45 1107

转载 Java之美[从菜鸟到高手演变]之设计模式四

其实每个设计模式都是很重要的一种思想,看上去很熟,其实是因为我们在学到的东西中都有涉及,尽管有时我们并不知道,其实在Java本身的设计之中处处都有体现,像AWT、JDBC、集合类、IO管道或者是Web框架,里面设计模式无处不在。因为我们篇幅有限,很难讲每一个设计模式都讲的很详细,不过我会尽我所能,尽量在有限的空间和篇幅内,把意思写清楚了,更好让大家明白。本章不出意外的话,应该是设计模式最后一讲了,

2017-01-22 11:37:32 256

转载 Java之美[从菜鸟到高手演变]之设计模式三

本章是关于设计模式的最后一讲,会讲到第三种设计模式——行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。这段时间一直在写关于设计模式的东西,终于写到一半了,写博文是个很费时间的东西,因为我得为读者负责,不论是图还是代码还是表述,都希望能尽量写清楚,以便读者理解,我想不论是我还是读者,都希望看到高质量

2017-01-22 11:34:19 259

转载 Java之美[从菜鸟到高手演变]之设计模式二

我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图:6、适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配

2017-01-22 11:30:59 244

转载 Java之美[从菜鸟到高手演变]之设计模式一

设计模式(Design Patterns)                                  ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真

2017-01-22 11:26:17 608

转载 《JAVA与模式》之观察者模式

《JAVA与模式》之观察者模式在阎宏博士的《JAVA与模式》一书中开头是这样描述观察者(Observer)模式的:  观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。  观察者模式定义了一种一对多的依赖关系,让多个观察者

2017-01-22 10:09:11 212

转载 先进先出(FIFO)置换算法

原文链接:http://blog.csdn.net/luoweifu/article/details/8498604定义       这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与

2017-01-17 17:21:46 11882 1

转载 java synchronized详解

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。     一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。     二、然而,当一个线程访问object的一个synch

2017-01-17 14:54:50 282

转载 LRU算法,最近最少使用算法

LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU算法就是将最近最久未使用的页面予以淘汰。可以用一个特殊的栈来保存当前正在使用的各个页面的页面号。当一个新的进程访问某页面时,便将该页面号压入栈顶,

2017-01-17 10:19:46 748

转载 Ehcache是现在最流行的纯Java开源缓存框架

Ehcache是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,

2017-01-13 16:22:01 638

转载 Java设计模式——代理模式实现及原理(基于java8)

简介Java编程的目标是实现现实不能完成的,优化现实能够完成的,是一种虚拟技术。生活中的方方面面都可以虚拟到代码中。代理模式所讲的就是现实生活中的这么一个概念:中介。代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式包含如下角色:ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。RealSubjec

2017-01-12 15:43:28 1188 1

转载 UML类图几种关系总结

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)         1. 泛化(Generalization)        【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特

2016-12-16 09:18:04 253

转载 virtualbox中centos系统配置nat+host only上网

以前一直使用的是virtualbox的桥接模式,桥接模式的特点:虚拟机和宿主机处于同等地位,就像是一台真实主机一样存在于局域网中,可以分配到一个网络中独立的IP。虚拟机和宿主机之间能够互访。如果网络断开,即便虚拟机和宿主机其实是在一台物理机器上,宿主机也不能够访问虚拟机。配置方式看:http://www.cnblogs.com/leezhxing/p/3703420

2016-11-22 21:23:32 746

转载 linux下移动Oracle数据库表空间文件

移动Oracle数据库表空间文件。目的:把oracle表空间文件从一个地方移动到另外一个地方。原因:当前实例中的表空间文件及系统表空间文件全在一块硬盘上,导致IO增加。装数据库表空间移走。减少IO详细操作步骤:1、进入Oracle用户su - oracle2、启用sqlplussqlplus /nolog3、以管理员用户登录c

2016-11-11 17:48:28 2145

原创 linux下恢复数据库

准备:原数据表空间名称、原临时表空间名称、原用户名、dmp数据文件1.进入oracle用户su - oracle2.启用sqlplussqlplus /nolog3.以管理员用户登录conn /as sysdba4.创建数据表空间CREATE SMALLFILE TABLESPACE ''数据表空间名称" DATAFILE '创建位置' SIZE 2G AUTOEX

2016-11-02 16:06:17 1190

空空如也

空空如也

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

TA关注的人

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