自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式:策略模式

策略模式(Strategy Pattern)是行为设计模式的一种,它定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法的变化独立于使用算法的客户。策略模式让程序可以在运行时选择算法,灵活地改变程序的行为。

2024-05-17 10:55:17 572

原创 设计模式:状态模式

状态模式(State Pattern)是一种行为设计模式,属于设计模式中的行为模式类别。该模式主要用于解决对象状态转移及其行为变化的问题,使得对象能够在内部状态改变时,其行为也随之改变,从而让对象看起来像是改变了类型一样。

2024-05-16 15:48:41 356

原创 设计模式:解释器模式

解释器模式(Interpreter Pattern)是一种行为设计模式,它定义了一种方式来解释一个语言中的句子。这里的“语言”可以是任何形式的文法规则或表达式,比如数学公式、编程语言的语法、正则表达式等。解释器模式的关键在于将这些规则或表达式分解成多个小的组成部分(表达式),并为每个部分定义一个解释器。这些解释器类合作来解释整个句子的意义。

2024-05-15 14:55:00 646

原创 设计模式:备忘录模式

备忘录模式(Memento Pattern)是一种行为设计模式,它的主要目的是在不破坏对象的封装性的前提下,捕获并存储一个对象的内部状态,以便在将来需要时恢复该对象到之前的状态。这种模式非常适合需要实现撤销操作或状态恢复的场景,比如文本编辑器的撤销功能、游戏中的存档与读档功能等。

2024-05-14 11:33:46 560

原创 Oracle Exists、 NOT Exists用法

EXISTS提供了一种高效的方式来判断行的存在性,是处理子查询时的一个强大工具,尤其是在需要基于条件判断数据是否存在,而不关心具体值的情况下。NOT EXISTS在Oracle数据库中,NOT EXISTS关键字用于子查询中,用来检查子查询是否有结果。与EXISTS相反,NOT EXISTS用于筛选出那些在子查询中找不到匹配项的记录。当子查询没有返回任何行时,NOT EXISTS子句的条件为真,从而外层查询的行会被包含在结果集中。以下是NOT EXISTSNOT EXISTS。

2024-05-14 11:24:22 1260

原创 设计模式:中介者模式

中介者模式(Mediator Pattern)是一种行为设计模式,它用于减少多个对象和类之间的直接交互复杂性,通过引入一个中介机构(即中介者)来管理这些交互。中介者模式定义了一个中心组件,该组件负责协调各对象之间的通信,使得对象之间不必显式地相互引用,从而降低了系统的耦合性并提高了可维护性和灵活性。

2024-05-13 20:42:46 1468

原创 设计模式:观察者模式

观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式通常被用来实现事件处理系统、实时数据更新、状态监控等多种场景。

2024-05-11 17:49:57 579

原创 设计模式:迭代器模式

迭代器模式(Iterator Pattern)是一种行为设计模式,它提供了一种方法来顺序访问集合对象中的元素,而不需要了解集合的底层表示。迭代器模式将集合的遍历操作(即对元素的访问和遍历逻辑)从集合对象本身分离出来,封装到了迭代器对象中。这样做的好处是,集合对象的内部结构可以自由地改变,而遍历集合的代码不需要随之调整,增强了代码的灵活性和模块化。

2024-05-10 17:54:54 697

原创 设计模式:访问者模式

访问者模式(Visitor Pattern)是行为设计模式的一种,它使你能够在不修改对象结构的情况下,给对象结构中的每个元素添加新的功能。访问者模式将数据结构和作用于结构上的操作解耦,使得操作集合可相对自由地演化。

2024-05-09 17:59:23 653

原创 设计模式:命令模式

命令模式(Command Pattern)是一种行为设计模式,它将请求封装成对象,以便参数化对象、延迟执行、记录请求日志、支持可撤销操作等。此模式基于“行动请求者”与“行动执行者”之间解耦的设计思想,使得请求的发送者和接收者之间没有直接的联系,通过命令对象作为中介,这样两者可以独立变化,提高系统的灵活性和可扩展性。

2024-05-08 11:44:56 918

原创 模板方法模式

模板方法模式(Template Method Pattern)是行为设计模式的一种,它定义了一个操作中的算法骨架,而将某些步骤延迟到子类中实现。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,从而使得代码复用和扩展性得到提升。

2024-05-07 14:24:13 592

原创 vue2 v-if 使用

在 Vue 2 中,v-if是一个条件渲染指令,用于根据表达式的值决定是否渲染模板的一部分。下面是使用v-if。

2024-05-07 10:45:47 329

原创 设计模式:代理模式

代理模式(Proxy Pattern)是软件设计模式中的一种结构型模式,它提供了一种代理或占位符来控制对其他对象(称为真实主题或目标对象)的访问

2024-05-06 14:36:08 698

原创 设计模式:享元模式

内部状态是存储在享元对象内部并且可以共享的状态,这部分状态对于所有享元对象是相同的,不会随着环境改变而改变。在这个例子中,我们将模拟一个字符渲染系统,其中字符可以有不同的颜色,但大多数字符都是重复的,例如,一个文档中可能多次出现字母'a',且这些字母可能有多种颜色。客户端通过工厂获取享元对象,并传递外部状态(颜色)来渲染字符,实现了内部状态的共享和外部状态的分离。当客户端请求享元对象时,享元工厂会提供已存在的享元对象或创建新的享元对象(如果不存在符合条件的共享对象)。接口定义了享元对象的行为,

2024-04-28 16:02:45 407

原创 设计模式:外观模式

外观模式通过定义一个新的接口(即外观类),封装原有系统中的一组接口,使得外部用户只需与这个外观接口交互,无需了解内部组件的细节。总之,外观模式通过引入一个外观类,为复杂的子系统提供了一个更易于使用的接口,简化了客户端与子系统的交互,降低了系统的耦合度,提高了系统的可维护性和可扩展性。外观模式提供了一个简化的接口,它将一组复杂的子系统接口或类的功能封装在一起,使客户端只需要与这个单一、简洁的接口打交道,而无需直接访问各个子系统。这有利于系统的维护和演化。交互,无需了解子系统的具体实现细节,简化了系统的使用。

2024-04-26 15:14:01 324

原创 设计模式:组合模式

组合模式(Composite Pattern)是一种结构型设计模式,它的主要目的是将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。在组合模式中,组合对象和叶子对象都有相同的接口,用户可以以相同的方式处理它们,无需了解对象是单个实体还是由多个对象组成的集合。这里我们创建一个图形库应用程序,其中图形既可以是简单图形(叶子对象),如矩形和圆形,也可以是复杂图形(组合对象),如组合图形,它包含多个图形。:是组合对象中的最底层对象,没有子节点。

2024-04-25 14:25:22 232

原创 装饰者模式

装饰者模式的核心在于“装饰”这一概念,它通过创建一个装饰对象来包裹(或“装饰”)原始对象,并通过在装饰对象中扩展或替换原有对象的部分行为,实现对原始对象功能的增强或修改,同时保持原始对象的接口不变。以下是一个使用Java实现装饰者模式的简单示例。我们将创建一个饮料(Beverage)类作为抽象构件,具体饮料(如Espresso、HouseBlend)作为具体构件,以及一个装饰者(CondimentDecorator)类和几个具体的装饰者(如Milk、WhippedCream、Chocolate)。

2024-04-24 00:13:19 667

原创 桥接模式介绍

桥接模式的核心思想是将抽象层和实现层解耦,使得抽象层可以独立地进行扩展而无需修改其实现层的代码,反之亦然。通过桥接模式,可以构建出更灵活、更容易扩展的系统,其中抽象部分与实现部分之间松散耦合,各自独立演化,从而增强了系统的灵活性和可维护性。:定义抽象类的基本操作,存储一个实现化对象,通过调用实现化对象的方法来完成具体的操作。:继承自抽象接口,可以覆盖并扩展抽象接口中的一些方法,同时调用实现化对象的相关方法。:实现实现化接口,提供具体的实现化角色功能,这些功能会被抽象接口调用。

2024-04-22 11:47:14 231

原创 适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要作用是将一个类的接口(API)转换成客户端期望的另一个接口,使得原本由于接口不兼容而无法在一起工作的类能够协同工作。适配器模式实现了两个接口之间的对接,从而帮助系统中的现有类和其他类能够无缝集成。: 这是客户端期望使用的接口,定义了客户端需要的方法集合。: 这是需要被适配的类,拥有自己的一组方法,但与目标接口不兼容。: 这是适配器类,它实现了目标接口,并持有被适配者的一个实例。

2024-04-20 15:54:12 572

原创 建造者模式

下面是一个简单的Java实现建造者模式的例子,我们将会创建一个披萨(Pizza)的产品类,并定义一个抽象建造者(Builder)来构建披萨的不同部分,然后创建一个具体的建造者实现来制作不同口味的披萨,最后通过导演(Director)类来指导建造过程。它不用知道具体建造者的内部细节,只知道如何通过调用建造者的接口方法来一步步指导产品的创建过程。: 提供了一个抽象接口,规定了创建产品对象的各个步骤,具体包括定义了一系列的方法,用于创建产品的各个部分。则是导演类,它通过调用建造者的方法来完成披萨的创建。

2024-04-12 14:47:44 543

原创 原型设计模式

当原始对象的属性发生变化时,克隆对象的属性保持不变,表明它们是独立的实体。需要注意的是,对于包含引用类型的成员变量,必须确保它们也被正确地克隆,以实现真正的深克隆。在Java中实现原型模式,首先需要一个实现了Cloneable接口的实体类,然后重写Object类的clone()方法。如果涉及到复杂的数据结构或包含非基本类型的成员变量,则需要特别注意深克隆的实现,以免出现引用复制而非值复制的问题。: 使用原型接口来请求克隆对象,而不需要关心具体的实现细节。方法,它是所有具体原型类都需要实现的接口。

2024-04-12 14:30:40 742

原创 工厂设计模式

提供一个接口,用于创建相关或依赖对象家族的一系列相关或相互依赖的对象,而不指定具体的产品类。适合于一个产品族内的多个产品对象都需要一起创建的情况。以下是抽象工厂模式的一个简单示例,我们继续沿用披萨店的例子,这次不仅要生产不同口味的披萨,还要区分纽约风格和芝加哥风格的披萨原料:

2024-04-09 13:15:35 1747

原创 程序员如何搞副业?

根据个人的兴趣、特长及时间安排,程序员可以选择最适合自己的一种或几种副业形式。同时,重要的是要平衡好副业与主业的关系,确保副业不会过度影响到本职工作的质量和效率。程序员由于其专业技能和互联网行业的紧密联系,拥有开展多种副业的优势。

2024-04-08 16:16:53 214

原创 单例设计模式

单例设计模式(Singleton Design Pattern)是一种常用的软件设计模式,它确保一个类在整个应用程序的生命周期中只会产生一个实例,并提供一个全局访问点来获取这个唯一的实例。单例模式的目标是控制类的实例化过程,使得无论何时何地访问这个类的实例时,得到的都是同一个对象。这是《Effective Java》作者Joshua Bloch推荐的单例实现方式,不仅能防止反射攻击,还提供了天然的序列化机制,同时也是线程安全的。这种方式写法比较简单,就是在类装载的时候就完成实例化,避免了线程同步问题。

2024-04-08 11:57:09 417

原创 telnet 命令使用

Windows系统中,默认未启用Telnet客户端,需要在控制面板或通过命令行开启Telnet功能。在较新版本的Windows中,可以使用PowerShell执行。Telnet命令是一种基于TCP/IP协议的应用层协议,主要用于远程登录和网络设备管理。如果端口开放,通常会有一个连接成功的提示;反之,如果端口关闭或无响应,一般会显示连接超时或拒绝连接的信息。是你要连接到的远程主机的域名或IP地址。是目标主机上要连接的端口号,默认情况。命令来开启Telnet客户端。

2024-04-07 17:32:37 706

原创 在HTML5中,<a>标签设置了download属性,图片仍然会在浏览器中直接打开而不是触发下载

而对于纯前端解决方案,如果遇到浏览器总是尝试打开图片而不是下载,可能需要结合其他技术手段,比如借助Blob对象和URL.createObjectURL()方法配合JavaScript动态创建下载链接,以绕过浏览器的默认行为。:服务器发送的MIME类型也会影响浏览器的行为,如果服务器明确指定了图片MIME类型,浏览器可能会按照该类型解析并显示图片。:如果图片资源位于不同的域,并且服务器没有设置允许跨域下载(CORS头部),浏览器出于安全考虑可能不会允许直接下载。属性,浏览器也可能优先选择显示而非下载。

2024-04-07 17:25:31 886

原创 SSM框架整合Redis

同时,随着Spring Boot和Spring Data Redis的发展,许多配置过程变得更加简洁和自动化。若使用Spring Boot,则无需手动配置连接工厂,只需要在application.properties或application.yml中配置即可。对于Spring MVC应用,若需要在web.xml中加载Spring配置文件或初始化Spring容器,可以添加相应配置。在业务代码中注入RedisTemplate,然后就可以使用它来进行Redis的各种操作,比如存取数据、设置过期时间等。

2024-04-07 11:28:33 297

原创 Oracle 查询结果只获取一行数据

请注意,以上方法都需要确保查询结果集不会因为并行执行或其他因素导致顺序变化,特别是当依赖。的时候,通常需要配合一个稳定的排序条件来保证始终获取的是“第一条”数据。: 自 Oracle 12c 起,Oracle 引入了。这将返回 ID 最小的那条记录。: Oracle 不支持。排序后的第一条记录。

2024-04-07 11:14:24 3228

原创 Oracle case when用法

CASE 表达式(Simple CASE)

2024-04-02 16:27:03 184

原创 Java Pdf转图片

搜索 fontbox 和 pdfbox 进行下载。

2024-04-02 11:38:35 243

原创 页面传值编码、解码

//页面编码encodeURI(encodeURI(qymc));//页面解码var qymc = decodeURI('<%=request.getParameter("qymc")%>');//后台解码String qymc=URLDecoder.decode(request.getParameter("qymc"), "utf-8");...

2020-04-16 14:29:14 144

原创 单选框、多选框赋值

/*** 给单选按钮赋值的方法*/function fillRadio(radioName,radioValue){var ro=document.getElementsByName(radioName);for(var i=0;i<ro.length;i++){if(ro[i].value==radioValue){...

2020-04-13 16:40:44 691

空空如也

空空如也

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

TA关注的人

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