摘要: 最近接手一个新项目,爬亚马逊分类、商品数据。记得大学的时候,自己瞎玩,写过一个爬有缘网数据的程序,那个时候没有考虑那么多,写的还是单线程,因为网站没有反爬,就不停的一直请求,记得放到实验室电脑上一天,跑了30w+的数据。然后当前晚上有缘网网站显示维护中。。。。 毕竟小打小闹,没有真正的写过爬虫。就翻 阅读全文
posted @ 2020-12-10 17:12 MicroHeart! 阅读(1247) 评论(11) 推荐(8) 编辑
摘要: 一、Grpc概述 gRPC 基于如下思想:定义一个服务, 指定其可以被远程调用的方法及其参数和返回类型。gRPC 默认使用protocol buffers作为接口定义语言,来描述服务接口和有效载荷消息结构。如果有需要的话,可以使用其他替代方案。 定义的服务分为4中类型: 单项 RPC,即客户端发送一 阅读全文
posted @ 2020-10-16 11:37 MicroHeart! 阅读(1082) 评论(0) 推荐(2) 编辑
摘要: 一、日志组件介绍 在之前单体项目的时候,经常使用的日志组件有NLog、Log4,还有.Net Core自带的日志组件Logging(之前写过),使用它们记录到文本文件中,但是当日志文件很大的时候,查询日志就变的很痛苦。Exceptionless是一个开源的日志组件,它将消息存储到ElasticSea 阅读全文
posted @ 2020-09-14 19:03 MicroHeart! 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 一、对象池 运用对象池化技术可以显著地提升性能,尤其是当对象的初始化过程代价较大或者频率较高。下面是ObjectPool源码中涉及的几个类。当你看过.Net Core源码很多时,你会发现,微软的开发很多都是这种模式,通过Policy构建Provider,通过Provider创建最终的类。 二、使用 阅读全文
posted @ 2019-10-19 02:06 MicroHeart! 阅读(719) 评论(0) 推荐(2) 编辑
摘要: 一、配置简述 之前在.Net Framework平台开发时,一般配置文件都是xml格式的Web.config,而需要配置其他格式的文件就需要自己去读取内容,加载配置了。.而Net Core支持从命令行、环境变量、文件、内存、Key-per-file中加载配置,其中文件包括xml、ini、json三种 阅读全文
posted @ 2019-05-27 08:51 MicroHeart! 阅读(855) 评论(1) 推荐(2) 编辑
摘要: 一、依赖注入 引入依赖注入的目的是为了解耦和。说白了就是面向接口编程,通过调用接口的方法,而不直接实例化对象去调用。这样做的好处就是如果添加了另一个种实现类,不需要修改之前代码,只需要修改注入的地方将实现类替换。上面的说的通过接口调用方法,实际上还是需要去实例化接口的实现类,只不过不需要我们手动ne 阅读全文
posted @ 2019-05-16 17:33 MicroHeart! 阅读(3697) 评论(1) 推荐(7) 编辑
摘要: 1、消息中间件 消息队列中间件是指利用高效可靠地消息传递机制传递消息。有两种传递模式:点对点模式、发布/订阅模式。流行的消息中间件有RabblitMQ、Kafka、RockerMQ。它们都提供了基于存储和转发的应用程序之间的异步数据发送,即应用程序彼此不直接通信,而是与作为中介的消息中间件通信。 2 阅读全文
posted @ 2019-04-01 21:50 MicroHeart! 阅读(1153) 评论(0) 推荐(1) 编辑
摘要: 通过ZooKeeper的有序节点、节点路径不回重复、还有节点删除会触发Wathcer事件的这些特性,我们可以实现分布式锁。 一、思路 二、实现 在实现是要了解一个类 AutoResetEvent。AutoResetEvent 常常被用来在两个线程之间进行信号发送。它有两个重要的方法: Set() : 阅读全文
posted @ 2019-02-28 23:26 MicroHeart! 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章简单介绍了ZooKeeper,讲了分布式中,每个微服务都会部署到多台服务器上,那服务之间的调用是怎么样的呢?如图: 1、集群A中的服务调用者如何发现集群B中的服务提供者呢? 2、集群A中的服务调用者如何选择集群B中的某一台服务提供者去调用呢? 3、集群B中某台机器下线,集群A怎么避免下次调 阅读全文
posted @ 2019-02-25 01:07 MicroHeart! 阅读(5143) 评论(2) 推荐(2) 编辑
摘要: 一、服务注册中心介绍 分布式服务框架部署在多台不同的机器上。例如服务A是订单相关的处理服务,服务B是订单的客户的相关信息服务。此时有个需求需要在服务A中获取订单客户的信息。如下图: 此时就面临以下几个问题: 1、集群A中的服务调用者如何发现集群B中的服务提供者。 2、集群A中的服务调用者如何选择集群 阅读全文
posted @ 2019-02-24 18:03 MicroHeart! 阅读(4576) 评论(0) 推荐(1) 编辑
摘要: 因为老项目用的Asp.Net Web API技术开发部署到Window系统上,而新项目用的是.Net Core部署到Ubuntu系统中,所以在管理切换上有些不便。于是决定将老项目的测试服部署到Ubuntu中,试试水。 一、简述 要实现Asp.Net项目部署到Linux中,必须要通过Mono。Mono 阅读全文
posted @ 2019-01-21 21:03 MicroHeart! 阅读(977) 评论(2) 推荐(1) 编辑
摘要: 项目中有时接口访问时间过长,但是通过浏览器F12查看时,接口访问时间很正常,所以就很奇怪,于是写一个中间件,记录所有接口访问时间的中间件。 一、中间件 中间件是应用程序处理管道中的组件,用来处理请求和响应。如下图,请求来之后,第一个中间件处理,处理完后调用下一个中间件(当然也可以选择不调用下一个中间 阅读全文
posted @ 2018-10-30 17:21 MicroHeart! 阅读(1891) 评论(1) 推荐(1) 编辑
摘要: 一、介绍 主机地址过滤中间件相当于一个白名单,标记哪些主机地址能访问接口。 二、使用 新建WebAPI项目,修改Startup中的代码段如下所示。下面表示允许主机名为“localhost”的主机访问(不区分大小写),其他主机地址访问此项目的接口都会返回400错误。 (正常访问) 上面为正常访问情况, 阅读全文
posted @ 2018-09-19 02:48 MicroHeart! 阅读(902) 评论(0) 推荐(0) 编辑
摘要: 一、介绍 在介绍静态文件中间件之前,先介绍 ContentRoot和WebRoot概念。 ContentRoot:指web的项目的文件夹,包括bin和webroot文件夹。 WebRoot:一般指ContentRoot路径下的wwwroot文件夹。 介绍这个两个概念是因为静态资源文件一般存放在Web 阅读全文
posted @ 2018-09-10 14:30 MicroHeart! 阅读(1160) 评论(3) 推荐(2) 编辑
摘要: 今天写了一个sql,其中涉及的表中的数据量都差不多为50w左右,查询发现用了8s。这个只是测试服上数据,放到正式服上,肯定一运行就挂了。 然后就用EXPLAIN分析了一下,发现Orders表没有命中索引,但是查询Orders中的GuidNo已经设置了索引,但就是不能命中。 然后我将上面的语句分为两个 阅读全文
posted @ 2018-09-06 15:47 MicroHeart! 阅读(1003) 评论(0) 推荐(0) 编辑