(一)閉包和 lamda 表達式前端
5. 在上古編程時代尚未內的說法,咱們經過閉的方式向裏面傳遞參數。這樣就實現了一個和類差很少的功能python
(二)瀏覽器傳來的 Query算法
瀏覽器客戶端傳來 Query 的方法能夠有兩種,一種是用 GET 方法,另一種是用 POST 方法數據庫
GET 方法沒有body,依靠的是路由傳參,咱們直接解析出 path query 就能夠編程
GET後端
/test/demo_form.asp?name1=value1&name2=value2
POST瀏覽器
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
(三)類方法存在的意義緩存
(四)包和模塊安全
# import math
# from math import sin 這是模塊的導入方法
# 如何在模塊中導入呢? 這個時候咱們可使用點語法
# from routes.routes_simpleto import routes_dict as ^^^^
(五)摘要算法服務器
2. md5 的輸出結果爲 32 字符
sha1 的輸出結果爲 40 字符
咱們儲存在數據庫中的密碼最好不要是明文,若是被別人偷到數據庫就麻煩了。咱們經過摘要算法把密碼映射成一個定長的字符串。可是若是被別人偷到了字符串,仍是能夠在短期內揹包裏破解。或者經過彩虹表等東西直接查詢。
import hashlib # 要加密的是 'gua' # 用 ascii 編碼轉換成 bytes 對象
pwd = 'gua'.encode('ascii') # 建立 md5 對象
m = hashlib.md5(pwd) # 返回摘要字符串, 這裏是 c9c1ebed56b2efee7844b4158905d845
print(m.hexdigest()) # # 建立 sha1 對象
s = hashlib.sha1(pwd) # 返回摘要字符串, 這裏是 4843c628d74aa10769eb21b832f00a778db8b17e
print(s.hexdigest())
咱們的解決方案是經過加鹽的方法,增長盜取者破譯的時間成本。加鹽就是在生分的字符串上加入一些無心義的字段,好比:
YIHI&*……%……&c9c1ebed56b2efee7844b4158905d845
def salted_password(self, password, salt):
def md5hex(ascii_str):
return hashlib.md5(ascii_str.encode('ascii')).hexdigest()
hash1 = md5hex(password)
hash2 = md5hex(hash1 + salt)
return hash2
(五)Web 後端傳遞數據的原理
Web整個機制就像是人與機器在對話同樣,不過只是比較機械的對話。用戶給出一封信(HTTP 協議格式的信),服務器解析它而且機械地組織一封響應的信。(HTTP 協議)咱們對 Web 頁面的訪問是經過對路由的識別解析來完成的(Very important),不管是前端經過超級鏈接來訪問,仍是在前端頁面 form 表單中的 action = "/" 路徑,仍是在服務器來給瀏覽器的回信的時候加上 Location 字段來進行重定向都是經過路由來訪問的。若是咱們把後端的框架搭建好,那麼編寫路由函數就成了後端編程的主要工做。上古時期前端提交數據,就是用的 form 表單,而後依靠表單中的 action 數據實現路由跳轉。今天的 Web 技術已經實現了 Ajax 技術,能夠異步提交數據,和 Javascript 配合不用跳轉頁面就能夠拿到數據。
(六 )數據庫
數據庫分爲關係型數據庫和非關係型數據庫。關係新數據庫約束比較複雜,早期主要是給銀行設計的,爲了保證數據的安全,如 MySQL。最近十幾年 NoSQL 型的數據庫也是十分的流行,如:MongoDB。咱們在後端編程使用數據庫的時候會把數據庫的一些 API 封裝成咱們最初設計的 Model 類的樣子,因此加入數據庫咱們的後端操做方式基本沒有改變,仍是在使用 Model 這個設計的存儲模式。