自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

八一菜刀的专栏

See https://gitee.com/xiaoym

  • 博客(92)
  • 收藏
  • 关注

原创 正则表达式?就是这么简单

正则表达式?就是这么简单本文不介绍正则表达式的含义,各个字符的意思等等(表达式太多了,记不住,我想这也是大部分人用正则头疼的地方),只针对作者所理解的正则套路进行分享如果你按照这篇套路来用正则表达式,在80%的情况下,你都能写出来正则获取你要的结果!!!基本概念我们在先用这个套路去写之前,你首先得弄明白一些基本概念,磨刀不误砍柴工捕获组捕获组简单的来说就是你想通过正则表达式获取得到...

2019-11-20 22:00:51 609 1

原创 knife4j 集成Spring Cloud Gateway

更多关于knife4j的详细介绍请参考[官方文档](https://doc.xiaominfo.com/本篇博客主要讲解通过knife4j项目如何集成Spring Cloud Gateway网关,通过网关聚合所有的Swagger微服务文档源码地址请参考:knife4j-spring-cloud-gateway整体项目结构如下:|-knife4j-spring-cloud-gateway...

2019-08-30 11:02:51 10900 9

原创 基于Spring Cloud Zuul整合swagger-bootstrap-ui

基于Spring Cloud Zuul方式在基于nginx配置的环节,其实我们已经可以利用nginx的配置,帮助我们聚合文档服务了,而通过代码的方式该如何实现?在Spring Cloud微服务架构中,各个子服务都是分散的,每个服务集成了Swagger文档,但是接口对接时需要单独分别访问,很麻烦,效率低下,而Zuul可以帮助我们解决此难题,将多个微服务的Swagger接口聚合到一个文档中,这样...

2019-05-04 14:25:31 1772 1

原创 在Spring Boot中使用swagger-bootstrap-ui

更多swagger-bootstrap-ui的详情可关注官方文档,点击前往swagger-bootstrap-ui是基于swagger接口api实现的一套UI,因swagger原生ui是上下结构的,在浏览接口时不是很清晰,所以,swagger-bootstrap-ui是基于左右菜单风格的方式,适用与我们在开发后台系统左右结构这种风格类似,方便与接口浏览GitHub:https://gi...

2018-01-31 13:23:19 24107 3

原创 Spring Security框架中踢人下线技术探索

1.背景在某次项目的开发中,使用到了Spring Security权限框架进行后端权限开发的权限校验,底层集成Spring Session组件,非常方便的集成Redis进行分布式Session的会话集群部署。系统正式上线后,各个部署节点能够非常方便的进行集群部署,用户的Session会话信息全部保存在Redis中间件库中,开发者不用关心具体的实现,Spring Session组件已经全部集成好了。但是在系统的用户管理模块中,提供了对系统用户账号的删除功能以及禁用功能,针对这两个功能,需求方给出的具体要求

2021-04-20 21:12:58 1680 3

原创 Spring Boot框架中使用Jackson的处理总结

1.前言通常我们在使用Spring Boot框架时,如果没有特别指定接口的序列化类型,则会使用Spring Boot框架默认集成的Jackson框架进行处理,通过Jackson框架将服务端响应的数据序列化成JSON格式的数据。本文主要针对在Spring Boot框架中使用Jackson进行处理的经验进行总结,同时也结合在实际开发场景中碰到的问题以及解决方案进行陈述。本文涉及到的源码地址:https://gitee.com/dt_research_institute/code-in-actionPS

2021-03-26 10:50:42 2750

原创 Spring Boot框架中针对数据文件模板的下载总结

1.前言在我们的日常开发中,经常会碰到注入导入Excel数据到系统中的需求,而在导入Excel数据时,一般的业务系统都会提供数据的Excel模板,只有提交的Excel数据满足业务系统要求的模板时,数据才能够正常的导入系统中。因此针对这种需求,一般我们会在系统中提供一个Excel模板的下载按钮,业务人员在使用时,可以先下载Excel模板,然后按照模板中的格式将数据填充,即可导入成功。本文主要总结目前在开发这类需求时碰到的问题。2.解决方案从需求上来看,目前有大致三种解决方案,针对数据文件的模板下载,分别

2021-03-03 14:31:36 773 1

原创 基于Servlet体系的HTTP请求代理转发Spring Boot组件

背景概述两个项目组原本都是各自负责两个产品线(产品A、产品B),由于公司业务的发展,目前需要将两个产品合并成一个大产品(功能整合,部分做取舍,最终产出产品C),前后端代码必然也需要整合,包括两个产品线的用户体系等。并且给出的时间节点很紧张。目前两个产品线的区别点:产品A前端模块载体是微信小程序,没有H5、APP等需求,因此所采用的技术栈是原生写法,没有用到技术框架服务端技术架构是单体架构,Spring Boot框架,管理后台框架采用的是Apache Shiro前后端接口调用采用的是服务端tok

2021-02-03 14:58:20 412

原创 Knife4jAggregationDesktop 独立渲染 OpenAPI 规范文档-v1.0版本发布

Knife4jAggregationDesktop是一款基于聚合组件Knife4jAggregation特性的独立部署的聚合OpenAPI文档软件,脱离Spring、Spring Boot技术架构体系,开发者下载后独立部署启动。主要功能作用:独立部署(依赖Java JDK8环境) 专注聚合OpenAPI文档,在线预览和调试均可,拥有Knife4j的全部特性 继承Knife4jAggregation的全部特性,支持Disk、Cloud、Eureka、Nacos四种模式的OpenAPI文档聚合显示

2020-12-28 10:28:08 569

原创 Spring Boot自定义starter必知必会条件

前言在目前的Spring Boot框架中,不管是Spring Boot官方还是非官方,都提供了非常多的starter系列组件,助力开发者在企业应用中的开发,提升研发人员的工作效率,Spring Boot框架提出的约定大于配置的规则,确实帮助开发者简化了以前Spring MVC时代的很多繁杂的配置。让开发者用起来也是非常爽的。尽管Spring Boot或者一些开源组件已经帮助我们提供了非常多的starter组件,在满足日常的开发中,已经完全没有问题了。但有时候因为需求的可变性,导致企业架构也会随着调整,那

2020-12-10 13:21:11 2003

原创 有意思的两段java代码

首先,创建一个实体类Order对象,代码如下:public class Order{ private String orderNo; private String name; public Order(){ setOrderNo("order:"+ UUID.randomUUID().toString()); setName("name:"+UUID.randomUUID().toString());

2020-12-06 17:38:14 1023 1

原创 Knife4j轻松聚合云端OpenAPI文档

Cloud(云端)模式和Disk模式大同小异,主要的区别是获取OpenAPI规范的方式换成了基于HTTP接口而已完整代码请参考knife4j-aggregation-cloud-demo本次Cloud聚合以Knife4j目前部署的线上demo为例,本地聚合在线的OpenAPI,并且可以本地调试,Knife4jAggregation组件会自动帮助我们转发任意取目前Knife4j的线上demo两个OpenAPI规范接口地址:http://knife4j.xiaominfo.com/v2/api-

2020-11-26 12:38:06 1040 1

原创 使用Knife4j聚合组件聚合本地OpenAPI文档

基于Disk模式聚合是最简单的,开发者只需要在Spring Boot的项目中存在OpenAPI规范的JSON文件即可进行聚合完整代码请参考knife4j-aggregation-disk-demo主要步骤如下:1、创建Spring Boot项目,引入Knife4jAggregation的依赖包,完整pom文件如下:点击查看完整代码2、配置yml配置文件,如下:server: port: 19081knife4j: enableAggregation: true dis

2020-11-26 12:36:16 2578

原创 基于Knife4j的Docker镜像快速聚合OpenAPI

在前面的实战文章中,更多的是面向Java开发者,通过Spring Boot框架,快速聚合OpenAPI文档。那么其他语言能否也能这么方便的使用Knife4j呢?答案是肯定的,Knife4j为了让其他语言非常方便的使用Knife4j来渲染聚合OpenAPI文档,在DockerHub中推送了Knife4j的镜像,镜像地址:https://hub.docker.com/repository/docker/xiaoymin/knife4j如果你的本机或者服务器安装了Docker,那么利用Knife4

2020-11-25 20:31:12 831

原创 Knife4j 2.0.8发布,史诗级微服务聚合文档中间件诞生

Knife4j前身是swagger-bootstrap-ui,是一个为Swagger接口文档赋能的工具文档:https://xiaoym.gitee.io/knife4j/(opens new window)效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html(opens new window)效果(2.X版):http://knife4j.xiaominfo.com/doc.html(opens new window)Gitee

2020-11-25 10:01:50 3235 4

原创 Knife4j 2.0.7 发布,细节优化

Knife4j前身是swagger-bootstrap-ui,是一个为Swagger接口文档赋能的工具文档:https://doc.xiaominfo.com效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html效果(2.X版):http://knife4j.xiaominfo.com/doc.htmlGitee:https://gitee.com/xiaoym/knife4jGitHub:https://github.com/

2020-11-02 13:15:34 1768 2

原创 Knife4j 2.0.6 发布,支持 OpenAPI3 及 Auth2 认证

Knife4j前身是swagger-bootstrap-ui,是一个为Swagger接口文档赋能的工具关键词:OpenAPI3、Auth2.0、AfterScript、Springfox3.0、增强改善文档:https://doc.xiaominfo.com效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html效果(2.X版):http://knife4j.xiaominfo.com/doc.htmlGitee:https://

2020-10-26 16:34:16 5833 1

原创 Spring Boot框架中如何优雅的注入实体Bean

在Spring Boot框架中,注入实体Bean是几乎每一个Java程序员都能遇到的事情,因为Spring Boot采用约定优于配置的策略,去除了原来在Spring MVC中通过Xml进行注入的方式,全部通过Java Configuration的编码方式进行实体Bean的注入,因此我们在开发中,对于外部组件、自己封装的业务SDK等等都需要开发者自行将实体Bean注入到Spring的容器中,然后通过注解在Spring的框架中方便的进行使用那么,在Spring Boot框架中,我们在注入实体Bean时,如何

2020-09-23 14:33:32 3596

原创 在Spring MVC环境中集成Knie4j

如果你是Spring MVC项目,想使用knife4j提供的增强ui包,使用方法很简单demo参考示例地址:knife4j-spring-mvc-demo依赖引用2.0.4(包含)以前的版本如果开发者使用的是2.0.4(包含)以前的版本,那么需要引入以下2个jar包第一步是需要引入Knife4j提供的依赖包,如下:<!--引入Knife4j--><dependency> <groupId>com.github.xiaoymin</groupId

2020-09-14 09:02:06 2977

原创 轻量级Spring Boot & Spring Cloud项目自动部署Maven插件

介绍deploy-helper是一個Spring Boot & Spring Cloud项目自动远程部署轻量级Maven插件.Gitee:https://gitee.com/dt_research_institute/deploy-helper通常情况下,我们将开发好的Spring Boot程序部署到服务器上时,会经历以下流程:1、maven项目打包2、通过sftp、scp软件将jar包拷贝到目标服务器上3、通过ps命令查找pid进程号,使用kill命令杀进程4、通过java命令启动j

2020-07-03 17:34:34 493

原创 如何开发一个对自己有用的Maven Plugin

本文部分内容来源于Maven官方网址:https://maven.apache.org/plugin-developers/index.html1.介绍Maven实际上是Maven Plugin集合的核心框架,而Plugin是Maven执行实际操作的关键,例如常见的插件:创建Jar文件、创建WAR文件、编译代码、单元测试、创建项目文档等.你可以想象到的对项目执行的所有操作几乎都是Maven Plugin来执行的.Maven Plugin的实际上是由一个或多个MOJO组成MOJO来源于POJO(P.

2020-06-12 14:15:37 942

原创 Knife4jCloud 正式上线,云端聚合Swagger文档

0.目录文章目录0.目录1.产品介绍2.功能介绍2.1登录2.2工作台2.3项目管理3.4服务管理2.5预览文档3.开放API3.1注册API3.2 Spring Boot自动注册4.产品试用1.产品介绍Knife4jCloud是一款独立部署的中间件,基于Spring Boot 2.2.0.RELEASE+Mybatis 3.5进行开发.将目前开源的Knife4j进行整合,通过云平台对OpenAPI v2的Swagger文档进行云端聚合,在线对Swagger文档进行渲染和调试,非常灵活方便,特别是在

2020-06-05 09:53:53 1791 2

原创 Knife4j 2.0.2 正式发布,Swagger 接口文档赋能工具

Knife4j前身是swagger-bootstrap-ui,是一个为Swagger接口文档赋能的工具文档:https://doc.xiaominfo.com效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html效果(2.X版):http://knife4j.xiaominfo.com/doc.htmlGitee:http...

2020-03-09 15:09:38 3746

原创 Knife4j 2.0 发布,涅槃重生~!

Knife4j前身是swagger-bootstrap-ui,取名 knife4j 是希望她能像一把匕首一样小巧,轻量,并且功能强悍,更名也是希望把她做成一个为 Swagger 接口文档服务的通用性解决方案,不仅仅只是专注于前端 Ui 前端.虽然目前还只是在前端,但以后功能肯定不止于此.2.0版本主要是使用Vue+Ant Design Vue对前端 Ui 进行重写,该版本是真正的前后端分离版本,...

2019-12-16 08:52:04 3089 1

原创 Python3.x服务器环境安装

安装Python3环境主要安装步骤:1、安装基础依赖包yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel...

2019-12-11 20:06:42 276

原创 MySQL数据库备份脚本

生产环境数据库每日对其进行备份是很有必要的,在数据库被黑的情况下,我们能快速恢复数据到最新日期,将损失降低到最低!!!数据库备份是每个生产应用上线后必须做的事情!!!世界上曾经有一份数据,我没有去珍惜,直到被黑后才追悔莫及!!!编写Shell脚本在数据库服务器,编写Shell备份脚本,主要调用MySQL的mysqldump命令进行SQL备份脚本如下:## 年月日类型的日期date...

2019-11-25 14:49:03 460

原创 Ant Design Vue通过iconfont构建自定义图标库

虽然Ant Design Vue已经为我们内置了很多icon图标,我们很方便就能使用,但有时候有些图表我们还是系统能实现定义,本文主要介绍根据iconfont图标库创建自定义的icon图表,并在Ant Design Vue中使用首先在iconfont里面将自己添加的图标添加到自定义项目后,下载压缩包,解压后你应该有如下结构:iconfont.cssiconfont.eoticonfont...

2019-11-11 15:24:58 6504 5

原创 VuePress构建开源技术博客站点

随着开源项目knife4j添加的新特性越来越多,搭建一个开源软件的技术博客迫在眉睫,针对非专业前端的开发者来说,能快速搭建一个网站当然是最好的,正好,看到了VuePress这款产品特点简直是和自己完美契合,主要有几点;通过编写Markdown文件就可以轻松完成整个站点的内容输出,不用考虑排版,专注于协作基于Vue、Node等技术的可插拔式的自定义插件开发体系,构建自定义的主题、插件等简单...

2019-11-07 17:24:55 427

原创 MariaDB常用表达式(递归与非递归)-CTE(Common Table Expressions)

CTE是SQL标准的特性之一,其本质是临时命名的结果集. CTE最初于1999年出现在SQL标准中,而第一个实现则于2007年开始出现。CTE主要包括两种方式:非递归递归非递归CTE关键字with作为CTE的标志,通过给定一个临时的名称,后面再跟上一个查询结果集,如下:CTE和派生表(子查询)有些类似,例如:使用CTE的SQL查询语句:WITH engineers AS ...

2019-11-07 11:15:40 884

原创 Mysql数据库连接池组件封装(Python篇)

以前一直在用Java来开发,数据库连接池等都是有组件封装好的,直接使用即可,最近在尝试Python的学习,碰到了和数据库打交道的问题,和数据库打交道我们都知道,数据库连接池必不可少,不然要么就是程序异常不稳定,要么就是数据库莫名其妙挂了,本篇博客主要是对数据库操作的简单封装,相当于一个DBHelper操作类组件Python中的数据库连接操作所需组件pymysql:mysql的Python...

2019-10-10 17:32:45 2448 2

原创 springfox 源码分析(二十一) 忽略参数Class类型

我们在前面的源码过程中,了解了springfox的基本工作原理,接下来,我们可以通过使用springfox给我们提供的外部接口,来处理一些我们工作中碰到的问题,或者进行自定义扩展本篇主要介绍如何来忽略某些特定的参数Class类型先举一个例子,假如我们的接口是这样的:@PostMapping("/createOr33der")@ApiOperation(value = "创建订单...

2019-10-10 12:58:53 656

原创 springfox 源码分析(二十) 自定义扩展实现Map、JSONObject等动态字段显示

待续...

2019-10-10 12:58:11 561 1

原创 springfox 源码分析(十九) guava库学习

我们在研究springfox的过程中,发现springfox大量使用了guava这个库的一些方法和类,针对我们在研究源码的学习过程中,将涉及到的guava库中的类进行归纳总结,后期在工作中我们也可以熟练运用guava库为我们提供的简介apiArrayListMultimap从字面意思来看map中包含了数组元素举一个简单的例子来帮助我们理解这个类我们在读书时,作为主体对象的我们(学生...

2019-10-10 12:57:29 254

原创 springfox 源码分析(十八) 自定义扩展实现分组的排序

既然我们对springfox提供的接口已经有了一个初步的了解,那么针对我们在分组接口文章中提的需求,如果自定义扩展实现分组的排序如何做呢?在swagger-bootstrap-ui以前的版本中,已经存在了增强功能,增强功能主要的方式是重写了springfox的接口,然后在我们自定义的ui中渲染即可.因为SwaggerResource.java中没有提供排序的字段属性,所以我们可以扩展该类,...

2019-10-10 12:56:56 662

原创 springfox 源码分析(十七) Swagger2接口文档示例接口api-docs

前面已经获取得到了swagger的分组接口信息了,接下来就是根据分组名称获取每个分组的Swagger资源详细信息,在springfox中提供了/v2/api-docs接口来进行获取来看接口的源码@Controller@ApiIgnorepublic class Swagger2Controller { public static final String DEFAULT_URL...

2019-10-10 12:56:03 3332

原创 springfox 源码分析(十六) 分组接口swagger-resouces

通过前面的分析,我们最终得到了springfox的Documentation文档对象,将我们的RESTful接口最终转换为了文档对象,文档对象是包含了接口列表、分组信息等属性的在springfox中,为我们提供了springfox-swagger-ui来呈现最终的接口信息.在ui界面中有两个核心接口:swagger-resources:swagger分组接口,创建多少Docket,就会有多...

2019-10-10 12:55:22 3821

原创 Python之Hello World

在学习一门新的编程语言时,Hello World总是必不可少的Python也是一样,Python是一门面向对象的脚本语言,目前专注的领域非常多,运维、大数据、爬虫、机器学习、数据分析等等尝试着了解也是非常不错的# Python的Hello Worldprint("Hello World")...

2019-10-10 12:32:06 298

原创 springfox 源码分析(十五) 归档得到Documentation文档对象

通过上篇的分析,我们已经得到了ApiListing的map集合,接下来最终做文档归档,得到Documentation对象/*** * 最终生成Documentation文档对象 * @param context * @return */ public Documentation scan(DocumentationContext context) { //...

2019-10-07 11:04:08 672

原创 springfox 源码分析(十四) 归档得到ApiListing接口集合

在前面我们拿到了接口的Model类型集合,然后还获取到了该接口的ApiDescription描述信息此时针对这些信息,进行接口的资源整合,最终构造ApiListing类/*** * 通过已经筛选过滤的接口集合以及context上下文对象来得到接口列表 * @param context * @return */public Multimap<String, ApiListi...

2019-10-07 11:03:26 1139

原创 springfox 源码分析(十三) 自定义扩展实现接口的排序

很多时候,Swagger定义的标准并不能满足我们实际的需求,比如拿分组后的接口来说,有适合我们希望我们的接口能够排序,假如我们当前有一个注册的需求实现,那么他的接口可能是这样的:1.获取验证码 -> 2.校验用户名是否有效 -> 3.注册验证 -> 4.登录如果我们没有排序的情况下,上面的接口对于开发人员来说可能是杂乱无章的,对于初级的接口对接人员来说,排序更能让开发者把...

2019-10-07 11:02:44 1694

空空如也

空空如也

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

TA关注的人

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