儲備知識
web伺服器基本原理
大致流程
在服務端建立tcp服務程序,為了保證服務端可以同時處理多個請求,我們需要在每接受乙個請求後為其單獨使用乙個執行緒(或者程序)為其進行服務。
server = socket(af_inet, sock_stream)
server.setsockopt(sol_socket, so_reuseaddr, 1)
address = ('', 9876)
server.bind(address)
server.listen(10)
try:
while
true:
print("-------等待接受服務----------")
client, client_address = server.accept()
print("-------接受服務成功----------")
# 如果使用程序服務,可以在在後面把client關閉。
p = thread(target=deal_socket, args=(client,))
p.start()
except exception as e:
print(e)
finally:
server.close()
print("-------服務結束----------")
這裡的deal_socket函式就是我們為乙個請求服務的函式,在乙個單獨的執行緒中執行。
在處理url請求的函式中,我們需要讀取出客戶端的http請求。
def
deal_socket
(client):
print("-------開啟新的執行緒----------")
print("-------關閉新的執行緒----------")
在get_request_name_from_http函式中我們需要從原始的url請求中解析出http請求中我們需要的請求資源部分,這裡我們可以通過正規表示式完成簡單的完成解析。
# 注意這裡通過非貪婪模式匹配
return filename在解析到請求的靜態位址後就是簡單的讀取請求的檔案,然後已http協議的格式返回回去就行了。
完整**
自己動手擼乙個靜態部落格生成器
國慶期間試著擼了個靜態部落格工具 歡迎一起交流 github.com laoqiren yo npm npm npm 乙個靜態部落格生成器,採用node.js開發。yohe 喲呵,乙個會讓你發出 喲呵,不錯哦 感嘆的靜態部落格生成器。線上demo luoxia.me yohe site englis...
純手擼乙個rnn
原文 import copy,numpy as np np.random.seed 0 sigmoid函式 def sigmoid x output 1 1 np.exp x return output sigmoid導數 def sigmoid output to derivative outpu...
從頭擼乙個單鏈表
醉裡挑燈看劍,夢回吹角連營 最近在學習單鏈表時,對於單鏈表的頭節點指標的建立,以及如何給乙個鍊錶存入資料,這塊理解不是很到位。雖然明白鍊錶的基本操作,建立 插入 刪除 索引,但用 實現還是遇到一些問題難以理解,故寫一些 進行分析,終於弄清楚其實現過程,在此作一小結。插入新的節點 刪除節點分析 實現 ...