初識nodejs
??19年年底一個偶然的機會接到年會任務(wù),有微信掃碼登錄、投票、彈幕等功能,于是決定用node 來寫幾個服務(wù),結(jié)果也比較順利。
??當時用看了下koa2的官方文檔,知道怎么連接數(shù)據(jù)庫、怎么映射表實體,怎么處理http,怎么處理異常等,就可以直接寫起來了。從應(yīng)用層面上來說 nodejs 入門還是挺簡單的,前幾天在整理語雀時發(fā)現(xiàn)前幾年整理的nodjs的文檔,這里分享下,希望對于初學者有些幫助。
什么是服務(wù)器
??服務(wù)器也是電腦,服務(wù)器是為電腦提供服務(wù)的電腦、設(shè)備,既然是電腦,那么它也一樣是由CPU,主板,內(nèi)存條,硬盤,機箱,電源等硬件組成。當然由于服務(wù)器的特殊性,根我們家用的電腦還是有區(qū)別,如大小,處理數(shù)據(jù)的快慢,溫度等。
??服務(wù)器也是計算機、電腦,只不過分工不同,如我們?nèi)祟愑嗅t(yī)生、護士、律師等,在計算機的世界中也是如此,專門提供服務(wù)的計算機,我們叫服務(wù)器。
??如在我們寫了一個網(wǎng)站,我們想讓其他人也能打開這個網(wǎng)址,這個時候我們可以把寫好的代碼發(fā)給他,讓他跑起來,雖然這樣也可以,但是這樣非常不友好,第一是用戶很多呢?第二并不是所有人都是程序員。所以這個時候如果把這個東西放到某臺計算機A上,然后別人可以通過某種服務(wù)來訪問(比如 http 服務(wù)),此時這個計算機A就叫服務(wù)器,當然現(xiàn)實生活中服務(wù)器不止這一種,還有如 數(shù)據(jù)服務(wù)器、文件服務(wù)器、應(yīng)用服務(wù)器、WEB服務(wù)器
等,根據(jù)計算機的服務(wù)請求,并進行相應(yīng)的處理,具備承擔服務(wù)和保障服務(wù)的能力。
通俗理解:服務(wù)器是提供計算機服務(wù)的設(shè)備。
常用linux命令
pwd | 顯示當前的目錄路徑 | ? |
ls | 顯示當前目錄下的內(nèi)容 | ? |
ls -R | 列出子目錄中的所有文件 | ? |
ls -a | 顯示隱藏的文件 | ? |
cd | 改變當前工作目錄 | cd .. 打開上一級,cd / 打開跟目錄 |
cls | 清除屏幕信息 | ? |
mkdir | 創(chuàng)建目錄 | ? |
rm | 刪除文件或者空目錄 | ? |
rmdir | 刪除空目錄 | ? |
rm -rf dir | 刪除非空目錄 | ? |
ps | 列出系統(tǒng)中當前正在運行的那些進程 | ? |
ps -ef | grep ssh | 查找特定進程信息 | ?ps -ef | grep mysql |
kill -9 pid | 終止某進程 | ? |
同步、異步
??同步就是指一個進程在執(zhí)行某個動作、請求時,如果這個動作需要一段時間才有結(jié)果,那么這個進程將會一直等待下去,直到收到返回信息才繼續(xù)執(zhí)行下去,反之異步,類似的概念還有 io 阻塞與非阻塞。如ui 界面中點擊一個按鈕給服務(wù)端發(fā)出一個請求,如果這個過程涉及成同步的,那么ui 會一直等待這個接口,在這個接口未返回時整個ui界面都是不可用的狀態(tài)。
網(wǎng)絡(luò)端口
??通俗的理解,把計算機想成一個大的菜市場,菜市場中的各個檔口就是安裝在電腦上的各個應(yīng)用程序,而檔口的編號就是類似我們說的端口。ip 只是知道菜市場的地址,并不知道具體根哪個檔口通信,這就是端口的作用。
??在看看比較專業(yè)的定義,端口號的主要作用是表示一臺計算機中的特定進程所提供的服務(wù)。網(wǎng)絡(luò)中的計算機是通過IP地址來代表其身份的,它只能表示某臺特定的計算機,但是一臺計算機上可以同時提供很多個服務(wù),如數(shù)據(jù)庫服務(wù)、FTP服務(wù)、Web服務(wù)等,我們就通過端口號來區(qū)別相同計算機所提供的這些不同的服務(wù),如常見的端口號21表示的是FTP服務(wù),端口號23表示的是Telnet服務(wù),端口號25指的是SMTP服務(wù)等。
url 格式??
URL的全稱是Uniform Resource Locator(統(tǒng)一資源定位符),它是因特網(wǎng)的萬維網(wǎng)服務(wù)程序上用于指定信息位置的表示方法。
通俗理解就是 URL就是資源的地址、位置,互聯(lián)網(wǎng)上的每個資源都有一個唯一的URL,通過1個URL,能找到互聯(lián)網(wǎng)上唯一的1個資源。
URL的一般語法格式為:protocol :// hostname[:port] / path / [:parameters][?query]#anchor其中帶方括號的為可選項
- protocol:代表的是訪問的協(xié)議,一般為http或者https以及ftp等。
- hostname:主機名,域名,比如www.baidu.com。
- port:端口號。當你訪問一個網(wǎng)站的時候,瀏覽器默認使用80端口。
- path:查找路徑。比如:www.jianshu.com/trending/now,后面的trending/now就是path。
- parameters: 資源文件名,有時候統(tǒng)一叫path
- query:查詢字符串,比如:www.baidu.com/s?wd=python,后面的wd=python就是查詢字符串。
- anchor:錨點,后臺一般不用管,前端用來做頁面定位的。
常見的協(xié)議:
- http:超文本傳輸協(xié)議,訪問的是遠程的網(wǎng)絡(luò)資源,格式是http://
- https:協(xié)議相當于是http協(xié)議的安全版
- file:訪問的是本地計算機上的資源,格式是file://(不用加主機地址)
- mailto:訪問的是電子郵件地址,格式是mailto:
- ftp:訪問的是共享主機的文件資源,格式是 ftp://
- thunder:通過支持thunder(專用下載鏈接)協(xié)議的P2P軟件訪問該資源(代表軟件:迅雷),格式是thunder://
http 協(xié)議
http在網(wǎng)絡(luò)架構(gòu)中屬于應(yīng)用層協(xié)議,通過瀏覽器發(fā)起http 協(xié)議可以跟服務(wù)器進行通信。
HTTP(hypertext transport protocol)協(xié)議,中文叫超文本傳輸協(xié)議 是一種基于TCP/IP的應(yīng)用層通信協(xié)議
這個協(xié)議詳細規(guī)定了 瀏覽器 和萬維網(wǎng) 服務(wù)器 之間互相通信的規(guī)則,協(xié)議中主要規(guī)定了兩個方面的內(nèi)容
- 客戶端:用來向服務(wù)器發(fā)送數(shù)據(jù),可以被稱之為請求報文
- 服務(wù)端:向客戶端返回數(shù)據(jù),可以被稱之為響應(yīng)報文
請求報文
- 請求行
- 請求頭
- 空行
- 請求體
響應(yīng)報文
- 響應(yīng)行
- 響應(yīng)頭
- 空行
- 響應(yīng)體
數(shù)據(jù)庫
??數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”。是一個長期存儲在計算機內(nèi)的、有組織的、可共享的、統(tǒng)一管理的大量數(shù)據(jù)的集合。簡單理解就是存儲數(shù)據(jù)的倉庫,我們可以通過我們的代碼根這個倉庫建立連接,這樣可以操作、查詢這些數(shù)據(jù)。
?數(shù)據(jù)庫通常分為關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫。
關(guān)系型數(shù)據(jù)庫
??關(guān)系型數(shù)據(jù)庫和常見的表格比較相似,關(guān)系型數(shù)據(jù)庫中表與表之間是有很多復雜的關(guān)聯(lián)關(guān)系的。 常見的關(guān)系型數(shù)據(jù)庫有Mysql,SqlServer等。在輕量或者小型的應(yīng)用中,使用不同的關(guān)系型數(shù)據(jù)庫對系統(tǒng)的性能影響不大,但是在構(gòu)建大型應(yīng)用時,則需要根據(jù)應(yīng)用的業(yè)務(wù)需求和性能需求,選擇合適的關(guān)系型數(shù)據(jù)庫。
常見關(guān)系型數(shù)據(jù)庫: Oracle,SQLServer,DB2,Mysql
非關(guān)系型數(shù)據(jù)庫
??NoSQL僅僅是一個概念,泛指非關(guān)系型的數(shù)據(jù)庫,區(qū)別于關(guān)系數(shù)據(jù)庫。
??隨著近些年技術(shù)方向的不斷拓展,大量的NoSql數(shù)據(jù)庫如MongoDB、Redis、Memcache
出于簡化數(shù)據(jù)庫結(jié)構(gòu)、避免冗余、影響性能的表連接、摒棄復雜分布式的目的被設(shè)計。NoSQL數(shù)據(jù)庫適合追求速度和可擴展性、業(yè)務(wù)多變的應(yīng)用場景。對于非結(jié)構(gòu)化數(shù)據(jù)的處理更合適,如文章、評論等
SQL
SQL 是?Structured Query Language
的縮寫,中文譯為“結(jié)構(gòu)化查詢語言”。SQL 是一種計算機語言,用來存儲、檢索和修改關(guān)系型數(shù)據(jù)庫中存儲的數(shù)據(jù)。
通俗理解就是可以用來操作我們存儲在數(shù)據(jù)庫中的數(shù)據(jù)的語言,如查詢、刪除等文章來源:http://www.zghlxwxcb.cn/news/detail-437310.html
SELECT product_name, product_type
FROM Product;
WHERE 1 = 1
AND product_type = 'xx';
// 多表聯(lián)查
SELECT product_name, product_type
FROM Product1 t1,Product2 t2
WHERE 1 = 1
AND t1.id = t2.id;
// 同理
left join,
right join
其他分組、統(tǒng)計、排序等也很簡單
nginx 基本概念
高性能的HTTP服務(wù)器和反向代理web服務(wù)器
。在前端中我們知道一些基本的知識即可,通常我們用它來做靜態(tài)資源服務(wù)器、接口反向代理。start nginx #啟動nginx
nginx -s reload #重新加載Nginx配置文件,然后以優(yōu)雅的方式重啟Nginx
nginx -s stop #強制停止Nginx服務(wù)
nginx -s quit #優(yōu)雅地停止Nginx服務(wù)(即處理完所有請求后再停止服務(wù))
nginx -h #打開幫助信息
nginx -v #顯示版本信息并退出
nginx -V #顯示版本和配置選項信息,然后退出
nginx -t #檢測配置文件是否有語法錯誤,然后退出
nginx -T #檢測配置文件是否有語法錯誤,轉(zhuǎn)儲并退出
nginx -q #在檢測配置文件期間屏蔽非錯誤信息
nginx -p prefix #設(shè)置前綴路徑(默認是:/usr/share/nginx/)
nginx -c filename #設(shè)置配置文件(默認是:/etc/nginx/nginx.conf)
nginx -g directives #設(shè)置配置文件外的全局指令
killall nginx #殺死所有nginx進程
配置注意事項文章來源地址http://www.zghlxwxcb.cn/news/detail-437310.html
- 注意配置時 root與alias 區(qū)別,特別是我們前端打包時加了虛擬目錄,如果配置了 publicPath,那么我們需要配置alias,而不是root
- 注意匹配規(guī)則、順序,通常匹配了就不會繼續(xù)匹配下,所以如果多個類似的接口前綴,需要反向代理到不同的服務(wù)時要注意配置的順序
- 接口反向代理時加 / 與不加的區(qū)別
到了這里,關(guān)于學node 之前你要知道這些的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!