自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 scala基础(三)

scala集合1)Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable 特质。2)对于几乎所有的集合类,Scala 都同时提供了可变和不可变的版本,分别位于以下两 个包 不可变集合:scala.collection.immutable 可变集合: scala.collection.mutable3)Scala 不可变集合,就是指该集合对象不可修改,每次修改就会返回一个新对象,而 不会对原对象进行修改。类似于 java 中的 String 对象

2021-12-09 10:31:15 578

原创 Scala基础(二)

Scala的面向对象Scala 的面向对象思想和 Java 的面向对象思想和概念是一致的。Scala 中语法和 Java 不同,补充了更多的功能。1.Scala包 Scala包与Java类似,有两种管理方式。第一种与Java一毛一样。 但是在Scala中,还有另一种,即通过嵌套的方式。package com{ package zc{ package hadoop{ } }}按照嵌套...

2021-12-04 17:12:34 513

原创 剑指offer-TopK问题

给予一个未排序数组,需要你找出最小的k个值1.快排,直接给出前k个值class qksort{ public static int[] topK(int k , int[] arr){ if( k > arr.length) return arr; quicksort(arr,0,arr.length-1); retrun Arrays.Copyof(arr,k) } private static void q

2021-11-26 21:36:45 281

原创 Scala基础(一)

Scala是学习Spark的基础。比java更面向对象。Scala基于Java的,其编译都依赖于JVM,使得Scala也能够跨平台运行。Scala的SDK拥有Java的部分类库,以及自己的特有类库,和一些Java的封装类库。1.下载Scala并配置环境变量。2.创建Maven新工程,增加Scala支持。即可开始书写Scala代码。Scala大部分性质与Java类似...

2021-11-22 15:38:18 2105

原创 Hive基础

1.Hive简介Hive:由Facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。其实Hive就是将我们的类似SQL(HQL)语句转换成MapReduce程序的工具。Cli 用户接口(JDBC等) Metastore元数据:存储表名,表存在的数据库,表的拥有者等表的信息。、 使用HDFS存储,使用MapReduce计算 Driver分为四步:...

2021-11-15 14:05:39 1745

原创 剑指Offer-包含Min函数的栈

要求实现一个时间复杂度O(1)的函数,找到栈中的最小值。那么以空间换时间,加入一个辅助栈即可。package 剑指Offer.栈.包含min函数的栈;import java.util.Stack;/** * @program:多线程和IO * @descripton:辅助栈实现 * @author:ZhengCheng * @create:2021/10/29-19:57 **/public class minStack { private Stack<Integ

2021-10-29 20:05:26 71

原创 MapReduce-Hadoop序列化

序列化相信大家都在Java中学习过。那么在Hadoop中有什么区别呢?首先在Java中,我们是将数据转化成字节码文件,这样无论什么样的机器,通过同样的反序列化操作,都能得到我们的数据。但是在Java中,我们实现的Serializable接口,在输出的字节码文件中,还会加上一些校验信息。Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输。所以,Hadoop自己开发了一套序列化机制

2021-10-29 19:30:46 1053

原创 MapReduce-wordcount

MapReduce概述MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。1)MapReduce易于编程它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变

2021-10-29 14:50:03 449

原创 Exception in thread “main“ java.lang.UnsupportedClassVersionError

在IDEA里编写好自己的WordCount程序后,我们使用Maven打包。将jar包导入到Hadoop集群中。使用Hadoop命令执行jar包,出现如下错误:这个错误的原因是我们的IDEA里用的JDK版本太高,可以看到complied的版本是more rencent(53.0)用的JDK9进行打包的。但是在我的虚拟机中,我安装的是JDK8(52.0)。所以会出现上述的异常。那么解决方案有两种。1.是将Linux中的JDK重新安装成JDK92.更换生产环境中的JDK 2....

2021-10-29 14:20:17 2049

原创 Win10环境下运行WordCount案例出错解决方案

注意是否配置好环境。例如HADOOP_HOME,以及相应的Windows依赖。如果完成上述,提示的是ChangeFileModeByMask error(3)那么我们可以找到你之前在Windows里的Hadoop文件夹,将hadoop.dll复制到C盘的System32(大概率是隐藏的,可以通过搜索找到)中。那么如果此时运行仍然报错。报错为Exception in thread "main" 0: No such file or directory那么此时是IDEA运行的权限不够!

2021-10-28 22:39:55 1443 1

原创 HDFS的读写流程

HDFS的写数据流程客户端需要上传文件,客户端就会创建一个Distributed FileSystem,向NameNode请求上传文件。 此时,NameNode要检查,该客户端是否有权限进行操作。然后开始检查目录结构能否创建成功。检查完成后,Namenode就会响应,通知客户端上传文件。 客户端此时会请求上传第一个Block,需要NN返回DataNode,告知客户端上传的位置。 NN会返回几个DataNode,例如返回了3个节点。表示告知客户端要用返回的三个节点存储数据。 此时HDFS客户.

2021-10-28 13:27:06 266

原创 HDFS简介与常用API

HDFS简介 HDFS是一个文件系统(Hadoop Document File System),通过目录树来定位文件。其次,它是分布式的。HDFS适用于:一次写入,多次读出的场景。HDFS通过多种方式,实现了高容错性、可靠性、适合处理大数据HDFS缺点: 1.不适合低延时的数据访问。 2.无法高效的对大量小文件进行存储 (占用过多NameNode的内存用于存储文件目录...

2021-10-28 11:26:26 1269

原创 Hadoop基础(安装与启动集群)

Hadoop是一个又Apache基金会所开发的分布式系统基础架构。主要用于解决海量数据的存储和海量数据的分析计算问题。广义上来说,Hadoop也只Hadoop的生态圈。相关Apache的开源软件:Index of /distHadoop具有的优势:高可靠性:Hadoop底层维护多个数据副本,避免某个节点故障导致的数据丢失。高扩展性:可以通过增加节点的方式,拓展集群高效性:在MapReduce的思想下,Hadoop是并行的高容错性:能自动的失败的任务重新分配。1.Hadoop的架构

2021-10-26 20:44:02 436

原创 ZooKeeper基础

在我们的多线程学习中,一个主机有多个线程。若这些线程共享了一个资源。那么我们为了保证一致性问题,我们使用了锁的机制。只有拿到锁的线程,才能够访问该共享资源,进行读或写的操作。那么,在我们的hadoop集群里,我们类比多线程。多线程是单主机,多线程,而在集群中,我们是多主机向同一共享资源进行访问。那么我们就需要一个叫 分布式锁 的东西,来保证被集群(多主机)访问的共享资源的数据一致性问题。而我们的Zookeeper就能完成这样的功能。Zookeeper的特点...

2021-10-26 13:13:34 114

原创 Shell基础

在操作Linux系统时,我们输入的所有命令,都是先通过Shell层,再到达内核的。脚本格式要求1.脚本以 #!/bin/bash开头2.脚本需要有可执行权限脚本常用的执行方式Shell脚本 HelloWorld!#!/bin/bashecho "hello,world"方式1(输入脚本的绝对路径或相对路径)说明:首先要赋予helloworld.sh 脚本的+x权限,再执行脚本方式2(sh+脚本)说明:不用赋予脚本 +x权限,直接执行即可。Shel

2021-10-21 16:26:20 168

原创 剑指Offer - 顺时针输出矩阵

package 剑指Offer.二维矩阵.顺时针打印矩阵;/** * @program:多线程和IO * @descripton:顺时针向内打印数组 * @ 例如给定一个二维数组 [1,2,3] [1 ,2 ,3 ,4] * [4,5,6] [5 ,6 ,7 ,8] * [7,8,9] [9,10,11,12] * @ 我们需要输出 123698745 ..

2021-10-19 21:55:46 85

原创 剑指Offer-镜像二叉树

package 剑指Offer.二叉树.二叉树镜像;import java.util.ArrayDeque;import java.util.LinkedList;import java.util.Queue;/** * @program:多线程和IO * @descripton:输入一个二叉树,利用一个函数输出其镜像 * @author:ZhengCheng * @create:2021/10/19-18:54 **/public class MirrorTree { ..

2021-10-19 19:42:33 66

原创 集合基础-Set

Set接口Set接口继承自Collection。Set接口中没有新增的方法。Set更注重独一无二的性质,该体系集合用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。对象的相等性本质是对象hashCode值(根据对象的内存地址计算出的此序号)判断。如果想让两个不同的对象相等,就必须覆盖Object的hashCode方法和equals方法。Set有几个常用的实现类,HashSet 、TreeSet 、LinkedHashSetHashSet:HashSet(Hash表)里边存.

2021-10-12 16:09:30 114 1

原创 集合基础-Map

Map是一个接口,其包含了多个实现类。Map是利用键值对的方式,来存储的。Key相当于扩大了索引的内容,不再局限于数组中的数字。HashMapHashMap的底层实现采用了Hash表,这是一种非常重要的数据结构。歌女键的hashcode值存储数据。具有极快的访问速度,但是其遍历顺序却是不确定的。HashMap最多只允许记录一条键为null的记录。同时HashMap非线程安全的。如果想满足线程安全,可以使用synchronizedMao或者ConcurrentHashMap。 ...

2021-10-12 14:35:02 133 1

原创 集合基础-List

ArrayList的底层是由数组实现的。它允许对元素进行快速随机访问。但是我们知道,数组的缺点是每个元素之间不能有间隔。当数组大小不满足时,我们需要对其进行扩容。在其底层,我们是通过将原有数组复制到一个更大空间的储存空间中的。当从ArrayList的中间位置插入或者删除元素时,由于我们实现是通过的数组。那么,对数组进行移动,复制的代价比较高。因此使用ArrayList,适合随机查找和遍历,不适合插入和删除。 查看源码public class ArrayList&lt...

2021-10-11 15:28:28 129

原创 剑指Offer-返回倒数第k个节点

返回倒数第k个节点。LinkedListpackage 剑指Offer;import java.util.Stack;/** * @program:多线程和IO * @descripton:返回倒数第k个节点 * @author:ZhengCheng * @create:2021/10/11-14:36 **/public class DeleteNodeBackward { //题解中均未考虑k会大于链表长度的情况 public static void mai.

2021-10-11 15:18:26 71

原创 剑指Offer-调整数组顺序

调整数组顺序使得奇数位于偶数前面。不限排列顺序,只要求奇数在偶数前面。package 剑指Offer;import java.util.LinkedList;/** * @program:多线程和IO * @descripton:调整数组顺序使得奇数位于偶数前面 * @author:ZhengCheng * @create:2021/10/11-14:05 **/public class ChangePositon { //思路1:最简单的思路当然是遍历一次数组,将奇数.

2021-10-11 15:17:24 92

原创 剑指Offer-打印从1到最大的n位数-删除节点

打印从1到最大的n位数,传递n,打印从1到n位数。例如输入3,打印1-999.则打印的关系为 Math.pow(10,3).package 剑指Offer;/** * @program:多线程和IO * @descripton:打印从1到最大的n位数 * @author:ZhengCheng * @create:2021/10/11-13:57 **/public class PrintNums { public static void main(String[] args

2021-10-11 15:15:07 71

原创 剑指offer-子数组的和系列

一共有三道题:1.输入一个整数数组和一个整数k,请问数组中有多少个数字之和等于k的连续子数组?例如,输入数组[1,1,1],k=2,则返回2。2.输入一个只包含0和1的数组,求0和1的个数相同时,最长连续子数组的长度。例如[0,1,0]是2.3.输入一个整数数组,如果一个数字左边的子数组的数字之和等于右边的子数组的数字之和,那么返回该数字的下标,如果没有,返回-1.这三道题其实都是针对子数组的题目, 具体的思路在每题的解答中有写。题1:package 剑指Offer.第二章数组.

2021-10-08 13:34:42 77

原创 IO流-转换流

我们在之前学到过,使用字节流时,会出现乱码问题,其实使用字符流也会出现。因为在默认情况下,我们使用字符流处理时,读取文件默认使用的是UTF-8编码。如果我们的文件采用的是gbk编码怎么办呢?如果仍然采取这样的读取方式,就会出现乱码问题。那么如何解决呢,java中,字节流的读取可以使用不同的编码方式读取,只需要将字节流包装成字符流,再通过Buffered的包装,就可以提高效率的同时,不会出现乱码错误。为了解决字节流转化成字符流的问题,所以,我们引入了转换流。转化流 InputStreamRea

2021-10-06 16:39:59 180

原创 IO流-序列化与反序列化

在使用IO流保存信息的过程中,我们如果想要将数据的类型也保存下来应该如何操作?例如我想保存的是将 int num = 100 ,这个100存入到文件中,并且要求能够读取时,能恢复其是int型的100。应该怎么做?使用寿命样的方法?我们由此引出了序列化与反序列化。序列化就是在保存数据时,保存数据的值和数据类型。反序列化就是在恢复数据时,恢复数据的值和数据类型。需要让某个对象支持序列化机制,那么必须让其类是可序列化的,为了让某个类是可序列化的,该类必须实现如下两个接口之一:Se...

2021-10-06 15:55:00 104

原创 IO-Buffered包装类

我们在之前的装饰者设计模式中,我们学到了,包装类BufferedReader和BufferedWriter是用于修饰节点流的。让我们处理节点流能够有更强的功能。下面演示BufferReader和Writer的基本用法。package IO流.Buffered;import java.io.*;/** * @program:多线程和IO * @descripton: * @author:ZhengCheng * @create:2021/10/5-17:35 **/public

2021-10-05 17:48:38 132

原创 设计模式-装饰者模式

在IO的学习中,BufferReader/Writer这两个类是包装类,里面可以传入一些其他的FileInputStream,于是去学习,什么是装饰者模式。装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。具体的就是,我们在实现一个奶茶店的消费系统时,因为有许多小料的加入,如何合理的设计,成为一个麻烦。如果让我们的奶茶单品与每一个小料组合都作为子类,那么类过多,且不方便维护。如果我们在最顶层的类中,加入各个小料的一个Boolean值,用于最后计算Cost。但是

2021-10-04 21:40:16 152 2

原创 IO流-基础输入输出

按照操作数据单位不同分为:字节流:8bit (操作二进制文件,保证文件无损操作输入(顶层父类):FileInputStream 输出(顶层父类):FileOutputStream字符流:按照字符为单位(效率高)输入(顶层父类):Reader 输出(顶层父类):Writer按照流的角色分类: 节点流,处理流/包装流首先针对FileInputStream进行学习说明(写、读):在下面demo中,读取中文出现了乱码问题,在后续中可以解决。...

2021-10-04 19:22:13 58

原创 IO流-创建删除文件以及一般API

使用IO流创建文件,三种方式package IO流.CreateFile;import java.io.File;import java.io.IOException;/** * @program:多线程和IO * @descripton:创建新文件 * @author:ZhengCheng * @create:2021/10/4-13:24 **/public class CreateNewFile { public static void main(String[.

2021-10-04 17:38:20 203

原创 死锁-多线程

什么是死锁?所谓死锁,是指多个线程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,多个线程都无法继续执行,总而导致死锁现象。下面演示一种必定发生死锁的情况package DeadLock;/** * @program:多线程和IO * @descripton:打开注释,就会死锁。 * @author:ZhengCheng * @create:2021/9/30-21:08 **/public class DeadLockDemo{ static Objec

2021-10-03 16:26:56 109

原创 原子性问题

什么是原子性? 一系列的操作,要么全部执行成功,要么全部不执行,不会出现执行一半的情况,是不可分割的。Java中的原子操作有哪些? 除了long和double之外的基本类型(int byte char boolean short float) 所有引用类型的赋值操作 java.concurrent.Atomic.*包中所有类的原子操作那么为什么long和double不是原子性的呢?从官方文档我们可以一探究竟,首先Lon...

2021-10-02 12:24:12 252

原创 单例模式-设计模式

​老韩讲解过程中,统计本机cpu数目时,提到了单例。单例模式是一种设计的模式,因为很多东西在整个应用的过程中只需要一个全局的对象。不需要多个,例如重复点击回收站,返回的是同一个对象,没有必要创建多个对象。 优点:在内存中只有一个对象,节省内存空间; 避免频繁的创建销毁对象,可以提高性能; 避免对共享资源的多重占用,简化访问; 为整个系统提供一个全局访问点。 缺点:1.不适用于变化频繁的对象 ?因为频繁变化的对象在一般过程中可以通过上一层进行功能的拓展。但是对于单例模式...

2021-09-30 15:35:34 141

原创 Volatile关键字

Volatile关键字的作用: 预防可见性问题,重排序问题。Volatile是一种同步机制,比synchronized或者Lock相关类更轻量,因为使用Volatile并不会发生上下文切换等开销很大的行为。 一个变量被修饰成volatile,JVM就知道了这个变量可能会被并发修改。但是,volatile是一个轻量级的,对应的能力也小,无法像synchronized一样能够对变量进行原子保护。volatile仅在很有限的场景下才能发挥作用。 案例...

2021-09-29 10:28:11 64

原创 剑指Offer-小青蛙跳台阶

类比斐波那契数列,只不过注意考虑一下初始条件。package 剑指Offer.青蛙跳台阶问题;/** * @program:多线程和IO * @descripton:青蛙跳台阶,一次一阶或者两阶,问有几种跳法。(类比斐波那契) * @author:ZhengCheng * @create:2021/9/28-15:11 **/public class FrogClimbStairs { //递归,注意初始条件 太慢! private static int frogJ

2021-09-28 15:39:07 68

原创 剑指offer- 和大于或等于k的最短子数组

package 剑指Offer.第二章数组.和大于或等于k的最短子数组;/** * @program:多线程和IO * @descripton:正整数数组和一个正整数k,数组中和大于或等于k的连续子数组的最短长度是多少? * @若无,返回0; * @author:ZhengCheng * @create:2021/9/26-16:57 **/public class MinlengthArr { public int minlength(int[] arr ,int k){ ..

2021-09-26 17:20:53 169

原创 剑指offer-数组中和为0的3个数字

package 剑指Offer.第二章数组.数组中和为0的三个数字;import java.util.Arrays;import java.util.LinkedList;import java.util.List;/** * @program:多线程和IO * @descripton:所有和为0的3个数字的三元组? * @返回值中不得包含重复的三元组。 * @author:ZhengCheng * @create:2021/9/26-16:07 **/public class ..

2021-09-26 16:56:31 76

原创 剑指offer-数组中的两个数字之和

1.非排序数组的两个数字之和为k,输入k,得到两数字和为k的下标。假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。 步骤:得到k , 找k-i 时间复杂度O(n方)比较简单,不写。2.输入一个递增排序的数组和一个值k,请问如何在数组中找出两个和为k的数字并返回它们的下标。此题和题1很相似,但是给出了递增排序,我们可以合理的利用这个条件,简化时间复杂度。 对于此时,我们有了递增的条件,可以使用双指针的办法,一个在头一个在尾,进行扫描。若a[i...

2021-09-25 17:28:08 237

原创 剑指offer-只出现一次的数字

package 剑指Offer.只出现一次的数字;/** * @program:多线程和IO * @descripton:一个整数数组,有一个数字只出现了一次,其余的都出现了2次 * @进阶版 其他的出现了三次 * @author:ZhengCheng * @create:2021/9/24-19:27 **/public class NumAppearOnce { public static void main(String[] args) { int[] a..

2021-09-24 20:30:02 68

原创 剑指offer-二进制加法

题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。package 剑指Offer.整数除法和二进制加法;/** * @program:多线程和IO * @descripton:二进制加法 * @题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。 * @author:ZhengCheng * @create:2021/9/24-18:38 **/public class AddBybBinary { pu...

2021-09-24 19:26:46 114

空空如也

空空如也

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

TA关注的人

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