自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一个完整的流程表单流转

一个完整的流程表单审批(起表单-->各环节审批-->回退-->重新审批-->完成),前端由Vue2+js+Element UI升级为Vue3+ts+Element Plus,后端流程框架使用Flowable,项目参考了ruoyi-vue-pro(https://gitee.com/zhijiantianya/ruoyi-vue-pro)项目。本文简单的介绍了一个OA办公系统表单审批的全过程,行文比较粗糙,代码只展示了很少的一部分,如果有兴趣一起研究讨论的,欢迎留言批评指教。

2024-01-11 21:26:20 1116

原创 iconify图标集离线使用方案简介

本文是在项目部署内网时,图标加载不出来的背景下,自己找解决方案的一个总结。由于一般的项目需要使用的图表是很多的,所以,单个引入离线图标(如下图所示)是解决不了实际问题的。最后在Pure Admin项目文档以及作者的视频帮助下,部署了离线方案,然后自己加入Nginx方案代理,实现了自己项目的iconify图标集的离线使用。本文是自己实现方案的一个总结,如有不妥之处,欢迎批评指正。

2023-12-25 11:56:48 1376

原创 el-form与el-upload结合上传带附件的表单数据(前端篇)

其实感觉前端只要有第二节封装组件的代码,代码一看就一目了然,就是在文件下载时候,多花了一点小心思。本篇文章只是简单笼统的介绍了一下前端实现传文件,具体的表单设计其实有很多立方需要讲,后期的话,如果有时间,会录一个实际效果展示视频,敬请期待。如果有不对的地方,还请看到本篇文章的您不吝赐教。

2023-12-19 23:41:38 1487

原创 el-form与el-upload结合上传带附件的表单数据(后端篇)

本文很笼统的介绍了一下在附件与表单数据分开上传时自己遇到的一些问题,以及自己探索的解决方法,中间的描述有一些可能不是很清楚,也还有遗留问题,后续还会慢慢解决。看到这篇文章的你,如果有任何指教,欢迎私信探讨!

2023-12-19 21:19:55 1230

原创 利用Jpom在线构建Spring Boot项目

前面介绍了运用Jpom构建部署Vue项目,最近研究了怎么部署Spring Boot项目,至此,一套简单的前后端项目就搞定了。本篇文章的内容其实十分简单,只简单介绍了Jpom构建Spring Boot项目,基本思想就是获取源码,mvn命令获取jar包,然后启动jar包。后面还有很多的别的类型构建,docker容器,ssh构建,后续实践再交流。

2023-10-24 21:47:36 1174

原创 Vue3+TS+ECharts5实现中国地图数据信息显示

本篇文章简单介绍了ECharts组件的封装,以及地图组件的封装,大概描述了实际项目中遇到的问题以及自己的一些解决办法,行文比较简单概括,所给代码并不能达到文章开始图片效果,对于一些问题可能还不是能很好的理解,欢迎批评指正,一起探讨交流进步。

2023-10-04 12:05:04 1404

原创 大屏自适应容器组件-Vue3+TS

在做数字大屏时,图表能跟着浏览器的尺寸自动变化,本文采用Vue3前端框架,采用TypeScript语言,封装了一个大屏自适应组件,将需要显示的图表放入组件的插槽中,就能实现自适应屏幕大小的效果。

2023-10-03 17:27:07 626

原创 数据库版本管理工具Flyway入门实战

在进行了如上的实验后,相信我们都已经掌握了flyway的初步使用。目前还是在探索阶段,实际开发中还没有使用起来,后续肯定还会遇到很多问题,本博客会依据实际情况,持续不断更新。

2023-07-25 18:05:52 456

原创 BPMN2.0规范简介

流对象包括事件(Events),活动(Activities),网关(Gateways)。Camunda是一个工作流引擎,执行Bpmn2.0标准,因此依赖于基于bpmn的流程图(本质上是一个xml文件),下载地址为,基于 bpmn.io的面向 BPMN DMN和CMMN的集成建模解决方案,camunda-modeler是一款外部流程设计器,同普通安装软件一样安装完后双击.exe程序即可使用,也可以通过IDEA安装外部Tool使用。具体操作可参考这篇博文。这里给一个截图,以及生成的xml文档。

2023-06-30 15:20:33 4512

原创 bpmn-js显示Flowable的BpmnModel转换为xml文档的流程图排他网关丢失中间“X”

第一个想法就是继承类BPMNDIExport,重写方法createBpmnShape,但此方法是静态的,并不能重写,如果完全重写BpmnXMLConverter工作量太大了,放弃。改造xml了?对于convertToXML的结果,进行解析,在相应位置添加上属性isMarkerVisible="true"是不是就可以了。说干就干!!!

2023-04-01 16:18:59 3692 1

原创 利用Jpom在线构建部署Vue项目

Jpom简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件

2022-09-07 11:49:05 1625

原创 设计模式---桥接(Bridge)模式

1 引言生活中,很多东西存在多个维度上的变化,比如汽车,有颜色维度上的变化,车型维度上的变化,品牌维度上的变化,如何设计用最简单的方法来表示汽车的不同维度的变化了?可以用桥接模式。2 定义桥接模式,将抽象与实现分离,使其可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。桥接模式就是把继承关系改变为组合关系。个人理解这个定义比较抽象(反正我第一次看的时候是没有明白的),延续引言中的例子,汽车就是一个高度抽象的产品,颜色与车型就是汽车的一个实现,我们在设

2021-11-01 15:57:15 425

原创 设计模式---单例(Singleton)模式

1 引言为了节约资源以及管理的方便,我们对资源只需拥有一份就可以了。比如,农村生活用水,水源充足前提下,我们只要一口井,这样既方便管理又能节约我们打井时需要的人力物力。对应于设计模式,就是单例模式。2 定义单例模式,指一个类只有一个实例,且该类能自行创建这个实例的一种模式。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的方法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且可以提供一个访问自身实例的方法。3 结构与实现.

2021-10-29 11:59:08 173

原创 设计模式---迭代器(Iterator)模式

1 引言在实际应用中,我们尝尝需要访问一个聚合对象中的全部元素,而不需要关心元素的内部情况。例如,公交车售票员售票,不管上车的是男士女士,老人小孩儿,只要上车就需要买票。这对应与迭代器模式。2 定义迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。3 结构与实现迭代器模式是通过将聚合对象的遍历行为分离出来,抽象成迭代器类来实现的,其目的是在不暴露聚合对象的内部结构的情况下,让外部代码透明地访问聚合的内部数据。迭代器模式主要

2021-10-26 13:50:45 241

原创 设计模式---享元(FlyWeight)模式

1 引言在程序设计中,有时会面临创建大量相同或者相似对象实例的场景,比如围棋的黑白子,教室里的桌椅,

2021-10-25 10:11:07 317

原创 设计模式---组合(Composite)模式

1 引言在编辑Word中,我们经常与遇到有时需要对一个字进行编辑,有时需要对一段文字进行编辑,一个字或者一行字的编辑行为是相同的。抽象出来就是整体部分的关系,对应就是组合设计模式。2 定义组合设计模式,有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点被称为根节点,根节点下面可以包含树

2021-10-21 14:26:51 691

原创 设计模式---备忘录(Memento)模式

1 引言在我们写文档写代码的时候,总想回到以前的某个状态,怎么实现了?按ctrl+z或者command+z实现,助我们恢复到想要的某个状态。在软件设计中,有一种设计模式与之对应---备忘录(Memento)模式。2 定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。3 结构与实现备忘录模式主要包含以下三个角色:1.发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备

2021-10-14 14:16:33 680

原创 设计模式---适配器(Adapter)模式

1 引言在实际生活中,常常发生两个对象不能直接交互需要一个第三方对象做适配的情况,例如,双卡双待的手机,由于两个卡的大小不一样,手机需要一个卡托,从而实现SIM卡的读入。再比如,手机充电器,一个充电器适配三种接口,老安卓充电接口、type-c接口、苹果充电器接口,有这个充电器,三种手机轻松适配进行充电。在软件设计中也会出现此种情况,此时我们可以用适配器模式解决问题。2 定义将一个类的接口转换成客户希望的另外一个接口,使得原本因接口不兼容的两个类能一起工作。3 结构与实现适配器模式主要包.

2021-10-13 11:48:40 234

原创 设计模式---抽象工厂(AbstractFactory)模式

1 名词解释产品等级:指产品的类型一样,品牌不一样。例如空调是一种产品类型,美的空调与格力空调是不同的品牌。产品族:同一个品牌的不同产品。例如美的的空调,电饭锅,热水器属于同一产品族。这里引用一个图片来具体说明这两个名词解释。(来自引用2)2 定义是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品.

2021-10-12 15:33:42 216

原创 工作总结---找出重复字符分组,并给每组的字符添加在本组的序号

1 引言最近一个需求,个人理解可以梳理成一个算法题。原需求的是从数据库中查找某个流程办结的台账,依据办结日期升序排列。根据办结日期的不同,依据规则生成对应的编号。比如,数据库一共30条数据,2021年5月13日10条数据,2021年6月18日10条数据,2021年9月7日10条数据,2021年5月13日10条数据依据时分秒的先后顺序编号为2021-0513-1到2021-0513-10,2021年6月18日10条数据依据时分秒的先后顺序编号为2021-0618-1到2021-0618-10,202.

2021-10-12 14:06:50 211

原创 设计模式---建造者(Builder)模式

1 定义官方定义:把复杂对象构建与其表示分离,使得同样的构建过程可以创建不同的表示。个人理解,在创建一个对象的时,需要很多的步骤,而这些步骤基本是保持不变的,例如,画人物,躯干,四肢,头,头上的七窍,人的基本组成是固定不变的,我们把步骤抽象出来成一个建造者接口或抽象类,要生成这个对象,交给建造者去建造,建造者造好,直接获取表示出来。2 结构与实现建造者模式结构图如下:建造者模式由产品,抽象建造者、具体建造者、指挥者4 个要素构成。指挥者有时也可以不要,后面代码中6.2节有讲解。建

2021-09-26 15:55:41 185

原创 设计模式---外观(Facade)模式

1 定义外观模式,又叫做门面模式,是指在与一个复杂的子系统进行交互时,为子系统提供一个高层的接口,转而和高层的接口进行交互,以符合迪米特法则(Law of Demeter,LoD)。在软件设计中,当一个系统功能越来越强,代码越来越多,复杂度也越来越高,如果直接与系统交互,那么子系统发生改变,交互代码也要随着改变,这违背的开闭原则(Open Closed Principle,OCP)。此时,我们需要为子系统提供一个高层的接口,降低耦合度。2 结构与一般实现外观模式结构如下图所示,主要包含如下角

2021-09-24 14:47:12 331

原创 设计模式---模板方法(Template Method)模式

1 定义模板方法模式,在父类中定义一个算法的框架,其中的具体的步骤可以延迟到子类中实现,使得子类在不改变算法框架基础上可以重新定义算法的某些特定步骤。2 结构图主要角色解释如下抽象类/抽象模板(Abstract Class)抽象模板类,负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。这些方法的定义如下。① 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。② 基本方法:是整个算法中的一个步骤,包含以下几种类型。抽象方法:在抽象类中声明,由具体子类

2021-09-23 11:59:33 193

原创 设计模式---原型(Prototype)模式

1 定义原型模式是使用一个类实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。2 类图抽象原型类(Prototype):它是声明克隆方法的接口,是所有具体原型类的公共父类,它可以是接口,抽象类甚至是一个具体的实现类。具体原型类(ConcretePrototype):它实现了抽象原型类中声明的克隆方法,在克隆方法中返回一个自己的克隆对象。客户类(Client):在客户类中,使用.

2021-09-22 15:36:16 420

原创 设计模式---工厂方法(Factory Method)模式

1 定义工厂方法模式,定义一个用户创建对象的接口,让继承接口的子类决定实例化某个类。工厂方法使一个类的实例化延迟到其子类。2 工厂方法模式 VS 简单工厂模式首先放一个我写的简单工厂模式的链接。简单工厂模式中工厂类包含了必要的逻辑,工厂类依据逻辑判断从而产生不同的类实例。但要加一个类实例的创建,我们需要修改简单工厂类的代码,增加逻辑判断,相当于我们开放了功能的扩展,又开放了代码的修改,违背的开闭原则。工厂方法模式把逻辑判断转移到客户端中,在客户端中选择不同的工厂得到实例化对象。我们需要添加一

2021-09-10 11:44:13 391

原创 设计模式---代理(Proxy)模式

1 定义代理模式,为想要访问的对象创建一个代理,使访问原对象变为访问代理对象。代理模式可以提供非常好的访问控制。生活中最多的代理模式例子就是中介。2 代理模式结构与实现代理模式通用类图如下所示:Subject 抽象主题角色:可以是抽象类,也可以是接口。抽象主题是一个普通的业务类型,无特殊要求。 RealSubject 具体主题角色:也叫做被委托角色或被代理角色,是业务逻辑的具体执行者。 Proxy 代理主题角色:也叫做委托类或代理类。它负责对真实角色的应用,把所有抽象主题.

2021-09-09 14:09:19 618

原创 设计模式---装饰器(Decorator)模式

1 定义装饰器(Decorator)模式,也称为包装(Wrapper)模式,是继承关系的一种替代方案。指在不改变对象结构的情况下,动态的给对象添加一些功能。2 优缺点2.1 优点装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用 通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果 装饰器模式完全遵守开闭原则2.2 缺点装饰器模式会增加许多子类,过度使用会增加程序得复杂性。3 装饰器模式的结构与实现装饰器模式的类图如下所示:

2021-09-07 17:02:23 1488 2

原创 设计模式---策略(Strategy)模式

1 定义策略模式(Strategy Pattern),就是把一组具有相同目的实现方式不一样的算法集中起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。2 优点1.多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如 if...else 语句、switch...case 语句。2.策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的.

2021-09-03 14:04:11 203

原创 设计模式---简单工厂(Simple Factory)模式

1 引言在工作中有没有遇到这种情况,需要根据某个条件的不同实例化不同的类,被实例化的类基本功能相同,都继承自同一父类。这种情况,就是典型的简单工厂模式应用之处。简单工厂模式,创建一个工厂,通过工厂来创建其他对象的实例。被创建的实例通常都有相同的父类。2 业务举例这里举一个我在实际工作当中遇到的例子。业务需求是审核公司线上商城每一笔订单的用户评论和商户评论(对用户评论的一个回复),因为两种评论的模型有一些属性的不同,用户评论对应一个实体(UserComment)一张数据表(user_comment

2021-09-01 22:58:18 182

原创 设计模式---观察者模式(Observer)和委托事件模型(DEM)

1 引言观察者模式,又名发布订阅模式,是一个一对多的关系,当被观察者发生某种变化,对应其观察者做出相应的改变。比如说,某学校研究生实验室有2个学生,2个学生某个上午在实验室,A在玩游戏,B在看电影,但是害怕老板进屋把他们逮个正着,怎么办?这2个学生和楼下安保处的门卫关系都特别好,他们就和门卫说了,如果看到他们老板进楼,就赶紧通知他们一声,他们好转换进入学习模式。在这个例子中,门卫就是被观察者(可不是老板啊),也就是事件的发布者,2个学生就是观察者,只要在门卫那里登了记,门卫一群发消息,就能收到通知,做出

2021-08-31 17:36:10 491

原创 Spring Boot项目集成PowerMock写单元测试

引用1.Java单元测试技巧之PowerMock集成依赖<dependencyManagement> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>${powermock.version}<

2021-08-18 16:33:43 1354

原创 Spring cloud oauth2搭建OAuth2.0授权服务

我理解的OAuth2.0首先这是一种授权协议,个人理解这个协议最大的好处是可以使用第三方client进行登录,比如我们在登录csdn博客的时候,可以不必使用用户名密码,直接微信或者qq扫码登录即可。相比与普通的用户名密码登录授权,OAuth2.0多了一个client的概念,client即是你开发的网站,比如要接入微信的登录,你需要在微信网站应用开发创建审核相应的材料,然后获取APPId,次APPID即是client id,通过此client id,即可以使用微信的授权服务,获取token,进行网站的访问

2021-08-10 17:43:48 1078

原创 User must be authenticated with Spring Security before authorization can be completed

问题描述利用Spring cloud oauth2实现Oauth 2权限控制时,调用/oauth/authorize获取授权码,抛出了User must be authenticated with Spring Security before authorization can be completed异常?请求接口:控制台异常信息为:接口部分源码为:@RequestMapping(value = "/oauth/authorize") public ModelAndV...

2021-08-10 11:59:33 8240 7

原创 Spring Security + JWT实现权限管理

本博客主要使用Spring Security + JWT实现权限管理,利用JWT生成token,返回给登录接口,在访问其他接口时,采用Beare Token的方式携带登录时获取的token进行验证。登录与验证的流程如下。 登录流程 ...

2021-07-29 17:58:50 1903

原创 Apache http转https

公司企业网站买了证书后想要把原来的http服务转为https的服务,并实现http到https的自动跳转。1.准备ssl证书从公司购买证书后,会得到三个文件,分别是server.crt 文件,server.key文件,cfca.crt文件,其中cfca.crt文件是自己复制证书编码生成的文件。我们公司购买的是中国金融认证中心的SSL证书。证书准备完毕后,复制三个文件至Apache容器所在的文件配置目录,可以自己新建一个文件夹保存,我放在conf目录下新建的ssl_crt文件夹中,后面配置会用到文

2021-07-22 15:34:56 867

原创 OAuth2.0一些概念与定义

1.OAuth2.0是什么?OAuth2.0是一种授权协议,保证第三方只有在获得授权之后,才可以进一步访问授权者的数据,也可以说OAuth2.0是一种安全协议。OAuth2.0的核心就是颁发访问令牌,然后使用访问令牌。2.四种许可类型1. 授权码许可类型(Authorization Code),2.隐式许可类型(Imolicit),3.客户端凭据许可(Client Credentials),4.资源拥有者凭据许可(Resource Owner Password Credentials)。资源拥有

2021-07-20 16:58:11 524

原创 RBAC基于角色的权限访问控制介绍

RBAC(Role-Based Access Control)基于角色的权限访问控制是权限访问系统中业界公认的标准,与传统的权限分配方式(用户直接与权限绑定)相比,RBAC增强了扩展性,提高了效率,尤其在用户量多的场景。有了角色以后,我们只需为角色定制相应的权限,将相同权限的用户指定为同一个角色即可。RBAC需要对系统的所有资源进行权限控制,系统资源可以简单总结为静态资源(页面,数据列)和动态资源(数据),也分别称为对象资源和数据资源。RBAC就是对系统的所有资源进行权限控制。相关概念用户用

2021-07-05 16:17:09 752

原创 Mac利用VirtualBox安装虚拟机网络设置桥接模式不能上网问题记录

Mac笔记本电脑利用VirtualBox安装了一个Ubuntu20.04虚拟机,默认网络为网络地址转换(NAT)。NAT模式是最简单的实现虚拟机上网的方式,你可以这样理解:Vhost访问网络的所有数据都是由主机提供的,vhost并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Vhost的存在。虚拟机与主机关系:只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。虚拟机与网络中其他主机的关系:只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能

2021-06-23 14:15:59 2143 1

原创 Spring Boot 配置两个Rabbit Mq

1.背景一个spring boot项目配置一个rabbit mq很常见,如何配置两个以及两个以上的mq?本篇文章将结合代码说明如何配置两个rabbit mq(talk is cheap, show me the code)。2.项目结构<groupId>cn.honorzhang</groupId><artifactId>my-springboot-rabbitmq</artifactId><version>1.0.0</.

2021-04-13 23:08:05 1640 3

原创 cx_oracle插入大批量数据如何实现主键自增

背景一直用Java技术栈,最近公司有项目用到了python的技术栈,在公司前人探索的基础上,用了cx_oracle作为持久层的工具,遇到了一个具体的问题是需要insert大约5万条数据到oracle数据库问题描述oracle数据库是没有主键自增的,在插入数据时,如何实现主键的自动生成以及插入速度的提升是需要实际解决的问题解决方案先上代码,这里省略了关于cx_oracle知识,如需了解请点击本链接。# -*- coding:utf-8 -*-# @Time: 3/12/2021 3

2021-03-21 21:34:35 925

空空如也

空空如也

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

TA关注的人

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