node

Nodejs专栏 - Nodejs的模块化(module.exports和exports原理, Nodejs模块化原理)

孤者浪人 提交于 2020-02-22 09:08:15
Nodejs的模块化 在我们日常进行web开发的过程中, 对于模块化总是跑不掉的, 各家的模块化有各家的实现方式, 百花齐放, nodejs遵循commonjs规范的模块化 把每一个文件都看做是一个模块 如果一个模块需要暴露一些数据或者功能供其他模块使用, 需要写上 module.exports = xxx , 该过程称之为模块的导出 如果一个模块需要用到另一个模块导出的代码, 需要使用require(’…’)来引入, require函数的返回值就是索引模块暴露出的内容 模块中的所有全局代码产生的变量, 函数均不会造成全局污染, 仅在模块内使用 模块具有缓存, 第一次导入模块时就会缓存该模块, 之后再次导入同一个模块的时候, 直接使用之前的结果 每个模块可能被其他模块所依赖, 也可能会依赖于其他模块 module.exports和require的使用 我新建一个index.js // index.js const result = require ( './test.js' ) ; console . log ( result ) ; // 输出{ a: 100 } 然后我再新建一个test.js // test.js const a = 100 ; module . exports = { a } 我们进入terminal, 执行index.js文件, 会发现打印出来的

Drupal theme_hook

自古美人都是妖i 提交于 2020-02-22 07:14:47
模板语言和主题引擎 用Drupal的行话来说,主题就是一组负责你站点外观的文件。你可以从http://drupal.org/project/Themes下载第 3方主题,或者你可以自己动手创建一个主题,后者正是你在本章将要学习的。作为一个web设计者,主题由你所熟悉的大部分内容所组成:样式表,图 片,JavaScript文件,等等。你将发现,在Drupal主题和纯HTML站点之间的区别就是模板文件。这些文件一般都包含大段的静态HTML,和 一些小段的用来插入动态内容的代码。它们负责你站点的一个特定部分的外观。模板文件的语法依赖于它所使用的主题引擎。例如,列表8-1,8-2,8-3列 出了3个模板文件的代码片段,它们输出的内容是一样但是包含的模板文件内容却完全不同。 构建一个PHPTemplate主题 创建一个主题,可以有多种方式,这取决于你的起始材料。假定你的设计者已经为你的站点提供了HTML和CSS文件。那么将设计者的设计转化为一个 Drupal主题,到底难不难呢?它实际上不是很难,而且你能够轻易的完成工作的80%。不过还有20%—最后的难点了—它是 Drupal主题制作高手与新手的分水岭。首先让我们从简单的部分开始。这里有个概括: 为站点创建或修改HTML文件 为站点创建或修改CSS文件 创建一个.info文件,来向Drupal描述你的新主题。 按照Drupal的标准为文件命名

node使用 mongoose聚合 group

烂漫一生 提交于 2020-02-22 02:30:32
var mongoose = require('mongoose'); mongoose.connect("mongodb://localhost:27017/test", function(err) { if(err){ console.log('连接失败'); }else{ console.log('连接成功'); } }); var schema = new mongoose.Schema({ num:Number, name: String, size: String},{ timestamps: true }); var MyModel = mongoose.model('MyModel', schema); var group = { key: {"name":true}, cond: {}, reduce: function(doc, out) { out.count++; out.total += doc.size; }, initial: { total: 0, count: 0 }, finalize: function(out) { out.avg = out.total / out.count; } }; //这里参数数量一定要保持一致,否则会报错 MyModel.collection.group( group.key, group.cond, group

[C++语法] 关键字typedef用法(转)

孤街醉人 提交于 2020-02-21 23:56:48
[C++语法] 关键字typedef用法(转) C/C++ 语言中的 typedef 相信大家已经不陌生,本文对 C/C++ 语言关键字 typedef 的各种用法作一个介绍。 typedef ,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。例如: typedef unsigned int UINT; int main ( int argc, char *argv[]) { unsigned int a;// it’s OK UINT b;// it’s OK, a and b are of the same type (int) // . . .// code references the symbol a and b return 0; } 上面的代码中, a 和 b 属于同一种数据类型( unsigned int 型),因为 UINT 标识符已经标示为 unsigned int 类型。上面的代码看似简单,相信很多读者都用过这种方法,但这绝不是 typedef 的全部,下面介绍使用 typedef 定义复杂数据类型的几种用法。 1 、 定义结构体类型 结构体是一种较为常见的数据类型,在 C/C++ 程序设计中使用的非常广泛。下面的代码就是结构体类型的一个应用: #include <iostream.h>

Leetcode 94 二叉树的中序遍历

假如想象 提交于 2020-02-21 18:25:00
给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 注意迭代算法的实现,仔细思考迭代算法是怎么处理以下两种情况的: 1) 1 / 2 / 3 2) 1 / 2 / 3 \ 4 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ /* class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int> vec; inorder(&vec,root); return vec; } void inorder(vector<int> *vec,TreeNode* root){ if(root==NULL) return; inorder(vec,root->left); vec->push_back(root->val); inorder(vec,root->right); } };

java——二叉树的实现

瘦欲@ 提交于 2020-02-21 17:32:46
class BinaryTree { private Node root; public void add(int data) { if(root==null) { root = new Node(data); } else { root.addNode(data); } } public void print() { root.printNode(); } private class Node //内部类递归调用实现 { private int data; private Node left; private Node right; public Node(int data) { this.data = data; } private void addNode(int data ) { if(this.data>data) { if(this.left==null) { this.left = new Node(data); //递归实现增加节点 } else { this.left.addNode(data); } } else { if(this.right==null) { this.right = new Node(data); } else { this.right.addNode(data); } } } private void printNode() { if

TreeView根据路径得到选择节点

做~自己de王妃 提交于 2020-02-21 13:11:51
/// <summary> /// 根据路径得到选择节点 /// </summary> /// <param name="path">路径</param> /// <param name="treeView">树</param> /// <returns>节点</returns> private TreeNode GetNodeByPath(string path, TreeView treeView) { TreeNode node = new TreeNode(); string[] pathLevel = path.Split('\\'); int i = 0; foreach (TreeNode topNode in treeView.Nodes) { if (topNode.Text == pathLevel[i].ToString()) { node = topNode; i++; break; } } if (i < pathLevel.Length) { node = GetSubNode(node, pathLevel, i); } return node; } private TreeNode GetSubNode(TreeNode node, string[] pathLevel, int i) { TreeNode newNode = new

PBFT算法java实现

痞子三分冷 提交于 2020-02-21 03:16:01
PBFT 算法的java实现(上) 在这篇博客中,我会通过Java 去实现PBFT中结点的加入,以及认证。其中使用socket实现网络信息传输。 关于PBFT算法的一些介绍,大家可以去看一看网上的博客,也可以参考我的上上一篇 博客 ,关于怎么构建P2P网络可以参考我的上一篇 博客 。 该项目的地址: GitHub 使用前的准备 使用maven构建项目,当然,也可以不使用,这个就看自己的想法吧。 需要使用到的Java包: t-io:使用t-io进行网络socket通信,emm,这个框架的文档需要收费(699RMB),但是这里我们只是简单的使用,不需要使用到其中很复杂的功能。 fastjson:Json 数据解析 lombok:快速的get,set以及toString hutool:万一要用到呢? lombok:节省代码 log4j:日志 guava:Google的一些并发包 结点的数据结构 首先的首先,我们需要来定义一下结点的数据结构。 首先是结点Node的数据结构: @Data public class Node extends NodeBasicInfo{ /** * 单例设计模式 * @return */ public static Node getInstance(){ return node; } private Node(){} private static Node

循环列表的实现

最后都变了- 提交于 2020-02-21 02:38:38
我们将在单链表的基础上讨论循环链表的实现,循环链表中的节点node沿用单链表中的节点。循环链表的算法思想基本上与单链表没有什么差异,唯一比较大的差异就是原来我们通过判断 node.next==null 来判断链表的结束,现在改成判断 node.next==Head ,因为我们已经把尾节点链接到头节点上,在逻辑上形成循环链表。具体的代码如下所示 using System ; using System . Collections . Generic ; using System . Linq ; using System . Text ; namespace DataStructure { /// <summary> /// 循环链表 /// </summary> /// <typeparam name="T"> 类型 </typeparam> class LoopList < 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> /// 引用域 //

Swagger的基础入门

此生再无相见时 提交于 2020-02-20 07:51:14
Swagger的基础入门 Swagger包括Swagger Editor, Swagger UI等很多部分,这里我们主要讲一下Swagger Editor。它是一个完全开源的项目,并且它也是一个基于Angular的成功案例。 在Swagger Editor中,我们可以基于YAML等语法定义我们的RESTful API,然后它会自动生成一篇排版优美的API文档,并且提供实时预览。简单说就是可以边编写API 边预览边测试。 在Swagger UI中,我们不能进行编写API ,但是我们可以预览或者测试。 安装Swagger editor Node.js 安装 node中 http-server安装 npm install http-server 下载swagger-editor 从官网下载swagger-editor.zip,解压即可。 https://swagger.io/ 启动swagger-editor http-server E:\swagger-editor-master\swagger-editor-master 当出现以下提示,则证明成功了。 使用浏览器访问 http://127.0.0.1:8081 界面左边是api 文件的 yaml 描述文件, 左边部分可以直接编辑API文档,编辑会立即更新到右边视图。右边是swagger-UI,可以查看文档,并直接进行API的测试。