- 博客(189)
- 收藏
- 关注
翻译 TCP/IP(TCP传输控制协议)
1)基本知识TCP 协议的作用是:保证数据通信的完整性和可靠性,防止丢包。(可靠地协议,面向连接的协议)TCP和UDP在传输层TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。以太网协议解决了局域网的点对点通信。IP在网络层,IP 协议可以连接多个局域网。IP 协议定义了一套自己的地址规则,称为 IP 地址。它实现了路由功能,允许某个局域网的 A 主机,向...
2018-10-07 22:09:45
2684
原创 找到一个数组中相加为特定数值的两个元素
思路:将值变为另一组数组的key,将key变成值 每次循环的时候,target-nums[i]的值就是要寻找的值,而如果在一个数组中寻找该值,因为不知道该值的对应的key,所以没办法寻找,如果变成寻找key,就只需要判断数组有没有这个key就可以了function resultarr(nums,target){var arr=[];var exist=[];var l...
2018-10-07 09:44:37
709
原创 把数组排序成最小的数(js)
思路:要使用字符串来处理,要找到一个排序规则,根据这个规则排成一个最小数比如:数组:[3,32,321]不能直接比较,应该比较332,323->332>323所以32<3将两个数字n,m连成字符串,nm>mn,n<mfunction minnumber(arr){var minarr=[];arr=arr.map(function(x){...
2018-10-04 23:39:27
508
翻译 模板引擎原理
1》模板概念通常是指嵌入某种动态编程语言代码的文本,数据和模板通过某种形式的结合可以变化出不同的结果,模板通常用来定义显示的形式,能够使数据展示更加丰富,而且容易维护2》模板的好处1)简化了html书写2)通过编程元素(比如循环和条件分支),对数据的展现更具有控制力3)分离数据与展现,使得展现的逻辑和效果更易维护3》模板引擎通过分析模板,将数据和模板结合在一起输出最后的...
2018-10-04 10:18:22
1379
翻译 TCP流量控制与拥塞控制
1》流量控制1>流量控制:通过滑动窗口实现的(以字节为单位),管理两端的流量,以免会产生发送过快导致接收端溢出,或者因收端处理太快而浪费时间的状态。2>滑动窗口:TCP采用大小可变的滑动窗口进行流量控制,窗口大小的单位是字节。发送窗口在连接建立时由双方商定,但在通信的过程中,发送窗口大小取决于接收端窗口大小和拥塞窗口大小(可增大或减少)3>滑动窗口的作用:提供TCP可...
2018-10-02 22:30:54
679
原创 动态规划
动态规划:通常基于一个递推公式及一个或多个初始状态,当前子问题的解将由上一个子问题的解推出基本思想:要解决一个给定的问题,我们需要解决其不同部分(即解决子问题),再合并子问题的解以得出原问题的解,通常子问题非常相似,为此动态规划视图只解决每个子问题一次,从而减少计算量,一旦某个给定子问题的解已经算出来,则将其记忆储存,以便下次需要同一个子问题解值时直接查表1》斐波那契数列方法一:递归调...
2018-09-30 19:40:07
118
翻译 js精度问题(0.1+0.2;js浮点数双精度64位)
1》原因因为计算机内部的信息都是由二进制方式表示的,但由于某些浮点数没办法用二进制准确的表示出来也就带来了一系列问题将小数转换成二进制:整数部分:除2取余,若商不为0则继续对它除2,当商为0时则将所有余数逆序排序小数部分:乘2取整数部分,若小数不为0则继续乘2,知道小数部分为0将取出的整数位正序排序(若小数部分无法为0,根据有效位要求取得相应值)0.1的二进制:0.0 0011...
2018-09-30 11:16:53
1277
翻译 求连续子数组中最大和
思路:动态规划遍历数组,遇到负的和则放弃之前的结果,重新积累,这期间保留最大值用max记录最终返回的最大和,用curmax记录累加值对于数值中一个数arr[i],若其左边的累加和非负,那么加上arr[i]判断此时的curmax是否大于max,若大于此时的max,则用max记录下来function FindGreateSum(arr){var len=arr.length;...
2018-09-30 08:28:18
291
转载 http无状态
1》官方说法:1.协议对于事务处理没有记忆能力2.对同一个url请求没有上下文关系3.每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求时无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况4.服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器2》理解标准的http协议指的是不包括cookies,session...
2018-09-26 11:21:48
6231
2
翻译 jq的插件
1>基本概念jq的插件分为类级别开发和对象级别开发,类级别开发在真实项目中几乎不用2>jQuery插件开发方式1)通过$.extend()来扩展jQuery相对简单,一般很少能够独立开发复杂插件,仅仅是在jQuery身上添加一个静态方法而已,我们通过$.extend()添加函数时直接通过$符号调用($.myfunction()),而不需要选中DOM元素($(“#elem...
2018-09-25 07:42:53
212
翻译 Ajax
1>概念AJAX是异步的 JavaScript 和 XML,它不是新的编程语言,它是一种新方法。2>过程浏览器让XHR跟浏览器要点数据-》浏览器接着干别的事-》XHR去向浏览器请求数据-》服务器返回数据给XHR-》XHR通知浏览器数据回来了-》浏览器收到XHR返回的数据渲染页面3>关于技术1)XHR:全称XMLHttpRequest,它是浏览器的内置对...
2018-09-24 10:47:03
152
原创 封装addClass()和removeClass()方法
function addClass(element,new_name){if(!element||!new_name) return false;if(element.className){var old_name=element.className;element.className=old_name+" "+new_name;}else{element.classNa...
2018-09-23 09:53:25
492
翻译 Performance API(前端性能监控)
1》获取时间戳的方法比较要得到脚本运行的精确耗时,需要一个精度时间戳,传统做法是使用Date对象getTime方法,其不足之处在:1)getTime方法及Date对象的其他方法只能精确到毫秒级别2)getTime方法只能获取脚本运行过程中时间进度,无法知道一些后台事件进度,比如浏览器用了多长时间从服务器加载网页为解决这两个问题ES5引入高精度时间戳performance API,精...
2018-09-23 07:44:11
1735
翻译 白屏时间,首屏时间,DOM树构建时间,整页时间
业界衡量移动端web app交互性能的优劣主要是通过检测webview渲染页面时白屏时间,首屏时间,DOM树构建时间,整页时间,交互性能指Processing和onLoad在浏览器交互阶段(Processing和onLoad时段)浏览器接收到服务器返回的基础页的数据后,浏览器需要对HTML对这个单纯的文本内容进行解析,从文本中构建出一个内部数据结构DOM树,从HTML也能得到外联和内联css脚...
2018-09-22 18:03:00
5513
翻译 webpack打包体积过大的问题
webpack把我们所有的文件都打包成一个js文件,即使你是小项目,打包后的文件也非常大1)去掉不必要的插件开发环境和生产环境使用同一个webpack配置文件,导致生产环境打包的js文件包含很多没必要的插件(如:NoEmitOnErrorsPlugin)2)提取第三方库第三方库和源代码在一起打包体积会很大CommonsChunkPlugin 提取代码中公共模块,然后将公共模块打...
2018-09-22 09:06:17
1426
翻译 css3动画优化
就是减少浏览器在动画运行时所需要做的工作渲染DOM的时候浏览器做的工作:获取DOM后分割为多个图层,对每个图层的节点计算样式结果,为每个节点生成图形和位置,将每个节点绘制填充到图层位图中,图层作为纹理上传至GPU(图形处理器),符合多个图层到页面上生成最终屏幕图像注意:如果图层中某个元素需要重绘,那么整个图层都需要重绘,比如一个图层包含很多节点,其中有gif图,gif图的每一帧都会重回...
2018-09-21 00:19:08
372
翻译 圆环的实现
方法一:利用子元素绝对定位的方法<div id="circle"><div id="ncircle"></div></div>#circle{width:100px;height:100px;background:green;border-radius:50%;}#ncircle{width:50px;...
2018-09-19 22:50:35
164
翻译 bind封装
Function.prototype.bindOne=function(context){ if(typeof this!=='function'){ throw new Error('bound is not callable') } //留住this var self=this; //arguments转数组,并从index=1截取 var args=Array.protot...
2018-09-18 00:15:30
189
翻译 判断回文
方法一:判断字符串头尾是否相等,逐次向中间检查function isPaline(line){line+="";for(var i=0,j=line.length-1;i<j;i++,j--){if(line.charAt(i)!==line.charAt(j)){return false;}}return true;}var str="abbbba...
2018-09-15 09:07:15
915
翻译 根据属性的值排序
function compare(propertyName){ return function(object1,object2){ var value1=object1[propertyName]; var value2=object2[propertyName]; if (value1>value2) { return 1; } else if...
2018-09-14 19:52:54
322
翻译 Promise.all()方法的实现
function promiseAll(promises){ return new Promise(function(resolve,reject){ if(!Array.isArray(promises)){ return reject(new TypeError("argument must be anarray")) } var countNum=0; var pr...
2018-09-13 00:00:46
5563
3
原创 扁平化数组(多层嵌套)
方法一:var arr=[1,[2,[3,[4,5]]]];function flatten(arr){var len=arr.length;var temp=[];for(var i=0;i<len;i++){if(Array.isArray(arr[i])){var child=flatten(arr[i]);temp=temp.concat(child...
2018-09-12 23:14:52
1377
翻译 Set数据结构
1》概念Set数据结构类似于数组但是成员的值是唯一的,没有重复值;Set本身是一个构造函数用于生产Set数据结构,Set函数可以接受一个数组(或类数组),对象作为参数用于初始化判断是否相等:向set加入值的时候,不会发生类型转换(所以5和“5”是不同的),Set内部判断两个值是否是不同的,它类似于全等操作符,但是有不同主要是Set内部判读NaN等于自身,而全等操作符认为NaN不等于自身...
2018-09-09 18:12:45
504
翻译 每3个字符用逗号隔开
function fenge(str){ var result=str.replace(/(\d)(?=(\d{3})+$)/g,"$1,"); return result;}var str="12334565632";console.log(fenge(str));
2018-09-04 21:15:24
933
翻译 js查找数组重复元素
方法一:利用sort方法,先使用sort方法将数组排序,再来判断找出重复元素function res(arr){var temp=[];arr.sort().sort(function(a,b){if(a===b&&temp.indexOf(a)===-1){temp.push(a)}})return temp;}var arr=[1,...
2018-09-04 18:43:16
9680
1
原创 js预解析
1》概念:js代码执行之前会在相应的执行环境中(全局环境,局部环境)预先把一些东西(function,var定义的变量)解析到内存中2》过程:1)创建一个当前执行环境下的活动对象2)将var声明的变量设置为活动对象的属性(也就是将其添加到活动对象当中),并将其赋值为undefined3)将function定义的函数也添加到活动对象当中3》具体情况:函数定义的方法有:函数...
2018-09-04 17:17:07
426
原创 border知识点
1》border语法1)四个边框border-top:设置上边框border-right:设置右边框border-bottom:设置下边框border-left:设置左边框四边相同的边框:border:1px #ccc solid;2)边框的三个样式1>边框宽度border-width:1px;使用数字+单位设置,不支持百分比,必须为正数(大于0的数值,否...
2018-08-20 09:53:24
344
原创 前端动画
1>javascript直接实现主要思想是通过setInterval或setTimeout方法的回调函数来持续调用改变某个元素的CSS样式以达到元素样式变化的效果。<div id="rect"></div> <script> let elem = document.getElementById('rect'); ...
2018-08-20 09:24:08
843
翻译 Vue双向绑定源码(翻译)
Vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。代码实现的思路1)实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者2)实现一个指令解析器Complie,对每个元素节点的指令进行扫描和...
2018-08-20 09:03:40
263
原创 需要Object.defineProperty()注意点
1》用Object.defineProperty方法创建一个新属性时,如果不指定configurabel,enumberable,writable特性的默认值都是false,修改已定义的属性特性无限制。2》Configurable性定义为不可配置就不能把它变回可配置,此时调用Object.defineProperty修改除writable之外的特性都会报错。3》模拟访问和设置的行为:想要访...
2018-08-20 08:41:51
600
原创 css样式初始化
原因:不同的浏览器对各个元素的margin,padding,borer,font等属性的定义各有不同,不同浏览器的显示效果可能不一样,为杜绝这种情况,通过css强制让所有元素的属性值都一样,这样浏览器显示就一致了,减少不兼容情况的发生,这个过程叫css的初始。代码:@charset "utf-8";/* CSS Document */*{ box-sizing:border-bo...
2018-08-17 18:16:09
2265
原创 移动端触摸事件顺序
touchstarttouchendmousedownmouseupclickfunction eventUtil(elem,type){ elem.addEventListener(type,function(e){ console.log(type,e.timeStamp); },false);}eventUtil(oDiv,"touchstart");...
2018-08-17 11:31:49
609
原创 json
1>内容:JSON 是一种数据格式,是js的一个严格子集,利用js中的一些模式来表示结构化数据,但并不从属与js,它并不是只有js才能使用。很多编程语言都有针对JSON的解析器和序列化器。2>Json可以表示的三种类型值:1.简单值:数值,字符串,布尔值,null(不支持undefined)例如:5:就是简单值“hello”:js字符串与json字符串最大的区别...
2018-08-16 21:01:04
94
翻译 跨域资源共享(CORS)
1>原理它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,需要服务器和浏览器共同支持,但是目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。所以实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。2>为什么要验证基于CSRF(跨站请求伪造)的风险,各主流浏览器会对动态的跨域请求进行特殊的验...
2018-08-16 11:47:15
318
原创 vue组件实例(标签页组件)
效果图:index.html<link rel="stylesheet" type="text/css" href="style.css"/><div id="app" v-cloak> <tabs v-model="activekey"> <pane label="标签一&q
2018-08-15 20:06:48
1161
翻译 gulp自动化构建工具
1>基础知识gulp是基于流的自动化构建工具,在gulp中,首先通过gulp.src()方法获取要处理的文件流,然后把文件流通过pipe方法导入到gulp插件中,最后把经过插件处理后的流再通过pipe方法导入到gulp.dest()中,gulp.dest()方法则把流中的内容写入到文件中,以流为媒介它不需要频繁的生成临时文件,这也是使用gulp的一个原因。2>作用它能够对网...
2018-08-15 17:23:02
250
原创 webpack与gulp的区别
gulp: 强调的是前端开发的流程,通过配置一系列的task,定义task处理的事务(例如:文件压缩合并,启动server),然后定义执行顺序,来让gulp执行task,从而构建其前端项目的流程。合并后仍然是你写的代码,只是局部变量名被替换,一些语法做了转换而已,整体内容并没有发生改变。webpack:侧重模块打包,把开发中的所有资源(图片,js文件,css文件等)都开成模块,通过loader...
2018-08-15 16:11:57
3384
翻译 promise和Generator,async比较
promise写法比回调函数的写法改进了很多,但是代码是promise API,操作本身的语义不易看出Generator语义比promise清晰,用户必须有一个任务执行器自动执行Generator函数async实现最简洁,最符合语义,将Generator写法中的自动执行器改在语言层提供,不暴露给用户注:具体每个方法看我其他博客...
2018-08-15 15:43:37
1026
原创 promise补充点
使用场景1》解决回调地狱问题,常常第一个函数的输出是第二个函数的输入这种现象多并发请求,获取并发请求中的数据2》比如:一些游戏类的素材比较多的应用,打开网页时,预加载需要用到的各种资源如图片,flsah以及各种静态文件,所有加载完后,我们进行页面初始化(使用all方法)3》比如:现在有多个异步操作ajax请求,我们需要当所有异步请求都成功的时候,执行后续操作(使用all方法)...
2018-08-14 21:15:47
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人