面试题(二)

置顶面试题(二)

框架封装

框架封装

本文介绍Maven依赖管理:创建父pom,通过dependencyManagement统一管理Spring Boot、Spring Cloud及Alibaba版本,并继承父pom实现依赖复用;同时提供公共代码,如结果码接口和枚举类,用于统一操作结果返回。

分布式事务

分布式事务

本文介绍了微服务核心组件:服务发现(Nacos原理)、客户端负载均衡策略、OpenFeign声明式调用及其动态代理实现。重点阐述了分布式事务的多种方案:2PC/XA的性能问题、TCC的编码补偿、AT模式利用undo_log自动补偿、Saga长事务补偿,并提及重试幂等方案。强调各方案优缺点及适用场景,需根据业务权衡。

微服务调用

微服务调用

本文介绍了基于 Nacos 的服务发现与调用方案,解决硬编码 IP:端口 带来的配置困难和地址变化问题。通过注册中心动态获取服务地址,实现提供方与调用方解耦;结合 Spring Cloud LoadBalancer 实现负载均衡,并讲解 OpenFeign 声明式调用的核心原理:动态代理与反射。

微服务入门

微服务入门

本文回顾了Java后端技术栈及企业级架构从单体、SOA到微服务、云原生、AI原生的演进,指出业务增长驱动分布式需求。介绍了微服务与分布式系统关系、CAP定理和BASE理论,并重点讲解Spring Cloud作为微服务工具集,涵盖Nacos、Sentinel、Gateway等组件,以及服务分层与独立数据库的设计要点。

电商SPU与SKU详解

电商SPU与SKU详解

电商 SPU 与 SKU 详解 一、概念定义 1. SPU(Standard Product Unit,标准产品单位) SPU 是商品的"属性集合",代表"是什么商品",是商品的最小聚合单位。 它是一组可复用、易检索的标准化信息的集合,描述的是商品的核心属性(如品牌、型号、名称、类目),但不包含具体

nacos面试题

nacos面试题

nacos的临时实例和持久化实例的区别 临时实例:注册时向nacos发起注册,并隔一段时间就发送健康检测,健康检测内容:服务名+ip+端口+更新内存中的lastUpdatedTime(nacos就是根据这个时间隔了多久还没有更新来判断是否存活的),因为状态是由实例自己传来的,nacos不能保证其真实

微服务概述

微服务概述

本文梳理了从单体架构、SOA到微服务的演进历程,指出微服务通过去中心化治理、细粒度拆分和基础设施下沉解决传统架构痛点。同时介绍了分布式系统核心理论(CAP定理、BASE理论)及服务治理概念,强调微服务落地需要组织、流程与文化的同步变革。

33-多线程使用

33-多线程使用

本文介绍了多线程的概念、应用场景(防止主线程阻塞、提高CPU利用率),以及三种实现方式:继承Thread、实现Runnable、使用线程池。重点讲解了ThreadPoolExecutor的核心参数(核心/最大线程数、队列、拒绝策略)和工作原理(有界/无界队列、同步移交),并给出了Spring MVC中配置和使用线程池的方法。

32过滤器和拦截器的区别

32过滤器和拦截器的区别

过滤器和拦截器都能在请求前后执行逻辑,但本质不同:过滤器基于Servlet规范,工作在容器层,通过责任链模式执行,不依赖Spring;拦截器基于Spring MVC框架,通过动态代理实现,依赖IoC容器,可访问Controller方法及注解。请求先经过过滤器链,再到DispatcherServlet,最后进入拦截器链。过滤器适合通用处理(如编码、静态资源),拦截器适合业务相关操作(如权限校验、日志记录)。

31AOP使用场景学习笔记

31AOP使用场景学习笔记

AOP是一种编程范式,通过将日志、事务等横切关注点模块化为“切面”,实现与业务逻辑的分离。核心概念包括切面、连接点、切入点、通知和织入。Spring AOP默认使用JDK动态代理或CGLIB代理实现运行时织入,支持前置、后置、异常、最终和环绕通知。常见应用场景有日志记录和事务管理,有效减少代码重复与耦合。

springboot+websocket实时聊天(二)

springboot+websocket实时聊天(二)

本文介绍了Spring Boot + WebSocket实时聊天系统的前端实现。核心包括:WebSocket连接管理工具类(支持单例模式、自动重连、心跳检测)和聊天窗口组件。通过WebSocket实现实时消息收发,采用指数退避重连策略,30秒心跳保活,支持文本和图片消息展示。

springboot+websocket实时聊天(一)

springboot+websocket实时聊天(一)

本文介绍基于Spring Boot WebSocket实现实时聊天功能的通用模板,涵盖功能概述、技术选型、数据库设计及后端实现。支持在线用户收发文字/图片消息,消息异步持久化至MySQL,离线用户通过REST拉取历史,按业务维度(如订单、群组)管理会话。推荐使用MQ异步写入、对象存储图片,并提供无MQ变体方案。

30-3阶内容-1.8-雪花算法

30-3阶内容-1.8-雪花算法

雪花算法是Twitter开源的分布式ID生成算法,生成64位全局唯一、有序、高性能的ID。其结构包括1位符号位、41位毫秒时间戳、5位机房ID、5位机器ID和12位序列号,支持每毫秒每机生成4096个ID。相比数据库自增和UUID,雪花算法存储小、有序且性能高。核心问题为时钟回拨可能导致ID重复,解决方法包括等待、更换workId或调用其他服务。

27-3阶内容-2.7.1-xxljob

27-3阶内容-2.7.1-xxljob

本文介绍了定时任务的概念、使用场景,以及Spring Boot中通过@Scheduled注解实现定时任务的三种方式(fixedRate、initialDelay、cron)。重点引入XXL-JOB分布式任务调度平台,它将调度与执行解耦,解决了分布式环境下@Scheduled可能导致的重复执行问题,并概述了其架构(调度中心与执行器)及集成配置方法。

26-3阶内容-2.3.1-Minio

26-3阶内容-2.3.1-Minio

本文介绍了Minio,一个基于Apache License 2.0、兼容AWS S3接口的轻量级对象存储服务,适合存储图片、视频等非结构化数据。核心概念包括Bucket(存储桶)、Object(对象)和Endpoint。安装方式提供了Docker和Windows两种方法,并给出了详细的命令和环境配置步骤。文章旨在帮助读者理解Minio并掌握其安装与基本使用。

25-3阶内容-2.2.1.4-MQ消息不丢失与幂等性

25-3阶内容-2.2.1.4-MQ消息不丢失与幂等性

本文介绍MQ消息丢失的三种情况:生产端(网络或业务失败)、Broker端(异步刷盘或主从复制丢数据)、消费端(自动ACK后业务失败),并给出对应解决方案:生产端同步回滚或异步补偿,Broker端同步刷盘或主从同步,消费端手动ACK并抛出异常。同时指出手动ACK可能引发重复投递,需通过幂等性设计保证业务仅处理一次。

24-3阶内容-9.9.9-邮件发送

24-3阶内容-9.9.9-邮件发送

本文介绍了SpringBoot集成邮件发送的实现步骤:添加spring-boot-starter-mail依赖,配置QQ邮箱的SMTP参数(host、port、username、password等),并开启邮箱的POP3/SMTP服务获取授权码;通过JavaMailSender实现简单文本邮件的发送,示例代码展示了基本用法。核心观点是正确配置邮箱授权码和SMTP参数即可快速实现邮件发送功能。

23-3阶内容-9.9.9-短信

23-3阶内容-9.9.9-短信

本文介绍了云短信接入的完整流程:先申请企业资质、添加签名和模板,再创建访问密钥;随后通过SDK进行Demo测试;最后在代码中添加Maven依赖,编写发送短信的Java代码,配置认证信息和请求参数,实现短信发送功能。

21-3阶内容-2.2.1.1-MQ-SpringBoot集成(编写生产者)

21-3阶内容-2.2.1.1-MQ-SpringBoot集成(编写生产者)

本文介绍了SpringBoot集成RocketMQ实现消息生产与消费:生产者支持同步(阻塞等待确认)、异步(回调处理结果)、单向(不关心结果)三种发送方式;消费者分为拉模式和推模式。集成步骤包括添加依赖、配置命名服务器和生产者组,并通过RocketMQTemplate编写生产者Service及消费者监听器,支持自动ACK和手动ACK。

19-3阶内容-2.1.2-nginx

19-3阶内容-2.1.2-nginx

本文回顾了Docker基础,重点讲解Nginx:高性能HTTP和反向代理服务器,具有内存少、并发能力强(支持5万并发)的特点。Nginx通过反向代理和负载均衡解决单体系统高并发问题,是现代应用架构中前后端转发、负载均衡、跨域、缓存等功能的必备工具。文章还介绍了常用命令和配置要点。

18-3阶内容-2.1.1-docker

18-3阶内容-2.1.1-docker

Docker是一种轻量级容器化部署工具,相比VM省去了完整操作系统,共享系统内核,实现隔离、快速部署。它由主机、客户端和镜像市场组成,可将应用打包成镜像一键部署,解决中间件安装重复繁琐问题。文章还详细介绍了Docker的安装步骤和常用命令。

17-3阶内容-1.7.5-布隆过滤器

17-3阶内容-1.7.5-布隆过滤器

本文介绍了Redis的核心应用场景、持久化方式、高可用架构及哨兵原理,重点分析了缓存击穿、雪崩与穿透的成因及解决方案:通过同步锁、随机过期时间、多级缓存、熔断降级等应对;针对缓存穿透,提出布隆过滤器(快速但可能误判)与空值缓存策略,并给出了Redisson集成示例。

11-3阶内容-1.3-2-mybatisplus查询构造器

11-3阶内容-1.3-2-mybatisplus查询构造器

# 本节要点 - map.xml查询编写 - 熟练运用两种查询器 - 多数据源配置 - 认识Druid连接池 # 一、Mybatis plus的查询 写mapper.xml查询(范例),通过名字去查询 ## 1、编写 map.xml \`\`\` id,username,password,real_name,dept_...

09-3阶内容-1.5.3-Spring Boot集成redis-2

09-3阶内容-1.5.3-Spring Boot集成redis-2

redis常用的几大类数据结构 1、String ,token存储、分布式锁、计数 、json存储 2、Hash,购物车。。。 3、List 4、Set 集合,不重复,抽奖、朋友圈... ,交并集 5、Zset score ,做排行榜... key \*condition scan count 1000 set key...

08-3阶内容-1.5.3-Spring Boot集成redis-1

08-3阶内容-1.5.3-Spring Boot集成redis-1

本文介绍Spring Boot集成Redis的完整流程:创建项目、添加依赖(spring-boot-starter-data-redis及连接池)、配置Lettuce连接参数、通过配置类设置Key/Value序列化(使用RedisSerializer.string和json)以确保数据可读,最后在Controller中测试五大数据类型API。

07-3阶内容-1.5.1-linux常用命令

07-3阶内容-1.5.1-linux常用命令

# 本节要点 - 了解操作系统 - 了解Linux - 认识linux文件系统 - 理解linux和Window系统文件差异 - 各类命令 # 一、什么是操作系统 1、操作系统(OS),是管理计算机硬件和软件的资源的系统。 2、操作系统是人与计算机交互的接口 3、操作系统核心功能包括:管理CPU、内存(RAM)、存储设...

06-3阶内容-1.5.2-redis介绍

06-3阶内容-1.5.2-redis介绍

# 本节要点 - 认识什么是Redis - 为什么要用Redis - 理解非结构化数据 - window和linux下Redis安装和配置 # 一、什么是Redis https://redis.io/ 内存的一个数据库 所有的IO都是需要消耗时间的! !\[image-20260130095358889\](https...

02-3阶内容-1.5.1-阿里云测试使用

02-3阶内容-1.5.1-阿里云测试使用

### 课堂目标 1. 了解什么是服务器 2. 如何拥有一台服务器 3. 阿里云账号注册 4. 阿里云ECS使用 # 本节要点 - 阿里云账号注册与使用 - ECS服务器申请与防火墙管理 1、什么是服务器 游戏服务器、web应用服务器、图片服务器 --\>7x24小时不间断运行 服务器的扩展性强:有很多插槽、ECC内存...

01-Windows下Ubuntu安装

01-Windows下Ubuntu安装

本文详细介绍了在Windows系统下通过VMware虚拟机安装Ubuntu 24.04 LTS的完整步骤:首先下载并安装VMware Workstation Player,然后下载Ubuntu ISO镜像,最后在VMware中创建虚拟机并完成Ubuntu安装。重点包括虚拟机硬件配置建议(内存2-4GB、处理器2-4核、网卡NAT)及安装过程中的典型与自定义选项说明。

04_RBAC+AOP-权限(动态菜单)

04_RBAC+AOP-权限(动态菜单)

# 1 基于rbac+AOP实现权限控制 rbac:基于角色控制权限 每一个公司都不一样 rbac基础班 有不同的变种版 ## 1.1 rbac之5张表 \~\~\~sql -- 用户 drop table if exists tb_user; CREATE TABLE tb_user ( id bigint(20) ...

IO流

IO流

本文介绍了Java IO流的核心知识,涵盖字节流(InputStream/OutputStream)和字符流(Reader/Writer)的分类,以及File类的构造方法(支持路径组合)和常用操作方法(创建、删除、判断、重命名、列表等)。通过示例展示了使用FileInputStream/FileOutputStream进行字节流文件复制,以及FileReader进行字符流读取的基本流程。

单列集合

单列集合

本文介绍了Java单列集合的核心内容,重点讲解了Collection接口及其常用方法(add、remove、clear等),迭代器与增强for循环的区别及安全删除,ArrayList基于数组的底层模型(查询快、增删慢)及其特有方法,以及数组与集合的互相转换。

Date、 LocalDate 、LocalTime 、LocalDateTime

Date、 LocalDate 、LocalTime 、LocalDateTime

本文介绍了Java中四种日期时间类:Date(过时,可格式化与解析)、LocalDate(仅日期,格式化为yyyy-MM-dd等)、LocalTime(仅时间,格式化为HH:mm:ss等)、LocalDateTime(日期+时间,格式化为yyyy-MM-dd HH:mm:ss等)。强调了各自默认输出格式、创建与赋值方法、使用DateTimeFormatter进行格式化和字符串解析。

单例模式和枚举类

单例模式和枚举类

单例模式通过私有化构造、静态变量和静态方法确保全局唯一实例。枚举类则强制限定实例数量,枚举值第一时间排列,构造方法私有,继承自Enum类(需重写toString),解决了单例模式实例可控性问题。

6.常用API

6.常用API

本文介绍了JDK常用API的核心概念,包括方法四要素(方法名、所属类、参数列表、返回值)。重点讲解了Object类:equals()和hashCode()的默认实现(基于地址)及重写规则(基于属性值),toString()和getClass()的用途,并通过字符串示例说明哈希碰撞。随后详述String类的构造方法(如new String(char[])等)和常用方法(equals、length、charAt、isEmpty、getBytes等),强调字符串常量池中地址比较的规则,以及null与空字符串的区别。

比较器

比较器

本文介绍了Java中的两种比较器:内部比较器通过实体类实现Comparable接口并重写compareTo方法,支持int、String、double等类型的排序;外部比较器通过创建实现Comparator接口的类,可定义多个比较规则,并支持Lambda表达式及三元运算符优化。两者均用于Arrays.sort()排序。

第二周总结

第二周总结

本周总结了面向对象编程的核心概念:类与对象的关系、类的组成(属性与方法)、方法的定义与四要素、访问修饰符(public/private等)、static关键字的作用与调用原则、方法重载、构造方法及super/this使用、代码块类型,以及三大特性——封装(属性私有化+get/set)、继承(单继承、重写)和多态。

mysql多版本安装与控制

mysql多版本安装与控制

本文介绍了在Windows上安装和管理多个MySQL版本的方法:下载zip解压,创建my.ini配置文件(指定端口、路径、字符集等),以管理员身份运行CMD,执行初始化命令获取临时密码,通过唯一服务名安装Windows服务,启动服务并修改root密码。核心是确保端口和路径不冲突,服务命名唯一。

5.面向对象三特性

5.面向对象三特性

面向对象三特性包括封装和继承。封装通过属性私有化、提供get/set方法控制访问,实现对属性的安全保护。继承是从多个实体类中抽取共有属性和方法的第二次抽象,遵循单继承原则。标准实体类要求属性私有化、提供构造方法、get/set方法和toString(),以规范代码结构。

4.面向对象

4.面向对象

文章介绍了面向对象编程的核心概念:类是对象的模板,对象是类的实例。阐述了类与对象的关系、类的组成(属性和方法)、方法的定义与四要素,以及访问修饰符(public、private等)和static静态资源的使用。通过学生类和Dog类练习,演示了对象的创建、数组批量保存及增强for循环遍历。

3.数组+循环

3.数组+循环

文章介绍了数组用于批量存储同类型数据,定义后长度不可变,通过下标访问元素;以及for循环和增强for循环的使用场景,强调普通for循环适合固定次数的迭代,增强for循环仅用于遍历展示,不能用于赋值或删除元素。

2.运算符 分支结构

2.运算符 分支结构

本文介绍了Java中的运算符和分支结构,重点讲解了赋值运算符(基本类型传值,引用类型传地址)、算术运算符(包括+的加法与连接作用、/的整数除法、%的取余、++/--的前后置区别等),并通过案例演示了百分比计算和复杂表达式求值。关系运算符返回boolean值,比较基本类型用==,字符串用equals()方法。内容强调运算符的优先级、类型转换和常见陷阱。

1.java基础

1.java基础

本文介绍了Java基础知识,包括项目架构(CS/BS)、技术板块(JDK/JRE/JVM)、Java流行原因(面向对象、跨平台等)、跨平台实现原理(虚拟机)、开发流程(编写、编译、运行)、环境变量配置、命名规范及数据使用。强调Java既是编译型也是解释型语言,并给出HelloWorld案例和代码规范。