自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 定时任务框架

定时任务这个在运维的工作中经常遇到,tornado里面的一个模块实现了定时任务框架,现在我们介绍的是APScheduler任务框架1.APScheduler简介:APScheduler是Python的一个定时任务框架,可以很方便的满足用户定时执行或者周期执行任务的需求,它提供了基于日期date、固定时间间隔interval 、以及类似于Linux上的定时任务crontab类型的定时任务。并且该框架不仅可以添加、删除定时任务,还可以将任务存储到数据库中,实现任务的持久化,所以使用起来非常方便。2.APS

2020-05-11 14:32:02 483

原创 python加密解密

RSA和AES的区别RSA非对称加密,公钥加密,私钥解密,反之亦然。由于需要大数的乘幂求模等算法,运行速度慢,不易于硬件实现。通常私钥长度有512bit,1024bit,2048bit,4096bit,长度越长,越安全,但是生成密钥越慢,加解密也越耗时。既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。AES对称加密,密钥最长只有2

2020-05-11 14:24:32 412

原创 socket

一,客户端、服务端架构c/s架构server端要:1、力求一直提供服务2、要绑定一个唯一的地址(IP和端口,IP确定唯一一台主机,端口确定主机上的唯一的软件),让客户端能明确找到二 osi五层数据链路层:以太网协议,进行数据分组,head部分包含mac地址,有了mac地址在子网内就可以以广播的方式通信网络层:基于IP协议,arp协议传输层:tcp、udp协议三 socket层四 socket是什么先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监

2020-05-11 14:21:19 163

原创 asyncio基础篇03

本节讲解的是future,future和我们平时的使用更多一点。返回 Future 的结果。如果 Future 状态为 完成 ,并由 set_result() 方法设置一个结果,则返回这个结果。如果 Future 状态为 完成 ,并由 set_exception() 方法设置一个异常,那么这个方法会引发异常。如果 Future 已 取消,方法会引发一个 CancelledError 异常。如果 Future 的结果还不可用,此方法会引发一个 InvalidStateError 异常。set_re

2020-05-11 14:11:36 133

原创 asyncio基础篇02

本节将的是loop基本用法,其实在一般情况下是不会对loop进行操作,而对于框架的搭建者,要更精细的控制loop 是需要对loop进行更进一步的理解的。事件循环是每个 asyncio 应用的核心。 事件循环会运行异步任务和回调,执行网络 IO 操作,以及运行子进程。loop.call_soon(callback, *args, context=None)安排在下一次事件循环的迭代中使用 args 参数调用 callback 。回调按其注册顺序被调用。每个回调仅被调用一次。返回一个能用来取消回调的

2020-05-11 14:09:18 145

原创 asyncio基础篇01

在asyncio的前篇中我们已经知道yield到asyncIO的演化路线现在我们就来了解asyncio的基本使用event_loop 事件循环:程序开启一个无限的循环,程序员会把一些函数(协程)注册到事件循环上。当满足事件发生的时候,调用相应的协程函数。coroutine 协程:协程对象,指一个使用async关键字定义的函数,它的调用不会立即执行函数,而是会返回一个协程对象。协程对象需要注册到事件循环,由事件循环调用。future 对象:代表将来执行或没有执行的任务的结果。它和task上没有本质的区

2020-05-11 14:00:16 214

原创 python asyncio前篇

对于了解asyncio之前我们先需要了解什么是协程,了解协程之前我们需要先了解yield关键字yield是一个在python中独有的关键字,可以和if for等流程控制语句归为一类,但是却有所不同,应该是说比他们丰富太多英文意思表示的是让步和产出其实这两个词就可以概括yield的本质了。官方的定义:一个函数加了yield那么就成为了生成器。更确切的定义是表示语句运行到yield处会暂停,可以输出值,或者交出运行权给其他的语句。yield前置知识:迭代器在讨论迭代器之前我们需要知道什么是可迭代和迭代

2020-05-11 12:58:51 163

原创 python functools库的作用

functools这个库里面还有很多有用的东西functools.cmp_to_key(func)将(旧式的Python2)比较函数转换为新式的 key function@functools.lru_cache(maxsize=128, typed=False)一个为函数提供缓存功能的装饰器,缓存 maxsize 组传入参数,在下次以相同参数调用时直接返回上一次的结果。用以节约高开销或I/O函数的调用时间。由于使用了字典存储缓存,所以该函数的固定参数和关键字参数必须是可哈希的。from fun

2020-05-11 10:48:12 303

原创 python collection库的使用

补充知识,各种表达式的效果:tasks = [1,2,3]a = (i for i in tasks) #这种情况生成的是生产器,可以用来迭代b = [i for i in tasks] #生成的是列表c = {i for i in tasks} #这种情况下生成的是set (很意外吧)d = {i:1 for i in tasks} #这种情况下生成的是字典print(type(a))print(type(b))print(type©)print(type(d))运行结果:&

2020-05-11 10:40:19 305

原创 Python的反射

用来进行当前命名空间测定。globals() 函数会以字典类型返回当前位置的全部全局变量。a=‘runoob’print(globals()) # globals 函数返回一个全局变量的字典,包括所有导入的变量。{‘builtins’: <module ‘builtin’ (built-in)>, ‘name’: ‘main’, ‘doc’: None, ‘a’: ‘ru...

2020-04-08 11:27:04 172

原创 垃圾回收机制

1,整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。2,python对小整数的定义[-5, 257)这些整数对象是提前建立好的,不会被垃圾回收。在一个Python的程序中,所有位于这个范围内的整数使用的都是同一个对象.3,同理单个字母也是如此的intern机制公用共享对象:小整数[-5,257)共用对象,常驻内存单个字符共用对象...

2020-04-08 11:25:20 83

原创 yield总结

协程的优点:协程的特点在于是一个线程执行,那和多线程比,协程有何优势?最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。因为...

2020-04-08 11:00:58 342

原创 SQL优化总结

使用explain对sql进行分析:https://www.cnblogs.com/yycc/p/7338894.html小表驱动大表的原则:SELECT * FROM t_emp WHERE dept_id in (SELECT dept_id FROM t_dept) LIMIT 5;换做exists的写法如下SELECT * FROM t_emp WHE...

2020-04-08 10:53:41 105

原创 mysql基础语法

case when 语法:本质上这个是表示的是一个字段名1,简单函数case col when value1 then resut1when value2 then result2when value2 then result3else resultend name表示的某个字段的取值,若取到就返回对应的结果2,搜索函数case when expr then result...

2020-04-08 10:39:50 154

原创 mysql插入总结

mysql的merge方法:mysql “ON DUPLICATE KEY UPDATE” 语法注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法! 这个语法和适合用在需要 判断记录是否存在,不存在则插入存在则更新的场景.基础用法如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQU...

2020-04-08 10:36:28 88

原创 mysql查询总结

sql语句并不是按照代码的顺序来执行的下面是代码的执行顺序先找表 然后找表的关联条件 然后进行关联 关联之后进行where处理 然后在进行字段选取,然后进行分组,排序,最后进行显示limit子查询:就是一组嵌套的select查询缺点:子查询执行效率非常低下,疑问子查询比普通的关联查询(join)更难让mysql进行优化。对时间的统计:按年进行汇总统计:select year,co...

2020-04-08 10:18:53 196

转载 centos7常用命令集合

systemctl list-unit-files 可以查看启动项systemctl set-default multi-user.target关闭防火墙:systemctl stop firewald.servicesystemctl disable firewalld.servicesystemctl disable iptables.servicesystemctl disabl...

2019-01-27 15:28:15 384

转载 python对kafka的操作

首先你要明白kafka的作用原理,以及对应的操作方法使用pykafka对kafka进行操作3.假设你有至少一个卡夫卡实例在本地运行,你可以使用pykafka连接它。consumer.py 消费者#!/usr/bin/python# -*- coding:utf-8 -*-from pykafka import KafkaClient#kafka默认端口为9092client ...

2019-01-19 18:19:27 551

原创 linux环境下的python安全扫描工具编写

本次是使用的python自动化里面的pyclam库,这个库是在linux环境里面专门用来做安全扫描,此文只是将模块的基本用法进行描述。import timeimport pyclamdfrom threading import threadclass Scan(thread): #采用多进程类的方式进行书写 def __init__(self,IP,scan_type,fil...

2018-12-26 16:24:01 463

原创 日志模块归纳

本次是对日志模块的使用:version-1 简单的使用只是简单的输出日志:print(os.getcwd())logging.basicConfig(level=logging.INFO, filename='./log.txt', filemode='a', format...

2018-11-29 15:51:21 473

原创 pymysql在调用MySQL静态方法的使用

本次只是使用pymysql在调用MySQL 其中书写了静态方法的使用,本身比较简单,框架很容易。但这个是很经典的代码书写模式,值得多加练习。from pymysql import connectclass JD(object): def __init__(self): self.conn = connect(host='192.168.4.2', port=3306,...

2018-11-26 16:26:32 134

原创 web-server单进程-非阻塞-长连接写法

本次的创建的web-server比上一次的发表有许多改进之处,首先是在进行多进程,多线程,协程的方案中我们选择了协程,但不同于一般的协程得是,我们是使用的非阻塞来完成多任务。此外对于长连接本次也用到了,可以让浏览器一次请求多个元素。import socketimport redef service_client(new_socket,request): request_lines...

2018-11-20 17:18:15 297

原创 构建返回对应页面的web服务器

本次的服务器是在使用了 正则解析 http的请求报文,提取报文中的请求文件路径,然后读取对应的文件路径进行。import socketimport redef service_client(new_socket): request = new_socket.recv(1024).decode(&quot;utf-8&quot;) #把请求到的字符串切割为列表 request_lines ...

2018-11-19 19:08:55 118

原创 文件夹拷贝器

本次的文件夹拷贝器使用的是多进程,并且用到了进程间的通信来进行进度条的显示。而且用到了with的打开文件写法。import multiprocessingimport osdef file_copy(q,file_name,old_folder,new_folder): with open(old_folder +"\\" + file_name,'rb') as f: ...

2018-11-16 10:42:15 191

原创 进程池的创建

进程池的一般用在多个任务执行,而且不知道具体要开多少进程才合适的情况,极大程度的节约了系统资源。from multiprocessing import Poolimport os,time,randomdef worker(msg): t_start = time.time() print("%s开始执行,进程号为%d" % (msg,os.getpid())) ...

2018-11-15 17:32:46 329

原创 多线程UDP聊天器

这个是上个UDP聊天器的升级版本,加入了多线程的方式进行书写,同时具备收发的性能。唯一不足的是收发的显示上面不好,这个可以在后续的GUI编程中解决,使用独立的对话框进行输入和接收。import socketimport threadingdef send_msg(udp_socket, dest_ip,dest_port): while True: send_dat...

2018-11-15 15:23:10 161

原创 文件下载器项目

这个项目的本质是在tcp服务器上的一次演进,将客户端与服务器之间的数据流记录到文件当中。代码中初步加入了异常捕获,因为没有使用多进程等技术,看起来还是挺简陋的。客户端的代码书写import socketdef main(): client_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) dest_ip = in...

2018-11-14 12:12:43 172 1

原创 tcp客户端和服务器的编写

相比UDP,tcp是面向连接的,分为客户端和服务端的两种编写方式,而且相对来说更加复杂客户端的编写tcp_client.pyimport socketdef main(): tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) server_ip = input(&quot;请输入服务器ip:&quot;) se...

2018-11-14 11:45:53 268

原创 UDP聊天器项目

由于UDP通信不是面向连接的,且双方都可以利用套接字进行收发信息import socketdef send_msg(udp_socket): dest_ip = input(&quot;请输入你的IP:&quot;) dest_port = int(input(&quot;请输入你的端口:&quot;)) send_data = input(&quot;请输入要发送的信息:&quot;) #将信息发送给目标套接

2018-11-14 11:09:08 151

原创 python-pygame飞机大战version2

plane_main.pyimport pygamefrom plane_sprites import *class PlaneGame(object): def __init__(self): self.screen = pygame.display.set_mode(SCREEN_RECT.size) self.clock = pygame.ti...

2018-11-11 10:47:22 143

原创 python-pygame飞机大战version1

分为两个文件,一个为游戏入口文件,进行游戏的初始化,开启游戏循环需求分析:飞机大战需要做的事情1,循环前的准备2,循环开始循环前的准备:加载画布加载时钟加载英雄循环开始:设定循环的帧 __设定事件监听 __event_handler检测碰撞 __check_collide刷新屏幕 pygame.dispaly.update()对类的构造:英雄飞机敌方飞机...

2018-11-09 22:17:34 144

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除