原创 Java高級工程師常見面試題(八)-數據庫MySql

1. MySql的存儲引擎的不同 存儲引擎查看 MySQL給開發者提供了查詢存儲引擎的功能,我這裏使用的是MySQL5.1,可以使用: SHOW ENGINES 如果要想查看數據庫默認使用哪個引擎,可以通過使用命令: SHOW VARI

原创 TCP粘包和拆包

產生的原因 應用程序寫入數據的字節大小大於套接字發送緩衝區的大小 進行MSS大小的TCP分段。MSS是最大報文段長度的縮寫。MSS是TCP報文段中的數據字段的最大長度。數據字段加上TCP首部纔等於整個的TCP報文段。所以MSS並不是

原创 四次揮手

客戶端先發送FIN,進入FIN_WAIT1狀態 服務端收到FIN,發送ACK,進入CLOSE_WAIT狀態,客戶端收到這個ACK,進入FIN_WAIT2狀態 服務端發送FIN,進入LAST_ACK狀態 客戶端收到FIN,發送

原创 詳細介紹http

HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。點擊這裏瞭解 http 1.0 vs 2.0

原创 三次握手

第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認; 第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+A

原创 分佈式服務架構學習(九):實現自己的序列化工具引擎(八)-序列化Thrift實現

與protobuf類似,適用Thrift之前,需要編寫以.thrift結尾的IDL文件,再適用Thrift提供的編譯器生成對應的代碼。對java而言,所生成的java bean都集成了類org.apache.thrift.TBase。 代

原创 分佈式服務架構學習(二):實現自己的序列化工具引擎(一)-引擎實現

分佈式項目中,也許會用到不同的序列化方式,自己整理了常見的序列化方式,手寫了一個序列化引擎。 引擎SerializerEngine.java代碼如下: package ares.remoting.framework.serializat

原创 分佈式服務架構學習(十):實現自己的序列化工具引擎(九)-序列化Avro實現

Avro是一個數據序列化的項目,最開始是Hadoop的子項目之一,最後加入Apache成爲獨立的開元項目。Avro提供的功能類似於其他的編組系統,如Thrift、protobuf等。 Aro的主要不同之處在於:動態類型、無標記數據、不用手

原创 Java高級工程師常見面試題(七)-網絡通信

1. http是無狀態通信,http的請求方式有哪些,可以自己定義新的請求方式麼。 HTTP是無狀態的,它的底層協議是由狀態的TCP,但是HTTP的一次完整協議動作,裏面是使用有狀態的TCP協議來完成的。而每次協議動作之間沒有任何關係。例

原创 分佈式服務架構學習(五):實現自己的序列化工具引擎(四)-序列化JSON實現

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。相比XML,JSON碼流更小,而且保留了XML可讀性好的優勢。 JSON序列化常用的開元工具有如下幾個: Jackson 阿里開源的fastjso

原创 分佈式服務架構學習(三):實現自己的序列化工具引擎(二)-序列化java實現

首先,爲抽象出一個序列化/反序列化通用服務,定義接口ISerializer.java,代碼如下: package ares.remoting.framework.serialization.serializer; /** * @au

原创 分佈式服務架構學習(八):實現自己的序列化工具引擎(七)-序列化protostuff實現

protostuff基於Google protobuf,其中,protostuff-runtime實現了無需預編譯的Java Bean進行protobuf序列化/反序列化的能力。 對於僅適用Java語言,且無需跨語言的適用場景,proto

原创 分佈式服務架構學習(十一):實現自己的序列化工具引擎(十)-序列化JBoss Marshalling實現

JBoss Marshalling是一個Java對象序列化包,兼容Java原生的序列化機制,對Java原生序列化機制做了優化,使其在性能上有很大提升。在保持跟java.io.Serializable接口兼容的同時增加了一些可調的參數和附加

原创 分佈式服務架構學習(四):實現自己的序列化工具引擎(三)-序列化XML實現

XML序列化反序列化我們使用XStream開源工具包,引入maven,代碼如下: <!-- xml --> <dependency> <groupId>com.thoughtworks.xstre

原创 分佈式服務架構學習(七):實現自己的序列化工具引擎(六)-序列化protobuf實現

protobuf是Google的一種數據交換格式,它獨立於語言,獨立於平臺。它是一個純粹的展示層協議,可以和各種傳輸層協議一起使用,它的文檔也非常完善。 protobuf具有廣泛的用戶基礎,空間開銷小及高解析性能是其亮點,非常適合於公司內