定时与邮件在这一关,我们希望为一般的爬虫程序新增两个实用性比较强的功能:第一是定时功能,即程序可以根据我们设定的时间自动爬取数据;第二是通知功能,即程序可以把爬取到的数据结果以邮件的形式自动发送到我们的邮箱。这两个功能可以让爬虫程序定时向我们汇报。试想一下,如果你是一位股票(或比特币)的持有者,你希望及时爬取股票(或比特币)每日的价格数据,方便你能及时卖出或买入,那每天都去启动一遍爬虫程序是极其不高效的。而此时,如果你的爬虫程序有定时和发送邮件功能,能自动
系统 2019-09-27 17:50:59 2173
一、concurrent模块的介绍concurrent.futures模块提供了高度封装的异步调用接口ThreadPoolExecutor:线程池,提供异步调用ProcessPoolExecutor:进程池,提供异步调用ProcessPoolExecutor和ThreadPoolExecutor:两者都实现相同的接口,该接口由抽象Executor类定义。二、基本方法submit(fn,*args,**kwargs):异步提交任务map(func,*iter
系统 2019-09-27 17:49:19 2173
一、排序【这里介绍冒泡排序、选择排序、快速排序和插入排序】1.冒泡排序(1)原理解释:冒泡排序,分多轮排序。1)每一轮都是从上层的第一个数开始与其下一个数进行对比,如果大于下一个数就进行交换,下次对比就从上面第二个数【不管之前有无交换】再与其下一个数进行比较,依次比较到最后一个数。【如图i的移动变化】2)第一轮比较【j=0】。比较了最底下第二个数和最底下这个数后,即第一轮比较完。所以第一轮比较的次数为n-1次,即从上面第一个数一直比较到底下第二个数。【其中
系统 2019-09-27 17:48:20 2173
在类中每次实例化一个对象都会生产一个字典来保存一个对象的所有的实例属性,这样非常的有用处,可以使我们任意的去设置新的属性。每次实例化一个对象python都会分配一个固定大小内存的字典来保存属性,如果对象很多的情况下会浪费内存空间。可通过__slots__方法告诉python不要使用字典,而且只给一个固定集合的属性分配空间classFoo(object):__slots__=("x","y","z")def__init__(self,x,y):self.x=
系统 2019-09-27 17:48:00 2173
python&&多线程多进程及主机管理&&学习笔记多线程知识回顾关于python"假线程"的说法python是非线程安全的语言基本多进程示例基本多进程示例2多进程之进程间通讯示例1多进程间内存共享示例1多进程之进程间通讯示例2多进程间内存共享示例2多进程间内存共享示例3进程池Pool利用pool产生多进程示例多进程多线程执行示例1IT审计堡垒机的开发示例审计堡垒机的安全控制shellinaboxd异步Select、poll&epoll(异步IO模型)sel
系统 2019-09-27 17:47:38 2173
近日,在阅读《FluentPython》的第2.9.2节时,有一个关于内存视图的例子,当时看的一知半解,后来查了一些资料,现在总结一下,以备后续查询;示例复述添加了一些额外的代码,便于更好理解memoryview>>>importarray>>>numbers=array.array('h',[-2,-1,0,1,2])>>>memv=memoryview(numbers)>>>len(memv)5>>>memv[0]-2>>>memv_oct=memv.
系统 2019-09-27 17:47:26 2173
LDAP(LightDirectoryAccessPortocol)是轻量目录访问协议,基于X.500标准,支持TCP/IP。LDAP目录以树状的层次结构来存储数据。每个目录记录都有标识名(DistinguishedName,简称DN),用来读取单个记录,一般是这样的:cn=username,ou=people,dc=test,dc=com几个关键字的含义如下:basedn:LDAP目录树的最顶部,也就是树的根,是上面的dc=test,dc=com部分,一
系统 2019-09-27 17:47:14 2173
一.问题描述在tcp编程中,最需要解决的就是粘包分包问题。所以,我们需要在每个数据包前面加上数据包的长度用以分割粘连的包。二.包结构的设计包的组成:包长度+数据域包长度:用4个字节存储数据域长度,数据域长度即为其所占字节数数据域:由若干个变量组成,如果是定长变量则不用加变量长度定长变量:我们人为规定,传输中的int为4字节定长变量变长变量:那就是字符串啦文字难理解,那我就画个图吧:上图的第一行是数据包的一个总体结构第二行是数据域内部的一个结构(数据域的变量
系统 2019-09-27 17:46:34 2173
我们都知道,序列可以迭代。但是,你知道为什么吗?本文来探讨一下迭代背后的原理。序列可以迭代的原因:iter函数。解释器需要迭代对象x时,会自动调用iter(x)。内置的iter函数有以下作用:(1)检查对象是否实现了iter方法,如果实现了就调用它,获取一个迭代器。(2)如果没有实现iter方法,但是实现了getitem方法,而且其参数是从零开始的索引,Python会创建一个迭代器,尝试按顺序(从索引0开始)获取元素。(3)如果前面两步都失败,Python
系统 2019-09-27 17:46:04 2173
字符串就是一个话题中心。给字符串编号在很多很多情况下,我们都要对字符串中的每个字符进行操作(具体看后面的内容),要准确进行操作,必须做的一个工作就是把字符进行编号。比如一个班里面有50名学生,如果这些学生都有学号,老师操作他们将简化很多。比如不用专门找每个人名字,直接通过学号知道谁有没有交作业。在python中按照这样的顺序对字符串进行编号:从左边第一个开始是0号,向下依次按照整数增加,为1、2...,直到最后一个,在这个过程中,所有字符,包括空格,都进行
系统 2019-09-27 17:38:21 2173
一.垃圾回收机制Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存。#encoding=utf-8__author__='kevinlu1010@qq.com'classClassA():def__init__(self):print'objectborn,id:%s'%str(hex(id(self)))def__del__(self
系统 2019-09-27 17:38:18 2173
本文说明如何通过实现BufferedImageOp接口来编写自定义Java2D图像处理类。它使用一个2D细胞自动机(CA),即循环空间,来构造图像处理应用程序。CA会“操作”图像(例如,一个PEG文件),使图像不断地按有趣的方式转换。我希望本文能开阔您的视野,使您能编写一个全新的图像处理应用程序类。2D细胞自动机2D细胞自动机由分布在2D网格(通常称为布局)中的细胞组成。每个细胞都有一个状态,可以是0到n之间的任意整数。清单1显示了如何用Java代码声明一
系统 2019-08-29 23:53:29 2173
形状补间动画是Flash中非常重要的表现手法之一,运用它,你可以变幻出各种奇妙的不可思议的变形效果。本节从形状补间动画基本概念入手,带你认识形状补间动画在时间帧上的表现,了解补间动画的创建方法,学会应用“形状提示”让图形的形变自然流畅,最后,提供了二个实例练手,帮助你更深地理解形状补间动画。1.形状补间动画的概念[1b](1)形状补间动画的概念[/1b]在Flash的时间帧面板上,在一个时间点(关键帧)绘制一个形状,然后在另一个时间点(关键帧)更改该形状或
系统 2019-08-29 23:34:43 2173
什么是ASM?ASM是一个Java字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为。Javaclass被存储在严格格式定义的.class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及Java字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。与BCEL和SERL不同,ASM提供
系统 2019-08-29 23:29:58 2173
ResultSetMetaData:用来分析"结果集"信息DatabaseMetaData:用来分析是"数据库"信息//做一个简单的查询执行器packagecom.enhance.jdbc;importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.FileInputStream;importja
系统 2019-08-29 22:08:40 2173