摘要: Abp中使用EventBus来解耦领域中的业务逻辑,也是订阅 发布模式的一种实现。简单来说就是,当我触发一个事件,注册了这个事件的处理器就会被找到并执行。 先看看整体代码结构 其中 文件夹中是对于实体相关的领域事件的实现与本章主题无关,我们就可以先当他不存在了。 可以看到有四个东西我们需要注意 这 阅读全文
posted @ 2020-05-18 15:30 RstarYan 阅读(974) 评论(0) 推荐(2) 编辑
摘要: 实现一个消息队列 本来打算利用Redis发布订阅模式来实现一个简单的消息队列,但我在工作中根本没用Redis来做消息队列。有几点原因 1. 数据持久化。 2. Redis只会发送消息给在线的消费者,处于离线状态的消费者将不会收到消息就算恢复过来。 3. 没有ACK机制,发送者不知道消费者到底消费了吗 阅读全文
posted @ 2020-05-07 17:03 RstarYan 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 实现原理 有兴趣看Redis pub/sub源码的可以移步 "这里" ,有中文注释的哦,感谢作者的奉献。 订阅(Subscribe) 先直接上源码 主要做了两件事情 1. 判断新的channel是否存在于客户端的pubsub_channels中,如果不存在执行下面步骤 2. 将channel添加到客 阅读全文
posted @ 2020-05-07 17:01 RstarYan 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 发布订阅模式 发布订阅模式可以说是耳熟能详了,它是属于设计模式中的行为模式,最大的好处就是起到解耦的作用,发布者不用关心在消息产生之后需要做什么,发布者只需要在通道里说“我发布了”,不用管有什么业务逻辑需要处理也不用管有多少的逻辑要处理,很简单明了。 我们平时用来解耦业务的消息队列就是实现了发布订阅 阅读全文
posted @ 2020-05-07 16:59 RstarYan 阅读(784) 评论(0) 推荐(0) 编辑
摘要: Redis客户端使用RESP(Redis序列化协议)与Redis服务器进行通信,RESP在位于TCP之上,而网络模型上客户端和服务器是保持的双工的连接。如图1 而一个简单的请求/响应的串行通信模型如下图: 串行化通信 串行化通信比较简单,上面那张图就很表面的反应出来这种通信方式,同一个Connct 阅读全文
posted @ 2020-05-07 16:58 RstarYan 阅读(2562) 评论(0) 推荐(1) 编辑
摘要: String string是Redis最基本的数据类型,一个key对应一个string。 string 类型是二进制安全的。意思是 redis 的 string 任意格式的二进制数据。比如jpg图片或者序列化的对象。 string 类型的值最大能存储 512M 相关常用命令 应用场景 string类 阅读全文
posted @ 2020-04-27 14:36 RstarYan 阅读(1026) 评论(0) 推荐(1) 编辑
摘要: 基本概念 按照惯例,研究一个新东西要由浅入深,先进行一个简单介绍,这一块就直接引用菜鸟教程的 Redis概述 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key value数据库。 Redis 与其他 key value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内 阅读全文
posted @ 2020-04-23 12:55 RstarYan 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 什么是配置中心 简单来说配置中心就是对配置进行管理的一个中心。对于配置这个司空见惯的东西,我们想想为什么对于应用程序需要各种各样的配置来支撑? 我们人类没有办法掌控和预知一切,所以映射到软件系统这个领域,我们需要人为的预留一些线头,以便在未来呢,拨弄这些线头调整系统的飞行状态。 而这些线头就是我们程 阅读全文
posted @ 2019-05-13 16:56 RstarYan 阅读(3748) 评论(0) 推荐(0) 编辑
摘要: 什么是服务发现 首先我们先思考一个问题,当我们在浏览器中输入一个域名比如baidu.com,然后发生了什么才能让我们访问到百度的网页?简单来说,浏览器会首先从主机的hosts文件中查看是否有baidu.com对应ip的映射,如果有就直接用hosts文件得到的ip来请求数据,如果没有那么就需要去DNS 阅读全文
posted @ 2019-05-13 16:55 RstarYan 阅读(828) 评论(0) 推荐(0) 编辑
摘要: Docker中一键安装ELK 对于这种工具类的东西,第一步就直接到docker的hub中查找了,很幸运,不仅有Elasticsearch,kibana,logstash 单独的镜像,而且还直接 有ELK的镜像。 这当然能少好多配置,毫不犹豫就选择了elk的镜像, 运行起来!如果没有异常的话相信就很容 阅读全文
posted @ 2018-12-21 16:36 RstarYan 阅读(2587) 评论(0) 推荐(11) 编辑
$(function(){ $('#blogTitle h1').addClass('bounceInLeft animated'); $('#blogTitle h2').addClass('bounceInRight animated'); // 删除反对按钮 $('.buryit').remove(); initCommentData(); }); function initCommentData() { $('.feedbackItem').each(function() { var text = $(this).find('.feedbackListSubtitle .layer').text(); // 将楼层信息放到data里面 // $(this).find('.blog_comment_body').attr('data-louceng', text.replace(/^#/g, '')); if($(this).find('.feedbackListSubtitle .louzhu').length>0) $(this).addClass('myself'); var avatar = $(this).find('> .feedbackCon > span').html() || 'https://pic.cnblogs.com/face/sample_face.gif'; $(this).find('> .feedbackCon > .blog_comment_body').append('') }); } $(document).ajaxComplete(function(event, xhr, settings) { // 监听获取评论ajax事件 if(settings.url.indexOf('/mvc/blog/GetComments.aspx') >= 0) { initCommentData(); } });