bind

搞定前端高频手写题

与世无争的帅哥 提交于 2020-12-26 04:54:24
目前互联网行业目前正在处于内卷状态,各个大厂不断提高招人门槛,前端工程师找工作也越发艰难,为了助力各位老铁能够在面试过程中脱颖而出,我结合自己的面试经验,准备了这三十六道面试过程中的手撕算法题,与各位共享。 一、冒泡排序 冒泡排序的思路:遍历数组,然后将最大数沉到最底部; 时间复杂度:O(N^2); 空间复杂度:O(1) function BubbleSort ( arr ) { if (arr == null || arr.length <= 0 ){ return []; } var len = arr.length; for ( var end = len - 1 ; end > 0 ; end--){ for ( var i = 0 ; i < end; i++) { if (arr[i] > arr[i + 1 ]){ swap(arr, i, i + 1 ); } } } return arr; } function swap ( arr, i, j ) { // var temp = arr[i]; // arr[i] = arr[j]; // arr[j] = temp; //交换也可以用异或运算符 arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j]; } 二

Guice依赖注入(Scope)

半城伤御伤魂 提交于 2020-12-25 17:15:37
本教程主要详细讲解Guice依赖注入中的一些高级选项,他们分别是 Scope , Eagerly Loading Bindings , Stage , Optional Injection 。我们将一一对他们进行讲解。 基础环境 技术 版本 Java 1.8+ Guice 4.2.3 初始化项目 初始化项目 mvn archetype:generate -DgroupId=com.edurt.sli.guice -DartifactId=guice-binder-scope -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0.0 -DinteractiveMode= false 修改pom.xml增加Guice依赖 <?xml version="1.0" encoding="UTF-8"?> < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >

Javascript面试知识点

谁说我不能喝 提交于 2020-12-25 02:40:43
注:链接大部分是笔记的参考文章,想详细了解的可以点进去看。 *Javascript (一):封装 http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html function Cat(name,color){ this.name = name; this.color = color; } Cat.prototype.type = "猫科动物"; Cat.prototype.eat = function(){alert("吃鱼")}; let cat1 = new Cat("小黄","black"); let cat2 = new Cat("锋锋","white"); cat1.eat(); *Javascript(二):构造函数的继承 //动物类 function Animal(){ this.species = "动物"; } //猫类 function Cat(name,color){ this.name = name; this.color = color; } //如何让猫继承动物呢? 一、 构造函数绑定 使用call或apply方法 function Cat(name,color){ Animal.apply(this,arguments); this.name =

Javascript的噩梦之 this

夙愿已清 提交于 2020-12-24 15:10:17
看过我以往文章的朋友知道我是个人推崇JavaScript 函数而尽量避免使用class FreewheelLee:应该在JavaScript中使用Class吗? zhuanlan.zhihu.com 但是,人在江湖飘哪能不被社会毒打。当你所在的团队的代码是以class为核心的时候,你还是不得不去熟悉、了解甚至精通 JavaScript this / class / prototype。 this 是面向对象编程中非常常见的一个概念,本文将由浅入深,探讨JavaScript this 的相关知识。 函数 中 的 this 和 bind 当我们用字面量的形式创建一个JavaScript object const cat = { sound: '喵', talk(){ console.log(this.sound); // this 指向当前对象 }}cat.talk(); // 输出: 喵 这个行为大家应该都不觉得奇怪,尤其是从Java过来的朋友。 场景一: JavaScript最特别的特性之一是函数是一等公民,可以被当做变量、参数返回值等。于是我们尝试把 cat.talk 拿出来玩玩 const catTalkFunc = cat.talk; // 将函数赋值给变量 catTalkFunc(); // 输出:undefined 原因: 执行 cat.talk() 时,talk

Mybatis 标签合集

心不动则不痛 提交于 2020-12-22 22:23:39
1、定义sql语句 增:<insert> 删:<delete> 改:<update> 查:<select> 其中select最复杂。共有id、parameterType属性,此外select还有resultType、ResultMap 2、sql标签 定义通用的sql语句,以便sql引入:<sql> 引入<sql>:<include> 3、resultMap中的标签 实现列与实体属性的映射:<resultMap> 多对多:<collection> 一对一:<association> 4、动态sql标签 单条件:<if> 多条件:<choose> <when> <otherwise> 用来处理sql连接:<trim> 处理where条件:<where> 更新语句:<set> 循环语句,在in里面使用:<foreach> 定义上下文变量:<bind> 来源: oschina 链接: https://my.oschina.net/u/4312211/blog/4821429

Angular中ui-select的使用

99封情书 提交于 2020-12-22 07:25:27
Angular中ui-select的使用 最近工作一直很忙,没有时间整理知识,前几天项目中需要用到angular-ui-select,实现下拉框快速过滤效果,今天有时间研究了一下,终于搞明白了。 一、准备工作 1.安装依赖包 (1)Angular --- V1.4.9 (2)Angular-sanitize --- V1.2.28 (3)Angular-ui-select --- V0.12.1 (4)Bootstrap --- V3.3.6 如果有需要再引入jQuery 注意: Angular-sanitize所依赖的Angular最低版本,Angular-ui-select所依赖的Angular和Angular-sanitize最低版本,只有依赖的版本符合要求,才能实现功能,否则会报错。 如果项目中用到的Angular版本比较低时,请安装低版本的Angular-sanitize和Angular-ui-select,这样,避免低版本不支持的情况。 2.安装方法: 使用npm进行安装 npm install Angular-sanitize@1.2.28 --save -dev @+版本号 表示安装指定版本的包文件,如果不加版本号,默认安装最新的版本。 如: npm install Angular-sanitize --save -dev 如果对npm不了解的话,可以参考

ubuntu16.04下安装mysql详细步骤

孤者浪人 提交于 2020-12-21 20:25:02
1、如果要搭建服务器先去购买一个云主机,比如阿里云、京东云、新网等等都有卖。这里推荐使用京东云服务器,因为最近在搞活动。一元可体验两个月(可能现在活动已经过了,但在京东云里有免费领一个月的,学生机也有88元一年)。 具体如何购买和简单配置服务器(静态网页)请看郭神公众号,手机扫描或者点击进去 第二步:在服务器里安装mysql(先弄完郭神里的步骤再看这里) 通过郭神那里的简单介绍,你最少能成功搭建出一个静态页的显示。这里我只要接着记录一下如何在我们的云主机里安装mysql。因为一个服务器如果没有mysql,我感觉是没用的。不扯了,继续往看。。。 来、我们打开Xshell,通过如入命令安装mysql 依次输入这三条命令; sudo apt-get install mysql-server sudo apt install mysql-client sudo apt install libmysqlclient-dev 弄完一条再弄一条。如下所示:如入命令后再输入Y 然后回车就自动安装 第二条和第三条类似这样输入看提示进行安装。在安装过程需要设置数据库密码(在键盘输入数字时不要在右边的1234567890上按数字,那里的0代表ins,要在键盘上面按1234567890,这是我家小辉经历过的) 输入如下命令进行检验是否安装mysql成功。 sudo netstat -tap | grep

golang 网络框架之 gin

徘徊边缘 提交于 2020-12-19 16:52:26
golang 原生 http 库已经可以很方便地实现一个 http server 了,但对于复杂的 web 服务来说,路由解析,请求参数解析,对象返回等等,原生 api 就显得有些不太够用了,而 gin 是一个功能完备,性能很高的 web 网络框架,特别适合 web api 的开发 hello world package main import "github.com/gin-gonic/gin" func main() { r := gin.New() r.GET("/ping", func(c *gin.Context) { c.String(200, "hello world") }) r.Run() // listen and serve on 0.0.0.0:8080 } 如这个 hello world 程序所示 gin 所有的业务逻辑都在 func(c *gin.Context) 函数中实现,请求和返回都通过这个 gin.Context 传递 请求参数解析 gin 提供了丰富的请求参数获取方式 (c *Context) Query(key string) string // 获取 GET 参数 (c *Context) QueryArray(key string) []string // 获取 GET 参数数组 (c *Context) DefaultQuery(key

Webrtc使用javascript函数如何通过bind方法改变this指向?

只谈情不闲聊 提交于 2020-12-19 14:48:30
前段时间我们讲到我们正在开发的WebRTC项目,在WebRTC项目中,我们也遇到了很多困难,比如在封装js库的时候难免会碰到this执行的问题,这样会导致Cannot read property “xxxxx” of null,或者找不到方法, 如下图: 分析问题 this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this最终指向的是那个调用它的对象。那么本案例中造成这个问题的原因大致有一下三种: 1、this的执行问题,导致未初始化方法 2、使用对象改变了this的指向 3、本来就无这个方法,所以无法使用 解决问题 自身代码如下图: 运行效果如下,本来想指向自身的方法,但是多了个_device对象: 要解决上述问题必须要改变this的指向,该问题的关键在于重新创建了对象,因此最终我们决定使用bind来改变指向,如下图: bind方法主要就是改变函数绑定到某个对象从而改变指向问题,于是该问题得以解决。 我们的开发目前在紧锣密鼓的进行当中,未来的发展方向将会有两个,一个是通过WebRTC技术优化我们已经开发的视频平台EasyNVR、EasyGBS、EasyCVR等,另一个是开创新的基于WebRTC做传输的视频服务。 如果大家想了解一些关于我们现有视频平台的相关内容,也可以联系我们,经过实践测试,包括EasyCVR、EasyNVR

【技术教程】Webrtc使用javascript如何通过bind改变this指向?

 ̄綄美尐妖づ 提交于 2020-12-19 13:47:28
前段时间我们讲到我们正在开发的WebRTC项目,在WebRTC项目中,我们也遇到了很多困难,比如在封装js库的时候难免会碰到this执行的问题,这样会导致Cannot read property “xxxxx” of null,或者找不到方法, 如下图: 分析问题 this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this最终指向的是那个调用它的对象。那么本案例中造成这个问题的原因大致有一下三种: 1、this的执行问题,导致未初始化方法 2、使用对象改变了this的指向 3、本来就无这个方法,所以无法使用 解决问题 自身代码如下图: 运行效果如下,本来想指向自身的方法,但是多了个_device对象: 要解决上述问题必须要改变this的指向,该问题的关键在于重新创建了对象,因此最终我们决定使用bind来改变指向,如下图: bind方法主要就是改变函数绑定到某个对象从而改变指向问题,于是该问题得以解决。 我们的开发目前在紧锣密鼓的进行当中,未来的发展方向将会有两个,一个是通过WebRTC技术优化我们已经开发的视频平台EasyNVR、EasyGBS、EasyCVR等,另一个是开创新的基于WebRTC做传输的视频服务。 如果大家想了解一些关于我们现有视频平台的相关内容,也可以联系我们,经过实践测试,包括EasyCVR、EasyNVR