原创 將數據從mysql導入到hive表

代碼腳本如下: #!/bin/bash # 連接mysql數據庫,並查詢結果,將結果輸出到文件中 # 1.定義連接變量 mysql_hostname='172.28.65.133' mysql_port='3306' mysql_use

原创 使用sqoop將數據定時從hive表導入MySQL

使用sqoop將數據定時從hive表導入MySQL。 話不多說,線上腳本: #!/bin/sh #*********************************************************************

原创 java高併發程序設計學習筆記九鎖的優化和注意事項

鎖優化的思路和方法: 減少鎖持有時間: 減少其他線程等待時間,只同步需要同步的相關的代碼; 減少鎖粒度: 將大對象拆成小對象,增加並行度,降低鎖競爭;     偏向鎖,輕量級鎖成功率提高; ConcurrentHashMap; 鎖分

原创 Flume對接Hive(Sink)遇到的坑,以及最終放棄hive選用hdfs。歡迎討論指點

項目中打算使用Flume把數據直接傳到Hive表而不是HDFS上,使用Hive作爲Sink,Flume版本爲1.9.0。 前期啓動遇到各種報錯: NoClassDefFoundError: org/apache/hadoop/hive/q

原创 java中jdk8的forEach()方法return血的教訓!

啊啊啊!記錄。。。 JDK8中return竟然不return了。。。   but:::   2、   兩個for循環作對比,如下:    

原创 批量導入千萬數據到Redis集羣處理方案,shell腳本處理

從hive查詢數據,使用shell腳本導入到Redis。 樣例如下: #!/bin/bash /usr/local/bin/redis-cli -h 172.28.xx.xx -a xxxxx cluster nodes | grep

原创 java高併發程序設計十併發調試和JDK8新特性

多線程調試方法: 使用eclipse的debugger,設置多線程的調試條件等,觀察; 線程dump及分析: 使用jps;jstack pid;jstack -l pid;查看dump日誌; JDK8對併發的新支持: LongAdde

原创 常用的shell啓動服務腳本/停止服務腳本

1、停止服務腳本: #! /bin/shell # 殺死進程 appName='recommend-app' pid=$(ps -ef | grep ${appName} | grep java | grep -v grep | aw

原创 深入JVM內核—原理與優化之七性能監控工具

1、系統性能監控 確實能夠系統運行的整體狀態,基本定位問題所在; uptime:系統時間、運行時間、連接數、N分鐘內系統的平均負載; top:CPU、內存、交換空間、進程佔CPU、內存佔有率等使用情況 vmstat:統計系統的CP

原创 深入JVM內核—原理與優化之八堆分析

1、內存溢出(OOM)的原因 JVM中的內存區間:堆、永久區、線程棧、直接內存 堆溢出; 方法區溢出; 棧溢出; 直接內存溢出; 2、MAT軟件使用 淺堆與深堆 顯示入引用和出引用 支配樹; 3、使用visual

原创 WEB安全測試要點總結

一、大類檢查點: 大類 細項 上傳功能 繞過文件上傳檢查功能 上傳文件大小和次數限制 註冊功能 註冊請求是否安全傳輸 註冊時密碼複雜度是否後臺檢驗 激活鏈接測試 重複註冊 批量註冊問題 登錄

原创 java高併發程序設計學習筆記五六JDK併發包

1、各種同步控制工具的使用 1.1 ReentrantLock 它是synchronized的增強版,sync功能簡單,把多餘的線程放入等待區,這些線程只能死等;寫法上有區別;synchronized也是可重入的(它擁有強制原子性的內置鎖

原创 深入JVM內核—原理與優化之六類加載器

1、class裝載驗證流程 加載: 裝載類的第一個階段; 取得類的二進制流; 轉爲方法區的數據結構; 在java堆中生成對應的java.lang.Class對象; 鏈接(驗證、準備、解析): 驗證: 目的:保證Class流

原创 深入JVM內核—原理與優化之gc參數學習

堆: 新生代+老年代; 新生代(Eden+s0+s1); 串行回收器算法: 最古老、最穩定、效率高; 可能會有較長時間的停頓; -XX:UserSerialGC - 新生代、老年代使用串行回收; -新生代複製算法; -老年代標記-

原创 Java多線程併發處理多個任務並獲取結果

使用併發包中的Callable及Future類處理。 話不多少,直接上代碼: import lombok.extern.slf4j.Slf4j; import java.util.concurrent.Callable; /**