
Java基础
AlbertWC
小萌新的Coding之路
展开
-
Java面试--Java序列化和反序列化
什么是序列化和反序列化:序列化就是对一个Java做一下“变化”,变成字节序列。方便持久化存储到磁盘,避免程序运行后对象就从内存里消失,另外变换成字节序列也更便于网络运输和传播。序列化:把Java都西昂转换为字节序列。反序列化:把字节序列恢复成原来的Java对象。那么对象如何序列化?Serializable接口或Externalizable接口实现Serializable接口:1) 系统自动存储必要的信息;2) Java内建支持,易于实现,只需要实现接口,不需要任何代码.原创 2020-12-03 16:09:04 · 251 阅读 · 0 评论 -
Java面试--String,StringBuffer,StringBuilder区别
都是Java.Lang的子类。都是final类,不可以被继承。StringBuffer是线程安全的,可以不需要额外的同步,用于多线程。StringBuilder是非同步,运行于多线程就需要使用单独同步处理,速度比StringBuffer快。String是字符串常量,不可修改。StringBuffer和StringBuilder是字符串变量。...原创 2020-12-01 21:57:05 · 188 阅读 · 0 评论 -
Java面试--内存泄漏是什么,如何解决
内存泄漏是什么?提前知识:Java内存管理,只有知道java是如何管理内存的,才能了解什么是 Java 的内存泄漏。Java的内存管理就是对象的分配和释放问题。在Java中,内存的分配是由程序完成的,内存的释放是由GC完成的。我们写程序不需要用函数释放内存。不需要管这些。1. 原因:主要原因就是,之前申请了内存空间但是忘记释放。如果程序中存在无用对象的引用。那么这些对象就会驻留内存,消耗内存。因为无法让GC验证这些对象是否不再需要。Java中,内存泄漏就是存在一些被分配的对.原创 2020-11-30 18:50:29 · 210 阅读 · 0 评论 -
Java面试--Java异常
Error:Error类及子类的实例代表了JVM本身的错误,错误不能被程序员通过代码来处理,Exception:异常,代表程序运行时发生的各种不期望发生的事件,可以被Java异常机制使用。非检查异常:(unchecked exception):RuntimeException类极其子类表示JVM在运行期间可能出现的错误。编译器不会检查此类异常,并且不要求处理异常,比如用空值对象的引用(NullPointerException)、数组下标越界(ArrayIndexOu...原创 2020-11-30 13:48:55 · 183 阅读 · 0 评论 -
Java面试--Java线程--Java开启线程的方式
Java多线程之启动的模式:1. 继承Thread类。public class MyThread extends Thread{ public void run(){ for (int i = 0; i < 10; i++) { System.out.println(i+"run..."); } } public static void main(String[] args) { MyThread th原创 2020-11-24 22:08:34 · 164 阅读 · 0 评论 -
Java面试--Java的设计模式
1.单例模式1.1 懒汉式单例特点是类加载的时候没有生成单例,只有当第一次调用getInstance方法时,才去创建这个单例。public class LazySingleton{ private static volatile LazySingleton instance=null; //保证 instance 在所有线程中同步 private LazySingleton(){} //private 避免类在外部被实例化 public static sy原创 2020-11-24 15:33:42 · 124 阅读 · 0 评论 -
Java面试--锁升级全面解析
1.6之前,都是Synchronized重量级锁。1.6之后,引入了偏向锁,轻量级锁,重量级锁,来减少竞争带来的上下文切换。锁的四种状态1.无锁状态2.偏向锁3.轻量级锁 CAS4.重量级锁。 synchronizedJava对象头在JVM中,对象是存放在堆内存中的。对象大致可以分为三个部分,对象头,实例变量和填充字节。Synchronized锁对象在对象头的MarkWord中,锁升级主要依赖mark word中的锁标志位和释放偏向锁标识位。用户态和内核态..原创 2020-11-23 00:43:46 · 471 阅读 · 0 评论 -
Java基础--HashMap面试最详细知识点总结
一开始以为java hashmap的面试问的会比较基础,比较简单,但是最近看了敖丙面试的一个视频,别人面试时回答关于hashmap的知识点总结,深感自己不足。而且面试官问的也比较细,有深度。原帖:HashMap知识点HashMap在Java后台开发中面试的频率算很高的。但问的有多细还得看面试官了。还是需要再继续努力。这篇就针对面试的常见问题来写知识点吧。Q:你能说一下HashMap的数据结构吗?A: Hashmap在1.7和1.8之间做了一个比较大的改变。 在JDK1...原创 2020-11-16 21:58:05 · 264 阅读 · 0 评论 -
Java面试---Java字符流和字节流
首先列一个知识点:字节(Byte) 1Byte = 8 bit字符(Character) 1 char = 2 byte = 16bit虽然1 bit才是数据真正的最小单位,但1 bit 的信息量太少了。要表示一个有用的信息,需要好几个bit一起表示。所以除了硬件层面存在1个比特位的寄存器,大多数情况下,字节是数据最小的基本单位。我们熟知的基本型的大小都是8 bit(也就是1字节)的整数倍:boolean: 1 byte short: 2 byte int: 4 byte fl..原创 2020-11-14 22:45:07 · 212 阅读 · 0 评论 -
Java面试--Java基础--抽象类和抽象方法
抽象,abstract,当父类的某些方法不确定的时候,我们可以用abstract关键字来修饰该方法。用abstract修饰类。例如,定义动物父类, 其中 动物名称和动物年龄属性已经确定了,但是动物叫的方法没有明确, 此时就可以将动物叫定义为抽象方法。所以,抽象方法是为了把相同的 但不去确定的东西提取出来,为了以后的重用,定义成抽象类的目的,就是为了在子类中实现抽象类。public class AbstractDemo1 { public static voi...原创 2020-11-07 22:09:17 · 413 阅读 · 0 评论 -
Java面试--Java基础--Java反射
Java中的反射机制是指,在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法。原创 2020-11-07 22:02:03 · 115 阅读 · 0 评论 -
Java面试--Java基础--Synchronized和ReentrantLock的区别
共同点:1. 都是用来协调多线程共享对象、变量的访问。2. 都是可重入锁,同一线程可以多次获得同一个锁。3. 都保证了可见性和互斥性。不同点:1. ReentrantLock 显示地获得、释放锁。synchronized隐式获得、释放锁。2. ReentrantLock 可响应中断、可轮回,synchronized 是不可以响应中断的,为处理锁的不可用性提供了更高的灵活性3. ReentrantLock 是API 级别的,synchronized 是JVM级别的4. Reentr原创 2020-11-04 21:47:55 · 441 阅读 · 0 评论 -
Java面试--Java线程--Volatile关键字
我们先从java内存开始讲起。JMM。什么是JMM?JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。内存划分JMM规定了内存主要划分为主内存和工作内存两种。此处的主内存和工作内存跟JVM内存划分(栈、堆、方法区)是在不同的原创 2020-11-02 22:05:15 · 246 阅读 · 0 评论 -
Java面试--Spring--Spring常用注解
Spring常用注解bean注入与装配的方式有很多种,可以通过xml、get、set方式,构造函数或者注解等。常用的注解如下。优点:IOC容器是Spring中的特色之一,管理很多Bean。1.@Controller:1.用于标注控制层组件。2.@Controller用于标记在一个类上,使用它的类就是一个SpringMVC Controller对象。3.分发处理器将会扫描使用了该注解类的方法,并检测该方法是否使用了@RequestMapping注解。4.可以把Request请求原创 2020-10-29 22:13:17 · 278 阅读 · 1 评论 -
Java面试--Java多线程并发(二)长文全解析
6.sleep和wait区别1. sleep方法,是属于Thread类的,而wait方法是属于Object类。2.sleep方法导致了程序暂停执行指定的时间,让出cpu的其他线程,但是他的监控状态依然保持,当到了指定的时间又会自动恢复运行状态。3.在调用sleep方法的过程中,线程不会释放对象锁。4.调用wait方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定吃,只有针对次对象调用notify方法,本线程才进入对象锁定池准备获取对象锁进行运行状态。7.start和run区别1.原创 2020-10-28 19:18:06 · 125 阅读 · 0 评论 -
Java面试--Java多线程并发(三)长文全解析 Java锁
Java锁1.乐观锁乐观锁是认为读多写少,遇到并发的可能性低,所以去拿数据的时候都认为别人不会修改,所以不会上锁。但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁的操作。比较和上一次的版本号,如果一样就更新,不一样就重复读--比较--写。java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。2.悲观锁悲观锁就是悲观思想,认为写多读少,遇到并发的可能性高,每次去拿数据原创 2020-10-28 17:07:49 · 156 阅读 · 0 评论 -
Java面试--Java多线程并发(一)长文全解析
1.Java并发知识库2.Java线程实现/创建方式2.1 继承Thread类。Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。什么是native方法public class MyTread extends Thread{ public void run(){ sout(...原创 2020-10-27 16:43:57 · 150 阅读 · 0 评论 -
Java面试--Java集合--List、Set、Map全解析
不负责基础,仅仅是面试出现的考点1.接口继承关系和实现1.Collection是集合List、set、queue最基本的接口。2.Iterator 迭代器,可以通过迭代器遍历集合中的数据。3.Map 映射表的基础接口。特点:只要是List,都是有序可重复的,ArrayList和Vector底层是数组,速度快,增删慢,区别是ArrayList线程不安全,容量不够时,扩容*1.5+1,而Vector线程安全(因为synchronized修饰了)。LinkedList 有序可重复,底层原创 2020-10-26 20:22:03 · 186 阅读 · 0 评论 -
Java面试--Spring--Spring原理及特点,IOC和AOP全解析
Spring特点1.轻量级2.控制反转3.面向切面4.容器5.框架集合Spring核心组件:Spring核心容器: 核心容器提供Spring框架的基本功能,核心容器的主要组件时BeanFactory,它是工厂模式的实现,BeanFactory使用控制反转IOC模式将应用程序的配置和依赖性规范与实际的应用代码分开。Spring Context:SpringContext是一个配置文件,向Spring框架提供上下文信息,SpringContext包括企业业...原创 2020-10-25 21:49:11 · 528 阅读 · 0 评论 -
Java基础知识--Java之IO/NIO
Java IO/NIO阻塞IO模型最传统的一种IO模型,即在读写过程中会发生阻塞现象,当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程。用户线程才解除block状态,典型的阻塞IO模型的例子为:data = socket.read();如果数据没有就绪,就会一直阻塞在read方法。非阻塞IO模型当用户线程发起一个read操作后,并不需要等待,而是马上就得到了一个结果,如原创 2020-10-25 10:45:06 · 171 阅读 · 0 评论 -
Java基础- Java中引用类型--java四种引用类型
Java中四种引用类型强引用Java中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的。即使该对象以后永远不会被用到,Jvm也不会回收。弱引用软引用需要用SoftReference类来实现。内存足够使它不会被回收,内存空间不足时会被回收软引用需要用WeakReference类来实现,比软引用的生存期更短,对于只有弱引用的对象来说,只要垃圾回收机制一运行,不过JVM内存够不够,总会回收它。虚引原创 2020-10-21 21:34:30 · 154 阅读 · 0 评论 -
Java面试--JVM一文全整理
从JVM开始说起:JVM是一个虚拟机,可运行java代码的虚拟计算机,包括一套字节码指令集,一组寄存器,一个栈,一个垃圾回收,堆和一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互。线程JVM内存区域...原创 2020-10-20 20:57:06 · 210 阅读 · 0 评论 -
秋招 HashMap 知识点
1.HashMap数据结构hashmap的数据结构:数组+链表或红黑树。当链表长度大于8时,转成红黑树。数组的特点:查询效率高,插入、删除效率低。链表的特点:查询效率低,插入、删除效率高。先根据hashcode放入数组,如果有冲突,就会在数组下方添加链表。链表长度大于8时,会转成红黑树O(logn)。为什么...原创 2020-09-28 20:27:34 · 157 阅读 · 0 评论 -
秋招-工作-Java基础
Java校招。以此记录学习的知识点,每日看,坚持更新。1. JDK 和 JRE 有什么区别?JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。2.Java中堆和栈的区别栈:栈内存是一片内存区域,存储的是局部变量。方法先进栈,然后再定义变量,变量有自己的作用域。一旦离开作用域,变量就会被释放,栈内存的更原创 2020-09-26 15:17:00 · 144 阅读 · 0 评论