随笔分类 -  Javascript

摘要:上一篇:Theia架构 构建你自己的IDE 本指南将教你如何构建你自己的Theia应用。 必要条件 你需要安装node 10版本(译者:事实上最新的node稳定版即可): 以及yarn: 还需要确保已安装python 2.x,可通过python --version来检查。 安装 首先请创建一个空目录 阅读全文
posted @ 2020-01-04 10:29 Jaxu 阅读(10520) 评论(0) 推荐(2) 编辑
摘要:上一篇:Theia——云端和桌面版的IDE 架构概述 本节描述了Theia的整体架构。 Theia被设计为一个可以在本地运行的桌面应用程序,也可以在浏览器和远程服务器之间工作。为了支持这两种工作方式,Theia运行在两个独立的进程中,它们被称之为前端和后端,相互之间通过WebSockets上的JSO 阅读全文
posted @ 2020-01-03 23:13 Jaxu 阅读(3343) 评论(0) 推荐(1) 编辑
摘要:Theia是一个利用最新的web技术开发的支持云端和桌面运行的类似IDE的产品,它是一个可扩展的平台,并且全面支持多语言。 目标 建立一个可搭建类似IDE产品的平台 为终端用户提供完整的多语言IDE(不仅仅是智能编辑器) 同时支持云端IDE和桌面版IDE 通过language和debug serve 阅读全文
posted @ 2020-01-03 22:34 Jaxu 阅读(4510) 评论(0) 推荐(0) 编辑
摘要:Node.js的crypto模块提供了一组包括对OpenSSL的哈希、HMAC、加密、解密、签名,以及验证等一整套功能的封装。具体的使用方法可以参考这篇文章中的描述:node.js_crypto模块。 本文重点介绍在使用createCipheriv方法时所遇到的坑。对应的解密算法createDeci 阅读全文
posted @ 2019-10-10 17:15 Jaxu 阅读(15166) 评论(0) 推荐(0) 编辑
摘要:动态规划 动态规划(Dynamic Programming,DP)是一种将复杂问题分解成更小的子问题来解决的优化算法。下面有一些用动态规划来解决实际问题的算法: 最少硬币找零 给定一组硬币的面额,以及要找零的钱数,计算出符合找零钱数的最少硬币数量。例如,美国硬币面额有1、5、10、25这四种面额,如 阅读全文
posted @ 2019-09-03 14:18 Jaxu 阅读(2682) 评论(2) 推荐(2) 编辑
摘要:在计算机编程中,排序算法是最常用的算法之一,本文介绍了几种常见的排序算法以及它们之间的差异和复杂度。 冒泡排序 冒泡排序应该是最简单的排序算法了,在所有讲解计算机编程和数据结构的课程中,无一例外都会拿冒泡排序作为开篇来讲解排序的原理。冒泡排序理解起来也很容易,就是两个嵌套循环遍历数组,对数组中的元素 阅读全文
posted @ 2019-08-23 17:18 Jaxu 阅读(1024) 评论(1) 推荐(0) 编辑
摘要:提高网站性能最简单的方式之一是合并压缩JavaScript和CSS文件。但是当你需要调试这些压缩文件中的代码时,那将会是一场噩梦。不过也不用担心,souce maps将会帮你解决这一问题。 Source map提供了一种方式,能够将压缩文件中的代码映射回源文件中对应的位置。这意味着,你可以借助一些软 阅读全文
posted @ 2019-08-15 15:38 Jaxu 阅读(2664) 评论(0) 推荐(1) 编辑
摘要:在计算机科学中,图是一种网络结构的抽象模型,它是一组由边连接的顶点组成。一个图G = (V, E)由以下元素组成: V:一组顶点 E:一组边,连接V中的顶点 下图表示了一个图的结构: 在介绍如何用JavaScript实现图之前,我们先介绍一些和图相关的术语。 如上图所示,由一条边连接在一起的顶点称为 阅读全文
posted @ 2019-08-14 11:38 Jaxu 阅读(5341) 评论(10) 推荐(4) 编辑
摘要:在计算机科学中,树是一种十分重要的数据结构。树被描述为一种分层数据抽象模型,常用来描述数据间的层级关系和组织结构。树也是一种非顺序的数据结构。下图展示了树的定义: 在介绍如何用JavaScript实现树之前,我们先介绍一些和树相关的术语。 如上图所示,一棵完整的树包含一个位于树顶部的节点,称之为根节 阅读全文
posted @ 2019-08-09 19:43 Jaxu 阅读(14253) 评论(0) 推荐(4) 编辑
摘要:在前一篇文章中,我们介绍了如何在JavaScript中实现集合。字典和集合的主要区别就在于,集合中数据是以[值,值]的形式保存的,我们只关心值本身;而在字典和散列表中数据是以[键,值]的形式保存的,键不能重复,我们不仅关心键,也关心键所对应的值。 我们也可以把字典称之为映射表。由于字典和集合很相似, 阅读全文
posted @ 2019-08-06 14:31 Jaxu 阅读(2549) 评论(7) 推荐(2) 编辑
摘要:与数学中的集合概念类似,集合由一组无序的元素组成,且集合中的每个元素都是唯一存在的。可以回顾一下中学数学中集合的概念,我们这里所要定义的集合也具有空集(即集合的内容为空)、交集、并集、差集、子集的特性。 在ES6中,原生的Set类已经实现了集合的全部特性,稍后我们会介绍它的用法。 我们使用JavaS 阅读全文
posted @ 2019-08-02 17:12 Jaxu 阅读(2452) 评论(1) 推荐(0) 编辑
摘要:链表用来存储有序的元素集合,与数组不同,链表中的元素并非保存在连续的存储空间内,每个元素由一个存储元素本身的节点和一个指向下一个元素的指针构成。当要移动或删除元素时,只需要修改相应元素上的指针就可以了。对链表元素的操作要比对数组元素的操作效率更高。下面是链表数据结构的示意图: 要实现链表数据结构,关 阅读全文
posted @ 2019-08-01 18:22 Jaxu 阅读(14685) 评论(14) 推荐(5) 编辑
摘要:队列与栈不同,它遵从先进先出(FIFO——First In First Out)原则,新添加的元素排在队列的尾部,元素只能从队列头部移除。 我们在前一篇文章中描述了如何用JavaScript来实现栈这种数据结构,这里我们对应地来实现队列。 与栈的实现方式类似,唯一不同的是从队列移除元素时取的是队列头 阅读全文
posted @ 2019-07-30 15:17 Jaxu 阅读(5362) 评论(0) 推荐(0) 编辑
摘要:在计算机编程中,栈是一种很常见的数据结构,它遵从后进先出(LIFO——Last In First Out)原则,新添加或待删除的元素保存在栈的同一端,称作栈顶,另一端称作栈底。在栈中,新元素总是靠近栈顶,而旧元素总是接近栈底。 让我们来看看在JavaScript中如何实现栈这种数据结构。 我们用最简 阅读全文
posted @ 2019-07-30 11:06 Jaxu 阅读(2597) 评论(0) 推荐(1) 编辑
摘要:问题描述:服务器系统架构采用的是koa(并非koa2),客户端富文本编辑器采用的是百度的ueditor控件。现在需要ueditor支持将图片直接上传到七牛云。 前提:百度的ueditor需要在本地配置为可用,图片上传相关的配置可以参考官方文档的描述。由于服务器用的node.js,因此ueditor目 阅读全文
posted @ 2018-06-20 11:51 Jaxu 阅读(1186) 评论(0) 推荐(0) 编辑
摘要:通过JQuery的.html()函数我们可以非常方便地加载一段HTML到指定的元素中,例如给<div></div>中放入一组图片。问题是JQuery的.html()函数是同步的,如果我们想知道HTML被加载之后容器的高,例如获取容器的offsetHeight或scrollHeight属性的值,必须要 阅读全文
posted @ 2018-05-24 13:31 Jaxu 阅读(1982) 评论(0) 推荐(0) 编辑
摘要:在交互式可视化中,有一个词叫reactive,指的是以可视化的方式来响应用户的行为,帮助用户进行可视化并理解其结果。这个很有用。那如何来实现这种交互呢?通过动画。 如果处理得当,动画可以展现出不错的可视化交互数据... 是怎样的呢? 交互可以有效地提供用户的反馈。我们可以知道自上次用户操作之后发生了 阅读全文
posted @ 2018-02-08 18:30 Jaxu 阅读(369) 评论(0) 推荐(0) 编辑
摘要:JavaScript是一个无class的面向对象语言,它使用原型继承而非类继承。这会让那些使用传统面向对象语言如C++和Java的程序员们感到困惑。正如我们所看到的,JavaScript的原型继承比类继承具有更强的表现力。 但首先,要搞清楚我们为什么如此关注继承?主要有两个原因。首先是方便类型的转换 阅读全文
posted @ 2018-02-06 23:26 Jaxu 阅读(1193) 评论(1) 推荐(3) 编辑
摘要:要求实现一个轻量级的在客户端筛选的combobox,支持大数据量(超过1000个items),能快速检索内容,并支持数据的设置和活动等基本操作。在这之前尝试过使用Jquery UI的Autocomplete,但是当数据量太大时客户端检索速度太慢(甚至会导致浏览器卡死)。索性干脆基于JQuery自己写 阅读全文
posted @ 2018-02-05 21:30 Jaxu 阅读(437) 评论(0) 推荐(0) 编辑
摘要:MongoDB默认使用_id字段作为主键,类型为ObjectId。ObjectId的生成有一定的规则,详情可以查看这篇文章 - MongoDB深究之ObjectId。如果你在写入数据库的时候忘记写入创建时间,不用担心,完全可以通过_id字段的值来还原当时的时间。看下面的mongodb script脚 阅读全文
posted @ 2017-03-23 15:09 Jaxu 阅读(12170) 评论(1) 推荐(1) 编辑