day19-总结

一, HTTP协议

1.什么是URL

URL:统一资源定位符,通过1个URL,能找到互联网上唯一的1个资源

2.HTTP

1)HTTP(超文本传输协议,访问的是远程的网络资源)
2)HTTP协议的作用:规定客户端和服务器之间的数据传输格式,让客户端和服务器能有效地进行数据沟通。

3HTTP协议的特点

a.简单快速
因为HTTP协议简单,所以HTTP服务器的程序规模小,因而通信速度很快
b.灵活
HTTP允许传输各种各样的数据
c.HTTP0.9和1.0使用非持续连接
限制每次连接只处理一个请求,服务器对客服端的请求做出响应后,马上断开连接,这种方式可以节省传输时间

4.HTTP的基本通信过程

请求:客服端向服务器索要数据
a.请求头:包含了对客户端的环境描述,客户端请求信息等
b.请求体:客户端发给服务器的具体数据,比如文件数据
响应:服务器返回客户端相应的数据
a.响应头:包含了对服务器的描述,对返回数据的描述
b.响应体:服务器返回给客户端的具体数据,比如文件数据

5.发送请求

1)GET和POST请求的对比
GET:
在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开
POST:
发给服务器的参数全部放在请求体中

6关于GET和POST的选择

a.如果要传递大量数据,比如文件上传,只能用POST请求
b.GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
c.如果仅仅是索取数据(数据查询),建议使用GET
d.如果是增加,修改,删除数据,建议使用POST

二,多线程

import threading
from datetime import datetime
import time
# 1.线程
"""
每个进程默认都有一条线程,这个线程叫主线程。其他线程叫子线程
threading模块中Thread的对象就是线程对象,当程序中需要子线程就创建Thread类的对象
"""
def download(film_name):
    print('开始下载%s:%s'%(film_name,datetime.now()))
    time.sleep(3)
    print('%s下载结束:%s'%(film_name,datetime.now()))
if __name__ == '__main__':
    # download('aab')
    # download('bba')
    # download('bab')
    # 1.创建线程对象
    """
    Thread = (target=None,args=()) - 创建并且返回一个线程对象
    target - 函数类型(function),在线程启动的时候这个函数会在子线程中执行
    args - 元组,元组中的元素就是target对应的函数在子线程中调用的时候传的实参
    
    """
    t1 = threading.Thread(target=download,args=('aab',))
    t2 = threading.Thread(target=download,args=('bba',))
    t3 = threading.Thread(target=download,args=('bab',))
    # 2.启动线程
    """
    线程对象.start() - 让线程去执行线程中的任务
    """
    t1.start()
    t2.start()
    t3.start()
    t1.join()
    t2.join()
    t3.join()
from threading import *

# 程序结束
"""
线程中的任务执行完成线程就结束;程序出现异常结束的是线程,不是线程
进程中的所有线程结束进程才结束
"""
# 1.声明一个类继承Thread
# 2.实现类中的run方法,这个方法中的代码就是需要在子线程中执行的代码
# 3.需要子线程的时候就创建自己声明的类的对象,并且不需要任何参数
class DownloadThread(Thread):
     def run(self) -> None:
         print('run方法')
         print(current_thread())

if __name__ == '__main__':
    t1=DownloadThread()
    t1.start()

你可能感兴趣的:(day19-总结)