摘要:兩個序號,三個標志位含義表示所傳數據的序號。正常通信時為,第一次發起請求時因為沒有需要確認接收的數據所以為。終止位,用來在數據傳輸完畢后釋放連接。手機網站如,填寫。中的用法普通的用法分為和兩大類。
網站架構及其演變過程 基礎結構
網絡傳輸分解方式:
標準的 OSI 參考模型
TCP/IP 參考模型
海量數據的解決方案
緩存和頁面靜態化
緩存
通過程序直接保存在內存中
使用緩存框架 (Encache、Redis、Memcache)
頁面靜態化
使用模板技術生成(Velocity、FreeMaker等)
數據庫優化
表結構優化
SQL 語句優化
分區
分表
索引優化
使用存儲過程代替直接操作過程
分離活躍數據
批量讀取和延遲修改
讀寫分離
分布式數據庫
NoSQL 和 Hadoop
高并發的解決方案應用和靜態資源的分離:靜態文件(圖片、視頻、JS、CSS等)放在專門的服務器上
頁面緩存(Nginx 服務器、Squid 服務器)
集群與分布式
反向代理
CDN
底層優化:網絡傳輸協議
常見協議和標準 TCP/IP 協議IP:查找地址,對應著國際互聯網
TCP:規范傳輸規則,對應著傳輸層
TCP 在傳輸之前會進行三次溝通,稱 “三次握手”,傳完數據斷開的時候要進行四次溝通,稱 “四次揮手”。
TCP 兩個序號,三個標志位含義:
seq:表示所傳數據的序號。TCP 傳輸時每一個字節都有一個序號,發送數據的時候會將數據的第一個序號發送給對方,接收方會按序號檢查是否接收完整了,如果沒接收完整就需要重新傳送,這樣就可以保證數據的完整性。
ack:表示確認號。接收端用它來給發送端反饋已經成功接收到的數據信息,它的值為希望接收的下一個數據包起始序號。
ACK:確認位,只有 ACK = 1 的時候 ack 才起作用。正常通信時 ACK 為 1,第一次發起請求時因為沒有需要確認接收的數據所以 ACK 為 0。
SYN:同步位,用于在建立連接時同步序號。剛開始建立連接時并沒有歷史接收的數據,所以 ack 也就沒有辦法設置,這是按照正常的機制就無法運行了,SYN 的作用就是解決這個問題的,當接收端接收到 SYN = 1 的報文時就會直接將 ack 設置為接收到的 seq + 1 的值,注意這里的值并不是檢驗后設置的,而是根據 SYN 直接設置的,這樣正常的機制就可以運行了,所以 SYN 叫同步位。SYN 會在前兩次握手時都為 1,這是因為通信的雙方的 ack 都需要設置一個初始值。
FIN:終止位,用來在數據傳輸完畢后釋放連接。
DNS 的設置 DNS 解析參考域名設置,如下是我在騰訊云域名的設置
記錄類型:
A記錄: 將域名指向一個IPv4地址(例如:8.8.8.8)
CNAME:將域名指向另一個域名(例如 www.54tianzhisheng.cn)
MX: 將域名指向郵件服務器地址
TXT: 可任意填寫,長度限制255,通常做SPF記錄(反垃圾郵件)
NS: 域名服務器記錄,將子域名指定其他DNS服務器解析
AAAA:將域名指向一個iPv6地址(例如:ff06:0:0:0:0:0:0:c3)
SRV:記錄提供特定服務的服務器(例如_xmpp-server._tcp)
顯性URL:將域名301重定向到另一個地址
隱性URL:類似顯性URL,但是會隱藏真實目標地址
主機記錄:
要解析 www.54tianzhisheng.cn,請填寫 www。
主機記錄就是域名前綴,常見用法有:
www: 解析后的域名為 www.54tianzhisheng.cn。
@: 直接解析主域名 54tianzhisheng.cn。
: 泛解析,匹配其他所有域名 .54tianzhisheng.cn。
mail: 將域名解析為 mail.54tianzhisheng.cn,通常用于解析郵箱服務器。
二級域名: 如:abc.54tianzhisheng.cn,填寫abc。
手機網站: 如:m.54tianzhisheng.cn,填寫m。
Socket 分為 ServerSocket 和 Socket 兩大類。
ServerSocket 用于服務器端,可以通過 accept 方法監聽請求,監聽到請求后返回 Socket;
Socket 用戶具體完成數據傳輸,客戶端直接使用 Socket 發送請求并傳輸數據。
隨便寫了個單方面發送消息的 demo:
客戶端:
import java.io.IOException; import java.io.OutputStream; import java.net.Socket; /** * Created by 10412 on 2017/5/2. * TCP客戶端: ①:建立tcp的socket服務,最好明確具體的地址和端口。這個對象在創建時,就已經可以對指定ip和端口進行連接(三次握手)。 ②:如果連接成功,就意味著通道建立了,socket流就已經產生了。只要獲取到socket流中的讀取流和寫入流即可,只要通過getInputStream和getOutputStream就可以獲取兩個流對象。 ③:關閉資源。 */ //單方面的輸入! public class TcpClient { public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1", 9999); OutputStream o = s.getOutputStream(); o.write("tcp sssss".getBytes()); s.close(); } catch (IOException e) { e.printStackTrace(); } } }
服務器端:
import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; /** * Created by 10412 on 2017/5/2. */ public class TcpServer { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(9999);//建立服務端的socket服務 Socket s = ss.accept();//獲取客戶端對象 String ip = s.getInetAddress().getHostAddress(); int port = s.getPort(); System.out.println(ip + " : " + port + " connected"); // 可以通過獲取到的socket對象中的socket流和具體的客戶端進行通訊。 InputStream ins = s.getInputStream();//讀取客戶端的數據,使用客戶端對象的socket讀取流 byte[] bytes = new byte[1024]; int len = ins.read(bytes); String text = new String(bytes, 0, len); System.out.println(text); //關閉資源 s.close(); ss.close(); } catch (IOException e) { e.printStackTrace(); } } }NioSocket 的用法
見以前的一篇文章:Java NIO 系列教程
書中第五章簡單的講了下實現 HTTP 協議。第六章主要講 Servlet,寫了 Servlet 接口和其實現類。第七章把 Tomcat 分析的很不錯,如果有讀者感興趣的話,可以去看看。
注:本文首發于zhisheng 的博客,可轉載但務必請注明原創地址為:http://www.54tianzhisheng.cn/2017/07/14/Spring-MVC01/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67392.html
摘要:前提好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時間比較早,而且堅持的時間也比較久,一直到現在也是一直保持著更新狀態。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時...
摘要:開頭正式開啟我入職的里程,現在已是工作了一個星期了,這個星期算是我入職的過渡期,算是知道了學校生活和工作的差距了,總之,盡快習慣這種生活吧。當時是看的廖雪峰的博客自己也用做爬蟲寫過幾篇博客,不過有些是在前人的基礎上寫的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 開頭 2017.08.21 正式開啟我...
摘要:通過上面的圖,可以看到這三個類直接實現三個接口。如果配置不合法或者需要的參數丟失或者子類初始化發生錯誤,那么就會拋出異常日志代碼刪除了從參數設置屬性。參與了創建工作,并沒有涉及請求的處理。小結本章分析了的請求處理的過程。 Spring MVC showImg(https://segmentfault.com/img/remote/1460000010193590); Spring MV...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術專家我看過哪些技術類書籍。 大家好,我是...
摘要:作為面試官,我是如何甄別應聘者的包裝程度語言和等其他語言的對比分析和主從復制的原理詳解和持久化的原理是什么面試中經常被問到的持久化與恢復實現故障恢復自動化詳解哨兵技術查漏補缺最易錯過的技術要點大掃盲意外宕機不難解決,但你真的懂數據恢復嗎每秒 作為面試官,我是如何甄別應聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復制的原理詳...
閱讀 1355·2019-08-30 15:44
閱讀 2099·2019-08-30 11:04
閱讀 518·2019-08-29 15:17
閱讀 2540·2019-08-26 12:12
閱讀 3133·2019-08-23 18:09
閱讀 922·2019-08-23 15:37
閱讀 1522·2019-08-23 14:43
閱讀 2920·2019-08-23 13:13