摘要:
一、验证GC代码 程序并不复杂,我们指定一个运行时间作为退出条件,时间一到自动退出循环。在 generateGarbage 方法中,我们用了随机数来生成各种类型的数组对象并返回。 在 main 方法中,我们用一个数组来随机存放一部分生成的对象,这样可以模拟让部分对象晋升到老年代。具体的持续运行时间和 阅读全文
摘要:
一、延时 从事件发生到结果所需的时间就叫延迟,常见延时 可以看出,普通磁盘是有多慢,跟SSD差了一个数量级,这个数字可以告诉我们,提升数据库服务器硬件配置,就能使性能上一个台阶。 目前最快的SSD是Intel Optane(英特尔傲腾),延迟低到小于10微妙,目前已有项目基于SSD实现海量数据的缓存 阅读全文
摘要:
一、多级缓存架构 1、缓存原理和设计架构 缓存 VS 缓冲: 缓存:英文单词是Cache指位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为Cache,常见的缓存有,CPU的L1/L2/L3 cache、Linux文件系统的page cache、InnoDB buffer 阅读全文
摘要:
一、按照规范范围区分 根据规范范围区分(也就是规范的是所有虚拟机、还是指定一款虚拟机、还是指定一款虚拟机的指定版本),JVM的参数主要分为三类:标准参数、-X非标准参数、-XX参数。 以 - 开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容,例如下面示例的-server。 -D 设置系 阅读全文
摘要:
一、简单字节码分析 JavaByte由单个字节(byte)的指令组成,理论上最多支持256个操作码,实际上Java只使用了200左右的操作码,还有一些操作码留给调试操作。 根据指令的性质,主要分为四大类: 1、栈操作指令,包括与局部变量交互的指令;JVM就类似一个计算机,计算机的运行有基于栈的、有基 阅读全文
摘要:
一、数据库存储架构 1、数据库读写分离 实现原理: (1)数据库服务器搭建主从集群,一主一从或一主多从 (2)主库负责读写,从库只负责读 (3)主库通过复制将数据复制到从库,每个服务器都存储了全量的数据 (4)业务服务器将读写操作发给主库,将读操作发给从库。 如何判断要使用主从架构: 业务量持续增长 阅读全文
摘要:
一、架构师职责 架构师是业务和技术的桥梁,要同时懂业务和技术,很容易两头不讨好(业务会说为什么这也不能做那也不能做,技术有可能会说这个东西你为什么要承诺)。 根据架构设计环分析,架构师要具备判断、拆解、取舍的能力。 判断需要业务理解能力、技术能力、沟通能力; 拆解能力要有技术广度、宽度、深度; 取舍 阅读全文
摘要:
一、设计高扩展架构 1、架构设计复杂度模型 一个架构的复杂度可以分为业务复杂度和质量复杂度。 业务复杂度:指业务本身的复杂度,主要体现在难以理解、难以扩展,例如支付宝、保险、金融等 质量复杂度:指的是系统对于高性能、高可用、高扩展等质量要求。 在做架构时,首先要分析系统的复杂度模型。 对于架构复杂度 阅读全文
摘要:
Homebrew 安装 /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)" 一、安装OpenResty 安装并设置环境变量 brew install openresty 阅读全文
摘要:
一、什么是架构 1、系统与子系统 系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”、“整体”或“联盟”。 子系统是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。 系统与子系统样例: 2、模块与组件 模块是一套一致而互相有紧密关 阅读全文