node

c primer plus 第十七章课后编程2题

梦想与她 提交于 2019-12-13 05:16:49
/ 把程序清单17.3使用下面的定义: / typedef struct list { Node *head; / 指向list的开头 / Node *end; / 指向list的末尾 / }List; / 不用修改主函数,只修改了程序清单17.5中的函数以适应新的定义,所以只发修改的list.c / #include “list.h” #include <stdio.h> #include <stdlib.h> / 局部函数原型 / static void CopyToNode(Item item, Node *pnode); / 接口函数 / / 把链表设置为空 / void InitializeList(List *plist) { plist = NULL; } / 如果链表为空,返回true / bool ListIsEmpty(const List *plist) { if(plist == NULL) return true; else return false; } / 如果链表已满,返回true / bool ListIsFull(const List *plist) { Node *pt; bool full; pt = (Node *)malloc(sizeof(Node)); if(NULL==pt) full = true; else full =

Node服务器端开发第一天

北慕城南 提交于 2019-12-13 04:54:38
Node服务器端开发第一天 Node简介及配置、快速上手、核心特点、模块化 Node简介 客户端的JavaScript是怎样的 什么是 JavaScript? 脚本语言 运行在浏览器中 一般用来做客户端页面的交互(Interactive) JavaScript 的运行环境? 是不是运行在浏览器呢? 不够严谨 运行在浏览器内核中的 JS 引擎(engine) 浏览器中的 JavaScript 可以做什么? 操作DOM(对DOM的增删改、注册事件) AJAX/跨域 BOM(页面跳转、历史记录、console.log()、alert()) ECMAScript 浏览器中的 JavaScript 不可以做什么? 文件操作(文件和文件夹的CRUD) 没有办法操作系统信息 由于运行环境特殊(我们写的代码是在不认识的人的浏览器中运行) 在开发人员能力相同的情况下编程语言的能力取决于什么? -语言本身?- 语言本身只是提供定义变量,定义函数,定义类型,流程控制,循环结构之类的操作 取决于运行该语言的平台(环境) 对于JS来说,我们常说的JS实际是ES,大部分能力都是由浏览器的执行引擎决定 BOM和DOM可以说是浏览器开放出来的接口 比如:Cordova中提供JS调用摄像头,操作本地文件的API Java既是语言也是平台 Java运行在Java虚拟机(跨操作系统) PHP既是语言也是平台(跨操作系统

nodejs express 上传下载

て烟熏妆下的殇ゞ 提交于 2019-12-13 04:37:41
上传模块 npm i multer or yarn multer 引入 ar multer = require('multer'); var fs = require('fs'); const UPLOAD_PATH = './uploads' var upload = multer({ dest: UPLOAD_PATH }) router.post('/upload', upload.array('fileUpload'), function(req, res, next) { const files = req.files; const response = []; const result = new Promise((resolve, reject) => { files.map((v) => { fs.readFile(v.path, function(err, data) { fs.writeFile(`${UPLOAD_PATH}/${v.originalname}`, data, function(err, data) { const result = { file: v, } if (err) reject(err); resolve('成功'); }) }) }) }) result.then(r => { res.json({ msg: '上传成功', })

Redis读写分离--复制

无人久伴 提交于 2019-12-13 01:20:05
1.redis高并发的瓶颈 单机redis,能够承载的QPS大概在上万-几万 2.如果redis要支撑超过10万+QPS (读) 读写分离,一般来说,对缓存,一般来支撑读高并发的,写请求比较少。 master(主)节点负责写,同步数据到slave节点;slave(从)负责读。易于水平扩容,增加slave就可以 3.redis replication (redis 复制) master--> slave 数据同步过程 (1)redis采用异步方式复制数据到slave节点,redis2.8以后 slave node 会周期性的确认自己每次复制的数据量 (2) 一个master可以配多个 slave,slave 可以连接其他slave (3)salve在做复制的时候,会使用旧的数据集提供服务。在复制完成的时候,需要删除旧的数据集,加载新的。这时候会暂停对外服务 (4)slave 主要用来进行横向扩容,做读写分离。 4.master 持久化对于主从架构的安全保障意义 采用主从架构,必须开启master 的持久化。如果master 没有本地数据可以恢复,会将空的数据集同步到slave,所有的slave都变成空了。 5、主从架构的核心原理 当启动一个slave node的时候,它会发送一个PSYNC命令给master node 如果这是slave node 重新连接master node

链表

南笙酒味 提交于 2019-12-13 01:12:40
删除链表中的节点:1.通过找前一个节点          2.通过找后一个节点然后把当前节点伪装成后一个 void deleteNode(ListNode* node) { node->val = node->next->val; node->next = node->next->next; } 来源: https://www.cnblogs.com/sxq-study/p/12031330.html

深入浅出HashMap的设计与优化

空扰寡人 提交于 2019-12-13 00:50:09
一:常用的数据结构 众所周知, ArrayList 是基于数组的数据结构实现的,LinkedList 是基于链表的数据结构实现的,而 HashMap 是基于哈希表的数据结构实现的。我们不妨一起来温习下常用的数据结构。 数组: 采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为 O(1),但在数组中间以及头部插入数据时,需要复制移动后面的元素。 链表: 一种在物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素)组成,结点可以在运行时动态生成。每个结点都包含“存储数据单元的数据域”和“存储下一个结点地址的指针域”这两个部分。由于链表不用必须按顺序存储,所以链表在插入的时候可以达到 O(1) 的复杂度,但查找一个结点或者访问特定编号的结点需要 O(n) 的时间。 哈希表: 根据关键码值(Key value)直接进行访问的数据结构。通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组就叫做哈希表。 树: 由 n(n≥1)个有限结点组成的一个具有层次关系的集合,就像是一棵倒挂的树。 二:HashMap 的实现结构 了解完数据结构后,我们再来看下 HashMap 的实现结构。作为最常用的 Map 类,它是基于哈希表实现的,继承了 AbstractMap

Node自动重启工具 nodemon

前提是你 提交于 2019-12-12 21:03:17
为什么要使用 在编写调试Node.js项目,修改代码后,需要频繁的手动close掉,然后再重新启动,非常繁琐。现在,我们可以使用 nodemon 这个工具,它的作用是监听代码文件的变动,当代码改变之后,自动重启。 如何使用 nodemon 下载 cnpm install -g nodemon 安装在全局。 使用 编写代码 app.js var express = require("express") var app = express() app.get('/',function(req,res) { res.send("hello world") }) app.listen(3000,function(){ console.log('server is running') }) 来源: https://www.cnblogs.com/laowan0808/p/12031398.html

简单易懂带你了解二叉树

巧了我就是萌 提交于 2019-12-12 19:31:37
前言 上一篇博客为大家介绍了 数组与链表 这两种数据结构,虽然它们在某些方面有着自己的一些优点,但是也存在着一些自身的缺陷,本篇博客为将为大家介绍一下数据结构--- 二叉树 ,它在保留数组和链表的优点的同时也改善了它们的缺点(当然它也有着自己的缺点,同时它的实现也比较复杂). 1. 数组和链表的特点 数组的优点: 简单易用. 无序数组的插入速度很快,效率为O(1) 有序数组的查找速度较快(较无序数组),效率为O(logN) 数组的缺点: 数组的查找、删除很慢 数组一旦确定长度,无法改变 链表的优点: 可以无限扩容(只要内存够大) 在链表头的新增、删除很快,效率为O(1) 链表的缺点: 查找很慢 在非链表头的位置新增、删除很慢,效率为O(N) 2.树和二叉树 树是一种数据结构,因为它数据的保存形式很像一个树,所以得名为树(树状图). 而二叉树是一种特殊的树, 它的每个节点最多含有两个子树 ,现实世界中的二叉树: 图1 但是实际中的二叉树却是 倒挂 的,如图: 图2 二叉树的名词解释: 根:树顶端的节点称为根。一棵树只有一个根,如果要把一个节点和边的集合称为树,那么从根到其他任何一个节点都必须有且只有一条路径。A是根节点。 父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;B是D的父节点。 子节点:一个节点含有的子树的根节点称为该节点的子节点;D是B的子节点。 兄弟节点

PHP Tidy完美的XHTML纠错&过滤

我的梦境 提交于 2019-12-12 19:12:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 输入和输出 输入和输出应该说是很多网站的基本功能。用户输入数据,网站输出数据供其他人浏览。 拿目前流行的Blog为例,这里的输入输出就是作者编辑文章后生成博客文章页面供他人阅读。 这里有一个问题,即用户输入通常是不受控制的,它可能包含不正确的格式亦或者含有有安全隐患的代码;而最终网站输出的内容却必须是正确的HTML代码。这就需要对用户输入的内容进行纠错和过滤。 永远不要相信用户的输入 你可能会说:现在到处都是所见即所得的编辑器(WYSIWYG), FCKeditor 、 TinyMCE ...你可能会举出一大堆。是的,它们都可以自动生成标准的XHTML代码,但是作为web开发人员,你肯定听过"永远不要相信用户递交的数据"。 因此对用户输入数据进行纠错和过滤是必需的。 需要更好的纠错和过滤 目前为止我还没见过有让我满意的相关实现,能接触到的通常都是效率低下、效果不太理想,有这样那样的明显缺陷。举个比较知名的例子: WordPress 是一种使用非常广泛的blog系统,操作简单功能强大且有丰富的插件支持,但是它集成的TinyMCE和后台一堆有些自作聪明的纠错过滤代码却令人相当头痛,对半角字符的强制替换,过于保守的替换规则等等.....导致像贴一段代码让它正确显示这种需求都很难做到。 这里顺便抱怨一下

Java并发编程J.U.C之Condition

落花浮王杯 提交于 2019-12-12 17:54:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一篇中,我们了解了下 J.U.C的锁的获取与释放的过程 ,这个过程主要通过在A.Q.S中维持一个等待队列来实现,其中我们也提到了,在A.Q.S中除了一个等待队列之外,还有一个Condition队列,在了解Condition队列之前,先来看一下Condition是怎么回事: The synchronizer framework provides a ConditionObject class for use by synchronizers that maintain exclusive synchronization and conform to the Lock interface. Any number of condition objects may be attached to a lock object, providing classic monitor-style await, signal, and signalAll operations, including those with timeouts, along with some inspection and monitoring methods. 上面的这一段内容摘自Doug Lea的 AQS论文 ,从上面这一段话可以看出