Java
文章平均质量分 75
Java基础和一些小知识记录
在路上的红青蛙
如果它能变得更好,就应该让它变得更好。
展开
-
Spock测试框架浅尝
这篇文章会介绍 Spock 测试框架相关的一些基本概念,包括数据驱动测试(Data Driven Testing)、基于交互的测试(Interaction Based Testing)、Mocking 和 Stubbing 等,这其中会带有一些简单的例子。原创 2021-12-05 15:35:29 · 834 阅读 · 0 评论 -
Optional中orElse与orElseGet的区别
Optional 中 orElse 可能导致空指针异常,orElseGet 可以避免这种情况,另外还对两者做了一些介绍。原创 2021-12-04 16:58:57 · 10561 阅读 · 2 评论 -
Java多线程中的 Lock, synchronized 和 volatile
Java 多线程编程中 Lock 的概念和synchronized、volatile关键字是经常遇到的内容或者说知识点,本文是我最近学习多线程的个人总结,会说明这三者涉及的一些基础概念,所以它们不是很全面。你可以浏览下目录来确定是否看下去,参考资料会在文章结尾给出。原创 2021-11-28 23:58:12 · 728 阅读 · 0 评论 -
DTO(数据传输对象)模式
0. 写在前面首先,这是一篇翻译文章,个人建议你可以阅读英文原文Baeldung: The DTO Pattern (Data Transfer Object),因为个人水平,很多地方翻译的不通顺和晦涩,如果你选择继续往下看,请不要高估了我的英文水平。当然,你也可以对比原文来看。1. 概览在这篇教程中,我们将讨论 DTO 模式,它是什么,怎样以及何时使用它们。在最后,希望我们知道如何正确地使用它。2. DTO模式DTO 或者说数据传输对象(Data Transfer Objects)是在处理方法中翻译 2021-11-21 17:04:45 · 8274 阅读 · 0 评论 -
实现一个自定义的Spring AOP注解(AOP annotation)
1. 介绍在这篇文章中,我们将会使用Spring中的AOP支持来实现一个自定义的AOP注解(AOP annotation)。首先,我们会给出AOP的一个高级(high-level)概述,解释它是什么和它的优点。接着,我们会一步一步地实现自己的注解,从而逐渐地对AOP有更深入的了解。我们将会获得(outcome):更好地理解AOP,以及将来创建自定义Spring注解的能力。2. AOP注解是什么?快速总结一下,AOP表示面向切面编程(Aspect-Orientated Programming)。本质翻译 2021-09-21 18:25:37 · 784 阅读 · 0 评论 -
Java中为什么要避免原始类型(raw types)?
原始类型是指使用泛型类型而没有指定类型参数。例如,List是一个原始类型,而List<String>是一个参数化类型。当泛型在JDK 1.5中被介绍时,原始类型被保留仅仅是为了维持对老版本Java其向后兼容的特性。虽然原始类型仍然可以使用,但应该避免,原因如下:它们通常要求类型转换(type cast);它们不是类型安全的,一些重要的error仅会发生在运行时;它们的表达性较差,相比于参数化类型,它们不能做到自描述(self-document)。例子:import java.ut翻译 2021-09-19 16:43:42 · 920 阅读 · 0 评论 -
Java中volatile和synchronized关键字的区别
本文介绍了Java中一些基本但很重要的概念。volatile是一个域修饰器(field modifier),而synchronized修饰代码块和方法。因此,我们可以使用这两个关键字来指定一个简单累加器的三种变体。int i1; int geti1() { return i1; }volatile int i2; int geti2() { return i2; } int i3;synchronized int geti翻译 2021-09-19 16:23:12 · 164 阅读 · 0 评论 -
浅析:Java Thread ID是否重用
1. 问题来源我最近在看Java多线程的视频时,主讲老师介绍Thread.getId()函数,后面演示的时候,说到,“thread ID可能会被重用”。他示范了几次,thread ID都是递增的,问题在当时没有解释清楚,所以我去查了一下源码,在此做一个简单总结。2. getId()函数首先API文档中对Thread.getId()的detail描述,说到当一个线程终止运行后,它的thread ID可能会被重用。但是,问题在于它是怎么被重用的?然后,我去查了源码(下图是其中一部分,出自java/la原创 2021-04-08 11:33:12 · 1986 阅读 · 0 评论 -
Java多次继承后访问父类属性
Java多次继承后访问覆盖的父类同名属性事情是这样的:Java类只能有一个直接父类,但可以有无限多个间接父类。(From 《疯狂Java讲义》)这样确实实现了多继承,如果想要访问同名的父类成员变量或方法,使用super就可以,然后就有一个问题,多次继承之后,如何访问它的上上层或更高层的父类属性?像下面代码的第6行这样:public class SubSubClass extends SubClass { int a = 30; public void accessData() { System原创 2021-03-04 14:36:27 · 924 阅读 · 9 评论