在一个分布式系统中,存在一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三种特性。 这三种特性在一个系统(运行)中只能同时满足其中两项。CAP理论的前提是 “分布式”系统 ,如果一个系统不满足分布式这一性质,那就无从提起CAP理论,下文中的系统代指”分布式系统“。
Zookeeper ACL 权限控制
Zookeeper ACL 权限可以对指定的节点设置相关的操作权限,保障数据的安全性。
Zookeeper ZNode
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。ZooKeeper 由不同分层的命名空间组成,命名空间与文件系统的目录非常相似,命名空间的数据存储的节点在 Zookeeper 中称为ZNode。
每个ZNode都有唯一的命名空间,如 /test1
和 /test2
是两个不同的节点,节点中存储了数据以及其自身的状态信息(如zxID、ACL访问控制、版本号、子节点等信息)。每一个节点都可以拥有子节点,子节点也是属于不同的节点,如 /test1
和 /test1/follow
也是不同的节点,但上级节点删除时可以递归删除子节点。
HTTP 状态码与重定向
从微信公众号跳转微信小程序时,如果传入的参数过长会导致填写“小程序路径”选项无法填写,这时需要实现类似“短链接”的功能,让前端获取保存的信息、解析、重定向到目的页。
这个需求与短链接中心有很大的相似之处,除微信小程序之外的 Web 应用也可以使用,只要在生成短链接时传入是否需要重定向的参数即可。需要注意由于 HTTP 标准和浏览器的历史设计的原因,重定向使用的 HTTP 状态码需要酌情选择。
PhpSpreadsheet 的一些使用方法
PhpSpreadsheet 是一个遵循最新 PSR 标准、完全使用 PHP 编写的用于处理 Excel 表格的第三方库,其前身是 PHPExcel,但 PHPExcel 由于历史技术债的问题被放弃维护。本文基于 PHP 7.4 和 PhpSpreadsheet 1.16.0 的官方文档选取翻译介绍部分使用方法。
Spring的IOC
所谓的IOC(inversion of control),就是控制反转的意思。
在传统的程序设计中,应用程序代码通常控制着对象的创建和管理。例如,一个对象需要依赖其他对象,那么它会直接使用 new 关键字新建对象。这样的设计通常被称为 “控制流程”。而 IOC 则是将控制关系发生了反转。控制权被转移到 Spring 容器中,容器负责创建和管理对象,并在需要的时候将它们注入到应用程序中。原来对象的控制权在代码中,在需要时使用 new 关键字创建对象,在Spring中,应用程序不再控制对象的创建,而是被动地接受由容器注入的对象。