原创 多線程的面試題解答(一)

今天看到這篇文章 http://ifeve.com/javaconcurrency-interview-questions-base/ 嘗試解答一下里面的問題,陸續更新。 1 Java中有幾種方法可以實現一個線程 1.實現runna

原创 自學Spring WebFlux(一)

一、什麼是響應式編程(Reactive Progarmming) ​響應式編程(Reactive Progarmming)是一種面向數據流和變化傳播的編程範式。   響應式編程主要處理二個問題: 1、異步非阻塞 2、流速控制   Reac

原创 RxJava-創建操作符

1、RxJava的主要創建操作符 操作符 描述 just 將一個或多個對象轉換成發射這個或這些對象的一個Observable from 將一個Iterable、Future或者一個數組轉換成一個Observable create 使用一個

原创 多線程的面試題解答(二)

1.什麼是可重入鎖ReentrantLock          線程可以進入任何一個它已經擁有鎖同步的代碼塊。同一個線程,外層函數獲取鎖後,內層仍然有獲取該鎖的代碼。ReentrantLock還提供了中斷鎖和定時鎖等待。 2.當一個線

原创 散列表

散列表就是數組+鏈表的模式,可以用於快速查找,緩存,避免重複 衝突,如果發生衝突,運行時間會是O(n),但是避免了衝突,運行時間則會是O(1),所以我們應該儘量避免衝突。 如何避免衝突: 較低的填裝因子,正常0.7爲最佳 良好的散

原创 選擇排序

選擇排序每次查找元素的最大值/最小值。 運行時間是n*n-1*n-2...*2*1 即O(n2),忽略常量 /** * @author: krauser * @date: Create in 下午10:07 2017/12/27

原创 二分法

二分法必須操作有序的元素列表 最多查詢log2N次 /** * @author: krauser * @date: Create in 下午6:13 2017/12/27 * @Description: 二分法 最多查詢次數log

原创 BIO、NIO、AIO的理解

先談談我對同步 異步 阻塞 非阻塞的認識: 同步:Client端發送請求,等待結果返回 eg: 小明去買東西,去超市買回來,東西買沒買到,立即知道結果 異步:Client端發送請求,不等待結果返回,(後續等Server端通知等) eg

原创 Maven私服Nexus的搭建和使用(Mac)

1.下載對應的安裝包https://www.sonatype.com/oss-thank-you-mac-tgz 注意:目前的版本有2.X 和 3

原创 快速排序

快速排序,先找到對比數據,然後遍歷其它元素,大於對比數據的放到more集合,小於對比數據的放到less集合,再對more集合和less集合排序 最大運行時間O(n2) 平均運行時間O(nlogn) 數據量很大的情況下,快速排序是災難性的,

原创 kettle的入門

kettle是一個用java寫的開源ETL工具,工作中用到了,分享一下使用 安裝: 下載解壓即可: 下載地址  https://nchc.dl.sourceforge.net/project/pentaho/Data%20Inte

原创 數組和鏈表的理解和運行時間分析

說一下存儲數據的二種基本方式:數組和鏈表 內存結構: 數組和鏈表的原理: 數組會先在內存中分配空間,插入和刪除元素,都會造成其它元素的重新排列,當然插入元素可以通過預留空間來處理,但是這樣會造成內存的浪費,如果預留空間不夠,你還是

原创 【求教】關於volatile關鍵字修飾對象型和數組的問題

各位大神,請教一個問題,我今天在sonar上看到一個報警,非基礎字段不建議用volatile修飾,內容如下:   我看網上的解釋是volatile只是確保對象的引用地址可見。對象的成員變量是不可見的 參考:https://blog.cs

原创 RxJava的一次業務嘗試

public ResultDTO makeStrategy(MakeDecisionDTO makeDecisionDTO) { final long current = System.currentTimeMill

原创 RxJava的線程操作

1、Scheduler RxJava是一個爲了異步編程而實現的庫,默認情況下,RxJava只在當前線程中運行,它是單線程的,此時Observable用於發射數據流,Observer用於接收和響應數據流,各種操作符(Operators)用於