原创 Dubbo的Javassist代理

Javassist 生成動態代理可以使用兩種方式,一種使用代理工廠創建,和普通的JDK動態代理和 CGLIB類似,另一種則可以使用 動態代碼創建。 Dubbo無論是生產端的暴露服務創建的invoker代理還是消費端創建的代理調用,都會需要

原创 騰訊課堂-垃圾收集器與內存分配策略

垃圾收集器與內存分配策略 爲什麼要了解GC和內存分配策略 1、面試需要 2、GC對應用的性能是有影響的; 3、寫代碼有好處 判斷對象的存活 引用計數法:快,方便,實現簡單,缺點:對象相互引用時,很難判斷對象是否改回收。 可達性分析 (面試

原创 編寫高效優雅Java程序

面向對象 構造器參數太多怎麼辦? 用builder模式,用在 1、5個或者5個以上的成員變量 2、參數不多,但是在未來,參數會增加   Builder模式: 屬於對象的創建模式,一般有 抽象建造者:一般來說是個接口,包含1)建造方法,建造

原创 JVM的執行子系統

Class類文件結構 Java跨平臺的基礎 各種不同平臺的虛擬機與所有平臺都統一使用的程序存儲格式——字節碼(ByteCode)是構成平臺無關性的基石,也是語言無關性的基礎。Java虛擬機不和包括Java在內的任何語言綁定,它只與“Cla

原创 dubbo之SPI解析

java spi就是提供這樣的一個機制:爲某個接口尋找服務實現的機制。有點類似IOC的思想,就是將裝配的控制權移到程序之外,在模塊化設計中這個機制尤其重要,java spi的具體約定爲:當服務的提供者,提供了服務接口的一種實現之後,在ja

原创 Zookeeper、Dubbo面試題總結

zookeeper面試】 ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,它是集羣的管理者,監視着集羣中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終,將簡單易用的

原创 IO vs Nio

1.IO只能實現阻塞式的網絡通信。NIO能夠實現非阻塞的網絡通信.(廢話) 2.標準IO基於字節/字符流進行操作;而NIO是基於通道(Channel)進行操作的。(話說,通往女人心靈的通道是xxx道...) 3.流的讀寫通常是單向的,要麼

原创 淺談Java序列化和hessian序列化的差異

在遠程調用中,需要把參數和返回值通過網絡傳輸,這個使用就要用到序列化將對象轉變成字節流,從一端到另一端之後再反序列化回來變成對象。         既然前面有一篇提到了hessian,這裏就簡單講講Java序列化和hessian序列化的區

原创 網絡模型:HTTTP、TCP、UDP簡介

簡介   網絡模型 OSI模型(開放式系統互聯),它是由國際標準化組織(ISO)提出的 TCP/IP系列協議 TCP/IP(Transmission Control Protocol/Internet Protocol)不只是TCP/I

原创 Dubbo源碼導讀

-----動態生成類查驗 在dubbo的源碼包裏,把ExtensionLoader的createAdaptiveExtensionClassCode方法改爲public   然後直接新建一個類(或者直接在ProtocolAdativeDe

原创 深入瞭解性能優化

影響一個系統性能的方方面面 一個web應用不是一個孤立的個體,它是一個系統的部分,系統中的每一部分都會影響整個系統的性能   常用的性能評價/測試指標 響應時間 提交請求和返回該請求的響應之間使用的時間,一般比較關注平均響應時間。 常用操

原创 Redis介紹第一節

Redis介紹 redis介紹(Redis安裝在磁盤;Redis數據存儲在內存)   redis是一種基於鍵值對(key-value)數據庫,其中value可以爲string、hash、list、set、zset等多種數據結構,可以滿足很

原创 虛擬機歷史-騰訊課堂

虛擬機歷史 瞭解即可,無需關注 運行時數據區域 程序計數器 當前線程執行的字節碼的行號指示器,佔用空間小,也無法干涉 虛擬機棧 每個線程私有的,線程在運行時,在執行每個方法的時候都會打包成一個棧幀,存儲了局部變量表,操作數棧,動態鏈接,方

原创 併發容器ConcurrentHashMap

ConcurrentHashMap Hashmap多線程會導致HashMap的Entry鏈表形成環形數據結構,一旦形成環形數據結構,Entry的next節點永遠不爲空,就會產生死循環獲取Entry。 HashTable使用synchron

原创 Rpc框架泛談

nRMI概述 RMI(remote method invocation),可以認爲是RPC的java版本,允許運行在一個java 虛擬機的對象調用運行在另一個java虛擬機上對象的方法。 n實現原理 RMI使用的是JRMP(Java Re