初探前端框架 Vue2 之四
大纲
Vue CLI 安装
CLI 是 Command-Line Interface (命令行界面) 的缩写,俗称脚手架。Vue CLI 是一个由 Vue 官方提供的、快速生成 Vue 工程化项目的工具,可以快速搭建 Vue 开发环境以及创建对应的 Webpack 配置文件。在使用 Vue 开发大型应用时,往往需要考虑代码目录结构、项目结构和部署、热加载、单元测试等事情;如果每个项目都要手动完成这些工作,那无以效率比较低效,所以通常会使用一些脚手架工具来帮助完成这些事情。
版本区别
Vue CLI 目前拥有两个版本,分别是 Vue CLI 2 和 Vue CLI 3,两者的区别如下:
- Vue CLI 3 提供了
vue ui命令,提供了可视化配置,更加人性化 - Vue CLI 3 是基于 Webpack 4 打造,Vue CLI 2 是基于 Webpack 3 打造
- Vue CLI 3 的设计原则是
零配置,移除了配置文件根目录下的build和config等目录 - Vue CLI 3 移除了
static文件夹,新增了public文件夹,并且将index.html移动到public文件夹中
初探前端框架 Vue2 之三
初探前端框架 Vue2 之二
初探前端框架 Vue2 之一
大纲
前言
MVVM 思想
M:即 Model(模型),包括数据和一些基本操作V:即 View(视图),页面的渲染结果VM:即View-Model,模型与视图间的双向操作(无需开发人员干涉)
在 MVVM 之前,开发人员从后端获取需要的数据模型,然后要通过 DOM 操作 Model 渲染到 View 中。当用户操作视图后,开发人员还需要通过 DOM 获取 View 中的数据,然后同步到 Model 中。而 MVVM 中的 VM 要做的事情就是把 DOM 操作完全封装起来,开发人员不用再关心 Model 和 View 之间是如何互相影响的。这样可以将开发人员从繁琐的 DOM 操作中解放出来,把关注点放在如何操作 Model 上。
Bucket4j 限流入门教程之一
前言
限流概述
在开发高并发系统时可以用三把利器来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理的容量,是抗高并发流量的 “银弹”;而降级是当服务出现问题或者影响到核心流程时,需要暂时将其屏蔽掉,待高峰过去之后或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询等,因此需要有一种手段来限制这些场景的并发 / 请求量,即限流。限流的目的是通过对并发访问 / 请求进行限速或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或友好的展示页)、排队或等待(比如秒杀、评论、下单等场景)、降级(返回兜底数据或默认数据)。主流的中间件都会有单机限流框架,一般支持两种限流模式:控制速率和控制并发。Spring Cloud Zuul 通过第三方扩展 spring-cloud-zuul-ratelimit 也可以支持限流,而 Spring Cloud Gateway 的限流实现可以看这里。常见的限流算法有漏桶和令牌桶,计数器也可以进行粗暴限流实现。对于限流算法,可以参考 Guava 中的 RateLimiter、Bucket4j、RateLimitJ 等项目的具体实现。
Bucket4j 介绍
Bucket4j 是基于令牌桶算法的 Java 限流库,它主要用在 3 种场景:
- 限制比较重工作的速率
- 限制对 API 的访问速率
- 将限流作为定时器,例如有些场景限制你对服务提供方的调用速度,因此使用限流器作为定时器,定时按照约定速率调用服务提供方
Linux 安装 ZooKeeper 单机实例
分布式全局唯一 ID 解决方案之二
大纲
1、UidGenerator 分布式 ID 生成器
1.1、概述
UidGenerator 由百度开源并使用 Java 实现的,基于 Snowflake 算法的唯一 ID 生成器。UidGenerator 以组件形式工作在应用项目中, 支持自定义 workerId 位数和初始化策略, 从而适用于 Docker 等虚拟化环境下实例自动重启、漂移等场景。在实现上, UidGenerator 通过借用未来时间来解决 sequence 天然存在的并发限制;采用 RingBuffer 来缓存已生成的 UID, 并行化 UID 的生产和消费, 同时对 CacheLine 补齐,避免了由 RingBuffer 带来的硬件级「伪共享」问题。 最终单机 QPS 可达 600 万。依赖 Java8 及以上版本, MySQL(内置 WorkerID 分配器, 启动阶段通过数据库进行分配;如自定义实现,则数据库非必选依赖)。
