python字符串格式化
FormatFormat String Syntax
12345678replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"field_name ::= arg_name ("." attribute_name | "[" element_index "]")*arg_name ::= [identifier | integer]attribute_name ::= identifierelement_index ::= integer | index_stringindex_string ::= <any source character except "]"> +conversion ::= "r&qu ...
python多重继承
站内链接:
mro 多重继承
Python 魔术发放
Python 日志库
python 作用域和命名空间
python 单例模式
python 模块导入
python 多线程
python 协程
DefinedMRO: method resolution order, 方法或类解析顺序,用于确定类中方法, 属性的查找规则, 查找顺序.LEGB: 作用域的查找逻辑, 其查找链条为Local-->Enclosing function locals-->Globls-->Built-in, 关于作用域, 命名空间, 闭包等相关知识点见站内连接作用域和命名空间文章说明.
为了下面素有章节的说明更加清晰化, 我们在这里先预定设置一个 python 继承的实例(1.1 例), 这是一个多继承:
12345678910111213class A: def show(self): print('A')class B(A): passclass C(A): def show(self): print('C ...
Python模块和导入介绍
站内链接:
python 装饰器
python 编码和解码
python 字符串格式化
python 多重继承
Python 魔术发放
Python 日志库
python 作用域和命名空间
python 单例模式
python 模块导入和模块术语
python 多线程
python 协程
python 包管理
模块,包,文件关系
模块
自我包含并且有组织的代码片段
包
package 是一个有层次目录结构, 包含子包和模块的 Python 应用程序执行环境, 一种特殊的模块. 任何包含__path__(包所在的路径)属性的对象都可以称为 package: django.__path__
他们之间的关系如下:
file—物理组织
module—逻辑组织
package—执行环境与目录结构(__init__.py)
绝对和相对导入
全限定名: 模块的绝对路径含义, 确保 python 虚拟机在寻找某一个 module 时, 根据__package__ + . + __name__来定位.
load: python interpreter 对于 imp ...
python魔术方法和元类介绍
站内链接:
mro 多重继承
Python 魔术发放
Python 日志库
python 作用域和命名空间
python 单例模式
python 模块导入
python 多线程
python 协程
初始化和构造__new__格式:__new__(self, …)
功能:控制实例对象的创建,负责返回一个实例对象。除非你要继承不可变类型例如(tuple, str, unicode),否则一般不会 override 该方法
PS:一般情况下,使用 Factory 来代替使用__new__方法
__init__格式:__init__(self, …)
功能:负责对象的初始化工作,此时实例对象已经创建,不返回任何值
__del__格式:__del__(self)
功能:析构器,但是并非 del x 的实现逻辑,用于定义一个对象进行 GC 操作时的行为,但是如果对象仍旧被引用则 GC 无法作用。
__copy__格式:__copy__(self)功能:浅复制,copy.copy()时调用
__deepcopy__格式:__deepcopy__(self, memodict={})
功 ...
TCP:三次握手
TCPFeature
TCP 提供面向连接的, 可靠的”字节流”服务;
TCP 使用校验和, 确认和重传机制来保证可靠传输;
TCP 使用数据分节排序, 来确保数据的顺序以及非重复;
TCP 使用滑动窗口机制来实现流量控制, 通过改变窗口大小进行拥塞控制;
NoteTCP并非一定保证数据的到达, 而是尽可能的传达数据, 否则就告知接收方, 即我不保证我的数据一定到达, 但是我的售后还是可以的.
Three-way handshakeIntroThree-way handshake, 三次握手, 即建立连接时需要在 C/S 之间发送3个报文, 以识别对方. 三次握手的目的即在建立 TCP 连接时, 同步连接双方的sequeue number 和 Ack number, 交换窗口大小信息. 其简单过程:
hi, 我的身份证: 123456, 姓名: 郑碧峰, 我请求 SYN( 建立连接)
hi, 我要连接郑碧峰, 他的身份证( ACK ): 123456 + 1, 我的身份证: 9999, 我请求连接
hi, 我要传输, 我们之前沟通过, 密码是: 9999 + 1, SY ...
数据库:DB Design Rule
概念概念设计术语
实体: 客观存在,可以相互区别的事物就是实体,它可以是具体的对象,一个人,一个房子等等,也可以是一个抽象的对象,马克思主义,毛泽东思想等等.
实体集: 同类实体的集合.
属性: 实体的特性就是属性, 类似对象属性.
实体标识符: 唯一标识实体的属性或属性集,也称关键码
逻辑设计术语
字段: 标记实体属性的命名单位
记录: 字段的有序集合成为记录,一般用一个记录来描述一个实体
文件: 同一类记录的集合, 例如 MYSQL 中一个表保存为一个持久化文件.
关键码: 唯一标识文件中每个记录的字段或字段集.
设计三范式1NF在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性.
这里的不可分割数据项并非都是一些基本数据项, 实际情况下可能是一些大型字符串(JOSN)格式, 不可分割视情况而定.有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型
2NF满 ...
数据库:mysql特性和术语
站内链接:
mysql 优化
新特征5.6 新特征
支持只读事务
从 MySQL 5.6 开始,内部存在两个事务链表:只读事务链表,正常事务链表,这样做的好处在于:其他事务利用MVCC机制读取数据时,生成的ReadView读视图中的活跃事务链表会小很多很多,因此遍历的速度更快,同时也无需为其分配回滚段,从而进一步提升了MySQL整体的查询性能。
InnoDB 存储引擎增强
BufferPool缓冲池相关的改进项,主要有两点:
刷盘策略改进:引入专门的线程用于处理 BufferPool,提高了缓冲池的刷盘效率,无需跟其他工作一起排队刷写;
缓冲池预热:每次关闭MySQL时都会将内存中的热点数据页保存到磁盘中,当重启时会直接从磁盘中载入之前的热点数据;
新增 performance_schema 库
已有库 information_schema:记录视图管理、临时表管理、会话管理、触发器管理、表分区管理等信息
新库 performance_schema:数据库整体的监控信息,比如事务监控信息、最近执行的SQL信息、最近连接的客户端信息、数据库各空间等
索引下推机制(ICP ...
API: DjangoRestFramework框架
网站内部链接:
RPC 远程调用
REST 介绍
graph django 介绍
websocket 介绍
API 类型发展历史知识点
架构风格简要知识点
Basic Introductionrestful在介绍 djangorestframework 框架之前让我们先简单的介绍一下REST框架,更加详细的介绍见文档
组件介绍RequestsReference: requests
Code: request.py
Quote: If you’re doing REST-based web service stuff … you should ignore request.POST.
Function: 扩展标准 HttpRequest, 提供更加灵活的 requests, 支持 requests parsing 和 request authentication.
ResponsesReference: responses
Function: 支持内容协商, 根据 content_type 来返回指定类型, 一般情况下是application/json类型
Code: respons ...
csrf
IntroductionIntro跨站点请求伪造-Cross site Request Forgery-CSRF, 又称为”one click attack/session riding”. 攻击者通过诱导受害者执行不当请求来盗取其权限。在这种攻击中,攻击者利用受害者在其他网站上的身份,执行非预期的动作,而受害者通常不会意识到这一行为。
CSRF 不仅依赖于 JS, CSRF(高级) 并未打破”同源策略”, 见同源策略. 相反, CSRF 利用同源策略中的 iframe, img 等携带 src 属性的标签来打到跨站点攻击的目的.
CSRF 仅仅用于防护跨站点的伪造请求, 利用 session cookie/third-party cookie 在 browser 上的自动填充机制来完成攻击目的. 但是, 如果站点本身拥有 XSS 漏洞, 那么任何 CSRF 防护都是免谈, CSRF 防护仅仅适用于 CSRF 漏洞.
CSRF 和 XSS 很多攻击其实都是”损人不利己”的攻击行为, 大部分的攻击都是绕过认证机制, 即借用用户已经认证的 cookie 等来获取权限进 ...
数据库:mysql运行时配置和知识点
站内链接:
mysql 运行配置和知识点
Encode and DecodeIntroductionemoji 是 unicode 编码,在正常情况 utf8 编码情况下是无法显示 emoji 表情,仅仅在 utf8mb4 编码下才支持,其中 utf8mb4 是 utf8 的超集;
PS: columns/table/database, 都可能因为编码不一致, 导致问题出现.
Show
系统默认的字符集:SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’;
Database 的字符编码:SHOW CREATE DATABASE database_name;
Table 的字符编码:SHOW CREATE TABLE table_name;
Columns 的字符编码: show full columns from table_name;
数据编码: show variables like ‘char%’;
SETSQL Shel ...