whoru

学习、分享、交流、沉淀

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,能够提供高可用服务

大多数计算机语言,有且仅有一个表示“无”的值,比如:C 语言的 NULL,Java 语言的 null,Python 语言的 None,Ruby 语言的 nil。

但是在 JavaScript 中却同时存在 undefinednull,这主要是由于历史原因,感兴趣的可以查一下。

二者的主要用法区别如下:

  • undefined
    • 变量被声明了,但没有赋值时,就等于 undefined
    • 调用函数时,应该提供的参数没有提供,该参数等于 undefined
    • 对象没有赋值的属性,该属性的值为 undefined
    • 函数没有返回值时,默认返回 undefined
  • null
    • 作为函数的参数,表示该函数的参数不是对象。
    • 作为对象原型链的终点。

⚠️ 注意:在 JavaScript 中 undefined 是一个全局变量,而不是关键字!

  1. 为了避免无意中被篡改,建议使用 void 0 来获取 undefined 值。
  2. 在比较时,建议使用 if (typeof var1 === 'undefined') {}

该实践其实是一个目录操作规范,以易于使用为最终目的,将需要个性化和经常会变动的目录或文件独立出来,借助简单的 Shell 脚本进行 Hexo 的初始化及 NexT 主题的升级。

说明:来源于个人使用过程中的总结,可能并不适合所有人,仅供参考。

阅读全文 »