Java复习

1.heap(堆)和stack(栈)有什么区别
1.Java对象分配在heap中,stack存放临时变量。
2.stack中对象或变量定义就可使用,应用程序结束自动释放。heap申请变量或者指针,new动态分配内存空间,free释放内存空间,Java垃圾回收机制自动释放内存。
3.Java自动管理stack和heap,不能直接设置。
4.stack存取速度比heap快。
5.stack线性集合,添加删除元素操作应在同一段完成。heap是stack的一个组成元素。

2.Java接口与C++的虚类的相同和不同之处
1.Java不支持多继承,接口具有更高的灵活性,接口属性默认public static,方法默认情况public,一个类可以实现多个接口。
2.C++虚类相当于Java抽象类,单一继承,多实现
3.抽象类具有构造方法,接口没有
4.抽象类权限全面,接口只有public default
5.都不能实例化!!!

3.Java异常处理机制的简单原理和应用
1.违反Java语义规则抛出异常,内置语义检查和自定义语义检查
2.异常都是java.lang.Throwable的子类
Error:错误
Exception:异常
3.try{
//可能发生异常代码
}catch(异常类型){
//发生异常处理方式
}finally{
//必须执行代码
}
4.常见异常:NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、NumberFormatException、StringIndexOutOfBoundsException、IOException、RuntimeException

4.垃圾回收的优点和原理,并考虑两种回收机制
1.Java不需要考虑内存管理,拥有自动垃圾回收机制。
2.垃圾回收有效防止内存泄漏,合理分配使用内存。
3.垃圾回收器作为单独的低级的线程运行。
4.不可预知情况下对内存堆中已经死亡或者长时间没有使用的对象进行清除,回收。
5.程序员不能实时对某个对象或所有对象调用垃圾回收器进行垃圾回收。
分类:分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

5.集合类有哪些,主要方法是什么?
1.java.util包含一系列重要集合类,Collection根类型
2.Iterator模式实现遍历集合
for(Iterator it = collection.iterator(); it.hasNext();){……}
3.Set: 无序、不能重复
HashSet,散列码实现hashCode()
TreeSet,二叉树排序,先把元素添加到HashSet再把集合转换为TreeSet进行有序遍历更快。
4.List:有序,可重复
LinkedList,允许null元素,没有同步方法,可被用作堆栈,队列,双向队列。基于链表的数据结构。
ArrayList,可变大小数组,允许所有元素,包括null,ArrayList没有同步。动态数组。
Vector,线程同步
5.Map:不重复的键到值的映射。改变、查询和提供可选视图。
HashMap,在Map中插入、删除和定位元素,HashMap最好,非同步,明确定义hashCode()。
TreeMap,适合顺序遍历键
HashTable,同步线程安全,key value不允许为null

6.JVM加载class文件的原理机制
1.JVM实现跨平台,内存存储
2.Class Loader,类加载器:加载类文件到内存,只负责加载,不判断是否能够运行,从硬盘读取到内存中。
3.Execution Engine,执行引擎:(解释器Interpreter)负责解释命令、提交操作系统执行。
4.Native Interface,本地接口,在Native Method Stack中登记native方法,在Execution Engine执行时加载native libraies
5.三大类加载器:
BootStrap Loader 负责加载系统类
ExtClass Loader 负责加载扩展类
AppClass Loader 负责加载应用类
BootstrapLoader <—(Extends)—-AppClassLoader <—(Extends)—-ExtClassLoader
6.Java编译 源文件转换为字节码文件;
通过Java虚拟机加载二进制码文件;
校验二进制码文件正确性;
解析二进制码文件;
分发给不同平台。

7.线程问题
反对使用stop(),不安全,它会解除由线程获取的所有锁定
suspend()方法容易发生死锁。
标志指出线程应该挂起用wait(),进入等待状态
标志指出线程应该恢复,则用notify()重新启动线程
sleep()和wait()的区别
sleep正在执行的线程主动让出cpu,去执行其他线程。sleep时间过后再继续执行
如果当前线程进入同步锁,sleep方法并不会释放锁。
wait进入同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,notify释放同步锁,但是notify后面的方法依旧执行。

8.面向对象的特征
1.继承:类可以在继承父类的方法和属性的情况下增加特有的属性和方法。
2.封装:类是相同属性和方法的封装体。
3.多态:定义为父类的对象可被赋值为其任何子类对象,并根据子类对象的不同而调用不同的方法。
4.抽象:将一类实体的共同特性抽象出来,封装在一个抽象类中。
9.This vs Super
1.this指当前的对象的引用,指向对象本身的一个指针。
2.super指父类成分,当前对象里面的父对象的引用。
3.在类的构造方法中通过this语句调用另一个构造方法
4.父类没有提供无参构造,super指导子类调用父类中的其他构造方法。
this.成员变量 调用本类的成员变量
super.成员变量 调用父类的成员变量
this.成员方法 调用本类的成员方法
super.成员方法 调用父类的成员方法
10.单态模式
1.饿汉式:
利用static的特性,提前初始化,并且只是初始化一次,保存一份,永驻内存。

public class SingleOne{
    //使用的时static属性,初始化一次,永驻内存
    private static SingleOne singleone = new SingleOne();
    // 定义一个活的singleone的对象的方法--->提供给外部进行获得SingleOne类的对象。
    public static SingleOne getInstance(){
        return singleone;
    }
    // 手动定义一个private方法
    private SingleOne() {
    }
}

2.懒汉式:

public class SingleTwo{
    private static SingleTwo singletwo = null;
    // 提供一个对外可以获得当前这个类的对象的方法
    public synchronized static SingleTwo getInstance(){
        if(singletwo == null){
            singletwo = new SingleTwo();
                }
        return singletwo;
    }
    private SingleTwo(){
    }
}

11.return语句调用先于finally执行

public  class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(new Test().test());;
    }

    int test()
    {
        try
        {
            return func1();
        }
        finally
        {
            return func2();
        }
    }

    int func1()
    {
        System.out.println("func1");
        return 1;
    }
    int func2()
    {
        System.out.println("func2");
        return 2;
    }   
}
-----------执行结果-----------------

func1
func2
2

try中的return语句调用的函数先于finally中调用的函数执行,return并不是让函数直接返回,而是return语句执行之后,将返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正返回。

线程死锁
引发死锁同时满足四个条件:
互斥:线程使用的资源至少有一个不能共享
持有与等待:至少有一个线程持有资源,并且等待获取其他线程持有的资源
非抢占式:如果一个线程已经持有一个资源,如果它不释放资源,其他资源不可获得
循环等待:第一个线程等待第二个线程持有资源,第二个线程等待第三个线程持有资源……第n个线程等待第一个线程持有资源,形成等待。

内存泄漏
定义:一个不再被程序使用的对象或变量一直被占据在内存中。
Java使用有向图的方式进行垃圾回收管理,可以消除引用循环问题。
Java内存泄露情况:长生命周期的对象持有短生命周期对象的引用。一个对象无用却无法被垃圾回收机制回收。

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值