服务响应时间与分布 分析服务响应时间分布,如:均值、中位值、P95值、P99值等如何计算。 平均值我们考察一个服务器的性能,除了QPS数据外,还会考察响应时间,当服务器负载增高时,往往会伴随着响应时间的增长,但是这个值该如何度量,以精准的表现服务器当前之负载呢? 最常用的值为平均值,表示服务的平均响应时间,通过该值我们能够知道服务当前响应的所有请求耗时的平均值。 平均值计算公式: 1服务器当前请求的总耗时/请求总数量 2022-12-29 架构 #架构
单体应用如何服务化 服务化的前置条件一般情况下,业务系统引入新技术就必然会带来架构的复杂度提升,在具体决策前,你先要认识到新架构会带来哪些新的问题,这些问题你和你的团队是否能够解决?如何解决?是自己投入人力建设,还是采用业界开源方案? 下面几个问题,是从单体应用迁移到微服务架构时必将面临也必须解决的。 服务如何定义 对于单体应用来说,不同功能模块之前相互交互时,通常是以类库的方式来提供各个模块的功能。对于微服务来 2022-12-28 架构 #架构
什么是微服务? 单体应用微服务不是凭空而来的,是由单体应用演变而来。那单体应用有什么缺点能演变出微服务来? 在项目开始时,代码量业务规模都不大并且开发团队人员规模都较小,采用单体应用架构时,团队的开发和运维成本都可控。 然而随着业务规模的不断扩大,团队开发人员的不断扩张,单体应用架构就会开始出现问题。会出现下列问题: 部署效率低下:当单体应用的代码越来越多,依赖的资源越来越多时,应用编译打包、部署测试一次,甚至 2022-12-28 架构 #架构
堆 堆堆是树的一种变种,应用场景非常多,最经典的就是堆排序。堆排序是一种原地的、时间复杂度为 O(n log n ) 的排序算法。 如何理解“堆”堆是一种特殊的树,但什么样的树才是堆呢?一棵树满足了以下两点要求,这颗树就是一个堆: 堆是一个完全二叉树 堆中每一个节点的值都必须大于等于(或者小于等于)其子树中每个节点的值。 第一点,堆必须是一个完全二叉树。完全二叉树要求除了最后一层,其他层的节点个数 2022-12-27 程序开发 #数据结构/堆
队列 队列队列是一种特殊的现形镳,特殊之处在于它只允许在队列的前端(front)进行删除操作,而在队列的后端(rear)进行插入操作,和栈一样是一种操作受限制的线性表。进行插入操作的一端称为队尾,进行删除操作的一端称为对头。 队列这个概念非常好理解。可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。 队列支持的最基本操作有两个:入队 enqueue() 2022-12-20 程序开发 #数据结构
链表 链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。 链表和数组有什么区别呢? 数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个 100 MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的生育总可用空间大于 100 MB,仍然会申 2022-12-20 程序开发 #数据结构
正则常见示例 匹配数字数字的匹配比较简单,通过我们学习的字符组,量词等就可以轻松解决。 数字在正则中可以使用 \d 或 [0-9] 来表示。 如果是连续的多个数字,可以使用 \d+ 或 [0-9]+。 如果 n 位数据,可以使用 \d{n}。 如果是至少 n 位数据,可以使用 \d{n,}。 如果是 m-n 位数字,可以使用 \d{m,n}。 匹配 2022-12-19 程序开发 #运维/正则表达式
断言 什么是断言?简单来说,断言是指对匹配到的文本位置有要求。 \d{11} 能匹配上 11 位数字,但这 11 位数字可能是 18 位身份证号中的一部分。再比如,去查找一个单词,我们要查找 tom,但其它的单词,比如 tomorrow 中也包含了 tom。 也就是说,在有些情况下,我们对要匹配的文本的位置也有一定的要求。为了解决这个问题,正则中提供了一些结构,只用于匹配位置,而不 2022-12-19 程序开发 #运维/正则表达式
匹配模式 什么是匹配模式所谓匹配模式,指的是正则中一些改变元字符匹配行为的方式,比如匹配时不区分英文字母大小写。常见的匹配模式有 4 种,分别是不区分大小写模式、点号通配模式、多行模式和注释模式。 下面主要来介绍一下这 4 种模式。 不区分大小写模式(Case-Insensitive)先来看不区分大小写模式,它顾名思义,在进行文本匹配时,我们要关心单词本身的意义。比如要查找单词 cat,并不关心单词是 CA 2022-12-19 程序开发 #运维/正则表达式
数组 数组数组是最基本的数据结构,数组是存储在连续内存空间上的相同类型数据的集合。在数组中,可以方便地通过下标索引的方式去获取对应的数据。举一个字符数组的例子,如下图所示: 需要注意的是: 数组下标都是从0开始的。 数组在内存空间的地址是连续的。 正因为数组在内存空间的地址是连续的,所以删除或者增添元素时难免要移动其他元素的地址, 所以数组中的元素不能删除,只能覆盖。 数组支持随机访问,根据下标随 2022-12-17 程序开发 #数据结构