PHP,DDD,CQRS,Event Sourcing,Kubernetes,Docker,Golang

0%

什么是B树

B树在许多软件中都扮演着基础角色,尤其是数据库管理系统(DBMS)。MySQL、PostgreSQL、MongoDB、Dynamo 等众多系统都依赖 B 树通过索引来高效地查找数据。当你读完这篇文章时,你将了解 B 树和 B+ 树的工作原理,数据库为何使用它们来构建索引,以及为什么将 UUID 作为主键可能不是一个好主意。你还将有机会体验我们讨论的数据结构的交互式动画。准备好点击按钮吧。

计算机科学领域有大量的数据结构可供选择,用于在计算机上存储、搜索和管理数据。B树就是这样一种数据结构,它在数据库应用中被广泛使用。B树以计算机程序员所说的树状结构存储被称为键值对的数据。对于不熟悉计算机科学家如何使用“树”这个术语的人来说,它实际上看起来更像一个根系。

下面是本博客的第一个交互式组件。借助它,你可以直观地看到B树的结构,还能了解在添加键值对以及更改每个节点的键值对数量时会发生什么。点击“添加”或“Add random”按钮几次来试试看,在我们深入细节之前,先直观感受一下它的工作原理。

阅读全文 »

通用唯一识别码(Universally Unique Identifiers,也称为 UUID)旨在让开发人员能够在不了解其他系统的情况下生成唯一的 ID,从而保证 ID 的唯一性。在分布式架构中,当有多个系统和数据库负责创建记录时,UUID 特别有用。你可能认为在数据库中使用 UUID 作为主键是个不错的主意,但如果使用不当,它们可能会严重影响数据库性能。

在本文中,你将了解在 MySQL 数据库中使用 UUID 作为主键的缺点。

阅读全文 »

头图

RESTful接口现在很普遍,但是如果你作为一名web开发者,你应该知道对于不同的情况如何去选择一个最合适的HTTP方法有点困难。

对于开发REST接口来说,更新一个资源是常见的事,这里有两个开发者经常使用的HTTP方法:PUTPATCH,一般你会选择哪一个?

这两个方法看起来作用相同,都是更新一个服务的资源,但它们底层确是完成不同的事情。本篇文章将帮助你理解PUT和PATCH请求之间的区别,以便你可以设计一个专业的生产级别的API。

阅读全文 »

问题描述

当一个Pod被执行删除操作后,却长时间的处于Terminating状态,发生这样的情况可能是因为:

  • Pod有一个与其关联的finalizer,这个finalizer的任务没有完成。
  • Pod对中断信号没有响应

当我们执行kubectl get pods命令时,你将会看到这样的信息:

1
2
NAME                     READY     STATUS             RESTARTS   AGE
nginx-7ef9efa7cd-qasd2 1/1 Terminating 0 1h
阅读全文 »

编译器(Compiler)和解释器(Interpreter)是两种不同的工具,都可以将编程语言脚本语言转换为机器语言

编译器可以将整个程序转换为目标代码(object code),这些目标代码通常存储在文件中。目标代码也被称为二进制代码,在进行链接(link)后可以被机器直接执行。典型的编译型程序语言有CC++

解释器(Interpreter)能够直接执行程序或脚本语言中编写的指令,而不需要预先将这些程序或脚本语言转换成目标代码或者机器码。典型的解释型语言有PerlPythonPHPMatlab

以下是关于编译器解释器有趣的方面:

  1. 编译器解释器都能将源代码(文本文件)转换为其他符号;都能生成语法树(parse tree);都能生成立即指令(immediate instructions,即该指令中要操作的数据已经包含在了指令中,而不是在指令中操作数据所在的地址)。它们的不同之处是,编译器包含了链接器(linker),生成独立的机器代码程序,而解释器是直接执行高级语言所描述的操作。

  2. 一旦程序被编译了,则它的源代码对于运行程序来说没用处了。而解释型程序的源代码在运行程序的时候是始终都需要被用到。

  3. 解释型程序一般会比编译型程序运行效率低。

  4. Java程序首先会被编译器编译成中间状态(即字节码),然后再被解释器执行。

最近在研究和开发统一用户身份认证的系统,与此同时也了解到市场上有着如IAM、IDaaS这样的公有云产品,可以将应用快速接入实现统一用户身份认证、权限管理、SSO单点登录等功能。

我主要了解的是阿里云的IDaaS产品,一直认为阿里云产品文档是一个非常好的学习途径,在了解该类产品和功能过程中,阿里云在文档中除了说明产品的使用,更是加入了一些概念的讲解、知识的讲解。这里倒是要摘一些重要的概念。

阅读全文 »

关于IDaaS就不多说了,主要是理解一下IDaaS中,如何与应用系统进行帐户关系上的处理。目前了解有三种,但主要还是关注帐户映射(Account Mapping)和帐户关联Account Linking)两种做法,还有一种好像是基于角色的帐户。

阅读全文 »

PHP日志不仅仅记录错误,你也可以使用日志来追踪API或函数调用的性能,或统计你应用程序中重要事件的发生次数(例如登录、注册、下载等)。无论你是微服务还是单体架构,对PHP应用程序日志的全面记录将会让你能够追踪应用中关键点,并优化其性能。

PHP和开源的日志库让你可以选择在哪里发送日志和存储日志。如你在这篇文章中看到,将PHP日志存储在一个中央仓库是最简单的,并且为以后处理和分析日志提供了很大的便捷。当你使用专用的工具对日志文件进行tail并转发到中央仓库时,你的应用程序代码不需要承担缓冲日志和处理网络错误的代价。

在这篇文章,你将学习到:

  • 配置PHP System logger来实现自动记录错误日志
  • 使用PHP原生方法来记录自定义错误
  • 使用Monolog日志库来扩展你的日志收集能力
  • 捕获PHP异常和任意的事件
阅读全文 »