- 博客(157)
- 资源 (17)
- 问答 (1)
- 收藏
- 关注
原创 为什么Java中1000==1000为false而100==100为true?
这是一个挺有意思的讨论话题。但是却引出一个常见的面试题。问题引出如果你运行下面的代码:Integer a = 1000, b = 1000;System.out.println(a == b);//1Integer c = 100, d = 100;System.out.println(c == d);//2你会得到:falsetrue基本知识我们知道,如果两个引用指向同一个对象,用\==表
2017-04-06 00:28:10 493
原创 浅谈——Java中接口类与抽象类
Java接口定义一个Java接口是一些方法特征的集合,这些方法来自于具体方法。一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方实现时,可以具有完全不同的行为。结构属性:public static final(用private修饰会报编译错误)方法:public abstract特性接口不是类,不能使用new运算符实例一个接口。不能构造接口的对象,却能声明接口的变量。接
2017-04-04 14:11:49 460
原创 【2017.3.10】每日笔试题
1. 产品合格率(搜狐笔试)某种产品,合格品率为0.96,一个合格品被检查成次品的概率是0.02,一个次品被检查成合格品的概率为0.05,问题:求一个被检查成合格品的产品确实为合格品的概率()A、0.9978B、0.9991C、0.9855D、0.96解析:贝叶斯定理为在事件B发生的条件下,A发生的概率。p(A/B)=p(AB)/P(B)在B事件发生的基础上,A事件发生的概率。那么B事件发生这件事已
2017-03-30 22:47:41 641
原创 Centos6.5桥接模式下ping不同外网
需要将宿主机的网关添加到虚拟机的网卡配置文件中。(这个确实坑死我了)例如:DEVICE=eth0HWADDR=**:**:**:**:**....GATEWAY=10.4.20.2(宿主机的网关)
2017-03-30 22:36:03 962
转载 Intellij IDEA如何生成JavaDoc
由于业务上的需要,需要在IntelliJ中生成程序相应的帮助文档。Intellij IDEA作为Java流行的编辑器, 其生成一些Javadoc会对中文乱码, 使用UTF-8编码即可. 这个常见的问题, 则需要生成时设置参数即可.在 “Tools->Gerenate JavaDoc” 面版的 “Other command line arguments:” 栏里输入 “-encoding utf-8
2017-03-26 10:17:22 459
原创 浅谈——Java中的Clone()方法
简介clone在Java语言中,clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象和源对象相同。需求有一辆新车,在出厂时新车中已经包含了一些高级配置,此时,顾客感觉这车性价比比较高,想要买两辆相同配置的车,也就是说虽然说另一辆车跟这个车的配置相同,但是并不是同一辆车,(两辆车具有不同的轮胎,既然引出了深克隆与浅克隆的问题:浅克
2017-03-22 16:15:39 340
原创 浅谈数据结构——赫夫曼数
出险原因这篇博客就介绍一下最基本的压缩编码方法——赫夫曼编码原理赫夫曼编码的原理是赫夫曼树,这里我们先介绍赫夫曼树。从数中一个节点到另一个节点之间的分支构成两个节点之间的路径,路径上的分支数目就是路径长度。树的路径长度就是从树根节点到每一节点的路径长度之和。例如:二叉树a中根节点到节点D的路径长度为4.二叉树的路径长度为:1+1+2+2+3+3+4+4=20.节点的带权路径长度为从该节点到树根之间的
2017-03-16 22:10:01 416
原创 浅谈数据结构——如何解决hash冲突
出现Hash冲突的原因当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是哈希技术中的两个重要问题。解决Hash冲突的方案开放地址法当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地
2017-03-16 21:56:39 333
原创 Java基本类型和引用类型(参数传递)
JAVA 值传递还是引用传递不管你传的是什么,传过去的都只是一个副本而已,这个副本作为方法的局部变量保存在栈中。如果传的是基本数据类型,修改这个值并不会影响作为参数传进来的那个变量,因为你修改的是方法的局部变量,是一个副本。如果传的是一个对象的引用,也是一样的,也是一个副本,但是这个副本和作为参数传进来的那个引用指向的是内存中的同一个对象,所以你通过这个副本也可以操作那个对象。但是如果你修改这个引用
2017-03-16 21:54:50 1259
原创 Java中堆与栈的关系
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存。栈内存:一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。(当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。)堆内存:用于存放new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中
2017-03-16 21:53:07 202
原创 Java集合学习:HashMap实现原理
HashMap概述在JDK1.6中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别
2017-03-16 21:51:02 205
原创 Java设计模式之观察者模式
观察者模式观察者模式是对象的行为模式,又被称为发布-订阅模式、源-监听器模式或从属者模式。观察者模式定义一种一对多的依赖关系,让多个观察者同时监听某一个主题对象,当这个主题对象的状态发生变化时,会通知所有的观察者对象,是他们能够更新自己。观察者模式所涉及的角色抽象主题 抽象主题的作用主要是把所有观察者对象的引用保存在一个链表里面,并提供删除观察者、添加观察者、通知观察者的方法。并维护一个接口。
2017-03-16 21:48:27 190
原创 TCP协议如何保证传输的可靠性
简介TCP提供一种面向连接的、可靠的字节流服务。面向连接:两个使用TCP的应用(通常是一个客户端和一个服务器)在彼此交换数据之前就需要建立连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。可靠应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。 (将数据截断为合理的长度)当TCP发出一个段后,它启动一个定时器,等待目的端
2017-03-16 21:46:10 944
原创 死锁的条件
死锁产生的原因现象:在一条河上有一座桥,桥面较窄,只能容纳一辆汽车通过,无法让两辆汽车并行。如果有两辆汽车A和B分别由桥的两端驶上该桥,则对于A车来说,它走过桥面左面的一段路(即占有了桥的一部分资源),要想过桥还须等待B车让出右边的桥面,此时A车不能前进;对于B车来说,它走过桥面右边的一段路(即占有了桥的一部分资源),要想过桥还须等待A车让出左边的桥面,此时B车也不能前进。两边的车都不倒车,结果
2017-03-16 21:44:10 233
原创 事务
事务概念事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 事务的特性原子性( Atomicity )一致性( Consistency
2017-03-11 10:47:23 353
原创 Java中volatile关键字的含义
内存模型相关概念计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓
2017-03-11 10:07:57 4736 4
原创 Java中==与equals方法的区别
区别==:比较的是对象的地址,也就是比较是否是同一个对象equals: 比较的是对象的值原理Java中equals和==的区别 java中的数据类型,可分为两类: 基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean他们之间的比较,应用双等号(==),比较的是他们的值。 public void method1(){
2017-03-11 10:05:29 329
原创 Java NIO 系列教程(四)
阻塞式与非阻塞式(主要针对网络编程而言)阻塞式: 比如到你某个时候到A楼一层(假如是内核缓冲区)取快递,但是你不知道快递什么时候过来,你又不能干别的事,只能死等着。非阻塞式: 还是等快递的例子:你知道今天要来快递,等快递员给你打电话,在快递员打电话之前你可以忙自己的事情,等接到电话后再过去取,这就是非阻塞式的。为进一步提高IO的效率,使用了多线程来解决这个问题,但是线程的数量总是会因为CP
2017-03-02 20:58:52 339
原创 Java NIO 系列教程(三)
分散读取和聚集写入分散读取:就是将通道中的数据分散读取到多个缓冲区中聚集写入:就是将多个缓冲区中的数据聚集写入到通道中 分散读取具体实现:private static void test2() { RandomAccessFile ras = null; try { ras = new RandomAccessFile("doc", "rw");
2017-03-02 20:57:56 327
原创 Java NIO 系列教程(二)
直接缓冲区与非直接缓冲区非直接缓冲区:通过allocate()方法分配缓冲区,将缓冲区建立在Jvm内存中。可以观察到非直接缓冲区需要在内核地址空间(OS)和用户地址空间之间(JVM)之间进行数据复制的操作,将缓冲区建立在物理内存中的可以免除中间的复制操作,提高效率因此产生了直接缓冲区。直接缓冲区:通过allocateDirect()工厂方法来创建。此方法的缓冲区进行分配和取消分配所需的成本通常
2017-03-02 10:19:16 472
原创 Java NIO 系列教程(一)
概述Java NIO是面向缓冲区的,基于通道的IO操作。缓冲区与通道的基本原理叙述通道:类似于生活中的铁路,只用于连接,并没有数据的传输。缓冲区:类似于火车,可以双向的传递数据,比如说:运城到太原的火车,在运城上乘客后(乘客数量小于火车容量)(可以认为就是在写数据),就可以往太原出发,(当然也可以在中途进行上下车)在太原后,乘客需要下车(类似于读数据),重要的是这个火车在太原可以再次进行装人(写数据
2017-02-28 20:49:12 460
原创 远程windows用eclipse运行wordcount程序
环境:集群安装在虚拟机的linux的Centos6.5上 在windows上的eclipse运行eclipse过程记录搭建eclipse的hadoop开发环境下载hadoop对应版本的hadoop-eclipse-plugin-2.6.0.jar将相应的插件包放在Eclipse的插件目录中:D:\eclipse\plugins打开eclipse进入进入windows-preferences,
2017-02-26 23:26:01 640 2
原创 Hadoop中WordCount程序详解
Mappackage com.test.dx;/*如何给eclipse的main函数传递参数 * run as--> run configures -->Arguments */public class WordCount extends Configured implements Tool { static int mapnum = 0; public static int re
2017-02-26 23:25:11 496
原创 Hadoop通信协议——RPC原理详解
RPC 功能目标RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。 下面我们将具体细化 stub 结构的实现。 RPC 调用分类RPC 调用分以下两种:同步调用客户方等待调用执行完成并返回结果。异步调用客户方调用后不用等待执行结果返回,但依然可以
2017-02-26 23:24:41 1116
原创 Hadoop浅解海量数据处理算法——Bloom Filter
简介Bloom-Filter,即布隆过滤器。用于检索一个元素是否存在于一个聚合中。Bloom-Fileter是一种空间效率极高的随机数据结构,它利用位数组很简洁的表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。Bloom-Filter有可能出现错误判断,但不会漏掉判断(经过Bloom-Filter判断不存在集合中的,那肯定不存在;但是判断元素存在集合中,
2017-02-26 23:22:33 498
原创 Hadoop浅解SnapShots
快照HDFS快照是一个只读的基于时间点文件系统拷贝。快照可以将失效的集群回滚到之前的一个正常的时间点上。总览HDFS 快照是一种只读的特定时间点的文件系统的复制,快照可以对目录或者整个文件系统进行。作用防止用户的错误操作:管理员可以通过以滚动的方式周期性设置一个只读的快照,这样就可以在文件系统上有若干份只读快照。如果用户意外地删除了一个文件,就可以使用包含该文件的最新只读快照来进行回复。备份:管
2017-02-26 23:20:12 679
原创 Hadoop浅解partitioner
Partitioner分区类的作用是什么?在进行MapReduce计算时,有时候需要把最终的输出数据分到不同的文件中,比如按照省份划分的话,需要把同一省份的数据放到一个文件中;按照性别划分的话,需要把同一性别的数据放到一个文件中。我们知道最终的输出数据是来自于Reducer任务。那么,如果要得到多个文件,意味着有同样数量的Reducer任务在运行。Reducer任务的数据来自于Mapper任务,也就
2017-02-26 23:18:07 267
原创 Hadoop浅解HDFS租约处理
问题提出在HDFS中可能同时有多个客户端在同一时刻写文件,如果不进行控制的话,有可能多个客户端会并发的写一个文件,所以需要进行控制,一般的想法是用一个互斥锁,在某一时刻只有一个客户端进行写操作,但是在分布式系统中有如下问题:每次写文件前,客户端需要向master获取锁情况,他们之间的网络通讯太频繁。当某个客户端获取锁之后和master失去联系,这个锁一直被该客户端占据,master和其他客户端不
2017-02-26 23:17:42 1956
翻译 Hadoop浅解Centralized Cache Management(集中式缓存管理)
HDFS集中式缓存管理概观HDFS的集中化缓存管理是一个明确的缓存机制,它可以将用户指定的HDFS路径进行缓存。NameNode会和保存着所需快数据的所有DataNode进行通信,并指导他们把块数据缓存在off-heap缓存中。HDFS上的集中式缓存管理具有明显的优势: 1. 明确的锁定可以阻止频繁使用的数据被从内存中清除。当数据集的大小超过了主内存大小(这种情况对于许多HDFS负载都是司空见惯的
2017-02-26 23:16:58 614
原创 Hadoop浅解Combiner
这篇博客之前好久写的,现在完善一下:一、Combiner的出现背景我们可以发现在Hadoop运行Wordcount的过程中会出现如下记录:Combine input records=0Combine output records=0其中有两个计数器: Combine output records 和 Combine input records ,他们的计数都是0,这是因为我们在...
2017-02-26 23:15:08 574
原创 Falcon(三)——Falcon数据导入和导出
综述Falcon提供了周期性的将源数据从外部数据库(数据库,drop boxes etc)导入到Hadoop上以及将讲过Hadoop运算的数据导出到外部的数据库。在至今所有的版本中,Falcon仅仅支持关系型数据库(Mysql,Oracle等)讲过JDBC作为外部的数据源。将来的版本可能增加支持其他类型的数据库。先决条件要将数据导入和数据导出需要满足以下的条件: - Sqoop 1.4.6+ -
2017-02-26 23:12:28 2582
原创 Falcon(二)——架构详解
架构介绍Falcon是一个面向Hadoop的数据集和处理过程的管理平台。Falcon本质上是通过数据处理引擎将数据集和处理过程的配置文件转化为重复的业务处理流程。Falcon并不做任何繁重的工作,所有的过程和处理流管理都是由工作流调度器来完成的。Falcon所做的就是维持实体之间的依赖关系。Falcon给开发人员提供便捷。架构的整体框架调度器Falcon选择Oozie作为默认的调度器。当然Falco
2017-02-26 23:11:09 6886
原创 Falcon(一)——数据集管理和数据处理平台
目的:使终端用户在面向Hadoop集群进行数据集处理和数据集管理更加容易。原因在Hadoop环境中,在各种数据集和处理关系之间建立关系在集群中进行数据集管理例如数据集声明周期、数据集复制等抓取数据集或者处理过程的血统信息。允许本地数据和其他任何地方的集群进行数据整合。与metastore和catalog进行整合,例如:Hive和HcatalogEasy to onboard new wo
2017-02-26 23:08:27 6175 2
原创 hadoop启动脚本分析:start-all.sh
为了加深对Hadoop的理解,慢慢前进:----------------------------------------------------------调用顺序:1.先调用(hadoop)\libexec\hadoop-config.sh HADOOP_CONF=... //--config参数2."${HADOOP_HDFS_HOME}"/sbin/start-df
2016-11-24 20:27:06 3566
原创 Apache Oozie错误记录
错误一:错误提示:ERROR: Bad Request;default/E1004 : E1004: Expression language evaluation error, Unable to evaluate :${now(0,-5)}:CausedBy: E1004: Expression language evaluation error, Unable to evaluate :${n
2016-11-24 16:22:48 815
原创 Linux Shell 汇总
注意事项行首以 # 开头(除#!之外)的是注释。#!是用于指定当前脚本的解释器,我们这里为bash,且应该指明完整路径,所以为/bin/bash使用双分号(;;)可以终止case选项。bash 中的 source 命令用于在当前 bash 环境下读取并执行 FileName.sh 中的命令。“STRING” 将会阻止(解释)STRING中大部分特殊的字符。‘STRING’ 将会阻止STRI
2016-11-24 16:12:23 283
原创 理解OpenSSH的RSA和DSA认证过程
简介OpenSSH 的 RSA 和 DSA 认证协议的基础是一对专门生成的密钥,分别叫做 专用密钥和公用密钥。使用这些基于密钥的认证系统的优势在于:在许多情况下,有可能不必手工输入密码就能建立起安全的连接。RSA/DSA 密钥的工作原理下面从整体上粗略的介绍了 RSA/DSA 密钥的工作原理。让我们从一种假想的情形开始,假定我们想用 RSA 认证允许一台本地的 Linux 工作站(称作 localb
2016-11-21 14:37:12 1509
原创 Hive常见问题汇总
1 执行#hive命令进入Hive CLI时报如下错误:Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
2016-11-21 10:25:16 611
翻译 Ranger-kafka-plugin
ranger如何对在非安全模式下的kafka进行授权操作这部分主要是关于ranger如何对非安全模式下的kafka进行授权操作。1. 我可以通过ranger对非安全模式下的kafka进行访问控制?可以通过指定Ip地址对访问进行控制。2. 我可以通过ranger的用户/用户组来对非安全模式下的kafka进行访问控制?不能通过基于用户/用户组的条件来对非安全模式下的kafka进行控制,因为在非安全模式下
2016-11-19 23:34:09 3597
原创 JAVA jar文件打包详解
jar文件简介JAR就是Java ARchive。它能让你把一组类文件包装起来,所以交付时只需要一个Jar文件。创建可执行的(简单程序)JAR(HelloWord)1. 确定要打包为jar的所有类文件在相同目录下。2. 创建manifest.txt来描述哪个类滴啊有main方法。Mian-Cliss:(这里要有空格)类名(注意没有加.class后缀)Mian-Cliss: HelloWord3.
2016-11-10 22:03:48 783
ISO-2016-SQL.zip
2021-11-16
hadoop-2.7.0-winutils.zip
2018-04-11
linux Shell 得到当前路径的问题
2016-11-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人