自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逆水行舟

今天你划小船了吗?

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

原创 java.security.InvalidKeyException: Illegal key size or default parameters SM2加解密执行异常

执行后报错:java.security.InvalidKeyException: Illegal key size or default parameters at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026) at javax.crypto.Cipher.init(Cipher.java:1245) at javax.crypto.Cipher.init(Cipher.java:1186)替换jar后,重新执行代码,成功,问题解决!

2024-08-13 19:50:09 397

原创 Velocity如何对变量中的引号特殊字符进行转义

Velocity是一个基于Java的模板引擎,与Freemarker类似。相较于Freemarker更轻量,但带来的问题就是功能不如Freemarker强大,所以实际项目中可能会更倾向于用Freemarker,这里不作过多介绍了,本文主要记录一下在使用中碰到的要对引号特殊字符进行转义的问题。

2023-07-18 20:42:00 1664

原创 记功能迁移导致的事务回滚问题

记功能迁移导致的事务回滚问题

2023-01-05 20:22:21 307

转载 5个编写技巧,有效提高单元测试实践

如果对一段代码进行单测,发现难于编写,需要编写的case非常多,或者当前的测试框架无法mock依赖对象,需要依赖其他具备高级特性的测试框架时,我们需要回过头来审视代码,是否编码设计得不合理,导致代码的可测性不高。这是我们经常会遇到的境况,当要重构不是非常熟悉的祖传代码,又没有充足的测试资源保障的时候,重构引入缺陷的风险还是很大的。项目中依赖关系往往往非常复杂,单元测试Mock框架做的事就是模拟被测试类的依赖项,提供预期的行为和状态,使得我们的单测可以聚焦在被测试类本身,而不必受到依赖项的复杂度的影响。

2022-11-17 10:43:22 286

原创 Hive获取当天0点时间,条件查询某一天数据

获取当天0点的时间:select from_unixtime(unix_timestamp(),'yyyy-MM-dd 00:00:00');执行结果为:获取当天0点的秒级时间戳:select unix_timestamp(from_unixtime(unix_timestamp(),'yyyy-MM-dd 00:00:00'));执行结果:将时间作为条件,增量同步数据,比如将创建时间(格式为yyyy-MM-dd HH:mm:ss)作为增量导入的判断条件:查询创建时间在前一天0点到今天0点之间的数据sele

2022-07-08 17:10:21 3161

原创 Springboot Druid 启动报错:Failed to configure a DataSource: ‘url‘ attribute is not specified, 问题解决方案

Springboot Druid 启动报错:Error creating bean with name 'sqlSessionFactory': Requested bean is currently in creation: Is there an unresolvable circular reference?Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource cou

2022-06-07 21:45:00 1748

原创 阿里开源限流、降级工具Sentinel介绍与使用

Sentinel: 分布式系统的流量防卫兵随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。

2022-05-31 21:05:00 1278

转载 Linux常用命令总结

作者:Panda转自:http://siye1982.github.io/2016/02/25/linux-list/虽然平时大部分工作都是和Java相关的开发, 但是每天都会接触Linux系统, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行环境中. 自己记忆力不好, 很多有用的Linux命令不能很好的记忆, 现在逐渐总结一下, 以便后续查看。基本操作Linux关机,重启#关机shutdown-hnow#重启shutdown-rnow查看系统,C...

2022-02-09 14:19:30 268

原创 tk mybatis报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决方案

背景:在应用A中引入组内另一个应用B的SDK时,出现该报错,而且有一个比较奇怪的现象:使用mybatis内置的方法(比如selectByPrimaryKey,selectByExample之类)时,功能正常,不报错,但是如果调用的dao方法是自己在mapper.xml中写的sql,就会出现标题中的错误。解决:网上的各种方法并不适用于该情况,经过检查,application.properties和mybatis-config.xml之类的配置文件中配置都正常;并且该问题是在引入新的sdk时才出现的

2022-01-05 18:27:54 936

原创 Bean转换工具ma.glasnost.orika介绍和使用

日常开发中肯定免不了要对Bean对象进行映射或是类型转换,比如常用的Spring的BeanUtils,cglib的BeanCopier这种对象属性复制的工具,可以省去da'lian

2021-06-14 21:15:10 4707

原创 通过jdbc手动连接mysql测试示例

本篇记录一个比较基础的例子,手动通过jdbc连接mysql,有时候在测试环境进行某些测试还是不错的

2021-04-26 20:34:02 274

原创 对Apache StrSubstitutor 和 FreeMarker的个人理解以及空值null问题处理

概述:本文针对在java代码中的使用,关于两个组件的具体使用,本篇就不详细介绍了,大家可以自行网上搜索;这里说一下本人对于这两个组件的简单理解:StrSubstitutor优点:更轻量(相当于String的一个工具类,对string.replace进行了优化),使用简单缺点:单纯的字符串替换,不能像FreeMarker那样有语法,支持运算和函数FreeMarker优点:有语法支持,功能更强大,可以支持函数和运算,条件判断等缺点:使用较重,需要注意对Template进行缓存,使..

2021-02-28 23:15:23 521

原创 log未按照预期输出错误日志的问题排查

catch (Exception e){ log.error("创建业务方失败:{}",e); return false;}这种写法是错误的,占位符不起作用,只会打印e的堆栈信息log.error("创建失败{}", param, e);https://www.cnblogs.com/lingyejun/p/9366533.html...

2021-01-12 15:31:09 449

原创 Mvel表达式的基础使用和自定义方法运用

Mvel是一种易于使用、灵活且强大的表达式解析器,有点像是将我们的自然语言解析为计算机语言。留坑参考文章中的例子讲的不错,可以参考参考:https://www.liangzl.com/get-article-detail-164957.html...

2020-11-30 23:29:03 8565 5

原创 Kryo序列化介绍以及在Springboot Redis中的使用

1、Kryo的简介(摘自:https://www.cnblogs.com/hntyzgn/p/7122709.html)Kryo 是一个快速序列化/反序列化工具,其使用了字节码生成机制(底层依赖了 ASM 库),因此具有比较好的运行速度。Kryo 序列化出来的结果,是其自定义的、独有的一种格式,不再是 JSON 或者其他现有的通用格式;而且,其序列化出来的结果是二进制的(即byte[];而 JSON 本质上是字符串String);二进制数据显然体积更小,序列化、反序列化时的速度也更快。...

2020-08-28 11:41:03 3379

原创 Mysql REPEATABLE-READ 可重复读事务隔离级别 MVCC下的幻读问题验证

我们知道在RR可重复读事务隔离级别下,是存在幻读问题的。但是在网上看到有一种说法是在Mysql的RR事务隔离级别下,mysql通过MVCC(多版本并发控制)解决了幻读问题的。所以就查了下资料,决定通过实践来验证一下这个问题。实践是检验真理的唯一标准!这里先说结论:Mysql在可重复读事务隔离级别下,是存在幻读问题的。验证过程:先查看下当前数据库的事务隔离级别,确认为REPEATABLE-READ级别。创建测试表CREATE TABLE `test` ( `id`..

2020-08-12 17:32:42 1117 2

转载 分布式锁的多种实现方式分析

原创地址:http://www.54tianzhisheng.cn/2018/04/24/Distributed_lock/分布式锁看这篇就够了什么是锁?在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发

2020-07-31 17:59:56 178

原创 org.dom4j.DocumentException: Error on line 1 of document : 前言中不允许有引用。——base64加解密踩坑

存在一个接收xml内容的接口,但是入参要求xml内容经过base64转码后才可以正常访问。通过前端代码对xml内容进行base64转码后请求接口,没有问题。但是在后端通过postman调试的时候,手动修改xml内容,由于入参需要base64转码,所以就使用了在线转码的网站进行转码。万万没想到在这里踩坑了,在网上随便使用了一个搜索到的在线转码网站(站长工具——不要用这个!!), 结果转码后的xml入参,直接导致接口报错:org.dom4j.DocumentException: Error on line

2020-07-27 15:51:03 2856

转载 XXE外部实体注入漏洞的测试和修复——Java

测试过程:代码检测时发现存在XXE问题,可通过自行改造的xml内容,请求存在XXE问题的接口,测试该漏洞。比如使用如下xml,通过读取document中 testText这个Element,即可获取到test.json中的文件内容:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE entity [ <!ENTITY file SYSTEM "file:///C:/Users/xxx/Desktop/test.json".

2020-07-27 14:40:58 5941 1

转载 UML图常见箭头含义——IDEA中diagram解读

在看一些技术博客的时候,经常会见到博客里画上很多uml图。因为经常会被这几种表达关系的箭头搞混,这里我就把常见的6种箭头表达的含义理一下。泛化概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在java中用来表示继承的关系。表示方法:用实线空心三角箭头表示。实现概念:实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述表示方法:空心三角形箭头的虚线,实现类指向接口依赖概念:是一种使用的关

2020-07-09 14:14:30 2406

原创 Google Guava:EventBus源码解析和发布订阅消息的简单使用示例

EventBus是Guava中对于事件发布订阅的功能实现,是设计模式中的发布/订阅模式的实现方案。

2020-06-21 22:49:10 567 1

原创 springboot使用拦截器Interceptor拦截指定url,进行对应操作

拦截器拦截urlimport org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSe

2020-06-14 21:49:45 17237

原创 Java高并发程序设计——循环栅栏CyclicBarrier

循环栅栏CyclicBarrier是多线程并发控制实用工具。其功能跟CountDownLatch相似,可以理解为时增强版可循环使用的CountDownLatch。为什么这个工具叫循环栅栏这个名字?是因为该工具的功能就是当一个线程调用了cyclicBarrier.await()方法时,就会被栅栏拦住,进入等待执行状态,直到满足栅栏要求数量的线程到达栅栏时,才会对这一批线程一起放行。放行后有其他线程到达栅栏,那么就会进入新一轮的等待和放行(可循环使用)。比如说该栅栏CyclicBarrier设置阈值为5,那

2020-05-31 22:08:55 326

原创 Java高并发程序设计——倒计时器CountDownLatch

倒计时器CountDownLatch,可以按照字面意思理解,就是用于线程执行倒计时的工具类,当倒计时为0时,等待倒计时结束的线程才会执行。3,2,1,0, 发射!使用场景:假设线程A需要在线程B,C,D执行后才允许执行,那么就可以使用CountDownLatch。指定CountDownLatch的计数为3,每当一个线程执行执行完成后,调用countDownLatch.countDown()方法,倒计时减一。当BCD都执行完成后,CountDownLatch计数为0。此时等待倒计时完成的线程A(即调用co

2020-05-31 21:33:37 858

原创 Java高并发程序设计——信号量Semaphore

信号量Semaphore,可以理解为相当于一个固定数量的资源池、线程池,允许最多指定阈值数量的线程同时访问某个资源。在构造信号量对象时,必须指定信号量的准入最大阈值。其主要构造参数如下:public Semaphore(int permits)public Semaphore(int permits, boolean fair) // fair 指定是否公平其主要方法有:/** * 尝试准入许可,若无法获得,则线程会等待,直到有线程释放一个许可或者当前线程中断。 */pub

2020-05-31 21:09:28 321

原创 使用jmeter进行压测

配置http请求:https://www.cnblogs.com/stulzq/p/8971531.html

2020-05-31 20:19:30 29431 3

原创 解决 mybatis generator 覆盖生成mapper.xml时,xml中内容重复的问题

问题:使用mybatis generator生成mapper.xml时,如果原来已经存在该Mapper.xml,再次生成时(比如开发过程中修改了数据库,需要重新生成pojo和mapper),会出现Mapper.xml中内容重复的问题。、解决方法:高版本mybatis(如1.3.7)中,已经修复该问题了, 如果使用的是低版本的mybatis,可以参考高版本mybatis的代码,自行改造m...

2020-05-07 22:31:11 3004

原创 ssh远程连接linux连接不上,session is down, Write failed: Broken pipe,su: 无法设置用户ID: 资源暂时不可用

现象:非root用户,用FinalShell远程连接linux服务器,连接后里面断开,提示信息:连接断开session is down排查方法:用其他用户尝试登录,发现可以正常登录。由于报错信息太少,使用有sudo权限的用户,尝试登录。$ ssh -v username@10.100.xx.xxx报错:Write failed: Broken pipe$ su...

2020-05-06 22:24:22 3608

原创 计算给定二叉树的所有左叶子之和。

计算给定二叉树的所有左叶子之和/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class S...

2020-04-23 22:57:23 859

原创 二叉树的深度遍历(前序遍历、中序遍历、后序遍历),广度遍历(层序遍历) -- java实现

接前一篇二叉树的创建,https://blog.csdn.net/jian876601394/article/details/105478477创建好二叉树后,这次写一下二叉树的深度遍历(前序、中序、后序) @Test public void test() { /** * 1 * 2 ...

2020-04-13 23:51:51 188

原创 二叉树的创建(数组转二叉树) java

将一个数组转换成一个二叉树的java实现,如下:import org.junit.Test;import java.util.ArrayList;import java.util.List;/** * 二叉树的生成 * * @author DangerShi */public class BTreeBuilder { class TreeNode { ...

2020-04-12 22:56:41 4494 5

原创 java.sql.SQLSyntaxErrorException:The size of BLOB/TEXT data inserted in one transaction is greater

背景:同事在上传文件时碰到这样一个数据库报错,来求助。上传文件大小为10M。java.sql.SQLSyntaxErrorException:The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size.解决方式:其实这个问题网上已经有很好的答案了,问题原...

2020-03-12 20:30:06 2503

原创 ORA-01017: invalid username/password; logon denied

ORA-01017: invalid username/password; logon denied本地启动项目报错, ORA-01017: invalid username/password; logon denied直接看错误信息, 无效的用户名或密码出现这个问题的原因:其实可能只是你不小心写错了用户名或者密码(然而自己核对几遍也没发现错误的地方-_-||,可能...

2020-03-11 18:53:03 2218

原创 数据库事务隔离级别 总结,注意幻读问题!

关于数据库事务隔离级别的内容,整理复习一下。事务的四个特征ACID:原子性Atomicity,一致性Consistency、隔离性Isolation、持久性Durability,数据库事务的隔离级别由低到高,以及对应存在的问题,见下表: 级别 脏读 不可重复读 幻读 READ-UNCO...

2020-03-10 23:14:14 216

原创 vue前端模块打包失败处理方法

如果项目打包时前端模块打包失败,请按照以下方式检查,看是否是这种情况,可能会解决前端打包问题:检查项目路径下是否有yarn.lock和package-lock.json这两个文件,若同时存在这两个文件,可能是这里导致的打包失败。 造成这个问题的原因,是因为前端代码可能由多位前端共同开发,有人使用yarn打包,有人使用npm打包。 若决定使用npm打包,则删掉yarn.lock文件;若决定使...

2020-03-01 14:12:28 5914

原创 使用插件 frontend-maven-plugin,通过maven一键打包前端后端

使用maven插件 frontend-maven-plugin (https://github.com/eirslett/frontend-maven-plugin) , 打包前端。若使用Jenkins打包,服务器上无法直接访问官网,或者其他不方便访问的情况, 可以使用国内淘宝镜像,以下为pom.xml中的主要配置:<?xml version="1.0" encoding="U...

2020-02-20 17:05:16 12801 1

原创 由修复历史缺陷引发的思考——输入控制和修复补丁,升级兼容的重要性

在系统中发现了这样一个历史遗留问题:从系统中导出的数据,会将多余数据导出,这些多余数据在导入系统中后,可能会导致系统出错。同时,该问题在许多个历史版本中都存在,因为有部分用户用的历史版本,并且无法升级,所以需要在各个历史版本中同样进行修复;修复方式:若系统还没有发布,可以直接从导出的源头上控制;但是,更好的方案是,在导入时进行处理,从系统入口控制,更能保证输入到系统中的数据的准确性。...

2020-02-05 20:50:36 194

转载 ORA-28001: the password has expired 解决方法

Oracle提示错误消息 ORA-28001: the password has expired,是由于Oracle11G的新特性所致,Oracle11G创建用户时缺省密码过期限制是180天(即6个月),如果超过180天用户密码未做修改则该用户无法登录。Oracle公司是为了数据库的安全性默认在11G中引入了这个默认功能,但是这个默认的功能很容易被DBA或者是开发人员给...

2020-02-05 20:04:47 5902 1

原创 java.sql.SQLException: Invalid Oracle URL specified——application.yml 配置文件中Oracle jdbcUrl正确配置格式

开门见山,直接给出推荐配置格式,这种方式使用serviceName,支持集群。推荐格式: Oracle JDBC Thin using a ServiceName:jdbc:oracle:thin:@//host:port/service_nameExample:jdbc:oracle:thin:@//localhost:1521/orcl注意这里的格式,@ 放在 // 前面,por...

2020-01-21 17:42:30 4018

原创 小心使用数值类型的自动转换,可能发生数据溢出导致计算结果错误。

如果直接使用return返回最终计算值,如下方代码中的情况,要将最终要返回的数字类型放到计算表达式的最开始,防止在计算过程中数字计算出现溢出,导致最终计算结果错误。(当然,大数字计算,可以用BigInteger, 金额用Decimal等) /** * 根据单位,返回毫秒数 * * @author Dangelo * @date 2019/12...

2019-12-29 23:30:43 1610

空空如也

空空如也

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

TA关注的人

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