自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker_03_DockerCompose多容器编排

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件配置应用的服务、网络和卷,然后使用一个命令就可以创建和启动所有服务。

2026-09-30 13:52:01 214

原创 Docker_02_Dockerfile与存储网络

A:多阶段构建允许在一个 Dockerfile 中使用多个 FROM 指令,每个阶段可以使用不同的基础镜像。好处是最终镜像只包含运行所需的文件,可以大幅减小镜像体积。例如构建阶段使用完整 JDK,运行阶段只使用 JRE。下一篇:Docker Compose 多容器编排。

2026-09-30 13:51:03 187

原创 Docker_01_Docker基础

A:Docker 镜像由多个只读层组成,每层是上一层的变更。多个镜像可以共享相同的基础层,节省存储空间。容器运行时会在镜像层之上添加一个可写层。

2026-09-30 13:49:12 199

原创 CICD_02_Jenkins实战与进阶

传统 Pipeline 只能监听一个分支。多分支 Pipeline 可以自动发现仓库中的所有分支,为每个分支自动创建和配置 Pipeline。pipeline {agent anystring(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '部署环境')choice(name: 'VERSION', choices: ['1.0', '1.1', '2.0'], description: '版本号')

2026-09-30 13:41:44 236

原创 CICD_01_持续集成与Jenkins入门

概念英文含义持续集成(CI)频繁地将代码合并到主干,每次合并自动触发构建和测试持续交付(CD)在 CI 基础上,代码随时可以手动触发部署到生产环境持续部署(CD)在持续交付基础上,通过测试后自动部署到生产环境,无需人工干预代码提交 → 自动构建 → 自动测试 → 自动部署↑ ↑ ↑ ↑CI CI CD(交付) CD(部署)Jenkins是一款开源的自动化服务器,用于执行 CI/CD 流水线。知识点核心要点CI/CD持续集成→持续交付→持续部署Jenkins。

2026-09-30 13:40:51 227

原创 Git_03_GitFlow分支工作流

GitFlow是 Vincent Driessen 提出的一套Git 分支管理模型,定义了清晰的分支策略和合并流程,适用于有明确版本发布周期的项目。📌一句话理解:GitFlow 告诉你团队里每种分支该怎么建、怎么合并、什么时候用,避免分支管理混乱。场景操作流程新功能版本发布紧急修复日常同步定期到 feature 分支分支保护main 和 develop 禁止直接 push。

2026-09-29 16:56:41 238

原创 Git_02_GitLab协作与CI_CD

GitLab是一个基于 Git 的代码托管与 DevOps 平台,提供代码仓库、Merge Request、CI/CD、Issue 管理、容器镜像仓库等一站式功能。📌一句话理解:GitLab = GitHub + Jenkins + Jira,一个平台搞定代码托管、协作和自动化。GitLab 在特定事件(push/MR/Tag)发生时,向你配置的 URL 发送 HTTP POST 请求。功能核心要点成员管理代码审查核心工具,支持审批规则分支保护禁止直接 push,强制 MR 流程。

2026-09-29 16:55:57 301

原创 Git_01_基础与分支管理

Git是目前最流行的分布式版本控制系统,由 Linus Torvalds 为管理 Linux 内核开发而创建。📌一句话理解:Git 帮你记录文件的每一次修改,随时可以回退到任何历史版本,多人协作时不会互相覆盖。知识点核心要点三个区域工作区 → 暂存区 → 版本库基本流程分支冲突解决手动编辑冲突文件 → add → commit暂存stash/pop 应对临时切换任务撤销reset(本地)vs revert(远程安全)📝下一篇预告。

2026-09-29 16:54:50 207

原创 SpringSecurity_03_JWT鉴权

是一种轻量级的 Token 标准,用于在各方之间安全地传递信息。知识点核心要点JWT 结构工具类生成 Token、解析 Token、验证 Token过滤器JwtAuthenticationFilter 继承 OncePerRequestFilter配置登录流程认证 → 生成 Token → 返回客户端Token 刷新双 Token 方案(Access + Refresh)💡学习建议:JWT 鉴权是前后端分离项目的标配,建议结合动物园管理系统实际开发,完成登录、鉴权、权限控制的完整流程。

2026-09-28 21:40:55 311

原创 SpringSecurity_02_授权与高级功能

CSRF(Cross-Site Request Forgery)跨站请求伪造:攻击者诱导用户访问恶意页面,利用用户已登录的身份发送恶意请求。// 未认证:返回 401"{\"code\":401,\"message\":\"未登录,请先登录\"}"})// 无权限:返回 403"{\"code\":403,\"message\":\"权限不足,无法访问\"}"})功能实现方式核心注解/配置URL 权限方法权限CSRF前后端分离关闭rememberMe异常处理。

2026-09-28 21:40:23 216

原创 SpringSecurity_01_入门与认证

Spring Security 是 Spring 生态中的安全框架,提供认证(Authentication)、授权(Authorization)和防护性安全机制。📌一句话理解:认证是"你是谁",授权是"你能干什么"。Spring Security 帮你搞定这两件事。@Beanhttp// 放行规则.requestMatchers("/login", "/register", "/error").permitAll() // 放行。

2026-09-28 21:39:37 223

原创 MyBatisPlus_02_条件构造器与高级功能

不真正删除数据,而是标记一个字段表示"已删除"。查询时自动过滤已删除的记录。通过版本号防止并发更新冲突。每次更新时检查版本号,如果被别人改过则更新失败。// 接口继承 IService// 实现类继承 ServiceImpl@Service功能核心类/注解要点条件构造更新构造set/setSql分页Page 对象 + selectPage逻辑删除delete 转 update,查询自动过滤乐观锁@Version + 拦截器版本号比对防并发冲突自动填充。

2026-09-27 20:44:56 204

原创 MyBatisPlus_01_入门与通用CRUD

是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。📌一句话理解:MyBatis 需要手写单表 CRUD 的 SQL,MyBatis-Plus 帮你自动生成,你只管写多表复杂查询。@Mapper// 不需要写任何方法,通用 CRUD 已经内置!知识点核心要点整合注解ID 策略AUTO(自增)、ASSIGN_ID(雪花,默认)通用 CRUDBaseMapper 提供 insert/delete/update/select 等方法条件查询。

2026-09-27 20:44:09 179

原创 SpringMVC_03_进阶功能

拦截器用于在请求到达 Controller之前和之后执行预处理或后处理逻辑。常见场景:登录验证、权限检查、日志记录、请求耗时统计。// 使用@Servicethrow new BusinessException(404, "用户不存在");配置文件职责web.xml配置 DispatcherServlet、ContextLoaderListenerService、DAO、事务、数据源Controller 扫描、视图解析器、拦截器MyBatis 配置、Mapper 扫描整合要点。

2026-09-27 19:36:43 227

原创 SpringMVC_02_注解开发实战

注解用途记忆要点路径映射可标注在类和方法上查询参数?name=xxx路径变量/user/{id}JSON 请求体POST/PUT 的 JSON 数据JSON 响应返回值写入响应体完全控制响应状态码 + 响应头 + 响应体📝下一篇预告:《Spring MVC 进阶功能》,详解拦截器、文件上传下载、全局异常处理。

2026-09-27 19:36:04 238

原创 SpringMVC_01_MVC基础与核心流程

MVC层职责对应 Spring MVCModel(模型)数据和业务逻辑View(视图)展示界面Controller(控制器)接收请求,调用模型,返回视图Controller 类📌一句话理解:用户发请求 → Controller 接收 → 调用 Service 处理 → 返回 View 展示。Spring MVC 是 Spring 框架中用于构建 Web 应用的模块,基于 MVC 模式实现。核心优势与 Spring 容器无缝集成(IOC、AOP 直接可用)注解驱动开发,代码简洁。

2026-09-27 19:35:31 215

原创 SpringBoot_04_数据层整合

知识点核心要点MyBatis 整合BaseMapper 通用 CRUD + LambdaQueryWrapper事务管理@Transactional + 传播行为 + 失效原因多数据源动态数据源 + @DS 注解切换监控Actuator 端点暴露健康/指标信息。

2026-09-26 23:23:04 183

原创 SpringBoot_03_Web开发

/ 使用throw new BusinessException(404, "用户不存在");功能核心类/注解要点标准 CRUD 接口统一响应Result 封装全局异常拦截器跨域全局/局部配置参数校验@Valid + 注解💡下一篇:《Spring Boot 数据层整合》,详解 MyBatis 整合、事务管理与 Actuator 监控。

2026-09-26 23:21:23 183

原创 SpringBoot_02_自动配置原理

根据你引入的依赖,自动帮你配置好对应的 Bean,不需要手动写 XML 或 @Bean。📌一句话理解:你在 pom.xml 引入了,Spring Boot 就自动帮你配好 DispatcherServlet、视图解析器、JSON 转换器等,开箱即用。Starter 是一组依赖集合,引入一个 Starter 就等于引入了一组相关依赖,且版本经过验证不会冲突。-- 引入这个 Starter,自动包含: --> <!-- 引入这个 Starter,自动包含: --> <!

2026-09-26 23:20:26 177

原创 SpringBoot_01_入门与核心配置

Spring Boot 是 Pivotal 团队提供的基于 Spring 的快速开发框架,核心理念是"约定优于配置"。📌一句话理解:Spring Boot 就是帮你把 Spring 的各种配置自动搞定,让你专注于业务代码,不再写繁琐的 XML。app:name: 我的应用author: 张三知识点核心要点Spring Boot 核心约定优于配置,自动配置,起步依赖启动类= 配置 + 自动配置 + 扫描配置文件yml 优先,层级清晰,支持多环境自定义配置@Value简单场景,

2026-09-26 23:19:47 158

原创 Java泛型实战_常见坑与源码应用

答:Java 8 增强了泛型类型推断能力,编译器可以根据上下文(目标类型)推断泛型参数。例如中,<>的类型根据左边的推断为String。方法调用时也会根据参数类型推断,如可以简写为。实践说明✅ 优先使用泛型集合,而非原始类型编译期类型安全✅ 遵循 PECS 原则生产者用extends,消费者用super✅ 使用等包装方法防止外部修改集合✅ API 设计中合理使用泛型边界限制类型范围,提高类型安全❌ 避免在泛型中使用原始类型(Raw Type)失去类型检查,遗留编译警告。

2026-09-24 16:18:25 117

原创 Java泛型进阶_通配符捕获与泛型边界

当编译器能确定通配符?代表某个具体类型时,会将它"捕获"为一个有名字的临时类型参数,从而允许调用某些泛型方法。由于类型擦除,当泛型类实现接口或继承父类并重写泛型方法时,编译器会生成桥接方法来保证多态正确性。// 静态工厂方法,方便类型推断@Override// 使用知识点核心要点泛型与继承泛型不具有协变性,不是的子类通配符捕获编译器将?捕获为临时类型参数,允许调用泛型方法桥接方法编译器自动生成,保证类型擦除后多态仍正确泛型数组因类型擦除与数组协变冲突,禁止创建泛型数组。

2026-09-24 16:17:01 198

原创 Java泛型基础_从入门到类型擦除

泛型(Generics)是 Java 5 引入的特性,允许在定义类、接口和方法时使用类型参数,从而实现代码的类型安全和复用。📌一句话理解:泛型就是"类型的模板"——你不用提前写死具体类型,使用时再传入,编译期就能检查类型错误。Java 的泛型是伪泛型,在编译阶段会进行类型擦除编译器会将所有泛型类型参数替换为它们的上界(没有上界时替换为Object),生成的字节码中不再包含泛型信息。// 源码// 编译后的字节码等价于:// T 被擦除为 Object知识点核心要点泛型的作用。

2026-09-24 16:16:07 108 1

原创 Java设计模式_单例策略观察者责任链详解

单例模式是一种创建型设计模式,确保一个类在内存中只有一个实例,并提供一个全局访问点来获取该实例。📌一句话理解:整个系统只需要一个"数据库连接池"或"配置管理器",不需要也不应该创建多个。策略模式是一种行为型设计模式,定义一系列算法,把它们封装起来,并且使它们可以互相替换。📌一句话理解:同样一个需求(如"计算价格"),有多种实现方式(满减、打折、返现),使用策略模式可以在运行时动态选择。观察者模式是一种行为型设计模式,定义对象之间的一种一对多依赖关系。

2026-09-24 16:04:57 303

原创 Java设计模式_代理模式详解

代理模式(Proxy Pattern)为其他对象提供一种代理,以控制对这个对象的访问。简单来说,就是"通过代理者来访问目标对象",代理者可以在访问前后做额外的事情(如权限检查、日志记录、延迟加载等),而不需要修改目标对象本身的代码。📌一句话理解:你找明星代言产品,你接触的"代言"是代理(Proxy),真正拍广告的是明星(RealSubject)。静态代理:编译时确定,简单但不够灵活JDK 动态代理:运行时生成,基于接口,Spring AOP 默认选择CGLIB 动态代理。

2026-09-24 16:04:31 284

原创 Linux常见面试题4

Vim 三种核心模式:Normal(命令)、Insert(插入)、Command-line(底线),通过 ESC / : / i 等键切换高效移动是 Vim 的核心竞争力:hjkl 基本移动 + w/b/e 单词级 + 0/$ 行级 + gg/G 文件级 + f/F/t/T 字符搜索 + % 括号匹配向下搜索、?向上搜索、:s替换,支持正则与捕获组引用宏录制q{reg}...q是批量重复操作的利器,实际场景如批量修改代码格式。

2026-07-16 23:10:00 303

原创 Linux常见面试题2

USE 方法论:对每个资源检查利用率(Utilization)饱和度(Saturation)错误率(Errors)= R 状态进程 + D 状态进程,需结合 CPU 核数判断,高 load 可能是 IO 问题top/vmstat是即时诊断的首选,sar是历史回溯的利器,perf是代码级性能分析的终极工具CPU 排查:top → 线程 → jstack/perf → 代码内存排查IO 排查。

2026-07-15 19:07:24 246

原创 Linux常见面试题3

IPC 机制核心要点:管道家族匿名管道:亲缘进程、半双工、内存中命名管道:任意进程、半双工、文件系统中mkfifomknod消息队列:结构化消息、共享内存:最快 IPC、零拷贝、需同步、信号量:同步机制、P/V 操作、ipcs(查看)、ipcrm(删除)信号异步通知、信息量少常用信号:SIGTERM(15)、SIGKILL(9)、SIGUSR1/2kill -lSocketUnix Domain Socket:本地高效通信、AF_UNIX。

2026-07-15 19:04:22 395

原创 Linux常见面试题1

FHS 目录结构:理解每个顶级目录的用途是 Linux 基础权限模型:rwx 三位一组,数字模式和符号模式等价互转umask:文件默认权限 = 666 - umask,目录 = 777 - umask特殊权限:SUID(借身份执行)、SGID(目录继承属组)、Sticky Bit(限制删除):inode 存元数据不含文件名,block 存数据;文件名在目录 block 中硬链接 vs 软链接:硬链接共享 inode、不能跨分区、不能链目录;软链接反之chattr+i防篡改、+a。

2026-07-14 17:53:00 233

原创 Java常见面试题10

Bean 生命周期:实例化 → 属性注入 → Aware 回调 → 前置处理 → 初始化 → 后置处理 → 使用 → 销毁三级缓存:一级存成品、二级存半成品、三级存 ObjectFactory(延迟代理决策)构造器注入和 prototype 无法解决循环依赖@Autowired按类型优先,@Resource按名称优先是 Spring 最核心的扩展点之一,AOP 代理在此阶段创建AQS 是Semaphore等的统一基类,核心是state+ CLH 队列。

2026-07-11 17:08:19 209

原创 Java常见面试题9

*** 自定义 ClassLoader,支持热加载* 每次加载时重新读取 class 文件,打破双亲委派// 不传 parent,确保打破双亲委派 this . classDir = classDir;try {} } /*** 打破双亲委派:优先自己加载,而不是先委派给父加载器// 先尝试自己加载(打破双亲委派的关键) Class <?if(loaded!

2026-07-09 14:07:34 210

原创 Java常见面试题8

通过put/take实现阻塞式生产消费单锁有界,双锁可选有界有界队列是背压的核心:队列满 → 生产者阻塞 → 自动限流零缓冲,用于线程间直接交接DelayQueue基于,元素到期后才能取出泛型是编译期机制,运行时类型擦除为原始类型PECS 原则:读用extends,写用super,既读又写用确切类型桥接方法保证擦除后多态分派正确Super Type Token 利用匿名子类在运行时捕获泛型类型字段/方法签名中的泛型信息通过字节码Signature属性保留,反射可获取。

2026-07-09 14:06:56 205

原创 Java常见面试题7

了解 Java 的 SPI 机制吗?它和 API 有什么区别?追问:“JDBC 驱动是怎么通过 SPI 加载的?再追问:“SPI 和 Dubbo SPI 有什么区别?SPI 概念:接口定义方和使用方分离,自动发现并加载实现使用步骤:定义接口 → 提供实现 → 配置 META-INF/services → ServiceLoader 加载JDBC 加载:DriverManager 通过 ServiceLoader 自动加载所有 Driver优缺点:解耦可扩展,但性能差、功能有限改进方案。

2026-07-07 22:06:02 229

原创 Java常见面试题6

Java 的 IO 模型了解吗?BIO、NIO、AIO 有什么区别?追问:“NIO 的核心组件有哪些?Channel 和 Stream 有什么区别?再追问:“什么是零拷贝?mmap 和 sendfile 有什么区别?Netty 为什么快?BIO:同步阻塞,一连接一线程,适合连接数少NIO:同步非阻塞,多路复用(Selector),适合连接数多AIO:异步非阻塞,回调通知,Linux 实现不成熟零拷贝:减少数据在内核和用户空间之间的拷贝次数,mmap 和 sendfileNetty 快。

2026-07-07 22:02:07 269

原创 Java常见面试题5

契约:equals 相等 → hashCode 必须相等;hashCode 相等 → equals 不一定相等不重写的后果:基于哈希的集合(HashMap、HashSet)无法正常工作好的 hashCode:分散性好、计算快、用到的字段和 equals 一致现代写法或record(自动实现)Comparable:类内部定义的自然排序,一个类只能有一种Comparator:外部定制的排序策略,可以有多种优先级:同时存在时 Comparator 优先于 Comparable实用技巧。

2026-07-04 20:12:07 165

原创 Java常见面试题4

类型擦除:泛型只在编译期有效,运行时 T → Object(或上界),保证向后兼容PECS 原则:Producer extends 只读,Consumer super 只写擦除的代价:不能用基本类型、不能 new 泛型数组、不能 instanceof,但可以通过 Class 传参或 superTypeToken 绕过ThreadLocal 本质:每个 Thread 持有一个 ThreadLocalMap,ThreadLocal 是 key内存泄漏。

2026-07-04 20:11:03 204

原创 Java常见面试题3

数据结构选型:动态数组 vs 双向链表的本质区别CPU 缓存友好性:连续内存 vs 离散内存在现代硬件上的性能差距扩容策略:1.5 倍扩容的数学原理(等比数列求和 ≈ 2 倍初始容量)AQS 模板方法模式:父类提供排队/阻塞/唤醒框架,子类只实现 tryAcquire/tryReleasestate + CLH 队列:AQS 的两大核心,state 代表资源状态,队列管理等待线程CAS 保证原子性:state 的修改全部通过 CAS 完成,保证线程安全Lambda 底层原理。

2026-07-02 18:36:17 233

原创 Java常见面试题2

Java 面试核心知识点(第二弹)├── 线程池│ ├── 七大核心参数(corePoolSize / maximumPoolSize / keepAliveTime / unit / workQueue / threadFactory / handler)│ ├── 工作流程(核心线程 → 队列 → 非核心线程 → 拒绝策略)│ ├── 四种拒绝策略对比│ ├── 四种常用队列(Linked / Array / Synchronous / Delayed)

2026-07-02 18:35:14 201

原创 Java常见面试题1

Java 面试核心知识点(第一弹)│ ├── JDK 1.7(数组+链表,头插法)vs JDK 1.8(数组+链表+红黑树,尾插法)│ ├── 链表转红黑树条件(长度>=8 且 数组>=64)│ ├── 扩容机制(1.7 重新哈希 vs 1.8 高位判断)│ ├── HashMap 线程不安全三问题│ ├── ConcurrentHashMap:JDK 1.7 分段锁 vs JDK 1.8 synchronized + CAS。

2026-06-30 22:13:06 181

原创 MySQL常见面试题5

MySQL 面试核心知识点(第五弹)├── SQL 完整执行链路│ ├── 连接器(身份认证、线程分配)│ ├── 查询缓存(MySQL 8.0 已删除)│ ├── 语法解析(Parser)→ 预处理器 → 优化器│ ├── 查询优化器(索引选择、JOIN顺序、代价估算)│ ├── 执行器(调用存储引擎接口)│ └── 存储引擎(Buffer Pool → 磁盘)│├── 锁的底层实现│ ├── Record Lock(记录锁)→ 锁索引记录本身。

2026-06-30 22:05:17 235

空空如也

空空如也

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

TA关注的人

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