- 博客(26)
- 收藏
- 关注
原创 如何创建自定义maven archetype?
一般在创建web项目时都会使用maven的archetype模板,但是往往不尽如人意,创建出来的项目结构并不符合我们的要求* 如:webapp总有一些乱七八糟的东西,springboot initalizr的版本一直更新* 这里可以定义自己的archetype......
2022-06-24 22:32:20
2873
原创 设计模式之适配器模式
如果你希望使用一个接口,来访问一个非该接口的实现类,也就是不兼容的类,可以使用适配器模式适配器模式是结构型模式,可以使用不兼容的对象相互合作 ,即,将一个接口转换成另一个接口usb接口usb实例(比如:U盘)sd卡接口(记不记得,读卡器上面有个SD卡的接口)sd卡实例适配器(读卡器)实现的应该是USB,因为要插入电脑的USB接口。继承sd卡实例,身上插的是实际sd卡依照合成复用原则,依赖 > 继承,所以使用依赖注入的方式调用readData方法想要接收
2022-06-13 21:01:54
102
原创 设计模式之建造者模式
设计模式之建造者模式概括如果有一个要创建一个复杂的对象,可以使用建造者模式(生成器),创建一个专门生成特定一个对象的类,把要生成的对象中每个属性的创建抽离出来创建指挥者类,用来控制生成属性的步骤顺序创建者模式注重对象复杂的生成【过程】结构抽象生成器:定义属性的步骤(方法)具体生成器:提供不同最终产品的构造过程,提供返回最终产品的方法指挥者:调用生成器的步骤,构造最终产品使用场景当你创建的对象过于复杂,并且过程只有一些较小的不同优缺点优点开闭依赖倒转单一职责可以把
2022-06-12 22:15:04
84
原创 设计模式之观察者模式
设计模式之观察者模式1. 概括观察者模式是一种发布订阅机制,当发布者自身状态改变后后,会通知一个或多个订阅者2. 结构抽象订阅者:订阅者的抽象,至少定义一个update方法,用于接收通知具体抽象者:实现接口并重写方法发布者:定义一个用于存储订阅者的成员属性、几个用于添加或删除订阅者的方法,无论发生了什么样的事件,发布者都要通知订阅者,(调用订阅者的方法)3. 使用场景当对象的状态的改变需要影响其它的对象时当一方对象需要观察其它的对象时4. 实现商店用例:当商店添加物品后,通
2022-05-24 21:59:11
79
原创 设计模式之模板方法模式
设计模式之模板方法模式文章目录设计模式之模板方法模式1. 概括2. 结构3. 使用场景4. 优缺点5. 实现6. 在JDK中的应用1. 概括如果有多个类中有着大致相同的算法,只是有算法中有着细微的不同,那么可以使用模板方法模式模式方法模式在父类中定义了一系列的算法框架,允许子类在不修改结构的情况下,重写算法的特定步骤模板方法建议把一系列算法,抽取成一个个的步骤,步骤即为方法,这些方法如果是每个子类共有步骤,可以是具体方法;步骤细节不同之处,声明成抽象方法,让每个子类单独去实现 (不包括模板方法)
2022-05-23 20:29:04
214
原创 设计模式之单例模式
设计模式之单例模式文章目录设计模式之单例模式1. 概括2. 结构3. 实现3.1 饿汉式3.2 懒汉式3.2.1 注意3.2.2 问题解决4. 单例破坏4.1 序列化4.2 反射4.3 绝杀,无解1. 概括如果你希望一个类从始至终,都只能创建一个全局对象,那么应该使用单例模式2. 结构写一个类,提供一个获取自己实例的方法私有化构造方法3. 实现单例模式有饿汉式和懒汉式两种3.1 饿汉式是指在类加载时就去创建单例对象java有两种方式,成员变量声明式、静态代码块式成员变量声明式
2022-05-23 18:03:40
330
原创 设计模式之代理模式
设计模式之代理模式文章目录设计模式之代理模式1. 概括2. 结构3. 使用场景4. 静态代理5. 动态代理5.1 JDK动态代理5.2 CGLib动态代理5.3 动态代理工厂通用抽取1. 概括在编写代码的过程中,经常要对原有的代码进行修改,【增强】但是如果直接修改源代码,长此以往代码应付变得,冗余、复杂、庞大使用代理模式可以在不修改原有代码的基础上,并对原有代码的增强,并且增加了代码的隔离性在调用时调用代理类的方法,由代理方法调用最终对象方法,在调用之前和之后,并且可以进行一定的增强2. 结构
2022-05-22 22:02:33
171
原创 设计模式之策略模式
设计模式之策略模式文章目录设计模式之策略模式1. 概括2. 结构3. 使用场景4. 优缺点5. 实现6. 回调函数1. 概括如果定义了一系列的单独的算法,可以把每个算法封装起来,到一个类,或者方法函数,使每个算法之间可以相互替换在实际的编写中,经常使用这种模式只是自己没有意识到,比如java中的lambda表达式,js 回调函数等回调函数或lambda中内容就是我们自己独立的算法2. 结构抽象策略:策略的通用接口,声明了一个实现具体算法的方法具体策略:实现策略接口,重写其中的方法,实现各种
2022-05-22 21:04:19
222
原创 设计模式之责任链模式
设计模式之责任链模式概括有时会遇到这样的情况,一个请求有多个请求处理者,每个请求处理者的权限不同,我们要用请求到每个处理者挨个请求,这样就造成的代码之间的巨大耦合度可以把每个请求处理者,以链式的方式串接起来,我们只需要请求第一个处理者,第一个处理者处理不了,由当前处理者把请求转到下一个处理者,直到请求处理完成这样我们不需要关注请求处理的具体过程,也大大减小了客户端与多个处理器之间的耦合度这就是责任链模式,也叫职责链模式结构客户:创建处理器链,并向链头发起请求抽象处理器:处理器的父接口或抽
2022-05-20 23:09:46
146
原创 设计模式之工厂模式
设计模式之工厂模式1. 工厂方法在父类中提供一个创建对象的方法,允许子类决定实例化的类型工厂方法模式的角色抽象产品:具体产品:抽象工厂:声明创建产品的抽象方法,方法的返回类型必须是产品的抽象、接口,方法的返回值由具体工厂来实现具体工厂:抽象工厂的实现类,返回不同的具体产品1.1 源码探究之IteratorJDK集合的Iterator迭代器就用工厂方法模式Collection对应的是抽象工厂ArrayList对应具体工厂Iterator是抽象产品ArrayList的
2022-05-20 21:55:54
110
原创 软件开发设计的七大原则
软件设计的七大原则开闭原则对扩展开放,对修改关闭提供抽象接口或抽象类,由实现接口、方法来达到扩展的目地里氏变换原则在继承时,只重写抽象方法,不覆盖方法即,子类可以扩展父类功能,但不应改变原有功能依赖倒转原则依赖时,依赖和被依赖者都应抽象细节依赖于抽象单一职责原则一个类应该只有单一职责的功能接口隔离原则接口中的方法定义应当具体,不可过于冗余、庞大尽量不要让方法强制被实现迪米特原则只与“朋友交流”,不与“陌生人沟通”,不与自己相关联的的对象不应直接访问,(间
2022-05-17 22:47:49
131
原创 使用AOP打印日志信息
使用AOP打印日志信息文章目录使用AOP打印日志信息0、说明日志格式1、创建注解2、获取当前的request对象3、创建切面4、配置切入点5、增强编写6、切面完整代码0、说明打印日志记录接口的调用信息,便于后期排查日志记录可能有多个接口对原有的方法增强,可以使用AOP功能实现日志格式=======Start=======URL : http://localhost:7777/article/articleListBusinessName : 无HTTP Me
2022-05-05 20:30:25
802
原创 文件上传到七牛云OSS
七牛云OSS使用方法文章目录七牛云OSS使用方法准备工作上传文件查看示例获取密钥编写代码七牛云OSS有10G的免费流量,但是默认的域名只通用一个月这里是Java的演示准备工作进入七牛官网,实名认证后存储空间 --> 新建存储空间新建空间,起个名字区域尽量选择近一点的访问控制一定要选择公开,这里的访问控制只是读取,不是改动点击文件管理进入文件列表会提供一个默认的域名(只能用一个月)上传文件官方文档:https://developer.qiniu.com/kodo
2022-05-04 20:38:09
1165
1
原创 如何用Spring Security自定义验证码?
如何用SpringSecurity自定义验证码?导入依赖这里使用Google的验证码因为Google官方的maven坐标导入不了,使用的是镜像<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version></dependency>设置图片
2022-04-29 20:38:30
818
原创 前后端分离,简单JWT登录实现
JWT登录文章目录JWT登录JWT登录流程1. 用户认证处理2. 前端登录3. 前端请求处理4. 后端请求处理5. 前端页面跳转处理6. 退出登录7. 本文关联代码7.1 前端7.2 后端JWT登录流程前端vue+axios+router后端springboot+mybatisplus1. 用户认证处理@Service@Transactionalpublic class AdminServiceImpl implements AdminService { @Autowired
2022-04-27 17:11:32
843
原创 axios的封装
Vue中axios的封装request.js请求封装、import axios from 'axios'import {getToken} from '@/utils'const http = axios.create({ baseURL: 'http://localhost:8080', // timeout: 4000})// 配置请求拦截器http.interceptors.request.use( config => { con
2022-04-26 15:13:55
1323
原创 SpringBoot搭建多模块工程踩坑
SpringBoot搭建多模块工程踩坑所有模块的包名最好相同在controller层的主类上的@SpringBootApplication加上scanBasePackages属性所以说包名最好相同@SpringBootApplication(scanBasePackages = "org.example")public class BootControllerApplication { public static void main(String[] args) {
2022-04-20 22:23:27
596
原创 JavaWeb之如何把请求数据转成实体类
JavaWeb之如何把请求数据转成实体类自己写个工具类加入下面两个静态方法自定一个注解类DateTimeFormatting调用方式User user = util.ObjectFromMap(req.getParameterMap(), User.class)暂时支持8种基本数据类型对应包装类、BigDecimal、java.util.Date,可应对大多情况,如有需求,可以自己添加暂不支持数组public static <T> T ObjectFromMap(Map<S
2022-04-08 21:23:15
856
原创 半小时速通【页面数据分页】
前端页面数据分页文章目录前端页面数据分页导言后端整体思路一、建立page分页对象(bean层)二、DAO层三、service层四、web层前端(JSP+JSTL)首页、上一页、下一页、末页页码跳转页码条的显示1、如果总页码数 <= 分页条长度2、如果总页码数 > 分页条长度2.1、如果当前页<=前几页分页条中间数2.2、如果当前页 >= 最后几页中间数2.3、其它情况整体代码导言在写图书管理的时候遇到了要分页的情况,一开始以为只是前端把每页的对象条数和当前页码发给后端,然后后端
2022-02-07 14:42:57
1389
原创 翻译出来给我听什么是【跨域】
前端跨域文章目录前端跨域跨域是什么为什么要跨域解决方法JSONPJQueryajaxgetJsonCORS同源策略跨域是什么浏览器为了安全,做了一个同源限制同源:协议、主机名、端口相同当不满足下列任一要求时就会发生跨域协议不同域名不同端口不同这里说的是 XMLHttpRequest 下的 AJAX 请求.对于 <img> , <script>, <link> 等标签,就不存在跨域请求.(除非后台做了防盗链,比如QQ空间的图片。。。。)
2022-02-07 14:39:10
555
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人