一、多线程的概述1. 进程与线程 进程 :在系统中正在运行的一个 应用程序 ,程序一旦运行就是进程。 进程 —- 资源分配的最小单位。 线程 : 系统分配处理时间资源的基本单元,或者说进程之内独立执行的一个单元试行流。 线程 —- 程序执行的最小单位。 进程 中最少有一个线程。 2.进程的组成 内存 : 每个进程的内存是相互独立的。 文件/网络句柄 : 它们是所有的进程所共有的。 线程 所有的 线程 共享 该进程的所有资源。 3. 进程与线程—-汇总 进程有分配已大部分的内存,而线程只需要分配一部分栈就可以了。 一个程序至少有一个进程,一个进程至少有一个线程。 进程是资源分配的最小单位,线程是程序执行的最小单位。 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。 4.多线程 使用线程可以把 占据长时间 的程序中的任务放到后台去处理。 用户界面可以更加吸引人。 程序的运行速度可能加快。 在一些 等待的任务 的实现上,线程就比较有用。 5.多线程的执行方式 串行 :依次执行所有的线程,上一个线程没有执行完之前,下一个线程不会执行。 并行 : 所 ...
一、 用户注册注册流程: 1. 注册序列化器123456789101112131415161718192021222324252627282930# serializers.py# 注册序列化器class RegisterSerializer(serializers.ModelSerializer): # admin_code 不在user 模型字段中,需要单独定义 admin_code = serializers.CharField(default='') # 字符串类型 class Meta: model = User fields = ['username', 'password', 'email', 'phone', 'realname', 'admin_code'] # 额外的验证 --- 覆盖父类的方法 def validate(self, attrs): # attrs ...
一、集合 单列集合:其中的元素都是单个的; Collection 接口有两个重要的子接口 List、Set,他们实现子类都是单列集合 双列集合:其中的元素是以键值对的形式出现的; Map 接口实现的子类 是双列集合 1. Collection 接口 Collection 接口实现类的特点: Collection 实现子类可以存放多个元素,每个元素可以是 object; 有些实现类可以存放重复的元素,有些不可以; 有些实现类是有序的(List),有些是无序的(Set); Collection 接口没收直接实现子类,它是通过子接口 List 和 set 来实现的; Collection 接口常用方法 add 添加单个元素 remove 删除指定元素 contains 查找元素是否存在 size 获取元素个数 isEmpty 判断是否为空 clear 清空 addAll 添加多个元素 contains 查找多个元素是否都存在 removeAll 删除多个元素 123456789101112131415161718192021 ...
一、安装1.下载安装包 —— MySQL 下载地址 2.安装 mysql(注意保存临时密码)双击 mysql-5.7.29-macos10.14-x86_64.dmg 文件,进行安装 下截图中有 MySQL 的 临时密码( _Th5u1bh+t(( ) ,必须注意下截图中有 MySQL 的 临时密码( _Th5u1bh+t(( ) ,必须注意下截图中有 MySQL 的 临时密码( _Th5u1bh+t(( ) ,必须注意 3. 启动 MySQL 4. 修改账户密码1234# 启动完成后,打开终端,输入如下内容,然后按回车键alias mysql=/usr/local/mysql/bin/mysqlalias mysqladmin=/usr/local/mysql/bin/mysqladmin 这两条命令是为了方便直接打开 iTerm 就可以运行 mysql 命令,而不是必须进入 mysql 安装目录才能运行。 123# 修改 root 的密码为 12345678mysqladmin -u root -p password 12345678 5.进入终端12345 ...
一、正则表达式1. 常用类Pattern 类 : pattern 对象是一个正则表达式对象, 没有公共构造方法, 通过调用器公共方法, 返回 pattern 类; 该方法接收一个正则表达式作为他的第一个参数 Pattern pattern = Pattern.compile(regStr); Matcher 类: Matcher 对象是对输入的字符串进行匹配, 没有公共的构造方法, 需要调用 Pattern 对象的 matcher 方法获取一个 Matcher 对象; Matcher matcher = pattern.matcher(content);PatternSyntaxException : 表示正则表达式的语法错误; 2.使用方法使用步骤: 创建 正则表达式的匹配模式 Pattern.compile("\\("); 根据 匹配模式创建匹配器, 匹配字符串 pattern.matcher(content); 使用 while 循环进行匹配 matcher.find() : 找到 返回 true, 找到返回 false; matc ...
一、接口名词透析1. token - 令牌 token : 由服务器产生,存在服务器的内存或硬盘中 有一套产生规则,会涉及到加密算法 根据 账户和密码 生成,用于验证 用户登录信息 主要通过 响应消息体传输给 客户端 2. cookies cookies : 存储在 浏览器的某个位置 可以被禁用、删除,安全性不高 cookie 是分站点的,站点与站点之间的 cookie 是相互独立的 cookie 与 sessionid 配合实现登录 3. sessionId session 是一个对象,由服务器产生, 保存在服务器的内存中 有自己的管理机制,包括 产生、销毁、超时等 sessionId 是 session 对象的一个属性,是全局唯一的,永远都不会重复的 cookies 工作流程(主要里面就是 jsessionID) 客户端发送一个请求到服务器 服务器返回响应数据—响应头—setCOOkies—-给我们客户端 这个时候这个 cookies 不一定是有效!—-需要登录的网站—临时 cookies 需要登录—-服务器判断这个账号密码正确之后,之前的 cookies 变成可以使用的! ...
一、精灵图1. 精灵图(sprites)的使用 使用核心: 精灵图主要针对背景图片使用,可以把多个背景图放到一张大图中,减少服务器的请求次数 移动背景图片位置(background-position) 移动距离就是图片的 x 和 y 轴坐标(与网页坐标不同),一般都是往左往上移动,所以数值都是 负值 语法: 12345background-position: x y;或background: url(图片路径) x y; 代码示例 12345678910111213141516171819202122232425262728293031323334<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"& ...
一、web 开发1. web 开发框架 底层逻辑 —- 请求与响应 协议 —- 信息交换的标准 传统 MVC 和 Django MTV 的区别 Django 路由示意图 二、 环境搭建Python 环境需要 < Badge text=”v3.6 +” /> 以上版本Django 需要 < Badge text=”v3.1 +” /> 以上版本 1. 创建 虚拟环境12python -m venv 环境名称python -m venv venv 2. 激活虚拟环境1venv\Scripts\activate.bat 3. 安装库1pip install django 4. 创建 Django 项目1234python -m django startproject 项目名称django-admin startproject 项目名称python -m django startproject loginwebsite 5. 创建 APP123456cd loginwebsitedjango-admin startapp 应用名python manage.py sta ...
一、数组1. 创建数组利用 Array() 创建数组 1var arr = new Array(); // 一个名为 arr 的空数组 利用 字面量([]) 创建数组 1var arr = []; // 一个名为 arr 的空数组 2. 数组的使用下标: 数组的 下标 从 0 开始 12var arr = [3.14, "JS", "HTML", true];console.log(arr[1]); // JS 遍历元素 变量名.length : 可以获取 数组元素的 个数. 1234var arr = [3.14, "JS", "HTML", true];for (var i = 0; i < arr.length; i++) { console.log(arr[i]);} 获取数组中的最大值:12345678var arr = [3.14, 18, -21, 33, 0, 1];var num = 0;for (var i = 0; i < arr.length; i ...
一、 多级路由转发 1. Django 的路由分发1234567from django.urls import path, includefrom app import urlsurlpatterns = [ # 以 app 开头的路径,全部交给 app 处理 path('1级路由', include(urls))] 二、 数据库模型 —- ORMObject Relational Mapping 对象关系映射 ORM 的优势 : 利用编程语言方便操作数据库,无需掌握复杂的 sql 语句 1. ORM 用法 数据模型定义在 APP 目录下的 models.py 中 模型类继承 Django 的 models.Model 模型基本类 类名对应表名称,实际是小写应用名_小写模型类名 类成员对应数据的字段类型 2. 数据库常用字段类型Django 字段参考 常用字段CharField : 字符串类型, 必须接收一个 max_length 参数, 表示字符串最大长度 BooleanField : 布尔值类型, 默认为 None DateTimeField : 日 ...