小猫的java基础知识点汇总(下)

1、线程和进程有什么区别?

进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。

不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。

2、如何在Java中实现线程?

继承Thread类
class Handler extends Thread{public void run(){//方法重写}public static void main(String[] args){Thread thread = new Handler();//创建线程对象thread.start();//启动线程}
}
实现Runnable接口
class Handler implements Runnable{public void run(){//方法实现}public static void main(String[] args){Handler handler = new Handler();Thread thread = new Thread(handler);//创建线程对象thread.start();//启动线程}
}

3、Java 关键字volatile 与 synchronized 作用与区别?

    1,volatile
    它所修饰的变量不保留拷贝,直接访问主内存中的。
在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。

为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变 量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory中的值,或者main memory中的值不一致的情况。 

一个变量声明为volatile,就意味着这个变量是随时会被其他线程修改的,因此不能将它cache在线程memory中。
    2,synchronized

当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。

一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。

二、当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。

三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有synchronized(this)同步代码块的访问将被阻塞。

4、线程生命周期?

新建一个线程时,它的状态是New。当我们调用线程的start()方法时,状态被改变为Runnable。线程调度器会为Runnable线程池中的线程分配CPU时间并且将它们的状态改变为Running。其他的线程状态还有Waiting,Blocked 和Dead

5、死锁?

指多个进程在运行过程中因争夺资源而造成的一种僵局,当处于这种状态时,若无外力作用,它们都将无法再向前推进。

原因可归结为两点:竞争资源、 进程间推进顺序非法
产生死锁的必要条件:

互斥条件:在一段时间内某资源仅为一进程所占用。
请求和保持条件:对已获得的资源保持不放。
不剥夺条件:已获得的资源只能由自己释放。
环路等待条件:存在一个进程--资源的环形链。

6、什么是线程池? 为什么要使用它?

创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。

线程池实现了线程重复利用,节约了时间和资源。

// Java线程池的完整构造函数
public ThreadPoolExecutor(int corePoolSize, // 线程池长期维持的线程数,即使线程处于Idle状态,也不会回收。int maximumPoolSize, // 线程数的上限long keepAliveTime, TimeUnit unit, // 超过corePoolSize的线程的idle时长,// 超过这个时间,多余的线程会被回收。BlockingQueue<Runnable> workQueue, // 任务的排队队列ThreadFactory threadFactory, // 新线程的产生方式RejectedExecutionHandler handler) // 拒绝策略

7、反射?

JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

8、JDK 、 JRE 、JVM有什么区别和联系?

JVM : Java 虚拟机。能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心。

JRE :Java 运行时环境。包含两个部分,jvm和 Java 的一些基本类库。

JDK :Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。

这三者的关系是:一层层的嵌套关系。JDK>JRE>JVM。

9、深拷贝浅拷贝

      数据类型分为两种基础类型和引用类型:

基础类型:像Number、String、Boolean等这种为基本类型
引用类型:Object和Array

浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,修改其中任意的值,另一个值会随之变化

深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变。

10、JVM内存分为哪几部分?各个部分的作用是什么?

JVM内存区域分为五个部分,分别是堆,方法区,虚拟机栈,本地方法栈,程序计数器。


1)堆。

堆是Java对象的存储区域,任何用new字段分配的Java对象实例和数组。
2)方法区。

它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据,方法区,从JDK1.8永久代被移除。
3)虚拟机栈。

虚拟机栈中执行每个方法的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
4)本地方法栈。

与虚拟机栈发挥的作用相似,相比于虚拟机栈为Java方法服务,本地方法栈为虚拟机使用的Native方法服务,执行每个本地方法的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
5)程序计数器。

指示Java虚拟机下一条需要执行的字节码指令。

总:其中方法区和堆被JVM中多个线程共享,比如类的静态常量就被存放在方法区,供类对象之间共享,虚拟机栈,本地方法栈,pc寄存器是每个线程独立拥有的,不会与其他线程共享。

11、为什么会出现4.0-3.6=0.40000001这种现象?

2进制的小数无法精确的表达10进制小数,在计算10进制小数的过程中要先转换为2进制进行计算,这个过程中出现误差。

12、“==”比较的是什么?

“==”两边是对象,比较地址。

“==”两边是基本类型,比较数值。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小猫的java基础知识点汇总(上)

1、一个".java"源文件中是否可以包括多个类&#xff08;不是内部类&#xff09;&#xff1f;有什么限制&#xff1f; 可以有多个类&#xff0c;但只能有一个public的类&#xff0c;并且public的类名必须与文件名相一致。 2、short s1 1; s1 s11; 有没有错&#xff…

后端 分页组件实例

/*** 分页相关信息*/ public class Page {//当前页码private int current1;//显示的上限private int limit10;//数据总数//用于计算页数private int rows;//路径private String path;public int getCurrent() {return current;}public void setCurrent(int current) {if (curre…

大数据学习(07)--MapReduce

文章目录目录1.MapReduce介绍1.1 什么是分布式并行编程&#xff1f;1.2 MapReduce模型介绍1.3 map和reduce函数2.MapReduce体系架构3.MapReduce工作流程3.1 概述3.2 MapReduce各个阶段介绍3.3 shuffle过程介绍3.3.1 shuffle过程简介3.3.2 map中的shuffle过程3.3.3 reduce中的sh…

Pytorch(4)-模型保存-载入-eval()

模型保存与提取1. 整个模型 保存-载入2. 仅模型参数 保存-载入3. GPU/CPU模型保存与导入4. net.eval()--固定模型随机项神经网络模型在线训练完之后需要保存下来&#xff0c;以便下次使用时可以直接导入已经训练好的模型。pytorch 提供两种方式保存模型:方式1&#xff1a;保存整…

大数据学习(08)--Hadoop中的数据仓库Hive

文章目录目录1.什么是数据仓库&#xff1f;1.1数据仓库概念1.2传统数据仓库面临的挑战1.3 Hive介绍1.4 Hive与传统数据库的对比1.5 Hive在企业中的部署与应用2.Hive系统架构3.Hive工作原理3.1 SQL转换为MapReduce作业的基本原理3.2 Hive中SQL查询转换MapReduce作业的过程4.Hive…

dubbo知识点总结 持续更新

Dubbo 支持哪些协议&#xff0c;每种协议的应用场景&#xff0c;优缺点&#xff1f;  dubbo&#xff1a; 单一长连接和 NIO 异步通讯&#xff0c;适合大并发小数据量的服务调用&#xff0c; 以及消费者远大于提供者。传输协议 TCP&#xff0c;异步&#xff0c;Hessian 序列化…

无限踩坑系列(6)-mySQL数据库链接错误

mySQL数据库链接错误错误1错误2长链接短连接应用场景需要一直访问mySQL数据库&#xff0c;遇到如下错误&#xff1a;错误1 释放已经释放的数据库链接conn.&#xff0c;或者&#xff0c;操作已经释放的数据库链接conn.或者失去链接后再操作数据库都可能会报这个错误 aise err.I…

初探函数式编程和面对对象式编程

文章目录目录1.函数式编程和面向对象编程概念1.1 函数式编程1.2 面向对象编程2.函数式编程和面向对象编程的优缺点2.1 函数式编程优点缺点2.2 面对对象编程优点缺点3.为什么在并行计算中函数式编程比较好3.1 什么是并行计算3.2 函数式编程兴起原因目录 1.函数式编程和面向对象…

搜索详解

搜索 一.dfs和bfs简介 深度优先遍历(dfs) 本质&#xff1a; 遍历每一个点。 遍历流程&#xff1a; 从起点开始&#xff0c;在其一条分支上一条路走到黑&#xff0c;走不通了就往回走&#xff0c;只要当前有分支就继续往下走&#xff0c;直到将所有的点遍历一遍。 剪枝&a…

特征工程总结

目录1 特征工程是什么&#xff1f; 2 数据预处理   2.1 无量纲化     2.1.1 标准化     2.1.2 区间缩放法     2.1.3 标准化与归一化的区别   2.2 对定量特征二值化   2.3 对定性特征哑编码   2.4 缺失值计算   2.5 数据变换 3 特征选择   3.1 Filter …

Jmeter测试并发https请求成功了

Jmeter2.4 如何测试多个并发https请求&#xff0c;终于成功了借此机会分享给大家 首先要安装jmeter2.4版本的&#xff0c;而且不建议大家使用badboy&#xff0c;因为这存在兼容性问题。对于安装&#xff0c;我就不讲了&#xff0c;我就说说如何测试https&#xff0c;想必大家都…

关系数据库——sql基础1定义

关系数据库标准语言SQL 基本概念 SQL语言是一个功能极强的关系数据库语言。同时也是一种介于关系代数与关系演算之间的结构化查询语言&#xff08;Structured Query Language&#xff09;&#xff0c;其功能包括数据定义、数据查询、数据操纵和数据控制。 SQL的特点&#xff…

大数据学习(09)--Hadoop2.0介绍

文章目录目录1.Hadoop的发展与优化1.1 Hadoop1.0 的不足与局限1.2 Hadoop2.0 的改进与提升2.HDFS2.0 的新特性2.1 HDFS HA2.2 HDFS Federation3. 新一代的资源管理器YARN3.1 MapReduce1.0 缺陷3.2 YARN的设计思路3.3 YARN 体系结构3.4 YARN工作流程3.5 YARN框架与MapReduce1.0框…

Java多线程常用方法

start()与run() start() 启动线程并执行相应的run()方法 run() 子线程要执行的代码放入run()方法 getName()和setName() getName() 获取此线程的名字 setName() 设置此线程的名字 isAlive() 是判断当前线程是否处于活动状态。活动状态就是已经启动尚未终止。 curren…

MachineLearning(2)-图像分类常用数据集

图像分类常用数据集1 CIFAR-102.MNIST3.STL_104.Imagenet5.L-Sun6.caltech-101在训练神经网络进行图像识别分类时&#xff0c;常会用到一些通用的数据集合。利用这些数据集合可以对比不同模型的性能差异。下文整理常用的图片数据集合&#xff08;持续更新中)。基本信息对比表格…

大数据学习(09)--spark学习

文章目录目录1.spark介绍1.1 spark介绍1.2 scale介绍1.3 spark和Hadoop比较2.spark生态系统3.spark运行框架3.1 基本概念3.2 架构的设计3.3 spark运行基本流程3.4 spark运行原理3.5 RDD运行原理3.5.1 设计背景3.5.2 RDD概念和特性3.5.3 RDD之间的依赖关系3.5.4 stage的划分3.5.…

机器学习中的聚类方法总结

聚类定义 定义 聚类就是对大量未知标注 的数据集&#xff0c;按数据 的内在相似性将数据集划分为多个类别&#xff0c;使 类别内的数据相似度较大而类别间的数据相 似度较小。是无监督的分类方式。 聚类思想 给定一个有N个对象的数据集&#xff0c;构造数据的k 个簇&#x…

关系数据库——关系数据语言

关系 域&#xff1a;一组具有相同数据类型的值的集合&#xff08;即取值范围&#xff09; 笛卡尔积&#xff1a;域上的一种集合运算。结果为一个集合&#xff0c;集合的每一个元素是一个元组&#xff0c;元组的每一个分量来自不同的域。 基数&#xff1a;一个域允许的不同取值…

机器学习问题总结(01)

文章目录1.请描述推荐系统中协同过滤算法CF的原理2.请描述决策树的原理、过程、终止条件&#xff0c;以及如何防止过拟合2.1决策树生成算法2.2 剪枝处理&#xff08;防止过拟合&#xff09;2.3 停止条件2.4 棵决策树的生成过程2.5 决策树的损失函数3.请描述K-means的原理&#…

Python实例讲解 -- 解析xml

Xml代码 <?xml version"1.0" encoding"utf-8"?> <info> <intro>信息</intro> <list id001> <head>auto_userone</head> <name>Jordy</name> <number&g…