node

Java8 HashMap源码分析

与世无争的帅哥 提交于 2019-12-25 05:42:14
java.util.HashMap 是最常用的java容器类之一, 它是一个线程不安全的容器. 本文对JDK1.8.0中的HashMap实现源码进行分析. HashMap 使用位运算巧妙的进行散列并使用链地址法处理冲突. 自JDK1.8后, 若表中某个位置元素数超过阈值 则会将其自动转换为红黑树来提高检索效率. HashMap 中的迭代器同样采用 fail-fast 机制, 即若迭代过程中容器发生结构性改变, 则会终止迭代. HashMap 主要有三个视图接口 keySet() , values() , entrySet() . 它们都是基于迭代器实现的, 并不实际存储数据. 哈希表 自JDK1.8.0开始HashMap使用静态内部类 Node 来存储键值对结构, 不再使用 Map.Entry : static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K key, V value, Node<K,V> next) {...} public final K getKey() { return key; } public final V getValue() { return value; }

java实现数据结构13(红黑树详解代码之自定义红黑树)

落花浮王杯 提交于 2019-12-25 05:17:36
自定义红黑树 import com . sun . org . apache . regexp . internal . RE ; /** * @description: 自定义红黑树 * @author: liangrui * @create: 2019-12-24 13:50 **/ public class RedBlackTree < K extends Comparable < K > , V > { private static final boolean RED = true ; private static final boolean BLACK = false ; private class Node { public K key ; public V value ; public Node left , right ; public boolean color ; public Node ( K key , V value ) { this . key = key ; this . value = value ; left = null ; right = null ; color = RED ; } } private Node root ; private int size ; public RedBlackTree ( ) { root = null ;

解决Cannot download "https://github.com/sass/node-sass/releases/download/...."

一笑奈何 提交于 2019-12-25 04:38:10
遇到好几次了,存一下这个命令 由于网速原因,执行npm install命令过程中,node-sass无法下载,那么可以使用淘宝镜像下载,具体命令如下: npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ 来源: CSDN 作者: 水越帆 链接: https://blog.csdn.net/qq_41618510/article/details/103683308

Java并发包--LinkedBlockQueue

陌路散爱 提交于 2019-12-25 02:02:41
转载请注明出处: http://www.cnblogs.com/skywang12345/p/3503458.html LinkedBlockingQueue介绍 LinkedBlockingQueue是一个单向链表实现的阻塞队列。该队列按 FIFO(先进先出)排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。 此外,LinkedBlockingQueue还是可选容量的(防止过度膨胀),即可以指定队列的容量。如果不指定,默认容量大小等于Integer.MAX_VALUE。 LinkedBlockingQueue原理和数据结构 LinkedBlockingQueue的数据结构,如下图所示: 说明 : 1. LinkedBlockingQueue继承于AbstractQueue,它本质上是一个FIFO(先进先出)的队列。 2. LinkedBlockingQueue实现了BlockingQueue接口,它支持多线程并发。当多线程竞争同一个资源时,某线程获取到该资源之后,其它线程需要阻塞等待。 3. LinkedBlockingQueue是通过单链表实现的。 (01) head是链表的表头。取出数据时,都是从表头head处插入。 (02) last是链表的表尾。新增数据时

使用kubeadm安装Kubernetes 1.15

假装没事ソ 提交于 2019-12-25 00:21:11
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。 1.准备 1.1系统配置 [root@k8s-master ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.246 k8s-master 192.168.0.247 k8s-node1 192.168.0.248 k8s-node2 如果各个主机启用了防火墙,需要开放Kubernetes各个组件所需要的端口,可以查看Installing kubeadm中的”Check required ports”一节。 这里简单起见在各节点禁用防火墙: systemctl stop firewalld systemctl disable firewalld 禁用SELINUX: setenforce 0 vi /etc

linux下升级npm以及node

一个人想着一个人 提交于 2019-12-24 20:57:08
npm升级 废话不多说,直接讲步骤。先从容易的开始,升级npm。 npm这款包管理工具虽然一直被人们诟病,很多人都推荐使用yarn,但其使用人数还是不见减少,况且npm都是随node同时安装好的,一时让我抛弃它,还是有点难做到。 npm i -g npm 1 是的,你没看错。升级npm只需要像安装其它包一样install一下就行,windows和linux下都可以通过此方式进行升级,你还能指定npm的版本。 npm i -g npm@5.0.0 1 node升级 node升级相对于npm来说就复杂一点了。 1、首先通过npm安装node的版本管理工具“n“,不用惊讶,名字就是这么简单,就叫n。据了解,n是node下的一个模块,作者是Express框架的开发者。 npm i -g n 1 2、检查n模块 先查看系统node的安装路径,n模块的默认路径为 ‘/usr/local’。 $ which node /data/home/server/nodejs/bin/node #举个例子 1 2 3 如果路径与n模块的默认路径相同可以跳过3步骤。 3、通过N_PREFIX变量来修改 n 的默认node安装路径。 (1) 编辑环境配置文件 vim ~/.bash_profile 1 (2) 将下面两行代码插入到文件末尾 export N_PREFIX=/data/home/server

Ingress 对象

一笑奈何 提交于 2019-12-24 19:16:30
Ingress 介绍 在Kuberbetes中除了使用NodePort,LoadBalancer, Port Proxy(hostPort)等实现外部访问入口之外,还可以使用Kubernetes 自带的Ingress来实现服务的负载均衡和策略路由的工作,其本质相当于一个Nginx代理服务器,可以对请求(http)实现精细的控制。 Ingress 是可以利用 Nginx、Haproxy 等负载均衡器暴露集群内服务的工具, 使用Ingress可以配置一个用于外部访问的URL地址,同时实现流量负载,SSL,基于名称的虚拟主机(例如Nginx的upstream)等。用户通过发送POST请求到API server,来申请Ingress资源, Ingress控制器负责完成Ingress转发工作,通常会使用负载均衡,也可以配置边缘路由器或其他前端以帮助以HA方式处理流量。 在当前版本中,Ingress处于测试版本,在使用Ingress时,需要先创建Ingress Contronller. 创建Ingree Controller 参考链接 在Kubernetes中,Ingress Controller将以Pod的形式运行,监控apiserver的 ingress接口后端的backend services,如果service发生变化,则Ingress Controller 应自动更新其转发规则。

(N叉树 递归) leetcode589. N-ary Tree Preorder Traversal

梦想的初衷 提交于 2019-12-24 19:02:32
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? --------------------------------------------------------------------------------------------------------------------------------- 额,这个迭代不会,不过,如果会了二叉树的前序遍历的递归解法的话,解这个题就会感觉简单了,同理,后序遍历也是,不过,中序遍历上可能会很难写。 C++代码: /* // Definition for a Node. class Node { public: int val; vector<Node*> children; Node() {} Node(int _val, vector<Node*> _children) { val = _val; children = _children; }

LeetCode 589. N叉树的前序遍历(N-ary Tree Preorder Traversal)

我是研究僧i 提交于 2019-12-24 17:53:27
589. N叉树的前序遍历 589. N-ary Tree Preorder Traversal LeetCode 589. N-ary Tree Preorder Traversal 题目描述 给定一个 N 叉树,返回其节点值的前序遍历。 例如,给定一个 3 叉树 : 返回其前序遍历: [1,3,5,6,2,4]。 说明: 递归法很简单,你可以使用迭代法完成此题吗? Java 实现 Iterative Solution import java.util.LinkedList; import java.util.List; import java.util.Stack; 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> result = new LinkedList<>(); if (root == null) { return result; } Stack<Node>

二进制部署k8s 1.15.3

霸气de小男生 提交于 2019-12-24 15:14:54
二进制部署k8s 1.15.3 自带补全 source <(kubectl completion bash) kubectl get csr kubectl certificate approve XXXXID kubectl get node minikube Minikube是一个工具,可以在本地快速运 行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。 官方地址:https://kubernetes.io/docs/setup/minikube/ kubeadm Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ 二进制包 从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。 小结: 生产环境中部署Kubernetes集群,只有Kubeadm和二进制包可选,Kubeadm降低部署门槛,但屏蔽了 很多细节,遇到问题很难排查。我们这里使用二进制包部署Kubernetes集群,我也是推荐大家使用这种方式,虽然手动部署麻烦点,但学习很多工作原理,更有利于后期维护。 软件环境 软件 版本 操作系统