原创 Java 併發編程 基礎 一

1、同步 和 異步 同步 和 異步描述方法的調用。 同步:方法調用一旦開始,調用者必須等到方法調用返回後,才能繼續後續的行爲。 串行的進行方法的調用。 異步方法調用更像一個消息傳遞,一旦方法調用就會立即返回。 2、併發和並行

原创 Java併發編程 希爾排序

1、插入排序 插入排序是一種很常用的排序算法。它的基本思想是:一個未排序的數據分成兩部分,前半部是已經排序的,後半部分是未排序的。在進行排序時,只需要在未排序的部分中選擇一個元素,將其插入到前面有序的數組中即可。最終未排序的部分會

原创 Java併發 基礎 二

1 、線程中斷: 線程中斷是一種重要的線程協作機制。線程中斷並不會讓線程退出,只是給線程發送一個通知,線程執行過程會檢測到這個通知,然後可以自定義做出動作,比如退出,但也並不是都是退出。 線程中有三個有關中斷的方法: public

原创 ScheduledExecutorService 中兩個方法

這個是用來執行計劃任務的。 有兩個方法 public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,

原创 java 虛擬機 類加載

java 虛擬機 類加載 類從被加載到虛擬機內存開始,到卸載出內存爲止,整個生命週期包括:加載、驗證、準備、解析、初始化、使用和卸載。 驗證 、準備、解析 統稱爲連接。 解析發生的階段並不固定,它可能發生初始化之後。 虛擬機

原创 Oracle 硬解析和軟件解析

硬解析: Oracle在執行目標sql時,在庫緩存中找不到可以重用的解析樹和執行計劃,而不得不從開始解析目標sql並生成相應的Parent Cursor 和Child Cursor的過程。 Oracle 在庫緩存中找不到Paren

原创 java虛擬機 運行時數據區域

運行時數據區域如圖: 下面介紹各個區域: 程序計數器: 程序計數器是java虛擬機內存中較小的一塊內存區域。它可以是當前線程所執行的字節碼的行號指示器。在虛擬機的概念模型裏,字節碼解釋器工作時就是通過改變程序計數器的值來選取下一

原创 Java 併發編程 同步控制 三

1、 重入鎖 ReentrantLock synchronized 的重入鎖: ReentrantLock。 重入鎖需要手動進行加鎖和解鎖: lock 和unlock。 public class ReentrantLock

原创 在java虛擬機中對象的創建過程

虛擬機遇到一條new指令時,首先將去檢查這個指令的參數是否能在常量池中定位到一個類的符號引用,並且檢查這個符號引用代表的類是否已經被加載、解析和初始化過。如果沒有,那麼必須先執行相應的類加載過程。 在類加載檢查通過後,接下來虛擬機

原创 Oracle 庫緩存 和shared Cursor (下)

Shared Cursor是Oracle庫緩存對象中的一種。 是指緩存在庫緩存裏的sql語句和匿名sql語句所對應的庫緩存對象。 Shared Cursor 會存儲目標sql的sql執行文本、解析樹、該sql所涉及的對象定義、該

原创 Java 併發編程 四 協作

## 1、ReadWriteLock讀寫鎖 概念很好理解,下面是代碼: package com.test.thread3; import java.util.Random; import java.util.concurren

原创 Oracle Session Cursor

Session Cursor 是Oracle數據庫裏的第二種類型的Cursor,它當前Session解析和執行sql載體。Session Cursor緩存在PGA中,Shared 緩存在SGA中。 Session Cursor和

原创 JDK中的線程池 :工作隊列和拒絕策略 上

JDK 可以創建使用Executors 創建5種類型的線程池 Executors.newCachedThreadPool(); 該方法返回一個可根據實際情況調整線程數量的線程池。線程池的線程數量不確定,但若有空閒線程可以複用,則

原创 java 內存分配策略

1 對象優先在新生代Eden區中進行分配,當Eden區沒有足夠空間進行分配時,虛擬機進行一次Minor GC 2 大對象直接進入老年代 所謂大對象就是需要大量連續內存空間的java對象,最典型的大對象就是很長的字符串以及數

原创 Oracle 查詢轉換 (下)

星型轉換 星型轉換是Oracle用來處理星型連接優化的一種手段。 星型連接(star join)並不是一種額外的連接類型,它是一種單個事實表 (fact table) 和多個維度表(Dimension table)之間的連接。