03 2018 档案
摘要:#方式一 l1 = [1, 2, 333, 7, 1, 8, 19, 1, 2, 333] res = list(set(l1)) res.sort(key=l1.index) print(res) #方式2 l1 = [1, 2, 333, 7, 1, 8, 19, 1, 2, 333] res = [] for i in l1: if i not in res: ...
阅读全文
摘要:queue队列 :使用import queue,用法与进程Queue一样 queue is especially useful in threaded programming when information must be exchanged safely between multiple threads. class queue.Queue(maxsize=0) #first in f...
阅读全文
摘要:**********协程********** *****准备**** 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。 按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题, 都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 随着我们对于效率的追求不断提高,基于单线程来...
阅读全文
摘要:进程与线程的区别: 1)进程是资源分配的最小单位,线程是CPU调度的最小单位。每一个进程中至少有一个线程。 2)地址空间和其他资源(如打开文件): 进程间相互独立,同一进程的个线程之间共享。某进程内的线程在其他进程中不可见。 3)通信: 进程间的通信IPC,线程间可以直接读写进程数据段(如全局变量)
阅读全文
摘要:********线程池******** Python标准模块--Concurrent.futures 1.介绍 Concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor:进程池,提供异步调用 Both implement the same interface, which i...
阅读全文
摘要:网络编程+并发编程 架构:B/S 和 C/S C/S:充分发挥PC机的性能 B/S:统一了应用的接口,隶属于CS架构 OSI模型 七层:表示层,会话层,应用层,传输层,网络层,数据链路层,物理层。 我们用五层 应用层 http协议 https协议 ftp协议 snmp/pop3/stmp/dns 传输层 tcp udp 协议 (四层交换机) 网络层 IP协议/icmp...
阅读全文
摘要:*********线程和python******** ******理论知识****** ****全局解释器锁(GIL)**** Python代码的执行由Python虚拟机(也叫解释器主循环)来控制。Python在设计之初就考虑到要在主循环中, 同时只有一个线程在执行。虽然Python解释器中可以“运行”多个线程,但在任意时刻只有一个线程在解释器中运行。 对Python虚拟机的访问由全局解...
阅读全文
摘要:********线程理论******** *****线程概念的引入背景**** **进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为 它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合, 它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许 多个程序同时加载到内存中...
阅读全文
摘要:********生产者消费者模型******** 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费 线程的工作能力来提高程序的整体处理数据的速度。 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果 生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能...
阅读全文
摘要:********进程池******** ****进程池**** 为什么要有进程池? 答: 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在成千 万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁 程也需要消耗时间。第二即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响 序的效率。因此我们不...
阅读全文
摘要:********进程之间的数据共享********(了解) 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。 这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。 但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。 以后尝试使用数据库来解决现在进程之间...
阅读全文
摘要:********进程间通信-队列和管道******** ****进程间通信-队列和管道 IPC(Inter-Process Communication) ****队列 **概念介绍 创建贡献的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。 Queue([maxsize]) 创建共享的进程队列。 参数 :maxsize是队列中允许的最大项数。如果省...
阅读全文
摘要:#之所以会这样,是因为电脑执行太快了,做的快消费的也快,如果做的快消费的慢,那么将不会消费!这与计算机执行快慢有关系。
阅读全文
摘要:********进程同步控制******** ****锁--multiprocessing.Lock**** 通过学习,我么实现了程序的异步,让多个任务可以同时在几个进程中处理,他们之间的运行没有顺序,一旦 开启不受我们控制。尽管并发编程让我们能更加充分的利用IO资源,但是也给我们带来了新的问题 当多个进程使用同一份数据资源的时候,就会引发数据安全或顺序混乱问题。 **多进程抢占资源...
阅读全文
摘要:********在python程序中的进程操作******** 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了, 运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序 也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现并发效果,也就是说,当我们的 程序中存在多个进程的时候,在某些时候,就会让程...
阅读全文
摘要:********进程理论知识******** ****操作系统背景知识**** 顾名思义,进程及正在执行的一个过程,进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一 操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须实现了解操作系统。 PS:即使可以利用cpu只有一个(早期的计...
阅读全文
摘要:import os import logging from logging import handlers from tools.mysql_client import LogMysqlApe from tools.config_paser import ReadConfigParser conf
阅读全文
摘要:Python程序的执行原理 1. 过程概述Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后解释器一条一条执行字节码指令,从而完成程序的执行。 1.1python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后解释器会从编译得到的PyCodeObject对象中一条一条执
阅读全文
摘要:********操作系统基础详解******** ****手工操作--穿孔卡片**** 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存
阅读全文
摘要:# hmac模块使用步骤: # hmac模块模块的使用步骤与hashlib模块的使用步骤基本一致,只是在第1步获取hmac对象时,只能使用hmac.new()函数, # 因为hmac模块没有提供与具体哈希算法对应的函数来获取hmac对象。 # hmac_demo.py HMAC算法 # 与hashlib不同之处在于多了key import hmac def hmac_demo():...
阅读全文
摘要:********操作系统基础******** 1、操作系统分类 批处理操作系统、分时操作系统(Unix)、实时操作系统、网络操作系统、分布式操作系统、微机操作系统(Linux、Windows、IOS等)、嵌入式操作系统。 2、操作系统的4个特征:并发性、共享性、虚拟性、不确定性。 3、操作系统的功能有:处理机管理、文件管理、存储管理、设备管理、作业管理。 处理机管理:也称进程管理。实质上是...
阅读全文
摘要:********socket模块******** 1、Socket 类型 套接字格式: socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。 socket类型 描述 socket.AF_UNIX 只能够用于单一的Unix系统进程间通信 socket.AF_INET 服务器之间网络通信 socket.AF_INET6 I...
阅读全文
摘要:subprocess模块 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/output/error 管道,并获取它们的返回(状态)码。这个模块的目的在于替换几个旧的模块和方法,如: os.system os.spawn* 1. subprocess模块中的常用函数 函数 描述 subprocess.run() Python 3.5中...
阅读全文
摘要:目录格式: 构建此目录就可随意使用! client端 server端
阅读全文
摘要:解决方案 # 我们可以借助一个模块,这个模块可以把要发送的数据长度转换成固定长度的字节。这样客户端每次接 # 收消息之前只要先接受这个固定长度字节的内容看一看接下来要接收的信息大小,那么最终接受的数据 # 要达到这个值就停止,就能刚好不多不少的接收完整的数据了。 # import json,struct # #假设通过客户端上传1T:1073741824000的文件a.txt # #为避免...
阅读全文
摘要:# #********struct模块********# # 1.按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时, # 不能传输int,此时先将int转化为字节流,然后再发送; # 2.按照指定格式将字节流转换为Python指定的数据类型; # 3.处理二进制数据,如果用struct来处理文件的话,需要用’wb’,’rb’以二 # 进制(字节流)写,读的方式来处理文...
阅读全文
摘要:********黏包******** ****黏包现象**** 基于tcp先制作一个远程执行命令的程序(命令 ls -l ; |||; pwd) res=subprocess.Popen(cmd.decode('utf-8'), shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) 的结果的编码是以当前所在的系统为准的,如...
阅读全文
摘要:import my_UDP sk = my_UDP.My_Socket() while 1: msg = input('>>>') sk.mysendto(msg,('127.0.0.1', 8080)) data, addr = sk.myrecvfrom(1024) print(data) im
阅读全文
摘要:import my_TCP sk = my_TCP.My_socket() sk.bind(('127.0.0.1', 7084)) sk.listen(4) while 1: conn, addr = sk.accept() print(conn, type(conn)) while 1: res
阅读全文
摘要:主要为题出在服务器端的accept()函数,他返回两个参数,一个套接字和一个客户端的ip和端口组成的元组。 问题就出在这个套接字这里,我们继承了socket这个类,这个套接字创建的时候是通过socket创建的, 后面我们不可以直接使用它,因为它调用的方法都是socket的方法,所以我们只能将他作为参
阅读全文
摘要:# __author: busensei # data: 2018/8/15 from functools import reduce import re def cal_atomexp(atom_exp): # 计算乘除法 if '*' in atom_exp: a, b = atom_exp.split('*') atom_res...
阅读全文
摘要:#****setver端 import socket sk = socket.socket() adress = ('127.0.0.1', 8032) sk.bind(adress) sk.listen(4) while 1: conn, addr = sk.accept() while 1: res_s = ...
阅读全文
摘要:#****server端 import socket sk = socket.socket(type = socket.SOCK_DGRAM) sk.bind(('127.0.0.1', 8050)) while 1: msg, addr = sk.recvfrom(1024) print(msg.decode('utf-8')) msg_f...
阅读全文
摘要:python_控制台输出带颜色的文字方法 在python开发的过程中,经常会遇到需要打印各种信息。海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性。这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了。 当然了,控制台的展示效果有限,并不能像前段一样炫酷,只能做
阅读全文
摘要:******socket概念****** ****理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。 在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议 族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。 其实站在你的角度上看,socket就是一个模块。我...
阅读全文
摘要:TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK[1],并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接。[1] TCP三次握手的过程如下: 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报...
阅读全文
摘要:据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切。他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的。Python 的魔术方法非常强大,然而随之而来的则是责任。了解正确的方法去使用非常重要!C._...
阅读全文
摘要:交换机的主要功能是组织局域网,经过交换机内部处理解析信息之后,将信息以点对点,点多对的形式,发送给固定端 路由器的主要功能: 进行跨网段进行数据传输,路由选择最佳路径. 如果你只有一个外网ip,但是你有好多台电脑需要上网, 用路由器即可
阅读全文
摘要:>When the items are exhausted (which is immediately when the sequence is empty), the suite in the else clause, if present, is executed, and the loop t
阅读全文
摘要:MongoDB数据库-基础篇 一使用mongodb 1.常用的命令 1)mac下打开终端 执行 brew services start mongodb 启动 MongoDB服务,执行 mongo 开启shell操作; 2)显示所有db: show dbs 3)启用某个db: use mydb (如果
阅读全文
摘要:Redis基础 Redis是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串,哈希,链表,集合和有序集合。 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value
阅读全文
摘要:计算机网络基础 网络到底是什么?计算机之间如何通信的? 早期:联机 以太网:局域网与交换机 ******广播 主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发, 所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本 可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号, 但只将一个频道的信号...
阅读全文
摘要:collections模块 在内置数据类型(dict、list、set、tuple)的基础上,collections模块 还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3...
阅读全文
摘要:异常处理 1.异常和错误 part1:程序中难免出现错误,而错误分为两种 1)语法错误(这种错误,根本过不了解释器的语法检测,必须在程序执行前改正) 2)逻辑错误(逻辑错误) part2:异常 异常就是在程序运行时发生错误的信号 part3:python中的异常类 在python中不同的异常可以用不同的类型(python中统一了类与类类】型,类型即类)去标识,不同的 类对象标识不同的对象...
阅读全文
摘要:import os filePath = "/Users/busensei/wzy/filePath/" def read(filePath, n): it = os.listdir(filePath) # 打开文件夹 for el in it: # 拿到路径 fp = os.path.join(filePath, el) # 获取到绝...
阅读全文
摘要:什么是反射?#是什么 答:用字符串数据类型的变量名来访问这个变量的值 反射的方法:getattr hasattr setattr delattr 好处:优化代码 1.getattr 用法:getattr(object, name[,default]) -> value 返回object中name字符串对应的方法和属性,不存在返回默认值default。 如果没有传default,那么找不到...
阅读全文
摘要:单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某 一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就 能派上用场。 单例类:如果一个类,从头到尾只开辟了一块属于对象的空间,那么这个类就是一个单例类。 准备工作: ----#__init__()方法叫初始化方法 ----#__new__()方法叫构造方法 例子: ...
阅读全文