自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Nacos面试题 (一)

如果Nacos服务器在一定时间内(默认90s)没有收到某个服务实例的心跳消息,那么Nacos会认为该服务实例已经下线,从而在服务列表中移除该服务实例。以上就是Nacos配置管理的基本实现方式,通过这种方式,Nacos可以实现动态的、实时的配置管理,大大提高了配置管理的灵活性和效率。此外,Nacos还支持数据的备份和恢复,可以定期将数据库中的数据备份到磁盘,也可以从磁盘中恢复数据,提高数据的安全性。以上就是Nacos支持的服务发现和服务注册的方式,可以根据实际应用场景和需求选择合适的方式。

2024-03-06 10:46:55 1392 1

原创 Redis面试题(二)实战

以上命令中,bikes是存储车辆位置信息的GEO数据结构,location_longitude和location_latitude是车辆的经纬度坐标,bike_id是车辆的ID,user_longitude和user_latitude是用户的经纬度坐标,radius是搜索半径。HyperLogLog是一种用于统计唯一值的数量算法,它可以使用固定且很小的内存空间来统计唯一值的数量,虽然结果可能会有一定的误差,但在大数据量的场景下,这个误差通常可以接受。哈希表则用于支持快速的元素查找,即通过成员查找元素。

2024-02-26 16:42:43 1072 1

原创 高并发场景面试题(1)

读写分离是指将数据库的读操作和写操作分开,分别在不同的数据库服务器上执行。读写分离可以提高系统的并发能力,因为读操作和写操作不会互相阻塞,可以同时进行。缓存穿透是指查询一个不存在的数据,由于缓存中也不存在,所以每次都要去数据库查询,导致数据库压力增大,防止缓存穿透的方法包括使用布隆过滤器,或者将查询的结果(即使是空)也缓存起来。消息队列是一种应用程序间通信方法,可以用来异步处理任务,提高系统的并发能力。在高并发系统中,消息队列可以用来削峰填谷,平滑系统负载。

2024-02-21 15:30:32 351

原创 Mysql相关(1)

B+树的所有叶子结点都位于同一层,通过链表相连,非叶子结点保存了自节点的索引值和指向自节点的指针,叶子结点保存了所有的数据记录。当进行查找操作时,从根结点开始,通过比较索引值和查找值的大小,选择合适的指针进行下一步的查找,直到查到叶子结点。undo log是用来记录数据修改前的状态的,主要用于在事务失败或者回滚时恢复数据。共享锁允许一个事务去读取一行数据,排他锁允许一个事务去修改一行数据,除此之外,Mysql还提供了多粒锁定机制,包括表锁和行锁,以及间隙锁,Next-Key Lock等。

2024-02-21 11:45:12 381

原创 数据库面试题(1)

数据库事务是一个或多个sql语句组成的一个逻辑工作单元。原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行一致性:在事务开始和完成时,数据必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。隔离性:数据库系统提供一定的隔离机制,保证事务在不受外部兵法操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的。

2024-02-20 15:59:53 321

原创 Java设计模式面试题(1)

设计模式是软件开发中经常出现的问题的通用、可重用的解决方案。它不是可以直接转化为代码的完成设计,而是描述在各种不同情况下如何解决问题的模板。我熟悉的设计模式包括单例模式、工厂模式、观察者模式、装饰器模式、策略模式。依赖倒置原则是面向对象的五个基本原则之一,它要求依赖于抽象而不是依赖于具体。在设计模式中,例如工厂模式、策略模式等都是用了依赖倒置原则。适配器模式是一种结构型设计模式,它通过把一个类的接口变换成客户端锁期待的另一种接口,可以帮助我们使得原本由于接口不兼容而不能一起工作的类能够一起工作。

2024-02-19 11:19:30 940 1

原创 Redis面试题(1)

Redis的事物提供了一个将多个命令请求打包,然后一次性、顺序性地执行多个命令的机制,并且在事物执行过程中,服务器不会中断事物而去拆入其他客户端请求的命令。内存淘汰策略可以通过修改配置文件,设置maxmemory-policy参数,如volatile-lru、allkeys-lru、volatile-random、allkeys-random、volatile-ttl等。如果CPU成为瓶颈,可以考虑使用Redis Cluster进行分片,间数据分散到多个Redis实例中,使得多个CPU核心的到利用。

2024-02-18 11:01:36 325

原创 解决高QPS场景的方法

这种方式可以有效的提高系统的并发处理能力,但需要注意的是,随着服务器的数量增加,协调各个服务器的工作可能会变得复杂。缓存是一种提高数据读取性能的技术,它将常用的数据或计算结果存储在内存中,当有相同的请求到来时,直接从缓存中获取结果,避免了对数据库的查询。这种方式的优点是可以快速提升系统性能,但缺点是硬件升级的空间有限,且成本较高。对于静态资源,可以使用内容分发网络(CDN)进行分发,将静态资源缓存到离用户最近的节点上,用户访问时直接从节点获取资源,减轻了源服务器的压力,同时也提高了用户的访问速度。

2024-02-18 10:17:56 619

原创 消息队列面试题(1)

消息队列是一种应用程序间通信方法,它们通过在应用程序之间发送消息来通信。在微服务架构中,消息队列用于解耦微服务,提高系统的可扩展性和容错性。发布/订阅模型:在发布/订阅模型中,消息生产者(发布者)将消息发布到一个频道或主题,消息消费者(订阅者)订阅这个频道或主题,从而接收到发布者发布的所有消息。发布者和订阅者之间没有直接的联系,它们通过频道或主题进行通信。这种模型允许一个消息有多个消费者,适用于一对多的场景。点对点模型:在点对点模型中,消息生产者将消息发送到一个队列,消息消费者从队列中获取消息进行处理。

2024-01-24 16:56:31 372 1

原创 Java微服务面试题(1)

微服务是一种软件开发技术,它将一个大型的单体应用程序拆分为多个小的、独立的服务,这些服务个字运行在自己的进程中,服务之间通过网络进行通信(通常是HTTP API)。服务熔断时一种自我保护机制,当一个服务的错误率超过一定阈值时,为了防止错误进一步扩散,会暂时停止对该服务的调用,这就像电路中的熔断一样,当电流过大时,熔断器会断开电路,防止设备损坏。2、服务监控:通过手机和 分析服务的运行数据(如CPU、内存使用率、网络流量、错误率等),以了解服务的运行状态,并在出现问题时及时发现和处理。

2023-11-09 17:10:18 20 1

原创 Java面试题-分布式相关(2)

在我的项目中,使用基于Redis的会话管理。当用户登录成功后,服务器生成一个会话ID,并将会话信息存储在Redis中,然后将会话ID发送给客户端。这种方式的性能比基于数据库的方式要好,但是需要保证缓存的高可用,否则如果缓存服务出现问题,会影响会话管理。1、基于数据库的会话管理:将会话信息存储在数据库中,所有的服务器都可以访问这个数据库来获取会话信息。例如,我们可以创建仪表板来显示系统的CPU使用率、内存使用量等关键指标,也可以设置告警规则,当某个指标超过预设的阈值时,发送告警通知。

2023-11-07 15:20:27 28

原创 Java面试题-分布式相关(1)

例如,如果业务对数据一致性要求很高,可能需要选择CP,牺牲一定的可用性,如果业务对系统的可用性要求很高,那么可能选择AP,允许数据的暂时不一致。1、使用服务注册中心:如Eureka、ZooKeeper、Consul、Nacos等,服务实例在启动后,将自己的网络地址注册到服务注册中心,客户端或服务在需要调用其他服务时,先从服务注册中心获取服务地址,然后进行调用。1、基于数据库的分布式锁:通过在数据库中创建一个唯一的表或记录,利用数据库的唯一性约束,实现只有一个节点能够插入成功,从而获得锁。

2023-11-01 18:40:53 43

原创 Java面试题(2)

当一个对象需要与另一个对象交互时,IOC容器会自动将所需的依赖注入到该对象中,而不是由对象自己去创建或查找以来。死锁止的是两个或多个线程在执行过程中,因争夺资源造成的一种互相等待的现象,若无外力干预,他们无法推行下去。3、观察者模式:观察者模式是一种行为型模式,定义了对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。2、Mybatis:Mybatis是一个半自动的ORM框架,提供了一种方式,可以使开发者自定义SQL,并将SQL的执行结果映射到Java对象。

2023-10-31 16:07:13 31 1

原创 JAVA面试题(1)

2、NIO:Java NIO是 Java 1.4以后提供的一套新的输入/输出处理模型,基于缓冲区(Buffer)和通道(Channel)模型实现,提供了非阻塞和阻塞两种模式,Java NIO中的核心类有:Buffer、Channel、Selector等。1、IO:Java IO是早期提供的一套输入/输出模型,基于流模型实现,提供了丰富的数据操作接口。1、合理配置线程池大小:线程池 大小的配置取决于你的具体任务,如果任务时CPU密集型的,需要大量计算,而没有阻塞,CPU核心数的1-2倍就是最佳的线程池大小。

2023-10-30 17:32:33 30

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除