node

食物链 (带边权并查集)

[亡魂溺海] 提交于 2020-01-14 20:03:36
题目链接 题意:中文题面,无过多客套话,就不说了 思路:参考: https://blog.csdn.net/ccsu_cat/article/details/78089233 把父节点与子节点的关系用向量表示,一共有三种关系, 0代表同类;1代表被根节点吃;2代表吃根节点。 #include <cstdio> #include <iostream> #include <vector> using namespace std; const int maxn = 5e4+100; struct node { int p; int relation; }node[maxn]; void init(int n) { for(int i=1;i<=n;i++) { node[i].p = i; node[i].relation = 0; } } int find(int x) { if(x == node[x].p)return x; int tmp = node[x].p; node[x].p = find(tmp); node[x].relation = (-node[tmp].relation + node[x].relation + 3)%3; return node[x].p; } int main() { int n,m,op,u,v; int ans = 0; scanf("

二叉树的常见算法

♀尐吖头ヾ 提交于 2020-01-14 18:27:47
二叉树的遍历 先序遍历指的就是先访问本节点,再访问该节点的左孩子和右孩子; 中序遍历指的就是:先访问左孩子,再访问本节点,最后访问右孩子; 后序遍历指的就是:先访问左右孩子,最后访问本节点。 层次遍历:按照树的每一层(高度)进行遍历。 深度遍历 递归实现:先序、中序、后序 非递归实现:先序、中序、后序 层次遍历 深度遍历 递归实现先序、中序、后序 #include <stdio.h> //声明树类型 typedef struct TREEtag TREEtagNode; struct TREEtag { int val; TREEtagNode *left; TREEtagNode *right; }; //访问 void get(TREEtagNode *node){ printf("%d\n",node->val); } //先序遍历 void r1(TREEtagNode *node){ if(node != NULL) { // get(node); // r1(node->left); // r1(node->right); } } //中序遍历 void r2(TREEtagNode *node){ if(node != NULL) { // r2(node->left); // get(node); // r2(node->right); } } //后序遍历

ConcurrentHashMap源码解析 JDK8

*爱你&永不变心* 提交于 2020-01-14 17:33:54
一、简介 上篇文章 详细介绍了HashMap的源码及原理,本文趁热打铁继续分析ConcurrentHashMap的原理。 首先在看本文之前,希望对HashMap有一个详细的了解。不然看直接看ConcurrentHashMap的源码还是有些费劲的。 相信对HashMap,HashTable有一定了解,应该知道HashMap是不具备线程安全性的,在resize时会丢数据(JDK8),而HashTable虽然保证了线程安全性,但是其是通过给每个方法加Synchronized关键字达到的同步目的。但是都知道Synchronized在竞争激烈的多线程并发环境中,在性能上的表现是非常不如人意的。那在高并发环境中HashMap如何保证线程安全而又不浪费太多性能呢?答案就是Java J.U.C并发包中的ConcurrentHashMap。 依然开局一张图。JDK8中的ConcurrentHashMap数据结构。 呃呵,和HashMap的结构是一样的,没错在数据结构层面,ConcurrentHashMap和HashMap是完全一样的。有了这个基础继续往下看。 二、历史版本 ConcurrentHashMap的历史版本大致分界线在JDK8。也就是可以分为JDK8和JDK8以前版本。 数据结构的区别 在JDK8之前HashMap没有引入红黑树,同样的ConcurrentHashMap也没有引入红黑树

kubernetes的云中漫步(二)--二进制安装kubernetes集群

让人想犯罪 __ 提交于 2020-01-14 16:02:54
一:集群部署准备工作 1.三台服务器: k8s-master:192.168.122.69 k8s-node-1: 192.168.122.232 k8s-node-2: 192.168.122.68 2.验证MAC和product_uuid的唯一性 检查MAC的唯一性: [ root@k8s-master ~ ] # ip link 1: lo: < LOOPBACK,UP,LOWER_UP > mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: < BROADCAST,MULTICAST,UP,LOWER_UP > mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 52:54:00:90:ee:f3 brd ff:ff:ff:ff:ff:ff [ root@k8s-node-1 ~ ] # ip link 1: lo: < LOOPBACK,UP,LOWER_UP > mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1 link

ConcurrentHashMap原理解析

僤鯓⒐⒋嵵緔 提交于 2020-01-14 15:45:13
概述 ConcurrentHashMap是JDK提供的一个线程安全的集合类,它内部的结构原理和我们常用的HashMap基本是一致,那我们可以先来认识一下HashMap,这样基本上也能大致明白ConcurrentHashMap了。 数据结构 HashMap与ConcurrentHashMap都是用来存放一种键值对形式的数据,那它们内部的数据结构是怎么样的呢? 首先来看看HashMap的put方法 public V put(K key, V value) { // put方法中首先对key进行hash运算,再调用putVal return putVal(hash(key), key, value, false, true); } final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; if ((tab = table) == null || (n = tab.length) == 0) n = (tab = resize()).length; if ((p = tab[i = (n - 1) & hash]) == null) tab[i] = newNode(hash, key, value, null

C++ STL sort 函数的用法

99封情书 提交于 2020-01-14 13:39:07
sort 在 STL 库中是排序函数,有时冒泡、选择等 $\mathcal O(n^2)$ 算法会超时时,我们可以使用 STL 中的快速排序函数 $\mathcal O(n \ log \ n)$ 完成排序 sort 在 algorithm 库里面,原型如下: template <class RandomAccessIterator> void sort ( RandomAccessIterator first, RandomAccessIterator last ); template <class RandomAccessIterator, class Compare> void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp ); 我们会发现 sort 有两种形式一个有三个参数,一个有两个参数,我们先讲讲两个参数的吧! sort 的前两个参数是起始地址和中止地址 如:sort(a,a+n) 表示对 a[0] ... a[n-1] 排序 代码如下: #include <algorithm> #include <cstdio> using namespace std; int main() { int n,a[1001]; scanf("%d",&n); for (int i =

二叉搜索树的第k个结点

喜你入骨 提交于 2020-01-14 11:19:23
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 看到题目中提到 二叉搜索树按大小顺寻 则想到左序遍历得到的数是由小到大排列的 public class Solution { int index = 0; TreeNode KthNode(TreeNode pRoot, int k) { if(pRoot != null){ TreeNode node = KthNode(pRoot.left,k); if(node != null){ return node; } index++; if(index == k){ return pRoot; } node = KthNode(pRoot.right,k); if(node != null){ return node; } } return null; } } 相关知识 二叉搜索树 树的基本知识 二叉树的知识 二叉查找树 平衡二叉树 红黑树 B树,B-树,B+树 二叉搜索树具有以下性质: 如果节点的左子树不空,则左子树上所有结点的值均小于等于它的根结点的值; 如果节点的右子树不空,则右子树上所有结点的值均大于等于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树; 来源: CSDN 作者: zyp7355 链接: https://blog.csdn

Uglifyjs入门

我们两清 提交于 2020-01-14 08:48:22
需要先 安装node ,进入命令行,查看node,npm是否正确安装。 接下来安装UglifyJS,命令如:npm install uglify-js -g 最后别忘了把node和npm添加到环境变量中,我的分别是 C:\Program Files (x86)\nodejs\; C:\Users\taozhou\AppData\Roaming\npm; 现在就可以使用uglifyjs就行压缩了,如 uglifyjs folder/dom.js -> folder/dom-min.js 会把目录folder下dom.js压缩,保存在同一个目录下。 详细参数参考: https://github.com/mishoo/UglifyJS 来源: https://www.cnblogs.com/snandy/archive/2012/03/03/2377390.html

Nodejs-基础-fs

旧时模样 提交于 2020-01-14 05:27:41
前言 前文咱们已经聊过原生NodeJS如何打一个最简单的服务器,也就是nodejs http模块 在http篇我们结尾做了一个小东西 - 详细文章地址: Nodejs-基础-http 也就是这个,这里面咱们直接用switch来判断请求的什么,那这个大家也都知道,如果东西多了,就写疯了, 而且,现在只能输入一个字符串,要是请求个图片或者视频,就不行了,当然了,base64也可以,不过。。。。。。那玩意体积不还大么,再说也有更好的方法,也就是咱们今天说的——fs模块 那么今天我就来聊一聊fs模块 功能:fs主要是读文件和写文件用的,用途非常广法也非常方便,也是系统自带的文件类型操作的模块 应用场景 在web端我们通常会需要一些埋点,所谓埋点也就是看看用户都对什么感兴趣,都点了写什么,搜集数据供数据部分分析,做可视化也好做一些分析模型都好,都是需要详细的数据的,这些一般都是后台保存好现成的文件,对文件进行增删改以及格式整理 在写一些工具的时候,类似webpack这种,都是需要用fs读出来再去交给babel编译成ast语法树然后处理完再写入新文件 在一些上传图片、视频的时候会用到 用法 说了那么多,具体怎么用呢,其实fs有很多很多方法,复制粘贴移动的,咱们这里说两个主要并且常用的 fs.readFile(文件名,function(err, data){}) —— 读文件 fs

Windows平台下的node.js安装

夙愿已清 提交于 2020-01-14 04:20:35
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 helloworld.js命令即可 如果一切正常,可以看到命令行输出:Server running at http://localhost:8080/ 同时,在浏览器输入http:/