
python全栈学习分享
文章平均质量分 65
主要是将python的整套知识点系统学习,归类整理。
永久_小玖
每天进步一点点,体会学习的乐趣。
展开
-
66、django项目实战
文章目录一、重构项目目录二、需要改动的配置一、重构项目目录- lufei - manage.py # 项目的主文件, 主入口 - script # 保存项目临时运行的脚本, 文件夹 - logs # 项目运行时/开发时候日志目录 - lufei # 代码主要保存位置, 开发时的代码保存 - apps # 开发者的代码保存目录, 以模块为目录保存 - libs # 第三方类库的保存目录 - settings - dev.py # 项目开发时的本地配原创 2021-07-22 11:21:04 · 432 阅读 · 1 评论 -
65、Restful规范
文章目录一、Restful的10条规范1、数据的安全保证2、接口特征表现,一看就知道是api接口3、多数据版本共存4、数据即是资源, 均使用名词5、资源操作由请求方式决定(method)6、过滤, 通过在url上传参的形式传递搜索条件7、响应状态码8、错误处理,应返回错误信息, error当作key9、返回结果, 针对不同操作, 服务器向用户返回的结果应该符合一下规范10、也可以返回链接一、Restful的10条规范1、数据的安全保证数据的安全保证:url链接一般采用的是https协议进行传输的,原创 2021-07-21 10:19:38 · 300 阅读 · 0 评论 -
64、django详讲之--生命周期
文章目录一、django生命周期流程图二、路由层2.1 路由匹配一、django生命周期流程图图说明缓存数据库提前已经将你想要的数据准备好, 可以直接拿走提高效率和响应时间红色箭头为正常走向绿色箭头为缓存判断, 如果没有, 走红色箭头回来的时候走黄色箭头, 存到缓存中一份, 下次就可以用了二、路由层2.1 路由匹配# 路由匹配url(r'test', views.test),相关连接(笔记来自于视频课程的归类整理):[1]: https://www.原创 2021-07-14 10:43:08 · 826 阅读 · 0 评论 -
63、django详讲之--orm
文章目录一、pycharm连接数据库二、django连接数据库三、Django的ORM3.1 字段的增删改3.2 数据的增删改查四、注意事项五、orm创建表关系一、pycharm连接数据库三个位置: 右侧上方database 左下方 database 配置里面的plugins插件搜索安装 再没有卸载pycharm重装 pycharm可以充当很多款数据库软件的客户端二、django连接数据库# 在setting.py 中默认的自带数据库sqlite3DATABASES = {原创 2021-07-12 15:45:44 · 84 阅读 · 0 评论 -
62、django详讲之--request
文章目录一、静态文件配置一、静态文件配置相关连接(笔记来自于视频课程的归类整理):[1]: https://www.bilibili.com/video/BV1QE41147hU?p=17[2]: https://www.cnblogs.com/Dominic-Ji/p/11093137.html[3]: https://zhuanlan.zhihu.com/p/114200361...原创 2021-07-07 17:28:52 · 121 阅读 · 0 评论 -
60、wsgiref手写web框架+jinja2模块初识
文章目录一、wsgiref模块编写二、模板语法jinja2一、wsgiref模块编写wsgiref模块.pyfrom wsgiref.simple_server import make_serverdef index(env): return 'hello index'def login(env): return 'hello login'def error(env): return '404 error'# url与函数的对应关系urls =原创 2021-07-07 11:20:37 · 108 阅读 · 0 评论 -
51、前端初识与HTTP协议
文章目录一、前端简介二、HTTP协议2.1 HTTP协议由来2.2 HTTP协议介绍2.2.1 HTTP协议的四大特性2.2.2 HTTP协议的格式一、前端简介什么是前端 任何与用户直接打交道的操作界面都是前端 比如: 电脑界面、手机界面、平板界面前端包含 HTML: 网页的骨架, 没有任何的样式 CSS: 给骨架添加各种的样式, 变得好看 JS: 控制页面的动态效果二、HTTP协议2.1 HTTP协议由来浏览器窗口输入网址回车发生的几件事 1 浏览器朝原创 2021-07-06 17:04:16 · 440 阅读 · 0 评论 -
61、django初识
文章目录相关连接(笔记来自于视频课程的归类整理):[1]: https://www.bilibili.com/video/BV1QE41147hU?p=17[2]: https://www.cnblogs.com/Dominic-Ji/p/11093137.html[3]: https://zhuanlan.zhihu.com/p/114200361原创 2021-07-05 15:55:46 · 120 阅读 · 0 评论 -
49、Mysql使用
文章目录一、单表查询方法1.1 select1.2 where1.3 GROUP BY1.4 聚合函数1.5 having1.6 ORDER BY1.7 LIMIT1.8 正则二、多表查询2.1 交叉连接:不适用任何匹配条件。生成笛卡尔积2.2 内连接:只连接匹配的行2.3 外链接之左连接:优先显示左表全部记录2.4 外链接之右连接:优先显示右表全部记录2.5 全外连接:显示左右两个表全部记录2.6 符合条件连接查询2.7 子查询2.7.1 带IN关键字的子查询2.7.2 带ANY关键字的子查询2.7.原创 2021-07-02 11:15:10 · 87 阅读 · 0 评论 -
46、IO模型
文章目录一、IO模型简介一、IO模型简介'''我们说的io模型都是针对网络io的Stevens在文章中一共比较了五种IO Model: * blocking IO 阻塞IO * nonblocking IO 非阻塞IO * IO multiplexing IO多路复用 * signal driven IO 信号驱动IO * asynchronous IO 异步IO 由signal driven IO(信原创 2021-06-22 17:26:07 · 254 阅读 · 0 评论 -
45、协程
文章目录一、知识点回顾+协程引出二、验证切换是否是一定提升效率三、如何通过自己的代码监听io四、协程实现TCP服务端的并发效果一、知识点回顾+协程引出'''进程:资源单位线程:执行单位协程:这个概念完全是程序员自己意淫出来的, 根本不存在 单线程下实现并发的效果 如何做到的: 我们自己通过代码监听io, 一旦遇到io, 代码层面自动切换, 给cpu的感觉你的程序没有io, 可以更高效的利用cpu多道技术: 切换+保存状态 cpu两种切换: 程序遇到io\程序长时间占用协程想做原创 2021-06-22 15:57:39 · 100 阅读 · 0 评论 -
44、进程池与线程池
文章目录一、回顾TCP服务端实现并发效果二、什么是池三、进程池一、回顾TCP服务端实现并发效果先回顾之前TCP服务端实现并发的效果是怎么玩的每来一个任务开设一个进程或线程去处理sever.pyimport socketfrom threading import Threaddef communication(conn): while True: try: data = conn.recv(1824) conn.se原创 2021-06-21 17:25:21 · 105 阅读 · 0 评论 -
43、进程和线程的其他补充了解
文章目录一、死锁和递归锁一、死锁和递归锁当你知道的锁的使用抢锁必须释放锁, 其实你在操作锁的时候也及其容易产生死锁的现象(整个程序卡死, 锁住)递归锁特点可以被连续的acquire和release但是只能被第一个强到这把锁的职系那个上诉操作他的内部有一个计时器, 每acquire一次计数加一, 每release一次计数减一只要计数不为0, 那么其他人就无法抢到锁。from threading import Thread, Lock, RLockimport time#原创 2021-06-21 14:11:15 · 76 阅读 · 0 评论 -
42、GIL
一、官网解释'''定义:In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, sinc原创 2021-06-18 15:03:09 · 92 阅读 · 0 评论 -
41、线程的其他方法&守护线程&线程互斥锁
文章目录一、线程的其他方法一、线程的其他方法t.join() # 主线程等待子线程运行结束再执行相关连接(笔记来自于视频课程的归类整理):[1]: https://www.bilibili.com/video/BV1QE41147hU?p=17[2]: https://www.cnblogs.com/Dominic-Ji/p/11093137.html...原创 2021-06-17 17:04:13 · 88 阅读 · 0 评论 -
40、如何实现tcp服务并发效果
文章目录服务端(原始)import socketfrom threading import Threadfrom multiprocessing import Process"""服务端: 1、要有固定的ip+port 2、24小时不间断服务 3、能够支持并发"""server = socket.socket() # 不加参数就是默认TCP协议server.bind(('127.0.0.1', 8080))server.listen(5) # 半连接池原创 2021-06-17 16:49:31 · 242 阅读 · 0 评论 -
39、线程理论+实践
文章目录一、什么是线程二、为什么要有线程三、如何使用四、开启线程的两种方式一、什么是线程进程: 资源单位(一块独立的内存空间)线程: 执行单位举例:将操作系统比喻成一个大的工厂, 进程就相当于里面的车间而,线程就是车间里面的流水线每一个进程肯定自带一个线程, 进程提供给线程工作所需的资源再次总结:进程: 资源单位(起一个进程,仅仅只是在内存空间中开辟一块独立的内存)线程: 执行单位(真正被cpu执行的其实是进程中的线程,线程指的代码的执行过程, 执行代码中所需要使用到的资源,找所原创 2021-06-17 10:45:27 · 102 阅读 · 0 评论 -
38、生产者消费者模型
文章目录一、生产者消费者模型一、生产者消费者模型生产者: 生产/制造东西的消费者: 消费/处理东西的该模型除了上述两个之外, 还需要一个媒介生活中的例子: 做包子将包子做好以后放在蒸笼里面, 买包子就在蒸笼里去拿, 这个蒸笼就是媒介生产者和消费者之间, 不是直接做交互的, 而是借助媒介做交互生产者、消息队列、消费者共同组成的模型用代码来演示生产者消费者模型from multiprocessing import Process, Queue, JoinableQu原创 2021-06-16 14:13:30 · 96 阅读 · 0 评论 -
37、python的queue消息队列、IPC机制
文章目录一、进程间通信1.1 队列Queue模块二、IPC机制一、进程间通信1.1 队列Queue模块队列: 先进先出堆栈:先进后出import queuefrom multiprocessing import Queue# 创建队列q = Queue(5) # 括号内可以传数字, 表示生成的队列最大可以同时存的数据量# 往队列中存数据q.put(111)q.put(222)q.put(333)print(q.full()) # 判断当前队列是否满了print(q.e原创 2021-06-16 10:56:30 · 224 阅读 · 0 评论 -
36、互斥锁
# 查票def search(i): # 文件操作读取票数 with open('data', 'r', encoding='utf8') as f: dic = json.load(f) # 字典取值用推荐使用get print("用户%s查询余票: %s" % (i, dic.get('ticket_num')))# 买票 1、先查 2、再买def buy(i): # 先查票 with open('data', 'r', enco原创 2021-06-15 17:33:02 · 91 阅读 · 0 评论 -
35、僵尸进程、孤儿进程、守护进程
文章目录一、僵尸进程二、孤儿进程一、僵尸进程死了但是没死透当你开设了子进程后, 该进程死后不会立即释放该进程所占用的进程号二、孤儿进程原创 2021-06-15 11:18:39 · 120 阅读 · 1 评论 -
34、进程对象及其他方法
进程对象及其他方法介绍一台计算机上运行很多进程, 那么计算机是如何区分并管理这些进程服务端的呢计算机会给每一个运行的进程分配一个PID号如何查看windows电脑进入cmd输入tasklist即可查看tasklist | findstr PID 查看你具体的进程mac进入终端之后输入ps auxps aux | grep PID 查看具体的进程from multiprocessing import Process, current_processimport原创 2021-06-15 10:46:59 · 108 阅读 · 0 评论 -
33、进程理论+实践
文章目录一、必备知识点二、进程调度三、进程的三状态图一、必备知识点程序和进程的区别程序: 程序就是一堆躺在硬盘上的代码, 是 ‘死’ 的进程: 进程则表示程序正在执行的过程, 是 ‘活’ 的二、进程调度先来先服务调度算法 """ 对长作业有利, 对短作业无利"""短作业优先调度算法 """ 对短作业有利, 对长作业无利"""时间片轮转法 + 多级反馈队列参考图解三、进程的三状态图举例相关连接(笔记来自于视频课程的归类整理):[1]原创 2021-06-11 10:02:31 · 113 阅读 · 1 评论 -
32、多道技术
文章目录一、必备知识点二、多道技术图解一、必备知识点并发:看起来像同时运行的就可以称之为并发并行:真正意义上的同时运行ps :并行肯定是并发单核的计算机肯定不能实现并行, 但能实现并发补充: 我们直接假设单核就是一个盒, 干活的就一个人, 不要考虑cpu里面的内核数二、多道技术图解相关连接(笔记来自于视频课程的归类整理):[1]: https://www.bilibili.com/video/BV1QE41147hU?p=17[2]: https:/原创 2021-06-11 09:42:16 · 200 阅读 · 2 评论 -
31、tcp协议的粘包问题
1、CS架构收发数据的收发数据的标准自己定 Client<=================> Server # 实际是计算机硬件的交互 客户端软件 服务端软件 操作系统 操作系统 计算机硬件(网卡)《======》 计算机硬件(网卡)举例思考大概:视频软件看电影, 是怎么做的? 跟服务端发请求, 服务端给我找个电影, 服务端的软件收到, 问操作系统 有没有, 有给她看吧2、BS架构特殊的CS架构, 客户端是浏览器。原创 2021-06-04 17:15:35 · 75 阅读 · 0 评论 -
29、异常处理
文章目录一、异常处理1、什么是异常2、异常处理的3个特征3、为何要处理异常4、如何处理异常一、异常处理1、什么是异常异常是程序发生错误的信号, 程序一旦出错就会抛出异常, 程序的运行随即终止2、异常处理的3个特征异常的追踪信息异常的类型异常的内容3、为何要处理异常为了增加程序的健壮性, 即便是程序运行过程中出现问题, 也不要终止程序, 而是捕获到异常并处理: 将出错信息记录到日志内4、如何处理异常语法上的错误:SyntaxError处理方式: 必须在程序运行前就改正原创 2021-06-04 16:54:55 · 131 阅读 · 0 评论 -
28、面向对象高级 -- 反射、内置方法、元类
文章目录回顾一、反射1. 什么是反射机制?2、为何要用反射3、如何实现反射二、内置方法(在满足什么条件的时候触发)三、元类回顾动态语言: 定义的时候不指定类型, 程序执行的时候才会试别数据类型静态语言: 在定义变量的时候要指定类型, 程序运行之前就固定类型一、反射1. 什么是反射机制?指的是在程序运行过程中可以" 动态(不见棺材不落泪) "获取对象的信息(属性和方法)2、为何要用反射函数接收到的一个参数以后,有可能要访问内部的属性, 但是你又不确定有没有这个属性, 所以要判断,判断原创 2021-06-01 14:08:11 · 113 阅读 · 0 评论 -
27、绑定方法与非绑定方法
文章目录一、绑定方法二、非绑定方法-》静态方法一、绑定方法绑定方法: 特殊之处在于将调用者本身当作第一个参数自动传入绑定给对象的方法: 调用者是对象, 自动传入的是对象绑定给类的方法: 调用者是类, 自动传入的是类class Mysql: def __init__(self, ip, port): self.ip = ip self.port = port def func(self): print('%s %s' % (原创 2021-06-01 09:56:30 · 99 阅读 · 0 评论 -
26、property
文章目录一、装饰器二、property一、装饰器装饰器是在不修改被装饰对象源代码,以及调用方式的前提下为被装饰对象添加新功能的可调用对象可调用对象: 函数、类二、propertyproperty: 是用类实现的装饰器print(property) # <class 'property'># property是一个装饰器, 用来干什么的?# 需求class People: def __init__(self):...原创 2021-05-28 17:28:17 · 115 阅读 · 0 评论 -
25、面向对象的三大特性——封装、继承、多态
文章目录一、面向对象的三大特征一、封装1.1 隐藏属性1.1.1 . 如何隐藏: 在属性名前加__前缀, 就会实现一个对外隐藏属性的效果1.1.2 为何要隐藏1.1.3 该隐藏需要注意的问题一、面向对象的三大特征封装封装 <–> 整合继承多态一、封装1.1 隐藏属性将封装的属性隐藏1.1.1 . 如何隐藏: 在属性名前加__前缀, 就会实现一个对外隐藏属性的效果# 如何隐藏class Foo(): x = 1 def f1(self):原创 2021-05-28 15:39:14 · 316 阅读 · 1 评论 -
24、类定义的练习
文章目录一、需求一、需求创建学校类创建班级类创建课程类– 只要把对象传过去,要啥有啥基本class School(): school_name = 'hgc' # 独有的东西 def __init__(self, nickname, addr): self.nickname = nickname self.addr = addr self.classes = [] # 关联班级 def rel原创 2021-05-28 14:19:05 · 130 阅读 · 0 评论 -
23、面向对象编程思想介绍
文章目录一、面向过程思想与面向对象思想二、思考问题过程一、面向过程思想与面向对象思想面向过程:- 核心是 “过程” 二字- 过程的终极奥义就是将程序流程化- 过程是“流水线” 用来分步解决问题的面向对象(面向容器)核心是 “对象” 二字对象的终极奥义就是将程序“整合”对象是“容器”,用来盛放数据与功能二、思考问题过程程序 = 数据+功能假设什么都没学, 完成 一个学生课程记录信息# 学生数据stu_name="p"stu_age=18stu_gender="ma原创 2021-05-26 21:52:52 · 137 阅读 · 1 评论 -
22、常见内置和第三方函数
文章目录一、time与datetime模块二、random模块三、os模块四、sys模块五、shutil模块六、json&pickle模块七、shelvs模块八、xml模块九、configparser模块十、hashlib模块十一、suprocess模块十二、logging模块十三、re模块一、time与datetime模块二、random模块三、os模块四、sys模块五、shutil模块六、json&pickle模块七、shelvs模块八、xml模块九、configp原创 2021-05-13 17:09:55 · 413 阅读 · 3 评论 -
21、函数和包的小知识点
文章目录一、py文件二、包三、软件开发的目录规范一、py文件一个py文件的几种用途, 执行py文件和导入py文件的区别是什么当成程序: 右键运行run发生了什么, 跟名称空间相关的# 1、当成程序,右键运行# m.pyprint('模块m')def f1(): print()# run.pyimport mprint(111)print(222)x = 1y = 2# 2、 当作模块,放很多的功能 # 3、区别import 和 from import循原创 2021-05-13 16:49:28 · 142 阅读 · 1 评论 -
20、模块介绍
文章目录一、模块一、模块1、什么是模块2、为何要用模块3、如何用模块相关连接(笔记来自于视频课程的归类整理):[1]: https://www.bilibili.com/video/BV1QE41147hU?p=17原创 2021-05-12 17:07:47 · 624 阅读 · 0 评论 -
19、面向过程、函数式、匿名函数、map、filter、reduce
文章目录一、面向过程的思想二、函数式的思想三、匿名函数四、map五、filter六、reduce(累加)一、面向过程的思想1、面向过程的编程思想:核心是‘过程’二字, 过程即流程,指做事的步骤:先什么,在什么,后干什么,基于该思想编程呢个就好比在设计一条流水线优点: 复杂问题流程化,继而简单化。缺点: 扩展性差二、函数式的思想1、函数式编程思想:将计算机的运算视为数学中的运算, python不是函数式编程。会保留一些,例如lambda三、匿名函数def: 有名函数# fu原创 2021-05-12 17:06:12 · 97 阅读 · 0 评论 -
18、二分法
文章目录一、算法二、算法之二分法一、算法高效解决问题的办法二、算法之二分法场景: 有一个从小到大排列的数字列表, 需要从列表中找到需要的那个数字nums = [-3, 6, 12, 30, 33, 61, 72, 80, 90, 99]find_num = 6# 方法一for i in nums: if find_num == i: print('find it') break# 方法二:def binary_serch(nums, find_num): pri原创 2021-05-12 11:27:10 · 81 阅读 · 0 评论 -
17、函数递归
文章目录一、函数的递归二、举例说明三、递归的两个阶段四、递归的运用一、函数的递归在调用一个函数的过程中,又直接或者间接的调用自己递归调用的本质就是循环1、直接调用本身import sysprint(sys.getrecursionlimit()) # 1000sys.setrecursionlimit(设置的层级) # 尽量不要改动# 默认python会限制递归1000层def f1(): print('我自己') f1()f1()2、间接调用本身# 递归调用的本质就原创 2021-04-30 10:35:25 · 88 阅读 · 0 评论 -
16、三元表达式
文章目录一、三元表达式二、生成式2.1 列表生成式2.2 字典生成式2.3 集合生成式2.3 生成器表达式2.4 案例一、三元表达式语法格式:条件成立返回的值 if 条件 else 条件不成立的返回值判断下,y的大小# 常规def func(x, y): if x>y: return x else: return yres = func(1, 2)# 三元表达式x = 1y = 2res = x if x>y else y二、生成式2.1 列表生成式原创 2021-04-29 09:34:14 · 302 阅读 · 0 评论 -
13、装饰器
文章目录一、装饰器1.1 什么是装饰器1.2 为什么要用装饰器1.3 如何用装饰器1.3.1 语法糖二、总结一、装饰器1.1 什么是装饰器器指的是工具,可以定义成函数,装饰指的是为其他事物添加额外的功能。装饰器就是定义一个函数,该函数是用来装饰其他函数的,为其他函数增加功能。1.2 为什么要用装饰器开放封闭原则开放: 对扩展功能是开放的封闭: 对修改源代码是封闭的装饰器就是在不修改被装饰对象的源代码,以及调用方式的前提下,为被装饰的对象添加新功能1.3 如何用装饰器# 原始原创 2021-04-08 15:10:08 · 124 阅读 · 0 评论