Java
文章平均质量分 94
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,官网:https://www.java.com/
正在走向自律
(1)荣誉与身份:2024年度优快云博客之星TOP71、优快云博客专家/全栈领域优质创作者、阿里云开发者社区专家博主、华为云.云享专家!全网中文IP:正在走向自律
(2)领域专长:人工智能、AI大模型、数字人、Java、Python、服务器管理、第三方支付等!
(3)创作理念:通过分享 IT 行业的专业见解、案例分析和实用技巧,帮助读者更好地了解 IT 领域的发展动态和应用实践!
(4)粉丝支持:感谢全网3万+粉丝的关注与支持,我会继续努力,带来更多优质内容!
(5)座右铭:创作之路漫漫其修远兮,吾将上下而求索!
(6)关注交流:微信公众号《正在走向自律1》,交流技术心得,领取技术干货!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java二十三种设计模式-解释器模式(23/23)
解释器模式是一种行为设计模式,用于评估语言的文法表示。它特别适用于需要解释执行简单语言或表达式的情况。基础知识,java设计模式总体来说设计模式分为三大类:(1)创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。(2)结构型模式,共7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。(3)行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。原创 2024-08-21 08:15:00 · 1653 阅读 · 12 评论 -
Java二十三种设计模式-中介者模式(22/23)
中介者模式是一种行为型设计模式,它通过引入一个中介者对象来封装一系列对象之间的交互,从而实现对象间的解耦。为何需要中介者模式:降低耦合度:中介者模式减少了对象之间的直接交互,降低了系统各部分之间的耦合度。集中管理交互:提供了一个集中的地方来管理对象间的通信逻辑,简化了复杂系统的设计。易于扩展和维护:当需要增加新的交互逻辑或对象时,可以不必修改已有对象,只需扩展中介者。中介者模式:适合于多对多通信,需要集中管理交互的场景。观察者模式:适合于一对多通信,事件驱动的场景。命令模式。原创 2024-08-20 08:15:00 · 1655 阅读 · 13 评论 -
Java二十三种设计模式-访问者模式(21/23)
访问者模式是一种行为型设计模式,它允许你将算法与其所作用的对象结构分离,从而在不修改对象结构的情况下,为对象添加新的操作或行为。访问者模式(Visitor Pattern)是GoF提出的23种设计模式中的一种,属于行为模式。据《大话设计模式》中说算是最复杂也是最难以理解的一种模式了。定义(源于GoF《Design Pattern》):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。原创 2024-08-19 20:06:58 · 1293 阅读 · 4 评论 -
Java二十三种设计模式-状态模式(20/23)
(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。状态模式是一种行为型设计模式,允许一个对象在其内部状态改变时改变其行为。对象看起来似乎修改了其类。统一接口:确保所有状态类都遵循统一的状态接口,使得状态转换和行为调用标准化。原创 2024-08-19 19:45:23 · 1378 阅读 · 0 评论 -
Java二十三种设计模式-备忘录模式(19/23)
备忘录模式是一种软件设计模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式是一种行为型设计模式,用于在不破坏对象封装性的前提下,捕获并保存对象的当前状态,以便未来可以恢复到该状态。为何需要备忘录模式:状态恢复:在需要撤销操作或回滚到之前的状态时,备忘录模式允许对象恢复到特定的历史状态。封装性维护:通过将状态存储在外部的备忘录对象中,保持了原始对象的封装性,避免了外部直接访问对象的内部状态。原创 2024-08-18 22:39:48 · 1700 阅读 · 7 评论 -
Java二十三种设计模式-命令模式(18/23)
命令模式是一种行为型设计模式,它将请求或操作封装为一个对象,这样你可以使用不同的请求、队列或日志请求来参数化其他对象,并支持撤销操作。为何需要命令模式:解耦请求发送者与接收者:命令模式将请求发送者与接收者分离,提高系统的灵活性。支持撤销与重做:命令模式允许操作的撤销和重做,提高了用户体验。扩展性:允许系统在不修改现有代码的基础上扩展新命令。接口规范:定义清晰的接口,如execute()和undo(),确保所有命令遵循相同的规范。原创 2024-08-18 22:13:17 · 1367 阅读 · 0 评论 -
Java二十三种设计模式-责任链模式(17/23)
责任链模式是一种行为型设计模式,它通过将请求的发送者和接收者解耦,将这些请求沿着一条链传递,直到链上的某个节点能够处理该请求。这种模式允许系统在运行时动态地添加或修改处理请求的方式,而无需修改已有的代码。责任链模式提供了一种强大的方法来处理请求,允许请求沿着处理者链进行传递,直到被适当处理。通过本文的深入分析,希望读者能够对责任链模式有更全面的理解,并在实际开发中做出合理的设计选择。Java二十三种设计模式-单例模式(1/23)Java二十三种设计模式-工厂方法模式(2/23)原创 2024-08-18 21:59:28 · 1710 阅读 · 0 评论 -
Java二十三种设计模式-迭代子模式(16/23)
迭代器模式是一种行为型设计模式,用于提供一种顺序访问集合元素的方法,而不暴露集合的内部结构。迭代器模式定义了一种迭代访问一个聚合对象中各个元素的接口,允许在不暴露其内部表示的情况下,顺序访问聚合对象中的各个元素。迭代器模式提供了一种强大的方式来顺序访问集合中的元素,同时隐藏了集合的具体实现。通过本文的深入分析,希望读者能够对迭代器模式有更全面的理解,并在实际开发中做出合理的设计选择。Java二十三种设计模式-单例模式(1/23)Java二十三种设计模式-工厂方法模式(2/23)原创 2024-08-17 17:16:24 · 1137 阅读 · 1 评论 -
Java二十三种设计模式-观察者模式(15/23)
观察者模式是一种行为型设计模式,它定义了对象之间的一对多依赖关系,当一个对象状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式主要用于实现分布式系统中的对象通信。明确契约:确保主题和观察者之间的接口定义清晰,避免因接口模糊导致的错误。有序通知:如果观察者的执行顺序重要,定义一个逻辑来控制通知的顺序。观察者模式是一种强大的设计模式,用于在对象间实现松耦合的通信机制。通过本文的深入分析,希望读者能够对观察者模式有更全面的理解,并在实际开发中做出合理的设计选择。原创 2024-08-10 13:12:52 · 1264 阅读 · 2 评论 -
Java二十三种设计模式-模板方法模式(14/23)
模板方法模式是一种行为型设计模式,它在超类(通常是抽象类)中定义了一个算法的框架或步骤,并将一些步骤的实现延迟到子类中。这种模式允许子类在不改变算法结构的前提下,重新定义算法的特定步骤。定义:定义了算法的骨架和步骤,通常是抽象的。角色:包含一个或多个抽象方法(由子类实现)以及一个或多个钩子方法(可以被子类覆盖或使用默认实现)。职责:定义算法的骨架和步骤,包括模板方法、抽象方法和钩子方法。实现:提供算法的主体流程,调用抽象方法和具体方法。原创 2024-08-10 08:00:00 · 2108 阅读 · 0 评论 -
Java二十三种设计模式-策略模式(13/23)
策略模式是一种行为型设计模式,它允许在运行时选择算法的行为,将算法封装在独立的策略类中,从而让算法可以互相替换。清晰的合同:策略接口应该清晰地定义策略的合同,让实现者容易理解和实现。合理定义:确保策略接口的定义合理,既不要太宽泛也不要太狭窄。策略模式提供了一种灵活的方式来替换和扩展算法,使得系统更加灵活和可扩展。通过本文的深入分析,希望读者能够对策略模式有更全面的理解,并在实际开发中做出合理的设计选择。博主还写了其他Java设计模式关联文章,请各位大佬批评指正:(一)原创 2024-08-06 19:20:31 · 1743 阅读 · 22 评论 -
Java二十三种设计模式-享元模式(12/23)
享元模式是一种结构型设计模式,旨在通过共享来减少创建大量相似或相同对象时的内存消耗。这种模式通过共享对象的共有部分来实现对象的复用,从而降低系统资源的使用。定义:享元是实现共享的对象,它包含了可以被多个对象共享的内部状态。特点:享元对象通常很轻量,不包含任何唯一性的状态。享元模式是一种有效的设计模式,用于通过共享来减少大量对象的内存占用。通过本文的深入分析,希望读者能够对享元模式有更全面的理解,并在实际开发中做出合理的设计选择。博主还写了其他Java设计模式文章,请各位大佬批评指正。原创 2024-08-06 11:09:16 · 1554 阅读 · 1 评论 -
Java二十三种设计模式-组合模式(11/23)
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树状结构(树形结构)来表示“部分-整体”的层次关系。组合模式使得用户可以一致地对待单个对象和组合对象。组合模式提供了一种有效的方法来构建和表示层次化结构,使得客户端可以一致地处理单个对象和组合对象。通过本文的深入分析,希望读者能够对组合模式有更全面的理解,并在实际开发中做出合理的设计选择。Java二十三种设计模式-单例模式(1/23)Java二十三种设计模式-工厂方法模式(2/23)原创 2024-08-05 14:22:39 · 1451 阅读 · 0 评论 -
Java二十三种设计模式-桥接模式(10/23)
桥接模式(Bridge Pattern)是一种结构型设计模式,其核心思想是将类的抽象部分与它的实现部分分离,使它们可以独立地变化。这种模式允许系统在不修改原有抽象层代码的情况下,通过更换实现层来扩展系统的功能。定义:定义了抽象类的接口,规定了可以关联的具体实现化角色。角色:作为桥接模式的基础,抽象化角色将业务逻辑与实现细节分离。定义:扩展抽象化角色,添加了对具体实现化对象的引用,并实现更具体的业务逻辑。角色:具体抽象化角色提供了与抽象化角色一致或更丰富的接口,并委托具体实现化角色来完成某些操作。原创 2024-08-05 08:00:00 · 1531 阅读 · 1 评论 -
Java二十三种设计模式-外观模式(9/23)
外观模式(Facade Pattern)是一种常用的结构型设计模式,其核心目的是为一个复杂的子系统提供一个简化的统一接口。通过外观模式,客户端可以访问一个复杂的类系统,而无需了解该系统内部的复杂性。外观模式提供了一种简化复杂系统访问的方法,使得客户端可以更容易地与复杂的子系统交互。通过本文的深入分析,希望读者能够对外观模式有更全面的理解,并在实际开发中做出合理的设计选择。Java二十三种设计模式-单例模式(1/23)Java二十三种设计模式-工厂方法模式(2/23)原创 2024-07-30 13:31:45 · 1584 阅读 · 24 评论 -
Java二十三种设计模式-代理模式(8/23)
代理模式是一种结构型设计模式,其核心思想是为一个对象提供一种代理,以控制对这个对象的访问。代理模式可以在不修改目标对象的基础上,通过引入一个代理层来间接操作实际对象,从而实现对目标对象的访问控制、延迟初始化、日志记录、权限校验等功能。定义:定义了真实对象和代理对象的共同接口,这样代理可以代替真实对象被使用。角色:充当代理和真实对象的契约。代理模式提供了一种灵活的方式来控制对对象的访问,同时允许在不修改对象自身的情况下添加额外的职责。原创 2024-07-21 23:37:31 · 1835 阅读 · 31 评论 -
Java二十三种设计模式-装饰器模式(7/23)
装饰器模式是一种设计模式,允许用户在不修改对象自身的情况下,向一个对象添加新的功能。这种模式通过创建一个包装对象,也就是装饰器,来包裹实际对象,从而在不修改实际对象的基础上扩展其功能。装饰器模式提供了一种灵活的方式来扩展对象的功能,而无需改变对象的结构。通过本文的深入分析,希望读者能够对装饰器模式有更全面的理解,并在实际开发中做出合理的设计选择。原创 2024-07-21 23:18:00 · 1674 阅读 · 0 评论 -
Java二十三种设计模式-建造者模式(4/23)
建造者模式是一种高级的创建型设计模式,旨在提供一种灵活的解决方案,用于创建复杂的对象。建造者模式将一个复杂对象的构建过程封装起来,同时允许按步骤构造对象。它允许用户通过相同的创建过程生成不同的表示。建造者模式是处理复杂对象创建问题的有效工具。通过本文的深入分析,希望读者能够对建造者模式有更全面的理解,并在实际开发中做出合理的设计选择。原创 2024-07-15 09:00:00 · 1292 阅读 · 2 评论 -
Java二十三种设计模式-适配器模式(6/23)
适配器模式是一种结构型设计模式,其目的是通过一个中间层(适配器)将一个类的接口转换成客户端期望的另一个接口,从而使原本不兼容的接口能够一起工作。定义:客户端所期望的接口。角色:定义客户端使用的特定领域相关的接口。适配器模式是一种在软件开发中常用的设计模式,它帮助解决了接口不兼容的问题,提高了代码的复用性。通过本文的深入分析,希望读者能够对适配器模式有更全面的理解,并在实际开发中做出合理的设计选择。原创 2024-07-16 08:00:00 · 2773 阅读 · 14 评论 -
Java二十三种设计模式-原型模式(5/23)
原型模式是一种创建型设计模式,它允许一个对象作为原型,通过复制这个原型来创建新的实例。这种模式的核心思想是通过复制现有的对象,而不是通过新建对象的方式来生成新的实例,从而提高对象创建的效率。定义:声明一个用于复制自身的接口。通常包含一个方法,如clone(),用于返回对象的一个副本。角色:作为所有具体原型类的共同接口,它规定了所有子类必须实现的复制行为。原型模式提供了一种灵活且高效的对象创建方式,尤其适用于对象初始化成本高或需要快速复制的场景。原创 2024-07-16 07:00:00 · 1339 阅读 · 4 评论 -
Java二十三种设计模式-抽象工厂模式(3/23)
抽象工厂模式是一种创建型设计模式,用于创建一系列相关或相互依赖的对象,而不需要指定它们具体的类。这种模式提供了一个接口,用于生成一组相关的对象,而客户端不需要知道这些对象的具体类。定义了创建一系列相关或依赖对象的接口。它是一个抽象角色,不实现具体的创建逻辑。定义了产品的接口,是所有具体产品类的共同父类。它是一个抽象角色,不实现具体的产品类。抽象工厂模式是处理复杂系统中对象创建问题的有效工具。通过本文的深入分析,希望读者能够对抽象工厂模式有更全面的理解,并在实际开发中做出合理的设计选择。原创 2024-07-15 09:00:00 · 1531 阅读 · 6 评论 -
Java二十三种设计模式-工厂方法模式(2/23)
工厂方法模式是一种创建型设计模式,用于将对象的创建过程封装在具体的工厂类中,而不是在客户端代码中直接创建。这种模式的目的是将对象创建的逻辑和使用逻辑分离,从而提高代码的可维护性和灵活性。工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method让类的实例化推迟到子类进行。工厂方法模式是一种强大且灵活的设计模式,适用于多种不同的软件开发场景。通过本文的深入分析,希望读者能够对工厂方法模式有更全面的理解,并在实际开发中做出合理的设计选择。原创 2024-07-14 22:57:48 · 1131 阅读 · 2 评论 -
Java二十三种设计模式-单例模式(1/23)
单例模式是一种常用的软件设计模式,其核心思想是确保一个类在任何情况下都只有一个实例,并且提供一个全局访问点来获取这个唯一的实例。这种模式在需要全局状态信息或者需要频繁创建和销毁实例会导致资源浪费的情况下非常有用。原创 2024-07-14 22:44:20 · 1866 阅读 · 0 评论 -
Linux系统cpu飙升到100%排查方案
Linux服务器CPU突然飙升到100%,这时候系统直接卡死,很多新手面对这种情况经常束手无策,本文就针对这个问题提出个人方案,希望能帮助到你们。原创 2024-03-05 00:48:34 · 1351 阅读 · 0 评论 -
Java虚拟机原理
目录1.序言2.JVM介绍 2.1 JVM是什么 2.2 JVM工作流程 2.3JVM内部结构 2.3.1类加载器 2.3.2 执行引擎 2.4 JVM的运行时数据区 2.4.1共享区域 2.4.2 非共享区域 2.4.3 JMM(java内存模型)3.JVM的GC 3.1如何确定某个对象(垃圾)是可回收 3.1.1 引用计数法...转载 2021-01-19 00:59:19 · 219 阅读 · 0 评论 -
Java里面的10个Lambda表达式必须掌握,提高生产力
Lambda表达式是现代Java编程中不可或缺的一部分,通过本文的介绍,我们可以看到Lambda表达式如何使我们的代码更加简洁、易读和易于维护。它们不仅简化了代码,更是一种编程思维的转变,让我们能够以更函数式的方式思考问题。掌握Lambda表达式,将使你的代码更加高效、更富表现力。原创 2024-06-10 18:13:28 · 1372 阅读 · 3 评论 -
面试官:假如有几十个请求,如何去控制并发?
控制并发请求是一个重要的问题,特别是在面对高并发情况时,合理地管理请求可以有效地维护系统的稳定性和性能。:使用线程池来管理并发请求,通过限制线程数量和队列大小,可以控制同时处理的请求数量,避免系统因过多的请求而崩溃或性能下降。:使用信号量来限制并发请求的数量,通过控制信号量的数量来控制允许同时处理的请求数量,超过限制的请求将被阻塞或拒绝。:采用限流算法来控制请求的流量,例如令牌桶算法、漏桶算法等,可以根据系统的处理能力和资源情况来限制请求的发送速率,避免系统被过多的请求压垮。原创 2024-05-14 10:57:17 · 1931 阅读 · 0 评论 -
Spring Cloud Alibaba 项目搭建步骤和注意事项
Spring Cloud Alibaba 是一个基于 Spring Cloud 的微服务架构解决方案,它整合了阿里巴巴的多款开源组件,如 Nacos、Sentinel、RocketMQ 等,用于构建分布式微服务系统。原创 2024-04-28 19:24:34 · 1447 阅读 · 0 评论 -
SpringBoot常用注解与注意事项
Spring Boot 是一个用于快速开发、运行和管理 Spring 应用程序的框架。它大量使用了注解(Annotations)来简化配置和开发流程。原创 2024-04-28 19:18:20 · 730 阅读 · 0 评论 -
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
使用SSM(spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。这次,先说说三大框架整合过程。个人认转载 2017-04-04 23:13:31 · 827 阅读 · 1 评论 -
Java开发常见关键词集绵
Java开发常见关键词集绵,如jdk、jre、jvm、tcp、rpc、http等等原创 2023-02-13 11:50:48 · 750 阅读 · 0 评论 -
Java中double转BigDecimal注意事项
先上结论:不要直接用double变量作为构造BigDecimal的参数。线上有这么一段Java代码逻辑:1,接口传来一个JSON串,里面有个数字:57.3。2,解析JSON并把这个数字保存在一个float变量。3,把这个float变量赋值给一个 BigDecimal对象,用的是BigDecimal的double参数的构造:new BigDecimal(double ...转载 2019-09-08 12:41:30 · 503 阅读 · 0 评论 -
Java判断一个字符串是否为数字
//Java判断一个字符串是否为数字 public static boolean isNumeric(String str){ // 判断小数点后4位(根据的需求可以更改)的数字的正则表达式 java.util.regex.Pattern pattern=java.util.regex.Pattern.compile("^(([1-9]{1}\\d...转载 2019-03-31 17:14:36 · 471 阅读 · 0 评论 -
运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动
运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动2016年11月29日 17:13:58阅读数:48787作为Maven小白,今天这问题困扰了我好久,经过多次在网上查询,终于找到了原因。明明一个小问题却耗费很多时间,着实不应该,所以必须记录一下。报错信息如下:对话框:控制台:[html] view plain copy<...转载 2018-06-23 15:38:46 · 331 阅读 · 0 评论 -
java里json常见的转换方法
1、JSON.parseObject(jsonString, Object.class); //将json字符串转成对象例子:String jsonStr = "[{"id":1,"name":张三,"sex":男},{"id":2,"name":李四,"sex":男},{"id":3,"name":王五,"sex":女}]";JSONOBJECT jsonObject = JSON.pa原创 2017-12-16 20:52:42 · 804 阅读 · 0 评论 -
for循环的简介及break和continue的区别与作用
break :指跳出当前循环体,如果外面还有循环的话继续执行;continue :指跳出本次循环,继续下次循环;return:指程序返回,不在执行下面的代码;break语句用于终止分支结构或循环结构,其主要用在以下3种情况:1.在switch语句中,用于终止case语句,跳出switch分支结构2.在循环结构中,用于终止循环语句,跳出循环结构3.与标签语句配合使用从内层循环或内层程序块中退出转载 2017-12-23 19:25:34 · 1800 阅读 · 0 评论 -
java后台拼接字符串查询语句@小霸王
@Service("promoService")public class PromoServiceImpl implements PromoService { @Autowired private JdbcTemplate jdbc; /** * -- 优惠活动条件:1.启用状态 2.优惠活动id存在 3.价格>3000元 */ @Ove原创 2017-12-16 22:25:50 · 1208 阅读 · 0 评论 -
Java随机生产订单表号,当前时间+系统5位数
package cn.gov.csrc.util;import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random;public class RandomUtil {/** * 生成随机文件名:当前年月日时分秒+五位随机数 * * @return */ public...转载 2017-04-01 15:35:34 · 2683 阅读 · 2 评论
分享