Observer

ZooKeeper面试题(2020最新版)

*爱你&永不变心* 提交于 2020-05-07 11:50:13
文章目录 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3. Zookeeper 文件系统 4. Zookeeper 怎么保证主从节点的状态同步? 5. 四种类型的数据节点 Znode 6. Zookeeper Watcher 机制 -- 数据变更通知 7. 客户端注册 Watcher 实现 8. 服务端处理 Watcher 实现 9. 客户端回调 Watcher 10. ACL 权限控制机制 11. Chroot 特性 12. 会话管理 13. 服务器角色 14. Zookeeper 下 Server 工作状态 15. 数据同步 16. zookeeper 是如何保证事务的顺序一致性的? 17. 分布式集群中为什么会有 Master主节点? 18. zk 节点宕机如何处理? 19. zookeeper 负载均衡和 nginx 负载均衡区别 20. Zookeeper 有哪几种几种部署模式? 21. 集群最少要几台机器,集群规则是怎样的?集群中有 3 台服务器,其中一个节点宕机,这个时候 Zookeeper 还可以使用吗? 22. 集群支持动态添加机器吗? 23. Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的? 24. Zookeeper 的 java 客户端都有哪些? 25. chubby 是什么,和

聊聊maxwell的BinlogConnectorDiagnostic

只谈情不闲聊 提交于 2020-05-06 22:50:07
序 本文主要研究一下maxwell的BinlogConnectorDiagnostic MaxwellDiagnostic maxwell-1.25.1/src/main/java/com/zendesk/maxwell/monitoring/MaxwellDiagnostic.java public interface MaxwellDiagnostic { String getName(); boolean isMandatory(); String getResource(); CompletableFuture<MaxwellDiagnosticResult.Check> check(); } MaxwellDiagnostic接口定义了getName、isMandatory、getResource、check方法;check方法返回的是MaxwellDiagnosticResult.Check类型的CompletableFuture MaxwellDiagnosticResult maxwell-1.25.1/src/main/java/com/zendesk/maxwell/monitoring/MaxwellDiagnosticResult.java public class MaxwellDiagnosticResult { private final

zookeeper,及k8s基础概念

喜你入骨 提交于 2020-05-05 15:59:39
1、描述zookeeper集群中leader,follower,observer几种角色 Zookeeper: 分布式系统:是一个硬件或软件组件分布在网络中的不同的计算机之上,彼此间仅通过消息传递进行通信和协作的系统。 特征: 分布性、对等性、并发性、缺乏全局时钟、故障必然会发生 典型问题: 通信异常、网络分区、三态(成功、失败、超时)、节点故障 zookeeper是一个开源的分面式协调服务,由知名互联网公司Yahoo创建,它是Chubby的开源实现;换句话讲,zk是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于它实现数据的发布/订阅、负载均衡、名称服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列; 基本概念: 集群角色:Leader, Follower, Observer Leader:选举产生,读/写; Follower:参与选举,可被选举,读服务; Observer:参与选举,不可被选举,提供读服务; 会话:ZK中,客户端<-->服务端,TCP长连接; sessionTimeout 数据节点(ZNode):即zk数据模型中的数据单元;zk的数据都存储于内存中,数据模型为树状结构(ZNode Tree);每个ZNode都会保存自己的数据于内存中; 持久节点:仅显式删除才消失 临时节点:会话中止即自动消失 版本(version)

关于微信小程序 canvas 裁剪图片 放大 缩放功能

喜你入骨 提交于 2020-05-05 15:45:09
1 关于微信小程序裁剪 放大任务功能 第一步 先明确需要做成什么样的功能,目标需要明确。我们这边的需求就是上传一次图片进行裁剪 canvas 生成后图片直接进行商家购买<br> 第二步 裁剪的过程注意网络加载情况,可能上传一张图片有几兆这个时候需要 给他一个等待时间,防止用户重先提交,导致信息不同意,这个时候我们要做的就是加一个loging 第三步 生成后需要对图片进行处理,好了直接上代码。 创建一个文件夹,直接进行perbig文件夹 在js中我们直接进行变量的更新更业务操作 有些变量不需要 这个按照自己的情况进行获取 data:{ ratio: 750 / 750, //剪裁比例 originUrl: '', //原始图片url cropperResult: '', //变化后结果 windowWidt:'', originShow: '', cropperResultShow:'', originImgPics:'../../lib/images/shade.png', //背景图 base64: '', //base64 cartypeId:'', // 车型id carColorId:'', // 颜色ID windowWidt:'', topImg:'', ismove:false, containerHeight:0, diffX:0, diffY:0,

vue核心之响应式原理(双向绑定/数据驱动)

倖福魔咒の 提交于 2020-05-04 04:38:52
实例化一个vue对象时, Observer类将每个目标对象(即data)的键值转换成getter/setter形式,用于进行依赖收集以及调度更新。 Observer src/core/observer/index.js export class Observer { value: any; dep: Dep; vmCount: number; // number of vms that has this object as root $data constructor (value: any) { this .value = value this .dep = new Dep() this .vmCount = 0 /* 将Observer实例绑定到data的__ob__属性上面去,之前说过observe的时候会先检测是否已经有__ob__对象存放Observer实例了,def方法定义可以参考/src/core/util/lang.js */ def(value, '__ob__', this ) if (Array.isArray(value)) { /* 如果是数组,将修改后可以截获响应的数组方法替换掉该数组的原型中的原生方法,达到监听数组数据变化响应的效果。这里如果当前浏览器支持__proto__属性,则直接覆盖当前数组对象原型上的原生数组方法,如果不支持该属性

nw core index.js

牧云@^-^@ 提交于 2020-05-02 13:20:32
nw core index.js wechat_devtools_1.02.1904090/Contents/Resources/package.nw/js/core/index.js const path = require('path' ) const tools = require('../js/84b183688a46c9e2626d3e6f83365e13.js' ) const locales = require('../js/common/locales/index.js' ) const isMac = (process.platform === 'darwin' ) const query = tools.getQuery(location.search) // 记录工具开始运行的时间 global.beginTime = Date.now() function hack() { // to prevent drag image or html document.body.addEventListener('dragover', function (e) { e.preventDefault() e.stopPropagation() }, false ) document.body.addEventListener( 'drop', function (e) {

Java设计模式の观察者模式(推拉模型)

天大地大妈咪最大 提交于 2020-05-02 09:54:48
目录:    一.观察者定义    二.观察者模式的结构 (推模式实现)    三.推模型和拉模型 (拉模式实现)    四.JAVA提供的对观察者模式的支持    五.使用JAVA对观察者模式的支持(自带推模式实现实例) 一.观察者定义 在阎宏博士的《JAVA与模式》一书中开头是这样描述观察者(Observer)模式的:    观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。   观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 二.观察者模式的结构(推模式实现实例)    一个软件系统里面包含了各种对象,就像一片欣欣向荣的森林充满了各种生物一样。在一片森林中,各种生物彼此依赖和约束,形成一个个生物链。一种生物的状态变化会造成其他一些生物的相应行动,每一个生物都处于别的生物的互动之中。   同样,一个软件系统常常要求在某一个对象的状态发生变化的时候,某些其他的对象做出相应的改变。做到这一点的设计方案有很多,但是为了使系统能够易于复用,应该选择低耦合度的设计方案。减少对象之间的耦合有利于系统的复用

写个hello world了解Rxjava

本小妞迷上赌 提交于 2020-05-01 02:41:24
[toc] spring boot 项目中使用Rxjava2 #什么是Rxjava? 来自百度百科的解释 RxJava - JVM响应式扩展Reactive Extensions 用于使用Java VM的可观察序列编写异步和基于事件的程序的库。 ReactiveX是一个通过使用可观察序列来编写异步和基于事件的程序的库。 它扩展了观察者模式以支持数据和/或事件序列,并增加了运算符,使您可以声明性地组合序列,同时抽象出对低级线程,同步,线程安全性,并发数据结构和非线程等事物的关注阻塞I / O。 ##在微服务中的优点 隔离每个服务,即使单个服务的响应失败了,也不会影响整个请求的响应。 #上手使用 ##引入依赖 Rxjava 的版本: https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxjava 本次采用最新的2.2.2版本 <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.2.2</version> </dependency> 在spring boot中引入依赖后就可以使用Rxjava了,下面通过写一组hello world来看看Rxjava的基本原理。 import io

深入理解设计模式---系列目录

拥有回忆 提交于 2020-04-28 21:34:04
一、创建型模式 深入理解设计模式(一):单例模式 (Singleton pattern): 确保一个类只有一个实例, 并提供全局访问点. 深入理解设计模式(二):简单工厂模式 (factory method pattern): 实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 深入理解设计模式(四):工厂方法模式 (factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类 深入理解设计模式(五):抽象工厂模式 (Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类. 深入理解设计模式(六):原型模式 (prototype pattern): 当创建给定类的实例过程很昂贵或很复杂时, 就使用原形模式. 深入理解设计模式(七):建造者模式 (Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示 二、行为型模式 深入理解设计模式(三):策略模式 (strategy pattern) : 定义了算法族, 分别封闭起来, 让它们之间可以互相替换,

设计模式就该这么学:以微信订阅号来讲观察者模式(第三篇)

落爺英雄遲暮 提交于 2020-04-28 12:12:41
前言: 继续《设计模式就该这么学》系列文章,今天以当前比较火的微信订阅号给大家介绍应用得比较多的一种设计模式——观察者模式,之后再来介绍java拉模型方式的内置设计模式实现,最后附带一个项目实际观察者应用的例子!   《设计模式就该这么学》 系列 文章: 设计模式就该这么学:为什么要学设计模式?(开篇漫谈) 设计模式就该这么学:要走心才能遵循设计模式五大原则(第二篇) 设计模式就该这么学:以微信订阅号来讲观察者模式(第三篇) 观察者模式实际应用:监听线程,意外退出线程后自动重启 一. 什么是观察者模式 以《Head First 设计模式》这本书中的定义:   观察者模式 :它定义了对象之间的一(Subject)对多(Observer)的依赖,这样一来,当一个对象(Subject)改变时,它的所有的依赖者都会收到通知并自动更新。    首先看下观察者模式的类图 主题(Subject)接口 :对象使用此接口注册为观察者,或者把自己从观察者中移除。 观察者(Observer)接口 :所有潜在的观察者都必须实现该接口,这个接口只有update一个方法,他就是在主题状态发生变化的时候被调用。 具体主题(ConcreteSubject)类 :它是要实现Subject接口,除了注册(registerObserver)和撤销(removeObserver)外,它还有一个通知所有的观察者