node

NodeJS

流过昼夜 提交于 2020-01-05 02:31:47
什么是node?   根据官方文档可以知道, node就是一个给予谷歌v8引擎的一个javascript的运行时的平台 ,可以理解为运行js的一个虚拟机。他使用的是 一个 事件驱动,非阻塞I/O模型 ,他是将js的运行环境搬到了服务器端,和客户端没有一点关系。是一个纯服务端的东西,node只是为js提供了一个平台。node里面其实还分了两块,一是封装了v8引擎,目的是为了执行es(如定义变量,定义函数等),另外一个提供了大量的工具库,是帮助node实现各种功能的,提供了一些以前js的环境办不到的事情,比如文件操作,网络操作,操作系统的操作。 既然node是一个平台(所谓的平台就是用来运行特定语言的),也就意味着node是用来运行语言的,那么java也是语言,node能运行java吗?据nodejs创始人Ryan Dahl回忆,他最初是选择了Ruby这门语言,但是Ruby这门语言的虚拟机效率不怎么样最终放弃了,按照这种思路,貌似node将java的虚拟机集成进来应该可以运行java,但node作者最终选择了javascript。这样js就实现了在服务端运行的可能,js运行在node平台上(分为v8部分,用来执行es,和大量的工具库组件(API)称之为libuv,提供了以前js的环境办不到的事,如文件操作,网络操作等等)。 知道了什么是node,应该还要清楚

[Nodejs] node写个hello,world

吃可爱长大的小学妹 提交于 2020-01-05 02:25:46
http 模块 与 hello world hello world let http = require("http"); http .createServer((request, response) => { response.writeHead(200, { "Content-type": "text/html;charset=utf-8" }); if (request.url !== "/favicon.ico") { response.write("<b>hello world</>"); response.write("</br>"); response.end("<i>你好,世界</i>"); } }) .listen(8888); console.log("server running at http://127.0.0.1:8888/"); 首先引入 http 模块,然后调用 http 的 createServer 方法,创建一个服务器,最后调用 listen 监听一个端口.createServer 的第一个参数是一个函数,函数中接收 request 和 response 作为两个参数. 打开浏览器输入http://127.0.0.1:8888/就可以看到hello world http 要使用 HTTP 服务器和客户端,必须 require('http')

Visual Studio Code搭建NodeJs的开发环境

丶灬走出姿态 提交于 2020-01-05 02:06:39
一、Visual Studio Code搭建NodeJs的开发环境 1.下载安装NodeJs并配置环境变量 可以参考: NodeJs的安装和环境变量配置 2.下载安装 VS Code编辑器 可以参考: VsCode插件整理 3.使用Typings工具配置VS Code 的智能提示 可以参考: VS Code智能提示功能之Typings 4.创建Hello word Demo 创建测试服务器server.js var http= require( 'http'); http.createServer( function( req,res){ res.writeHead( 200,{ 'Content-Type': 'text/plain'}); res.end( 'hello node.js'); }).listen( 3000, 'localhost', function( ){ console.log( 'Server running at http://localhost:3000'); }); 5.使用VS Code运行或调试代码说明 1.运行代码段(选中的代码),输出结果 2.运行js文件,启动服务器监听 3.结束nodejs的服务器监听 方式1:在任务栏管理器中结束nodejs对应的当前服务器的进程 方式2:在输出控制台,右键‘Stop Code Run’ 4

node事件循环

做~自己de王妃 提交于 2020-01-05 01:59:09
Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。 Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。 Node.js 基本上所有的事件机制都是用设计模式中 观察者模式 实现。 Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数. Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例: // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); 以下程序绑定事件处理程序: // 绑定事件及事件的处理程序 eventEmitter.on('eventName', eventHandler); 我们可以通过程序触发事件: // 触发事件 eventEmitter.emit('eventName'); 实例 创建 main2.js 文件,代码如下所示: // 引入 events 模块 var events = require('events');

使用Python实现一个简单的LRUCache

試著忘記壹切 提交于 2020-01-05 00:43:38
简介 我们都知道,Redis会使用“淘汰策略”来进行热点数据的管理,其中大部分场景下都会使用LRU(Least Recently used)算法,本文从一个简单的使用dict缓存斐波那契数列的值为例引出LRU的使用场景并使用Python实现一个简单的LRUCache。 使用缓存减少计算或者主数据库的开销 在实际的业务场景中,我们常常会使用缓存来减少程序的计算或者用户频繁访问主数据库的开销。比如说,我这里有一个接口函数fib,用户使用某一个天数来请求数据时,接口将计算结果返回给用户: def fib(n): if n <= 2: return 1 return fib(n-1) + fib(n-2) 为了减少程序计算的开销,我们可以使用一个字典去“缓存”对应的结果,也就是说, 我们可以提前计算好用户请求的天数与对应结果的对应信息,如果用户请求的天数在“缓存”中的话我们可以直接将缓存中的结果返回给用户,这样就有效的减少了一次程序的开销! 装饰器方式实现“缓存效果” # 字典中有的会从这里取值而不用计算,减少计算开销 dic = {1:1,2:1,3:2} def wrapper(func): global dic def inner(n): if n in dic: return dic[n] res = func(n) dic[n] = res return res return

npm& node 的问题

隐身守侯 提交于 2020-01-05 00:40:49
故事场景 在一个月黑风高的夜晚,小王正在学习node,由于一次次修改一次次重启服务,所以准备全局来个 supervisor npm i -g supervisor 故事发展到这里,本以为一切很快就会结束,结果事与愿违,嘣~一长串报错一闪而过,仔细看过之后我发现好像是我的node安装目录在升级的时候少npm-cli文件 Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js' 打开目录一看,果然少了没有这个文件,第一反应www.baidu.com,先看看网上有没这个文件。。。乱七八糟说什么的都有,没找到文件,但貌似找到了解决办法《重装大法》。 虽然大家都是程序猿,但是我还是比较相信有很多电脑小白哦。这里建议一种方法,就是电脑管家类似的安全工具,一键卸载。 重新安装完node,安装包选择在了D盘,本以为一切结束,可是一个叫vscode的手下 控制台 ,给我来了个 node: command not found 赶紧打开cmd推算这个问题是什么,我去...cmd上npm -v 出来版本了...这是什么鬼,立马点击'X'结束vscode的生命,并重新激活,问题依然在,环境变量检查也没问题,这时候我想起来了玄学重启... 恩~ 真香 好了 ‘bug’解决~ 来源: https://www

K8s(Kubernetes)的安装部署

末鹿安然 提交于 2020-01-04 23:51:55
一. Kubernetes 系统简介 首先,他是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。   Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。 Kubernetes中,Service是分布式集群架构的核心,一个Service对象拥有如下关键特征: 拥有一个唯一指定的名字 拥有一个虚拟IP(Cluster IP、Service IP、或VIP)和端口号 能够体统某种远程服务能力 被映射到了提供这种服务能力的一组容器应用上 Service的服务进程目前都是基于Socket通信方式对外提供服务,比如Redis、Memcache、MySQL、Web Server,或者是实现了某个具体业务的一个特定的TCP Server进程

文档对象模型(DOM)

徘徊边缘 提交于 2020-01-04 18:42:21
文档对象模型(DOM)是表示文档(比如HTML和XML)和访问、操作构成文档的各种元素的应用程序接口(API)。一般的,支持Javascript的所有浏览器都支持DOM。本文所涉及的DOM,是指W3C定义的标准的文档对象模型,它以树形结构表示HTML和XML文档,定义了遍历这个树和检查、修改树的节点的方法和属性。 7.4.1、DOM眼中的HTML文档:树   在DOM眼中,HTML跟XML一样是一种树形结构的文档,<html>是根(root)节点,<head>、<title>、<body>是<html>的子(children)节点,互相之间是兄弟(sibling)节点;<body>下面才是子节点<table>、<span>、<p>等等。如下图:      这个是不是跟XML的结构有点相似呢。不同的是,HTML文档的树形主要包含表示元素、 标记 的节点和表示文本串的节点。 7.4.2、HTML文档的节点   DOM下,HTML文档各个节点被视为各种类型的Node对象。每个Node对象都有自己的属性和方法,利用这些属性和方法可以遍历整个文档树。由于HTML文档的复杂性,DOM定义了nodeType来表示节点的类型。这里列出Node常用的几种节点类型: 接口 nodeType常量 nodeType值 备注 Element Node.ELEMENT_NODE 1 元素节点 Text

线性表之单链表 (Java)

老子叫甜甜 提交于 2020-01-04 17:20:50
每个结点中只包含一个指针域的链表,称为 单链表 。 单链表的结构如图所示: 单链表与顺序存储结构的对比: 实现程序: /** * 说明: * 1.《大话数据结构》中没有线性表的长度,但提到可以存储于头节点的数据域中。 * 本程序的线性表长度存放于count变量中,线性表长度可以使程序比较方便。 * 2.程序中,第i个位置代表第i个结点,头结点属于第0个结点 * 3.因为链表为泛型,整表创建采用整型(随机整数做元素),所以有出现一些类型转换 * 4.Java程序的方法一般以小写开头,但为和书上一致,程序中方法采用了大写开头。 * * 注意点: * 1.count在增删元素时要加一或减一千万别忘了 * 2.清空线性表要每个元素都null * */ public class LinkList<E> { private Node<E> head; //头结点 private int count; //线性表长度(《大话》存储于head.data中) /** * 结点 */ private class Node<E>{ E data; Node<E> next; public Node(E data,Node<E> next){ this.data=data; this.next=next; } } /** * 线性表的初始化 */ public LinkList(){ head=new

node下图片自动处理

蓝咒 提交于 2020-01-04 14:15:06
用node js处理图片 step1: 安装node step2:安装 image mask ;//安装的时候有个选项要记得勾选 如下图所示: step3: 创建compress.js文件,在该目录下创建源文件夹pictures和目标文件夹img,然后cmd进入控制命令台,输入node compress.js,则自动将文件处理,哈哈哈~ var fs = require("fs"); var gm = require("gm"); var src = 'pictures'; fs.readdir(src, (err, files) => { files.forEach((file) => { gm(src+'/'+file).options({ imageMagick: true }).resize(750).write('./img/'+file, err => { if (err) { return console.log(err); } return console.log('success'); }); }); }) 来源: https://www.cnblogs.com/luckyflower/p/5781983.html