前一段时间抽空去参加面试,面试官一开始让我做一道题,他看完之后,让我回答一下这个题的时间复杂度并优化一下,当时的我虽然明白什么是时间复杂度,但不知道是怎么计算的,一开局出师不利,然后没然后了,有一次我逛博客园时看到有个博主的文章说到有LeetCode这玩意,于是就知道了LeetCode.忽然有一种疑问:前端学不学算法?我看过一篇博文:为什么我认为数据结构与算法对前端开发很重要? 我觉得,前端应该是要学一下算法的,不久后前端明朗化,要做的工作量不低于后端人员,到时候也会像优化页面一样去优化js,既…
1. {} 在JS中我们把它叫代码块.如果代码块里的内容没有执行完,语句不会向下执行. 代码块是一个独立的整体.如果JS中某一条语句出错,那么就会在此终止不会向下执行. 2. 循环语句 循环,就是对一个整体进行逐个查找,找出符合条件的值 循环: (1)从什么开始 (2)查找的步长(符合条件的区域值) (3)结尾数字 计算机对数据的计算不是从1开始,从0开始,也就说0代表第一个数据 我们把用数字去代替字节的方法,将数字叫做这个字节的下标(索引) 循环语句的格式 循环用for for(){} 我们最…
元素节点的树状图 document>documentElement>body>tagName offsetLeft/offsetTop 结合运动 滚动轮播 1.DOM 全称:document object model (1) 节点树状图 document>documentElement>body>tagname 2.我们常用的节点类型 元素节点(标签) 文本节点(文本节点) 属性节点(标签里的属性) 3.document有个属性叫nodeType 返回的是数字 1代表元…
1.针对表单的 form input select textarea type=”radio/checkbox/password/button/text/submit/reset/” 表单的事件 onchange  当表单内容被修改时触发的事件 onfocus  获取焦点事件 onblur  失去焦点事件 表单里的内容用.value  div中内容用innerHTML 补充条件语句 1)if  else 2)switch 2.定时器 Js的同步和异步 同步:代码从上到下执行. 异步:每个模块执行…
数据的三种存储方式 String   “ ” Array    [ ] Json    { } 所有编程语言java c python c++ 等 他们都是面向对象编程,面向对象必须有三大特点,封装,继承,多态. 今天就是研究JS如何生成对象. 面向对象 Js一开始就是写网页特效,面向过程的,作者发现这样写不好,代码重复利用率太高,计算机内存消耗太大,网页性能很差. 所以作者就收到java和c的影响,往面向对象靠齐.Js天生有一个Object,但他没有面向对象的特征(封装,继承,多态). 最后研…
Js数据类型具体分析 基础类型:  string  number   boolean   null  undefined 引用类型:  object ==>  json  array  等 复习   点 运算符  xxx.sss   xxx 是对像    sss是属性和方法. 任何数据类型都是拥有属性和方法的. 字符串 String    var st=”hello world”; 字符串的定义 var s=”haha”; var st=new String(“hello”)    对象形式定义…
1.函数 关键词function 首先,我们先复习一下前面的知识: var 是JS的关键字,用于声明变量,声明在内存模块完成,定义(=)是在执行模块完成. var可以在内存模块提前(JS代码执行前)完成所以有变量提升这个功能. 为什么会出现图中的这种情况呢? 因为a没有带var,所以不存在变量提升,浏览器会把他当成window的属性. function也是JS的关键字,用于声明和定义函数的,声明和定义都在内存模块完成了. function 也是内存模块提前完成,所以有函数提升这个功能. 变量提升…
元素的属性 div.attributes 是所有标签属性构成的数据集合 div.classList 是所有class名构成的数组集合 在classList的原型链上看以看到add()和remove() 1.client系列 (1)  clientWidth/clientHeight 是我们设置的宽和高加上内边距(没有边框) clientLeft/clientTop 就是我们设置的边框值 2.Offset系列 offsetWidth/offsetHeight 是我们设置的宽和高加上边框加上内边距…
基类Object的子类有 Function  Array  Number  Boolean  String  Date  Math  RegExp 函数 数组 数字 布尔 字符串 日期 算数 正则 都是类.本质都是函数. String类 定义字符串的方法 Var st=new String(“hello world”) 简写 Var st=”hello world” 字符串的加号运算   +   仅仅就是拼接  这种方法 叫字符串拼接. 字符串prototype上的方法 (1) charAt()…
js数据类型 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 二者的区别 基本数据类型就是简单的操作值,引用数据类型,把引用地址赋值给变量 堆内存 就是存放代码块的,存放形式有两种,一种是对象以键值对的形式存放 另一种就是函数  以字符串的形式存放 案例 引用数据类型的赋值,是把引用地址赋给它,在修改属性的时候,通过地址查找然后改掉. 应用数据类型,如何操作? 先通过引用地址去查找…
1.作用域链 作用域:浏览器给JS的一个生存环境(栈内存). 作用域链:JS中的关键字var 和function 都可以提前声明和定义.提前声明和定义的内容放在我们的 内存地址(堆内存)中.然后JS从上到下逐行执行,遇到变量就去内存地址查找是否存在这个变量.有 就使用,没有就继续向父级作用域查找直到window下结束,这种查找机制叫作用域链. JS代码中存在着大量的变量和函数,我们在使用它们的时候一定要知道它们到底归属谁. 2.this 1)this是JS的一个关键字,指定一个对象然后去替代它.…
1.函数都有返回值…… 而方法的本质也是函数,所以也有返回值. Document.getElementById() 返回的是获取的标签 getElementsByClassName()和getElementsByTagName()返回的是一个数组 Document.getElementsByClassName(“name”)[2].innerHTML=”hahha” 2.改变标签的属性 元素.属性名    属性单词  attribute 3.修改和添加css样式 元素.style.css属性名=…
1.逻辑运算  ||   && ! 1||2   5&&4  !0 || 遇到第一个为true的数字就终止并返回 && 遇到第一个为false的值 就终止 返回false的值,如果没有false就返回最后那个数 ||和&&在一起 &&的优先级比较高 高于|| 2.作用域的问题 1.Js代码如何执行 2.js环境 3.栈  堆 Js代码在客户端执行前,浏览器会给这个js一个全局环境,这个环境分两个部分, 一个是内存模块,一个是执…
1.JS的本质就是处理数据.数据来自于后台的数据库. 所以变量就起到一个临时存储数据的作用. ECMAScript制定了JS的数据类型. 数据类型有哪些? 字符串   String 数字    Number 布尔    Boolean Null     空 Undefined Object   对象 Array 数组   json   function  函数  日期 数字对象等 上面红色的叫基本数据类型. Var s=”hello”; var s=12; var s=true; var s=n…
1.parseInt()    整数型 字符串中的数字取整 遇到第一个是非数字的字节就结束了. 2.parseFloat 浮点型 字符中的数字取整数和小数,有两个小数点的话第二个小数点无效第二个小数点后的值也无效 遇到第一个是非数字的字节就结束了. 3.var a=”hello world” A这个变量是字符串了,对于里面的每一个字母来说,他是字节.里面有11个字节. 字节总数用length表示. 只要在字符串中占用一个位置,就是一个字节,包括小数点和空格 4.符号运算中 + 表示的字符串运算…
面向对象 1.单列模式 2.工厂模式 3.构造函数 (1) 类Js天生自带的类Object 基类Function Array Number Math Boolean Date Regexp String 1.事件 浏览器客户端上客户触发的行为都称为事件 所有的事件都是天生自带的,不需要我们去绑定,只需要我们去触发. 通过obj.事件名=function(){} 事件名:onmouseover onmouseout onmousedown onmousemove onmouseup Onclick…
1.Js操作css样式 div.style.width=”100px”.在div标签内我们添加了一个style属性,并设定 了width值.这种写法会给标签带来大量的style属性,跟实际项目是不符. 我们没有让css和html分离. 所以如果是为了获取css样式 window.getComputedStyle() 获取经过计算机计算的所有属性 就是只要渲染出来的都是经过计算的. getComputedStyle()第一个参数是当前元素,第二个一般我们写null 并且这个方法是只读, Ie6-8…
类是最常见的一种引用类型,最简单的定义如下 class YouClassNam {} 复杂的类可能包含一下内容 类属性 类属性以及类修饰符.  非嵌套的类修饰符有:public,internal,abstract,sealed,static, unsafe,partial 类名 各种类型参数,唯一基类,多个接口 花括号内 类成员(方法,成员属性,索引器,事件,字段,构造方法,运算符函数,嵌套类型和终止器) 1---->字段 字段是类或结构体中的变量. 字段不一定要初始化,没有初始化的字段会赋一个…
目录: 一些定义 配置环境 相关语法 1.一些定义 java中DO的含义: https://blog.csdn.net/canot/article/details/51698047 DAO 中包含了各种数据库的操作方法.通过它的方法 , 结合 PO 对数据库进行相关的操作.夹在业务逻辑与数据库资源中间.配合 VO, 提供数据库的 CRUD 操作     2.配置环境 这里以 idea开发工具为例: 1) 配置jdk: file->Project Struct-> SDKs 路径,选择添加自己m…
是不是stl中的算法函数中参数只要是和函数相关的就是函数对象和谓词?…
目录 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 概要 提示 解析 算法 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 26. 删除排序数组中的重复项 概要 一提到原地删除数组,就能立即想到双指针法,这道题本身也没什么难度,日常水题, 提示 双指针 解析 没有思路的时候,耐心一点即可 算法 /**  * @param {number[]} nums  * @return {number}  */ const removeDuplica…
1. 线性查找 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>线性查找</title> </head> <body> <p>数组为:[2,4,6,23,53,545,65,3,24,5,3,6]</p> <p>输入要查的值:<input…
这是小川的第389次更新,第419篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第251题(顺位题号是1047).给定一个小写字母的字符串S,重复删除两个相邻且相等的字母. 我们在S上反复删除,直到我们再也无法删除. 在完成所有此类重复删除后返回最后一个字符串.保证答案是独一无二的. 例如: 输入:"abbaca" 输出:"ca" 说明:在"abbaca"中我们可以删除"bb",因为字母相邻且相等…
前端攻城狮--学习常用的排序算法 一.冒泡排序 优点: 所有排序中最简单的,易于理解: 缺点: 时间复杂度O(n^2),平均来说是最差的一种排序方式: 因为在默认情况下,对于已经排好序的部分,此排序任然会进行比较(当然可以进行改进优化) 算法步骤: 比较相邻的元素,如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对一直到结尾的最后一对,如此将最大的数放在后面. 对所有的元素重复以上的步骤,除了最后一个. 持续每次对元素重复上面的步骤,直到排序完成. 原理分析: 通…
React中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DOM结构进行重绘与回流,而diff算法能够使得操作过程中只更新修改的那部分DOM结构而不更新整个DOM,这样能够最小化操作DOM结构,能够最大程度上减少浏览器重绘与回流的规模. 虚拟DOM diff算法的基础是Virtual DOM,Virtual DOM是一棵以JavaScript对象作为基础的树,…
()要运用STL的算法,首先必须包含头文件<algorithm>,某些STL算法用于数值处理,因此被定义于头文件<numeric> ()所有STL算法都被设计用来处理一个或多个迭代器区间,第一个区间通常以起点和终点表示,至于其他区间,多数情况下你只需提供起点便足以,其终点可以自动以第一个区间的元素数量推断出来,调用者必须保证这些区间的有效性. STL算法采用覆盖模式而非安插模式,所以调用者必须保证目标区间拥有足够的元素空间,当然你也可以运用特殊的安插型迭代器将覆盖模式改变为安插模式…
机器学习中的算法(1)-决策树模型组合之随机森林与GBDT 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gmail.com 前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时, 单决策树又有一些不好的地方,比如说容易over-fitting,虽然有…
今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * 冒泡排序:最简单,也最慢,貌似长度小于7最优* 插入排序: 比冒泡快,比快速排序和希尔排序慢,较小数据有优势* 快速排序:这是一个非常快的排序方式,V8的sort方法就使用快速排序和插入排序的结合* 希尔排序:在非chrome下数组长度小于1000,希尔排序比快速更快* 系统方法:在forfox下系…
wand(weak and)算法基本思路 一般搜索的query比较短,但如果query比较长,如是一段文本,需要搜索相似的文本,这时候一般就需要wand算法,该算法在广告系统中有比较成熟的应 该,主要是adsense场景,需要搜索一个页面内容的相似广告. Wand方法简单来说,一般我们在计算文本相关性的时候,会通过倒排索引的方式进行查询,通过倒排索引已经要比全量遍历节约大量时间,但是有时候仍 然很慢. 原因是很多时候我们其实只是想要top n个结果,一些结果明显较差的也进行了复杂的相关性计算,而…
作者 | 钱坤 钱坤,腾讯后台开发工程师,从事领域为流媒体CDN相关,参与腾讯TVideo平台开发维护. 原文是<Algorithmic Nuggets in Content Delivery>.这篇文章是akamai15年的文章,里面介绍了一些akamai在内容分发网络中的算法研究,下面对论文中的这些算法进行简单的总结.水平有限有限,有理解错误的还望指正. ps:并不是所有的算法都已经投入到了实用阶段. BLOOM FILTERS Bloom filters的研究主要用在akamai的CDN…