CAP理论

在一个分布式系统中,存在一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三种特性。 这三种特性在一个系统(运行)中只能同时满足其中两项。CAP理论的前提是 “分布式”系统 ,如果一个系统不满足分布式这一性质,那就无从提起CAP理论,下文中的系统代指”分布式系统“。

Read More

MySQL日志

在 MySQL 数据库中,BinLog、RedoLog、UndoLog 都是数据库运行后产生的日志文件,但它们的作用的范围有所不同。其中 RedoLog 和 UndoLog 只适用于 InnoDB 存储引擎,而 BinLog 在 MyISAM 这种存储引擎也可以生效。

Read More

Zookeeper ZNode

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。ZooKeeper 由不同分层的命名空间组成,命名空间与文件系统的目录非常相似,命名空间的数据存储的节点在 Zookeeper 中称为ZNode。

每个ZNode都有唯一的命名空间,如 /test1/test2 是两个不同的节点,节点中存储了数据以及其自身的状态信息(如zxID、ACL访问控制、版本号、子节点等信息)。每一个节点都可以拥有子节点,子节点也是属于不同的节点,如 /test1/test1/follow 也是不同的节点,但上级节点删除时可以递归删除子节点。

Read More

HTTP 状态码与重定向

从微信公众号跳转微信小程序时,如果传入的参数过长会导致填写“小程序路径”选项无法填写,这时需要实现类似“短链接”的功能,让前端获取保存的信息、解析、重定向到目的页。

这个需求与短链接中心有很大的相似之处,除微信小程序之外的 Web 应用也可以使用,只要在生成短链接时传入是否需要重定向的参数即可。需要注意由于 HTTP 标准和浏览器的历史设计的原因,重定向使用的 HTTP 状态码需要酌情选择。

Read More

Redis数据结构

Redis 是用 C 语言开发的一个开源的高性能非关系型数据库,大多数情况下数据存储在内存中,因此其读写速度相比基于磁盘的关系型数据库快。由于其速度快的特点所以被广泛应用在缓存方面,它支持多种数据类型如字符串、列表、集合、有序集合、哈希等。

Read More

MySQL锁机制

MySQL 有多种存储引擎,每种存储引擎有各自的优缺点,较常出现的是 MyISAM 和 InnoDB,在 MySQL 5.1 之前的版本默认存储引擎是 MyISAM,之后的版本是 InnoDB。由于 MyISAM 存储引擎不支持数据库事务以及随着版本升级后默认存储引擎的切换,存储引擎的选择逐渐转向了 InnoDB。MySQL 在不同的存储引擎下有不一样的锁机制,如无特殊说明,本文的内容主要介绍 MySQL InnoDB 存储引擎下基于事务的锁机制。

Read More

PhpSpreadsheet 的一些使用方法

PhpSpreadsheet 是一个遵循最新 PSR 标准、完全使用 PHP 编写的用于处理 Excel 表格的第三方库,其前身是 PHPExcel,但 PHPExcel 由于历史技术债的问题被放弃维护。本文基于 PHP 7.4 和 PhpSpreadsheet 1.16.0 的官方文档选取翻译介绍部分使用方法。

Read More

Java基础——锁

锁在并发编程中可以说是经常使用的一种资源保护技术,随着计算机科学和项目工程的发展,锁技术同样在发展和优化,从单体锁到分布式锁,本文介绍 Java 基础锁的相关知识。

Read More

Spring的IOC

所谓的IOC(inversion of control),就是控制反转的意思。

在传统的程序设计中,应用程序代码通常控制着对象的创建和管理。例如,一个对象需要依赖其他对象,那么它会直接使用 new 关键字新建对象。这样的设计通常被称为 “控制流程”。而 IOC 则是将控制关系发生了反转。控制权被转移到 Spring 容器中,容器负责创建和管理对象,并在需要的时候将它们注入到应用程序中。原来对象的控制权在代码中,在需要时使用 new 关键字创建对象,在Spring中,应用程序不再控制对象的创建,而是被动地接受由容器注入的对象。

Read More