
Java
文章平均质量分 54
关耳布
勉之
展开
-
@RequiredArgsConstructor 省略 @AutoWired 注解
在学习的时候发现了@RequiredArgsConstructor 注解,是Lombok下的注解,对此做笔记。其注解的作用是省略我们项目 service层中 mapper 上的注解@AutoWired;或者是 controller 层中的 service 上的。以下为例:@RestController@RequiredArgsConstructorpublic class TestController { @NonNull AService aService; @Not原创 2021-03-31 22:42:50 · 897 阅读 · 0 评论 -
WSL 安装及其中 Java 环境配置
WSLWindows Subsystem for Linux(简称WSL)是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。它是由微软与 Canonical 公司合作开发,其目标是使纯正的 Ubuntu 14.04 “Trusty Tahr” 映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。—百度安装前提将电脑设置为开发者模式电脑设置 => 更新和安全 => 开发者模式开启 Linux原创 2021-01-08 15:15:29 · 11092 阅读 · 1 评论 -
基础:面试常问,你知道 Integer 吗?
包装类型——学习记录值得关注的是各个包装类的缓存大小:Boolean:使用静态 final 变量定义,valueOf()就是返回这两个静态值Byte:范围 -128~127,全部缓存Short:范围 -32768 ~ 32767,缓存范围是 -128~127Character:范围 0~65535,缓存范围是0~127Long:范围 [-263, 263-1],缓存范围是-128~127Integer:范围 [-231, 231-1],缓存范围是-128~127,但是由于是应用最广的数据类型原创 2020-09-13 22:18:45 · 233 阅读 · 0 评论 -
重写 hashCode 为什么还需要重写 equals方法
为什么重写hashCode 还需要重写 equals方法(或者两者反过来说)众所周知,根据生成的哈希码将数据离散开来,可以是存取元素更快。调用 Object.hashCode() 生成哈希值;由于比可避免地会存在哈希值冲突的情况,因此当 hashCode 相同时,还需要再调用 equals 进行一次值的比较;但是,若 hashCode 不同,将直接判定 Object 不同,跳过 equals,这加快了冲突处理效率。首先可以了解下,hashCode 是一个本地方法,其相关源码:VM_ENTRY(j原创 2020-09-12 16:37:46 · 1542 阅读 · 1 评论 -
常问到 equals 与 == 有什么区别?
介绍一下 equals 与 == 的区别:==:比较的是变量存放在堆内存的对象的地址,判断两个对象的地址是否相同,是否指向同一个对象。也就是判断引用是否相同。equals()不能用于基本类型的比较;是对字符串的内容进行比较对于基本类型,==比较的是值; 对于引用类型,==比较的是地址;String a = "abcd";String b = "abcd";if (a == b) { System.out.println("true"); // 当然是true啦} else原创 2020-09-11 23:44:28 · 324 阅读 · 0 评论 -
Java 为什么无法真正意义上开启一条线程?
线程可根据侧边目录选择阅读1、线程与进程线程与进程相似,但线程是一个比进程更小的执行单位,它与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。进程在其执行的过程中可以产生多个线程。区别:进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程和进程的不同在于基本上各个进程是相互独立的,而各线程则不原创 2020-09-10 17:17:27 · 299 阅读 · 0 评论 -
Java的四种引用,强弱软虚到底有所不同
强度依次降低强引用 Strong Reference:最为常见,比如new一个对象,这样的变量声明和定义就会产生对该对象的强引用。只要求强引用指向,并且 GC Roots 可达,那么 Java 内存回收时,即使濒临内存耗尽,也不会回收该对象。软引用 Soft Reference:用SoftReference类实现,一般不会轻易回收,只有内存不够OOM之前才会回收。主要是用来缓存服务器中间计算结果及不需要实时保存的用户行为。例:// wrf这个引用是强引用,它是指向SoftReference这个原创 2020-09-09 09:10:45 · 703 阅读 · 0 评论 -
集合线程安全 CopyOnWrite 是什么?
ArrayList什么是ArrayList就不赘述了,主要是在多线程的情况下,线程是不安全的,原因是一条线程在对集合进行遍历,然而另一条却对数组进行修改,那么这样就很容易触发ConcurrentModificationException异常。那么解决线程不安全的方法有:用过时的方法Vactor,同ArrayList一样底层是一个数组,其中大部分方法都被synchronized关键字所修饰,扩容方法与ArrayList不同,是2倍的扩容。用Collections工具类List<Stri原创 2020-09-08 23:46:51 · 386 阅读 · 0 评论 -
Synchronized详细知识点
Synchronized简介synchronized 关键字解决的是多个线程之间访问资源的同步性,它可以保证被它修饰的方法或者代码块在任意时刻都只会是一个线程执行。在 Java 早期1.2版本中,synchronized属于重量级锁,效率低,因为监视器锁(monitor)是依赖于底层的操作系统OS的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的,所以每次将挂起或者唤醒一个线程,都需要操作系统帮助完成。而操作系统实现线程之间的切换时需要从用户态转换到内核态,这个状态之原创 2020-09-05 23:51:36 · 268 阅读 · 0 评论 -
详讲Arrays.asList()方法,可别再踩坑
ArraysArrays 是数组对象进行操作的工具类,其中含有对数组的排序、查找、对比、拷贝等操作。通过工具类,我们还可以将数组转换成集合。数组和集合都是 Java 中用来存储数据的,数组性质单一,方便使用;集合通过泛型达到类型安全,功能强大,而且两者之间还可以进行互相转换。毕竟两者之间有明显不同,在进行转换的时候,如果稍不注意就会出错。转换时分为两种情况:数组转换成集合集合转换成数组错误:java.lang.UnsupportedOperationException举个平时容易遇错的问原创 2020-09-04 21:44:06 · 2719 阅读 · 0 评论 -
<? extends T>和<? super T>真的会用了吗?
泛型总所周知,泛型的作用是让一段代码可以被不同类型的对象重复使用,但是最大的问题就是,每次只能放置一种类型。如果其中随意的放置类型的话,就是 “破窗理论” ,泛型就失去了类型安全的意义。那么我们想放多种的约束类型该怎么办?其中有两种解决方案:<? extends T><? super T>因为只能给集合赋值,所以我个人的感觉就像是把原本的约束替换掉了,套上了层Buff。(大佬们,如果有什么更好的比喻可以在评论区留言,小弟马上改)接下来的测试以这为前原创 2020-09-02 15:49:19 · 510 阅读 · 0 评论