原创 使用java實現一個死鎖程序

死鎖:在java語言中,死鎖是指在兩個或者兩個以上的線程執行的過程中,因爭奪資源而產生的一種互相等待的現象 同步鎖使用的弊端:當線程任務中出現了多個同步(多個鎖)時,如果同步中嵌套了其他的同步。這時容易引發一種現象:程序出現無限等待,這種

原创 數據庫的優化思路

①合理選擇數據庫引擎 ②sql語句的優化 ③索引的優化 ④分庫分表分區 ⑤預處理 ⑥讀寫分離 ⑦數據庫表結構設計 (1)儘量使用數字型字段 儘量不要設計爲字符型,這會降低查詢和連接的性能,並會增加存儲開銷。 這是因爲引擎在處理查詢和連接時

原创 redis面試題大全

啓動redis 前端模式啓動的缺點是ssh命令窗口關閉則redis-server程序結束,不推薦使用此方法 redis的概述 服務器處理數據的速度,與網站速度息息相關. 但是如果網站的訪問量非常大的時候,我們的數據庫壓力就變大了。數據庫

原创 B樹(或B-樹)和B+樹和B*樹

樹的深度過大而造成磁盤I/O讀寫過於頻繁,進而導致查詢效率低下 根據平衡二叉樹的啓發,自然就想到平衡多路查找樹結構,即B樹結構(後面,我們將看到,B樹的各種操作能使B樹保持較低的高度,從而達到有效避免磁盤過於頻繁的查找存取操作,從而有效提

原创 談談你對AtomicInteger的理解

AtomicInteger是一個提供原子操作的Integer類,通過線程安全的方式操作加減。十分適合高併發情況下的使用   對於全局變量的數值類型操作 num++,若沒有加synchronized關鍵字則是線程不安全的,num++解析爲n

原创 LongAdder和AtomicLong的區別

AtomicLong的原理是依靠底層的cas來保障原子性的更新數據,在要添加或者減少的時候,會使用自循(CLH)方式不斷地cas到特定的值,從而達到更新數據的目的。然而在線程競爭激烈的情況下,自循往往浪費很多計算資源才能達成預期效果。  

原创 線程數設多少合適

①工作線程數是不是設置的越大越好?         回答:肯定不是的         1)一來服務器CPU核數有限,同時併發的線程數是有限的,1核CPU設置10000個工作線程沒有意義         2)線程切換是有開銷的,如果線程切換

原创 java中常見的線程池

Executor接口表示線程池,它的execute(Runnable task)方法用來執行Runnable類型的任務,ExecutorService是Executor的子接口,聲明瞭管理線程池的一些方法 Java.util.concu

原创 mysql中char和varchar和text的區別

①CHAR是一種固定長度的類型,適合用在身份證號碼、手機號碼等定。,VARCHAR則是一種可變長度的類型。適合用在長度可變的屬性。 text不設置長度, 當不知道屬性的最大長度時,適合用text。 ②按照查詢速度: char最快, var

原创 mysql的分頁

mysql提供了分頁的函數limit m,n 其中m代表起始行,n代表總行數.我們還可以根據實際情況來改寫我們的分頁語句.如果只給定一個參數,表示記錄數 查詢5行記錄,起始行從0開始(即從第一行開始) SELECT * FROM emp

原创 談談你對CountDownLatch的理解

CountDownLatch是java.util.concurrent包中一個工具類。它能夠使一個或者多個線程等待另外一些線程完成各自的工作之後,再繼續執行 使用CountDownLatch的一些情景: ①需要去解析一個Excel的數據,

原创 如何實現自己的線程池

首先,在服務啓動的時候,我們可以啓動好幾個線程,並用一個容器(如線程池)來管理這些線程。當請求到來時,可以從池中取一個線程出來,執行任務(通常是對請求的響應),當任務結束後,再將這個線程放入池中備用;如果請求到來而池中沒有空閒的線程,該請

原创 終止線程的方法

在java語言中,可以使用stop()方法和suspend()方法來終止線程的執行. 當使用Thread.stop()來終止線程時,它會釋放已經鎖定的所有監視資源,具有不安全性 suspend()方法不會釋放鎖,容易發生死鎖(兩個或者兩個

原创 synchronized和Lock有什麼區別

java語言中提供了兩種鎖機制來實現對某個共享資源的同步:synchronized和Lock.其中synchronized使用Object對象本身的notify,wait和notifyAll來實現線程之間的調度.而Lock可以使用Cond

原创 併發(Concurrent)和並行(Parallel)和區別

併發 單個處理器(CPU),輪換執行多個任務,因爲輪換的速度比較快,看起來好像多個任務在同時執行一樣 並行 多個處理器(CPU),同時執行多個任務,每個任務分配在一個處理器上執行 併發就像是一個大人給兩個嬰兒餵飯,喂完這個喂那個;並行,就