node

NodeJS

我只是一个虾纸丫 提交于 2019-12-27 05:45:05
NodeJS NodeJS的基本概念 1.什么是NodeJS NodeJS是一个基于Chrome V8引擎的一个JavaScript运行环境。 NodeJS使用了一个事件驱动,以及非阻塞I/O模式,使其更轻量高效。 NodeJS的npm包是全球最大的包管理网站。 V8引擎 内核:脚本引擎(V8引擎)渲染引擎。 I/O模型 I:input 输入 O:output 输出 npm:包管理器 npm是一个包 npm是一个网站 npm是一个命令 npm install 安装package.json中的依赖 npm install 包名 -g 全局安装 npm install 包名 --save 将依赖安装到生产环境中 npm install 包名 --save-dev 将依赖安装到开发环境中 npm search 包名 查找相关包 npm update 包名 升级依赖 npm remove 包名 删除依赖 yarn包管理器 安装命令:cnpm install yarn -g yarn install 安装package.json中的依赖 yarn add 包名 -g 全局安装 yarn add 包名 将依赖安装到生产环境中 yarn add 包名 --dev 将依赖安装到开发环境中 yarn upgrade 包名 升级依赖 yarn remove 包名 删除依赖 yarn search 包名

Node.js模块导入导出

天大地大妈咪最大 提交于 2019-12-27 05:41:17
这篇文章本来是想模块导入导出和事件循环一起写的,但是感觉一起写的话会太长了,所以就分开两篇文章写吧。下一篇会重点介绍一下js中的事件循环,js代码到底是以何种顺序去执行的呢?我相信你看懂了事件循环再去看node对你的帮助是非常大的。 讲模块系统之前先认识一下node.js中的全局对象。 node.js的全局对象   众所周知的是在浏览器中的老大哥是谁,它就是window,this指向的也是window,那么在node中的全局对象就不是window了,而是global,可以在命令行中去看一下,想学习node的应该已经安装了node环境,如果还没有安装可以去 node中文网 去找到你对应的操作系统和版本去下载,如果node命令不是全局还需要配置一下环境变量,现在window操作系统安装上node之后应该就自动配置完成了。   打开命令行,输入 node 回车,然后输入 this 或者global就可以看到全局对象。你会看到好多东西,但是他比window对象是少太多太多了。   在JavaScript中,使用script标签去引入js文件的话,那么在js文件中的全局变量都会挂载到window对象下面,在各个文件中都可以共享它那个变量,比如jQuery,你引入了一个jQuery文件,那么在其它的文件当中,你是可以访问到$这个变量的。   而在node.js中是如何实现文件之间的的引入呢

使用vue-cli搭建spa项目

喜欢而已 提交于 2019-12-27 05:05:17
1. 什么是vue-cli? vue-cli是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板,创建命令如下: vue init webpack xxx 注1:xxx 为自己创建项目的名称 注2:必须先安装vue,vue-cli,webpack,node等一些必要的环境 2. 安装vue-cli npm install -g vue-cli npm install -g webpack 注1:安装成功后,会出现如下文件 D:\initPath node-v10.15.3-win-x64 node_global vue vue.cmd vue-init vue-init.cmd vue-list vue-list.cmd 3. 使用脚手架vue-cli(2.X版)来构建项目 ## 步骤一:使用脚手架创建项目骨架 ## 此步骤可理解成:使用eclipse创建一个maven的web项目 cmd #打开命令窗口 d: #切换到d盘 cd d:\temp #进入d:\temp目录 vue init webpack spa1 #此命令用于创建SPA项目,它会在当前目录生成一个以“spa1”命名的文件夹 #spa1即为项目名,项目名不能用中文或大写字母,然后终端会出现“一问一答”模式(见注2) 注1:cmd命令行窗口显示中文乱码,多是因为cmd命令行窗口字符编码不匹配导致

Nodejs资料之nrm模块

徘徊边缘 提交于 2019-12-27 04:41:23
◆ 模块作用: nrm ( npm registry manager ),npm下载地址切换工具。npm默认的下载地址在国外,国内下载速度慢,可以使用nrm模块切换到国内的下载地址。 ◆ 使用步骤: 使用npm install nrm -g 下载 F:\workstation\nodejs> npm install nrm -g npm WARN deprecated coffee-script@1.7.1: CoffeeScript on NPM has moved to "coffeescript" (no hyphen) C:\Users\ASUS\AppData\Roaming\npm\nrm -> C:\Users\ASUS\AppData\Roaming\npm\node_modules\nrm\cli.js + nrm@1.2.1 added 489 packages from 861 contributors in 42.519s 查询可用下载地址列表 nrm ls F:\workstation\nodejs> nrm ls * npm -------- https://registry.npmjs.org/ yarn ------- https://registry.yarnpkg.com/ cnpm ------- http://r.cnpmjs.org/

HashMap工作原理

本秂侑毒 提交于 2019-12-27 04:12:05
HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。 1.HashMap介绍 HashMap为Map接口的一个实现类,实现了所有Map的操作。HashMap除了允许key和value保存null值和非线程安全外,其他实现几乎和HashTable一致。 HashMap使用散列存储的方式保存kay-value键值对,因此其不支持数据保存的顺序。如果想要使用有序容器可以使用LinkedHashMap。 在性能上当HashMap中保存的key的哈希算法能够均匀的分布在每个bucket中的是时候,HashMap在基本的get和set操作的的时间复杂度都是O(n)。 在遍历HashMap的时候,其遍历节点的个数为bucket的个数+HashMap中保存的节点个数。因此当遍历操作比较频繁的时候需要注意HashMap的初始化容量不应该太大。 这一点其实比较好理解:当保存的节点个数一致的时候,bucket越少

Nodejs资料之Gulp模块

二次信任 提交于 2019-12-27 02:54:20
◆ 模块作用: 基于node平台开发的前端构建工具,将机械化操作编写成任务, 想要执行机械化操作时执行一个命令行命令任务就能自动执行了,提高开发效率。 1. 项目上线,HTML、CSS、JS文件压缩合并 2. 语法转换(es6、less ...) 3. 公共文件抽离 4. 修改文件浏览器自动刷新 ◆ 使用步骤: 使用npm install gulp下载gulp库文件 在项目根目录下建立gulpfile.js文件 重构项目的文件夹结构 src目录放置源代码文件 dist目录放置构建后文件 在gulpfile.js文件中编写任务. 在命令行工具中执行gulp任务 ◆ Gulp中提供的方法: gulp.src():获取任务要处理的文件 gulp.dest():输出文件 gulp.task():建立gulp任务 gulp.watch():监控文件的变化 ◆ Gulp插件: 需使用npm命令下载如下的插件: gulp-htmlmin :html文件压缩 gulp-csso :压缩css gulp-babel :JavaScript语法转化 gulp-less: less语法转化 gulp-uglify :压缩混淆JavaScript gulp-file-include 公共文件包含 browsersync 浏览器实时同步 ◆ 使用gulp.task建立任务: // 参数:任务的名称

Node之模块与npm包管理器

对着背影说爱祢 提交于 2019-12-27 02:23:30
核心模块与文件模块 在Node.js中,以模块为单位划分所有功能。核心模块为Node内置模块,还有一些第三方的模块,模块是以js文件或者文件夹的形式存在于node中,每一个模块都是一个js的脚本文件 如何加载模块 加载模块只需要用 require('模块名') 在node中,可以自己编写或者从网上下载以下几种模块文件 后缀名为.js的JavaScript脚本文件。 后缀名为.json的JSON文本文件。 后缀名为.node的经过编译后的二进制模块文件。 在加载这些模块文件时,需要指定该文件的完整路径及文件名。在指定路径时,可以使用“./”前缀(代表当前目录)来指定相对路径,也可以用“/”前缀来指定绝对路径 从模块外部访问模块内的成员 在一个模块文件中定义的本地(即非函数内定义的)变量、函数或对象只在该模块内有效,当你需要从模块外部引用这些变量、函数或对象时,需要在该模块文件内使用exports对象 示例: var myMsg="hello"; var funcname=function() { return 'I'm funcname1 function.'; }; exports.msg=myMsg; exports.funcname=funcname; 当从外部访问模块时使用require导入即可 node中模块加载的顺序 /home/ry/projects/node

leetcode 336. Palindrome Pairs

為{幸葍}努か 提交于 2019-12-27 01:33:42
查找回文对 这一题有着最straight forward的做法。就是把每俩个字符串组装一下然后检查一下是否是Palindrome。思路非常明白。代码如下: function palindromePairs(words) { var result = [] for (var i = 0; i < words.length; i++) { for (var j = 0; j < words.length; j++) { if (i == j) continue; var s = words[i] + words[j]; if (isPalindrome(s)) { result.push([i, j]) } } } return result; } function isPalindrome(s) { var head = 0, tail = s.length - 1; while (head < tail) { if (s.charAt(head) != s.charAt(tail)) { return false; } head++; tail--; } return true; } 如果单词个数是n,单词平均长度是k。那么这个做法的复杂度就是O(kn^2)。这个做法会超时。所以我们得想另一个做法。 下面这个做法可以认为是一种小型的改善,把复杂度变成了O(nk^2)

静态链表常见题型总结

Deadly 提交于 2019-12-27 00:34:20
静态链表 首先,静态链表的原理是Hash,即通过建立一个结构体数组,使用下标去访问数组元素; 一般化步骤: 1)定义静态链表 struct Node{ int add;//节点地址 typedef data;//数据域 int next;//指针域 XXX ; // 节点某性质,具体问题,具体分析 }node[maxn]; 2) 静态链表初始化 for(int i=0;i<maxn;i++){ node[i].XXX=false;//自行初始化为所需 } 3) 常见逻辑处理 1:由于可能存在无效节点,因此需 计数统计 (eg:对于节点是否在链表上,遍历链表时将XXX置true标记即可) int p=begin,cnt=0; while(p!=-1){ node[p].XXX=true; p=node[p].next; cnt++; } cnt可用于控制节点输出个数。 2:有时为了访问方便,需将链表元素 移置左端 处理,一种简单的操作直接排序就好。 那怎么排序呢,第一标尺是节点是否有效,第二、~~等标尺按题目要求。 则原先结构体可以这样定义: struct Node{ int add,val,next; bool flag; friend bool operator <(const Node &a,const Node &b){ //两个参数必须声明为友元函数 if(a.flag=

consul与跨主机Docker通信

喜欢而已 提交于 2019-12-26 23:12:59
#Consul 介绍 Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键特性: 服务发现。Consul的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用Consul去发现一个指定服务的提供者。通过DNS或者HTTP应用程序可用很容易的找到他所依赖的服务。 健康检查。Consul客户端可用提供任意数量的健康检查,指定一个服务(比如:webserver是否返回了200 OK 状态码)或者使用本地节点(比如:内存使用是否大于90%).。这个信息可由operator用来监视集群的健康。被服务发现组件用来避免将流量发送到不健康的主机。 Key/Value存储。应用程序可用根据自己的需要使用Consul的层级的Key/Value存储。比如动态配置,功能标记,协调,领袖选举等等,简单的HTTP API让他更易于使用。 多数据中心。Consul支持开箱即用的多数据中心。这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域。 基础架构 Consul是一个分布式高可用的系统,这节将包含一些基础,我们忽略掉一些细节这样你可以快速了解Consul是如何工作的,如果要了解更多细节,请参考深入的架构描述。 每个提供服务给Consul的阶段都运行了一个Consul agent 。发现服务或者设置和获取 key