收藏 分享(赏)

54算法实战(三):剖析高性能队列Disruptor背后的数据结构和算法.pdf

上传人:始于喜欢终于深爱 文档编号:2181523 上传时间:2020-05-20 格式:PDF 页数:11 大小:522.97KB
下载 相关 举报
54算法实战(三):剖析高性能队列Disruptor背后的数据结构和算法.pdf_第1页
第1页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 | | occurrences | int(11) | YES | | NULL | | +-+-+-+-+-+-+ 虽然表定义的结构变复杂了,但是新增的字段就是 id 字段。它们是整数,不会占用很多空间。另外,每个 URL 和词组都只会储存一次。 除非你安装了第三方包或保存详细的数据库日志,否则你无法掌握数据库里数据增加、更新或删除的具体时间。因此,如果需要对数据可用的空间、变更的频率和变更的重要性进行分析,你应该考虑在 数据新增、更新或删除时加一个时间戳。 5.3.5 MySQL里的里的“六度空间游戏六度空间游戏” 在第 3 章,我们介绍过“维基百科六度分隔”问题,其目标是通过一些词条链

2、接寻找两个词条间的联系(即找出一条链接路径,只要点击链接就可以从一个维基词条到另一个维基词条)。 为了解决这个问题,我们不仅需要建立网络爬虫采集网页(之前我们已经做过),还要把采集的信息以某种形式存储起来,以便后续进行数据分析。 前面介绍过的自增的 id 字段、时间戳以及多份数据表在这里都要用到。为了确定最合理的信息存储方式,你需要先想想游戏规则。一个链接可以轻易地把页面 A 连接到页面 B。同样也可以轻易地把页 面 B 连接到页面 A,不过这可能是另一条链接。我们可以这样识别一个链接,即“页面 A 存在一个链接,可以连接到页面 B”。也就是 INSERT INTO links (fromPa

3、geId, toPageId) VALUES (A, B); (其中,“A”和“B”分别表示页面的 ID 号)。 因此需要设计一个带有两张数据表的数据库来分别存储页面和链接,两张表都带有创建时间和独立的 ID 号,代码如下所示: CREATE TABLE wikipedia.pages ( id INT NOT NULL AUTO_INCREMENT, url VARCHAR(255) NOT NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id); CREATE TABLE wikipedia.

4、links ( id INT NOT NULL AUTO_INCREMENT, fromPageId INT NULL, toPageId INT NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id); 注意,这里和前面打印页面标题的爬虫不同,我没有在页面数据表里使用页面标题字段,为什么这么做呢?其实是因为页面标题要在你进入页面后读取内容才能抓到。那么,如果我们想创建一个高效的 爬虫来填充这些数据表,那么只存储页面的链接就可以保存词条页面了,甚至不需要访问词条页面。 当然并不是所有网站都具有这个

5、特点,但是维基百科的词条链接和对应的页面标题是可以通过简单的操作进行转换的。例如,http:/en.wikipedia.org/wiki/Monty_Python 的后面就是页面标题“Monty Python”。 下面的代码会把“贝肯数”(一个页面与凯文 贝肯词条页面的链接数)不超过 6 的维基百科页面存储起来: from urllib.request import urlopen from bs4 import BeautifulSoup import re import pymysql conn = pymysql.connect(host=127.0.0.1, unix_socket=/

6、tmp/mysql.sock,user= root, passwd=None, db=mysql, charset=utf8) cur = conn.cursor() cur.execute(“USE wikipedia“) def insertPageIfNotExists(url): cur.execute(“SELECT * FROM pages WHERE url = %s“, (url) if cur.rowcount = 0: cur.execute(“INSERT INTO pages (url) VALUES (%s)“, (url) mit() return cur.last

7、rowid else: return cur.fetchone()0 def insertLink(fromPageId, toPageId): cur.execute(“SELECT * FROM links WHERE fromPageId = %s AND toPageId = %s“, (int(fromPageId), int(toPageId) if cur.rowcount = 0: cur.execute(“INSERT INTO links (fromPageId, toPageId) VALUES (%s, %s)“, (int(fromPageId), int(toPag

8、eId) mit() pages = set() def getLinks(pageUrl, recursionLevel): global pages if recursionLevel 4: return; pageId = insertPageIfNotExists(pageUrl) html = urlopen(“http:/en.wikipedia.org“+pageUrl) bsObj = BeautifulSoup(html) for link in bsObj.findAll(“a“, href= pile(“(/wiki/)(?!:).)*$“): insertLink(pa

9、geId, insertPageIfNotExists(link.attrshref) if link.attrshref not in pages: # 遇到一个新页面,加入集合并搜索里面的词条链接 newPage = link.attrshref pages.add(newPage) getLinks(newPage, recursionLevel+1) getLinks(“/wiki/Kevin_Bacon“, 0) cur.close() conn.close() 用递归实现那些需要运行很长时间的代码,通常是一件复杂的事情。在本例中,变量 recursionLevel 被传递到 get

10、Links 函数里,用来跟踪函数递归的次数(每完成一次递归,recursionLevel 就加 1)。当 recursionLevel 值到 5 的时候,函数会自动返回,不会继续递归。这个限制可以防止数据太大导致内存堆栈溢出。 需要注意的是,这个程序可能要运行好几天才会结束。虽然我自己运行过它,但是我的数据库里只保持了一点点贝肯数不超过 6 的词条,因为维基百科服务器会拒绝程序的请求。但是,这些数据对后面 分析维基百水平多关节型机器人 H4系列 机器人手册 Rev.1 C1M13ZR2621R 机器人手册 H4系列 Rev.1 H4 Rev.1 i 水平多关节型机器人 H4系列 机器人手册 R

11、ev.1 Copyright 2013 SEIKO EPSON CORPORATION. All rights reserved. ii H4 Rev.1 前言 感谢您购买本公司的机器人系统。 本手册记载了正确使用机器人所需的事项。 安装该机器人系统前,请仔细阅读本手册与其他相关手册。 阅读之后,请妥善保管,以便随时取阅。 保修 本机及其选装部件是经过本公司严格的质量控制、测试和检查,并在确认性能满足 本公司标准之后出厂交付的。 在交付产品的保修期内,本公司仅对正常使用时发生的故障进行免费修理。 (有关保 修期事项,请咨询您的区域销售办事处。 ) 但在以下情况下,将对客户收取修理费用(即使在保

12、修期内) : 1. 因不同于手册内容的错误使用以及使用不当而导致的损坏或故障。 2. 客户未经授权进行拆卸导致的故障。 3. 因调整不当或未经授权进行修理而导致的损坏。 4. 因地震、洪水等自然灾害导致的损坏。 警告、小心、使用: 1. 如果机器人或相关设备的使用超出本手册所述的使用条件及产品规格, 将导致保修无 效。 2. 本公司对因未遵守本手册记载的“警告”与“注意”而导致的任何故障或事故, 甚至是人 身伤害或死亡均不承担任何责任,敬请谅解。 3. 本公司不可能预见所有可能的危险与后果。 因此, 本手册不能警告用户所有可能的危 险。 H4 Rev.1 iii 商标 Microsoft、Wi

13、ndows及Windows标识为美国Microsoft Corporation在美国和/或其它国 家的注册商标或商标。其它品牌与产品名称均为各公司的注册商标或商标。 注意事项 禁止擅自复印或转载本手册的部分或全部内容。 本手册记载的内容将来可能会随时变更,恕不事先通告。 如您发现本手册的内容有误或需要改进之处,请不吝斧正。 垂询方式 有关机器人的修理/检查/调整等事项,请与服务中心联系。 未记载服务中心时,请与当地销售商联系。 联系时,请事先准备好下述各项。 - 控制器名称/序列No. - 机器人名称/序列No. - 软件名称/版本 - 系统出现的问题 服务中心 iv H4 Rev.1 制造商

14、 Toyoshina Plant Industrial Solutions Division 6925 Toyoshina Tazawa, Azumino-shi, Nagano, 399-8285 JAPAN TEL : +81-(0)263-72-1530 FAX : +81-(0)263-72-1495 销售商 北美与南美 EPSON AMERICA, INC.EPSON AMERICA, INC. Factory Automation/Robotics 18300 Central Avenue Carson, CA 90746 USA TEL : +1-562-290-5900 FAX

15、 : +1-562-290-5999 E-MAIL : info 欧洲 EPSON DEUTSCHLAND GmbHEPSON DEUTSCHLAND GmbH Factory Automation Division Otto-Hahn-Str.4 D-40670 Meerbusch Germany TEL : +49-(0)-2159-538-1391 FAX : +49-(0)-2159-538-3170 E-MAIL : robot.infosepson.de 中国 EPSON China Co., Ltd EPSON China Co., Ltd Factory Automation

16、Division 7F, Jinbao Building No. 89 Jinbao Street Dongcheng District, Beijing, China, 100005 TEL : +86-(0)-10-8522-1199 FAX : +86-(0)-10-8522-1120 台湾 EPSON Taiwan Technology & Trading Ltd.EPSON Taiwan Technology & Trading Ltd. Factory Automation Division 14F, No.7, Song Ren Road, Taipei 110 Taiwan,

17、ROC TEL : +886-(0)-2-8786-6688 FAX : +886-(0)-2-8786-6677 H4 Rev.1 v 东南亚 Epson Singapore Pte Ltd.Epson Singapore Pte Ltd. 印度 Factory Automation System 1 HarbourFrontPlace, #03-02 HarbourFront Tower one, Singapore 098633 TEL : +65-(0)-6586-5696 FAX : +65-(0)-6271-3182 韩国 EPSON Korea Co, Ltd.EPSON Kor

18、ea Co, Ltd. Marketing Team(Robot Business) 27F DaeSung D-Polis A, 606 Seobusaet-gil, Geumcheon-gu, Seoul, 153-803 Korea TEL : +82-(0)-2-3420-6692 FAX : +82-(0)-2-558-4271 日本 EPSON SALES JAPAN CORPORATION EPSON SALES JAPAN CORPORATION Factory Automation Systems Department Nishi-Shinjuku Mitsui Bldg.6

19、-24-1 NishishinjukuShinjuku-kuTokyo160-8324 JAPAN TEL : +81-(0)3-5321-4161 vi H4 Rev.1 阅读本手册之前 本节介绍了您在阅读本手册之前应了解的事项。 控制系统的构成 通过以下控制器与软件组合构成了H4系列机器人系统。 控制器 软件 版本7.0.0-7.0.3:! RC700 EPSON RC+ 7.0 7.0.4或以后版本:OK OK:可连接 可使用EPSON RC+ 7.0与控制器具备的所有功能。 !:可连接 虽然可连接,但推荐使用EPSON RC+7.0 7.0.4或以后版本。不能执 行控制器固件的版本升级

20、。 H系列机器人的一些指令无法使用。 机器 人的虚拟控制器设置以及模拟器的三维显示不可用。 启动/关闭控制器 本手册在出现“将控制器电源设为ON(OFF)”的指示时,请务必启动/关闭所有硬件组 件。 电机形状 使用的机器人电机形状与手册中描述的电机形状可能会因规格而异。 通过软件进行设定 本手册包括利用软件进行设定的步骤。利用下述标记进行解说。 EPSON RC+ 插图 在本手册中,使用标准型号机器人插图来进行说明。除非另有说明,否则标准型号 与洁净型号的规格没有差异。 目录 H4 Rev.1 vii 基本篇 1.关于安全 3 1.1 关于正文中的符号 .3 1.2 设计与安装注意事项 .4

21、1.3 操作注意事项 .5 1.4 紧急停止 .6 1.5 如何使用电磁制动器移动机械臂 .8 1.6 机器人标签 .9 2. 规格 11 2.1 H4系列机器人的特征 11 2.2 型号 11 2.3 部件名称及各机械臂的动作范围 12 2.3.1 标准环境规格(H4-351S) 12 2.3.2 洁净环境规格(H4-351C) 14 2.4 规格表 16 2.5 机型设定方法 18 3. 环境与安装 19 3.1 环境 19 3.2 台架 20 3.3 机器人安装尺寸 21 3.3.1 标准环境规格(H4-351S) 21 3.3.2 洁净环境规格(H4-351C) 22 3.4 开箱与搬

22、运 23 3.5 安装 24 3.5.1 标准环境规格 .24 3.5.2 洁净环境规格 .25 3.6 电缆连接 26 3.7 用户配线与配管 27 3.8 移设与保管 28 3.8.1 移设与保管注意事项 .28 3.8.2 移设 .29 4. 夹具末端的设定 30 4.1 夹具末端的安装 30 4.2 相机/气动阀等的安装 .31 4.3 Weight设定与Inertia设定 .31 4.3.1 Weight设定 .32 4.3.2 Inertia设定 33 4.4 第3关节自动加/减速注意事项 37 目录 viii H4 Rev.1 5. 动作区域 38 5.1 利用脉冲范围设定动作区域(全关节) . 38 5.1.1 第1关节最大脉冲范围 . 39 5.1.2 第2关节最大脉冲范围 . 39 5.1.3 第3关节最大脉冲范围 . 40 5.1.4 第4关节最大脉冲范围 . 40 5.2 利用机械挡块设定动作区域 . 41 5.2.1 第1关节/第2关节的机械挡块设定 . 41 5.2.2 第3关节的机械挡块设定 . 43 5.3 机器人XY坐标系中的矩形范围设定(第1关节/第2关节) 45 5.4 标准动作区域 . 45 维护篇 1. 关于维护时的安全 49 2. 维护概要 50 2.1 检查进度表 . 50 2.2 检查内容 . 51 2.2.1 电源OFF时(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报