node

NodeJS学习笔记

半城伤御伤魂 提交于 2019-12-17 11:11:26
一.概述 Node.js 是一种建立在Google Chrome’s v8 engine上的 non-blocking (非阻塞), event-driven (基于事件的) I/O平台. 以事件驱动为核心,单线程,单进程。Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计。对于高并发的解决方案,传统的架构是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式 I/O 调用时的时间开销。Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。事件驱动机制是Node.js通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文切换,这意味着面对大规模的http请求,Node.js凭借事件驱动搞定一切。因为Node是基于事件驱动和无阻塞的,所以非常适合处理并发请求。可以通过运行多个Node.js进程的方式来有效利用多个CPU。 二.Node.js选择的异步I/O方案 1.在Linux下,node.js靠libev和libeio配合使用来实现异步I/O。 (1).什么是libev? • libev是一个事件驱动库

Uglifyjs入门

ぐ巨炮叔叔 提交于 2019-12-17 11:05:21
需要先 安装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

关于行为树

烈酒焚心 提交于 2019-12-17 09:55:06
简单介绍构建游戏AI所需要的一些工具:状态机,层次状态机,行为树的区别以及联系 Finite State Machines(有限状态机) 1. 基本节点是状态。他包含了一系列运行在该状态的行为以及离开这个状态的条件。 2. 这是图。状态可以任意跳转,实现简单,但是对于大的状态机很难维护.状态逻辑的重用性低. 3. 每一个状态的逻辑会随着一些新状态的增加而越来越复杂。维持状态的数量和状态逻辑复杂性是一个很大的难点。需要合理的分割以及重用状态。 4. 状态机状态的复用性很差,一旦一些因素变化导致这个环境发生变化。你只能新增一个状态,并且给这个新状态添加连接他以及其他状态的跳转逻辑 5. 状态机的跳转条件一旦不满足,就会一直卡在某一个状态(整个状态机就会卡住) Hierarchical FSM(层次状态机) 1. 基本的概念和状态机一样。 2. 可以将一些状态节点的归结成一个超级状态(Super-States),共享一些状态跳转逻辑(Generalized Transitions)。相对于状态机,它主要提供了可重用得跳转条件。 3. 绝大多数层次状态机设计的时候,每一个子状态通常只包含在一个Super-States里面。(如果A,B两个Super-State都包含相同的子状态,则A,B分别添加两个不同的子状态实例) 4. 超级状态跳转依然需要考虑很多不同的子状态的情况

kubeasz部署k8s

旧街凉风 提交于 2019-12-17 09:14:31
1部署 1.0)集群规划 hostnamectl set-hostname master01 hostnamectl set-hostname master02 hostnamectl set-hostname node01 hostnamectl set-hostname node02 vi /etc/hosts 192.168.198.154 master01 192.168.198.155 master02 192.168.198.156 node01 192.168.198.157 node02 scp /etc/hosts scp /etc/hosts root@master02:/etc/hosts scp /etc/hosts root@node01:/etc/hosts scp /etc/hosts root@node02:/etc/hosts ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub root@master01 ssh-copy-id -i .ssh/id_rsa.pub root@master02 ssh-copy-id -i .ssh/id_rsa.pub root@node01 ssh-copy-id -i .ssh/id_rsa.pub root@node02 1.1)阿里云epel源 wget

Java HashMap的put操作(Java1.8)

孤街浪徒 提交于 2019-12-17 09:04:16
https://www.cnblogs.com/JzedyBlogs/p/10208295.html 写得非常好: 这个是Java1.8 -------------------------------- 1 public V put(K key, V value) { 2 return putVal(hash(key), key, value, false, true); 3 } 4 5 static final int hash(Object key) {//hash函数,用于索引定位 6 int h; 7 return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); 8 } 9 10 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, 11 boolean evict) { 12 Node<K,V>[] tab; Node<K,V> p; int n, i; 13 if ((tab = table) == null || (n = tab.length) == 0) 14 n = (tab = resize()).length;//存储数据Node没有初始化,此时初始化 15 if ((p = tab[i = (n - 1) & hash])

[Java复习] 集合框架 Collection

╄→гoц情女王★ 提交于 2019-12-17 08:36:15
Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢。链表相反 List, Set, Map的区别? List,Set继承Collection接口 List可以放重复数据,Set不能,Map是k-v对 List和Map的实现方式以及存储方式? ArrayList: 底层动态数组。随机访问快,增删慢,线程不安全。 扩容导致数组复制,批量删除会导致找两个集合交集,效率低。 LinkedList: 底层链表(双向列表)。增删快,查找慢,线程不安全。 遍历: 1.普通for循环,元素越多后面越慢 2.迭代器:每次访问,用游标记录当前位置 根据下标获取node,会根据index处于前半段还是后半段进行折半,提升效率。 HashMap: 散列表, 数组+链表+红黑树(JDK1.8) 默认16, 扩容2的幂 Q2 List ArrayList实现原理? 动态数组,默认10,扩容grow(minCapacity),增加到1.5倍 ArrayList和LinkedList的区别,以及应用场景? 1.动态数组和双向队列链表。 2.ArrayList( 实现了RandomAccess接口 )用for循环遍历优于迭代器,LinkedList则相反。 3.ArrayList在数组任意位置插入,或导致该位置后面元素重新排列

【新书推荐】《Node Web开发》

有些话、适合烂在心里 提交于 2019-12-17 06:33:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 《Node Web开发》 【国内第一本Node书】【用Node平台打造高性能Web应用】【雅虎架构师解读最炙手可热的Web开发技术】 内容简介: 本书是Node开发基础教程,通过大量示例介绍如何使用HTTP服务器和客户端对象、Connect和Express应用框架、异步执行算法,以及如何结 合使用SQL和MongoDB数据库。另外,本书同时针对开发和部署环境给出了实用的Node安装建议,介绍了HTTP服务器和客户端应用的开发,阐述了 很多Node使用方式,包括在应用中使用数据库存储引擎,以及在有无Connect/Express Web应用框架的情况下开发网站的方法。本书还介绍了Node的CommonJS模块系统,帮助开发人员实现一些重要的面向对象设计方案。 本书内容包括: 服务器端JavaScript对于Web应用开发的作用 使用Node时,针对性能和吞吐量作出成熟的架构选择 为开发和部署服务器端Web应用安装和使用Node Connect和Express应用框架的使用 在应用中设置SQL或MongoDB数据库系统 区分并评估同步算法和异步算法 相关阅读: Node能做什么 为什么要使用Node 来源: oschina 链接: https://my.oschina.net/u/244461/blog/56439

最小生成树

跟風遠走 提交于 2019-12-17 05:46:17
  这篇博客是关于图论中的最小生成树,在这里我们先简单介绍最小生成树的概念:一个图中,选取总代价最小的边使得所有点都连通。由此得到的结果必然是一棵树,同时需要注意一个图的最小生成树不具有唯一性。下面介绍求最小生成树的一种方法:普里姆算法求最小生成树。   普里姆算法正确性可以使用反证法进行证明,这里不进行展开。   普里姆算法的核心为以下步骤:   (1)使用一个d数组用于存储各个节点到树的距离,初始化d数组为无穷大。使用一个book数组用于区分某个节点是树节点还是非树节点,book数组初始化为false。首先从任意一个顶点开始构造树,按照习惯从第1号节点开始构造树,将d[1] = 0,book[1] = true。   (2)更新与1号节点相连的非树节点到树的距离,也就是更新d数组,更新条件为:如果i节点到树的距离比d[i]中存储的距离小,那么更新d[i]为更小的值。   (3)遍历更新后的d数组,找到非树节点中距离树最小的节点,将这个节点加入树中。   (4)重复步骤1、2、3,直到生成树中有n个节点为止。   下面为实现代码:    #include <iostream> #include <cstdio> using namespace std; const int MAXN = 5001; const int MAXM = 20001; struct Line { int

Redis Cluster日常操作命令梳理

不想你离开。 提交于 2019-12-17 05:35:55
在之前的一篇文章已经介绍了 Redis Cluster及其部署 ,下面说下Redis Cluster日常操作命令: 一、以下命令是Redis Cluster集群所独有的,执行下面命令需要先登录redis: [root@manage redis]# redis-cli -c -p 6382 -h 192.168.10.12 (客户端命令:redis-cli -c -p port -h ip) 192.168.10.12:6382> 登录redis后,在里面可以进行下面命令操作 集群 cluster info :打印集群的信息 cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。 节点 cluster meet <ip> <port> :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 cluster forget <node_id> :从集群中移除 node_id 指定的节点。 cluster replicate <master_node_id> :将当前从节点设置为 node_id 指定的master节点的slave节点。只能针对slave节点操作。 cluster saveconfig :将节点的配置文件保存到硬盘里面。 槽(slot) cluster addslots <slot> [slot ...]

mac 安装brew跟node

Deadly 提交于 2019-12-17 03:46:29
1. 安装 Homebrew    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2. Homebrew的基本命令   brew -v   brew search 例如:brew search node   brew list 例如:brew list node@10    brew install   brew uninstall 3. 因为配置环境变量引起的cd, vim等命令用不了,可以使用下面这个命令另命令临时生效,然后修改环境变量等配置文件    export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 4. 安装node    brew install node@10   brew install -g node@10 (全局安装) 5. 查看node跟npm命令是否可用   node -v   npm -v 6. 若已安装node,但是node命令没有用等解决方法    vim ~/.bash_profile (若没有可用使用touch ~/.bash_profile创建)   文件内容:export PATH=/usr/local/Cellar/node@10