node

nodejs Stream使用手册

喜欢而已 提交于 2020-03-02 18:51:14
介绍 本文介绍了使用 node.js streams 开发程序的基本方法。 "We should have some ways of connecting programs like garden hose--screw in another segment when it becomes necessary to massage data in another way. This is the way of IO also." Doug McIlroy. October 11, 1964 最早接触Stream是从 早期的unix开始的 数十年的实践证明Stream 思想可以很简单的开发出一些庞大的系统。在unix里,Stream是通过 | 实现的;在node中,作为内置的 stream模块 ,很多核心模块和三方模块都使用到。和unix一样, node Stream主要的操作也是 .pipe() ,使用者可以使用反压力机制来控制读和写的平衡。 Stream 可以为开发者提供可以重复使用统一的接口,通过抽象的Stream接口来控制Stream之间的读写平衡。 为什么使用Stream node中的I/O是异步的,因此对磁盘和网络的读写需要通过回调函数来读取数据,下面是一个文件下载服务器 的简单代码: var http = require('http'); var fs =

【JDK源码分析】通过源码深入分析AbstractQueuedSynchronizer

别等时光非礼了梦想. 提交于 2020-03-02 18:08:44
前言 AQS是并发包的核心基础类,它是构建阻塞锁和相关同步器(信号量、事件,等等)的框架,可以毫不夸张的说整个java.util.concurrent包中除了原子类都与其相关(比如我们常见的显示锁ReentrantLock、闭锁CountDownLatch、信号量 Semaphore、线程池ThreadPoolExecutor等等就是基于AQS实现),我们甚至可以按照自己的需要使用AQS构建自定义锁。它内部数据结构为FIFO队列,并且是一种基于CLH锁队列修改的同步队列。CLH锁是一种基于链表的可扩展、高性能、公平的自旋锁,申请线程仅仅在本地变量上自旋,它不断轮询前驱的状态,假设发现前驱释放了锁就结束自旋。 基本原理 它通过内部一个int类型的state状态值表示同步状态,拿它的显示锁ReentrantLock实现来简单举个例子: - 当state状态值为0时,多个线程同时进入进行资源争抢,谁先将state状态值成功从0改变成1,谁就能先获得资源并执行,其它线程全部进入队列排队等待先执行的将state状态值恢复成0。这就好比一群人乘坐小船过河,但小船最多只能搭载一名乘客,其他人只能乖乖在岸边排队等待船夫将人送过去后再回来一个个往复载他们过河。 - 当state状态值大于0时,多个线程同时进入时,只有之前将该state状态值改变的线程能进入

vscode运行 npm run build 报错:

淺唱寂寞╮ 提交于 2020-03-02 16:55:52
webpack编译报错提示内存溢出: 这个报错的意思就是Node内存不足所导致的。我们都知道 Node 是基于V8引擎,在一般的后端开发语言中,在基本的内存使用上没有什么限制。 但是,在 Node 中通过 JavaScript 使用内存时只能使用部分内存(64位系统下约为1.4 GB,32位系统下约为0.7 GB)所以不管你电脑实际内存多大,在node运行JavaScript打包编译的时候所使用的内存大小,并不会因为你系统的实际内存大小改变而改变。 window系统下解决办法: 在\node_modules\.bin\webpack-dev-server.cmd文件中添加 --max_old_space_size=2048 或者: 根据自己电脑内存大小,调整打包编译的时候所使用的内存大小 来源: oschina 链接: https://my.oschina.net/u/4276394/blog/3185286

webpack配置中环境变量-process.env. NODE_ENV

情到浓时终转凉″ 提交于 2020-03-02 16:21:01
背景   webpack有一特性就是可以让使用者灵活的在不同环境(开发环境,生产环境等)进行相应的特性的策略打包,比如: 是否使用反向代理使用接口,针对不同的静态资源(如图片等)是直接拷贝还是进行打包编译等等,这一特性的诞生归功于Nodejs的环境变量-process.env. NODE_ENV process.env. NODE_ENV   1. 值     1.1 production:生产阶段     1.2 development/staging: 开发阶段   2. webpack中的应用 // webpack.config.js module.exports = {   // webpack的mode(模式参数):不同模式下进行不同的内置优化   mode: process.env.NODE_ENV === 'production' ? 'production' : 'development' }   3. 使用     3.1 这个变量在具体的应用的时候是需要对当前的环境变量进行设置的,一般情况会在进行执行不同命令的时候去设置     3.2 由于这个变量针对于不同的系统设置方式不一样,如设置为开发模式的话, window系统: set NODE_ENV=development mac系统: export NODE_ENV=development     3.3

LeetCode 160.Intersection of Two Linked Lists.求两个链表的交点

走远了吗. 提交于 2020-03-02 11:46:00
题目: 已知链表A的头节点指针headA,链表B的头节点指针headB,连个链表相交,求两链表交点对应的节点。 要求: 1、如果两个链表没有交点,则返回NULL 2、在求交点的过程中,不可以破坏链表的结构或者修改链表的数据域。 3、可以确保传入的链表A与链表B没有任何环 4、*实现算法尽可能使用时间复杂度O(n),控件复杂度O(1) 思路一: 遍历链表A,将A中节点对应的指针(地址),插入set 遍历链表B,将B中节点对应的指针(地址),在set中查找, 发现在set中的第一个节点指针,及时两个链表的交点。 代码: 使用set的方法,这种方法关键是理解,set中存储的是指针! //使用set的方法 #include < stdio . h > #include < iostream > #include < set > using namespace std ; struct ListNode { int val ; ListNode * next ; ListNode ( int x ) : val ( x ) , next ( NULL ) { } } ; //只是定义的时候表名它是指针类型 //传的参数可以直接在方法里面用,以前还在一直纠结 ListNode * getIntersectionNode ( ListNode * a , ListNode * b ) { set

程序员面试金典 - 面试题 02.03. 删除中间节点

流过昼夜 提交于 2020-03-02 10:30:18
1. 题目 实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点。 示例: 输入:单向链表a - > b - > c - > d - > e - > f中的节点c 结果:不返回任何数据,但该链表变为a - > b - > d - > e - > f 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/delete-middle-node-lcci 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 2. 解题 只有被删除的节点,无法获取其前置节点 交换要删除的节点和其下一个节点的 val 然后要删除的值的前一个节点就知道了 class Solution { public : void deleteNode ( ListNode * node ) { swap ( node - > val , node - > next - > val ) ; node - > next = node - > next - > next ; } } ; 来源: CSDN 作者: Michael阿明 链接: https://blog.csdn.net/qq_21201267/article/details/104599837

npm 安装教程

我的未来我决定 提交于 2020-03-02 07:57:36
文章目录 1、下载安装包 2、创建2个文件夹 3、配置环境变量 4、npm设置 5、测试环境 1、下载安装包 https://nodejs.org/zh-cn/download/ 按照系统环境选择对应安装包 2、创建2个文件夹 创建两个文件夹node-cache,node-global用来指定npm的模块路径和缓存路径(类似于java的maven库) 3、配置环境变量 4、npm设置 npm config set prefix "C:\nodeJs\node_global" npm config set prefix "C:\nodeJs\node_cache" #设置淘宝镜像 npm config set registry http: / / registry . cnpmjs . org #通过npman下载安装cnpm npm install - g cnpm - registry=https: / / registry . npm . taobao . org #为了避免每次安装都需要--registry参数,可以使用如下命令进行永久设置 npm config set registry http: / / registry . npm . taobao . org 5、测试环境 #测试npm npm - v #测试node node - v #测试cnpm cnpm - v

数据结构二叉树基础以及四种遍历方式(递归和迭代)

做~自己de王妃 提交于 2020-03-02 07:27:18
数据结构二叉树基础 文章目录 数据结构二叉树基础 一、二叉树的基本概念 二、特殊的二叉树 三、二叉树的4种遍历方式 一、二叉树的基本概念 节点的度 :一个节点含有的子树的个数称为该节点的度; **树的度:**一棵树中,最大的节点的度称为树的度; 叶子节点或终端节点 :度为0的节点称为叶节点; 双亲节点或父节点 :若一个节点含有子节点,则这个节点称为其子节点的父节点; 孩子节点或子节点 :一个节点含有的子树的根节点称为该节点的子节点; **根结点:**一棵树中,没有双亲结点的结点; **树的高度或深度:**树中节点的最大层次 一棵二叉树 是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉 树组成。 二叉树的特点: 每个结点最多有两棵子树,即二叉树不存在度大于 2 的结点。 二叉树的子树有左右之分,其子树的次序不能颠倒 二、特殊的二叉树 1, 完全二叉树: 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n 个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全 二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。 2, 满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果 一个二叉树的层数为K,且结点总数是(2^k)

react native 安装

☆樱花仙子☆ 提交于 2020-03-02 06:29:06
http://blog.csdn.net/xu_fu/article/details/48571941 http://www.csdn.net/article/2015-09-24/2825787-react-native Last login: Wed May 11 21:38:13 on console zcldeMacBook-Air:~ zcl$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ;==> This script will install: /usr/local/bin/brew /usr/local/Library/... /usr/local/share/doc/homebrew /usr/local/share/man/man1/brew.1 /usr/local/share/zsh/site-functions/_brew /usr/local/etc/bash_completion.d/brew ==> The following directories will be made group writable: /usr/local/. /usr/local/bin ==> The following

[翻译完成] 树莓派搭建Google TV

落爺英雄遲暮 提交于 2020-03-02 04:28:49
Google TV是啥玩意 ? Google TV是支持自选图像、宽带网络、传统电视信号的综合平台,更附带电视节目搜索功能. 谷歌公布了其新版电视的两个版本, 第一个叫做Buddy Box, 由索尼代工的电视盒并且价格昂贵, 第二个是即将发布的集成电视, 将其电视盒内置到电视机内部. Google TV界面预览: 开发者: 可以为Google TV开发新的网页应用或者把已有的android应用改为适配大尺寸屏幕, 在谷歌的开发者 网站 可以看到详细介绍 搭建我们自己的Google TV 极客们就是喜欢重复发明轮子, 并且自得其乐. 所以我们使用下列开源技术来搭建我们自己的Google TV: 硬件: 树莓派 软件: Raspbian 系统 – 为树莓派特殊定制的Debian发行版 NodeJs Socket.io – 通过websocket远程连接TV Express – 用来处理一些基本的http请求 Omxcontrol – 用来控制树莓派上最棒的视频播放器OMXPlayer Chromium 浏览器 OMXPlayer Youtube-dl – 一个下载youtube视频的脚本 QuoJS – 在手机网页上处理滑动手势 HTML5, CSS3, Javascript, 和 Moustache 模板引擎 Youtube API 最终效果 树莓派TV及其特殊的远程遥控器 步骤