- 博客(118)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 Java 与设计模式(13):代理模式
代理模式是一种结构型设计模式,用于在访问对象时引入一个代理对象,以控制对实际对象的访问。代理对象充当了客户端和实际对象之间的中介,客户端通过代理对象间接地访问实际对象,从而可以在访问过程中添加额外的逻辑或控制。代理模式可以提供对实际对象的保护、延迟加载、缓存等功能,同时也可以实现远程代理、虚拟代理、安全代理等不同的应用场景。
2023-09-05 21:51:30 546
原创 Java 与设计模式(12):享元模式
享元模式是一种结构型设计模式,旨在有效地共享对象以减少内存使用和提高性能。该模式的核心思想是通过共享尽可能多的相似对象来减少内存占用。它将对象分为可共享的内部状态和不可共享的外部状态。内部状态是对象的固有属性,可以在多个对象之间共享,而外部状态是对象的上下文相关属性,每个对象都是独立的。通过共享内部状态,享元模式可以减少创建相似对象的数量,从而节省内存空间。当需要创建新对象时,可以首先检查是否已经存在具有相同内部状态的对象,如果存在,则可以直接返回共享的对象,而不是创建新的对象。
2023-08-21 20:52:18 832 1
原创 Java和设计模式(11):外观模式
外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,为客户端提供了一个简单的接口,使得客户端更容易使用子系统。外观模式通过创建一个外观类(Facade),将客户端与子系统之间的交互转移到外观类中。外观类封装了子系统中的一组接口,并提供了一个简化的接口给客户端使用。客户端只需要通过外观类来访问子系统,不需要直接与子系统的各个组件进行交互。外观模式的主要目的是提供一个简化的接口,降低客户端与子系统之间的耦合度。
2023-07-10 21:39:52 634
原创 Java与设计模式(10):装饰器模式
装饰器模式是一种设计模式,它允许在不改变原有对象的结构的情况下,动态地将新功能添加到对象上。该模式通过创建一个包装器类,该类包含了原始对象的实例,并且可以在不影响原始对象的情况下,添加额外的行为或修改原有的行为。装饰器模式的核心思想是通过组合而非继承来实现功能的扩展。它可以在运行时动态地添加或移除对象的功能,而无需修改原始对象的代码。这种灵活性使得装饰器模式在需要对对象的行为进行动态修改的情况下非常有用。在装饰器模式中,通常会定义一个抽象的装饰器接口,该接口定义了要添加的功能的方法。
2023-07-04 20:59:13 1008
原创 Java与设计模式(9):组合模式
组合模式是一种结构型设计模式,它允许我们将对象组合成树形结构以表示“整体-部分”的层次结构。组合模式使得客户端可以统一处理单个对象和组合对象,而无需关心它们之间的差异。在组合模式中,有两种主要的角色:组件(Component):定义了组合对象和叶子对象的公共接口,可以是抽象类或接口。组件角色提供了管理子节点的方法,如添加、移除、获取子节点等。叶子(Leaf):是组合的最小单位,表示树形结构中的叶子节点。叶子对象没有子节点,它实现了组件角色的接口。
2023-07-03 21:57:37 415 1
原创 Java与设计模式(8):桥接模式
桥接模式(Bridge Pattern)是一种软件设计模式,它用于将抽象部分与实现部分分离,使它们可以独立地变化。该模式通过将抽象类与实现类之间建立一个桥接(Bridge)来实现解耦,使得抽象部分和实现部分可以独立地进行扩展。在桥接模式中,抽象部分由一个抽象类或接口表示,它定义了一些抽象方法和属性,描述了抽象部分的行为。实现部分由一个具体类或接口表示,它实现了抽象部分定义的方法和属性,描述了实现部分的具体实现。通过桥接模式,我们可以在不修改抽象部分的情况下,独立地扩展实现部分。
2023-06-29 22:17:23 634
原创 Java与设计模式(7):适配器模式
适配器模式是一种结构型设计模式,它允许将一个类的接口转换为客户端所期望的另一个接口。适配器模式使得原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通过引入一个适配器类来解决接口不兼容的问题。适配器类实现了客户端所期望的目标接口,并在内部持有一个适配者对象,将适配者对象的接口转换为目标接口。客户端通过调用适配器对象的方法来间接使用适配者对象的功能。适配器模式的主要优点是可以解决接口不兼容的问题,使得原本无法协同工作的类能够一起工作。它可以使得系统更加灵活,能够适应变化的需求。
2023-06-29 21:19:37 1146
原创 汇总一些高考填报志愿相关的资源,希望对大家有帮助
夸克有AI志愿填报专题,首页就能看到。输入信息会展示可报考学校专业信息,比较直观。相比各种分析,更能定位自己想要报考的学校!
2023-06-28 22:11:04 1506
原创 Java与设计模式(6):建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你逐步构造复杂对象。该模式将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式的核心思想是将一个复杂对象的构建过程分解为多个简单的步骤,通过一系列的步骤来逐步构建对象,最终产生一个完整的对象。这种分步构建的方式使得对象的构建过程更加灵活,同时可以隐藏对象的创建细节。建造者模式通常包含以下几个角色:产品(Product):表示最终构建的复杂对象。
2023-06-28 20:15:57 1191
原创 Java与设计模式(5):原型模式
原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需通过实例化类来创建。原型模式通过克隆现有对象来创建新对象,从而避免了使用构造函数创建对象的开销。在原型模式中,原型对象是一个可被复制的对象,它定义了一个克隆方法,用于创建新的对象。通过克隆方法,原型对象可以生成一个与自身相同的新对象,新对象拥有与原型对象相同的属性和方法。原型模式的核心思想是通过复制现有对象来创建新对象,而不是通过实例化类来创建。
2023-06-27 22:49:54 626
原创 Java与设计模式(4):单例模式
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供全局访问点来访问该实例。在单例模式中,类的构造函数被私有化,从而禁止外部直接实例化该类。通过一个静态方法或静态变量来控制类的实例化过程,并返回同一个实例。单例模式的特点包括:单一实例:单例模式确保一个类只有一个实例存在,无论在何处访问该类,都只能获得同一个实例。全局访问点:单例模式提供了一个全局访问点,使得其他类可以方便地访问该实例。延迟实例化:单例模式可以实现延迟实例化,即在第一次使用时才创建实例,提高了系统的性能和资源利用率。
2023-06-27 20:21:55 830
原创 Java与设计模式(3):抽象工厂模式
抽象工厂模式是一种创建型设计模式,它提供了一种将相关对象组合在一起创建的方式,而无需指定它们的具体类。在抽象工厂模式中,有一个抽象工厂接口,该接口定义了一组创建相关对象的方法。每个具体的工厂类都实现了这个接口,并负责创建一组相关的对象。抽象工厂模式的核心思想是将对象的创建与使用分离开来。客户端通过使用抽象工厂接口来创建对象,而不需要关心具体的对象是如何创建的。这样可以使客户端代码与具体对象的类解耦,提高代码的灵活性和可维护性。
2023-06-26 19:23:46 705
原创 Java与设计模式(2):工厂方法模式
工厂方法模式是一种创建型设计模式,它提供了一种将对象的创建委托给子类的方式。在工厂方法模式中,我们定义一个抽象的工厂类,该类负责定义创建对象的接口,但具体的对象创建由子类来实现。这样可以将对象的创建和使用解耦,使得系统更加灵活和可扩展。工厂方法模式的核心思想是将对象的创建延迟到子类中,通过子类的扩展来实现具体对象的创建。这样一来,我们可以根据需要新增具体产品类,而不需要修改已有的代码。同时,客户端只需要与抽象工厂类进行交互,无需关心具体的产品实现。
2023-06-25 22:03:14 935
原创 Java与设计模式(1):简单工厂模式
简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的方式,将对象的创建逻辑封装在一个工厂类中,而不是直接在客户端代码中进行实例化。在简单工厂模式中,有三个主要角色:工厂类(Factory Class):负责创建具体对象的工厂类。它通常包含一个静态方法,根据传入的参数或条件,决定创建并返回具体的对象实例。抽象产品类(Abstract Product Class):定义了具体产品类的通用接口或抽象方法。它可以是一个抽象类或接口,用于表示一类具体产品。
2023-06-25 20:28:19 1418
原创 超好用的特性:Stream 流
JDK 8引入了Stream API,它是Java中处理集合数据的一种新方式。Stream流提供了一种更简洁、更灵活的方式来对集合进行操作和处理。Stream流可以看作是一种高级的迭代器,它可以对集合中的元素进行过滤、映射、排序、聚合等操作,而不需要显式地使用循环。这样可以使代码更加简洁、易读,并且可以充分利用多核处理器的优势。Stream流的特点包括:延迟计算:Stream流中的操作是惰性执行的,只有在终止操作时才会触发计算。这种延迟计算的特性可以提高性能,因为只计算需要的结果。
2023-06-20 22:32:06 970
原创 SQL知识你知道吗:窗口函数
MySQL窗口函数是一种特殊的函数,它能够在查询结果中进行计算和聚合操作,并且可以在查询结果中返回每个行的值。它们通常与OVER子句一起使用,该子句定义了如何对窗口函数进行分组和排序。以下是一些常用的MySQL窗口函数:ROW_NUMBER():为每个行分配一个唯一的数字标识符。RANK():为每个行分配一个排名,如果有相同的值,则排名相同。DENSE_RANK():为每个行分配一个排名,如果有相同的值,则排名不同。NTILE(n):将结果集分成n个等份,并为每个行分配一个组号。
2023-06-19 22:13:50 712
原创 即将步入大学,IT 生该怎么做?
自主开发项目:在大学期间,同学们可以利用课余时间自主开发一些小型项目,将这些项目放在个人的项目库中,不仅能够锻炼自己的编程能力,还能够为将来的求职工作提供有力的支持。学会团队合作:计算机专业的工作往往需要团队合作,需要同学们学会协作和沟通,积极参与团队项目,了解团队协作的流程和规范,提高自己的团队合作能力。大学是一个丰富多彩的学习和实践平台,同学们可以通过多种方式进行专业知识的学习和实践,不断提高自己的技能和素质,为将来的职业发展打好基础。
2023-06-12 22:06:15 260
原创 SQL 知识你知道吗:公共表表达式(CTE)
公共表表达式(CTE)是一种临时命名查询结果集的方式,可以在一个查询语句中多次引用。CTE在查询语句中定义,可以在查询语句中的任何位置使用,并且只在查询语句执行期间存在。CTE通常用于简化复杂的查询,提高查询的可读性和可维护性。CTE的语法如下:其中,cte_name是CTE的名称,可以在查询语句的其他部分中使用。column1, column2等是CTE返回的列的名称。SELECT语句定义了CTE的查询结果集。最后的SELECT语句可以引用CTE并过滤、排序、分组等操作。
2023-06-12 19:52:25 1030
原创 如何开始学习Java
Java编程书籍:有许多经典的Java编程书籍,例如《Thinking in Java》、《Head First Java》等,可以帮助你学习Java语言基础知识。Java编程书籍:有许多经典的Java编程书籍,例如《Thinking in Java》、《Head First Java》等,可以帮助你学习面向对象编程。Java编程书籍:有许多经典的Java编程书籍,例如《Java核心技术》、《Effective Java》等,可以帮助你学习Java标准库和框架。
2023-06-06 22:12:01 2028 1
原创 Spring Boot 与 Spring Security:核心讲解(2)
过滤器链是Spring Security的核心,它在请求到达应用程序之前对其进行拦截,以便进行身份验证和授权等操作。过滤器链由多个过滤器组成,每个过滤器负责一个特定的安全任务,例如身份验证、授权、会话管理等。过滤器链中的过滤器按照顺序依次执行,直到最后一个过滤器完成请求的处理。Spring Security的过滤器链包括以下几个过滤器:ChannelProcessingFilter:该过滤器用于强制使用HTTPS协议或HTTP协议,可以防止恶意攻击者通过中间人攻击窃取用户的身份验证凭据。
2023-06-06 20:38:42 1737
原创 Spring Boot 与 Spring Security:核心讲解(1)
Spring Security是一个基于Spring框架的安全框架,它提供了一系列的安全服务,包括认证、授权、攻击防护等。其中,认证和授权是Spring Security最核心的功能之一。认证是指验证用户的身份是否合法。Spring Security提供了多种身份认证方式,包括基于表单的身份认证、基于HTTP Basic认证、基于HTTP Digest认证、基于OAuth2认证等。在Spring Security中,认证的流程如下:用户访问需要认证的资源。
2023-06-05 22:42:01 769
原创 Spring Boot 与 Spring Security
Spring Security是一个基于Spring框架的安全框架,它提供了一套完整的安全解决方案,包括认证、授权、攻击防护等功能,可以轻松地集成到Spring应用程序中,保护应用程序的安全性。Spring Security的主要作用是保护Web应用程序的安全性,包括用户身份验证、授权、防止跨站请求伪造(CSRF)、防止会话固定攻击等。在使用Spring Security时,我们可以配置安全策略、用户角色、访问控制等,从而实现对Web应用程序的安全保护。
2023-06-05 20:51:09 2886
原创 Java与查找算法(5):哈希查找
哈希查找,也称为散列查找,是一种基于哈希表的查找算法。哈希表是一种数据结构,它将键(key)映射到值(value),使得查找某个键对应的值的时间复杂度为O(1)。哈希查找的过程就是将要查找的键通过哈希函数转换成哈希表中的索引,然后在索引对应的位置上查找值。因为哈希函数的映射是唯一的,所以哈希表中不会出现键冲突的情况。哈希函数通常是将键映射成一个整数,然后再将这个整数映射到哈希表中的索引。在实际应用中,哈希函数的设计往往需要考虑到具体的应用场景和数据特点,需要根据实际情况进行调整。
2023-05-29 21:48:34 2414
原创 Java 与查找算法(4):插值查找
插值查找是一种基于二分查找算法的优化算法,用于在有序数组中查找目标元素。与二分查找每次取中间位置的元素进行比较不同,插值查找根据目标元素与数组中最小值和最大值的比例来确定查找位置,从而尽可能地接近目标元素。插值查找算法的时间复杂度为O(log2(log2n)),比二分查找更快,但在数据分布不均匀的情况下可能会退化为O(n)。因此,插值查找适用于数据分布均匀的情况下进行查找。
2023-05-28 19:28:24 1109
原创 Java 与查找算法(2)二分查找
二分查找,也称折半查找,是一种常见的查找算法。它的思想是将有序数组分成两部分,取中间位置的值与目标值进行比较,如果相等则返回该位置,如果目标值小于中间值,则在左半部分继续查找,否则在右半部分继续查找,直到找到目标值或者数组被遍历完。二分查找的时间复杂度为 O(log n),是一种高效的查找算法。但是它要求数组必须是有序的,因此在某些情况下,为了使用二分查找,需要先对数组进行排序。递归实现二分查找的核心思想是将数组不断地分成两半,直到找到目标值或者数组被遍历完。
2023-05-26 20:29:36 2260
原创 Java 与查找算法(1):顺序查找
顺序查找,也称为线性查找,是一种简单的查找算法,它从列表的开头开始逐一比较每个元素,直到找到目标元素或搜索到列表的末尾。顺序查找适用于小型列表或未排序的列表,但对于大型、有序的列表,它的效率较低。顺序查找的时间复杂度为O(n),其中n是列表的大小。在最坏情况下,需要遍历整个列表才能找到目标元素,因此效率较低。但是,它的优点是实现简单,适用于小型列表或未排序的列表。
2023-05-25 19:21:01 2087
原创 Java 与排序算法(7):堆排序
堆排序是一种基于比较的排序算法,它的基本思想是将待排序的元素构建成一个堆,然后依次将堆顶元素取出,放到已排序的序列中,直到堆中所有元素都被取出,最终得到一个有序的序列。堆是一种特殊的树形数据结构,它满足以下两个条件:堆是一颗完全二叉树。堆中每个节点的值都大于等于(或小于等于)其左右子节点的值,这种性质称为堆的性质。堆排序的基本步骤如下:构建堆:将待排序的元素构建成一个堆,可以使用数组来表示堆,数组中下标为 i 的元素的左子节点下标为 2i+1,右子节点下标为 2i+2。
2023-05-24 23:01:23 2080
原创 Java 与数据结构(6):快速排序
ChatGPT 中文指南(大全)内容包含:如何开通chatgpt、chatgpt的同类站点、prompts 、AI绘图、ChatGPT 工具、相关报告论文、ChatGPT应用项目等。
2023-05-24 19:14:05 1197
原创 Java 与排序算法(5):归并排序
归并排序(Merge Sort)是一种基于分治思想的排序算法。它将待排序的数组分成两个长度相等的子数组,然后对这两个子数组分别进行归并排序,最后将两个排好序的子数组合并成一个有序的数组。
2023-05-23 21:34:52 1846
原创 Java 与排序算法(4):希尔排序
希尔排序(Shell Sort)是插入排序的改进版,由 Donald Shell 在 1959 年提出。希尔排序通过将待排序序列分成多个子序列,分别进行插入排序,最后再进行一次整体的插入排序,从而提高了排序效率。希尔排序的基本思想是将待排序序列分成若干个子序列,对每个子序列进行插入排序,使得整个序列在插入排序的基础上更加有序。具体来说,希尔排序的实现过程如下:选择一个增量序列,通常为 n/2、n/4、n/8 等,其中 n 为待排序序列的长度。
2023-05-23 19:24:57 1318
原创 Java 与排序算法(3):插入排序
插入排序(Insertion Sort)是一种简单直观的排序算法,它的基本思想是将待排序序列分为已排序区间和未排序区间,然后每次从未排序区间取出一个元素,将其插入到已排序区间的合适位置中,使得插入后仍然保持已排序区间有序。重复这个过程,直到未排序区间为空,整个序列有序为止。
2023-05-22 21:57:17 2991
原创 Java 与排序算法(2):选择排序
选择排序(Selection Sort)是一种简单的排序算法,其基本思想是在待排序序列中选择最小(或最大)的元素,将其与序列的第一个元素交换位置,然后在剩余的元素中继续选择最小(或最大)的元素,将其与序列的第二个元素交换位置,以此类推,直到整个序列有序为止。选择排序的时间复杂度为 O(n^2),其中 n 是待排序序列的长度。虽然选择排序的时间复杂度较高,但是它的实现简单,容易理解,并且在某些特定场景下仍然有着广泛的应用。
2023-05-22 20:07:24 2201
原创 Java 与排序算法(1):冒泡排序
冒泡排序(Bubble Sort)是一种简单的排序算法,它的基本思想是通过不断交换相邻两个元素的位置,使得较大的元素逐渐往后移动,直到最后一个元素为止。冒泡排序的时间复杂度为On2,空间复杂度为O1,是一种稳定的排序算法。
2023-05-21 22:32:04 15206
原创 十几年老员工提出的五条有效沟通的建议
同时,在表达自己的意见时,也要注意措辞和语气,尽量用客观的语言表达自己的观点,避免使用过于主观的词语。要认真倾听对方的话语,理解对方的观点,避免在沟通中过于主观,只关注自己的利益。在沟通中,我认真倾听了客户的话语,了解了他们的需求和期望,并根据客户的反馈做出了相应的调整。同时,我也注意到了领导的反应和表情,及时做出了相应的调整,最终得到了领导的认可和支持。总之,在职场上做好沟通需要不断的实践和学习,要保持积极的心态,不断改进自己的沟通能力,才能在职场上取得更好的成就。
2023-05-21 21:48:46 534
原创 Java 与数据结构(10):并查集
并查集(Disjoint Set)是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常用于图论中,比如判断图中的连通性、最小生成树等问题。并查集有两个主要操作:查找(Find):查找元素所在的集合,通常用于判断两个元素是否在同一个集合中。合并(Union):将两个集合合并成一个集合,通常用于将两个不相交的集合合并为一个集合。并查集的基本实现方式是使用数组来表示每个元素所在的集合,数组的下标表示元素的编号,数组的值表示元素所在的集合的编号。
2023-05-19 19:57:12 639
原创 Java 与数据结构(8):堆
堆是一种特殊的树形数据结构,它满足以下两个条件:堆是一棵完全二叉树,即除了最后一层外,其他层都是满的,并且最后一层的节点都靠左排列。堆中每个节点的值都必须大于等于(或小于等于)其子节点的值,这种关系被称为堆序性。根据堆序性,堆可以分为两种类型:最大堆:每个节点的值都大于等于其子节点的值。最小堆:每个节点的值都小于等于其子节点的值。堆的常见操作包括插入元素、删除元素和查找最大/最小元素等。其中,插入元素和删除元素的时间复杂度为O(log n),查找最大/最小元素的时间复杂度为O(1)。
2023-05-18 19:10:16 460
原创 Java 与数据结构(7):哈希表
哈希表是一种常用的数据结构,它可以用来实现字典、索引等功能。哈希表通过哈希函数将键映射到数组下标,使得查找、插入和删除操作的时间复杂度为常数级别。哈希表由一个数组和一个哈希函数组成。数组用来存储键值对,哈希函数用来将键映射到数组下标。常见的哈希函数包括取模法、乘法散列法、一致性哈希等。在哈希表中,每个数组元素称为一个桶(Bucket),每个桶中存储的是键值对的链表。当需要查找一个键时,首先使用哈希函数计算出它对应的数组下标,然后在对应的链表中查找是否存在该键。如果存在,则返回对应的值,否则返回空值。
2023-05-17 21:29:18 759
原创 Java 与数据结构(6):图
图是一种非常重要的数据结构,在计算机科学和网络科学中被广泛应用。图由节点(顶点)和边组成,节点表示实体,边表示实体之间的关系。图可以用来描述各种复杂的关系,如社交网络、路线图、组织结构等。在计算机科学中,图被广泛应用于图算法、网络分析、图形数据库等领域。在网络科学中,图被用于描述社交网络、互联网拓扑结构、蛋白质相互作用网络等。图可以分为有向图和无向图两种类型。有向图中的边有方向,表示从一个节点到另一个节点的单向关系。无向图中的边没有方向,表示两个节点之间的双向关系。
2023-05-17 20:20:17 906
基于springboot的乐校园二手书交易管理系统的设计与实现 PPT
2023-07-04
基于springboot的家具商城系统的设计与实现
2023-07-04
基于springboot的驾校管理系统的设计与实现
2023-07-04
基于springboot的福聚苑社区团购的设计与实现
2023-07-04
基于sprinboot的网上书城管理系统的设计与实现LW
2023-07-04
基于springboot的生鲜超市管理的设计与实现
2023-07-04
基于springboot的招聘信息管理系统的设计与实现LW
2023-07-04
基于Django的手办交易平台
2023-09-10
Django宾馆管理系统-论文
2023-09-10
高校教室管理系统-论文
2023-09-05
电影个性化推荐系统-论文
2023-09-05
springboot家政服务管理平台--论文.rar
2023-08-22
springboot农机电招平台--论文.rar
2023-08-22
springboot留守儿童爱心网站--论文.rar
2023-08-22
springboot基于Web的社区医院管理服务系统--论文.rar
2023-08-22
springboot基于SpringBoot的冬奥会科普平台--论文.rar
2023-08-22
springboot家乡特色推荐系统--论文.rar
2023-08-22
MYSQL同一条SQL语句查询在本机很快,在服务器很慢很慢
2022-08-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人