自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 hive事务源码阅读

DbTxnManager.isTxnOpen()HiveTxnManagerImpl.acquireLocks(QueryPlan plan, Context ctx, String username, LockedDriverState lDrvState)DbTxnManager.acquireLocksWithHeartbeatDelay(QueryPlan plan, Context ...

2020-04-03 23:00:22 743

原创 ES笔记

2.1.1版本1Restful1.1建索引curl -XPUT http://172.16.114.170:8200/mr/ -d ‘{“settings”:{“index.number_of_shards”:3}}’1.2插入数据,指定路由curl -XPUT ‘http://172.16.114.170:8200/index1/type1/2?routing=12’ -d ‘{“na...

2020-03-17 19:07:35 1039

原创 IntelliJ idea创建maven项目plugins出现红线解决办法

重新下载到本地仓库下找到未下载成功的插件及对应版本删掉对应文件夹再到idea上 maven刷新按钮重新下载即可成功

2020-03-16 11:24:25 224

原创 idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题

1 删除本地仓库中所有的 _remote.repositories 文件2 不行的话,删除项目下的 .iml 文件,然后重启idea, 点击 maven 上面的刷新,就可以引用了

2020-03-16 11:12:18 8326 2

原创 hive运维

修改内存大小bin/hive-config.shexport HADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-2048}

2020-03-13 15:48:51 308

原创 Maven 编译

mvn clean package -DskipTests

2020-03-12 16:30:15 105

原创 DrillBit各个角色

UserServer处理RUN_QUERY_VALUE客户端的查询请求,会将任务分派给UserWorker处理, 由worker提交工作:显然worker要在构造UserServer的时候也一起构造出来, 这样在收到任务的时候, 确保立即有工人接手这份工作.UserServer的构造在ServiceEngine,而服务引擎是由DrillBit创建的.UserWorker是由WorkerMan...

2020-02-17 15:18:39 309

翻译 drill支持的数据类型

支持的数据类型drill具有多种类型的数据源的读写操作。SQL Data TypeDescriptionExampleBIGINT8字节有符号整数,范围为-9,223,372,036,854,775,808至9,223,372,036,854,775,8079223372036854775807BINARY可变长度字节字符串B @ e6d9eb7BOO...

2020-02-15 10:46:14 514

翻译 Drill查询复杂数据

Drill查询复杂数据简介Apache Drill查询不需要预先了解您试图访问的实际数据,无论它的源系统或模式和数据类型如何。Apache Drill的最佳点是针对复杂数据的SQL查询工作负载:由各种类型的记录和字段组成的数据,而不是可识别的关系形式的数据(离散的行和列)。当您提交查询时,Drill能够发现数据的形式。嵌套的数据格式,如JSON (JavaScript对象表示法)文件和Parq...

2020-02-14 14:32:56 263

原创 drill 查询源码

1 接收查询请求UserServerRequestHandlerhandle方法2 提交任务UserWorkersubmitWork提交作业初始化Foreman线程池执行Foreman3 执行任务Foreman是一个线程。修改线程名调用runSQL方法3.1获取物理计划DrillSqlWorker.getPlan(QueryContext context, Strin...

2020-02-14 08:48:21 278

原创 客户端启动流程

客户端启动 Demo对于客户端的启动来说,和服务端的启动类似,依然需要线程模型、IO 模型,以及 IO 业务处理逻辑三大参数,下面,我们来看一下客户端启动的标准流程public class NettyClient { public static void main(String[] args) { NioEventLoopGroup workerGroup = new ...

2020-02-08 23:23:18 821

原创 服务端启动流程

这一小节,我们来学习一下如何使用 Netty 来启动一个服务端应用程序,以下是服务端启动的一个非常精简的 Demo:public class NettyServer { public static void main(String[] args) { NioEventLoopGroup bossGroup = new NioEventLoopGroup(); ...

2020-02-08 17:41:17 701

原创 Netty 是什么?

在开始了解 Netty 是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的 IO 编程,应该如何来实现?IO编程我们简化下场景:客户端每隔两秒发送一个带有时间戳的 “hello world” 给服务端,服务端收到之后打印。为了方便演示,下面例子中,服务端和客户端各一个类,把这两个类拷贝到你的 IDE 中,先后运行 IOServer.java 和IOClie...

2020-02-06 20:51:00 129

原创 仿微信 IM 系统简介

微信从 2011 年 1 月 21 日诞生至今,已经成为国内数亿用户必不可少的即时通信工具,是男女老少手机中必备的顶级 App。Netty 是一个异步基于事件驱动的高性能网络通信框架,在互联网中间件领域网络通信层是无可争议的最强王者,两者强强联合又会擦出什么样的火花?在接下来的小节中,我将带领大家使用 Netty 一步一步实现微信 IM 聊天的核心功能。微信的聊天又分为单聊和群聊,下面分别来...

2020-02-05 21:13:16 372

原创 线程池与Executor 框架

一 使用线程池的好处线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线...

2020-02-03 21:09:58 86

原创 并发编程中一些问题

多线程就一定好吗?快吗??并发编程的目的就是为了能提高程序的执行效率提高程序运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到很多问题,比如:内存泄漏、上下文切换、死锁还有受限于硬件和软件的资源闲置问题。多线程就是几乎同时执行多个线程(一个处理器在某一个时间点上永远都只能是一个线程!即使这个处理器是多核的,除非有多个处理器才能实现多个线程同时运行)。CPU通过给每个线程...

2020-02-03 20:45:36 127

原创 Lock锁的使用

一 Lock接口1.1 Lock接口简介锁是用于通过多个线程控制对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只能有一个线程可以获取锁,并且对共享资源的所有访问都要求首先获取锁。 但是,一些锁可能允许并发访问共享资源,如ReadWriteLock的读写锁。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的。JDK1.5之后并发包中新增了Lock...

2020-02-02 21:38:09 258

原创 线程间通信知识点补充

我们通过之前几章的学习已经知道在线程间通信用到的synchronized关键字、volatile关键字以及等待/通知(wait/notify)机制。今天我们就来讲一下线程间通信的其他知识点:Thread.join()的使用、ThreadLocal的使用。一 Thread.join()的使用在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,...

2020-02-01 21:19:13 102

原创 等待/通知(wait/notify)机制

一 等待/通知机制介绍1.1 不使用等待/通知机制当两个线程之间存在生产和消费者关系,也就是说第一个线程(生产者)做相应的操作然后第二个线程(消费者)感知到了变化又进行相应的操作。比如像下面的whie语句一样,假设这个value值就是第一个线程操作的结果,doSomething()是第二个线程要做的事,当满足条件value=desire后才执行doSomething()。 while(...

2020-02-01 20:12:40 508

原创 volatile关键字

一 简介在 JDK1.2 之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,就需要把变量声明为 volatile...

2020-01-30 21:49:45 109

原创 synchronized关键字

synchronized同步方法一 简介Java并发编程这个领域中synchronized关键字一直都是元老级的角色,很久之前很多人都会称它为“重量级锁”。但是,在JavaSE 1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后变得在某些情况下并不是那么重了。二 变量安全性“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量...

2020-01-14 22:38:40 124

原创 Java多线程入门

一 进程和多线程简介1.1 进程和线程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,...

2020-01-13 16:55:59 58

原创 logback的使用

依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> &...

2020-01-10 22:37:46 113

原创 maven pom中scope详解

名称含义compile默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。testscope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。runntimerunnt...

2020-01-09 17:03:49 134

原创 Java Ant Build详解

1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台 --因为ant是使用java实现的,所以它跨平台使用简单–与ant的兄弟make比起来语法清晰–同样是和make相比功能强大–ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。...

2019-12-19 14:41:36 4937

原创 java连接ZK的基本操作

连接ZK,并进行基本的操作package com; import java.util.List;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.z...

2019-12-18 08:50:37 584

原创 JVM相关

1 概述对于Java程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为一个new操作去写对应的delete/free操作,不容易出现内存泄漏和内存溢出问题。正是因为Java程序员把内存控制权力交给Java虚拟机,一旦出现内存泄漏和溢出方便的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。2 运行时数据区域Java虚拟机在执行Java...

2019-12-01 22:18:49 69

转载 代理模式

代理代理是英文Proxy翻译过来的。我们在生活中见到的代理,最常见的就是朋友圈中买面膜的同学了。他们从厂商拿货,然后在朋友圈中宣传,然后卖给熟人。代理模式以上上常见代理模式的UML示意图。需要注意的有下面几点:用户只关心接口功能,而不在乎谁提供了功能。上图中接口是Subject。接口真正实现者是上图的RealSubject,但是它不与用户直接接触,而是通过代理。代理就是上图中的P...

2019-11-27 22:32:10 117

原创 bat脚本

批处理读取配置文件配置文件config.txtPATH_CODE=D:\code\PATH_BIN=D:\tools\@echo offfor /f "tokens=1,2 delims==" %%i in (config.txt) do ( set %%i=%%j)echo %PATH_CODE%\resecho %PATH_BIN%\binrem orset conf...

2019-11-25 10:57:10 162

原创 亨元模式

亨元模式介绍亨元模式适用场景面向对象技术可以很好的解决一些灵活性或可拓展性的问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致对象创建及垃圾回收的代价过高,造成性能下降等问题。亨元模式通过共享相同或者类似的细粒度对象解决这一类问题。亨元模式定义亨元模式(Flyweight Pattern),又称轻量级模式(这也是其英文名FlyWeight的原因),通过共享技术有效...

2019-11-24 21:04:34 219

原创 Java GC过程

判断对象是否需要被删除GCRoot被栈、本地方法栈、方法区直接或间接引用的对象判断方法标记-清理缺点:产生内存碎片标记-整理缺点:代价大复制缺点:需要两倍的内存分代(对象朝生暮死)yong区:S0、S1、E(比例:1:1:8)、采用复制的方式old区: 存放 yong GC6次之后还存在的对象、大对象(一千万大小的int数组),采用标记-清理或标记-整理的方式垃圾收集...

2019-11-24 20:20:09 95

原创 IDEA 常用设置

自动生成序列化IDFile -> Settings -> Editor -> Inspections -> 搜索 Serialization issues ,找到 Serializable class without 'serialVersionUID' ->打上勾,Apply->OK

2019-11-20 09:37:08 57

原创 外观模式

针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面简单的介绍一下。概念介绍外观模式(Facade),它隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构型模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。二、角色及使用场景简单来说,该模式就是把一些复杂的流程封装成一个接口给外部用户更简单的使用。...

2019-11-13 22:05:07 72

原创 Guava之Stopwatch

Guava之Stopwatch 计时器Stopwatch用来计算经过的时间(精确到纳秒)。这个类比调用System.nanoTime()优势在于:性能表现形式更丰富一、类声明以下是 com.google.common.base.Stopwatch 类的声明:public final class Stopwatch extends Object二、类方法方法类型方法...

2019-11-11 23:05:19 3684

原创 装饰者模式

装饰者模式1、意图动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。该模式以对客户端透明的方式拓展对象的功能。2、适用环境在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。处理那些可以撤销的职责。当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。...

2019-11-07 23:00:53 67

原创 hive-metastore结构

Hive MetaStore数据库表结构图TBLS记录数据表的信息字段解释TBL_ID在hive中创建表的时候自动生成的一个id,用来表示,主键CREATE_TIME创建的数据表的时间,使用的是时间戳DBS_ID这个表是在那个数据库里面LAST_ACCESS_TIME最后一次访问的时间戳OWNER数据表的所有者RETENTIO...

2019-11-07 14:17:11 1430

原创 Druid连接池

一、相关配置参数名Druid默认值说明name无配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分,如果没有配置,将会生成一个名字,格式是:“DataSource-”+System.identityHashCode(this).另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错。url无连接数据库的url,不同数据库...

2019-11-07 09:51:08 2710

原创 组合模式

基本概念组合模式(Composite Pattern),又叫本分整体模式,是用于把一组相似的对象当做一个单一的对象。**组合模式依据树形结构来组合对象,用来表示部分以及整体层次。**这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。大话设计模式中程杰老师给出的定义是,组合模式:将对象组合成树形结构以表示“部分-整体...

2019-11-06 22:17:10 158

原创 Guava

Guava LoadingCache

2019-11-04 16:05:18 207

原创 桥接模式

一 桥接模式的内容桥接模式(Bridge Pattern):将抽象部分与它的实际部分分离,使它们都可以独立的变化。它是一种对象结构型模式,又称为炳体(Handler and Body)模式或接口(Interface)模式。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量。桥接模式的用意【GOF95】在提出桥接模式的时候指出,桥梁模式的用意是“将抽象化(Abst...

2019-10-30 21:07:47 395

空空如也

空空如也

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

TA关注的人

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