原创 Oracle SQL 之 分析函數(窗口函數)

概述分析函數是以一定的方法在一個與當前行相關的結果子集中進行計算,也稱爲窗口函數。一般結構爲:Function(arg1 , arg2 ……) over(partition by clause order by clause window

原创 JVM內存結構,JAVA類的加載機制,GC算法,垃圾收集器

一、什麼是類的加載 類的加載指的是將類的.class文件中的二進制數據讀入到內存中,將其放在運行時數據區的方法區內,然後在堆區創建一個 java.lang.Class對象,用來封裝類在方法區內的數據結構。類的加載的最終產品是位於堆區中的

原创 JAVA特性 之 反射(Reflection)

什麼是反射?反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱爲java語言的反射機制。用一句話總結就是反射可以實

原创 JAVA NETTY 心跳檢測

使用Socket通信一般經常用來處理多個服務器之間的心跳檢測,一般來講去維護服務器集羣,肯定有一臺或幾臺服務器主機Master,還應該有n臺Slave。Master常常需要知道自己下面從服務器的各方面情況,進行實時監控,這在分佈式架構裏叫

原创 JAVA併發編程 之 LMAX Disruptor使用實例(高效解決生產者與消費者問題)

什麼是Disruptor?Disruptor是一個開源的JAVA框架,它被設計用於在生產者—消費者(producer-consumer problem,簡稱PCP)問題上獲得儘量高的吞吐量(TPS)和儘量低的延遲。Disruptor是LM

原创 linux(CentOS 7)虛擬機配置連接外網

一、首先我們需要確定本地電腦可以連接外網,配置之前需要把虛擬機的連接方式改爲橋接,然後打開安裝的虛擬機。 二、執行命令ifconfig 查看當前虛擬機的IP,默認系統是自動獲取的。 三、因爲本地電腦是配置的靜態地址上網,所以需要修改網

原创 Spring boot Maven找不到spring-boot-starter-log4j2 JAR包問題,使用slf4j的logback輸出日誌

一、問題描述把Springboot版本升級了下,運行發現報了這樣一個錯誤:'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter

原创 JAVA多線程之Future模式

Future模式有點類似於商品訂單。比如在網購時,當看中某一個商品時,就可以提交訂單,當訂單處理完成後,在家裏等待商品送貨上門即可。或者說更形象的我們發送Ajax請求的時候,頁面是異步的進行後臺處理,用戶無需一直等待請求的結果,可繼續瀏覽

原创 Java 網絡IO編程 之 BIO、NIO、AIO 的用法與實現

一、BIO 編程1、傳統的BIO編程網絡編程的基本模型是C/S模型,即兩個進程間的通信。服務端提供IP和監聽端口,客戶端通過連接操作想服務端監聽的地址發起連接請求,通過三次握手連接,如果連接成功建立,雙方就可以通過套接字進行通信。傳統的同

原创 Java GC 分析,JVM生產環境參數實例及分析,JVM詳細配置

什麼是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)機制,是Java與C++/C的主要區別之一,作爲Java開發者,一般不需要專門編寫內存回收和垃圾清理代碼,對內存泄露和溢出的問題,也不需要像

原创 Linux(CentOS 7) 安裝 Tomcat8 及 JDK1.8配置

一、使用wget方式 wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.4/bin/apache-tomcat-8.5.4.tar.gz wget

原创 Java 網絡編程 之 socket 的用法與實現

一、概念TCPTCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETF的RFC 793定義。在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定

原创 JAVA併發編程 之 Lock 與 Synchronized 的比較和應用 及 鎖機制

synchronized是java中的一個關鍵字,也就是說是Java語言內置的特性。那麼爲什麼會出現Lock呢?synchronized 的侷限性 與 Lock 的優點如果一個代碼塊被synchronized關鍵字修飾,當一個線程獲取了對

原创 多線程 - 生產者與消費者

生產者與消費者在線程世界裏,生產者就是生產數據的線程,消費者就是消費數據的線程。在多線程開發當中,如果生產者處理速度很快,而消費者處理速度很慢,那麼生產者就必須等待消費者處理完,才能繼續生產數據。同樣的道理,如果消費者的處理能力大於生產者

原创 JAVA基礎 之 泛型詳解

一、概述什麼是泛型?爲什麼要使用泛型?泛型,即“參數化類型”。一提到參數,最熟悉的就是定義方法時有形參,然後調用此方法時傳遞實參。那麼參數化類型怎麼理解呢?顧名思義,就是將類型由原來的具體的類型參數化,類似於方法中的變量參數,此時類型也定