node

node版本下报错build: `vue-cli-service build`

落花浮王杯 提交于 2020-01-25 21:17:45
用vue cli3.0生成vue项目时,运行项目出现报错build: `vue-cli-service build`,serve: `vue-cli-service serve` 最后查看发生安装的node -v版本时v12.0,node版本不稳定造成的,所以通过nvm切换到node -v v8.11.2版本,再次运行就可以了。 1. 下载安装nvm: 2. 通过nvm下载安装node8.11.2版本:nvm install v8.11.2。 3. 通过nvm切换node版本为v8.11.2:nvm use 8.11.2。 来源: CSDN 作者: Ace.斗皇 链接: https://blog.csdn.net/qq_42231156/article/details/103836773

链表找环的入口

十年热恋 提交于 2020-01-25 20:35:33
package linkedlist ; /** * Created by lijie35 on 2020-01-20 10:43 AM . */ public class ListEntrance { public static void main ( String [ ] args ) { Node h1 = new Node ( 0 ) ; Node h2 = new Node ( 1 ) ; Node h3 = new Node ( 2 ) ; Node h4 = new Node ( 3 ) ; Node h5 = new Node ( 4 ) ; h3 . next = h5 ; h5 . next = h4 ; h4 . next = h5 ; System . out . println ( findEntrance ( h3 ) . val ) ; } public static Node findEntrance ( Node node ) { if ( node == null || node . next == null ) return new Node ( - 1 ) ; Node meetingPoint = mettingPoint ( node ) ; if ( meetingPoint == null ) return new Node ( -

在 Node 中使用 formidable 处理文件上传

大城市里の小女人 提交于 2020-01-25 15:46:25
具体使用方式参照官方文档: https://www.npmjs.com/package/formidable 第一:安装: # npm install --save formidable yarn add formidable 第二:基本使用: var formidable = require('formidable'), http = require('http'), util = require('util'); http.createServer(function(req, res) { if (req.url == '/upload' && req.method.toLowerCase() == 'post') { // parse a file upload var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { res.writeHead(200, {'content-type': 'text/plain'}); res.write('received upload:\n\n'); res.end(util.inspect({fields: fields, files: files})); }); return; } // show a file

二叉树路径和为某一整数

▼魔方 西西 提交于 2020-01-25 13:39:26
题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 #include<iostream> #include <vector> struct BinaryTreeNode{ int m_nValue; BinaryTreeNode * m_pRight; BinaryTreeNode * m_pLeft; }; void FindPath4Vars( BinaryTreeNode * pRoot, int expectedSum, std:: vector<int> path, int& currentSum ); void FindPath (BinaryTreeNode* pRoot, int expectedSum) { if (pRoot==NULL) return; std:: vector<int> path; int currentSum=0; FindPath4Vars (pRoot, expectedSum, path, currentSum); } void FindPath4Vars ( BinaryTreeNode * pRoot, int expectedSum, std:: vector<int> path, int& currentSum ) {

数组与链表

时光毁灭记忆、已成空白 提交于 2020-01-25 12:11:29
引子 假设你去看演出,需要将东西寄存。寄存处有一个柜子,柜子有很多抽屉。 计算机就像是很多抽屉的集合体,每个抽屉都有地址。 fe0ffeeb是一个内存单元的地址。 需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式——数组和链表。但它们并非都适用于所有的情形,因此知道它们的差别很重要。接下来介绍数组和链表以及它们的优缺点。 数组 有时候,需要在内存中存储一系列元素。假设你要编写一个管理待办事项的应用程序,为此需要将这些待办事项存储在内存中。 我们先将待办事项存储在数组中。 使用数组意味着所有待办事项在内存中都是相连的 (紧靠在一起的)。 现在假设你要添加第四个待办事项,但后面的那个抽屉放着别人的东西! 这就像你与朋友去看电影,找到地方就坐后又来了一位朋友,但原来坐的地方没有空位置,只得再找一个可坐下所有人的地方。在这种情况下,你需要请求计算机重新分配一块可容纳4个待办事项的内存,再将所有待办事项都移到那里。如果又来了一位朋友,而当前坐的地方也没有空位,你们就得再次转移!真是太麻烦了。同样,在数组中添加新元素也可能很麻烦。如果没有了空间,就得移到内存的其他地方,因此添加新元素的速度会很慢。 再以整型数组为例,数组的存储形式如下图所示。正如军队里的士兵存在编号一样,数组中的每一个元素也有着自己的下标,只不过这个下标从0开始

vue-双向数据绑定原理分析二--Mr.Ember

醉酒当歌 提交于 2020-01-25 07:41:21
vue-双向数据绑定原理分析二--Mr.Ember 摘要:双向数据绑定是vue的核心,通过是数据劫持结合发布者-订阅者模式的模式实现的。 上一讲 提到了怎么简单的模仿双向数据绑定,下面我们将会分析下vue双向数据绑定源码的简单实现。 实现原理 双向数据绑定是通过数据的劫持结合发布者-订阅者模式的方式实现的。 数据劫持、vue是通过Object.definedProperty()实现数据劫持,其中会有getter()和setter()方法。当读取属性值时,就会触发getter()方法,在view中如果数据发生了变化,就会通过Object.defineProperty()对属性设置一个setter函数,当数据改变了就会触发这个函数; 一. 实现一个监听器observer observer主要是通过Object.defineProperty()来监听属性的变动,那么将需要observer的数据对象进行递归遍历,包括子属性对象,都加上setter和getter,给这个对象的某个值赋值,就会触发setter,从而监听数据的变化。 Observer.prototype = { walk: function(data) { //执行函数 var self = this; // 通过对一个对象进行遍历,对这个对象所有的属性进行监听 Object.keys(data).forEach

Java多线程系列--“JUC锁”06之 Condition条件

僤鯓⒐⒋嵵緔 提交于 2020-01-25 06:30:40
先做总结: 1、为什么使用Condition条件? synchronized配合Object的wait()、notify()系列方法可以实现等待/通知模式。 Lock提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活。 Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法。 2、Condition条件实现原理: (1)lock.newCondition(),new一个ConditionObject对象,ConditionObject有一个单向等待队列 (2)condition等待队列:线程已经拿到锁,但是因为不满足某个条件,被放入等待队列并释放锁,不能获取锁    AQS同步队列:线程抢锁失败,被放入AQS阻塞队列,等前面线程释放锁之后自己再获取锁 (3)await():当前线程T加入条件等待队列 释放锁 park()当前线程    signal():当前线程T节点出条件等待队列 T节点加入AQS同步队列 unpark()T线程 一、Condition实现生产者消费者问题 class BoundedBuffer {

二叉树遍历基础 -- 递归与非递归的实现方法

 ̄綄美尐妖づ 提交于 2020-01-25 06:19:57
之前也写过不少关于二叉树的东西了,但是总体来说,二叉树还是一个很绕的东西,所以单独择出来写一篇笔记,之前也没计划什么的,就想到什么写什么吧。不过该篇文章的 主要内容是关于二叉树的三种遍历(前序、中序、后序)不同的实现方式(递归与非递归) 。 首先,我觉得很有必要去彻底理解一下递归。 (1)递归的主体大概分两部分:递归停止的条件、递归内容。 (2)递归应用的实例:这个超级多,就比如最典型的 斐波那契数列 。个人认为,可以用循环实现的,递归基本上都可以实现,但有时递归的效率不如循环。 (3)递归又分为单递归与多递归(二叉树的三种遍历递归方法均用到了双递归!) 根据上面的三点,举个例子先。 假设当x=0时,F(x)=1;否则F(x)=F(n-1)*n。这个时候就可以用递归了,代码实现如下。 class Solution{ public int F(int n) { //递归停止条件 if (n == 0) { return 1; } //递归内容 else { return F(n - 1) * n; } } } 代码分析一下如下: 二叉树的三种遍历:前序(根左右)、中序(左根右)、后序(左右根) 首先看 三种遍历的递归实现方法 。(特点:代码清晰,量少,但不易理解) // (1)前序遍历 public TreeNode PreOrder(TreeNode pRoot) { /

Erlang实战:并行枚举排序

て烟熏妆下的殇ゞ 提交于 2020-01-25 05:13:13
  这是海量数据的时代!互联网每天产生的数据量远远超出了我们所能想象的范围,无论是国外的Facebook、Twitter,还是国内的微博、人人,还有各种电商们,这些互联网企业在数据上是富有的,它们掌握着海量的用户数据,同时它们也需要对这些海量数据进行分析和处理。我们以前的串行化算法似乎显得力不从心,一个是计算机本身就设计为多核的,它们存在并行化问题;另一方面,更多的计算机加入到并行的行列,并行化正成为一种潮流和趋势,因为它们能用空间换取时间和性能,或者说用更多的机器来进行分析计算。   我知道的常用的并行计算工具大致有三种:MapReduce、MPI,还有就是本文讨论的Erlang。MapReduce最早是google设计并实施的,现在已经成为云计算中的一个火热的技术,它通过一个映射(Map)和规约(Reduce)来进行并行数据处理,实际上它是一个实时批处理再加上一些容错处理机制来保证系统的性能和可靠性;MPI我不太熟悉,它是一个库,不是一门语言,一般与C/FORTRAN结合使用;Erlang是一个基于消息传递的并发编程语言,正因为它是基于消息的,因此没有共享内存和锁机制,因此Erlang比较简单,它是函数型编程语言,我们在编写程序时写的都是函数。   下面我将通过一个排序实例:枚举排序来讲述Erlang并行编程!   实战:并行枚举排序   我们先来看看其概念:枚举排序也叫秩排序

python 链表实现 单链表

我的未来我决定 提交于 2020-01-25 04:33:20
  1. 链表的定义     链表是一种基础数据结构,是一种线性表,不想顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。   1.1 单链表      表元素域elem用来存放具体的数据   链接域next用来存放于下一个节点的位置   变量p指向链表的头节点的位置,从p出发能找到表中的任意节点    节点实现: class Node(object): #单链表节点类实现 def __init__(self,elem): self.elem = elem self.next = None   单链表的操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历整个链表 add(item) 链表头部添加元素 append(item) 链表尾部添加元素 insert(pos, item) 指定位置添加元素 remove(item) 删除节点 search(item) 查找节点是否存在   单链表的实现: class SingleLinkList(object): #单链表类实现 def __init__(self,node=None): self.__head = node def is_empty(self): #判断链表是否为空 return self.__head == None def length