- 博客(33)
- 收藏
- 关注
原创 设计模式(行为型设计模式——访问者模式)
访问者模式将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。
2024-03-23 11:27:06 1819
原创 设计模式(行为型设计模式——模板方法模式)
模板方法模式定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
2024-03-23 11:19:14 702
原创 设计模式(行为型设计模式——策略模式)
策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
2024-03-22 14:29:55 668 1
原创 设计模式(行为型设计模式——观察者模式)
观察者模式定义了对象之间的一对多关系。多个观察者监听同一个被观察者,当该被观察者的状态发生改变时,会通知所有的观察者。观察者与被观察者之间用松耦合方式结合。使用观察者模式,可以从被观察者处推或者拉数据。
2024-03-21 13:29:53 837 2
原创 设计模式(行为型设计模式——备忘录模式)
备忘录模式在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
2024-03-21 13:21:22 618
原创 设计模式(行为型设计模式——中介者模式)
所谓中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又叫调停者模式,它是迪米特法则的典型应用。
2024-03-20 13:26:04 910
原创 设计模式(行为型设计模式——迭代器模式)
迭代器模式提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示。将遍历聚合对象中数据的行为提取出来,封装到一个迭代器中,通过专门的迭代器来遍历聚合对象的内部数据,这就是迭代器模式的本质。
2024-03-20 13:16:32 1022
原创 设计模式(行为型设计模式——命令模式)
命令模式是将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。
2024-03-19 11:48:12 2121
原创 设计模式(行为型设计模式——职责链模式)
职责链模式将请求的发送者和接受者解耦了。客户端不需要知道请求处理者的明确信息,甚至不需要知道链的结构,它只需要将请求进行发送即可。处理者不需要知道链的结构,只需要明白他的后续者是谁就可以了。这样就简化了系统中的对象。职责链模式能够非常方便的动态增加新职责或者删除职责。不能保证每个请求一定被处理。由于一个请求没有明确的接收者,所以不能保证它一定会被处理,该请求可能一直传到链的末端都得不到处理。
2024-03-18 10:34:21 1806
原创 设计模式(结构型设计模式——代理模式)
代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用。在代理模式中,“第三者”代理主要是起到一个中介的作用,它连接客户端和目标对象。
2024-03-18 10:24:26 866 1
原创 设计模式(结构型设计模式——享元模式)
如果一个系统中存在大量的相同或者相似的对象,由于这类对象的大量使用,会造成系统内存耗费,可以使用享元模式来减少系统中对象的数量
2024-03-17 16:51:14 700
原创 设计模式(结构型设计模式——外观模式)
外观模式是为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。
2024-03-17 16:45:19 483
原创 设计模式(结构型设计模式——装饰者模式)
装饰模式指的是在不必改变原类文件和使用继承(也是与适配器模式不一样的地方)的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
2024-03-16 11:14:55 459
原创 设计模式(结构型设计模式——组合模式)
组合模式用于将多个对象组合成树形结构以表示“整体与部分”的结构层次,组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。组合对象的关键在于他定义了一个抽象构建类,它即可表示叶子对象,也可以表示容器对象,客户仅仅需要针对这个抽象构建进行编程,无须知道它是叶子对象还是容器对象。都一致性对待。组合模式虽然能够很好的处理层次结构,也使得客户端程序变的简单,但它使得设计变的更加抽象,而且也很难对容器的构建类型限制,这会导致在增加新的构建时产生一些问题。
2024-03-16 11:02:17 548
原创 设计模式(结构型设计模式——桥接模式)
桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。降低了类与类之间的耦合度:脱耦就是将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联,将两个角色之间的继承关系改为关联关系。
2024-03-15 13:56:43 814
原创 设计模式(结构型设计模式——适配器模式)
何谓适配器模式?适配器模式就是将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。在适配器模式中,我们可以定义一个包装类,包装不兼容接口的对象,这个包装类就是适配器,它所包装的对象就是适配者。适配器提供给客户需要的接口,适配器的实现就是将客户的请求转换成对适配者的相应的接口的引用。也就是说,当客户调用适配器的方法时,适配器方法内部将调用适配者的方法,客户并不是直接访问适配者的,而是通过调用适配器方法访问适配者。因为适配器可以使互不兼容的类能够“合作愉快”。
2024-03-15 13:45:15 841
转载 设计模式(建造型设计模式——原型模式)
原型模式向客户隐藏了创建对象的复杂性。客户只需要知道要创建对象的类型,然后通过请求就可以获得和该对象一模一样的新对象,无须知道具体的创建过程。克隆分为浅克隆和深克隆两种。
2024-03-13 13:50:56 49
转载 设计模式(建造型设计模式——建造者模式)
建造者模式是将一个复杂对象的创建过程给封装起来,客户只需要知道可以利用对象名或者类型就能够得到一个完整的对象实例,而不需要关心对象的具体创建过程。建造者模式将对象的创建过程与对象本身隔离开了,使得细节依赖于抽象,符合依赖倒置原则。可以使用相同的创建过程来创建不同的产品对象。
2024-03-13 13:39:39 43
原创 设计模式(建造型设计模式——抽象工厂模式)
抽象工厂模式中主要的优点在于具体类的隔离,是的客户端不需要知道什么被创建了。其缺点在于增加新的产品族比较复杂,需要修改接口及其所有子类。工厂模式和抽象工厂模式主要区别在于产品,产品种类单一,适合工厂模式。抽象工厂模式适合用于创建多个产品种类,多个产品类型。
2024-03-13 13:20:44 1103
原创 设计模式(建造型设计模式——简单工厂模式)
简单工厂模式又称之为静态工厂方法,属于创建型模式。在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。
2024-03-13 11:54:47 338
原创 JUC并发编程(三)
ThreadLocal不解决线程间共享变量的问题ThreadLocal适用于变量在线程间隔离且在方法间共享的场景ThreadLocal通过隐式的在不同线程内创建独立实例副本避免了实例线程安全的问题每个线程都有一个独立的属于自己的Map并维护了ThreadLocal对象与具体实例映射,该Map只有它的持有线程才可以访问,所以不存在线程安全及所的问题ThreadLocalMap的Entry对ThreadLocal的引用为弱引用,避免了ThreadLocal对象无法被回收的问题。
2023-11-26 21:38:02 958
原创 JUC并发编程(二)
执行CAS的时候将内存地址的值V与预期原值B进行比较,如果相匹配,那么处理器会自动将该位置值更新为新值A,如果不匹配,处理器不会做任何操作或者重试——自旋,多个线程同时执行CAS操作,只有一个会成功
2023-11-15 21:55:48 92
原创 JUC并发编程(一)
悲观锁:认为自己在使用数据的时候一定有别的线程来修改数据,因为在获取数据的时候一定会先获取锁,确保数据不会被其他线程所修改。(适合写操作的场景)乐观锁:认为自己在使用数据的时候不会有别的线程来修改数据或资源,所以不会加锁,在java编程中使用的是无锁编程来实现的,只是在更新数据的时候去判断,有没有别的线程去修改当前数据。如果数据没更新,当前线程将自己的修改操作进行写入,如果更新了的话则根据不同的方式执行不同的操作,比如放弃修改、或者重试抢锁等等(适合读操作)
2023-11-07 21:05:23 104
原创 JVM —— 初识JVM(一)
方法区(Method Area):存储类的结构信息,如类的字段、方法、构造函数等。堆可以分为几个不同的区域,如新生代(Young Generation)和老年代(Old Generation)。幸存者区又分为幸存者区S0(From)和幸存者区S1(To)。本地方法栈(Native Method Stack):类似于栈,但用于执行本地方法(Native Method)。栈(Stack):存储方法调用的信息,包括局部变量、操作数栈和方法调用的状态。通常情况下,老年代的对象比新生代的对象更大。
2023-08-11 10:11:24 116
原创 Springboot实现拦截器功能
这里很简单,先引入spring-boot-starter-parent,parent 是父模块,由父模块统一进行 spring-boot 版本管理,dependencies 中与 spring-boot 启动绑定的包不需要再指定版本。(我这里是为了测试,接口参数str的值是否包含admin,如果包含就返回该接口的数据,否则跳转到登录接口)注解,不然拦截器不会生效。类,并且在该类上添加。注入到该类中,然后在。
2023-03-15 17:52:42 632 1
原创 Mybatis timezone问题
Mybatis 连接报The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you wan
2021-06-26 13:27:19 262
原创 钉钉扫码登录
vue+element+C#集成钉钉扫码登录模块(前端页面)页面<-采用了teb切换页的形式--><el-tab-pane label="钉钉登录" name="third"> <div style=" width:400px height: 238px;background: #ffffff" id="ding-login"> </div><
2021-04-08 09:46:28 805 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人