• 首页

  • 分类

  • 归档

  • 标签

  • 开源

  • 关于
繁星 の 夜
繁星 の 夜

Ricky 泽阳

但盼風雨來 能留妳在此

02月
09
年终总结

2020 の 泽阳

发表于 2021-02-09 • 分类于 年终总结 • 阅读次数:
字数统计: 1,137 • 阅读时长 ≈ 4 分钟

回顾 2020

2020 年这个时候定下的目标

  • 每周一篇短文,三周一篇长文
  • 深入精通某一个方向,在专业上有所成就
  • 成为 Libuv Contributors
  • 听一场演唱会
  • 英语水平能够和社区的人日常交流
  • 成为 Node.js Collaborators
  • 看 10 本书
  • 去一趟南京
  • 健身,维持体重到120左右
阅读全文 »
05月
18
ES Module

Boa 如何使用 ES Module 加载 Python 包

发表于 2020-05-18 • 分类于 ES Module • 阅读次数:
字数统计: 1,529 • 阅读时长 ≈ 7 分钟

前言

项目地址:https://github.com/alibaba/pipcook

如果看到此文章之前,不知道 Boa 是啥,可以先看看 Yorkie 的分享 Boa: 在 Node.js 中使用 Python

阅读全文 »
03月
29
libuv

从 unref 看事件循环

发表于 2020-03-29 • 分类于 libuv • 阅读次数:
字数统计: 2,069 • 阅读时长 ≈ 10 分钟

描述

引用 nodejs.org 的描述

When called, the active Timeout object will not require the Node.js event loop to remain active. If there is no other activity keeping the event loop running, the process may exit before the Timeout object’s callback is invoked. Calling timeout.unref() multiple times will have no effect.

简单的可以理解为:timer.unref 标记句柄,当进程中再无存活的事件,此时的 timer 句柄不会阻止进程退出。

阅读全文 »
03月
11
负载均衡

浅谈一致性哈希

发表于 2020-03-11 • 分类于 负载均衡 • 阅读次数:
字数统计: 554 • 阅读时长 ≈ 2 分钟

引言

上一篇文章我们讲到负载均衡算法的几种常规实现,今天我们来谈一下另一种实现,也是大多数组件用到的一致性哈希算法。

名词简写

  • n :节点数量
  • m :图片名称
  • vn : 虚拟节点数量

描述

引用维基百科的介绍

一致哈希 是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K/n 个关键字重新映射,其中 K 是关键字的数量,n 是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。

阅读全文 »
01月
22
年终总结

2019 の 泽阳

发表于 2020-01-22 • 分类于 年终总结 • 阅读次数:
字数统计: 756 • 阅读时长 ≈ 3 分钟

回顾 2019

2018年定的目标

  • 成为 Node.js Contributors
  • 去一趟苏州
  • 看完 4 本书

三个目标完成了俩,最关键的目标没有实现。这一年磕磕绊绊,比较浮躁,总算度过本命年。

苏州

4月份的时候朋友在苏州出差,就和几个朋友决定了去那边走两天。

阅读全文 »
02月
02
2018

2018 の 泽阳

发表于 2019-02-02 • 分类于 2018 • 阅读次数:
字数统计: 545 • 阅读时长 ≈ 2 分钟

唠叨几句

又到了年尾写总结的时候,时间过得可真快,2018年是奔波的一年,其实是打算阳历1号写的,但是那时候还比较忙。。。。所以懒的拖到了现在,回家了才空下来回忆回忆这一年发生的事。

关于杭州

作为一个不怎么踏出家门的广东人,起初只是对杭州有几点比较好的印象。白娘子啊雷峰塔啊断桥啊,这些唯美的故事,还有就是有阿里在,杭州市一个科技和人文结合密切的城市,感觉挺合我心意。最后是看到了【杭州映像诗】这部纪录片,我也忘了已经看了多少遍,记得第一次看完后就决定去杭州了,我看到了不同于之前生活这么多年的另外一个世界。所以我来了杭州 ╮( ̄▽ ̄)╭ 。杭州还有很多很多漂亮的景点我还没去过,打算争取明年去多几个,好好领略下杭州的美。

阅读全文 »
11月
06
Node.js

Node.js 应用性能调优

发表于 2018-11-06 • 分类于 Node.js • 阅读次数:
字数统计: 3,075 • 阅读时长 ≈ 15 分钟

前提

Node.js是天才屌丝程序员Ryan Dahl于2009年发布,经过几年的发展,Node.js已经是成熟的JavaScript运行时了。用Node.js开发的应用被分发到世界各地的云主机上,随着公司的发展和壮大、应用PV和UV的剧增,如何保障Node.js应用的高性能是如今作为一个Node.js开发者必须面对的问题。

通过V8/Node自带的profiler能力

通过v8/Node的profiler能力,能够列出各函数的执行占比。

我们通过对一段经典简单的http服务的示例代码进行分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// index.js
'use strict'

const Koa = require('koa');
const Router = require('koa-router');
const { etagger, timestamp, fetch } = require('./util')();
const server = new Koa();
const router = new Router();

router.get('/test', async function (ctx, next) {
const content = await fetch(ctx.request.url);
ctx.body = {data: content, url: ctx.request.url, ts: timestamp()};
server.emit('after', ctx.body);
});

server.use(etagger().bind(server))
.use(router.routes())
.use(router.allowedMethods())

server.listen(3000);
阅读全文 »
10月
29
shell

让设置终端代理更容易一点

发表于 2018-10-29 • 分类于 shell • 阅读次数:
字数统计: 316 • 阅读时长 ≈ 1 分钟

之前编译v8的时候,需要先去Google的代码仓库拉取depot_tools,所以就需要终端走代理才能走得通了,得让终端的http或https代理到本地的socks5协议。需求是这样的,可以用开关控制是否代理。
shell脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

# .socks5-proxy.sh
proxy=$1

if [ -z $proxy ]; then
read -p "请输入使用使用代理? (y/n) " -n 1 -r proxy
echo
fi

if [ $proxy = 'y' ]; then
export http_proxy=http://127.0.0.1:1087
export https_proxy=http://127.0.0.1:1087
echo "http_proxy: "$http_proxy
echo "https_proxy: "$https_proxy
echo "已开启代理"
else
export http_proxy=
export https_proxy=
echo "已关闭代理"
fi

阅读全文 »
08月
01
RPC

从零开始实现一个IDL+RPC框架

发表于 2018-08-01 • 分类于 RPC • 阅读次数:
字数统计: 6,708 • 阅读时长 ≈ 31 分钟

RPC是什么

在很久之前的单机时代,一台电脑中跑着多个进程,进程之间没有交流各干各的,就这样过了很多年。突然有一天有了新需求,A进程需要实现一个画图的功能,恰好邻居B进程已经有了这个功能,偷懒的程序员C想出了一个办法:A进程调B进程的画图功能。于是出现了IPC(Inter-process communication,进程间通信)。就这样程序员C愉快的去吃早餐去了!

又过了几年,到了互联网时代,每个电脑都实现了互联互通。这时候雇主又有了新需求,当时还没挂的A进程需要实现使用tensorflow识别出笑脸 >_< 。说巧不巧,远在几千里的一台快速运行的电脑上已经实现了这个功能,睡眼惺忪的程序媛D接手了这个A进程后借鉴之前IPC的实现,把IPC扩展到了互联网上,这就是RPC(Remote Procedure Call,远程过程调用)。RPC其实就是一台电脑上的进程调用另外一台电脑上的进程的工具。成熟的RPC方案大多数会具备服务注册、服务发现、熔断降级和限流等机制。目前市面上的RPC已经有很多成熟的了,比如Facebook家的Thrift、Google家的gRPC、阿里家的Dubbo和蚂蚁家的SOFA。

阅读全文 »
07月
22
Node.js

装饰器、插件式 node.js web / restful api 框架

发表于 2018-07-22 • 分类于 Node.js • 阅读次数:
字数统计: 744 • 阅读时长 ≈ 4 分钟

polix是基于koa v2.5.0的IOC、插件式开发框架,和平常的Node.js Web Framework相比,它无需另外绑定路由集合、可拓展、开发简单,依照java的著名依赖注入框架spring来制作,让开发者专注于逻辑。polix采用多服务多进程架构来保证服务的稳定和快速响应能力。polix的中间件和koa v2.x的中间件保持兼容。默认使用的ORM是sequelize(后续会提供polix-orm)。开发者可以选择ES6/7/8 或者 TypeScript来进行开发。

1
$ npm i polix --save

Getting Started

使用polix-cli初始化应用

1
2
3
$ npm i polix-cli -g
$ pol init example && cd example
$ make build && make dev

阅读全文 »
12
Ricky 泽阳

!Ricky 泽阳

隱約雷鳴 陰霾天空 但盼風雨來 能留妳在此

14 日志
9 分类
Creative Commons

博客已萌萌哒运行(●'◡'●)ノ♥

© 2022 繁星 の 夜. 由 Hexo 强力驱动. Theme By Sagiri v0.0.4. 站点地图. xxxx.

Made with by Ricky 泽阳.