什么是MQMQ(Message Quene) : 翻译为 消息队列,通过典型的 生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。别名为 消息中间件 通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
下载Erlang和RabbitMQRabbitMQ是使用Erlang语言开发的开源消息队列系统,所以安装RabbitMQ前需要先安装下Erlang。Erlang官网地址,如果下载速度慢可以从我的云盘里下载。
引用站外地址
Erlang安装包
百度云下载
RabbitMQ官网地址
引用站外地址
Rabb ...
需求说明项目中会有使用配置文件来存放敏感信息(比如数据库密码、redis等),但生产环境中如果采用明文配置将会有安全问题。为了消除安全隐患,最直接的方式就是把明文敏感信息加密,解密。Jasypt 框架提供了很好的解决方案。
Jasypt 简介Jasypt 是一个Java库,Java加密包,用于加密和解密敏感数据,它允许开发人员以很简单的方式添加基本加密功能,且无需深入研究加密原理。
Jasypt的功能特性
安全性高
线程安全
配置性能高
跨语言平台等
详细介绍请见Jasypt官网
在SpringBoot项目中如何使用Jasypt
添加Jasypt依赖
12345<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version></dependency>
yml配置文件
123jasypt ...
mybatis-plus 是有默认的.xml文件路径的,路径为/mapper/**/*.xml,我们现在想自定义的它的位置而不是在resources目录下创建,最后的解构如下图
首先在项目的 pom 文件中的 build 标签里添加下面这段配置123456789<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource></resources>
然后打开项目的 application.yml 配置文件,给 mapper-locations 添加路径配置1mapper-locations: com/fu99999/note/mapp ...
为了方便区分这里直接创建了UserVoToResultType,UserVoToResultMap两个返回的vo类。先看下ResultType的写法
vo类 UserVoToResultType123456789101112@Datapublic class UserVoToResultType { private Integer id; private String name; private String mobile; private Integer age; private Integer fileId; private String domainType; private String levelType; private String filesName; private String filesUrl;}
Controller 12345678@GetMapping("listAllToResultType")public R listAllToResultType(@Re ...
SpringBoot项 启动后报错,信息如下图:
项目的pom文件1234567891011121314151617181920212223<profiles> <!-- 开发环境 --> <profile> <id>dev</id> <activation> <!--默认激活--> <activeByDefault>true</activeByDefault> </activation> <properties> <spring.profiles.active>dev</spring.profiles.active> <!-- 环境标识,需要与配置文件的名称相对应 --> <!--本地编译时自行修改--> & ...
@Validated注解和@Valid注解区别@Valid 与 @Validated 都是用来校验接收参数的,其中 @Validated是Spring的注解,对 @Valid 进行了封装,所有功能强大。 @Valid 是javax包下的注解属于JDK提供的。
@Valid 没有分组的功能
@Validated 提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制
@Valid 可以用在方法、构造函数、方法参数和成员属性(字段)上,支持嵌套检测
@Validated 可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上,不支持嵌套检测
在SpringBoot项目中使用需要先引入以下Maven
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>
@Validated注解和@Valid ...
eclipse 项目如何在 IDEA 中 打开
打开IDEA,依次点击 File > New > Project from Existing Sources
选择需要导入的 eclipse 项目,点击OK
勾选 Import project from external model,选择 Eclipse,点击 Next
后面几步都是点击 Next,无需改动其他
选择本地安装的JDK版本,点击 Create
成功打开,界面如下所示
eclipse 项目如何在 IDEA 中 运行
给项目添加需要的依赖,打开IDAE的设置Setting添加JDK版本
在 File > Project Structure > 选择Modules 修改项目 resources 文件夹
在 File > Project Structure > 选择Libraries 给项目添加相关依赖
在Modules 中添加 Web注意在Modules > Dependencies 中添加 Tomcat
在 File > Project Struc ...
前端和后端项目部署到 Linux 服务器上的常用命令
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950# Tab键 打出名字前几位按Tab自动补全完整名字# 返回上两级目录cd .. # 进入指定目录cd /xx/xx/xx# 查看目录ls # 查看目录(列表)ll # 创建文件夹mkdir 文件名# 运行.sh脚本./xxx.sh# 查看日志的最后100行 xxx.log是服务器日志的名字tail -100f xxx.log# 备份项目:原名称.bak 或者原名称.bak+时间xxxxx-1.0-SNAPSHOT.jar.bak# 查看正在运行的java程序ps -ef|grep java# 查看sh脚本cat xxx.sh# 编辑脚本 i 进入编辑 : 进入退出 q 退出 qw 退出并保存 q! 强制退出不保存vim xxx.sh# 清屏Ctrl + l# 停止程序Ctrl + c# 删除文件rm -rf 文件名# 部署前端项目到xx目录下 (前 ...
在日常的开发中,最常用的注释就是 类注释 和 方法注释 ,分别为类和方法添加描述信息,日期,作者等,增强代码的可读性,方便日后维护。但是项目中都会有很多的类和方法,手动依次添加过于麻烦。下面就介绍下如何高效,便捷的添加这些注释。
类注释在IDEA中,依次选择 File > Setting > Editor > File and Code Templates > Files > Class 编辑栏中看到的是类的默认模板,把自己模板添加到里面 (绿色框内容是博主的模板) 注意:不要把原来的信息覆盖。
12345/** * @Author: wind-of-grace * @Description: TODO * @Date: ${DATE} ${TIME} */
想要一次性为所有的文件都应用上模板,选择 Files 旁边的 Includes , 在 File Header 的编辑栏里添加自己的模板即可。
其它类型的文件可根据自己的需要进行修改。 ${} 中的值代表变量,下面是支持的变量
...
有时候项目中没有配置xml文件,需要使用 @Select 注解做条件过滤查询,实例方法如下:
1234567891011/** * 根据手机号查询年龄18的用户信息,如不传则全查年龄18的用户(MyBatis @Select()写法)*/@Select("<script>" + "SELECT mobile,name,id FROM tab_user_info WHERE 1=1" + "<if test='mobile != null and mobile != \"\" '>" + " AND mobile = #{mobile}" + "</if>" + " AND age = '18' " + "</script>")Map< ...













