![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序杂记
文章平均质量分 91
萧明
开源软件knife4j作者
展开
-
Spring Security框架中踢人下线技术探索
1.背景在某次项目的开发中,使用到了Spring Security权限框架进行后端权限开发的权限校验,底层集成Spring Session组件,非常方便的集成Redis进行分布式Session的会话集群部署。系统正式上线后,各个部署节点能够非常方便的进行集群部署,用户的Session会话信息全部保存在Redis中间件库中,开发者不用关心具体的实现,Spring Session组件已经全部集成好了。但是在系统的用户管理模块中,提供了对系统用户账号的删除功能以及禁用功能,针对这两个功能,需求方给出的具体要求原创 2021-04-20 21:12:58 · 1733 阅读 · 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 · 2814 阅读 · 0 评论 -
Spring Boot框架中针对数据文件模板的下载总结
1.前言在我们的日常开发中,经常会碰到注入导入Excel数据到系统中的需求,而在导入Excel数据时,一般的业务系统都会提供数据的Excel模板,只有提交的Excel数据满足业务系统要求的模板时,数据才能够正常的导入系统中。因此针对这种需求,一般我们会在系统中提供一个Excel模板的下载按钮,业务人员在使用时,可以先下载Excel模板,然后按照模板中的格式将数据填充,即可导入成功。本文主要总结目前在开发这类需求时碰到的问题。2.解决方案从需求上来看,目前有大致三种解决方案,针对数据文件的模板下载,分别原创 2021-03-03 14:31:36 · 880 阅读 · 1 评论 -
基于Servlet体系的HTTP请求代理转发Spring Boot组件
背景概述两个项目组原本都是各自负责两个产品线(产品A、产品B),由于公司业务的发展,目前需要将两个产品合并成一个大产品(功能整合,部分做取舍,最终产出产品C),前后端代码必然也需要整合,包括两个产品线的用户体系等。并且给出的时间节点很紧张。目前两个产品线的区别点:产品A前端模块载体是微信小程序,没有H5、APP等需求,因此所采用的技术栈是原生写法,没有用到技术框架服务端技术架构是单体架构,Spring Boot框架,管理后台框架采用的是Apache Shiro前后端接口调用采用的是服务端tok原创 2021-02-03 14:58:20 · 438 阅读 · 0 评论 -
Spring Boot自定义starter必知必会条件
前言在目前的Spring Boot框架中,不管是Spring Boot官方还是非官方,都提供了非常多的starter系列组件,助力开发者在企业应用中的开发,提升研发人员的工作效率,Spring Boot框架提出的约定大于配置的规则,确实帮助开发者简化了以前Spring MVC时代的很多繁杂的配置。让开发者用起来也是非常爽的。尽管Spring Boot或者一些开源组件已经帮助我们提供了非常多的starter组件,在满足日常的开发中,已经完全没有问题了。但有时候因为需求的可变性,导致企业架构也会随着调整,那原创 2020-12-10 13:21:11 · 2037 阅读 · 0 评论 -
有意思的两段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 · 1048 阅读 · 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 · 1056 阅读 · 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 · 2610 阅读 · 0 评论 -
基于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 · 870 阅读 · 0 评论 -
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 · 3726 阅读 · 0 评论 -
轻量级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 · 516 阅读 · 0 评论 -
如何开发一个对自己有用的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 · 972 阅读 · 0 评论 -
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 · 281 阅读 · 0 评论 -
MySQL数据库备份脚本
生产环境数据库每日对其进行备份是很有必要的,在数据库被黑的情况下,我们能快速恢复数据到最新日期,将损失降低到最低!!!数据库备份是每个生产应用上线后必须做的事情!!!世界上曾经有一份数据,我没有去珍惜,直到被黑后才追悔莫及!!!编写Shell脚本在数据库服务器,编写Shell备份脚本,主要调用MySQL的mysqldump命令进行SQL备份脚本如下:## 年月日类型的日期date...原创 2019-11-25 14:49:03 · 470 阅读 · 0 评论 -
正则表达式?就是这么简单
正则表达式?就是这么简单本文不介绍正则表达式的含义,各个字符的意思等等(表达式太多了,记不住,我想这也是大部分人用正则头疼的地方),只针对作者所理解的正则套路进行分享如果你按照这篇套路来用正则表达式,在80%的情况下,你都能写出来正则获取你要的结果!!!基本概念我们在先用这个套路去写之前,你首先得弄明白一些基本概念,磨刀不误砍柴工捕获组捕获组简单的来说就是你想通过正则表达式获取得到...原创 2019-11-20 22:00:51 · 665 阅读 · 1 评论 -
VuePress构建开源技术博客站点
随着开源项目knife4j添加的新特性越来越多,搭建一个开源软件的技术博客迫在眉睫,针对非专业前端的开发者来说,能快速搭建一个网站当然是最好的,正好,看到了VuePress这款产品特点简直是和自己完美契合,主要有几点;通过编写Markdown文件就可以轻松完成整个站点的内容输出,不用考虑排版,专注于协作基于Vue、Node等技术的可插拔式的自定义插件开发体系,构建自定义的主题、插件等简单...原创 2019-11-07 17:24:55 · 436 阅读 · 0 评论 -
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 · 920 阅读 · 0 评论