上下文

深入理解 js this 绑定 ( 无需死记硬背,尾部有总结和面试题解析 )

不打扰是莪最后的温柔 提交于 2020-01-18 16:30:05
js 的 this 绑定问题,让多数新手懵逼,部分老手觉得恶心,这是因为this的绑定 ‘难以捉摸’,出错的时候还往往不知道为什么,相当反逻辑。 让我们考虑下面代码: var people = { name : "海洋饼干", getName : function(){ console.log(this.name); } }; window.onload = function(){ xxx.onclick = people.getName; }; 在平时搬砖时比较常见的this绑定问题,大家可能也写给或者遇到过,当xxx.onclick触发时,输出什么呢 ? 为了方便测试,我将代码简化: var people = { Name: "海洋饼干", getName : function(){ console.log(this.Name); } }; var bar = people.getName; bar(); // undefined 通过这个小例子带大家感受一下 this 恶心的地方,我最开始遇到这个问题的时候也是一脸懵逼,因为代码里的 this 在创建时指向非常明显啊,指向自己 people 对象,但是实际上指向 window 对象,这就是我马上要和大家说的 this 绑定规则 。 1 . this 什么是 this ?在讨论 this 绑定前,我们得先搞清楚this代表什么。

原创:语义相似度(理论篇)

落爺英雄遲暮 提交于 2020-01-18 14:50:51
  如果本文观点有不对的地方,欢迎指正! author:佟学强  开场白:对于事物的理解,一般分3个层次:①看山是山,看水是水②看山不是山,看水不是水③看山是山,看水是水。对AI和nlp的理解,同样会有这三个层次。比如,刚毕业的硕士或者毕业1~2年的,会热衷于研究GAN,seq2seq,甚至包括nlp刚起步的一些公司。这类群体对nlp的理解处于第一层次,后面还有很多雷区要踩,要付出一定的试错代价,成长的代价。等到有一定的积累了,对nlp的理解有一定的理解功底了,会逐渐修正研究路线和方向,这个时候比第一阶段有更多的疑惑,因为随着研究的深入,发现nlp和图像机制存在很大的不同,不能照搬,认知智能好像不是那么容易,由感知智能到认知智能的跨越,是这一阶段的一大进步,这是第二个层次,各个派别有争论,看山不是山,看水不是水。最高境界,返璞归真,拥有行业20年及以上的研究人员,对nlp看的比较透,目前的Ai基本上陷入了统计建模,概率的漩涡之中,还不是真正的智能。仅仅从数据中挖掘线性关系还远远不够,应该让机器具有认知能力,挖掘因果关系。致力于推进nlp认知智能的进步,加大力度研究知识图谱,包括知识图谱的向量化,与深度学习的融合,让神经网络学习规则等等。可以这样说,目前从感知智能到认知智能的跨越,才刚刚开始,知识工程的复苏势不可挡。本人接触过许多刚入门的人,基本上对seq2seq和GAN比较狂热

一文让你明白CPU上下文切换

我与影子孤独终老i 提交于 2020-01-18 04:29:39
转载自: https://segmentfault.com/a/1190000017457234 我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。 而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器 什么是 CPU 上下文 CPU 寄存器和程序计数器就是 CPU 上下文,因为它们都是 CPU 在运行任何任务前,必须的依赖环境。 CPU 寄存器是 CPU 内置的容量小、但速度极快的内存。 程序计数器则是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。 什么是 CPU 上下文切换 就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。 而这些保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来。这样就能保证任务原来的状态不受影响,让任务看起来还是连续运行。 CPU 上下文切换的类型 根据任务的不同,可以分为以下三种类型 进程上下文切换 线程上下文切换 中断上下文切换 进程上下文切换

spin_lock 相关 -- 原子上下文

纵然是瞬间 提交于 2020-01-18 02:33:34
在前面文章描述spin_lock的时候, 要求spin_lock/unlock中间的代码不能有主动放弃cpu, 进入睡眠的函数。 (如sleep, schedule()等) 下面提一个问题? Q: 那在spin_lock/unlock中间代码段执行时, 时间片到了怎么办? A: spin_lock和spin_unlock中间代码是原子上下文。 故时间片轮转到了, 也不会调度。。。 类似中断上下文, 软中断/task_let内(还是在中断上下文), 以及spin_lock保护的区域内, 都是原子上下文, 无法睡眠。 因为如果睡眠了.... 中断上下文就回不来了.... 对应的, 进程上下文可以睡眠, 调度, 故有些中断下半部使用工作队列, irq_thread等机制, 使下半部存在于进程上下文, 可以睡眠。 贴一个别人的描述: 内核的一个基本原则就是:在中断或者说原子上下文中,内核不能访问用户空间,而且内核是不能 睡眠的。也就是说在这种情况下,内核是不能调用有可能引起睡眠的任何函数。一般来讲原子上下文指的是在中断或软中断中,以及在持有自旋锁的时候。内核提供 了四个宏来判断是否处于这几种情况里: #define in_irq() (hardirq_count()) //在处理硬中断中 #define in_softirq() (softirq_count()) //在处理软中断中

js 作用域和作用域链

喜夏-厌秋 提交于 2020-01-17 23:12:16
 作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。 JavaScript作用域   任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。   1. 全局作用域(Global Scope)   在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:   (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如: 1 2 3 4 5 6 7 8 9 10 11 12 var authorName= "山边小溪" ; function doSomething(){ var blogName= "梦想天空" ; function innerSay(){ alert(blogName); } innerSay(); } alert(authorName); //山边小溪 alert(blogName); //脚本错误 doSomething(); //梦想天空 innerSay() //脚本错误   (2

JS中的作用域和作用域链

烈酒焚心 提交于 2020-01-17 23:06:27
本文原链接: https://cloud.tencent.com/developer/article/1403589 前言 作用域(Scope) 1. 什么是作用域 2. 全局作用域和函数作用域 3. 块级作用域 作用域链 1.什么是自由变量 2. 什么是作用域链 3. 关于自由变量的取值 作用域与执行上下文 解释阶段: 执行阶段: 参考文章和书籍 关于Fundebug 前言 JavaScript 中有一个被称为作用域(Scope)的特性。虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获! 作用域(Scope) 1. 什么是作用域 作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。可能这两句话并不好理解,我们先来看个例子: function outFun2() { var inVariable = "内层变量2"; } outFun2();//要先执行这个函数,否则根本不知道里面是啥 console.log(inVariable); // Uncaught ReferenceError: inVariable is not defined 从上面的例子可以体会到作用域的概念,变量 inVariable 在全局作用域没有声明

理解 JavaScript 作用域和作用域链

房东的猫 提交于 2020-01-17 23:02:35
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。 JavaScript作用域 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。   1. 全局作用域(Global Scope)   在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:   (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如: var authorName="山边小溪"; function doSomething(){ var blogName="梦想天空"; function innerSay(){ alert(blogName); } innerSay(); } alert(authorName); //山边小溪 alert(blogName); //脚本错误 doSomething(); //梦想天空 innerSay() //脚本错误 (2)所有末定义直接赋值的变量自动声明为拥有全局作用域,例如: function

理解 JavaScript 作用域和作用域链

a 夏天 提交于 2020-01-17 23:01:48
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。 JavaScript作用域   任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。   1. 全局作用域(Global Scope)   在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:   (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如: 1 2 3 4 5 6 7 8 9 10 11 12 var authorName= "山边小溪" ; function doSomething(){ var blogName= "梦想天空" ; function innerSay(){ alert(blogName); } innerSay(); } alert(authorName); //山边小溪 alert(blogName); //脚本错误 doSomething(); //梦想天空 innerSay() //脚本错误   (2

论文学习4-An Attentive Neural Architecture for Fine-grained Entity Type Classification

落爺英雄遲暮 提交于 2020-01-17 18:07:16
文章目录 1.introduction 2.相关工作 3. 本文model 3.1general model 3.2 mention represent 3.3 context model 3.3.1 averaging encoder 3.3.2 LSTM encoder 3.3.3 Attention Encoder 4. 实验 在这项工作中,我们提出了一种新的基于注意的神经网络模型来完成细粒度实体类型分类的任务。我们的模型在现有的FIGER数据集上获得了74.94%的微F1-分数,相对提高了2.59%。我们还研究了我们的模型的注意机制的行为,并观察到它可以学习表明实体的细粒度类别成员关系的上下文语言表达式 1.introduction 递归地组合实体上下文的表示 本文贡献 细粒度实体类型分类的第一个递归的模型,该模型 学会递归地组合每个mention和上下文的表示 ,并在数据集上取得最先进的性能上。 通过将 注意机制 合并到我们的模型中,我们不仅可以获得更好的性能,还可以观察到模型学习了表示实体的细粒度类别成员关系的上下文语言表达式 2.相关工作 据我们所知, Lee等人(2006)是第一个解决细粒度实体类型分类任务的人。他们定义了147个细粒度实体类型,并在一个手动注释的韩国数据集上评估了一个基于条件随机字段的模型。 Sekine(2008

Django模板继承下的动态数据传递—上下文处理器

守給你的承諾、 提交于 2020-01-16 10:31:47
模板继承可以减少页面内容的重复定义,实现页面内容的重用。我的个人博客右侧的导航栏都是继承base页面从而让代码得到最大程度的复用。但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的。我们可以通过自定义上下文处理器来解决。 Django上下文处理器(Context Processor) 上下文处理器是接收HttpRequest为参数并返回dict形式的数据的函数。它的主要用途是将所有模板共享的公共数据添加到上下文中,从而不必在每个视图中重复定义。 在settings.py文件中内置了多个上下文处理器: TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { # 上下文处理器:context_processors 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors