python 阶段性自我总结
学无止境,在通过自我总结的方式,巩固自我专业技能,同时分享给各位小伙伴,共同进步,
python小陈
广东潮汕python小陈, 前来报告, 各位好汉,请多多指教!!!!
展开
-
Python3读取、写入、追加写入Excel文件
一、需要用到的库:1.操作xls格式的表格文件:读取:xlrd写入:xlwt修改(追加写入):xlutils2.操作xlsx格式的表格文件:读取/写入:openpyxl二、实现代码1.操作xls格式的表格文件:# coding=UTF-8import xlrdimport xlwtfrom xlutils.copy import copydef wr...转载 2019-12-18 11:20:37 · 325 阅读 · 0 评论 -
对装饰器的理解
装饰器本质上是一个 python 函数,在函数中嵌套一个函数,它主要作用的是在不修改函数代码的前提下给函数增加额外的功能,装饰器返回值也是一个函数对象 装饰器的实现原理,是利用闭包函数。闭包函数,就是在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,这个函数以及用到的变量,称之为闭包 在数学应用上,我们可以用装饰器原理去求解斐波那契数列,斐波那契数列,从第三项开始...原创 2018-07-20 00:00:31 · 196 阅读 · 0 评论 -
事务的隔离级别有哪些?
事务:一个操作序列,要么同时执行,要么同时不执行,是一个不可分割的工作单位事务有四大特性,原子性 一致性 持久性 与 隔离性 ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。 ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。 ③ Read committed (读已提交):可避免脏读的发生。 ④ Read u...原创 2018-07-20 00:00:42 · 2196 阅读 · 0 评论 -
乐观锁和悲观锁
悲观锁:不相信其他人不会修改,传统的关系型数据库里边就用到了很多这种锁机制,如mysql, 每次查询、修改数据操作之前就会上锁,整个数据处理过程中,将数据处于锁定状态,自己更新数据后再释放锁,可以有效防止库存冲突问题乐观锁:相信其他人不会修改,所以查询、修改数据库时不会上锁,所以再数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回错误的信息,让用户决定如何 去做...原创 2018-07-20 00:00:52 · 2553 阅读 · 0 评论 -
对数据库索引的理解?
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。 索引的原理,对要查询的字段建立索引其实就是把该字段按照一定的方式排序,建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效了。比如,图书馆的书是按照书名的第一个字母排序的,如果你想要找作者叫张三的就不能用该索引,还有如果索引太多会降低查询的速度 优点 通过创建唯一...原创 2018-07-19 08:44:36 · 399 阅读 · 0 评论 -
RESTful 设计风格有了解吗?
(视图主要用于封装结果,生成页面展示的html内容)RESTful 是一种开发理念,简洁,;层次感,主要体现在每个URL代表一种资源,所以在开发REST API 接口时,视图中要频繁的进行序列化和反序列化,将数据库数据序列化为前端所需要的格式,并返回,将前端发送的数据反序列化为模型类对象,并保存到数据库中·之前的开发的一个电商商城就是用这种 RESTful 设计风格,我们将 API部署在专...原创 2018-07-19 08:44:57 · 2181 阅读 · 0 评论 -
对celery 的理解
celery 是一种 简单、灵活、可靠的,用来处理多个消息的分布式系统,相当于调发器。 我比较喜欢的一点:celery 支持使用任务队列的方式,在分布的机器、进程、线程上执行任务的调度 celery 的架构由 消息中间件 、 任务执行单元 和 任务执行结果存储三部分组成 消息中间件,celery 本身不提供消息服务,但可以方便的和第三方提供的消息中间件集成,比如发...原创 2018-07-19 08:45:08 · 627 阅读 · 0 评论 -
用户密码是怎么保护的
对于大部分网站,密码的存储和验证过程简单来说就是:密码存储,用户输入密码,密码加密后被传输到数据库存储起来,密码验证,密码加密后和存储在数据库加密后的密码进行比较。 一般每个网站都有一个或多个专门存储密码的数据库。 项目中我们使用 hash 算法来进行密码加密保护的,hash 算法是一种单项的函数,它可以把任意数量的数据转换成固定的长度的哈希值,也就是说将一个大集合映射到一...原创 2018-07-19 08:45:36 · 290 阅读 · 0 评论 -
python 浮点数的精度问题
程序语言浮点数由单精度型和双精度型两种 单精度型占4个字节32位的内存空间只能提供七位有效数字 双精度型占8个字节64位的内存空间可提供17位有效数字 python 3 浮点数默认的是 17位数字的精度 将精度高的浮点数转化成精度低的浮点数,内置方法 round() roud(2.873 , 2) ===> 2.87 格式化 %.2f 保留两位小数 ...原创 2018-07-19 08:45:47 · 10266 阅读 · 0 评论 -
CSRF 跨站请求伪造与防御方法
CSRF 跨站请求伪造CSRF攻击: 攻击者盗用了你的身份,以你的 名义发送恶意请求,比如盗取你的账号,假发消息等,个人隐私泄露以及财产安全CSRF 攻击原理: 登录受信任网站A,并在本地生成 Cookie. 在不登录A的情况下,访问危险网站B 比如,你登录了银行网站A,然后访问危险的网站B,这时你的银行账户的资金全没了。原因,在访问危险网站B之前,你已经登录了银行网站A,...原创 2018-07-19 08:45:59 · 246 阅读 · 0 评论 -
模块和包是什么
模块:每一 python 代码文件 都是一个模块,好比工具包,想要使用(好比函数),就需要导入这个模块,用关键字 import 导入 或是 from 模块名 import 函数名 import 是将 模块中的函数 全部导入 from...import... 是的导入一个或几个 也可以导入类呀 全局变量等包:将有联系的模块组织到一期,放到同一个文件夹下,有效避免模块名称冲突问题,让应用组织结构更...原创 2018-07-19 08:46:24 · 1129 阅读 · 0 评论 -
用两种以上的方式实现单例模式
单例设计模式是一种常用的软件设计模式,作用,确保某一个类只有一个实例存在,即某个类智能出现一个实例。在项目中。客户端读取服务器配置信息,就是用这种单例模式,就是说服务器运行期间同一时间只有一个AppConfig实例对象可以读取配置信息电脑中的回收站实现单例模式的几种方式: 使用模块,python 模块是天然的单例模式,只要把相关的函数和数据定义在一个模块中,就可以获得一个单例对象...原创 2018-07-19 08:48:35 · 323 阅读 · 0 评论 -
数据库的优化
一.数据的设计方面: 1.选择适当的冗余 在表中添加合适的字段,方便查询 2.适当建立索引,由于索引不占据内存和不用改写程序,只需要执行sql语句就ok,能提高查询速度 3.对表进行水平划分 将表进行合适的拆分,减少在操作数据库时候的搜索,有利于程序的简单实现,充分利用表的优势 4.对表进行垂直划分 5.选择适当的字段类型,特别是主键:字段选择的一般原则是保小不保...原创 2018-07-18 17:15:15 · 164 阅读 · 0 评论 -
数据库怎么优化查询的效率?
储存引擎选择,如果数据表需要事务处理,应该考虑使用InnoDB, 因为它完成兼容 ACID 特性,如果不需要事务处理,使用默认储存引擎 MyISQM 比较明智 innodn 是 mysql 的数据库引擎之一,最大特色支持 ACID 兼容的事务功能(即事务的四大特性) MyISAM 默认存储引擎,使用高级缓存和索引机制 对查询进行优化,尽量避免全表扫描,...原创 2018-07-18 17:15:24 · 2254 阅读 · 0 评论 -
对 property 属性的理解?
英/'prɒpətɪ/ property , python 中的内置 属性函数,作用,1)将类方法转换为 只读属性 将它作为一个方法的装饰器来使用,将一个类方法转变成一个类属性 比如,我们需要将某些值合并时,我们可以在方法 返回 合并的值 , 然后创建 类对象实例 。 方法名就可以求到了 2) 创建值为 property 对象的类属性 即 类属性名 = prope...原创 2018-07-18 17:15:34 · 463 阅读 · 0 评论 -
with 语句与上下文管理器
通常用在共享资源的获取和释放,比如文件、数据库和 线程资源,一般跟上下文管理器一起使用主要用处,比如用python 打开了一个文件写入内容,忘了关闭这个文件,不正常关闭的话可能会文件操作是出现异常,还有数据库连接是一样,连接过多而没有及时关闭的话,可能出现不能继续连接的异常错误,with 语句和上下文管理器,检查异常、处理异常 with 语句是在python 2.6出现的新语句,简化...原创 2018-07-18 17:15:42 · 363 阅读 · 0 评论 -
python 的垃圾回收机制?
python 中的垃圾回收机制是以引用计数为主,分代收集为辅 引用计数,当一个对象的引用数为 0时,python 虚拟机就会回收这个对象的内存。出现循环引入的问题,引入 gc 模块,解决循环引用的问题, gc 模块自动垃圾回收机制,主要作用就是发现并处理不可达的垃圾对 象,采用分代收集的方法,将对象分为三代,一开始,对象在创建的时候,放在一代,如果一次一代的检查中,对象存活...原创 2018-07-18 17:15:55 · 207 阅读 · 0 评论 -
怎么去查一个进程的进程号? ef、 aux 格式字母是什么意思?
进程, 程序运行在操作系统上的一个实例 在 linux 系统中 查进程 ps aux | grep 进程名 杀死进程 kill -9 进程号 e 显示所有的进程等价于 a f 显示全格式,全部列出 a 显示终端机下的所有程序包括其他用户的程序 u 以当前用户下的所有进程 x 显示没有控制终端的进程 Linux 下显示系统进程的命令 ps, 最常...原创 2018-07-18 17:16:03 · 469 阅读 · 0 评论 -
迭代器和生成器
迭代器,一个实现了 --iter-- 方法 和 --next-- 方法的对象,迭代器同时也是一个可迭代的对象python 中的列表、元组、字符是迭代对象,如果实现了iter方法和next方法 然后他就是迭代器for ....in.. ..循环本质就是先通过iter()函数获取一个可迭代对象的迭代器,然后对获取的迭代器不断调用next()方法来获取下一个值生成器是一种特殊的迭代器,只要在...原创 2018-07-18 17:16:11 · 181 阅读 · 0 评论 -
同时在线用户人数怎么统计?
每次用户操作时更新其在线时间,在用户表里加上一个 update_time 字段,每次用户进行操作时,更新这个字段为当前的时间,然后再定义一个过期时间,比如十分钟,表示十分钟内没有任何操作默认用户不在线。 将在线用户单独放入一张表,每次用户操作时,先判断表里有没有该用户的记录,没有就新增 用 JS 定时器,在每个 HEML 模板里,加入一个 JS 定时器,每隔 10分钟发送一...原创 2018-07-18 17:16:20 · 3579 阅读 · 0 评论 -
redis 如何做持久存储?
redis 持久化储存的方法: rdb 方式(快照) 快照,针对内存进行的快速读取技术 将 内存中的数据以快照的方式写到二进制文件 rdb 中,可以通过配置设置自动做快照持久化的方式,我们可以设置 redis 在 n 秒内如果超过 m 个 key 键修改就自动做快照 数据快照的原理,将整个 REDIS 内存中的所有的数据遍历一遍存储到一个扩展名为 rdb 的数据...原创 2018-07-18 17:16:29 · 438 阅读 · 0 评论 -
Django 和 flask 的分页怎么做的?
flask 分页 英/'pædʒɪneɪt/ 英/'ælkɪmɪ/ flask 通过扩展封装了 SQLAlchemy 框架,一种关系型数据库框架 SQLAlchemy 框架提供的 paginate() 方法实现对数据库中查询到的数据进行分页 paginate() 方法接收三个参数,第一个是页码,从一开始,第二个参数是每页显示的数目,第三个参数是错误标志...原创 2018-07-18 17:16:45 · 385 阅读 · 0 评论 -
常见的加密方式?
非对称加密 加密和解密使用的密钥不一样 使用keytool等工具生成一对公私密钥对,私密钥一般放在发布者保存,这种安全系数高,但加密效率低 优点:算法公开 计算量小 机密速度快 加密效率高 可逆 对称加密 加密和解密所使用的密钥一样 因为中途需要传递密钥,安全性低但效率高,不适合大量数据加密操作 hash算法(摘要算法),是一种单向算法,不可逆。用户通过hash算法对目标信息生成...原创 2018-07-17 08:47:48 · 258 阅读 · 0 评论 -
有了GIL,python就是线程安全的吗?
不一定,线程安全就是多线程访问时,采取了加锁的机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问知道该线程读取完,其他的线程才可使用,不会出现数据不一致或数据污染的问题线程不安全就是不提供数据访问保护,有可能出现多个线程现后更改数据造成所得到的数据是脏数据。总的来说,只要线程之间没有共享资源,那么就是线程安全的,有共享资源,为了保证线程安全,需要引进锁的机制。...原创 2018-07-17 08:46:53 · 905 阅读 · 1 评论 -
对GIL的理解
一个进程 一个GIL CPU的核数 GIL 锁,全局解释器锁,作用就是,限制多线程同时执行,保证同一时间内只有一个线程在执行。 线程非独立的,所以同一进程里线程是数据共享,当各个线程访问数据资源时会出现竞状态,即数据可能会同时被多个线程占用,造成数据混乱,这就是线程的不安全。 所以引进了互斥(chi)锁,确保某段关键代码、共享数据只能由一个线程从头到尾完整地执行,但这个有个致命问...原创 2018-07-17 08:46:17 · 3510 阅读 · 0 评论 -
对 flask 蓝图的理解
蓝图的定义,蓝图是Flask框架应用程序组件化的方法,可以在一个应用内或跨越多个项目共用蓝图,使用蓝图可以极大地简化大型应用的开发难度,也为Flask扩展提供了一种在应用中注册服务的集中化机制 蓝图的应用场景 把一个应用分解为一个蓝图的集合,这对大型应用是理想的,一个项目可以实例化一个应用对象,初始化几个扩展,并注册一集合的蓝图 以URL前缀或子域名,在应用...原创 2018-07-17 08:45:45 · 364 阅读 · 0 评论 -
对进程、线程、协程的理解
进程:一个运行的程序代码就是一个进程,没有运行的代码叫程序,进程是系统资源分配的最小单位,进程拥有自己独立的内存空间,所以进程间数据不共享,开销比较大 线程:调度执行的最小单位,不能独立存在,依赖进程存在,一个进程至少一个线程,叫做主线程,而多个线程共享数据,共享全局变量,从而极大地提高了程序的运行效率 协程:又称微线程,协程的调度完成由用户控制。协程拥有自己的寄存器、上下文和栈。协调...原创 2018-07-17 08:45:04 · 468 阅读 · 0 评论 -
正则使用 search match 区别
返回一个正则匹配对象 正则表达式 是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个 ‘’‘规则字符串’,起到一个过滤作用 re.match 尝试从字符串的开始匹配,一旦开头不匹配,则返回None re.match函数第一个参数时正则表达式,第二个参数表示要匹配的字符串,第三个参数是标致位,用于控制正则表达式的匹配方式,如是否区分...原创 2018-07-17 08:44:29 · 428 阅读 · 0 评论 -
可变类型与不可变类型
可变不可变指的是 内存中的值是否可以被改变 不可变类型指的是对象所在内存块里面的值不可改变 数字类型 字符串类型 元组 可变类型指定是对象所在内存里面的值可以改变 列表 字典 集合 知识扩展 也就是说,python中不可变数据类型,不允许变量的值发生改变,如果改变了变量的值,相当于是新创建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数...原创 2018-07-17 08:43:49 · 345 阅读 · 0 评论 -
当我在浏览器输入 www.baiu.com 之后发生了什么
根据域名查询域名对应的IP地址 浏览器缓存==》操作系统缓存==》路由缓存==》本地域名服务器缓存==》向上迭代域名服务器 获取IP后与对应的服务器建立TCP连接 浏览器向服务器发起HTTP报文请求,如果浏览器有存储了该域名的cookie,cookie存储访问服务器一些基本的信息如账号、密码等,那么会把cookie放入HTTP的请求头 服务器分析HTTP请求。生成...原创 2018-07-17 08:43:08 · 1788 阅读 · 0 评论 -
对MVC的理解
MVC 是一种程序的设计模式, 跟django的MVT模式差不多,强制性的把应用程序的输入、处理和输出分开,主要的核心思想就是让不同 代码块之间的耦合性降低,增强代码的可扩展性和可移植性。 M model模型,主要负责和数据库交互,对数据库中的数据进行增、删、改、查操作 V view 视图 。主要用于封装结果,生成页面展示的html内容 C controller控制器 ,用于接收...原创 2018-07-17 08:38:13 · 306 阅读 · 0 评论 -
创建一个简单的tcp服务器的流程
TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP通信需要经过创建连接、数据传输、终止连接三个步骤。 所以创建tcp服务器的流程有如下几步:1、创建一个socket套接字 2、绑定服务器的IP 和端口port 3、开启监听listen 将服务器的主动连接变成被动连接 4、等待客服端的请求连接 5、接收客服端的数据请求,向客服端发送数据 tcp服务端一般情况下要绑定端...原创 2018-07-17 08:36:59 · 6102 阅读 · 0 评论 -
深拷贝deepcopy 浅拷贝copy的区别
python中的深浅拷贝是拷贝这个对象的引用,浅拷贝会创建新对象,是复制原对象的第一层引用,举个例:如果列表中嵌套列表,如果改变嵌套列表中元素的值,浅拷贝的新对象中相对应的元素值会随之改变 深拷贝拷贝对象的所有元素,包括多层嵌套的元素,创建一个新的空间,新的内存地址,因此在时间的开销上要高于浅拷贝,比如:列表中嵌套列表,如果你改变嵌套中的列表元素的值,深拷贝对象相对应的元素值不会变,相当于创...原创 2018-07-16 17:11:25 · 174 阅读 · 0 评论 -
sql注入是如何产生的,怎样防止
SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库系统··SQL注入式攻击,攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串中,达到欺骗服务器执行恶意的SQL命令,在某些表单中,用户输入等待内容直接用来构造动态SQL命令,或作为存储过程的输入参数,这类表单特别容易沙鸥到SQL注入式攻击总结:程序开发过程中不注意书写规范,对sql语句和关键字...原创 2018-07-16 17:10:25 · 822 阅读 · 0 评论 -
对同步异步 阻塞非阻塞的理解
同步异步 关注的是消息通信机制 同步,执行一个操作后,等待结果,然后再才继续执行后续的操作 比如 打电话 异步,执行一个操作后,可以去执行其他的操作,然后等待通知再回来执行刚才没有执行完的操作 比如 广播 阻塞,进程给CPU传达一个任务之后,一直等地啊CPU处理完成,然后才执行后面的操作 非阻塞,进程给CPU传达任务后,继续处理后续操作,隔...原创 2018-07-16 17:08:35 · 283 阅读 · 0 评论 -
对事务的理解
例如:A 给 B 转账 1000月 正常情况下 A账户的资金会减 1000元, B 帐号的资金会 加 1000 元,但 当 A转账给B 1000时 系统出现故障, A 账户扣了一千块,B账户资金没多一千块,这是就需要事务了,简单的说:事务就是一个操作序列,要么同时执行,要么同时不执行,是一个不可分割的工作单位 start transaction; 开始事务 rollback ...原创 2018-07-16 17:06:47 · 297 阅读 · 0 评论 -
Git 多人协作开发的过程
Git可以完成两件事情:1. 版本控制2.多人协作开发如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发。如果有多个开发人员共同开发一个项目,如何进行协作的呢。Git提供了一个非常好的解决方案 ---- 多人协作开发。1.多人协作原理典型的做法是,首先创建一个git服务器,被多个人所操作。 1.多人协助实现分为如下几个步骤:1.创建一个g...转载 2018-07-16 16:36:02 · 336 阅读 · 0 评论