node

将平板餐桌解析成树的最有效/最优雅的方法是什么?

让人想犯罪 __ 提交于 2020-02-27 07:19:17
假设您有一个存储有序树层次结构的平面表: Id Name ParentId Order 1 'Node 1' 0 10 2 'Node 1.1' 1 10 3 'Node 2' 0 20 4 'Node 1.1.1' 2 10 5 'Node 2.1' 3 10 6 'Node 1.2' 1 20 这是一个图,我们有 [id] Name 。 根节点0是虚构的。 [0] ROOT / \ [1] Node 1 [3] Node 2 / \ \ [2] Node 1.1 [6] Node 1.2 [5] Node 2.1 / [4] Node 1.1.1 您将使用哪种简约方法将其作为正确排序,正确缩进的树输出到HTML(就此而言,还是文本)? 进一步假设您只有基本的数据结构(数组和哈希图),没有带有父/子引用的奇特对象,没有ORM,没有框架,只有两只手。 该表表示为结果集,可以随机访问。 可以使用伪代码或简单的英语,这纯粹是一个概念性问题。 额外的问题:在RDBMS中是否存在从根本上更好的方法来存储这样的树结构? 编辑和添加 要回答一个评论者( Mark Bessey )的问题:根节点不是必需的,因为它永远不会显示。 ParentId = 0是表示“这些是顶级”的约定。 Order列定义如何对具有相同父代的节点进行排序。 我所说的“结果集”可以图片为一个哈希表数组(保留在该术语中)。

Node.js下的Hello World

大城市里の小女人 提交于 2020-02-27 07:12:02
Node.js 技术现在可谓是如火如荼,前后端都统一为Javascript的体验绝对是受到了很多人的青睐,我都后悔以前没抽时间好好学一学Javascript了。 首先,我来介绍一下Node.js。本人实在是才疏学浅,对技术的认识不够,所以就借鉴了血多InfoQ上的好文,后面会给出链接。 Node.js采用C++语言编写而成,是一个Javascript的 运行环境 。重点就在这个运行环境四个字上。意思就是,你编写好的Js后端服务器代码,要通过Node来运行。拿Windows下来说,比如你要运行hello.js的后台代码,可以如下: D:\Nodejs>node hello.js 如果你代码没有错误的话,你就成功的运行了这个服务器。 关于Node.js的优势与特色,大家大可去google下,有很多前辈的文章都说明的非常清楚,总而言之, Node.js采用事件驱动、异步编程,为网络服务而设计,始终保持单线程,通过事件轮询,来实现并行操作。 下面,我为大家介绍一个简单的Node.js示例。我自己也是学习的 Node.js入门 ,这真的是针对初学者的教程,如果想亲自实践下Node.js的同学,完全可以忽视下面的内容,直接跳到该教程实践。 下面说一下我的文件结构: index.js //入口文件,包含了对应url和调用方法的字典 server.js //服务端启动文件 router.js /

webpack4 优化记录

旧街凉风 提交于 2020-02-27 05:18:54
webpack4.0优化那些事儿 一 缩小文件搜索范围 1 include & exclude 1) action 限制编译范围 2) useage module: { rules: [ { test: /\.js$/, use: ['babel-loader?cacheDirectory'], include: path.resolve(__dirname, 'src'), exclude: /node_modules/ } ] } 'babel-loader?cacheDirectory' You can also speed up babel-loader by as much as 2x by using the cacheDirectory option. This will cache transformations to the filesystem. QA 命令行warning [BABEL] Note: The code generator has deoptimised the styling of "/Users/xxx/Documents/xxx/webpack_test/test3/node_modules/lodash/lodash.js" as it exceeds the max of "500KB". 加上exclude限制范围就不会报错了 2

Binary Tree Inorder Traversal

◇◆丶佛笑我妖孽 提交于 2020-02-27 01:22:08
Binary Tree Inorder Traversal Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3} , 1 \ 2 / 3 return [1,3,2] . /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution {   public ArrayList<Integer> inorderTraversal(TreeNode root) {     ArrayList<Integer> al = new ArrayList<Integer>();     if(root == null) return al;     Stack<TreeNode> s = new Stack<TreeNode>();     TreeNode node = root;     //s.push(node);     while(node !=

面试题36:复杂链表的复制

非 Y 不嫁゛ 提交于 2020-02-27 00:59:34
原地进行复制:时间复杂度O(n),空间复杂度O(1) 第一步:将链表节点复制,并将其链接 eg:1->2->3->4---------1->1->2->2->3->3->4->4 第二步:将自由链接进行链接,N->S可转化为N->N’------>S->S’ 第三步:将原节点与复制节点分开,奇节点链接起来,偶节点链接起来 /* // Definition for a Node. class Node { public: int val; Node* next; Node* random; Node(int _val) { val = _val; next = NULL; random = NULL; } }; */ class Solution { public : Node * copyRandomList ( Node * head ) { CloneNodes ( head ) ; connectRandomNodes ( head ) ; return ReConnectNodes ( head ) ; } void CloneNodes ( Node * head ) { Node * pNode = head ; while ( pNode != nullptr ) { Node * pCloneNode = new Node ( pNode - > val ) ;

提问:HBuilderX.2.6.1.20200226.full.zip解压缩中断,错误提示

淺唱寂寞╮ 提交于 2020-02-27 00:11:47
提问:HBuilderX.2.6.1.20200226.full.zip解压缩中断,错误提示 ! C:\HBuilderX.2.6.1.20200226.full.zip: 无法创建 HBuilderX\plugins\npm\node_modules\npm\node_modules\npm-profile\node_modules\make-fetch-happen\node_modules\socks-proxy-agent\node_modules\agent-base\node_modules\es6-promisify\node_modules\es6-promise\dist\es6-promise.auto.min.map 路径和文件名总长度必须不能超过 260 个字符 系统找不到指定的路径。 ! C:\HBuilderX.2.6.1.20200226.full.zip: 无法创建 HBuilderX\plugins\npm\node_modules\npm\node_modules\npm-profile\node_modules\make-fetch-happen\node_modules\socks-proxy-agent\node_modules\agent-base\node_modules\es6-promisify\node_modules\es6

ELK之ElasticSearch 6.4.x安全认证Search Guard6

无人久伴 提交于 2020-02-26 22:55:22
ELK的安装非常简单,解压稍加配置即能用。 今天的重点是记录ELK的安全认证,ELK安装好后,ElasticSearch是可以直接浏览访问的,非常不安全,Kibana也是一样直接访问web界面无需密码。 这里使用的是开源免费社区版:Search Guard 6插件来做安全认证。 软件版本与环境 ElasticSearch集群3台 10.1.1.195 elasticsearch logstash 10.1.1.196 elasticsearch 10.1.1.197 elasticsearch kibana ELK版本: elasticsearch-6.4.0 logstash-6.4.0 kibana-6.4.0 JDK1.8 下载地址: https://www.elastic.co/downloads E: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz L: https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.zip K: https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz JDK1.8:

线段树入门

拈花ヽ惹草 提交于 2020-02-26 22:19:59
线段树入门 引题 有一个包含 N N N 个数的序列( N ≤ 1 e 6 N \leq 1e6 N ≤ 1 e 6 ),给 Q ( ≤ 1 e 6 ) Q(\le 1e6) Q ( ≤ 1 e 6 ) 个操作,每个操作是下面两种中的一种: 区间加:给定 l , r , x l,r,x l , r , x ,将序列 N N N 下标 ∈ [ l , r ] \in [l, r] ∈ [ l , r ] 的数加上 x x x 区间求和:给定 l , r l,r l , r ,询问下标 ∈ [ l , r ] \in [l,r] ∈ [ l , r ] 的数的和 一种很暴力的想法是对每个操作都一遍循环进行修改、求和,显然会超时;看到区间求和很容易就能想到前缀和,这样可以把区间求和降到常数复杂度,然而区间加还是 O ( N ) O(N) O ( N ) ;这时就需要线段树登场了 介绍 线段树是一种实用的数据结构,它可以快速地处理区间操作,维护区间信息。线段树是一棵二叉树,它的每一个节点存储的是一个区间的信息(如区间和, 左右端点等),如下图所示 笔者个人比较习惯用结构体来定义每一个节点,如果只开 2 N 2N 2 N 个节点,有一些情况是不够的,索性开到 4 N 4N 4 N ,并从上到下,从左向右进行编号,根节点编号为1,其左儿子是2,右儿子是3,一次类推: # define ls

二叉搜索树转换成单链表

穿精又带淫゛_ 提交于 2020-02-26 15:43:59
题目概述 二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。 思路 BST的半线性结构转换成线性结构,其实就是 中序遍历 而已。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* convertBiNode(TreeNode* root) { if (root == nullptr) return root; std::stack<TreeNode*> stack; // 中序遍历需要的栈 while(root) { stack.push(root); root = root->left; } TreeNode* newHead = stack.top(); // 最左的那棵叶节点即为单链表头结点 while(!stack.empty()) {

mac 安装 nodejs

随声附和 提交于 2020-02-26 15:36:40
mac 安装 nodejs 只需要下面几个步骤。 安装nodeJs 打开终端执行下面的命令: brew update 这将用最新版本的Node列表更新Homebrew。 brew install node 这将安装nodeJs。 node -v 、 npm -v 检查是否安装成功。 更新nodeJs和NPM 新版本的Node和NPM经常出现。您可以使用Homebrew来更新其安装的软件。 确保Homebrew具有最新版本的Node软件包。在终端执行 brew update 升级nodeJs: brew upgrade node 如何卸载nodeJs和NPM 您可以使用Homebrew卸载它安装的软件包: brew uninstall node 使用npm。 可以看到npm全局安装的包是在 /usr/local/lib/node_modules 目录下面。 来源: oschina 链接: https://my.oschina.net/kunBlog/blog/3164916