原创 java線程池原理--如何實現線程和任務分離,並保證線程在一定時間內不銷燬的?

先說下結論: 如何實現線程和任務分離呢? 線程和任務都是實現了Runnable接口的類,不同的是,扮演線程的類通過start()方法創建線程並執行其中的run()方法,而扮演任務的類則不會調用start()方法,在線程的run()方法中能

原创 靜態內部類實現單例模式以及不需要顯式使用鎖的原因

先說結論: 靜態內部類實現單例模式,是藉助了類加載器加載類的特性實現的,類加載器在加載類時使用了synchronized關鍵字. 單例模式代碼: public class SingletonDemo { public stat

原创 哲學家就餐問題的解決(java實現)

前言: 生產者-消費者模型和哲學家就餐問題是多線程中比較經典的兩個問題.通過這兩個問題,可以很好地瞭解和實踐下java多線程的基礎知識. 哲學家就餐問題: 有五個哲學家,他們的生活方式是交替地進行思考和進餐。他們共用一張圓桌,分別坐在五張

原创 生產者消費者模型的五種實現(java)

前言 生產者和消費者問題是線程模型中的經典問題:生產者和消費者在同一時間段內共用同一個存儲空間,生產者往存儲空間中添加產品,消費者從存儲空間中取走產品,當存儲空間爲空時,消費者阻塞,當存儲空間滿時,生產者阻塞。現在用四種方式來實現生產者消

原创 git cherry-pick詳解

對於多分支的代碼庫,將代碼從一個分支轉移到另一個分支是常見需求。 這時分兩種情況。一種情況是,你需要另一個分支的所有代碼變動,那麼就採用合併(git merge)。另一種情況是,你只需要部分代碼變動(某幾個提交),這時可以採用 Cherr

原创 快速排序-挖坑填數+分治法

快速排序是C.R.A.Hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其爲分治法(Divide-and-ConquerMethod)。 該方法的基本思想是: 1.先從數列中取出一個數作爲基準數。 2.分區過程,

原创 Double的MIN_VALUE和Integer的MIN_VALUE

Integer的MIN_VALUE是:-2147483648 MAX_VALUE是:2147483647 Integer的源碼: /** * A constant holding the minimum value an {@

原创 Java語言中:float、double數據類型在內存中是如何存儲的

java語言中,float類型數字在計算機中用4個字節(32位)來存儲。double類型佔用8個字節(64位)。 從存儲結構和算法上來講,double和float是一樣的,不一樣的地方僅僅是float是32位的,double是64位的,所

原创 java基礎數據類型大小

可以通過基礎類型對應的包裝類獲取基礎類型的大小,如char,可以查看Character類:   /** * The number of bits used to represent a {@code char} va

原创 Google Protocol Buffer 的使用和原理(c++)

簡介 什麼是 Google Protocol Buffer? 假如您在網上搜索,應該會得到類似這樣的文字介紹: Google Protocol Buffer( 簡稱 Protobuf) 是 Google 公司內部的混合語言數據標準,目前已

原创 BI、數據倉庫、ETL、大數據開發工程師有什麼區別?

一味的解釋 數據倉庫 概念可能沒意思,我們從不同角色出發吧 老闆 :我是一家手機公司的老闆,今天要向去董事局彙報,我要準備一份介紹過去三年的用戶增長、用戶留存、用戶活躍度、手機裏面每個APP使用率等情況的報表,假如下面沒我下面沒有BI,那

原创 jconsole本地連接失敗(linux)

本地運行java程序,然後打開一個shell,輸入jconsole: 選中要連接的程序,如圖中的CpuTest,然後點擊Connect按鈕,然後連接失敗,重新連接,還是失敗. 後經排查發現是因爲本地的java是14,程序使用的是11,將

原创 剛剛安裝完mysql就提示密碼過期!

mysql 5.7.14安裝完後登陸報錯,意思是密碼過期 [root@mysql]# mysql -u root -p Enter password: ERROR 1862 (HY000): Your password has ex

原创 漫畫算法:什麼是外部排序?

背景 西天取經的路上,一樣上演着編程的樂趣.....   排序的時候我們可以選擇快速排序或歸併排序等算法。爲了方便,我們把排序好的2G有序數據稱之爲有序子串吧。接着我們可以把兩個小的有序子串合併成一個大的有序子串。   注意

原创 SpringBoot集成MyCat

什麼是Mycat   MyCat是一個開源的分佈式數據庫系統,前端用戶可以把它看作是一個數據庫代理。其實現的核心原理是“攔截” 。Myacat攔截用戶發送過來的Sql語句,做一些特定的分析:如分片分析,路由分 析,讀寫分析,讀寫分離分析。