摘要:前言在公司網(wǎng)站開發(fā)中,我們往往借助于等網(wǎng)站開發(fā)框架去提高網(wǎng)站開發(fā)效率。
在公司網(wǎng)站開發(fā)中,我們往往借助于Flask、Django等網(wǎng)站開發(fā)框架去提高網(wǎng)站開發(fā)效率。那么在面試后端開發(fā)工程師的時候,面試官可能就會問到網(wǎng)站開發(fā)的底層原理是什么?
我們不止僅僅會使用框架開發(fā),還需要知其所以然
今天領(lǐng)大家不借助任何框架的基礎(chǔ)上手動搭建一個資料查找網(wǎng)站
如何實(shí)現(xiàn)一個靜態(tài)的服務(wù)器呢? 可以使用Python自帶的一個通訊模型:socket
python中內(nèi)置的網(wǎng)絡(luò)模型庫tcp / udp
import socket
def service_client(new_socket): request = new_socket.recv(1024) print(request)
如果瀏覽器在接收完http協(xié)議數(shù)據(jù)之后遇到了換行,自動將下面的數(shù)據(jù)轉(zhuǎn)成網(wǎng)站內(nèi)容body中去
response = "HTTP/1.1 200 OK /r/n"response += "/r/n"# 構(gòu)建你想要顯示的數(shù)據(jù)內(nèi)容response += "hello world"
new_socket.send(response.encode("utf-8"))
new_socket.close()
socket模塊需要兩個參數(shù) 網(wǎng)絡(luò)協(xié)議(pc ipv4 ipv6) 模型類型
def main(): tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
我們操作系統(tǒng)內(nèi)部有65535個服務(wù)端口,當(dāng)一個程序運(yùn)行的時候[進(jìn)程] 占用一個端口
瀏覽器軟件運(yùn)行占用的端口:80
文件上傳端口:22
網(wǎng)站指定端口:443
端口是有限的,當(dāng)程序完成任務(wù)之后一定要釋放端口 刷新資源
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_server_socket.bind(("", 80))
通過瀏覽器去訪問網(wǎng)站資源 [數(shù)據(jù) html css JavaScript 靜態(tài)文件(圖片 音頻)]
需要讓瀏覽器首先能找到這臺電腦 ip 才可以訪問這臺電腦的數(shù)據(jù)資源
需要綁定電腦的ip地址
等待瀏覽器鏈接
tcp_server_socket.listen(128)
while True: """ new_socket 負(fù)責(zé)向瀏覽器發(fā)送數(shù)據(jù)的 client_addr 記錄當(dāng)前鏈接電腦的信息(ip port) """ new_socket, client_addr = tcp_server_socket.accept() service_client(new_socket) # 使用new_socket向瀏覽器發(fā)送數(shù)據(jù)
if __name__ == "__main__": main()
出現(xiàn)亂碼,可以把utf-8改為GBK
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123625.html
摘要:本文的分享主要圍繞以下幾個方面能做什么常見應(yīng)用場景介紹如何學(xué)習(xí)語法基礎(chǔ)實(shí)戰(zhàn)面向?qū)ο缶幊虒?shí)戰(zhàn)練熟基礎(chǔ)小游戲項目的實(shí)現(xiàn)與實(shí)戰(zhàn)一能做什么一種編程語言往往可以應(yīng)用于多方面,有些方面比較常用,有些方面極為常用。比如表示是一個空列表。 摘要:Python語言的教程雖然隨處可見,但是忙于日常業(yè)務(wù)/學(xué)習(xí)的你或許:一直想要找個時間學(xué)一點(diǎn),但是又不知道該從何下手?本文將從Python能做什么,如何學(xué)習(xí)Py...
摘要:也就是說,我的篇文章的請求對應(yīng)個實(shí)例,這些實(shí)例都請求完畢后,執(zhí)行以下邏輯他的目的在于對每一個返回值這個返回值為單篇文章的內(nèi)容,進(jìn)行方法處理。 英國人Robert Pitt曾在Github上公布了他的爬蟲腳本,導(dǎo)致任何人都可以容易地取得Google Plus的大量公開用戶的ID信息。至今大概有2億2千5百萬用戶ID遭曝光。 亮點(diǎn)在于,這是個nodejs腳本,非常短,包括注釋只有71行。 ...
摘要:下面跟大家詳細(xì)分享一下寫爬蟲抓取靜態(tài)網(wǎng)站的全過程。而我們上面說的元字符都代表一定的規(guī)則和占據(jù)一定的字符。 遇到的需求 前段時間需要快速做個靜態(tài)展示頁面,要求是響應(yīng)式和較美觀。由于時間較短,自己動手寫的話也有點(diǎn)麻煩,所以就打算上網(wǎng)找現(xiàn)成的。 中途找到了幾個頁面發(fā)現(xiàn)不錯,然后就開始思考怎么把頁面給下載下來。 由于之前還沒有了解過爬蟲,自然也就沒有想到可以用爬蟲來抓取網(wǎng)頁內(nèi)容。所以我采取的辦...
前言 在若干次前的一場面試,面試官看我做過python爬蟲/后端 的工作,順帶問了我些后端相關(guān)的問題:你覺得什么是后端? 送命題。當(dāng)時腦瓦特了,答曰:邏輯處理和數(shù)據(jù)增刪改查。。。 showImg(https://user-gold-cdn.xitu.io/2019/4/24/16a4ed4fc8c18078); 當(dāng)場被懟得體無完膚,羞愧難當(dāng)。事后再反思這問題,結(jié)合資料總結(jié)了一下。發(fā)現(xiàn)自己學(xué)過的Re...
閱讀 2778·2021-11-17 09:33
閱讀 3114·2021-10-25 09:44
閱讀 1222·2021-10-11 10:59
閱讀 2413·2021-09-27 13:34
閱讀 2920·2021-09-07 10:19
閱讀 2151·2019-08-29 18:46
閱讀 1543·2019-08-29 12:55
閱讀 939·2019-08-23 17:11