- 博客(33)
- 收藏
- 关注
原创 【ThreadPoolTaskSchedule】实现手动开启关闭定时任务
ThreadPoolTaskSchedule实现手动开启和关闭定时任务
2023-08-10 14:16:48
1276
3
原创 【设计模式】创建型-抽象工厂模式
正因为抽象工厂模式存在“开闭原则”的倾斜性,它以一种倾斜的方式来满足“开闭原则”,为增加新产品族提供方便,但不能为增加新产品结构提供这样的方便,因此要求设计人员在设计之初就能够全面考虑,不会在设计完成之后向系统中增加新的产品等级结构,也不会删除已有的产品等级结构,否则将会导致系统出现较大的修改,为后续维护工作带来诸多麻烦。抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的 产品对象的创建。
2023-04-03 16:42:27
1135
原创 【Redis】redis跟数据库的数据同步问题
从上面的解决方案来看,先不说Redis、数据库的操作先后,数据库的操作始终都是更新,但是Redis不一样,Redis有两种方案,一是更新(也就是直接在Redis中写入更新的数据),二是删除Redis中的缓存,那么接下来我们就看看这两者有什么区别。从上面的图可以知道,如果更新数据库失败的话,那么即使删除Redis缓存成功了,在重试期间,下一次读取出来的数据还是之前的旧数据,即使重试成功了,数据库的数据更新了,但是Redis中已经被重新缓存了旧数据,这样两边的数据就不会一致。这个问题的解决方案就是采用。
2023-04-03 16:26:36
3689
原创 【设计模式】创建型-工厂方法模式
在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。ConcreteFactory(具体工厂):它是抽象工厂类的子类,实现了抽象工厂中定义的工厂方法,并可由客户端调用,返回一个具体产品类的实例。工厂方法模式提供一个抽象工厂接口来声明抽象工厂方法,而由其子类来具体实现工厂方法,创建具体的产品对象。在讲解工厂方法模式之前先说一下简单工厂模式的缺点。
2023-04-03 14:23:13
466
原创 【设计模式】简单工厂模式
Product(抽象产品角色):它是工厂类所创建的所有对象的父类,封装了各种产品对象的公有方法,它的引入将提高系统的灵活性,使得在工厂类中只需定义一个通用的工厂方法,因为所有创建的具体产品对象都是其子类对象。经过简单工厂模式重构后可以发现,系统中的类的个数增加了,但是每一种支付处理方式都封装在单独的类中,而且工厂类中只有简单的判断逻辑代码,不需要关心具体的业务处理逻辑,很好的满足了。,这样后续如果想要增加新的支付方式,就只需要新增一个类,以及在工厂类中的判断逻辑中增加几行简单的代码就可以实现。
2023-04-03 13:41:13
427
原创 【设计模式】创建型-原型模式
通过序列化实现的拷贝不仅可以复制对象本身,而且可以复制其引用的成员对象,因此通过序列化将对象写到一个流中,再从流里将其读出来,可以实现深克隆。如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象和克隆对象的成员变量指向相同的内存地址。在深克隆中,无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象,深克隆将原型对象的所有引用对象也复制一份给克隆对象。抽象原型类是定义具有克隆自己的方法的接口,是所有具体原型类的公共父类,可以是抽象类,也可以是接口。
2023-04-03 12:34:42
452
原创 【设计模式】创建型-单例模式
类的静态属性只会在第一次加载类的时候初始化,JVM 帮助我们保证了线程的安全性,在类进行初始化时,别的线程是无法进入的。方式二不是一个实例,线程不安全,原因是一个线程进入了空判断,还没往下执行,另一个线程来了,其中一个线程拿到锁,往下执行创建了实例,执行完释放锁后,另一个线程也往下执行了并创建对象,两者创建的对象并不一致。单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。
2023-04-03 11:50:20
710
1
原创 【JVM】初学JVM
堆:Java中的堆是用来存储对象实例以及数组(当然,数组引用是存放在Java栈中的)。堆是被所有线程共享的,因此在其上进行对象内存的分配均需要进行加锁,这也导致了new对象的开销是比较大的。在JVM中只有一个堆。堆是Java垃圾收集器管理的主要区域,Java的垃圾回收机制会自动进行处理。堆空间分为老年代和年轻代。刚创建的对象存放在年轻代,而老年代中存放生命周期长久的实例对象。年轻代中又被分为Eden区(伊甸区)和两个Survivor区(幸存区:From区,To区)。
2023-03-31 17:06:46
212
原创 【设计模式】合成复用原则
合成复用原则(Composite Reuse Principle, CRP):尽量使用对象组合,而不是继承来达到复用的目的。
2023-03-30 14:07:16
1579
原创 【设计模式】依赖倒转原则
高层模块不应该依赖底层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
2023-03-30 14:06:49
262
原创 【设计模式】开闭原则
开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由于1988年提出,其定义如下:开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
2023-03-30 14:06:32
1045
原创 【设计模式】里氏替换原则
里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其严格表述如下:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。
2023-03-30 13:55:39
543
原创 【设计模式】单一职责原则
面向对象设计原则是学习设计模式的基础,每一种设计模式都符合某一种或多种面向对象设计原则。通过在软件开发中适用这些原则,可以提高软件的可维护性和可复用性,让我们可以设计出更加灵活也更容易拓展的软件系统,实现可维护性服用的目标设计原则名称设计原则简介重要性单一职责原则类的职责要单一,不能将太多的职责放在一个类中★★★★☆开闭原则软件实体对拓展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去拓展其功能★★★★★里氏替换原则。
2023-03-30 13:55:09
397
原创 【Java入门】常用类-Math、Random、UUID、Date、Calendar、正则表达式
常用类-Math、Random、UUID、Date、Calendar、正则表达式
2022-07-31 16:58:24
573
原创 【Java入门】 Java的第一个程序Hello World
本章节主要学习的是Java文件从编译到运行的这整个过程,重点理解Java编译和运行机制
2022-07-12 20:25:31
1356
3
原创 【Java入门】JDK的安装和环境搭建
Java的使用,需要在本机安装JDK以及配置好java所需的环境,本章节详细讲解了JDK的安装和环境的搭建JDK下载地址
2022-07-12 19:46:36
1021
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人