(一)闭包和 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 这个设计的存储模式。