node

ECMAScript 6 简介

那年仲夏 提交于 2020-04-07 09:31:20
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 ECMAScript 和 JavaScript 的关系 一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。 该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有两个原因。一是商标,Java 是 Sun 公司的商标,根据授权协议,只有 Netscape 公司可以合法地使用 JavaScript 这个名字,且 JavaScript 本身也已经被 Netscape 公司注册为商标。二是想体现这门语言的制定者是 ECMA,不是 Netscape,这样有利于保证这门语言的开放性和中立性。 因此,ECMAScript 和

开源Nodejs微服务项目推荐:micro

自闭症网瘾萝莉.ら 提交于 2020-04-07 06:36:45
https://github.com/zeithq/micro Micro — Async HTTP microservices Features Easy . Designed for usage with async and await ( more ) Fast . Ultra high performance (even JSON parsing is opt-in). Micro . The whole project is ~100 lines of code. Agile . Super easy deployment and containerization. Simple . Oriented for single purpose modules (function). Explicit . No middleware. Modules declare all dependencies. Standard . Just HTTP! Example The following example sleep.js will wait before responding (without blocking!) import { send } from 'micro'; import sleep from 'then-sleep'; export default async

使用nssm在windows服务器上部署nodejs

谁说胖子不能爱 提交于 2020-04-07 06:01:29
在Linux上,可以轻松的使用 forever 或者 pm2 来部署nodejs应用。但是在windows下就麻烦了,pm2明确的说支持Linux & MacOS,forever在windows下貌似问题多多: 另外还有一个选择就是 iisnode ,这个有空研究一下,今天先说下比较简单的 nssm 。nssm会监控你安装的 node服务 ,如果node挂了,nssm会自动重启它。 安装使用 目前最新版的是2.23( 下载地址 ),下载之后解压,根据你的系统选择32位和64位的版本,直接在 nssm.exe 所在目录运行命令行,输入 nssw install +你的服务名,例如: nssm install test 之后会显示出GUI界面: 在 Path 中选择你安装的node.exe, Startup directory 选择你的node应用的目录, Argument 输入你的启动文件,例如在我桌面上运行 index.js (在Startup directory目录执行 node index.js ): 点击Install Service: 之后运行: nssm start test 服务已经启动,我刚才的 index.js 文件,启动一个http服务器,监听3000端口,现在就可以打开 127.0.0.1:3000 访问了: 其他的设置可以参考 官方文档

Nodejs:ES7中的Async/Await

☆樱花仙子☆ 提交于 2020-04-07 05:57:15
TJ的co是个基于生成器的异步变同步的解决方案。 https://github.com/tj/co ES7中出了Async/Await,同样可以用同步方式去写异步代码。 http://think2011.net/2015/11/09/ES7-Async-Await/ 有介绍。 创建index.js,内容如下: var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(); }, time); }) }; var start = async function () { // 在这里使用起来就像同步代码那样直观 console.log('start'); await sleep(3000); console.log('end'); }; start(); 使用方法1 $ npm i -g babel-cli $ npm install babel-plugin-transform-async-to-generator 修改 .babelrc : { "plugins": ["transform-async-to-generator"] } 运行: $ babel-node index.js start end

【leetcode】235. Lowest Common Ancestor of a Binary Search Tree

╄→尐↘猪︶ㄣ 提交于 2020-04-07 02:57:10
题目如下: 解题思路: 因为是BST,对于任意一个node,如果其val在p和q之间,那么说明p和q分别在其左子树和右子树,所以node就是其最低的祖父节点;如果val和q或者q相等,同样node就是其最低的祖父节点;如果p和q都比val大,说明这两个节点在node的右边,往右子树方向遍历;如果都小,往左子树方向遍历。 代码如下: # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def lowestCommonAncestor(self, root, p, q): """ :type root: TreeNode :type p: TreeNode :type q: TreeNode :rtype: TreeNode """ minv,maxv = min(p.val,q.val),max(p.val,q.val) if root.val == minv or root.val == maxv: return root elif root.val > minv and root.val < maxv:

Selenium Grid 的使用

萝らか妹 提交于 2020-04-06 19:45:38
简介 Selenium Grid 是 selenium 的三大组件之一,允许用户同时在不同的机器和系统上测试不同的浏览器,可以分布式的来执行我们的自动化测试,也可以测试不同浏览器的兼容性。 Selenium Grid 的组成: hub节点(控制器) 中心节点,控制节点。 管理各个 node 节点的注册信息和状态。 接受并转发客户端(测试脚本)请求到合适的 node 节点。 node 节点(执行器) 子节点,代理点。 负责注册配置信息到 hub 节点(平台,浏览器,浏览器版本) 负责接收来自 hub 节点转发的请求以执行具体用例。 也可单独作为远程节点执行测试用例。 环境准备 在需要执行脚本的机器上安装 jdk 和配置环境变量。 然后下载 selenium-server-standalone-x.x.x.jar, 版本对应自己使用selenium 的版本。 下载地址: https://npm.taobao.org/mirrors/selenium Selenium Grid 运行 1.启动 hub 节点 java -jar selenium-server-standalone-3.12.0.jar -role hub -port 18888 -maxSession 10 参数解释: java -jar selenium-server-standalone-3.12.0.jar 运

NodeJS开发者-资质分级评判标准

橙三吉。 提交于 2020-04-06 19:32:23
这回须纯属本人杜撰,但也是参考过诸多Node资料之后的断言,仅供参考。 ###》》 初级 独立完成node开发环境在制定系统平台的安装配置;熟悉javascript语言语法规范;熟悉JSON数据结构;了解CommonJS模块机制和包规范;了解异步IO和异步编程的特点,掌握回调函数、事件触发等方法进行流程控制;了解并实际使用过HTTP、WebSocket等网络编程协议;了解基本的路由控制、MVC、模板等概念;掌握npm镜像源的设置,掌握npm引用文件的编写;能够使用express、koa.js、socket.io、forever等常见模块初始化搭建可供开发的工程框架;掌握基本的SVN、Git版本控制工具的使用;基本的shell脚本操作;具备基本的代码调试能力; ###》》中级 良好的javascript代码编写规范,如命名规范和注释规范等;熟悉JSON数据格式的解析方法;了解mongodb、redis等NoSQL数据库的使用;有独立解决问题的思维方式;善于沟通协作;了解CommoJS模块引用的机制,以及引用过程中的编译、加载规则(如路径分析和文件定位);了解异步IO的实现原理,以及异步编程中如Promise等关于嵌套函数过甚的解决方案;掌握内存控制、垃圾回收的方法;了解RESTful、页面渲染、页面响应、和页面模板的使用;了解进程间消息传递;会编写基础的单元测试、性能测试

AQS源码详细解读

a 夏天 提交于 2020-04-06 18:40:04
AQS源码详细解读 [TOC] 基础 在讲解AQS之前,有几个额外的知识需要了解。知道了这些,才能明白AQS框架中很多代码的道理。 CAS相关知识 通过标识位进行线程挂起的并发编程范式 MPSC队列的实现技巧 欢迎加入技术交流群186233599讨论交流,也欢迎关注笔者公众号:风火说。 <!--more--> CAS相关知识 CAS相关知识具体不表,请百度相关概念 通过标识位进行线程挂起的并发编程范式 一个线程通过一个标识位来表明自己进入挂起状态,那么在该线程将挂起标识位设置为真时,需要再次检查所有的资源条件,而后才能真正的将自己挂起。也就是所谓的二次检查。因为别的线程需要通过挂起标识位来判断是否唤醒挂起线程。而如果别的线程均读取到false条件的挂起标识位值,那么该准备进入挂起状态的线程将不会有线程可以唤醒,所以必须执行二次检查,来防止自己进入一个不会被唤醒的错误状态。 用代码来表达上面的观点就是 //检查周边资源,确认线程需要进入挂起状态 while(checkNeedPark()){ //设置挂起标识位为真 needPark = true; //再次检查 if(checkPark()){ //已经设置好标识位,并且确实需要挂起了。进入挂起状态。别的线程在检测到挂起标识位时就可以尝试唤醒 parkThread(); } else{ //清除挂起标识位,再次尝试。

AtCoder Beginner Contest 161

我怕爱的太早我们不能终老 提交于 2020-04-06 17:52:37
A - ABC Swap 水题 AC代码: #include<bits/stdc++.h> #include<iostream> #include<vector> #include<queue> #include<string> #include<list> #include<set> #include<map> #include<stack> using namespace std; int main() { int a,b,c; cin>>a>>b>>c; cout<<c<<" "<<a<<" "<<b<<endl; return 0; } View Code B - Popular Vote 算总数和每个占总数的百分比 AC代码: #include<bits/stdc++.h> #include<iostream> #include<vector> #include<queue> #include<string> #include<list> #include<set> #include<map> #include<stack> using namespace std; int main() { int n,m; int node[110]; cin>>n>>m; int sum = 0; int ans = 0; for(int i=0;i<n;i++) { cin>

5种常见的链表基本操作

梦想与她 提交于 2020-04-06 17:30:59
单链表的基本操作: 1、单链表反转 2、链表中环的检测 3、两个有序链表的合并 4、删除倒数第K个结点 5、求链表的中间结点 编写链表代码的注意事项: 1、如果链表为空时,代码是否能正常工作? 2、如果链表只包含一个结点时,代码是否能正常工作? 3、如果链表只包含两个结点时,代码是否能正常工作? 4、代码逻辑在处理头结点和尾结点的时候,是否能正常工作? 单链表反转 package com.datastructure.linkedlist; /** * 单链表的基本操作: * 1、单链表反转 * 2、链表中环的检测 * 3、两个有序链表的合并 * 4、求链表的中间结点 * * @Auther: dlm * @Date: 2020/4/6 10:19 */ public class SingleLinkedListBasicsOperate { public static class Node{ private int data; //存储整型数据 private Node next; //指向下一个结点的指针 public Node(int data,Node next){ this.data = data; this.next = next; } public int getData(){ return this.data; } } //1、单链表反转(不带头结点) public