在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文帶你深入了解 Nginx!

Linux愛好者 ? 來源:小楊互聯網 ? 作者:小楊互聯網 ? 2021-05-13 15:01 ? 次閱讀

今天我們來談談什么是Nginx?

什么是Nginx?

Nginx代碼完全用C語言從頭寫成,已經移植到許多體系結構和操作系統,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。

Nginx有自己的函數庫,并且除了zlib、PCRE和OpenSSL之外,標準模塊只使用系統C庫函數。而且,如果不需要或者考慮到潛在的授權沖突,可以不使用這些第三方庫

Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布于2004年10月4日。

其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發布。

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。

一句話 Nginx 就是牛逼,成熟,穩定 ,應用范圍廣 主要還是開源。

Nginx 架構原理

80facbd4-b3a2-11eb-bf61-12bb97331649.png

反向代理

概念

反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。

舉個例子,比如我想訪問
http://www.test.com/readme,但www.test.com上并不存在readme頁面,于是他是偷偷從另外一臺服務器上取回來,然后作為自己的內容返回用戶,但用戶并不知情。這里所提到的 www.test.com 這個域名對應的服務器就設置了反向代理功能。

結論就是,反向代理服務器對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接著反向代理服務器將判斷向何處(原始服務器)轉交請求,并將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。

正向代理,既然有反向代理,就肯定有正向代理。什么叫正向代理呢?

正向代理(Forward Proxy)通常都被簡稱為代理,就是在用戶無法正常訪問外部資源,比方說受到GFW的影響無法訪問twitter的時候,我們可以通過代理的方式,讓用戶繞過防火墻,從而連接到目標網絡或者服務。

正向代理的工作原理就像一個跳板,比如:我訪問不了google.com,但是我能訪問一個代理服務器A,A能訪問google.com,于是我先連上代理服務器A,告訴他我需要google.com的內容,A就去取回來,然后返回給我。從網站的角度,只在代理服務器來取內容的時候有一次記錄,有時候并不知道是用戶的請求,也隱藏了用戶的資料,這取決于代理告不告訴網站。

結論就是,正向代理是一個位于客戶端和原始服務器(origin server)之間的服務器。為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。

反向代理VS正向代理:

810baeea-b3a2-11eb-bf61-12bb97331649.png

81602a42-b3a2-11eb-bf61-12bb97331649.png

1.2 工作流程

用戶通過域名發出訪問Web服務器的請求,該域名被DNS服務器解析為反向代理服務器的IP地址;

反向代理服務器接受用戶的請求;

反向代理服務器在本地緩存中查找請求的內容,找到后直接把內容發送給用戶;

如果本地緩存里沒有用戶所請求的信息內容,反向代理服務器會代替用戶向源服務器請求同樣的信息內容,并把信息內容發給用戶,如果信息內容是緩存的還會把它保存到緩存中。

1.3 優點

保護了真實的web服務器,保證了web服務器的資源安全

通常的代理服務器,只用于代理內部網絡對Internet外部網絡的連接請求,客戶機必須指定代理服務器,并將本來要直接發送到Web服務器上的http請求發送到代理服務器中。不支持外部網絡對內部網絡的連接請求,因為內部網絡對外部網絡是不可見的。當一個代理服務器能夠代理外部網絡上的主機,訪問內部網絡時,這種代理服務的方式稱為反向代理服務。此時代理服務器對外就表現為一個Web服務器,外部網絡就可以簡單把它當作一個標準的Web服務器而不需要特定的配置。不同之處在于,這個服務器沒有保存任何網頁的真實數據,所有的靜態網頁或者CGI程序,都保存在內部的Web服務器上。因此對反向代理服務器的攻擊并不會使得網頁信息遭到破壞,這樣就增強了Web服務器的安全性。

節約了有限的IP地址資源

企業內所有的網站共享一個在internet中注冊的IP地址,這些服務器分配私有地址,采用虛擬主機的方式對外提供服務。

減少WEB服務器壓力,提高響應速度

反向代理就是通常所說的web服務器加速,它是一種通過在繁忙的web服務器和外部網絡之間增加一個高速的web緩沖服務器來降低實際的web服務器的負載的一種技術。反向代理是針對web服務器提高加速功能,作為代理緩存,它并不是針對瀏覽器用戶,而針對一臺或多臺特定的web服務器,它可以代理外部網絡對內部網絡的訪問請求。

反向代理服務器會強制將外部網絡對要代理的服務器的訪問經過它,這樣反向代理服務器負責接收客戶端的請求,然后到源服務器上獲取內容,把內容返回給用戶,并把內容保存到本地,以便日后再收到同樣的信息請求時,它會把本地緩存里的內容直接發給用戶,以減少后端web服務器的壓力,提高響應速度。因此Nginx還具有緩存功能。

其他優點

(1)請求的統一控制,包括設置權限、過濾規則等;

(2)區分動態和靜態可緩存內容;

(3)實現負載均衡,內部可以采用多臺服務器來組成服務器集群,外部還是可以采用一個地址訪問;

(4)解決Ajax跨域問題;

(5)作為真實服務器的緩沖,解決瞬間負載量大的問題;

(6)支持其他插件廣泛應用 自帶豐富的庫文件lib 底層C語言編寫,所以異常強大。

Nginx模塊

Nginx有五大優點:模塊化、事件驅動、異步、非阻塞、多進程單線程。由內核和模塊組成的,其中內核完成的工作比較簡單,僅僅通過查找配置文件將客戶端請求映射到一個location block,然后又將這個location block中所配置的每個指令將會啟動不同的模塊去完成相應的工作。

模塊劃分

Nginx的模塊從結構上分為核心模塊、基礎模塊和第三方模塊:

核心模塊:HTTP模塊、EVENT模塊和MAIL模塊

基礎模塊:HTTP Access模塊、HTTP FastCGI模塊、HTTP Proxy模塊和HTTP Rewrite模塊,

第三方模塊:HTTP Upstream Request Hash模塊、Notice模塊和HTTP Access Key模塊。

Nginx的模塊從功能上分為如下四類:

Core(核心模塊):構建nginx基礎服務、管理其他模塊。

Handlers處理器模塊):此類模塊直接處理請求,并進行輸出內容和修改headers信息等操作。

Filters (過濾器模塊):此類模塊主要對其他處理器模塊輸出的內容進行修改操作,最后由Nginx輸出。

Proxies (代理類模塊):此類模塊是Nginx的HTTP Upstream之類的模塊,這些模塊主要與后端一些服務比如FastCGI等進行交互,實現服務代理和負載均衡等功能。

Nginx的核心模塊主要負責建立nginx服務模型、管理網絡層和應用層協議、以及啟動針對特定應用的一系列候選模塊。其他模塊負責分配給web服務器的實際工作:

當Nginx發送文件或者轉發請求到其他服務器,由Handlers(處理模塊)或Proxies(代理類模塊)提供服務;

當需要Nginx把輸出壓縮或者在服務端加一些東西,由Filters(過濾模塊)提供服務。

模塊處理

1、當服務器啟動,每個handlers(處理模塊)都有機會映射到配置文件中定義的特定位置(location);如果有多個handlers(處理模塊)映射到特定位置時,只有一個會“贏”(說明配置文件有沖突項,應該避免發生)。

處理模塊以三種形式返回:

OK

ERROR

或者放棄處理這個請求而讓默認處理模塊來處理(主要是用來處理一些靜態文件,事實上如果是位置正確而真實的靜態文件,默認的處理模塊會搶先處理)

2、如果handlers(處理模塊)把請求反向代理到后端的服務器,就變成另外一類的模塊:load-balancers(負載均衡模塊)。負載均衡模塊的配置中有一組后端服務器,當一個HTTP請求過來時,它決定哪臺服務器應當獲得這個請求。

Nginx的負載均衡模塊采用兩種方法:

輪轉法,它處理請求就像紙牌游戲一樣從頭到尾分發;

IP哈希法,在眾多請求的情況下,它確保來自同一個IP的請求會分發到相同的后端服務器。

3、如果handlers(處理模塊)沒有產生錯誤,filters(過濾模塊)將被調用。多個filters(過濾模塊)能映射到每個位置,所以(比如)每個請求都可以被壓縮成塊。它們的執行順序在編譯時決定。

filters(過濾模塊)是經典的“接力鏈表(CHAIN OF RESPONSIBILITY)”模型:一個filters(過濾模塊)被調用,完成其工作,然后調用下一個filters(過濾模塊),直到最后一個filters(過濾模塊)。

過濾模塊鏈的特別之處在于:

每個filters(過濾模塊)不會等上一個filters(過濾模塊)全部完成;

它能把前一個過濾模塊的輸出作為其處理內容;有點像Unix中的流水線;

過濾模塊能以buffer(緩沖區)為單位進行操作,這些buffer一般都是一頁(4K)大小,當然你也可以在nginx.conf文件中進行配置。這意味著,比如,模塊可以壓縮來自后端服務器的響應,然后像流一樣的到達客戶端,直到整個響應發送完成。

總之,過濾模塊鏈以流水線的方式高效率地向客戶端發送響應信息。

所以總結下上面的內容,一個典型的HTTP處理周期是這樣的:

客戶端發送HTTP請求 –>

Nginx基于配置文件中的位置選擇一個合適的處理模塊 ->

(如果有)負載均衡模塊選擇一臺后端服務器 –>

處理模塊進行處理并把輸出緩沖放到第一個過濾模塊上 –>

第一個過濾模塊處理后輸出給第二個過濾模塊 –>

然后第二個過濾模塊又到第三個 –>

依此類推 –> 最后把響應發給客戶端。

下圖展示了Nginx模塊處理流程:

8193c3d4-b3a2-11eb-bf61-12bb97331649.png

Nginx本身做的工作實際很少,當它接到一個HTTP請求時,它僅僅是通過查找配置文件將此次請求映射到一個location block,而此location中所配置的各個指令則會啟動不同的模塊去完成工作,因此模塊可以看做Nginx真正的勞動工作者。通常一個location中的指令會涉及一個handler模塊和多個filter模塊(當然,多個location可以復用同一個模塊)。handler模塊負責處理請求,完成響應內容的生成,而filter模塊對響應內容進行處理。

Nginx請求處理

Nginx在啟動時會以daemon形式在后臺運行,采用多進程+異步非阻塞IO事件模型來處理各種連接請求。多進程模型包括一個master進程,多個worker進程,一般worker進程個數是根據服務器CPU核數來決定的。master進程負責管理Nginx本身和其他worker進程。如下圖:

81a23130-b3a2-11eb-bf61-12bb97331649.png

Master進程負責管理Nginx本身和其他worker進程

81b5a49a-b3a2-11eb-bf61-12bb97331649.png

從上圖中可以很明顯地看到,4個worker進程的父進程都是master進程,表明worker進程都是從父進程fork出來的,并且父進程的ppid為1,表示其為daemon進程。

需要說明的是,在nginx多進程中,每個worker都是平等的,因此每個進程處理外部請求的機會權重都是一致的。

Master進程的作用是?

讀取并驗證配置文件nginx.conf;管理worker進程;

Worker進程的作用是?

每一個Worker進程都維護一個線程(避免線程切換),處理連接和請求;注意Worker進程的個數由配置文件決定,一般和CPU個數相關(有利于進程切換),配置幾個就有幾個Worker進程。

Nginx如何做到熱部署?

所謂熱部署,就是配置文件nginx.conf修改后,不需要stop Nginx,不需要中斷請求,就能讓配置文件生效!(nginx -s reload 重新加載/nginx -t檢查配置/nginx -s stop)

通過上文我們已經知道worker進程負責處理具體的請求,那么如果想達到熱部署的效果,可以想象:

方案一:

修改配置文件nginx.conf后,主進程master負責推送給woker進程更新配置信息,woker進程收到信息后,更新進程內部的線程信息。

方案二:

修改配置文件nginx.conf后,重新生成新的worker進程,當然會以新的配置進行處理請求,而且新的請求必須都交給新的worker進程,至于老的worker進程,等把那些以前的請求處理完畢后,kill掉即可。

Nginx采用的就是方案二來達到熱部署的!

Nginx如何做到高并發下的高效處理?

上文已經提及Nginx的worker進程個數與CPU綁定、worker進程內部包含一個線程高效回環處理請求,這的確有助于效率,但這是不夠的。

作為專業的程序員,我們可以開一下腦洞:BIO/NIO/AIO、異步/同步、阻塞/非阻塞…

要同時處理那么多的請求,要知道,有的請求需要發生IO,可能需要很長時間,如果等著它,就會拖慢worker的處理速度。

Nginx采用了Linux的epoll模型,epoll模型基于事件驅動機制,它可以監控多個事件是否準備完畢,如果OK,那么放入epoll隊列中,這個過程是異步的。worker只需要從epoll隊列循環處理即可。

Nginx掛了怎么辦?

Nginx既然作為入口網關,很重要,如果出現單點問題,顯然是不可接受的。

答案是:Keepalived+Nginx實現高可用。

Keepalived是一個高可用解決方案,主要是用來防止服務器單點發生故障,可以通過和Nginx配合來實現Web服務的高可用。(其實,Keepalived不僅僅可以和Nginx配合,還可以和很多其他服務配合)

Keepalived+Nginx實現高可用的思路:

第一:請求不要直接打到Nginx上,應該先通過Keepalived(這就是所謂虛擬IP,VIP)

第二:Keepalived應該能監控Nginx的生命狀態(提供一個用戶自定義的腳本,定期檢查Nginx進程狀態,進行權重變化,,從而實現Nginx故障切換)

可以通過其他工具做動態負載均衡。

81e4f9ac-b3a2-11eb-bf61-12bb97331649.png

Nginx真正處理請求業務的是Worker之下的線程。worker進程中有一個ngx_worker_process_cycle()函數,執行無限循環,不斷處理收到的來自客戶端的請求,并進行處理,直到整個Nginx服務被停止。

worker 進程中,ngx_worker_process_cycle()函數就是這個無限循環的處理函數。在這個函數中,一個請求的簡單處理流程如下:

操作系統提供的機制(例如 epoll, kqueue 等)產生相關的事件。

接收和處理這些事件,如是接收到數據,則產生更高層的 request 對象。

處理 request 的 header 和 body。

產生響應,并發送回客戶端。

完成 request 的處理。

重新初始化定時器及其他事件。

多進程處理模型

下面來介紹一個請求進來,多進程模型的處理方式:

首先,master進程一開始就會根據我們的配置,來建立需要listen的網絡socket fd,然后fork出多個worker進程。

其次,根據進程的特性,新建立的worker進程,也會和master進程一樣,具有相同的設置。因此,其也會去監聽相同ip端口的套接字socket fd。

然后,這個時候有多個worker進程都在監聽同樣設置的socket fd,意味著當有一個請求進來的時候,所有的worker都會感知到。這樣就會產生所謂的“驚群現象”。為了保證只會有一個進程成功注冊到listenfd的讀事件,nginx中實現了一個“accept_mutex”類似互斥鎖,只有獲取到這個鎖的進程,才可以去注冊讀事件。其他進程全部accept 失敗。

最后,監聽成功的worker進程,讀取請求,解析處理,響應數據返回給客戶端,斷開連接,結束。因此,一個request請求,只需要worker進程就可以完成。

進程模型的處理方式帶來的一些好處就是:進程之間是獨立的,也就是一個worker進程出現異常退出,其他worker進程是不會受到影響的;此外,獨立進程也會避免一些不需要的鎖操作,這樣子會提高處理效率,并且開發調試也更容易。

如前文所述,多進程模型+異步非阻塞模型才是勝出的方案。單純的多進程模型會導致連接并發數量的降低,而采用異步非阻塞IO模型很好的解決了這個問題;并且還因此避免的多線程的上下文切換導致的性能損失。

worker進程會競爭監聽客戶端的連接請求:這種方式可能會帶來一個問題,就是可能所有的請求都被一個worker進程給競爭獲取了,導致其他進程都比較空閑,而某一個進程會處于忙碌的狀態,這種狀態可能還會導致無法及時響應連接而丟棄discard掉本有能力處理的請求。這種不公平的現象,是需要避免的,尤其是在高可靠web服務器環境下。

針對這種現象,Nginx采用了一個是否打開accept_mutex選項的值,ngx_accept_disabled標識控制一個worker進程是否需要去競爭獲取accept_mutex選項,進而獲取accept事件。

ngx_accept_disabled值:nginx單進程的所有連接總數的八分之一,減去剩下的空閑連接數量,得到的這個ngx_accept_disabled。

當ngx_accept_disabled大于0時,不會去嘗試獲取accept_mutex鎖,并且將ngx_accept_disabled減1,于是,每次執行到此處時,都會去減1,直到小于0。不去獲取accept_mutex鎖,就是等于讓出獲取連接的機會,很顯然可以看出,當空閑連接越少時,ngx_accept_disable越大,于是讓出的機會就越多,這樣其它進程獲取鎖的機會也就越大。不去accept,自己的連接就控制下來了,其它進程的連接池就會得到利用,這樣,nginx就控制了多進程間連接的平衡了。

一個簡單的HTTP請求

從 Nginx 的內部來看,一個 HTTP Request 的處理過程涉及到以下幾個階段:

初始化 HTTP Request(讀取來自客戶端的數據,生成 HTTP Request 對象,該對象含有該請求所有的信息)。

處理請求頭。

處理請求體。

如果有的話,調用與此請求(URL 或者 Location)關聯的 handler。

依次調用各 phase handler 進行處理。

在建立連接過程中,對于nginx監聽到的每個客戶端連接,都會將它的讀事件的handler設置為ngx_http_init_request函數,這個函數就是請求處理的入口。在處理請求時,主要就是要解析http請求,比如:uri,請求行等,然后再根據請求生成響應。下面看一下nginx處理的具體過程:

81f1738a-b3a2-11eb-bf61-12bb97331649.jpg

在這里,我們需要了解一下 phase handler 這個概念。phase 字面的意思,就是階段。所以 phase handlers 也就好理解了,就是包含若干個處理階段的一些 handler。

在每一個階段,包含有若干個 handler,再處理到某個階段的時候,依次調用該階段的 handler 對 HTTP Request 進行處理。

通常情況下,一個 phase handler 對這個 request 進行處理,并產生一些輸出。通常 phase handler 是與定義在配置文件中的某個 location 相關聯的。

一個 phase handler 通常執行以下幾項任務:

獲取 location 配置。

產生適當的響應。

發送 response header。

發送 response body。

當 Nginx 讀取到一個 HTTP Request 的 header 的時候,Nginx 首先查找與這個請求關聯的虛擬主機的配置。如果找到了這個虛擬主機的配置,那么通常情況下,這個 HTTP Request 將會經過以下幾個階段的處理(phase handlers):

NGX_HTTP_POST_READ_PHASE: 讀取請求內容階段

NGX_HTTP_SERVER_REWRITE_PHASE: Server 請求地址重寫階段

NGX_HTTP_FIND_CONFIG_PHASE: 配置查找階段

NGX_HTTP_REWRITE_PHASE: Location請求地址重寫階段

NGX_HTTP_POST_REWRITE_PHASE: 請求地址重寫提交階段

NGX_HTTP_PREACCESS_PHASE: 訪問權限檢查準備階段

NGX_HTTP_ACCESS_PHASE: 訪問權限檢查階段

NGX_HTTP_POST_ACCESS_PHASE: 訪問權限檢查提交階段

NGX_HTTP_TRY_FILES_PHASE: 配置項 try_files 處理階段

NGX_HTTP_CONTENT_PHASE: 內容產生階段

NGX_HTTP_LOG_PHASE: 日志模塊處理階段

在內容產生階段,為了給一個 request 產生正確的響應,Nginx 必須把這個 request 交給一個合適的 content handler 去處理。如果這個 request 對應的 location 在配置文件中被明確指定了一個 content handler,那么Nginx 就可以通過對 location 的匹配,直接找到這個對應的 handler,并把這個 request 交給這個 content handler 去處理。這樣的配置指令包括像,perl,flv,proxy_pass,mp4等。

如果一個 request 對應的 location 并沒有直接有配置的 content handler,那么 Nginx 依次嘗試:

如果一個 location 里面有配置 random_index on,那么隨機選擇一個文件,發送給客戶端。

如果一個 location 里面有配置 index 指令,那么發送 index 指令指明的文件,給客戶端。

如果一個 location 里面有配置 autoindex on,那么就發送請求地址對應的服務端路徑下的文件列表給客戶端。

如果這個 request 對應的 location 上有設置 gzip_static on,那么就查找是否有對應的.gz文件存在,有的話,就發送這個給客戶端(客戶端支持 gzip 的情況下)。

請求的 URI 如果對應一個靜態文件,static module 就發送靜態文件的內容到客戶端。

內容產生階段完成以后,生成的輸出會被傳遞到 filter 模塊去進行處理。filter 模塊也是與 location 相關的。所有的 filter 模塊都被組織成一條鏈。輸出會依次穿越所有的 filter,直到有一個 filter 模塊的返回值表明已經處理完成。

這里列舉幾個常見的 filter 模塊,例如:

server-side includes。

XSLT filtering。

圖像縮放之類的。

gzip 壓縮。

在所有的 filter 中,有幾個 filter 模塊需要關注一下。按照調用的順序依次說明如下:

copy: 將一些需要復制的 buf(文件或者內存)重新復制一份然后交給剩余的 body filter 處理。

postpone: 這個 filter 是負責 subrequest 的,也就是子請求的。

write: 寫輸出到客戶端,實際上是寫到連接對應的 socket 上。

請求完整處理過程

根據以上請求步驟所述,請求完整的處理過程如下圖所示:

821b5074-b3a2-11eb-bf61-12bb97331649.jpg

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HTTP
    +關注

    關注

    0

    文章

    510

    瀏覽量

    31358
  • Filter
    +關注

    關注

    0

    文章

    48

    瀏覽量

    21118
  • nginx
    +關注

    關注

    0

    文章

    151

    瀏覽量

    12195

原文標題:深入了解 Nginx!

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何為不同的電機選擇合適的驅動芯片?納芯微帶你深入了解

    在現代生活中,電機廣泛使用在家電產品、汽車電子、工業控制等眾多應用領域,每個電機的運轉都離不開合適的驅動芯片。納芯微提供豐富的電機驅動產品選擇,本期技術分享將重點介紹常見電機種類與感性負載應用,幫助大家更深入了解如何選擇合適的電機驅動芯片。
    的頭像 發表于 12-23 09:58 ?341次閱讀
    如何為不同的電機選擇合適的驅動芯片?納芯微<b class='flag-5'>帶你</b><b class='flag-5'>深入了解</b>!

    智慧公交是什么?帶你詳解智慧公交的解決方案!

    智慧公交是什么?帶你詳解智慧公交的解決方案!
    的頭像 發表于 11-05 12:26 ?345次閱讀
    智慧公交是什么?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b>詳解智慧公交的解決方案!

    深入了解PCI轉XMC載板轉接卡

    電子發燒友網站提供《深入了解PCI轉XMC載板轉接卡.docx》資料免費下載
    發表于 09-06 14:35 ?0次下載

    深入了解 MEMS 振蕩器 溫度補償 MEMS 振蕩器 TC-MO

    深入了解 MEMS 振蕩器/溫度補償 MEMS 振蕩器(TC-MO)-μPower MO1534/MO1569/MO1576/MO8021
    的頭像 發表于 07-30 16:38 ?562次閱讀
    <b class='flag-5'>深入了解</b> MEMS 振蕩器 溫度補償 MEMS 振蕩器 TC-MO

    深入了解表面貼裝晶體諧振器DSX1210A

    深入了解表面貼裝晶體諧振器DSX1210A
    的頭像 發表于 07-25 14:27 ?436次閱讀
    <b class='flag-5'>深入了解</b>表面貼裝晶體諧振器DSX1210A

    深入了解恒溫晶體振蕩器DC5032AS

    深入了解恒溫晶體振蕩器DC5032AS
    的頭像 發表于 07-25 10:37 ?333次閱讀
    <b class='flag-5'>深入了解</b>恒溫晶體振蕩器DC5032AS

    帶你深入了解BLE藍牙模塊工作模式

    藍牙是種新興無線通訊技術是個標準的無線通訊協議,可實現無線數據和語音通信。基于低成本設備的收發器芯片,可做近距離的無線連接,為固定和移動設備監理通信環境的種近距離無線連接技術。其中,BLE藍牙
    的頭像 發表于 07-16 13:54 ?1020次閱讀
    <b class='flag-5'>帶你</b><b class='flag-5'>深入了解</b>BLE藍牙模塊工作模式

    nginx重啟命令linux步驟是什么?

      1、驗證nginx配置文件是否正確   方法:進入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示nginx
    發表于 07-11 17:13

    nginx重啟命令linux步驟是什么?

      1、驗證nginx配置文件是否正確   方法:進入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示nginx
    發表于 07-10 16:40

    小熊派官網正式上線 可深入了解小熊派的各款開發套件

    我們為每款開發板打造個開源社區,讓每位開發者都能在這里找到歸屬感和靈感。通過官網對硬件、軟件、案例和教程的開源,大家可以深入了解小熊派的各款開發套件。
    的頭像 發表于 06-13 08:42 ?955次閱讀
    小熊派官網正式上線 可<b class='flag-5'>深入了解</b>小熊派的各款開發套件

    深入了解IEEE協會:設備MAC地址申請指南

    在數字化浪潮中,設備之間的通信變得日益頻繁和重要。而在這個通信網絡中,每臺設備都需要個獨特的身份標識來幫助大家有效識別設備信息,那就是MAC地址。本篇內容,英利檢測將帶大家深入了解IEEE協會
    的頭像 發表于 05-09 17:20 ?592次閱讀
    <b class='flag-5'>深入了解</b>IEEE協會:設備MAC地址申請指南

    5.8G WiFi和2.4G WiFi如何選擇?帶你深度了解

    在無線網絡的世界中,5.8GWiFi和2.4GWiFi作為兩種常見的無線通信技術,各自具有獨特的特點和優勢。本文將帶你深入了解這兩種技術的區別、優勢以及適用場景,幫助你更好地選擇適合自己的無線通信
    的頭像 發表于 04-18 09:49 ?3517次閱讀
    5.8G WiFi和2.4G WiFi如何選擇?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b>深度<b class='flag-5'>了解</b>

    拆解FPGA芯片,帶你深入了解其原理

    拆解FPGA芯片,帶你深入了解其原理 現場可編程門陣列(FPGA)可以實現任意數字邏輯,從微處理器到視頻生成器或加密礦機,應俱全。FPGA由許多邏輯模塊組成,每個邏輯模塊通常由觸發器和邏輯功能
    發表于 04-17 11:07

    深入了解影響ZR執行器性能的關鍵因素

    深入了解影響ZR執行器性能的關鍵因素-速程精密 在工業自動化領域,ZR執行器作為關鍵的終端設備,其性能的穩定性對于整個自動化系統的運行至關重要。了解影響ZR執行器性能的因素有助于更好地維護和優化其
    的頭像 發表于 03-20 15:04 ?560次閱讀
    <b class='flag-5'>深入了解</b>影響ZR執行器性能的關鍵因素

    S參數:深入了解與實際應用

    個無源二端口網絡為例,深入介紹S參數。信號在傳輸過程中會產生入射波和反射波,既有進入端口的信號也有從端口中出來的信號。
    的頭像 發表于 01-23 11:20 ?1010次閱讀
    S參數:<b class='flag-5'>深入了解</b>與實際應用
    主站蜘蛛池模板: 黄色网址播放| 亚洲色图欧美激情| 黄色免费三级| 久久伊人色| 五月婷婷色网| 男女全黄做爰视频| 九九热免费在线观看| 69日本人xxxxxxxx色| 久久久久久久国产精品影院| a级黑粗大硬长爽猛视频毛片| 免费看大尺度视频在线观看| 婷婷激情四射网| 91福利专区| 亚洲综合在线一区| 啪啪免费视频| 高清不卡毛片免费观看| 奇米影视奇米色777欧美| 久久天天综合| 亚洲影院手机版777点击进入影院| 免费成人毛片| 人人干干人人| 在线播放视频网站| 日本不卡在线播放| 午夜69成人做爰视频网站| 日韩成人免费一级毛片| 久久免费视频精品| 久操伊人网| 久青草国产免费观看| 丁香六月 久久久| 天天操夜夜爱| 欧美性极品高清| 欧美xxxx做受欧美88bbw| 色视频一区二区三区| 五月婷婷在线免费观看| 欧美黄色tv| 精品一精品国产一级毛片| 4hu影院在线观看| 仙踪林欧美另类视频| 亚洲国产影视| 操吧| 美女扒开尿囗给男生桶爽|