- 博客(199)
- 收藏
- 关注
原创 每日面试题分享130:Redis的lua脚本有什么功能?
Redis的lua脚本支持用户在Redis服务器端执行自定义的lua脚本,实现原子操作和复杂逻辑。
2025-12-10 14:36:32
96
原创 每日面试题分享129:Synchronized和ReentrantLock有什么区别?
ReentrantLock是JUC类库提供的,支持设置超时时间,避免死锁,比较灵活,公平锁,支持中断,支持多条件判断。Synchronized是Java内置关键字,实现基本的同步机制,不支持超时,非公平,不可中断,不支持多条件。ReentrantLock需要手动解锁,Synchronized不需要。
2025-12-10 14:35:26
109
1
原创 每日面试题分享128:什么是服务降级?
服务降级是微服务架构和分布式系统常用的容错机制。在系统压力过大或某些服务故障时,暂时关闭或减少服务,保障核心服务正常运行,避免系统崩溃。提高系统的容错性和可用性。
2025-12-09 07:38:25
101
原创 每日面试题分享127:什么是AOP?
AOP 面向切面编程,一种编程范式,将横切关注点与业务逻辑解耦,将通用功能模块化,并将其应用到程序的各个地方,减少代码重复。
2025-12-09 07:35:55
72
原创 每日面试题分享125:你使用过哪些Java并发工具类?
AutomicInteger:提供一种线程安全的方式对int类型进行原子操作,比如增减、比较。CyclicBarrier:一个或多个线程达到一个共同的同步点,然后一起继续执行。BlockQueue:一个线程安全队列,支持阻塞操作,适合消费者-生产者模式。ConcurrentHashMap:一个线程安全且高效的哈希表。CountDownLatch:一个或多个线程等待其他线程操作。Semaphore:控制访问资源的线程数。
2025-12-08 10:53:06
74
原创 每日面试题分享124:消息队列设计成推消息还是拉消息?各自有缺点?
推消息就是消息队列主动将消息推送给消费者,适合实时性强,消费者能及时处理消息的场景。优点:实时性强缺点:消费速率过快,导致消费者过载 拉消息就是消费者主动从消息队列中拉取消息,适合消费能力有限,需要根据自身能力调控消费速率的场景。优点:避免过载缺点:消费速率慢,消息延迟
2025-12-03 10:05:33
338
原创 每日面试题分享123:在mysql中,如果select * from 一张有1000万行数据的表,会不会内存飙升?
mysql的select * from 不会一次性加载全部数据到内存中,而是通过逐批次处理的方式来控制内存使用,也就是说边查边发送给客户端。2、再查询一行,写入net_buffer直至满。1、查询一行,写入net_buffer。4、发送成功后清空net_buffer。3、调用网络接口将消息发送给客户端。5、继续重复上述操作。
2025-12-03 10:01:41
326
原创 每日面试题分享122:Redis中有哪些内存淘汰策略?
开启数据淘汰可细分为基于过期时间的淘汰策略和全部数据的淘汰策略。可分为两大类:开启数据淘汰和不开启数据淘汰。
2025-12-02 08:12:30
100
原创 每日面试题分享121:如何合理设计Java线程池线程数量?
IO密集型任务线程数=CPU核心数*2以及更多。Java线程池的线程数是基于执行任务的类型。任务可分为CPU密集型任务和IO密集型任务。CPU密集型任务线程数=CPU核心数+1。
2025-12-02 08:09:09
231
原创 每日面试题分享120:Spring AOP默认用的是什么动态代理,两者区别?
Spring Framework默认使用的是JDK动态代理,后续整合了CGLIB动态代理,没有接口时就使用CGLIB动态代理。CGLIB动态代理基于类继承实现,生成目标类的子类,实现目标方法代理,适合代理没有接口的类。Spring Boot 2.x版本默认使用的是CGLIB动态代理。JDK动态代理基于接口实现,动态实现代理类,适合代理有接口的类。
2025-12-01 08:16:45
84
原创 每日面试题分享118:线程池有哪些拒绝策略?
3、DiscardOldestPolicy:删除最早的任务,重新提交任务执行。4、DiscardPolicy:放弃当前任务,不做任何操作,也不抛出异常。2、CallerRunsPolicy:添加任务由即调用者执行。1、AbortPolicy:抛出异常。
2025-11-19 09:30:31
109
原创 每日面试题分享116:消息队列如何处理消息堆积?
消息堆积是指消息队列的生产速度远高于消费速度,从而导致消息在队列中堆积。2、对非关键消息进行延迟处理,只保留高优先级消息。1、对生产者进行限流,降低消息生产速度。1、增加消费者线程数量。
2025-11-19 09:23:56
84
原创 每日面试题分享114:说说线程池的工作原理
2、当线程数量到达核心线程数,就不再创建线程,将提交的任务堆积到工作队列。线程池参数:核心线程数、最大线程数、工作队列、拒绝策略、最大存活时间。4、当线程数到达最大线程并且工作队列已满,则会执行拒绝策略。3、当工作队列满,就会创建线程来处理任务,直到最大线程数。5、当线程的空闲时间超过最大存活时间就会销毁线程。线程池是一种池化技术,预先创建并管理一组线程。1、预先不会创建线程,有任务提交才创建线程。
2025-11-18 08:27:44
236
原创 每日面试题分享113:什么是Spring IOC?
Spring IOC是控制反转,通过依赖注入将对象的创建和管理交给容器,而不再由对象本身负责。
2025-11-18 08:17:35
396
原创 每日面试题分享112:说一下Netty的使用场景
2、许多框架的底层通信实现,比如RocketMQ、ES、Dubbo。1、通信系统开发,如聊天室、IM,处理高并发的实时消息传递。4、物联网即IOT场景下,处理设备和服务器之间的通信。3、游戏服务器开发中,处理大量并发游戏客户端连接。
2025-11-17 09:40:28
78
原创 每日面试题分享111:消息队列如何保证消息有序性?
一些消息队列比如RocketMQ和Kafka支持分区和顺序键,通过顺序键将消息发送到特定分区,在分区内部消息是有序的。一些消息队列比如RabbitMQ支持顺序队列,消息在队列中的存储顺序和投递顺序一致。使用单个生产者将消息发送到单个队列,再由单个消费者进行消费。1、单一生产者和单一消费者。
2025-11-17 09:37:07
88
原创 每日面试题分享110:Java中什么情况会导致死锁?如何避免?
2、占有和等待:一个线程在至少占有一个资源的情况下,等待获取其他资源。3、不可抢占:每个资源在被一个线程使用结束之前不能被其他线程抢占。4、循环等待:多个线程形成一种首尾相接的循环等待资源的关系。1、互斥条件:每个资源只能被一个线程占有。避免方法就是打破以上条件。4、设置超时等待时间。3、使用尝试锁机制。
2025-11-17 09:33:26
106
原创 每日面试题分享107:什么是Redis的事务?如何实现?
监视键:使用watch命令监视键,如果事务执行之前键被修改则不会执行exec命令。Redis事务就是保证多个命令执行的原子性,即多个命令都在同一个原子操作中执行。添加命令:向事务添加命令,这些命令不会立即执行,而是存储在队列中。开启事务:使用multi命令开启一个事务,之后所有命令都会排队。执行命令:使用exec命令执行所有命令,保证原子性。取消事务:使用discard命令放弃事务。
2025-11-13 08:04:02
398
原创 每日面试题分享106:编译运行和解释运行有什么区别?JVM使用什么方式?
编译运行:程序执行之前先用编译器将源代码编译成机器代码,然后在CPU上运行。解释运行:程序执行时通过解释器逐行翻译代码并运行。JVM使用二者相结合的方式。
2025-11-12 11:03:40
112
原创 每日面试题分享104:什么是MyBatis-Plus?它有什么作用?它和MyBatis有什么区别?
MyBatis-Plus是MyBatis的增强版,对MyBatis进行了二次封装,只增强不修改,提供了丰富的API、条件构造器、代码生成器、分页查询等功能,简化了基础CRUD操作,减少代码编写,提高开发效率。MyBatis是一个半ORM框架,它内部封装了JDBC,使用了它后,开发者无需关注加载驱动、创建连接、创建statement,只需要关注SQL编写,提高开发效率。
2025-11-12 10:59:38
95
原创 每日面试题分享103:什么是Java的CAS?
CAS是一种硬件级别的原子操作,用于比较内存中的某一个值是否为预期值,如果是则更新为新值,否则不作修改。
2025-11-11 08:57:40
101
原创 每日面试题分享102:什么是API网关?
API网关是客户端与后端服务之间的一层,作为所有客户端请求的统一入口,路由请求到正确的后端服务,并提供了认证、授权、负载均衡、限流、缓存和日志记录等功能。
2025-11-11 08:53:14
108
原创 每日面试题分享101:什么是物理地址?什么是逻辑地址?
逻辑地址是程序运行时所看到的位置,通过操作系统的地址转换机制映射到物理地址。物理地址是数据在物理内存中实际的存储位置。
2025-11-11 08:51:14
109
原创 每日面试题分享100:Redis和Memcached有什么区别?
Redis支持持久化,将数据保存在磁盘上,使用AOF和RDB实现持久化。Memcached没有内置分配,需要在客户端代码中实现分布式架构。Memcached仅支持存储简单的键值对。Redis支持lua脚本和发布订阅等功能。Redis内置主从复制和集群分片。Memcached不支持持久化。Redis支持多种数据结构。Memcached特性较少。
2025-11-10 09:25:35
121
原创 每日面试题分享99:什么是Java内存模型(JMM)?
Java内存模型是Java虚拟机JVM定义的一种规范,用于描述多线程程序中变量如何在内存中存储和传递的规则,规范了线程何时从主内存读取数据,何时将数据写回主内存。
2025-11-10 09:21:23
237
原创 每日面试题分享97:进程和线程的区别?
线程:是cpu调度的基本单位,一个进程包含多个线程,线程共享进程的内存空间和资源,但是每个线程都有独立的栈和寄存器。进程:是资源分配的基本单位,每个进程都有自己的内存空间,相当于一个正在运行的程序实例。
2025-11-06 08:18:19
115
原创 每日面试题分享96:什么是Java中的原子性、可见性和有序性?
可见性:一个线程修改了共享变量,这个修改可以立即被另一个线程看见。原子性:一个操作或一系列操作要么全部执行成功,要么全部不执行。有序性:程序的执行顺序和代码顺序一致。
2025-11-06 08:12:34
79
原创 每日面试题分享95:Dubbo和SpringCloud Gateway有什么区别?
SpringCloud Gateway是一个API网管,用于处理外部客户端请求并路由到后端服务,适用于微服务架构的入口,具有请求路由、负载均衡、协议转换、流量控制等功能。Dubbo是一个RPC(远程过程调用)框架,主要用于服务之间的通信,具有负载均衡、服务发现、注册、治理等功能。
2025-11-06 08:09:19
111
原创 SpringCloud+Netty集群即时通讯项目
本项目是基于SpringCloud和Netty构建的高可用IM系统,支持千万级用户规模。核心功能包括即时通讯、多媒体消息处理和离线消息同步。采用微服务架构,整合Zookeeper、Redis、RabbitMQ等中间件,实现服务注册、消息广播和动态扩缩容。技术栈包含SpringBoot3、Netty4、MySQL8等主流框架,通过Nginx负载均衡和Docker容器化部署。系统分为认证、主业务、文件和聊天服务等模块,支持视频处理、地理位置等扩展功能。
2025-11-05 18:19:19
1714
1
原创 每日面试题分享93:Redis的hash是什么?
Redis的hash是一种类似于哈希表的数据结构,是键置对集合,可以将多个字段和值存储在同一个键中,便于管理关联数据。
2025-11-05 10:09:21
355
原创 每日面试题分享92:Java中的final关键字能否保证变量的可见性?
一般来说可见性是指一个线程修改了共享变量后,另一个线程能够得知修改。final不能保证变量的可见性,volatile可以。
2025-11-05 10:06:51
320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅