node

经典算法(三) 单链表 反转 & 是否相交/成环 & 求交点 等

徘徊边缘 提交于 2020-01-23 07:21:39
参考文章: 判断链表是否相交: http://treemanfm.iteye.com/blog/2044196 一、单链表反转 链表节点 public class Node { private int record; private Node nextNode; public Node(int record) { super(); this.record = record; } } View Code 构建链表 public static Node creatLinkedList() { Node head = new Node(0); Node tmp = null; Node cur = null; for (int i = 1; i < 10; i++) { tmp = new Node(i); if (1 == i) { head.setNextNode(tmp); } else { cur.setNextNode(tmp); } cur = tmp; } return head; } View Code 递归实现 public static Node reverse(Node head) { if (null == head || null == head.getNextNode()) { return head; } Node reversedHead =

nodejs实现OAuth2模式第三方GitHub授权登录

荒凉一梦 提交于 2020-01-23 05:53:29
什么是OAuth2 OAuth(Open Authorization,开放授权)协议为用户资源提供一个安全、开放而又简单的标准,是目前最流行的授权机制, 用于授权第三方应用。 OAuth的授权方式可以向第三方应用提供用户信息(比如头像、昵称等); 且不会使第三方触及到用户的用户名和密码,因此OAuth授权是安全的。 应用场景 第三方应用授权登录,例如:用支付宝或QQ账号授权登录优酷视频。 GitHub授权登录原理 网页登录认证,请求后台服务器 后台服务器重定向到GitHub认证 GitHub服务器第三方认证 GitHub服务器认证成功,回调带回认证状态code给后台服务器 后台 服务器用code想GitHub服务器申请令牌 申请成功,GitHub服务器向后台服务器返回认证令牌;后台服务器根据令牌获取GitHub用户信息 刷新页面 一、GitHub服务器配置 跳转GitHub 登录GitHub账户,点击设置里的Developer settings按钮,进入开发者配置 切换tab为OAuth Apps 点击New Oauth APP 配置授权页面,注册授权应用 Application name:应用名称 Homepage URL:应用首页地址 Application description:应用描述 Authorization callback URL:应用回调地址 注册完成

Nodejs之cluster

只谈情不闲聊 提交于 2020-01-23 05:20:59
cluster 集群 单个Nodejs实例运行在单个线程中,为充分利用多核系统,需要启用一组Node进程处理负载任务。 cluster允许建立一个主进程和若干个worker进程,由主进程监控和协调worker进程的运行。 worker之间采用进程通信交换消息,cluster模块内置一个负载均衡。 cluster集成两个方面: 集成了child_process.fork方法创建node子进程的方式; 继承了很多多核cpu创建子进程后,自动控制负载均衡的方式; cluster模块可以创建共享服务器端口的子进程。 const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { console.log(`主进程 ${process.pid} 正在运行`); // 衍生工作进程。 for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`工作进程 ${worker.process.pid} 已退出`); }); }

Vue环境搭建

六月ゝ 毕业季﹏ 提交于 2020-01-23 03:51:42
原地址 一、nodejs的安装 Node.js安装包及源码下载地址为: https://nodejs.org/en/download/ 。 我们可以根据不同平台系统选择你需要的Node.js安装包。Node.js 历史版本下载地址: https://nodejs.org/dist/ 这里演示的是Window64位安装Node.js ,下面演示的是采用安装包的方式来安装。 1、Windows 安装包(.msi) Node.js默认安装目录为 "C:\Program Files\nodejs\" , 你可以修改目录,并点击 next(下一步): :点击 Install(安装) 开始安装Node.js。你也可以点击 Back(返回)来修改先前的配置。 然后并点击 next(下一步): 安装完之后启动cmd依次执行以下两条命令检测是否安装成功,结果如下: 二、 node.js的环境变量的新建。 //我安装的路径是 D:\soft\nodejs 其实安装完node,就自动在path里增加环境变量,但是为了以后的本地部署项目,我们需要找到node.js的安装根目录,在当中新建“node_global”和"node_cache"两个文件夹。 1、 启动cmd依次执行以下两条命令   npm config set prefix " D:\soft\nodejs\node_global "  

node后台,MongoDB作为数据库,vue前端获取数据并渲染

牧云@^-^@ 提交于 2020-01-23 00:03:12
作为自己的第一个项目,也是毕业论文,记录点点滴滴,做完发现很简单,但还是纠结了几天。项目经历太少了 ...... 前提:vue脚手架创建项目,node后台,MongoDB数据库,并且跨域还有配置好 背景:前端Home.vue组件从后台获取图片并以轮播图效果展示 后台: models文件夹:存放各种数据库文件,由于存在好多种数据表结构,连接数据库时会产生问题,因此单独创建一个文件夹,创建db.js文件,该文件专门连接数据库。routes文件夹:路由处理文件 1 /** db.js 2 * 完成 MongoDB 的连接,向外暴露一个连接成功的对象 3 * @type {Mongoose} 4 */ 5 6 module.exports = app =>{ 7 const mongoose = require('mongoose'); 8 mongoose.connect('mongodb://localhost: 27017/paper',{ 9 useNewUrlParser: true, 10 autoIndex: true 11 }); 12 }; 注意,db.js文件要在app.js中挂载一下,这样不用在每个数据库文件中引入 1 // 引入数据库连接文件 2 require('./util/db')(app); 1 /** 2 * lunbotu.js 3 * 轮播图数据库

Java多线程(9)

浪子不回头ぞ 提交于 2020-01-22 19:33:11
Java多线程(9) AQS(2) 锁的占有与释放 对于AQS来说,线程同步的关键是对状态值state进行操作,根据state是否属于一个线程,操作state的方式分为独占方式和共享方式 独占方式下获取和释放资源使用的方法为: public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) selfInterrupt(); } public final void acquireInterruptibly(int arg) throws InterruptedException { if (Thread.interrupted()) throw new InterruptedException(); if (!tryAcquire(arg)) doAcquireInterruptibly(arg); } public final boolean release(int arg) { if (tryRelease(arg)) { Node h = head; if (h != null && h.waitStatus != 0) unparkSuccessor(h); return true; } return false; }

npx 使用教程

二次信任 提交于 2020-01-22 18:12:50
npm 从5.2版开始,增加了 npx 命令。它有很多用处,本文介绍该命令的主要使用场景。 Node 自带 npm 模块,所以可以直接使用 npx 命令。万一不能用,就要手动安装一下。 $ npm install -g npx 一、调用项目安装的模块 npx 想要解决的主要问题,就是调用项目内部安装的模块。比如,项目内部安装了测试工具 Mocha 。 $ npm install -D mocha 一般来说,调用 Mocha ,只能在项目脚本和 package.json 的 scripts 字段里面, 如果想在命令行下调用,必须像下面这样。 // 项目的根目录下执行 $ node-modules/.bin/mocha --version npx 就是想解决这个问题,让项目内部安装的模块用起来更方便,只要像下面这样调用就行了。 $ npx mocha --version npx 的原理很简单,就是运行的时候,会到 node_modules/.bin 路径和环境变量 $PATH 里面,检查命令是否存在。 由于 npx 会检查环境变量 $PATH ,所以系统命令也可以调用。 // 等同于 ls $ npx ls 注意,Bash 内置的命令不在 $PATH 里面,所以不能用。比如, cd 是 Bash 命令,因此就不能用 npx cd 二、避免全局安装模块 除了调用项目内部模块,npx

nvm安装方法及 切换node版本和npm版本

大兔子大兔子 提交于 2020-01-22 15:39:43
每个项目需要的node版本和npm版本的要求不一样,这个时候可以通过nvm来切换node版本,以便于适用于各种项目需求 1,nvm介绍 nvm全名node.js version management,是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 2,nvm下载及安装 下载地址:https://github.com/coreybutler/nvm-windows/releases 建议下载 nvm-setup.zip 如图 : 详细安装步骤如下,解压完成之后会有一个如下的exe.双击它 选择你的软件安装路径和node路径如下图 2 切换node版本指令 查看本地安装的所有版本 nvm list 安装node 版本 指令 :nvm install 11.13.0 使用特定指令 : nvm use 卸载 :nvm uninstall 开启node版本切换 : nvm on 关闭node版本切换 : nvm off 查看当前版本 : node -v 来源: https://www.cnblogs.com/shijiu1919/p/12228603.html

linux 安装 node

喜欢而已 提交于 2020-01-22 15:22:20
使用nvm安装,简单方便,且能安装多版本。 先安装 nvm https://github.com/nvm-sh/nvm#installing-and-updating 安装 运行命令 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash 或者 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash 成功后会看到如下输出 => Appending nvm source string to /home/xxx/.bashrc => Appending bash_completion source string to /home/xxx/.bashrc => Close and reopen your terminal to start using nvm or run the following to use it now: export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ]

手写LinkedList

◇◆丶佛笑我妖孽 提交于 2020-01-22 14:39:51
简单的实现了增加和删除方法,以及返回节点个数和返回所有元素值 直接上代码吧 首先创建了一个Node类,前指向,后指向以及数据 package Node; public class Node { private Node pre; private Node next; private Object value; public Node() { } public Node(Node pre, Node next, Object value) { this.pre = pre; this.next = next; this.value = value; } public Node getPre() { return pre; } public void setPre(Node pre) { this.pre = pre; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public Object getValue() { return value; } public void setValue(Object value) { this.value = value; } } 然后是具体实现 import Node.Node; public class