- 博客(229)
- 收藏
- 关注
转载 JavaScript算法模式——动态规划和贪心算法
动态规划 动态规划(Dynamic Programming,DP)是一种将复杂问题分解成更小的子问题来解决的优化算法。下面有一些用动态规划来解决实际问题的算法:最少硬币找零 给定一组硬币的面额,以及要找零的钱数,计算出符合找零钱数的最少硬币数量。例如,美国硬币面额有1、5、10、25这四种面额,如果要找36美分的零钱,则得出的最少硬币数应该是1个25美分、1个10美分和1...
2019-09-03 14:18:00
439
转载 JavaScript算法实现——排序
在计算机编程中,排序算法是最常用的算法之一,本文介绍了几种常见的排序算法以及它们之间的差异和复杂度。冒泡排序 冒泡排序应该是最简单的排序算法了,在所有讲解计算机编程和数据结构的课程中,无一例外都会拿冒泡排序作为开篇来讲解排序的原理。冒泡排序理解起来也很容易,就是两个嵌套循环遍历数组,对数组中的元素两两进行比较,如果前者比后者大,则交换位置(这是针对升序排序而言,如果是降序排...
2019-08-23 17:18:00
289
转载 如何用齿轮法测定光速
之前在看《从一到无穷大:科学中的事实和胰测》(乔治·伽莫夫著)这本书的时候,其中有个章节是讲时间和空间关系的,里面讲到对于光速的测定。下面是原书中人们对于如何测定光速的描述: 第一次测定光速的尝试是著名的意大利物理学家伽利略(GalileoGalilei)在 17 世纪进行的。他和他的助手在一个黑沉沉的夜晚到了佛罗伦萨郊外的旷野,随身带着两盏有遮光板的灯,彼此离开几英里站...
2019-08-16 15:59:00
2157
转载 Source Maps简介
提高网站性能最简单的方式之一是合并压缩JavaScript和CSS文件。但是当你需要调试这些压缩文件中的代码时,那将会是一场噩梦。不过也不用担心,souce maps将会帮你解决这一问题。 Source map提供了一种方式,能够将压缩文件中的代码映射回源文件中对应的位置。这意味着,你可以借助一些软件很轻易地调试应用程序中那些经过优化处理过的资源。Chrome和Firefox提...
2019-08-15 15:38:00
335
转载 JavaScript数据结构——图的实现
在计算机科学中,图是一种网络结构的抽象模型,它是一组由边连接的顶点组成。一个图G = (V, E)由以下元素组成:V:一组顶点E:一组边,连接V中的顶点 下图表示了一个图的结构: 在介绍如何用JavaScript实现图之前,我们先介绍一些和图相关的术语。 如上图所示,由一条边连接在一起的顶点称为相邻顶点,A和B是相邻顶点,A和D是相邻顶点,A和C...
2019-08-14 11:38:00
264
转载 JavaScript数据结构——树的实现
在计算机科学中,树是一种十分重要的数据结构。树被描述为一种分层数据抽象模型,常用来描述数据间的层级关系和组织结构。树也是一种非顺序的数据结构。下图展示了树的定义: 在介绍如何用JavaScript实现树之前,我们先介绍一些和树相关的术语。 如上图所示,一棵完整的树包含一个位于树顶部的节点,称之为根节点(11),它没有父节点。树中的每一个元素都叫做一个节点,节点分为内部...
2019-08-09 19:43:00
175
转载 JavaScript数据结构——字典和散列表的实现
在前一篇文章中,我们介绍了如何在JavaScript中实现集合。字典和集合的主要区别就在于,集合中数据是以[值,值]的形式保存的,我们只关心值本身;而在字典和散列表中数据是以[键,值]的形式保存的,键不能重复,我们不仅关心键,也关心键所对应的值。 我们也可以把字典称之为映射表。由于字典和集合很相似,我们可以在前一篇文章中的集合类Set的基础上来实现我们的字典类Dictionar...
2019-08-06 14:31:00
171
转载 JavaScript数据结构——集合的实现与应用
与数学中的集合概念类似,集合由一组无序的元素组成,且集合中的每个元素都是唯一存在的。可以回顾一下中学数学中集合的概念,我们这里所要定义的集合也具有空集(即集合的内容为空)、交集、并集、差集、子集的特性。 在ES6中,原生的Set类已经实现了集合的全部特性,稍后我们会介绍它的用法。 我们使用JavaSctipt的对象来表示集合,下面是集合类的主要实现方法:class...
2019-08-02 17:12:00
593
转载 JavaScript数据结构——链表的实现与应用
链表用来存储有序的元素集合,与数组不同,链表中的元素并非保存在连续的存储空间内,每个元素由一个存储元素本身的节点和一个指向下一个元素的指针构成。当要移动或删除元素时,只需要修改相应元素上的指针就可以了。对链表元素的操作要比对数组元素的操作效率更高。下面是链表数据结构的示意图: 要实现链表数据结构,关键在于保存head元素(即链表的头元素)以及每一个元素的next指针,有这两...
2019-08-01 18:22:00
194
转载 JavaScript数据结构——队列的实现与应用
队列与栈不同,它遵从先进先出(FIFO——First In First Out)原则,新添加的元素排在队列的尾部,元素只能从队列头部移除。 我们在前一篇文章中描述了如何用JavaScript来实现栈这种数据结构,这里我们对应地来实现队列。function Queue() { let items = []; // 向队列添加元素(一个或多个) ...
2019-07-30 15:17:00
112
转载 JavaScript数据结构——栈的实现与应用
在计算机编程中,栈是一种很常见的数据结构,它遵从后进先出(LIFO——Last In First Out)原则,新添加或待删除的元素保存在栈的同一端,称作栈顶,另一端称作栈底。在栈中,新元素总是靠近栈顶,而旧元素总是接近栈底。 让我们来看看在JavaScript中如何实现栈这种数据结构。function Stack() { let items = []; ...
2019-07-30 11:06:00
161
转载 由“RangeError: Invalid status code: 0”错误所引发的思考
最近发现一个基于Node.js平台上的Express框架运行的Web网站经常报这样一个错误:RangeError: Invalid status code: 0 网站的源码中有专门针对错误处理的中间件,经过精简之后的代码如下:module.exports = function (err, req, res, next) { var _code = er...
2019-06-27 16:31:00
2270
转载 工作是最好的投资——图书摘录
工作是最好的投资 ——摘录自《工作是最好的投资》(金文著)薪水只是工作残留下的“糟粕” “如果只是把工作当作一件差事,或者只将目光”停留在工作本身,那么即使是从事你最喜欢的工作,你依然无法持久地保持对工作的激情。但如果把工作当作一项事业来看待,情况就会完全不同。”——微软公司董事长比尔·盖茨 “一个人把工作当成职业,他会全力应付;一个人把工作当成事业,他会全力以赴...
2019-04-10 22:04:00
925
转载 Node.js在指定的图片模板上生成二维码图片并附带底部文字说明
在Node.js中,我们可以通过qr-image包直接在后台生成二维码图片,使用方法很简单:var qr = require('qr-image');exports.createQRImage = function(res, str){ var img = qr.image(str); // 将生成二维码图片 res.writeHead(200, {'...
2018-12-29 16:56:00
560
转载 苹果手机对网页上样式为position:fixed的弹窗支持不好的解决办法
在Web页面上,如果想模拟对话框效果,一般会给div元素添加position:fixed的样式来实现,然后给背景添加一个半透明的遮罩。如:.fixedDiv { position: fixed; top: 0; right: 0; left: 0; margin: 0 auto; height: 100%; ...
2018-12-12 18:32:00
303
转载 自定义react数据验证组件
我们在做前端表单提交时,经常会遇到要对表单中的数据进行校验的问题。如果用户提交的数据不合法,例如格式不正确、非数字类型、超过最大长度、是否必填项、最大值和最小值等等,我们需要在相应的地方给出提示信息。如果用户修正了数据,我们还要将提示信息隐藏起来。 有一些现成的插件可以让你非常方便地实现这一功能,如果你使用的是knockout框架,那么你可以借助于Knockout-Valida...
2018-10-18 17:20:00
191
转载 Ubuntu 18.04中截图工具Shutter的编辑按钮不可用的解决办法
Shutter是一个由第三方提供的在Ubuntu上运行的截图工具,相对于系统自带的截图工具(默认可通过Ctrl + Shift + Print快捷键启动截图),最大的优点就是可以即时对图片进行编辑,在图片上做一些标记和文字标注等,使用起来很方便。在Ubuntu 16.04上,该软件运行一切正常,当将操作系统升级到18.04之后,启动Shutter后你会发现原先的编辑按钮不可用了。点击...
2018-08-30 18:47:00
222
转载 koa-ueditor上传图片到七牛
问题描述:服务器系统架构采用的是koa(并非koa2),客户端富文本编辑器采用的是百度的ueditor控件。现在需要ueditor支持将图片直接上传到七牛云。 前提:百度的ueditor需要在本地配置为可用,图片上传相关的配置可以参考官方文档的描述。由于服务器用的node.js,因此ueditor目录下我们只需要保留nodejs目录,其它部分如php,asp.net等都可以删掉...
2018-06-20 11:51:00
278
转载 jquery html() callback
通过JQuery的.html()函数我们可以非常方便地加载一段HTML到指定的元素中,例如给<div></div>中放入一组图片。问题是JQuery的.html()函数是同步的,如果我们想知道HTML被加载之后容器的高,例如获取容器的offsetHeight或scrollHeight属性的值,必须要等HTML元素中所有的内容都加载完毕后才能获取到真实的值,尤其...
2018-05-24 13:31:00
198
转载 iOS中Safari浏览器select下拉列表文字太长被截断的处理方法
网页中的select下拉列表,文字太长的话在iOS的Safari浏览器里会被自动截断,显示成下面这种: 安卓版的浏览器则没有这个问题。 如何让下拉列表中的文字在iOS的Safari浏览器里显示完整呢?答案是使用<optgroup></optgroup>标签。有关optgroup标签的作用可以查看w3school网站的说明。 正常sel...
2018-03-16 11:51:00
247
转载 Animations and transitions
在交互式可视化中,有一个词叫reactive,指的是以可视化的方式来响应用户的行为,帮助用户进行可视化并理解其结果。这个很有用。那如何来实现这种交互呢?通过动画。 如果处理得当,动画可以展现出不错的可视化交互数据... 是怎样的呢?交互可以有效地提供用户的反馈。我们可以知道自上次用户操作之后发生了什么变化?如果屏幕上的内容从一种状态变成另一种状态,动画可以使这一过...
2018-02-08 18:30:00
123
转载 JavaScript中的类继承
JavaScript是一个无class的面向对象语言,它使用原型继承而非类继承。这会让那些使用传统面向对象语言如C++和Java的程序员们感到困惑。正如我们所看到的,JavaScript的原型继承比类继承具有更强的表现力。 但首先,要搞清楚我们为什么如此关注继承?主要有两个原因。首先是方便类型的转换。我们希望语言系统能够对那些相似类的引用进行自动转换。而对于一个要求对引用对象进...
2018-02-06 23:26:00
86
转载 A customized combobox with JQuery
要求实现一个轻量级的在客户端筛选的combobox,支持大数据量(超过1000个items),能快速检索内容,并支持数据的设置和活动等基本操作。在这之前尝试过使用Jquery UI的Autocomplete,但是当数据量太大时客户端检索速度太慢(甚至会导致浏览器卡死)。索性干脆基于JQuery自己写一个吧! 所依赖的库:BootstrapJQueryUnders...
2018-02-05 21:30:00
85
转载 准备:新V8即将到来,Node.js的性能正在改变
V8的Turbofan的性能特点将如何对我们优化的方式产生影响 审阅:来自V8团队的Franziska Hinkelmann和Benedikt Meurer. **更新:Node.js 8.3.0已经发布了V8 6.0和Turbofan. Node.js依靠V8 JavaScript引擎来运行代码,其语言本身也是我们熟悉和喜爱的。V8 JavaScript引擎是Go...
2018-02-04 16:35:00
182
转载 RESTful服务最佳实践
本文主要读者引言REST是什么 统一接口 基于资源 通过表征来操作资源 自描述的信息 超媒体即应用状态引擎(HATEOAS) 无状态 可缓存 C-S架构 分层系统 按需编码(可选)REST快速提示 使用HTTP动词表示一些含义 合理的资源名 XML和JSON 创建适当粒度的资源...
2018-01-10 12:35:00
278
转载 Ubuntu 16.04 LTS运行robo3t报错
系统环境:Ubuntu 16.04 LTS. 安装robomongo Robo 3T,运行时报以下错误:jaxu@jaxu-ubuntu:/usr/local/share/robo3t-1.1.1-linux-x86_64-c93c6b0/bin$ ./robo3tThis application failed to start because it could n...
2017-11-30 15:53:00
101
转载 使用Q进行同步的Promises操作
如何通过使用Q来并发执行多个promises呢?Q(Q(1), Q(2), Q(3)) .then(function (one, two, three) { console.log(one); console.log(two); console.log(three); }, function (ex)...
2017-11-10 20:38:00
146
转载 从MongoDB的ObjectId中获取时间信息
MongoDB默认使用_id字段作为主键,类型为ObjectId。ObjectId的生成有一定的规则,详情可以查看这篇文章 - MongoDB深究之ObjectId。如果你在写入数据库的时候忘记写入创建时间,不用担心,完全可以通过_id字段的值来还原当时的时间。看下面的mongodb script脚本:db.getCollection('fees').find({}).for...
2017-03-23 15:09:00
355
转载 ES6 Generators并发
ES6 Generators系列:ES6 Generators基本概念深入研究ES6 GeneratorsES6 Generators的异步应用ES6 Generators并发 如果你已经读过这个系列的前三篇文章,那么你肯定对ES6 generators非常了解了。希望你能从中有所收获并让generator发挥它真正的作用。最后我们要探讨的这个主题可能会...
2017-03-20 23:37:00
126
转载 ES6 Generators的异步应用
ES6 Generators系列:ES6 Generators基本概念深入研究ES6 GeneratorsES6 Generators的异步应用ES6 Generators并发 通过前面两篇文章,我们已经对ES6 generators有了一些初步的了解,是时候来看看如何在实际应用中发挥它的作用了。 Generators最主要的特点就是单线程执行,同...
2017-03-03 00:38:00
103
转载 深入研究ES6 Generators
ES6 Generators系列:ES6 Generators基本概念深入研究ES6 GeneratorsES6 Generators的异步应用ES6 Generators并发 如果你还不知道什么是ES6 generators,请看我的前一篇文章“ES6 Generators基本概念” 。如果你已经对它有所了解,本文将带你深入了解ES6 generato...
2017-02-08 18:50:00
101
转载 ES6 Generators基本概念
ES6 Generators系列:ES6 Generators基本概念深入研究ES6 GeneratorsES6 Generators的异步应用ES6 Generators并发 在JavaScript ES6提供的诸多令人兴奋的新特性中,有一个新函数类型,叫generator。名字听起来很怪(我们姑且将它称之为生成器函数),而且行为更加让人觉得怪异。本文...
2017-02-07 10:43:00
105
转载 yield next和yield* next的区别
yield next和yield* next之间到底有什么区别?为什么需要yield* next?经常会有人提出这个问题。虽然我们在代码中会尽量避免使用yield* next以减少新用户的疑惑,但还是经常会有人问到这个问题。为了体现自由,我们在koa框架内部使用了yield* next,但是为了避免引起混乱我们并不提倡这样做。 相关文档,可以查看这里的说明harmony pro...
2017-01-23 16:23:00
170
转载 如何在Node.js中合并两个复杂对象
通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object:var obj1 = { "name" : "myname", "status" : 0, "profile": { "sex":"m", "i...
2016-12-26 10:01:00
235
转载 Node.js Base64 Encoding和Decoding
如何在Node.js中encode一个字符串呢?是否也像在PHP中使用base64_encode()一样简单? 在Node.js中有许多encoding字符串的方法,而不用像在JavaScript中那样定义各种不同的全局函数。下面是如何在Node.js中将一个普通字符串encode成Base64格式的代码:var b = new Buffer('JavaScript')...
2016-11-21 21:34:00
117
转载 CSS效果集锦(持续更新中)
高亮光弧效果 使用CSS3实现的一个高亮光弧效果,当鼠标hover到某一个元素上时,一道光弧从左向右闪过,效果如下:代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>light<...
2016-10-10 19:01:00
150
转载 Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放
UEditor组件是百度提供的一套开源的web在线所见即所得富文本编辑器,具有轻量,可定制,注重用户体验等特点,基于MIT协议,功能很强大。最近在使用的过程中发现其中上传的图片(或者插入已有的表情包图片)都无法正常缩放,选中图片,用鼠标点击并拖动图片边沿的小标签,图片只能缩小不能放大。尝试过很多方法都没办法解决,甚至检查了js源码,也没有发现有任何异常的地方。 后来无意中发现页...
2016-09-12 16:00:00
169
转载 Npm install failed with “cannot run in wd”
Linux环境下,root账户,安装某些npm包的时候报下面的错误,例如安装grunt-contrib-imagemin时:Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modu...
2016-09-12 11:50:00
287
转载 JQuery使用deferreds串行多个ajax请求
使用JQuery对多个ajax请求串行执行。HTML代码:<a href="#">Click me!</a><div></div>JS:function GetSomeDeferredStuff() { var deferreds = []; var i = 1; for...
2016-08-22 10:07:00
105
转载 使用HTML5的History API
HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL。这个功能很有用,例如通过一段JavaScript代码局部加载页面的内容,你希望通过改变当前页面的URL来反应出页面内容的变化,这时该功能可以派上用场。 举个例子,当用户从首页进入帮助页面时,我们通过Ajax来加载帮助页面的内容。然后这个用户又转到产品页面,我们需要再一次通...
2016-08-07 00:20:00
111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人