node

redis内置集群通信机制

廉价感情. 提交于 2020-01-10 03:56:17
你能聊聊redis cluster集群模式的原理吗? 1、面试题redis集群模式的工作原理能说一下么?在集群模式下,redis的key是如何寻址的?分布式寻址都有哪些算法?了解一致性hash算法吗? 2、面试官心理分析 在以前,如果前几年的时候,一般来说,redis如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者twemproxy,都有。有一些redis中间件,你读写redis中间件,redis中间件负责将你的数据分布式存储在多台机器上的redis实例中。这两年,redis不断在发展,redis也不断的有新的版本,redis cluster,redis集群模式,你可以做到在多台机器上,部署多个redis实例,每个实例存储一部分的数据,同时每个redis实例可以挂redis从实例,自动确保说,如果redis主实例挂了,会自动切换到redis从实例顶上来。现在redis的新版本,大家都是用redis cluster的,也就是redis原生支持的redis集群模式,那么面试官肯定会就redis cluster对你来个几连炮。要是你没用过redis cluster,正常,以前很多人用codis之类的客户端来支持集群,但是起码你得研究一下redis cluster吧。 redis如何在保持读写分离+高可用的架构下,还能横向扩容支持1T+的海量数据

redis主从复制详细

假装没事ソ 提交于 2020-01-10 03:15:02
1、复制的完整流程 (1)slave node启动,仅仅保存master node的信息,包括master node的host和ip,但是复制流程没开始 master host和ip是从哪儿来的,redis.conf里面的slaveof配置的 (2)slave node内部有个定时任务,每秒检查是否有新的master node要连接和复制,如果发现,就跟master node建立socket网络连接 (3)slave node发送ping命令给master node (4)口令认证,如果master设置了requirepass,那么salve node必须发送masterauth的口令过去进行认证 (5)master node第一次执行全量复制,将所有数据发给slave node (6)master node后续持续将写命令,异步复制给slave node 2、数据同步相关的核心机制 指的就是第一次slave连接msater的时候,执行的全量复制,那个过程里面你的一些细节的机制 (1)master和slave都会维护一个offset master会在自身不断累加offset,slave也会在自身不断累加offset slave每秒都会上报自己的offset给master,同时master也会保存每个slave的offset 这个倒不是说特定就用在全量复制的

使用node查询数据库(mysql)时,日期格式不对的问题。

最后都变了- 提交于 2020-01-10 00:54:23
https://blog.csdn.net/chanlingmai5374/article/details/93190983 1、问题场景 数据库里存了 datetime 。但 Node 查询出来是这样子的: 2019-05-14T21:40:59.000Z 2、解决办法 这是 Mysql时区 与 Node时区 不一致导致的。 解决方法:配置Node数据库连接。 加上 timezone 这一行: client: { host: '***.***.***.***', port: '****', user: '****', timezone: "08:00" } 3、重新尝试 Node 查询,得到结果: 2019-05-15 05:40:59 返回正常。收工! 来源: https://www.cnblogs.com/qinlongqiang/p/12174130.html

Angular2.x/Typescript模块引入解析

▼魔方 西西 提交于 2020-01-09 23:50:51
首先,模块引入的时候有两种方式: 1、相对导入: import Entry from "./components/Entry"; import { DefaultHeaders } from "../constants/http"; import "/mod"; 相对导入在解析时是相对于导入它的文件,并且不能解析为一个外部模块声明,你应该为你自己写的模块使用相对导入,这样能确保它们在运行时的相对位置。 2、非相对导入: import * as $ from "jQuery"; import { Component } from "@angular/core"; 非相对模块的导入可以相对于baseUrl(在tsconfig.json中配置,详见https://www.tslang.cn/docs/handbook/module-resolution.html )或通过下文会讲到的路径映射来进行解析。 它们还可以被解析成 外部模块声, 使用非相对路径来导入你的外部依赖或者你项目的公共库(Angular8 后创建项目默认就是一个多个项目合集的workspace,项目间能更友好的访问)。 当我们import后,Angualr2.x/Typescript是怎么来解析找到我们的模块的呢? 比如有一个相对导入,有一个导入语句import { b } from "./moduleB"在/root

Node入门

谁说胖子不能爱 提交于 2020-01-09 21:54:18
服务端JavaScript JavaScript最早是运行在浏览器上的,浏览器只是提供了一个上下文,它定义了JavaScript可以做什么,并没有指明JavaScript语言本身可以做什么,实际上,JavaScript是一门完整的语言,可以使用在不同的上下文中,要实现在后台运行JavaScript代码,代码需要先被解释然后执行,Node.js的原理就是如此,他使用Google的V8虚拟机来解释和执行JavaScript代码,因此,NodeJs事实上既是一个运行时环境,同时又是一个库。 Node.js的Web应用 一个基础的HTTP服务器 新建一个server.js文件并写入如下代码: var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(8888); 使用Node.js执行脚本 node server.js 在浏览器访问http://localhost:8888/,可以看到网页。 用这样的代码也可以实现: var http = require("http");

node设置淘宝镜像源

坚强是说给别人听的谎言 提交于 2020-01-09 16:42:57
28岁程序员小王 因为墙的原因使用npm比较慢 就换了下国内的源 安装 cnpm,即 npm 的国内镜像。使用 cnmp 的好处是在日后下载内容时会比较快,但是下载的包可能不是最新的。 安装 cnpm 的命令为 : npm install -g cnpm --registry=https://registry.npm.taobao.org 但是吧,不是最新的也还好,老是出一些莫名其妙的问题就不能忍啊。 更改npm的config的registry 为淘宝镜像,然后再使用npm的时候,就是从淘宝镜像拉取数据了。 npm config set registry " https://registry.npm.taobao.org " 这样既不用使用难受的cnmp(老是下意思打成这个国骂缩写哈哈哈) 速度也快了,舒服! 来源: CSDN 作者: Beyond 链接: https://blog.csdn.net/u012998306/article/details/103895401

解决“npm不是内部或外部命令“

一笑奈何 提交于 2020-01-09 15:08:07
  在使用npm的时候,或者是通过npm下载了一些包,使用这些包的时候,有时候会遇到“npm 不是内部或外部命令”,或者“XXX 不是内部或外部命令”。这种情况一般都是由于安装node.js的时候,环境变量没有配置好。这里把如何配置环境变量做个笔记,以供参考。   一、安装node   npm是nodejs的一个子内容,所以要使用npm,就一定要先安装nodejs。安装方法其实没啥好说的,完全傻瓜化的,官网上下载安装包,一路next就完了。   安装完了如何判断自己是否安装成功呢?   你只需要在命令行窗口中输入命令:   node -v //查看node 的版本号 npm -v //查看npm的版本号   只要有输出版本号,就说明你安装成功了。如下图所示:      需要注意的是,nodejs的默认安装路径是C:\Program Files\nodejs。但是我们往往不想把软件都安装到C盘。比如我需要把nodejs安装到F盘,那么除了在安装时要选择自己的安装路径,接下来一定要做一定的配置,因为你的安装目录变了,如果还沿用默认的一些安装的参数,那么就容易出现问题,导致npm或者你下载的包无法使用   二、配置   假设,我把nodejs的安装根目录设置为F:\nodejs。那么,安装完毕后,我们看到该目录下有这些文件      除了这个目录,其实在C盘的另外一个目录下

算法练习题 - 回文字符串

一曲冷凌霜 提交于 2020-01-09 13:42:13
意图 使用单向链表实现判断一个字符串是否是回文字符串 思路 使用快、慢指针找出字符串中间那个数 找出前半部分字符串 遍历前半部分,和整个字符串挨个比较字符,如果都相等,则是回文字符串,反之不是 开发环境 swift4.2 Xcode11.3 示例代码 Node类 class Node < T > : NSObject , NSCopying { var next : Node ? var data : T ? override init ( ) { } init ( data : T ? ) { self . data = data } // 实现NSCopying协议方法 func copy ( with zone : NSZone ? = nil ) - > Any { var node : Node < T > ? = self var copy : Node < T > ? while node != nil { let tmp : Node < T > ? = Node ( ) tmp ? . data = node ? . data if node ? . next != nil { tmp ? . next = Node ( data : node ? . next ? . data ) } setNext ( & copy , next : tmp ) node =

平衡二叉树的java实现

江枫思渺然 提交于 2020-01-09 05:00:54
转载请注明出处! 一、概念 平衡二叉树是一种特殊的二叉搜索树,关于二叉搜索树,请查看上一篇博客 二叉搜索树的java实现 ,那它有什么特别的地方呢,了解二叉搜索树的基本都清楚,在按顺序向插入二叉搜索树中插入值,最后会形成一个类似链表形式的树,而我们设计二叉搜索树的初衷,显然是看中了它的查找速度与它的高度成正比,如果每一颗二叉树都像链表一样,那就没什么意思了,所以就设计出来了平衡二叉树,相对于二叉搜索树,平衡二叉树的一个特点就是,在该树中,任意一个节点,它的左右子树的差的绝对值一定小于2。关于它的演变什么的,请自行网上搜索答案。在本文中,为了方便,也是采用了int型值插入。 二、平衡二叉树的构建 它的类相对于二叉搜索树也并没有什么特殊之处,不做过多讲解,直接上代码 1 static class Node{ 2 Node parent; 3 Node leftChild; 4 Node rightChild; 5 int val; 6 public Node(Node parent, Node leftChild, Node rightChild,int val) { 7 super(); 8 this.parent = parent; 9 this.leftChild = leftChild; 10 this.rightChild = rightChild; 11 this.val

java循环链表

你说的曾经没有我的故事 提交于 2020-01-09 02:13:21
package com.zrp.link; /** * 节点类 * @author zrp * */ class Node{ public Node(){} public int data; //结点数据 public Node next; //指向下一结点的指针 Node(int data){ this.data = data; } /** * 获取节点数据 * @param null * @return int */ public int getNodeData(){ return this.data; } } /** * 报数链表类 * @author zrp * */ public class NumberOffLink { public Node headNode; //头结点 private int size; //链表长度 public int getSize() { return size; } public void setSize(int size) { this.size = size; } /** * 构造函数,无参构造函数 * @param n,node */ public NumberOffLink(){ } /** * 有参构造函数,创建链表 * @param 人数account */ public NumberOffLink(int