类
设置类属性必须使用类对象,若使用实例对象设置,会重新创建一个和类属性同名的实例属性
类对象可调用 类方法&静态方法, 实例对象可调用 实例方法&类方法&静态方法; 类方法和静态方法调用格式: 类名.类方法 /静态方法
类方法,静态方法和property都是装饰器,可以像访问属性一样访问方法
单个下划线的属性或方法 : 名义上的私有
私有属性变成私有的原理:在类中定义一个私有属性后,创建对象时会偷偷给这个私有属性改名,原先是 '__name ' 改成 ' _类名__name' 可通过 `实例化对象.__dict__`进行查看
utf-8 : 一个汉字表一个字符两个字节 , 判断两个ip是否处在同一网段,需结合子网掩码判断
若判断语句 if-else 是对同一个变量进行判断,可简写为一行 a = 1 or 2 a=1
线程
显示多线程的cpu占用时,应该是: 一个核100%,另一个核0%,不断进行切换一个核0% 另一个核100%;但由于htop 1秒才刷新一次,而cpu的切换非常迅速,造成了看起来的两个核各占50%
变量本质保存的是数据的地址,而不是真实的数据,可理解为一个空盒子装着对象的地址,若不想再引用这个地址,直接将变量装载另一个地址即可,所以变量可以随便更改所引用的对象
使用多进程创建tcp服务器时,若创建子进程的代码放在了while循环内,由于子进程会复制主进程的所有资源,所以代码也复制了一份,即新套接字此时有两个引用,所以在主进程种需关闭套接字的一个引用,但此时还有一个引用指向套接字,变量销毁进行回收的条件是没有引用再指向它
终端开启服务 : service 服务名 start | systemctl start 服务名
重写魔法方法可自定义比较结果 : __eq__ __gt__ __lt__ __ge__ __le__
MariaDB 端口3306
zip函数
语法 : zip([iterable, ...]) iterabl -- 一个或多个迭代器
接收的参数为可迭代对象,可将对象中的元素打包成一个个的元组,返回的是由元组组成的列表[python3返回的是一个对象,还需要通过 list() 展示列表]
zip函数返回的列表元素个数与最短的列表一致; zip(*) 可理解为解压,使用两个变量接收解压后的结果,每个变量分别都是元组
tail -f xx.log 查看日志信息