node

实现前缀树

﹥>﹥吖頭↗ 提交于 2020-01-29 18:44:19
实现前缀树 Trie (发音为 “try”) 或前缀树是一种树数据结构,用于检索字符串数据集中的键。这一高效的数据结构有多种应用: 自动补全 拼写检查 最长前缀匹配 打字预测 代码 private: bool isEnd = false; Trie *next[26] = {nullptr}; public: /** Initialize your data structure here. */ Trie() { } /** Inserts a word into the trie. */ void insert(string word) { Trie *node = this; for(char c:word) { if(node->next[c-'a']==NULL) //如果没有下一个字母节点 node->next[c-'a'] = new Trie(); node = node->next[c-'a']; } node->isEnd = true; } /** Returns if the word is in the trie. */ bool search(string word) { Trie *node = this; for(char c:word) { node = node->next[c-'a']; if(node == NULL) return false

npm ERR! { Error: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache\_locks'

醉酒当歌 提交于 2020-01-29 17:59:05
1. 场景:win10下安装node之后,node -v,npm -v都正常,node安装成功,但是运行npm i或者全局安装某插件时,报错: npm ERR! { Error: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache\_locks' 2. 原因:node目录权限不够 3. 办法: 1.win + x(治标不治本) 选择管理员身份运行命令行 2.找到node安装目录,右键属性,点击安全,设置users用户完全控制权限 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200129120703642.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTIxNzU0MQ==,size_16,color_FFFFFF,t_70 来源: CSDN 作者: 丢失的林夕 链接: https://blog.csdn.net/weixin_41217541/article/details/104105600

NodeJs之domain

非 Y 不嫁゛ 提交于 2020-01-29 16:35:07
domain 域。 简化了异步代码的异常处理,可以捕捉try catch无法捕捉的异常。 引入 const domain = require('domain') domain模块把处理多个不同的IO操作为一个组。 当发生一个错误事件或抛出一个错误时,domain对象会被通知,不会丢失上下文环境,也不会导致程序错误立即退出、 显示绑定和隐式绑定 显示绑定:把不是在domain上下文中定义的变量,以代码的方式绑定到domain。 隐式绑定:把在domain上下文中定义的变量,自动绑定到domain对象。 属性 domain.members:已加入domain对象的域定时器和事件发射器的数组。 方法 domain.run(function):在域的上下文运行提供的函数,隐式的绑定了所有的事件分发器,计时器和底层请求。 doamin.add(emitter):显示的增加事件。 doamin.remove(emitter):删除事件。 domain.bind(callback):返回的函数是一个对于所提供的回调函数的包装函数。当调用这个返回的函数时,所有被抛出的错误都会被导向到这个域的error事件。 domain.intercept(callback):和bind类似,除了捕捉错误外,它还会拦截error对象作为参数传递到这个函数。 domain.enter():进入一个异步调用的上下文

每天学点node系列-http

Deadly 提交于 2020-01-29 12:43:52
任何可以使用JavaScript来编写的应用,最终会由JavaScript编写。--Atwood's Law http模块概览 http模块主要用于创建http server服务,并且 支持更多特性 不缓冲请求和响应 能够流式传输数据 借助http模块,可以几行代码就搞定一个超迷你的web server: var http=require("http") http.createServer(function(req, res){ res.writeHead(200,{ "content-type":"text/plain" }) res.write("hello nodejs") res.end() }).listen(3000) http服务器 像上面一样使用的createServer方法返回了一个http.Server对象,这其实是一个创建http服务的捷径,如果我们用以下代码来实现的话,也将一样可行 var http = require("http") var server = new http.Server() server.on("request", function(req, res){ res.writeHead(200, { "content-type":"text/plain" }) res.write("hello nodejs") res.end() })

nodejs教程(四)--Express中间件

℡╲_俬逩灬. 提交于 2020-01-29 11:33:19
nodejs教程(四)–Express中间件 1.中间件完整的结构: 1.1是一个函数 1.2入参:err, req, res, next ---->function function demo_middleware ( err , req , res , next ) { //四个参数不是必需的 //1.异常 //2.处理下业务功能,然后转交控制权-->next //3.响应请求-->结束响应-->当作路由的处理函数 } 2.中间件使用场景: 2.1 app级别的使用 注册时一定是在最上面 通过app.use暴露的api加载进来 在postman中请求路由时自动加载该中间件进来 当加载静态文件时:使用static,先建立一个和package.json相同路径下的文件夹static,再在其中新建文件index.html,在app.js中使用static方法加载静态文件。 2.2 router级别 在src文件夹下新建一个router文件夹,再在router文件夹中新建user_router.js文件。在这个js文件中写入代码。 再在app.js文件中注册并使用 const userRouter = require ( './router/user_router' ) ; app . use ( '/user' , userRouter ) ; 可以将中间件作为第三个参数传入路由

从零开始配置webpack(基于webpack 4 和 babel 7版本)

流过昼夜 提交于 2020-01-29 10:56:09
webpack 核心概念: Entry: 入口 Module:模块,webpack中一切皆是模块 Chunk:代码库,一个chunk由十多个模块组合而成,用于代码合并与分割 Loader:模块转换器,用于把模块原内容按照需求转换成新内容 Plugin:扩展插件,在webpack构建流程中的特定时机注入扩展逻辑来改变构建结果或做你想要做的事情 Output: 输出结果 webpack流程: 原文链接: 点我 webpack启动后会从 Entry 里配置的 Module 开始递归解析 Entry 依赖的所有Module.每找到一个Module,就会根据配置的Loader去找出对应的转换规则,对Module进行转换后,再解析出当前的Module依赖的Module.这些模块会以Entry为单位进行分组,一个Entry和其所有依赖的Module被分到一个组也就是一个Chunk。最好Webpack会把所有Chunk转换成文件输出。在整个流程中Webpack会在恰当的时机执行Plugin里定义的逻辑。 下面我们开始从零开始配置一个支持打包图片,CSS,LESS,SASS,支持ES6/ES7和JSX语法,并对代码进行压缩的webpack配置. 1. 最简webpack配置 首先初始化npm和安装webpack的依赖: npm init -y npm install --save-dev

LeetCode_237删除链表中的节点

為{幸葍}努か 提交于 2020-01-29 08:42:00
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 – head = [4,5,1,9],它可以表示为: 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 说明:这个题目理解起来是真费劲,简单来说就是传入的参数是head链表中的以要删除的node为起始的链表中的一段 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { //节点值不断前移 public void deleteNode ( ListNode node ) { ListNode pre = null ; while ( node . next != null ) { node . val = node . next . val ; pre = node ; node = node . next ; } pre . next = null ; }

链表之归并有序链表

冷暖自知 提交于 2020-01-29 07:24:27
链表之归并有序链表 传入两个Node指针ptr1与ptr2,它们指向的链表中的元素有序递增,将它们合并为一个新的有序链表newptr,注意操作过程中不要额外申请空间. 代码: Node *merge_list(Node *ptr1,Node *ptr2){ if(ptr1==NULL&&ptr2==NULL) return NULL; if(ptr1==NULL&&ptr2!=NULL) return ptr2; if(ptr2==NULL&&ptr1!=NULL) return ptr1; Node * base,*other; if(ptr1->data>=ptr2->data){ base=ptr2; other=ptr1; }else{ base=ptr1; other=ptr2; } //Node *current = NULL; Node *current=base; Node * new_ptr=base; base=base->next; while(base!=NULL&&other!=NULL){ if(base->data<=other->data){ current->next=base; current=base; base=base->next; }else{ current->next=other; current=other; other=other

Nodejs资料之nodemon模块

我怕爱的太早我们不能终老 提交于 2020-01-29 06:09:41
◆ 模块作用: nodemon是一个命令行工具,用以辅助项目开发。在Node.js中,可以在每次修改文件后重新执行该文件。 ◆ 使用步骤: 使用npm install nodemon –g 下载 F:\workstation\nodejs> npm install nodemon -g 在命令行工具中用nodemon命令替代node命令执行文件 F:\workstation\nodejs> nodemon .\demo.js [nodemon] 2.0.2 [nodemon] to restart at any time, enter `rs` [nodemon] watching dir(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node .\demo.js` 测试代码 [nodemon] clean exit - waiting for changes before restart ◆ nodemon执行报错处理: 报错信息: F:\workstation\nodejs> nodemon .\demo.js nodemon : 无法加载文件 C:\Users\ASUS\AppData\Roaming\npm\nodemon.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅

C#实现单链表

北城余情 提交于 2020-01-29 04:47:18
【前置知识】 数据结构之链表 泛型 接口 类(属性、 对C#构造器的理解 ) (有了这些知识,代码很快就能看懂,这些知识不熟的话,要看好久) 【节点的构成】 新建一个类,用于存放节点类 namespace SingleLinkedList { /// <summary> /// 单链表的节点 /// </summary> /// <typeparam name="T"></typeparam> class Node<T> { #region 节点的构成、属性 private T data;//存储数据 private Node<T> nextNode;//指针,指向下一个元素,存储了下一个节点的位置 public T Data { get { return data; } set { data = value; } } public Node<T> NextNode { get { return nextNode; } set { nextNode = value; } } #endregion #region 节点的构造器 public Node() { data = default(T); nextNode = null; } //构造器重载 public Node(T value) { data = value; nextNode = null; } public Node