Observer

vue核心原理实现

放肆的年华 提交于 2021-02-13 03:50:02
<! DOCTYPE html > < html > < head > < meta charset ="utf-8" > < title > vue 核心源码 </ title > </ head > < body > < div id ="app" > </ div > </ body > < script > /* 观察者 包含可观察对象 订阅与发布方法 */ var tempSubscript = '' ; // 存储可观察者对象,方便加入到观察者队列中 function Observer(){ this .$queue = []; } /* 可观察者对象加入到观察者队列中 */ Observer.prototype.subscirpt = function (){ this .$queue.push(tempSubscript); }; /* 通知队列中的可观察者对象更新结点内容 */ Observer.prototype.notify = function (){ for (let i = 0 ;i < this .$queue.length;i ++ ){ this .$queue[i].update(); } } /* 可观测者对象 包含更新方法 */ function Observerable(propName,node,data){ this .

面试:Zookeeper常见11个连环炮

試著忘記壹切 提交于 2021-02-12 13:03:04
面试的时候,面试官只要看到你简历的上写的有Zookeeper(熟悉、掌握)之类,那你至少要准备接下来的11连问。 NO1:说说zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现(Chubby是不开源的),它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 。 Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心,服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据,简单示例图如下: NO2:了解Zookeeper的系统架构吗? Zoo Keeper 的架构图中我们需要了解和掌握的主要有: (1)ZooKeeper分为服务器端(Server) 和客户端(Client),客户端可以连接到整个 ZooKeeper服务的任意服务器上(除非 leaderServes 参数被显式设置, leader 不允许接受客户端连接)。 (2)客户端使用并维护一个 TCP 连接,通过这个连接发送请求、接受响应、获取观察的事件以及发送心跳。如果这个 TCP 连接中断

告别垃圾代码,请收下这几个锦囊妙计!

六月ゝ 毕业季﹏ 提交于 2021-02-09 12:04:00
原文:https: //www.jianshu.com/p/3f04b6aebad2 转载自石衫的架构笔记。 重构不止是代码整理,它提供了一种高效且受控的代码整理技术。 (一)重构原则 1、何谓重构 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 另一种解释是:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。 2、为何重构 改进软件设计:如果没有重构,程序的设计会逐渐变质,重构很像是在整理代码,你所做的就是让所有的东西回到应处的位置上。 帮助找到bug:对代码进行重构,可以深入理解代码的作为,在搞清楚程序结构的同时,想不把bug揪出来都难。 提高编程速度:良好的设计是快速开发的根本,改善设计、提高可读性,减少错误,这些都是提高质量。 扫描二维码,加我微信, 申请进数千人技术交流群。 3、何时重构 任何情况下我都反对专门拨出时间进行重构。重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地的进行。 三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见的重构时机是想给软件添加新特性的时候; 重构的另个一原动力是:代码的设计无法帮助我轻松的添加所需要的特性 修改错误的时候,review代码的时重构 间接层和重构 计算机科学是这样一门科学

手动实现vue2.0的双向数据绑定原理

只愿长相守 提交于 2021-02-07 09:32:29
vue2.0的双向数据绑定原理(手动实现) 一句话概括:数据劫持(Object.defineProperty)+发布订阅模式 一.首先了解什么是发布订阅模式 二.new Vue()的时候做了什么? 一句话概括:数据劫持(Object.defineProperty)+发布订阅模式 双向数据绑定有三大核心模块(dep 、observer、watcher),它们之间是怎么连接的,下面来一一介绍。 为了大家更好的理解双向数据绑定原理以及它们之间是如何实现关联的,先带领大家复习一下发布订阅模式。 一.首先了解什么是发布订阅模式 直接上代码: 一个简单的发布订阅模式,帮助大家更好的理解双向数据绑定原理 //发布订阅模式 function Dep ( ) { this . subs = [ ] //收集依赖(也就是手机watcher实例), } Dep . prototype . addSub = function ( sub ) { //添加订阅者 this . subs . push ( sub ) ; //实际上添加的是watcher这个实例 } Dep . prototype . notify = function ( sub ) { //发布,这个方法的作用是遍历数组,让每个订阅者的update方法去执行 this . subs . forEach ( ( sub ) => sub .

Zookeeper源码分析

浪子不回头ぞ 提交于 2021-02-04 08:21:44
download: Zookeeper源码分析 Zookeeper作为阿里系与Dubbo完美搭配的注册中心,其江湖地位毋容置疑。本课程以最开始图解Zookeeper框架的架构和组件作为课程总起,进而“分而治之”各个击破Zookeeper框架的各个组件源码,如:序列化,数据模型,持久化,Client和Server架构、选举流程等,最后通过总结快速梳理所得。 适合人群 有代码洁癖的中高级Java工程师 从事分布式系统设计和开发的极客 认可“源码驱动式”学习方式的学生党 技术储备要求 Java基础扎实,对IO/NIO网络通信等知识有一定了解 了解序列化、持久化、多线程 了解zookeeper的一般使用命令 char const const pc = "123abc"; //这个pc指向的地址和内容都不变,极端状况 printf("pc content is %c\n", pc);//用于输出 指向的特定字符 printf("pc string content is %s\n" , pc);//用于输出整个字符串(缘由????) / 9.a指针函数(本质是一个函数,返回值是一个指针) b函数指针(函数名是一个指针)的区别 / / //类型标识符 函数名(参数表) a.int* f(x,y); 指针函数 b.int ( f) (int x); //声明一个函数指针   f=func; /

java23种设计模式概述总结

霸气de小男生 提交于 2021-02-02 09:39:10
软件设计模式的意义: 它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的 可重用性、代码的可读性和代码的可靠性。 可以提高程序员的思维能力、编程能力和设计能力。 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。 软件设计模式的基本要素: 模式名称 、 问题 ( 该模式的应用环境 ) 、 别名、动机、 解决方案 ( 组成成分、它们之间的相互关系及各自的职责和协作方式 ) 、 效果( 模式的优缺点。主要是对时间和空间的衡量以及该模式对系统的灵活性、扩充性、可移植性的影响 ) 、 结构、模式角色、合作关系、实现方法、适用性、已知应用、例程、模式扩展和相关模式 设计模式 有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。 1. 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为 创建型模式、结构型模式和行为型模式 3 种 。 创建型模式:用于描述“怎样创建对象”,它的主要特点是“ 将对象的创建与使用分离 ”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式:用于描述如何将 类或对象按某种布局组成更大的结构 ,GoF 中提供了代理、适配器、桥接、装饰、外观

Apache Flink 在实时金融数据湖的应用

左心房为你撑大大i 提交于 2021-01-29 04:55:24
简介: 本文由京东搜索算法架构团队分享,主要介绍 Apache Flink 在京东商品搜索排序在线学习中的应用实践 一、背景 在京东的商品搜索排序中,经常会遇到搜索结果多样性不足导致系统非最优解的问题。为了解决数据马太效应带来的模型商品排序多样性的不足,我们利用基于二项式汤普森采样建模,但是该算法仍存在对所有用户采用一致的策略,未有效考虑用户和商品的个性化信息。基于该现状,我们采取在线学习,使深度学习和汤普森采样融合,实现个性化多样性排序方案,实时更新模型的关参数。 在该方案中,Flink 主要应用于实时样本的生成和 online learning 的实现。在在线学习过程中,样本是模型训练的基石,在超大规模样本数据的处理上,我们对比了 Flink、Storm 和 Spark Streaming 之后,最终选择用 Flink 作为实时样本流数据的生产以及迭代 online learning 参数的框架。在线学习的整体链路特别长,涉及在线端特征日志、流式特征处理、流式特征与用户行为标签关联、异常样本处理、模型动态参数实时训练与更新等环节,online learning 对样本处理和参数状态处理的准确性和稳定性要求较高,任何一个阶段都有可能出现问题,为此我们接入京东的 observer 体系,拥有完整的全链路监控系统,保证各个阶段数据的稳定性和完整性

Vue.js 基础知识

人盡茶涼 提交于 2021-01-23 03:54:33
一、Vue起步 Vue:构建用户界面的渐进式框架。 1.helloworld < div id ="app" > {{content}} </ div > 原生方法: <script> var dom = document.getElementById('app' ); dom.innerHTML = 'helloworld' ; </script> Vue 方法: <script> // 创建Vue实例 var app = new Vue({ // el项 :Vue实例接管的区域 el: "#app" , // 定义数据 data: { content: "helloworld!" } }); </script> 2.两秒后修改文字 < div id ="app" > {{content}} </ div > 原生方法: var dom = document.getElementById('app' ); dom.innerHTML = 'helloworld' ; setTimeout( function () { dom.innerHTML = 'byeworld' ; }, 2000) Vue 方法: var app = new Vue({ el: "#app" , data: { content: "helloworld!" } }); setTimeout(

Zookeeper面试题

我们两清 提交于 2021-01-19 07:08:01
1. ZooKeeper是什么? ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。 Zookeeper保证了如下分布式一致性特性: 顺序一致性 原子性 单一视图 可靠性 实时性(最终一致性) 客户端的读请求可以被集群中的任意一台机器处理, 如果读请求在节点上注册了监听器,这个监听器也是由所连接的zookeeper机器来处理 。对于写请求,这些请求会同时发给其他zookeeper机器并且达成一致后,请求才会返回成功。因此,随着zookeeper的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。 有序性是zookeeper中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回结果中会带有这个zookeeper最新的zxid。 2. ZooKeeper提供了什么? 1、文件系统 2、通知机制 3. Zookeeper文件系统

Zookeeper 面试总结

﹥>﹥吖頭↗ 提交于 2021-01-19 01:13:27
1:Zookeeper是什么?   答:ZooKeeper是一个开源的分布式协调服务,是集群的管理者,监视集群节点反馈信息进行下一步合理操作。   Zookeeper提供的服务:管理用户程序提交的数据;为用户程序提供节点监听服务。   应用场所:主从协调,服务器节点动态上下线,负载均衡、集群管理等。。。 2:Zookeeper特性:一致性、原子性、单一视图、可靠性、实时性。 3:Zookeeper集群的角色: Leader 、follower 和 Observer   Leader:事物请求的唯一调度和处理者,集群内部服务的调度者。   followe: 参与Leader选举投票、处理客户端的非事物请求,转发事物请求给Leader服务器、参与事物请求Proposal的投票   Observer:弱化版的Follower,不参与任何投票,主要是为了在不影响集群事务处理能力的前提下提升集群的非事务处理的吞吐量。 4:Zookeeper集群机制的:半数机制:集群中半数以上机器存活,集群可用。 5:Zookeeper提供了文件系统和通知机制 6:Zookeeper协议:ZAB协议,一种支持崩溃恢复的原子广播协议。 7:四种类型的数据节点-znode   PERSISTENT-持久节点   EPHEMERAL-临时节点   PERSISTENT_SEQUENTIAL-持久顺序节点