Hive cli原始碼閱讀和梳理

2021-09-08 10:13:29 字數 2533 閱讀 6465

對cli的重新認識

*). hive cli有兩種模式, 本地模式: 採用持有的driver物件來處理, 遠端模式: 通過連線hiveserver來實現, 由此可見之前的架構圖中的描述還是模糊且帶有誤導性

*). 支援singal的處理支援, 比如對ctrl+c中斷, 需要兩次才完全退出互動

*). 互動式命令處理模式

原始碼閱讀

*). signal類物件的使用,singal

靜態函式 signal.handle(singal singla, singalhandler handler);

對signal函式的理解和看法, 對kill -9程式是無法捕獲這類訊號的,

runtime.getruntime().addshutdownhook()的侷限性, 會遇到sigkill訊號導致程序未能處理必要的清理工作

*). optionbuilder

推崇鏈式程式設計+builder構建模式, 確實對命令列程式而言, 是非常好的處理模式

1

//-database database

2options.addoption(optionbuilder

3.hasarg()

4 .withargname("databasename")

5 .withlongopt("database")

6 .withdescription("specify the database to use")

7 .create());

apache.common.cli解析命令列:   heipark.iteye.com/blog/1397513

antlr處理命令列解析:  www.shangxueba.com/jingyan/99359.html

*). 可互動的shell如何編寫

jline的學習和使用

對jline處理流程的看法

在windows平台下,jline通過自帶的.dll檔案初始化終端。jline.jar中包含了jline32.dll和jline64.dll,在windows平台上使用的時候, jline會自動將其解壓縮到臨時目錄並進行載入。

在unix或者max os x平台下,jline通過stty命令初始化終端。例如通過呼叫stty -icanon min 1將控制台設定為character-buffered模式。以及通過呼叫stty -echo禁止控制台回顯。在修改終端的屬性之前,jline會對終端的屬性進行備份,然後註冊乙個shutdownhook,以便在程式退出時進行恢復。由於jvm在非正常退出時(例如收到sigkill訊號)不保證shutdownhook一定會被呼叫,因此終端的屬性可能無法恢復。

*) cli的命令分類

source

list

quit/exit

! /bin/bash -c 'command'

hive的具體命令

---------------------

hive的具體命令又如下細分

#)hive session配置相關命令

#)sql相關的命令

參考url: www.cnblogs.com/ggjucheng/archive/2013/01/04/2844987.html

*). commandprocessor類層次結構

1

public

final

class

commandprocesso***ctory 45

public

inte***ce

commandprocessor 910

//errormessage & sqlstate will be set only if responsecode is not zero

11public

class

commandprocessorresponse

一批具體的實現類

setprocessor, resetprocessor...

比較特殊的是driver類, 封裝了具體的功能

*). 主邏輯迴圈

while ( (line = readline()) != null

)

*) classloader的使用方法

對類載入機制的理解和看法

blog.sina.com.cn/s/blog_5751ee0b0100g7bl.html

my.oschina.net/rouchongzi/blog/171046

blog.csdn.net/kabini/article/details/2975263

加密和安全

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...