node

[Nginx]反向代理Node将3000端口访问转换成80端口

做~自己de王妃 提交于 2020-01-22 12:49:05
[Nginx]反向代理Node将3000端口访问转换成80端口 原创gooqii 最后发布于2017-05-15 11:08:00 阅读数 1875 收藏 展开 [Nginx]反向代理Node将3000端口访问转换成80端口(https443端口) @Author GQ 2017年05月15日 最近刚接触node,用express搭建,node默认是3000端口,当然也 可以自己改,但是服务器默认是80,然而将node改成80并没有权限 ,所以nginx将是最好的选择! 2017年07月26日 由于需要支持微信小程序,必须改成https请求, 所以记录下: http => https 2017年07月31日 微信小程序居然提示不支持TLSv1,然而我的Nginx1.0.11写上TLSv1.1 和TLSv1.2还报错,更新下Nginx版本就好了(现在是1.12.1)。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 目的 原本域名访问形式: http://xx.xxx.xxx.xx/ 用node搭建后访问: http://localhost:3000(假设是3000端口) 部署到服务器上后: http://xx.xxx.xxx.xx:3000 阿里云默认访问端口为80 ,浏览器输入: http://xx.xxx.xxx.xx 等于http://xx.xxx.xxx

Node 使用webpack编写简单的前端应用

大城市里の小女人 提交于 2020-01-22 12:20:12
编写目的 1. 使用 Node 依赖webpack、jQuery编写简单的前端应用。 操作步骤 (1)新建一个目录 $ mkdir simple-app-demo $ cd simple-app-demo (2)在该目录下,新建一个 package.json 文件。 $ npm init -y package.json 是项目的配置文件。 (3)安装 jquery 、 webpack 、 webpack-cli 这三个模块。 $ npm install -S jquery $ npm install -S webpack webpack-cli 打开 package.json 文件,会发现 jquery 、 webpack 和 webpack-cli 都加入了 dependencies 字段,并且带有版本号。 (4)在项目根目录下,新建一个网页文件 index.html 。 <html> <body> <h1>Hello World</h1> <script src="bundle.js"></script> </body> </html> (5)在项目根目录下,新建一个脚本文件 app.js 。 const $ = require('jquery'); $('h1').css({ color: 'red'}); 上面代码中, require 方法是 Node 特有的模块加载命令。

AVLTree

浪尽此生 提交于 2020-01-22 08:46:45
你以为爱就是被爱 /** * @Classname AVL * @Description * @Date 2020/1/19 15:02 * @Author SonnSei */ public class AVLTree < K extends Comparable < K > , V > { private Node root ; private int size ; public AVLTree ( ) { root = null ; size = 0 ; } public int getSize ( ) { return size ; } public boolean isEmpty ( ) { return size == 0 ; } public boolean isBalanced ( ) { return isBalanced ( root ) ; } private boolean isBalanced ( Node node ) { if ( node == null ) return true ; int balanceFactor = getBalanceFactor ( node ) ; if ( Math . abs ( balanceFactor ) > 1 ) return false ; return isBalanced ( node . left

呆萌数据结构 | 02 链表

耗尽温柔 提交于 2020-01-22 08:07:29
原文来自 萌一小栈 什么是链表 链表和数组一样,是一种线性的数据结构,由一个一个节点构成,节点中存放着数据,以及指向下一个或上一个节点的指针,通过指针,将节点链接在一起,构成整个链表结构。不同于数组,链表在内存中并不是连续的存储空间。 为什么要用链表?或者说链表有哪些优点 我们知道,数组是很方便的数据结构,但是数组有一些局限性。必须事先知道要分配多少内存空间。插入和移除是很耗费性能的操作,因为需要移动不止一个元素。 而链表,正好弥补了数组的缺点,链表是动态内存,不需要事先分配固定大小的空间,添加和删除元素,也只需要改变指针即可,不需要移动很多元素。 链表的缺点 当然,链表也有弊端。无法像数组一样随机访问,例如要访问第5个元素,是没办法直接访问的,只能遍历。每一个节点,需要额外的内存空间用来存储指向下一节点的指针。对缓存不友好,因为链表的内存空间并不一定是连续的。 链表怎样用代码表示,以及插入、删除、遍历操作 下面我们使用C#来描述一下链表 /// <summary> /// 链表中的节点结构 /// </summary> public class Node { public int data; public Node next; public Node (int data) { this.data = data; } } public class Linkedlist {

单链表

感情迁移 提交于 2020-01-22 05:12:57
1.链表定义 /** * @Author:hemingzhu * @date: 2020/1/21 10:29 * @Explanation: */ public class OneNode { private OneNode node; private int data; public OneNode(OneNode node, int data) { this.node = node; this.data = data; } public OneNode() { } public OneNode(int data) { this.data = data; } public OneNode getNode() { return node; } public void setNode(OneNode node) { this.node = node; } public int getData() { return data; } public void setData(int data) { this.data = data; } } 2.基本操作 /** * @Author:hemingzhu * @date: 2020/1/21 10:29 * @Explanation: */ public class OneLike { private OneNode root; //插入

Node第三方模块 Gulp

点点圈 提交于 2020-01-22 05:08:29
第三方模块 Gulp Gulp是什么? Gulp是基于node平台开发的前端构建工具 将机械化操作编写成任务, 想要执行机械化操作时执行一个命令行命令任务就能自动执行了 用机器代替手工,提高开发效率。 快速入门Gulp JavaScript 和 Gulpfile Gulp 允许你使用现有 JavaScript 知识来书写 gulpfile 文件,或者利用你所掌握的 gulpfile 经验来书写普通的 JavaScript 代码。虽然gulp 提供了一些实用工具来简化文件系统和命令行的操作,但是你所编写的其他代码都是纯 JavaScript 代码。 Gulp能做什么 项目上线,HTML、CSS、JS文件压缩合并 语法转换(es6、less …) 公共文件抽离 修改文件浏览器自动刷新 Gulp使用 使用npm install gulp下载gulp库文件 在项目根目录下建立gulpfile.js文件 重构项目的文件夹结构 src目录放置源代码文件 dist目录放置构建后文件 在gulpfile.js文件中编写任务. 在命令行工具中执行gulp任务 Gulp中提供的方法 gulp.src():获取任务要处理的文件 gulp.dest():输出文件 gulp.task():建立gulp任务 gulp.watch():监控文件的变化 const gulp = require ( 'gulp'

一步一步写算法(之双向链表) (转)

左心房为你撑大大i 提交于 2020-01-22 04:08:21
前面的博客我们介绍了单向链表。那么我们今天介绍的双向链表,顾名思义,就是数据本身具备了左边和右边的双向指针。双向链表相比较单向链表,主要有下面几个特点: (1)在数据结构中具有双向指针 (2)插入数据的时候需要考虑前后的方向的操作 (3)同样,删除数据的是有也需要考虑前后方向的操作 那么,一个非循环的双向链表操作应该是怎么样的呢?我们可以自己尝试一下: (1)定义双向链表的基本结构 typedef struct _DOUBLE_LINK_NODE { int data; struct _DOUBLE_LINK_NODE* prev; struct _DOUBLE_LINK_NODE* next; }DOUBLE_LINK_NODE; (2)创建双向链表节点 DOUBLE_LINK_NODE* create_double_link_node( int value) { DOUBLE_LINK_NODE* pDLinkNode = NULL; pDLinkNode = (DOUBLE_LINK_NODE*)malloc( sizeof (DOUBLE_LINK_NODE)); assert(NULL != pDLinkNode); memset(pDLinkNode, 0, sizeof (DOUBLE_LINK_NODE)); pDLinkNode->data = value;

unity行为树简介

做~自己de王妃 提交于 2020-01-22 03:35:29
目前在Unity3D游戏中一般复杂的AI都可以看到行为树的身影,简单的AI使用状态机来实现就可以了,所以这里我也是简单的学习下,为以后用到做准备。 行为树的概念出现已经很多年了,总的来说,就是使用各种经典的控制节点+行为节点进行组合,从而实现复杂的AI。 Behavior Designer插件里,主要有四种概念节点,都称之为Task。包括: (1) Composites 组合节点,包括经典的:Sequence,Selector,Parallel (2) Decorator 装饰节点,顾名思义,就是为仅有的一个子节点额外添加一些功能,比如让子task一直运行直到其返回某个运行状态值,或者将task的返回值取反等等 (3) Actions 行为节点,行为节点是真正做事的节点,其为叶节点。Behavior Designer插件中自带了不少Action节点,如果不够用,也可以编写自己的Action。一般来说都要编写自己的Action,除非用户是一个不懂脚本的美术或者策划,只想简单地控制一些物件的属性。 (4) Conditinals 条件节点 ,用于判断某条件是否成立。目前看来,是Behavior Designer为了贯彻职责单一的原则,将判断专门作为一个节点独立处理,比如判断某目标是否在视野内,其实在攻击的Action里面也可以写,但是这样Action就不单一了,不利于视野判断处理的复用

《算法导论》第11章 散列表 (2)散列表

╄→尐↘猪︶ㄣ 提交于 2020-01-22 01:14:37
用散列表来解决直接寻址表的那两个问题。但由此带来的散列值的碰撞问题。 最简单的解决方法是链接法,以及下一节介绍的开放寻址法。 链接法,即把散列到同一槽中的所有元素都放在一个链表中。 链表是无序的,在查找一个元素时需要遍历链表。 对于删除函数,假如参数是要删除的结点,那么如果链表是双向的,删除操作可以O(1)内完成。 在下面的删除函数中,参数是关键字,这样更为方便。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 20 // 链表结点的定义 typedef struct _ListNode { struct _ListNode *prev, *next; char *key; char *val; } ListNode; // 定义全局的各个槽链表的指针数组 ListNode *hashmap[SIZE]; // 这里的散列函数与Java中String及HashMap中的散列相同 // 注意为了保证向右逻辑运算(用0而不是符号位补高位) // 要将h声明为无符号的 unsigned hashcode(char *key) { // Ensure >> is logical shift unsigned h = 0; // String.hashcode() do h = 31 * h +

《算法导论》第11章 散列表 (2)散列表

妖精的绣舞 提交于 2020-01-22 01:12:06
用散列表来解决直接寻址表的那两个问题。但由此带来的散列值的碰撞问题。 最简单的解决方法是链接法,以及下一节介绍的开放寻址法。 链接法,即把散列到同一槽中的所有元素都放在一个链表中。 链表是无序的,在查找一个元素时需要遍历链表。 对于删除函数,假如参数是要删除的结点,那么如果链表是双向的,删除操作可以O(1)内完成。 在下面的删除函数中,参数是关键字,这样更为方便。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 20 // 链表结点的定义 typedef struct _ListNode { struct _ListNode *prev, *next; char *key; char *val; } ListNode; // 定义全局的各个槽链表的指针数组 ListNode *hashmap[SIZE]; // 这里的散列函数与Java中String及HashMap中的散列相同 // 注意为了保证向右逻辑运算(用0而不是符号位补高位) // 要将h声明为无符号的 unsigned hashcode(char *key) { // Ensure >> is logical shift unsigned h = 0; // String.hashcode() do h = 31 * h +