自定义博客皮肤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)
  • 收藏
  • 关注

原创 08 设计模式-结构型模式-过滤器模式

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。

2024-10-24 08:59:32 949

原创 07 设计模式-结构型模式-桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类,这两种类型的类可被结构化改变而互不影响。桥接模式的目的是将抽象与实现分离,使它们可以独立地变化,该模式通过将一个对象的抽象部分与它的实现部分分离,使它们可以独立地改变。它通过组合的方式,而不是继承的方式,将抽象和实现的部分连接起来。

2024-10-24 08:29:48 1107

原创 06 设计模式-结构型模式-适配器模式

适配器模式(Adapter Pattern)充当两个不兼容接口之间的桥梁,属于结构型设计模式。它通过一个中间件(适配器)将一个类的接口转换成客户期望的另一个接口,使原本不能一起工作的类能够协同工作。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。假设有一个音频播放器,它只能播放 MP3 文件。

2024-10-24 07:30:22 753

原创 04 springboot-工程搭建案例(多环境部署,数据源, Swagger, 国际化,工具类)

项目搭建模板(多环境切换) ,

2024-10-22 15:54:31 1015

原创 01 springboot-整合日志(logback-config.xml)

logback-config.xml 是一个用于配置 Logback 日志框架的 XML 文件,通常位于项目的 classpath 下的根目录或者 src/main/resources 目录下。Logback 提供了丰富的配置选项,可以满足各种不同的日志需求。需要根据具体情况进行配置。

2024-10-21 21:29:43 743

原创 03 springboot-国际化

Spring Boot 提供了很好的国际化支持,可以轻松地实现中英文国际化。首先,在 `resources` 目录下创建一个名为 `messages.properties` 的文件,用于存放英文文本。然后,在同一目录下创建一个名为 `messages_zh_CN.properties` 的文件,用于存放中文文本。

2024-10-21 16:02:12 1127

原创 02 springboot-整合Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

2024-10-21 14:46:59 530

原创 05 设计模式-创造型模式-原型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

2024-10-18 19:53:27 1070

原创 04 设计模式-创造型模式-建造者模式

建造者模式是一种创建型设计模式,它允许你创建复杂对象的步骤与表示方式相分离。建造者模式是一种创建型设计模式,它的主要目的是将一个复杂对象的构建过程与其表示相分离,从而可以创建具有不同表示形式的对象。

2024-10-17 14:15:52 2323

原创 03 设计模式-创造型模式-单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。

2024-10-17 10:30:23 1281

原创 02 设计模式-创造型模式-抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。通过使用抽象工厂模式,可以将客户端与具体产品的创建过程解耦,使得客户端可以通过工厂接口来创建一族产品。

2024-10-16 16:30:15 1131

原创 01 设计模式-创造型模式-工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。

2024-10-16 15:53:15 2219

原创 00 设计模式介绍

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

2024-10-16 09:02:46 1034

原创 00 springboot项目创建

我们创建SpringBoot项目有两种方式:- Spring Initializr spring initerzie 方式创建: 启动类, 依赖 生成,但是需要网络- maven的方式 maven方式创建: 启动类, 依赖, 这些都需要手动编写,但是不需要网络

2024-10-15 10:35:51 1372

原创 java-08 jdbc

jdbc连接数据库是一种用于在Java应用程序中访问和操作数据库的技术。

2024-10-11 16:39:11 931

原创 java-07 多线程-并发编程(分布式锁、Redis锁)

分布式锁是用于控制分布式系统中的多个节点对共享资源的访问。由于分布式系统中的节点可能位于不同的机器甚至不同的地理位置,因此分布式锁的实现比线程锁和进程锁要复杂得多。分布式锁需要在网络中的多个节点之间进行协调,以保证锁的唯一性和一致性。分布式锁就像是一个网络版的门卫,确保在多台计算机上运行的程序不会同时操作同一个数据。想象一下,每台计算机都要先拿到这个门卫的钥匙,才能操作数据。这样,就能防止数据混乱,确保每次只有一个程序在使用数据。

2024-10-11 10:41:26 925

原创 java-07 多线程-并发编程

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。包含:synchronized、原子变量、ThreadLocal、CountDownLatch、Future和CompletableFuture、volatile、线程池

2024-10-10 18:54:47 1986

原创 java-07 多线程-并发编程(线程池,线程状态)

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。

2024-10-10 17:07:24 754

原创 java-07 多线程-并发编程(ThreadLocal)

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。

2024-10-10 17:04:45 751

原创 java-07 多线程-并发编程(原子变量、CountDownLatch、Future和CompletableFuture、volatile)

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。在另一篇文章介绍了多线程、进程、并发、并行等基本概念,并分析了线程安全问题产生的原因,同时也整理了线程实现的4种方式,并做了对比,请参考。

2024-10-10 17:02:55 1212

原创 java-07 多线程-并发编程(synchronized、原子变量、ThreadLocal、CountDownLatch、Future和CompletableFuture、volatile、线程池)

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。

2024-10-10 16:58:22 991

原创 java-06 多线程-4种实现方式

多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。在Java中实现多线程的方法有多种,主要包括继承Thread类、实现Runnable接口、实现Callable接口并通过FutureTask包装器来创建Thread线程,以及使用ExecutorService来管理线程。

2024-10-10 08:39:34 1031

原创 java-05 数据结构-队列-LinkedBlockingQueue 和 ConcurrentLinkedQueue的区别

在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。

2024-10-09 10:27:08 751

原创 java-04 数据结构-队列-ConcurrentLinkedQueue队列详解及应用

ConcurrentLinkedQueue是Java并发编程中的一个重要工具,它提供了线程安全的无界非阻塞队列实现。通过高效的无锁编程技术,它能够在高并发场景下保持出色的性能表现。在需要快速插入和删除元素、无界队列以及高并发访问等场景中,ConcurrentLinkedQueue都是一个非常好的选择。然而,在使用时我们也需要注意其size()和isEmpty()方法可能带来的并发问题,并根据具体需求选择合适的同步机制或原子变量进行辅助处理。

2024-10-09 09:32:37 1004

原创 java-03 数据结构-队列-LinkedBlockingQueue队列详解及应用

LinkedBlockingQueue 是 Java.util.concurrent 包下的一个类,它是一个线程安全的、基于链表的、可选有界的队列。它实现了 BlockingQueue 接口,可以在多线程环境下安全地使用。链表实现:LinkedBlockingQueue 是基于链表的数据结构实现的队列,它可以高效地支持插入和删除操作。线程安全:LinkedBlockingQueue 内部使用了锁来保证多线程环境下的线程安全。

2024-10-09 08:50:17 879

原创 java-02 数据结构-队列

在Java中,队列是一种常见的数据结构,用于在保持顺序的同时存储和检索数据。Java提供了java.util.Queue接口,它的常见实现包括ArrayDeque、LinkedList和PriorityQueue等。

2024-10-09 07:39:10 968

原创 JDK8-Stream总结【精简】

JDK8 Stream 流是 Java 8中引入的一个新特性,它提供了一种全新的处理集合的方式,使得代码更加简洁、易读、高效。 Stream 流的核心思想是将集合或数组转化为一个流,然后通过各种操作对其进行处理,最后得到一个新的流或结果。

2024-10-08 11:02:08 1202

原创 java-01 正则表达式

java 中通过正则表达式可以实现对字符串的有效匹配和处理。本篇文章将详细介绍 Java 中的正则表达式,包括基本概念、语法规则、常用方法等。

2024-09-27 17:30:33 1234

原创 JDK8-DateApi(LocalDate、LocalTime、LocalDateTime...)

在Java8之前,处理日期时间的类是Date、Calendar,这两个在使用起来总是让人感觉不是很舒服,在设计上面有一些缺陷,并且java.util.Date和SimpleDateFormatter都不是线程安全的. 作为JDK1.8 推出的LocalDate、LocalTime、LocalDateTime这个三个时间处理类,主要用来弥补之前的日期时间类的不足,简化日期时间的操作. 在格式化操作方面,也推出了一个新的格式化类DateTimeFormatter。

2024-09-26 10:50:06 382

原创 JDK8-Stream总结3

原始流(Stream):这是流的基本形式,其中操作是顺序执行的,意味着每个操作的执行都在前一个操作完成后开始。并行流(Parallel Stream):并行流是流的一种形式,其中操作是并行执行的。这意味着多个线程可以同时对流中的元素进行操作。

2024-09-25 17:23:55 407

原创 JDK8-Stream总结2

‌Stream操作‌在Java中主要用于处理集合数据,它提供了一种高效且易读的方式来处理数据集合(如List、Set等)。Stream操作大致可以分为两类:中间操作和终端操作。中间操作‌包括filter、map等,它们返回一个新的流,并且包含所有之前的操作结果。这些操作总是延迟计算,意味着它们只在终端操作时执行,这样可以最大限度地优化资源使用。终端操作‌则会产生一个新的集合或值,每个流只能进行一次终端操作。终端操作结束后,流无法再次使用。终端操作包括遍历(foreach)、匹配(find-match)等

2024-09-25 17:22:12 348

原创 JDK8-Stream总结1

lambda表达式是stream的基础,初学者建议先学习lambda表达式:。通常我们在数组或集合的基础上创建stream,stream不会专门存储数据,对stream的操作也不会影响到创建它的数组和集合,对于stream的聚合、消费或收集操作只能进行一次,再次操作会报错

2024-09-25 17:14:06 405

原创 JDK8-Optional类

Optional是Java8引入的类,用于解决空指针异常。它作为一个容器,可以保存类型T的值或null。通过Optional提供的方法,如map、orElse等,可以更优雅地处理可能为空的对象,避免显式的null检查,使代码更简洁。文章介绍了Optional的创建、获取值的方法以及注意事项,如避免基础类型的Optional和合理使用orElse方法。

2024-09-25 15:00:19 1078

原创 JDK8-lambda表达式

代码调用Collections.sort方法对集合进行排序,其中第二个参数是一个匿名内部类,sort方法调用内部类中的compare方法对list进行位置交换,因为java中的参数类型只能是类或者基本数据类型,所以虽然传入的是一个Comparator类,但是实际上可以理解成为了传递compare方法而不得不传递一个Comparator类 ,这种方式显得比较笨拙,而且大量使用的话代码严重冗余,这种情况在java8中通过使用lambda表达式来解决。(1).参数的括号不能省略,(2).其他语法同多参数。

2024-09-25 09:43:33 1172

原创 JDK8-新增接口的默认方法与静态方法

在JDK7及以前的版本中,接口中都是抽象方法,不能定义方法体,但是从jdk8开始,接口中可以定义静态的非抽象的方法,直接使用接口名调用静态方法,但是它的实现类的类名或者实例却不可以调用接口中的静态方法。也可以定义普通的非抽象的方法,普通的非抽象方法要在返回值前加上default,对于普通的非抽象方法必须使用子类的实例来调用。如果有多个接口定义了相同的默认方法,实现多个这些接口时必须重写默认方法,否则编译失败。default修饰的方法,通过接口的实现类的对象调用;static修饰的方法,直接通过接口名调用。

2024-09-25 08:01:51 299

原创 Markdown语法

Markdown是一种轻量级的标记语言,广泛用于文档编辑、博客写作和代码笔记等领域。它具有简洁、易读、易写的特点,可以方便地将文本转换为各种格式的文档。大部分语法符号后需要有个空格才生效。

2024-09-24 17:09:12 658

空空如也

空空如也

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

TA关注的人

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