JavaSE——Day04

本文深入浅出地介绍了面向对象编程的基础概念,包括类的定义、属性与方法,构造方法的使用,以及方法的重载和构造方法的重载。通过实例讲解,展示了如何在Java中创建内存对象并理解栈与堆的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、面向对象基础

1.1、面向对象思想

面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,是一种对现
实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象三个特征:封装性,继承性,多态性
面向对象三个概念:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象程序)

1.2类

类表示一个共性的产物,是一个综合的特征,而对象,是一个个性的产物,是一个个体的特征。(类似生活中的图纸与实物的概念。)
类必须通过对象才可以使用,对象的所有操作都在类中定义。
类由属性和方法组成:
· 属性:就相当于人的一个个的特征
· 方法:就相当于人的一个个的行为,例如:说话、吃饭、唱歌、睡觉

1.3 创建内存对象分析

1.3.1 栈

栈是一个先进后出的存储空间,存放的是基本数据类型的数据和引用数据类型的引用。因为存储数据大小受到限制,所以大数据存放在堆中。

1.3.2 堆

堆存放的是对象,堆与栈内存不同的地方是,堆在开辟内存空间的时候不需要关心开辟多大,也不需要关注内存的占用时长。堆内存的释放由GC完成。Java语言通过new关键字来在堆中开辟一个内存空间。

1.4 构造方法

作用:用作对象的初始化。

格式:类名(){}

如果自定义的方法不带构造函数,会自动生成一个无参的构造函数(建议在自定义方法的时候添加一个无参的构造函数)。如果自定义了一个带参的构造函数,不会自动生成无参的构造函数。(建议当自定义类中有非常量的属性时,定义一个全属性的构造函数)

PS:构造函数不带返回值。

1.5方法的重载

一个类中的定义的方法,是可以重载的

方法的重载要求:

1、方法名称相同

2参数类型或参数长度不同,或者参数类型顺序不同

作用:可以提高代码的复用率,提高了灵活性

PS:方法的重载与返回值无关!
方法的重载 ,可以让我们在不同的需求下, 通过传递不同的参数调用方法来完成具体的功能。

1.6 构造方法的重载

构造方法的重载要求:

1、构造方法名一致

2、参数列表长度或者类型不同

作用:对不同的对象使用不同的构造方法,调用不同的方法完成初始化。提高了灵活性

1.7匿名对象

对象引用不给予名字成为匿名对象。使用一次后被GC释放。

适用范围:只使用一次对象
2021年8月17日

### 大模型对齐微调DPO方法详解 #### DPO简介 直接偏好优化(Direct Preference Optimization, DPO)是一种用于改进大型语言模型行为的技术,该技术通过结合奖励模型训练和强化学习来提升训练效率与稳定性[^1]。 #### 实现机制 DPO的核心在于它能够依据人类反馈调整模型输出的概率分布。具体来说,当给定一对候选响应时,DPO试图使更受偏好的那个选项具有更高的生成概率。这种方法不仅简化了传统强化学习所需的复杂环境设置,而且显著增强了模型对于多样化指令的理解能力和执行精度[^2]。 #### PAI平台上的实践指南 为了便于开发者实施这一先进理念,在PAI-QuickStart框架下提供了详尽的操作手册。这份文档覆盖了从环境配置直至完成整个微调流程所需的一切细节,包括但不限于数据准备、参数设定以及性能评估等方面的内容。尤其值得注意的是,针对阿里云最新发布的开源LLM——Qwen2系列,文中给出了具体的实例说明,使得即使是初次接触此类工作的用户也能顺利上手。 ```python from transformers import AutoModelForCausalLM, Trainer, TrainingArguments model_name_or_path = "qwen-model-name" tokenizer_name = model_name_or_path training_args = TrainingArguments( output_dir="./results", per_device_train_batch_size=8, num_train_epochs=3, ) trainer = Trainer( model_init=lambda: AutoModelForCausalLM.from_pretrained(model_name_or_path), args=training_args, train_dataset=train_dataset, ) # 假设已经定义好了train_dataset trainer.train() ``` 这段代码片段展示了如何使用Hugging Face库加载预训练模型并对其进行微调的过程。虽然这里展示的例子并不完全对应于DPO的具体实现方式,但它提供了一个基础模板供进一步定制化开发之用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值