- 博客(148)
- 收藏
- 关注

原创 X.509证书详解
X.509证书是一种广泛使用的数字证书标准,用于在公钥基础设施(PKI)中将公钥与实体绑定,确保通信安全。它由证书颁发机构(CA)签名,广泛应用于HTTPS、代码签名、电子邮件加密等领域。X.509证书包含版本号、序列号、颁发者、有效期、主体、公钥信息等字段,并支持扩展属性。证书可以以DER、PEM、PKCS#7、PKCS#12等格式编码存储。在Java中,X509Certificate类用于表示X.509证书,提供了获取证书信息、验证签名等方法。
2025-05-12 00:05:44
1591

原创 Java详解LeetCode 热题 100(01):LeetCode 1. 两数之和(Two Sum)详解
理解问题:确保理解题目要求,包括输入限制和预期输出。暴力法:先考虑最简单的解法,帮助理解问题。优化:使用哈希表将查找复杂度从 O(n) 降低到 O(1)。特殊处理:处理边界情况和特殊输入。代码风格:编写清晰、高效、易于理解的代码。
2025-04-27 21:49:19
1281

原创 单例模式详解
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。简单来说,单例模式就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是一种简单但功能强大的设计模式,它确保一个类只有一个实例,并提供全局访问点。饿汉式(静态常量/静态代码块)懒汉式(普通/同步方法)双重检查锁静态内部类枚举每种实现方式都有其优缺点,应根据具体需求选择合适的实现。在使用单例模式时,需要特别注意线程安全、序列化问题和反射攻击等。
2025-04-17 08:52:57
1792
原创 01.【面试题】在SpringBoot中如何实现多数据源配置
多数据源(Multiple DataSources)是指在一个SpringBoot应用中同时连接和使用多个数据库的技术。这些数据库可以是:多数据源架构2. 为什么需要多数据源2.1 业务场景需求读写分离:主库写入,从库读取,提高性能业务隔离:不同业务模块使用独立数据库数据迁移:新老系统数据库并存分布式架构:微服务架构中的数据分离2.2 技术优势性能优化:分散数据库压力数据安全:重要数据隔离存储扩展性好:易于水平扩展故障隔离:一个数据库故障不影响其他业务3. 多数据源的
2025-08-10 14:43:46
984
原创 20.缓存问题与解决方案详解教程
缓存是一种高速存储技术,用于临时存储频繁访问的数据,以提高系统性能和响应速度。在软件架构中,缓存通常位于应用程序和数据库之间,作为数据的快速访问层。缓存雪崩是指在同一时间,大量的缓存key同时失效,导致大量请求直接打到数据库上,造成数据库瞬间压力过大甚至宕机的现象。缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时才查询数据库,而且不存在的数据不会写入缓存,导致这个不存在的数据每次请求都要查询数据库,给数据库造成压力。
2025-07-11 10:30:00
1212
原创 19.SpringBoot自动配置原理详解教程
SpringBoot自动配置是SpringBoot框架的核心特性之一,它能够根据类路径上的依赖、配置文件中的配置以及其他条件,自动为应用程序配置所需的Bean和组件。这大大简化了Spring应用的配置工作,实现了"约定优于配置"的理念。// 自定义条件类@Override// 使用自定义条件@Bean// 配置属性类// getter和setter方法...// 服务类if (!// 自动配置类@Bean: 启动自动配置的入口: 选择和加载自动配置类。
2025-07-11 00:43:13
342
原创 18.Shell脚本编程之sed详解(新手完整版)
sed(Stream Editor,流编辑器)是Unix/Linux系统中一个强大的文本处理工具。sed就像一个文字修改大师,可以在不打开文件的情况下,按照您的指令对文本进行各种修改就像流水线上的工人,文本从一端进入,经过处理后从另一端输出可以想象成一个智能的查找替换工具,但功能比普通的查找替换强大得多sed基础概念流编辑器,逐行处理文本模式空间和保持空间地址定位和命令执行主要命令类型替换命令 (s):最常用,支持正则表达式删除命令 (d):删除匹配的行打印命令 §:输出指定行。
2025-07-10 01:14:32
764
原创 17.Spring Boot的Bean详解(新手版)
Bean是Spring框架中的核心概念。简单来说,Bean就是一个由Spring容器创建、管理和维护的Java对象。为你准备房间(创建Bean对象)提供水电服务(注入依赖)维护房间设施(管理Bean生命周期)处理房间之间的关系(Bean之间的依赖)创建对象:根据配置创建Bean实例管理依赖:自动注入Bean之间的依赖关系控制生命周期:管理Bean的创建、初始化、使用和销毁提供服务:为应用程序提供所需的Bean// 默认Bean名称是类名首字母小写。
2025-07-09 23:29:19
1225
原创 16.Spring Boot 国际化完全指南
国际化(Internationalization,通常缩写为i18n,因为在"i"和"n"之间有18个字母)是指设计和开发软件时,使其能够适应不同语言和地区而无需进行工程上的更改。通过国际化,同一个应用程序可以在不同国家、使用不同语言的环境中运行,并为用户提供本地化的界面和内容。@Autowired// 假设有一个用户服务@Override// 获取当前用户if (user!= null) {// 使用用户首选语言// 回退到请求头中的语言// 默认语言。
2025-07-09 01:13:18
902
原创 15.日志流水号的使用
日志流水号(也称为请求ID、链路追踪ID、事务ID)是用于唯一标识一次业务操作或请求的字符串。它贯穿整个请求的生命周期,从前端发起请求到后端处理完成,所有相关的日志都会包含这个流水号。在分布式系统中,一个用户请求可能涉及多个微服务、数据库操作、第三方调用等。没有流水号的情况下,要追踪一个请求的完整链路是非常困难的,特别是在系统出现问题时。一个好的流水号应该具备以下特征:典型的流水号结构:2.3 常见的流水号格式2.3.1 时间戳格式2.3.2 UUID格式2.3.3 雪花算法格式3. 日志流
2025-07-08 17:16:10
1041
原创 14.分类管理功能前后端开发(SpringBoot + MyBatis-Plus)
分类管理是企业级应用中非常常见的功能,通常用于组织和管理各种类型的数据,如商品分类、文章分类、权限分类等。本章节将详细介绍如何使用SpringBoot + MyBatis-Plus + Vue实现一个完整的分类管理功能。2. 技术栈介绍2.1 后端技术栈技术版本说明SpringBoot2.7.0主框架MyBatis-Plus3.5.2ORM框架MySQL8.0数据库Druid1.2.11数据库连接池Hutool5.8.5工具类库L
2025-07-08 09:52:59
1004
原创 13.SpringBoot定时任务详解
定时任务是指在指定的时间或按照指定的时间间隔自动执行的任务。它就像生活中的闹钟一样,能够在预设的时间点自动触发执行特定的操作。闹钟功能:每天早上7点叫你起床(固定时间执行)定期提醒:每小时提醒你喝水(固定间隔执行)条件触发:下雨时提醒你带伞(条件满足时执行)复杂安排:工作日的特定时间执行特定任务(复杂时间表达式)动态定时任务是指可以在运行时创建、修改、删除的定时任务,不需要重启应用。管理员可以通过后台界面添加新的定时任务可以根据业务需要临时调整任务执行时间可以暂停或恢复特定的定时任务。
2025-07-07 10:00:00
1039
原创 12.雪花算法详解
雪花算法(Snowflake Algorithm)是Twitter开源的分布式ID生成算法,它能够在分布式系统中生成全局唯一的ID。身份证号码结构:由地区代码、出生日期、顺序号等组成,确保全国唯一雪花ID结构:由时间戳、机器ID、序列号组成,确保全球唯一生成速度:就像印刷厂批量生产身份证,每秒可以生成大量唯一ID分布式特性:不同地区可以同时生成,不会冲突优点:全局唯一性:在分布式环境下保证ID唯一高性能:本地生成,单机QPS可达百万级趋势递增:有利于数据库索引和分页无依赖。
2025-07-07 01:10:18
844
原创 11.前后端分页功能详解
分页是指将大量数据分割成多个小的数据块(页),每次只返回其中一页的数据,用户可以通过翻页来浏览所有数据。这样可以避免一次性加载过多数据导致的性能问题。整本书(全部数据):包含所有内容章节目录(分页导航):告诉你有多少页,现在在第几页当前页(当前页数据):你正在阅读的这一页翻页(分页操作):点击下一页、上一页、跳转到某页PageHelper是MyBatis的分页插件,它通过拦截器机制在SQL执行前自动添加分页相关的SQL语句,实现物理分页。后端优化使用合适的数据库索引避免N+1查询问题。
2025-07-06 10:00:00
1031
原创 10.SpringBoot的统一异常处理详解
异常处理是程序在运行过程中遇到错误时的处理机制。在Web应用中,异常处理负责捕获和处理各种异常情况,并向客户端返回友好的错误信息。形象比喻:想象异常处理就像医院的急诊科:Spring提供了多种异常处理方式:SpringBoot默认提供了基本的异常处理机制:当访问这些端点时,SpringBoot会返回默认的错误信息,但这些信息对用户不够友好。可以通过配置文件定制默认错误页面:3. 全局异常处理器3.1 基础全局异常处理器3.2 统一响应格式为了保持响应格式的一致性,建议创建统一的响应类:3.3
2025-07-06 01:08:28
1191
原创 Typora + PicGo + Gitee图床——图片自动上传详细教程
图床(Image Hosting)是一种专门用来存储图片的网络服务,它可以将图片上传到云端服务器,然后提供一个网络链接(URL)来访问这张图片。这样会按年月创建文件夹,便于管理。通过本教程,您已经学会了如何配置Typora + PicGo + Gitee的图床方案。这个方案具有免费、快速、稳定的特点,非常适合个人博客、学习笔记等场景使用。配置完成后,您就可以在Typora中愉快地插入图片,而不用担心图片分享和存储问题了。记住定期备份重要图片,并注意保护好您的访问令牌。
2025-07-05 21:57:54
857
原创 09.SpringBoot集成Validation做参数校验详解
Validation(数据校验)是指对输入数据进行有效性检查的过程。在Web应用中,这包括对用户提交的表单数据、API请求参数、方法参数等进行校验,确保数据符合业务规则和格式要求。形象比喻:想象Validation就像机场安检:JSR-303(Bean Validation 1.0)和JSR-380(Bean Validation 2.0)是Java官方的数据校验规范,定义了一套标准的校验注解和API。在SpringBoot 2.3之前,包含了Validation依赖。在2.3之后需要手动添加:2.2
2025-07-05 10:00:00
886
原创 08.SpringBoot AOP的使用详解
AOP(面向切面编程)是一种编程范式,它是对面向对象编程(OOP)的补充。AOP主要目的是将横切关注点(Cross-cutting Concerns)从业务逻辑中分离出来,比如日志记录、事务管理、安全控制等。核心业务(做菜):炒菜、煮汤、蒸饭横切关注点(AOP):洗手、戴围裙、开火、关火、洗碗如果没有AOP,你需要在每道菜的制作过程中都写上"洗手、戴围裙"等重复代码。有了AOP,你可以定义一个"做菜切面",自动在做菜前后执行这些通用操作。/*** 限流注解*//**
2025-07-05 00:27:01
1078
原创 07.SpringBoot过滤器详解
过滤器(Filter)是Java Web开发中的一个重要组件,它基于Servlet规范。过滤器就像一个"门卫",在客户端请求到达Servlet之前,以及服务器响应返回给客户端之前,对请求和响应进行预处理和后处理。安检(过滤器)→前台登记(过滤器)→到达目标办公室(Controller)→办完事离开→前台签退(过滤器)→出门(响应返回客户端)单一职责:每个过滤器只负责一个特定的功能链式调用:确保调用,除非有特殊需求异常处理:妥善处理可能出现的异常性能考虑:避免在过滤器中执行耗时操作。
2025-07-04 02:30:00
1070
原创 06.Axios HTTP库集成详细指南
Axios是一个基于Promise的HTTP客户端库,用于浏览器和Node.js环境。它是目前最受欢迎的JavaScript HTTP请求库之一,为Vue.js应用提供了完善的API请求解决方案。API模块化设计按功能模块分离API统一的错误处理标准化的响应格式错误处理策略全局错误拦截器分类错误处理用户友好的错误提示性能优化合理使用缓存机制请求去重和合并响应数据压缩安全考虑Token自动刷新请求加密(HTTPS)防止CSRF攻击开发体验统一的API调用方式。
2025-07-04 02:15:00
1024
原创 05.SpringBoot拦截器的使用详解
拦截器(Interceptor)是Spring MVC框架提供的一种组件,它可以在请求处理的不同阶段进行拦截和处理。拦截器基于Java的反射机制和动态代理,是AOP(面向切面编程)思想的具体应用。形象比喻:想象拦截器就像是公司大楼的多道安检门:2.2 拦截器的三个核心方法preHandle:在Controller方法执行前调用postHandle:在Controller方法执行后、视图渲染前调用afterCompletion:在整个请求完成后调用这是最常用的方式:3.2 继承HandlerInt
2025-07-03 00:03:38
874
原创 04.Vue自定义组件制作详细指南
这是我的第一个自定义组件</p></div><script></script>.hello {h1 {p {</style>Props是父组件传递给子组件的数据。它是组件间通信的主要方式之一。<template><p>年龄: {{ age }}
2025-07-03 00:03:02
1012
原创 03.Vue CLI项目创建详细指南
Vue CLI(Command Line Interface)是Vue.js官方提供的标准化命令行工具,用于快速搭建Vue.js项目。它提供了一整套完整的开发环境配置,包括项目结构、构建工具、开发服务器、测试框架等,让开发者可以专注于业务逻辑的开发。
2025-07-02 00:15:00
2621
原创 02.SpringBoot常用Utils工具类详解
BeanUtils是一个非常重要的工具类,主要用于JavaBean之间的属性拷贝。在实际开发中,我们经常需要在不同的对象之间复制属性值,比如Entity转DTO、VO转DTO等场景。Spring框架提供的BeanUtils,性能较好,是最常用的选择。Apache提供的BeanUtils,功能更强大但性能相对较差。1.3.2 指定忽略属性1.3.3 批量拷贝(列表转换)1.4 自定义BeanUtils工具类1.5 BeanUtils的局限性和注意事项1.5.1 深拷贝 vs 浅拷贝1.5.
2025-07-02 00:00:00
1245
1
原创 01.SpringBoot集成持久层框架MyBatis详细指南
MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。2.1.2 Gradle依赖配置2.2 数据库配置2.2.1 application.yml配置2.2.2 多环境配置示例application-dev.yml(开发环境
2025-07-01 00:26:46
1262
原创 00.SpringBoot项目创建详细指南
SpringBoot是Spring框架的一个子项目,它简化了Spring应用程序的开发和部署。SpringBoot的核心理念是"约定优于配置",让开发者能够快速创建独立的、生产级别的Spring应用程序。// 设置默认属性// 设置Banner模式// 启动应用。
2025-07-01 00:18:42
1102
原创 Vue购物车应用实现教程
本教程将带领初学者开发一个基于Vue.js的购物车应用,不需要使用脚手架,仅通过引入Vue.js库即可完成。通过这个项目,你将学习Vue的基础知识,包括:完成后的购物车应用具有以下功能:对于初学者,我们采用最简单的方式搭建环境:通过CDN引入Vue.js。创建一个基本的HTML文件结构:3. 设计购物车界面我们设计一个简洁的购物车界面,包含以下部分:更新HTML结构:4. 创建Vue实例和数据模型在script标签中,我们创建Vue实例并定义数据模型:5. 实现购物车功能5.1 从本地存储加载数
2025-06-18 08:59:31
928
原创 Java详解LeetCode 热题 100(34):LeetCode 23. 合并K个升序链表
*** 链表节点的标准定义* 这是所有解法都会用到的基础数据结构*/int val;// 节点值// 指向下一个节点的指针// 默认构造函数// 带值的构造函数// 完整构造函数K路归并是指将K个已排序的序列合并成一个有序序列的过程。K:链表的数量已排序序列:每个链表都是升序的合并目标:一个包含所有元素的升序链表/*** 创建最小堆的多种方式*/// 方式1:Lambda表达式(推荐)// 方式2:方法引用// 方式3:传统匿名类。
2025-06-16 10:59:06
1444
原创 Java详解LeetCode 热题 100(33):LeetCode 148. 排序链表
/ 链表节点定义int val;掌握基础概念理解链表的基本操作熟悉快慢指针技巧掌握归并排序原理实现递归版本从最简单的递归实现开始重点理解分治思想调试并验证正确性优化到迭代版本理解递归到迭代的转换掌握自底向上的归并实现O(1)空间复杂度数据结构操作:链表的遍历、分割、合并算法设计:分治思想、归并排序复杂度分析:时间空间复杂度的权衡代码实现:递归与迭代的两种风格通过深入学习这道题目,我们不仅掌握了链表排序的具体方法,更重要的是培养了系统性解决问题的能力。
2025-06-14 08:25:37
824
原创 Java详解LeetCode 热题 100(32):LeetCode 138. 随机链表的复制
/ 链表节点定义int val;Node next;理解基础概念深拷贝 vs 浅拷贝链表的基本操作指针和引用的区别掌握第一种解法从哈希表法开始理解映射的概念练习调试技巧逐步进阶尝试递归解法挑战原地算法对比不同解法问题分析能力:如何将复杂问题分解为可解决的子问题数据结构应用:哈希表在建立映射关系中的巧妙应用算法优化思维:从O(n)空间到O(1)空间的优化过程代码实现能力:处理复杂指针关系的编程技巧。
2025-06-13 21:55:42
1339
原创 Vue学生成绩管理应用教程
本教程将带领初学者开发一个基于Vue.js的学生成绩管理应用,不需要使用脚手架,仅通过引入Vue.js库即可完成。通过这个项目,你将学习Vue的基础知识,包括:完成后的成绩管理应用具有以下功能:对于初学者,我们采用最简单的方式搭建环境:通过CDN引入Vue.js。创建一个基本的HTML文件结构:3. 设计应用界面我们设计一个简洁的成绩管理界面,包含以下部分:更新HTML结构:4. 创建Vue实例和数据模型在script标签中,我们创建Vue实例并定义数据模型:5. 实现成绩管理功能5.1 添加学
2025-06-12 00:41:19
963
原创 Vue记事本应用实现教程
本教程将带领新手开发一个基于Vue.js的记事本应用,不需要使用脚手架,仅通过引入Vue.js库即可完成。通过这个项目,你将学习Vue的基础知识,包括:完成后的记事本应用具有以下功能:对于初学者,我们采用最简单的方式搭建环境:通过CDN引入Vue.js。创建一个基本的HTML文件结构:3. 设计应用界面我们设计一个简洁的记事本界面,包含以下部分:更新HTML结构:4. 创建Vue实例和数据模型在script标签中,我们创建Vue实例并定义数据模型:5. 实现记事本功能5.1 添加新记事项首先,
2025-06-10 09:55:39
1154
原创 Java详解LeetCode 热题 100(31):LeetCode 25. K个一组翻转链表(Reverse Nodes in k-Group)详解
*** 单链表节点的定义*/int val;// 节点的值// 指向下一个节点的指针// 无参构造函数// 带值的构造函数// 带值和下一个节点的构造函数第一步:掌握基础知识熟练掌握链表的基本操作理解指针和引用的概念掌握链表翻转的基础算法(LeetCode 206)练习两两交换链表节点(LeetCode 24)第二步:理解分组思想理解K个一组的分组概念掌握完整组和不完整组的处理差异学会使用哨兵节点简化操作练习手动模拟翻转过程第三步:掌握多种解法。
2025-06-10 08:43:55
992
原创 Java NIO详解:新手完全指南
NIO(New I/O或Non-blocking I/O)是Java 1.4引入的一套全新的I/O API,为所有的原始类型提供缓冲区支持,使用它可以提供非阻塞式的高伸缩性网络和文件I/O操作。NIO被设计用来代替标准的Java I/O API(java.io包),提供了更高效的I/O操作方式。传统IO与NIO在设计理念和使用方式上有显著差异,下面是它们的主要区别:2.1.2 NIO读取文件3. NIO核心组件Java NIO由三个核心组件组成,它们共同提供了一个完整的非阻塞I/O解决方案:Buff
2025-06-09 09:02:14
1217
原创 Java详解LeetCode 热题 100(30):LeetCode 24. 两两交换链表中的节点(Swap Nodes in Pairs)详解
*** 单链表节点的定义*/int val;// 节点的值// 指向下一个节点的指针// 无参构造函数// 带值的构造函数// 带值和下一个节点的构造函数第一步:理解基础概念掌握链表的基本结构和操作理解指针和引用的概念学会画图分析链表操作过程第二步:掌握基础解法先实现迭代法,理解指针操作的步骤学会使用哨兵节点简化边界处理掌握调试技巧,学会验证每一步操作第三步:学习高级技巧理解递归法的优雅实现学会分析递归的时间和空间复杂度对比不同解法的优缺点。
2025-06-09 08:31:34
1065
原创 CSS选择器详细教程
CSS选择器是一种模式,用于选择HTML文档中的元素,以便对这些元素应用样式。选择器是CSS规则的重要组成部分。CSS规则的基本结构:示例:1.2 选择器的作用精确定位元素 - 选择特定的HTML元素批量样式应用 - 对多个元素应用相同样式条件性选择 - 根据元素状态或位置选择层次结构控制 - 基于元素关系选择1.3 选择器的分类2. 基本选择器2.1 通用选择器 (*)通用选择器选择页面上的所有元素。语法:示例:HTML示例:使用场景:类型选择器根据HTML元素的标签名选
2025-06-08 09:41:26
788
原创 Java详解LeetCode 热题 100(29):LeetCode 19. 删除链表的倒数第 N 个结点(Remove Nth Node From End of List)详解
*** 单链表节点的定义*/int val;// 节点的值// 指向下一个节点的指针// 无参构造函数// 带值的构造函数// 带值和下一个节点的构造函数第一步:理解基础概念熟练掌握链表的基本操作理解倒数定位的含义学会画图分析指针移动过程第二步:掌握基础解法先实现两次遍历法,理解删除操作的本质理解哨兵结点的作用和使用场景掌握边界条件的处理第三步:学习高级技巧理解双指针法的核心思想学会设置合适的指针间距掌握一次遍历的优化技巧第四步:拓展应用。
2025-06-08 08:22:40
1368
原创 分库分区分表详细教程
随着互联网业务的快速发展,单一数据库往往无法满足大规模数据存储和高并发访问的需求。分库分区分表是解决数据库性能瓶颈的重要技术方案。/*** 分片键选择最佳实践*//*** 1. 高基数原则:分片键应该有足够多的不同值*/// 好的选择:用户ID(每个用户都有唯一ID)// 坏的选择:性别(只有男/女两个值)// 坏的选择:状态(只有几个固定状态)/*** 2. 均匀分布原则:数据应该均匀分布到各个分片*/// 好的选择:哈希后的用户ID。
2025-06-07 08:23:45
777
原创 Java详解LeetCode 热题 100(28):LeetCode 2. 两数相加(Add Two Numbers)详解
*** 单链表节点的定义*/int val;// 节点的值// 指向下一个节点的指针// 无参构造函数// 带值的构造函数// 带值和下一个节点的构造函数第一步:理解基础概念掌握链表的基本操作理解逆序存储数字的含义学会手工模拟竖式加法第二步:掌握基础解法理解哨兵节点的作用掌握进位的处理方法练习基础的迭代法实现第三步:学习高级技巧理解递归解法的思路学习代码优化技巧掌握边界条件的处理第四步:拓展应用学习相关算法问题理解算法在实际中的应用。
2025-06-07 08:23:11
1335
原创 SpringBoot条件注解详细教程
条件注解是SpringBoot提供的一套强大的机制,允许我们根据特定条件来决定是否创建Bean、加载配置类或执行某些操作。它是SpringBoot自动配置的核心基础,让应用能够根据环境、依赖、配置等因素智能地决定加载哪些组件。核心特点:智能化:根据条件自动决定是否加载灵活性:支持多种判断条件可扩展:可以自定义条件逻辑高性能:在应用启动时进行条件判断,运行时不影响性能实现Condition// 操作系统条件@Override// 获取注解属性break;break;
2025-06-06 00:15:35
1462
观察者模式(Observer Pattern) 1. 什么是观察者模式? 2. 为什么需要观察者模式? 3. 观察者模式的核心概念 4. 观察者模式的结构 5. 观察者模式的基本实现 简单的气象站示例
2025-04-28
模板方法模式(Template Method Pattern)详解 1. 什么是模板方法模式? 2. 为什么需要模板方法模式? 3. 模板方法模式的核心概念 3.1 模板方法(Template Met
2025-04-26
桥接模式(Bridge Pattern)详解 1. 什么是桥接模式? 2. 为什么需要桥接模式? 3. 桥接模式的核心概念 4. 桥接模式的结构 5. 桥接模式的基本实现 5.1 基础示例:绘图应用
2025-04-26
迭代器模式(Iterator Pattern)详解 1. 什么是迭代器模式? 2. 为什么需要迭代器模式? 3. 迭代器模式的核心概念 3.1 迭代器(Iterator) 3.2 具体迭代器(Conc
2025-04-24
策略模式(Strategy Pattern)详解 1. 什么是策略模式? 2. 为什么需要策略模式? 3. 策略模式的核心概念 3.1 策略(Strategy) 3.2 具体策略(Concrete S
2025-04-24
备忘录模式(Memento Pattern) 1. 什么是备忘录模式? 2. 为什么需要备忘录模式? 3. 备忘录模式的核心概念 4. 备忘录模式的结构 5. 备忘录模式的基本实现 5.1 简单的文本
2025-04-24
装饰器模式(Decorator Pattern) 1. 装饰器模式简介 1.1 问题引入 1.2 装饰器模式的解决方案 2. 装饰器模式的定义和原理 2.1 定义 2.2 基本原理 2.3 装饰器模式
2025-04-24
软件设计七大原则详解 1. 单一职责原则(Single Responsibility Principle, SRP) 1.1 原则定义 1.2 为什么需要单一职责原则? 1.3 违反单一职责原则的例子
2025-04-24
状态模式(State Pattern)详解 一、状态模式简介 1.1 什么是状态模式? 1.2 为什么需要状态模式? 1.3 状态模式的核心思想 二、状态模式的结构 2.1 UML类图 2.2 各个组
2025-04-23
工厂模式详解 概述 为什么需要工厂模式? 工厂模式的类型 简单工厂模式 基本概念 类图结构 示例:创建不同类型的图形 1. 定义抽象产品接口 2. 实现具体产品类 3. 创建简单工厂类 4. 客户端使
2025-04-23
单例模式详解 1. 什么是单例模式? 1.1 单例模式的核心要素 1.2 为什么需要单例模式? 2. 单例模式的实现方式 2.1 饿汉式(静态常量) 2.2 饿汉式(静态代码块) 2.3 懒汉式(线程
2025-04-23
代理模式(Proxy Pattern) 1. 概述 1.1 基本概念 1.2 为什么需要代理模式 1.3 代理模式的四个角色 2. 代理模式的类型 2.1 静态代理 2.2 JDK动态代理
2025-04-23
中介者模式(Mediator Pattern) 1. 中介者模式概述 1.1 定义 1.2 基本思想 2. 中介者模式的结构 3. 中介者模式的UML类图 4. 中介者模式的工作原理 5. Java实
2025-04-23
责任链模式(Chain of Responsibility Pattern) 1. 责任链模式概述 1.1 定义 1.2 基本思想 2. 责任链模式的结构 3. 责任链模式的UML类图 4. 责任链模
2025-04-23
访问者模式(Visitor Pattern) 1. 访问者模式概述 1.1 定义 1.2 基本思想 2. 访问者模式的结构 3. 访问者模式的UML类图 4. 访问者模式的工作原理 5. Java实现
2025-04-23
一文读懂Java IO流 1. IO流基础概念 1.1 什么是IO流 1.2 IO流的分类 1.2.1 按数据传输单位分类 1.2.2 按功能角色分类 1.3 Java IO流体系结构 1.4 流的基
2025-04-14
Spring Boot实现短信服务完全指南
2025-04-13
加密与解密完全指南,使用Java实现 1. 加密基础知识 2. 对称加密详解 3. 非对称加密详解 4. 散列算法详解 5. 数字签名详解 6. 常见加密标准和协议 7. Java加解密应用与实践
2025-04-12
Java 8 异步编程利器:CompletableFuture详解
2025-04-12
一文读懂Java线程池详解,强力推荐
2025-04-12
一文读懂springboot+redis,历时两个半月,强力推荐
2025-04-11
一文读懂shell脚本的sed命令+零基础教会+附加示例
2025-04-10
一文读懂shell脚本的awk命令+零基础教会+附加示例
2025-04-10
一文读懂shell脚本的grep命令+零基础教会+附加示例
2025-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人