事件记录

37个JavaScript基本面试问题和解答

折月煮酒 提交于 2019-12-05 15:28:26
1、使用typeof bar ===“object”来确定bar是否是一个对象时有什么潜在的缺陷?这个陷阱如何避免? 尽管typeof bar ===“object”是检查bar是否是对象的可靠方法,但JavaScript中令人惊讶的问题是_null_也被认为是一个对象! 因此,下面的代码打印到控制台的是true而不是false: var bar = null; console.log(typeof bar === "object"); // logs true! 只要知道这一点,就可以通过检查bar是否为空来轻松避免该问题: console.log((bar !== null) && (typeof bar === "object")); // logs false 为了在我们的答案更加的完整,还有两件事值得注意: 首先,如果bar是一个函数,上面的解决方案将返回false。在大多数情况下,这是所期望的行为,但是在您希望函数返回true的情况下,您可以将上述解决方案修改为: console.log((bar !== null) && ((typeof bar === "object") || (typeof bar === "function"))); 其次,如果bar是数组,则上述解决方案将返回true(例如,如果var bar = [];)。在大多数情况下,这是所希望的行为

动手造轮子:实现简单的 EventQueue

泄露秘密 提交于 2019-12-05 13:37:42
摘自: https://www.cnblogs.com/weihanli/p/implement-event-queue.html 动手造轮子:实现简单的 EventQueue 动手造轮子:实现简单的 EventQueue Intro # 最近项目里有遇到一些并发的问题,想实现一个队列来将并发的请求一个一个串行处理,可以理解为使用消息队列处理并发问题,之前实现过一个简单的 EventBus ,于是想在 EventBus 的基础上改造一下,加一个队列,改造成类似消息队列的处理模式。消息的处理(Consumer)直接使用 .netcore 里的 IHostedService 来实现了一个简单的后台任务处理。 初步设计 # Event 抽象的事件 EventHandler 处理 Event 的方法 EventStore 保存订阅 Event 的 EventHandler EventQueue 保存 Event 的队列 EventPublisher 发布 Event EventConsumer 处理 Event 队列里的 Event EventSubscriptionManager 管理订阅 Event 的 EventHandler 实现代码 # EventBase 定义了基本事件信息,事件发生时间以及事件的id: Copy public abstract class EventBase

一个页面从输入URL到加载显示完成,发生了什么?

二次信任 提交于 2019-12-05 10:55:05
面试经典题——URL加载 一、涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns、http):DNS解析成IP并完成http请求发送; 传输层(tcp、udp):三次握手四次挥手模式建立tcp连接; 网络层(IP、ARP):IP寻址; 数据链路层(PPP):将请求数据封装成帧; 物理层:利用物理介质传输比特流(传输的时候通过双绞线、电磁波等) OIS七层框架 :多了两层即,会话层(处理两个通信系统中交换信息的表示方式)和表示层(管理不同用户和进程之间的对话)。 get和post的区别 : get产生一个tcp数据包,post产生两个 get请求时会把headers和data数据一起发送出去; post请求时,浏览器先发送headers,服务器100继续,浏览器再发送data。 DNS查询得到IP 请求信息:首先查看域名的本地DNS缓存,该缓存存储计算机最近检索到的信息,如果计算机不知道答案,那么就需要执行一个DNS查询来查找答案; 询问递归式DNS服务器: 如果信息不存储在本地,计算机会联系您的ISP(网络提供商)的递归DNS服务器; 这些专用计算机会为你执行一个DNS查询工作; 递归服务器有自己的缓存,所以这个查询过程通常在这里完成,并将信息还回给用户; 询问根域名服务器 如果递归服务器没有答案,他们会查询根域名服务器; 根域名服务器是一种计算机

第一轮迭代工作记录

女生的网名这么多〃 提交于 2019-12-05 09:22:39
一、主要工作内容 1.MVC架构的搭建 2.对象池的创建 3.导入场景资源 4.实现人物移动控制 二、MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。 优点:降低视图和模型的耦合度,通过控制器发送信息控制程序内部的信息交互,减少视图与模型的相互调用,提高了应用程序的灵活性和可控性,使得代码更加健壮,复用性更强。 MVC组件关系图 View-视图 抽象类 1、Name 用于各个view之间进行查找、区分-----对应“视图选择” 2、AttentionList 关心事件列表 3、RegisterAttentionEvent 注册关心事件 4、HandleEvent 处理来自Model的事件(参数 事件名称和参数)-----对应“通 知改变” 5、SentEvent 发送事件到Controller-----对应“用户请求” 6、GetModel 获取Model-----对应“状态查询” Model 数据模型 1、Name 名字,用于区分-----对应“状态改变” 2、SendEvent 发送事件到view(通过MVC这个中介者)-

使用事件和消息队列实现分布式事务

孤街浪徒 提交于 2019-12-05 06:06:19
http://skaka.me/blog/2016/04/21/springcloud1/ 不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常会有多个数据源, 只用本地数据库事务难以保证多个数据源数据的一致性. 这种情况下, 可以使用两阶段或者三阶段提交协议来完成分布式事务.但是使用这种方式一般来说性能较差, 因为事务管理器需要在多个数据源之间进行多次等待. 有一种方法同样可以解决分布式事务问题, 并且性能较好, 这就是我这篇文章要介绍的使用事件,本地事务以及消息队列来实现分布式事务. 我们从一个简单的实例入手. 基本所有互联网应用都会有用户注册的功能. 在这个例子中, 我们对于用户注册有两步操作: 1. 注册成功, 保存用户信息. 2. 需要给用户发放一张代金券, 目的是鼓励用户进行消费. 如果是一个单一架构应用, 实现这个功能非常简单: 在一个本地事务里, 往用户表插一条记录, 并且在代金券表里插一条记录, 提交事务就完成了. 但是如果我们的应用是用微服务实现的, 可能用户和代金券是两个独立的服务, 他们有各自的应用和数据库, 那么就没有办法简单的使用本地事务来保证操作的原子性了. 现在来看看如何使用事件机制和消息队列来实现这个需求.(我在这里使用的消息队列是kafka, 原理同样适用于ActiveMQ

微服务框架Spring Cloud之使用事件和消息队列实现分布式事务

心不动则不痛 提交于 2019-12-05 06:06:07
不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常会有多个数据源, 只用本地数据库事务难以保证多个数据源数据的一致性. 这种情况下, 可以使用 两阶段 或者 三阶段 提交协议来完成分布式事务.但是使用这种方式一般来说性能较差, 因为事务管理器需要在多个数据源之间进行多次等待. 有一种方法同样可以解决分布式事务问题, 并且性能较好, 这就是我这篇文章要介绍的使用事件,本地事务以及消息队列来实现分布式事务. 我们从一个简单的实例入手. 基本所有互联网应用都会有用户注册的功能. 在这个例子中, 我们对于用户注册有两步操作: 1. 注册成功, 保存用户信息. 2. 需要给用户发放一张代金券, 目的是鼓励用户进行消费. 如果是一个单一架构应用, 实现这个功能非常简单: 在一个本地事务里, 往用户表插一条记录, 并且在代金券表里插一条记录, 提交事务就完成了. 但是如果我们的应用是用微服务实现的, 可能用户和代金券是两个独立的服务, 他们有各自的应用和数据库, 那么就没有办法简单的使用本地事务来保证操作的原子性了. 现在来看看如何使用事件机制和消息队列来实现这个需求.(我在这里使用的消息队列是kafka, 原理同样适用于ActiveMQ/RabbitMQ等其他队列) 我们会为用户注册这个操作创建一个事件, 该事件就叫做用户创建事件(USER

oracle学习篇:八、等待事件

冷暖自知 提交于 2019-12-03 22:44:40
当一个进程连接到数据库之后,进程所经历的种种等待就开始被记录,并且通过一系列的动态性能视图进行展现。通过等待事件用户可以很快地发现数据库的性能瓶颈,从而进行针对性能的优化和分析。 8.1 等待事件的源起 查询数据库版本: select * from v$version; 查询等待事件数量: select * from v$event_name; oracle的等待事件,主要可以分为两类,即空闲idle等待事件和非空闲non-idle等待事件。空闲等待事件指oracle正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。非空闲等待事件专门针对oracle的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是,在调整数据库的时候应该关注和研究的。 查询空闲等待事件: select * from v$event_name where name like '%idle%'; 也可以通过查询v$system_wait_class视图获得各类主要等待事件的等待时间和等待次数等信息。 select * from v$system_wait_class; 8.2 从等待发现瓶颈 v$session视图:记录数据库当前连接的session信息,和session的生命周期相关,并不记录历史信息; v$session_wait视图

Unity--EditorGUI.ObjectField实现

五迷三道 提交于 2019-12-03 14:54:17
记录下,以后可以有个参考 绘制UI使用的是 style.Draw(position, gUIContent, id, DragAndDrop.activeControlID == id); 这个style其实就是 EditorStyles.objectField 有 ObjectSelector.get.Show(obj, objType, property, allowSceneObjects); 的 码块是后面那个圈圈的点击事件,点击后弹出对象选择面板 拖拽处理在 EventType.DragUpdated,EventType.DragPerform 的case块代码中 public static Object ObjectField(Rect position, GUIContent label, Object obj, Type objType, bool allowSceneObjects) { int controlID = GUIUtility.GetControlID(EditorGUI.s_ObjectFieldHash, FocusType.Keyboard, position); position = EditorGUI.PrefixLabel(position, controlID, label); if (EditorGUIUtility

vue组件间的数据传递demo记录

醉酒当歌 提交于 2019-12-03 04:39:54
父组件向子组件传递数据 在 Vue 中,可以使用 props 向子组件传递数据。 graph LR App.vue-->HelloWorld.vue 在子组件部分: 如果需要从父组件获取 logo 的值,就需要使用 props: ['logo'] 在父组件部分 在调用组件的时候,使用 v-bind 将 logo 的值绑定为 App.vue 中定义的变量 logoMsg 然后就能将App.vue中 logoMsg 的值传给 header.vue 了 子组件向父组件传递数据 graph LR Hom.vue-->App.vue 子组件主要通过事件传递数据给父组件 在子组件: ``` 请输入: <input v-model="username" @change="setUser" /> //当 的值发生变化的时候,将 username 传递给 App.vue, 首先声明一个了方法 setUser,用 change 事件来调用 setUser //在 setUser 中,使用了 $emit 来遍历 transferUser 事件,并返回 this.username 其中 transferUser 是一个自定义的事件,功能类似于一个中转,this.username 将通过这个事件传递给父组件 ## 父组件部分 名字为:{{user}} <NameDiv @transferUser=

jmc使用说明

匿名 (未验证) 提交于 2019-12-03 00:38:01
实验JDK版本:jdk1.8.0_73 JMC:5.5(最新已经6.0了支持jdk9) JMC:Java Mission Control 伴随着5月份oracle的一份开源声明―- JMC Open Sourced JMC又一次备受关注。 JMC是源自JRockit JVM的一套监控和管理工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。 使用 JMC可以监视和管理 Java 应用程序,不会导致相关工具类的大幅度性能开销,它使用为 Java 虚拟机 (JVM) 的普通自适应动态优化收集的数据。 主要部分 JVM浏览器:显示了正在运行的 Java 应用程序及其 JVM,每个JVM实例称为一个JVM连接。JVM浏览器允许用户列出并连接到本地和远程运行的 Java 应用。它能够使用 Java 发现协议(JDP)自动地发现本地和远程运行的 Java 进程。 JMX 控制台:能够通过 JMX 接口管理并监控 JDK ,实时收集并显示其特征。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息,并可通过托管 Bean (MBean) 更改一些运行时属性。还可以创建在特定事件上触发的规则 (例如,如果应用程序的 CPU 占用率达到了 90%,则发送电子邮件)。 JFR