文章列表
link ,除了分享,也是知识管理。 于 7个月前发表 2563 0 0
什么是ZOOKEEPER Zookeeper 是一个分布式的、开源的协调服务,用在分布式应用程序中。它提出了一组简单的原语,分布式应用程序可以基于这些原语之上构建更高层的分布式服务用于实现同步、配置管理、分组和命名等。Zookeeper 设计的容易进行编程,它使用一种类似于文件系统的目录树结构的数据模型,以 java 方式运行,有 java 和 c 的绑定(binding)。 分布式系统中的协调服务总所周知地难于正确实现,尤其容易产生诸如争用条件 (race conditions)、死锁(deadlock) 等错误。Zookeeper 背后的动机就是减轻分布式应用程序从头做起实现协调服务的难度。 数据模型 Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如下图所示: Zookeeper 数据结构 [http://img.blog.csdn.net/20160719230154255]Zookeeper 这种数据结构有如下这些特点:
7个月前
nodeJS全栈
莫小君 于 7个月前发表 1235 0 3
很多前端开发的同学应该都会接触或者了解nodejs,但是经常会听到入门难的抱怨。一方面不知道怎么学习nodejs。另一方面,拿到一些大牛写的nodejs源代码,不知道怎么才能跑起来,特别是需要mongodb的时候。下面就分享一些如何在本地跑起一个带有mongodb的nodejs项目的经验 前期需要准备的工作 * node环境的配置 * 安装mongodb * 一个nodejs的项目代码 NODE环境的配置(已经配置好的同学可以忽略这一步): 首先需要到 nodejs官网 [http://nodejs.cn/] 下载,我下的是长期支持版本,稳定版本也可以,我下的是windows(.msi) 64位, 记得要对应自己的电脑版本下载[http://7tszky.com1.z0.glb.clouddn.com/FkhHRtntyYoxfTuXNsBl68Eptmfn] 然后就开始安装:
7个月前
nodeJS全栈
link ,除了分享,也是知识管理。 于 8个月前发表 2861 0 2
[http://7tszky.com1.z0.glb.clouddn.com/FvgoQmNATnByOO4B4KuYSkZHVQfv] 概述 为什么要在NODE.JS中调用动态链接库 1. 由于腾讯体系下的许多公共的后台服务(L5, CKV, msgQ等)已经有了非常成熟的C/C++编写的API,以供应用程序调用,node.js作为在公司内新兴的后台runtime在调用这些公共服务的时候没必要再造一遍轮子,而是可以将这些API编译成.so文件直接使用。 2. 对于一些密集计算型的任务可以由C++编写好模块,生成.so文件后由node.js调用。 FFI简介与安装 我们使用 node-ffi [https://github.com/node-ffi/node-ffi] 来帮助我们调用动态链接库。 FFI的全称是Foreign Function
8个月前
nodeJS全栈
link ,除了分享,也是知识管理。 于 9个月前发表 1160 4 0
原文: https://nodejs.org/en/docs/es6/ [https://nodejs.org/en/docs/es6/] ECMASCRIPT 2015 (ES6) IN NODE.JS(译) Node.js是建立在 V8引擎 [https://developers.google.com/v8/] 的基础上。通过保持对该引擎最新发布版的更新,我们可以确保能够将 JavaScript ECMA-262 specification [http://www.ecma-international.org/publications/standards/Ecma-262.htm] 中的新特性能够及时的提供给Node.js开发者们,就像我们借助该引擎保持性能和稳定性的持续改进一样。 所有ECMAScript2015(ES6)特性被分为 shipping , staged 和 in progress 三个部分: * shipping特性是V8认为已经稳定的特性,Node.js默认提供这些特性,而不需要额外的运行时标志位来开启。
9个月前
nodeJS全栈
zzbozheng 于 10个月前发表 1523 6 2
我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证。然而,验证是一件麻烦的事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用的做法是使用正则,正则表达式也许可以一步到位,但是他只会给你true or false,如果想要知道数据不符合哪些条件时,那么你要进一步判断,下面和大家分享一种可读性和易用性更好的实现方法。 Joi 是 hapijs 自带的数据校验模块,他已经高度封装常用的校验功能,本文就是介绍如何优雅地使用 joi 对数据进行校验。相信你会喜欢上他。便于大家理解,以登录为例,一般分两种方式:A或B (输入密码或二维码),那么 joi 的配置如下即可实现检验: var Joi = require('joi'); var schema = Joi.object({ username: Joi.string().min(3).max(30).required(), isA: Joi.boolean(), AVal: Joi.number(), isB: Joi.boolean(),
10个月前
nodeJS全栈
helinjiang 于 10个月前发表 1312 1 0
本文详细讨论了 npm [https://www.npmjs.com/] 中依赖版本的版本号配置写法及比较。 1. 开篇 为了更好的进行说明,我们选择了 lodash [https://www.npmjs.com/package/lodash] 来演示,因为它是被其他模块依赖最多的模块之一。本文是在 windows 7 64位系统中进行测试,npm 版本为 v3.8.1 ,其他的平台和 npm 版本在某些提示上可能会稍有不同。 运行 npm install lodash --save 命令,安装下载 loadash,此时 package.json 文件中会是这个样子的: { "name": "test", "dependencies": { "lodash": "^4.11.1" } } 有没注意到那个 ^4.11.1 ? 4.11.1 是版本号很容易理解(这里只是当前的最新版本,后续 loadash 版本更新之后可能会有变化),前面的 ^ 符号是什么鬼?你甚至还见过这样的 ~4.11.1 、 4.11.1 、 <4.11.1 等写法,都有什么区别?
10个月前
nodeJS全栈
link ,除了分享,也是知识管理。 于 1年前发表 3690 6 1
PROTOCOL BUFFER入门教程 PROTOCOL BUFFER是个什么鬼? Protocol Buffer(下文简称protobuf)是Google提供的一种数据序列化协议,下面是我从网上找到的Google官方对protobuf的定义: Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。 道理我们都懂,然后并没有什么卵用,看完上面这段定义,对于protobuf是什么我还是一脸懵逼~ 理都懂 [http://img.blog.csdn.net/20160325101815944] NODEJS开发者为何要跟PROTOCOL BUFFER打交道 作为JavaScript开发者,对我们最友好的数据序列化协议当然是大名鼎鼎的JSON啦!我们本能的会想protobuf是什么鬼?还我JSON! 这就要说到protobuf的历史了。
1年前
nodeJS全栈
zzbozheng 于 1年前发表 3147 0 2
NODE.JS ORM 框架 SEQUELIZE 实践 最近在做积木系统2.0,这次使用的nodejs web框架是团队统一的hapi.js,而数据库依然是mysql,ORM 框架选用有着6000+ stars 的 sequelize.js [http://docs.sequelizejs.com/en/latest/] , hapi-sequelize 插件对sequelize做了很简单的封装,可以让我们很自如地在hapi中游走,比如配置和调用。 初始化 SEQUELIZE // server.jsconst Hapi = require('hapi'); const server = new Hapi.Server(); //注册到 hapi server server.register( [ { register: require('hapi-sequelize'), options: { database: '', user: '',
1年前
nodeJS全栈
黎清龙 于 1年前发表 1308 3 0
HAPI VS. EXPRESS [1] —— 路由 前言 express 与 hapi 是两个基于 nodejs 的 web server 开发框架,它们由于设计理念的不同,各有优缺点 本文主要介绍hapi和express的路由基础以及区别对比 路由基础 什么是路由,路由是分发的工作,对于web server来说,就是对一个uri进行分发,分发到某个处理该uri的句柄 根据HTTP协议,method + uri 可以标定一个事物 因此配置路由其实只需要3项:method,path,handler,接下来看看hapi和express是怎么处理路由的。 HAPI 路由基础 先直接上例子: // [1]// in: http://localhost/user/jack/long/aaa// out: Hello, jack/long/aaa!// // [2]// in: http://localhost/user/jack// out: Hello, ack!// // [3]// in: http://localhost/user/long// out: Hello, long!!
1年前
nodeJS全栈
zzbozheng 于 1年前发表 1213 0 0
第一次接触Node.js时,就觉得他只不过是用javascript实现的服务端。但实际上他提供了许多浏览器端不具备的方法,比如EventEmitter类。我们在本文中来学习如何使用EventEmitter。 EVENTEMITTER是什么? 简单来说,使用EventEmitter,你可以监听一个事件,并且可以执行一个你绑定的回调函数。就像前端的javascript一样,你可以通过addEventListener来绑定用户的鼠标键盘交互事件,EventEmitter是基于发布订阅模式,因此我们可以通过订阅事件然后再发布。我们可以看到很多前端javascript库是支持订阅发布模式,但Node.js是内建的。 有一个重要的问题:你为什么要使用事件模式?因为在Node.js里,他可以替代各种深层嵌套的加调。Node.js很多方法是要异步运行的,这意味着当这个方法完成时,你就要传递一个可回调的函数。最后,你会发现你的代码看起来像一个巨大的漏斗。为了防止这种情况出现,你可以使用监听事件来优化这些事件,这可以更好地组织你的代码,而不是使用回调嵌套的方式。
1年前
nodeJS全栈
link ,除了分享,也是知识管理。 于 1年前发表 2832 2 0
术语 事务 指的是构成单一逻辑工作单元的操作的集合。比如:将钱从一个账户转到另一个账户就是一个事务,该事务包括分别针对每个账户的两个更新。 transaction [http://7tszky.com1.z0.glb.clouddn.com/Fu6p2U0G546cZrahPsAuGwfXbPiT] 英文中 transaction 又是交易的意思,我想应该是因为事务(transaction)管理的场景首先是出现在利用银行账户进行交易(transaction)的过程中,所以计算机科学家们把数据库的这一特性称为事务(transaction)。 事务有以下几个属性: * 原子性(atomicity):事务的所有操作在数据库中要么全部正确反映出来,要么完全不反映。 * 一致性(consistency):隔离执行事务时(换言之,在没有其他事务并发执行的情况下)保持数据库的一致性。
1年前
nodeJS全栈
helondeng 于 1年前发表 1521 1 1
WHAT “Meteor gives you a radically simpler way to build realtime mobile and web apps, entirely in JavaScript from one code base.” 简单来讲,Meteor基于Node来开发实时应用,复用前后端JS代码。 WHY * 从 client 到 server, 从 package 到 数据库 api,全部都是JS * 跨端 * 实时渲染 安装 OS X or Linux 平台 curl https://install.meteor.com/ | sh Windows 平台需要下载 exe 文件安装。 使用 使用 meteor create 新建项目,进入项目目录, 执行 meteor 命令,运行,即可在浏览器查看。qq 20151127201245 [https://cloud.githubusercontent.com/assets/3880323/11441060/3d13a72a-9543-11e5-91a7-04e4f5ee56b9.png]
1年前
nodeJS全栈