原创 java內存回收機制

在JAVA中,它的內存管理包括兩方面:內存分配(創建Java對象的時候)和內存回收,這兩方面工作都是由JVM自動完成的,降低了Java程序員的學習難度,避免了像C/C++直接操作內存的危險。但是,也正因爲內存管理完全由JVM負責,所以也

原创 BIO AIO NIO

jdk1.6及之前都只實現BIO 和 NIOjdk1.7開始支持AIO,即NIO 2.0在BIO阻塞模式下server端:1 new ServerSocket(int port) 監聽端口2 serverSocket.accept(

原创 NIO學習筆記(3)--NIO核心類(Buffer,Channel)

一.Buffer(緩衝區) 概念 緩衝區是包在一個對象內的基本數據元素數組。Buffer 類相比一個簡單數組的優點是它將關於數據的數據內容和信息包含在一個單一的對象中。Buffer 類以及它專有的子類定義了一個用於處理數據緩衝區的 A

原创 NIO學習筆記(1)--非阻塞I/O

一. 什麼是阻塞? 阻塞(Block)這個概念。當進程調用一個阻塞的系統函數時,該進程被置於睡眠(Sleep)狀態,這時內核調度其它進程運行,直到該進程等待的事件發生了(比如網絡上接收到數據包,或者調用sleep指定的睡眠時間到了)它纔

原创 NIO學習筆記(4)-- 【練習】NIO聊天工具

通過NIO的學習,自己簡單寫了一個,C/S架構的聊天工具。 Server端:     1.接受客戶端Channel。     2.記錄客戶端集合clients。利用channel進行區分客戶端,後續可以添加一個ID。     3.客戶端通

原创 NIO學習筆記(2)--NIO核心類(Selector)

對於上一節中的socket通訊,用以下圖來解釋NIO的通訊過程: 從圖中可以明顯的看出NIO主要體現在 Channel,Buffer,Selector 這幾個類上 一. Selector(選擇器) 針對SelectableCha

原创 Java隨機數

衆所周知,隨機數是任何一種編程語言最基本的特徵之一。而生成隨機數的基本方式也是相同的:產生一個0到1之間的隨機數。看似簡單,但有時我們也會忽略了一些有趣的功能。 我們從書本上學到什麼? 最明顯的,也是直觀的方式,在JAVA中生成隨

原创 Kafka的架構設計

我們爲什麼要搭建該系統 Kafka是一個消息系統,原本開發自LinkedIn,用作LinkedIn的活動流(activity stream)和運營數據處理管道(pipeline)的基礎。現在它已爲多家不同類型的公司 作爲多種類型的數據

原创 Mongodb的MapReduce優化

分析在MongoDB中正成爲越來越重要的話題,因爲它在越來越多的大型項目中使用。人們厭倦了使用不同的軟件來做分析(包括Hadoop),它們顯然需要傳輸大量開銷的數據。 MongoDB提供了兩種內置分析數據的方法:Map Reduce和

原创 vmware workstation虛擬機中的虛擬網絡簡介

vmware workstation可以虛擬出來各種真實網絡環境、實驗環境,而網管在使用這些虛擬網絡功能時都要依靠vmware workstation提供的橋接、NAT和Host-only(主機模式)這三種虛擬網卡屬性的組合來實現,具體橋

原创 java.util.concurrent.locks與synchronized及其異同

關鍵字:synchronized、java.util.concurrent.locks.Lock、同步、併發、鎖一、【引言】 JDK1.5之前,實現同步主要是使用synchronized,而在JDK1.5

原创 Consistent Hashing一致性哈希算法

一、簡單介紹一致性哈希算法        分佈式存儲中,常常涉及到負載均衡問題,由於有多個數據存儲服務器。因此當一個對象被保存時候,它究竟應該存放到哪個數據存儲服務器上面呢?這就是負載均問題。         又例如:現在假設有一個網站,

原创 Mongodb安裝及簡單命令

MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用,默認端口爲27017。推薦運行在64位平臺,因爲MongoDB 在32位模式運行時支持的最大文件尺寸爲2GB。 MongoDB把數據存儲在文件中

原创 linux中crontable的用法

  crontab命令的功能是在一定的時間間隔調度一些命令的執行。 1.0  新建定時任務 1、查看crontab服務是否啓動,                             root@ora

原创 Linux rpm 命令

RPM是RedHat Package Manager(RedHat軟件包管理工具)類似Windows裏面的“添加/刪除程序” rpm 執行安裝包 二進制包(Binary)以及源代碼包(Source)兩種。二進制包可以直接安裝在計算機中,而