node

589. N-ary Tree Preorder Traversal - Easy

大憨熊 提交于 2020-01-15 12:20:16
Given an n-ary tree, return the preorder traversal of its nodes' values. For example, given a 3-ary tree: Return its preorder traversal as: [1,3,5,6,2,4] . Note: Recursive solution is trivial, could you do it iteratively? M1: recursion time: O(n), space: O(height) /* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val,List<Node> _children) { val = _val; children = _children; } }; */ class Solution { public List<Integer> preorder(Node root) { List<Integer> res = new ArrayList<>(); preorder(root, res); return res; } public void

前后端分离用nodejs做seo

感情迁移 提交于 2020-01-15 11:51:10
服务器(nodejs): a. 要点: b. 完整代码: var http = require('http'); var fs = require('fs'); var url = require('url'); http.createServer( function (request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); response.writeHead(200, {'Content-Type': 'text/html'}); fs.readFile('./head.html',function(e,head){ fs.readFile(pathname.substr(1), function (err, data) { fs.readFile('./foot.html',function(e,foot){ console.log(head.toString()) console.log(foot.toString()) response.write("<!DOCTYPE html>"); response.write("<html lang=\"en\">"); response

Leetcode 133: Clone Graph

社会主义新天地 提交于 2020-01-15 09:37:33
问题描述 Given a reference of a node in a connected undirected graph, return a deep copy (clone) of the graph. Each node in the graph contains a val (int) and a list (List[Node]) of its neighbors. 思路 node->nodes 使用dfs遍历图得到所有结点 copy nodes 用hash存储<原来结点,新结点>键值对 copy edges 拷贝边(邻居关系) 返回新构造图的node对应的新node java实现 /* // Definition for a Node. class Node { public int val ; public List < Node > neighbors ; public Node ( ) { } public Node ( int _val,List < Node > _neighbors ) { val = _val ; neighbors = _neighbors ; } } ; */ class Solution { public Node cloneGraph ( Node node ) { if ( node == null ) return

npm run dev 出现警告

只愿长相守 提交于 2020-01-15 09:01:31
1 WARNING in ./node_modules/_webpack@3.10.0@webpack/buildin/global.js 2 There are multiple modules with names that only differ in casing. 3 This can lead to unexpected behavior when compiling on a filesystem with other case-semantic. 4 Use equal casing. Compare these module identifiers: 5 * E:\Project\webpack\node_modules\_webpack@3.10.0@webpack\buildin\global.js 6 Used by 1 module(s), i. e. 7 E:\Project\webpack\node_modules\_sockjs-client@1.1.4@sockjs-client\dist\sockjs.js 8 * e:\Project\webpack\node_modules\_webpack@3.10.0@webpack\buildin\global.js 9 Used by 1 module(s), i. e. 10 e:\Project

node + webpack 项目打包部署之webpack安装以及使用

元气小坏坏 提交于 2020-01-15 08:10:39
webpack安装: webpack是基于nodejs开发,所以要提前保证安装了nodejs 一、node安装 1、Node.js 官方网站下载: https://nodejs.org/en/download/ 下载完成过,下一步下一步进行安装 然后win+R →cmd → 安装成功,测试安装是否成功,运行CMD,分别输入node -v 和 npm -v 分别查看node和npm的版本号 安装完成后系统目录如图所示(其中,npm随安装程序自动安装,作用就是对Node.js依赖的包进行管理) 二、webpack 安装 全局安装: npm install webpack-cli -g。 1、本地创建项目 如:D:\HbuilderX\test 2、webpack -v 查看webpack版本 webpack-cli -v 查看cli版本 3、cd进入项目文件夹,使用指令 npm init 初始化项目,提示填写一些信息,不填写就enter跳过表示默认,然后在项目根目录下会生成package.js文件,即为打包配置文件 4、npm install 在项目跟目录下安装node_modules,nodejs的依赖文件、 5、如果npm install 创建失败返回0,那么使用npm install express指令 三、webpack 简单实用方法 基于commonJS的JS方法导入导出

nodejs 和 crypto-js 的 aes 加密解密数据交互

徘徊边缘 提交于 2020-01-15 08:09:28
由于工作需要实现一套安全数据传输的机制,选择使用aes加密 目的是使 web和nodejs后台加密传输数据 在使用 crypto-js和nodejs的crypto库的时候遇到的了各种参数问题,这里总结一下 第一个 padding的问题,crypto-js 支持多种自动补全机制,但是nodejs的crypto只能设置自动补全 采用的是 Pkcs7 文档上是没有说明采用的模式 第二个问题 编码的key长度 在nodejs上对于不同长度编码的方式key的要求长度是不同的,123 需要 16位字符 256需要32位字符 但是在 crypto-js 上无论你传入多长的字符都不会触发错误提示,这里需要在crypto-js传入key的时候做好长度判断和过长截取处理 同时key需要通过CryptoJS.enc.Utf8.parse()方法来转换,否则会和nodejs端的密钥不对应 第三个问题 编码的iv在CryptoJs中也需要通过 CryptoJS.enc.Utf8.parse()编码后传入 let algorithm = 'aes-128-cbc' let passwd = 'Y1qXtfbI2jlmlxkn' let iv = '1234567890123456' let data = '测试一下编码' let cryptojs = require('crypto-js'); let

ROS节点

对着背影说爱祢 提交于 2020-01-15 07:31:24
ROS节点介绍 在ROS的世界里,最小的进程单元就是节点(node) 一个软件包里可以有多个可执行文件,可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫做节点 从程序角度来说,node就是一个可执行文件(通常为C++编译生成的可执行文件、Python脚本)被执行,加载到了内存之中 从功能角度来说,通常一个node负责者机器人的某一个单独的功能。由于机器人的功能模块非常复杂,我们往往不会把所有功能都集中到一个node上,而会采用分布式的方式,把鸡蛋放到不同的篮子里 例如有一个node来控制底盘轮子的运动,有一个node驱动摄像头获取图像,有一个node驱动激光雷达,有一个node根据传感器信息进行路径规划,这样做可以降低程序发生崩溃的可能性,试想一下如果把所有功能都写到一个程序中,模块间的通信、异常处理将会很麻烦。 主节点 由于机器人的元器件很多,功能庞大,因此实际运行时往往会运行众多的node,负责感知世界、控制运动、决策和计算等功能。 那么如何合理的进行调配、管理这些node?这就要利用ROS提供给我们的 节点管master ,master在整个网络通信架构里相当于管理中心,管理着各个node node首先master处进行注册,之后master会将该node纳入整个ROS程序中 node之间的通信也是先由master进行“牵线”

双向链表C++实现

℡╲_俬逩灬. 提交于 2020-01-15 05:47:32
双向链表实现,通过C++实现 #ifndef LinkList_hpp #define LinkList_hpp typedef struct Node{ int data; Node* next; Node* pre; }Node; class LinkList{ private: Node *head; Node *tail; int length; public: LinkList(); //分配内存,构建节点 Node* makeNode(); //添加节点到链表尾 bool push(int data); //弹出链表最后一个节点,并返回值 int pop(); //通过index来查找链表中的元素 int objectAt(int index); //插入元素到指定位置的前方 bool insert(int index,int data); //打印链表的所有元素 void display(); }; #endif /* LinkList_hpp */ #include "LinkList.hpp" #include <iostream> #include <mm_malloc.h> using namespace std; LinkList::LinkList(){ head = makeNode(); tail = head; length = 0; } Node

nodejs配置与入门

℡╲_俬逩灬. 提交于 2020-01-15 04:42:00
Node.js 笔记(一) nodejs、npm、express安装 http://blog.csdn.net/haidaochen/article/details/7257655 Windows平台下的node.js安装 直接去nodejs的官网 http://nodejs.org/ 上下载nodejs安装程序,双击安装就可以了 测试安装是否成功: 在命令行输入 node –v 应该可以查看到当前安装的nodejs版本号 简单的例子 写一段简短的代码,保存为helloworld.js,大致看下nodejs是怎么用的。 如下:该代码主要是创建一个http服务器。 [javascript] view plain copy var http = require( "http"); http.createServer( function(request, response) { response.writeHead(200, { "Content-Type": "text/html"}); response.write( "Hello World!"); response.end(); }).listen(8080); console.log( "Server running at http://localhost:8080/"); 打开命令行,转到当前文件所存放的路径下,运行 node

K8S调度器Schduler工作原理--Predicates预选算法过程分析

﹥>﹥吖頭↗ 提交于 2020-01-15 03:57:18
Predicates预选算法过程分析 Scheduler工作流程 Predicates预选流程 predicate的并发过程 用 podFitsOnNode 函数实现一个node的预选过程 单个predicate执行过程 Scheduler工作流程 我们在使用K8S集群时,常常需要对Deployment Controller做创建、修改、删除操作,K8S对应的会创建、销毁和重新调度Pod在合适的节点上,这个调度过程是通过K8S的Scheduler调度器实现的。Schduler的工作流程如下图所示: Informer组件一直在监听etcd中Pod信息的变化,准确来说,监听的是Pod信息中Spec.nodeName字段的变化,一旦检测到该字段为空,则认为集群中有Pod尚未调度到Node中,这时Informer开始将这个Pod的信息加入队列中,同时更新Scheduler Cache缓存。接下来Pod信息从队列中出队,进入Predicates(预选阶段),该阶段通过一系列的预选算法选出集群中适合Pod运行的节点,带着这些信息进入Priorities(优选阶段)。同理,该阶段通过一系列的优选算法为适合该Pod调度对每个Node进行打分,最后选出集群中最适合(也就是分数最高的)Pod运行的 一个节点 ,最后将这个节点和Pod进行绑定(Bind),更新缓存,从而实现Pod的调度。