11 2019 档案
摘要:桥接模式 在桥接模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机(主机和虚拟机处于对等地 位),它可以访问网内任何一台机器。在桥接模式下,我们往往需要为虚拟主机配置IP地址、子网掩码等(注 意虚拟主机的ip地址要和主机ip地址在同一网段)。 使用桥接模式的虚拟系统和主机的关系,就
阅读全文
摘要:目录 一、下载 二、解压 三、配置 3.1 my.ini参考配置 四、环境变量 五、安装MySQL服务 六、启动mysql服务 6.1 停止mysql 一、下载 第一步:打开网址,https://www.mysql.com ,点击downloads之后跳转到https://www.mysql.com
阅读全文
摘要:目录一、MySQL简介1.1 数据库管理软件分类1.2 MySQL二、下载和安装2.1 Windows版本2.2 Linux版本2.3 Mac版本三、初识sql语句四、MySQL的账号操作4.1 操作文件夹(库)4.2 操作文件(表)4.3 操作文件中的内容(记录)4.4 清空表 一、MySQL简介
阅读全文
摘要:目录一、楔子二、为什么用数据库2.1 所以就出现了一个新的概念——数据2.2 数据库的优势三、认识数据库3.1 什么是数据(Data)3.2 什么是数据库(DataBase,简称DB)3.3 什么是数据库管理系统(DataBase Management System 简称DBMS)3.4 数据库服务
阅读全文
摘要:目录 一、python单线程下实现多个socket并发 1.1 服务端 1.2 客户端 一、python单线程下实现多个socket并发 1.1 服务端 import sys # import socket import time import gevent from gevent import s
阅读全文
摘要:目录 一、到底什么是线程?什么是进程? 二、Python多线程情况下: 三、Python多进程的情况下: 四、为什么有这把GIL锁? 五、Python中线程和进程(GIL锁) 六、为什么要创建线程? 七、为什么要创建进程? 八、进程和线程的区别? 九、线程创建的越多越好吗? 十、生产者消费者模型解决
阅读全文
摘要:一 前言 谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能。 复制(Replication):则是负责让一个Redis服务器可以配备多个备份的服务器。
阅读全文
摘要:目录 一、I/O模型介绍 二、阻塞I/O模型 2.1 一个简单的解决方案 2.2 该方案的问题 2.3 改进方案 2.4 改进后方案的问题 三、非阻塞I/O模型 3.1 非阻塞I/O实例 四、多路复用I/O模型 4.1 select/poll模型 4.1.1 select网络I/O模型 4.1.2
阅读全文
摘要:目录 一、安装 二、Gevent模块介绍 2.1 用法介绍 2.2 例:遇到io主动切换 2.3 查看threading.current_thread().getName() 三、Gevent之同步与异步 四、Gevent之应用 4.1 服务端 4.2 客户端 4.3 多线程并发多个客户端 一、安装
阅读全文
摘要:目录 一、安装模块 二、greenlet实现状态切换 三、效率对比 一、安装模块 安装:pip3 install greenlet 二、greenlet实现状态切换 from greenlet import greenlet def eat(name): print('%s eat 1' %name
阅读全文
摘要:目录 一、引言 二、协程介绍 一、引言 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们
阅读全文
摘要:目录 一、Python标准模块——concurrent.futures 二、介绍 三、基本方法 四、ProcessPoolExecutor 五、ThreadPoolExecutor 六、map的用法 七、回调函数 一、Python标准模块——concurrent.futures 官方文档:https
阅读全文
摘要:目录 一、线程队列 二、先进先出 三、后进先出 四、存储数据时可设置优先级的队列 4.1 优先级队列 4.2 更多方法说明 一、线程队列 queue队列:使用import queue,用法与进程Queue一样 queue is especially useful in threaded progra
阅读全文
摘要:目录 一、同步锁 1.1 多个线程抢占资源的情况 1.1.1 对公共数据的操作 1.2 同步锁的引用 1.3 互斥锁与join的区别 二、死锁与递归锁 2.1 死锁 2.2 递归锁RLock 三、典型问题:科学家吃面 3.1 死锁问题 3.2 递归锁解决死锁问题 一、同步锁 1.1 多个线程抢占资源
阅读全文
摘要:目录 一、守护线程 1.1 详细解释 1.2 守护线程例1 1.3 守护线程例2 一、守护线程 无论是进程还是线程,都遵循:守护xx会等待主xx运行完毕后被销毁。需要强调的是:运行完毕并非终止运行。 对主进程来说,运行完毕指的是主进程代码运行完毕 对主线程来说,运行完毕指的是主线程所在的进程内所有非
阅读全文
摘要:目录 一、python线程模块的选择 二、threading模块 三、通过threading.Thread类创建线程 3.1 创建线程的方式一 3.2 创建线程的方式二 四、多线程与多进程 4.1 pid的比较 4.2 开启效率的较量 4.3 内存数据的共享问题 五、Thread类的其他方法 5.1
阅读全文
摘要:目录一、GIL全局解释器锁 一、GIL全局解释器锁 Python代码的执行由Python虚拟机(也叫解释器主循环)来控制。Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行。虽然 Python 解释器中可以“运行”多个线程,但在任意时刻只有一个线程在解释器中运行。 对Python虚拟
阅读全文
摘要:目录一、内存中的线程二、用户级线程和内核级线程(了解)2.1 用户级线程2.2 内核级线程2.3 用户级与内核级线程的对比2.3.1 用户级线程和内核级线程的区别2.3.2 内核线程的优缺点2.3.3 用户级线程的优缺点2.4 混合实现2.4.1 linux操作系统的 NPTL 一、内存中的线程 多
阅读全文
摘要:目录一、使用线程的实际场景 一、使用线程的实际场景 开启一个字处理软件进程,该进程肯定需要办不止一件事情,比如监听键盘输入,处理文字,定时自动将文字保存到硬盘,这三个任务操作的都是同一块数据,因而不能用多进程。只能在一个进程里并发地开启三个线程,如果是单线程,那就只能是,键盘输入时,不能处理文字和自
阅读全文
摘要:目录一、进程和线程的关系二、线程的特点 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。 通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步
阅读全文
摘要:目录一、线程概念的引入背景1.1 进程1.2 有了进程为什么要有线程1.3 线程的出现 一、线程概念的引入背景 1.1 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令
阅读全文
摘要:目录 一、进程池 二、概念介绍——multiprocess.Pool 三、参数用法 四、主要方法 五、其他方法(了解) 六、代码实例——multiprocess.Pool 6.1 同步 6.2 异步 七、进程池版socket并发聊天练习 7.1 server 7.2 client 八、回调函数 8.
阅读全文
摘要:目录一、进程之间的数据共享1.1 Manager模块介绍1.2 Manager例子 一、进程之间的数据共享 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。 这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布
阅读全文
摘要:目录 一、进程间通信 二、队列 2.1 概念介绍——multiprocess.Queue 2.1.1 方法介绍 2.1.2 其他方法(了解) 三、代码实例——multiprocess.Queue 3.1 单看队列用法 3.2 子进程发送数据给父进程 3.3 批量生产数据放入队列再批量获取结果 四、生
阅读全文
摘要:在我们做完django项目后,向生产环境部署时,为了避免一些敏感信息被有心人利用,我们应该将其保护起来,比如说在settings配置中的一些密码等内容存在操作系统内,通过调用来使用,比如下面这种做法: 拿Django中的SECRET_KEY来说吧,其余如同数据库密码、邮箱密码等秘密内容都可以使用这种
阅读全文
摘要:摘要: nodejs取参四种方法req.body,req.params,req.param,req.body 获取请求很中的参数是每个web后台处理的必经之路,nodejs提供了四种方法来实现。 获取请求很中的参数是每个web后台处理的必经之路,nodejs的 express框架 提供了四种方法来实
阅读全文
摘要:目录 一、multiprocess模块 二、multiprocess.process模块 三、process模块介绍 3.1 方法介绍 3.2 属性介绍 3.3 在windows中使用process模块的注意事项 四、使用process模块创建进程 4.1 在Python中启动的第一个子进程 4.2
阅读全文
摘要:目录一、多进程抢占输出资源二、使用锁维护执行顺序三、多进程同时抢购余票四、使用锁来保证数据安全 通过刚刚的学习,我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理,他们之间的运行没有顺序,一旦开启也不受我们控制。尽管并发编程让我们能更加充分的利用IO资源,但是也给我们带来了新的问题
阅读全文
摘要:目录一、进程的创建1.1 UNIX和Windows创建进程二、进程的结束 一、进程的创建 但凡是硬件,都需要有操作系统去管理,只要有操作系统,就有进程的概念,就需要有创建进程的方式,一些操作系统只为一个应用程序设计,比如微波炉中的控制器,一旦启动微波炉,所有的进程都已经存在。 而对于通用系统(跑很多
阅读全文
摘要:一、状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。 就绪(Ready)状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 执行/运行(Runn
阅读全文
摘要:目录一、进程的并行和并发二、并行和并发的区别 一、进程的并行和并发 并行: 并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU ) 并发: 并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B
阅读全文
摘要:目录一、先来先服务调度算法二、短作业优先调度算法三、时间片轮转法四、多级反馈队列 要想多个进程交替运行,操作系统必须对这些进程进行调度,这个调度也不是随即进行的,而是需要遵循一定的法则,由此就有了进程的调度算法。 一、先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既
阅读全文
摘要:目录一、操作系统背景知识1.1 必备的理论基础二、什么是进程三、进程的概念四、操作系统引入进程的概念的原因五、进程的特征六、进程与程序中的区别 一、操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提
阅读全文
摘要:目录一、手工操作——穿孔卡片二、批处理——磁带存储2.1 联机批处理系统2.2 脱机批处理系统三、多道程序系统3.1 多道程序设计技术3.2 多道批处理系统四、分时系统五、实时系统六、通用操作系统七、操作系统的进一步发展7.1 个人计算机操作系统7.2 网络操作系统7.3 分布式操作系统八、操作系统
阅读全文
摘要:一 Python中RPC框架 自带的:SimpleXMLRPCServer(数据包大,速度慢) 第三方:ZeroRPC(底层使用ZeroMQ和MessagePack,速度快,响应时间短,并发高),grpc(谷歌推出支持夸语言) 二 SimpleXMLRPCServer使用 服务端 from xmlr
阅读全文
摘要:目录一、项目地址二、文件上传-断点续传三、目录结构四、client.py五、server.py5.1 文件的多种状态六、conf/settings.py七、lib/common.py八、log/log.log九、db 一、项目地址 https://github.com/nickchen121/ftp
阅读全文
摘要:目录 一、基于TCP协议 1.1 server类 1.2 request类 1.3 继承关系 1.4 服务端 1.5 客户端 1.6 客户端1 二、基于UDP协议 2.1 服务端 2.2 客户端 2.3 客户端1 三、socketserver源码分析 3.1 源码总结 一、基于TCP协议 基于tcp
阅读全文
摘要:目录 一、网络编程小结 二、网络架构及其演变过程 2.1 单机架构 2.2 CS架构 2.3 BS架构 三、互联网和互联网的组成 3.1 教材版 3.2 科普版 四、大白话OSI七层协议 4.1 物理层 4.2 数据链路层 4.3 网络层 4.4 传输层 4.5 应用层 五、Socket抽象层 六、
阅读全文
摘要:目录 一、UDP套接字简单示例 1.1 服务端 二、客户端 三、UPD套接字无粘包问题 3.1 服务端 3.2 客户端 四、qq聊天 4.1 服务端 4.2 客户端1 4.3 客户端2 4.4 运行结果 一、UDP套接字简单示例 1.1 服务端 import socket server = sock
阅读全文
摘要:目录 一、解决粘包问题(low版) 1.1 服务端 1.2 客户端 1.3 为何low 二、补充struct模块 2.1 简单使用 三、解决粘包问题(Nick版) 3.1 使用struct模块创建报头 3.2 服务端 3.3 客户端 四、TCP协议粘包问题分析 4.1 服务端 4.2 客户端 4.3
阅读全文
摘要:目录一、什么是粘包?二、TCP发送数据的四种情况三、粘包的两种情况3.1 服务端3.2 客户端3.3 服务端3.4 客户端四、补充问题一:为何TCP是可靠传输,udp是不可靠传输五、补充问题二:send(字节流)和recv(1024)及sendall 一、什么是粘包? 注意:只有TCP有粘包现象,U
阅读全文
摘要:目录 一、服务端 二、客户端 一、服务端 from socket import * import subprocess server = socket(AF_INET, SOCK_STREAM) server.bind(('127.0.0.1', 8000)) server.listen(5) pr
阅读全文
摘要:目录一、Socket抽象层 一、Socket抽象层 我们知道两个进程如果需要进行通讯最基本的一个前提是能够唯一标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的IP地址可以唯一标示主
阅读全文
摘要:目录 一、什么是Scoket 二、套接字发展史及分类 2.1 基于文件类型的套接字家族 2.2 基于网络类型的套接字家族 三、套接字工作流程 3.1 服务端套接字函数 3.2 客户端套接字函数 3.3 公共用途的套接字函数 3.4 面向锁的套接字方法 3.5 面向文件的套接字的函数 四、基于TCP协
阅读全文
摘要:目录一、背景描述二、常用的熟知端口号三、TCP概述四、TCP报文首部五、TCP连接的建立(三次握手)六、TCP四次挥手七、面试题7.1 为什么客户端最后还要等待2MSL?7.2 为什么建立连接是三次握手,关闭连接确是四次挥手呢?7.3 如果已经建立了连接,但是客户端突然出现故障了怎么办? 一、背景描
阅读全文
摘要:目录一、物理层二、数据链路层2.1 以太网协议2.2 Mac地址2.3 广播地址三、网络层3.1 IP协议详解3.1.1 IP地址的两部分3.2 子网掩码详解3.3 IP数据包详解3.4 ARP协议详解四、传输层4.1 TCP协议4.2 UDP协议4.3 TCP报文4.4 TCP三次握手和四次挥手五
阅读全文
摘要:目录一、互联网的组成(教材版)二、互联网的组成(科普版)2.1 互联网的硬件组成2.2 互联网的软件组成 一、互联网的组成(教材版) 互联网的拓扑结构非常复杂 ,并且在地理位置上覆盖了全球,从工作方式上看,可以划分为两大块: 边缘部分:这部分由所有连接在互联网上的主机组成。这部分是用户直接使用的,用
阅读全文
摘要:目录一、单机架构二、CS架构2.1 CS架构要求2.2 面试题:数据放在服务端和客户端的利与弊?三、BS架构3.1 两种BS架构四、CS架构和BS架构区别 一、单机架构 应用领域: 植物大战僵尸 office 二、CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,
阅读全文
摘要:目录 一、什么是单例模式 二、为什么用单例模式 三、单例模式(类内部定义静态方法) 四、单例模式(装饰器) 五、单例模式(元类) 一、什么是单例模式 单例模式:基于某种方法实例化多次得到实例是同一个 二、为什么用单例模式 当实例化多次得到的对象中存放的属性都一样的情况,应该将多个对象指向同一个内存,
阅读全文
摘要:目录 一、面向对象高级小结 1.1 isinstance,issubclass 1.2 反射 1.3 call 1.4 new 1.5 元类 二、单例模式 2.0.1 利用类的绑定方法的特性 2.0.2 利用装饰器 2.0.3 利用元类(正宗的) 一、面向对象高级小结 1.1 isinstance,
阅读全文
摘要:目录 一、引言 二、什么是元类 三、为什么用元类 四、内置函数exec(储备) 五、class创建类 5.1 type实现 六、自定义元类控制类的创建 6.1 应用 七、__call__(储备) 八、__new__(储备) 九、自定义元类控制类的实例化 一十、自定义元类后类的继承顺序 十一、练习 一
阅读全文
摘要:目录 一、上下文管理协议 二、模拟open 三、优点 我们知道在操作文件对象的时候可以这么写 with open('a.txt') as f: '代码块' 上述叫做上下文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__和__exit__方法 一、上
阅读全文
摘要:目录一、__module__二、__class__ # lib/aa.py class C: def __init__(self): self.name = 'SB' # index.py from lib.aa import C obj = C() 一、__module__ __module__
阅读全文
摘要:目录 一、简单示例 二、StopIteration异常版 三、模拟range 四、斐波那契数列 一、简单示例 死循环 class Foo: def __init__(self, x): self.x = x def __iter__(self): return self def __next__(s
阅读全文
摘要:目录 一、__str__ 二、__repr__ 一、__str__ 打印时触发 class Foo: pass obj = Foo() print(obj) <__main__.Foo object at 0x10d2b8f98> dic = {'a': 1} # d = dict({'x':1})
阅读全文
摘要:目录 一、小结 曾经我幼稚的以为认识了python的__init__()方法就相当于认识了类构造器,结果,__new__()方法突然出现在我眼前,让我突然认识到原来__new__才是老大。为什么这么说呢? 我们首先得从__new__(cls[,...])的参数说说起,__new__方法的第一个参数是
阅读全文
摘要:目录 一、__call__ 一、__call__ 对象后面加括号时,触发执行。 注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()() class Foo: def __init__(self): p
阅读全文
摘要:目录一、__doc__ 一、__doc__ 返回类的注释信息 class Foo: '我是描述信息' pass print(Foo.doc) 我是描述信息 该属性无法被继承 class Foo: '我是描述信息' pass class Bar(Foo): pass print(Bar.__doc__
阅读全文
摘要:目录 一、什么是__slots__ 二、为什么用__slots__ 三、刨根问底 一、什么是__slots__ __slots__是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性) 使用点来访问属性本质就是在访问类或者对象的__dict__属性
阅读全文
摘要:目录 一、__del__ 一、__del__ __del__也称之为析构方法 __del__会在对象被删除之前自动触发 class People: def __init__(self, name, age): self.name = name self.age = age self.f = open
阅读全文
摘要:目录 一、__format__ 一、__format__ 自定制格式化字符串 date_dic = { 'ymd': '{0.year}:{0.month}:{0.day}', 'dmy': '{0.day}/{0.month}/{0.year}', 'mdy': '{0.month}-{0.day
阅读全文
摘要:目录 一、__setitem__ 二、__getitem__ 三、__delitem__与__delattr__ class Foo: def __init__(self, name): self.name = name def __getitem__(self, item): print('get
阅读全文
摘要:目录 一、描述符 二、描述符的作用 2.1 何时,何地,会触发这三个方法的执行 三、两种描述符 3.1 数据描述符 3.2 非数据描述符 四、描述符注意事项 五、使用描述符 5.1 牛刀小试 5.2 拔刀相助 5.3 磨刀霍霍 5.4 大刀阔斧 5.4.1 类的装饰器:无参 5.4.2 类的装饰器:
阅读全文
摘要:目录 一、__setattr__ 二、__delattr__ 三、 __getattr__ class Foo: x = 1 def __init__(self, y): self.y = y def __getattr__(self, item): print(' > from getattr:你
阅读全文
摘要:目录 一、__getattr__ 二、__getattribute__ 三、__getattr__与__getattribute__ 一、__getattr__ 不存在的属性访问,触发__getattr__ class Foo: def __init__(self, x): self.x = x d
阅读全文
摘要:目录 一、isinstance与type 二、issubclass 一、isinstance与type 在游戏项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。 这样做不但便于调试,而且增加健壮性。因为客户端是可以作弊的,不要轻易相信客户端传过来的参
阅读全文
摘要:目录 一、反射在类中的使用 1.1 应用 二、反射在模块中的使用 2.1 前言 2.2 反射机制 2.2.1 getattr() 2.2.2 hasattr(object, name) 2.2.3 setattr(object, name, value) 2.2.4 delattr(object,
阅读全文
摘要:目录一、项目地址二、作业要求2.1 加属性2.2 连关系 一、项目地址 https://github.com/nickchen121/course_selected 二、作业要求 角色:学校、学员、课程、讲师 要求: 创建北京、上海 2 所学校 创建linux、python、go3个课程 ,linu
阅读全文
摘要:目录 一、面向对象进阶小结 1.1 类的继承 1.2 类的派生 1.3 类的组合 1.4 菱形继承问题 1.5 多态与多态性 1.6 类的封装 1.7 类的property特性 1.8 类与对象的绑定方法和非绑定方法 一、面向对象进阶小结 1.1 类的继承 继承父类,则会有父类的所有属性和方法 cl
阅读全文
摘要:目录 一、绑定方法 1.1 对象的绑定方法 1.2 类的绑定方法 二、非绑定方法 三、练习 3.1 绑定方法小结 3.2 非绑定方法小结 类中定义的方法大致可以分为两类:绑定方法和非绑定方法。其中绑定方法又可以分为绑定到对象的方法和绑定到类的方法。 一、绑定方法 1.1 对象的绑定方法 在类中没有被
阅读全文
摘要:目录 一、什么是 property特性 二、简单示例 三、 property属性的两种方式 3.1 装饰器 3.2 类属性方式 四、property+类的封装 五、应用 5.1 私有属性添加getter和setter方法 5.2 使用property升级getter和setter方法 5.3 使用p
阅读全文
摘要:0904自我总结 python中的特殊注释 一.#TODO 这个注释用来快熟找到内容 #todo这里的todo不用区分大小写 写法标记的位置,#todo 备注内容 二.#type a = 1 #type:list #如果我们对a加了#type:list,解释器会把他当成列表的形式 a.append(
阅读全文
摘要:目录 k近邻算法(鸢尾花分类) 一、导入模块 二、获取数据 三、构建决策边界 四、训练模型 五、构图 更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.h
阅读全文
摘要:目录 一、封装什么 二、为什么要封装 三、两个层面的封装 3.1 第一个层面 3.2 第二个层面 四、私有模块 五、练习 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,还有egon一起装进麻袋,然后把麻袋封上口子。但其实这种理解相当片面 一、封装什么 你钱包的有多少钱(数据
阅读全文
摘要:目录 一、单独调用父类的方法 二、super() 方法基本概念 2.1 描述 2.2 语法 2.3 单继承使用super() 2.4 多继承使用super() 三、注意事项 四、练习 一、单独调用父类的方法 需求:编写一个类,然后再写一个子类进行继承,使用子类去调用父类的方法1。 使用方法1打印:
阅读全文
摘要:目录一、多态1.1 动物的多种形态1.2 文件的多种形态二、多态性2.1 动物形态多态性的使用2.2 文件形态多态性的使用2.3 序列数据类型多态性的使用三、多态性的好处四、小结 很多人喜欢将多态与多态性二者混为一谈,然后百思不得其解,其实只要分开看,就会很明朗。 一、多态 多态指的是一类事物有多种
阅读全文
摘要:目录 一、类的分类 1.1 新式类 1.2 经典类 二、菱形继承问题 三、C3算法与mro()方法介绍 一、类的分类 1.1 新式类 继承了object的类以及该类的子类,都是新式类 Python3中所有的类都是新式类 1.2 经典类 没有继承object的类以及该类的子类,都是经典类 只有Pyth
阅读全文
摘要:目录 一、什么是组合 二、为什么用组合 三、如何用组合 一、什么是组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象 二、为什么用组合 组合是用来解决类与类之间代码冗余的问题 首先我们先写一个简单版的选课系统 class OldboyPeople: school = 'ol
阅读全文
摘要:目录 一、派生 1.1 派生方法一(类调用) 1.2 派生方法二(super) 一、派生 派生:子类中新定义的属性的这个过程叫做派生,并且需要记住子类在使用派生的属性时始终以自己的为准 1.1 派生方法一(类调用) 指名道姓访问某一个类的函数:该方式与继承无关 class OldboyPeople:
阅读全文
摘要:目录 一、什么是继承 二、为什么用继承 三、对象的继承 四、类的分类 4.1 新式类 4.2 经典类 五、继承与抽象 六、继承的应用 6.1 属性查找练习 一、什么是继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 二、为
阅读全文
摘要:目录 一、定义锐雯类 二、定义盖伦类 三、定义装备类 四、交互 一、定义锐雯类 class Riven: camp = 'Noxus' # 所有玩家的英雄(锐雯)的阵营都是Noxus; def __init__( self, nickname, aggressivity=54, # 英雄的初始攻击力
阅读全文
摘要:一.接口测试: 接口测试即功能测试,实质是各种操作数据库。 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等 --百度百科 二.接口测试分类: 程序对外接口:
阅读全文
摘要:目录一、面向对象基础小结1.1 面向对象编程1.2 类与对象1.3 对象的属性的查找顺序1.4 给对象定制独有属性1.5 对象的绑定方法1.6 类与数据类型 目录一、面向对象基础小结1.1 面向对象编程1.2 类与对象1.3 对象的属性的查找顺序1.4 给对象定制独有属性1.5 对象的绑定方法1.6
阅读全文
摘要:目录 一、没有对象 二、有对象 一、没有对象 以未来我们要连接数据库举例,如果没有面向对象的思想,我们只要想要使用一个方法,就必须得这样做 import pymysql # 连接mysql的三方库,可以pip3 install pymysql安装 def exc1(host, port, db, c
阅读全文
摘要:目录 一、类与数据类型 二、list.append()方法原理 一、类与数据类型 python3中统一了类与类型的概念,类就是类型 class Foo: pass obj = Foo() print(type(obj)) <class '__main__.Foo'> lis = [1, 2, 3]
阅读全文
摘要:目录 一、对象的绑定方法 二、类使用对象的绑定对象 三、对象使用对象的绑定方法 一、对象的绑定方法 class OldboyStudent: school = 'oldboy' def __init__(self, name, age, gender): self.name = name self.
阅读全文
摘要:目录 一、属性查找 一、属性查找 先从对象自己的名称空间找,没有则去类中找,如果类也没有则报错 class OldboyStudent: school = 'oldboy' count = 0 aa = 10 def __init__(self, x, y, z): #会在调用类时自动触发 self
阅读全文
摘要:目录 一、引入 二、定制对象独有特征 三、属性查找 四、类定义阶段定制属性 类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个 一、引入 class OldboyStudent: school = 'oldboy' def
阅读全文
摘要:目录 一、类和对象 二、现实世界中定义类和对象 2.1 定义对象 2.2 定义对象 三、程序中定义类和对象 3.1 定义类 3.2 定义对象 一、类和对象 类的意思:种类、分类、类别 对象是特征与技能的结合体,我可能有身高体重、而你也有身高体重,所以你会说你像我,但是你一定不会说你像阿猫阿狗。并且我
阅读全文
摘要:目录一、面向过程编程二、面向对象编程 一、面向过程编程 面向过程变成的核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么然后干什么…… 基于面向过程编程的思想编写程序好比在设计一条流水线,是一种机械式的思维方式。 优点:复杂的问题流程化、进而简单化 缺点:扩展性差 二、面向对象编程 你可以
阅读全文
摘要:目录一、概述1.1 1940年以前:面向机器1.2 脱离机器第一步:面向过程1.3 第一次软件危机:结构化程序设计1.4 第二次软件危机:面向对象程序设计二、详细发展历史2.1 1940之前:2.2 1940年代:2.3 1950与1960年代:2.4 1967-1978:确立了基础范式2.5 19
阅读全文
摘要:目录一、项目地址二、功能需求 一、项目地址 https://github.com/nickchen121/atm 二、功能需求 FUNC_MSG = { '0': '注销', '1': '登录', '2': '注册', '3': '查看余额', '4': '转账', '5': '还款', '6':
阅读全文
摘要:目录一、Python常用模块小结1.1 time模块1.2 datetime模块1.3 random模块1.4 os模块1.5 sys模块1.6 json模块1.7 pickle模块1.8 hashlib模块1.9 hmac模块1.10 logging模块1.11 numpy模块1.12 panda
阅读全文
摘要:目录 一、subprocess模块 一、subprocess模块 subprocess模块允许你去创建一个新的进程让其执行另外的程序,并与它进行通信,获取标准的输入、标准输出、标准错误以及返回码等。更多查看官网:https://docs.python.org/2/library/subprocess
阅读全文
摘要:目录 一、xml简介 二、Python使用xml 三、自己创建xml文档 一、xml简介 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要
阅读全文
摘要:1.slice(数组)用法:array.slice(start,end)解释:该方法是对数组进行部分截取,并返回一个数组副本;参数start是截取的开始数组索引,end参数等于你要取的最后一个字符的位置值加上1(可选)//如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾var a=[
阅读全文
摘要:目录 一、shutil模块 1.1 zipfile压缩解压缩 1.2 tarfile压缩解压缩 一、shutil模块 高级的文件、文件夹、压缩包处理模块。 import shutil # shutil.copyfileobj(fsrc, fdst[, length]),将文件内容拷贝到另一个文件中
阅读全文
摘要:一、pathlib库官方定义 pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类在纯路径之间划分,纯路径提供纯粹
阅读全文
摘要:目录 namedtuple deque defaultdict OrderedDict Counter 总结 collections是Python内建的一个集合模块,提供了许多有用的集合类。 namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: p = (1
阅读全文
摘要:目录 一、引言 二、typing模块的作用 三、使用typing模块 四、typing常用类型 一、引言 前言:很多人在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,加上Python本身就是一门弱类型的语言
阅读全文
摘要:目录 一、正则表达式 1.1 数量词的贪婪模式与非贪婪模式 1.2 反斜杠的困扰 1.3 匹配模式 二、re模块的基本使用 三、re模块中常用功能函数 3.1 正则表达式的两种书写方式 3.2 re.compile(strPattern[, flag])函数 3.2.1 re.S 3.2.2 re.
阅读全文
摘要:目录 一、条形图 二、直方图 三、折线图 四、散点图+直线图 五、饼图 六、箱型图 七、plot函数参数 八、图像标注参数 九、Matplolib应用 matplotlib官方文档:https://matplotlib.org/contents.html?v=20190307135750 matpl
阅读全文
摘要:目录 一、Series数据结构 1.1 Series支持NumPy模块的特性(下标) 1.2 Series支持字典的特性(标签) 1.3 Series缺失数据处理 二、DataFrame数据结构 2.1 产生时间对象数组:date_range 三、DataFrame属性 四、DataFrame取值
阅读全文
摘要:目录 一、numpy简介 二、为什么用numpy 三、创建numpy数组 四、numpy数组的常用属性 五、获取numpy数组的行列数 六、切割numpy数组 七、numpy数组元素替换 八、numpy数组的合并 九、通过函数创建numpy数组 9.1 array 9.2 arange 9.3 li
阅读全文
摘要:目录 一、低配logging 1.1 v1 1.2 v2 1.3 v3 二、高配logging 2.1 配置日志文件 2.2 使用日志 三、Django日志配置文件 一、低配logging 日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning-->er
阅读全文
摘要:目录 一、hashlib模块 1.0.1 hash是什么 1.0.2 撞库破解hash算法加密 一、hashlib模块 1.0.1 hash是什么 hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1、SHA224、SHA256、SHA38
阅读全文
摘要:一 传统的开发模式 前后端分离前我们的开发协作模式一般是这样的: 前端写好静态的HTML页面交付给后端开发。静态页面可以本地开发,也无需考虑业务逻辑只需要实现View即可。 后端使用模板引擎去套模板,同时内嵌一些后端提供的模板变量和一些逻辑操作。 然后前后端集成对接,遇到问题,前台返工,后台返工。
阅读全文
摘要:目录 一、json和pickle模块 1.1 序列化 1.2 json 1.3 pickle 一、json和pickle模块 1.1 序列化 把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshal
阅读全文
摘要:目录一、sys模块 一、sys模块 sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。 方法 详解 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.modules.keys() 返回所有已经导入的模块列表 sys.exc
阅读全文
摘要:目录一、os模块 一、os模块 os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口,多用于文件处理。 方法 详解 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.c
阅读全文
摘要:目录一、random模块 一、random模块 import random # 大于0且小于1之间的小数 print(random.random()) 0.42866657593385415 # 大于等于1且小于等于3之间的整数 print(random.randint(1, 3)) 3 # 大于等
阅读全文
摘要:一 前言 中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。 垂直拆分 比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。 水平拆分 是同一个业务数据量大之后,进行水平拆分 上图中订单数据达到了40
阅读全文
摘要:目录一、datetime模块 一、datetime模块 # datetime模块可以看成是时间加减的模块 import datetime # 返回当前时间 print(datetime.datetime.now()) 2019-03-07 16:22:14.544130 print(datetime
阅读全文
摘要:目录 0.1 time模块 0.1.1 时间戳 0.1.2 格式化时间 0.1.3 结构化时间 0.1.4 不同格式时间的转换 0.1.5 其他用法 0.1 time模块 import time 0.1.1 时间戳 时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始
阅读全文
摘要:目录一、项目地址二、功能需求 一、项目地址 https://github.com/nickchen121/atm 二、功能需求 FUNC_MSG = { '0': '注销', '1': '登录', '2': '注册', '3': '查看余额', '4': '转账', '5': '还款', '6':
阅读全文
摘要:目录 一、为什么要有模块 二、import 与 from...import... 三、循环导入问题 3.1 解决方案一 3.2 解决方案二 四、模块的搜索路径 五、Python文件的两种用途 六、包 一、为什么要有模块 面条版代码--》函数版代码--》文件版代码(模块)--》文件夹版(包) 代码会变
阅读全文
摘要:一 前言 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议 本文由以下三个部分组成 1、讲解缓存更新
阅读全文
摘要:? 1 2 3 4 5 list_display:控制展示字段,注意不能放多对多字段 list_display_links: 控制跳转字段 search_fields: 配置在前端可用的查询字段,查询字段是或关系 list_filter: 设置过滤字段,建议放外键字段用来做过滤并且上下是and关系
阅读全文
摘要:'OPTIONS':{ 'init_command':"SET sql_mode='STRICT_TRANS_TABLES'", 'charset':'utf8mb4',
阅读全文
摘要:django模型类中,null=True,blank=True详解 2018-11-15 18:36:24 zhu6201976 阅读数 1923更多 分类专栏: Python 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:htt
阅读全文
摘要:目录一、软件开发的目录规范 一、软件开发的目录规范 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要,简而言之就是把软件代码分文件目录。假设你要写一个ATM软件,你可以按照下面的目录结构管理你的软件代码: ATM/ |-- core/ | |-- src.
阅读全文
摘要:目录一、什么是包?二、为什么要有包?三、如何用包?3.1 模块和包3.2 扩展模块功能3.3 修改__init__.py文件3.4 导入包内包3.5 导入包内包的模块3.6 绝对导入和相对导入四、注意事项五、练习 一、什么是包? 包是模块的一种形式,包的本质就是一个含有.py的文件的文件夹。 二、为
阅读全文
摘要:目录一、编译Python文件二、批量生成.pyc文件 一、编译Python文件 为了提高加载模块的速度,强调强调强调:提高的是加载速度而绝非运行速度。python解释器会在__pycache__目录中下缓存每个模块编译后的版本,格式为:module.version.pyc。通常会包含python的版
阅读全文
摘要:class Pagination(object): def __init__(self, current_page, all_count, per_page_num=10, pager_count=11): """ 封装分页相关数据 :param current_page: 当前页 :param a
阅读全文
摘要:目录scikit-learn库之k近邻算法一、KNeighborsClassifier1.1 使用场景1.2 代码1.3 参数详解1.4 方法1.4.1 kneighbors([X, n_neighbors, return_distance])1.4.2 kneighbors_graph([X, n
阅读全文
摘要:目录一、Python文件的两种用途 一、Python文件的两种用途 python文件总共有两种用途,一种是执行文件;另一种是被当做模块导入。 编写好的一个python文件可以有两种用途: 脚本,一个文件就是整个程序,用来被执行 模块,文件中存放着一堆功能,用来被导入使用 # aaa.py x = 1
阅读全文
摘要:目录kd树一、kd树学习目标二、kd树引入三、kd树详解3.1 构造kd树3.1.1 示例3.2 kd树搜索3.2.1 示例四、kd树流程4.1 输入4.2 输出4.3 流程五、kd树优缺点5.1 优点5.2 缺点六、小结 更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、
阅读全文
摘要:##项目开发流程 #1.项目需求分析 产品经理+架构师+开发经理/组长 去到客户的公司谈需求(博弈的过程) #2.项目架构设计 架构师设计(数据库(主库:MySQL,从库:redis,mongodb),框架的选择,项目功能划分...) 报价:每个开发人员1500~3000 300万 多部门联合审批
阅读全文
摘要:目录k近邻算法一、k近邻算法学习目标二、k近邻算法引入三、k近邻算法详解3.1 k近邻算法三要素3.1.1 k值的选择3.1.2 最近邻算法3.1.3 距离度量的方式3.1.4 分类决策规则3.2 维数诅咒四、k近邻算法的拓展4.1 限定半径k近邻算法4.2 最近质心算法五、k近邻算法流程5.1 输
阅读全文
摘要:目录一、模块搜索路径的顺序1.1 验证先从内存中找1.2 验证先从内置中找1.3 验证从sys.path中找二、搜索路径以执行文件为准 一、模块搜索路径的顺序 模块其实就是一个文件,如果要执行文件,首先就需要找到模块的路径(某个文件夹)。如果模块的文件路径和执行文件不在同一个文件目录下,我们就需要指
阅读全文
摘要:目录一、什么是循环导入?二、解决方案2.1 方案一2.2 方案二 一、什么是循环导入? # m1.py print('from m1.py') from m2 import x y = 'm1' 创建m2的名称空间 执行m2.py,将执行产生的名字丢到m2.py 在当前执行文件中拿到m2.x # m
阅读全文
摘要:目录一、import 模块名二、from 模块名 import 具体的功能三、import和from...import...的异同 一般使用import和from...import...导入模块。 以下述spam.py内的文件代码为例。 # spam.py print('from the spam.
阅读全文
摘要:pycharm 换成2019之后连接数据库用户名密码数据库名字都没错,就是连接不上去,网上百度一下,试试将URL后面拼接 ?useSSL=false&serverTimezone=UTC 发现终于可以了 也连接上去了,但是每一次都要自己设置一下??? 完美解决办法,新版的8.0版的mysql连接池应
阅读全文
摘要:django-- 配置media文件 media文件夹是我们下载东西后存放数据的主要存放处..十分重要 一:配置media文件: media的配置和static十分相似,但也有一些不同的地方 1,首先在应用里面创建media文件 2,在settings里面配置media文件的路径 在settings
阅读全文
摘要:目录一、什么是模块?二、模块的四种形式三、为什么要用模块?四、如何用模块 一、什么是模块? 模块是一系列功能的集合体,而函数是某一个功能的集合体,因此模块可以看成是一堆函数的集合体。一个py文件内部就可以放一堆函数,因此一个py文件就可以看成一个模块。如果这个py文件的文件名为module.py,模
阅读全文
摘要:一、项目 二、项目地址 https://github.com/nickchen121/atm 三、功能需求 FUNC_MSG = { '0': '注销', '1': '登录', '2': '注册', '3': '查看余额', '4': '转账', '5': '还款', '6': '取款', '7':
阅读全文
摘要:目录 一、闭包函数 二、装饰器 三、三层装饰器 四、迭代器 五、三元表达式 六、列表推导式 七、字典生成式 八、生成器表达式 九、生成器 一十、递归 10.1 二分搜索 十一、匿名函数 十二、面向过程编程 一、闭包函数 def f1(): x = 10 def f2(): print(x) # 10
阅读全文
摘要:目录 一、注册功能 1.1 接受用户输入用户名,进行合法性校验,拿到合法的用户名 1.2 接受用户输入密码,进行合法性校验,拿到合法的密码 1.3 将合法的用户名和密码写入文件 1.4 注册 1.5 封装文件读写功能 二、分层实现功能 面向过程编程是解决问题的一种思想,相当于武林门派,武林门派之间没
阅读全文