Java
文章平均质量分 58
Sword_Shi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Velocity如何对变量中的引号特殊字符进行转义
Velocity是一个基于Java的模板引擎,与Freemarker类似。相较于Freemarker更轻量,但带来的问题就是功能不如Freemarker强大,所以实际项目中可能会更倾向于用Freemarker,这里不作过多介绍了,本文主要记录一下在使用中碰到的要对引号特殊字符进行转义的问题。原创 2023-07-18 20:42:00 · 2236 阅读 · 0 评论 -
记功能迁移导致的事务回滚问题
记功能迁移导致的事务回滚问题原创 2023-01-05 20:22:21 · 430 阅读 · 0 评论 -
5个编写技巧,有效提高单元测试实践
如果对一段代码进行单测,发现难于编写,需要编写的case非常多,或者当前的测试框架无法mock依赖对象,需要依赖其他具备高级特性的测试框架时,我们需要回过头来审视代码,是否编码设计得不合理,导致代码的可测性不高。这是我们经常会遇到的境况,当要重构不是非常熟悉的祖传代码,又没有充足的测试资源保障的时候,重构引入缺陷的风险还是很大的。项目中依赖关系往往往非常复杂,单元测试Mock框架做的事就是模拟被测试类的依赖项,提供预期的行为和状态,使得我们的单测可以聚焦在被测试类本身,而不必受到依赖项的复杂度的影响。转载 2022-11-17 10:43:22 · 374 阅读 · 0 评论 -
阿里开源限流、降级工具Sentinel介绍与使用
Sentinel: 分布式系统的流量防卫兵随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。原创 2022-05-31 21:05:00 · 1458 阅读 · 0 评论 -
Bean转换工具ma.glasnost.orika介绍和使用
日常开发中肯定免不了要对Bean对象进行映射或是类型转换,比如常用的Spring的BeanUtils,cglib的BeanCopier这种对象属性复制的工具,可以省去da'lian原创 2021-06-14 21:15:10 · 5165 阅读 · 0 评论 -
通过jdbc手动连接mysql测试示例
本篇记录一个比较基础的例子,手动通过jdbc连接mysql,有时候在测试环境进行某些测试还是不错的原创 2021-04-26 20:34:02 · 410 阅读 · 0 评论 -
对Apache StrSubstitutor 和 FreeMarker的个人理解以及空值null问题处理
概述:本文针对在java代码中的使用,关于两个组件的具体使用,本篇就不详细介绍了,大家可以自行网上搜索;这里说一下本人对于这两个组件的简单理解:StrSubstitutor优点:更轻量(相当于String的一个工具类,对string.replace进行了优化),使用简单缺点:单纯的字符串替换,不能像FreeMarker那样有语法,支持运算和函数FreeMarker优点:有语法支持,功能更强大,可以支持函数和运算,条件判断等缺点:使用较重,需要注意对Template进行缓存,使..原创 2021-02-28 23:15:23 · 692 阅读 · 0 评论 -
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 · 653 阅读 · 0 评论 -
Mvel表达式的基础使用和自定义方法运用
Mvel是一种易于使用、灵活且强大的表达式解析器,有点像是将我们的自然语言解析为计算机语言。留坑参考文章中的例子讲的不错,可以参考参考:https://www.liangzl.com/get-article-detail-164957.html...原创 2020-11-30 23:29:03 · 9851 阅读 · 5 评论 -
分布式锁的多种实现方式分析
原创地址:http://www.54tianzhisheng.cn/2018/04/24/Distributed_lock/分布式锁看这篇就够了什么是锁?在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发转载 2020-07-31 17:59:56 · 259 阅读 · 0 评论 -
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 · 7253 阅读 · 1 评论 -
UML图常见箭头含义——IDEA中diagram解读
在看一些技术博客的时候,经常会见到博客里画上很多uml图。因为经常会被这几种表达关系的箭头搞混,这里我就把常见的6种箭头表达的含义理一下。泛化概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在java中用来表示继承的关系。表示方法:用实线空心三角箭头表示。实现概念:实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述表示方法:空心三角形箭头的虚线,实现类指向接口依赖概念:是一种使用的关转载 2020-07-09 14:14:30 · 2648 阅读 · 0 评论 -
Google Guava:EventBus源码解析和发布订阅消息的简单使用示例
EventBus是Guava中对于事件发布订阅的功能实现,是设计模式中的发布/订阅模式的实现方案。原创 2020-06-21 22:49:10 · 668 阅读 · 1 评论 -
使用jmeter进行压测
配置http请求:https://www.cnblogs.com/stulzq/p/8971531.html原创 2020-05-31 20:19:30 · 29746 阅读 · 3 评论 -
由修复历史缺陷引发的思考——输入控制和修复补丁,升级兼容的重要性
在系统中发现了这样一个历史遗留问题:从系统中导出的数据,会将多余数据导出,这些多余数据在导入系统中后,可能会导致系统出错。同时,该问题在许多个历史版本中都存在,因为有部分用户用的历史版本,并且无法升级,所以需要在各个历史版本中同样进行修复;修复方式:若系统还没有发布,可以直接从导出的源头上控制;但是,更好的方案是,在导入时进行处理,从系统入口控制,更能保证输入到系统中的数据的准确性。...原创 2020-02-05 20:50:36 · 249 阅读 · 0 评论 -
小心使用数值类型的自动转换,可能发生数据溢出导致计算结果错误。
如果直接使用return返回最终计算值,如下方代码中的情况,要将最终要返回的数字类型放到计算表达式的最开始,防止在计算过程中数字计算出现溢出,导致最终计算结果错误。(当然,大数字计算,可以用BigInteger, 金额用Decimal等) /** * 根据单位,返回毫秒数 * * @author Dangelo * @date 2019/12...原创 2019-12-29 23:30:43 · 1713 阅读 · 0 评论 -
线程、并发相关接口:Callable接口、Runable接口、Future接口
简单来讲:Runable是较早的线程接口,缺点是接口是void,没有返回值。Callable是后来在jdk1.5版本中补充的,有返回值, 如返回FutureTask(实现了Future接口),可通过future.get()方法,获取返回值。以下是网上看到的讲的不错的文档,供参考:http://www.threadworld.cn/archives/39.htmlhttps://...原创 2019-02-26 17:50:32 · 380 阅读 · 0 评论 -
Mybatis映射pojo报错,org.apache.ibatis.reflection.ReflectionException: Error instantiating class....
报错信息类似如下:org.apache.ibatis.reflection.ReflectionException: Error instantiating class.... java.lang.NoSuchMethodException: cn.pojo.Rules.<init>(......原因:没有找到对应构造方法,导致查询到的数据转换成pojo时报错。解...原创 2019-10-22 17:39:09 · 2005 阅读 · 0 评论 -
记一次OOM处理过程:OutOfMemoryError: Java heap space
项目上在使用系统的某个功能时,系统报错,日志显示 OutOfMemoryError: Java heap space内存溢出了,接下来就要分析原因了。从客户现场要来了错误日志、线程堆栈状态信息以及OOM时的JVM内存快照(可通过启动命令中加 -XX:+HeapDumpOnOutOfMemoryError ,在发生OOM时自动dump内存状态)。问题排查:首先通过错误日志定位到本次操作...原创 2019-09-15 21:22:49 · 1156 阅读 · 0 评论 -
使用poi导出生成Excel,中文名乱码问题解决
使用poi导出生成Excel,中文名乱码问题解决:使用URLEncoder指定编码格式进行转换。String sheetName = URLEncoder.encode("中文文件名", "UTF-8");功能:导出列表数据生成excel文件。Controller: /** * 导出商品类目列表 * * @author Dangelo...原创 2019-07-28 16:03:08 · 7938 阅读 · 0 评论 -
java.lang.UnsupportedOperationException——Collections.emptyList()和Arrays.asList 源码分析
某天碰到这样一个报错:java.lang.UnsupportedOperationException不支持的操作异常,然后就去检查代码,发现了这个List方面的坑。同事的代码中有一个方法A中在其中一种情况下,return Collections.emptyList(); 然后他在另一个方法B中调用了这个A方法,对A方法返回的结果进行了继续操作,比如 list.add("xxx");这个...原创 2019-06-30 15:16:49 · 889 阅读 · 0 评论 -
Google Guava 中Multimap的简单应用
在工作中,我们会经常需要用到如下类似的结构:Map<String, Set<Stirng>> map = new HashMap<>();Map<String, List<String>> map2 = new HashMap<>();在Google Guava中,对这种结构的map进行封装, 提供了接口Multi...原创 2019-03-16 15:28:42 · 2370 阅读 · 0 评论 -
Java 8 (jdk1.8) 重要新特性
Java 8是一个重大的版本更新,里面包含了多种非常有用的新内容,包括lambda表达式、方法引用、函数式接口、流api等。尤其是lambda表达式和流api,我们在对Collection过滤、排序等操作时,可以经常用到。这里分享一点个人认为比较重要和常用的内容。Lambda表达式Lambda允许把函数作为一个方法的参数(将函数作为参数传递进方法中)。语法:一个lambda可以由用...原创 2019-02-22 18:19:08 · 284 阅读 · 0 评论
分享