原创 NIO的網絡IO操作

一、網絡IO 1.1 概述 文件IO用到的FileChannel並不支持非阻塞操作,學習NIO主要就是進行網絡IO,JavaNIO中的網絡通道是非阻塞IO的實現,基於事件驅動,非常適用於服務器需要維持大量連接,但是數據交換量不大的

原创 Java併發編程系列---線程的構建、啓動和停止

一、構造線程 在運行線程之前首先要構造一個線程對象,線程對象在構造的時候需要提供線程所需要的屬性,如線程所屬的線程組、線程優先級、是否是Daemon線程等信息。下面代碼摘自java.lang.Thread中對線程進行初始化的部分。

原创 Java併發編程系列---volatile和synchronized關鍵字詳解

一、簡介 在多線程併發編程中synchronized和volatile都扮演着重要的角色,volatile是輕量級的 synchronized,它在多處理器開發中保證了共享變量的“可見性”。可見性的意思是當一個 線程修改一個共享變

原创 Java併發編程系列---可重入鎖和讀寫鎖的實現原理、源碼分析

一、重入鎖 1.1 什麼是重入鎖 重入鎖ReentrantLock,就是支持重進入的鎖,它表示該鎖能夠支持一個線程對資源的重複加鎖。除此之外,該鎖的還支持獲取鎖時的公平和非公平性選擇。 1.2 重入鎖有什麼用 例子:之前AQS的一

原创 RabbitMQ入門介紹以及安裝使用

一、RabbitMQ初識 RabbitMQ是一個實現了高級消息隊列協議(AMQP的消息代理(也叫消息中間件),它接受並轉發消息。它可以幫你處理一些邏輯的事務,從而進行解耦,比如用戶註冊落庫之後,還需要發送郵件驗證、需要發送新人紅包

原创 mysql性能優化系列(二) ---認識一下mysql的索引

B-Tree 索引 B-Tree索引是用B-Tree數據結構來存儲數據的。大多數mysql引擎都支持這種索引,也是用的比較多的一種它每一個葉子節點都包含指向下一個葉子節點的指針,從而方便葉子節點的範圍遍歷。 爲什麼B-Tree索引

原创 Netty簡介

一、什麼是Netty 在網絡編程領域,Netty是Java的卓越框架。它駕馭了Java高級API的能力,並將其隱藏在一個易於使用的API之後。Netty使你可以專注於自己真正的業務。簡單的說,Netty是一個讓網絡編程變得簡潔的框

原创 ZooKeeper中實現分佈式數據一致性的ZAB協議詳解

一、ZAB 協議簡介 在深入瞭解ZooKeeper之前,認爲ZooKeeper就是Paxos算法的一個實現。但事實上,ZooKeeper並沒有完全採用Paxos算法,而是使用了一種稱爲ZooKeeper Atomic Broadc

原创 mysql性能優化系列(四) ---如何選擇合適的列建立索引以及使用索引的注意事項

一、如何選擇合適的列建立索引 1、在where從句,group by從句,order by從句,on從句中的列添加索引 2、索引字段越小越好(因爲數據庫數據存儲單位是以“頁”爲單位的,數據存儲的越多,IO也會越大) 3、離散度大的

原创 redis的哨兵機制

redis哨兵 Redis Sentinel,即Redis哨兵。哨兵的核心功能是主節點的自動故障轉移。對比主從複製 redis主從複製 來說,哨兵不需要手動修改主從關係以及配置文件端口等信息,一個節點掛掉之後會進行領導者選舉和故障

原创 Java併發編程系列---線程知識簡介

一、什麼是線程 操作系統在運行一個程序時,會爲其創建一個進程(就是windows任務管理器看到的那些運行的進程)。例如,啓動一個Java程序, 操作系統就會創建一個Java進程。現代操作系統調度的最小單元是線程,也叫輕量級進程 (

原创 Springboot整合RabbitMQ實現發送接收消息

一、發送消息的步驟 二、項目準備 新建兩個springboot項目,分別取名爲producer 和 consumer。新建項目的時候引入Rabbitmq依賴。或者手動添加。 <dependency> <groupId>

原创 ZooKeeper八大典型的應用場景

一、數據發佈/訂閱(配置中心) 1.1 什麼是配置中心,有什麼用 數據發佈/訂閱( Publish/Subscribe)系統,即所謂的配置中心,顧名思義就是發佈者將數據發佈到ZooKeeper的一個或一系列節點上,供訂閱者進行數據

原创 ZooKeeper的一些概念

一、ZooKeeper介紹 Zookeeper是一個分佈式的協調服務,設計目標是將複雜且容易出錯的分佈式一致性服務封裝起來,以一系列的簡單易用的接口提供給用戶使用。 它提供了典型的分佈式數據一致性的解決方案,分佈式應用程序可以基於

原创 怎麼讓限制複製的網站能複製

有些網站限制了複製的功能 ,像360doc,必須登錄。那麼怎麼解除呢? 右鍵檢查 在 console欄 輸入javascript:void($={}),回車。 好了,可以複製了。 點贊 1 收藏 分享