微微陌上矣 - 文件配置
type: channel
link: http://www.cynthia99.link/index.php/category/fileConfig
description: 相关代码配置或者文件全局配置
items: Swagger拓展自定义字段
items: Spring全家桶依赖仓库
items: XSS 过滤处理
items: CorsConfig 网关设置
items: Git 常用命令
items: gitee 创建仓库及通过 Git 提交代码
items: SpringBoot [集成Swagger-Bootstrap-UI]
items: AjaxResult 操作消息
items: HttpStatus 返回状态码
items: 关于阿里云OSS对象存储相关配置

Swagger拓展自定义字段
type: item
date: 2024-06-03T14:37:36+08:00
description: 准备环境 application.yml spring: application: name: knife4j-demo knife4j: enable: true openapi: title: Knife4j官方文档 description: "`我是测试`,**你知道吗** # aaa" email: xiaoymin@foxmail.com concat: 八一菜刀 url: https://docs.xiaominfo.com version: v4.0 license: Apache 2.0 license-url: https://stackoverflow.com/ terms-of-service-url: https://stackoverflow.com/ group: test1: group-name: 分组名称 api-rule: package api-rule-resources: - com.example.swaggertest pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.5</version> <relativePath/> </parent> <groupId>com.example</groupId> <artifactId>Swagger-Test</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Swagger-Test</name> <description>Swagger-Test</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <version>4.4.0</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1-jre</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 目录配置 仅需三个文件即可实现无需其他配置类 @ApiOperationExtended package com.example.swaggertest.annotaion; import io.swagger.annotations.Extension; import io.swagger.annotations.ExtensionProperty; import io.swagger.annotations.ApiOperation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention…

Spring全家桶依赖仓库
type: item
date: 2022-10-01T16:25:00+08:00
description: 版本列表 有找不到版本号的可以从此处找寻 SpringCloud Alibaba 项目参考 ------------------------------------------------------------------------------- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-boot.version>2.7.3</spring-boot.version> <spring-cloud.version>2021.0.4</spring-cloud.version> <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version> <spring-boot-admin.version>2.7.5</spring-boot-admin.version> <spring-boot.mybatis>2.2.2</spring-boot.mybatis> <swagger.fox.version>3.0.0</swagger.fox.version> <swagger.core.version>1.6.2</swagger.core.version> <tobato.version>1.27.2</tobato.version> <kaptcha.version>2.3.2</kaptcha.version> <pagehelper.boot.version>1.4.5</pagehelper.boot.version> <druid.version>1.2.12</druid.version> <dynamic-ds.version>3.5.2</dynamic-ds.version> <commons.io.version>2.11.0</commons.io.version> <commons.fileupload.version>1.4</commons.fileupload.version> <velocity.version>2.3</velocity.version> <fastjson.version>2.0.14</fastjson.version> <jjwt.version>0.9.1</jjwt.version> <minio.version>8.2.2</minio.version> <poi.version>4.1.2</poi.version> <commons-collections.version>3.2.2</commons-collections.version> <transmittable-thread-local.version>2.13.2</transmittable-thread-local.version> ------------------------------------------------------------------------------- SpringCloud 项目参考 ------------------------------------------------------------------------------- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-boot.version>2.3.2.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR7</spring-cloud.version> <spring-boot-admin.version>2.2.2</spring-boot-admin.version> <druid.version>1.1.14</druid.version> <bitwalker.version>1.19</bitwalker.version> <kaptcha.version>2.3.2</kaptcha.version…

XSS 过滤处理
type: item
date: 2021-12-11T20:46:16+08:00
description: import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.cynthia.common.utils.StringUtils; //可参见 StringUtils 工具类 /** * 防止XSS攻击的过滤器 * * @author Wcy */ public class XssFilter implements Filter { /** * 排除链接 */ public List<String> excludes = new ArrayList<>(); @Override public void init(FilterConfig filterConfig) throws ServletException { String tempExcludes = filterConfig.getInitParameter("excludes"); if (StringUtils.isNotEmpty(tempExcludes)) { String[] url = tempExcludes.split(","); for (int i = 0; url != null && i < url.length; i++) { excludes.add(url[i]); } } } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; if (handleExcludeURL(req, resp)) { chain.doFilter(request, response); return; } XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request); chain.doFilter(xssRequest, response); } private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response) { String url = request.getServletPath(); String method = request.getMethod(); // GET DELETE 不过滤 if (method == null || method.matches("GET") || method.matches("DELETE")) { return true; } return StringUtils.matches(url, excludes); } @Override public void destroy() { } } XssHttpServletRequestWrapper: import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import com.cynthia.common.utils.html.EscapeUtil;//参见 EscapeUtil 转义和反转义工具类 /** * XSS过滤处理 * * @author Wcy */ public class XssHtt…

CorsConfig 网关设置
type: item
date: 2021-12-11T20:45:10+08:00
description: import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; /** * 网关全局设置，允许跨域 * * @author Wcy * @date 2021-08-13 17:28 */ @Configuration public class CorsConfig { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", buildConfig()); return new CorsFilter(source); } }

Git 常用命令
type: item
date: 2021-12-11T20:36:00+08:00
description: 官网下载 https://git-scm.com/downloads 但是官网下载太慢了，我估计我这网络肯定得下载好几天呢，可能大家也是，于是我找到阿里镜像 下载最新版的Git，利用阿里镜像会下载的很快 https://npm.taobao.org/mirrors/git-for-windows/ 去选择你想下载的版本就好啦！希望可以帮到你！ 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git commit -am "init" 提交并且加注释 git remote add origin git@666.666.666.66:666 git push origin master 将文件给推到服务器上 git remote show origin 显示远程库origin里的资源 git push origin master:develop git push origin master:hb-dev 将本地库与服务器上的库进行关联 git checkout --track origin/dev 切换到远程dev分支 git branch -D master develop 删除本地库develop git checkout -b dev 建立一个新的本地分支dev git merge origin/dev 将分支dev与当前分支进行合并 git checkout dev 切换到本地dev分支 git remote show 查看远程库 git add . git rm 文件名(包括路径) 从git中删除指定文件 git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来 git config --list 看所有用户 git ls-files 看已经被提交的 git rm [file name] 删除一个文件 git commit -a 提交当前repos的所有的改变 git add [file name] 添加一个文件到git index git commit -v 当你用－v参数的时候可以看commit的差异 git commit -m "This is the message describing the commit" 添加commit信息 git commit -a -a是代表add，把所有的change加到git index里然后再commit git commit -a -v 一般提交命令 git log 看你commit的日志 git diff 查看尚未暂存的更新 git rm a.a 移除文件(从暂存区和工作区中删除) git rm --cached a.a 移除文件(只从暂存区中删除) git commit -m "remove" 移除文件(从Git中删除) git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除) git diff --cached 或 $ git diff --staged 查看尚未提交的更新 git stash push 将文件给push到一个临时空间中 git stash pop 将文件从临时空间pop下来 --------------------------------------------------------- git remote add origin git@github.com:username/Hello-World.git git push origin master 将本地项目给提交到服务器中 ----------------------------------------------------------- git pull 本地与服务器端同步 ----------------------------------------------------------------- git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。 git push origin serverfix:awesomebranch ------------------------------------------------------------------ git fetch 相当于是从远程获取最新版本到本地，不会自动merge git commit -a -m "log_message" (-a是提交所有改动，-m是加入log信息) 本地修改同步至服务器端 ： git branch branch_0.1 maste…

gitee 创建仓库及通过 Git 提交代码
type: item
date: 2021-12-11T20:26:00+08:00
description: 首先，我们在Gitee创建一个仓库：如图： 接下来进入这个页面： 咱们复制上面的https地址： 之后咱们进入要项目的文件目录： 右键点击git Bash here git init //初始化仓库 git add .(文件name) //添加文件到本地仓库 git commit -m “first commit” //添加文件描述信息 git remote add origin + 远程仓库地址 //链接远程仓库，创建主分支 接着： git push -u origin master //把本地仓库的文件推送到远程仓库 如出现警告，可使用 git push -u origin master -f //强制向远程仓库推送本地仓库的改动(仅仅建议在初始状态下使用) 1）使用强制push的方法：使用该代码。但这样会使远程修改丢失，一般是不可取的，尤其是多人协作开发的时候。 2）push前先将远程仓库修改pull下来 //仓库已有代码时 到这里没问题的话远程就应该代码上传完毕了 我们来到Gitee里看看我们的仓库代码： 咱们的仓库搭建就完成了，可在IDEA中安装git进行快速管理项目了。 在idea中即可通过控制台快速管理项目版本

SpringBoot [集成Swagger-Bootstrap-UI]
type: item
date: 2021-12-11T20:03:00+08:00
description: 首先Swagger它是一个API文档工具，可以通过各种注解生成接口文档，Model文档，但是我在使用Swagger的时候，觉得实用性并不高，一个机会接触到了基于Swagger开发的Swagger-Bootstrap-UI，觉得很好用. 1.引入依赖 <properties> <swagger.version>2.9.2</swagger.version> <xiaoymin.version>1.9.2</xiaoymin.version> </properties> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${swagger.version}</version> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>${xiaoymin.version}</version> </dependency> 2.配置类 import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI; import io.swagger.annotations.ApiOperation; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.ApiKey; import springfox.documentation.service.Contact; import springfox.documentation.service.SecurityScheme; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.Collections; /** * Swagger配置 * * @author Wcy * @date 2020/8/19 20:53 */ @Configuration @EnableSwagger2 @EnableSwaggerBootstrapUI @ConfigurationProperties(prefix = "swagger") public class SwaggerConfig { //bootstrap-ui @Bean public Docket examApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("考试模块接口") .host("http://666.66.66.666:8081") .select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.ant("/exam/api/**")) .build() .securitySchemes(Collections.singletonList(securityScheme())); } //swagg…

AjaxResult 操作消息
type: item
date: 2021-12-11T20:01:34+08:00
description: HashMap类型返回值，可自定义返回消息结构。 import java.util.HashMap; import com.cynthia.common.constant.HttpStatus; import com.cynthia.common.utils.StringUtils; /** * 操作消息提醒 * * @author wcy */ public class AjaxResult extends HashMap<String, Object> { private static final long serialVersionUID = 1L; /** * 状态码 */ public static final String CODE_TAG = "code"; /** * 返回内容 */ public static final String MSG_TAG = "msg"; /** * 数据对象 */ public static final String DATA_TAG = "data"; /** * 初始化一个新创建的 AjaxResult 对象，使其表示一个空消息。 */ public AjaxResult() { } /** * 初始化一个新创建的 AjaxResult 对象 * * @param code 状态码 * @param msg 返回内容 */ public AjaxResult(int code, String msg) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); } /** * 初始化一个新创建的 AjaxResult 对象 * * @param code 状态码 * @param msg 返回内容 * @param data 数据对象 */ public AjaxResult(int code, String msg, Object data) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); if (StringUtils.isNotNull(data)) { super.put(DATA_TAG, data); } } /** * 返回成功消息 * * @return 成功消息 */ public static AjaxResult success() { return AjaxResult.success("操作成功"); } /** * 返回成功数据 * * @return 成功消息 */ public static AjaxResult success(Object data) { return AjaxResult.success("操作成功", data); } /** * 返回成功消息 * * @param msg 返回内容 * @return 成功消息 */ public static AjaxResult success(String msg) { return AjaxResult.success(msg, null); } /** * 返回成功消息 * * @param msg 返回内容 * @param data 数据对象 * @return 成功消息 */ public static AjaxResult success(String msg, Object data) { return new AjaxResult(HttpStatus.SUCCESS, msg, data); } /** * 返回错误消息 * * @return */ public static AjaxResult error() { return AjaxResult.error("操作失败"); } /** * 返回错误消息 * * @param msg 返回内容 * @return 警告消息 */ public static AjaxResult error(String msg) { return AjaxResult.error(msg, null); } /** * 返回错误消息 * * @param msg 返回内容 * @param data 数据对象 * @return 警告消息 */ public static AjaxResult error(String msg, Object data) { return new AjaxResult(HttpStatus.ERROR, msg, data); } /** * 返回错误消息 * * @param code 状态码 * @param msg 返回内容 * @return 警告消息 */ publi…

HttpStatus 返回状态码
type: item
date: 2021-12-11T20:01:00+08:00
description: /** * 返回状态码 * * @author wcy */ public class HttpStatus { /** * 操作成功 */ public static final int SUCCESS = 200; /** * 对象创建成功 */ public static final int CREATED = 201; /** * 请求已经被接受 */ public static final int ACCEPTED = 202; /** * 操作已经执行成功，但是没有返回数据 */ public static final int NO_CONTENT = 204; /** * 资源已被移除 */ public static final int MOVED_PERM = 301; /** * 重定向 */ public static final int SEE_OTHER = 303; /** * 资源没有被修改 */ public static final int NOT_MODIFIED = 304; /** * 参数列表错误（缺少，格式不匹配） */ public static final int BAD_REQUEST = 400; /** * 未授权 */ public static final int UNAUTHORIZED = 401; /** * 访问受限，授权过期 */ public static final int FORBIDDEN = 403; /** * 资源，服务未找到 */ public static final int NOT_FOUND = 404; /** * 不允许的http方法 */ public static final int BAD_METHOD = 405; /** * 资源冲突，或者资源被锁 */ public static final int CONFLICT = 409; /** * 不支持的数据，媒体类型 */ public static final int UNSUPPORTED_TYPE = 415; /** * 系统内部错误 */ public static final int ERROR = 500; /** * 接口未实现 */ public static final int NOT_IMPLEMENTED = 501; }

关于阿里云OSS对象存储相关配置
type: item
date: 2021-12-11T19:44:00+08:00
description: AliOssCloudUtil 工具类 import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.*; import java.io.IOException; import java.io.InputStream; public class AliOssCloudUtil { Log log = LogFactory.getLog(AliOssCloudUtil.class); String endpoint="oss-cn-beijing.aliyuncs.com"; String accessKeyId ="xxxxxxxx"; //你的acessKeyId String accessKeySecret ="xxxxxxxx"; //你的accessKeySecret //空间 private String bucketName = "xxx"; //你的bucketName //文件存储目录 private String filedir = "file/"; private OSSClient ossClient; public AliOssCloudUtil() { ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); } public String getFiledir() { return this.filedir; } //自定义上传文件夹 public AliOssCloudUtil(String filedir) { this.filedir = filedir; ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); } /** * 初始化 */ public void init() { ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); } /** * 销毁 */ public void destory() { ossClient.shutdown(); } /** * 上传到OSS服务器 * * @param instream 文件流 * @param fileName 文件名称 包括后缀名 * @return 出错返回"" ,唯一MD5数字签名 */ public String uploadFile2OSS(InputStream instream, String fileName) { String ret = ""; // 判断bucket是否已经存在,不存在进行创建 if (!doesBucketExist()) { createBucket(); } try { //创建上传Object的Metadata ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentLength(instream.available()); objectMetadata.setCacheControl("no-cache"); objectMetadata.setHeader("Pragma", "no-cache"); objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf(".")))); objectMetadata.setContentDisposition("inline;filename=" + fileName); // 指定上传文件操作时是否覆盖同名Object。 // 不指定x-oss-forbid-overwrite时，默认覆盖同名Object。 // 指定x-oss-forbid-overwrite为false时，表示允许覆盖同名Object。 // 指定x-oss-forbid-overwrite为true时，表示禁止覆盖同名Object，如果同名Object已存在，程序将报错。 objectMetadata.setHeader("x-oss-forbid-overwrite", "false"); String objectName = filedir + fileName; //上传…