- 博客(31)
- 收藏
- 关注
原创 Maven高级——详解
Maven利用其强大的依赖管理系统和标准化的项目结构,大大简化了项目的构建和管理过程。由于其高度的可扩展性,它不仅适用于Java项目,还能用于管理各种其他语言编写的项目,如C#、Ruby和Scala等。在Maven的帮助下,开发者可以专注于业务逻辑的实现,而不是频繁处理依赖和配置问题
2024-07-25 16:30:00
609
1
原创 SpringBoot原理——面试高频
自动配置是Spring Boot根据添加的依赖和应用程序的实际配置,自动为你配置Spring应用程序的行为,简单来说,它减少了你需要手动编写的配置量,让你可以更专注于业务逻辑的开发。当Spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不需要手动去声明,从而简化了开发,省去繁琐的配置操作。
2024-07-24 12:15:00
626
原创 Spring Bean介绍
上述所说的(spring项目启动时,会把其中的bean都创建好)还会受到作用域延迟初始化的影响,这里主要针对于默认的单例非延迟加载的bean而言。
2024-07-23 16:15:00
619
原创 idea中如何创建yml、yaml、properties配置文件
我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置,那其实呢,在springboot项目当中是支持多种配置方式的,除了支持properties配置文件以外,还支持另外一种类型的配置文件,就是我们接下来要讲解的yml格式的配置文件。yml 格式的配置文件,后缀名有两种:yml(推荐)、yaml。properties、yml、yaml三种文件都能被项目识别,当它们之间配置文件发生冲突时,其优先级是:properties > yml > yaml。
2024-07-22 19:30:00
803
原创 Spring AOP详解
AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。使用场景(记录操作日志、权限控制、事务管理)。AOP的优势:减少重复代码、提高开发效率、维护方便、代码无侵入。案例某部分功能运行较慢,定位执行耗时较长的业务方法,此时需要统计每一个业务的执行耗时。我们可以在方法开始前,获取方法开始时间,方法结束后获取结束时间,由此计算执行耗时。这个思路是正确的,但是过于繁琐。动态代理是面向切面编程最主流的实现。
2024-07-21 11:45:00
1174
原创 Spring事务管理
事务是一组操作的集合,它是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败。事务的操作步骤:开启事务(一组操作开始前,开启事务 start transaction/begin)、提交事务(这组操作全部成功后,提交事务 commit)、回滚事务(中间任何一个操作出现异常,回滚事务 rollback)。原子性:事务是不可分割的最小操作单元,要么全部成功,要么全部失败一致性:事务完成时,必须使所有的数据都保持一致的状态。
2024-07-20 13:23:30
452
原创 Postman安装使用教程(详解)
Postman是一个流行的API开发工具,它提供了友好的用户界面用于发送HTTP请求、查看响应以及管理API接口。不仅如此,Postman还可以帮助开发者创建、测试、发布、监控和记录API,是前后端开发者不可或缺的助手。
2024-07-17 16:29:27
1591
原创 Java基础知识——继承
继承是面向对象编程(OOP)的四大基本原则之一,它允许我们创建一个新类,继承并扩展现有类的属性和方法。继承是一种机制,通过这种机制,一个类可以基于另一个已存在的类来定义。已存在的类称为“父类”或“超类”,而新创建的类则称为“子类”。子类自动继承父类的属性和方法,同时还可以定义自己的新属性和方法。现实生活中也存在继承:波斯猫和巴里猫属于猫科,沙皮狗和斑点狗属于犬科。猫科动物和犬科动物又是属于动物类。继承需要符合的关系是:is-a,父类更通用,子类更具体。
2024-07-16 14:04:56
488
原创 Mybatis——动态SQL
动态SQL是mybatis的强大特性之一,它可以让我们在xml映射文件内,以标签的形式编写动态SQL,完成逻辑判断和动态拼接SQL的功能,mybatis提供了9种动态SQL标签(trim、where、set、foreach、if、choose、when、otherwise、bind)。随着用户的输入或外部条件的变化而变化的SQL语句,我们就称之为动态SQL。如果你使用jdbc或者其他类似的框架,你应该能够理解不同条件拼接的SQL语句有多痛苦,如不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号等。
2024-07-13 12:45:33
441
原创 MyBatis入门程序详解
MyBatis是一个基于Java的持久层框架,它内部封装了JDBC操作,使得开发人员可以更专注于SQL语句本身而非繁琐的JDBC操作细节。在MyBatis中,SQL语句可以被配置在XML文件中,或者通过注解方式进行。这种分离使得SQL语句更加模块化和可重用。MyBatis还支持动态SQL,允许开发者根据不同情况构建复杂的SQL语句,而无需编写大量的Java代码。
2024-07-05 23:51:55
1100
原创 SpringBoot控制反转和依赖注入
控制反转:Inversion of Control,简称IOC。对象创建控制权由程序自身转移到外部(Spring容器)。依赖注入:Dependency injection,简称DI。容器为应用程序提供运行时,所依赖的资源。 Bean对象:IOC 容器中创建、管理的对象
2024-06-25 15:37:53
952
1
原创 SpringBoot三层架构
controler:控制层,接收前端发送的请求,对请求进行处理,并响应数据。service:业务逻辑层,处理具体的业务逻辑。dao:数据访问层(data access Object(持久层)),是负责数据访问操作,包括增、删、改、查。
2024-06-17 22:37:31
1264
3
原创 SpringBoot请求响应
在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取。:这是一个公共方法,返回类型为String。它接收一个类型的参数,用于获取HTTP请求的信息。:从HTTP请求中获取名为"name"的参数值,并将其赋值给变量name。:将字符串类型的ageStr转换为整数类型,并赋值给变量age。
2024-06-16 15:47:13
586
2
原创 Apache Tomcat介绍
在Java Web开发领域,Apache Tomcat是一个不可或缺的核心组件。作为一个轻量级的开源Web应用服务器,Tomcat提供了一种简单而高效的方式来部署和管理Java Servlet和JavaServer Pages (JSP)应用程序。
2024-06-14 19:16:38
592
原创 JavaScrip轮播图
JS轮播图的实现核心是使用JavaScript来控制图片的切换和显示,配合HTML和CSS完成布局和样式设置。通过定时器实现图片的自动切换。
2024-06-07 21:07:53
1101
原创 Java设计模式——建造者模式
建造者模式是一种强大的工具,可以帮助我们更好地组织和管理复杂对象的创建过程。通过将对象的构建过程与其表示分离,我们可以更灵活地控制对象的创建,并提高代码的可读性和可维护性。
2024-06-03 19:09:04
1221
原创 HTML+CSS制作动态爱心
通过简单的HTML和CSS代码,你不仅能学习到基础的网页制作技能,更能用这种技术感满满的方式表达你的爱意。这个动态爱心都是一个不错的选择。记住,技术是冰冷的,但你通过它表达的情感是温暖且真挚的。
2024-05-28 23:10:25
401
原创 设计模式——单例模式
有些对象天生就是独一无二的。它们代表了一个系统中的某个核心组件,比如配置管理器、连接池或是日志记录器。这些对象通常包含有状态信息,对于整个系统来说,它们的状态必须保持一致。为了确保这种独特性和一致性,我们需要一个特殊的设计模式——单例模式(Singleton Pattern)。简单来说,一个班级只有一个班主任。单例模式是一种强大的设计模式,它确保了系统中某些关键组件的唯一性和一致性。然而,它也带来了一些挑战,尤其是在多线程环境和测试中。
2024-05-23 14:08:32
499
1
原创 设计模式——原型模式
原型模式是一种创建型设计模式,它允许一个对象在创建另一个可定制的对象时,无需知道如何创建的细节。这种模式是基于克隆的概念,即通过复制一个现有对象来生成新的对象,而不是通过调用构造函数新建实例。这样,我们就可以避免与对象创建相关的成本,特别是当对象的创建过程复杂或资源消耗较大时。用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。可以去想象一下细胞分裂。原型模式提供了一种灵活且高效的对象创建方式,尤其适用于那些创建成本较高的对象。
2024-05-23 13:39:09
523
原创 设计模式——桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与实现部分分离,使它们可以独立地变化。它通过提供一个桥接结构,将抽象部分与实现部分解耦,这样两者的变化不会相互影响,从而应对多层继承结构带来的问题。假设你正在设计一个游戏,游戏中有不同类型的角色和武器。如果不使用桥接模式,你可能会为每种角色和武器的组合创建一个子类,这样会导致大量的子类产生。但是,如果使用桥接模式,你可以将角色和武器分离开来,使得它们可以独立地进行扩展。
2024-05-21 23:58:35
701
原创 设计模式——适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。在生活中我们也接触过,美国电器 110V,中国 220V,就要有一个适配器将 110V 转化为 220V。适配器模式是一种非常实用的设计模式,它允许我们将现有的接口转换为客户端期望的接口。这种模式在整合第三方库、封装遗留代码、实现兼容层等方面非常有用。
2024-05-21 23:28:33
773
原创 设计模式——生成器模式
生成器模式的主要目标是将对象的创建过程与其表示分离,以便相同的创建过程可以创建不同的表示。将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。这有助于提高系统的灵活性和可重用性。简单来说,去肯德基汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。在实际软件工程中,生成器模式适用于那些创建过程复杂、步骤固定且需要灵活控制的产品。在决定是否使用生成器模式时,应当考虑其带来的灵活性和封装性是否值得增加的复杂性。
2024-05-20 23:34:43
938
1
原创 简单工厂模式、工厂模式与抽象工厂模式详解
设计模式是一套被反复使用、多数人认可的、经过分类编目的、代码设计经验的总结。它们为软件设计提供了一定的指导和最佳实践。特别是在创建对象时,简单工厂、工厂模式和抽象工厂模式这三种创建型模式经常被提及和应用。简单工厂模式是一种创建型设计模式,它通过一个单一的工厂类来负责创建一系列相关的对象。这个工厂类根据传入的参数来决定实例化哪一个具体类的实例。客户端在使用时不需要知道具体的类名,只需要提供必要的信息给工厂。工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。
2024-05-18 00:10:54
1080
原创 设计模式——命令模式
在软件设计的世界里,我们经常需要在不同的对象之间传递操作请求。如果这些请求的发送者和接收者之间的耦合度太高,系统的可维护性和扩展性就会受到影响。这时候,命令模式(Command Pattern)就派上了用场。命令模式是一种行为设计模式,它将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。Command)命令模式提供了一种将请求封装成对象的方法,使得你可以用不同的请求、队列或者日志请求来参数化其他对象。它还支持撤销操作。
2024-05-15 18:23:23
746
原创 设计模式——策略模式
策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每个算法封装在一个具有共同接口的独立类中,使得它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。这种模式在很多场景下都非常实用,例如在不同的情况下需要执行不同的业务逻辑时,或者需要动态地改变对象的行为时。诸葛亮的锦囊妙计,每一个锦囊就是一个策略。旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。
2024-05-15 11:25:51
515
原创 图的遍历(深度优先和广度优先)
相比于树结构的遍历,图的遍历要复杂得多,因为图中的任何一个节点都可能与其它所有节点相邻接。这就意味着,在访问了某个节点之后,可能会顺着某条路径再次返回到这个节点。为了防止对节点进行重复访问,在图的遍历过程中需要记录下已经访问过的节点。深度优先搜索(DFS)和广度优先搜索(BFS)是两种基本的图遍历方法。DFS更适合深入挖掘问题的解决方案,而BFS则适用于逐层分析问题,寻找最短路径或按层次顺序进行操作。
2024-05-09 11:45:55
1676
原创 UML类图
UML类图展示了系统中的类及其相互关系。一个"类"代表了一组具有相同属性和行为的对象。类图不仅显示了类的结构和名称,还展示了类之间的关系,如继承、关联、依赖和聚合。
2024-05-06 12:16:50
719
原创 时间复杂度和空间复杂度
算法是一组用于处理数据和解决程序问题的方法。尽管不同的算法可能最终得出相同的结果,但在执行过程中所消耗的资源和时间可能会有很大差异。通常,我们从两个维度来评估不同算法的优劣:时间维度和空间维度。时间维度:这个维度关注的是执行某个算法所需的时间。我们通常使用“时间复杂度”这一概念来描述算法的时间效率。空间维度:这个维度关注的是执行某个算法所需的内存空间。我们通常使用“空间复杂度”这一概念来描述算法的空间效率。接下来,我将介绍我对“时间复杂度”和“空间复杂度”的理解。
2024-05-04 12:43:05
625
原创 Java判断回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
2023-11-04 15:11:25
261
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人