收藏 分享(赏)

19散列表(中):如何打造一个工业级水平的散列表?.pdf

上传人:始于喜欢终于深爱 文档编号:2181505 上传时间:2020-05-20 格式:PDF 页数:14 大小:437.42KB
下载 相关 举报
19散列表(中):如何打造一个工业级水平的散列表?.pdf_第1页
第1页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、服启动输出信号 14 输入 EXTV 输入电路的外部电源 64输入 EXTVGND 输入电路的外部电源GND 15 输入 EXTV 输入电路的外部电源 65输入 EXTVGND 输入电路的外部电源GND 16 输出 +COM CWP1、CCWP1 +COMMON 66输出 +COM CWP3、CCWP3 +COMMON 17 输出 CWP1 轴1的CW脉冲输出信号 67输出 CWP3 轴3的CW脉冲输出信号 18 输出 CWP1 轴1的反向CW脉冲输出 68输出 CWP3 轴3的反向CW脉冲输出 19 输出 CCWP1 轴1的CCW脉冲输出 69输出 CCWP3 轴3的CCW脉冲输出 20 输

2、出 CCWP1 轴1的反向CCW脉冲输出 70输出 CCWP3 轴3的反向CCW脉冲输出 21 输出 +DRST COM1 DRST1 +COMMON 71输出 +DRST COM3 DRST3 +COMMON 22 输出 DRST1 轴1的驱动器重置信号 72输出 DRST3 轴3的驱动器重置信号 23 输入 DEND1 轴1的检测末端信号 73输入 DEND3 轴3的检测末端信号 24 空闲 74 空闲 25 空闲 75 空闲 2. 硬件 RC700/RC90 选件 PG 动作系统 Rev.2 15 引脚 方向 信号 描述 引脚方向信号 描述 引脚 方向 信号 描述 引脚方向信号 描述 2

3、6 空闲 76 空闲 27 空闲 77 空闲 28 空闲 78 空闲 29 输入 +ZORG1 轴1的编码器+Z相信号 79 输入+ZORG3轴3的编码器+Z相信号 30 输入 -ZORG1 轴1的编码器-Z相信号 80 输入-ZORG3轴3的编码器-Z相信号 31 空闲 81 空闲 32 输出 +COM CWP2、CCWP2 +COMMON 82 输出+COM CWP4、CCWP4 +COMMON 33 输出 CWP2 轴2的CW脉冲输出 83 输出CWP4 轴4的CW脉冲输出 34 输出 CWP2 轴2的反向CW脉冲输出 84 输出CWP4 轴4的反向CW脉冲输出 35 输出 CCWP2

4、轴2的CCW脉冲输出 85 输出CCWP4轴4的CCW脉冲输出 36 输出 CCWP2 轴2的反向CCW脉冲输出 86 输出CCWP4轴4的反向CCW脉冲输出 37 输出 +DRST COM2 DRST2 +COMMON 87 输出 +DRST COM4 DRST4 +COMMON 38 输出 DRST2 轴2的驱动器重置信号 88 输出DRST4 轴4的驱动器重置信号 39 输入 DEND2 轴2的检测末端信号 89 输入DEND4轴4的检测末端信号 40 空闲 90 空闲 41 空闲 91 空闲 42 空闲 92 空闲 43 空闲 93 空闲 44 空闲 94 空闲 45 输入 +ZORG

5、2 轴2的编码器+Z相信号 95 输入+ZORG4轴4的编码器+Z相信号 46 输入 -ZORG2 轴2的编码器-Z相信号 96 输入-ZORG4轴4的编码器-Z相信号 47 空闲 97 空闲 48 空闲 98 空闲 49 空闲 99 空闲 50 GND 接地 100 GND 接地 (*1) 当使用伺服电机时,如果将编码器Z相信号用作原点信号,则保持此端子断开。 (*2) 当限制信号状态为OFF时(输入电路中的光耦合器为OFF),视为轴超出允许的工作范围,将停 止生成脉冲。因此,必须连接至外部电源,以便在系统配置不使用限制信号时,限制信号仍始终 保持ON。 2. 硬件 16 RC700/RC9

6、0 选件 PG 动作系统 Rev.2 2.4.4 PG 端子板针脚引线 使用选装电缆时,会提供2个端子板。这些端子板的针脚引线如以下两个表所示。括 号中的引脚数为PG板连接器上的引脚数。有关各信号的详细信息,请参阅第2.3.1节 信号功能。 PG 端子板 1 引脚 信号 描述 引脚 信号 描述 1 (16) +COM CWP1、CCWP1 +COMMON 26 (32) +COM CWP2、CCWP2 +COMMON 2 (17) CWP1 轴 1 的 CW 脉冲输出信号 27 (33) CWP2 轴 2 的 CW 脉冲输出 3 (18) CWP1 轴 1 的反向 CW 脉冲输出 28 (34

7、) CWP2 轴2 的反向CW 脉冲输出 4 (19) CCWP1 轴 1 的 CCW 脉冲输出 29 (35) CCWP2 轴 2 的 CCW 脉冲输出 5 (20) CCWP1 轴 1 的反向 CCW 脉冲输出 30 (36) CCWP2 轴2 的反向CCW 脉冲输出 6 (21) + DRST COM1 DRST1 +COMMON 31 (37) + DRST COM2 DRST2 +COMMON 7 (22) DRST1 轴 1 的驱动器重置信号 32 (38) DRST2 轴 2 的驱动器重置信号 8 (23) DEND1 轴 1 的检测末端信号 33 (39) DEND2 轴 2

8、的检测末端信号 9 (24) - 空闲 34 (40) - 空闲 10 (25) - 空闲 35 (41) - 空闲 11 (26) - 空闲 36 (42) - 空闲 12 (27) - 空闲 37 (43) - 空闲 13 (28) - 空闲 38 (44) - 空闲 14 (29) +ZORG1 轴 1 的编码器+Z 相信号 39 (45) +ZORG2 轴 2 的编码器+Z 相信号 15 (30) -ZORG1 轴 1 的编码器-Z 相信号 40 (46) -ZORG2 轴 2 的编码器-Z 相信号 16 (31) - 空闲 41 (47) - 空闲 17 (48) - 空闲 42 (

9、49) - 空闲 18 (9) - 空闲 43 (50) GND 接地 19 (60) SVON1 轴 1 的伺服启动输出信号 44 (61) SVON2 轴 2 的伺服启动输出信号 20 (10) ALM1 轴 1 的报警输入信号 45 (11) ALM2 轴 2 的报警输入信号 21 (1) CWLM1 轴 1 的 CW 限制信号 46 (5) CWLM2 轴 2 的 CW 限制信号 22 (2) CCWLM1 轴 1 的 CCW 限制信号 47 (6) CCWLM2 轴 2 的 CCW 限制信号 23 (3) NORG1 轴 1 的近原点信号 48 (7) NORG2 轴 2 的近原点信

10、号 24 (4) ORG1 轴 1 的原点信号 49 (8) ORG2 轴 2 的原点信号 25 (14) EXTV 输入电路的外部电源 50 (64) EXTVGND输入电路的外部电源 GND 2. 硬件 RC700/RC90 选件 PG 动作系统 Rev.2 17 PG 端子板 2 引脚 信号 描述 引脚 信号 描有完全写入,也不会释放锁啊。7-9无法消费是因为生产者B拿到了写锁吧,和生产者A释不释 放3-6的锁没有关系吧 个人理解,请老师指正 沉睡的木木夕 2019-01-30 08:31:51 还是没说加存储单元是干嘛的啊,为什么在往队列添加元素之前申请存储单元就不用加锁了?能说的在详

11、细点么 K战神 2019-01-30 08:27:01 而是采用了“当队列满了之后,生产者就轮训等待;当队列空了之后,消费者就轮训等待”这样的措施。是不是有错别字?轮询? 祜祜 微信扫描二维码关注:优秀教师之家,获取更多免费好资源您的支持,是我们努力的动力!更多免费资料、请关注微信公众号:优秀教师之家 版权信息版权信息 书名:Python网络数据采集 作者:美 Ryan Mitchell 译者:陶俊杰 陈小莉 ISBN:978-7-115-41629-2 本书由北京图灵文化发展有限公司发行数字版。版权所有,侵权必究。本书由北京图灵文化发展有限公司发行数字版。版权所有,侵权必究。 您购买的图灵电

12、子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。 我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。 如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。 图灵社区会员 wsjjj(418836702 ) 专享 尊重版权 版权声明 OReilly Media, Inc. 介绍 业界评论 译者序 前言 什么是网络数据采集 为什么要做网络数据采集 关于本书 排版约定 使用代码示例 Safari Books Online 联系我们 致谢 第一部分 创建爬虫 第 1 章 初见网络爬虫 1.1 网络连接 1.2 BeautifulS

13、oup简介 1.2.1 安装BeautifulSoup 1.2.2 运行BeautifulSoup 1.2.3 可靠的网络连接 第 2 章 复杂 HTML 解析 2.1 不是一直都要用锤子 2.2 再端一碗BeautifulSoup 2.2.1 BeautifulSoup的find()和findAll() 2.2.2 其他BeautifulSoup对象 2.2.3 导航树 2.3 正则表达式 2.4 正则表达式和BeautifulSoup 2.5 获取属性 2.6 Lambda表达式 2.7 超越BeautifulSoup 第 3 章 开始采集 3.1 遍历单个域名 3.2 采集整个网站 收集

14、整个网站数据 3.3 通过互联网采集 3.4 用Scrapy采集 第 4 章 使用 API 4.1 API概述 4.2 API通用规则 4.2.1 方法 4.2.2 验证 4.3 服务器响应 API调用 4.4 Echo Nest 几个示例 4.5 Twitter API 4.5.1 开始 4.5.2 几个示例 4.6 Google API 4.6.1 开始 4.6.2 几个示例 4.7 解析JSON数据 4.8 回到主题 4.9 再说一点API 第 5 章 存储数据 5.1 媒体文件 5.2 把数据存储到CSV 5.3 MySQL 5.3.1 安装MySQL 5.3.2 基本命令 5.3.3

15、 与Python整合 5.3.4 数据库技术与最佳实践 5.3.5 MySQL里的“六度空间游戏” 5.4 Email 第 6 章 读取文档 6.1 文档编码 6.2 纯文本 文本编码和全球互联网 6.3 CSV 读取CSV文件 6.4 PDF 6.5 微软Word和.docx 第二部分 高级数据采集 第 7 章 数据清洗 7.1 编写代码清洗数据 数据标准化 7.2 数据存储后再清洗 OpenRefine 第 8 章 自然语言处理 8.1 概括数据 8.2 马尔可夫模型 维基百科六度分割:终结篇 8.3 自然语言工具包 8.3.1 安装与设置 8.3.2 用NLTK做统计分析 8.3.3 用

16、NLTK做词性分析 8.4 其他资源 第 9 章 穿越网页表单与登录窗口进行采集 9.1 Python Requests库 9.2 提交一个基本表单 9.3 单选按钮、复选框和其他输入 9.4 提交文件和图像 9.5 处理登录和cookie HTTP基本接入认证 9.6 其他表单问题 第 10 章 采集 JavaScript 10.1 JavaScript简介 常用JavaScript库 10.2 Ajax和动态HTML 在Python中用Selenium执行JavaScript 10.3 处理重定向 第 11 章 图像识别与文字处理 11.1 OCR库概述 11.1.1 Pillow 11.

17、1.2 Tesseract 11.1.3 NumPy 11.2 处理格式规范的文字 从网站图片中抓取文字 11.3 读取验证码与训练Tesseract 训练Tesseract 11.4 获取验证码提交答案 第 12 章 避开采集陷阱 12.1 道德规范 12.2 让网络机器人看起来像人类用户 12.2.1 修改请求头 12.2.2 处理cookie 12.2.3 时间就是一切 12.3 常见表单安全措施 12.3.1 隐含输入字段值 12.3.2 避免蜜罐 12.4 问题检查表 第 13 章 用爬虫测试网站 13.1 测试简介 什么是单元测试 13.2 Python单元测试 测试维基百科 13

18、.3 Selenium单元测试 与网站进行交互 13.4 Python单元测试与Selenium单元测试的选择 第 14 章 远程采集 14.1 为什么要用远程服务器 14.1.1 避免IP地址被封杀 14.1.2 移植性与扩展性 14.2 Tor代理服务器 PySocks 14.3 远程主机 14.3.1 从网站主机运行 14.3.2 从云主机运行 14.4 其他资源 14.5 勇往直前 附录 A Python 简介 安装与“Hello,World!” 附录 B 互联网简介 附录 C 网络数据采集的法律与道德约束 C.1 商标、版权、专利 版权法 C.2 侵犯动产 C.3 计算机欺诈与滥用法

19、 C.4 robots.txt和服务协议 C.5 三个网络爬虫 C.5.1 eBay起诉Bidders Edge与侵犯动产 C.5.2 美国政府起诉Auernheimer与计算机欺诈与滥用法 C.5.3 Field起诉Google:版权和robots.txt 作者简介 封面介绍 版权声明版权声明 2015 by Ryan Mitchell. Simplified Chinese Edition, jointly published by OReilly Media, Inc. and Posts 因为每个 MySQL 实例可以有多个数据库,所以使用某个数据库之前需要指定数据库的名称: USE

20、scraping; 从现在开始(直到关闭 MySQL 链接或切换到另一个数据库之前),所有的命令都运行在这个新的“scraping”数据库里面。 所有操作看着都非常简单。那么,在数据库里创建数据表的方法应该也类似吧?让我们在数据库里创建一个表来存储采集的网页: CREATE TABLE pages; 结果显示错误: ERROR 1113 (42000): A table must have at least 1 column 和数据库不同,MySQL 数据表必须至少有一列,否则不能创建。为了在 MySQL 里定义字段(数据列),你必须在 CREATE TABLE 语句后面,把字段的定义放进一个

21、带括号的、内部由 逗号分隔的列表中: CREATE TABLE pages (id BIGINT(7) NOT NULL AUTO_INCREMENT, title VARCHAR(200), content VARCHAR(10000), created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id); 每个字段定义由三部分组成: 名称(id 、title 、created 等) 数据类型(BIGINT(7) 、VARCHAR 、TIMESTAMP ) 其他可选属性(NOT NULL AUTO_INCREMENT ) 在字段定义列表

22、的最后,还要定义一个“主键”(key)。MySQL 用这个主键来组织表的内容,便于后面快速查询。在本章后面的内容里,我将介绍如何调整这些主键以提高数据库的查询速度,但是现在, 用表的 id 列作为主键就可以。 语句执行之后,你可以用 DESCRIBE 查看数据表的结构: DESCRIBE pages; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | id | bigint(7) | NO | PRI | NULL | auto_increment | | title | varchar(

23、200) | YES | | NULL | | | content | varchar(10000) | YES | | NULL | | | created | timestamp | NO | | CURRENT_TIMESTAMP | | +-+-+-+-+-+-+ 4 rows in set (0.00 sec) 当然,这还是一个空表。你可以在 pages 表里插入一些测试数据,如下所示: INSERT INTO pages (title, content) VALUES (“Test page title“, “This is some te st page content. It

24、can be up to 10,000 characters long.“); 需要注意的是,虽然 pages 表里有四个字段(id 、title 、content 、created ),但实际上你只需要插入两个字段(title 和 content )的数据即可。因为 id 字段是自动递增的(每次新插入 数据行时 MySQL 自动增加 1),通常不用处理。另外,created 字段的类型是 timestamp ,默认就是数据加入时的时间戳。 当然,我们也可以自定义四个字段的内容: INSERT INTO pages (id, title, content, created) VALUES (3

25、, “Test page title“, “ This is some test page content. It can be up to 10,000 characters long.“, “2014- 09-21 10:25:32“); 只要你定义的整数在数据表的 id 字段里没有,它就可以顺利插入数据表。但是,这么做非常不好;除非万不得已(比如程序中断漏了一行数据),否则让 MySQL 自己处理 id 和 timestamp 字段。 现在表里有一些数据了,你可以用很多方法来选择这些数据。下面是几个 SELECT 语句的示例: SELECT * FROM pages WHERE id =

26、 2; 这条语句告诉 MySQL,“从 pages 表中把 id 字段中等于 2 的整行数据全挑选出来”。这个星号(* )是通配符,表示所有字段,这行语句会把满足条件(WHERE id = 2 )的所有字段都显示出来。如果 id 字段里没有任何一行等于 2,就会返回一个空集。例如,下面这个不区分大小写的查询,会返回 title 字段里包含“test”的所有行(% 符号表示 MySQL 字符串通配符)的所有字段: SELECT * FROM pages WHERE title LIKE “%test%“; 但是,如果你的表有很多字段,而你只想返回部分字段怎么办?你可以不用星号,而用下面的方式: SELECT id, title FROM pages WHERE content LIKE “%page content%“; 这样就只会返回 title 字段包含“page content”的所有行的 id 和 title 两个字段了。 DELETE 语句语法与 SELECT 语句类似: DELETE FROM pages WHERE id = 1; 由于数据库的数据删除后不能恢复,所以在执行 DELETE 语句之前,建议用 SELECT 确认一下要删除的数据(本例中,就是用 SELECT * FROM pages WHERE id = 1 查看),然后把 SELECT * 换成

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

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

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


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

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

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