whoru

学习、分享、交流、沉淀

本文整理自: 极客时间专栏《朱赟(yūn)的技术管理课》 (微信扫码进入课程)

从给答案到做引导

每次别人向你请教问题,你都有现成的答案或快速找到答案,就会渐渐导致两个问题:

  1. 向你问问题和各种琐事的人越来越多;
  2. 因为你给的是答案,下次如果有类似的问题,别人还会来找你。

那么如何改变呢? 授人以鱼,不如授人以渔

  • 首先,需要明确什么时候适合直接给答案,什么时候适合给线索,让对方自己找答案。

    可根据问题类型(简单、复杂、常见、不常见等),提问人所处阶段(新人、略有经验、熟手)来决定。

  • 其次,如何引导?

    可以根据对方的问题,提出一些相关的问题,通过问题去引导对方进行深入思考。

  • 最后,引导的好处。

    如果是通过别人的引导,自己摸索出来的,那么他解决类似问题的能力后续就会提升。同时,也会调动他工作的积极性,让其产生一种自己解决来问题的成就感。

阅读全文 »

1. PM2 是什么?

PM2 = Process Manager 2

ADVANCED, PRODUCTION PROCESS MANAGER FOR NODE.JS

PM2 is a daemon process manager that will help you manage and keep your application online 24/7

上面是官网给出的 title,简单来说:它是在后台运行的 Node.js 进程管理器,提供一套针对生产环境运行时的工具集,可以保障你的程序 7 * 24 小时在线。

官网:https://pm2.keymetrics.io

文档:https://pm2.keymetrics.io/docs/usage/quick-start

总结其主要特性如下:

  • 日志管理:应用程序日志保存在服务器的硬盘中 ~/.pm2/logs/
  • 负载均衡:使用 Node cluster 集群模块,可以通过创建共享同一服务器端口的多个子进程来扩展您的应用程序。这样做还允许您以零秒停机时间重新启动应用程序,实现热重载。
  • 终端监控:可以在终端中监控您的应用程序运行状况,包括CPU使用率,使用的内存,请求/分钟等。
  • 自动停止不稳定的进程(避免无限循环)
  • 支持静态服务器功能
  • 提供 HTTP API
阅读全文 »

1. 基本特性

  • 速度快

    • 基于 C 语言开发,源码短小精悍
    • 数据存在内存中
    • 单线程(高性能,因为 Redis 一次只会运行一条命令,应避免在生产环境使用比较耗时的命令。)
  • 支持数据持久化,异步保存到磁盘

  • 丰富的数据结构(key-value):string、list、hash、set、zset

  • 多语言客户端

  • 功能丰富:发布订阅;Lua 脚本;等

  • 简单

    • 核心代码量小
    • 不依赖外部库
    • 单线程模型
  • 支持主从复制

  • 原生高可用和分布式解决方案

    • Redis-Sentinel 高可用 v2.8+
    • Redis-Cluster 分布式 v3.0+
阅读全文 »

Day.js 是一个轻量的 JavaScript 时间日期处理库,与 Moment.js 的 API 设计保持一致。

本文只介绍了一些常用操作,关于国际化、插件、自定义等高级内容详见官方文档。

其主要特性如下:

  • Moment.js 相同的 API 和用法
  • 不可变数据(Immutable)
  • 支持链式操作(Chainable)
  • 只有 2kb 大小(一些高级用法以扩展的形式存在,可按需加载
  • 全浏览器兼容
  • 强大的国际化支持(I18n)

官网:https://day.js.org/en

Github:https://github.com/iamkun/dayjs

阅读全文 »

MemCache

  • 多线程、异步I/O,可以充分利用多核 CPU 的优势,性能优秀
  • 功能简单,使用内存存储数据
  • 限制
    • key 小于 250B
    • value 小于 1M
    • key 最大失效时间小于 30 天
    • 只支持 K-V 结构,不支持持久化和主从同步

Redis

  • 单线程(可以借助多进程,以更好的发挥单机性能)
    • 异步非阻塞I/O(多路复用)
      • 多路:多个网络连接
      • 复用:复用同一个线程
    • 避免多线程上下文切换的代价
    • 避免多线程造成各种锁的问题
  • 数据在内存存储,支持持久化
  • 支持更多的数据类型,list、hash、set等
  • 主从 Sentinel +集群 Cluster,能够提供高可用服务