node

nodeJS核心模块介绍

♀尐吖头ヾ 提交于 2019-12-15 18:50:01
fs模块 fs模块是nodejs中最常用的一个模块,因此掌握fs模块非常的有必要,fs模块的方法非常多,用到了哪个查哪个即可。 文档地址:http://nodejs.cn/api/fs.html 在nodejs中,提供了fs模块,这是node的核心模块 注意: 除了global模块中的内容可以直接使用,其他模块都是需要加载的。 fs模块不是全局的,不能直接使用。因此需要导入才能使用。 var fs = require ( "fs" ) ; 读取文件 语法:fs.readFile(path[, options], callback) 方式一:不传编码参数 //参数1: 文件的名字 //参数2: 读取文件的回调函数 //参数1:错误对象,如果读取失败,err会包含错误信息,如果读取成功,err是null //参数2:读取成功后的数据(是一个Buffer对象) fs . readFile ( "data.txt" , function ( err , data ) { console . log ( err ) ; console . log ( data ) ; } ) ; 方式二:传编码参数 //参数1: 文件的路径 //参数2: 编码,如果设置了,返回一个字符串,如果没有设置,会返回一个buffer对象 //参数3: 回调函数 fs . readFile ( "data.txt"

Redis-5-集群

丶灬走出姿态 提交于 2019-12-15 17:50:08
1.什么是Redis集群? Redis的集群有两种: 读写分离集群,主从复制。 内置集群,分片。 2.为什么要使用Redis集群? 读写分离集群,解决的是高可用问题。 内置集群,解决的是高扩展和高可用问题。 3.如何搭建Redis集群? 为了保证集群投票,至少需要3个主节点,每个主节点至少需要一个从节点,作为读写分离和热备,总共需要6台服务器。 3.1准备集群节点 复制一个干净的Redis环境的bin文件夹,清理后作为第一个Redis节点 # 进入redis安装目录 cd /usr/local/redis #新建目录,存放redis集群节点目录 mkdir redis-cluster # 复制redis cp -R bin/ redis-cluster/node1 #进入node1目录 cd redis-cluster/node1 # 删除快照和持久化文件(如果有的话) rm -f dump.rdb & rm -f appendonly.aof # 删除原来的配置文件(如果该配置文件被修改过,则删除,可选) #rm -r redis.conf # 复制新的配置文件(可选) #cp /root/redis-5.0.5/redis.conf ./ # 修改配置文件 vi redis.conf 3.2集群环境的Redis配置文件 # 不能设置密码,否则集群启动时会连接不上 #

nodeJS之模块化开发

血红的双手。 提交于 2019-12-15 17:13:51
模块化 基本概念 在nodejs中,应用由模块组成,nodejs中采用commonJS模块规范。 一个js文件就是一个模块 每个模块都是一个独立的作用域,在这个而文件中定义的变量、函数、对象都是私有的,对其他文件不可见。 01-模块化的概念 用于演示每一个模块都有自己单独的作用域 node中模块分类 1 核心模块 由 node 本身提供,不需要单独安装(npm),可直接引入使用 2 第三方模块 由社区或个人提供,需要通过npm安装后使用 3 自定义模块 由我们自己创建,比如:tool.js 、 user.js 核心模块 fs:文件操作模块 http:网络操作模块 path:路径操作模块 url: 解析地址的模块 querystring: 解析参数字符串的模块 基本使用:1 先引入 2 再使用 // 引入模块 var fs = require ( 'fs' ) ; 第三方模块 第三方模块是由 社区或个人 提供的 比如:mime模块/art-template/jquery… 基本使用:1 先通过npm下载 2 再引入 3 最后使用 用户自定义模块 由开发人员创建的模块(JS文件) 基本使用:1 创建模块 2 引入模块 注意:自定义模块的路径必须以 ./ 获取 ../ 开头 // 加载模块 require ( './a' ) // 推荐使用,省略.js后缀! require ( './a

HashMap源码分析

☆樱花仙子☆ 提交于 2019-12-15 12:31:19
HashMap 文章目录 HashMap 基本属性 构造函数 无参构造 HashMap(int,float)型构造函数 HashMap(int)型构造函数 `HashMap(Map)型构造函数` HashMap常用方法 put方法 hash方法 putVal方法 寻找key对应的映射关系: treeifyBin方法 treeify方法 get方法 resize方法 hashmap的实现原理:首先有一个每个元素都是链表(可能表述不准确)的数组,当添加一个元素时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后面,他们在数组的同一位置,但是形成了链表,同一各链表上的Hash值是相同的,所以说数组存放的是链表。而当链表长度太长时,链表就转换为红黑树,这样大大提高了查找的效率。 当链表数组的容量超过初始容量的0.75时,再散列将链表数组扩大2倍,把原链表数组的搬移到新的数组中 当table中的元素足够多时,发生冲突的概率就会大大增加,冲突的增多会导致每个桶中的元素个数变多,这样的话会使得查找元素效率变得低下,当同一个桶中元素个数达到8时,桶中的元素结构将转换为红黑树。 基本属性 public class HashMap < K , V > extends AbstractMap < K

vs code上远程调试python程序

喜你入骨 提交于 2019-12-15 03:13:05
1.在vs code 上安装Remote ssh 2. 配置登陆信息 3.远程linux服务器,本地python环境下安装ptvsd。pip3 install ptvsd 在vs code 中访问远程文件,F5 。如果配置好了,那么打断点就可以调试了。如果没有配置好,那么配置launch.json 我的配置 { "type": "python", "request": "launch", "name": "Launch Program", "skipFiles": [ "<node_internals>/**" ], "program": "${file}" } 来源: CSDN 作者: ppp11 链接: https://blog.csdn.net/qqjjjaa11/article/details/103479386

Node.js基础

谁说我不能喝 提交于 2019-12-14 19:53:52
什么是Nodejs? Nodejs 是一个基于Chrome V8引擎的Javascript运行时(运行环境) Nodejs 安装 Node.js提供了哪些内容? Nodejs运行时,JavaScript代码运行时的环境。 提供了一些核心模块,应用程序编程接口(Application Program Interface,API) 官方API文档https://nodejs.org/dist/latest-v12.x/docs/api/ 国内API文档http://nodejs.cn/api/ 交互式解析器(Read Execute Print Loop,REPL),以及一些相关的命令 打开命令窗口,输入node并回车,即可进入交互式解析器 输入.help命令,获取帮助信息。 +输入.break或.clear(.break命令的别名)跳出当前代码块,例如,if(true){ .break 输入.save命令,可以将当前会话中的代码保存到一个文件中,例如,.save app.js 输入.load命名,可以一个文件中的代码加载到当前会话中执行,例如,.load app.js 输入.editor命名,进入编辑器模式,Ctrl + D编辑完成,Ctrl + C取消编辑 输入.exit命令,回车既可以退出交互式解析器 引入CommonJS模块化规范,同时支持ECMAScript模块化规范

java之ConcurrentHashMap在jdk1.7和jdk1.8中的不同

你说的曾经没有我的故事 提交于 2019-12-14 19:53:21
1.底层结构发生变化 jdk 1.7底层结构是:数组(Segment)+ 链表(HashEntry节点)组成 使用分段锁技术,将整个数据结构分段(默认为16段)进行存储,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问。如下图是ConcurrentHashMap的内部结构图: 从上面的结构我们可以了解到,ConcurrentHashMap定位一个元素的过程需要进行两次Hash操作。 第一次Hash定位到Segment,第二次Hash定位到元素所在的链表的头部。 jdk1.8底层结构是:Node数组+链表 / 红黑树 其实就是JDK 1.8中的hashMap结构 Node数组使用来存放树或者链表的头结点,当一个链表中的数量到达一个数目时,会使查询速率降低,所以到达一定阈值时,会将一个链表转换为一个红黑二叉树,通告查询的速率。 相互转化跟JDK1.8版本的hashMap保持一致 2、代码层实现 (1)、put方法 步骤: 1、检查Key或者Value是否为null,如果是null抛出空指针异常 2、得到Kye的hash值 3、如果Node数组是空的,此时才初始化 initTable(), 4、如果找的对应的下标的位置为空,直接new一个Node节点并放入, break; 5

MySQL高可用架构之MHA

空扰寡人 提交于 2019-12-14 18:15:36
一、MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。 MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为主库),大概0.5-2秒内即可完成。 自动故障检测和自动故障转移 MHA能够在一个已经存在的复制环境中监控MySQL,当检测到Master故障后能够实现自动故障转移,通过鉴定出最“新”的Salve的relay log,并将其应用到所有的Slave,这样MHA就能够保证各个slave之间的数据一致性,即使有些slave在主库崩溃时还没有收到最新的relay log事件。一个slave节点能否成为候选的主节点可通过在配置文件中配置它的优先级。由于master能够保证各个slave之间的数据一致性,所以所有的slave节点都有希望成为主节点。在通常的replication环境中由于复制中断而极容易产生的数据一致性问题,在MHA中将不会发生。

Java实现单链表增删操作

孤街浪徒 提交于 2019-12-14 17:36:34
package task1 ; /** * 功能:单链表增删操作 * Created by liumao 2019/8/4 **/ public class SingleLinkedList { // 定义链表结点 class Node { // 数据域 int data ; // 指针域 Node next ; public Node ( int data , Node next ) { this . data = data ; this . next = next ; } } public static void main ( String [ ] args ) { SingleLinkedList sLinkedList = new SingleLinkedList ( ) ; sLinkedList . insertvalue ( 1 ) ; sLinkedList . insertvalue ( 2 ) ; sLinkedList . insertvalue ( 3 ) ; sLinkedList . insertvalue ( 4 ) ; System . out . println ( "插入后:" ) ; sLinkedList . print ( ) ; // System.out.println("按索引查找:" + sLinkedList

Java HashMap工作原理

丶灬走出姿态 提交于 2019-12-14 16:36:41
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 内部存储 Java HashMap类实现了Map<K, V>接口。这个接口中的主要方法包括: V put(K key, V value) V get(Object key) V remove(Object key) Boolean containsKey(Object key) HashMap使用了一个内部类Entry<K, V>来存储数据。这个内部类是一个简单的键值对,并带有额外两个数据: 一个指向其他入口(译者注:引用对象)的引用,这样HashMap可以存储类似链接列表这样的对象。 一个用来代表键的哈希值, 存储这个值可以避免 HashMap在每次需要时都重新生成键所对应的哈希值。 下面是Entry<K, V>在Java 7下的一部分代码: 1 2 3 4 5 6 7 staticclassEntry<K,V>implementsMap.Entry<K,V> { finalK key; V value; Entry<K,V> next; inthash; … } HashMap将数据存储到多个单向Entry链表中(有时也被称为桶bucket或者容器orbins)。所有的列表都被注册到一个Entry数组中(Entry<K, V>[]数组),这个内部数组的默认长度是16。