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

Javase 基础入门 —— 07 接口

本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员Java+AI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。

01 概述

接口采用interface关键字定义,在JDK8之前,接口中只能定义常量和抽象方法。

在这里插入图片描述

接口是用来被类实现(implements)的,实现接口的类称为实现类,一个类可以同时实现多个接口。

注:接口不能创建对象!亲爸是抽象类,干爹是接口!

在这里插入图片描述

A.interfaceA接口

public interface A {//常量//public static final String SCHOOL_NAME = "黑马程序员";String SCHOOL_NAME = "黑马程序员";//抽象方法//public abstract void run();void run();
}

B.interfaceB接口

public interface B {void cry();
}

C.java C实现类

public class C implements A, B{@Overridepublic void run(){System.out.println("run");}@Overridepublic void cry(){System.out.println("cry");}
}

Test.java 测试程序

public class Test {public static void main(String[] args) {System.out.println(A.SCHOOL_NAME);C c = new C();c.run();c.cry();}
}

在这里插入图片描述

02 好处

  • 弥补了类单继承的不足,一个类可以实现多个接口,功能强大
  • 使得程序可以面向接口编程,实现解耦合,切换各种业务实现
public class Test {public static void main(String[] args) {Driver d = new Student();Friend f = new Student();People p = new Student();Driver d1 = new Student();Driver d2 = new Teacher();}}interface Driver{}
interface Friend{}
class People{}class Student extends People implements Driver, Friend{}
class Teacher extends People implements Driver{}

03 案例:实现一个班级学生信息管理模块

在这里插入图片描述

Student.java 自定义数据库

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {private String name;private char gender;private double score;
}

ClassDataInfer.interface 自定义接口

public interface ClassDataInter {void printAllStudentInfos();void printAverageScore();
}

Test.java 主程序

public class Test {public static void main(String[] args) {//自己定义的Student类Student[] allStudents = new Student[10];allStudents[0] = new Student("张三", '男', 85);allStudents[1] = new Student("李四", '女', 68);allStudents[2] = new Student("王五", '男', 49);allStudents[3] = new Student("赵六", '男', 95);allStudents[4] = new Student("吴七", '女', 78);allStudents[5] = new Student("钱八", '女', 82);allStudents[6] = new Student("孙九", '男', 64);allStudents[7] = new Student("施十", '女', 21);allStudents[8] = new Student("刘十一", '女', 55);allStudents[9] = new Student("贾十二", '男', 88);//面向接口编程ClassDataInter c = new ClassDataInterImpl2(allStudents);c.printAllStudentInfos();c.printAverageScore();}
}

ClassDataInferImpl1.java 实现类1

public class ClassDataInterImpl1 implements ClassDataInter{//数据传送private Student[] students;public ClassDataInterImpl1(Student[] students){ //有参构造上大分this.students = students;}@Overridepublic void printAllStudentInfos() {System.out.println("全班同学的信息如下:");for(int i=0; i<students.length; ++i){Student s = students[i];System.out.println(s.getName() + s.getGender() + s.getScore());}}@Overridepublic void printAverageScore() {double sum = 0;for(int i=0; i<students.length; ++i){Student s = students[i];sum += s.getScore();}System.out.println("全班同学的平均分为:" + sum/students.length);}
}

在这里插入图片描述

ClassDataInferImpl2.java 实现类2

public class ClassDataInterImpl2 implements ClassDataInter{private Student[] students;public ClassDataInterImpl2(Student[] students){this.students = students;}@Overridepublic void printAllStudentInfos() {int male = 0;int female = 0;System.out.println("全班同学的信息如下:");for(int i=0; i<students.length; ++i){Student s = students[i];if(s.getGender() == '男'){male++;}else{female++;}System.out.println(s.getName() + s.getGender() + s.getScore());}System.out.println("男生" + male + "人, 女生" + female + "人");}@Overridepublic void printAverageScore() {double sum = 0;double max = 0;double min = 100;for(int i=0; i<students.length; ++i){Student s = students[i];if(min > s.getScore()){min = s.getScore();}if(max < s.getScore()){max = s.getScore();}sum += s.getScore();}System.out.println("去掉最高分和最低分, 全班同学的平均分为:" + (sum-max-min)/students.length);}
}

在这里插入图片描述

04 三大新增方法

A.interface 自定义接口

public interface A {//1.默认方法default void go(){ //子类对象调用System.out.println("==go方法执行了==");run();}//2.私有方法private void run(){ //类中方法调用System.out.println("==run方法执行了=="); }//3.静态方法static void show(){ //接口名调用System.out.println("==show方法执行了==");}
}

Test.java

public class Test {public static void main(String[] args) {B b = new B();b.go();A.show();}
}class B implements A{}

05 注意事项

  • 一个接口可以同时继承多个接口
  • 如果多个接口中存在方法签名冲突,则此时不支持多继承,也不支持多实现
  • 如果父类中和接口中有同名的默认方法,实现类会优先用父类的
  • 如果多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可
public class Test {public static void main(String[] args) {C2 c = new C2();c.show();}
}//1
//类与类 单继承 一个类只能继承一个父类
//类与接口 多实现 一个类可以实现多个接口
//接口与接口 多继承 一个接口可以继承多个接口interface A{void show1();
}
interface B{void show2();
}
interface C extends A, B{ //1.多继承void show3();
}class D implements C{@Overridepublic void show1() {}@Overridepublic void show2() {}@Overridepublic void show3() {}
}//2
interface A1{void show();
}
interface B1{//String show(); //2.签名冲突
}class C1 implements A1, B1{@Overridepublic void show() {}
}//3
interface A2{default void show(){System.out.println("==A2的show方法被调用");}
}class B2{public void show(){System.out.println("==B2的show方法被调用"); //3.优先调用父类同名方法}
}class C2 extends B2 implements A2{}//4
interface A3{default void show(){System.out.println("==A3的show方法被调用");}
}interface B3{default void show(){System.out.println("==B3的show方法被调用");}
}class C3 implements A3, B3{public void show(){System.out.println("==C3的show方法被调用"); //4.方法重写}
}

06 抽象类和接口对比

相同点

  • 都是抽象形式,都可以有抽象方法,都不能创建对象
  • 都是派生子类形式:抽象类是被子类继承,接口是被子类实现
  • 一个类继承抽象类或实现接口,都要重写抽象方法
  • 都能多态、解耦合

不同点

  • 抽象类可以定义类的所有普通成员,接口只能定义常量和抽象方法
  • 抽象类只能单继承,接口可以多实现
  • 抽象类适用于模板,实现父类代码的复用性,接口适用于功能,实现实践的灵活性

07 案例:智能家居控制系统

请你开发一个智能家居系统,可以让用户选择要控制的家用设备(吊灯,电视机,洗衣机,落地窗),并可以对它们进行打开或者关闭操作。

① 定义父类”家具“和子类”电视、洗衣机、灯、空调“

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class JD implements Switch{private String name; //设备名称private boolean status; //开关@Overridepublic void press(){status = ! status;}
}
public class Lamp extends JD{public Lamp(String name, boolean status){super(name, status);}
}
public class Fridge extends JD{public Fridge(String name, boolean status){super(name, status);}
}
public class Television extends JD{public Television(String name, boolean status){super(name, status);}
}
public class WashMachine extends JD{public WashMachine(String name, boolean status){super(name, status);}
}

② 创建父类对象,添加子类数据

JD[] jds = new JD[4];
jds[0] = new Television("木之本樱电视机", true);
jds[1] = new WashMachine("五条悟洗衣机", true);
jds[2] = new Lamp("蜡笔小新灯", true);
jds[3] = new Fridge("江户川柯南空调", true);

③ 创建接口”开关“,父类”家具“实现

public interface Switch {void press();
}

④ 创建智能控制系统对象,传递父类对象参数

SmartHomeControl smartHomeControl = new SmartHomeControl();
smartHomeControl.control(jds[0]);
//智能控制系统
public class SmartHomeControl {public void control(JD jd){System.out.println(jd.getName() + "的状态是" + (jd.isStatus() ? "开着" : "关着"));System.out.println("===调整开关===");jd.press();System.out.println(jd.getName() + "的状态是" + (jd.isStatus() ? "开着" : "关着"));}
}

Test.java

public class Test {public static void main(String[] args) {//面向对象编程实现智能家居控制系统//角色:设备(吊灯、电视机、洗衣机、落地窗...)//功能:开关//智能家具控制系统(单例对象)控制家具开关//1.定义父类”家具“和子类”电视、洗衣机、灯、空调“//2.创建父类对象,添加子类数据JD[] jds = new JD[4];jds[0] = new Television("木之本樱电视机", true);jds[1] = new WashMachine("五条悟洗衣机", true);jds[2] = new Lamp("蜡笔小新灯", true);jds[3] = new Fridge("江户川柯南空调", true);//3.创建接口”开关“,父类”家具“实现//4.创建智能控制系统对象,传递父类对象参数SmartHomeControl smartHomeControl = new SmartHomeControl();smartHomeControl.control(jds[0]);}
}

⑤ 升级版:输出所有设备状态,死循环控制单个设备

Test.java

while(true){smartHomeControl.printAllJds(jds);System.out.println("===输入待控制设备编号===");Scanner sc = new Scanner(System.in);int number = sc.nextInt();switch (number){case 0:smartHomeControl.control(jds[0]);break;case 1:smartHomeControl.control(jds[1]);break;case 2:smartHomeControl.control(jds[2]);break;case 3:smartHomeControl.control(jds[3]);break;case -1:System.out.println("===退出智能控制系统===");return; //直接干掉main方法default:System.out.println("===请输入0~3之间的整数===");}
}

SmartHomeControl.java

public void printAllJds(JD[] jds){for(int i=0; i<jds.length; ++i){JD jd = jds[i];System.out.println(jd.getName() + "的状态是" + (jd.isStatus() ? "开着" : "关着"));}
}

相关文章:

Javase 基础入门 —— 07 接口

本系列为笔者学习Javase的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程&#xff0c;java零基础入门到大牛一套通关》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习Javase系列课程的同学们提供参考。 01 概述 接…...

LangChain:重构大语言模型应用开发的范式革命

2022年10月22日&#xff0c;Harrison Chase在GitHub上提交了名为LangChain的开源项目的第一个代码版本。这个看似普通的代码提交&#xff0c;却悄然开启了一场重塑大语言模型&#xff08;LLM&#xff09;应用开发范式的技术革命。彼时&#xff0c;距离ChatGPT引爆全球人工智能浪…...

【现代深度学习技术】现代循环神经网络04:双向循环神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

重塑数学边界:人工智能如何引领数学研究的新纪元

目录 一、人工智能如何重新定义数学研究的边界 &#xff08;一&#xff09;数学与AI的关系&#xff1a;从基础理论到创新思维的回馈 &#xff08;二&#xff09;AI的创造力&#xff1a;突破传统推理的局限 &#xff08;三&#xff09;AI对数学研究的潜在贡献&#xff1a;创…...

链表的回文结构题解

首先阅读题目&#xff1a; 1.要保证是回文结构 2.他的时间复杂度为O(n)、空间复杂度为O(1) 给出思路: 1.首先利用一个函数找到中间节点 2.利用一个函数逆置中间节点往后的所有节点 3.现在有两个链表&#xff0c;第一个链表取头节点一直到中间节点、第二个链表取头结点到尾…...

xLua笔记

Generate Code干了什么 肉眼可见的&#xff0c;在Asset文件夹生成了XLua/Gen文件夹&#xff0c;里面有一些脚本。然后对加了[CSharpCallLua]的变量寻找引用&#xff0c;发现它被XLua/Gen/DelegatesGensBridge引用了。也可以在这里查哪些类型加了[CSharpCallLua]。 public over…...

【Hive入门】Hive与Spark SQL深度集成:通过Spark ThriftServer高效查询Hive表

目录 引言 1 Spark ThriftServer架构解析 1.1 核心组件与工作原理 1.2 与传统HiveServer2的对比 2 Spark ThriftServer部署指南 2.1 环境准备与启动流程 2.1.1 前置条件检查 2.1.2 服务启动流程 2.2 高可用部署方案 2.2.1 基于ZooKeeper的HA架构 3 性能优化实战 3.…...

快速掌握--cursor

Cursor - The AI Code Editor 官网下载安装 详细教程&#xff1a;cursor 下载安装使用&#xff08;保姆教程&#xff09;_cursor下载-CSDN博客 不知道为啥&#xff0c;第一次给我用的是繁体回答 然后改了一下询问方式 codebase就是告诉ai可以从整个项目中找答案&#xff0…...

Linux之基础开发工具(yum,vim,gcc,g++)

目录 一、软件包管理器 1.1、什么是软件包 1.2、yum具体操作 1.2.1、查看软件包 1.2.2、安装软件 1.2.3、卸载软件 1.2.4、安装源 二、编辑器vim 2.1、vim的基本概念 2.2、vim的基本操作 2.3、vim正常模式命令集 2.4、vim末行模式命令集 2.5、替换模式 2.6、视图…...

【计算机视觉】三维重建: OpenMVS:工业级多视图立体视觉重建框架

深度解析OpenMVS&#xff1a;工业级多视图立体视觉重建框架 技术架构与核心算法1. 系统架构设计2. 核心算法解析稠密点云重建表面重建网格优化 实战全流程指南环境配置硬件要求编译安装&#xff08;Ubuntu&#xff09; 数据处理流程输入准备&#xff08;OpenMVG输出&#xff09…...

C++负载均衡远程调用学习之异步消息任务功能与连接属性

目录 1.LarV0.11-异步消息机制的event_loop增添属性分析 2.LARS 3.LarV0.11异步消息发送机制的实现及测试 4.LarV0.11异步消息任务机制bug修复和效果演示 5.LarV0.12链接参数属性的绑定 1.LarV0.11-异步消息机制的event_loop增添属性分析 ## 4) 事件触发event_loop ​ …...

内存性能测试方法

写于 2022 年 6 月 24 日 内存性能测试方法 - Wesley’s Blog dd方法测试 cat proc/meminfo console:/ # cat proc/meminfo MemTotal: 3858576 kB MemFree: 675328 kB MemAvailable: 1142452 kB Buffers: 65280 kB Cached: 992252 …...

游戏引擎学习第256天:XBox 控制器卡顿和修复 GL Blit 伽玛问题

回顾并为今天定下基调 今天的主要任务是让我们的性能分析工具正常工作&#xff0c;因为昨天已经完成了结构性工作。现在&#xff0c;剩下的工作大部分应该是调试和美化。性能分析工具现在应该已经基本可用了。昨天我们在这个方面取得了很大的进展。 接下来&#xff0c;我们将…...

4.29-4.30 Maven+单元测试

单元测试&#xff1a; BeforeAll在所有的单元测试方法运行之前&#xff0c;运行一次。 AfterAll在所有单元测试方法运行之后&#xff0c;运行一次。 BeforeEach在每个单元测试方法运行之前&#xff0c;都会运行一次 AfterEach在每个单元测试方法运行之后&#xff0c;都会运行…...

Android 端如何监控 ANR、Crash、OOM 等严重问题

在移动互联网时代&#xff0c;Android 应用已经成为我们生活中不可或缺的一部分。从社交聊天到在线购物&#xff0c;从娱乐消遣到办公学习&#xff0c;几乎每个人的手机里都装满了各式各样的应用。然而&#xff0c;作为开发者&#xff0c;咱们得面对一个残酷的现实&#xff1a;…...

Spring Boot 微服务打包为 Docker 镜像并部署到镜像仓库实战案例

案例项目素材可以拉取我github上的&#xff1a; https://github.com/AcademicTECHNERD/SpringCoudEurekaDemo 下面的案例将把我的product-service&#xff08;也就是提供者&#xff09;打包为镜像 执行maven命令&#xff1a; mvn clean package -DskipTests在根目录加一个dock…...

springAop代理责任链模式源码解析

目录 两次匹配 Bean 后置处理器中的匹配 方法调用时的匹配 Bean后置处理器中Advisor匹配流程 方法调用时的匹配 Jdk cglib 小小总结 Advisor 收集与排序 责任链执行过程 两次匹配 Bean 后置处理器中的匹配 在 Bean 初始化过程中&#xff0c;Spring 会通过 Bean 后置…...

ElasticSearch深入解析(九):Object、Nested、Flattened类型

文章目录 一、Object 类型&#xff1a;默认的嵌套对象处理方式核心原理典型场景关键限制 二、Nested 类型&#xff1a;解决嵌套数组的关联查询核心原理典型场景使用示例注意事项 三、Join 类型&#xff1a;跨文档的父子关联核心原理典型场景使用示例注意事项 四、Flattened 类型…...

list的迭代器详讲

1.list的迭代器就是封装了节点指针的类 2.迭代器失效 迭代器失效即迭代器封装的节点指针无效 。因为 list 的底层结构为带头结点的双向循环链表 &#xff0c;因此 在 list 中进行插入时是不会导致 list 的迭代 器失效的&#xff0c;只有在删除时才会失效&#xff0c;并且失效的…...

动态规划之多状态问题1

题目解析&#xff1a; 也就是给一个预约数组&#xff0c;选择一些数字&#xff0c;让其总和最大&#xff0c;但不能选择相邻的两个数字 算法原理&#xff1a; 依旧可以根据经验题目 以dp[i]位置结尾时&#xff0c;巴拉巴拉 根据题目要求补充完整&#xff0c;dp[i]&#xff…...

音视频开源项目列表

音视频开源项目列表 一、多媒体处理框架 通用音视频处理 FFmpeg - https://github.com/FFmpeg/FFmpeg 最强大的音视频处理工具库支持几乎所有格式的编解码提供命令行工具和开发库 GStreamer - https://gitlab.freedesktop.org/gstreamer/gstreamer 跨平台多媒体框架基于管道…...

论微服务架构及其应用

试题四 论微服务架构及其应用 微服务提倡将单一应用程序划分成一组小的服务&#xff0c;服务之间互相协调、互相配合&#xff0c;为用户提供最终价值。每个服务运行在其独立的进程中&#xff0c;服务与服务间采用轻量级的通信机制互相沟通。在微服务架构中&#xff0c;每个服务…...

Spring Cloud与Service Mesh集成:Istio服务网格实践

文章目录 引言一、Spring Cloud与Service Mesh概述二、Istio服务网格架构三、Spring Cloud与Istio集成的基础设施准备四、服务发现与负载均衡五、流量管理与弹性模式六、安全通信与认证授权七、可观测性集成八、配置管理集成总结 引言 微服务架构已成为现代分布式系统的主流设…...

Day109 | 灵神 | 148.排序链表 | 归并排序

Day109 | 灵神 | 148.排序链表 | 归并排序 148. 排序链表 - 力扣&#xff08;LeetCode&#xff09; 以下是灵神的题解&#xff0c;笔者认为这题只要可以看懂就好了 两种方法&#xff1a;分治和迭代 文章目录 Day109 | 灵神 | 148.排序链表 | 归并排序前置题目方法一&#x…...

[更新完毕]2025东三省C题深圳杯C题数学建模挑战赛数模思路代码文章教学: 分布式能源接入配电网的风险分析

完整内容请看文章最下面的推广群 分布式能源接入配电网的风险分析 摘要 随着可再生能源渗透率的不断提升&#xff0c;分布式光伏发电在配电网中的大规模接入给传统电力系统运行带来了新的挑战。光伏发电固有的间歇性和波动性特征&#xff0c;加之配电网拓扑结构的复杂性&…...

ActiveMQ 集群搭建与高可用方案设计(二)

五、高可用方案设计与优化 &#xff08;一&#xff09;Zookeeper 在 ActiveMQ 集群中的应用 作用&#xff1a;在 ActiveMQ 集群中&#xff0c;Zookeeper 扮演着至关重要的角色。它主要用于选举 Master 节点&#xff0c;通过其内部的选举机制&#xff0c;从众多的 ActiveMQ Br…...

多协议 Tracker 系统架构与传感融合实战 第六章 多传感器时钟同步与数据对齐

第六章 多传感器时钟同步与数据对齐 摘要 本章围绕多源传感融合系统中——尤其是 IMU 与 UWB——的时钟同步与数据对齐问题展开,系统介绍: 硬件时钟源类型及漂移特性 软件校准策略:NTP/PTP 与自定义心跳同步 多源时钟同步算法:两阶段对齐与漂移补偿 数据缓冲与双队列对齐架…...

【算法基础】插入排序算法 - JAVA

一、算法基础 1.1 什么是插入排序 插入排序是一种简单直观的排序算法&#xff0c;它的工作原理类似于我们打牌时整理手牌的过程。插入排序的核心思想是将数组分为已排序和未排序两部分&#xff0c;每次从未排序部分取出一个元素&#xff0c;插入到已排序部分的适当位置。 1.…...

#Paper Reading# DeepSeek-R1

论文题目: DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 论文地址: https://arxiv.org/pdf/2501.12948 论文发表于: arXiv 2025年1月 论文所属单位: DeepSeek 论文大体内容 本文提出DeepSeek-R1模型&#xff0c;主要是以DeepSeek-V3[…...

HTML与CSS实现风车旋转图形的代码技术详解

在前端开发中&#xff0c;HTML和CSS是构建网页的基础技术。通过巧妙运用HTML的结构搭建和CSS的样式控制&#xff0c;我们能够实现各种精美的视觉效果。本文将对一段实现旋转图形效果的HTML和CSS代码进行详细解读&#xff0c;剖析其中的技术要点。 一、运行效果 HTML与CSS实现风…...

AWS在跨境电商中的全场景实践与未来生态构建

AWS在跨境电商中的全场景实践与未来生态构建 一、核心应用场景与技术赋能 1. AI驱动运营效率革命 • 智能选品与市场分析&#xff1a;通过Amazon SageMaker机器学习平台&#xff0c;跨境电商企业可构建精准选品模型。陕西自贸试验区案例显示&#xff0c;AI对亚马逊等平台销…...

AWS云服务深度技术解析:架构设计与最佳实践

作为全球市场份额占比32%的云服务提供商&#xff08;Synergy Research 2023数据&#xff09;&#xff0c;AWS的技术体系已成为企业级应用架构的标杆。本文将深入剖析AWS核心技术组件的实现原理&#xff0c;并附可落地的架构设计范式。 AWS云服务器&#xff1a;中国企业出海的“…...

130. 被围绕的区域

题目链接&#xff1a;130. 被围绕的区域 思路&#xff1a;使用两遍dfs&#xff0c;第一遍找到可以被替换区域的可进入点并记录&#xff0c;第二遍就从所有的可进入点入手遍历区域内所有点并替换。 这是我的思路&#xff0c;感觉还是挺新颖的&#xff08;应该很少有人这样想我…...

【Linux】进程优先级与进程切换理解

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;Linux 目录 前言 一、进程优先级 1. 什么是进程优先级 2. 为什么有进程优先级 3. 进程优先级的作用 4. Linux进程优先级的本质 5. 修改进程优先级 二、进…...

数据分析与可视化实战:从鸢尾花到乳腺癌数据集

数据分析是现代数据科学中不可或缺的一部分&#xff0c;它帮助我们理解数据、发现模式并做出明智的决策。本文将分享两个实战案例&#xff1a;鸢尾花数据集分析和乳腺癌数据集预处理&#xff0c;展示如何使用Python进行数据探索和可视化。 鸢尾花数据集分析 数据加载与基本统…...

怎样提升社交机器人闲聊能力

怎样提升社交机器人闲聊能力 本文聚焦社交机器人闲聊能力,指出闲聊在社交中意义重大,当前大语言模型(LLMs)驱动社交机器人闲聊存在不足。通过实验评估ChatGPT-3.5、Gemini Pro和LLaMA-2等LLMs闲聊表现,发现其与人类闲聊存在差异。 为此提出基于观察者模型的反馈重定向方…...

图论之幻想迷宫

题目描述&#xff1a; 幻象迷宫可以认为是无限大的&#xff0c;不过它由若干个 NM 的矩阵重复组成。矩阵中有的地方是道路&#xff0c;用 . 表示&#xff1b;有的地方是墙&#xff0c;用 # 表示。LHX 和 WD 所在的位置用 S 表示。也就是对于迷宫中的一个点(x,y)&#xff0c;如…...

数学实验Matlab

一、Matlab语言环境和线性代数实验 1.Matlab语言环境 Matlab简介 Matlab&#xff1a;Matrix Laboratry 矩阵实验室 Matlab 提供了强大的科学计算、灵活的程序设计流程、高质量的图形可视化与界面设计等功能&#xff0c;被广泛应用于科学计算、控制系统、信息处理等领域的分…...

AI日报 · 2025年5月03日|Perplexity 集成 WhatsApp,苹果传与 Anthropic 合作开发 Xcode

1、Perplexity AI 功能更新&#xff1a;新增 WhatsApp 集成与多项优化 Perplexity 于 5 月 2 日发布其每周更新摘要&#xff0c;重点包括新增 WhatsApp 集成&#xff0c;用户现可直接在 WhatsApp 内与 Perplexity AI 交互&#xff0c;显著提升了信息获取的便捷性 [1]。此次更新…...

Maven 实现多模块项目依赖管理

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

【JavaScript-Day 2】开启 JS 之旅:从浏览器控制台到 `<script>` 标签的 Hello World 实践

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

Windows 中使用dockers创建指定java web 为镜像和运行容器

以下是在 Windows 中使用 Docker 创建 Java Web 应用镜像并运行容器的分步指南&#xff1a; 步骤 1&#xff1a;安装 Docker 下载并安装 Docker Desktop for Windows启动 Docker Desktop&#xff0c;确保使用 WSL 2 后端&#xff08;推荐&#xff09;或 Hyper-V。 步骤 2&…...

机器人--MCU

MCU MCU&#xff08;Microcontroller Unit&#xff0c;微控制器&#xff09; 是机器人的“神经末梢”&#xff0c;负责 实时控制、传感器接口、低层通信 等关键任务。 作用 MCU的核心作用 功能具体任务示例实时控制电机PWM生成、PID调节、紧急制动机械臂关节控制、无人机电调…...

从融智学视域快速回顾世界历史和主要语言文字最初历史证据(列表对照分析比较)

融智学视域下世界历史与语言文字起源对照分析表 以下从融智学五个基本范畴&#xff08;物、意、文、道、理义法&#xff09;&#xff0c;梳理主要古代文明的文字起源&#xff0c;及其历史证据&#xff0c;并进行跨文明比较&#xff1a; 文明/文字 物&#xff08;载体&#xf…...

JavaScript性能优化实战(8):缓存策略与离线优化

前言 在Web应用中,性能优化不仅仅是关于代码执行速度,还与资源获取和数据持久化密切相关。合理的缓存策略可以显著减少网络请求,提升应用响应速度,同时有效降低服务器负载和用户流量消耗。离线优化则进一步解决了网络不稳定或断网场景下的用户体验问题,为Web应用提供类似…...

quantization-大模型权重量化简介

原文地址 https://towardsdatascience.com/introduction-to-weight-quantization-2494701b9c0c/ https://towardsdatascience.com/4-bit-quantization-with-gptq-36b0f4f02c34/ 权重量化简介 大型语言模型(LLM) 以其庞大的计算需求而闻名。通常&#xff0c;模型的大小是通过将参…...

unity ScriptObject的使用

1.先定义一个类数据类型 [Serializable] public class FoodItemData { public int foodID; // 食物唯一ID public string foodName; // 食物名称 [TextArea(3, 10)] // 多行文本输入 public string description; // 食物描述 pu…...

广义线性模型三剑客:线性回归、逻辑回归与Softmax分类的统一视角

文章目录 广义线性模型三剑客&#xff1a;线性回归、逻辑回归与Softmax分类的统一视角引言&#xff1a;机器学习中的"家族相似性"广义线性模型(GLMs)基础三位家族成员的统一视角1. 线性回归(Linear Regression)2. 逻辑回归(Logistic Regression)3. Softmax分类(Softm…...

Linux时钟与时间API

深入理解 Linux 时钟与时间 API 时间是计算领域的基础概念之一。在 Linux 系统中&#xff0c;精确可靠的时间管理对于系统日志记录、任务调度、网络通信、性能分析、文件系统操作乃至应用程序的正确运行都至关重要。本文将深入探讨 Linux 中的时钟类型、相关的 C API、使用示例…...

闭包(Closure)及其作用和影响

一、闭包是什么 闭包&#xff08;Closure&#xff09;指的是​​一个函数能够记住并访问其词法作用域&#xff08;lexical scope&#xff09;&#xff0c;即使该函数在其词法作用域之外执行​​。换句话说&#xff0c;闭包让函数可以“记住”它被创建时的环境。 闭包的核心特…...