多线程线程和进程的区别线程是任务调度的最小单位,进程是资源分配的最小单位。这点从内存空间的结构也可以看出来:
JVM为进程分配资源,因此同一个进程中的线程共享堆和方法区
JVM调度线程,因此每个线程有独立的方法栈和PC
从历史意义上说,线程是一种...
基本问题Java特点
面向对象
平台无关
安全可靠
网络编程友好
多线程编程
编译与解释并存
JVM/JRE/JDKJVM:运行平台JRE:基本运行环境,包含JVMJDK:开发者套件,包含JRE
字节码好处只对虚拟机负责,具体的...
常见集合List、Set、Queue和Map区别
List:线性表,有序存储元素
Set:无序、不可重复的集合
Queue:FIFO的队列
Map:存储键值对的映射关系的表
线性表ArrayList和Array的区别
前者基于Object的Arra...
难点
索引选择由于普通索引可以有多个值,在查找到满足条件的项后仍会继续查找,直到查询到不满足条件的项为止,而唯一索引在查找到后就可以返回了,因此普通索引查找效率要劣于唯一索引
索引结构为B+树,只有叶子存储值,其他存储索引
即便是索引,每次也是加载一...
结构
OSI七层模型
TCP/IP五层/四层模型
应用层
举例:HTTP FTP SMTP DNS SSH等
URL/URI区别
体系架构:P2P/CS
DNS域名系统原理:host->本地缓存-&...
运行时数据区域
线程共享
堆(Heap)
方法区(Method Area)
运行时常量池(Runtime Constant Pool)
字...
关于对象的生命周期在这篇文章中阐述
垃圾回收算法
标记-清除算法标记-清除算法(Mark-and-Sweep)是最基础的GC算法,后续算法主要是该算法基础上的改进,主要分为两个步骤
标记堆中可被回收的对象
统一对被标记的对象的内存空间进行回收
该...
对象年龄分代
GC对于不同年龄的对象有不同的回收规则,其中对象根据根据其内部文件头的年龄计数器大体上被分为三类
内存空间
分代
堆
新生代(YoungGe...
概述Java内存模型(Java Memory Model)是为了避免不同操作系统之间内存模型的不同,从而导致多线程工作时的结果不一致问题。
一方面来说,由于不同CPU的Cache结构不同导致操作系统的内存模型不同,另一方面,操作系统会对代码进行指令重...
Mybatis是什么
Mybatis是一个Java的持久层框架,数据持久层(DAO层)是在程序中直接对数据库进行持久化操作的部分。JDK自身提供了访问数据库的接口API——JDBC,Mybatis本质上是对JDBC的封装。JDBC在开发过程中过于面向...