《大型分布式網(wǎng)站架構(gòu)設(shè)計(jì)與實(shí)踐》
Web瀏覽器與Web服務(wù)器之間的一次HTTP請(qǐng)求與響應(yīng)過(guò)程,需要完成如下的步驟: eg:http://www.yangenneng.cn:80/index.html
瀏覽器端根據(jù)所在的HTTP協(xié)議,解析出url對(duì)應(yīng)的域名。www.yangenneng.cn
通過(guò)DNS域名解析,查詢出該域名對(duì)應(yīng)的ip地址。119.29.63.243
通過(guò)URL解析出對(duì)應(yīng)的端口號(hào)。80
瀏覽器發(fā)起并建立到119.29.63.243的連接(TCP三次握手)
瀏覽器向服務(wù)器發(fā)送GET請(qǐng)求
服務(wù)器響應(yīng)瀏覽器的請(qǐng)求,瀏覽器讀取響應(yīng),渲染頁(yè)面
瀏覽器關(guān)閉與服務(wù)器的連接(TCP四次揮手)
HTTP協(xié)議已經(jīng)不僅僅局限于原來(lái)的瀏覽器/服務(wù)器模式,很多情況下我們需要自己實(shí)現(xiàn)向服務(wù)器發(fā)送請(qǐng)求,以及解析從服務(wù)器響應(yīng)的數(shù)據(jù)這個(gè)過(guò)程。 但是,如果通過(guò)Socket API來(lái)實(shí)現(xiàn),會(huì)帶來(lái)相當(dāng)?shù)墓ぷ髁?,并且這種工作是重復(fù)的,還可能導(dǎo)致不可預(yù)估的風(fēng)險(xiǎn),比如:底層的流處理、并發(fā)控制。HttpClient解決了這一問(wèn)題。
隨著請(qǐng)求規(guī)模的擴(kuò)展,基于TCP協(xié)議RPC的實(shí)現(xiàn),程序需要考慮多線程并發(fā)、鎖、I/O等復(fù)雜的底層細(xì)節(jié)的實(shí)現(xiàn),實(shí)現(xiàn)起來(lái)較為復(fù)雜。在大流量高并發(fā)下,任意一個(gè)細(xì)小的錯(cuò)誤,都會(huì)被無(wú)限放大。
JSON是javascript的一個(gè)子集,是一種輕量級(jí)的數(shù)據(jù)交換語(yǔ)言。
package bytedemo;import java.io.StringWriter;import net.sf.json.JSONArray;/** * Created by yangenneng on 2017-02-17. * 功能說(shuō)明: */public class JSONDemo { public static void main(String[] args) { //創(chuàng)建一個(gè)實(shí)例 Person person=new Person(); person.setName("yangenneng"); person.setPassWord("123456"); //JSON對(duì)象序列化 String pJson=null; StringWriter sw=new StringWriter(); JSONArray jsonArray=JSONArray.fromObject(person); System.out.PRintln(jsonArray.toString()); }}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注