學node 之前你要知道這些

来源:https://www.cnblogs.com/longbensong/archive/2023/05/09/17384458.html
-Advertisement-
Play Games

初識nodejs 19年年底一個偶然的機會接到年會任務,有微信掃碼登錄、投票、彈幕等功能,於是決定用node 來寫幾個服務,結果也比較順利。 當時用看了下koa2的官方文檔,知道怎麼連接資料庫、怎麼映射表實體,怎麼處理http,怎麼處理異常等,就可以直接寫起來了。從應用層面上來說 nodejs 入門 ...


初識nodejs

  19年年底一個偶然的機會接到年會任務,有微信掃碼登錄、投票、彈幕等功能,於是決定用node 來寫幾個服務,結果也比較順利。

  當時用看了下koa2的官方文檔,知道怎麼連接資料庫、怎麼映射表實體,怎麼處理http,怎麼處理異常等,就可以直接寫起來了。從應用層面上來說 nodejs 入門還是挺簡單的,前幾天在整理語雀時發現前幾年整理的nodjs的文檔,這裡分享下,希望對於初學者有些幫助。

什麼是伺服器

  伺服器也是電腦,伺服器是為電腦提供服務的電腦、設備,既然是電腦,那麼它也一樣是由CPU,主板,記憶體條,硬碟,機箱,電源等硬體組成。當然由於伺服器的特殊性,根我們家用的電腦還是有區別,如大小,處理數據的快慢,溫度等。

  伺服器也是電腦、電腦,只不過分工不同,如我們人類有醫生、護士、律師等,在電腦的世界中也是如此,專門提供服務的電腦,我們叫伺服器

  如在我們寫了一個網站,我們想讓其他人也能打開這個網址,這個時候我們可以把寫好的代碼發給他,讓他跑起來,雖然這樣也可以,但是這樣非常不友好,第一是用戶很多呢?第二並不是所有人都是程式員。所以這個時候如果把這個東西放到某台電腦A上,然後別人可以通過某種服務來訪問(比如 http 服務),此時這個電腦A就叫伺服器,當然現實生活中伺服器不止這一種,還有如 數據伺服器、文件伺服器、應用伺服器、WEB伺服器等,根據電腦的服務請求,併進行相應的處理,具備承擔服務和保障服務的能力。

通俗理解:伺服器是提供電腦服務的設備

常用linux命令

pwd 顯示當前的目錄路徑  
ls 顯示當前目錄下的內容  
ls -R 列出子目錄中的所有文件  
ls -a 顯示隱藏的文件  
cd 改變當前工作目錄 cd .. 打開上一級,cd / 打開跟目錄
cls 清除屏幕信息  
mkdir 創建目錄  
rm 刪除文件或者空目錄  
rmdir 刪除空目錄  
rm -rf dir 刪除非空目錄  
ps 列出系統中當前正在運行的那些進程  
ps -ef | grep ssh 查找特定進程信息  ps -ef | grep mysql
kill -9 pid 終止某進程  

同步、非同步

 同步就是指一個進程在執行某個動作、請求時,如果這個動作需要一段時間才有結果,那麼這個進程將會一直等待下去,直到收到返回信息才繼續執行下去,反之非同步,類似的概念還有 io 阻塞與非阻塞。如ui 界面中點擊一個按鈕給服務端發出一個請求,如果這個過程涉及成同步的,那麼ui 會一直等待這個介面,在這個介面未返回時整個ui界面都是不可用的狀態。

網路埠

  通俗的理解,把電腦想成一個大的菜市場,菜市場中的各個檔口就是安裝在電腦上的各個應用程式,而檔口的編號就是類似我們說的埠。ip 只是知道菜市場的地址,並不知道具體根哪個檔口通信,這就是埠的作用。

  在看看比較專業的定義,埠號的主要作用是表示一臺電腦中的特定進程所提供的服務。網路中的電腦是通過IP地址來代表其身份的,它只能表示某台特定的電腦,但是一臺電腦上可以同時提供很多個服務,如資料庫服務、FTP服務、Web服務等,我們就通過埠號來區別相同電腦所提供的這些不同的服務,如常見的埠號21表示的是FTP服務,埠號23表示的是Telnet服務,埠號25指的是SMTP服務等。

url 格式  

URL的全稱是Uniform Resource Locator(統一資源定位符),它是網際網路萬維網服務程式上用於指定信息位置的表示方法。

通俗理解就是 URL就是資源的地址、位置,互聯網上的每個資源都有一個唯一的URL,通過1個URL,能找到互聯網上唯一的1個資源。

URL的一般語法格式為:protocol :// hostname[:port] / path / [:parameters][?query]#anchor其中帶方括弧的為可選項

  • protocol:代表的是訪問的協議,一般為http或者https以及ftp等。
  • hostname:主機名,功能變數名稱,比如www.baidu.com
  • port:埠號。當你訪問一個網站的時候,瀏覽器預設使用80埠。
  • path:查找路徑。比如:www.jianshu.com/trending/now後面的trending/now就是path
  • parameters: 資源文件名,有時候統一叫path
  • query:查詢字元串,比如:www.baidu.com/s?wd=python,後面的wd=python就是查詢字元串。
  • anchor:錨點,後臺一般不用管,前端用來做頁面定位的。

常見的協議:

  1. http:超文本傳輸協議,訪問的是遠程的網路資源,格式是http://
  2. https:協議相當於是http協議的安全版
  3. file:訪問的是本地電腦上的資源,格式是file://(不用加主機地址)
  4. mailto:訪問的是電子郵件地址,格式是mailto:
  5. ftp:訪問的是共用主機的文件資源,格式是 ftp://
  6. thunder:通過支持thunder(專用下載鏈接)協議的P2P軟體訪問該資源(代表軟體:迅雷),格式是thunder://

http 協議

http在網路架構中屬於應用層協議,通過瀏覽器發起http 協議可以跟伺服器進行通信。

HTTP(hypertext transport protocol)協議,中文叫超文本傳輸協議 是一種基於TCP/IP的應用層通信協議

這個協議詳細規定了 瀏覽器 和萬維網 伺服器 之間互相通信的規則,協議中主要規定了兩個方面的內容

  • 客戶端:用來向伺服器發送數據,可以被稱之為請求報文
  • 服務端:向客戶端返回數據,可以被稱之為響應報文

請求報文

  • 請求行
  • 請求頭
  • 空行
  • 請求體

響應報文

  • 響應行
  • 響應頭
  • 空行
  • 響應體

資料庫

  資料庫是“按照數據結構來組織、存儲和管理數據的倉庫”。是一個長期存儲在電腦內的、有組織的、可共用的、統一管理的大量數據的集合。簡單理解就是存儲數據的倉庫,我們可以通過我們的代碼根這個倉庫建立連接,這樣可以操作、查詢這些數據。

 資料庫通常分為關係型資料庫、非關係型資料庫。

關係型資料庫

  關係型資料庫和常見的表格比較相似,關係型資料庫中表與表之間是有很多複雜的關聯關係的。 常見的關係型資料庫有MysqlSqlServer等。在輕量或者小型的應用中,使用不同的關係型資料庫對系統的性能影響不大,但是在構建大型應用時,則需要根據應用的業務需求和性能需求,選擇合適的關係型資料庫。

常見關係型資料庫: Oracle,SQLServer,DB2,Mysql

非關係型資料庫

  NoSQL僅僅是一個概念,泛指非關係型的資料庫,區別於關係資料庫

  隨著近些年技術方向的不斷拓展,大量的NoSql資料庫如MongoDB、Redis、Memcache出於簡化資料庫結構、避免冗餘、影響性能的表連接、摒棄複雜分散式的目的被設計。NoSQL資料庫適合追求速度和可擴展性、業務多變的應用場景。對於非結構化數據的處理更合適,如文章、評論等

SQL

SQL 是 Structured Query Language 的縮寫,中文譯為“結構化查詢語言”。SQL 是一種電腦語言,用來存儲、檢索和修改關係型資料庫中存儲的數據。

通俗理解就是可以用來操作我們存儲在資料庫中的數據的語言,如查詢、刪除等

SELECT product_name, product_type
 FROM Product;
 WHERE 1 = 1 
 AND product_type = 'xx';
 
 // 多表聯查
 SELECT product_name, product_type
 FROM Product1 t1,Product2 t2
 WHERE 1 = 1 
 AND t1.id = t2.id;
 
 // 同理
 left join,
 right join
 
 其他分組、統計、排序等也很簡單

nginx 基本概念

Nginx是一個高性能的HTTP伺服器和反向代理web伺服器。在前端中我們知道一些基本的知識即可,通常我們用它來做靜態資源伺服器、介面反向代理。   常用命令
start nginx #啟動nginx
nginx -s reload     #重新載入Nginx配置文件,然後以優雅的方式重啟Nginx
nginx -s stop       #強制停止Nginx服務
nginx -s quit       #優雅地停止Nginx服務(即處理完所有請求後再停止服務)
nginx -h        #打開幫助信息
nginx -v        #顯示版本信息並退出
nginx -V        #顯示版本和配置選項信息,然後退出
nginx -t        #檢測配置文件是否有語法錯誤,然後退出
nginx -T        #檢測配置文件是否有語法錯誤,轉儲並退出
nginx -q        #在檢測配置文件期間屏蔽非錯誤信息
nginx -p prefix     #設置首碼路徑(預設是:/usr/share/nginx/)
nginx -c filename   #設置配置文件(預設是:/etc/nginx/nginx.conf)
nginx -g directives     #設置配置文件外的全局指令
killall nginx       #殺死所有nginx進程

配置註意事項

  1. 註意配置時 root與alias 區別,特別是我們前端打包時加了虛擬目錄,如果配置了 publicPath,那麼我們需要配置alias,而不是root
  2. 註意匹配規則、順序,通常匹配了就不會繼續匹配下,所以如果多個類似的介面首碼,需要反向代理到不同的服務時要註意配置的順序
  3. 介面反向代理時加 / 與不加的區別


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • #實驗六 存儲過程 第1關:增加供應商相關列sqty use demo; #代碼開始 #在S表中增加一列供應零件總數量(sqty),預設值為0。 altertable s add sqty intdefault0; #代碼結束 desc s; 第2關:定義、調用簡單存儲過程 use demo; #代 ...
  • #實驗七 函數與觸發器 第1關:定義、調用參數函數 相關知識 MySQL存儲函數 存儲函數和存儲過程一樣,都是在資料庫中定義一些 SQL 語句的集合。存儲函數可以通過 return 語句返回函數值,主要用於計算並返回一個值。而存儲過程沒有直接返回值,主要用於執行操作。 在 MySQL 中,使用 CR ...
  • 摘要:本文分析了分散式資料庫發展情況、分散式資料庫應用的主要問題,從行業應用的角度給出了分散式資料庫發展的建議。 本文分享自華為雲社區《數字化轉型下我國分散式資料庫應用挑戰及發展建議》,作者:資料庫領域科學家、華為雲資料庫GaussDB首席專家 馮柯。 當前,金融等重點行業都在進行數字化轉型,而分佈 ...
  • 業務場景 一般在項目開發中會有很多的統計數據需要進行上報分析,一般在分析過後會在後臺展示出來給運營和產品進行分頁查看,最常見的一種就是根據日期進行篩選。這種統計數據隨著時間的推移數據量會慢慢的變大,達到百萬、千萬條數據只是時間問題。 瓶頸再現 創建了一張user表,給create_time欄位添加了 ...
  • 隨著之家3D虛擬化需求的增加,各產品線使用Unity引擎的項目也越來越多,新老項目共存,代碼維護成本也隨之增加。代碼質量參差加之代碼規範仍沒有完全統一產生高昂學習成本進一步加重了項目維護負擔。 為應對這些問題,我們決定藉助主機廠數科產品線銷冠神器VR版本大升級為契機,開發一套移動端通用Unity代碼... ...
  • 上一篇我介紹瞭如何在VSCode Webview中實現點擊鏈接下載圖片或文件,本文介紹如何在預設瀏覽器中打開一個新的頁面。 在瀏覽器中,如果要實現打開一個新的頁面有許多種不同的方法,例如: window.open("https://www.cnblogs.com/jaxu", "_blank"); ...
  • 大家好,我是DOM哥。 圖譜年年有,今年我來盤! 之前已經盤完了 Vue 的技術圖譜,今天來盤 React 的。不管你是資深 React 用戶,還是剛入門想學習 React 的小白,相信都能幫助到你 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 今天有一個需求,點擊選中某個英文單詞,然後對這個單詞做一些處理,例如高亮背景、查看一些詳細信息等等,今天簡單實現了一下,效果如下:(支持移動端,chrome和sarafi瀏覽器均能正常使用。語言🚀 vue3 + typescript) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...