自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xinyi_java的博客

有朋自远方来,不亦乐乎

  • 博客(187)
  • 资源 (199)
  • 问答 (3)
  • 收藏
  • 关注

原创 微服务集成Windows版kafka

Windows环境下微服务集成kafka

2024-01-04 15:55:21 1248 6

原创 自定义注解

Spring AOP 默认是不会拦截本类方法调用的。AOP 通常是通过代理来实现的,而在同一类中的方法调用并不会触发代理,因此也不会触发 AOP。注解触发 AOP 切面,可以将这个方法抽取到另一个。这样,Spring AOP 将能够拦截这个被注解标记的类,并在这个新类上使用。

2024-01-03 15:25:41 927 1

原创 Spring-Cloud 微服务 Docker 部署

基于SpringBoot | Spring Cloud & Alibaba | Mybatis-Plus | Vue3 | vite2 | TypeScript | Ant-Design-Vue UI的多租户SaaS开发框架

2023-05-08 08:44:34 437 3

原创 spring-cloud集成数据库版本迁移工具flyway

Flyway实现数据库版本同步有两种方式,一种就是直接导包,通过配置文件使用,还有一种就是自定义的方式。

2022-09-27 10:48:31 2814 4

原创 搜索引擎和分布式数据库-Elasticsearch

在实际应用中,根据具体场景合理设置索引、映射、查询和聚合,同时关注安全性和性能调优,能够发挥 Elasticsearch 在全文搜索、日志分析、数据仓库等领域的优势。DSL 提供了丰富的查询语法,可以用于执行全文搜索、精确匹配、范围查询、聚合等操作。Elasticsearch 是一个基于 Lucene 构建的开源搜索引擎,提供了一个分布式、多租户的全文搜索引擎,用于处理大规模数据的搜索、分析和可视化。在 Elasticsearch 中,数据建模是一个关键的环节,直接影响搜索和分析的效率。

2024-01-24 09:02:55 954 2

原创 并发集合类

它们提供了线程安全的数据结构,使得多个线程可以安全地并发访问和修改集合中的元素,而不需要额外的同步机制。是一个线程安全的动态数组,它通过在修改操作时创建一个新的拷贝来实现线程安全。是一个用于实现生产者-消费者模型的队列,它提供了线程安全的入队和出队操作,还支持阻塞操作,例如。是一个非阻塞的、线程安全的队列实现。它基于无锁算法,适用于高并发的队列操作。,它引入了分段锁机制,允许多个线程同时进行读取操作,从而提高了并发性能。是一个线程安全的哈希表实现,适用于多线程并发访问。的实现,它是一个线程安全的有序集合。

2024-01-17 16:13:20 438 3

原创 Lambda 表达式和函数式编程

Lambda表达式是一种轻量级的匿名函数,它可以被看作是一种简洁的方式来表示单一方法的接口(Single Abstract Method,SAM)。Stream API是Java 8中引入的用于处理集合数据的函数式编程的工具。它允许你以声明性的方式处理数据集合,支持各种操作,如映射、过滤、归约等。Lambda表达式和函数式编程是Java 8引入的两个重要特性,为Java带来了更加灵活和简洁的编程方式。函数式接口是只包含一个抽象方法的接口。包,其中包含了一些常用的函数式接口,如。

2024-01-17 16:04:12 448 1

原创 泛型和类型擦除

Java中的泛型是一种强大的特性,它允许我们编写更通用、类型安全的代码。然而,Java的泛型实现是通过类型擦除来实现的,这意味着在编译时泛型类型信息会被擦除,而在运行时,对象只知道它们的原始类型。Java的泛型在编译时引入类型检查,但在运行时,泛型类型信息会被擦除。泛型提供了编译时类型检查,可以在编译时捕获类型错误,避免在运行时出现类型异常。类中的方法也可以是泛型的,可以独立于类的泛型参数。由于类型擦除,对于泛型类中的方法,重载可能会变得模糊。泛型数组是非法的,因为在运行时无法具体知道泛型类型。

2024-01-17 15:53:03 900

原创 Java secret - 03

文章目录Java secret - 03源管理工具类全局邮件帐户邮件内部工具类邮件发送客户端邮件账户对象邮件异常工具类邮件工具类邮件用户名密码验证器Redis使用FastJson序列化redis配置缓存 通用常量spring redis 工具类Token解析器Redis授权认证器Redis授权文件上传工具类Java secret - 03源管理工具类package com.xueyi.common.datasource.utils;import com.baomidou.dynamic.datas

2024-01-15 15:08:33 951 1

原创 Java secret - 02

文章目录Java secret - 02HTML过滤器Http客户端工具类IP工具类Jwt工具类 | 会员端Jwt工具类 | 平台端Jwt工具类分页工具类Excel数据格式处理适配器Excel相关处理客户端工具类sql操作工具类时间工具类错误信息处理类树结构组装工具类Base 基类Basis 基类Tree 基类Base 混合基类Basis 混合基类Tree 混合基类Base 基类 对象映射器Tree 基类 对象映射器Base 基类 对象映射器Tree 基类 对象映射器Java secret - 02HT

2024-01-15 15:07:24 805

原创 Java secret - 01

文章目录Java secret - 01cron表达式工具类字典缓存管理工具类常用数字常量常用字符换常量数组工具类Boolean类型工具类字符集工具类类工具类集合工具类类型转换工具类信息脱敏工具类枚举工具类唯一ID工具类List集合工具类LocalDateTime工具类Map工具类数字工具类对象工具类反射工具类正则工具类加密算法工具类spring工具类字符串工具类类型工具类文件类型工具类文件处理工具类图片处理工具类媒体类型工具类转义和反转义工具类Java secret - 01cron表达式工具类pa

2024-01-15 15:06:13 904

原创 容器-K8s

是一个功能强大的容器编排和管理平台,提供了丰富的特性和工具,用于自动化部署、扩展和管理容器化应用程序。它简化了复杂应用程序的管理,提供了弹性、可靠和可扩展的部署方式,同时具备自愈和滚动升级的能力。开发者可以通过集成监控和日志收集工具,收集和分析容器和应用程序的指标和日志数据,以便及时发现问题、优化性能和进行故障排查。提供了一个强大的容器编排系统,可以自动管理和调度容器化应用程序的部署、更新和扩展。拥有庞大的开源社区和丰富的生态系统,提供了大量的扩展和整合选项。可以自动调整容器的副本数量,以适应负载的变化。

2024-01-15 13:22:15 833

原创 容器-云原生

这些云原生基础设施和平台提供了自动化管理、弹性扩展、高可用性和可靠性等特性,使得开发者能够更加专注于应用程序的开发和交付。它通过容器化、微服务架构、自动化和弹性扩展等方式,提高了应用程序的可移植性、可扩展性、可靠性和可管理性,适应了现代云环境中快速交付和快速变化的需求。自动化包括构建和测试过程的自动化,以及基础设施的自动化配置和管理,从而加快交付速度、降低错误率,并提高可靠性和可维护性。它强调将应用程序设计为可弹性扩展、可容错、可观测和可维护的微服务,并结合自动化和容器化技术来实现持续交付和部署。

2024-01-15 13:21:29 382

原创 容器-Docker

它简化了开发和部署过程,提高了开发团队的协作效率,并提供了一致的运行环境,从而加速了应用程序的交付和可扩展性。镜像是容器的构建模块,类似于一个只读的模板。一个镜像可以生成多个容器,每个容器都是相互隔离的运行环境,可以独立运行应用程序。容器提供了一致的运行环境,消除了应用程序在不同环境中的依赖和兼容性问题。是一种开源的容器化平台,它允许开发者将应用程序及其所有依赖项打包到一个独立的、可移植的容器中。是官方的公共仓库,包含了大量的官方和社区维护的镜像。),用于管理容器的生命周期、镜像的构建和存储、网络设置等。

2024-01-15 13:20:41 352

原创 分布式-API网关

网关在分布式系统中扮演了重要角色,它通过集中化管理和提供统一的API访问接口,简化了系统的复杂性,并提供了安全性、可靠性和性能方面的增强功能。网关可以实现缓存策略,将经常访问的API响应缓存起来,以提高系统的响应速度和减轻后端服务的负载。网关可以收集和分析请求和响应的数据,提供监控指标和日志记录,帮助进行故障排查、性能优化和业务分析。请求的数据,并生成报告和指标,以便监测系统的性能和使用情况。网关,客户端可以通过一个统一的入口点访问多个后端服务,减少了客户端和后端服务之间的直接耦合。它可以根据请求的路径、

2024-01-12 13:20:05 911 1

原创 分布式-Redis

通过将数据分布在多个节点上,分布式Redis能够提供更大的存储容量、更高的读写性能和更好的可扩展性。)模式,其中一个节点作为主节点接收写操作,其他节点作为备节点复制主节点的数据。在数据分布和同步过程中需要保证数据的一致性,常见的一致性模型包括强一致性和最终一致性。键是唯一的,可以通过键来快速检索和访问对应的值。可以通过添加更多的节点来实现水平扩展,从而提供更大的存储容量和更高的读写性能。提供了原子性的操作和分布式锁的实现,用于实现分布式环境下的资源访问控制。的节点之间需要进行通信,以实现数据的读写和同步。

2024-01-12 13:18:24 924

原创 分布式-ZooKeeper

它提供了一个简单而健壮的分布式协调基础,可以用于解决分布式系统中的一致性、配置管理、命名服务、分布式锁等问题。提供了一致性和选举的原语,可以用于实现分布式系统中的领导者选举、分布式锁和分布式队列等机制。通过在集群中的多个节点之间复制数据,实现数据的冗余和容错性,从而提供高可用性。,开发人员可以简化分布式系统的设计和实现,并提供可靠和高效的分布式协调能力。来监听节点的变化事件,当节点的数据或状态发生变化时,会触发相应的事件通知。提供了可重入的分布式锁实现,用于保证在分布式环境中的资源访问的互斥性。

2024-01-12 13:16:21 837

原创 分布式-数据库

需要注意的是,分布式数据库的设计和实现是一项复杂的任务,需要综合考虑系统的需求、性能要求、一致性要求和可用性需求。选择适当的分布式数据库技术,并进行合理的配置和优化,才能充分发挥分布式数据库的优势和能力。分布式数据库通常会复制数据到多个节点上,以提供数据的冗余备份和高可用性。当分布式数据库中的节点发生故障时,系统需要能够自动检测故障节点并进行故障转移或数据重平衡,以保证系统的可用性和数据的完整性。一致性哈希是一种常用的分布式数据库数据分片算法,用于将数据均匀地分布在多个节点上,并处理节点的动态加入和退出。

2024-01-12 13:14:34 918

原创 分布式-锁

通过这些特性,节点可以根据序号来确定锁的获取顺序,并通过监听机制等待锁的释放。常见的解决方案是设置锁的超时时间,当节点在一定时间内没有释放锁或续约锁时,其他节点可以尝试获取锁。如果节点的序号不是最小的,表示该节点还没有获得锁,它需要监听前一个节点的删除事件,一旦前一个节点被删除(即锁被释放),节点会收到通知并重新尝试获取锁。获取锁节点后,节点需要检查是否成为了最小的节点,即它的节点序号是当前锁路径下的最小值。节点执行完临界区代码后,删除自己创建的锁节点,这样后面的节点就有机会获得锁。

2024-01-12 13:13:06 890

原创 分布式-事务

分布式事务的目标是确保多个操作在不同节点上的执行具有一致性和隔离性,即要么所有操作都成功执行,要么所有操作都回滚到事务开始前的状态。需要注意的是,分布式事务的设计和实现是一项复杂的任务,需要综合考虑系统的特性、性能要求、数据一致性级别和可用性需求。不同的分布式事务技术和模型适用于不同的应用场景,需要根据具体需求选择合适的技术,并进行适当的权衡和优化。它通过一系列局部事务的组合和补偿来实现全局事务的一致性,每个局部事务都有自己的回滚操作。的改进,引入了超时机制来处理协调者和参与者之间的通信故障。

2024-01-12 13:11:12 339

原创 分布式-系统

以上介绍的知识点只是分布式系统的基础,实际应用中还需要根据具体情况选择合适的架构、技术和算法来设计和实现分布式系统。分布式系统中的节点可以根据负载均衡算法来分担任务和请求的负载,使得系统能够更有效地利用资源和提供更好的性能。然而,数据复制带来了数据一致性的问题,需要采取合适的一致性协议和算法来确保数据的一致性和同步。这些节点通过网络进行通信,交换数据和消息,实现信息的传递和协作。分布式系统是由多个相互协作的计算机节点组成的系统,这些节点通过网络连接进行通信和协调,共同完成某个特定的任务或提供某种服务。

2024-01-12 13:09:18 840

原创 架构-分布式架构

总结起来,分布式架构是一种将系统功能和数据分布在多个节点上的架构模式,通过网络通信和协作来实现系统的功能。在设计和实现分布式架构时,需要考虑服务发现和治理、分布式安全、异步通信和消息传递、扩展性和弹性、监控和日志等关键问题,以构建可靠、高可用性和可扩展的分布式系统。在分布式架构中,服务的部署和变化是动态的,需要实现服务的发现和注册机制,以便其他组件或服务可以找到并调用相应的服务。分布式架构是一种将系统的功能和数据分布在多个独立的计算机节点上,通过网络进行通信和协作的架构模式。

2024-01-12 11:32:25 374

原创 架构-EDA架构

在应用事件驱动架构时,需要综合考虑事件的设计、发布和订阅机制、事件处理逻辑、持久化和重放、监控和追踪、错误处理和回滚机制、版本管理和兼容性,以及与其他相关概念和技术的结合等因素。在事件驱动架构中,系统的各个组件(也称为服务或应用程序)之间通过发布和订阅事件的方式进行解耦,从而实现松散耦合、可扩展和可维护的系统。事件是系统中发生的有意义的事情,可以是状态的变化、用户的操作、消息的到达等。在事件驱动架构中,由于组件之间的通信是异步的,可能涉及到多个组件的操作,因此需要考虑分布式事务的处理。

2024-01-12 11:30:38 373

原创 架构-微服务架构

它通过将应用程序划分为小型、自治的服务,实现了独立开发、部署和扩展。微服务架构适用于复杂的应用程序和系统,但需要对分布式系统的复杂性和相关挑战有所了解,并采取适当的设计和管理措施。它们是独立的、自治的,并且可以独立地进行开发、部署和扩展。微服务架构将整个系统划分为一组小型的、相互独立的服务,每个服务负责一个明确定义的业务功能。服务之间通过明确的接口和协议进行通信,服务边界定义了每个服务的功能范围和职责。通过自动化工具和流程,可以实现服务的自动部署、监控、故障恢复和扩展,以提高系统的可靠性和可管理性。

2024-01-12 11:28:16 913

原创 架构-SOA架构

它通过将系统划分为独立的服务单元,实现了组件的自治和灵活性,支持系统集成和复杂业务流程的编排。服务编排指定服务之间的执行顺序和依赖关系,而服务组合允许将多个服务组合成更大的服务单元。面向服务的设计鼓励服务的重用性,通过定义明确定义的接口和契约,服务可以在不同的应用程序和系统中共享和复用。面向服务架构需要实现服务的注册、发现、版本控制、安全性等方面的管理和治理机制,以确保系统的稳定性和安全性。将应用程序拆分为服务需要考虑服务的边界和划分,确保服务之间的职责清晰、功能独立,并且定义良好的服务契约。

2024-01-12 11:25:26 326

原创 架构-单一架构

在设计和选择架构时,需要综合考虑应用的规模、复杂度、性能要求、可维护性、可扩展性和团队规模等因素,以实现一个符合需求的高效、可靠和可维护的软件系统。)是最传统的软件架构模式,将整个应用程序作为一个单一的、紧耦合的单元进行开发和部署。在单一架构中,所有的功能模块都运行在同一个进程中,并共享相同的数据库和资源。总的来说,单一架构适用于小型和简单的应用,其中需求变化不频繁,对可扩展性和维护性要求不高的场景。单一架构中的开发相对简单,因为所有的代码都在同一个代码库中,并且模块之间可以直接调用彼此的函数和方法。

2024-01-12 11:22:02 350

原创 数据库-Redis

通过设置合适的过期时间、缓存预加载和容错机制,可以有效地应对缓存穿透(查询不存在的数据)和缓存雪崩(大量缓存同时失效)等问题,提高系统的稳定性和可靠性。它可以用作简单的消息队列系统,支持在队列的头部或尾部插入、弹出和阻塞操作,适用于异步任务处理和实时数据处理等场景。实现分布式锁和同步机制可以解决在分布式环境中的并发访问问题,确保数据的一致性和并发控制。)命令,可以在分布式环境中实现简单的分布式锁。提供了地理位置和地理信息的支持,可以存储和查询基于地理位置的数据,如地理坐标、附近的地点和地理范围搜索等。

2024-01-09 10:18:25 828

原创 数据库-非关系型数据库

由于缺乏严格的数据一致性和复杂查询支持,非关系型数据库可能不适用于某些需要强一致性和复杂数据分析的应用。非关系型数据库在一致性和可用性之间进行权衡,通常倾向于提供更高的可用性和分布式特性,而对一致性要求较低。)是一类不使用传统关系模型的数据库,它提供了一种更灵活、可扩展和高性能的数据存储和访问方式。通过分片,非关系型数据库可以在多个节点上分布数据负载,从而实现数据的水平扩展和高吞吐量。这些数据库提供了不同的数据模型、功能和适用场景,根据具体的需求可以选择合适的非关系型数据库来满足数据存储和访问的要求。

2024-01-09 10:12:15 952

原创 数据库-MySQL

它适用于各种规模的应用,从小型个人项目到大型企业级应用,提供了丰富的功能和灵活的配置选项,满足不同业务需求和性能要求。提供了细粒度的权限控制,可以控制用户对数据库对象(如表、视图、存储过程等)的操作权限,包括查询、插入、更新、删除等操作。存储过程和函数可以被调用和执行,用于封装复杂的业务逻辑和数据操作,提高代码的复用性和性能。的查询优化器负责分析和优化查询语句的执行计划,以选择最有效的查询策略和索引使用方式,从而提高查询性能。使用表格(表)来组织和存储数据,表由列和行组成,每列具有特定的数据类型和约束。

2024-01-09 10:09:50 842

原创 数据库-关系型数据库

常见的查询操作包括选择(SELECT)、过滤(WHERE)、排序(ORDER BY)、连接(JOIN)和聚合(GROUP BY、SUM、AVG等)等。数据完整性包括实体完整性(每个表格都有一个主键)、参照完整性(外键与主键的关联)、域完整性(列的取值范围和数据类型限制)和用户定义的完整性规则(如检查约束)等。SQL提供了丰富的语法和功能,用于创建、修改和查询数据库对象(表格、视图、索引等),以及执行数据的插入、更新和删除操作。每个表格由行和列组成。行表示记录(数据的单个实例),而列表示属性(数据的特征)。

2024-01-09 10:07:33 367

原创 结构化的数据存储系统-数据库

数据库性能调优是通过优化查询、索引、表设计、配置参数等来改善数据库的性能。它提供了创建、查询、更新和删除数据的功能,并管理数据库的安全性、完整性和性能等方面。它是一个结构化的数据存储系统,可以用来管理大量数据并支持数据的检索、更新和删除操作。数据库范式是一组规则,用于设计关系型数据库的表格结构,以减少数据冗余和提高数据的一致性。数据库安全性是保护数据库中数据的机密性、完整性和可用性的过程。外键是一个表格中的列,它与另一个表格的主键形成关联。主键是表格中的一列或一组列,用于唯一标识表格中的每一行数据。

2024-01-09 10:05:44 866 1

原创 设计模式-代表性模式

设计模式是在软件设计中经常使用的经验总结和最佳实践。它们提供了一种通用的解决方案,用于解决常见的设计问题,并促进代码的可重用性、可维护性和灵活性。

2024-01-09 09:45:58 768

原创 行为型模式-命令模式

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而使得可以用不同的请求对客户端进行参数化,同时支持将请求排队、记录日志、撤销等操作。通过命令模式,可以实现请求发送者和请求接收者之间的解耦,提高代码的灵活性和可维护性。命令模式还可以支持命令的撤销、排队、记录日志等高级功能,使得系统更加可靠和可扩展。命令接口定义了执行请求的方法,具体命令类实现了命令接口,负责具体的请求处理逻辑。由于命令对象封装了请求的具体操作,可以轻松实现命令的撤销和恢复功能。

2024-01-09 09:23:02 352

原创 行为型模式-职责链模式

是具体处理者,客户端通过创建具体处理者对象,并设置它们的下一个处理者,将它们串成一条处理链。当有请求需要处理时,客户端将请求发送给链的第一个处理者,每个处理者判断自己是否能够处理请求,如果能够处理则处理请求并结束,否则将请求传递给下一个处理者。具体处理者实现了抽象处理者的接口,并负责具体的请求处理逻辑。职责链模式将请求发送者和接收者解耦,使得发送者无需知道请求被谁处理,接收者也无需知道请求的发送者是谁。可以随时在链中添加新的处理者对象,或者修改现有处理者的顺序,从而灵活地扩展和调整处理链。

2024-01-09 09:22:44 362

原创 行为型模式-状态模式

状态模式将对象的状态封装成不同的状态类,并通过状态类之间的切换来改变对象的行为。当环境类的状态发生改变时,它会更新当前状态对象,并将行为委托给新的状态对象。通过状态模式,可以根据对象的内部状态来改变其行为,实现对象的状态与行为的分离。抽象状态类定义了状态对象的接口,具体状态类实现了抽象状态类的接口,负责具体的状态行为。状态模式将对象的状态封装成不同的状态类,使得状态与行为分离,每个状态类只需要关注自身的行为,简化了对象的维护和扩展。状态模式将状态转换逻辑集中到具体状态类中,使得状态转换变得更加明确和可控。

2024-01-09 09:22:23 333

原创 行为型模式-访问者模式

具体访问者类实现了访问者接口的方法,具体元素类实现了元素接口的方法,并在其中调用访问者的方法。通过访问者模式,客户端可以通过不同的访问者访问不同的元素,并执行不同的操作。访问者定义了对每个具体元素的访问操作,具体访问者实现了访问者定义的操作逻辑。元素定义了接受访问者访问的方法,具体元素实现了元素定义的方法。由于访问者模式将操作封装在具体访问者中,因此增加新的操作只需要增加一个新的具体访问者类,无需修改元素类的代码。访问者模式可以很方便地扩展新的访问操作,对于元素类的修改是封闭的。

2024-01-09 09:21:54 354

原创 行为型模式-迭代器模式

客户端通过创建具体聚合对象,并添加元素到聚合对象中,然后通过调用聚合对象的创建迭代器方法获取一个迭代器对象。迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供一种顺序访问聚合对象中各个元素的方法,而不需要暴露聚合对象的内部表示。迭代器定义了访问和遍历元素的接口,聚合对象提供创建迭代器的方法,用于返回迭代器对象。客户端通过迭代器的统一接口访问聚合对象中的元素,无需关心聚合对象的内部结构和实现细节。迭代器模式将聚合对象的遍历行为封装到迭代器中,使得聚合对象可以独立于具体的遍历算法。

2024-01-08 16:59:15 361

原创 行为型模式-策略模式

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装到独立的类中,使得它们可以互相替换。上下文是使用算法的类,它持有一个策略对象,并在运行时调用策略对象的算法;策略接口定义了算法的统一接口,所有具体策略都实现了策略接口,具体策略类封装了具体的算法。客户端通过创建不同的具体策略对象,并将其设置到上下文中,然后调用上下文的执行方法来执行相应的算法。策略模式将算法封装到独立的类中,使得算法的变化不会影响到使用算法的客户端。策略模式由三个核心角色组成:上下文(

2024-01-08 16:58:32 374

原创 行为型模式-观察者模式

观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。通过观察者模式,可以实现对象之间的解耦,主题和观察者之间的关系是动态的,可以随时进行注册和移除。客户端通过创建主题和观察者,并将观察者注册到主题中,当主题的消息发生变化时,观察者会收到通知并进行相应的更新。观察者定义了接收和处理主题通知的方法。主题和观察者之间的依赖关系是松耦合的,它们可以独立地进行扩展和修改,不会相互影响。

2024-01-08 16:57:39 367

原创 结构型模式-组合模式

组合模式使得用户可以统一处理单个对象和组合对象,无需区分它们之间的差异,从而简化了客户端的代码。组合模式的核心思想是通过抽象类或接口来定义组合对象和叶子对象的公共操作,并在组合对象中维护一个子对象的集合。通过组合模式,可以将单个对象和组合对象统一对待,简化了客户端的代码。组合组件是组合对象的类,它可以包含其他组合对象或叶子对象作为其子对象。客户端无需区分组合对象和叶子对象,统一使用组件类的接口进行操作,简化了客户端的代码。组件是组合对象和叶子对象的抽象类或接口,它定义了组合对象和叶子对象的公共操作。

2024-01-08 16:37:43 333

JavaEE 框架篇二 MyBatis框架.xmind

JavaEE 框架篇二 MyBatis框架

2021-09-12

JavaEE 框架篇一 Spring.xmind

JavaEE 框架篇一 Spring

2021-09-12

JavaEE 框架篇三 SpringMVC框架.xmind

JavaEE 框架篇三 SpringMVC框架

2021-09-12

JavaEE 框架篇四 SpringCloud.xmind

JavaEE 框架篇四 SpringCloud

2021-09-12

Java 基础篇21-25.xmind

Java 基础篇21-25

2021-09-12

Java 基础篇06-10.xmind

Java 基础篇06-10

2021-09-12

Java 基础篇11-15.xmind

Java 基础篇11-15

2021-09-12

Java 基础篇41-45.xmind

Java 基础篇41-45

2021-09-12

Java 基础篇46-50.xmind

Java 基础篇46-50

2021-09-12

Java 基础篇16-20.xmind

Java 基础篇16-20

2021-09-12

Java 基础篇01-05.xmind

Java 基础篇01-05

2021-09-12

Java 基础篇26-30.xmind

Java 基础篇26-30

2021-09-12

Java 基础篇31-35.xmind

Java 基础篇31-35

2021-09-12

Java 基础篇36-40.xmind

Java 基础篇36-40

2021-09-12

二阶段面试题.md

二阶段面试题

2021-09-12

JavaSE面试.xmind

JavaSE面试

2021-09-12

三阶段面试题.md

三阶段面试题

2021-09-12

JavaEE进阶面试总结.xmind

JavaEE进阶面试总结

2021-09-12

四阶段面试题.md

四阶段面试题

2021-09-12

JavaWEB面试.xmind

JavaWEB面试

2021-09-12

软件开发人员职业生涯管理之软技能

很少有软件开发人员会主动管理自己的职业生涯。可是,成功的软件开发人员之所以能成功都不是偶然的。他们目标明确,为了达成目标,他们制订了坚实可靠而又深思熟虑的计划。如果你真的想在软件开发这个充满竞争的世界里脱颖而出,那么你要做的远远不止一份光鲜靓丽的简历,以及任何碰巧获得的工作。你需要通盘考虑之后再决定——要做什么,什么时候做,以及如何义无反顾。在本篇中,我会带你体验决策过程:你要决定自己想要从软件开发这个职业中获得什么,以及如何去获得。 你所能犯的最大错误就是相信自己是在为别人工作。这样一来你对工作的安全感已然尽失。职业发展的驱动力一定是来自个体本身。记住:工作是属于公司的,而职业生涯却是属于你自己的。 ——厄尔•南丁格尔

2024-01-05

XueYi-MultiSaas部署

XueYi-MultiSaas docker部署

2023-05-08

JVM调优篇.pdf

JVM调优篇

2021-09-12

Java基础面试.docx

Java基础面试

2021-09-12

JavaSE常见面试题-线程篇.pdf

JavaSE常见面试题-线程篇

2021-09-12

JavaEE-框架篇.pdf

JavaEE-框架篇

2021-09-12

JavaSE常见面试题-高级反射-JVM篇.pdf

JavaSE常见面试题-高级反射-JVM篇

2021-09-12

JavaWEB 篇五 jsp 技术.xmind

JavaWEB 篇五 jsp 技术

2021-09-12

JavaWEB 篇三 Http协议.xmind

JavaWEB 篇三 Http协议

2021-09-12

JavaWEB 篇一 JDBC 技术.xmind

JavaWEB 篇一 JDBC 技术

2021-09-12

JavaWEB 篇四 Cookie 和 Session.xmind

JavaWEB 篇四 Cookie 和 Session

2021-09-12

Java WEB 篇六 XML 技术.xmind

Java WEB 篇六 XML 技术

2021-09-12

Java WEB 篇十 前端技术.xmind

Java WEB 篇十 前端技术

2021-09-12

Java WEB 篇七 Servlet 生命周期.xmind

Java WEB 篇七 Servlet 生命周期

2021-09-12

Java WEB 篇八 tomcat 容器是如何创建 servlet 类实例?用到了什么原 理?.xmind

Java WEB 篇八 tomcat 容器是如何创建 servlet 类实例?用到了什么原 理?

2021-09-12

JavaWEB 篇二 关系数据库中连接池的机制是什么.xmind

JavaWEB 篇二 关系数据库中连接池的机制是什么

2021-09-12

Java WEB 篇九 Java servlet、filter、listener、interceptor ?.xmind

Java WEB 篇九 Java servlet、filter、listener、interceptor 之间的区别和联系?

2021-09-12

JavaSE 常见面试题-线程篇.xmind

JavaSE 常见面试题-线程篇

2021-09-12

Java JVM调优篇.xmind

Java JVM调优篇

2021-09-12

JavaSE 高级反射-JVM篇.xmind

JavaSE 高级反射-JVM篇

2021-09-12

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

TA关注的人

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