fn

JS-高频算法题

白昼怎懂夜的黑 提交于 2019-12-01 07:22:55
发布订阅模式:   否有中间的调度中心。 观察者模式把订阅者维护在发布者这里,需要发布消息时直接发消息给订阅者。在观察者模式中,发布者本身是知道订阅者存在的。 而发布/订阅模式中,发布者并不维护订阅者,也不知道订阅者的存在,所以也不会直接通知订阅者,而是通知调度中心,由调度中心通知订阅者。 class EventBus { constructor () { this.events = Object.create(null) } on (event, fn) { this.events.event = this.events.event || [] this.events.event.push(fn) } off (event, fn) { const index = (this.events.event || []).indexOf(fn) if (index < -1) { return } else { this.events.event.splice(index, 1) } } fire (event) { this.events.event.forEach(fn => fn()) } } var bus = new EventBus() bus.on('onclick', function () { console.log('click1 fire') }) bus.on(

一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483

狂风中的少年 提交于 2019-12-01 06:09:22
思想启发来自, 罗博士 的 根据递推公式构造系数矩阵用于快速幂 对于矩阵乘法和矩阵快速幂就不多重复了,网上很多博客都有讲解。主要来学习一下系数矩阵的构造 一开始,最一般的矩阵快速幂,要斐波那契数列Fn=F n-1 +F n-2 的第n项,想必都知道可以构造矩阵来转移 其中,前面那个矩阵就叫做系数矩阵(我比较喜欢叫转移矩阵) POJ3070 Fibonacci 可以试一试 1 #include<cstdio> 2 typedef long long ll; 3 const ll md=10000; 4 struct Mar{ 5 int r,c; 6 ll a[10][10]; 7 Mar(){} 8 Mar(int r,int c):r(r),c(c){ 9 for(int i=0;i<r;i++) 10 for(int j=0;j<c;j++) a[i][j]=0; 11 } 12 }A,T; 13 Mar mul(Mar A,Mar B){ 14 Mar ans(A.r,B.c); 15 for(int i=0;i<A.r;i++) 16 for(int j=0;j<B.c;j++) 17 for(int k=0;k<A.c;k++){ 18 ans.a[i][j]+=A.a[i][k]*B.a[k][j]%md; 19 if(ans.a[i][j]>=md) ans.a[i]

jQuery中 $.fn的用法

淺唱寂寞╮ 提交于 2019-12-01 06:04:48
jquery $.fn $.fx是什么意思 $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效。 如扩展$.fn.abc(), 即$.fn.abc()是对jquery扩展了一个abc方法,那么后面你的每一个jquery实例都可以引用这个方法了. 那么你可以这样子:$("#div").abc(); 通常使用extend方法扩展,详细请看API. jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(object); jQuery.extend(object); jQuery.extend(object);为扩展jQuery类本身.为类添加新的方法。 jQuery.fn.extend(object);给jQuery对象添加方法。 fn是什么东西呢。查看jQuery代码,就不难发现。 jQuery.fn = jQuery.prototype ={    init: function( selector, context ){//....     //...... }; 原来 jQuery.fn =jQuery.prototype.对prototype肯定不会陌生啦。 虽然javascript 没有明确的类的概念,但是用类来理解它,会更方便。 jQuery便是一个封装得非常好的类,比如我们用语句 $("#btn1")

JS-观察者模式

你。 提交于 2019-11-30 13:20:59
如果说,你只能掌握一种设计模式,那必须毫不犹豫的选择观察者模式,也叫发布订阅模式。 es6中promise的实现、vue中双向绑定原理的实现、Node.js中的 EventEmitter事件监听器等等都应用到了观察者模式,可见其应用之广泛 那接下来具体看一下观察者模式到底是什么 介绍 一种对象间一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都将得到状态改变的通知。 来个通俗一点的解释吧。小明最近在找工作,好不容易约到一家心仪的公司A面试,结果到了以后发现职位不匹配。但是小明不甘心,就告诉HR什么时候有匹配的岗位就告诉我,天荒地老我都等,HR说那也行,你关注一下我们公司的公众号,有消息我就发在那个上了。同时又有小红、小李都来面试,情况也和小明一样。HR心想随便你们多少人,我到时候在公众号上发一下消息就行了,到时候你们爱来不来。那当然了小明也不管你HR到底是谁,只要你有岗位发消息告诉我就行。 在上述栗子中,HR就是发布者,求职者就是订阅者 优点 对象之间解耦,发布者只管发布一条消息出去,它不关心这条消息如何被订阅者使用,同时,订阅者只监听发布者的事件名,只要发布者的事件名不变,它不管发布者如何改变 缺点 1.创建订阅者本身会消耗一定时间和内存。当订阅一个消息后,也许此消息最后都未发生,但这个订阅者会始终存在于内存中 2.多个发布者和订阅者嵌套一起的时候

PyTorch学习笔记

瘦欲@ 提交于 2019-11-30 12:49:33
【PyTorch深度学习60分钟快速入门 】Part1:PyTorch是什么?来源:https://www.cnblogs.com/leejack/p/8370634.html import torch import numpy as np #用于替代NumPy(torch对象叫张量,带前缀和括号,并用逗号分隔,numpy对象叫数组,用空格分隔),#torch可以使用GPU的计算力,一种深度学习研究平台,可以提供最大的灵活性和速度 x = torch.Tensor(5, 3) #创建一个5x3且未初始化的矩阵,如果将首字母大写的Tensor改成小写tensor,会报错 #print(x) x = torch.rand(5, 3)#创建一个随机初始化的矩阵rand表示0~1之间均匀分布的随机数 #print(x) #print(x.size()) y = torch.rand(5, 3) #print(x + y) #print(torch.add(x, y)) result = torch.Tensor(5, 3) #print(result) torch.add(x, y, out=result) #print(result) y.add_(x) #原地替换,任何原地改变张量值的操作后缀都是固定的_,例如:x.copy_(y)、x.t_(),都将原地改变x的值。 #print(y

美丽的闭包,在js中实现函数重载

自闭症网瘾萝莉.ら 提交于 2019-11-30 12:21:02
引言 最近在js的学习中,看到了函数重载的问题,一开始,只看到了实现代码,看着代码冥思苦想了半个小时,总算是理清了其实现的原理,也为其实现的巧妙感到赞叹,也是在自己搞懂原理之后,去网络上搜索了下,才知道,这个实现方法是jQuery作者John Resig在《JavaScript忍者秘籍》中对函数重载的实现,设计十分的巧妙,写下此文,给大家做一个分享 什么是函数的重载 重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 先来看看效果 function addMethod (obj, name, fn) { var old = obj[name]; obj[name] = function () { if (fn.length === arguments.length) { return fn.apply(this, arguments) } else if (typeof old === 'function' ) { return old.apply(this, arguments) } } } var person = {userName: 'bear鲍的小小熊' } addMethod(person, 'show' , function () { console.log(this

彻底理解js中this的指向

和自甴很熟 提交于 2019-11-30 11:59:07
首先必须要说的是, this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁 , 实际上this的最终指向的是那个调用它的对象( 这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉 ) ,那么接下来我会深入的探讨这个问题。 例子1: function a(){ var user = "aaa"; console.log(this.user); //undefined console.log(this); //Window } a(); 按照我们上面说的this最终指向的是调用它的对象,这里的函数a实际是被Window对象所点出来的,下面的代码就可以证明。 function a(){ var user = "aaa"; console.log(this.user); //undefined console.log(this);  //Window } window.a(); 和上面代码一样吧,其实alert也是window的一个属性,也是window点出来的。 例子2: var o = { user:"aaa", fn:function(){ console.log(this.user); //aaa } }

透彻掌握Promise的使用

瘦欲@ 提交于 2019-11-30 10:16:22
透彻掌握Promise的使用 Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻。这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现。 在实际的使用当中,有非常多的应用场景我们不能立即知道应该如何继续往下执行。最重要也是最主要的一个场景就是ajax请求。通俗来说,由于网速的不同,可能你得到返回值的时间也是不同的,这个时候我们就需要等待,结果出来了之后才知道怎么样继续下去。 // 简单的ajax原生实现 var url = 'https://hq.tigerbrokers.com/fundamental/finance_calendar/getType/2017-02-26/2017-06-10'; var result; var XHR = new XMLHttpRequest(); XHR.open('GET', url, true); XHR.send(); XHR.onreadystatechange = function() { if (XHR.readyState == 4 && XHR.status == 200) { result = XHR.response; console.log(result); } } 在ajax的原生实现中,利用了onreadystatechange事件,当该事件触发并且符合一定条件时

利用闭包实现简易防抖(转)

徘徊边缘 提交于 2019-11-30 10:12:17
// fn 是需要执行的函数 // wait 是时间间隔 const throttle = (fn, wait = 50) => { // 上一次执行 fn 的时间 let previous = 0 // 将 throttle 处理结果当作函数返回 return function(...args) { // 获取当前时间,转换成时间戳,单位毫秒 let now = +new Date() // 将当前时间和上一次执行函数的时间进行对比 // 大于等待时间就把 previous 设置为当前时间并执行函数 fn if (now - previous > wait) { previous = now fn.apply(this, args) } } } // DEMO // 执行 throttle 函数返回新函数 const betterFn = throttle(() => console.log('fn 函数执行了'), 1000) // 每 10 毫秒执行一次 betterFn 函数,但是只有时间差大于 1000 时才会执行 fn setInterval(betterFn, 10)   转自好牛逼的博客: https://www.muyiy.cn/blog/7/7.1.html#原理及实现 来源: https://www.cnblogs.com/wilsunson/p

BOM和DOM

自古美人都是妖i 提交于 2019-11-30 06:55:12
BOM和DOM   BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”。   DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素。 1.BOM 1.window对象 所有浏览器都支持 window 对象。它表示浏览器窗口。   **如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象(了解)。*   **没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象(了解)。*   所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。   全局变量是 window 对象的属性。全局函数是 window 对象的方法。   接下来要讲的HTML DOM 的 document 也是 window 对象的属性之一。   一些常用的Window方法:(在浏览器调试器的console里面输入下面这些属性或者方法,就能看到对应的效果) window.innerHeight - 浏览器窗口的内部高度 window.innerWidth - 浏览器窗口的内部宽度 window.open() - 打开新窗口 window