自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JavaSE面试问题:介绍下你所认识的HashMap

1.HashMap介绍(特点)HashMap作为Map的主要实现类;线程不安全的,效率高;存储null的key和value2.HashMap底层数据结构JDK1.7:数组+链表 JDk1.8:数组+链表+红黑树3.HashMap的底层实现原理(以JDK1.7为例说明)// 在实例化以后,底层创建了长度是16的一维数组Entry[] tableHashMap map = new HashMap()// 多次put以后map.put(key1, value1)首先,调用...

2021-03-30 15:59:05 12

原创 JavaSE面试问题:“==”和equals的区别

“==”比较的是基本数据类型,即比较的是变量值;equals比较的是引用数据类型,即比较的是地址值(两个对象是否指向同一块内存); 如果没有重写equals方法比较的是对象中的属性的内容,如果重写了equals方法比较的是对象中的属性的内容; equals方法是从Object类中继承的,默认的实现就是使用“==”;...

2021-03-30 15:34:21 12

原创 GROUP BY语句与HAVING语句的使用

GROUP BYGROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个列的结果集。语法如下:SELECT column1, column2, ... column_n, aggregate_function (expression) FROM tables WHERE predicates GRO

2021-03-28 11:22:02 13

原创 JavaSE面试问题:String、StringBuffer和StringBuilder的区别?

答:1.String、StringBuffer和StringBuilder都和字符序列有关,但是String是不可变字符序列,而StringBuffer和StringBuilder是可变字符序列。2. StringBuffer与 StringBuilder 中的方法和功能是完全等价的。3. 只是StringBuffer中的方法大都采用了synchronized关键字进行修饰,因此是线程安全的,而StringBuilder没有这个修饰,可以被认为是线程不安全的。4.在单线程程序下,Strin...

2021-03-07 14:19:27 27 2

原创 MySQL中 ‘ + ‘ 号的作用

前言:无论是编程语言中还是SQL语言中都存在 + 号,但是在不同的语言环境下 + 的作用不同,这里说明下MySQL中 + 号的功能。Java中的‘+’号运算符,两个操作数都为数值型连接符,只要一个操作数为字符串MySQL中的‘+’号仅仅只有一个功能:运算符MySQL中的‘+’号的几种使用情况(1)两个操作符都为数值型,则做加法运算(2)只要其中一方为字符型,试图将字符型数值转换成数值型如果转换成功,则继续做加法运算;如果转换失败,则将字符型数值转换成0,如图:(3)只要其中

2020-12-17 11:24:01 82

原创 I/O软件通常分为四个层次:用户空间I/O软件、设备独立性软件、设备驱动程序和中断处理程序,问以下各项工作是在哪个层次上完成的

工作列表(1)用户进程请求打印一个输出文件。(2)将一维磁盘块号转换为三维物理地址(柱面、磁道和扇区)。(3)获得设备驱动程序的入口地址。(4)将终端输入的字符转换为ASCⅡ码。(5)设备驱动进程被唤醒。(6)向设备寄存器写命令。(7)检查用户是否有权使用设备。(8)将二进制整数转化成ASCⅡ码以便打印(用户层)。(9)维护一个最近使用块的缓存。对应层次(1)用户空间输入/输出软件。(2)设备驱动程序。(3)设备独立性软件。(4)设备独立性软件。(5)中断处理程序。(6)设备

2020-11-22 11:20:56 471

原创 更新Linux时间为网络时间

1. 下载包sudo yum install -y ntpdate2. 同步网络时间sudo ntpdate 0.asia.pool.ntp.org若上面的时间服务器不可用,也可以改用如下服务器进行同步:time.nist.govtime.nuri.net0.asia.pool.ntp.org1.asia.pool.ntp.org2.asia.pool.ntp.org3.asia.pool.ntp.org3. 最后执行如下命令将系统时间同步到硬件,防止系统重启后时间被还原sud

2020-11-20 14:01:29 110

原创 Java关于比较器的认识和理解

在有些时候我们需要对对象进行一个排序,这时间就会使用到Java的比较器。可是比较器这个东西学完之后总觉得理解不真切,过一段时间用的时候又忘了如何去用,很头疼。Java实现对象排序的方式有两种自然排序:java.lang.Comparable定制排序:java.lang.Comparator我们先来看看自然排序java.lang.Comparable1. 自然排序java.lang.Comparable接口比较规则是啥: 实现 Comparable 的类必须实现 compareTo(Objec

2020-11-04 09:08:29 83

原创 Flume之 HDFS Sink相关参数的使用注意点

前言:Flume中HDFS Sink是我们用的比较多的,可是HDFS Sink的配置参数也挺多,看下官网给的参数。既然多那就要圈重点了:1.使用hdfs sink时要配置两个最基本的参数:type和hdfs.patha1.sinks.k1.type = hdfsa1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S2.上传的文件的前缀:hdfs.filePrefix (建议添加)a1.sinks.k1.hdfs.filePrefi

2020-10-16 20:48:48 211

原创 安装Redis执行make test报错:pending querybuf: check size of pending_querybuf after set a big value...

执行make test 报错: pending querybuf: check size of pending_querybuf after set a big value in tests/unit/pendingquerybuf.tcl the used_memory of replica is much larger than master. Master:43869232 Replica:69031856解决方案:1.增加内存2.多执行几次make test (建议)...

2020-10-01 10:55:30 298

原创 IDEA Maven项目连接远程数据库报错:No suitable driver found for “XXXXXXXXXXX“

前言:好久没用JDBC了,今天想操作下Linux上的MySQL结果一直报错,错误信息如下:Exception in thread "main" java.sql.SQLException: No suitable driver found for "jdbc:mysql://hadoop02:3306/ct?useUnicode=true&characterEncoding=UTF-8" at java.sql.DriverManager.getConnection(DriverManager.

2020-09-27 10:17:39 373

原创 Maven项目中使用FileInputStream()或getResourceAsStream()时默认路径问题

前言:很多时候我们需要加载resources目录下properties文件中的配置信息,可是路径的问题总是让人头疼,今天特意总结下。我的是JavaSenior Maven项目下再创建一个JavaExer项目。1. 使用FileInputStream读取resources目录下文件现在我要获取JavaExer项目下resources目录下的jdbc.properties文件,路径应该这样写:FileInputStream fis = new FileInputStream("JavaExer\\sr

2020-09-20 10:56:40 635

原创 Java 枚举类Enum使用方法详解及常用方法介绍

前言:开发中我们经常需要定义一组常量,这时我们就可以使用枚举类。注意:使用枚举类有个前提,就是我们这组常量的个数是有限个。例如:星期、四季、性别、支付方式、就职状态、线程装填等。JDK1.5之前我们需要自定义枚举类,JDK1.5新增enum关键字。1. 如何自定义枚举类呢?并不难,需要注意一下几个点:1)枚举对象的属性不允许别改动,所以应该使用private final关键字。2)枚举类中使用private final 修饰的属性应当在构造器中赋值。3)若枚举类显示定义了带参构造器,则在列举枚

2020-09-17 12:03:00 370

原创 Python能使用保留字命名变量的原因

前言: 无论是Java、scala等语言在命名变量名的时候,你一定会想到一点,那就是:不能使用关键字和保留字。可是在Python中真的不能使用保留字或关键字吗?其实是可以的。看一段代码,如下图:执行结果如下:注意错误信息和报错行数(第六行,也即是print(10))。你发现没,当我们创建print这个变量时,并没有报错。 这是为什么呢?再来看一段代码:这里我们创建了一个变量名为input,它是用来获取用户输入的字符串的。代码运行结果为10,说明可以用input来命名变量,而input是p

2020-09-13 09:42:00 496 2

原创 Maven获取resources的文件路径、读取resources的文件

https://www.cnblogs.com/convict/p/11330449.html

2020-09-11 14:28:07 162

原创 Java 常用日期时间类总结

时间戳: 当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。1. java.lang.System类:此方法适于计算时间差这个类我们用的最多的就是currentTimeMillis()方法,返回值是long型,获取系统当前时间的时间戳。long timeMillis = System.currentTimeMillis();System.out.println(timeMillis);2. java.util.Date类:表示特定的瞬间,精确到毫秒2.1 构造器1)Date

2020-09-06 10:41:56 65

原创 Java String常用方法的五道练习题

前言:之前写了一篇总结Java String常用的方法,光有理论知识是不行的主要还是待练习,所以总结了五道练习题分享下。第一道:模拟一个trim方法,去除字符串两端的空格public class ExerDemo01 { // 模拟一个trim方法,去除字符串两端的空格 public static String main(String[] args) { String s = " hello "; int len = s.length(); int cur = 0; ch

2020-09-06 09:37:22 141

原创 Java String常用方法汇总(实际代码演示)

String s1 = "hello"; // 返回字符串的长度:length方法 System.out.println("s1.length: " + s1.length()); /* * 获取某索引处的字符:charAt(int index) 方法 * 注意:索引从0开始 */ System.out.println("s1.charAt(0): " + s1.charAt(0)); // 判断字符串是否是空字符串:isEmpty()方法 S..

2020-09-05 17:52:20 46

原创 Java Thread类的常用方法总结

基础:void start():启动线程,并执行对象的run()方法run():线程在被调度时执行操作String getName():放回线程名称void setName(String name):设置该线程名称static Thread currentThread():返回当前线程。在Thread子类中就是this,通常用于主线程和Runnable实现类。进阶:static void yield():线程让步。暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程;若队列中没有

2020-09-05 14:46:39 130

原创 Java创建线程的几种常用方式

在Java中提到创建线程就要想到java.lang包下的Thead类。认识Thread类的几个构造器1)Thread():创建新的Thread对象2)Thread(String threadName):创建线程并制定线程名3)Thread(Runnable target):指定创建线程的目标对象,它实现了Runnable接口中的run方法4)Thread(Runnable target, String name):创建新的Thread对象创建线程的方法1. 继承Thread类1)定义子类

2020-09-05 12:34:41 110

原创 详解Kafka消息队列的两种模式

1. 点对点模式(一对一)1)模式特点:消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,queue中不再存储该条消息,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者消费。2)数据拉取方式:消费者主动拉取。3)模式缺点:消息不能被重复消费。2. 发布/订阅模式(一对多)1)模式特点:消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该

2020-09-03 19:05:01 330 3

原创 Kafka中消费者参数--zookeeper和--bootstrap说明

前言1)由于consumer在消费过程中可能会出现断点宕机等故障,consumer恢复后,需要从故障前的位置继续消费,所以consumer需要实时记录自己消费到了那个offset,以便故障恢复后继续消费。2)在0.11版本之前消费者消费的offset信息会记录在zookeeper,0.11(含)之后Kafka选择将消费者消费的offset信息会记录到本地Kafka集群。So–zookeeper 和 --bootstrap是对消费者offset存储位置的一个选择,目前建议使用–bootst

2020-09-03 18:44:53 281 1

原创 详解Kafka事务

Kafka从0.11版本开始引入了事务支持。事务可以保证Kafka在Exactly Once语义的基础上,生产者和消费者可以跨分区会话,要么全部成功,要么全部失败。1. Producer 事务1)为了实现跨分区跨会话的事务,需要引入一个全局唯一的 Transaction ID,并将 Producer获得的PID 和Transaction ID绑定。这样当Producer 重启后就可以通过正在进行的 Transaction ID 获得原来的 PID。2)为了管理 Transaction,Kafk

2020-09-03 15:29:23 63

原创 详解Kafka分区分配策略

前言:一个consumer group中有多个consumer,一个topic有多个partition,所以必然会涉及到partition的分配问题,即确定那个partition由哪个consumer来消费。RoundRobinRange

2020-09-03 11:12:58 77

原创 详解Kafka副本同步策略

前言:Kafka俗称消息队列,既然是消息(即数据)队列就要保证消息能完整送达。所以,为保证producer发送的数据,能可靠的到达指定的Topic,topic的每个partition收到producer收到消息后,都需要向producer发送ack确认收到,如果producer收到ack,就会进行下一轮的发送,否则重新发送数据。如下图:副本同步策略半数以上同步全同步两种同步策略优缺点对比说明: Kafka选择第二种方案,原因如下:1.同样为了容忍 n 台节点的故障,第一种方案需要

2020-09-02 12:59:28 378 6

原创 Spark----SparkCore RDD缓存

RDD通过persist方法或cache方法可以将前面的计算结果缓存,默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空间中。 但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。通过查看源码发现cache最终也是调用了persist方法,默认的存储级别都是仅在内存存储一份,Spark的存储级别还有好多种,存储级别在object StorageLevel中定义的。在存储级别的末尾加上“_2”来把持久化数据存为

2020-08-26 15:57:45 30

原创 Spark----SparkCore 如何序列化自定义RDD操作

在实际开发中我们往往需要自己定义一些对于RDD的操作,那么此时需要主要的是,初始化工作是在Driver端进行的,而实际运行程序是在Executor端进行的,这就涉及到了跨进程通信,是需要序列化的。当我们自定义一个RDD操作类的时候,通常需要在两个地方考虑序列化,分别是:传递一个方法、传递一个属性。如何传递一个方法?1、我们定义一个RDD工具类:class Search() { val query: String = "h" // 过滤出包含字符串的数据 def

2020-08-26 15:38:54 44

原创 Spark----SparkCore RDD详解

1. 什么是RDD?RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。2. RDD的属性1)一组分区(Partition),即数据集的基本组成单位2)一个计算每个分区的函数3)RDD之间的依赖关系4)一个Partitioner,即RDD的分片函数5)一个列表,存储存取每个Partition的优先位置(preferred location)3. RD

2020-08-25 09:07:46 62

原创 HBase与Hive的对比

1. Hive(1) 数据仓库Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以方便使用 HQL 去管理查询。(2) 用于数据分析、清洗Hive 适用于离线的数据分析和清洗,延迟较高。(3) 基于 HDFS、MapReduceHive 存储的数据依旧在 DataNode 上,编写的 HQL 语句终将是转换为 MapReduce 代码执行。2. HBase(1) 数据库是一种面向列族存储的非关系型数据库。(2) 用于存储

2020-08-20 13:51:40 46

原创 启动Zookeeper显示STORED,jps却没有进程

启动结果如下图,没有对应的进程:查看myid文件,发现文件内容被更改了(本来是2,结果却变成了0):参考zoo.cfg配置文件(机器对应的编号在这个文件里面),将myid里面的内容修改回来即可。...

2020-08-19 16:46:50 57

原创 Hive数据导出常用操作

前言:如何导出Hive中的数据,我接触到的有五种方式。接下来以student表为例进行介绍:1. Insert导出1.1 导出数据到本地insert overwrite local directory '/opt/bigdatacase/export_dir/student' select id,name from student;可是各个字段之间的数据都连在一起了,所以我们应该格式化导出的数据。1.2 格式化导出数据到本地insert overwrite local d

2020-08-18 09:02:03 222

原创 Hive如何分桶及抽样查询---知识详解+案例实操

Hive分桶表介绍 :分区针对的是数据的存储路径;分桶针对的是数据文件。分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区,特别是之前所提到过的要确定合适的划分大小这个疑虑。分桶是将数据集分解成更容易管理的若干部分的另一个技术。1. 数据准备分隔符为’\t’1001 liubei1002 zhangfei1003 guanyu1004 caocao1005 machao1006 huangzhong1007 simayi1008 zhugeliang10

2020-08-17 13:01:57 154

原创 Hive常用数据类型介绍

3.1 基本数据类型3.2 集合数据类型Hive有三种复杂数据类型 ARRAY、MAP和 STRUCT。ARRAY和 MAP与 Java中的Array和 Map类似,而 STRUCT与 C语言中Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。3.3 类型转换Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用 INT类型,TINYINT会自动转换为 INT类型,但是 Hive不会进行反向转化,例如,某表达式使用 T

2020-08-17 08:41:06 51

原创 图解教程--如何用JDBC访问Hive

1. 启动hiveserver2服务bin/hiveserver2它是一个阻塞进程,如下图:2. 启动beeline新开一个窗口,执行命令:bin/beeline3. 连接hiveserver2beeline> !connect jdbc:hive2://hadoop02:10000 (回车)Connecting to jdbc:hive2://hadoop02:10000Enter username for jdbc:hive2://hadoop02:10000: hado

2020-08-17 08:19:05 110

原创 Hive安装+配置元数据到MySQL最新教程

单纯的配置安装Hive并不难,但是我们安装完Hive之后需要配置元素据存储到MySQL,所以我们接下来分步走安装Hive:步骤一:安装Hive客户端步骤二(建议在root用户下操作):安装MySQL步骤三:配置MySQL步骤四:配置元数据到MySQL...

2020-08-16 15:36:48 48

原创 Hive元数据配置到MySQL

准备驱动:Hive要连接到mysql肯定需要连接驱动,所以要先准备连接驱动。链接:https://pan.baidu.com/s/1aru6ghaOQgfPxKtkavDEhg提取码:yj1t步骤如下:1.上传mysql-libs.zip到Linux /opt/software目录下2.解压mysql-libs.zipunzip mysql-libs.zip3. 进入mysql-libs目录下,并解压mysql-connector-java-5.1.27.tar.gz文件sudo t

2020-08-16 15:33:47 230

原创 Hive配置元数据到MySQL之MySQL中user表中主机配置

修改user表的原因:1)方便我们在Windows上面远程连接到Linux上的MySQL,然后查看Hive的元素据信息。2)避免Hive客户端和MySQL不在同一机器上时,因为user表中的Host字段的设置导致Hive客户端无法启动。步骤如下:1.进入MySQLmysql -u root -p2.显示数据库show databases;3.使用MySQL数据库use mysql;4.展示 mysql 数据库中的所有表show tables;5. 查询user表

2020-08-16 14:29:25 50

原创 Hive详细图解安装最新教程

机器需具备条件:1)安装好Hadoop(集群或者伪分布式都可以)2)安装好mysql(如果还没有安装后续有教程,因为并不是单纯的安装好MySQL,还需要配置一些东西)Hive下载地址:1)Hive 官网地址http://hive.apache.org/2)文档查看地址https://cwiki.apache.org/confluence/display/Hive/GettingStarted3)下载地址http://archive.apache.org/dist/hive/

2020-08-16 13:48:04 81

原创 Hive定义,优缺点,架构原理介绍

1.1 什么是HiveHive:由Facebook开源用于解决海量结构化日志的数据统计。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。Hive本质是:将HQL转化为MapReduce程序1.2 Hive优缺点1.2.1 优点1) 操作接口采用类 SQL 语法,提供快速开发的能力(简单、容易上手)。2)避免了去写 MapReduce,减少开发人员的学习成本。3)Hive 的执行延迟比较高,因此 Hive 常用于数据分析,对实时性

2020-08-16 12:05:48 66

原创 数据仓库Hive和关系型数据库的比较

由于 Hive 采用了类似 SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本节将从多个方面来阐述 Hive 和数据库的差异。数据库可以用在 Online 的应用中,但是 Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive 的特性。1.查询语言由于 SQL 被广泛的应用在数据仓库中,因此,专门针对 Hive 的特性设计了类 SQL的查询语言 .

2020-08-16 12:04:14 155

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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