node

Map-HashMap

[亡魂溺海] 提交于 2020-03-15 18:03:04
一、HashMap数据结构   JDK 1.7 采用数组 + 链表实现。   JDK 1.8 采用数组 + 链表 + 红黑树实现。链表采用内部类Node节点实现。红黑树采用内部类TreeNode节点实现。 二、重要参数  // 1. 容量(capacity): 必须是2的幂 & <最大容量(2的30次方),默认是16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;  // 最大容量 = 2的30次方(若传入的容量过大,将被最大值替换) static final int MAXIMUM_CAPACITY = 1 << 30; // 2. 加载因子(Load factor):HashMap在其容量自动增加前可达到多满的一种尺度 // 加载因子过大则容器内可添加更多元素,空间效率高,但是容易导致哈希冲突。反之反之 final float loadFactor; // 实际加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; // 默认加载因子 = 0.75 h // 3. 扩容阈值 = 容量 x 加载因子,哈希表的大小 ≥ 扩容阈值时,就会扩容哈希表 int threshold; // 4. 其他 transient Node<K,V>[] table; //

求一个二叉树中距离最远的两个节点

那年仲夏 提交于 2020-03-15 16:32:38
/*求二叉树中距离最远的两个点 * 基本思路: * 递归计算两棵树的最大高度,设置一个全局变量,距离最远的两个节点element * 其中:在计算左子支,直接刷新上述全局变量,在计算右边子支时,设置两个临时Node变量,变量里的element用于 * 保存右边子支的两个最远距离。根据比较两个距离的大小、其父节点所在的树三个的大小,来重新刷新全局变量。 * 一个Trick~:在计算子支的最远距离的时候,因为要和其父节点所在的树比较大小,保存子支的最大距离的点数。 */ public class MaxLenTree { public Node root; public int len = 0; public class Node { char element; int hight; Node left; Node right; public Node(char element, int hight, Node left, Node right) { this.element = element; this.hight = hight; this.left = left; this.right = right; } Node() { } } MaxLenTree() { /* Node e = new Node('e', 0, null, null); Node d = new

拓扑排序及其实际应用

此生再无相见时 提交于 2020-03-15 13:17:53
  最近在做实际项目中遇到了一个问题,如何判断一个层级结构的图是否存在循环引用。刚开始想到了方法是用递归进行判断,后来想到大学学过的拓扑排序可以解决该问题,于是翻了下数据结构这本书,阅读了园友的文章,根据自己的理解写下了这篇随笔。 阅读目录 拓扑排序介绍 问题引入及算法实现 本章总结 回到顶部 拓扑排序介绍   百度百科定义:   对一个 有向无环图 (Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个 偏序 得到该集合上的一个 全序 ,这个操作称之为拓扑排序。   上面的定义看完可能不知道是什么意思,举两个实际的例子就明白了。 1.大学课程排序    大学课程的学习是有先后顺序的,C语言是基础,数据结构依赖于C语言,其它课程也有类似依赖关系。这样的一个课程安排是怎么实现的呢?   2.VS项目编译顺序 假设VS中有三个项目A,B,C,它们的关系如下图。VS编译器是如何判断三个项目的编译顺序的呢? 回到顶部 问题引入及算法实现   这次实际项目中碰到的问题可以归纳为控件联动选择,即常见的省份,城市,地区联动

NodeJS express框架的使用

不问归期 提交于 2020-03-15 07:59:08
首先,可以通过npm或者淘宝镜像cnpm全局安装epress框架,这里不具体说了 npm install -g express npm install -g express-generator 新建一个项目 express -e xxx 目录说明: bin:项目的启动文件,也可以放其他脚本。 node_modules:用来存放项目的依赖库。 public:用来存放静态文件(css,js,img)。 routes:路由控制器。 views:视图目录(相当于MVC中的V)。 app.js:项目入口及程序启动文件。 package.json:包描述文件及开发者信息。 -----------------------------------------------其他,自己创建使用------------------------------ actions:控制器,对请求的操作(相当于MVC中的C)。 plugs:数据库操作、邮件帮助等文件。 config:配置目录。 Dockerfile:做自动化部署的配置文件。 .gitignore:上传git的忽略文件配置。 README.md:项目说明文件。 app.js文件: 1 /** 2 * 应用程序的入口文件 3 */ 4 //加载express模块 5 const express = require('express'); 6 const

Ubuntu 16.04下配置 Nginx 与 Node.js 以及服务的部署

浪子不回头ぞ 提交于 2020-03-15 06:53:37
第一步:安装nginx sudo apt-get update sudo apt-get install nginx 如果遇到依赖问题,尝试执行 sudo apt-get -f install 命令 第二步:配置nginx 首先备份原先的配置文件: sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup 修改配置文件: 如果你熟悉vi的使用: 使用vi打开配置文件: /etc/nginx/sites-available/default 修改其中的 location / 配置如下: conf location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } 如果你不熟悉: 使用scp将配置文件拷到本地: scp username@ip_address:/etc/nginx/sites-available

C#数据结构-链表

◇◆丶佛笑我妖孽 提交于 2020-03-15 05:29:24
理论基础: 链表是用一组任意的存储单元来存储线性表中的数据元素。 如果结点的引用域只存储该结点直接后继结点的存储地址,则该链表叫单链表(Singly Linked List)。 单链表由头引用H唯一确定。头引用指向单链表的第一个结点,也就是把单链表第一个结点的地址放在H中。 C#实现: 1接口 引用线性表的接口IListDS<T> 2实现 首先,必须定义一个单链表的节点类 public class Node<T> { private T data; //数据域 private Node<T> next; //引用域 public Node(T val) { data = val; next = null; } public Node() { data = default(T); next = null; } public T Data { get { return data; } set { data = value; } } public Node<T> Next { get { return next; } set { next = value; } } } 实现主体类 Append,Insert,InsertBack三个方法实质上都是插入操作,可以考虑用overload或者override来实现,有兴趣的朋友试试。 public class LinkList<T> :

C语言实现单链表(带头节点)

北城以北 提交于 2020-03-14 14:41:27
C语言在实现单链表存储时需要注意的几点: 1.定义结构体,typedef:用于给结构体另命名 // 定义结构体类型 typedef struct Node{ int data; struct Node *next; }Node,*LinkedList; 2.链表初始化 // 链表初始化 LinkedList LinkedListInit(){ Node *Head,*L,*LNew; // 申请节点空间 Head = (Node *)malloc(sizeof(Node)); // 判断是否有足够内存空间 if(Head == NULL){ printf("申请空间失败\n"); exit(-1); } L = Head; L->next = NULL; for(int i=0;i<3;i++){ // 分配第一个节点 LNew = (Node *)malloc(sizeof(Node)); // 判断是否有足够内存空间 if(LNew == NULL){ printf("申请空间失败\n"); exit(-1); } LNew->data = i; L->next = LNew; LNew->next = NULL; L = LNew; } return Head; } 具体源码demo.c #include <stdio.h> #include <malloc.h>

node sass

孤街浪徒 提交于 2020-03-14 11:41:36
set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass -D yarn add node-sass --dev 来源: https://www.cnblogs.com/shangyueyue/p/12298794.html

vue-cli 结构

。_饼干妹妹 提交于 2020-03-14 09:45:09
. | -- build / / 项目构建 ( webpack )相关代码 | | -- build .js / / 生产环境构建代码 | | -- check - version .js / / 检查 node、 npm等版本 | | -- dev - client .js / / 热重载相关 | | -- dev - server .js / / 构建本地服务器 | | -- utils .js / / 构建工具相关 | | -- webpack .base .conf .js / / webpack基础配置 | | -- webpack .dev .conf .js / / webpack开发环境配置 | | -- webpack .prod .conf .js / / webpack生产环境配置 | -- config / / 项目开发环境配置 | | -- dev .env .js / / 开发环境变量 | | -- index .js / / 项目一些配置变量 | | -- prod .env .js / / 生产环境变量 | | -- test .env .js / / 测试环境变量 | -- src / / 源码目录 | | -- components / / vue公共组件 | | -- store / / vuex的状态管理 | | -- App .vue /

二叉树之前序、中序、后序、层序遍历

拈花ヽ惹草 提交于 2020-03-14 07:07:47
二叉树的遍历 二叉树的表示 //Java public class TreeNode{ int val; Node left,right; public Node(int val){ this.val=val; } } 前序遍历 递归方法 public static void preOrder1(TreeNode root){ if(root == null) return; System.out.println(root.val); preOrder1(root.left); preOrder1(root.right); } 非递归方法 public static void preOrder2(TreeNode root){ Stack<TreeNode> stack = new Stack<>(); TreeNode node = root; while(node != null || !stack.empty()){ if(node != null){ System.out.println(node.val); stack.push(node); node = node.left; }else{ node = stack.pop(); node = node.right; } } } 中序遍历 递归方法 public static void inOrder1(TreeNode