自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java设计模式实战【策略模式+观察者模式+命令模式+组合模式,混合模式在支付系统中的应用】

简单来说支付系统需要处理多种支付方式,还要与其他系统组件,比如风控、营销等系统进行交互,是比较复杂且难以设计的一类系统。我们就以支付系统为例,引入混合设计模式来优化策略模式是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换。策略模式让算法的变化独立于使用算法的客户在支付系统中,我们可以定义一个支付策略接口,每种支付方式实现这个接口。类可以使用这些策略来处理不同的支付方式,而不是直接实现所有支付逻辑。

2023-12-28 21:51:13 1495 2

原创 扩展JDK源码:Java手撕ArrayList【超详细注释】

算法和数据结构可以说是程序的核心,不仅是程序高效运行的基础,而且对于解决复杂问题至关重要。ArrayList因其灵活性和高效性在Java编程中占有重要地位。它是一个基于数组实现的动态大小的列表,能够根据需要自动扩展和收缩在这篇文章中,我们将尝试从头开始实现一个类似于Java标准库(JDK)中ArrayList的数据结构。这个自定义的MyArrayList类将支持泛型,并提供动态数组的核心功能。通过这个过程,我们能更好地理解ArrayList的内部工作原理

2023-12-28 00:00:07 453 1

原创 java实现十大经典排序算法【GIF动画+完整代码+详细注释】

java实现十大经典排序算法,gif动画,完整代码,详细注释。通过本文的学习,相信你不仅能够深入了解排序算法的原理和实现,还能通过直观的动图更好地理解其工作过程。这些算法是每个程序员必备的工具,无论是在学术研究还是工业应用中都有着广泛的应用。掌握它们,将会大大提升你的算法思维能力。程序员三毛归并排序gif桶排序gif计数排序gif。

2023-12-26 21:19:35 969 1

原创 Java设计模式实战:从If-Else到策略+工厂方法的演变

策略模式是一种行为设计模式,它定义了算法族,分别封装起来,让它们之间可以互相替换。这种模式让算法的变化独立于使用算法的客户端。在我们的物流系统案例中,策略模式允许我们根据包裹的不同特性动态选择合适的物流处理策略策略模式的类图// 根据包裹重量,匹配策略// 处理包裹工厂模式是一种创建型设计模式,用于提供一个创建对象的接口,从而将对象的实例化逻辑从使用对象的代码中分离出来。在我们的物流系统案例中,工厂模式可以用来灵活地创建和管理不同的物流策略对象,看下简单工厂的类图是一个类,提供了一个。

2023-12-26 18:39:45 914 1

原创 Java并发编程深度解析:掌握CompletableFuture的高效异步模式

CompletableFuture是Java 8中引入的一个类,实现了Future接口并提供了更多的灵活性和控制能力。与传统的Future相比,支持更复杂的操作组合,异常处理,以及函数式编程风格的方法链在Java中提供了一种强大的机制来处理异步编程。它不仅使代码更加简洁,还提高了程序的可读性和可维护性。以下是的一些高级功能和使用方法,涵盖了创建、操作、组合异步任务,以及异常处理等方面在Java中提供了一种强大的异步编程机制。

2023-12-25 22:07:43 895 1

原创 Lambda表达式深度解析:提升代码效率与可读性

在Java中,Lambda表达式主要用于实现那些只有一个抽象方法的接口,即函数式接口。它允许将函数作为方法参数,或将代码作为数据处理。Lambda表达式的引入使得集合操作变得更加简洁和直观函数式编程(Functional Programming,FP)是一种将计算视为函数评估的编程范式,并避免使用程序状态及可变对象。在函数式编程中,函数可以作为参数传递给其他函数,也可以作为返回值

2023-12-25 19:09:04 952 1

原创 Java并发编程基础-线程篇,成为顶尖程序员必备

线程是程序执行流的最小单元,它是进程的一个实体。在多线程环境下,每个线程都有自己的堆栈、计数器和局部变量,但可以访问共享的内存和资源,用下面这张图来说明一下进程、线程、主线程的关系线程上下文切换是多线程操作系统中的一个重要概念。它发生在操作系统需要从一个线程切换到另一个线程时,这通常是由于线程的等待(例如I/O请求)、线程优先级的变化或时间片用尽等原因在本文中,我们深入探讨了Java线程的关键概念,包括线程的生命周期、状态及其在多线程编程中的重要性。

2023-12-24 23:15:18 1112

原创 一文搞懂JAVA单例设计模式的所有实现

在Java中,单例模式的实现需要考虑多种因素,包括线程安全、延迟加载、资源利用效率等。同时,反射和序列化/反序列化是破坏单例模式的常见手段。在实现单例时,应考虑这些因素和破坏方式,选择最适合当前应用场景的实现方法。枚举实现是最简单且安全的方法,但在某些情况下可能缺乏灵活性。其他方法如懒汉式、饿汉式、DCL等各有优缺点,应根据具体需求和环境选择合适的实现方式。

2023-12-24 15:24:17 808

原创 Redis缓存八大模式,项目应用选型?这篇文章就够了

Write-Through-Back Pattern是结合了Write-Through和Write-Back模式的缓存方法。在这种模式下,数据首先被写入缓存,然后立即异步地更新到数据库。这种模式旨在平衡写操作的即时性和减少对数据源的直接压力。注:Write-Back通常再写入缓存与数据库存在较大一段时间间隔,Write-Through-Back通常立即执行异步操作,能较大程度减少最终一致性时长Refresh-Ahead Pattern用于主动刷新即将过期的缓存项。

2023-12-24 12:27:12 1116

原创 Redis缓存的八大模式,项目应用如何选型?这篇文章就够了

Cache-Aside Pattern,也称为Lazy-Loading Pattern,是由应用程序负责直接从缓存中读取和写入数据。如果缓存未命中,应用程序将从数据库加载数据,并将其存储在缓存中以供未来使用Read-Through Pattern是由缓存层负责从数据源(如数据库)加载数据。当应用程序请求数据时,如果缓存中存在该数据,则直接返回;如果不存在,则缓存层负责从数据源加载数据,存入缓存,并返回给应用程序。

2023-12-23 23:08:08 1057

原创 git的工作原理,实战案例,这篇文章就够了

通过这篇文章,我们一同探索了Git的神奇世界,从其核心概念,工作原理,再到实战问题的解决策略。Git不仅是一个工具,它是一种能力,一种与时俱进的开发文化。掌握Git,就是掌握了与众不同的协作和版本控制能力。希望这篇文章不仅增强了读者对Git的理解,而且提供了实用的知识来解决日常工作中的常见问题。记得关注我,一起成长,让技术成为推动创新的力量!

2023-12-22 21:19:19 815

原创 深入剖析事务ACID实现的底层原理

深入剖析mysql ACID底层实现原理

2023-12-22 03:14:08 866

原创 一张图彻底搞懂数据库事务的ACID特性

一图彻底搞懂事务ACID特性

2023-12-21 01:55:35 336

空空如也

空空如也

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

TA关注的人

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