原创 Java內存模型

java內存模型(Java Memory Model,JMM)是java虛擬機規範定義的,用來屏蔽掉java程序在各種不同的硬件和操作系統對內存的訪問的差異,這樣就可以實現java程序在各種不同的平臺上都能達到內存訪問的一致性。可以避免像

原创 布隆過濾器BloomFilter

問題引出 1.如何在億級黑名單中快速定位URL地址是否在黑名單中?(每條URL平均64字節) 2.目前有10億數量的自然數,亂序排列,需要對其排序,在32位機器上完成,內存限制爲2G? 什麼是布隆過濾器 本質上布隆過濾器是一種數據結構,比

原创 BitMap的簡單實現

Bitmap介紹 bitmap是很有用的結構。所謂的bitmap就是用一個bit位來標記某個元素,而數組下標是該元素。 bitmap優勢 bitmap經常用在大數據的題中,比如10億個int類型的數,如果用int數組存儲的話,那麼需要大約

原创 狀態機引擎選型

原文鏈接:https://segmentfault.com/a/1190000009906317?utm_source=tag-newest 狀態機引擎選型 概念 有限狀態機是一種用來進行對象行

原创 深入理解ElasticSearch—頂層索引控制

一、改變lucene評分公式 1、可用的相似度模型 Okapi BM25模型:基於概率模型的相似度模型,可用於估算文檔與給定查詢匹配的概率。 隨機偏離模型:基於同名概率模型的相似度模型。 基於信息的模型:與偏離概率模型類似。 2、爲每個字

原创 深入理解ElasticSearch—查詢DSL進階

一、Apache Lucene默認的評分公式 1、文檔匹配需要考慮一下因子 文檔權重 字段權重 協調因子 逆文檔頻率 長度範數 詞頻 查詢範數      2、TF/IDF評分公式 從上面的公式可以導出以下規則: 越多罕見的詞項被匹配上

原创 Java NIO詳解

前言 現在使用NIO的場景越來越多,很多網上的技術框架或多或少的使用NIO技術,譬如Tomcat,Jetty。學習和掌握NIO技術已經不是一個JAVA攻城獅的加分技能,而是一個必備技能。在前面2篇文章《什麼是Zero-Copy?》和《NI

原创 spring知識點概括

Spring 全家桶,它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解決方案。 Spring框架相關知識 spring系列包含非常多的項目,可以滿足java開發中的方

原创 深入理解ElasticSearch—ES簡介

一、ElasticSearch簡介      因爲ES使用開源全文檢索庫進行索引和搜索,所以我們先來了解下Apache Lucene。 1、Apache Lucene簡介 1)Lucene的總體架構 文檔(document):索引與搜索的

原创 JAVA NIO跟IO的區別

當我們學習了Java NIO和IO後,我們很快就會思考一個問題: 什麼時候應該使用IO,什麼時候我應該使用NIO 在下文中我會嘗試用例子闡述java NIO 和IO的區別,以及它們對你的設計會有什麼影響 Java NIO和IO的主要區別:

原创 Netty入門簡介

在開始瞭解Netty是什麼之前,我們先來回顧一下,如果我們需要實現一個客戶端與服務端通信的程序,使用傳統的IO編程,應該如何來實現? IO編程 我們簡化下場景:客戶端每隔兩秒發送一個帶有時間戳的"hello world"給服務端,服務端收

原创 分佈式數據庫中間件—TDDL的使用介紹

一、分佈式數據庫的演化 Tddl是一個分佈式數據庫中間件,主要是爲了解決分佈式數據庫產生的相關問題,因此在學習tddl之前我們先了解一下分佈式數據庫的演化歷程,所謂磨刀不誤砍柴工,知其然亦要知其所以然,分佈式數據庫與數據庫中間件息息相關,

原创 Redis設計與實現之數據結構與對象—整數集合

整數集合(intset)是集合鍵的底層實現之一: 當一個集合只包含整數值元素, 並且這個集合的元素數量不多時, Redis 就會使用整數集合作爲集合鍵的底層實現。 舉個例子, 如果我們創建一個只包含五個元素的集合鍵, 並且集合中的所有元素

原创 Redis設計與實現之數據結構與對象—鏈表

Redis的列表對象(list object)底層實現之一就是鏈表。 當一個列表鍵包含了數量比較多的元素,又或者列表中包含的元素都是比較長的字符串時,Redis會使用鏈表作爲列表鍵的底層實現。 當一個列表鍵只包含少量列表項,並且每個

原创 Redis設計與實現之數據結構與對象—壓縮列表

壓縮列表(ziplist)是列表鍵和哈希鍵的底層實現之一。        當一個列表鍵只包含少量列表項,並且每個列表項要麼就是小整數值,要麼就是長度比較短的字符串,那麼Redis就會使用壓縮列表來作爲列表鍵的底層實現。        當