摘要: 众所周知RabbitMQ使用的是AMQP协议。我们知道AMQP是一种网络协议,能够支持符合要求的客户端应用和消息中间件代理之间进行通信。 其中消息代理扮演的角色就是从生产者那儿接受消息,并根据既定的路由规则把接受到的消息发送给消息的处理者又称消费者。由此可以看出RabbitMQ在整个消息发送,处理的过程中有三个比较重要的角色: 生产者:producer,消息生产者,就是投递消息的程序 消息代... 阅读全文
posted @ 2016-12-07 16:52 Alvin.Lee 阅读(4396) 评论(1) 推荐(5) 编辑
摘要: 之前实现了html直接转换为word文档的功能,那么是否也同样可以直接转换为pdf文档呢,网上搜了下html to pdf 的开源插件有很多 如:wkhtmltopdf,pdfsharp,itextsharp等 本文使用itextsharp实现如何将html文件转换为pdf文档 首先使用Nuget安装itextsharp插件 Install-Package itextsharp.xmlwork... 阅读全文
posted @ 2016-12-06 16:33 Alvin.Lee 阅读(2597) 评论(0) 推荐(0) 编辑
摘要: 最近项目中有同事用到word文档导出功能,遇到了一些导出失败问题,帮其看了下解决问题的同事,看了下之前的代码发现几个问题: 代码编写不规范,word导出功能未收口 重复代码导出都是 实现逻辑比较复杂,不易于维护及使用 在帮其解决问题后,写了下面这个ViewResult拓展,依赖Razor视图,能够直接转换页面为word文档,但是不支持外联样式表,样式可以定义在头部 废话不多说,直接上代码: ... 阅读全文
posted @ 2016-12-06 12:19 Alvin.Lee 阅读(954) 评论(0) 推荐(0) 编辑
摘要: RabbitMQ是一个消息代理,一个消息系统的媒介,提供了一个通用的消息发送及接收平台,并且能够保障消息传输过程中的安全。使用erlang语言开发,开源,在易用性、扩展性、高可用性等方面表现不俗 技术亮点 可靠性——RabbitMQ提供了多种技术可以让你在性能和可靠性之间进行权衡。这些技术包括持久性机制、投递确认、发布者证实和高可用性机制。 灵活的路由——消息在到达队列前是... 阅读全文
posted @ 2016-12-02 11:23 Alvin.Lee 阅读(5562) 评论(0) 推荐(1) 编辑
摘要: 分片(Sharding) 分片就是将数据进行拆分,并将其分别存储在不同的服务器上 MongoDB支持自动分片能够自动处理数据在分片上的分布 MongoDB分片有三种角色 配置服务器:一个单独的mongod进程,主要记录了哪个分片服务器包含了哪些数据的信息,保存的只是数据的分布表,如果配置服务器不可用时,将变为只读,不能进行分片和数据迁移, 配置服务器的1KB空间相当于真... 阅读全文
posted @ 2016-11-30 11:39 Alvin.Lee 阅读(1484) 评论(0) 推荐(1) 编辑
摘要: 副本集 可以将MongoDB中的副本集看作一组服务器集群由一个主节点和多个副本节点等组成,相对于之前讲到的主从复制提供了故障自动转移的功能 副本集实现数据同步的方式依赖于local数据库中的oplog数据 oplog是存在与主节点或副本节点上的local数据库中的一个固定集合,记录了每一次主节点的写操作,或副本节点每一次从主节点复制数据的操作 备份节点通过定时从主节点获... 阅读全文
posted @ 2016-11-24 10:10 Alvin.Lee 阅读(3805) 评论(0) 推荐(1) 编辑
摘要: Master/Slave主从复制 主从复制MongoDB中比较常用的一种方式,如果要实现主从复制至少应该有两个MongoDB实例,一个作为主节点负责客户端请求,另一个作为从节点负责从主节点映射数据,提供数据备份,客户端读取等,推荐一主多从模式 MongoDB主从复制的实现方式: 主节点的操作会被记录为oplog,存储在系统数据库local的集合oplog.$main中,这个集合中... 阅读全文
posted @ 2016-11-23 09:57 Alvin.Lee 阅读(7653) 评论(0) 推荐(1) 编辑
摘要: 索引 索引能够提升查询的效率。没有索引,MongoDB必须扫描集合中的所有文档,才能找到匹配查询语句的文档。 索引是一种特殊的数据结构,将一小块数据集保存为容易遍历的形式。索引能够存储某种特殊字段或字段集的值,并按照索引指定的方式将字段值进行排序。 然而使用索引也是有代价的:对于添加的每一个索引,每次的插入、更新、删除都将会消耗更多的时间。这是因为当数据发生变动时,数据库不仅要... 阅读全文
posted @ 2016-11-22 14:44 Alvin.Lee 阅读(2561) 评论(1) 推荐(0) 编辑
摘要: MongoDB聚合管道 使用聚合管道可以对集合中的文档进行变换和组合。 管道是由一个个功能节点组成的,这些节点用管道操作符来进行表示。聚合管道以一个集合中的所有文档作为开始,然后这些文档从一个操作节点流向下一个节点 ,每个操作节点对文档做相应的操作。这些操作可能会创建新的文档或者过滤掉一些不符合条件的文档,在管道中可以对文档进行重复操作。 管道表达式只可以操作当前管道中的... 阅读全文
posted @ 2016-11-21 14:50 Alvin.Lee 阅读(7554) 评论(0) 推荐(0) 编辑
摘要: MapReduce MongoDB中的MapReduce相当于关系数据库中的group by。使用MapReduce要实现两个函数Map和Reduce函数。Map函数调用emit(key,value),遍历 Collection中所有的记录,将key与value传递给Reduce函数进行处理。 Mapreduce使用惯用的javascript操作来做map和reduce操作,因此Mapreduce... 阅读全文
posted @ 2016-11-18 10:45 Alvin.Lee 阅读(774) 评论(0) 推荐(0) 编辑