不看不知道,一看吓一跳,已经整整一个月没有更新 underscore 源码解读系列文章了.前面我们已经完成了 Object ,Array,Collection 上的扩展方法的源码剖析,本文开始来解读 Function 上的扩展方法. 完整的 underscore 源码解读系列文章请移步 https://github.com/hanzichi/underscore-analysis,觉得还阔以的话,给个 star 鼓励下楼主呗 ^_^ bind 简介 Ok,今天要讲的正是 bind.关于 bind…
为什么用「void 0」代替「undefined」 undefined 并不是保留词(reserved word),它只是全局对象的一个属性,在低版本 IE 中能被重写. 事实上,undefined 在 ES5 中已经是全局对象的一个只读(read-only)属性了,它不能被重写.但是在局部作用域中,还是可以被重写的. void 运算符能对给定的表达式进行求值,然后返回 undefined MDN 常用类型判断以及一些有用的工具方法 _.isArray = nativeIsArray || fu…
优雅手撕bind函数 前言: 为什么面试官总爱让实现一个bind函数? 他想从bind中知道些什么? 一个小小的bind里面内有玄机? 今天来刨析一下实现一个bind要懂多少相关知识点,也方便我们将零碎的知识点串联起来. 看完有用的同学记得点个赞再走,您的鼓励-我莫大的动力 看完能学到什么 实现bind new原理 本文章的叙事步骤 bind函数作用 模拟bind的要点 实现思路 new函数特殊情况(this&父原型) -------------人工分割线------------- bind函数…
js里除了直接调用obj.func()之外,还提供了另外3种调用方式:apply.bind.call,都在function的原型里.这3种方法的异同在stackoverflow的这个答案里说的最清楚,下面只是自己的理解. 1. 异同 这3种方式的相同点是:改变了func调用的上下文,链接到新的对象上.这使得任何函数都可以被其他对象调用,即使这个对象没有定义该函数. 区别是:调用的方式不同. call: 最简单,立即调用,按顺序传参 apply:立即调用,按数组传参 bind: 延迟调用(返回一个…
docker 技术已经研究了一段时间, 基本的知识点和使用场景比较清楚了, 还有一些比较高阶的内容未曾尝试, 将来工作中如果能用到, 再深入研究吧. 这篇博文汇总了一些有用的文章链接. =======================书籍=======================Docker 从入门到精通 https://yeasy.gitbooks.io/docker_practice/content/introduction/why.html 这可能是最为详细的Docker入门吐血总结ht…
Data Volume Data Volume 本质上是 Docker Host 文件系统中的目录或文件,能够直接被 mount 到容器的文件系统中. Data Volume 有以下特点: 1.Data Volume 是目录或文件,而不是没有格式化的磁盘(块设备) 2.容器可以读写 volume 中的数据 3.volume 数据可以被永久的保存,即使使用它的容器已经销毁 下面几个场景: 1.Database 软件 vs Database 数据 2.Web 应用 vs 应用产生的日志 3.数据分析…
bind函数 bind 函数挂在 Function 的原型上 Function.prototype.bind 创建的函数都可以直接调用 bind,使用: function func(){ console.log(this) } func.bind(); // 用函数来调用 bind 的作用: bind() 方法调用后会创建一个新函数.当这个新函数被调用时,bind() 的第一个参数将作为新函数运行时的 this的值,之后的序列参数将会在传递的实参前传入作为新函数的参数.<MDN> bind 接…
一.前言    不知道大家还记不记得前几篇的文章:<面试官:能解释一下javascript中的this吗> 那今天这篇文章虽然是介绍javascript中bind.apply和call函数,但是多少也和this有点关联. 假如在前面那场面试末尾,面试官不依不饶继续问你javascript中的this,那看完本篇文章后一定还会有收获. (本篇文章不会站在this的角度去回答问题,而是重于解释bind.apply和call这三个函数的用法和使用场景) 二.正戏开始 面试官:能解释一下javascr…
目录 什么是AVL树 1. 什么是AVL树 2. 节点的实现 3. AVL树的调整 3.1 LL旋转 3.2 RR旋转 3.3 RL旋转 3.4 LR旋转 什么是AVL树 二叉查找树的一个局限性就是有可能退化成一个链表,这种情况下二叉查找树的效率就会急剧下降变成0(n).而AVL树可以很好地解决BST的这种困境.本篇博客会介绍AVL树的基本特点和相关操作. 文章参考自博客:二叉树-你可能需要知道的知识点 1. 什么是AVL树 任何两个子树的高度差最大是1,这样的二叉树叫做AVL树. 先来确定几个…
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来源"的思维模式,转变为真正的多重策略,来更快地识别可行的那些洞察.你怎样做呢?工具!你必须正确的选取它们,并确保向前一步而不是后退三步. 在本章,您将了解到如何进行深入的内省以更好地了解您的需求,如何从分析供应商那里获得真相,如何对比分析工具,以及如何运行导航和谈成合作. 章节内容 一.  预先估测…
Laravel教程 八:queryScope 和 setAttribute 此文章为原创文章,未经同意,禁止转载. Laravel Eloquent Database 直接就是按照上一节所说的那样,我们来说说queryScope和setAttribute在laravel的用法. 关于应用场景 这里我首先是想向大家简单说说这两个知识点得应用场景是什么,我们在开发的时候,总是希望有一种偷懒的方式,所以考虑以下这两个场景: 数据在存入数据库的时候需要进行预先处理,比如考虑一个简单地例子:我们在保存用户…
课程目标 完成本课程的学习后,您应该能够: •变量绑定的目的 •父子游标 •游标共享 •绑定窥探 •SQL语句处理流程 •硬解析.软解析.软软解析 •变量绑定的应用场景   1.游标 游标可以理解为SQL语句的一个句柄,也叫SQL语句的指针,游标指向一条SQL语句,oracle会话要执行一条SQL时,首先要打开游标. 1.1父子游标: 同样的SQL,因某些其它的差异,会产生另外的cursor.解析操作的结果是将一个父游标与子游标保存到库缓存中.很显然,将它们保存到共享内存的目的是为了重用它们,从…
了解了PHP7的一些特性,搭建PHP7源码编译环境,并运行官网这些新特性的代码. 在64位平台支持64位integer 在64位平台支持64位integer,长度为2^64-1 字符串. 更详细查看 抽象语法树 抽象语法树是语法分析之后产物,忽略了语法细节,是解释前端和后端的中间媒介.新增抽象语法树,解耦语法分析和编译,简化开发维护,并为以后新增一些特性,如添加抽象语法树编译hook,深入到语言级别实现功能. 更详细查看 闭包this绑定 新增Closure::call,优化Closure::b…
Cocos2d-x 3.1.1 Lua实例-AccelerometerTest(重力加速计) 本篇博客介绍Cocos2d-x的第一个实例--重力加速计測试.效果图(注:这里无法模拟重力感应): --[[ AccelerometerTest.lua 重力加速器样例 ]] --返回一个层 local function AccelerometerMainLayer() -- 返回标题 local function title() return "AccelerometerTest" end…
浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完文档许多遍后,写起代码还是不免感到有许多困惑,因为我们不知道其中一些知识点的运用场景.这就是我写这篇文章的目的,探讨不同场景下组件间的数据“交流”的Vue实现   父子组件间的数据交流 父子组件间的数据交流可分为两种: 1.父组件传递数据给子组件 2.子组件传递数据给父组件   父组件传递数据给子组…
Runtime应用 1.Runtime 交换方法 应用场景:当第三方框架或者系统原生方法功能不能满足我们的时候,我们可以在保持系统原有功能的基础上,添加额外的功能. 需求:加载一张图片直接用系统的[UIImage imageNamed:@""]:是无法知道到底有没有加载成功.给系统的imageNamed添加额外功能,(是否加载图片成功,以及加载未完成的时候,用模糊的该照片代替) 方法一:继承系统的类,重写方法:(每次使用都需要导入) 方法二:使用runtime,交换方法 实现步骤: (…
1.概述 本课程的视频教程地址:<Hadoop 回顾> 好的,下面就开始本篇教程的内容分享,本篇教程我为大家介绍我们要做一个什么样的Hadoop项目,并且对Hadoop项目的基本特点和其中的难点做有针对性的剖析,完成项目环境的基本配置,以及项目工程和Hadoop插件的相关准备等工作. 本课程主要包含以下课时,其内容如下图所示: 本节为大家分享的是第一节——<Hadoop 回顾>,下面开始今天的分享内容. 2.内容 从这节开始,我们将进入到Hadoop项目的实战学习,本节课程为大家介…
1.  根据方法传入的参数不同执行不同的 SQL 命令.称为动态 SQL, MyBatis 中动态 SQL 就是在 mapper.xml 中添加逻辑判断等. 2. <if>标签 <select id="selByAccinAccout" resultType="log"> select * from log where 1=1 <!-- OGNL 表达式,直接写 key 或对象的属性.不需要添加任 何特字符号 --> <if…
来源:aitangyong的专栏 JQuery中的bind()和unbind(),提供了事件的绑定和取消机制,既可以绑定html默认支持的事件,也能够绑定自定义的事件.JQuery支持自定义事件,这显然给编程带来了极大的灵活性.下面就一起学习下,jquery事件处理的一些特性. 1.JQuery中事件可以重复绑定,不会覆盖. 1 2 3 4 5 6 $("#button1").bind("click",function(){     alert("func…
浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完文档许多遍后,写起代码还是不免感到有许多困惑,因为我们不知道其中一些知识点的运用场景.这就是我写这篇文章的目的,探讨不同场景下组件间的数据“交流”的Vue实现   父子组件间的数据交流 父子组件间的数据交流可分为两种: 1.父组件传递数据给子组件 2.子组件传递数据给父组件 父组件传递数据给子组件—…
分类:Unity.C#.VS2015 创建日期:2016-04-02 一.简介 预制体(Prefab,也叫预设)是"存储在工程视图(Project View)中"的一种特殊的资源,是一种可重复使用的游戏对象(GameObject)的容器. 如果在Project中有多个预制体(Prefab),为了容易查找,可将这些预制体全部保存到Project视图中Assets文件夹的Prefabs子文件夹下. Prefabs子文件夹下的的所有预制体都可以放入到多个场景中,而且即使在同一个场景中仍然可以…
距离上一篇更新katalon学习部分已有两个月的时间 ,我的博文的访问量为400多,(*^__^*) 嘻嘻…… 说明还是很多同学在学习这个小tools的.所以再记录下 近两个月来对katalon的体验总结. 对于我这种第一次写测试脚本的人来说 直观的感觉是比较容易上手,界面清新简洁,操作简单,完全适用于没有代码基础的同学们. Katalon目前的版本是5.4.1 这次的更新跟之前的工作台上做了些调整,具体可参照官方网站的完整说明-> 5.4.1 完全适用于各种开发环境,,mac or windo…
Katalon---一款好用的selenium自动化测试插件 selenium框架是目前使用较广泛的开源自动化框架,一款好的.基于界面的录制工具对于初学者来说可以快速入门:对于老手来说可以提高开发自动化脚本的效率.我们知道Selenium IDE是一款使用较多的脚本录制工具,且只支持Firefox老版本.今天给大家介绍一款Selenium IDE的替代者,Katalon Automation Recorde 如下为安装使用方法: 1.安装去谷歌应用商店,或者火狐插件均可下载 2.使用方法 2.1…
主要知识点 多shard场景下relevence score可能不准确的原因 多shard场景下relevence score可能不准确解决方式     一.多shard场景下relevance score不准确的原因 如果你个index有多个shard的话,可能搜索结果的排序会不准确.主要原因是TF/IDF的算法,es在计算IDF值时,默认只会计算当前shard的IDF值,而不会把整个index作为基数来计算,这样做的目的当前是为了性能,这也是多shard场景下relevance score不…
vue自定义指令的基础使用这里就不阐述,看官网文档:https://cn.vuejs.org/v2/guide/custom-directive.html 本文用一个实例描述自定义指令的要点,自定义一个数据上报的指令. 你可能会这样写demo: // 自定义v-datacenter命令埋点,点击节点发送埋点数据 // demo : <div v-datacenter="{ei: 'learning_center_click'}">进入学习中心</div> con…
[摘要] Volcano是基于Kubernetes构建的一个通用批量计算系统,它弥补了Kubernetes在“高性能应用”方面的不足,支持TensorFlow.Spark.MindSpore等多个领域框架,帮助用户通过Kubernetes构建统一的容器平台. Kubernetes 是当前非常流行的容器编排框架,在其发展早期重点以微服务类应用为主.随着Kuberentes的用户越来越多,更多的用户希望在Kubernetes上运行BigData和AI框架,如Spark.TensorFlow等以构建统…
这篇文章对优秀的开源项目Rich的源码进行解析,OMG,盘他.为什么建议阅读源码,有两个原因,第一,单纯学语言很难在实践中灵活应用,通过阅读源码可以看到每个知识点的运用场景,印象会更深,以后写代码的时候就能应用起来:第二,通过阅读优秀的开源代码,可以学习比人的代码规范.设计思路:第三,参与到开源社区,获得更广阔的的发展前景:第四,面试加分项.所以,有时间的话还是建议大家多读读优秀开源项目的源码. 下面进入今天的主题,这个开源项目的名字叫Rich,地址:https://github.com/wil…
目录 一.项目文档和代码 二.Alpha版本测试报告 2.1 功能测试 2.1.1 功能列表 2.1.2 场景测试 2.1.3 测试结果 2.1.4 bug清单 2.2 兼容性测试 2.3 性能测试 2.3.1 测试目的 2.3.2 测试环境 2.3.3 测试工具 2.3.4 测试方法和过程 2.3.5 测试结果 2.3.6 结果分析和报告 2.4 安全测试 2.4.1 测试目的 2.4.2 测试工具 2.4.3 测试结果 2.5 出口条件 三.Alpha版本发布说明 3.1 发布地址 3.2…
大家好,我是肖邦. 这篇文章是写给 Linux 初学者的,我会分享一些作为初学者应该知道的一些东西,这些内容都是本人从事 Linux 开发工作多年的心得体会,相信会对初学者有所帮助.如果你是 Linux 老鸟,那可能就不需要再往下看了 linux 为啥要学Linux 作为从事 IT 工作的同学,对 Linux 系统一定不陌生.如今我们在各种领域都能看得到它的身影,比如,手机.服务器.嵌入式.电信设备.大型计算机,以及各种电子类产品都离不开 Linux,它已经渗透到互联网世界的方方面面了. 包括那…
之前文章说过,如果使用 RabbitMQ,尽可能使用框架,而不要去使用 RabbitMQ 提供的 Java 版客户端. 细说起来,其实还是因为 RabbitMQ 客户端的使用有很多的注意事项,稍微不注意,就容易翻车. 我是 2013 年就开始用起了 RabbitMQ,一路使用,一路和它一起成长.当时,由于用的早,市面上也没有特别成熟的 RabbitMQ 客户端框架.所以,不得已之下,只好自己做了一套客户端. 在这其中,正好也有了许多独特的经验也和大家分享一下,以免后来者陷入"后人哀之而不鉴之,亦…