自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java设计模式——职责链模式

一、行为型模式介绍职责链模式之前先介绍一下行为型设计模式,因为按照GoF模式分类,职责链就是一种行为型设计模式。行为型设计模式就是主要表示类或者对象之间的关联关系,分为类行为型和对象行为型。类行为型一般都是通过类的继承或者多态等等方式实现。对象行为型就是通过对象的聚合等等关联实现。二、职责链模式定义职责链模式是一种对象行为型模式。根据“合成复用”原则,尽量使用关联来取代类继承,对象行为型可以说是一种不错的行为型模式。职责链模式是一种将请求的发送者和请求处理者分离的一种模式。职责链可以是线型、环型或者

2021-09-15 23:09:18 133

原创 Java设计模式——状态模式

模式定义一个对象在其内部状态改变时改变其行为,这个对象我们可以称为状态对象,所以状态模式是一种对象行为型模式。模式结构Context:环境类Context类也可以称之为上下文类,实际上就是拥有状态的对象,可以理解为状态管理器。State:抽象状态类抽象状态类可以是一个接口类或者抽象类,反正实现的话都是通过具体状态类。抽象状态类,封装环境类不同状态下的所有动作方法。ConcreteState:具体状态类具体实现类就比较容易理解了,就是继承抽象状态类,实现具体的方法,不一定所有的抽象方法都有重写

2021-09-15 23:07:32 128

原创 Java设计模式——模板方法模式

一、模式定义模板方法模式就是在一个抽象类中定义一些骨架方法,然后通过类继承的方法,将一些方法延迟到继承类里。模板方法模式是一种类行为型模式,是一种比较常用的方法。不属于对象行为型模式,因为只是通过类继承实现。Template Method Pattern: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses rede

2021-09-15 23:06:25 106

原创 Java设计模式——策略模式

一、模式定义策略模式:定义一系列算法,然后将每一个算法封装起来,并将它们可以互相替换。也就是将一系列算法封装到一系列策略类里面。策略模式是一种对象行为型模式。策略模式符合“开闭原则“Strategy Pattern: Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients t

2021-09-15 23:05:19 81

原创 Java设计模式——命令模式

一、模式定义命令模式(Command Pattern):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分离,两者之间通过命令对象进行沟通,方便将命令对象进行储存、传递、调用、增加与管理。命令模式别名为动作(Action)模式或事务(Transaction)模式,属于对象行为型模式。二、模式角色命令模式包括如下角色:Client:客户类,负责调用Command:抽象命令类,声明执行命令的接口,拥有执行命令的抽象方法 execute()。ConcreteCommand:具体命令类,是抽象

2021-09-15 23:02:04 145

原创 Java设计模式——迭代器模式

一、模式定义迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor),所以迭代器模式是一种对象行为型。二、模式角色Iterator:抽象迭代器ConcreteIterator:具体迭代器Aggregate:抽象聚合类ConcreteAggregate:具体聚合类三、模式分析对于迭代器模式来说,一个聚合可以有多个遍历。在迭代器模式中,提供了一个外部的迭代器对聚合对象进行访问和遍历,迭代器定义了一个访问聚合对象的接口,

2021-09-15 23:00:57 142

原创 Java设计模式——中介者模式

一、模式定义中介者模式(Mediator Pattern):中介者模式就是用一个中介对象来封装一系列的对象的交互,使各对象之间不需要显式地相互作用,降低对象之间的耦合度,中介者是一种对象行为型模式。所以中介者模式适用于对象之间存在大量的关联的情况,假如一个对象改变了,我们就需要跟踪其关联对象,做出对于调整,耦合度是很大的,所以就可以用中介者模式来降低耦合度。二、模式角色中介者模式包括如下角色:Mediator:抽象中介者ConcreteMediator:具体中介者Colleague:抽象同事类

2021-09-15 22:59:41 111

原创 Java设计模式——解释器模式

一、模式定义解释器模式(Interpreter Pattern):定义语言的文法,并且建立一个解释器来解释改语言中的句子,这里的“语言”意思是规定格式和语法的代码,所以解释器模式是一种类行为型模式二、模式角色Context: 环境类Client: 客户类AbstractExpression: 抽象表达式TerminalExpression: 终结符表达式NonterminalExpression: 非终结符表达式三、模式分析模式表示,可以使用文法规则或抽象语法树来表示语言文法规则实例:

2021-09-15 22:58:12 103

原创 Java设计模式——访问者模式

没有电脑就写的草率了一下,后续补上模式定义访问者模式:表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。所以访问者模式是一种对象行为型模式。模式角色访问者模式包括如下角色:Vistor(抽象访问者)ConcreteVisitor(具体访问者)Element(抽象元素)ConcreteElement(具体元素)ObjectStructure(对象结构)模式分析访问者模式的对象结构存储了不同类型的元素对象,以供不同的访问者访问访问

2021-09-15 22:57:02 57

原创 Java设计模式——备忘录模式

没有电脑就写的草率了一下,后续补上一、模式定义备忘录模式(Memento Pattern):备忘录模式的定义是在不破坏封装的前提下,捕获一个对象的内部状态,并将该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。所以备忘录模式就是一种对象行为型模式。二、模式角色备忘录模式包括下面角色Originator(原发器)Memento(备忘录)Caretaker(负责人)备忘录模式包括原发器类,备忘录类和负责人类。原发器可以创建一个备忘录,备忘录类存储原发器类的内部状态,根据原发器来决

2021-09-15 22:55:46 77

原创 2021-09-07汇总

设计模式学习单例模式工厂模式建造者模式代理模式桥接模式装饰者模式适配器模式门面模式组合模式JavaWeb项目进度剩余功能点:管理员,MarkDown,私信。以及昨天看了超超学长的前后端分离笔记,不知道为什么展示不出Css样式了,今晚抢救一下,不行的话还有备份。...

2021-09-07 18:28:32 57

原创 Java设计模式——享元模式

模式定义享元模式(Flyweight Pattern)就是通过共享技术实现大量细粒度对象的复用。享元模式是通过细粒度对象的共享,所以也可以说享元模式是一种轻量级模式。按照Gof模式分类,享元模式属于对象结构型模式。模式解释可以共享的内容称为内部状态(Intrinsic State),需要外部环境设置的不能共享的内容称为外部状态(Extrinsic State)。享元模式需要创建一个享元工厂负责维护享元池(Flyweight Pool),享元池用于存储具有相同内部状态的享元对象。享元模式中共享的仅仅是

2021-09-07 18:01:29 115

原创 Java设计模式——组合模式

模式意图介绍模式定义定义之前先介绍一下组合模式的意图。其实就是将对象组合成整体-部分层次的树形结构,客户端调用时,对于调用容器对象或者说组合对象(“树枝”)和单个对象(“树叶”)是一致的。模式定义组合模式(Composite Pattern):组合多个对象形成树形结构来表示“整体-部分”的结构层次。组合模式又称“整体-部分”(Part-Whole)模式,属于对象结构型的设计模式。将对象组合在组件类里,用于描述整体和部分的关系。组合模式对单个对象和组合对象或者说容器对象的使用具有一致性。模式角色组

2021-09-07 17:39:34 130

原创 Java设计模式——门面模式

一、模式定义外观模式:外观模式就是提供一个统一的接口,用来访问子系统的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。,外观模式也称门面模式,是一种对象结构型设计模式。二、模式角色从模式定义可以知道,外观模式应该包含如下角色:Frcade:外观角色SubSystem:子系统角色Client:客户端角色经典例子:public class Facade{ private SubSystemA obj1 = new SubSystemA(); private Sub

2021-09-07 17:21:06 261

原创 Java设计模式——适配器模式

模式定义适配器模式(Adapter Pattern):将一个接口转换成客户希望的接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。模式角色适配器模式包括如下角色Traget(目标抽象类)Adapter(适配器类)Adaptee(适配者类)Client(客户类)模式分析适配器模式将目标类和适配者类解耦,引入一个适配器类来重用适配者类,具体的实现是在适配者类的,通过适配器模式,客户端类就不知道适配

2021-09-07 17:13:08 175

原创 Java设计模式——装饰者模式

核心概念: 动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。重点: 装饰者模式结构重要核心模块:Component(抽象构件)它是具体构件和抽象装饰类的共同父类,声明了在具体构件中实现的业务方法,它的引入可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象,实现客户端的透明操作。ConcreteComponent(具体构件)它是抽象构件类的子类,用于定义具体的构件对象,实现了在抽象构件中声明的方法,装饰器可以给它增加额

2021-09-07 16:57:48 70

原创 Java设计模式——桥接模式

模式定义桥接模式(Bridge Pattern)是将抽象部分和实现部分分离,使它们可以独立地改变,是一种对象结构型模式。模式角色桥接模式包含如下角色:Abstraction(抽象类)RefinedAbstraction(扩充抽象类)Implementor(实现类接口)ConcreteImplementor(具体实现类)模式分析桥接模式关键在于如何将抽象化与实现化解耦,使得两者可以独立改变。抽象化:抽象就是忽略一些信息,将不同的实体当作同样的实体对待。在面向对象中将对象的共同性质抽取出

2021-09-07 16:49:00 83

原创 Java设计模式——代理模式

代理模式定义: 为其他对象提供一种代理以控制对这个对象的访问使用场景: 当无法或者不想直接访问某个对象或访问某个对象存在困难时可以同一个代理对象来简介范根,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。静态代理代理模式的通用模式代码/*** 抽象主题类*/public abstract class Subject { /** * 一个普通的业务方法 */ public abstract visit(); }/** * 实现抽象主题的真实主题类 */pu

2021-09-07 16:42:27 88

原创 Java设计模式——建造者设计模式

一、建造者模式定义 定义: 建造者设计模式是一个构造复杂对象的设计模式,在一个软件系统中,可能会面临创建一个复杂对象的工作,如果使用单一的方法或者单一的对象来创建会比较烦琐,当所创建复杂对象发生改变时,整个系统就可能面临剧烈的变化。这时就需要我们将这个复杂对象的创建过程分解成若干部分,各个子部分用一定的算法构成。但是,子部分可能会经常发生变化,如何能保证整体创建工作的稳定性呢?这就需要建造者模式,建造者模式把复杂对象的创建与表示分离,使得同样的构建过程可以创建不同的表示。二、建造者模式的使用场

2021-09-07 16:18:14 61

原创 2021-09-01学习总结

工厂模式和 DI 容器有何区别实际上,DI 容器底层最基本的设计思路就是基于工厂模式的。DI 容器相当于一个大的工厂类,负责在程序启动的时候,根据配置(要创建哪些类对象,每个类对象的创建需要依赖哪些其他类对象)事先创建好对象。当应用程序需要使用某个类对象的时候,直接从容器中获取即可。正是因为它持有一堆对象,所以这个框架才被称为“容器”。DI 容器,它处理的是更大的对象创建工程。一个工厂类只负责某个类对象或者某一组相关类对象(继承自同一抽象类或者接口的子类)的创建,而 DI 容器负责的是整个应用中所有类对

2021-09-01 23:40:13 65

原创 2021-08-30学习总结

工厂模式当创建逻辑比较复杂,是一个“大工程”的时候,我们就考虑使用工厂模式,封装对象的创建过程,将对象的创建和使用相分离。第一种情况:类似规则配置解析的例子,代码中存在 if-else 分支判断,动态地根据不同的类型创建不同的对象。针对这种情况,我们就考虑使用工厂模式,将这一大坨 if-else创建对象的代码抽离出来,放到工厂类中。还有一种情况,尽管我们不需要根据不同的类型创建不同的对象,但是,单个对象本身的创建过程比较复杂,比如前面提到的要组合其他类对象,做各种初始化操作。在这种情况下,我们也可

2021-08-30 22:59:55 44

原创 2021-08-27学习总结

1. 如何理解单例模式的唯一性?单例类中对象的唯一性的作用范围是“进程唯一”的。“进程唯一”指的是进程内唯一,进程间不唯一;“线程唯一”指的是线程内唯一,线程间可以不唯一。实际上,“进程唯一”就意味着线程内、线程间都唯一,这也是“进程唯一”和“线程唯一”的区别之处。“集群唯一”指的是进程内唯一、进程间也唯一。2. 如何实现线程唯一的单例?我们通过一个 HashMap 来存储对象,其中 key 是线程 ID,value 是对象。这样我们就可以做到,不同的线程对应不同的对象,同一个线程只能对应一个对象。实

2021-08-27 22:51:27 50

原创 2021-08-25学习总结

单例存在哪些问题?大部分情况下,我们在项目中使用单例,都是用它来表示一些全局唯一类,比如配置信息类、连接池类、ID 生成器类。单例模式书写简洁、使用方便,在代码中,我们不需要创建对象,直接通过类似 IdGenerator.getInstance().getId() 这样的方法来调用就可以了。但是,这种使用方法有点类似硬编码(hard code),会带来诸多问题。接下来,我们就具体看看到底有哪些问题。1. 单例对 OOP 特性的支持不友好我们知道,OOP 的四大特性是封装、抽象、继承、多态。单例

2021-08-25 23:15:53 55

原创 2021-08-23学习总结

学习设计模式与范式:创建型中的单例模式1.单例的定义单例设计模式(Singleton Design Pattern)理解起来非常简单。一个类只允许创建一个对象(或者叫实例),那这个类就是一 个单例类 ,这种设计模式就叫作单例设计模式,简称单例模式。2.单例的用处从业务概念上,有些数据在系统中只应该保存一份, 就比较适合设计为单例类。比如,統的配置信息类。除此之外,我们还可以使用单例解决资源访问冲突的问题。3.单例的实现单例有下面几种经典的实现方式。●饿汉式饿汉式的实现方式,在类加载的期间

2021-08-23 21:52:17 84 1

原创 2021-08-30学习总结

这两天也是在一直写JavaWeb项目。感觉有些卡壳,可能明天需要再利用暑期在家的学习时间,看看视频,完善一下知识点,看第一遍的时候确实是有些赶进度的样子了。JSON对象转换JavaScript对象JavaScript对象 ,分内置对象(Number,String,Array,Date,Math),自定义对象JSON就是自定义对象,只不过是以JSON这样的数据组织方式表达出来所以不存在JSON对象与JavaScript对象的转换问题字符串转为JSON对象通过字符串拼接得到一个JSON结构的字符串.

2021-08-20 23:02:24 46

原创 2021-08-18学习总结

2021-08-17主要是在找资料,如何去进行轮播图的实现HTML<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>轮播</title> <link rel="stylesheet" type="text/css" href="css/pic.css"></head><body>

2021-08-18 22:24:43 57

原创 2021-08-16学习总结

2021-08-15上下文切换对非原子操作的影响示例我们都知道,两个线程 Thread0 与 Thread1,对同一个量 count 进行操作;一个让其自增,一个让其自减,次数相等;结果可能为 负数、正数、0(极少)示例代码package com.juc.ppy.synchronize; import lombok.extern.slf4j.Slf4j; @Slf4j(topic = "c.UnsafeCount")public class UnsafeCount { sta

2021-08-16 22:32:54 48

原创 Mysql学习总结第二篇

基础查询语法:select 查询列表 from 表名;查询列表可以是:表中的字段、常量、表达式、函数查询的结果是一个虚拟的表格查询表中的单个字段例:select last_name from employees;查询表中的多个字段例:select last_name,salary from employees;查询表中的所有字段例: select * from 表名;查询常量值例:select 100;/ select ‘john’;查询表达式例:sel

2021-07-18 23:30:42 172

原创 Java学习总结第五篇

一.线程间的通信理解:利用等待(wait)和唤醒(notify)机制,让多个线程之间达到协同合作的目的注意:等待(wait)唤醒(notify) 都必须被锁对象调用等待和唤醒案例(生产者和消费者)共享资源(包子类)生产者线程(包子铺)消费者线程(顾客)‘二.线程池JDK1.5之后就提供了线程池,方便执行线程任务//第一步:获取线程池对象 ExecutorService service=Executors.newFixedThreadPool(2); //包含2个线程的线程池 //第二步

2021-07-18 22:58:08 155 5

原创 项目组第一次测试错题集

单选题now函数用于返回当前日期和时间概念题,SQL的嵌套子查询,可以嵌套n层10 + 40i没有返回类型 j是静态的明明选的A,咋选了B去了。。String表示字符串,他的值为不可更改的常量,在创建字符串后便不能更改。Java语言共有十大特点,分别为:简单性、面向对象、分布性、编译和解释性、稳健性、安全性、可移植性、高性能、多线索性、动态性。1、简单性:Java语言继承了C++语言的优点,去掉了C++中学习起来比较难的多继承、指针等概念,所以Java语言学习起来更简单,使用起来

2021-07-12 09:59:37 72

原创 MySQL学习博客第一篇

RDBMS 术语数据库: 数据库是一些关联表的集合。数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。外键:外键用于关联两个表。复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。索引:使

2021-07-11 15:21:38 245 2

原创 Java学习博客第四篇

一、多线程的实现方式1.实现方式一:1)写一个子线程类,继承Thread类2)复写run方法3)在main方法创建子类对象4)调用start()开启线程启动线程的方法只能是调用start()方法实现,如果是在main()方法中调用线程的run()方法那么只是当作一个普通类调用了一个普通的方法,并不会开启一个新的方法2.Thread类的常用方法:常用的多线程的构造方法Thread(Runnable target)分配新的Thread对象Thread(Runnable target,S

2021-06-20 15:53:18 98

原创 Java学习博客第三篇

一、异常对异常的理解:异常是程序在编译和运行时期的不正常情况,最终导致JVM非正常停止。在Java语言中万物皆对象,Java语言的工程师把常见的异常封装成了对象,方便开发者遇到问题去检查异常出现的原因作出改进。为了方便开发者很快的识别这些异常,把常见的异常都在API文档列举出来了。异常并不是指语法错误,异常可分为运行时出现的异常,和编译期间出现的异常 (这不是语法错误!)。语法错误编译不会通过...

2021-06-20 15:30:05 105

原创 Java学习博客第二篇

接口理解:接口是一套公共的规范标准public:修饰的方法–>该方法可以被跨包访问protected:修饰的方法–>该方法可以被子类访问private:修饰的方法–>该方法只能被其所在类中的其他方法访问接口的定义格式public interface 接口名{ //1.定义抽象方法:默认被public abstract修饰 【可以省略public abstract】 //2.定义默认方法:需要被public和 default(是关键词要写出来和抽象类中的普通方法一样只是通过

2021-06-13 15:44:40 1203 1

原创 Java学习博客第一篇

面向对象:面向对象思想理解:面向对象时基于面向过程的一种编程思想面向过程:关注点在于实现功能的细节,需要亲自一步一步的去完成(自己做 )关注点在于对象身上,对象可以帮助我们去完成具体的功能(让别人帮你做)面向对象举例:喝水:面向过程:自己烧水–>倒在杯子里–>喝水#面向对象:饮水机(对象)面向对象的底层实现还是基于面向过程。面向特点1)更符合日常的生活习惯2)把复杂的问题简单化3)把我们从执行者变为指挥者类与对象类:类是对同一类事物的描述如电脑类、手机类、学生类、老师

2021-06-12 22:32:20 1173 1

原创 2021.05.08

P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles设dp[i][j]表示从(1,1)到(i,j)的最大和所以递推式为dp[i][j]=max(f[i-1][j],f[i-1][j-1])+a[i][j]因为(i,j)这个点只能从(i-1,j)和(i-1,j-1)出发到达有一说一,数组还是得开大,不然会RE。。代码如下#include<iostream>#include<algorithm>#include<cstdio

2021-05-09 00:42:21 69

原创 2021.02.25学习总结

2021.02.25学习总结早上7:00学习打卡早上去了医院检查,所以没有进行学习。下午敲了半天,五题都是样例都没过,于是我决定还是重新再把二叉堆和最短路径再学一遍。晚上敲代码敲代码敲代码,我已经在怀疑我的智商适不适合进实验室了…...

2021-02-25 19:05:41 67

原创 2021.02.24学习总结

2021.02.24学习总结早上7:00学习打卡早上9:00 – 11:30刷vj题组。下午13:00 --14:30测试,后面因为去医院检查了所以没继续敲。晚上18:30 – 22:30背单词,继续刷二叉堆的题。

2021-02-24 22:34:20 51

原创 2021.02.23学习总结

2021.02.24学习总结早上8:00学习打卡最近家里有点事,些许耽搁了学习,这两天甚至敲着敲着太困了睡着了,所以没交学习总结。早上9:00 ——10:00背单词下午16:00——18:00继续学习二叉堆与最短路径。晚上20:00——00:00刷vj题组上的题,但可能是掌握的不是很到位,样例都还没过。...

2021-02-24 10:54:38 54

原创 2021.02.21学习总结

2021.02.21学习总结呜呜呜早上????睡过头,没打卡。早上10:00 – 12:00(2h)在bilibili上看高数视频下午13:00 – 17:00(4h)先在bilibili看关于二叉堆的视频,然后刷题,但是可能是还没掌握清楚,样例都没过。晚上19:00 – 21:00(2h)背单词,刷四级卷。...

2021-02-21 22:25:47 97

空空如也

空空如也

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

TA关注的人

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