node

NodeJS学习笔记(二).js

一个人想着一个人 提交于 2020-03-30 03:23:39
1 Stream(数据流) 当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到 数据流。NodeJS中通过各种 Stream 来提供对数据流的操作。 (1)为数据来源创建一个只读数据流: var rs = fs.createReadStream(src); // 从src读取文件, 返回一个新的可读流对象 rs.on('data', function (chunk) { // 触发'data'事件 rs.pause(); //暂停触发'data'事件 doSomething(chunk, function () { rs.resume(); //恢复触发'data'事件 }); }); rs.on('end', function () { cleanUp(); }); (2)为数据目标创建一个只写数据流: var rs = fs.createReadStream(src); var ws = fs.createWriteStream(dst); rs.on('data', function (chunk) { if (ws.write(chunk) === false) { rs.pause(); } }); rs.on('end', function () { ws.end(); }); ws.on('drain', function () {

nodejs笔记-2017.4.13

本秂侑毒 提交于 2020-03-30 03:22:08
原文链接: http://nqdeng.github.io/7-days-nodejs/#1 模块 编写稍大一点的程序时一般都会将代码模块化。在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。 在编写每个模块时,都有 require 、 exports 、 module 三个预先定义好的变量可供使用。 require 函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。模块名可使用相对路径(以 ./ 开头),或者是绝对路径(以 / 或 C: 之类的盘符开头)。另外,模块名中的 .js 扩展名可以省略。以下是一个例子。 var foo1 = require('./foo'); var foo2 = require('./foo.js'); var foo3 = require('/home/user/foo'); var foo4 = require('/home/user/foo.js'); // foo1至foo4中保存的是同一个模块的导出对象。 另外,可以使用以下方式加载和使用一个JSON文件。 var data = require('./data.json'); exports 对象是当前模块的导出对象,用于导出模块公有方法和属性。别的模块通过 require 函数使用当前模块时得到的就是当前模块的

Nodejs模块初始化

℡╲_俬逩灬. 提交于 2020-03-30 03:20:04
模块初始化 一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。 主模块 通过命令行参数传递给NodeJS以启动程序的模块被称为主模块。主模块负责调度组成整个程序的其它模块完成工作。例如通过以下命令启动程序时,main.js就是主模块。 $ node main.js 完整示例 例如有以下目录。 /home/user/hello/ util/ counter.js main.js 其中counter.js内容如下: var i = 0; function count() { return ++i; } exports.count = count; 该模块内部定义了一个私有变量i,并在exports对象导出了一个公有方法count。 主模块main.js内容如下: var counter1 = require('./util/counter'); var counter2 = require('./util/counter'); console.log(counter1.count()); console.log(counter2.count()); console.log(counter2.count()); 运行该程序的结果如下: $ node main.js 1 2 3 可以看到,counter

NodeJS基础

≡放荡痞女 提交于 2020-03-30 03:19:45
什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了 document 之类的内置对象。而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了 fs 、 http 等内置对象。 用途 尽管存在一听说可以直接运行JS文件就觉得很酷的同学,但大多数同学在接触新东西时首先关心的是有啥用处,以及能带来啥价值。 NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。 如他所愿,NodeJS在服务端活跃起来,出现了大批基于NodeJS的Web服务。而另一方面,NodeJS让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。 因此

Node.js API —— Modules(模块)

你离开我真会死。 提交于 2020-03-30 03:18:34
// 说明 Node API 版本为 v0.10.31。 中文参考: http://nodeapi.ucdok.com/#/api/ , http://blog.sina.com.cn/oleoneoy 本段为博主注解。 目录 ● 模块 ○ Cycles ○ Core Modules ○ File Modules ○ Loading from node_modules Folders ○ Folders as Modules ○ Caching ■ Module Caching Caveats ○ The module Object ■ module.exports ■ exports.alias ■ module.require(id) ■ module.id ■ module.filename ■ module.loaded ■ module.parent ■ module.children ○ All Together... ○ Loading from the global folders ○ Accessing the main module ○ Addenda: Package Manager Tips 模块 稳定性:5 - 锁定 Node 有一个简单的模块加载系统。在 Node 里面,文件和模块是一一对应的。举个例子, foo.js 加载同一目录下的模块 circle

常用的几个过滤器说明 

本小妞迷上赌 提交于 2020-03-30 01:58:06
1 常用的几个过滤器说明 判断类Filter: TagNameFilter 根据Tag的名字进行过滤 HasAttributeFilter 可以匹配出包含制定名字的属性,或者制定属性为指定值的节点 HasChildFilter 是返回有符合条件的子节点的节点,需要另外一个Filter作为过滤子节点的参数。 HasParentFilter 与HasChildFilter类似。 HasSiblingFilter 与HasChildFilter类似。 逻辑运算Filter AndFilter 是结合几种过滤条件的'与'过滤器 NotFilter 是结合几种过滤条件的'或'过滤器 OrFilter 是结合几种过滤条件的'或'过滤器 其他Filter: NodeClassFilter 根据已定义的标签类获取节点 StringFilter 这个Filter用于过滤显示字符串中包含指定内容的标签节点。注意是可显示的字符串,不可显示的字符串中的内容(例如注释,链接等等)不会被显示 LinkStringFilter 这个Filter用于判断链接中是否包含某个特定的字符串,可以用来过滤出指向某个特定网站的链接。 LinkRegexFilter 这个Filter用于 根据正则表达式匹配 链接,可以用来过滤出指向某个特定网站的链接。 RegexFilter 根据正则表达式匹配节点

C语言-二叉树

邮差的信 提交于 2020-03-29 18:46:19
使用tree定义一个node指针地址,作为树块,node里面定义当前的val,左子树和右子树 02tree.h的定义 /* 二叉树 */ #include "02tree.h" void tree_init(tree *p_tree) { p_tree->p_node = NULL; //把方块里的指针形成一个空树(没有圆圈的树) } void tree_deinit(tree* p_tree) { if (!p_tree->p_node) { return ; } tree_deinit(&(p_tree->p_node->left)); tree_deinit(&(p_tree->p_node->right)); free(p_tree->p_node); p_tree->p_node = NULL; } tree* tree_search(tree* p_tree, int val) { if (!p_tree->p_node) { return (tree* )p_tree; } if (p_tree->p_node->val == val) { return (tree* )p_tree; } else if (p_tree->p_node->val > val) { return tree_search(&p_tree->p_node->left, val); }

07-3.部署 kube-proxy 组件

瘦欲@ 提交于 2020-03-29 17:09:58
07-3.部署 kube-proxy 组件 kube-proxy 运行在所有 worker 节点上,,它监听 apiserver 中 service 和 Endpoint 的变化情况,创建路由规则来进行服务负载均衡。 本文档讲解部署 kube-proxy 的部署,使用 ipvs 模式。 下载和分发 kube-proxy 二进制文件 参考 06-0.部署master节点.md 安装依赖包 各节点需要安装 ipvsadm 和 ipset 命令,加载 ip_vs 内核模块。 参考 07-0.部署worker节点.md 创建 kube-proxy 证书 创建证书签名请求: cat > kube-proxy-csr.json <<EOF { "CN": "system:kube-proxy", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "4Paradigm" } ] } EOF CN:指定该证书的 User 为 system:kube-proxy ; 预定义的 RoleBinding system:node-proxier 将User system:kube-proxy 与 Role system:node

[转]Kubernetes从零开始搭建自定义集群

£可爱£侵袭症+ 提交于 2020-03-29 16:14:40
本指南适用于想要搭建一个定制化 Kubernetes 集群的人员。如果您在 列表 中找到现有的入门指南可以满足您的需求,那么建议使用它们,因为可从他人的经验中获益。但是,如果您使用特定的 IaaS,网络,配置管理或操作系统,同时又不符合这些指南的要求,那么本指南会为您提供所需的步骤大纲。请注意,比起其他预定义的指南,研习本指南需做出相当多的努力。 本指南对那些想要从更高层次了解现有集群安装脚本执行步骤的人员也很有用。 设计和准备 学习 您应该已经熟悉使用 Kubernetes 集群。建议按照如下入门指南启动一个临时的集群。首先帮您熟悉 CLI(kubectl)和概念(pods,services等)。 您的工作站应该已经存在 ‘kubectl’。这是完成其他入门指南后的一个附加安装。如果没有,请遵循 说明。 Cloud Provider Kubernetes 的 Cloud Provider 是一个模块,它提供一个管理 TCP 负载均衡,节点(实例)和网络路由的接口。此接口定义在 pkg/cloudprovider/cloud.go。未实现 Cloud Provider 也可以建立自定义集群(例如使用裸机),并不是所有的接口功能都必须实现,这取决于如何在各组件上设置标识。 节点 您可以使用虚拟机或物理机。 虽然可以使用一台机器构建集群,但为了运行所有的例子和测试,至少需要4个节点。

学习Apache(五)

妖精的绣舞 提交于 2020-03-29 13:06:26
apache目前主要有两种模式:prefork模式和worker模式: 1)prefork模式(默认模式) prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大。 这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。 2)worker模式 worker使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合高流量的http服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起”死掉”,所以要保证一个程式在运行时必须被系统识别为”每个线程都是安全的”。此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。 apache模式的查看和安装 1.常看当前模式 如果apache已经安装,我们可以用"httpd -l"命令查看当前模式。若找到prefork