
java
文章平均质量分 75
zpzkitt
这个作者很懒,什么都没留下…
展开
-
提高测试覆盖率的小工具
最近公司在推进研发自测的功能,首先第一点就是要提高测试覆盖率,只有测试覆盖率上去了才能尽可能的找出隐藏的问题和bug。所以就有了一个如何最方便高效的提高测试覆盖率的问题。测试覆盖率检测工具有很多常用的idea就有这个功能,原理也很简单就是跑一遍测试然后记录这些测试跑过的代码有哪些,没跑过的有哪些然后计算一个比例。想法也就按照这个思路来,就是构造尽可能全的场景参数,然后调用待测试方法。下面的代码就是一个构造参数笛卡尔积的方法,这个方法主要功能就是把一个参数类里的所有的参数的可能性构造出多个参...原创 2020-08-13 10:33:17 · 514 阅读 · 0 评论 -
java时间计算同比环比周的问题
问题描述:在业务中会有传不同日期格式,1、有天(2020-02-29),周(2020-03第三周),月(2020-02二月份),2、同时需要计算对应的去年同比时间和环比(就是上一个时间段,周的2020-03环比就是2020-04)时间,3、同时还要获取周和月的开始时间和结束时间,比如周2020-02的开始是2020-01-06,结束时间是2020-01-12,4、周的第一天从周...原创 2020-03-18 17:16:23 · 4736 阅读 · 0 评论 -
自定义注解如何实现从配置文件解析参数?
问题分析平时在使用@Value和@PropertySource两个注解(下面分别用V和P代替)时都可以在value中使用${xxx.xxx}方式获取配置文件的值,这样可以使程序根据配置文件动态设置一些值,比如数据库连接的url,username,password或者环境变量等。但是有时候自己实现的切面注解中也想能使用这样的方式动态配置,这就需要spring环境变量的解析支持了。这两个注...原创 2019-12-06 11:56:56 · 4835 阅读 · 9 评论 -
JVM虚拟机如何枚举根节点:原理、安全点和安全区域
枚举根节点——可作为GC Roots的节点可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)枚举根节点——确保一致性的快照这项分析工作必须在一个能确保一致性的快照中进行——在整个分析期间整个执行系统看起来就像被冻结在某个时间点上,不可以出现分析过程中对象引用关系还在不断变化的情况,该点不满足的话分析结果准确性就无法得到保证。...转载 2019-09-29 19:44:52 · 634 阅读 · 1 评论 -
spring @Profiles和@PropertySource两种根据环境切换配置文件方式
使用@PropertySource注解加载配置文件,并制定解析配置文件的解析器默认是properties,可以自己指定使用Yml配置文件解析器。@SpringBootApplication@PropertySource(value = "classpath:config-${spring.profiles.active}.yml", encoding = "UTF-8",...原创 2019-08-14 20:13:52 · 3706 阅读 · 0 评论 -
spring @schedule注解动态配置时间间隔
动态配置时间间隔是通过自己实现的任务注册到任务调度实现的,并在每次调度的时候更改下次调度时间间隔,如果任务阻塞或者挂掉了就不会再被调度了,如果设置时间过长,到下次调度就需要等待很长时间。import org.springframework.beans.factory.annotation.Autowired;import org.springframework.scheduling.Tri...原创 2019-08-14 18:28:38 · 3434 阅读 · 1 评论 -
CAS与volatile关系以及如何保证原子性
一、CAS操作在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制,...转载 2019-07-19 18:37:26 · 6196 阅读 · 0 评论 -
Java安全——安全管理器、访问控制器和类装载器
本文转载自:云栖社区 尊渊 Java安全——安全管理器、访问控制器和类装载器安全管理器:SecurityManager安全管理器在Java语言中的作用就是检查操作是否有权限执行。是Java沙箱的基础组件。我们一般所说的打开沙箱,也是加-Djava.security.manager选项。其实日常的很多API都涉及到安全管理器,它的工作原理一般是:请求Java API Jav...转载 2019-04-22 21:00:55 · 354 阅读 · 0 评论 -
java ThreadLocal深入分析
一、ThreadLocal是什么平时使用最多的应该是局部变量和全局变量,threadlocal就可以看成是一个局部变量生产工厂,这个类型局部变量在很多未知的线程中都会用到。二、ThreadLocal怎么用threadlocal在初始化的时候回创建一个局部ThreadLocalMap对象,因为每个线程都这个对象只是值为null,当需要的时候就可以初始化使用,ThreadLocalMap是...原创 2019-04-09 21:52:22 · 219 阅读 · 0 评论 -
java用Runtime执行系统命令遇到的问题
java执行系统命令的工具,Runtime.getRuntime().exec(),这个工具里面的坑还是不少的,大部分网上已经分析了,我遇到一个没有在网上找到的。首先说一下这个坑,在command中如果参数的内容中有空格、tab、换行符、回车符,就会执行失败,例如:grep "abc def" -r -n ./这是因为exec方法使用的是StringTokenizer对command分割的。...原创 2019-01-03 20:07:49 · 2593 阅读 · 0 评论 -
Spring MVC post 请求415错误
错误描述:最近有个项目需要重写,web后台从c++改成java,有个接口是post请求的,我就自然用的是json格式的解析参数,但是调试的时候一直是没有任何日志,连方法都没有进,只有在测试时返回的415错误。http 415错误:HTTP请求415错误 – 不支持的媒体类型(Unsupported media type)通常有以下情况:1:检查你的 http 请求头信息,比如 因为...原创 2018-01-17 18:44:08 · 2986 阅读 · 0 评论 -
Spring处理x-www-form-urlencoded方式
最近在重写一个项目时遇到了许多奇葩问题,这个项目是一个简单的web后台项目,基本上全都是增删改查数据库的操作。这里面遇到几个用spring接收前端post请求的接口。基本情况是post请求有四种data参数格式,这些基础知识在我另一片博文中提到过这里就不废话了。主要是因为前端有两个地方用到了这个接口,但是在用这个接口的时候两个地方用法都不同,奇葩的c++居然还都解析成功了(其实因为c++...原创 2018-01-31 15:54:47 · 35399 阅读 · 4 评论 -
spring boot 对模板类参数的校验
模板类参数上面的请求参数是一个模板类BasicRequest<>,在做参数校验时需要对模板类中的具体类ParamsA做参数校验。需要在模板类的模板属性加上@Valid注解,这样data属性中校验才会生效,下面是实例代码:public class BasicRequest<T> { private String message; @Valid ...原创 2018-11-28 14:27:15 · 425 阅读 · 0 评论 -
Java的三种代理模式
1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明...转载 2018-12-01 17:13:47 · 146 阅读 · 0 评论 -
java线程池thread pool使用总结
一、线程池的用途线程池主要是为了解决以下几个问题:1、为多线程执行琐碎的任务提供支持2、避免线程创建销毁过程的资源消耗3、控制资源的使用,根据实际情况合理高效利用资源4、二、java提供的线程池结构java jdk中提供了线程池的创建接口,已经可以很方便对线程的管理和使用了。上图是线程池和调度线程的UML图1、创建线程就是用ThreadPoolExecuto...原创 2018-12-14 21:01:48 · 10254 阅读 · 0 评论 -
Spring AOP(面向切面编程)详解
在闲逛时看到了这篇对Spring AOP介绍的文章,写的很清晰易懂,并且还可以对动态代理和spring的service层有更深的了解,转载学习一下,原文地址AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层...转载 2018-12-01 11:43:16 · 191 阅读 · 0 评论 -
Java学习及进阶图谱
一、源码分析常用设计模式 Proxy代理模式 Factory工厂模式 Singleton单例模式 Delegate委派模式 Strategy策略模式 Prototype原型模式 Template模板模式Spring5 IOC容器设计原理及高级特性 ...转载 2019-01-31 11:31:17 · 509 阅读 · 0 评论 -
java 接口中用private、protected、public、default和static修饰方法和变量
通常使用java 的接口时都是不带修饰符的public interface Test { int a = 0; void test();}其实这个里面有好多修饰符都是默认省略掉了。正确的类型应该是:public interface Test { public static final int a = 0; public void test();}public...原创 2017-11-09 18:12:57 · 14294 阅读 · 2 评论