-
delphi 开发经验技巧宝典源码
2010-08-12 16:47:230139 使用FileExists函数判断指定文件是否存在 90 0140 使用FileGetAttr函数返回文件的属性 90 0141 使用FileGetDate函数返回文件的修改日期 90 0142 使用FileWrite函数将缓冲区中的内容写入文件 91 4.10 ... -
MQ消息队列: 爬虫实时获取数据并做数据处理-设计方案
2019-09-27 18:23:08爬虫程序结束时需要在结束调用函数查询redis是否含有标记, 如果标记存在调用生产者通知MQ上游程序执行完让下游程序开始获取并处理数据 2.如何解决MQ实时获取数据 使用MQ的发布/订阅一对一获取队列 3. 大体流...设计方案
1.如何解决获取同步mongo数据
- 爬虫程序在存数据时判断数据是否为新数据
- 确定为新存数据需要通过redis打个标记, 确定存入数据含有新数据
- 爬虫程序结束时需要在结束调用函数查询redis是否含有标记, 如果标记存在调用生产者通知MQ上游程序执行完让下游程序开始获取并处理数据
2.如何解决MQ实时获取数据
1. 使用MQ的发布/订阅一对一获取队列
2. 初步定为消费者判断获取增量数据并存储一个处理的时间日期节点- 将之前的一对一获取队列改为按网站行业/类型/媒体创建多个队列, 提高并发
- 获取增量数据改为爬虫每次调用生产者发送给队列中
消息结构:{“start_time”:xxxx, “end_time”:xxxx, ''makr":xxx, "sort ":xxxxx}
start_time: 爬虫开始存入开始时间戳
end_time: 爬虫结束存入开始时间戳
makr: 标识
sort: 分类 (这个暂定, 需要在生产者之前去确认, MQ通过生产者在将消息发送给Exchange的时候,一般会指定一个routing key,来指定这个消息的路由规则)3. 大体流程图:
4. 采用direct队列Queue:
- direct类型的Exchange路由规则也很简单,它会把消息路由到那些binding key与routing key完全匹配的Queue中
以routingKey=”error”发送消息到Exchange,则消息会路由到Queue1(amqp.gen-S9b…,这是由RabbitMQ自动生成的Queue名称)和Queue2(amqp.gen-Agl…)如果我们以routingKey=”info”或routingKey=”warning”来发送消息,则消息只会路由到Queue2。routingKey发送消息,则消息不会路由到这两个Queue中。
5. rebbitmq 管理和监视
- rebbitmq搭建采用docker容器部署在128服务器
- 外网采用docker安装nginx容器反向代理转发128服务器MQ管理页面
6. 消费者确认和发布者确认
消费者确认:
- MQ 消费消息的机制:在消费者收到消息的时候,会发送一个 ACK 给 MQ,告诉 MQ 这条消息被消费到了,这样 MQ 就会把消息删除
- 默认情况下这个发送 ACK 的操作是自动提交的, 自动提交会存在消费者数据丢失或者没有消费
- 针对这个问题的解决方案就是:关闭 MQ 消费者的自动提交 ACK,在消费者处理完这条消息之后再手动提交 ACK (手写代码确认)
发布者确认:
- 事务方式:在生产者发送消息之前,通过
channel.txSelect
开启一个事务,接着发送消息。如果消息没有成功被 RabbitMQ 接收到,生产者会收到异常,此时就可以进行事务回滚channel.txRollback
,然后重新发送。假如 RabbitMQ 收到了这个消息,就可以提交事务channel.txCommit
。但是这样一来,生产者的吞吐量和性能都会降低很多. - Confirm 机制: 是在生产者那里设置, 每次写消息的时候会分配一个唯一的 ID,然后 RabbitMQ 收到之后会回传一个 ACK,告诉生产者这个消息 OK 了。如果 RabbitMQ 没有处理到这个消息,那么就回调一个 Nack 的接口,这个时候生产者就可以重发。
-
《从新手到高手——C++全方位学习》.pdf【第一部分】
2011-06-23 16:12:1314.7.4 函数传参实例四——判断数组是否按照顺序排列 247 14.7.5 函数传参实例五——判断数组排列方式后执行不同的函数 247 14.8 数组在对象中的传参 249 14.9 数组对象 250 14.10 在数组对象中初始化成员变量 ... -
C#编程经验技巧宝典
2008-06-01 08:59:3379 <br>0115 如何判断是否为数字 79 <br>0116 如何在字符串中查找指定字符 79 <br>0117 如何在字符串中用一子串替换另一子串 80 <br>0118 将新字符串添加到已有字符串中 80 <br>0119 如何在... -
零起点学通C++多媒体范例教学代码
2010-11-30 09:35:1314.7.4 函数传参实例四——判断数组是否按照顺序排列 14.7.5 函数传参实例五——判断数组排列方式后执行不同的函数 14.8 数组在对象中的传参 14.9 对象数组 14.10 在对象数组中初始化成员变量 14.11 指针数组 14.12 ... -
零起点学通C++学习_多媒体范例教学代码
2012-07-16 08:52:5314.7.4 函数传参实例四——判断数组是否按照顺序排列 14.7.5 函数传参实例五——判断数组排列方式后执行不同的函数 14.8 数组在对象中的传参 14.9 对象数组 14.10 在对象数组中初始化成员变量 14.11 指针数组 ... -
《你必须知道的495个C语言问题》
2010-03-20 16:41:181.30 如何判断哪些标识符可以使用,哪些被保留了? 15 初始化 18 1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零? 18 1.32 下面的... -
你必须知道的495个C语言问题
2015-10-16 14:14:281.30如何判断哪些标识符可以使用,哪些被保留了? 初始化 1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零? 1.32 下面的代码为什么不能编译?... -
你必须知道的495个C语言问题(高清版)
2010-03-31 16:24:091.30 如何判断哪些标识符可以使用,哪些被保留了? 15 初始化 18 1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零? 18 1.32 下面的... -
C#全能速查宝典
2014-04-26 16:16:271.5.7 ContainsText方法——确定剪贴板中是否存在数据 101 1.5.8 ContainsValue方法——确定哈希表是否包含特定值 101 1.5.9 Count属性——获取数目 102 1.5.10 GetEnumerator方法——循环访问对象 103 1.5.11 ... -
3.5.3 给40亿个不重复的unsigned int的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那40亿个数当中? 3.5.4 在一个文件中有10G个整数,乱序排列,要求找出中位数。内存限制为2G。 3.5.5 时分秒针...
-
Visual Basic开发实战1200例(第Ⅰ卷).(清华出版.孙秀梅.巩建华).part1
2016-06-14 11:19:42实例127 利用IsNumeric函数判断是否为数字 实例128 统计某个字符在一个字符串变量中的出现次数 实例129 判断字符串中某一字符是否大写 实例130 判断字符串是否为日期或时间 实例131 判断获得字符串中大写字符的... -
VC++科学计算器的设计V1_4Beta.rar
2010-03-23 04:54:59但是,算法仅仅给出了一个笼统的实现策略,对于具体的数据类型、运算操作符及优先级情况、怎样支持函数调用、自定义内存变量如何实现等具体问题并无现成的解决方案,需要开发人员自己实际设计相应的算法解决,而这也... -
C语言FAQ 常见问题列表
2010-10-28 16:41:29o 3.8 如何向接受结构参数的函数传入常数值? o 3.9 怎样从/向数据文件读/写结构? o 3.10 我的编译器在结构中留下了空洞, 这导致空间浪费而且无法与外部数据文件进行 "二进制" 读写。能否关掉填充, 或者控制结构... -
反勒索编程实战篇
2019-07-16 17:02:10本课程的前面两章,讲解如何感受与判断当前的安全趋势,如何判断某一种威胁是否具有流行的潜力;如何产生对抗思路;如何产生最终安全产品的技术架构并梳理出核心流程。虽然只有两章,但其实关于设计模式,技术选型的... -
php高级开发教程说明
2008-11-27 11:39:22大家是否想过,为什么会有这么多的编程语言?除了所谓“主流语言”例如C、C + +、 P a s c a l等之外,还有其他的如L o g o l、C o b o l、F o r t r a n、S i m u l a和许多更加特殊的语言。当列出一 个项目的梗概... -
[完整][Oracle][Oracle数据库精讲与疑难解析].pdf
2012-11-17 16:25:1510.4.6 流池 10.5 程序全局区 10.6 内存管理 与疑难解析 第11章 用户管理 11.1 用户验证 11.1.1 口令认证 11.1.2 外部认证 11.1.3 全局认证 11.2 Oracle的安全大门——权限(Privileges)... -
JAVA面试题最全集
2010-03-13 13:09:10判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和... -
java面试题典 java 面试题 经典
2010-06-18 13:42:3631. 如何判断哪个session正在连结以及它们等待的资源? 34 32. 描述什么是 redo logs 34 33. 如何进行强制LOG SWITCH? 34 34. 举出两个判断DDL改动的方法? 34 35. Coalescing做了什么? 34 36. TEMPORARY tablespace和... -
Oracle数据库精讲与疑难解析part2
2013-07-29 11:26:32实务7 安装oracle时,是否需要安装jdk 实务8 解压安装文件时,报告无权限 实务 实务9 安装oracle软件并创建完数据库后,服务内的oraclesid显示 实务9 “启动”而不是“已启动” 实务10 安装oracle时,报告错误... -
Oracle数据库精讲与疑难解析part1
2013-07-29 11:24:41实务7 安装oracle时,是否需要安装jdk 实务8 解压安装文件时,报告无权限 实务 实务9 安装oracle软件并创建完数据库后,服务内的oraclesid显示 实务9 “启动”而不是“已启动” 实务10 安装oracle时,报告错误... -
Oracle数据库精讲与疑难解析.part1(共七部分)
2011-08-20 20:24:06实务7 安装oracle时,是否需要安装jdk 实务8 解压安装文件时,报告无权限 实务 实务9 安装oracle软件并创建完数据库后,服务内的oraclesid显示 实务9 “启动”而不是“已启动” 实务10 安装oracle时,报告错误... -
语言程序设计课后习题答案
2012-12-27 17:02:37语句if(x == 3)首先判断x的值是否为3,若相等条件表达式的值为ture,否则为false。 2-15 什么叫做作用域?什么叫做局部变量?什么叫做全局变量,如何使用全局变量? 解: 作用域是一个标识符在程序正文中有效的... -
eas供应链dep案例集
2017-11-18 22:32:39单据操作控制修改 EASSCMA1P0083 应收应付单据分录上的科目名称显示长编码 应收应付单的单据中,会计科目只显示短名称,这样财务部门在审核时无法判断科目是否正确,应能查看科目全称,方便审核。 通过脚本,将科目... -
最新Java面试宝典pdf版
2011-08-31 11:29:223、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉... -
1 判断是否为奇数。同时需要注意递归终止条件,exponent = 1的话,return base,exponent = -1的话,return 1.0/base。再次提醒!必须写成 1.0/base,否则 1/base,返回一个integer 0! 面试题12:打印1到最大的n...
-
Java面试宝典2010版
2011-06-27 09:48:273、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉... -
wireshark源码
2012-06-10 21:43:51这样做可保证我们方便地判断是否已经做了初始工作。将所有不打算对外输出的全局变量和函数声明为"static"是一个良好的习惯,因为这可以保证命名空间不被污染。通常这是容易做到的,除非您的解析器非常庞大以致跨越多... -
java面试宝典2011整理有答案
2011-11-09 13:36:063、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
收藏数
82
精华内容
32