java基础

面向对象三大特征:
封装、继承、多态

使用类的格式:
类名 变量名 = new 类名();
使用类中的属性与方法格式
使用属性: 变量名.属性
使用方法: 变量名.方法()

8种基本类型对应的包装类

基本类型包装占内存位数
byteByte8位
shortShort16位
intInteger32位
longLong64位
floatFloat32位
doubleDouble64位
charCharacter16位
booleanBoolean未明确

特殊ASCII编码
数字0-9对应十进制为48-57
字母a-z对应十进制为97-122
字母A-Z对应十进制为65-90

Collecton接口常用的子接口有:
List接口、Set接口
List接口常用的子类有:ArrayList类、LinkedList类
Set接口常用的子类有:HashSet类、LinkedHashSet类

在这里插入图片描述
List:
ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快
LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合
Set:
HashSet集合,采用哈希表结构存储数据,保证元素唯一性的方式依赖于:hashCode()与equals()方法
HashSet下面有一个子类LinkedHashSet,它是链表和哈希表组合的一个数据存储结构,元素的存与取的顺序一致

Map集合:
HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法
LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法

Iterator(迭代器)屏蔽不同类型集合的遍历方法
并发修改异常解决办法:在迭代时,不要使用集合的方法操作元素。那么想要在迭代时对元素操作咋办?通过ListIterator迭代器操作元素是可以的,ListIterator的出现,解决了使用Iterator迭代过程中可能会发生的错误情况。

泛型:
指明了集合中存储数据的类型 <数据类型>
? 通配符
? extends Employee 限制的是父类, 上限限定, 可以传递Employee,传递他的子类对象
? super Employee 限制的是子类, 下限限定, 可以传递Employee,传递他的父类对象
例如:public static void iterator(ArrayList<? extends Employee> array){}

异常:
异常的根类是Throwable,其下有两个子类:Error与Exception,平常所说的异常指Exception
严重错误Error,无法通过处理的错误
编译时异常Exception,编译时无法编译通过。如日期格式化异常
运行时异常RuntimeException,是Exception的子类,运行时可能会报错,可以不处理。如空指针异常
如果Java没有提供你需要的异常,则可以自定义异常类。
定义方法:编译时异常继承Exception,运行时异常继承RuntimeException

编码表:其实就是生活中字符和计算机二进制的对应关系表。
1、ascii: 一个字节中的7位就可以表示。对应的字节都是正数。0-xxxxxxx
2、iso-8859-1:拉丁码表 latin,用了一个字节用的8位。1-xxxxxxx 负数。
3、GB2312:简体中文码表。包含6000-7000中文和符号。用两个字节表示。两个字节第一个字节是负数,第二个字节可能是正数
GBK:目前最常用的中文码表,2万的中文和符号。用两个字节表示,其中的一部分文字,第一个字节开头是1,第二字节开头是0
GB18030:最新的中文码表,目前还没有正式使用。
4、unicode:国际标准码表:无论是什么文字,都用两个字节存储。
Java中的char类型用的就是这个码表。char c = ‘a’;占两个字节。
Java中的字符串是按照系统默认码表来解析的。简体中文版 字符串默认的码表是GBK。
5、UTF-8:基于unicode,一个字节就可以存储数据,不要用两个字节存储,而且这个码表更加的标准化,在每一个字节头加入了编码信息(后期到api中查找)。
能识别中文的码表:GBK、UTF-8;正因为识别中文码表不唯一,涉及到了编码解码问题。
对于开发而言;常见的编码 GBK UTF-8 ISO-8859-1
文字—>(数字) :编码。 “abc”.getBytes() byte[]
(数字)—>文字 : 解码。 byte[] b={97,98,99} new String(b)

InputStreamReader isr = new InputStreamReader(new FileInputStream(“a.txt”));//默认字符集。
InputStreamReader isr = new InputStreamReader(new FileInputStream(“a.txt”),“GBK”);//指定GBK字符集。
FileReader fr = new FileReader(“a.txt”);
这三句代码的功能是一样的,其中第三句最为便捷。
注意:一旦要指定其他编码时,绝对不能用子类,必须使用字符转换流。什么时候用子类呢?
条件:
1、操作的是文件。
2、使用默认编码。
总结:
字节—>字符 : 看不懂的—>看的懂的。 需要读。输入流。 InputStreamReader
字符—>字节 : 看的懂的—>看不懂的。 需要写。输出流。 OutputStreamWriter

用于从流中读取对象的操作流 ObjectInputStream 称为 反序列化流
用于向流中写入对象的操作流 ObjectOutputStream 称为 序列化流
static 静态不能序列化
transient 瞬态关键字-------只要被transient修饰了,序列化时这个属性就不会被序列化了
定义序列号:
static final long serialVersionUID = 1L;

IO流总结
字节流

  1. 字节输入流 InputStream
    1 FileInputStream 操作文件的字节输入流
    2 BufferedInputStream高效的字节输入流
    3 ObjectInputStream 反序列化流
  2. 字节输出流 OutputStram
    1 FileOutputStream 操作文件的字节输出流
    2 BufferedOutputStream 高效的字节输出流
    3 ObjectOuputStream 序列化流
    4 PrintStream 字节打印流

字符流

  1. 字符输入流 Reader
    1 FileReader 操作文件的字符输入流
    2 BufferedReader 高效的字符输入流
    3 InputStreamReader 输入操作的转换流(把字节流封装成字符流)
  2. 字符输出流 Writer
    1 FileWriter 操作文件的字符输出流
    2 BufferedWriter 高效的字符输出流
    3 OutputStreamWriter 输出操作的转换流(把字节流封装成字符流)

常用方法:
读数据方法:

  1. read() 一次读一个字节或字符的方法
  2. read(byte[] char[]) 一次读一个数组数据的方法
  3. readLine() 一次读一行字符串的方法(BufferedReader类特有方法)
  4. readObject() 从流中读取对象(ObjectInputStream特有方法)

写数据方法:

  1. write(int) 一次写一个字节或字符到文件中
  2. write(byte[] char[]) 一次写一个数组数据到文件中
  3. write(String) 一次写一个字符串内容到文件中
  4. writeObject(Object ) 写对象到流中(ObjectOutputStream类特有方法)
  5. newLine() 写一个换行符号(BufferedWriter类特有方法)

向文件中写入数据的过程
1、创建输出流对象
2、写数据到文件
3、关闭输出流
从文件中读数据的过程
1、创建输入流对象
2、从文件中读数据
3、关闭输入流
文件复制的过程
1、创建输入流(数据源)
2、创建输出流(目的地)
3、从输入流中读数据
4、通过输出流,把数据写入目的地
5、关闭流

进程:进程指正在运行的程序
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程

创建线程的步骤:
1、定义类实现Runnable接口
2、覆盖接口中的run方法
3、创建Thread类的对象
4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数
5、调用Thread类的start方法开启线程

实现Runnable接口避免了单继承的局限性,所以较为常用。实现Runnable接口的方式,更加的符合面向对象,线程分为两部分,一部分线程对象,一部分线程任务。继承Thread类,线程对象和线程任务耦合在一起。一旦创建Thread类的子类对象,既是线程对象,有又有线程任务。实现runnable接口,将线程任务单独分离出来封装成对象,类型就是Runnable接口类型。Runnable接口对线程对象和线程任务进行解耦.

线程状态:
新建、运行、堵塞、休眠、等待、结束

Callable接口:
与Runnable接口功能相似,用来指定线程的任务。其中的call()方法,用来返回线程任务执行完毕后的结果,call方法可抛出异常

JavaBean:
JavaBean就是一个类,在开发中常用封装数据。具有如下特性

  1. 需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序
  2. 提供私有字段:private 类型 字段名
  3. 提供getter/setter方法
  4. 提供无参构造

DBCP连接池:
DataSource接口的实现类,我们要用的具体的连接池 BasicDataSource类

分类属性描述
必须项driverClassName数据库驱动名称
url数据库的地址
username用户名
password密码
基本项(扩展)maxActive最大连接数量
minIdle最小空闲连接
maxIdle最大空闲连接
initialSize初始化连接
扩展项maxWait超时等待时间以毫秒为单位 1000等于1秒

UDP/TCP:
UDP面向无连接协议
TCP面向连接的协议

UDP程序交互的流程
发送端
1、创建DatagramSocket对象
2、创建DatagramPacket对象,并封装数据
3、发送数据
4、释放流资源
接收端
1、创建DatagramSocket对象
2、创建DatagramPacket对象
3、接收数据存储到DatagramPacket对象中
4、获取DatagramPacket对象的内容
5、释放流资源

TCP程序交互的流程
客户端
1、创建客户端的Socket对象
2、获取Socket的输出流对象
3、写数据给服务器
4、获取Socket的输入流对象
5、使用输入流,读反馈信息
6、关闭流资源
服务器端
1、创建服务器端ServerSocket对象,指定服务器端端口号
2、开启服务器,等待着客户端Socket对象的连接,如有客户端连接,返回客户端的Socket对象
3、通过客户端的Socket对象,获取客户端的输入流,为了实现获取客户端发来的数据
4、通过客户端的输入流,获取流中的数据
5、通过客户端的Socket对象,获取客户端的输出流,为了实现给客户端反馈信息
6、通过客户端的输出流,写数据到流中
7、关闭流资源

反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法
获取Class对象的三种方式
方式一: 通过Object类中的getObject()方法"Person p = new Person();Class c = p.getClass();"
方式二: 通过 类名.class 获取到字节码文件对象(任意数据类型都具备一个class静态属性,看上去要比第一种方式简单
方式三: 通过Class类中的方法(将类名作为字符串传递给Class类中的静态方法forName即可
Class c3 = Class.forName(“Person”)
注意:第三种和前两种的区别
前两种你必须明确Person类型.
后面是指定这种类型的字符串就行.这种扩展更强.我不需要知道你的类.我只提供字符串,按照配置文件加载就可以了
反射优点:
1、速度快
2、节省了系统资源
3、利于今后拓展
反射就是把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、付费专栏及课程。

余额充值