
java
文章平均质量分 80
阳哥赚钱很牛
努力努力努力
展开
-
ArrayList底层代码
1、首先我们创建一个ArrayList数组ArrayList a=new ArrayList();2、点到底层后,发现我们需要的属性:transient Object[] elementData; // non-private to simplify nested class access这是一个瞬态对象的元素数据、非私有以简化嵌套类访问private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}原创 2021-09-09 12:12:46 · 297 阅读 · 0 评论 -
Hive中的自定义hive函数
我们一般只自定义UDF和UDTF函数。原创 2021-08-28 21:38:51 · 637 阅读 · 3 评论 -
Leetcode算法题——完美数
题目描述对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。给定一个 整数 n, 如果是完美数,返回 true,否则返回 false示例 1:输入:28输出:True解释:28 = 1 + 2 + 4 + 7 + 141, 2, 4, 7, 和 14 是 28 的所有正因子。示例 2:输入:num = 6输出:true示例 3:输入:num = 496输出:true示例 4:输入:num = 8128输出:tru.转载 2021-08-23 15:07:53 · 649 阅读 · 0 评论 -
zookeeper的监听器原理
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、节点删除、子目 录节点增加删除)时,ZooKeeper 会通知客户端。监听机制保证 ZooKeeper 保存的任何的数据的任何改变都能快速的响应到监听了该节点的应用程序。zookeeper只负责通知,具体做不做还要看客户端1、监听原理详解(1)首先要有一个main()线程(2)在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(...原创 2021-08-22 17:12:35 · 3254 阅读 · 4 评论 -
MapReduce中的计算器以及数据清理
一、计数器1、概述 计数器是MR程序在运行过程中记录一些数据信息,比如 Map阶段输入了多少数据 Map阶段输出了多少数据,Combiner输入了多少数据 Combiner输出多少数据。Hadoop为每个作业维护若干内置计数器,以描述多项指标。例如,某些计数器记录已处理的字节数和记录数,使用户可监控已处理的输入数据量和已产生的输出数据量。2、计数器的使用:采用计数器组、计数器名称的方式统计context.getCounter("gro...原创 2021-08-15 12:00:23 · 431 阅读 · 0 评论 -
MapReduce中的压缩和解压缩
在MR中,压缩是个可选项,是为了减少IO流次数一、概述 压缩技术能够有效减少底层存储系统(HDFS)读写字节数。压缩提高了网络带宽和磁盘空间的效率。在运行MR程序时,I/O操作、网络数据传输、 Shuffle和Merge要花大量的时间,尤其是数据规模很大和工作负载密集的情况下,因此,使用数据压缩显得非常重要。 鉴于磁盘I/O和网络带宽是Hadoop的宝贵资源,数据压缩对于节省资源、最小化磁盘I/O和网络传输非常有帮助。可以在任意MapReduce阶段启用压缩。不过,尽管压缩与解压操作...原创 2021-08-14 17:23:39 · 940 阅读 · 1 评论 -
在windows系统上安装Hadoop
Hadoop都是在Linux上安装、配置、操作的,那么Hadoop可以在Windows上安装、运行吗?答:我们知道Hadoop官网只提供了Hadoop的tar.gz安装包,显然是属于Linux系统的。但其实Windows系统也可以安装Hadoop,如果想在Windows上安装,我们将linux上的tar.gz这个安装包解压缩一下就可以了。(使用软件7-zip)一、Windows上安装hadoop步骤第一步 将linux上的tar.gz安装包解压缩需要解压缩两...原创 2021-08-14 14:20:58 · 16323 阅读 · 5 评论 -
MapTask与ReduceTask工作机制!!!
MR的学习接近尾声了,今天我们学习一下两个简单的内容:MapTask与ReduceTask工作机制MapTask与ReduceTask工作流程合起来其实就是我们MR的工作流程。一、MapTask工作机制1、学习MapTask工作机制之前,我们先理解一下并行度决定机制maptask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度。那么,mapTask并行任务是否越多越好呢?MapTask并行度决定机制 一个job的map阶段MapTa...原创 2021-08-10 22:02:47 · 506 阅读 · 0 评论 -
MapReduce详细工作流程之Combiner合并
今天学习的Combiner合并在MapReduce中是可选项,默认情况下Combiner不会执行,它就像一个可插拔的小组件。Combiner合并相当于MR的一种优化策略一、概念1)Combiner是MR程序中Mapper和Reducer之外的一种组件2)Combiner组件的父类就是Reducer3)Ccombiner和reducer的区别在于运行的位置:Combiner是在每一个maptask所在的节点运行Reducer是接收全局所...原创 2021-08-09 22:38:48 · 777 阅读 · 1 评论 -
快速帮助我们去实现JavaBean对象的创建的技术——lombok
今天我们介绍一个开发Javabean(实体类也是一个JavaBean)对象的一个神器:Lombok一、lombok是什么?JavaBean:Java定义的可重复使用的组件,也就是类。一般Javabean符合如下特征:1、类中的属性必须是私有化的private修饰的(为了保证数据的安全性)2、必须提供公开的getter、setter方法去暴露属性3、必须具备一个无参构造器(公开的)4、提供toString和equals方法等(可选)实体类:实体类也是一种JavaBean对象...原创 2021-08-09 13:30:44 · 385 阅读 · 0 评论 -
MapReduce的运作详解之分区
分区的概念:Map阶段处理的数据,在向环形缓冲区写的时候 是以分区的方式写的一般情况下,MR程序分区数有多少 reduceTask数量就应该有多少 ,一个分区的数据一个reduceTask去处理,reduceTask处理完成之后都会生成一个结果文件...原创 2021-08-06 21:30:05 · 3942 阅读 · 2 评论 -
JAVA高级排序——希尔排序
为何称高级排序呢?是因为之前学习的基础排序,包括冒泡排序,选择排序还有插入排序,对他们在最坏情况下的时间复杂度做了分析,发现都是O(N^2),而平方阶通过我们之前学习算法分析我们知道,随着输入规模的增大,时间成本将急剧上 升,所以这些基本排序方法不能处理更大规模的问题,接下来我们学习一些高级的排序算法,争取降低算法的时间 复杂度最高阶次幂。希尔排序希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的改进版本。学习插入排序的时候,我们会发现一...原创 2021-08-05 19:21:59 · 151 阅读 · 0 评论 -
学习JAVA必会的排序——插入排序
插入排序(Insertion sort)是一种简单直观且稳定的排序算法。插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我 们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在 手中的每张牌进行比较,如下图所示:需求:排序前:{4,3,2,10,12,1,5,6}排序后:{1,2,3,4,5,6,10,12}排序原理: 1.把所有的元素分为两组,已经排序的和未排序的;2.找..原创 2021-08-04 23:31:30 · 244 阅读 · 1 评论 -
学习JAVA必会的排序——选择排序
选择排序是一种更加简单直观的排序方法。需求: 排序前:{4,6,8,7,9,2,10,1} 排序后:{1,2,4,5,7,8,9,10}一、排序原理:在序列中选择合适的元素放在合适的位置。1.每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处 的值大于其他某个索引处的值,则假定其他某个索引出的值为最小值,最后可以找到最小值所在的索引2.交换第一个索引处和最小值所在的索引处的值也就是说,每次选...原创 2021-08-03 23:01:50 · 182 阅读 · 0 评论 -
JAVAWEB中的HTTP协议
HTTP协议:超文本传输协议我们随便去一个网页中去看看HTTP协议包含些什么?可看出有Request、Response这两个东西,分别是请求和响应。请求:HTTP 协议中共定义了九种方法或者叫“动作”来表明对 Request-URI 指定的资源的不同操作方式,具体介绍如下:序号 方法 描述 1 GET 请求指定的页面信息,并返回实体主体。 2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 3 P.原创 2021-08-02 10:49:15 · 169 阅读 · 3 评论 -
学习JAVA必会的几个遍历——冒泡排序
学习遍历前,为了让我们的算法更具有通用性,我们先介绍一下Comparable接口。此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。int compareTo(T o):比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数一、冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。需求: 排序前:...原创 2021-08-01 20:39:02 · 433 阅读 · 1 评论 -
二叉树的各种遍历方法!(JAVA)
接着上次对二叉树的创建,获取,删除,添加这次我们做一下查找二叉树的最小的键和最大的键。一、查找二叉树中最小的键和最大的键在某些情况下,我们需要查找出树中存储所有元素的键的最小值,这里我们设计如下两个方法来完成:public Key min() 找出树中最小的键 private Node min(Node x) 找出指定树x中,最小键所在的结点 //找出整个树中最小的键 public Key min(){ return min(ro...原创 2021-08-01 15:58:08 · 2431 阅读 · 0 评论 -
数据结构——二叉树
回顾一下之前学习的数组和链表:数组拥有查询快,增删慢的特点;链表拥有增删快,查询慢的特点。现在我们利用树的特性:在数组查询快的基础上,利用树的特性,提高其增删的效率;在链表增删快的基础上利用树的特性提高其查询的速率。(本文图片来自黑马程序员)1.1 树的基本定义树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。树是由n ( n>=1 )个有限结点组成一个具有层次关系...原创 2021-08-01 10:38:42 · 211 阅读 · 2 评论 -
MapReduce
一、我们为什么要用MapReduce?1)海量数据在单机上处理因为硬件资源限制,无法胜任2)而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度3)引入mapreduce框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交由框架来处理。4)mapreduce分布式方案考虑的问题(1)运算逻辑要不要先分后合?(2)程序如何分配运算任务(切片)?(3)两阶段的程序如何启动?如何协调?(4)整个程序运行过程中的监控?容错?重试?原创 2021-07-30 21:21:43 · 184 阅读 · 2 评论 -
Java字符流readLine()方法的小细节!
描述:我们在大数据学习的起初,会写到WordCount这样的程序,对文档内单词的重复次数进行统计。文档内容:hadoop hivehive sparkflume flinkhbase hivehadoop spark flink我们使用java代码实现这一功能,代码如下:public class WordCountJava { public static void main(String[] args) { //第一步 连接HDF...原创 2021-07-30 14:47:34 · 7564 阅读 · 4 评论 -
剑指Offer算法题——合并两个排序的链表
题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4原创 2021-07-27 21:18:33 · 221 阅读 · 0 评论 -
Java代码实现单元测试
单元测试:在编写java代码的时候,如果我们想去运行一个Java程序,那么必须创建一个main方法,但这样比较麻烦比如现在我们想去测试HDFS的JavaAPI的文件上传和文件下载功能如果使用main方法的话,那么我们需要创建两个Java类,比较复杂,后期找的时候也比较麻烦。因此在Java当中提供了一个工具:Junit单元测试单元测试其实属于Java中的一个测试方法,最直接的表现形式就是在一个Java文件当中可以创建多个"main"方法。如果想要去使用单元测试,你们必须引入单元测试的ja原创 2021-07-26 18:09:35 · 1791 阅读 · 2 评论 -
JAVA反射
1.类加载器1.1 类加载当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出现意外情况,JVM将会连续完成三个步骤,所以有时也把这三个步骤统称为类加载或者类初始化。类的加载就是指将class文件读入内存,并为之创建一个java.lang.Class对象任何类被使用时,系统都会为之建立一个java.lang.Class对象类的连接验证阶段:用于检验被加载的类是否有正确的内部结构,并和...原创 2021-07-23 14:54:41 · 109 阅读 · 0 评论 -
JAVA线程同步
我们先做一个小案例回顾上次的内容:卖票共有50张票,而只有3个窗口卖票,设计程序模拟卖票。思路:SellTicket.java:public class SellTicket implements Runnable{ private int tickets=50; @Override public void run() { /* A:判断票数大于0,就卖票,并告知是哪个窗口卖的 B:卖了票之后,总票数要减1原创 2021-07-21 13:46:25 · 139 阅读 · 0 评论 -
JAVA的进程和线程
由于线程是依赖于进程的,所以我们先从进程开始。1.1进程进程:是正在运行的程序 ● 是系统进行资源分配和调用的独立单位 ● 每一个进程都有它自己的内存空间和系统资源1.2线程线程:是进程中的单个顺序控制流,是一条执行路径●单线程:一个进程如果只有一条执行路径,则称为单线程程序●多线程:—个进程如果有多条执行路径,则称为多线程程序...原创 2021-07-18 23:47:41 · 254 阅读 · 0 评论 -
JAVA字符流02
一、字符流小案例复制Java文件需求:把模块目录下的“list.java”复制到模块目录下的“Copy.java"分析:①转换流的名字比较长,而我们常见的操作都是按照本地默认编码实现的,所以,为了简化书写,转换流提供了对应的子类②FileReader:用于读取字符文件的便捷类FileReader(String fileName)③FileWriter:用于写入字符文件的便捷类FileWriter(String fileName)④数据源和目的地的分析数据源: l...原创 2021-07-16 13:05:56 · 100 阅读 · 0 评论 -
JAVA字符流学习01
为什么会出现字符流由于字节流操作中文不是特别的方便,所以Java就提供字符流字符流=字节流+编码表用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别是中文的呢?汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数代码:/*需求:字节流读文本文件数据一个汉字存储:如果是GBK编码,占用2个字节如果是UTF-8编码,占用3个字节 */public class charStream { public.原创 2021-07-15 10:30:15 · 168 阅读 · 6 评论 -
JAVA字节流
一、字节缓冲流1.BufferedOutputStreamModule java.base 软件包:java.iopublic class BufferedOutputStream extends FilterOutputStream该类实现缓冲输出流,通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。构造方法:2.BufferedInputStreamModule java.ba...原创 2021-07-13 22:43:31 · 184 阅读 · 0 评论