自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 资源 (6)
  • 收藏
  • 关注

原创 国密算法SM2加密解密

一、依赖包 <!-- hutool的 SM2 加密--> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15to18</artifactId> <version>1.68</version> &l

2021-11-29 16:27:18 13581

原创 Java Mail发送邮件

授权码的获取方式:登录网易邮箱,点击【设置】->【POP3/SMTP/IMAP】,开启IMAP/SMTP服务,开启需要用绑定手机发送短信,然后会得到授权码,注意保存。实现发送邮件的功能需要准备一个发送邮箱,比如网易邮箱;Mail验证的时候不需要使用发送邮箱的密码,而是需要授权码。实体中包含接收者邮箱,邮件标题,发送类型,邮件内容,附件字节等字段。入参为收件人邮箱、邮件正文、标题,生成MineMessage提取成了公共方法。接口入参为收件人邮箱、邮件正文、标题、附件字节,这里的附件格式为csv。

2022-12-16 17:57:52 2553 1

原创 Java实现更新excel文件内容

首先获取到需要更新到excel中的数据集合,然后获取到需要更新的excel文件,最后更新到excel中后下载excel。经常遇到的有通过上传文件MultipartFile与本地文件File来得到Workbook.通过book.getSheetAt()来得到excel中的每一个sheet.

2022-11-21 10:04:51 1910

原创 SpringBoot读取@RequestBody参数

之前在开发中遇到了切面中获取@RequestBody参数问题,查阅网上资料后写了下面这篇文章SpringBoot AOP获取@RequestBody参数。但是在实际环境下如果在别的地方调用比如HandlerInterceptor拦截器中调用获取接口参数的方法会报错。下面对方法进行优化,因为@RequestBody 是流的形式进行读取,流读了一次就没有了,所以可以写一个过滤器,在过滤器里面 把流数据 copy一份出来用,别的地方调用的时候使用我们复写的流数据就行。@Bean}}

2022-11-15 11:25:56 4207

原创 Java处理日期

JDK8中时间处理类库时间类方法时间处理,可精确到纳秒LocalDate时间处理,可精确到天时间处理,格式化Zoneld时区设置类。

2022-11-07 11:48:22 1534

原创 单线程Jedis管道实现批量写入数据

生产中的有些场景,我们经常需要大批量的往Redis中写入数据,如果我们采用单条循环写入的话,不仅效率低下,而且可能会出现频繁的创建和销毁redis连接,这些都是很不合理的.对此,我们可以采用Jedis的父类中的pipelined()方法获取管道,它可以实现一次性发送多条命令并一次性返回结果,这样就大量的减少了客户端与Redis的通信次数,可以有效的提高程序效率(但是,因为Redis要一次性返回所有结果,它会把这些结果都缓存起来,因此命令越多,缓存消耗的内存也会越大,具体还要视情况而定)

2022-10-28 14:51:49 1588

原创 I/O error on POST request for “http://localhost:9411/api/v2/spans“

由上图可以得知是zipkin导致的报错,但是目前项目中并没有整合zipkin,查阅资料后后发现是依赖中含有zipkin 依赖,但是没有配置zipkin-server,所以默认提交9411端口导致。

2022-09-28 10:07:42 5349

原创 AOP切面实现增删改防止重放攻击

认证重放攻击(高风险)风险级别: 高风险风险描述: 攻击者发送一个目标主机已经接收的数据包,特别是在认证过程中,用于认证用户身份时;风险分析: 攻击者可以使用重放攻击方式伪装成用户,冒充用户身份进行一系列操作;这里沿用自定义的接口操作写入日志注解【OperLog】@Target(ElementType.METHOD) //注解放置的目标位置,METHOD是可注解在方法级别上@Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行{// 操作模块。......

2022-08-31 09:53:06 1224

原创 Java整合kafka实现消费数据存入数据库

为了直观的显示效果,这里的配置均写死,生成环境中可写入配置。下面方法中除了创建【KafkaConsumer】的构造函数以外,还添加了订阅方法【subscribe】、消费消息方法【pool】、手动提交方法【commitSync】。然后线程运行时开始消费kafka,如果有返回值,则做进一步处理,其中用到了redis,可根据实际情况是否引用。其中消费消息方法的参数为【Duration】而不是【long】,查看源码得知参数为long的方法已弃用。这里主要将消费到的消息内容进行处理,然后创建一个延时队列。

2022-08-24 11:41:57 4674

原创 SpringBoot动态切换数据源

这里需要注意如果SpringBoot版本是2.0之后的版本,需要把【url】和【driverClassName】写成【jdbc-url】和【driver-class-name】,否则会报错【jdbcUrl is required with driverClassName.】自定义数据源枚举类,这里配置了两个数据源,则创建两个枚举。3、注入数据源生成bean。单一数据源与Mybatis整合时将DataSource数据源作为参数构建【SqlSessionFactory】,而多个数据源的话只需要将作为

2022-08-24 10:10:55 4398

原创 Java执行Linux命令并获得返回结果

代码】Java执行Linux命令并获得返回结果。

2022-08-15 11:49:42 5060 3

原创 SpringBoot AOP获取@RequestBody参数

项目中使用Spring Boot AOP做日志记录。当接口使用@RequestParam接收参数时,可以通过request.getParameterMap()来获得全部Parameter参数; 而当接口使用@RequestBody接收参数时,用同样的方法获取参数会出现流已关闭的异常,这是因为Spring已经对@RequestBody提前进行处理,而HttpServletReqeust获取输入流时仅允许读取一次,所以会报java.io.IOException: Stream closed。

2022-08-13 18:34:10 7866

原创 Maven引用本地jar包以及打包发布注意事项

2、maven编译时找不到本地引用的jar包在maven编译完成后,运行jar包的时候报错找不到本地引用的jar包,需要在pom文件中build中增加配置:同步下maven后重新编译发现问题解决。在pom中添加如下配置maven编译后可以在target中看到生成的jar包,如下图:完整的build如下:............

2022-07-09 18:39:54 16447 4

原创 日期工具类(不定时更新)

常见的日期操作工具类

2022-07-02 15:55:49 190

原创 Selenium入门(二)Java整合Selenium实现模拟登录

上一篇文章已经讲述了Java搭建Selenium环境:Selenium入门(一)Java 搭建 Selenium 环境下面接着实现模拟登录功能,这里拿自己的网站来进行测试,如下图 这里我把验证码固定了,所以不需要输入验证码即可实现。 鼠标移到输入框,右键点击【检查】,找到该元素所在位置 然后右键,选择【复制】,再选择【Copy full XPath】,即可得到xpath。 需要注意的是webDriver的每次响应操作都要用sleep()函数加入一个时间间隔。由于浏览器的渲染需要耗费一定的时间,

2022-06-27 23:21:17 4104

原创 Selenium入门(一)Java 搭建 Selenium 环境

下载地址:https://registry.npmmirror.com/binary.html?path=chromedriver/根据浏览器版本下载对应版本的ChromeDriver.exe,否则程序运行会报错。将ChromeDriver.exe放到浏览器安装路径,方便查找。以centos7为例。 安装 安装后,执行:当前目录生成一个图片。生成图片:或者自己下载jar包:selenium下载地址:https://selenium.dev/downloads/

2022-06-27 21:59:15 16088 6

原创 【quartz】从数据库中读取配置实现动态定时任务

实现方式1、定时任务表实体2、反射调用scheduleJob中定义的方法3、创建正常状态下的job执行工厂4、若一个方法一次执行不完下次轮转时则等待改方法执行完后才执行下一次操作5、创建需要运行的定时任务类6、SpringBean工厂工具类7、其他用到的工具类 字符串工具类 日志工具类 数据分析常量类 接口返回参数类其中ResultEnum类如下:8、sql语句注释的很

2022-06-25 23:46:51 4174 2

原创 【Spring Boot】从配置文件中读取配置参数

现有配置文件application.properties,内容如下所示下面实现从配置文件中读取配置参数 一般情况下直接使用@Value注解即可获取到参数,然后就可以在方法中使用该参数,比如在控制层中使用,使用方法如下2、静态参数当工具类中的方法需要从配置文件读取参数时,需要将参数定义为静态,才可以在静态方法中获取到,这时候就不能只配置个@Value注解就行了,实现方法如下:将@Value注解在set方法上,并且类上要加@Component注解。目前该注解只支持properties文件引

2022-06-23 18:14:59 6453

转载 MySql如何删除所有多余的重复数据

方法一查询出的所有多余的重复记录:方法二查询出的所有多余的重复记录(与方法一的结果相同):方法三查询出的所有多余的重复记录:这里方法三因为用了MAX()方法(也可改用MIN()),查询结果记录的id不太一样,但也可以被视为重复多余的数据,关键是你希望选择保留哪一条记录而已。...

2022-06-23 15:53:04 19618

原创 SpringBoot 整合 JWT 实现 Token 验证

业务实现1、创建Jwt生成验证token工具类2、创建/oauth/token接口获取token 这里是我的生产环境上的获取token接口,主要功能就是根据传递过来的参数使用Jwt工具类创建token,再组合成规定的返回格式返回给对方。基于HandlerInterceptor的实现类,对接口进行拦截,然后获取接口传递过来的token,用Jwt工具类进行解密,如果token验证通过则返回true并放行接口,验证不通过则返回错误信息。5、测试获取token接口至此功能实现

2022-06-20 17:14:44 2797

原创 【基于Oauth2的api接口开发】3、自定义授权方式

实现 本文自定义平台ID授权模式,只需要传入平台ID即可完成授权,实现方法如下:2、配置自定义授权模式类 3、创建资源认证配置类,继承AuthorizationServerConfigurerAdapter类4、配置资源服务器类,继承ResourceServerConfigurerAdapter类5、配置安全认证类,继承WebSecurityConfigurerAdapter类6、创建自定义grant_type模式的实现类,继承Abstract

2022-06-20 16:52:06 1957

原创 自定义spring security oauth2 /oauth/token以及token失效/过期的返回内容格式

在整合Spring Security Oauth2的时候,获取token的接口/oauth/token的返回内容格式为固定的,如下图所示:而token过期或者无效的返回参数格式如下图所示:实际在我们的项目中有时候会要求自定义返回内容格式,下面分别介绍获取token和token失效/过期的自定义返回内容格式。2、创建获取token接口返回值的转换类创建一个类来完成对获取token接口的返回参数进行转换成我们自定义的格式,这里使用到了@JsonSerialize注解,该注解主要用于数据转换,不知

2022-06-12 15:26:24 10674 1

原创 Fastjson反序列化远程代码执行漏洞

Fastjson

2022-06-08 16:51:20 1739

原创 【MyBatis】resultMap标签中里的collection标签

前言collection(一对多) 元素的作用和association元素的作用差不多一样,事实上,它们非常类似,也是映射到JavaBean的某个“复杂类型” 属性,只不过这个属性是一个集合列表,即JavaBean内部嵌套一个复杂数据类型(集合)。和使用association元素一样,我们使用嵌套查询, 或者从连接中嵌套结果集。示例1、现有两张表,sys_dict_type和sys_dict_value,两表是一对多的关系,表结构如下图所示:2、其中表sys_dict_type的

2022-05-30 17:58:10 6832

原创 java基于注解excel的导入与导出

maven引用<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.5</version></dependency><!-- poi office --><dependency> <groupId>org.a

2022-05-30 17:33:26 2101 1

原创 Nginx发布vue项目,没有读写权限,页面报404解决

问题描述前端发布新版本时,替换新的dist.zip后,启动nginx发现页面报404原因分析首先排除前端代码层面的

2022-05-16 09:33:56 878

原创 Incorrect username or password ( access token )

上传项目到码云(gitee)时,报了如下错误

2022-05-13 16:21:02 31682 2

原创 SpringBoot使用TrueLicense实现证书License的授权和验证

前言TrueLicense是一个开源的证书管理引擎,License即版权许可证;使用场景:当项目交付给客户之后用签名来保证客户不能随意使用项目 默认校验了开始结束时间,可扩展增加mac地址校验等。实现思路1、首先需要生成密钥对,常用的方法为JDK自带的KeyTool工具生成;2、创建licenseServer项目,使用TrueLicense和私钥生成License许可文件,注意服务端代码和私钥需要我们自己留存;3、使用公钥和License许可文件为客户端代码添加License

2022-05-11 15:11:22 4326 5

原创 k8s+docker部署前后端分离项目

环境准备1、k8s集群主节点master:192.168.3.200子节点node1:192.168.3.201子节点node2:192.168.3.202安装方式略。2、harbor远程仓库http://192.168.3.200,输入用户名密码登录,初始用户名为admin,密码配置在【harbor.cfg】配置文件中的【harbor_admin_password】属性。部署在主节点上,需要在harbor目录下输入命令,常用命令如下:# 查看harbor服务状..

2022-05-09 09:52:30 6383 1

原创 【xss】Java编写filter实现防止XSS攻击

前言名词解释XSS攻击全称跨站脚本攻击(Cross Site Scripting),为了与重叠样式表CSS区分,换了另一个缩写XSS。XSS攻击的核心是将可执行的前端脚本代码(一般为JavaScript)植入到网页中,听起来比较拗口,用大白话说就是攻击者想让你的浏览器执行他写的JS代码。一般XSS分为两种:反射型实现方式:1、攻击者将JS代码作为请求参数放置URL中,诱导用户点击,比如:http://localhost:8080/test?name=<script

2022-04-08 14:25:57 4679 2

原创 【MyBatis】防止sql注入

前言关于sql注入的解释这里不再赘述。在MyBatis中防止的sql注入主要分为两种:第一种就是MyBatis提供了两种支持动态 sql 的语法 #{}和 ${},其中${} 是简单的字符串替换,而 #{}在预处理时,会把参数部分用一个占位符 ? 代替,可以有效的防止sql的注入,面试的时候经常会问到,这里也不再详细赘述; 第二种是排序防止sql注入,实现方案如下SQL注入过滤器以下是sql注入过滤器,当判断出是非法字符时则抛出到自定义的异常类B...

2022-04-07 18:29:51 8943

原创 【oracle】去除字段末尾多余的字符

oracle拼接字符串经常会使用到,比如用逗号拼接某几个字段查询出新的字段,当拼接的字段中有为空的字段时,会在末尾产生多余的逗号,这时候可以结合rtrim函数,去掉末尾多余的“,”。select rtrim(a.name || ','|| a.per_street ||','|| a.per_info,',') cityName from tables...

2022-04-07 15:34:40 3077

原创 【SpringBoot+shiro】数据格式的校验

前言Spring Boot整合shiro时,在前端传输数据给后端的时候,后端一般要进行数据格式的校验和数据业务的校验;数据格式的校验:比如手机号11位,如果传输的是12位,而数据库中设置的字段是11位,从而导致无法插入到数据库,报SQL相关的异常,这时候就需要对格式进行校验;数据业务的校验:比如查询手机号是否重复我们知道在前端可以进行数据格式的校验,比如【el-form】组件提供了表单验证的功能,只需要通过【rules】属性传入约定的验证规则等实现数据格式的校验,但那是前端做的,在后端中一

2022-04-06 18:00:51 1777 1

原创 【报错】class path resource [***.xml] cannot be opened because it does not exist

idea读取.xml文件报错,cannot be opened because it does not exist代码如下:@Configuration@ImportResource(locations= {"classpath:/message-context.xml"})public class ExcutorConfig {}文件位置:报错信息:解决办法:在pom文件中加入resources标签<build> <resources&

2022-04-02 10:33:35 2383

原创 【mqtt】Java实现mqtt的订阅与发布

maven引用<dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.1.0</version></dependency>mqtt订阅完整代码如下:import com.cn.common.ut

2022-03-25 18:51:59 15366 4

原创 【json】格式转换

jar包引用<!-- fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.46</version></dependency><!--JSONObject.fromObject--><depen

2022-03-23 14:30:07 1159

原创 【mqtt】centos搭建EMQ mqtt服务器

一、mqtt下载并安装1、下载zip包下载地址:https://www.emqx.io/downloads#broker界面如下:然后点击【Download】选择版本后点击【Download now->】下载2、安装创建mqtt文件夹存放zip包:mkdir usr/local/mqtt下载:wget https://www.emqx.com/en/downloads/broker/3.1.2/emqx-centos7-v3.1.2.zip解压:.

2022-03-18 15:18:27 11222

原创 【mqtt】client测试工具使用

测试工具下载下载地址:mqtt client测试工具含启动jar包或者去官方地址下载:mqtt client测试工具自己选择版本,我的是win10系统选择org.eclipse.paho.ui.app-1.0.2-win32.win32.x86_64.zip下载完成后解压,得到页面效果如下:点击【paho.ini】,修改启动jar包为【mqtt-spy-1.0.0.jar】如下图所示:最后点击【paho.exe】进入启动页面:新建连接及配置按照格式输.

2022-03-18 14:54:30 14916

原创 【docker安装步骤】

1、更新安装包yum update2、卸载可能存在的docker应用yum remove docker docker-common docker-selinux docker-engine3、安装基本的软件包yum install -y yum-utils device-mapper-persistent-data lvm24、设置yum软件源yum-config-manager --add-repo https://download.docker.com/linux/c

2022-03-17 15:43:37 1400

原创 集合判断是否为空isEmpty()与==null的区别

前言Java中的空指针异常确实是令人头疼的问题,今天抽空详细梳理下关于集合判断是否为空isEmpty()与==null的区别,尽量避免触发空指针异常。集合之ListisEmpty()测试代码如下:List<String> list = new ArrayList<>();System.out.println("判断list是否为空:"+ list.isEmpty());list = null;System.out.println("判断list是否为n

2022-03-11 15:13:25 16543 1

k8s部署前后端分离项目.doc

k8s+docker部署前后端分离项目详细步骤; 服务器环境:k8s为一个主节点,两个子节点,还使用了harbor远程仓库; 前后端分离项目为SpringBoot+vue,其中包含两个jar包一个dist.zip压缩包;

2022-05-11

mqtt client测试工具

mqtt client测试工具

2022-03-18

dsm项目初始化sql文件

dsm项目初始化sql文件

2022-02-16

jar包启动脚本start.sh

自定义shell脚本,实现项目的启动,停止,状态

2021-07-15

SecureCRT.rar

SecureCRT工具

2021-06-05

AraxisMerge_42894.zip

代码对比工具

2021-05-20

空空如也

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

TA关注的人

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