- 博客(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
786
原创 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
1092
原创 IntelliJ idea创建maven项目plugins出现红线解决办法
重新下载到本地仓库下找到未下载成功的插件及对应版本删掉对应文件夹再到idea上 maven刷新按钮重新下载即可成功
2020-03-16 11:24:25
244
原创 idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题
1 删除本地仓库中所有的 _remote.repositories 文件2 不行的话,删除项目下的 .iml 文件,然后重启idea, 点击 maven 上面的刷新,就可以引用了
2020-03-16 11:12:18
8560
2
原创 hive运维
修改内存大小bin/hive-config.shexport HADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-2048}
2020-03-13 15:48:51
317
原创 DrillBit各个角色
UserServer处理RUN_QUERY_VALUE客户端的查询请求,会将任务分派给UserWorker处理, 由worker提交工作:显然worker要在构造UserServer的时候也一起构造出来, 这样在收到任务的时候, 确保立即有工人接手这份工作.UserServer的构造在ServiceEngine,而服务引擎是由DrillBit创建的.UserWorker是由WorkerMan...
2020-02-17 15:18:39
321
翻译 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
542
翻译 Drill查询复杂数据
Drill查询复杂数据简介Apache Drill查询不需要预先了解您试图访问的实际数据,无论它的源系统或模式和数据类型如何。Apache Drill的最佳点是针对复杂数据的SQL查询工作负载:由各种类型的记录和字段组成的数据,而不是可识别的关系形式的数据(离散的行和列)。当您提交查询时,Drill能够发现数据的形式。嵌套的数据格式,如JSON (JavaScript对象表示法)文件和Parq...
2020-02-14 14:32:56
309
原创 drill 查询源码
1 接收查询请求UserServerRequestHandlerhandle方法2 提交任务UserWorkersubmitWork提交作业初始化Foreman线程池执行Foreman3 执行任务Foreman是一个线程。修改线程名调用runSQL方法3.1获取物理计划DrillSqlWorker.getPlan(QueryContext context, Strin...
2020-02-14 08:48:21
292
原创 客户端启动流程
客户端启动 Demo对于客户端的启动来说,和服务端的启动类似,依然需要线程模型、IO 模型,以及 IO 业务处理逻辑三大参数,下面,我们来看一下客户端启动的标准流程public class NettyClient { public static void main(String[] args) { NioEventLoopGroup workerGroup = new ...
2020-02-08 23:23:18
844
原创 服务端启动流程
这一小节,我们来学习一下如何使用 Netty 来启动一个服务端应用程序,以下是服务端启动的一个非常精简的 Demo:public class NettyServer { public static void main(String[] args) { NioEventLoopGroup bossGroup = new NioEventLoopGroup(); ...
2020-02-08 17:41:17
718
原创 Netty 是什么?
在开始了解 Netty 是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的 IO 编程,应该如何来实现?IO编程我们简化下场景:客户端每隔两秒发送一个带有时间戳的 “hello world” 给服务端,服务端收到之后打印。为了方便演示,下面例子中,服务端和客户端各一个类,把这两个类拷贝到你的 IDE 中,先后运行 IOServer.java 和IOClie...
2020-02-06 20:51:00
136
原创 仿微信 IM 系统简介
微信从 2011 年 1 月 21 日诞生至今,已经成为国内数亿用户必不可少的即时通信工具,是男女老少手机中必备的顶级 App。Netty 是一个异步基于事件驱动的高性能网络通信框架,在互联网中间件领域网络通信层是无可争议的最强王者,两者强强联合又会擦出什么样的火花?在接下来的小节中,我将带领大家使用 Netty 一步一步实现微信 IM 聊天的核心功能。微信的聊天又分为单聊和群聊,下面分别来...
2020-02-05 21:13:16
383
原创 线程池与Executor 框架
一 使用线程池的好处线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线...
2020-02-03 21:09:58
93
原创 并发编程中一些问题
多线程就一定好吗?快吗??并发编程的目的就是为了能提高程序的执行效率提高程序运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到很多问题,比如:内存泄漏、上下文切换、死锁还有受限于硬件和软件的资源闲置问题。多线程就是几乎同时执行多个线程(一个处理器在某一个时间点上永远都只能是一个线程!即使这个处理器是多核的,除非有多个处理器才能实现多个线程同时运行)。CPU通过给每个线程...
2020-02-03 20:45:36
136
原创 Lock锁的使用
一 Lock接口1.1 Lock接口简介锁是用于通过多个线程控制对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只能有一个线程可以获取锁,并且对共享资源的所有访问都要求首先获取锁。 但是,一些锁可能允许并发访问共享资源,如ReadWriteLock的读写锁。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的。JDK1.5之后并发包中新增了Lock...
2020-02-02 21:38:09
307
原创 线程间通信知识点补充
我们通过之前几章的学习已经知道在线程间通信用到的synchronized关键字、volatile关键字以及等待/通知(wait/notify)机制。今天我们就来讲一下线程间通信的其他知识点:Thread.join()的使用、ThreadLocal的使用。一 Thread.join()的使用在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,...
2020-02-01 21:19:13
111
原创 等待/通知(wait/notify)机制
一 等待/通知机制介绍1.1 不使用等待/通知机制当两个线程之间存在生产和消费者关系,也就是说第一个线程(生产者)做相应的操作然后第二个线程(消费者)感知到了变化又进行相应的操作。比如像下面的whie语句一样,假设这个value值就是第一个线程操作的结果,doSomething()是第二个线程要做的事,当满足条件value=desire后才执行doSomething()。 while(...
2020-02-01 20:12:40
542
原创 volatile关键字
一 简介在 JDK1.2 之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,就需要把变量声明为 volatile...
2020-01-30 21:49:45
115
原创 synchronized关键字
synchronized同步方法一 简介Java并发编程这个领域中synchronized关键字一直都是元老级的角色,很久之前很多人都会称它为“重量级锁”。但是,在JavaSE 1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后变得在某些情况下并不是那么重了。二 变量安全性“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量...
2020-01-14 22:38:40
140
原创 Java多线程入门
一 进程和多线程简介1.1 进程和线程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,...
2020-01-13 16:55:59
67
原创 logback的使用
依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> &...
2020-01-10 22:37:46
124
原创 maven pom中scope详解
名称含义compile默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。testscope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。runntimerunnt...
2020-01-09 17:03:49
145
原创 Java Ant Build详解
1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台 --因为ant是使用java实现的,所以它跨平台使用简单–与ant的兄弟make比起来语法清晰–同样是和make相比功能强大–ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。...
2019-12-19 14:41:36
5203
原创 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
600
原创 JVM相关
1 概述对于Java程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为一个new操作去写对应的delete/free操作,不容易出现内存泄漏和内存溢出问题。正是因为Java程序员把内存控制权力交给Java虚拟机,一旦出现内存泄漏和溢出方便的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。2 运行时数据区域Java虚拟机在执行Java...
2019-12-01 22:18:49
73
转载 代理模式
代理代理是英文Proxy翻译过来的。我们在生活中见到的代理,最常见的就是朋友圈中买面膜的同学了。他们从厂商拿货,然后在朋友圈中宣传,然后卖给熟人。代理模式以上上常见代理模式的UML示意图。需要注意的有下面几点:用户只关心接口功能,而不在乎谁提供了功能。上图中接口是Subject。接口真正实现者是上图的RealSubject,但是它不与用户直接接触,而是通过代理。代理就是上图中的P...
2019-11-27 22:32:10
127
原创 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
175
原创 亨元模式
亨元模式介绍亨元模式适用场景面向对象技术可以很好的解决一些灵活性或可拓展性的问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致对象创建及垃圾回收的代价过高,造成性能下降等问题。亨元模式通过共享相同或者类似的细粒度对象解决这一类问题。亨元模式定义亨元模式(Flyweight Pattern),又称轻量级模式(这也是其英文名FlyWeight的原因),通过共享技术有效...
2019-11-24 21:04:34
242
原创 Java GC过程
判断对象是否需要被删除GCRoot被栈、本地方法栈、方法区直接或间接引用的对象判断方法标记-清理缺点:产生内存碎片标记-整理缺点:代价大复制缺点:需要两倍的内存分代(对象朝生暮死)yong区:S0、S1、E(比例:1:1:8)、采用复制的方式old区: 存放 yong GC6次之后还存在的对象、大对象(一千万大小的int数组),采用标记-清理或标记-整理的方式垃圾收集...
2019-11-24 20:20:09
103
原创 IDEA 常用设置
自动生成序列化IDFile -> Settings -> Editor -> Inspections -> 搜索 Serialization issues ,找到 Serializable class without 'serialVersionUID' ->打上勾,Apply->OK
2019-11-20 09:37:08
63
原创 外观模式
针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面简单的介绍一下。概念介绍外观模式(Facade),它隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构型模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。二、角色及使用场景简单来说,该模式就是把一些复杂的流程封装成一个接口给外部用户更简单的使用。...
2019-11-13 22:05:07
79
原创 Guava之Stopwatch
Guava之Stopwatch 计时器Stopwatch用来计算经过的时间(精确到纳秒)。这个类比调用System.nanoTime()优势在于:性能表现形式更丰富一、类声明以下是 com.google.common.base.Stopwatch 类的声明:public final class Stopwatch extends Object二、类方法方法类型方法...
2019-11-11 23:05:19
3800
原创 装饰者模式
装饰者模式1、意图动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。该模式以对客户端透明的方式拓展对象的功能。2、适用环境在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。处理那些可以撤销的职责。当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。...
2019-11-07 23:00:53
72
原创 hive-metastore结构
Hive MetaStore数据库表结构图TBLS记录数据表的信息字段解释TBL_ID在hive中创建表的时候自动生成的一个id,用来表示,主键CREATE_TIME创建的数据表的时间,使用的是时间戳DBS_ID这个表是在那个数据库里面LAST_ACCESS_TIME最后一次访问的时间戳OWNER数据表的所有者RETENTIO...
2019-11-07 14:17:11
1602
原创 Druid连接池
一、相关配置参数名Druid默认值说明name无配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分,如果没有配置,将会生成一个名字,格式是:“DataSource-”+System.identityHashCode(this).另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错。url无连接数据库的url,不同数据库...
2019-11-07 09:51:08
2980
原创 组合模式
基本概念组合模式(Composite Pattern),又叫本分整体模式,是用于把一组相似的对象当做一个单一的对象。**组合模式依据树形结构来组合对象,用来表示部分以及整体层次。**这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。大话设计模式中程杰老师给出的定义是,组合模式:将对象组合成树形结构以表示“部分-整体...
2019-11-06 22:17:10
171
原创 桥接模式
一 桥接模式的内容桥接模式(Bridge Pattern):将抽象部分与它的实际部分分离,使它们都可以独立的变化。它是一种对象结构型模式,又称为炳体(Handler and Body)模式或接口(Interface)模式。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量。桥接模式的用意【GOF95】在提出桥接模式的时候指出,桥梁模式的用意是“将抽象化(Abst...
2019-10-30 21:07:47
421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人