Java技术
Harryfin
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
获取所有Header和QueryParam的最佳方法
网上逛了一圈,发现提到的方法都是首先在Controller注入HttpServletRequest,然后再通过request.getHeaderNames()遍历一遍,再通过request.getHeader()来获取相应的值。其实有一个更方便的方法。但你是否知道,其实这两个注解,还可以用来一次获取所有Header和QueryParam的呢?原创 2023-08-17 17:47:10 · 504 阅读 · 0 评论 -
Gradle实现Maven中的dependencyManagement
在Maven中,我们可以通过dependencyManagement把Jar包版本进行统一管理,以后各项目引用组件时,就不用标注组件的版本号了。这为解决多项目版本冲突问题带来了很大的便利。那么在Gradle中,是否也可以实现Maven的这个特性呢?答案是肯定的。看了网上的一些资料,发现有些方法比较绕,感觉思路不是很对。其实在官网上就有介绍这个问题,在这里也和大家再做一个分享。1)创建一个项目,里面只需一个build.gradle文件即可。待会我们把要管理的依赖及其版本都封装到这个gradle脚本中,最后把它原创 2022-07-04 23:20:46 · 5138 阅读 · 1 评论 -
升级JUnit5的注意事项
主要给用惯JUnit4的童鞋提个醒,不然就会出现一系列摸不着头脑的问题,因为JUnit5的注解变化很大1、@RunWith没了,改为@ExtendWith@ExtendWith(MockitoExtension.class)class SomeTest { // test something...}2、@BeforeClass和@AfterClass没了,改为@BeforeAll和@AfterAll@BeforeAllpublic static void init() {原创 2021-12-25 00:33:11 · 613 阅读 · 0 评论 -
Lombok是否会破坏对象的封装性
前几天,在网上看到一些评论,说:Lombok的@Data注解,会把所有属性的get/set方法都生成出来,从而把不必要暴露的属性也暴露出来,破坏了对象的封装性这句话对不对呢?对了一半,确实@Data会把所有属性的get/set方法都进行生成。但是,破坏封装性是可以避免的,有这样忧虑是因为Lombok只学了一半其实,我们可以在不想暴露的属性上,添加@Getter注解,把它的AccessLevel修改下就行了,例如说:@Datapublic class MyData { pri原创 2021-10-22 10:28:01 · 286 阅读 · 0 评论 -
新版ECharts实现“暂无数据”的完美解决方案
在旧版ECharts中,此功能是通过配置noDataLoadingOption来实现的,但此配置项在新版中已经被移除综合网上找到的一些方法,大致如下:借用Title来显示“暂无数据” 通过showLoading的方法来显示 通过graphic来配置第一种方法属于取巧的方法,如果不使用统计图自带标题的话,是没问题的。但如果使用了标题的话,就会产生冲突了title: { show: data.length == 0, // 没数据才显示 extStyle: {原创 2021-09-22 14:20:34 · 20614 阅读 · 6 评论 -
一图记住Parameter和Argument的区别
喜欢读框架源代码的童鞋,对这两个单词肯定不会陌生。但这框架里面一会Parameter,一会Argument,两单词的字面意思又都是“参数”,可能有些童鞋就搞昏头了其实这两个“参数”是有区别的。“形参”和“实参”相信每一个程序猿都听过,Parameter(Param)对应的正是“形参”,而Argument(Arg)对应的是“实参”我们来看看实际例子,就很容易记住它们了:Method m = String.class.getMethod("indexOf", String.class, int.c原创 2020-11-05 14:41:35 · 2310 阅读 · 0 评论 -
CLASSPATH环境变量,没必要再配置了
最近有个项目在部署时,出现了一个奇怪的问题:本地调试都是正常的,部署到服务器后就出现了找不到配置文件的报错,而配置文件经确认过又都是存在的。折腾了一番后,发现元凶是服务器上的CLASSPATH环境常量正常情况下,我们都是通过如下方式获取项目的class目录路径的(配置文件放在class目录中)XXX.class.getResource("/").getPath();但如果系统中配置了CLASSPATH这个环境变量后,上述代码就变成了获取CLASSPATH中指定的路径,自然也就找不到你新部署原创 2020-10-13 14:24:07 · 1049 阅读 · 0 评论 -
巧用Java匿名类,实现Windows编程中回调函数的效果
以前在编写Win32程序时(如C++、Delphi等),我们常会用到回调函数,来实现“注册/调用”的功能。在Java中,一切都是对象,因此并不存在回调函数这样的概念(除非硬用反射来获取Method对象),在实现“注册/调用”这样的功能时,我们必须借助观察者模式,也就是Listener的概念。// 自定义排序器public interface ICustomSorter<T> {...原创 2018-11-30 17:07:46 · 294 阅读 · 0 评论 -
shiro-quartz的坑
用过Shiro的朋友应该知道,我们在进行Session有效性验证的时候,常会用到QuartzSessionValidationScheduler这个类,它用了quartz的计划任务,定时触发检查Session是否已失效问题是,现在Quartz已经出到2.2了,shiro-quartz这个包(哪怕是最新版本)所调用的quartz还停留在Quartz 1.x的阶段(Quartz 2.x里面的结构大...原创 2018-11-30 16:57:38 · 1995 阅读 · 1 评论 -
在Java中如何根据枚举索引值来获取枚举值(范型适用)
我们知道在JAVA编写一个枚举类之后,在调用时系统就会自动给它生成一个values()的数组,通过这个数组就可按索引获取枚举值但是如果我们声明的是一个枚举的范型类呢?我们知道所有的JAVA枚举类,其实都是继承Enum类的,然而Enum只有一个静态的方法valueOf(),用于把字符串转化成枚举值。可是如果想把索引值转化成枚举值呢,怎么办?咋一看,Enum下面似乎真的没有这么一个方法可以让你实现...原创 2018-11-29 11:15:38 · 10873 阅读 · 0 评论 -
Java函数返回值的“魔术”转型
先看一段代码:public Object get(String name) { return map.get(name);}其中获取的返回值,可能是字符串,也可能是数字等等。那么调用它的代码,可能就充斥着各种各样的转型:String value1 = (String)get("key1");Integer value1 = (Integer)get("key2");Dat...原创 2018-11-29 11:06:37 · 372 阅读 · 0 评论 -
MyBatis的UnsupportedOperationException解决方法
在编写一个返回列表类型的ResultMap时,ResultType设置为List.class后报错。原来,即使返回列表,这个ResultType是指列表元素的类型,而不是列表类型。。。太具有欺骗性了。。。...原创 2018-11-29 11:02:43 · 1681 阅读 · 0 评论 -
不通过构造函数来创建类的实例 - Unsafe类的使用
我们知道,当使用反射构造类的实例时,我们常会用到xxx.class.newInstance()这个方法。但是这个方法有一个限制,就是要求类必须有默认的构造函数。但我们在做框架的时候,很难保证要动态构造的类实例,都是有默认构造函数的,那怎么办呢?其实用过C++或者Delphi的都知道,其实构造一个对象,分配内存和调用构造函数实际是两个不同的步骤。我们要创建一个对象,实际只需要分配它的内存就可以了...原创 2018-11-29 11:00:59 · 995 阅读 · 0 评论 -
Java中static final“常量”的坑
在Java中,其实语言本身并没有“常量”这样的概念。但是我们根据常量的特点(不可修改),经常会使用“static final”关键字,对一个变量进行修饰,以达到不创建类就可直接使用,并且该变量不允许修改的目的,看起来就跟“常量”一样。无论是教科书,还是上网查资料,都会教我们这样写这样的写法在纯class文件发布的环境,没有问题,因为class文件只要一修改就会被eclipse重新编译。但在Ja...原创 2018-11-29 10:50:44 · 6020 阅读 · 1 评论
分享