v1.0需求:
实现动态数据
实现页面跳转
实现页面可视化
HTML 文件
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112{% load static %}<!DOCTYPE html><html lang="cn"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" ...
数据类型1.字符串
定义:‘’,”“,‘’‘’‘’
json:
json.loads():json 字符串 —-> 字典
json.dumps():字典 —-> json
2.列表与元组
元组 —-> 数据不允许修改
列表 —-> 数据可以更改
3.字典
定义:{‘键’:值}
键是唯一的,值可以不唯一
4.集合(set)
定义:一个无序的不重复的元素序列
可以使用大括号{}或者 set()函数创建集合
创建空集合必须使用set()而不是{}
去重:
123list1 = [1,2,3,3]print(set(list1)) # {1, 2, 3}
交集:
1234set1 = {1,2,3,4}set2 = {4,5,6,7}print(set1 & set2) # {4}
并集:
1234set1 = {1,2,3,4}set2 = {4,5,6,7}print(set1 | set2) # ...
一、网络编程技术概述1.软件开发架构
应用类 — C/S 架构
C/S :客户端与服务器端架构,客户端 泛指 应用程序 EXE ,程序需要先安装才能运行,对系统环境依赖较大。
Web 类 — B/S 架构
B/S :浏览器端与服务器端架构,用户通过 HTTP 请求服务器端相关的资源。
2.网络通信要素
IP 地址 :互联网协议地址
端口 :设备与外界通讯交流的出口
传输协议
IP 地址 精确到 具体的一台电脑,而 端口 精确到 具体的程序
3.通信协议通信协议:互联网的核心就是由一堆协议组成,协议就是标准。
七层网络协议模型
二、Socket 通信流程1.Socket 概念Socket :是应用层与 TCP/IP 协议族通信的中间软件抽象层,它是一组接口。
在设计模式中,Sorcket 其实就是一个门面模式,它把复杂的 TPC/IP 协议族隐藏在 Socket 接口后面,对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议。
1.websocket (应用层) :通过 HTTP 协议进行传输,
2.socket (传输层) :通过 TCP ...
一、端口扫描的原理端口扫描原理 : 尝试与目标主机建立连接,如果目标主机有回复则说明端口开放。
TCP 连接 : 通过使用三次握手 与目标主机建立标准的 tcp 连接。这种方法更容易被发现,被目标主机记录。
实现简单,对操者权限没有严格要求
二、设计方案规划
建立 TCP 连接
查看连接返回
判断连接返回值
循环扫描剩余端口
三、代码实现功能socket(family,tupe)
family : 代表家族地址。可为 AF_INET 或者 AF_UNIX
AF_INET : 包含 Internet 地址
AF_UNIX : 用于同一台机器上的进程间的通信。
type : 代表 套接字 类型。 可为 SOCK_STREAM 或者 SOCK_DGRAM
SOCK_STREAM : 流套接字, 也叫 TCP 套接字
SOCK_DGRAM : 数据报套接字, 也叫 UDP 套接字
默认为 family = AF_INET type = SOCK_STREAM
客户端 套接字
s.connect() : 主动初始化 TCP 服务器连接。
一般 address 的格式 元组(hos ...
一、多线程的概述1. 进程与线程
进程 :在系统中正在运行的一个 应用程序 ,程序一旦运行就是进程。
进程 —- 资源分配的最小单位。
线程 : 系统分配处理时间资源的基本单元,或者说进程之内独立执行的一个单元试行流。
线程 —- 程序执行的最小单位。
进程 中最少有一个线程。
2.进程的组成
内存 : 每个进程的内存是相互独立的。
文件/网络句柄 : 它们是所有的进程所共有的。
线程
所有的 线程 共享 该进程的所有资源。
3. 进程与线程—-汇总
进程有分配已大部分的内存,而线程只需要分配一部分栈就可以了。
一个程序至少有一个进程,一个进程至少有一个线程。
进程是资源分配的最小单位,线程是程序执行的最小单位。
一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
4.多线程
使用线程可以把 占据长时间 的程序中的任务放到后台去处理。
用户界面可以更加吸引人。
程序的运行速度可能加快。
在一些 等待的任务 的实现上,线程就比较有用。
5.多线程的执行方式
串行 :依次执行所有的线程,上一个线程没有执行完之前,下一个线程不会执行。
并行 : 所 ...
一、 协程(Coroutine)技术1. 基本用法线程 :又叫 微线程 、 纤程
协程是一种用户级的轻量级线程 。
协程 拥有自己的寄存器上下文和栈。
协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来时,恢复先前保存的寄存器和栈。
优点:
协程极高的执行效率。
因为子程序切换不是线程切换,而是由程序自身控制,因此没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
不需要多线程的锁机制
只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就可以,所以执行效率比多线程高很多。
缺点:
无法利用多核资源
协程的本质是个单线程,他不能同时将 单个 CPU 的多个核用上,协程需要和进程配合才能运行在多 CPU 上。(适用于 CPU 密集型 应用)
进行阻塞(Blocking) 操作(如 IO 时)会阻塞掉整个程序
2. geventgevent :一个现在很火、支持也会全面的 Python 第三方协程库。
由于切换是在 IO 操作时自动完成,所以 gevent 需要修改 Python 自带的一些标准库,这一过程在启动时通过 ...
一、PySide2 、 PyQt5 简介PySide2、PyQt5 都是基于著名的 Qt 库。Qt 库里面有非常强大的图形界面开发库,但是 Qt 库是 C++语言开发的,PySide2、PyQt5 可以让我们通过 Python 语言使用 Qt。PySide2 是 Qt 的 亲儿子 , PyQt5 是 Qt 还没有亲儿子之前的收的 义子 (Riverbank Computing 这个公司开发的)。那为什么 PyQt5 这个义子 反而比 PySide2 这个亲儿子更出名呢?原因很简单:PySide2 这亲儿子最近(2018 年 7 月)才出生。
二、 PySide2 安装1pip install pyside2
网络比较慢,可以指定国内的安装源,下载安装。
1pip install pyside2 -i https://pypi.douban.com/simple/
Qt 官方网站声明了: Windows上 Python 3.8.0 调用 Qt 5.14 , 会有问题。有类似下面这样的导入错误
1ImportError: Dll load failed while importing sh ...
Python Qt 官方文档 - 控件部分
一、按钮QPushButton 就是常见的按钮
官网介绍
1. 信号:被点击当按钮被点击就会发出 clicked 信号,可以这样指定处理该信号的函数
1button.clicked.connect(handleCalc)
2. 方法:改变文本代码中可以使用 setText 方法来改变按钮文本,比如
1button.setText(text)
3. 方法:禁用、启用所有控件(继承自 QWidget 类)都支持 禁用和启用方法。禁用后,该控件不再处理用户操作
禁用
1button.setEnabled(False)
启用
1button.setEnabled(True)
二、 单行文本框QLineEdit 是只能单行编辑的文本框。
官网介绍
1. 信号:文本被修改当文本框中的内容被键盘编辑,被点击就会发出 textChanged信号,可以这样指定处理该信号的函数
1edit.textChanged.connect(handleTextChange)
Qt 在调用这个信号处理函数时,传入的参数就是 文本框目前的内容字符串。
2. 信号: ...
123headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' }
一、csv 库Python 天生支持读取 CSV 格式数据并且是可配置的(这个我们看到是必不可少的)。
在 Python 里边有个模块 csv ,它包含了 CSV 读取/生成所需的所有支持,并且它遵守 RFC 标准(除非你覆盖了相应的配置),因此默认情况下它是能够读取和生成合法的 CSV 文件
创建一个像常规编写器一样操作的对象,但将字典映射到输出行。的字段名的参数是一个sequence标识,其中在传递给字典值的顺序按键的writerow()方法被写入到文件中
二、 pandas 使用方法
对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas 是一个非常重要的 Python 包。
它不仅提供了很多方法,使得数据处理非常简单,同时在数据处 ...
1.0 版本需求: 1.完成一个端口的扫描
123456789101112131415161718192021222324252627import socketdef scanPort(): # 1.使用 TCP 协议扫描端口 sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.设置连接时间 sk.settimeout(0.5) scan_ip = input("请输入需要扫描的IP:") scan_port = input("请输入需要扫描的port:") try: # 3.创建连接 conn = sk.connect_ex((scan_ip, int(scan_port))) if conn == 0: print(f'主机:{scan_ip},端口:{scan_port} 已开放。') # 4.关 ...















