- 博客(250)
- 收藏
- 关注
原创 设计模式(二十三)----解释器模式
目录1.Interpreter模式1.1 作用1.2 示例迷你语言1.2.1 迷你语言的命令1.2.2 迷你语言的语法1.2.3迷你语言的语法树1.3 示例程序1.3.1 示例程序类图1.3.2 Node抽象类1.3.3 Node各层具体类1.3.4 Context类1.3.5 ParseWarningException异常类1.3.6 Main类1.4 Interpreter模式中的角色1.5 其他特点1.Interpreter模式1..
2022-05-21 19:20:07
437
1
原创 设计模式(二十二)----命令模式
目录1.Command模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Command接口1.2.3 MacroCommand类1.2.4 DrawCommand类1.2.5 Drawable接口1.2.6 DrawCanvas类1.2.7 Main类1.2.8 示例程序时序图1.3 Command模式中的角色1.4 其他特点1.Command模式1.1 作用 一个类在进行工作时会调用自己或是其他类的方法,虽然调用结果会反..
2022-05-20 17:15:09
337
原创 设计模式(二十一)----代理模式
目录1.Proxy模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Printable接口1.2.3 Printer类1.2.4 PrinterProxy类1.2.5 Main类1.2.6 示例程序时序图1.3 Proxy模式中的角色1.4 其他特点1.Proxy模式1.1 作用 Proxy是代理人的意思,它指的是代替别人进行工作的人。只有当代理人遇到自己无法解决的事情才会去找本人解决问题。1.2 示例程序1.2.1 示例..
2022-05-20 14:13:15
149
原创 设计模式(二十)----享元模式
目录1.Flyweight模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 BigChar类1.2.3 BigCharFactory类1.2.4 BigString类1.2.5 Main类1.3 Flyweight模式中的角色1.4 其他特点1.Flyweight模式1.1 作用 Flyweight模式的作用就是通过尽量共享实例来避免new出实例,尽量公用已经存在的实例,减少内存的消耗。1.2 示例程序 将一些txt文件作...
2022-05-20 10:39:17
129
原创 设计模式(十九)----状态模式
目录1.State模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 State接口1.2.3 具体的状态类1.2.4 Context接口1.2.5 SafeFrame类1.2.6 Main类1.2.7 示例程序时序图1.3 State模式中的角色1.4 其他特点1.State模式1.1 作用 State模式中我们用类来表示状态,以类来表示状态后,我们就能通过切换类来方便地改变对象的状态,从而在不同状态下对同一命令做出不同处理。..
2022-05-19 16:50:35
358
原创 设计模式(十八)----备忘录模式
目录1.Memento模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Memento类1.2.3 Gamer类1.2.4 Main类1.2.5 示例程序时序图1.3 Memento模式中的角色1.4 其他特点1.Memento模式1.1 作用 使用面向对象编程的方式实现撤销功能时,需要事先保存实例的相关状态信息,然后在撤销的时候还需要根据所保存的信息将实例恢复至原来的状态。想要恢复实例,需要一个可以自由访问实例内部结构的权限,但是这..
2022-05-19 14:49:07
944
原创 设计模式(十七)----观察者模式
目录1.Observer模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Observer接口1.2.3 NumberGenarator抽象类1.2.4 RandomNumberGenerator类1.2.5 具体的观察者类1.2.6 Main类1.3 Observer模式中的角色1.4 其他特点1.Observer模式1.1 作用 在观察者模式中,当被观察对象的状态发生变化时,会通知给观察者。适用于根据对象状态进行相应处理的场景..
2022-05-19 11:25:37
179
原创 设计模式(十六)----中介者模式
目录1.Mediator模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Mediator接口1.2.3 Colleague接口1.2.4 Colleague接口的实现类1.2.5 LoginFrame类1.2.6 Main类1.3 Mediator模式中的角色1.4 其他特点1.Mediator模式1.1 作用 当组员众多,交流混乱时,需要一个仲裁者,使整个团队的交流过程变为了组员向仲裁者(中介者)报告,仲裁者向组员下达指标,这..
2022-05-19 10:29:47
157
原创 设计模式(十五)----外观模式
目录1.Facade模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Database类1.2.3 HtmlWriter类1.2.4 PageMaker类1.2.5 Main类1.3 Facade模式中的角色1.4 其他特点1.Facade模式1.1 作用 使用Facade模式可以为互相关联在一起的错综复杂的类整理出高层接口API, 其中的Facade角色可以让系统对外只有一个简单的接口API, 而且Facade角色还会考虑到系统内部..
2022-05-18 16:40:07
192
原创 设计模式(十四)----责任链模式
目录1. Chain of Responsibility模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Trouble类1.2.2 Support抽象类1.2.3 责任链实现类1.2.4 Main类1.3 Chain of Responsibility模式中的角色1.4 其他特点1. Chain of Responsibility模式1.1 作用 针对一个请求(问题), 将多个对象组成一组责任链, 然后按照它们在责任链上的顺序一个一..
2022-05-18 14:57:40
179
原创 设计模式(十三)----访问者模式
目录1.Visitor模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Visitor抽象类1.2.3 Element接口1.2.4 文件及文件夹类1.2.5 ListVisitor类1.2.6 Main类1.2.7 示例程序时序图1.3 Visitor模式中的角色1.4 其他特点1.Visitor模式1.1 作用 该模式是为了将数据结构与处理分离开来, 编写一个表示"访问者"的类来访问数据结构中的元素, 并把对各元素的处理交..
2022-05-18 14:02:05
188
原创 设计模式(十二)----装饰器模式
目录1.Decorator模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Display抽象类1.2.3 StringDisplay类1.2.4 Border抽象类1.2.5 SideBorder类1.2.6 FullBorder类1.2.7 Main类1.3 Decorator模式中的角色1.4 其他特点1.Decorator模式1.1 作用 该模式的作用是可以不断地为对象添加装饰, 即添加功能的设计模式.1.2 示例..
2022-05-18 10:21:18
228
原创 设计模式(十一)----组合模式
目录1.Composite模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Entry抽象类1.2.3 File类1.2.4 Directory类1.2.5 Main类1.3 Composite模式中的角色1.4 其他特点1.Composite模式1.1 作用 在操作系统中, 虽然文件夹与文件是不同类型的对象, 但它们都可以放入到文件夹中, 因此文件和文件夹有时也被系统称为"目录条目". 在目录条目中, 文件夹和文件被当作是同一种对象..
2022-05-17 17:42:42
130
原创 设计模式(十)----策略模式
目录1.Strategy模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Hand类1.2.3 Strategy接口1.2.4 WinningStrategy类1.2.5 ProbStrategy类1.2.6 Player类1.2.7 Main类1.3 Strategy模式中的角色1.4 其他特点1.Strategy模式1.1 作用 该模式可以整体地替换算法的实现部分, 使我们轻松地以不同的算法去解决同一个问题.1.2 示..
2022-05-17 16:18:01
216
原创 设计模式(九)----桥接模式
目录1.Bridge模式1.1 作用1.1.1 类的功能层次结构1.1.2 类的实现层次结构1.2 示例程序1.2.1 示例程序类图1.2.2 Display类1.2.3 CountDisplay类1.2.4 DisplayImpl抽象类1.2.5 StringDisplayImpl类1.2.6 Main类1.3 Bridge模式中的角色1.4 其他特点1.Bridge模式1.1 作用 桥接模式的作用是将类的功能层次结构和类的实现层次结构连..
2022-05-17 14:40:17
168
原创 设计模式(八)----抽象工厂模式
目录1.Abstract Factory模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 文件夹中源文件的结构1.2.3 抽象工厂1.2.4 具体工厂1.2.5 Main类1.3 Abstract Factory模式中的角色1.4 其他特点1.Abstract Factory模式1.1 作用 在抽象工厂模式中, 不仅有抽象工厂, 还有抽象零件和抽象产品, 抽象工厂的作用是将抽象零件组装为抽象产品. 在使用时, 我们并不关心零件的具体实..
2022-05-17 12:06:08
162
原创 设计模式(七)----建造者模式
1.Builder模式1.1 作用 在建造一种具有复杂结构的物体时,很难一气呵成直接完成,此时需要首先建造这个物体的各个部分,即组件,然后分阶段将它们组装起来,Builder模式就是用于组装具有复杂结构的实例。1.2 示例程序 完成一种文档编写的builder。1.2.1 示例程序类图1.2.2 Builder抽象类//定义了必须的各个组件的抽象类public abstract class Builder { public abstract void ma...
2022-05-17 10:00:17
292
原创 设计模式(六)----原型模式
目录1.Prototype模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 Product接口1.2.3 Manager类1.2.4 UnderlinePen类1.2.5 MessageBox类1.2.6 Main类1.3 Prototype模式中的角色1.4 关于clone方法和Cloneable接口1.Prototype模式1.1 作用 有时候需要在“不指定类名的前提下生成实例”,此时就要根据现有的实例来生成新的实例。此时需要..
2022-05-16 17:19:24
176
原创 设计模式(五)----单例模式
目录1.Singleton模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 饿汉模式1.2.3 懒汉模式1.2.3 Main类1.3 Singleton模式中的角色1.4 其他特点1.Singleton模式1.1 作用 当我们想在程序中表示某个东西只会存在一个时,就会有“只能创建一个实例”的需求。确保任何情况下都绝对只有1个实例 在程序上表现出“只存在一个实例” Singleton是指只含有一个元素的集合。1.2 示例程序...
2022-05-16 15:22:04
170
原创 设计模式(四)----工厂方法模式
1.Factory Method模式1.1 作用 该模式就是用Template Method模式来构建生成实例的工厂。父类决定实例的生成方式(模板方法),但并不决定所要生成的具体的类,具体的全部交给子类负责。1.2 示例程序1.2.1 示例程序类图1.2.2 Product类//工厂要生成的实例抽象类public abstract class Product { public abstract void use();}1.2.3 Factory类//工..
2022-05-16 14:49:12
98
原创 设计模式(三)----模板方法模式
目录1.Template Method模式1.1 作用1.2 示例程序1.2.1 示例程序类图1.2.2 AbstractDisplay抽象类1.2.3 CharDisplay类1.2.4 StringDisplay类1.2.5 Main类1.3 Template Method模式中的角色1.4 其他特点1.Template Method模式1.1 作用 改模式是带有模板方法的模式,组成模板的方法被定义在父类中,由于这些方法是抽象方法,所以查看父类的代..
2022-05-16 13:47:12
103
原创 设计模式(二)----适配器模式
1.Adapter模式1.1 作用 在程序世界中,经常会存在现有的程序无法直接使用,需要做适当的变换之后才能使用的情况。这种用于填补“现有的程序”和“所需的程序”之间差异的设计模式就是Adapter模式。 Adapter模式有以下两种:①类适配器模式:使用继承的适配器②对象适配器模式:使用委托的适配器1.2 示例程序1---使用继承的适配器1.2.1 示例程序类图1.2.2 Banner类 作为现在已有的类。//当前已...
2022-05-16 11:20:52
106
原创 设计模式(一)----迭代器模式
目录1.Iterator模式1.1 作用1.2 示例程序1.2.1 示例程序的类图1.2.2 Aggregate接口1.2.3 Iterator接口1.2.4 Book类1.2.5 BookShelf类1.2.6 BookShelfIterator类1.2.7 Main类1.3 Iterator模式中的角色1.4 其他特点1.Iterator模式1.1 作用 Iterator模式用于在数据集合中按照顺序遍历集合。1.2 示例程序 此...
2022-05-16 10:02:55
112
原创 TCP/IP网络编程---Linux系统下的TCP套接字编程
目录第一章 理解网络编程和套接字1.1 网络编程和套接字概要1.2 基于Linux的文件操作1.2.1 底层文件访问和文件描述符1.2.2 打开文件1.2.3 关闭文件1.2.4 将数据写入文件1.2.5 读取文件中的数据第二章 套接字类型与协议设置2.1 套接字协议及其数据传输特性2.1.1 关于协议2.1.2 创建套接字第三章 地址族与数据序列3.1 分配给套接字的IP地址与端口号3.1.1 网络地址3.1.2 用于区分套接字的端口号3
2022-02-21 16:14:15
4327
原创 SpringBoot入门(十二)原理解析
目录第十二章 原理解析12.1 Profile功能12.1.1 application-profile功能12.1.2 @Profile条件装配功能12.1.3 profile分组12.2 外部化配置12.2.1 外部配置源12.2.2 配置文件查找位置12.2.3 配置文件加载顺序12.2.4 关键12.3 自定义starter12.3.1 starter启动原理12.3.2 自定义starter12.4 SpringBoot原理12.4.1 S
2022-02-08 16:29:10
569
1
原创 SpringBoot入门(十一)指标监控
第十一章 指标监控11.1 SpringBootActuator11.1.1 简介 未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。<dependency><groupId>org.springframework.boot</groupId><artifactId&g...
2022-02-07 17:20:50
3894
原创 SpringBoot入门(十)单元测试
目录第十章 单元测试JUnit510.1 JUnit5的变化10.2 JUnit5常用注解10.3 断言assertions10.3.1 简单断言10.3.2 数组断言10.3.3 组合断言10.3.4 异常断言10.3.5 超时断言10.3.6 快速失败10.4 前置条件assumptions10.5 嵌套测试10.6 参数化测试10.7 迁移指南第十章 单元测试JUnit510.1 JUnit5的变化 SpringBoot2.2..
2022-02-07 14:42:47
221
原创 SpringBoot入门(九)数据访问
第八章 数据访问SQL8.1数据源的自动配置-HikariDataSource8.1.1 导入JDBC场景<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency> 导入场景后,发现官方...
2022-02-07 10:18:17
1561
1
原创 SpringBoot入门(八)异常处理/Servlet组件注入/定制化
第七章 Web开发7.9 错误处理7.9.1 默认规则 参考:Web默认情况下,SpringBoot提供一个映射/error,处理所有错误 对于机器客户端,它将生成JSON响应,其中包含错误、HTTP状态和异常消息的详细信息,将这些信息显示在页面上 对于浏览器客户端,响应一个"whitelabel(白页)"错误视图,以HTML格式呈现相同的数据 要进行自定义,可以添加View解析为error 要完全替换默认行为,可以实现ErrorControlle..
2022-02-03 10:55:32
655
原创 力扣题151反转字符串里的单词
给你一个字符串 s ,逐个翻转字符串中的所有 单词 。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。说明:输入字符串 s 可以在前面、后面或者单词间包含多余的空格。翻转后单词间应当仅用一个空格分隔。翻转后的字符串中不应包含额外的空格。示例 1:输入:s = "the sky is blue"输出:"blue is sky the"示例 2:输入:s = " hello w..
2022-01-23 19:45:38
176
原创 SpringBoot入门(七)视图解析/Thymeleaf/拦截器/文件上传
第七章 Web开发7.5 视图解析 SpringBoot默认不支持JSP,需要引入第三方模板引擎技术实现页面渲染。7.5.1 视图解析原理流程7.6 模板引擎-Thymeleaf7.6.1 简介 Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎,类似JSP、Velocity、FreeMaker等,可以完全替代JSP,也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。 Thymeleaf最大的特点是能够直接在...
2022-01-23 16:43:17
1051
原创 SpringBoot入门(六)数据响应与内容协商
第七章 Web开发7.4 数据响应与内容协商7.4.1 响应JSON7.4.1.1jackson.jar+@ResponseBody 项目中引入web的依赖场景,而web的依赖场景中已经引用了josn的依赖场景,不需要我们自己手动引入依赖。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s...
2022-01-20 13:53:27
394
原创 SpringBoot入门(五)请求参数处理(二)
第七章 Web开发7.3 请求参数处理7.3.2 普通参数与基本注解7.3.2.2 Servlet API WebRequest、ServletRequest、MultipartRequest、 HttpSession、javax.servlet.http.PushBuilder、Principal、InputStream、Reader、HttpMethod、Locale、TimeZone、ZoneIdServletRequestMethodArgumentResolver 以上的部..
2022-01-19 16:19:32
1125
原创 SpringBoot入门(四)请求参数处理(一)
第七章 Web开发7.3 请求参数处理7.3.1 请求映射7.3.1.1 Rest使用与原理在一个方法上加注解@RequestMapping,来声明这个方法能处理什么请求,这个声明过程就是请求映射。Rest风格支持:使用Http请求方式的动词来表示对资源的操作 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在:/user(路径都是一样的) GET-获取用户 DELETE-删除用户 ...
2022-01-19 10:59:51
1096
原创 力扣题24两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]1.链表的题目,一般都会自己手动加一个哨兵头节点,这样就不需要对头节点这种特殊情况进行判断,方便很多。然后就是链表中经常使用多指针方法,需要画出关系图,针对每个节点的执向要弄清楚
2022-01-18 20:11:26
213
原创 SpringBoot入门(三)yaml文件和静态资源访问及原理
第六章 配置文件6.1 properties文件 application.properties。用法同以前的properties文件。6.2 yaml6.2.1 简介 YAML 是 "YAML Ain't Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。 非常适合用来做以数据为中心的配置文件 以后推荐使用这种yaml...
2022-01-18 13:47:11
1357
原创 SpringBoot入门(二)自动配置原理
目录第四章 自动配置原理入门4.1 引导加载自动配置类4.1.1 @SpringBootConfiguration4.1.2 @ComponentScan4.1.3 @EnableAutoConfiguration4.1.3.1 @AutoConfigurationPackage4.1.3.2@Import(AutoConfigurationImportSelector.class)4.2 按需开启自动配置项4.3 实例展示4.3.1...
2022-01-17 11:37:29
727
1
原创 SpringBoot入门(一)
目录第一章 Spring与SpringBoot1.1 Spring的功能1.2 SpringBoot概述1.2.1 SpringBoot优点1.2.2 SpringBoot缺点1.3 时代背景1.3.1 微服务1.3.2 分布式1.3.3 云原生1.4 SpringBoot官方文档1.4.1 官方文档架构1.4.2 查看新版本特性第二章 SPringBoot2入门2.1 maven设置2.2 Hello实例2.2.1 创建maven工程,引入依
2022-01-16 17:42:43
277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人