EventBus

Flutter状态管理系列之InheritedWidget,Notifcation,eventbus的使用和原理

一笑奈何 提交于 2020-08-19 03:11:43
文章目录 InheritedWidget 示例 构造函数传值: 继承 InheritedWidget 传值: Notification 示例 EventBus 示例 示例完整源码 Flutter是由众多widget构成的UI框架,之前的文章我们在不同的widget之间传递数据是通过构造函数传参的方式传递。如果嵌套的widget过多,这么写不免有些麻烦且层级复杂。所以Flutter还提供了其他方案来实现跨 widget 间数据的传递,下面就介绍InheritedWidget、Notification 和 EventBus这三种方案。 InheritedWidget InheritedWidget 是widget的基类,可有效地向下传播信息。 可以理解为子 widget可以在任何位置获取继承了InheritedWidget的父 widget中的数据。 示例 示例中通过构造函数和继承InheritedWidget两种方式实现父 widget :FrogColor向子 widget:FColor传值。 构造函数传值: 继承 InheritedWidget 传值: 首先定义一个类FrogColor继承InheritedWidget,并在构造方法中传递数据和方法:model 和 doSomeThing class FrogColor extends InheritedWidget {

Implementing event-based communication between microservices (integration events)

a 夏天 提交于 2020-08-18 13:51:29
https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/integration-event-based-microservice-communications#integration-events As described earlier, when you use event-based communication, a microservice publishes an event when something notable happens, such as when it updates a business entity. Other microservices subscribe to those events. When a microservice receives an event, it can update its own business entities, which might lead to more events being published. This is the essence of the eventual consistency concept . This

Vue3.0--Vue Composition API使用体验

て烟熏妆下的殇ゞ 提交于 2020-08-17 16:40:26
Vue3.0目前已经出了beta版本,并在github上进行了开源,叫做 vue-next ,本文将之前采用Vue2.6开发的todoList小项目改造成为Vue3.0编写,并介绍一下2.x和3.x之间写法的不同之处。 点击体验 Github地址: Vue.js2.6版本todoList , Vue.js3.0版本todoList Vue3.x适配大部分Vue2.x的组件配置,也就是说以前我们在Vue2.x针对组件的一些配置项,例如: export default { name: 'test' , components: {}, props: {}, data () { return {} }, created (){}, mounted () {}, watch:{}, methods: {} } 复制代码 在Vue3.x中也是可以适配的,对应的相关生命周期方法也可正常执行,但是Vue3.x的一大核心是引入了 Vue Composition API (组合式API),这使得组件的大部分内容都可以通过 setup() 方法进行配置,同时Vue Composition API在Vue2.x也可以使用,需要通过安装@vue/composition-api来使用: npm install @vue/composition-api ... import VueCompositionApi

【技术控请进】华为云DevCloud深色模式开发解读

守給你的承諾、 提交于 2020-08-17 12:52:04
引言 近期,华为云DevCloud推出了开发者友好的深色模式,深受开发者们的喜爱和关注。大家都知道,深色模式(Dark Mode)在iOS13 引入该特性后各大应用和网站都开始支持了深色模式。在这之前,深色模式更常见于程序IDE开发界面和视频网站界面。前者通过降低屏幕亮度,使得使用人员长时间盯着屏幕眼睛没有那么疲惫;后者通过深色模式来降噪,从而突出主体内容部分。随着产品技术的迭代,在支持css自定义属性(又称css变量,css variables)的现代浏览器,完全可以在运行时实时新增主题,摆脱传统css主题文件加载模式下的主题需要预编译内置不能随时修改的弊端。 接下来,我们看一下如何使用css自定义属性来完成深色模式和主题化的开发。 主题切换器开发 首先我们需要打通一套支持css自定义属性的开发模式。 CSS自定义属性使用 这里简单介绍一下CSS自定义属性,有时候也被称作CSS变量或者级联变量。它包含的值可以在整个文档中重复使用。自定义属性使用 -- 变量名 : 变量值 来定义,用var(-- 变量名 [, 默认值 ]) 函数来获取值。举一个简单例子: <!--html--> <div><p>text</p></div> /* css */ div { --my-color: red; border: 1px solid var(--my-color); } p { color:

.net core下使用事件总线

陌路散爱 提交于 2020-08-17 06:43:49
随着微服务的火热,DDD(领域驱动设计模式)思想风起云涌,冲击着整个软件生态系统。其中,事件总线那是必须知道的了,于是我便抱着一个学习DDD的心态搭建了一个博客网站,目前该网站正在建设阶段,后续会不断完善,这里我只是讲一下我里面所用到的事件总线。 事件总线,我的理解就是发布订阅模式,这里有一篇文章写的比较好,我就是按着这个文章来完成的事件总线: 事件总线知多少 。我之前按照他的文章结合自己写的,但是今天又看了下自己写的,发现好多都生疏了,所以觉得有必要来回忆下,这里只是我个人的理解,如有不对请指出。 事件总线就肯定要有事件源,这里我定义一个Command事件源: /// <summary> /// 领域命令基类(此处文章里我称之为事件源) /// </summary> public class Command { }  然后我根据事件源来定义一个事件源处理的接口和它的实现类: /// <summary> /// 创建用户领域命令(创建事件源) /// </summary> public class CreateUserCommand: Command { public CreateUserCommand(User user) { User = user; } public User User { get; private set; } } /// <summary> ///

Tackle Business Complexity in a Microservice with DDD and CQRS Patterns

时光总嘲笑我的痴心妄想 提交于 2020-08-17 04:21:10
Domain events: design and implementation Domain events versus integration events Semantically, domain and integration events are the same thing: notifications about something that just happened. However, their implementation must be different. Domain events are just messages pushed to a domain event dispatcher , which could be implemented as an in-memory mediator based on an IoC container or any other method. On the other hand, the purpose of integration events is to propagate 传播 committed transactions and updates to additional subsystems , whether they are other microservices, Bounded

Vue-eventBus

强颜欢笑 提交于 2020-08-17 03:23:53
eventBus 是在轻量级的vue项目中 使用的一种通信方式,通过定义一个全局变量,实现数据互通,和vuex类似 1、在main.js中定义全局$eventbus Vue.prototype.$EventBus = new Vue() 2、定义变量 this.$EventBus.$emit("params_demo",{ num: this.num, deg: this.deg }); 3、访问变量 this.$EventBus.$on("params_demo", ({num, deg}) => { console.log(num,deg) }) 来源: oschina 链接: https://my.oschina.net/bing309/blog/4330830

Abp领域事件(EventBus)源码解析

廉价感情. 提交于 2020-08-15 21:46:36
Abp中使用EventBus来解耦领域中的业务逻辑,也是订阅-发布模式的一种实现。简单来说就是,当我触发一个事件,注册了这个事件的处理器就会被找到并执行。 先看看整体代码结构 其中 Entities 文件夹中是对于实体相关的领域事件的实现与本章主题无关,我们就可以先当他不存在了。 可以看到有四个东西我们需要注意 EventData 这个我们可以就当作是事件类型,需要触发的事件就是这个东西。 EventHandler 事件处理器。当有事件触发的时候,如果处理器注册了这个事件那么会来执行这个处理器 EventHandlerFactory 事件处理器工厂。 维护事件处理器的新建,获取和销毁。一个事件处理器对应一个事件处理器工厂 EventBus 负责注册,取消注册和触发事件 我们把这四个东西联合起来描述下领域事件的流程就是这样的(一个例子): 我定义了一个订单创建成功的事件 OrderCreated_EventData 当订单创建成功,我需要发送邮件,那么我创建一个处理器, SendMailEventHandler 将 SendMailEventHandler 包装到一个工厂中,并 和 OrderCreated_EventData 一起注册到 EventBus 里面 通过 EventBus 触发事件 OrderCreated_EventData ,那么就会执行已经

vue中8种组件通信方式, 值得收藏!

百般思念 提交于 2020-08-14 11:07:24
vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢? 首先我们需要知道在vue中组件之间存在什么样的关系, 才更容易理解他们的通信方式, 就好像过年回家,坐着一屋子的陌生人,相互之间怎么称呼,这时就需要先知道自己和他们之间是什么样的关系。 vue组件中关系说明: 如上图所示, A与B、A与C、B与D、C与E组件之间是父子关系; B与C之间是兄弟关系;A与D、A与E之间是隔代关系; D与E是堂兄关系(非直系亲属) 针对以上关系我们归类为: 父子组件之间通信 非父子组件之间通信(兄弟组件、隔代关系组件等) 本文会介绍组件间通信的8种方式如下图目录所示:并介绍在不同的场景下如何选择有效方式实现的组件间通信方式,希望可以帮助小伙伴们更好理解组件间的通信。 一、 props / $emit 父组件通过 props 的方式向子组件传递数据,而通过 $emit 子组件可以向父组件通信。 1. 父组件向子组件传值 下面通过一个例子说明父组件如何向子组件传递数据:在子组件 article.vue 中如何获取父组件 section.vue 中的数据 articles:['红楼梦', '西游记','三国演义'] // section父组件 < template > < div class = "section" > < com -

Raft分布式一致性算法整理

*爱你&永不变心* 提交于 2020-08-14 03:03:40
CAP定理 Consistency:一致性 Availability:可用性 Partition-tolerance:分区容错性 CAP定理指出,在异步网络模型中,不存在一个系统可以同时满足上述3个属性。换句话说,分布式系统必须舍弃其中的一个属性。对于需要在分布式条件下运行的系统来说,如何在一致性、可用性和分区容错性中取舍,或者说要弱化哪一个属性,是首先要考虑的问题。 对于高可用性的系统来说,往往会保留强一致性。但对于强一致性的系统来说,有一类专门解决这种问题的算法——共识算法。"共识"的意思是保证所有的参与者都有相同的认知(可以理解为强一致性)。共识算法本身可以依据是否有恶意节点分为两类,大部分时候共识算法指的是没有恶意节点的那一类,即系统中的节点不会向其他节点发送恶意请求,比如欺骗请求。共识算法中最有名的是Paxos算法。其次是Raft和ZAB算法(Zookeeper中的实现) Raft核心算法 Raft算法的核心是选举和日志复制。 当多台服务器同时对外服务时,服务器如何同步变更成了一个问题。一般是采用主从模型,即一个主服务器(Leader),多个从服务器(Follower),所有请求都通过Leader服务器处理,Follower服务器只负责备份数据。但假设Leader服务器宕机了,那么Follower服务器中哪个服务器成为新的Leader服务器呢