自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式高频面试题

最终一致性是指:在分布式系统中,数据更新后不要求立即在所有节点上保持一致,而是允许一段时间的“不一致窗口”,但保证经过一段时间后,所有副本最终会达到一致状态。它是 BASE 理论中 E(Eventually Consistent)的核心。1. 旁路缓存(Cache-Aside)模式先更新数据库,再删除缓存”策略,保证最终一致性。2. 异步复制机制在 Redis 主从架构中,主节点处理完写请求后会立即响应客户端,并异步转发命令给从节点。但在主从同步完成前,数据存在短暂的不一致窗口。

2026-06-05 21:24:06 279

原创 Java并发编程面试题

CAS 是乐观锁思想的一种典型实现。它假设并发冲突很少发生,因此在操作时不加锁,而是在提交更新时检查是否有其他线程修改过数据。如果更新失败,线程通常会通过自旋(循环重试)的方式再次尝试,直到成功为止。CAS是一种原子操作,包含三个操作数:内存位置 V、期望值 A、新值 B。只有当 V 的值等于 A 时,才将 V 更新为 B,否则什么都不做。整个过程是原子的。问题ABA 问题:值从 A 变成 B 又变回 A,CAS 会认为没有变化。解决方案:为变量添加一个版本号或时间戳。循环时间长开销大。

2026-06-02 17:44:44 218

原创 Java集合高频面试题

Fail-Fast`:在遍历集合时,如果集合结构被修改(如 add/remove),会抛出 ConcurrentModificationException。ArrayList、HashMap 均属于此类。`Fail-Safe`:遍历时基于集合的快照,不会抛出异常。ConcurrentHashMap、CopyOnWriteArrayList 属于此类。怎么避免Fail-Fast:使用迭代器的 remove 方法,或使用removeIf。

2026-06-02 11:09:17 236

原创 JVM高频面试题

类加载器:负责将.class文件加载到 JVM 内存中,并生成Class对象。双亲委派模型:当一个类加载器收到加载请求,首先委托父加载器去加载,只有父加载器无法加载时,自己才尝试加载。作用:避免类的重复加载,防止核心 API 被篡改(如用户自定义不会被加载)。打破双亲委派模型主要有两种方式自定义ClassLoader重写loadClass方法:不先委派父类,自己优先加载。如Tomcat 的会优先加载 Web 应用和lib下的类,失败后才委托父类加载器,从而实现应用隔离和热部署。线程上下文类加载器。

2026-05-31 17:08:04 233

原创 Spring Boot 多线程并发入门教程:ThreadPoolTaskExecutor + CompletableFuture

Spring Boot 多线程并发入门教程:ThreadPoolTaskExecutor + CompletableFuture

2026-05-29 16:18:34 287

原创 Java-io流

使用平台默认编码,易出现乱码。

2026-05-28 20:43:08 209

原创 高频算法题(JAVA)

已知斐波那契数列定义为 f(1) = 1, f(2) = 1, f(n) = f(n-1) + f(n-2) (n ≥ 3)。现给定一个正整数 n,求该数列前 n 项的和 S(n) = f(1) + f(2) + …:一个数等于它的因子之和(不包括自身),如 6 = 1+2+3。:输出第 n 项(n 从 1 开始,1, 1, 2, 3, 5…)f(n) = f(n-2)+f(n-1)是指在大于 1 的自然数中,除了 1 和它自身以外,不再有其他因数的数。:统计字母、数字、空格、其他字符的个数。

2026-05-18 15:20:47 172

原创 网络编程高频面试题

SYN_SENTSYN_RCVD(假设客户端主动发起关闭)FIN_WAIT_1CLOSE_WAITFIN_WAIT_2LAST_ACKTIME_WAIT2MSL。

2026-05-16 20:34:09 317

原创 Kafka面试题

与 Leader 保持同步的副本集合。同步条件:副本在过去内未明显落后。为什么需要 ISR?Leader 宕机时,只在 ISR 中选举新 Leader,保证数据不丢失。相比等待全部副本同步,ISR 机制允许部分副本暂时落后而不阻塞写入,平衡了可靠性与可用性。Rebalance:消费者组内重新分配分区的协调机制。消费者组内有成员加入或退出(含心跳超时、超时未消费被踢)订阅的 Topic 分区数增加对性能的影响:旧版(急切重平衡):所有消费者停止消费,重新分配,易造成消息积压。

2026-04-28 20:22:16 400

原创 Mybatis高频面试题

等无法使用占位符的场景才用。,只有当传入的是表名、列名、是 MyBatis 的。,并能支持延迟加载。

2026-04-26 16:04:27 356

原创 redis高频面试题

缓存穿透(Cache Penetration):指的是查询一个在缓存中不存在、在数据库中也不存在的数据,请求直接打到数据库。解决方案缓存空对象(最常用):当数据库查询结果为空时,也将这个空结果(如null或特定标记"NULL")写入 Redis,并设置一个较短的过期时间(如 2~5 分钟)。布隆过滤器(Bloom Filter)(大数据量推荐):在请求到达缓存之前,先经过布隆过滤器。如果布隆过滤器判断不存在:直接拦截请求,绝不查询数据库。如果布隆过滤器判断存在。

2026-04-23 21:39:29 353

原创 【MyBatis高频面试题】

这些题目覆盖了 MyBatis 的核心原理和常见面试考点。建议在回答时结合实际使用经验,适当举例。如果需要某个题目的更深入解析,可以告诉我。延迟加载(Lazy Loading)指在需要的时候才加载关联数据(如一对一、一对多的从属对象)。:一级缓存可能引发脏读(如果其他会话修改了数据),二级缓存需谨慎配置,保证查询条件完全一致。:生产环境使用 PageHelper,避免手写分页逻辑,且支持多种数据库。:延迟加载需要会话保持开启状态,否则会抛出。为 Mapper 接口生成代理对象。MyBatis 使用。

2026-04-19 19:55:15 367

原创 Spring高频面试题

答案是一种设计原则,它将对象的创建、组装和管理控制权从应用程序代码内部转移到外部容器(如 Spring IoC 容器)。传统方式下,主动通过new创建依赖对象;而 IoC 下,被动接收外部注入的依赖,控制流发生了“反转”。是IoC 原则的一种具体实现方式。它描述的是:组件之间依赖关系的建立,不是在组件内部硬编码,而是通过**构造器、Setter 方法或字段注入等方式,由外部容器将依赖对象“注入”到组件中。三种常见注入形式构造器注入(推荐,保证不可变、强制依赖)Setter 注入(可选依赖)字段注入。

2026-04-19 19:41:58 250

原创 mysql面试题

面试官想听:理解隐藏字段、undo log版本链、Read View,能说清楚RR和RC的区别。回答MVCC 是多版本并发控制的缩写,主要用在 InnoDB 等存储引擎中,目的是实现读不阻塞写、写不阻塞读,提升并发性能。它的核心思想是:每次修改数据时不覆盖旧数据,而是生成一个新版本,读操作根据事务的启动时间或 Read View 选择可见的版本。面试官想听:主键索引就是聚簇索引,二级索引是非聚簇索引,回表的概念和代价。回答聚簇索引(主键索引):叶子节点存储整行数据。

2026-04-13 21:14:33 622

原创 java基础面试题

Java内存模型(JMM)是JVM定义的一套抽象规则,而非真实的物理内存。它屏蔽了底层硬件(如CPU缓存)的差异,旨在解决多线程并发下的可见性、原子性、有序性问题。

2026-04-13 21:11:01 485

原创 手写Redis分布式锁

手写Redis分布式锁

2026-01-12 20:54:23 289

原创 Redis常用命令及使用案例

Redis常用命令及使用案例

2025-11-16 08:56:17 802

原创 Linux安装Redis

这是一层安全保护,默认情况下是yes,外部网络无法访问当前redis,通常我们会在配置好bind的IP地址及访问密码(后面的requirepass参数)之后,会将它重新设置为no。本文以7.0.15为例,7.0.15版本的下载链接:https://download.redis.io/releases/redis-7.0.15.tar.gz。127.0.0.1是本地回环地址,表示Redis默认仅接受本机连接,外部设备无法直接访问 (生产环境肯定要写你应用服务器的地址)4)打开配置密码的注释,并更改密码。

2025-10-18 17:41:47 215

原创 Nacos注册中心

​ Nacos(Naming and Configuration Service)是由阿里巴巴开源的一款云原生应用配套工具,主要应用于服务发现、配置管理、服务管理等场景,旨在简化微服务架构中的服务治理工作。Nacos特别适合构建和管理现代云原生应用的微服务架构。

2025-09-21 17:13:25 335

原创 OpenFeign

OpenFeign 是⼀个声明式远程调⽤客户端;1.1.2.

2025-08-10 16:47:57 501

原创 kafka本地伪分布式安装

在https://mirrors.aliyun.com/apache/kafka/(阿里云镜像)下载需要的kafka。2)新增三个配置文件 server_0.properties、server_1.properties 、server_2.properties。2)上传kafka_2.13-3.7.2.tgz到/opt/kafka。2)启动zookeeper。1)进入到配置文件目录中。1)进入到bin目录。

2025-06-07 18:01:47 750 2

原创 nginx原理

Master进程首先启动,读取配置文件,然后根据配置文件创建指定数量的worker进程。Master进程本身不直接处理客户端的请求,它主要负责管理worker进程,包括创建、终止和监控worker进程。在Nginx中,可以有多个worker进程并行运行,每个worker进程独立处理请求。在Nginx的架构中,master和worker是两种不同类型的进程,它们共同协作以提供高性能的Web服务.2)每个woker是独立的进程,其中的一个woker出现问题不会影响其他work,不会造成服务中断。

2025-05-26 16:20:21 214

原创 nginx实现负载均衡和动静分离

通过配置,可以实现访问http://目标ip:9002/www/a.html时去访问服务器的/data/www/a.html文件。静态资源不再访问tomcat,而是直接访问静态服务器,可以缓解tomcat服务器的压力。http://127.0.0.1:8080或http://124.0.0.1:8081。如下图所示,访问http://localhost:80会将请求转发到。

2025-05-26 16:14:02 157

原创 nginx常用命令

4、重新加载nginx(实现不重启加载配置文件的效果)首先进入到nginx目录中。5、配置文件是否有语法错误。1、查看nginx版本号。

2025-05-24 21:48:40 233

原创 nginx反向代理实例

(2)安装好tomcat,监听8080端口。由此,实现了nginx的反向代理。

2025-05-24 21:40:30 288

原创 centos和ubutun 安装nginx

1、下载安装nginx需要的依赖2、在官网找到需要的nginx安装包官网地址:https://nginx.org/en/download.html,以nginx-1.12.2为例,下载地址为https://nginx.org/download/nginx-1.12.2.tar.gz3、安装nginx4、启动nginx。

2025-05-24 18:00:25 307

原创 定时任务调度

任务调度:是指系统在某个时间执行的特定命令或者程序1)at命令是一次性定时任务,at的守护进程atd会以后台模式运行,检查作业队列。2)atd守护进程默认是60分钟检查一次作业队列,有任务与当前时间匹配,则运行此作业。3)在使用at命令时,确保atd进程启动。可以通过下面命令来确定是否运行。

2025-03-30 17:30:20 341

原创 Linux 开机、重启和用户登录

【代码】Linux 开机、重启和用户登录。

2025-03-30 14:29:28 341

原创 vi和vim

Linux系统会内置vi文本编辑器Vim具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

2025-03-30 14:17:59 342

原创 Linux用户管理、组管理和文件管理

​ Linux系统是一个多用户多任务的操作系统,任何一个想要使用系统资源的用户,都必须向系统管理员申请一个账号,然后以这个账号的身份进入系统。​ 注意:以下操作均需要用root用户进行操作。1、添加用户。

2025-03-30 11:16:14 409

原创 ububtu系统

1、基本介绍apt是一款安装包管理工具,在Ubuntu下,我们可以通过apt进行软件的安装、删除,类似Windows中的软件管理工具。2、apt常用命令sudo apt-get update 更新源sudo apt-get install package 安装包sudo apt-get remove package 删除包sudo apt-cache show package 获取包的相关信息,例如说明、大小、版本等sudo apt-get source package 下载该包的源代码。

2025-03-23 10:01:54 312

原创 linux安装tomcat

在windows中下载需要的tomcat: https://tomcat.apache.org/3)通过mobaXterm(开源免费)上传tomcat到/opt/tomcat。在浏览器访问:ip:8080,如果进入页面则访问成功。1)下载tomcat。8)启动tomcat。

2025-02-22 20:28:07 577

原创 linux安装JDK

在windows中访问https://www.oracle.com/下载需要的jdk。3)通过mobaXterm(开源免费)上传jdk到/opt/jdk。10)让新的配置文件生效。8)编辑环境变量的文件。

2025-02-22 19:56:36 331

原创 Linux RPM与YUM

Linux RPM与YUM

2024-07-06 17:54:28 242 1

原创 Linux-进程管理

LINUX-进程管理

2024-07-06 15:21:53 564

原创 Java如何判断两个浮点数是否相等?

如何判断两个浮点数是否相等?

2022-08-27 15:38:13 3739 1

空空如也

空空如也

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

TA关注的人

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