第二次的部落格,也沒有什麼感想,就覺得老師說的很有道理,如果自己沒有什麼學習方法,那就每天都敲**,肯定會有收穫
tcp/ip協議棧 棧:一組協議
tcp 網路傳輸控制協議
ip 網路位址協議
應用層:訪問的網頁 http協議(超文字傳輸協議)
遠端登入主機 telnet協議 ssh協議(保證安全)
傳輸層:打包和確定目的應用程式
tcp(保障資料的可靠有序),udp(不保障)
http 占用80 埠
telnet 22
ssh 22
mysql 3306
網際網路層:ip協議
網路訪問層:
傳送:應用層->傳輸層—>網際網路層->網路訪問層
接收:網路訪問層—>網際網路層—>傳輸層—>應用層
連線:telnet 對方ip 埠號
傳送請求:http協議
請求:get /time http/1.1
host:localhost
回車回車
socket 端點 底層是tcp協議
1.新建socket物件
scocket(host代表主機,port:埠號)//三次握手
客戶端->伺服器
伺服器->客戶端
客戶端->伺服器
2.傳送資料用輸出流
outputstream
3.接收響應用輸入流
inputstream
用bufferedreader
應用層url 統一資源定位符
建立new url(http://ip位址:埠/資源位址)
httpurlconnection connection =url().openconnection();//建立連線,傳送get請求
connection.getinputstream//拿到伺服器返回的結果
3.伺服器端
3.1阻塞io bio
serversocket 伺服器的端點
new serversocker(埠號);//每個程式只能占用乙個埠,自己的程式用4位以上的埠
.accept();//等待,直到客戶端連線為止
127.0.0.1<==>localhost
new thread(new runnable
}).start();
阻塞io的特點,乙個socket執行io讀寫操作會阻塞其它io的讀寫
乙個執行緒內io的讀寫是序列的,可以用多執行緒的方法來解決,建議使用執行緒池而不是自己手動建立執行緒
執行緒池executorservice service=new threadpoolexecutor(corepoolsize,maxpoolsize,keepalivetime,timeunit,blockingqueue)
corepoolsize 核心執行緒數
maxpoolsize 最大執行緒數:核心執行緒數+救急執行緒數<=最大執行緒數
keepalivetime保持時間 如果乙個執行緒閒暇的時間超過了保持時間,那就把它**,但不會少於核心執行緒數
timeunit時間單位
blockingqueue阻塞佇列 當任務數超過核心執行緒數後,就把任務放入阻塞佇列排隊執行(有界 無界)
3.2併發量再高怎麼辦
非阻塞io nio, nonblocking io,new io
執行緒(多路)復用
乙個執行緒可以同時處理多個io操作,減少了執行緒的數量,能夠應付更高的併發
web伺服器 tomcat 熊貓(bio,nio)
netty 伺服器 封裝了nio技術,併發能力很高
spark 分布式計算框架
redis 快取伺服器(c語言)單執行緒 qps 10萬
#3.3
new thread(()—>{}).strat();
引數部分 特殊符號 **體
(形參) ->
針對單方法的介面,才能使用lambda表示式簡化
當**體部分只有一條語句,{}可省略,且不能加分號
引數部分可以省略型別
如果**體部分只有一條語句,那麼它還可以充當返回值,省掉return
concurrenthashmap
socket 伺服器例項
如下的test是乙個伺服器程式
網路框架專題
socket osi和tcp ip模型 ip mac和埠號 面向連線和無連線有什麼區別 http協議介紹 httpclient簡介 httpclient的基本使用 closeablehttpclient的個性化配置 請求的個性化配置 如何解析響應內容 http 狀態管理 http認證 httpcli...
網路流專題
模擬賽被網路流打爆了。題目來自於 pb 的網路流專題。左邊房子右邊菜,搞出最大流就行了。棋盤黑白染色,可選的方塊連邊,搞出最大流就行了。行列為點,格仔為邊。如果有完美匹配,就可以。否則不行。每個點最多對應兩個 t,所以這是乙個二分圖最大匹配。字典序最小,只需要從後往前匈牙利就行了。把圖建出來,是二分...
網路程式設計專題總結
一 確認網路環境3g wifi 1.新增源 檔案和framework 開發web等網路應用程式的時候,需要確認網路環境,連線情況等資訊。如果沒有處理它們,是不會通過 使用reachability 只須將該例程中的 reachability.h 和 reachability.m 拷貝到你的工程中。如下...