-
大話 HTTP 協(xié)議前世今生
HTTP 全稱 Hypertext Transfer Protocol,中文是超文本傳輸協(xié)議。網(wǎng)上講 HTTP 協(xié)議的資料可以說(shuō)是五花八門,但大多數(shù)都在羅列 HTTP 協(xié)議具體的規(guī)定,很少有講 HTTP 協(xié)議這樣設(shè)計(jì)的原因。今天我就嘗試從解決問題的角度分析 HTTP 協(xié)議主要特性,希望能幫助大家快速理解 HTTP 協(xié)議。 HTTP 是一種通過網(wǎng)絡(luò)傳輸數(shù)據(jù)的協(xié)議。我們不希望數(shù)據(jù)在傳輸?shù)倪^程中出現(xiàn)丟失或者損壞的問題。所以 HTTP 選用 TCP 作為底層網(wǎng)絡(luò)協(xié)議,因?yàn)?TCP 是一種可靠的傳輸層協(xié)議…
-
深入理解Linux I/O系統(tǒng)
傳統(tǒng)的 System Call I/O 在 Linux 系統(tǒng)中,傳統(tǒng)的訪問方式是通過 write() 和 read() 兩個(gè)系統(tǒng)調(diào)用實(shí)現(xiàn)的,通過 read() 函數(shù)讀取文件到到緩存區(qū)中,然后通過 write() 方法把緩存中的數(shù)據(jù)輸出到網(wǎng)絡(luò)端口。 傳統(tǒng) I/O 操作的數(shù)據(jù)讀寫流程,整個(gè)過程涉及 2 次 CPU 拷貝、2 次 DMA 拷貝,總共 4 次拷貝,以及 4 次上下文切換。 CPU 拷貝: 由 CPU 直接處理數(shù)據(jù)的傳送,數(shù)據(jù)拷貝時(shí)會(huì)一直占用 CPU 的資源。 DMA 拷貝: 由 CPU …
-
Redis 只會(huì)用緩存?16種妙用讓同事直呼牛X
1、緩存 String類型 例如:熱點(diǎn)數(shù)據(jù)緩存(例如報(bào)表、明星出軌),對(duì)象緩存、全頁(yè)緩存、可以提升熱點(diǎn)數(shù)據(jù)的訪問數(shù)據(jù)。 2、數(shù)據(jù)共享分布式 String 類型,因?yàn)?Redis 是分布式的獨(dú)立服務(wù),可以在多個(gè)應(yīng)用之間共享 例如:分布式Session <dependency>?? <groupId>org.springframework.session</groupId>?? <artifactId>spring-session-data-redis…
-
40個(gè) Nginx 常問面試題
“Nginx 是一款輕量級(jí)的 Web 服務(wù)器、反向代理服務(wù)器,由于它的內(nèi)存占用少,啟動(dòng)極快,高并發(fā)能力強(qiáng),在互聯(lián)網(wǎng)項(xiàng)目中廣泛應(yīng)用。 什么是 Nginx? “Nginx 是一個(gè) 輕量級(jí) / 高性能的反向代理 Web 服務(wù)器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 協(xié)議。他實(shí)現(xiàn)非常高效的反向代理、負(fù)載平衡,他可以處理 2-3 萬(wàn)并發(fā)連接數(shù),官方監(jiān)測(cè)能支持 5 萬(wàn)并發(fā),現(xiàn)在中國(guó)使用 nginx 網(wǎng)站用戶有很多,例如:新浪、網(wǎng)易、 騰訊等。 Nginx 有哪些優(yōu)點(diǎn)? 跨平臺(tái)、配置簡(jiǎn)…
-
MySQL 常用腳本
常用功能腳本 1.導(dǎo)出整個(gè)數(shù)據(jù)庫(kù) ? 1 mysqldump -u 用戶名 -p –default-character-set=latin1 數(shù)據(jù)庫(kù)名 > 導(dǎo)出的文件名(數(shù)據(jù)庫(kù)默認(rèn)編碼是latin1) 2 3 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql?? 2.導(dǎo)出一個(gè)表 1 mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 表名> 導(dǎo)出的文件名 2 3 mysqldump -u wcnc -p smgp_apps…
-
45 個(gè) Git 經(jīng)典操作場(chǎng)景,專治不會(huì)合代碼
git對(duì)于大家應(yīng)該都不太陌生,熟練使用git已經(jīng)成為程序員的一項(xiàng)基本技能,盡管在工作中有諸如?Sourcetree這樣牛X的客戶端工具,使得合并代碼變的很方便。但找工作面試和一些需彰顯個(gè)人實(shí)力的場(chǎng)景,仍然需要我們掌握足夠多的git命令。 下邊我們整理了45個(gè)日常用git合代碼的經(jīng)典操作場(chǎng)景,基本覆蓋了工作中的需求。 我剛才提交了什么? 如果你用?git commit -a?提交了一次變化(changes),而你又不確定到底這次提交了哪些內(nèi)容。你就可以用下面的命令顯示當(dāng)前HEAD上的最近一次的提交…
-
Linux 上 Nginx 獲得最佳性能的 8 種方法
NGINX 是一種流行的、免費(fèi)的開源 Web 服務(wù)器。默認(rèn)的 NGINX 配置足以讓 Web 服務(wù)器正常工作。 但是,如果您想充分利用 NGINX,則需要使用其配置文件并設(shè)置可優(yōu)化服務(wù)器性能的參數(shù)。您將在Linux 機(jī)器上的 /etc/nginx 目錄中找到配置文件。 什么是 NGINX? NGINX 是一種現(xiàn)代 Web 服務(wù)器,您可以將其用作媒體流、郵件服務(wù)器、反向代理、負(fù)載平衡器、緩存服務(wù)器等。 被 VMware、IBM、Cisco、Apple、Microsoft LinkedIn、Netf…
-
7款顏值當(dāng)?shù)赖?Linux 操作系統(tǒng) !
Linux 的發(fā)行版有很多,這里羅列7個(gè)漂亮的 Linux 發(fā)行版,可以說(shuō)是Linux操作系統(tǒng)界的顏值擔(dān)當(dāng)了。 elementary OS 網(wǎng)站:https://elementaryos.cn elementary OS操作系統(tǒng)是最漂亮的Linux發(fā)行版之一。它基于macOS外觀,同時(shí)為L(zhǎng)inux用戶提供了出色的用戶體驗(yàn)。如果用戶已經(jīng)習(xí)慣使用macOS,則使用elementary OS不會(huì)有任何問題。 另外,elementary OS操作系統(tǒng)基于Ubuntu,因此用戶也可以輕松找到大量應(yīng)用程序來(lái)…
-
MySQL 最樸素的監(jiān)控方式!用完愛不釋手
對(duì)于當(dāng)前數(shù)據(jù)庫(kù)的監(jiān)控方式有很多,分為數(shù)據(jù)庫(kù)自帶、商用、開源三大類,每一種都有各自的特色;而對(duì)于 mysql 數(shù)據(jù)庫(kù)由于其有很高的社區(qū)活躍度,監(jiān)控方式更是多種多樣,不管哪種監(jiān)控方式最核心的就是監(jiān)控?cái)?shù)據(jù),獲取得到全面的監(jiān)控?cái)?shù)據(jù)后就是靈活的展示部分。 那我們今天就介紹一下完全采用 mysql 自有方式采集獲取監(jiān)控?cái)?shù)據(jù),在單體下達(dá)到最快速、方便、損耗最小。 本次文章完全使用 mysql 自帶的 show 命令實(shí)現(xiàn)獲取,從?connects、buffercache、lock、SQL、statement、D…
-
如何在 Linux 下使用 TC 優(yōu)雅的實(shí)現(xiàn)網(wǎng)絡(luò)限流
1. Linux 下的流量控制原理 通過對(duì)包的排隊(duì),我們可以控制數(shù)據(jù)包的發(fā)送方式。這種控制,稱之為數(shù)據(jù)整形,shape the data,包括對(duì)數(shù)據(jù)的以下操作: 增加延時(shí) 丟包 重新排列 重復(fù)、損壞 速率控制 在 qdisc-class-filter 結(jié)構(gòu)下,對(duì)流量進(jìn)行控制需要進(jìn)行三個(gè)步驟: 創(chuàng)建 qdisc 隊(duì)列 上面提到 Linux 是通過包的排隊(duì)進(jìn)行流量的控制,那么首先得有一個(gè)隊(duì)列。 創(chuàng)建 class 分類 class 實(shí)際上,就是劃分流量策略分類。比如劃分兩檔流量限速 10MBps、20…