原创 K-D樹、K-D-B樹、B-K-D樹

K-D樹在維基百科上定義是將K維空間中的點進行分割的數據結構,D是dimensional(維度)的縮寫,K-D樹是BSP(Binary Space Partitioning)的一種。 維基百科的解釋很正式(看的迷迷糊糊)。簡單的說

原创 Java多線程複習與鞏固(七)--任務調度線程池ScheduledThreadPoolExecutor

前篇:《Java多線程複習與鞏固(六)–線程池ThreadPoolExecutor詳解》 1. 爲什麼要使用ScheduledThreadPoolExecutor 在《Java多線程複習與鞏固(二)–線程相關工具類Timer和Th

原创 A Java Fork/Join Framework

原文鏈接:A Java Fork/Join Framework(PDF) - Doug Lea 基於併發編程網 – ifeve.com上 Alex/蕭歡 翻譯、方騰飛 校對的譯文稿:Java Fork Join 框架 譯文發

原创 ssl證書申請以及nginx證書的配置

準備知識 SSL/TLS:這兩個分別是Secure Socket Layer(安全套接字層),Transport Layer Security(傳輸層安全)的縮寫。TLS是SSL的繼承者,如果不是搞安全的專業人員,完全可以認爲

原创 位運算的奇技淫巧:Bit Twiddling Hacks

原文名:Bit Twiddling Hacks 原文地址:http://graphics.stanford.edu/~seander/bithacks.html 作者:Sean Eron Anderson, seander@cs

原创 ES6學習筆記-var,let,const

var,let和const ES6新增了let關鍵字用於聲明變量,用法上和var類似,這裏列舉一些兩者的區別。 let與var區別 let聲明的變量只在它所在的代碼塊內有效: 因爲上面的特性,所以let很適合在for循環中做計數

原创 阿里,優秀開發速來,投至[email protected]

座標:杭州-餘杭-西溪園區 職位:Java高級開發工程師 待遇:20~30K,13~20薪 要求: Java基礎紮實,熟悉常見的數據結構 對Spring、MyBatis、SpringBoot有深入瞭解 對MySQL有深入瞭解,對索引、事務

原创 分庫分表的一些思考

分庫分表這個技術在之前一家公司其實也有接觸。上一家公司在業務上按照用戶水平分庫的,所以避免了很多業務上的問題,但也只是基於Spring的AbstractRoutingDataSource,根據userId做了簡單的路由。之前也在網

原创 從notify和metaq初窺消息隊列的前世今生

上一家公司並沒有用消息隊列中間件,大學裏對ActiveMQ有所瞭解但並未深入研究,RocketMQ、Kafka也一直囿於聽聞。不過在原來的項目中經常會用Redis的list實現一個分佈式的阻塞隊列。在短信服務調用中,會將服務的同步

原创 Spring-IOC整體設計與源碼分析

最近讀完《Spring技術內幕》一書,雖然此書評價貌似不高,但邊看書邊讀源碼,感覺還是有點收穫,至少爲閱讀Spring源碼提供了思路。然後這篇文章就記錄一下這幾天看Spring IOC這塊的源碼以及整體思路。 1、 BeanFac

原创 EffectiveJava讀書筆記- 第3條:用私有構造器或者枚舉類型強化Singleton屬性

用私有構造器或枚舉類型強化Singleton屬性 單例模式(Singleton Pattern)無疑是筆試面試中被問得最多的問題之一。單例模式雖然看似簡單,但是仍有很多東西值得思考。 GOF是這麼定義單例模式的: 確保一個類只有

原创 EffectiveJava讀書筆記- 第2條:遇到構造器有多個參數時要考慮用構建者模式

遇到構造器有多個參數時要考慮用建造者模式 靜態工廠方法和構造器都有一個侷限性: 當構造的對象有大量的可選參數時,你可能需要定義很多個靜態工廠方法或者構造器。 用setter方法替代多參數構造器的幾個缺點 書中提到多參數的構造器的一

原创 MySQL性能優化[準備篇]-單條SQL性能剖析

上面一篇文章已經將慢查詢語句記錄到日誌中,接着我們就要對單條SQL查詢進行性能分析,瞭解它慢在何處,才能對症下藥進行性能優化。 show profile show profile命令是MySQL5.1之後引入的,由開源社區的Jer

原创 EffectiveJava讀書筆記- 第1條:考慮用靜態工廠方法代替構造器

考慮靜態工廠方法代替構造器 靜態工廠方法相對於構造器的好處: 1. 靜態工廠方法有名字,相比構造器創建的對象更語義化 最好的例子就是併發庫中的Executors工具類了。 Executors中有多個創建線程池的方法: public

原创 ES6學習筆記-解構賦值

解構賦值 解構賦值可以將數組中的元素或對象中的屬性賦值給指定的變量。 1. 數組解構 1.1 基本用法 var a, b, rest; // 數組解構 [a, b] = [10, 20]; console.log(a); // 1