- 博客(29)
- 收藏
- 关注
原创 【美团面试】不开辟新的内存空间实现数组去重
美团内推面试的一道题。如果没有变量限制,方法很多很多,这里面试官要求不要定义新的引用型变量 其实吧,只是不开辟一个对象或数组变量。用splice修改自身:function fn(resArr){ for (var i=0;i<resArr.length;i++){ if(resArr.indexOf(resArr[i])!==i){ resArr.splice(i,1)
2017-08-28 15:06:30 1470
原创 阿里前端算法面试题两道
二维数组的全排列组合。 如输入[[1,2],[3,4],[5,6]] 输出: [ 1, 3, 5 ] [ 1, 3, 6 ] [ 1, 4, 5 ] [ 1, 4, 6 ] [ 2, 3, 5 ] [ 2, 3, 6 ] [ 2, 4, 5 ] [ 2, 4, 6 ]代码实现:function printArr(arr,n,res){
2017-08-22 14:40:49 6156 2
原创 用es6语法实现event类
如题,要求可以实现链式操作,具有on,off, emit,once,代码:class EventEmitter{ constructor(){ this._events={} } on(event,callback){ let callbacks = this._events[event] || [] callbacks.pu
2017-08-16 13:35:58 3777
原创 codewars上的一道训练函数式编程思维的编程题
分享codewars上的一道训练函数式编程思维的编程题。 https://www.codewars.com/kata/church-numbers-add-multiply-exponents/train/javascript 这个题目用了大量的篇幅进行思路引导,最后让实现加法,乘法和指数乘法三个函数,这里我就不翻译了,只给出题目给出的条件和所有目标整理一下题目给出的条件:函数chur
2017-07-14 19:23:18 843
原创 react-redux学习笔记
使用action创建函数封装逻辑是react与redux配合的最佳实践: - 当所有的逻辑都被转移到redux之后,react就可以只负责渲染界面并发起action创建函数了 ActionCreator要返回一个action对象,那么它是如何处理复杂的逻辑的呢? —> 中间件发起一个action创建函数,只需要将其返回结果传给dispatch()为什么使用redux thunk?该中间件
2017-07-07 11:34:07 546
原创 使用redux-thunk实现异步操作的中止
前端开发中常常会有这样的需求:设计一个select组件,每做一次选择就用ajax异步加载数据到指定页面。实现这个需求并不困难,但是仅仅是这样做,难免会出现一些不太理想的体验:如果用户迅速的切换选项,那么返回的结果不一定是用户最后选择的那个结果。因为请求是异步的,而请求发出到获得响应的过程时间是不可估的,用户很可能临时改变主意或等不及了而去发出一个新的请求。而页面最终呈现的结果是以最后到达的请求为准,
2017-07-06 19:51:18 1521
原创 es5中‘==’与‘===’算法的实现
1 “===“The comparison x === y, where x and y are values, produces true or false. Such a comparison is performed as follows:If Type(x) is different from Type(y), return false.If Type(x) is Undefined,
2017-06-21 17:28:31 491
原创 牛客网互联网秋招模拟笔试编程题第三题
上一篇博文中给出了子问题的解决算法。这里给出完整题目和代码。 题目就贴截图好了: var readline = require('readline');const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal:false});var n
2017-05-19 23:30:29 460
原创 回溯法打印卡特兰数问题--牛客编程题解题记录
今天在牛客上做到一个题,用到了卡特兰数的知识。 那道题我会单独写一篇博客,这里把其中一个子问题抽象出来,给出代码方案: 给了长度为2n的顺序数列,先将数列分成两排,要求第一排的每一列小于等于对应的第二排的数字,每排顺序排列,打印出所有排序方案。这里我用回溯方法解决,对所有方案进行深度优先遍历,如果‘0的数量大于1’(参加上文排队问题),则返回上层。 这里我构造了两个空数列:firstLine和
2017-05-19 23:08:48 491
原创 前端页面文件拖拽上传模块html/css/js代码示例
最近给卫生局做一个表格上传/可视化系统,算是小有成果。今天把项目中的文件拖拽上传模块分离出来,做了一个独立的小demo,并把相关代码打包上传到了我的github中,为了其他学习者和开发者提供拙见。gitHub地址:https://github.com/codeplay2015/dragToUpload由于代码中我的注释很详尽,所以具体逻辑实现及不介绍了,大家直接看代码及能明白。现在简单列一个功能清单
2017-05-18 18:05:39 7823 2
原创 node中javascript模块的编译原理
众说周知,Node中的模块是根据CommonJS规范来实现的,但是,Node是实现过程中也对规范进行了一定的取舍。尽管规范中exports,require和module听起来十分简单,但是Node在实现过程中经历了什么,还是值得进一步思考和探索的。本篇博客是本人阅读朴灵的《深入浅出理解NodeJS》一书的一篇读书笔记。主要记录下自己在阅读JS模块编译部分章节的一点心得。Node中,每个文件模块都是
2017-05-15 17:57:26 1536
原创 ECMA-262-5 in detail. Chapter 2. Strict Mode.
推荐一个非常棒的深入学习js的网站,叫ds.laboratory,应该是一个国外牛人(name:Dmitry Soshnikov )维护的一个博客 地址:http://dmitrysoshnikov.com/category/ecmascript/ 里面对ECMA规范的解读都比较深刻,截取部分目录 by Dmitry SoshnikovSkip to content About Index
2017-05-12 10:56:49 428
原创 【JavaScript】理解所谓的‘寄生组合式继承’
最近又反复阅读了《js高级程序设计》上对js继承的介绍,然后在掘金上也看到篇比较深刻的介绍js类与继承的博文,所以来谈下自己的理解。 先贴下那篇博文:JavaScript 的继承与多态 再贴两篇能够更深刻地帮助理解js对象模型的文章: 1.js运算符instanceof的工作原理 2.JavaScript对象模型-执行模型基本的方法就不说了,原型链啊,借用构造函数啊,组合式啊,寄生(分离)式
2017-05-11 12:35:57 7697 4
原创 前端面试ajax考点汇总
1. 手写一个ajax get方法var xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){ if(xhr.readyState == 4){ if(xhr.status>=200 &&xhr.status<300 || xhr.status == 304){ console.log
2017-05-08 22:28:01 1580
原创 由一道js题探讨构造函数、prototype和__proto__之间的关系
今天在牛客上看到这样一个题:var F = function(){};Object.prototype.a = function(){};Function.prototype.b = function(){};var f = new F();问:能否通过f取到方法a,方法b?在git上看到有人画了这么一个图: 你如果理不清prototype,_proto _,construcor这些概念和关
2017-05-02 23:12:39 4248
转载 用NodeJS打造你的静态文件服务器
前言在《The Node Beginner Book》的中文版(http://nodebeginner.org/index-zh-cn.html)发布之后,获得国内的好评。也有同学觉得这本书略薄,没有包含进阶式的例子。@otakustay同学说:“确实,我的想法是在这之上补一个简单的MVC框架和一个StaticFile+Mimetype+CacheControl机制,可以成为一个更全面的教
2017-04-28 17:43:41 586
原创 Application Cache 无法加载其他静态资源
今天在自己做的项目中加了Application Cache 功能,把一些js文件放在了列表里。然后第一次加载没问题,我原来是这样写的:把NETWORK和FALLBACK都去掉了。以为这个清单的作用就是 如果查到,就存入本地,下次从本地加载,如果未查到就从服务器上下载:CACHE MANIFEST#需要缓存的列表\assets\js\demo.js\assets\js\bootstrap-noti
2017-04-28 17:02:36 282
原创 通过chrome调试器测试了解浏览器解析和渲染HTML的过程
1.基础知识:了解chrome的Timeline工具仅仅是通过理论知识,很难记住和理解浏览器解析html的原则,因此我动手做了些小实验。而做这个实验,不得不用到一个工具:chrome的Timeline工具。这个工具真的很强大,Timeline工具栏提供了对于在装载Web应用的过程中,时间花费情况的概览,这些应用包括处理DOM事件, 页面布局渲染或者向屏幕绘制元素。Timeline可以通过事件,框架,
2017-04-25 18:15:24 4340
原创 nodeJS读写文件中文乱码问题整理及计算机文件编码方式科普
最近在用node 做一个读取excel文件的项目,后台用mongoDB存储。由于文件默认编码方式是anti,汉字总是无法显示。 网上都说要转成无BOM的utf-8格式,我用notepad++转了,还是没用。后来读文件时我也把编码方式选为‘utf-8’了也不行(后来明白,是我对这里所有的‘设置编码方式’的理解有误,并不是把编码方式‘改’为utf-8的意思)。最后参考了这三遍文章,问题得到解决。AN
2017-04-19 21:04:53 3943
原创 用原生js实现addClass,removeClass,hasClass方法
其实html5已经扩展了class操作的相关API,其中classList属性就以及实现了class的增删和判断。 classList属性的方法有: add(value) 添加类名,如果有则不添加 contains(value) 判断是否存在类名,返回Boolean值 remove(value) 从列表中删除类名 toggle(value) 切换类名:如果列表中存在则删除
2017-04-18 13:24:22 24995 1
转载 unicode,ansi,utf-8编码的区别--浅谈计算机编码发展史
作者:于洋链接:https://www.zhihu.com/question/23374078/answer/69732605来源:知乎很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开
2017-04-17 17:38:52 288
原创 js创建dom节点之最容易被忽略的createDocumentFragment()方法
js常见的创建dom节点的方法有createElement() 创建一个元素节点 => 接收参数为string类型的nodename createTextNode() 创建一个文本节点 => 接收参数为string类型的text内容 createAttribute() 创建一个属性节点 => 接收参数为string类型的属性名称createComment() 创建一个注释节
2017-04-16 18:12:29 16664
转载 【web性能优化】使用SVG中的Symbol元素制作Icon,解决图片分辨率适配问题
前言随着大屏幕分辨率的普及以及各种移动设备层出不穷的移动互联网时代的到来,我们在网站设计时更应该关心内容在各种设备上的阅读性和显示效果。我们都希望能在任何时间,任何设备上都能清楚的,高效的传递信息给用户。而随着各种高清视网膜屏幕的出现,现在web设计也需要考虑各种高清屏幕的显示效果,同样前端在代码实现的时候也需要根据屏幕的不同来输出不同分辨率的图片。为了使我们的网页能够适配视网膜屏幕上的高
2017-04-16 15:07:32 2501 2
原创 Java中hashmap和Treemap实现原理释疑
先贴几篇博客: Java HashMap如何实现Key 的唯一性 Java TreeMap 红黑树介绍 HashMap,LinkedHashMap,TreeMap的有序性
2017-04-10 17:47:34 347
转载 从javascript异步编程特点理解node服务器的I/O密集型优势
最近读了篇介绍js异步特性的博文,在加上自己平时在这方面也有一点琢磨和理解,感觉确实又“悟”出点东西来,分享出来给在这方面同样有困惑或不太确定自己的理解对不对的同学看。原博有一系列介绍js异步编程特性的文章,强烈推荐阅读学习(地址),按照博主自己的介绍: 会按一般学习异步编程的顺序,首先介绍一下异步的原理,然后介绍各种异步编程的方法,从回调函数开始,然后慢慢进入Promise和Generator
2017-04-10 17:39:23 769
原创 给定N个节点求组成二叉搜索树个数——从一道算法题探讨神奇的Catalan数
引Catalan数,中文卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中的数列。一旦入坑,你会发现这个数列相当有意思,能够应用于很多看起来特别复杂的计算场景,当然,并能将之迎刃而解。 wikipedia定义:卡塔兰数是组合数学中一个常在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名。历史上,清代数学家明安图(1692年-1763年)在其《割圜密
2017-04-07 16:55:56 11086 6
原创 【算法分析与设计】快速求幂算法的分析及java实现
ACM的竞赛中,经常会出现涉及到大数模幂运算的题目,如求解2的10000次方模100000009的结果,这就需要我们设计一种有效的求幂算法。本文将结合的以上应用场景,分析以下几种常用的求幂算法并给出java代码的实现:递归方法:二分快速求幂(又叫矩阵快速幂算法)非递归方法:二进制转换法二分快速求幂这种方法的设计思想很简单:对于A的n次幂,当n为偶数时,A^n = A^(n/2) * A^(n/
2017-04-03 23:14:11 1288
转载 【图说互联网面试笔试必考知识点】之排序算法复杂度/TCP/IP三次握手
话不多说,放图!1.排序算法2 图解TCP/IP三/四次握手过程(结合状态码理解)【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。【
2017-04-03 15:42:04 947
原创 【动态规划法】解析经典算法题Two eggs problem及其延伸问题
【动态规划法】解析经典算法题Two eggs problem及其延伸问题Two eggs problem可以说是互联网面试中老生常谈的算法题了,经常可以在各大互联网公司的笔试真题中看到它的各类变种(腾讯大厦,球掉落问题,玻璃珠问题等等)。本文将深入探讨此类问题及其延伸问题的通用解法,并给出javascript代码实现。问题描述Two-eggs problem首先看下游戏的定义: 有一幢100层的
2017-03-28 12:04:14 2774
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人