日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机专业术语简单释义

發(fā)布時(shí)間:2023/12/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机专业术语简单释义 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

計(jì)算機(jī)專業(yè)術(shù)語簡單釋義

先簡單聲明兩個(gè)基本概念
客戶端 :是為客戶提供本地服務(wù)的程序,最常見的有我們電腦上的瀏覽器
服務(wù)器 :就是指運(yùn)行著服務(wù)軟件的高性能計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng),用以存儲(chǔ)數(shù)據(jù),為客戶提供信息(一般也把服務(wù)軟件直接稱為服務(wù)器如nginx,uWSGI)

ftp/http/https/http2.0

ftp :指文本傳輸協(xié)議,性質(zhì)類似與我們平常所見的http,但解決了http協(xié)議中傳輸文件較慢的特點(diǎn)。打開瀏覽器,在地址欄直接輸入ftp://…..就可以進(jìn)行訪問相應(yīng)的服務(wù)器,既可以把文件傳送上存放,也可以從上面把文件下載到本地
http :指超文本傳輸協(xié)議,是客戶端和服務(wù)器之間請求和應(yīng)答的標(biāo)準(zhǔn),二者之間采用http協(xié)議進(jìn)行通信(數(shù)據(jù)傳遞),一般傳遞的數(shù)據(jù)是指超文本文檔(HTML文檔)
https :簡單來講就是http的安全版,是一種加密的超文本傳輸協(xié)議,由http+ssh(為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議)組合而成,使客戶多個(gè)并發(fā)的端與服務(wù)器之間加密通信,即在通信過程中要身份認(rèn)證,像一些網(wǎng)上銀行,安全性比較重要的網(wǎng)站都會(huì)使用https
http2.0 :是下一代的http協(xié)議,在http基礎(chǔ)上增加了一些新的功能,如增加加密技術(shù),引入二進(jìn)制框架(以前的http所不兼容),支持多個(gè)并發(fā)的http請求等等

TCP/IP

先簡單介紹一下協(xié)議的的四個(gè)層次
連接層:負(fù)責(zé)電路的鏈接
網(wǎng)絡(luò)層:負(fù)責(zé)為聯(lián)網(wǎng)機(jī)器分配地址和傳輸二進(jìn)制數(shù)據(jù)
傳輸層:負(fù)責(zé)傳輸文本數(shù)據(jù)
應(yīng)用層:負(fù)責(zé)傳輸最終態(tài)數(shù)據(jù),直接和用戶打交道(常見的協(xié)議有http,ftp)
后一層協(xié)議都是以前一層為基礎(chǔ)
TCP :是傳輸層的主要協(xié)議,負(fù)責(zé)發(fā)現(xiàn)傳輸問題,一有問題就發(fā)出信號(hào),要求重新傳輸
IP :是網(wǎng)絡(luò)層的主要協(xié)議,負(fù)責(zé)給每臺(tái)聯(lián)網(wǎng)機(jī)器規(guī)定一個(gè)IP地址
TCP/IP都是英特網(wǎng)上基礎(chǔ)的協(xié)議

gzip壓縮

gzip壓縮 :用于壓縮文件,通常我們在Linux系統(tǒng)下見到的以gz為后綴名的文件就是gzip格式的,它是一種文件壓縮格式。在Linux下可以直接用gzip命令來壓縮文件(或解壓文件),如 gzip test.tar 就可以把test.tar文件壓縮成test.tar.gz

nginx/uwsgi/cgi/php-fpm/fastcgi

nginx :是一款輕量級(jí)的http服務(wù)器,反向代理器,說它是一個(gè)服務(wù)器,更準(zhǔn)確的說它應(yīng)該是一款服務(wù)程序(由C語言編寫),運(yùn)行在服務(wù)器上。我們自己的電腦運(yùn)行nginx,可以作為一個(gè)簡單的服務(wù)器
uWSGI :區(qū)別WSGI和uwsgi,WSGI和uwsgi都是一種協(xié)議,uWSGI是實(shí)現(xiàn)了這兩種協(xié)議的web服務(wù)器,性質(zhì)類同nginx,是運(yùn)行在服務(wù)器上的一款服務(wù)軟件,可直接稱為服務(wù)器,一般與nginx配合使用,因?yàn)閚ginx有很好的靜態(tài)文件處理能力,將動(dòng)態(tài)內(nèi)容發(fā)給uWSGI,二者結(jié)合可以達(dá)到很好的服務(wù)效果
cgi :cgi是一種協(xié)議,規(guī)定服務(wù)器與cgi程序程序之間的通信(即應(yīng)該傳那些東西,那些東西不傳),區(qū)別cgi與cgi程序,cgi是協(xié)議,而cgi程序是實(shí)體(也就是程序),cgi程序一般是指php解釋器(如php-cgi)。
fastcgi :fastcgi也是一種協(xié)議,用于對(duì)進(jìn)程管理,提高cgi程序(php-cgi)的性能。php-cgi只是一個(gè)cgi程序,并不會(huì)進(jìn)程管理,所以就要一些調(diào)節(jié)php-cgi的進(jìn)程的程序
php-fpm :其實(shí)php-fpm就是上面所說的那些調(diào)節(jié)php-cgi進(jìn)程的管理器之一,即它是cgi程序進(jìn)程管理器,實(shí)現(xiàn)了fastcgi協(xié)議

高階函數(shù)/函數(shù)柯里化

高階函數(shù) :函數(shù)想必大家都知道,在C語言中經(jīng)常用到這一概念,那什么是高階函數(shù)呢?只要一個(gè)函數(shù)的參數(shù)能夠接收函數(shù)或者函數(shù)能夠返回函數(shù),我們就稱這樣的函數(shù)為高階函數(shù)
函數(shù)柯里化 :就是把接收多個(gè)參數(shù)的函數(shù)變換成為接收單一參數(shù)的函數(shù)的過程,這個(gè)接收單一參數(shù)的函數(shù)返回值為一個(gè)新函數(shù),這個(gè)新函數(shù)又可以接收原函數(shù)余下的參數(shù)。舉個(gè)例子(JavaScript)
function add(n)
{ return function(m)
{ rerurn m+n
}
add1=add(2)
print(add1(1))
輸出的結(jié)果就是3

函數(shù)式編程

函數(shù)式編程 :函數(shù)式編程,如同面向過程,面向?qū)ο蟮木幊谭绞揭粯?#xff0c;是一種編程思想和編程模式,模塊化是成功編程的關(guān)鍵,而函數(shù)式編程可以極大地改進(jìn)模塊化。函數(shù)式編程有很多特性,支持高階函數(shù),用遞歸作為控制流程的機(jī)制

前置條件/后置條件/循環(huán)不變量/代碼正確性檢驗(yàn)

前置條件 :前置條件就是把條件放在前面,先檢查,如果條件不符合,則后面的程序就沒有機(jī)會(huì)執(zhí)行(類似while模型)
后置條件 :后置條件是把條件放在后面,程序至少要被執(zhí)行一次,然后再檢查條件是否通過,如果通過則接著執(zhí)行,反之就不執(zhí)行(類似do…while模型)
循環(huán)不變量 :顧名思義,就是要在循環(huán)中保持不變的量,一個(gè)循環(huán)不變量是指在循環(huán)開始和循環(huán)中每一次迭代時(shí)永遠(yuǎn)為真的量,可以幫助我們在寫循環(huán)時(shí)不至因細(xì)節(jié)而出問題,用于檢驗(yàn)循環(huán)的正確性。代碼實(shí)例可參見http://www.douban.com/group/topic/11516372/
代碼正確性檢驗(yàn) :在寫代碼的過程中出現(xiàn)錯(cuò)誤是在所難免的,代碼正確性檢驗(yàn)就是用來測試程序,將測試過程中的結(jié)果和預(yù)期結(jié)果比較,分析出錯(cuò)原因,然后加以改正

hash函數(shù)/曼哈希/加密算法

hash函數(shù) :是一個(gè)將一種任意長度的消息壓縮到到某一固定長度的消息的函數(shù),主要應(yīng)用于信息加密,他把一些不同長度的信息轉(zhuǎn)化成雜亂的128位的編碼
慢哈希 :讓哈希函數(shù)變慢,使那些想破解的人認(rèn)為破解這個(gè)沒有多大意義
加密算法 : 是一種把原來是明文的文件或數(shù)據(jù)處理成一種不可讀的代碼

線程/進(jìn)程/協(xié)程/并行算法

進(jìn)程 :簡單來講就是某個(gè)獨(dú)立功能的程序的一次動(dòng)態(tài)執(zhí)行過程,多個(gè)進(jìn)程可以同時(shí)包含同一個(gè)程序,程序執(zhí)行完畢,進(jìn)程就消亡了,進(jìn)程的組成包括正在執(zhí)行的程序,以及其對(duì)應(yīng)的數(shù)據(jù)等,進(jìn)程是是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位
線程 :線程是進(jìn)程的子集,一個(gè)進(jìn)程可以包含多個(gè)線程,每一個(gè)線程都共享進(jìn)程中的資源,所以線程占用的資源比較少??梢园丫€程理解為輕量級(jí)的進(jìn)程
協(xié)程 :進(jìn)程和線程都是由系統(tǒng)控制的,而協(xié)程是用戶層面的,有用戶自己承擔(dān)起調(diào)度責(zé)任,這樣就避免了無意義的調(diào)度,但同時(shí)也失去了使用CPU的能力
并行算法 :是把一個(gè)簡單的問題分成若干個(gè)相互獨(dú)立的自問題,然后使用多個(gè)機(jī)器去處理,同時(shí)求解每一個(gè)子問題,最終獲得原問題的解,這種算法可以提高運(yùn)算速度

文件系統(tǒng)

文件系統(tǒng) :文件系統(tǒng)是操作系統(tǒng)中專門負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu),我們平時(shí)對(duì)文件的修改,刪除,移動(dòng)等操作都屬于文件系統(tǒng)的范疇。文件系統(tǒng)的體系結(jié)構(gòu)可用樹狀圖表示

html/css/js

這是一套做網(wǎng)頁,前端設(shè)計(jì)的標(biāo)準(zhǔn)套裝
html :超文本標(biāo)記語言,所謂超文本,就是指頁面內(nèi)不僅僅只有純文本,還有圖片,鏈接,視頻,音樂等。平時(shí)在瀏覽器上瀏覽的網(wǎng)頁基本上都是用html所寫
css :css是用來美化頁面的,控制頁面的布局,比如一段文字應(yīng)該放在頁面的什么位置,用什么顏色顯示等。
js :JavaScript的簡寫,是一種增強(qiáng)表現(xiàn)力的腳本語言,可以為html頁面增加許多動(dòng)態(tài)性效果,如在一個(gè)網(wǎng)頁上點(diǎn)擊“登錄”,頁面就會(huì)彈出一個(gè)登錄的小窗口

bcd/mit licenses

bcd :BCD碼,也稱二碼十進(jìn)數(shù),是一種二進(jìn)制的數(shù)字編碼形式,這種編碼形式能夠是二進(jìn)制和十進(jìn)制數(shù)得以快速的轉(zhuǎn)換。它常用于會(huì)計(jì)系統(tǒng)
mit licenses :是一種非常寬松的許可證,使用該許可證的軟件有以下權(quán)限:免費(fèi),任何人使用,經(jīng)營這種軟件不受任何限制,包括修改,出版,發(fā)行等

cocoa

cocoa :是mac os x系統(tǒng)上一種應(yīng)用程序環(huán)境(運(yùn)行環(huán)境和開發(fā)環(huán)境),和Java一樣

mvc模式

mvc :mvc是一種框架模式,m代表模型(是程序的核心,處理核心程序),v代表視圖(顯示數(shù)據(jù)),c代表控制器(處理輸入,調(diào)用模型),這種模式使這三者分離開來,有利于開發(fā)人員專注于其中一個(gè)方面,可以對(duì)這三塊同時(shí)進(jìn)行開發(fā)

裝飾者/裝飾器模式

裝飾者 :可以動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的功能,與繼承類似(當(dāng)有些問題不適合用子類來進(jìn)行拓展的話可以考慮使用裝飾者),但比繼承中生成子類的方式要更加靈活,更加方便,它避免了繼承體系的臃腫。
裝飾器模式 :就是使用裝飾者為對(duì)象添加新功能的模式,在為一個(gè)對(duì)象添加新功能時(shí)有有三種方式:直接修改對(duì)象,用子類來拓展,使用對(duì)象組合,裝飾器模式就是基于第三種方式,很靈活地為對(duì)象添加新功能

socket/websocket

socket :通常稱之為套接字,可以理解把它為是一種“打開——讀/寫——關(guān)閉”模式的實(shí)現(xiàn),在服務(wù)器與客戶端通訊時(shí),服務(wù)器與客戶端各自創(chuàng)建一個(gè)“文件”(即創(chuàng)建一個(gè)socket),在建立連接后,可以向自己建立的文件中寫入內(nèi)容,供對(duì)方讀取,通訊完畢則關(guān)閉文件
websocket :是html5中的一種新協(xié)議,他改變了服務(wù)器被動(dòng)接受請求的局面,以前都是服務(wù)器在接收到請求后,才可以向客戶端發(fā)送數(shù)據(jù),而websocket協(xié)議中服務(wù)器可以主動(dòng)地向客戶端發(fā)送數(shù)據(jù),實(shí)現(xiàn)了服務(wù)器與客戶端之間的雙工通訊

opengl/opencv

opengl :是一個(gè)開放的圖形庫,是跨平臺(tái),跨語言的專業(yè)圖形接口。例如在vc++ 6.0中使用OpenGL,我們要把OpenGL所對(duì)應(yīng)的庫鏈接到工程中,在編寫程序時(shí)包含相應(yīng)的頭文件,然后調(diào)用其中的函數(shù),這樣就實(shí)現(xiàn)了對(duì)OpenGL的使用
opencv :如同opengl一樣,opencv也是一個(gè)開源的庫,他是一個(gè)視覺庫,opengl專注于圖形處理,而opencv主要提供音頻方面的處理,比如降低噪音,目標(biāo)的識(shí)別等

多態(tài)

多態(tài) :在面向?qū)ο蟮木幊陶Z言(c++,Java)中簡單來說,多態(tài)是指同一操作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的效果。如Java中多態(tài)就體現(xiàn)在方法的重載和重寫上。多態(tài)的優(yōu)點(diǎn)是可以降低代碼的耦合度

像素/長度/px/分辨率/ppi

像素 :即圖像元素,是構(gòu)成圖像最基本的單元
長度 :長度是一維空間的度量,指空間的尺度
分辨率 :單位尺寸上的像素點(diǎn)數(shù)目的多少就稱為分辨率,比如,有一英寸寬一英寸的圖片,水平分成30條,垂直分成40行,那么這幅圖片共有1200個(gè) 像素點(diǎn),則分辨率為1200
ppi :ppi表示每英寸所擁有的像素?cái)?shù)目,是圖像的分辨率的單位

編碼原理/代碼運(yùn)行原理

編碼原理 :將高級(jí)程序設(shè)計(jì)語言(c,c++,Java等)變換成計(jì)算機(jī)能夠識(shí)別的機(jī)器語言,以便計(jì)算機(jī)進(jìn)行處理,如用C語言編寫的程序文件(.c),經(jīng)過編譯后得到.obj文件,里面是機(jī)器代碼,計(jì)算機(jī)就可以識(shí)別

半加器/全加器/提前進(jìn)位加法器

半加器/全加器 :半加器和全加器是算術(shù)電路中的基本單元,他們是完成一位二進(jìn)制數(shù)相加的一種邏輯電路,半加器不考慮低位來的進(jìn)位,只計(jì)算兩個(gè)二進(jìn)制數(shù)相加,輸出本位和和進(jìn)位;全加器能進(jìn)行加數(shù)、被加數(shù)和低位來的進(jìn)位信號(hào)相加,輸出本位和和進(jìn)位信號(hào);也就是說半加器兩個(gè)輸入,兩個(gè)輸出,全加器三個(gè)輸入,兩個(gè)輸出
提前進(jìn)位加法器 :提前進(jìn)位加法器,是對(duì)普通全加器進(jìn)行改善而設(shè)計(jì)成的并行加法器,全加器在串聯(lián)時(shí)互相進(jìn)位會(huì)產(chǎn)生延遲,提前進(jìn)位加法器通過增加一個(gè)邏輯電路改變了全加器的這一缺點(diǎn)

mysql/mongodb/sql/nosql

mysql :是一個(gè)關(guān)系型數(shù)據(jù)庫,他將數(shù)據(jù)保存在不同的表中,而不是將所有的數(shù)據(jù)放在一個(gè)大倉庫內(nèi),這樣就提高了靈活性
mongodb :mongodb也是一個(gè)數(shù)據(jù)庫,不過它是非關(guān)系型的數(shù)據(jù)庫,也稱為文檔型數(shù)據(jù)庫,它適合于大規(guī)模的數(shù)據(jù)存儲(chǔ),在這方面它勝出mysql,但它占用的空間也比較大
sql :是一種用于管理關(guān)系型數(shù)據(jù)庫系統(tǒng)的程序設(shè)計(jì)語言,數(shù)據(jù)庫的管家,使用它可以處理數(shù)據(jù)庫(mysql)中的數(shù)據(jù),常見的是實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的增刪改查
nosql :nosql是一種泛指,泛指非關(guān)系型數(shù)據(jù)庫,上面的mongodb就是一種nosql型數(shù)據(jù)庫,它的初現(xiàn)是為了解決關(guān)系型數(shù)據(jù)庫難以克服的大數(shù)據(jù)難題

git/svn/版本控制

git :git是一款免費(fèi)的,開源的分布式版本控制系統(tǒng),也可以說是一款軟件,用于有效地項(xiàng)目版本管理,簡言之,git可以讓任何人毫無困難地下載一份項(xiàng)目源代碼副本到他們自己的機(jī)器上,做出修改,然后,覺得滿意了就將修改的部分上傳回項(xiàng)目的集中代碼庫,而且git可以令每個(gè)人做出的修改都無縫融合起來
svn :svn是與git同級(jí)的概念,svn是集中式版本控制系統(tǒng),依賴于一個(gè)中心服務(wù)器,所有開發(fā)者在開始新一天的工作之前必須從服務(wù)器獲取代碼,然后開發(fā),最后解決沖突(沖突要比git少),提交,所有的版本信息都放在服務(wù)器上。如果脫離了服務(wù)器(或者說斷掉了網(wǎng)絡(luò)),開發(fā)者基本上可以說是無法工作的
版本控制 :是一種記錄項(xiàng)目文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng),特別是于軟件來說,修改一行代碼,或者是一個(gè)參數(shù),軟件就有可能發(fā)生巨大的變化,很多開發(fā)者同時(shí)在修改,就沒人也沒辦法記住這些修改,版本控制(軟件)就是用來幫忙記住這些個(gè)修改的手段

ssh

ssh :ssh是建立在應(yīng)用層和傳輸層之間的提供安全性的協(xié)議,傳統(tǒng)的網(wǎng)絡(luò)傳輸協(xié)議(ftp,http),他們在網(wǎng)絡(luò)上用明文傳送數(shù)據(jù),很不安全,容易受到“中間人“這種方式的攻擊。用ssh,你可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,這樣”中間人”這種攻擊方式就不可能實(shí)現(xiàn)了,還有一個(gè)好處就是使用ssh傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,可以提高傳輸速度

php是世界上最好的語言/pythonic

php是世界上最好的語言 :php是一種嵌入在html并由服務(wù)器解釋執(zhí)行的腳本語言,php文件能夠包含文本html,css以及php代碼,php能夠生成動(dòng)態(tài)頁面內(nèi)容,能夠創(chuàng)建、打開、讀取、寫入、刪除以及關(guān)閉服務(wù)器上的文件,能夠添加、刪除、修改數(shù)據(jù)庫中的數(shù)據(jù),能夠限制用戶訪問網(wǎng)站中的某些頁面
說“php是世界上最好的語言”,其實(shí)是黑它的。在所有生產(chǎn)語言中,即使不能說php是最爛的,也是最爛的之一。舉個(gè)小例子,php中empty()函數(shù)的使用,就有點(diǎn)坑
pythonic : pythonic是python一些慣用法,簡單說就是符合python語言編程理念的代碼風(fēng)格,一個(gè)python程序,如果不pythonic,看起來就會(huì)累贅,讓人費(fèi)解

ORM

ORM :是對(duì)象程序和數(shù)據(jù)庫之間映射,將面向?qū)ο蟪绦蛑械膶?duì)象數(shù)據(jù)存到關(guān)系數(shù)據(jù)庫中。本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式,面向?qū)ο蟪绦?#xff0c;如Java,關(guān)系型數(shù)據(jù)庫,如mysql

下面來詳細(xì)介紹幾組概念

nginx/uWSGI/cgi/php-cgi/fastcgi/php-fpm
先聲明nginx和uWSGI在下文中直接用server來代替
在這幾個(gè)部分中,server,php-cgi,php-fpm是實(shí)體(即程序),而cgi,fastcgi是協(xié)議。cgi是用于規(guī)定server與php-cgi(即cgi程序)之間的通信,fastcgi規(guī)定php-cgi與php-fpm(cgi程序進(jìn)程管理器)之間的通信,這是他們之間的基本關(guān)系
對(duì)于server,如果請求是html文件,那么server會(huì)去文件系統(tǒng)中找到這個(gè)文件,發(fā)送給客戶端,這里分發(fā)的是靜態(tài)數(shù)據(jù)。但是,如果現(xiàn)在請求的是php文件(xxx.php),根據(jù)配置文件,server(nginx)知道這個(gè)不是靜態(tài)文件,需要去找PHP解析器來處理,那么他會(huì)把這個(gè)請求簡單處理后交給php解釋器。server會(huì)傳哪些數(shù)據(jù)給php解釋器呢?cgi就是規(guī)定要傳哪些數(shù)據(jù)、以什么樣的格式傳遞給后方處理這個(gè)請求的協(xié)議。
當(dāng)server收到xxx.php這個(gè)請求后,會(huì)啟動(dòng)對(duì)應(yīng)的cgi程序,這里就是php的解析器。接下來php解析器會(huì)解析文件,處理請求,再以規(guī)定cgi協(xié)議規(guī)定的格式把結(jié)果返回給server。server再把結(jié)果返回給客戶端。
當(dāng)我們的server每次接收到xxx.php這種請求后,server會(huì)把這些請求交給php-cgi處理,php-cgi對(duì)每個(gè)請求都會(huì)執(zhí)行這些步驟,每次都要啟動(dòng)進(jìn)程,非常麻煩,非常累,所以處理每個(gè)的時(shí)間會(huì)比較長。但php-cgi只是一個(gè)cgi程序,并不會(huì)進(jìn)程管理,于是就出現(xiàn)了一些能夠調(diào)度php-cgi進(jìn)程的程序,即cgi進(jìn)程管理器php-fpm,可以說php-fpm實(shí)現(xiàn)了fastcgi協(xié)議,php-fpm工作原理是:先啟一個(gè)master,解析配置文件,然后再啟動(dòng)多個(gè)worker。當(dāng)請求過來時(shí),master會(huì)傳遞給一個(gè)worker,然后立即可以接受下一個(gè)請求。這樣就避免了重復(fù)的勞動(dòng),效率自然是高。而且當(dāng)worker不夠用時(shí),master可以根據(jù)配置提前啟動(dòng)幾個(gè)worker等著;當(dāng)然當(dāng)空閑worker太多時(shí),也會(huì)停掉一些,這樣就提高了性能,也節(jié)約了資源。這就是php-fpm的對(duì)進(jìn)程的管理。
session/cookie
先講一下,http協(xié)議本身是無狀態(tài)的,客戶端只需要簡單的向服務(wù)器請求某些文件,無論是客戶端還是服務(wù)器都不會(huì)紀(jì)錄彼此過去的行為,每一次請求之間都是獨(dú)立的。
session和cookie機(jī)制則是在客戶端與服務(wù)器之間保持狀態(tài)的解決方案,session是服務(wù)端的處理機(jī)制,cookie是客戶端的處理機(jī)制。下面來打個(gè)比喻說明一下cookie與session的之間的2區(qū)別和聯(lián)系記錄方式。
有一家奶茶店規(guī)定,只要一位顧客在店里購買奶茶數(shù)量累計(jì)超過五杯,就免費(fèi)贈(zèng)送一杯奶茶。所以店主就要記錄每一位的客戶的消費(fèi)數(shù)量,有如下兩種記錄方式。
1.發(fā)給顧客一張卡片,上面記錄著消費(fèi)的數(shù)量。每次消費(fèi)時(shí),如果顧客出示這張卡片,則此次消費(fèi)就會(huì)與以前或以后的消費(fèi)相聯(lián)系起來。這種做法就是在客戶端保持狀態(tài)(cookie)。
2.發(fā)給顧客一張會(huì)員卡,除了卡號(hào)之外什么信息也不紀(jì)錄,每次消費(fèi)時(shí),如果顧客出示該卡片,則店員在店里的紀(jì)錄本上找到這個(gè)卡號(hào)對(duì)應(yīng)的紀(jì)錄添加一些消費(fèi)信息。這種做法就是在服務(wù)器端保持狀態(tài)(session)。
cookie機(jī)制的基本原理就如上面的例子1一樣簡單,但是還有幾個(gè)問題需要解決:“卡片”如何分發(fā);“卡片”的內(nèi)容;以及客戶如何使用“卡片”。cookie分發(fā)是通過擴(kuò)展http協(xié)議來實(shí)現(xiàn)的,服務(wù)器通過在http的響應(yīng)頭中加上一行特殊的指示以提示瀏覽器按照指示生成相應(yīng)的cookie。cookie的使用是由瀏覽器按照一定的原則在后臺(tái)自動(dòng)發(fā)送給服務(wù)器的。cookie可以設(shè)置過期時(shí)間,如果不設(shè)置過期時(shí)間,則表示這個(gè)cookie的生命期為瀏覽器會(huì)話期間,只要關(guān)閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽器會(huì)話期的 cookie被稱為會(huì)話cookie。會(huì)話cookie一般不存儲(chǔ)在硬盤上而是保存在內(nèi)存里,當(dāng)然這種行為并不是規(guī)范規(guī)定的。如果設(shè)置了過期時(shí)間,瀏覽器就會(huì)把cookie保存到硬盤上,關(guān)閉后再次打開瀏覽器,這些cookie仍然有效直到超過設(shè)定的過期時(shí)間。
seeion機(jī)制的基本原理就如上面的例子2,是一種服務(wù)端的機(jī)制。當(dāng)程序需要為某個(gè)客戶端的請求創(chuàng)建一個(gè)session的時(shí)候,服務(wù)器首先檢查這個(gè)客戶端的請求里是否已包含了一個(gè)session標(biāo)識(shí)-稱為session id(也就是上面所說的會(huì)員卡卡號(hào)),如果已包含一個(gè)session id則說明以前已經(jīng)為此客戶端創(chuàng)建過session,服務(wù)器就按照session id把這個(gè)session檢索出來使用(如果檢索不到,可能會(huì)新建一個(gè)),如果客戶端請求不包含session id,則為此客戶端創(chuàng)建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的session id,session id的值是一個(gè)既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個(gè)session id將被在本次響應(yīng)中返回給客戶端保存??蛻舳税堰@個(gè)session id保存到cookie,所以采用session機(jī)制是建立在cookie機(jī)制的基礎(chǔ)上的
html/css/js(基本概念前面已經(jīng)介紹)
打個(gè)不是很恰當(dāng)比喻來說明一下這三者之間的關(guān)系,比如你要建一個(gè)房子,那么你要用到的材料(如磚頭,瓦片等)就是html,你打算把門窗建多大,在什么地方,就要css實(shí)現(xiàn),你把一把椅子從東邊移到西邊的過程屬于js范疇
一個(gè)網(wǎng)頁分為三層,結(jié)構(gòu),表現(xiàn),行為。用html書寫結(jié)構(gòu);用css控制樣式,如讓網(wǎng)頁橫排或者豎排,讓每個(gè)元素表現(xiàn)出各種樣式(比如粗體字,顏色,邊距,浮動(dòng)…)等;用js控制事件,如讓網(wǎng)頁顯示當(dāng)前的時(shí)間和滾動(dòng)圖片等
在一個(gè)html文件中可以可以同時(shí)出現(xiàn)css和js,即它們在head下直接標(biāo)記。當(dāng)然也可以把css,js編寫在一個(gè)以.css和.js為后綴的文件里,然后把該文件鏈接到網(wǎng)頁文件中,使用html中的link標(biāo)簽
mvc
mvc是一種框架模式,m代表模型(是程序的核心,處理核心程序),v代表視圖(顯示數(shù)據(jù)),c代表控制器(處理輸入,調(diào)用模型),它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開。使用mvc應(yīng)用程序被分成三個(gè)核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。
模型
模型包含了應(yīng)用問題的核心數(shù)據(jù)、邏輯關(guān)系和計(jì)算功能,它封裝了所需的數(shù)據(jù),提供了完成問題處理的操作過程??刂破饕罁?jù)I/O的需要調(diào)用這些操作過程。模型還為視圖獲取顯示數(shù)據(jù)而提供了訪問其數(shù)據(jù)的操作。
視圖
視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關(guān)的數(shù)據(jù),并能接收用戶的輸入數(shù)據(jù),但是它并不進(jìn)行任何實(shí)際的業(yè)務(wù)
控制器
控制器通過時(shí)間觸發(fā)的方式,接受用戶的輸入。控制器如何獲得事件依賴于界面的運(yùn)行平臺(tái)??刂破魍ㄟ^事件處理過程對(duì)輸入事件進(jìn)行處理,并為每個(gè)輸入事件提供了相應(yīng)的操作服務(wù),把事件轉(zhuǎn)化成對(duì)模型或相關(guān)視圖的激發(fā)操作。
mvc的實(shí)現(xiàn)
1. 分析應(yīng)用問題,對(duì)系統(tǒng)進(jìn)行分離
分析應(yīng)用問題,分離出系統(tǒng)的內(nèi)核功能、對(duì)功能的控制輸入、系統(tǒng)的輸出行為三大部分。設(shè)計(jì)模型部件使其封裝內(nèi)核數(shù)據(jù)和計(jì)算功能,提供訪問顯示數(shù)據(jù)的操作,提供控制內(nèi)部行為的操作以及其他必要的操作接口。以上形成模型類的數(shù)據(jù)構(gòu)成和計(jì)算關(guān)系。這部分的構(gòu)成與具體的應(yīng)用問題緊密相關(guān)。
2. 設(shè)計(jì)和實(shí)現(xiàn)每個(gè)視圖
設(shè)計(jì)每個(gè)視圖的顯示形式,它從模型中獲取數(shù)據(jù),將它們顯示在屏幕上。
3. 設(shè)計(jì)和實(shí)現(xiàn)每個(gè)控制器
對(duì)于每個(gè)視圖,指定對(duì)用戶操作的響應(yīng)時(shí)間和行為。在模型狀態(tài)的影響下,控制器使用特定的方法接受和解釋這些事件。控制器的初始化建立起與模型和視圖的聯(lián)系,并且啟動(dòng)事件處理機(jī)制。事件處理機(jī)制的具體實(shí)現(xiàn)方法依賴于界面的工作平臺(tái)。
4. 控制器的可安裝性和可卸載性,帶來了更高的自由度,并且?guī)椭纬筛叨褥`活性的應(yīng)用??刂破髋c視圖的分離,支持了視圖與不同控制器結(jié)合的靈活性,以實(shí)現(xiàn)不同的操作模式,例如對(duì)普通用戶、專業(yè)用戶、或不使用控制器建立的只讀視圖。這種分離還為在應(yīng)用中集成新的I/O設(shè)備提供了途徑。
mvc的優(yōu)點(diǎn)和不足之處
優(yōu)點(diǎn):
1. 低耦合性
   視圖層和業(yè)務(wù)層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需要改動(dòng)MVC的模型層即可。因?yàn)槟P团c控制器和視圖相分離,所以很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。
2. 模型的可移植性
因?yàn)槟P褪仟?dú)立于視圖的,所以可以把一個(gè)模型獨(dú)立地移植到新的平臺(tái)工作。需要做的只是在新平臺(tái)上對(duì)視圖和控制器進(jìn)行新的修改。
3. 快速的部署
   使用mvc模式使開發(fā)時(shí)間得到相當(dāng)大的縮減,它使程序員集中精力于業(yè)務(wù)邏輯,界面程序員(html開發(fā)人員)集中精力于表現(xiàn)形式上。
4. 有利于軟件工程化管理
   由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過工程化、工具化管理程序代碼。
不足之處:
1. mvc并不適合小型甚至中等規(guī)模的應(yīng)用程序,在小型項(xiàng)目中如果采用mvc模式,使模型、視圖與控制器分離,會(huì)增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過多的更新操作,降低運(yùn)行效率。
2. 視圖對(duì)模型數(shù)據(jù)的低效率訪問。如果不采用mvc模式,很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫,以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過中間層來完成。

總結(jié)

以上是生活随笔為你收集整理的计算机专业术语简单释义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。