原创 劍指Offer學習 【面試題23:從上往下打印二叉樹】【面試題24:二叉搜索樹的後序遍歷序列】【面試題25:二叉樹中和爲某一值的路徑】【面試題26:複雜鏈表的複製】

23題目:從上往下打印出二叉樹的每個結點,同一層的結點按照從左向右的順序打印。 public class Offer23 { public static class BinaryTreeNode{ int value; Bi

原创 ElasticSearch學習之一:基礎知識+單節點/集羣搭建

一、ES相關知識 ES基於RESTful web接口並且構建在Apache lucene之上的開源分佈式搜索引擎。同時ES是一個分佈式文檔數據庫,每個字段均可被索引、每個字段數據均可被搜索,能夠橫向擴展數以百計的服務器存儲以及處理PB級的

原创 劍指Offer學習【面試題21:包含min 函數的棧】【面試題22:棧的壓入、彈出序列】

21題目: 定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小素的min 函數。在該棧中,調用min、push 及pop的時間複雜度都是0(1) /** * 定義棧的數據結構 * 使得返回最小元素min() pop() push

原创 JVM_01虛擬機內存劃分

JAVA技術:在虛擬機層面隱藏了底層技術的複雜性以及機器與操作系統的差異性。從而導致一旦出現Java內存區域和內存溢出異常時,如果不瞭解JVM的工作機制,排查錯誤將十分艱難。 1. JVM對其管理的內存區域劃分 所劃分的這些數據區域是線程

原创 ElasticSearch學習之二:Head插件的安裝以及ES的RESTful API使用

1. ES與Solr對比 Solr在海量歷史數據的檢索上比較有優勢,而ES在實時檢索上更加強大。 (1)Solr支持更多的數據格式:JSON、XML、CSV ES僅支持JSON (2)Solr需要Zookeeper來進行分佈式管理,而ES

原创 Elasticsearch學習之三:ES的核心概念+ES JAVA應用

1. cluster 1)代表一個集羣,集羣中有多個節點,主節點通過選舉產生,這是對於集羣內部來講。而ES是去中心化的,從集羣外部來看整個ES集羣邏輯上是一個整體,與任何一個節點通信和與整個ES集羣通信是等價的 2)主節點:負責管理集羣狀

原创 JVM_04類文件結構

之前已經學習了有關JVM的組成、內存泄漏原因、垃圾回收機制和內存的動態分配、以及常用的Java工具和JVM實戰案例;現在開始學習Java類文件結構 一、Class類文件結構 1. 無關平臺 Java語言的一大特性就是無關平臺,其實現根本是

原创 Elasticsearch學習之四:使用ESRally對搭建的ES集羣進行壓測

一. 機器配置 系統:Windows7 8G i57200U 虛擬機:CentOS6 我們採用官方壓測工具ESRally來進行壓測 二.測試 我們安裝好esrally後,先啓動它的測試用例 esrally --distribution-v

原创 JVM_05虛擬機加載機制

虛擬機把描述類的數據從Class文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這就是虛擬機的類加載機制。 一、類加載的時機 類從加載到虛擬機內存開始,到卸載出內存結束,生命週期:加載、連接

原创 關於FastDFS圖片服務器的相關工具的下載與搭建

1、使用資源版本 系統:Centos6.x 軟件: libfastcommon libfastcommon-1.0.35.tar.gz FastDFS fastdfs-5.10.tar.gz nginx nginx-1.9.9.tar.g

原创 Dijkstra與Floyd求取最短路徑

最短路徑算法:用於計算一個節點到其他所有節點的最短路徑。是圖論研究中的一個經典算法問題。 一、Dijkstra算法: 典型的最短路徑路由算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點爲中心向外層層擴展,直到擴展到終點爲

原创 JVM_02垃圾回收GC&內存分配策略

一、 如何確定堆中對象是否“存活”? 1. 引用計數算法 給對象添加一個引用計數器,當有一個地方引用它,計數器加一;引用失效計數器減一,當計數器爲0則對象不可能再被使用。 但是,Java語言並沒有選用引用計數法來管理內存,主要原因時它很難

原创 JVM_03調優案例分析

一、高性能硬件上的程序部署策略 1. 案例 一個網站服務器,原先配置爲32位,給JVM堆內存大小爲1.5GB,使用網站是比較緩慢但無明顯卡頓。爲了更好的用戶體驗,升級服務器爲64位,16G內存;管理員選用64位jdk,設置JVM堆內存爲1

原创 常見的八種排序算法

排序按類別分爲:插入排序(插入排序、希爾排序)、選擇排序(選擇排序、堆排序)、交換排序(冒泡排序、快速排序)、歸併排序、基數排序。 1. 冒泡排序 /** * 從第一個數據開始,將順序表中的每一個數據與其後一個數據比較大小 如果比後

原创 劍指Offer48:最長不含重複字符的子字符串

題目: 請從字符串中找出一個最長的不包含重複字符的子字符串,計算該最長子字符串的長度 假設字符串中只包含'a'~'z'的字符 例如,在字符串“arabcacfr”中,最長的不含重複字符的子字符串是“acfr”,長度爲4 思路: 我們從頭遍