
Java基础
文章平均质量分 57
No8g攻城狮
》博主介绍:全网粉丝23W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域
》技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。
》感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。
展开
-
【Java基础】在Java中,一个线程的大小(即线程所占用的内存)是多少
在Java中,一个线程的大小(即线程所占用的内存)并不是固定不变的,而是动态变化的,并且取决于多个因素。以下是对Java线程大小的详细分析:原创 2025-03-21 18:05:55 · 752 阅读 · 13 评论 -
【Java用法】java中计算两个时间差
话说,这个JDK自带的时间计算还是挺好用的,大家觉得呢?不多说,直接上代码,可自行查看示例。原创 2024-05-29 19:25:34 · 1364 阅读 · 33 评论 -
【Java用法】Lombok中@SneakyThrows注解的使用方法和作用
可能大家都会以为这个方法就是 new RuntimeException() 之类的。普通Exception类,也就是我们常说的受检异常或者Checked Exception会强制要求抛出它的方法声明throws,调用者必须显示的去处理这个异常。设计的目的是为了提醒开发者处理一些场景中必然可能存在的异常情况。所以渐渐的java程序员处理Exception的常见手段就是外面包一层RuntimeException,接着往上丢。而Lombok的@SneakyThrows就是为了消除这样的模板代码。原创 2023-12-07 23:30:00 · 8750 阅读 · 8 评论 -
【缓存】Spring全家桶中@CacheEvict无效情况共有以下几种
SpringBoot中使用@Cacheable注解缓存数据,使用@CacheEvict注解删除缓存。但是在项目使用过程中,发现使用@CacheEvict注解删除缓存无效。拓展:@CacheEvict 就是一个触发器,在每次调用被它注解的方法时,就会触发删除它指定的缓存的动作。跟 @Cacheable 和 @CachePut 一样,@CacheEvict 也要求指定一个或多个缓存,也指定自定义的缓存解析器和 key 生成器,也支持指定条件(condition 参数)。原创 2023-11-01 21:15:00 · 5381 阅读 · 8 评论 -
【Java用法】computeIfAbsent() 的使用
方法获取了一个不存在的键 “orange” 对应的值,由于该键不存在,因此使用指定的函数 k -> 0 计算出了一个默认值 0,并将该键和默认值存储到 Map 中,最后返回了该默认值。中 Map 接口新增的一个方法,用于在 Map 中根据指定的键获取对应的值,如果该键不存在,则使用指定的函数计算出一个默认值并将其存储到 Map 中,最后返回该默认值。方法获取了一个已经存在的键 “apple” 对应的值,由于该键已经存在,因此直接返回了该键对应的值 1。于是呢,在经历了时间的检验,终于千呼万唤始出来,在。原创 2023-10-23 18:05:04 · 17367 阅读 · 11 评论 -
【Java用法】Java在Linux下获取当前程序路径以及在Windows下获取当前路径对比
Java在Linux下获取当前程序路径以及在Windows下获取当前路径对比。原创 2023-07-03 10:08:12 · 1063 阅读 · 14 评论 -
【Java基础】十进制转十六进制
十进制转十六进制。原创 2023-05-16 13:17:53 · 3697 阅读 · 5 评论 -
【Java基础】Java对象创建的几种方式
创建对象的方式是否调用了构造器使用new关键字创建对象是是是clone()否反序列化否Java创建实例对象是不是必须要通过构造函数?这其实是衍生出来的一个面试题。上面问题的答案很明显了:Java创建实例对象,并不一定必须要调用构造器的。原创 2023-02-18 21:44:44 · 1679 阅读 · 35 评论 -
【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)
本篇主要说明在Java8及以上版本中,使用stream().filter()来过滤List对象,查找符合条件的集合。原创 2023-01-13 23:43:17 · 22162 阅读 · 21 评论 -
【Java基础】Java8 使用 stream().sorted()对List集合进行排序
Java8 使用 stream().sorted()对List集合进行排序原创 2023-01-13 22:45:54 · 4915 阅读 · 6 评论 -
【Java基础】map的遍历方式和map.forEach的使用
Map的遍历方式常用的有两种,分为传统的map遍历方式和JDK 1.8 新的遍历方式,下面代码可以明显的看出其中的区别,话不多说,直接上代码,并执行结果,瞬间就能知道使用方式和对比结果了。原创 2022-10-27 23:02:23 · 3670 阅读 · 9 评论 -
【注解】Spring AOP 面向切面编程之@Around的详细用法
本文目录一、背景描述二、AOP实例三、@Around注解图文介绍一、背景描述在代码开发的过程中,总想看自己写的代码执行效率如何,每个方法的执行耗时是多少,但是在每个方法里添加耗时打印太麻烦,也不现实。不过幸好有 Spring 的面向切面编程。有了这个面向切面编程之后,那么,想要实现上述功能,一切就变得简单明了。二、AOP实例下面就上代码,其实很简单的一个类,代码没有几行:package com.iotsoft.framework.log;import lombok.ex原创 2022-05-01 08:00:00 · 23463 阅读 · 9 评论 -
【Java用法】常用的 T,E,K,V,?,S,U所代表的含义
本质上这些个都是通配符,没啥区别,只不过是编码时的一种约定俗成的东西。比如下列代码中的 T 。原创 2021-12-08 14:26:36 · 3613 阅读 · 5 评论 -
【Java用法】Paths.get()方法的使用
Paths.get()方法的使用原创 2021-12-06 10:40:59 · 18973 阅读 · 8 评论 -
【Java用法】图解《Java编程思想》
Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层反编译知识。下面就用一张图总结Java编程思想所有知识点:完结!...原创 2021-11-11 14:29:18 · 522 阅读 · 5 评论 -
【Java用法】Java关键字 —— final的用法
本文目录一、修饰变量二、修饰方法三、修饰类说到final关键字,很多人肯定都不会感觉到陌生,如果看源码或者是在使用匿名内部类的时候可能会经常用到final关键字。举个最学用的类String,Java中的String类就是一个final类,那么趁着今天我们就来回顾一下之前的知识点,了解final这个关键字真正的用法。final在Java中是一个保留的关键字,可以声明变量(包括成员变量和局部变量)、方法和类。一旦将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变原创 2021-11-11 10:54:44 · 2476 阅读 · 5 评论 -
【Java用法】Java关键字 —— instanceof
instanceof 严格来说是 Java 中的一个双目运算符,用来测试一个对象是否为一个类的实例,具体用法为:boolean result = object instanceof Class其中 object 为一个对象,Class 表示一个类或者一个接口,当 object 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果 result 都返回 true,否则返回false。Tips:编译器会检查 object 是否能转换成右边的class类型,如果不能转换则直接报原创 2021-10-28 17:50:27 · 1766 阅读 · 7 评论 -
【Java用法】Spring之@Nullable和@NotNull注释的使用
@NonNull 注解可以标注在方法、字段、参数之上,表示对应的值不能为空; @Nullable 注解可以标注在方法、字段、参数之上,表示对应的值可以为空;如果可以传入 NULL 值,则标记为 @Nullable,如果不可以,则标注为 @NonNull。那么在做一些不安全严谨操作的编码时,这些注释会给我们一些警告。如下是我看 Spring 源码(DelegatingEntityResolver 类)时,发现用到的 @Nullable。以上图片中关于修改的地方是把 Spring 源码里的空行.原创 2021-10-25 15:22:22 · 24475 阅读 · 10 评论 -
【Java用法】FileWriter的用法 wirte() 方法以及几种重载方法的使用详解
本文目录一、用法介绍二、疑问解答2.1、如果这个文件不存在会怎么样?2.2、如果这个文件存在的话会怎么样?2.3、如果不想覆盖之前的内容,想要追加内容怎么做?2.4、添加数据,如何实现换行呢?三、用法拓展3.1、write 方法重载3.2、重载示例一、用法介绍FileWriter的用法很简单,可以总结为三个词:创建(new)、写出(write)、关闭(close);创建(new):就是我们平时常用的 new 一个;写出(write):利用 重载方法 wr原创 2021-08-30 12:29:03 · 21630 阅读 · 6 评论 -
【Java用法】BidiMap详细用法
乍一看,BidiMap很懞,但是只要知道 Bidi 是什么意思,那么这个 BidiMap 其实还是很好理解的。一、简单介绍所谓BidiMap,直译就是双向Map,可以通过key找到value, 也可以通过value找到key,这在我们日常的代码-名称匹配的时候很方便。因为我们除了需要通过代码找到名称之外,往往也需要处理用户输入的名称,然后获取其键(代码)。非常重要的一点是:BidiMap<K, V> 当中不光Key不能重复,Value也不能重复。以下用是测试代码:p原创 2021-08-26 21:06:48 · 2032 阅读 · 8 评论 -
【Java用法】线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。
最近在使用阿里编码规约扫描代码(之前一个老的项目)时,发现代码里有爆BLOCKER级别的一个问题,如下图所示:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。手动创建线程池,效果会更好哦。于是乎,我使用new Thread()方式创建了一个线程,之后P3C又爆出了另外一个建议:线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。不要显式创建线程,请使用线程池。那只能原创 2021-06-22 21:27:22 · 939 阅读 · 6 评论 -
【Java用法】请使用System.currentTimeMillis()代替new Date().getTime()
最近在使用阿里编码规约扫描代码(之前一个老的项目)时,发现代码里有很多使用 new Date().getTime() 来获取时间戳,而没有直接使用 System.currentTimeMillis() 来获取,实在是想不到为什么还会这样写,让我不仅想到,还是写一篇文章说明一下很有必要记录一下。以下是阿里P3C扫描出来的代码:其实为什么不推荐使用 new Date().getTime() 来获取时间戳,可以查看JDK源码,其中你会发现,在JDK源码中 new Date() 构造方法里还是调用的原创 2021-06-22 14:35:14 · 1362 阅读 · 5 评论 -
【Java异常】Variable used in lambda expression should be final or effectively final
一、背景描述最近在使用Java8 lambda表达式的时候编辑品,会时不时遇到这样的编译报错,如下图所示:从字面上来理解这句话,意思是:*lambda表达式中使用的变量应该是final或者有效的final*,也就是说,lambda 表达式只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。二、报错原因在lambda表达式中对变量的操作都是基于原变量的副本,不会影响到原变量的值。假定没有要求lambda表达式外部变量为原创 2021-05-27 17:31:16 · 79471 阅读 · 10 评论 -
【Java用法】Java中常见的 \t \n 的用法,并附有九九乘法表的Java代码的例子
本文目录一、\n 讲解二、\t 讲解一、\n 讲解\n NewLine,换行\n 比较简单,看一下例子就能马上明白,System.out.println("aaa\nbbb");结果如下:二、\t 讲解\t 相当于tab,缩进\t 是补全当前字符串长度到8的整数倍,最少1个空格,最多8个空格补多少要看 \t 前字符串长度比如当前字符串长度10,那么 \t 后长度是16,也就是补6个空格如果当前字符串长度12,此时 \t 后长度是16,补4.原创 2021-02-06 11:11:16 · 11561 阅读 · 0 评论 -
【Java用法】java 8两个List集合取交集、并集、差集、去重并集
在业务的开发过程中会经常用到两个List集合相互取值的情况,于是记录在此,方便后续使用哦~~~public class ListTest { public static void main(String[] args) { ArrayList<String> listA = CollectionUtil.toList("a", "b", "c", "d", "e"); ArrayList<String> listB = Collect原创 2021-01-19 15:44:09 · 6713 阅读 · 10 评论 -
【Java用法】Java中String类型和int类型互转的所有方法
本文目录一、String转int二、int转String在码代码的时候,经常会将各种类型相互转化,于是就将经常用的转换方法汇总于此,方便后续使用!一、String转intpublic class ConvertServiceImpl { public static void main(String[] args) { // 首先这个字符串一定是可以被转换的,否则会报错,NumberFormatException String s = "100原创 2020-09-29 15:22:05 · 1494 阅读 · 5 评论 -
【JavaWeb】HTTP状态码100、200、300、400、500、600的含义
本文目录一、1xx (临时响应)二、2xx (成功)三、3xx (重定向)四、4xx (请求错误)五、5xx (服务器错误)六、6xxHTTP状态码(HTTP Status Code) 是当我们访问网页服务器,服务器做出相应的状态的3位数的数字代码。主要包括“1xx”(消息)、“2xx”(成功)、“3xx”(重定向)、“4xx”(请求错误)和“5xx”或“6xx”(服务器错误)五种不同类型。比较常见的状态码有:HTTP: Status 200 – 服务器成功返回网页H原创 2020-08-29 17:53:08 · 9379 阅读 · 5 评论 -
【Java用法】Java中的System.lineSeparator()方法的作用
本文目录一、System类的概念二、System.lineSeparator()的源码三、System.lineSeparator()具体含义从方法名上可以得到,这是系统对象里的行分隔符,那么具体表示什么含义呢?一、System类的概念在API中system类介绍的比较简单,我们给出定义,system中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。注意,system类不能手动创建对象,因为构造方法被私有化(即被private关键字修饰),组织外界创建对象(即不能用ne原创 2020-06-25 08:06:03 · 13970 阅读 · 5 评论 -
【Java用法】Java 语言规范要求 equals 方法具有的特性
Java 语言规范要求 equals 方法具有下面的特性:1、自反性:对于任何非空引用x,x.equals(x)应该返回true。2、对称性:对于任何引用x和y,当且仅当y.equals(x)返回true,x.equals(y)也应该返回true。3、传递性:对于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)也应该返回true。4、一致性:如果x和y引用对象没有发生变化,反复调用x.equals(y)应该返回同样的结果。5、原创 2020-06-08 19:22:27 · 556 阅读 · 5 评论 -
【Java异常】Exception in thread“main” java util ConcurrentModificationException的解决方案
首先java的foreach循环其实就是根据list对象创建一个Iterator迭代对象,用这个迭代对象来遍历list,相当于list对象中元素的遍历托管给了Iterator,你如果要对list进行增删操作,都必须经过Iterator。iterator创建的时候modCount被赋值给了expectedModCount,但是调用list的add和remove方法的时候不会同时自动增减expectedModCount,这样就导致两个count不相等,从而抛出异常。Vector也同样会报异常。原创 2020-05-19 17:50:38 · 6825 阅读 · 8 评论 -
【Java用法】Java线程中yield()和join()的用法以及注意事项
本文目录一、yield的意思二、yield()的作用三、yield()的结论四、Java线程优先级五、yield()注意事项六、join()方法一、yield的意思yield的中文意思是放弃,投降的意思。当前线程调用yield的时候,是告诉虚拟机它愿意让其他的线程抢占自己的位置或者表明该线程没有紧急的事要做,但这只是一种暗示,并不能保证一定会发生。二、yield()的作用Thread.yield()方法的作用:暂停当前正在执行的线程,并执行其他同等优先级的线程。(可.原创 2020-05-14 12:47:18 · 4023 阅读 · 4 评论 -
【Java注解】@Retention的作用和@Target注解的说明以及使用方法
本文目录一、注解说明二、@Target注解三、@Retention注解四、自定义注解一、注解说明注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。定义注解时,会需要一些元注解(meta--annotation),如@Target和@ Retention,这两个特性是我们必须要定义清楚的,一个是Target...原创 2020-05-04 16:40:41 · 7450 阅读 · 6 评论 -
【Java用法】@NotEmpty、@NotBlank、@NotNull注解的使用方法与区别
以下三个注解均是javax.validation.constraints包下的,用于属性上的:@NotEmpty、@NotBlank、@NotNull三种注解的区别@NotEmpty:用在集合类上面的属性的注解@NotBlank:用在String上面属性的注解@NotNull:用在基本类型的包装类型上面的属性注解如下为使用实例:package com.test.model...原创 2020-04-11 15:31:53 · 6931 阅读 · 5 评论 -
【Java异常】java.lang.UnsupportedOperationException解决方案
在最近做的一个项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下。代码块:public class Unsupported { static void test(String msg, List<String> list) {...原创 2020-03-31 18:21:01 · 6670 阅读 · 7 评论 -
冒泡排序
以下代码运行在单元测试内 @Test public void testMaoPao(){ int[] array = { 1, 3, 9, 5, 4, 6, 2, 8, 7, 16, 12 ,17}; int temp; // 定义一个临时变量 // 冒泡的次数 for (int i = 0; i < a...原创 2020-02-16 12:23:40 · 509 阅读 · 3 评论 -
java中File的delete()方法删除文件失败的原因和解决方案
通常来说:java file.delete()方法删除文件失败的原因有以下几个:1、极有可能是文件的流没有关闭(我遇到的就是没有关闭文件的输入流);2、被别的进程引用,可以手工删除试试(如果删除不了就证明被别的进程正在引用);3、file是文件夹,而且不为空,file文件夹里还有别的文件夹或者是文件。我的代码如下:readTemplateFileContent()这个方法用来读...原创 2019-09-12 10:21:32 · 9063 阅读 · 5 评论 -
new Date().getTime()和System.currentTimeMillis()获取时间戳的比较
最近在优化项目代码,看项目组的代码时,发现了一个有趣的现象,有使用new Date().getTime()来获取时间戳的, 也有使用System.currentTimeMillis()来获取时间戳的,这让我想到,好像我平时写代码也是想起哪种方式就用什么方式写。这两种方式都可以,仔细思考一下,两者应该会有区别的,应该有是最优的方式?然后就看了看源码,其实解决疑惑最优方式就是看源码,打开java....原创 2019-07-10 14:40:37 · 1487 阅读 · 5 评论 -
【Java用法】Boolean.parseBoolean(string);
String类型转boolean类型的一个方法当String的值为“true”时返回ture,(此处true值是忽略大小写的)当为其他字符串时返回false。是boolean 类型参考文档:Jdk1.8中文版 方法详细信息 parseBoolean public staticbooleanparseBoolean(Strings)...原创 2019-04-12 17:55:16 · 10511 阅读 · 6 评论 -
Java中的数据类型转换和各种运算符
数据类型转换自动转换:将 取值范围小的类型 自动提升为 取值范围大的类型 。转换规则:byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double 强制类型转换:将 取值范围大的类型 强制转换成 取值范围小的类型 。转换格式:数据类型 变量名 = (数据类型)被转数据值; 浮点转成整数,直接取消小数点,可能造成数据损...原创 2019-01-12 22:46:08 · 522 阅读 · 5 评论