Mzx Blog

使用RabbitMQ延时队列实现定时任务

"奇淫技巧"

本文使用简单案例介绍了如何使用RabbitMQ实现一个轻量级的可自定义的定时任务模块。适合于定时任务不多,对定时任务功能要求比较单一的场景。 物料清单 RabbitMQ, NodeJS(8.x), 代码猴 step 1 准备工作 在MQ上分别新建名为”demo“的vhost,一个exchange和两个queue,配置如下: 1. deadLetterQueue 要绑定到...

JS的原型链

"JS是如何刨根问底的"

JS的原型链 本文阐述了js中的prototype,constructor和__proto__之间的关系。 同时梳理了js如何实现继承的。 属性释义 prototype prototype是JS中除了通过bind()生成的函数外所有function都具有的属性,其值为一个对象,对象里包含两个 值(__proto__和constructor)。作用是存储要共享的属性和方法。 ...

node事件循环(Event Loop)

"Event Loop 原理"

Node事件循环(Event Loop) nodeJS是如何实现异步I/O的呢?什么是事件驱动?揭开nodeJS的神秘面纱,还原‘事件’真相! NodeJS架构 什么是nodeJS? nodeJS是一个基于Chrome V8引擎的运行时。 V8 : 高性能javascript引擎。 libuv : 提供异步功能的基于C的库。其运行时包含一个event l...

观察者模式

"Design Patterns 之 观察者模式"

观察者模式 观察者 顾名思义,即观察目标对象,当目标发生改变时,执行相应的操作。 模式结构 角色 Subject 目标 ConcreteSubject 目标实现 Obeserver 观察者 ConcreteObeserver 观察者实现 简单理解: 将观察者(Obeserver)传递给目标(Subject)。当目标改变时,遍历列表(list),调用相应...

观察者模式JS实现

"js实现观察者模式(发布/订阅模式)"

观察者模式(发布订阅模式)JS实现 简易版observer 'use strict' /** * Created by menzhongxin on 2017/5/16. */ let Observer = function () { this._events = Object.create(null) //初始化一个空对象,用于存放listener //格式:e.g. _...

Mac下编译openJDK

"osx编写openJdk7填坑指南"

Mac下编译openJDK 最近阅读《深入理解Java虚拟机:JVM高级特性与最佳实践》时,按照书上的教程打算编译一个JDK。由于书中使用的版本是openJdk7u4年代比较久远,而我的osx是Sierra,真是各种坑。所以在此建议:如果需要编译openJdk那么尽量选用最新版本的openJdk。尽量使用linux进行编译,因为一是新版的OSX加入Rootless机制,二十XCODE等...

装饰者模式

"设计模式"

装饰者模式 装饰者模式一句话总结就是俄罗套娃。装饰类具有与被装饰类完全相同的及基因即相同的入参相同的返回类型。 模式结构 角色 抽象类(Component)抽象功能 实现类 (ConcreteComponent) 功能的具体实现类 抽象装饰类 (Decorator) 抽象装饰类,定义了需要被装饰的功能接口 具体装饰类 (ConcreteDecoratorA)...

centos下搭建shadowsocks服务

"科学上网"

CentOS搭建shadowsocks服务 厌倦了莆田系的广告?想得到更准确的搜索结果?有问题希望Google一下?却不知如何翻墙?本文将送你一个科学的梯子。 购买一台服务器 首先需要购买一台国外的VPS,推荐买Tzhost。便宜,稳定。购买完成后选择系统为CentOS 64位。 安装shadowsocks 安装python [root@vps ~]# yum insta...

按值传递、按引用传递、按共享传递

"Java,JavaScript,Python的传参方式"

按值传递、按引用传递、按共享传递 按值传递(call by value) 按值传递,就是指在调用函数时,将实参对应的值做一个拷贝指向函数对应的形参。在函数内改变形参对应的值并不会影响外部实参的值。 按引用传递 (call by reference) 按引用传递,是指在调用函数时,传递给函数的是实参的地址即引用,而不是实参的拷贝。在函数内部参数的值,对外部的实参是可见的。 按共享传递...

JS全局变量与顶层对象浅析

"全局变量与顶层对象"

全局变量和顶层对象 什么是全局变量 在JS中全局变量就是指在函数外部通过var声明的变量。如果是在nodeJS环境中则需通过global.variable显示的声明。全局变量在程序启动时便加载到内存中,直到程序结束。 问题 为什么在node中通过var定义的变量不是全局变量? 答: 因为在node中所有的代码都在当前module中。而module不是全局的。...