ClickHouse的Sharding分片的作用
ClickHouse的Sharding分片的作用,允许多台机器/节点同时并行执行查询,实现了分布式并行计算
ClickHouse的Sharding分片的作用,允许多台机器/节点同时并行执行查询,实现了分布式并行计算
ClickHouse的分区的作用
ClickHouse的副本的作用,为了数据备份与安全,保障数据的高可用性
表引擎选择一般都是MergeTree系列引擎,没有最好,根据业务选择最合适的。
不会为每个关键字创建索引记录,而是为数据记录未见的每个存储块设一个键-指针对,存储块意味着块内存储单元连续。
Flink的滑动窗口
Flink的滚动窗口
使用`max`函数联表查询获得最新一条数据
会被浏览器硬缓存,第一次会经过后端服务,再访问直接从浏览器缓存中获取目标地址, 用301时同时对服务器压力也会有一定减少,但不发统计到地址被访问多少次。
加锁,比如synchronize、ReentrantLock或者分布式锁
每次拿数据的时候会上锁,别的线程取拿数据的时候就会阻塞,比如synchronized。
堆溢出
当线程数=maxPoolSize,且任务队列已满时,线程池有多种策略处理新任务
标准参数(-)
堆内存垃圾回收流程
-Xms
-XX:+ 开启对应的参数
Serial串行垃圾回收器
jps
类加载子系统CLass Loader SubSystem:加载Class文件到系统,校验、解析、初始化等 ,运行时数据区Runtime Data Area:java程序的执行过程中会把所管理的内存划分为若干个不同的数据区域,方便管理和维护
不会为每个关键字创建索引记录,而是为数据记录未见的每个存储块设一个键-指针对,存储块意味着块内存储单元连续。
redo log、bin log、undo log、slow query log、relay log
存在几个线程:主库一个线程,从库两个线程。主库生成一个log dump线程,和从库IO线程交互。
原子性Atomicity、一致性Consistency、隔离性Isolated、持久性Durability
垂直分库针对的时一个系统中的不同业务进行拆分,数据库的连接资源比较宝贵且单机处理能力也有限;没拆分之前全部都是落到单一的库上的,单库处理能力成为瓶颈,还有磁盘空间、内存、tps等限制;
也就是“大表拆小表”,基于列字段进行的。拆分原则一般是表中的字段较多,将不常用的或者数据较大,长度较长的拆分到扩展表,如text类型字段。
redo log、bin log、undo log、slow query log、relay log
主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。普通索引:最基本的索引,它没有任何限制,仅加速查询,值可以为空。
Mysql执行计划Explain中的Type
解决数据库本身瓶颈,解决系统本身IO、CPU瓶颈,数据库分表可以解决单表海量数据的查询性能问题。数据库分库可以解决单台数据库的并发访问压力问题。
跨节点数据库join关联查询和多维度查询、分库操作带来的分布式事务问题、执行的SQL排序、翻页、函数计算问题
数据库全局主键重复问题、容量规划分库分表后二次扩容问题、分库分表技术选型问题
实际生产环境为了数据库安全,需要对数据库做定期全量备份,短期做增量备份。Percona公司开发的用于MySQL数据库物理热备的工具Xtrabackup支持MySQL、Percona server和MariaDB,开源免费,是实现增量备份而出现的一款主流工具。
Percona-toolkit是MySQL的高级运维工具集合,更高效执行各种通过手工非常复杂和麻烦的mysql任务,包括开发、性能分析、监控、数据备份复制、系统管理等。
指的是政治(Political)、经济(Economic)、社会(Social)和技术(Technological)。
ACL:以前盛行的一种权限设计,它的核心在于用户直接和权限挂钩。RBAC:基于角色的访问控制系统,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。
ReentrantLock和Synchronized使用的场景是什么?实现机制有什么不同?
4+1视图的场景视图多数都是以用例图进行表示
也叫流程视图,描述系统中的动态信息,最常见的是逻辑架构元素之间的交互关系
物理视图也叫部署视图,对这个部署信息进行描述,包括服务器、机房、终端设备分布等。
查看核心线程池`corePoolSize`是否已满,不满就创建一条线程执行任务,否则执行第二步。在刚创建线程池时线程不会立即启动,有任务提交时才开始创建线程并逐步线程数目达到corePoolSize
在使用`XMLHttpRequest`下载文件时,当指定数据类型为blob时,如果后端失败了仍会下载一个空文件或者一个错误文件。
什么是业务数据埋点?常见的埋点方式有哪些?代码埋点、可视化埋点、全埋点
全称The Open Group Architecture Framework企业架构标准。
全称The Open Group Architecture Framework企业架构标准。
什么是ETL?抽取(extract)、转换(transform)、加载(load)
资源的关闭很多人停留在旧的流程上,jdk7新特性旧有,但是很多人以为是jdk8的。
什么是商业智能BI(Business Intelligence)?为了提升数据价值、辅助企业决策
用过线程池不?有什么好处?java里面有哪些是常用的线程池?重用存在的线程,减少对象创建销毁的开销,有效的控制最大并发线程数,提高系统资源的使用率。
分布式ID生成算法-Snowflake原理雪花算法生成的数字,long类,所以就是8个byte,64bit。 表示的值:-9223372036854775808(-2的63次方)~ 9223372036854775807(2的63次方-1)
单库下一般使用Mysql自增ID,但是分库分表后,会造成不同分片上的数据表主键会重复。
业务抽象设计的合理性,不能太宽泛和太细粒度,满足高内聚、松耦合
RestTemplate是Spring提供的用于访问Rest服务的客户端,底层使用java.net。
JS常用正则表达式,校验ip地址、替换ip、端口
Mycat:java语言编写的MySQL数据库网络协议的开源中间件; Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈。
常见的数据库优化手段
JDK1.5有了Future贺Callable的实现,想要异步获取结果,通常会以轮询的方式去获取结果。
技术Leader一定要考虑RIO投产比,不要一味追求【技术完美】而忽略了业务增长。好比投入5个人力1个月时间把项目进行重构,却没给业务方带来提效、数据等合理的增长。
指的是政治(Political)、经济(Economic)、社会(Social)和技术(Technological)。
AARRR是Acquisition、Activation、Retention、Revebue、Referral五个单词的缩写,对应用户生命周期的5个重要环节。
AARRR是Acquisition、Activation、Retention、Revebue、Referral五个单词的缩写,对应用户生命周期的5个重要环节。
简单讲字段比较多的数据库表,通常是指业务主题相关的指标-维度-属性关联在一起的表。把不同的内容都放在同一张表存储,宽表不符合三范式的模式设计规范。
度量值、维度表、事实表。可统计次数、个数、金额等。比如订单表中的下单金额。 对事实的描述信息,每一张维表对应现实世界中的一个对象或概念
原始数据层,汇集多个原始未处理的数据,比如埋点日志,业务数据库、队列等,是后续数据仓库加工数据的来源。
联机事务处理系统和联机分析处理系统
实体对象,介绍:对象实体,图形:矩形,框内写实体名
一般适合读多写少的场景,适合OLAP分析型系统,列存储在聚合、统计等操作性能会优于行存储,同个数据类型会进行数据压缩更省空间。
传统的OLTP关系型数据库都是行存储,比如Oracle、Mysql一行中的数据在存储介质中以连续存储形式存在。
架构图是给人看的,这些人我们习惯称为【业务方、客户】,有哪些人?上级:你的公司Leader(晋升汇报)、老板、外部投资人
画架构图有哪些理论,有没有最合适的架构图画法,架构图本质上是从不同的视角,不同的抽象角度去看,业界存在多个划分理论
自增id,根据id范围进行分表(左闭右开),hash取模(Hash分库分表是最普遍的方案)
把同个表的数据按照一定规则分到不同的数据库中,数据库在不同的服务器上。
把一个表的数据分到一个数据库的多张表中,每个表只有这个表的部分数据。 减少锁表时间
生产环境启动java应用的时候,一般会加jvm参数,当堆内存空间OOM时输出堆的内存快照。
Mysql默认引擎InnoDB中,索引分为两类:聚簇索引和非聚簇索引,使用B+树实现索引结构。
Executors创建的线程池底层也是调用`ThreadPoolExecutor`,只不过使用不同的参数、队列、拒绝策略等。如果使用不当,会造成资源耗尽问题。
计算机基础知识-bit和byte
指领域对象里只有get和set方法,所有的业务逻辑都不包含在内,而是放在Business逻辑层。
互联网项目可以分IO密集还是CPU密集项目,不同项目配置不一样
简称CAS,属于乐观锁,性能较悲观锁有很大的提高。全称是Compare and Swap,即比较再交换,是实现并发应用到的一种技术。