node

LinkedList-5

最后都变了- 提交于 2020-02-25 01:34:33
LinkedList 适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用. LinkedList 底层数据结构是一个双向链表,整体结构如下图所示: 我们有几个概念如下: 链表每个节点我们叫做 Node,Node 有 prev 属性,代表前一个节点的位置,next 属性,代表后一个节点的位置; first 是双向链表的头节点,它的前一个节点是 null。 last 是双向链表的尾节点,它的后一个节点是 null。 当链表中没有数据时,first 和 last 是同一个节点,前后指向都是 null。 Node 的组成部分: private static class Node<E> { E item;// 节点值 Node<E> next; // 指向的下一个节点 Node<E> prev; // 指向的前一个节点 // 初始化参数顺序分别是:前一个节点、本身节点值、后一个节点 Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } } 1.追加(新增) 追加节点时,我们可以选择追加到链表头部,还是追加到链表尾部,add 方法默认是从尾部开始追加,addFirst 方法是从头部开始追加,我们分别来看下两种不同的追加方式:

单链表的实现

廉价感情. 提交于 2020-02-24 18:05:58
在单链表中,我们需要在内部有一个头节点,我们可以通过这个头节点找到其他的节点,相当于一个线索。 纵观顺序结构的线性表和单链表的实现,难点基本上都在于添加和删除操作。基于数组的线性表中,数组的索引就相当于是线性表的序号,但在单链表中,我们没有序号这个东西,所以在添加和删除操作中,我们需要先找到指定的元素,然后才能继续进行操作。在插入操作中,我们需要同时保存有当前节点的前一个节点和当前的节点,因为当前要插入的节点要放在前一个节点的Next引用域,而当前节点要放在要插入节点的next域。删除节点与此相似。 using System ; using System . Collections . Generic ; using System . Linq ; using System . Text ; namespace DataStructure { class LinkList < T > : IListDS < T > { class Node < T > { private T data ; /// <summary> /// 数据域 /// </summary> public T Data { get { return data ; } set { data = value ; } } private Node < T > next ; /// <summary> /// 引用域

C单链表操作

醉酒当歌 提交于 2020-02-24 18:00:12
函数顺序依次为单链表的创建(头插和尾插法), 初始化,判空,遍历,求链表长度,按值查找,按位查找,插入,删除,销毁 操作 并且在主函数中举例说了链表的创建,遍历,求长,删除,插入操作; 进阶操作: c循环链表 http://blog.csdn.net/bestsort/article/details/78715889 http://blog.csdn.net/bestsort/article/details/78715962 #include <stdio.h> #include <stdlib.h> typedef int DataType; //用DataType 替代 int方便修改数据类型 typedef struct Node{ DataType data; //数据域 struct Node *next; //指针域 }Node; //建立单链表(尾插法) //比如说数据1 2 3 4 5 //链表中从头指针开始数据顺序为1 2 3 4 5 //每次从链表末尾插入 Node *CreatTailList(DataType a[],int n){ Node *s = NULL,*r = NULL; Node *first = (Node *)malloc( sizeof(Node)); r = first;//尾指针初始化 first -> next = NULL;

Redis集群-官方推荐方案RedisCluster

本小妞迷上赌 提交于 2020-02-24 13:56:02
Redis集群-官方推荐方案RedisCluster 前情提要 理解RedisCluster的原理和容错机制 能够配置RedisCluster并使用 redis使用中遇到的瓶颈 我们日常工作中使用Redis,经常会遇到一些问题: 1、高可用问题,如何保证redis的持续高可用性。   2、容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。   3、并发性能问题,redis号称单实例10万并发,但也是有尽头的。 RedisCluster的原理和容错机制 redis的集群策略 redis3.0以后推出的redis cluster 集群方案,redis cluster集群保证了高可用、高性能、高可扩展性。 主要有下面三种集群策略,分别为: 推特:twemproxy : 代理式 豌豆荚:codis :代理式 官方:redis cluster : 非代理 我们主要来学习官方推出的 redis cluster,这也是生产项目中用的最多的。 redis-cluster的优势 1、官方推荐,毋庸置疑。   2、去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。   3、管理方便,后续可自行增加或摘除节点,移动分槽等等。   4、简单,易上手。 redis-cluster名词介绍 1、master  主节点、   2、slave   从节点   3

循环单链表

假如想象 提交于 2020-02-24 08:39:09
public class Node { public Object data; public Node next; public Node(){} public Node(Object data,Node next){ this.data = data; this.next = next; } }    public class CirSingleLink { private Node node = null; private int size = 0; public void init(){ node = new Node(); node.data = null; //头结点指向头结点 node.next = node; } //从尾结点进行插入 public void add(Object i){ Node newNode = new Node(i,node); if(node.next == node){ node.next = newNode; }else{ Node tmp = node; while (tmp.next != node){ tmp =tmp.next; } tmp.next = newNode; } size ++; } public void delete(Object i){ Node tmp = node; while(tmp.next !=

redis学习笔记

僤鯓⒐⒋嵵緔 提交于 2020-02-24 02:52:19
问题一:项目中缓存是如何使用的?缓存如果使用不当会造成什么结果? 1.用缓存,主要有俩用途, 高性能 和 高并发 ,一般的中小型项目考虑 高并发 2.常见的缓存问题有以下三个: 缓存与数据库数据不一致 缓存雪崩 缓存穿透 缓存并发竞争 问题二:redis和memacached 有什么区别?Redis的线程模型是什么,为什么单线程的Redis比多线程的memacached效率要高得多? redis 和 memacached的区别? Redis支持的服务端的数据操作:Redis相比memacached来说,拥有更多的数据结构并支持更丰富的操作,通常在memacached中,你需要将数据拿到客户端来进行类似的修改在set回去,这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的get/set 一样高效。所以如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。 内存使用对比:使用简单的key -value 存储的话,memacached的内存利用率高;而Redis采用哈希结构来做key -value 存储,由于其组合式的压缩,其内村利用率要更高; 性能对比:由于redis是单核的,而memacached可以使用多核,所以平均每一个核上Redis在存储大量小数据时比memcached性能更高。而在100K以上数据

43.安装npm及cnpm(Windows)

余生颓废 提交于 2020-02-24 00:27:28
转自:https://www.cnblogs.com/yominhi/p/7039795.html 【工具官网】 Node.js : http://nodejs.cn/ 淘宝NPM: https://npm.taobao.org/ 【安装步骤】 一、安装node.js 1.前往 node.js官网 下载并安装工具,这里安装路径选到D盘,D:\Program Files\nodejs 安装完毕在命令行输入以下命令测试是否安装成功,正确会出现版本号 1 npm -v 2.改变原有的环境变量, (1)我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立"node_global"及"node_cache"两个文件夹,输入以下命令改变npm配置 1 2 npm config set prefix "C:\Program Files\nodejs\node_global" npm config set cache "C:\Program Files\nodejs\node_cache" (2)在系统环境变量添加系统变量NODE_PATH,输入路径D:\Program Files\nodejs\node_global\node_modules,此后所安装的模块都会安装到改路径下 (3

nodeJS跨域的解决方法

╄→尐↘猪︶ㄣ 提交于 2020-02-23 23:02:56
浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域,这是浏览器的安全机制造成的,也被成为同源问题。 那么,如何解决跨域呢? 1、采用jsonp方法解决跨域,利用script标签,用script标签加载资源是没有跨域问题的,通过script标签的一个src属性加载(包含指定的外部文件),可以跨域包含 ,被包含的资源可以是任何类型的文件(可以是txt,php等) 2、在服务器端利用nodejs设置头文件header来解决跨域,实例代码如下: const http = require(“http”); http.createServer((req,res)=>{ res.setHeader(“Access-Control-Allow-Origin”, “*”); res.setHeader(“Access-Control-Allow-Headers”, “Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild”); res.setHeader(“Access-Control-Allow-Methods”,“PUT,POST,GET,DELETE,OPTIONS”); res.setHeader(“X-Powered-By”,’ 3.2.1

安装npm及cnpm(Windows)

假装没事ソ 提交于 2020-02-23 22:12:13
安装npm及cnpm(Windows) 【工具官网】 Node.js : http://nodejs.cn/ 淘宝NPM: https://npm.taobao.org/ 【安装步骤】 一、安装node.js 1.前往 node.js官网 下载并安装工具,这里安装路径选到D盘,D:\Program Files\nodejs 安装完毕在命令行输入以下命令测试是否安装成功,正确会出现版本号 1 npm -v 2.改变原有的环境变量, (1)我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立"node_global"及"node_cache"两个文件夹,输入以下命令改变npm配置 1 2 npm config set prefix "C:\Program Files\nodejs\node_global" npm config set cache "C:\Program Files\nodejs\node_cache" (2)在系统环境变量添加系统变量NODE_PATH,输入路径D:\Program Files\nodejs\node_global\node_modules,此后所安装的模块都会安装到改路径下 (3)在命令行输入以下命令试着安装express(注:“-g