Java
文章平均质量分 84
FrozenPenguin
冰冻三尺,非一日之寒;水滴石穿,非一日之功。
展开
-
「 JavaSE 」说说什么是泛型的类型擦除?
Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。先看一道常见的面试题,下面的代码的执行结果是什么?首先,我们知道getClas方法获取的是对象运行时的类(Class),那么这个问题也就可以转化为和的对象在运行时对应的Class是否相同?原创 2023-04-14 13:22:46 · 1112 阅读 · 0 评论 -
「 JavaSE 」String、StringTable、String.intern()详解
Java中的字符串(String)是一种不可变对象,它在许多应用程序中扮演着重要角色。为了更有效地处理和操作字符串,Java提供了一些有用的工具和方法,如StringTable和String.intern()。StringTable是String类内部使用的一种高效机制,它允许JVM共享相同的字符串以节省内存。String.intern()允许将字符串添加到StringTable中,并返回指向该字符串的引用。这两个工具都非常有用,但也需要小心使用,因为它们可能会导致内存问题或性能问题。原创 2023-04-05 11:07:34 · 1091 阅读 · 0 评论 -
「 JavaSE 」深度剖析自动装箱与拆箱(源码级别)
本文基于 Java 14在JDK1.5引入自动装箱/拆箱,让开发更高效。自动装箱时编译器调用valueOf()将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似这类的方法将对象转换成原始类型值。自动装箱是将 float 值转换成 Float 对象,int 转换成 Integer,long 转换成 Long,short 转换成 Short等等,自动拆箱则是相反的操作。原创 2023-03-12 07:45:00 · 1132 阅读 · 0 评论 -
如何理解面向对象(什么是面向对象?)
面向对象是一种思想,是相对于面向过程而言的。面向对象是将功能等通过对象实现,将功能封装进对象中,让对象去实现具体细节。封装性、继承性、多态性。封装性就是把对象的属性和实现的细节隐藏起来,仅对外提供公共的访问方式。继承性就是两种事物间存在一定的所属关系,继承是多态的前提。多态性就是父类引用指向子类对象。面向对象的特点是:将复杂的事情简单化;从以前的过程中的执行者变成指挥者;是符合现在人们的思考习惯的一种思想。原创 2023-02-28 23:01:49 · 2072 阅读 · 0 评论 -
「设计模式」继承与组合的区别与联系?为什么要多用组合少用继承?
在面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。为什么不推荐使用继承?组合相比继承有哪些优势?如何判断该用组合还是继承?原创 2022-11-10 07:00:00 · 2177 阅读 · 0 评论 -
「Java基础」什么是类,类与对象的区别
类是面向对象程序设计实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。原创 2022-09-22 11:10:45 · 2239 阅读 · 0 评论 -
【JUC并发编程】如何正确使用volatile?
Java 语言中的 volatile 变量可以被看作是一种 ”程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。......原创 2022-08-28 19:24:21 · 1160 阅读 · 0 评论 -
「多线程锁」手写死锁案例及排查死锁原因
死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去,如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。...原创 2022-08-16 16:15:00 · 1574 阅读 · 2 评论 -
「Juc并发编程」什么是可重入锁?
可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。......原创 2022-08-16 12:00:00 · 2754 阅读 · 0 评论 -
【Java多线程】一篇文章彻底解锁八锁现象(狂神说Java)
最近在看狂神老师的JUC课程时遇到了八锁问题,看的时候懵懵懂懂,于是在第二天又看了一遍,并记录了本次笔记,希望对大家有所帮助。时间匆忙的话一定要看文章最后的总结部分!原创 2022-07-12 10:50:12 · 1438 阅读 · 0 评论 -
【Java基础】继承父类(抽象类)与实现接口的区别与联系
抽象类是对整个类进行抽象,包括属性,行为;而接口是对类局部(行为)进行抽象。本文章就这两个方面展开,对二者进行解剖、分析,希望对你有所帮助。原创 2022-07-12 09:00:00 · 1877 阅读 · 0 评论 -
「 JVM 」 垃圾回收算法详解(标记、清除、压缩(整理)、复制)
JVM是具有垃圾回收机制的,与c/c++不同,Java程序员不需要在写程序的时候考虑垃圾回收的问题,只需要专注代码逻辑即可,一定程度上减轻了程序员的负担。该文章介绍了各种垃圾回收算法的概述、优缺点等。...............原创 2022-07-10 12:00:00 · 1886 阅读 · 0 评论 -
「 JVM基础 」Java双亲委派机制
Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成的class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式。即把请求交由父类处理,它是一种任务委派模式。......原创 2022-07-09 08:30:00 · 4953 阅读 · 0 评论 -
【Java多线程】CompletableFuture实现多线程异步编排
在Java 8中, 新增加了一个包含50个方法左右的类: CompletableFuture,提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提供了转换和组合CompletableFuture的方法。.........原创 2022-07-05 13:23:43 · 1358 阅读 · 0 评论 -
SpringBoot简单实现上传图片到七牛云
SpringBoot简单实现上传图片到七牛云前言笔记参考三更草堂为什么? 因为如果把图片视频等文件上传到自己的应用的Web服务器,在读取图片的时候会占用比较多的资源。影响应用服务器的性能。 所以我们一般使用OSS(Object Storage Service对象存储服务)存储图片或视频。快速开始七牛云官方文档:https://developer.qiniu.com/kodo/1239/java#install-by-maven一、添加依赖<dependency>原创 2022-05-15 19:02:53 · 2161 阅读 · 0 评论