面试的一些经典问题 [22]

文章目录1.多级缓存2.为什么大厂在大表做水平分表时严禁使用自增主键3.布隆过滤器应用4.IP直连的问题以及如何解决5.负载均衡器是什么/类型/策略6.为何禁用外健约束7.慢SQL8.redis9.锁10.oom1.多级缓存1.客户端缓存页面缓存,浏览器缓存,APP缓存2.应用缓存CDN缓存,内容分发网络:智能DNS,可以在后台设置缓存的属性:Expires,cache-control:具体某个时间点缓存到期,缓存的有效时间3.nginx缓存弱负载均衡为应用提供高可用性:proxy_cache
分类: 其他 发布时间: 11-27 09:32 阅读次数: 0

rabbitmq [23]

文章目录1.如何保证RabbitMQ消息的顺序性?2.消息如何分发?3.消息怎么路由?4.消息基于什么传输?5.如何保证消息不被重复消费?或者说,如何保证消息消费时的幂等性?6.如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?7.如何保证RabbitMQ消息的可靠传输?8.为什么不应该对所有的 message 都使用持久化机制9.如何保证高可用的?RabbitMQ 的集群10.如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么
分类: 其他 发布时间: 11-27 09:32 阅读次数: 0

CMS 和G1 的区别 [24]

CMS收集器和G1收集器的区别文章目录区别一: 使用范围不一样区别二: STW的时间区别三: 垃圾碎片区别四: 垃圾回收的过程不一样CMS回收垃圾的4个阶段CMS的总结和优缺点G1回收器的特点G1回收垃圾的4个阶段什么情况下应该考虑使用G1控制G1回收垃圾的时间区别一: 使用范围不一样CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用区别二: STW的时间CMS收集器以最小的停顿时间为目标的收集器。
分类: 其他 发布时间: 11-27 09:32 阅读次数: 0

FastDFS选择策略

1.FastDFS如何选择tracker和客户端通信?在trakcer集群中,每个tracker的地位都是平等的,因此client可以随机选择一个tracker进行连接。client会通过轮询的方式选择一个tracker,要是此tracker不能提供服务,则换下一个tracker。2.FastDFS如何选择一个group?可以手动指定一个group可以通过所有存储节点组轮询的方式选择一个group可以根据剩余存储空间最多的方式选择一个group3.FastDFS如何选择一个storage?该存
分类: 其他 发布时间: 11-27 09:32 阅读次数: 0

innodb引擎的4大特性

文章目录1.插入缓冲(insert buffer)2.二次写(double write)3.自适应哈希索引(ahi)4.预读(read ahead)4.1 线性预读4.2 随机预读1.插入缓冲(insert buffer)插入缓冲(Insert Buffer/Change Buffer):提升插入性能,change buffering是insert buffer的加强,insert buffer只针对insert有效,change buffering对insert、delete、update(dele.
分类: 其他 发布时间: 11-27 09:31 阅读次数: 0

Redis和RabbitMQ做消息队列的区别

可靠消费Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理RabbitMQ:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费可靠发布Reids:不提供,需自行实现Redis的消息队列,如果在从队列pop出去的时候,worker处理失败的话,数据不会回到队列中,需要从业务中手动把失败的处理数据push到队列中;RabbitMQ:具有发布确认功能,保证消息被发布到服务器RabbitMQ有一个消息确认机制
分类: 其他 发布时间: 11-27 09:31 阅读次数: 0

Spring refresh() 方法详解(启动Spring,bean的创建过程)

文章目录1. this.prepareRefresh() 激活开启容器2. this.obtainFreshBeanFactory() 获取 bean 工厂3. this.prepareBeanFactory(beanFactory) 对获取到的 beanFactory 做预处理设置4. this.postProcessBeanFactory(beanFactory); beanFactory准备工作完成后进行的后置处理工作5. this.invokeBeanFactoryPostProcessors(be
分类: 其他 发布时间: 11-27 09:31 阅读次数: 0

Spring中的Aware作用以及源码

文章目录1.源码2.Aware调用链3.initializeBean 初始化Bean在有些场景中我们需要感知到容器的存在,需要获取容器的工具类,这个时候需要使用Spring Aware提供的工具类Spring 框架中提供许多实现Aware接口的类,这些类主要是为了辅助Spring访问容器中的数据1.源码自定义实现ApplicationContextAware接口类,然后在setApplicationContext方法打断点,debug模式下查看堆栈信息2.Aware调用链createBe
分类: 其他 发布时间: 11-27 09:30 阅读次数: 0

Redis底层分析

Redis为kv的,而Redis底层又是由c语言写成的,一切皆字典dict,和java的一切皆对象ObjectRedis的key类型一般为字符串,value为redis类型RedisObject这里的kv称为dictEntry相当与java中的Map<String, redisObject>bitmap底层为String类型,hyperloglog底层为String,GEO底层为zset1.上帝视角redisServer -> redisDB -> dict ->
分类: 其他 发布时间: 11-27 09:30 阅读次数: 0

Doris架构原理

1.介绍Doris是一个MPP的OLAP系统,以较低的成本提供在大数据集上的高性能分析和报表查询功能。MPP (Massively Parallel Processing),即大规模并行处理。简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似)注:MPPDB与Hadoop都是将运算分布到节点中独立运算后进行结果合并(分布式计算),但由于依据的理论和采用的技术路线不同而有各自的优缺点和适用范围。我们现在大数据存储
分类: 其他 发布时间: 11-27 09:30 阅读次数: 0

LeetCode_ 三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]1.暴力法2.双指针发法 public List<List<Integ
分类: 其他 发布时间: 11-27 09:30 阅读次数: 0

LeetCode_下一个排列

实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输出:[1]一遍扫描法
分类: 其他 发布时间: 11-27 09:29 阅读次数: 0

redis_io多路复用

Redis利用epoll实现io多路复用,将连接信息和事件放入队列,一次放到文件事件派发器,事件派发器将事件分发给事件处理器。io多路复用机制:监视多个描述符fd,一旦某个描述符就绪,可以通知程序进行响应的读写操作。这种机制需要select,poll,epoll。多个连接公用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,不需要全部的阻塞连接。当某条连接有新的数据可以处理的时候,操作系统通知应用程序。Redis采用基于Reator的方式实现的文件事件处理器。Redis基于Reactor模型开发
分类: 其他 发布时间: 11-27 09:29 阅读次数: 0

常用的限流算法有哪些

文章目录1.计数器1.1 时间段的限制1.2 无时间段限制2.滑动窗口3.漏桶4.令牌桶5.总结1.计数器计数器是最简单,最直接明了的限流算法。说白了就是进行数字累加操作,也就是count++ 这你总能看懂吧!单机限流可以直接使用LongAdder或者AtomicLong这些原子类进行计数操作即可。用Semaphore也可以,Semaphore内部本身就是计数器的方式实现。集群限流可以使用Redis的incr进行计数累加即可,用其他的存储也可以,核心就是要有集中存储计数的地方。计数器算法也分为两种
分类: 其他 发布时间: 11-27 09:29 阅读次数: 0

K8s kubectl 常用命令总结

1.1. kubectl语法kubectl [command] [Type] [NAME] [flags]command: 子命令,用于操作kubernetes集群资源对象的命令,例如:create, delete, describe, get, apply等等TYPE: 资源对象的类型,区分大小写,能以单数,复数或者简写形式表示。例如以下3中TYPE是等价的。kubectl get pod pod1kubectl get pods pod1kubectl get po pod1NAME:资
分类: 其他 发布时间: 11-27 09:28 阅读次数: 0

Kubernetes 核心资源原理

kubernetes 已经成为容器编排领域的王者,它是基于容器的集群编排引擎,具备扩展集群、滚动升级回滚、弹性伸缩、自动治愈、服务发现等多种特性能力。文章目录1.kubernetes 架构2.从创建 deployment 开始3.Pod3.容器编排4.水平扩缩容5.更新/回滚6.滚动更新7.kubernetes 中的网络8.微服务—service9.kubernetes 中的服务发现与网络调用1.kubernetes 架构从宏观上来看 kubernetes 的整体架构,包括 Master、Node
分类: 其他 发布时间: 11-27 09:28 阅读次数: 0

OLTP 与 OLAP

文章目录什么是 OLAP?什么是 OLTP?1.OLAP实例2.OLTP 系统实例3.关键区别4.使用OLAP优缺点5.使用OLTP优缺点6.两者区别什么是 OLAP?联机分析处理在线分析处理,一类为商业决策提供数据分析的软件工具。OLAP 系统允许用户同时从多个数据库系统分析数据库信息。主要目标是数据分析,而不是数据处理。什么是 OLTP?联机事务处理联机事务处理即为 OLTP,它支持三层架构中的面向事务的应用程序。OLTP 管理组织的日常事务。主要目标是数据处理,而不是数据分析1.OL
分类: 其他 发布时间: 11-27 09:28 阅读次数: 0

数仓面试。

1.数仓构建1). 前期业务调研 需求调研 数据调研 技术选型2). 提炼业务模型,总线矩阵,划分主题域;3). 定制规范 命名规范、开发规范、流程规范4). 数仓架构分层:一般分为操作数据层(ODS)、公共维度模型层(CDM)和应用数据层(ADS),其中公共维度模型层包括明细数据层(DWD和汇总数据层(DWS)公共维度模型层(CDM):存放明细事实数据、维表数据及公共指标汇总数据,其中明细事实数据、维表数据一般根据ODS层数据加工生成:公共指标汇总数据一般根据维表数据和明细事实数据加工生成。C
分类: 其他 发布时间: 11-27 09:27 阅读次数: 0

Netty_01_最简单的服务器与客户端之间的交互

Server:public class HelloServer { public static void main(String[] args) { // 服务器端启动器,将下面的组件进行启动 new ServerBootstrap() // 2.BossEventGroup, WorkerEventGroup // 检查IO事件 .group(new NioEventL
分类: 其他 发布时间: 11-27 09:27 阅读次数: 0

Netty为什么高性能

Netty作为异步事件驱动的网络,高性能之处主要来自于其I/O模型和线程处理模型,前者决定如何收发数据,后者决定如何处理数据文章目录异步非阻塞通信零拷贝零拷贝的实现原理基于buffer内存池无锁化的串行设计理念事件驱动模型Netty线程模型异步处理高效的并发编程高性能的序列化框架灵活的TCP参数配置能力异步非阻塞通信Netty的非阻塞I/O的实现关键是基于I/O复用模型,这里用Selector对象表示:Netty的IO线程NioEventLoop由于聚合了多路复用器Selector,可以同时并发处
分类: 其他 发布时间: 11-27 09:26 阅读次数: 0