原创 JDK動態代理解析

動態代理,這個詞在Java的世界裏面經常被提起,尤其是對於部分(這裏強調“部分”二字,因爲有做了一兩年就成大神的,實力強的令人髮指,這類人無疑是非常懂動態代理這點小伎倆的)做了一兩年新人來說,總是摸不清楚來龍去脈,一兩年是個坎,爲什麼是一

原创 Java Web Servlet 生命週期

Servlet運行在Servlet容器中,其生命週期由容器來管理。Servlet的生命週期通過javax.servlet.Servlet接口中的init()、service()和destroy()方法來表示 Servlet的生命週期包含了

原创 JAVA基礎之:reflection和introspector 簡單介紹

接觸JAVA語言後就會發現這樣兩個詞:反射(Reflection)和內省(Introspector),經常搞不清楚這到底是怎麼回事,在什麼場合下應用以及如何使用?今天把這二者放在一起介紹,因爲它們二者是相輔相成的。 反射   相對而言,反

原创 JDK1.8源碼解讀之WeakHashMap解讀

WeakHashMap     繼承:AbstractMap     實現:Map     1、key value皆可以爲null     2、非線程安全的,線程安全可以使用Collections#synchronizedMap方式獲得

原创 Java基礎之四種引用

Java四種引用包括強引用,軟引用,弱引用,虛引用。 強引用: 只要引用存在,垃圾回收器永遠不會回收 Object obj = new Object(); //可直接通過obj取得對應的對象 如obj.equels(new Object(

原创 Redis系列之Cluster LRU算法

LRU算法作爲內存管理的一種有效算法,其含義是在內存有限的情況下,當內存容量不足時,爲了保證程序的運行,這時就不得不淘汰內存中的一些對象,釋放這些對象佔用的空間,那麼選擇淘汰哪些對象呢?LRU算法就提供了一種策略,告訴我們選擇最近一段時間

原创 冪等性

Programming.log - a place to keep my thoughts on programming理解HTTP冪等性基於HTTP協議的Web API是時下最爲流行的一種分佈式服務提供方式。無論是在大型互聯網應用還是企

原创 分佈式事務處理分析

1.問題解析    要想做架構,必須識別出問題,即是誰的問題,什麼問題。明顯的,分佈式架構解決的是高併發的問題,高併發下服務高可用和數據一致性問題問題;當規模規模較小時,單庫HA即可滿足請求,當業務規模持續增加,單庫已經無法滿足業務需求,

原创 數據結構系列之B樹、B+樹、B*樹

第一節、B樹、B+樹、B*樹1.前言:動態查找樹主要有:二叉查找樹(Binary Search Tree),平衡二叉查找樹(Balanced Binary Search Tree),紅黑樹(Red-Black Tree ),B-tree/

原创 Java 系列之性能優化建議

1.沒有必要時請不用使用靜態變量    使用Java的開發者都知道,當某個對象被定義爲stataic變量所引用,這個對象所佔有的內存將不會被回收。有時,開發者會將經常調用的對象或者變量定義爲static,以便提高程序的運行性能。因此,不是

原创 JS判斷pc mobile幾種方式

方法一:function IsPC(){ var userAgentInfo = navigator.userAgent; var Agents = new Array("Android", "iPhone

原创 分佈式事務處理方案示例

問題的起源在電商等業務中,系統一般由多個獨立的服務組成,如何解決分佈式調用時候數據的一致性? 具體業務場景如下,比如一個業務操作,如果同時調用服務 A、B、C,需要滿足要麼同時成功;要麼同時失敗。A、B、C 可能是多個不同部門開發、部署在

原创 Zookeeper系列之原理及應用

Zookeeper簡介Zookeeper 分佈式服務框架是 Apache Hadoop 的一個子項目,它主要是用來解決分佈式應用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集羣管理、分佈式應用配置項的管理等等。Zooke

原创 java 線程狀態

一. 線程狀態類型1. 新建狀態(New):新創建了一個線程對象。2. 就緒狀態(Runnable):線程對象創建後,其他線程調用了該對象的start()方法。該狀態的線程位於可運行線程池中,變得可運行,等待獲取CPU的使用權。3. 運行

原创 Linux命令系列之htpasswd

htpasswd命令是Apache的Web服務器內置工具,用於創建和更新儲存用戶名、域和用戶基本認證的密碼文件。語法htpasswd(選項)(參數)選項-c:創建一個加密文件; -n:不更新加密文件,只將加密後的用戶名密碼顯示在屏幕上;