-
前端架构是什么?
-
设计模式六大原则
引言 本文主要讲解设计模式的设计原则,以及通过一些样例去详解(通篇还是偏稿子的形态,并没有好好整理,而是想到的就写下 六大原则 单一职责原则 开闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特原则 单一职责 单一职责原则的定义(类、方法、接口) 首先先看概念 单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reason for a class to change)。 归纳总结,就是一个类不应该承担过多的职责,而是专注类自身的职责 优点 降低类的复杂度 提高类的可读性 提高系统的可维护性 降低变更的风险 样例 //user.js class User { ... login (username, password) {} register (emal, username, password) {} logError (msg)...
-
Nuxt ssr如何做性能优化
Nuxt的背景 Nuxt.js 是一个基于 Vue.js 的通用应用框架。 通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI 渲染。 我们的目标是创建一个灵活的应用框架,你可以基于它初始化新项目的基础结构代码,或者在已有 Node.js 项目中使用 Nuxt.js。 Nuxt.js 预设了利用 Vue.js 开发服务端渲染的应用所需要的各种配置。 除此之外,我们还提供了一种命令叫:nuxt generate ,为基于 Vue.js 的应用提供生成对应的静态站点的功能。 我们相信这个命令所提供的功能,是向开发集成各种微服务(Microservices)的 Web 应用迈开的新一步。 作为框架,Nuxt.js 为 客户端/服务端 这种典型的应用架构模式提供了许多有用的特性,例如异步数据加载、中间件支持、布局支持等。 Nuxt 特性 基于 Vue.js 自动代码分层 服务端渲染 强大的路由功能,支持异步数据 静态文件服务 ES2015+ 语法支持 打包和压缩 JS 和 CSS HTML 头部标签管理 本地开发支持热加载 集成 ESLint 支持各种样式预处理器: SASS、LESS、...
-
第95个百分位数(95th Percentile)是什么
95th-percentile 什么是第95个百分位数?我们先看看wiki上的解释:https://en.wikipedia.org/wiki/Burstable_billing#95th_percentile The 95th percentile is a widely used mathematical calculation to evaluate the regular and sustained use of a network connection. The 95th percentile method more closely reflects the needed capacity of the link in question than tracking by other methods such as mean or maximum rate. The bytes...
-
$path和$home是什么?
$PATH和$HOME都是 Linux 系统下的环境变量,一般 Linux 系统的变量在调用时会加 $ 符号,并且按规范都为大写 PATH是指系统指可执行命令的环境变量,比如常用的ls ➜ ~ whereis ls /bin/ls ➜ ~ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ➜ ~ 该执行命令就在 /bin/ 下 同理 HOME 是指当前用户的主目录环境变量 另外一个,Bash 的默认命令是不在 $PATH 里的,比如 cd 这种
-
Macos catalina(v10.15) 如何安装 node Gyp
在 Catalina 中下载node-gyp node-gyp 的 repo 地址 https://github.com/nodejs/node-gyp,阅读后其实会发现对 Catalina(v10.15) 之后的系统版本有一个md的地址 https://github.com/nodejs/node-gyp/blob/master/macOS_Catalina.md 里头有完整的处理方案就不赘述了 node-gyp 是什么? 这里有一份关于 node-gyp 的讲解,刨根问底之node-gyp。 node-gyp是一个跨平台的命令行工具,目的是编译node addon模块。 常用的命令有configure和build,configure 原理就是利用gyp生成不同的编译配置文件,build则根据不同平台、不同构建配置进行编译。 简单的说noe-gyp是编辑C++扩展用的,node addon中存在有很多不同语言编写的工具,所以需要预先编译一下,否则就会有跨平台的问题。
-
Ssl本地自建流程(mac)
找到自己openssl配置的位置 find / -name openssl.cnf 打开openssl.cnf 把[ req ]下的#req_extensions = v3_req # The extensions to add to a certificate request注释去掉,启用v3_req 在[ v3_req ]下配置 subjectAltName=IP:127.0.0.1,更多配置方法可以参考 https://www.openssl.org/docs/man1.0.2/apps/x509v3_config.html#Subject-Alternative-Name。 还可以将 subjectAltName=@alternate_names 在openssl.cnf中额外增加一个新的配置[ alternate_names ] [ alternate_names ] DNS.1 = example.com DNS.2 = www.example.com DNS.3 = mail.example.com DNS.4 = ftp.example.com IP.1 = 192.168.1.1 ... 生成签名...
-
Rabbitmq上手(node)
大纲 介绍 安装以及编码 介绍 RabbitMQ 是一个消息代理,其主要思想比较简单。允许接收和转发消息。你可以把RabbitMQ想成是一个邮局,当你发一份邮件到邮箱,你相当确定邮递员最终会把这封信送到你的收件人那边。 使用这个比喻,RabbitMQ可以是一个邮箱,或一个邮局,或一个邮递员。 其与邮局主要的不同是实际上RabbitMQ并不处理内容,而是接收,存储然后转发二进制数据–消息(message) 在RabbitMQ的消息传递上,我们用一些术语来解释: 生产(Producing) 意味着只做发送的事情。一个发送消息(message)的程序可以作为一个生产者(producer).图如下,代号‘P’ 队列(queue)是一个邮箱的名字,存在在 RabbitMQ中。尽管消息(messages)是在RabbitMQ和你的应用中传递,但是它们只能被存到一个队列中。这个队列没有任何限制,可以存储你想要的任何多的消息,实际上,它就是一个无限的Buffer,大量生产者可以把消息发送到一个 队列中,消费者们可以尝试从一个队列中去接收数据。一个队列可以画成下图所示:上方是它的名字 消费(Consuming)和接收的意思类似。一个等待接收消息的程序是一个消费者(Consumer)。如下图所示,代号“C”: 生产者-队列-消费者 安装以及编码 安装部署RabbitMQ amqplib (node) 安装部署RabbitMQ 通过docker安装 获查询镜像 docker search rabbitmq:management 可以查到: Youngbye➜ ~ ᐅ docker search rabbitmq:management NAME DESCRIPTION STARS OFFICIAL AUTOMATED macintoshplus/rabbitmq-management Based on rabbitmq:management whit python and… 3 [OK] transmitsms/rabbitmq-sharded Fork of...