当前位置: 首页 > news >正文

学习日志09 java

我要(ง •_•)ง!!

1 面向对象里面的编程的属性,其实就是变量啦

在面向对象编程里,“属性”(Attribute)也被叫做 “成员变量” 或者 “字段”(Field),指的是类中用来存储对象状态数据的变量。在这个题目里,Student类和Undergraduate类的属性分别如下:

Student类的属性

  • name:类型为String,用来存储学生的姓名。
  • age:类型为int,用来存储学生的年龄。

Undergraduate类的属性

  • 继承自Student类的属性:
    • name:存储本科生的姓名。
    • age:存储本科生的年龄。
  • 自身特有的属性:
    • major:类型为String,用来存储本科生的专业。

而题目中提到的show()方法,它的作用是输出对象的属性信息。也就是说,show()方法会把对象里各个属性的值组合成特定格式的字符串并返回。

代码示例说明属性与show()方法的关系

以下是结合你提供代码的简单说明:

Student

java

package PTA_training.Demo3_4;public class Student {protected String name;protected int age;public Student(String name, int age) {this.name = name;this.age = age;}public String show() {return "Student[name=" + name + ",age=" + age + "]";}
}

Student类中,nameage就是属性。show()方法将这两个属性的值组合成"Student[name=XXX,age=XX]"格式的字符串。

Undergraduate

java

package PTA_training.Demo3_4;public class Undergraduate extends Student {private String major;public Undergraduate(String name, int age, String major) {super(name, age);this.major = major;}public String show() {return "Undergraduate[name=" + name + ",age=" + age + ",major=" + major + "]";}
}

Undergraduate类中,除了继承自Student类的nameage属性,还有自身的major属性。show()方法会把这三个属性的值组合成"Undergraduate[name=XXX,age=XXX,major=XXX]"格式的字符串。

2 关于java里面的equals方法

在 Java 中,equals()方法是一个基础且重要的方法,主要用于比较两个对象是否相等。下面从多个方面对它进行详细介绍:

1. 方法定义

equals()方法在Object类中被定义,这意味着 Java 里的所有类都会继承该方法。其原始定义如下:

java

public boolean equals(Object obj) {return (this == obj);
}

可以看到,默认情况下,equals()方法比较的是两个对象的引用是否相同,也就是它们是否指向内存中的同一个对象。

2. 重写 equals () 方法

通常,我们需要根据对象的内容来判断它们是否相等,这时就需要重写equals()方法。比如:

java

public class Person {private String name;private int age;@Overridepublic boolean equals(Object obj) {if (this == obj) return true;if (obj == null || getClass() != obj.getClass()) return false;Person person = (Person) obj;return age == person.age && name.equals(person.name);}
}

3. 重写 equals () 的规范

在重写equals()方法时,需要遵循以下几个原则:

  • 自反性:对于任何非空引用值xx.equals(x)都应返回true
  • 对称性:若x.equals(y)返回true,那么y.equals(x)也应返回true
  • 传递性:若x.equals(y)true,且y.equals(z)true,那么x.equals(z)也应为true
  • 一致性:只要对象的关键属性没有改变,多次调用equals()方法应返回相同的结果。
  • 非空性:对于任何非空引用值xx.equals(null)应返回false

4. 与 "==" 的区别

  • ==:用于比较两个引用是否指向同一个对象,或者比较基本数据类型的值是否相等。
  • equals():在未被重写时,功能和==一样;重写后,可用于比较对象的内容是否相同。

5. 重写 equals () 时必须重写 hashCode ()

根据Object类的规范,如果两个对象通过equals()方法比较是相等的,那么它们的hashCode()返回值也必须相同。因此,重写equals()方法时,必须同时重写hashCode()方法,以保证这一规范的实现

java

@Override
public int hashCode() {return Objects.hash(name, age);
}

6. 常见错误

  • 未重写 equals ():直接使用默认的引用比较,可能无法满足业务需求。
  • 参数类型错误:若方法签名写成public boolean equals(Person other),这并不是对equals()方法的重写,而是定义了一个新方法。
  • 遗漏 null 或类型检查:可能会导致NullPointerException或比较逻辑出错。

7. 工具生成 equals ()

现代 IDE(如 IntelliJ IDEA、Eclipse)能够自动生成equals()hashCode()方法。此外,Lombok 库可以通过注解(如@EqualsAndHashCode)来自动生成这些方法。

8. 特殊类的 equals () 方法

  • 包装类(如 Integer、String):重写了equals()方法,用于比较对象的值。

    java

    Integer a = 1000;
    Integer b = 1000;
    System.out.println(a.equals(b)); // 输出true
    System.out.println(a == b);      // 输出false(装箱后的对象引用不同)
    
  • 数组:使用Arrays.equals()来比较数组内容,直接调用equals()比较的是引用。

    java

    int[] arr1 = {1, 2, 3};
    int[] arr2 = {1, 2, 3};
    System.out.println(arr1.equals(arr2));        // 输出false
    System.out.println(Arrays.equals(arr1, arr2)); // 输出true
    

总结

equals()方法是 Java 中用于对象内容比较的重要方法。在实际开发中,为了让对象能够按照业务逻辑进行相等性判断,我们通常需要重写该方法,并且要遵循相关规范,同时重写hashCode()方法。这样可以确保对象在集合操作(如 HashMap、HashSet)中能够正常工作。

4 和equals方法类似的相关的方法

是的,在 Java 中还有一些与equals()方法类似或相关的方法,它们在不同场景下用于比较对象或数据。以下是几个重要的相关方法:

1. hashCode()

  • 作用:返回对象的哈希码(整数),主要用于哈希表(如HashMapHashSet)。
  • equals()的关系
    • 如果两个对象通过equals()比较相等,则它们的hashCode()必须相同。
    • 如果hashCode()不同,则对象一定不相等(无需再调用equals())。
  • 示例

    java

    @Override
    public int hashCode() {return Objects.hash(name, age); // 根据属性计算哈希码
    }
    

2. compareTo()Comparable接口)

  • 作用:定义对象之间的自然排序规则,返回负数、零或正数表示当前对象 “小于”、“等于” 或 “大于” 另一个对象。
  • 适用场景:用于排序(如Collections.sort()Arrays.sort())或实现有序集合(如TreeSetTreeMap)。
  • 示例

    java

    public class Person implements Comparable<Person> {private String name;private int age;@Overridepublic int compareTo(Person other) {return Integer.compare(this.age, other.age); // 按年龄排序}
    }
    
  • equals()的关系:若compareTo()返回 0,建议equals()也返回true,但这不是强制要求(如BigDecimal)。

3. Objects.equals()

  • 作用:null 安全的equals()方法,避免NullPointerException
  • 示例

    java

    String a = null;
    String b = null;
    System.out.println(Objects.equals(a, b)); // 输出true,无需手动检查null
    

4. Arrays.equals()

  • 作用:比较数组的内容是否相等(支持多维数组,需用Arrays.deepEquals())。
  • 示例

    java

    int[] arr1 = {1, 2, 3};
    int[] arr2 = {1, 2, 3};
    System.out.println(Arrays.equals(arr1, arr2)); // 输出true
    

5. deepEquals()Objects类)

  • 作用:递归比较对象或数组的内容,适用于嵌套结构(如多维数组)。
  • 示例

    java

    Object[] arr1 = { new int[]{1, 2}, new int[]{3, 4} };
    Object[] arr2 = { new int[]{1, 2}, new int[]{3, 4} };
    System.out.println(Objects.deepEquals(arr1, arr2)); // 输出true
    

6. instanceof 关键字

  • 作用:检查对象是否是某个类或接口的实例。
  • 示例

    java

    if (obj instanceof String) {String str = (String) obj; // 安全类型转换
    }
    

7. isAssignableFrom()Class类)

  • 作用:判断一个类是否是另一个类的父类或接口。
  • 示例

    java

    List.class.isAssignableFrom(ArrayList.class); // 返回true(ArrayList实现了List)
    

8. ReferenceEquals()Object类,Java 9+)

  • 作用:等同于==,直接比较对象引用。
  • 示例

    java

    Object a = new Object();
    Object b = a;
    System.out.println(Object.referenceEquals(a, b)); // 输出true
    

总结

方法 / 关键字比较维度null 安全适用场景
equals()对象内容自定义对象相等性判断
hashCode()哈希值(配合equals哈希表(如 HashMap)
compareTo()自然排序排序和有序集合
Objects.equals()对象内容可能为 null 的对象比较
Arrays.equals()数组内容部分是一维数组比较
Objects.deepEquals()嵌套对象内容多维数组或嵌套结构比较
instanceof类型兼容性类型检查和转换
isAssignableFrom()类层次关系反射和泛型编程

根据具体场景选择合适的比较方法,可以避免NullPointerException、提高代码健壮性,并确保集合操作的正确性。

5 为java的面向编程里面的属性设置get/set方法是为什么?

它把类的内部实现和外部接口分离开来,增强了代码的安全性、可维护性和可扩展性。

在 Java 面向对象编程里,为类属性设置getset方法(也就是访问器和修改器)是很关键的封装实践,主要目的如下:

1. 访问控制

借助get/set方法,能够对属性的读写权限进行精确控制。比如,把属性设为private,仅允许通过特定方法访问,这样可以防止外部代码随意修改对象状态。

java

public class Person {private int age; // 私有属性public int getAge() { // 提供只读访问return age;}
}

2. 数据验证

set方法中,可以添加验证逻辑,保证输入数据是合法的。

java

public void setAge(int age) {if (age >= 0) { // 验证逻辑this.age = age;} else {throw new IllegalArgumentException("年龄不能为负数");}
}

3. 解耦实现细节

外部代码只需通过方法来获取或修改数据,不用关心内部的实现方式。要是后续需要对实现进行修改,比如更改数据存储格式,也不会影响外部调用。

java

// 原本直接返回属性
public Date getBirthDate() {return birthDate;
}// 改为返回计算后的年份,调用方无需修改
public int getBirthYear() {return birthDate.getYear() + 1900;
}

4. 增强安全性

可以避免直接暴露对象内部状态,降低被恶意修改的风险。

java

private List<String> secrets = new ArrayList<>();public List<String> getSecrets() {return new ArrayList<>(secrets); // 返回副本,防止外部修改原列表
}

5. 实现高级功能

在方法中能够添加额外的逻辑,像缓存、日志记录、事件触发等。

java

private int counter = 0;public void increment() {counter++;notifyObservers(); // 计数器更新时通知观察者
}

自动生成工具

现代 IDE(如 IntelliJ IDEA、Eclipse)可以自动生成get/set方法,减少了手动编写的工作量。例如:

java

public class User {private String name;private int id;// IDE自动生成的getter和setterpublic String getName() { return name; }public void setName(String name) { this.name = name; }public int getId() { return id; }public void setId(int id) { this.id = id; }
}

总结

get/set方法是实现封装的重要手段,它把类的内部实现和外部接口分离开来,增强了代码的安全性、可维护性和可扩展性。在设计类时,除非有特殊原因,否则建议将属性设为私有,并通过公共方法来控制访问。

6 equals的括号里面只可以写 Object obj 吗? 是的!

在 Java 中,重写equals方法时,参数类型必须是Object

!!!!!!!!!!这是因为equals方法是在java.lang.Object类中定义的,其签名为:

java

public boolean equals(Object obj)

当你在子类中重写这个方法时,必须保持方法签名完全一致(包括参数类型、返回类型和访问修饰符),否则就不是重写(override),而是重载(overload)一个新方法。重载的方法不会被Object.equals()的多态机制调用,导致你的比较逻辑失效。

错误示例(重载而非重写)❌的!!!!

以下代码会创建一个新的equals方法,而不是重写父类的方法:

java

// 错误!这是重载,不是重写
public boolean equals(Teacher other) { // 参数类型是 Teacher,不是 Objectreturn this.no.equals(other.no);
}

这种写法会导致以下问题:

  1. 当你调用teacher1.equals(teacher2)时,如果teacher2被声明为Object类型,实际执行的是Object.equals(),而非你定义的方法。
  2. 违反了equals方法的对称性原则(a.equals(b)b.equals(a)可能结果不同)。

正确示例(重写)✔的哦~~~~~~

java

@Override
public boolean equals(Object obj) {if (this == obj) return true;if (obj == null || !(obj instanceof Teacher)) return false;Teacher other = (Teacher) obj;return this.no.equals(other.no);
}

为什么必须是Object

Java 的多态机制依赖于方法签名的一致性。当你调用obj.equals(other)时:

  1. 编译时:编译器只知道objObject类型,因此会查找Object.equals(Object)方法。
  2. 运行时:根据obj的实际类型(如Teacher),动态调用其重写的equals(Object)方法。

如果参数类型不是Object,编译器会认为这是一个全新的方法,无法通过多态调用。

总结

  • 重写equals时,参数必须是Object类型
  • 如果使用其他参数类型(如Teacher),会导致方法重载,而非重写,从而使equals失效。
  • 重写时建议添加@Override注解,让编译器帮你检查方法签名是否正确。

相关文章:

学习日志09 java

我要(ง •_•)ง&#xff01;&#xff01; 1 面向对象里面的编程的属性&#xff0c;其实就是变量啦 在面向对象编程里&#xff0c;“属性”&#xff08;Attribute&#xff09;也被叫做 “成员变量” 或者 “字段”&#xff08;Field&#xff09;&#xff0c;指的是类中用来存…...

深入解析Spring Boot与微服务架构:从入门到实践

深入解析Spring Boot与微服务架构&#xff1a;从入门到实践 引言 随着云计算和分布式系统的普及&#xff0c;微服务架构已成为现代软件开发的主流模式。Spring Boot作为Java生态中最受欢迎的框架之一&#xff0c;为开发者提供了快速构建微服务的强大工具。本文将深入探讨Spri…...

25考研经验贴(11408)

声明&#xff1a;以下内容都仅代表个人观点 数学一&#xff08;130&#xff09; 25考研数学一难度介绍&#xff1a;今年数学一整体不难&#xff0c;尤其是选填部分&#xff0c;大题的二型线面和概率论大题个人感觉比较奇怪&#xff0c;其他大题还是比较容易的。.26如何准备&a…...

Linux运行时的参数、命令、网络、磁盘参数和日志监控

一、监控 1. free 功能&#xff1a;用于查看系统内存使用情况&#xff0c;包括物理内存总量、已用内存、空闲内存、缓冲区&#xff08;buffer&#xff09;和缓存&#xff08;cache&#xff09;占用&#xff0c;以及交换内存&#xff08;swap&#xff09;的使用与剩余情况。常…...

Spring Boot循环依赖的陷阱与解决方案:如何打破“Bean创建死循环”?

引言 在Spring Boot开发中&#xff0c;你是否遇到过这样的错误信息&#xff1f; The dependencies of some of the beans in the application context form a cycle 这表示你的应用出现了循环依赖。尽管Spring框架通过巧妙的机制解决了部分循环依赖问题&#xff0c;但在实际开…...

如何打造MVP(最小可行性产品)(MVP=核心功能+快速验证+用户反馈+持续迭代)

文章目录 **一、MVP的核心原则**1. **聚焦核心价值**2. **快速迭代**3. **低成本验证** **二、MVP的打造步骤****1. 定义目标用户和核心需求****2. 确定MVP的核心功能**- **筛选关键功能**&#xff1a;1. 用户是否愿意为这个功能付费&#xff1f;2. 实现该功能的技术难度和成本…...

conda init执行了还是不好用

按照gpt的方法&#xff0c;还是方法一&#xff1a;以管理员身份运行 PowerShell 并设置执行策略 好用 你遇到的问题是典型的 Conda 环境激活失败 错误&#xff0c;提示如下&#xff1a; CondaError: Run conda init before conda activate但你已经运行了 conda init&#xff…...

crontab 定时任务不执行问题排查

*/5 * * * * sh /data03/jq/sparkjob.sh 定时任务不执行&#xff01; Cron默认丢弃输出&#xff0c;错误信息无法查看。 将输出和错误重定向到日志文件&#xff1a; /bin/sh /data03/jq/sparkjob.sh >> /tmp/sparkjob.log 2>&1 检查日志文件 /tmp/sparkjob.log 定…...

require/exports 或 import/export的联系和区别,各自的使用场景

以下是 require/exports&#xff08;CommonJS&#xff09;与 import/export&#xff08;ES6 Modules&#xff09;的对比分析及使用场景说明&#xff1a; 一、核心联系‌ ‌模块化目标‌ 两者都用于实现代码模块化&#xff0c;解决全局作用域污染和依赖管理问题。 ‌跨环境适配‌…...

如何更改远程桌面连接的默认端口?附外网访问内网计算机方法

远程连接端口根据协议和场景不同有所差异&#xff0c;以下是常见远程连接端口的设置及修改方法&#xff0c;同时附外网访问内网计算机操作。 一、Windows远程桌面默认端口 ‌默认端口‌&#xff1a;3389&#xff08;TCP协议&#xff09;&#xff0c;用于Windows远程桌面服务&…...

模拟jenkins+k8s自动化部署

参考 Jenkins+k8s实现自动化部署 - 掘金 手把手教你用 Jenkins + K8S 打造流水线环境 - 简书 安装插件 调整插件升级站点 (提高插件下载速度) 默认地址 https://updates.jenkins.io/update-center.json 新地址 http://mirror.xmission.com/jenkins/updates/update-center.json …...

Jenkins教程

参考 Jenkins 用户手册 Jenkins User Documentation 在项目创建Jenkinsfile文件 添加分支源 报错 不自动拉取分支,改为手工指定分支 又报了一个错, 解决方法,参考: Jenkins中连接Git仓库时提示:无法连接仓库:Error performing git command: git ls-remote -h_霸道流…...

从验证码绕过到信息轰炸:全面剖析安全隐患与防范策略

在数字化交互场景中&#xff0c;验证码作为区分人类操作与自动化程序的核心屏障&#xff0c;广泛应用于用户身份核验、操作权限确认等关键环节。其设计初衷是通过人机识别机制&#xff0c;保障信息系统交互的安全性与可控性。然而&#xff0c;当验证码验证机制出现异常突破&…...

CSS:颜色的三种表示方式

文章目录 一、rgb和rgba方式二、HEX和HEXA方式&#xff08;推荐&#xff09;三、hsl和hsla方式四、颜色名方式 一、rgb和rgba方式 10进制表示方法 二、HEX和HEXA方式&#xff08;推荐&#xff09; 就是16进制表示法 三、hsl和hsla方式 语法&#xff1a;hsl(hue, satura…...

math toolkit for real-time development读书笔记一-三角函数快速计算(1)

一、基础知识 根据高中知识我们知道&#xff0c;很多函数都可以用泰勒级数展开。正余弦泰勒级数展开如下&#xff1a; 将其进一步抽象为公式可知&#xff1a; 正弦和余弦的泰勒级数具有高度结构化的模式&#xff0c;可拆解为以下核心特征&#xff1a; 1. 符号交替特性 正弦级…...

超市营业额数据分析

1.推出5名销冠 2.新领导想看看他15天以来的业绩总增长情况,以及增长额前3的柜台 3.把所有柜台的销售额分为3个等级 import pandas as pd import matplotlib.pyplot as plt import numpy as np# 设置中文字体和显示方式 plt.rcParams.update({font.sans-serif&...

labelimg安装及使用指南(yolo)

1.安装 首先要安装Anaconda&#xff0c;然后打开Anaconda Prompt 构建一个新的虚拟环境&#xff08;注&#xff1a;虚拟环境的python的版本应在3.9及以下&#xff0c;不然会在运行中报错&#xff09; conda create -n label python3.9 其中这里label只是一个名字&#xff0c;…...

在 Ubuntu 系统中,将 JAR 包安装为服务

在 Ubuntu 系统中&#xff0c;将 JAR 包安装为服务可以通过 systemd 来实现。以下是详细的操作步骤&#xff1a; 准备工作 确保 JAR 文件路径和 Java 运行时环境已准备好。验证 Java 是否可用&#xff1a; java -version创建 systemd 服务文件 systemd 的服务文件通常位于 …...

我的 PDF 工具箱:CodeBuddy 打造 PDFMagician 的全过程记录

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 最近&#xff0c;我萌生了一个念头&#xff1a;能不能自己动手做一个功能丰富的 PDF 工具箱&#xff1f;市面上…...

WebSocket聊天室的简单制作指南

一、前言 最近在学习WebSocket技术&#xff0c;做了一个简单的聊天室Demo。这个项目虽然不大&#xff0c;但涵盖了WebSocket的核心功能实现。下面我将详细介绍这个聊天室的实现过程&#xff0c;希望能帮助到同样想学习WebSocket的朋友们。 二、技术选型 后端&#xff1a;Spri…...

非国产算力DeepSeek 部署中的常见问题及解决方案

随着大语言模型&#xff08;LLM&#xff09;在企业级应用场景中的快速推进&#xff0c;DeepSeek 一体机凭借其高性能推理能力和便捷的系统集成优势&#xff0c;正逐步成为多行业智能化转型的重要基础设施。然而&#xff0c;在实际部署过程中&#xff0c;技术团队常常会遭遇一系…...

大数据技术的主要方向及其应用详解

文章目录 一、大数据技术概述二、大数据存储与管理方向1. 分布式文件系统2. NoSQL数据库3. 数据仓库技术 三、大数据处理与分析方向1. 批处理技术2. 流处理技术3. 交互式分析4. 图计算技术 四、大数据机器学习方向1. 分布式机器学习2. 深度学习平台3. 自动机器学习(AutoML) 五、…...

Maven使用详解:Maven的概述(二)

一、核心定义与功能 Maven是由Apache软件基金会开发的开源项目管理工具&#xff0c;专为Java项目设计&#xff0c;主要用于自动化构建、依赖管理和项目标准化。其核心功能包括&#xff1a; 依赖管理&#xff1a;通过pom.xml文件声明依赖库&#xff0c;自动从中央仓库下载并管…...

在 Odoo 18 表单视图中使用 JS 类的方法

在 Odoo 18 表单视图中使用 JS 类的方法 一、模块结构创建 要为特定视图在 JavaScript 里注册一个类。后续在任意表单视图中添加相同类时&#xff0c;自定义视图就会被注入该表单。 具体要做的是&#xff1a; 把自定义视图创建出来当作模板。将视图注册成一个组件。把它和表…...

ubuntu 更新华为源

1. 备份配置文件 sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak 2. 修改source.list 文件&#xff0c;将http://archive.ubuntu.com和http://security.ubuntu.com替换成http://repo.huaweicloud.com&#xff0c;可以参考如下命令&#xff1a; # 第一条指令 s…...

如何安装cuda版本的pytorch

为什么安装Cuda 对于做深度学习研究的小伙伴本&#xff0c;当我们处理大量的数据时&#xff0c;尤其是图像数据时&#xff0c;过量的数据会导致我们的CPU运行压力过大&#xff0c;占用大量的运行内存&#xff0c;而且用CPU进行模型训练&#xff0c;训练的时间会很长&#xff0…...

国际名校教育大模型的构建与教学应用实践

一、引言 全球AI数字教育正在快速发展,人工智能技术已成为推动教育变革的核心驱动力。从个性化学习到智能评测,从虚拟助教到自适应教学系统,AI正在重塑教育的形态。在此背景下,国际顶尖高校纷纷布局教育大模型,探索AI与教学的深度融合,以提升教育质量、优化学习体验。与…...

postgres的docker版本安装

postgres的docker版本安装 背景 测试和开发需要用到postgres&#xff0c;越快越好&#xff0c;想到了用docker进行安装。 sudo docker run -d -p 5432:5432 --restartalways -v /home/docker/postgre/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD123456 --name p…...

知识蒸馏实战:用PyTorch和预训练模型提升小模型性能

在深度学习的浪潮中&#xff0c;我们常常追求更大、更深、更复杂的模型以达到最先进的性能。然而&#xff0c;这些“庞然大物”般的模型往往伴随着高昂的计算成本和缓慢的推理速度&#xff0c;使得它们难以部署在资源受限的环境中&#xff0c;如移动设备或边缘计算平台。知识蒸…...

【HTML 全栈进阶】从语义化到现代 Web 开发实战

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1fa79; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f9e0; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f527; 关键技术模块说明⚖️ 技术选…...

Transformer 模型与注意力机制

目录 Transformer 模型与注意力机制 一、Transformer 模型的诞生背景 二、Transformer 模型的核心架构 &#xff08;一&#xff09;编码器&#xff08;Encoder&#xff09; &#xff08;二&#xff09;解码器&#xff08;Decoder&#xff09; 三、注意力机制的深入剖析 …...

机器学习数据预处理回归预测中标准化和归一化

在机器学习的回归预测任务中&#xff0c;** 标准化&#xff08;Standardization&#xff09;和归一化&#xff08;Normalization&#xff09;** 是数据预处理的重要步骤&#xff0c;用于消除不同特征量纲和取值范围的影响&#xff0c;提升模型训练效率和预测性能。 一、标准化…...

B2C 商城转型指南:传统企业如何用 ZKmall模板商城实现电商化

在数字化浪潮席卷全球的当下&#xff0c;传统企业向电商转型已不再是选择题&#xff0c;而是关乎生存与发展的必答题。然而&#xff0c;缺乏技术积累、开发成本高、运营经验不足等问题&#xff0c;成为传统企业转型路上的 “拦路虎”。ZKmall模板商城以其低门槛、高灵活、强适配…...

FPGA:Lattice的FPGA产品线以及器件选型建议

本文将详细介绍Lattice Semiconductor的FPGA产品线&#xff0c;帮助你了解各系列的特点和适用场景&#xff0c;以便更好地进行选型。Lattice以低功耗、小尺寸和高性能为核心&#xff0c;产品覆盖低中端市场&#xff0c;广泛应用于通信、计算、工业、汽车、消费电子、嵌入式视觉…...

学习51单片机02

吐血了&#xff0c;板子今天才到&#xff0c;下午才刚开始学的&#xff0c;生气了&#xff0c;害我笔记都断更了一天。。。。 紧接上文...... 如何将HEX程序烧写到程序? Tips&#xff1a;HEX 文件是一种常用于单片机等嵌入式系统的文件格式&#xff0c;它包含了程序的机器码…...

武汉SMT贴片工艺优化与生产效能提升路径

内容概要 随着华中地区电子制造产业集群的快速发展&#xff0c;武汉SMT贴片行业面临工艺升级与效能提升的双重挑战。本文聚焦SMT生产全流程中的关键环节&#xff0c;从钢网印刷精度控制、回流焊温度曲线优化、AOI检测系统迭代三大核心工艺出发&#xff0c;结合区域产业链特点提…...

LineBasicMaterial

LineBasicMaterial 描述 用于绘制纯色线条的基础材质&#xff0c;支持颜色、线宽和纹理映射。常用于THREE.Line或THREE.LineSegments几何体。 构造函数 (Constructor) 构造函数参数描述LineBasicMaterial(parameters?: Object)parameters定义材质外观的对象&#xff0c;可…...

虚拟机安装达梦数据库

准备 关闭SELINUX # setenforce 0 # vi /etc/selinux/config 修改SELINUXdisabled 上传达梦ISO 接下下载的达梦安装包&#xff0c;里面包含一个ISO文件&#xff0c;将其上传到CentOS的/tmp路径下安装达梦所需图形类库 # yum install -y gtk2 libXtst xorg-x11-…...

小波变换+注意力机制成为nature收割机

小波变换作为一种新兴的信号分析工具&#xff0c;能够高效地提取信号的局部特征&#xff0c;为复杂数据的处理提供了有力支持。然而&#xff0c;它在捕捉数据中最为关键的部分时仍存在局限性。为了弥补这一不足&#xff0c;我们引入了注意力机制&#xff0c;借助其能够强化关注…...

科技项目验收测试对软件产品和企业分别有哪些好处?

科技项目验收测试是指在项目的开发周期结束后&#xff0c;针对项目成果进行的一系列验证和确认活动。其目的是确保终交付的产品或系统符合预先设定的需求和标准。验收测试通常包括功能测试、性能测试、安全测试等多个方面&#xff0c;帮助企业评估软件在实际应用中的表现。 科…...

ChatGPT到Claude全适配:跨模型Prompt高级设计规范与迁移技巧

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习内容&#xff0c;尽在聚客AI学院。 一. 迭代优化&#xff1a;基于反馈的Prompt进化策略 1.1 优化闭环设计 初始Prompt → 生成结果 → 人工评估 → 问题分析 → 改进Prompt 代码示例&#x…...

NexBot AI 1.9.3 | 专业AI写作助手,高自由度定制内容,支持中文设置

NexBot AI是一款强大的人工智能助手应用程序&#xff0c;旨在帮助用户快速生成符合其需求的内容。通过高自由度的关键词和短语合并功能&#xff0c;用户可以根据自己的具体要求定制内容。该应用能够迅速生成多种输出结果供用户选择&#xff0c;非常适合需要高效工作流程的专业人…...

foxmail - foxmail 启用超大附件提示密码与帐号不匹配

foxmail 启用超大附件提示密码与帐号不匹配 问题描述 在 foxmail 客户端中&#xff0c;启用超大附件功能&#xff0c;输入了正确的账号&#xff08;邮箱&#xff09;与密码&#xff0c;但是提示密码与帐号不匹配 处理策略 找到 foxmail 客户端目录/Global 目录下的 domain.i…...

eVTOL、无人机电机功耗图和电机效率图绘制测试

测功机是测量电机性能的绝佳工具。通过施加可控负载&#xff0c;测功机可表征电机扭矩、转速和功率。但这是获取电机性能全面理解的唯一途径吗&#xff1f;我们想知道&#xff0c;能否仅通过电机-螺旋桨动力测试台&#xff08;而非传统制动测功机&#xff09;实现电机性能测绘。…...

React中useMemo和useCallback的作用:

一、useMemo 基本用法: useMemo 是 React 提供的一个 Hook&#xff0c;用于性能优化&#xff0c;它通过"记忆"&#xff08;memoization&#xff09;计算结果来避免在每次渲染时进行不必要的复杂计算。 const memoizedValue useMemo(() > computeExpensiveValue…...

【Shell的基本操作】

文章目录 一、实验目的二、实验环境三、实验内容3.1 Shell变量与脚本基础3.2 定制终端提示符&#xff08;PS1变量&#xff09;3.3 文件查找与类型确认&#xff08;find命令&#xff09;3.4 管道命令实战&#xff08;用户登录统计&#xff09;3.5 交互式备份压缩脚本 四、总结4.…...

部署docker上的redis,idea一直显示Failed to connect to any host resolved for DNS name

参考了https://blog.csdn.net/m0_74216612/article/details/144145127 这篇文章&#xff0c;关闭了centos的防火墙&#xff0c;也修改了redis.conf文件&#xff0c;还是一直显示Failed to connect to any host resolved for DNS name。最终发现是腾讯云服务器那一层防火墙没…...

Android 中 显示 PDF 文件内容(AndroidPdfViewer 库)

PDFView 是一个用于在 Android 应用中显示 PDF 文档的库。它提供了丰富的功能和灵活的配置选项&#xff0c;使得开发者能够轻松地在应用中嵌入 PDF 阅读器。 一、 添加依赖 在模块的 build.gradle 文件中添加以下依赖&#xff1a; // pdfimplementation("com.github.bar…...

Linux 系统切换国内镜像源教程

在中国大陆使用 Linux 系统时&#xff0c;由于网络环境的原因&#xff0c;连接官方的软件包镜像源速度较慢&#xff0c;甚至可能出现连接失败的情况。此时&#xff0c;将系统配置为使用国内的镜像源可以显著提升软件包下载和更新的速度。 常见的国内镜像源 阿里云镜像站: htt…...

4.2.3 Thymeleaf标准表达式 - 2. 选择表达式

本实战通过 Thymeleaf 的选择表达式&#xff08;*{}&#xff09;演示了如何在模板中操作和展示对象的属性与方法。首先&#xff0c;在控制器中创建了一个 User 对象&#xff0c;并将其添加到模型中。接着&#xff0c;在 test2.html 模板中&#xff0c;通过 th:object 声明了对象…...