为您找到搜索结果:4608个
分布式任务队列--Celery的学习笔记
一、Celery简介 Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。它是一个任务队列,专注于实时处理,同时还支持任务调度。 所谓任务队列,是一个逻辑上的概念,可以将抽象中的任务发送到指定的执行任务的组件,任务队列可以跨线程或机器运行。 Celery是基于Python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery。 二、Celery使用场景 1.高并发的请求任务,比如需要发送大量请求的网络爬虫,就可以使用Celery来加速爬取。 2.异步任务,将耗时的操作交给Celery来完成,比如发送/接收邮件、消息推送等等。 3.定时任务,需要定时运行的程序,比如每天定时执行爬虫爬取数据。 三、Celery架构 下图是我找到的一张表示Celery架构的图: 任务生产者:产生任务并且把任务提交到任务队列的就是任务生产者。 任务调度Beat:Celery会根据配置文件对任务进行调配,可以按一定时间间隔周期性地执行某些任务。 ...
【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验
之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验。所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对IP的检测。本文介绍的是利用Redis数据库实现的分布式爬虫,Redis是一种常用的菲关系型数据库,常用数据类型包括String、Hash、Set、List和SortedSet,重要的是Redis支持主从复制,主机能将数据同步到从机,也就能够实现读写分离。因此我们可以利用Redis的特性,借助requests模块发送请求,再解析网页和提取数据,实现一个简单的分布式爬虫。 Python版本:Python3 Redis版本:5.0 IDE:Pycharm 由于Windows下的安装配置比较简单,所以这里只说Linux环境下安装和配置Redis(以Ubuntu为例)。1.安装Redis1)apt安装:$ sudoapt-getinstallredis-server2)编译安装:$ wget http://download.redis.io/relea...
Flask学习之旅--数据库
在Web开发中,数据库操作是很重要的一部分,因为网站的很多重要信息都保存在数据库之中。而Flask在默认情况下是没有数据库、表单验证等功能的,但是可以用Flask-extension为Web应用添加这些功能。 SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统。由于Python对SQlite有内置的支持,因此在Flask应用程序中和SQLite进行交互是比较容易的。 首先需要创建一个SQLite数据库“user.db”,并在其中创建一张用户表。代码如下:1importsqlite3234conn=sqlite3.connect("user.db")5print("Connected!")67conn.execute("CREATETABLEUSER(usernameTEXT,passwordTEXT,EMAILTEXT)")8print("Tablecreatedsuccessfully!")9conn.close() 这里就不贴HTML代码了,就是一个注册页面,在注册的时候会将用户输入的用户名、密码和邮箱传到后台。在ap...
字符编码学习笔记
ASCII:ASCII码即美国标准信息交换码(American Standard Codefor Information Interchange)。由于计算机内部所有信息最终都是一个二进制值,而每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。标准ASCII码一共规定了128个字符的编码,这是因为只使用了后面七位,最前面的一位统一规定为0。之后IBM制定了128个扩充字符,这些字符并非标准的ASCII码,而是用来表示框线、音标和其它欧洲非英语系的字母。英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的,而且不同的国家使用不同的字母,有的国家使用的字符也远远超过256个,显然ASCII已经无法解决问题了。那么有没有一种统一且唯一的编码方式呢?答案就是Unicode。Unicode:Unicode是计算机科学领域里的一项业界标准,Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行...
【CUDA学习】GPU硬件结构
GPU的硬件结构,也不是具体的硬件结构,就是与CUDA相关的几个概念:thread,block,grid,warp,sp,sm。sp:最基本的处理单元,streamingprocessor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理sm:多个sp加上其他的一些资源组成一个sm, streamingmultiprocessor.其他资源也就是存储资源,共享内存,寄储器等。warp:GPU执行程序时的调度单位,目前cuda的warp的大小为32,同在一个warp的线程,以不同数据资源执行相同的指令。grid、block、thread:在利用cuda进行编程时,一个grid分为多个block,而一个block分为多个thread.其中任务划分到是否影响最后的执行效果。划分的依据是任务特性和GPU本身的硬件特性。下面几张硬件结构简图便于理解(图片来源于网上)以上两图可以清晰地表示出sm与sp的关系。此图反应了warp作为调度单位的作用,每次GPU调度一个warp里的32个线程执行同一条指令,其中各个线程对应的数据资源不同。上图是一...
【CUDA学习】全局存储器
全局存储器,即普通的显存,整个网格中的任意线程都能读写全局存储器的任意位置。存取延时为400-600clockcycles 非常容易成为性能瓶颈。访问显存时,读取和存储必须对齐,宽度为4Byte。如果没有正确的对齐,读写将被编译器拆分为多次操作,降低访存性能。多个half-warp的读写操作如果能够满足合并访问,则多次访存操作会被合并成一次完成。合并访问的条件,GT200放宽了合并访问的条件。支持对8bit、16bit、32bit、64bit数据字的合并访问 相应传输32Byte64Byte128Byte,大于128Byte,分两次传输。在一次合并传输的数据中,不要求线程编号和访问的数据字编号相同。当访问128Byte数据时,如果地址没有对齐到128Byte时,在GT200会产生两次合并访存。根据每个区域的大小,分为两次合并访存,如图所示32Byte和96Byte。PS:图片来源于网上关于访存合并以及访存冲突,关键就是要理解,GPU是以half-warp进行访存时,即16个线程一起访问存储器,到这16个线程的访问的地址在同一块区域(指硬件上可以一起传送宽度)时,并且没有冲突产...
【CUDA学习】共享存储器
下面简单介绍一些cuda中的共享存储器和全局存储器 共享存储器,sharedmemory,可以被同一块中的所有线程访问的可读写存储器,生存期是块的生命期。Tesla的每个SM拥有16KB共享存储器。在编程过程中,有静态的sharedmemory动态的sharedmemory静态的sharedmemory在程序中定义 __shared__typeshared[SIZE];动态的sharedmemory通过内核函数的每三个参数设置大小extern__shared__typeshared[];共享存储器被组织为16个bank,每个bank拥有32bit的宽度。无bankconflict时,一个half-warp内的线程可以在一个内核周期中并行访问对同一bank的同时访问导致bankconflict 只能顺序处理 访存效率降低如果half-warp的线程访问同一地址时,会产生一次广播,不会产生bankconflict__shared__floatshared[256];floatfoo=shared[threadIdx.x];没有访问冲突__shared__floatshared[256...
【OpenCV学习】计算两幅图像的重叠区域
问题描述:已知两幅图像Image1和Image2,计算出两幅图像的重叠区域,并在Image1和Image2标识出重叠区域。算法思想:若两幅图像存在重叠区域,则进行图像匹配后,会得到一张完整的全景图,因而可以转换成图像匹配问题。图像匹配问题,可以融合两幅图像,得到全景图,但无法标识出在原图像的重叠区域。将两幅图像都理解为多边形,则其重叠区域的计算,相当于求多边形的交集。通过多边形求交,获取重叠区域的点集,然后利用单应矩阵还原在原始图像的点集信息,从而标识出重叠区域。算法步骤:1.图像匹配计算,获取单应矩阵。2.根据单应矩阵,计算图像2的顶点转换后的点集。3.由图像1的顶点集合和图像2的转换点集,计算多边形交集。4.根据单应矩阵的逆,计算多边形的交集在图像2中的原始点集。代码实现如下所示:1boolImageOverlap(cv::Mat&img1,cv::Mat&img2,std::vector<cv::Point>&vPtsImg1,std::vector<cv::Point>&vPtsImg2)2{3cv::Matg1(img1...
capwap学习笔记——初识capwap(五)
3.CAPWAPBindingforIEEE802.11¢CAPWAP协议本身并不包括任何指定的无线技术。它依靠绑定协议来扩展对特定无线技术的支持。¢RFC5416就是用来扩展CAPWAP对IEEE802.11网络的支持。其中定义了控制消息字段,新的控制消息,消息元素。¢注意,这个协议仅支持IEEE802.11-2007规范,并不支持IEEE802.11-2007standard中定义的adhoc网络模式(即点到点模式,也就是IBSS),也不适用于four-address格式的数据帧(这种数据帧一般用于网桥,在IEEE802.11-2007标准中没有指定这种用法)。协议并不支持IEEE802.11n。一些术语:BasicServiceSet(BSS):基础服务集合(中控型基本服务集)。指由被控制的STA及其控制结构组成的无线网络。IndependentBasicServiceSet(IBSS):独立基础服务集,也称为特别网络,它是由一系列彼此相互连接的,没有基础架构的站点组成的一个802.11网络,是专为点对点连接。IBSS模式没有无线基础设施骨干,但至少需要2台STA。3.1绑定标识...
capwap学习笔记——初识capwap(四)
2.5.7CAPWAP传输机制WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯。CAPWAP协议支持UDP和UDP-Lite[RFC3828]。¢在IPv4上,CAPWAP控制和数据通道使用UDP。此时CAPWAP报文中的UDP校验和必须设置为0。AC上的CAPWAP控制报文端口为UDP众所周知端口5246,数据报文端口为UDP众所周知端口5247,WTP可以随意选择CAPWAP控制和数据端口。¢在IPv6上,CAPWAP控制通道一般使用UDP,而数据通道可以使用UDP或者UDP-Lite。UDP-Lite为默认的数据通道传输协议。当使用UDP-Lite协议的时候,校验和必须为8.UDP-Lite使用的端口与UDP一致。2.5.8分片、重组、MTU发现CAPWAP协议在应用层上提供IP报文的分配和重组服务,由于使用隧道机制,报文分片中间的传输媒介来说是透明的。因此可以在任何网络架构(防火墙,NAT等)上使用CAPWAP协议。CAPWAP实现的分片机制也有局限和不足,协议RFC4963中详细描述。CAPWAP执行MTU发现来避免分片。一旦WTP发现AC,且想要与这个AC建立一...
capwap学习笔记——初识capwap(三)
2.5.6CAPWAP状态机详解2.5.6.1StarttoIdle这个状态变迁发生在设备初始化完成。¢ WTP:开启CAPWAP状态机。 ¢ AC: 开启CAPWAP状态机。2.5.6.2IdletoDiscovery这个状态变迁发生是为了支持CAPWAP发现进程。 ¢ WTP:WTP进入发现状态是为了优先去传输第一个DiscoveryRequestmessage。在进入这个状态之前,WTP设置发现DiscoveryIntervaltimer,将DiscoveryCountcounter为0.同时清理以前的发现过程中可能会从AC收到的所有信息。 ¢ AC:由发现线程执行,且发生在收到一个发现请求报文的时候。此时,AC需要给这个报文响应一个DiscoveryResponsemessage。2.5.6.3DiscoverytoDiscovery在这个发现状态,WTP决定连接哪个A...
capwap学习笔记——初识capwap(一)
2初识CAPWAP2.1CAPWAP简介 说了半天CAPWAP,连全称都还没说,汗…… CAPWAP——ControlAndProvisioningofWirelessAccessPointsProtocolSpecification。其由两个部分组成:CAPWAP协议和无线BINDING协议。 前者是一个通用的隧道协议,完成AP发现AC等基本协议功能,和具体的无线接入技术无关。后者是提供具体和某个无线接入技术相关的配置管理功能。这么说吧,前者规定了各个阶段需要干什么事,后者就是具体到在各种接入方式下应该怎么完成这些事。 CAPWAP协议在2009年4月的RFC5415中发布,无线BINGDING协议目前只出台了接入...
capwap学习笔记——初识capwap(二)
2.5.1AC发现机制WTP使用AC发现机制来得知哪些AC是可用的,决定最佳的AC来建立CAPWAP连接。WTP的发现过程是可选的。如果在WTP上静态配置了AC,那么WTP并不需要完成AC的发现过程。WTP首先发送一个DiscoveryRequestmessage给受限的广播地址,或者CAPWAP的多播地址(224.0.1.140),或者是预配置的AC的单播地址。在IPV6网络中,由于广播并不存在,因此使用"AllACsmulticastaddress"(FF0X:0:0:0:0:0:0:18C)来代替。当接收到DiscoveryRequestmessage消息,AC发送一个单播DiscoveryResponsemessage给WTP。WTP可以通过DiscoveryResponsemessage中所带的AC优先级,支持的CAPWAPbinding来选择与哪个AC建立会话。除了上面的发现机制,WTP还可以使用DNS或者DHCP来发现AC。2.5.2DTLS握手WTP首先发送一个ClientHello消息来发起握手,说明它支持的密码算法列表、压缩方法及最高协议版本和其他一些需要的消息。A...
capwap学习笔记——capwap的前世今生(转)
公司要做AP和AC,从今天开始学习capwap。1capwap的前世今生1.1胖AP、瘦AP、AC传统的WLAN网络都是为企业或家庭内少量移动用户的接入而组建的。因此,只需要一个无线路由器就可以搞定了,就好像现在家用的无线路由器就是胖AP。胖AP将WLAN的物理层、用户数据加密、用户认证、QoS、网络管理、漫游技术以及其他应用层的功能集于一身,功能全,结构复杂。随着无线网络的发展,现在需要部署无线设备的地方越来越多,胖AP的弊端也随之显现出来:¢ WLAN建网时需要对成百上千的AP进行逐一配置:网管IP地址、SSID和加密认证方式等无线业务参数、信道和发射功率等射频参数、ACL和QOS等服务策略,很容易因误配置而造成配置不一致。¢ 为了管理AP,需要维护大量AP的IP地址和设备的映射关系,每新增加一批AP设备都需要进行地址关系维护。¢ 接入AP的边缘网络需要更改VLAN、ACL等配置以适应无线用户的接入,为了能够支持用户的无缝漫游,需要在边缘网络上配置所有无线用户可能使用的VLAN和ACL。¢ 察看网络运行状况和用户统计时需要逐一登录到AP设备才...
机器学习经典书籍
入门书单《数学之美》PDF作者吴军大家都很熟悉。以极为通俗的语言讲述了数学在机器学习和自然语言处理等领域的应用。《ProgrammingCollectiveIntelligence》(《集体智慧编程》)PDF作者TobySegaran也是《BeautifulData:TheStoriesBehindElegantDataSolutions》(《数据之美:解密优雅数据解决方案背后的故事》)的作者。这本书最大的优势就是里面没有理论推导和复杂的数学公式,是很不错的入门书。目前中文版已经脱销,对于有志于这个领域的人来说,英文的pdf是个不错的选择,因为后面有很多经典书的翻译都较差,只能看英文版,不如从这个入手。还有,这本书适合于快速看完,因为据评论,看完一些经典的带有数学推导的书后会发现这本书什么都没讲,只是举了很多例子而已。《AlgorithmsoftheIntelligentWeb》(《智能web算法》)PDF作者HaralambosMarmanis、DmitryBabenko。这本书中的公式比《集体智慧编程》要略多一点,里面的例子多是互联网上的应用,看名字就知道。不足的地方在于里面的配套...