node

Node搭建服务器记录

岁酱吖の 提交于 2020-02-26 03:11:06
node搭建一个简易服务器比较简单 let http = require ( "http" ) ; http . createServer ( function ( req , res ) { res . write ( "请求成功" ) ; res . end ( ) ; } ) . listen ( 3000 ) ; console . log ( "服务器已经运行在 http://192.168.137.1:3000" ) ; 创建一个server.js文件写入上面的代码, 控制点转到当前文件夹下, 输入命令 node server.js 这时在浏览器请求打印出来这个地址就会收到…一串乱码 所以这个时候就得设置响应头了 res . writeHead ( 200 , { "Content-Type" : "text/json" , // 返回的类型 "Access-Control-Allow-Origin" : "*" // 可以解决跨域的问题 } ) ; 返回类型一定不能是html, 不然你就得在mate标签中设置返回值的字符集, 不然中文就还是乱码 来源: CSDN 作者: Knife_SX 链接: https://blog.csdn.net/qq_36800820/article/details/104441730

POJ 2418 Hardwood Species

泪湿孤枕 提交于 2020-02-26 03:05:35
题目地址为 http://poj.org/problem?id=2418 这题,我起先用的是AVL树,结果时间超时,最后发现,直接用二叉树就行了,根本就不需要旋转。由于数据是随机的,因而这棵二叉树的性能还行。当然还可以用 trie树 来解决。 题目很简单,直接上代码 1 #include <iostream> 2 #include <stack> 3 #include <string.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 using namespace std; 7 8 class Node 9 { 10 public: 11 char* data; 12 Node* left; 13 Node* right; 14 int balance; 15 int count; 16 Node() 17 { 18 data = NULL; 19 left = right = NULL; 20 balance = count = 0; 21 } 22 Node(char* s) 23 { 24 data = new char[30]; 25 strcpy(data, s); 26 left = NULL; 27 right = NULL; 28 balance = 0; 29 count = 1; 30 } 31 }; 32 33

Kubernetes测试环境minikube部署(理论+实战!!!)

て烟熏妆下的殇ゞ 提交于 2020-02-26 02:35:32
Kubernetes的概述 Kubernetes是一个开源的Docker容器编排系统,Kubernetes简称K8S。 调度计算集群的节点,动态管理上面的作业 通过使用[labels]和[pods]的概念,将应用按逻辑单元进行分组 K8S用于容器应用程序的部署,扩展和管理 K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能 Kubernetes目标是让部署容器化应运简单高效 官方网站: http://www.kubernetes.io Kubernetes的特性 自我修复: 在节点故障时重新启动失败的容器,替换和重新部署,保证预测的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。 弹性伸缩: 使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务 自动部署和回滚: K8S采用滚动更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务 服务发现和负载均衡: K8S为多个容器提供一个统一的访问入口(内部IP地址和UI个DNS地址),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题 机密和配置管理: 管理机密数据和应用程序配置。而不需要把敏感数据暴露在镜像里

Redis 群集部署

妖精的绣舞 提交于 2020-02-26 02:31:12
一、Redis群集相关概念 Redis是从3.0版本开始支持cluter的,采用的是hash槽方式,可以将多个Redis实例整合在一起,形成一个群集,也就是将数据分散存储到群集中的多个节点上。 Redis的cluster是一个无中心的结构,在群集中,每个master的身份是平等的,每个节点都保存数据和整个群集的状态,并且知道其他节点所负责的槽,也会定时发送心跳信息,能够及时感知群集中异常的节点,并且采取投票的方式来决定该节点是否为不可用,若票数为群集中节点的半数以上,则认为该节点不可用,也正是因为此特点,所以要部署Redis群集,节点数量最少要三个及以上。 群集角色有master和slave,master之间分配slots(槽),槽点编号是0-16383(共16384个)。 默认情况下,每个群集节点有两个TCP端口在监听,一个是6379(用于监听客户端的访问连接),另一个是16379(用于群集之间的节点通信)。注意,防火墙需要放行这两个端口的流量。 Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。 Redis提供的这两种方式进行持久化,一种是RDB持久化

(一)Kubernetes/K8s 集群架构与组件

喜你入骨 提交于 2020-02-26 01:34:18
K8s相关概念:master/node master Master 是 Cluster 的大脑,它的主要职责是调度,即决定将应用放在哪里运行,实现高可用,可以运行多个 Master。 运行的相关组件: Kubernetes API Server(kube-apiserver),集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储。 Kubernetes Controller Manager,处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。 Kubernetes Scheduler,根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。 etcd Server,分布式键值存储系统。用于保存集群状态数据,比如Pod、Service等对象信息 node Node 的职责是运行容器应用。Node 由 Master 管理,Node 负责监控并汇报容器的状态,并根据 Master 的要求管理容器的生命周期。运行的相关组件如下: kubelet:是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret

k8s安装

我与影子孤独终老i 提交于 2020-02-26 01:24:34
环境 centos 7 psbc-master 192.168.182.120 1-psbc-node 192.168.182.121 master和node节点执行以下操作 修改主机名 [root@localhost ~]# hostnamectl set-hostname psbc-master [root@localhost ~]# hostname psbc-master [root@localhost ~]# cat /etc/hostname psbc-master [root@localhost ~]# view /etc/hosts 增加一行 192.168.182.120 psbc-master 2.ip地址设置成静态的 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes #IPV4_FAILURE_FATAL=no #IPV6INIT=yes #IPV6_AUTOCONF=yes #IPV6_DEFROUTE=yes #IPV6_PEERDNS=yes #IPV6_PEERROUTES=yes #IPV6_FAILURE_FATAL=no

ConcurrentHashMap1.8源码

我的梦境 提交于 2020-02-26 00:08:56
/** * 初始化数组table, * 如果sizeCtl小于0,说明别的数组正在进行初始化,则让出执行权 * 如果sizeCtl大于0的话,则初始化一个大小为sizeCtl的数组 * 否则的话初始化一个默认大小(16)的数组 * 然后设置sizeCtl的值为数组长度的3/4 */ private final Node<K,V>[] initTable() { Node<K,V>[] tab; int sc; while ((tab = table) == null || tab.length == 0) { //第一次put的时候,table还没被初始化,进入while if ((sc = sizeCtl) < 0) //sizeCtl初始值为0,当小于0的时候表示在别的线程在初始化表或扩展表 Thread.yield(); // lost initialization race; just spin else if (U.compareAndSwapInt(this, SIZECTL, sc, -1)) { //SIZECTL:表示当前对象的内存偏移量,sc表示期望值,-1表示要替换的值,设定为-1表示要初始化表了 try { if ((tab = table) == null || tab.length == 0) { int n = (sc > 0) ? sc :

如何使用在node_modules中本地安装的软件包?

戏子无情 提交于 2020-02-26 00:08:11
如何在 node.js 中使用模块的本地版本。 例如,在我的应用中,我安装了coffee-script: npm install coffee-script 这会将它安装在 ./node_modules ,而coffee命令在 ./node_modules/.bin/coffee 。 当我位于项目的主文件夹中时,是否可以运行此命令? 我猜我在寻找与bundler中的 bundle exec 类似的东西。 基本上,我想指定一个咖啡脚本的版本,参与该项目的每个人都应该使用。 我知道我可以添加 -g 标志以在全球范围内安装它,这样咖啡在任何地方都可以正常工作,但是如果我想每个项目使用不同版本的咖啡怎么办? #1楼 更新 :正如Seyeong Jeong在下面的答案中指出的那样,从npm 5.2.0开始,您可以使用 npx [command] ,这更加方便。 5.2.0之前的版本的旧答案 : 推杆的问题 ./node_modules/.bin 进入PATH的地方是,它仅在当前工作目录是项目目录结构的根目录(即 node_modules 的位置) node_modules 与您的工作目录无关,您可以使用以下命令获取本地安装的二进制文件的路径: npm bin 要执行与您在项目目录层次结构中的位置无关的本地安装的 coffee 二进制文件,可以使用此bash构造 PATH=$(npm bin)

HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别

ぐ巨炮叔叔 提交于 2020-02-26 00:00:26
HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是 HashMap , Hashtable , ConcurrentHashMap 和 synchronized Map 的原理和区别。当时有些紧张只是简单说了下HashMap不是线程安全的;Hashtable 线程安全,但效率低,因为是 Hashtable 是使用 synchronized 的,所有线程竞争同一把锁;而 ConcurrentHashMap 不仅线程安全而且效率高,因为它包含一个 segment 数组,将数据分段存储,给每一段数据配一把锁,也就是所谓的锁分段技术。当时忘记了 synchronized Map 和解释一下 HashMap 为什么线程不安全。面试结束后问了下面试官哪里有些不足,面试官说上面这个问题的回答算过关,但可以在深入一些或者自己动手尝试一下。so~~~虽然拿到了 offer,但还是再整理一下,不能得过且过啊。 为什么HashMap是线程不安全的 总说 HashMap 是线程不安全的,不安全的,不安全的,那么到底为什么它是线程不安全的呢?要回答这个问题就要先来简单了解一下 HashMap 源码中的使用的 存储结构 (这里引用的是 Java 8 的源码,与7是不一样的)和它的 扩容机制 。 HashMap的内部存储结构 下面是 HashMap 使用的存储结构: 1 2