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

【Java基础】为什么不支持多重继承?方法重载和方法重写之间区别、Exception 和 Error 区别?

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~
🌱🌱个人主页:奋斗的明志
🌱🌱所属专栏:Java基础面经

📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。

在这里插入图片描述

Java 基础

  • 一、为什么 Java 不支持多重继承?
    • 1、解释
    • 2、多继承不行,为什么接口多实现可以呢?
      • 2.1 Java JDK8 之前
      • 2.1 Java JDK8+
    • 3、总结
  • 二、Java 中 方法重载和方法重写之间的区别是什么?
    • 1、区别
    • 2、重载注意点
    • 2、重写注意点
  • 三、Java 中 Exception 和 Error 有什么区别?
    • 1、Exception
    • 2、Error
    • 3、图示各层关系
    • 4、异常处理注意点
      • 4.1 尽量不要捕获类似 Exception 这样通用的异常,而应该捕获特定的异常
      • 4.2 不要“吞”了异常
      • 4.3 不要延迟处理异常
      • 4.4 只在需要try-catch的地方try-catch,try-catch的范围能小则小
      • 4.5 不要通过异常来控制程序流程
      • 4.6 不要在finally代码块中处理返回值或者直接return

一、为什么 Java 不支持多重继承?

1、解释

主要是因为多继承会产生 菱形继承(也叫钻石继承)问题,Jva之父就是吸取C++他们的教训,因此不支持多继承。
所谓的菱形继承很好理解,我们来看下这个图:

在这里插入图片描述

是不是看起来很像一个菱形,BC继承了A,然后D继承了BC,假设此时要调用D内定义在A的方法,因为B和C都有不同的实现
此时就会出现歧义,不知道应该调用哪个了。

// 假设允许多继承(伪代码)
class A { void foo() { System.out.println("A"); } }
class B { void foo() { System.out.println("B"); } }
class C extends A, B {} // 错误:C 中的 foo() 是继承 A 还是 B?

2、多继承不行,为什么接口多实现可以呢?

接口和抽象类不同,接口里的方法都是抽象的(在Java 8之前),没有具体的实现。
所以当一个类实现多个接口时,即使这些接口有相同的方法签名,类只需要提供一个具体的实现,这样就避免了方法冲突的问题。因为接口本身没有实现,不会有多个实现带来的歧义。即使两个接口有相同的方法,实现类只需要实现一次这个方法,这样就不会有问题。

Java 8之后接口可以有默认方法,这时候如果有多个接口有相同的默认方法,实现类必须重写这个方法,否则编译器会报错。
这时候就需要在实现类中明确指定使用哪个接口的默认方法,或者自己重新实现。这可能也是允许接口多实现的一个调整,但核心还是因为接口的默认方法需要显式处理冲突,而类继承的结构性问题无法解决。

2.1 Java JDK8 之前

interface X { void foo(); }
interface Y { void foo(); }class Z implements X, Y {@Overridepublic void foo() { System.out.println("Z 统一实现 X 和 Y 的 foo()");}
}

2.1 Java JDK8+

  • 这种强制重写机制将冲突的解决权交给开发者,确保逻辑明确。
interface X { default void foo() { System.out.println("X"); } }
interface Y { default void foo() { System.out.println("Y"); } }class Z implements X, Y {@Overridepublic void foo() {X.super.foo(); // 显式选择调用 X 的默认实现// 或 Y.super.foo(); 或自定义逻辑}
}

3、总结

Java 通过禁止类的多继承避免了菱形问题和状态冲突,而接口的多实现通过以下机制保证安全:

  • 接口方法由实现类统一实现(消除方法歧义)。

  • 默认方法冲突需显式解决(开发者控制逻辑)。

  • 接口不涉及状态管理(避免字段冲突)。

这种设计在保证语言简洁性的同时,提供了高度的灵活性,符合“单一继承,多重接口”的面向对象设计原则。

二、Java 中 方法重载和方法重写之间的区别是什么?

1、区别

  • 方法重载(Overloading):在同一个类中,允许有多个同名方法,只要它们的参数列表不同(参数个数、类型或顺序)。主要关注方法的签名变化,适用于在同一类中定义不同场景下的行为

  • 方法重写(Overriding):子类在继承父类时,可以重写父类的某个方法(参数列表、方法名必须相同),从而为该方法提供新的实现。主要关注继承关系,用于子类改变父类的方法实现,实现运行时多态性

  • 区别主要如下:

区别重载重写
发生的场所在同一个类中在继承关系的子类和父类之间
参数列表必须不同(参数的数量、类型或顺序不同)必须相同,不能改变参数列表
返回类型可以不同必须与父类方法的返回类型相同,或者是父类返回类型的子类(协变返回类型)
访问修饰符不受访问修饰符影响子类方法的访问修饰符不能比父类更严格,通常是相同或更宽泛
静态和非静态方法可以是静态方法或非静态方法只能重写非静态方法,静态方法不能被重写(静态方法可以被隐藏)
异常处理方法的异常处理可以不同子类的异常不能抛出比父类更多的异常(可以抛出更少的或相同类型的异常)

2、重载注意点

重载中提到的方法同名 但参数列表不同(参数个数、类型或顺序),这里要注意和返回值没有关系,方法的签名仅是名字和参数列表不包括返回值

重载通常用于提供同一操作的不同实现,例如构造函数的重载、不同类型输入的处理等。

  • 代码实现:
public class A{// 重载方法:参数数量不同public void print(int a) {System.out.println("Printing int: " + a);}// 重载方法:参数类型不同public void print(String a) {System.out.println("Printing String: " + a);}// 重载方法:参数类型和数量不同public void print(int a, int b) {System.out.println("Printing two ints: " + a + ", " + b);}
}

2、重写注意点

在重写时,子类方法不能使用比父类更严格的访问级别
例如,父类的方法是 protected,子类不能将其修改为 private,但可以改为public
子类方法抛出的异常必须与父类一致,或者是其父类异常的子类

重写通常用于在子类中提供父类方法的具体实现,以实现运行时多态性。例如,子类对父类方法进行扩展或修改以适应特定需求。

  • 代码实现:
class A{public void display() {System.out.println("Parent display");}
}class B extends A{@Overridepublic void display() {System.out.println("Child display");}
}public class Test{public static void main(String[] args) {A a = new B();a.display(); // 输出 "Child display"}
}
  • 还有一个@Override注解,在重写方法时使用@Override注解,编译器可以帮助检查是否正确实现了重写,以防误操作。

三、Java 中 Exception 和 Error 有什么区别?

ExceptionError 都是 Throwable 类的子类(在Java代码中,只有继承了 Throwable 类的实例才可以被 throw 或者被 catch
它们表示在程序运行时发生的异常或者错误情况

总结:Exception 表示可以被处理的程序异常,Error 表示系统级的不可恢复错误

1、Exception

Exception : 是程序中可以处理的异常情况,表示程序逻辑或外部环境中的问题,可以通过代码进行恢复或处理。
常见子类有:IOExceptionSQLExceptionNullPointerExceptionIndexOutofBoundsException等。
Exception 又分为 Checked Exception(编译期异常)Unchecked Exception(运行时异常)
Checked Exception : 在编译时必须显式处理(如使用try-catch块或通过throws声明抛出)。如IOException
Unchecked Exception : 运行时异常,不需要显式捕获。常见的如 NullPointerExceptionIllegalArgumentException 等,继承自 RuntimeException

2、Error

Error 表示严重的错误,通常是 JVM 层次内系统级的、无法预料的错误,程序无法通过代码进行处理或恢复。例如内存耗尽(OutofMemoryError)栈溢出(Stackoverf1 OwError)。Error 不应该被程序捕获或处理,因为一般出现这种错误时程序无法继续运行。

3、图示各层关系

在这里插入图片描述

比如用户编写一个程序,如果文件没找到,会抛出 FileNotFoundException,属于编译异常,必须处理。而如果程序递归太深导致栈溢出,会抛出 StackOverflowError,属于 Error,程序一般无法处理。

4、异常处理注意点

4.1 尽量不要捕获类似 Exception 这样通用的异常,而应该捕获特定的异常

软件工程是一门协作的艺术,在日常的开发中我们有义务使自己的代码能更直观、清晰地表达出我们想要表达的信息。
但是如果你什么异常都用了 Exception ,那别的开发同事就不能一眼得知这段代码实际想要捕获的异常,并且这样的代码也会捕获到可能你希望它抛出而不希望捕获的异常。

4.2 不要“吞”了异常

如果我们捕获了异常,不把异常抛出,或者没有写到日志里,那会出现什么情况?线上除了bug莫名其妙的没有任何的信息,你都不知道哪里出错以及出错的原因。
这可能会让一个简单的bug变得难以诊断,而且有些同学比较喜欢用 catch之后 e.printStackTrace(),在我们产品中通常不推荐用这种方法,一般情况下这样是没有问题的但是这个方法输出的是个标准错误流。
比如是在分布式系统中,发生异常但是找不到 stacktrace
所以最好是输入到日志里,我们产品可以自定义一定的格式,将详细的信息输入到日志系统中,适合清晰高效的排查错误。

4.3 不要延迟处理异常

比如有个方法,参数是个 name,函数内部调了别的好几个方法,其实你的 name 传的是 null 值,但是你没有在进入这个方法或者这个方法一开始就处理这个情况,而是在你调了别的好几个方法然后爆出这个空指针。这样的话明明你的出错堆栈信息只需要抛出一点点信息就能定位到这个错误所在的地方,经过了好多方法之后可能就是一坨堆栈信息。

4.4 只在需要try-catch的地方try-catch,try-catch的范围能小则小

只要必要的代码段使用try-catch,不要不分青红皂白try住一坨代码,因为try-catch中的代码会影响JVM对代码的优化,例如重排序。

4.5 不要通过异常来控制程序流程

一些可以用 if/lse 的条件语句来判断 例如 null 值等,就不要用异常,异常肯定是比一些条件语句低效的,有CPU分支预测的优化等。
而且每实例化一个 Exception 都会对栈进行快照,相对而言这是一个比较重的操作,如果数量过多开销就不能被忽略了。

4.6 不要在finally代码块中处理返回值或者直接return

finallyreturn 或者处理返回值会让发生很诡异的事情,比如覆盖了try中的return,或者屏蔽的异常。

在这里插入图片描述

在这里插入图片描述

相关文章:

【Java基础】为什么不支持多重继承?方法重载和方法重写之间区别、Exception 和 Error 区别?

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Java基础面经 📚本系列文章为个…...

使用scoop 下载速度慢怎么办

在国内使用 Scoop 下载速度慢是一个常见问题,主要是因为 Scoop 默认的软件源(bucket)和下载服务器通常位于国外。以下是一些提高下载速度的方法: 1. 更换 Scoop 镜像源(Bucket 镜像): 原理&…...

使用Redis解决使用Session登录带来的共享问题

在学习项目的过程中遇到了使用Session实现登录功能所带来的共享问题,此问题可以使用Redis来解决,也即是加上一层来解决问题。 接下来介绍一些Session的相关内容并且采用Session实现登录功能(并附上代码),进行分析其存在…...

OnlyOffice docker 运行(详细)

下载镜像 推荐使用 GitHub Action 方式下载: Action 地址:https://github.com/Shixuebin/DockerTarBuilder 教程地址:https://www.bilibili.com/video/BV1EZ421M7mL/ docker 镜像安装 docker load -i xxx.tar镜像运行 docker run -i -t -…...

CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战

前一篇文章,学习率调整策略 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started CNN 卷积神经网络 CNN什么是卷积工作原理深度学习的卷积运算提取特征不同特征核的效果比较卷积核感受野共享权重池化 示例源码 …...

自动驾驶数据集三剑客:nuScenes、nuImages 与 nuPlan 的技术矩阵与生态协同

目录 1、引言 2、主要内容 2.1、定位对比:感知与规划的全维覆盖 2.2、数据与技术特性对比 2.3、技术协同:构建全栈研发生态 2.4、应用场景与评估体系 2.5、总结与展望 3、参考文献 1、引言 随着自动驾驶技术向全栈化迈进,Motional 团…...

02.07 TCP服务器与客户端的搭建

一.思维导图 二.使用动态协议包实现服务器与客户端 1. 协议包的结构定义 首先,是协议包的结构定义。在两段代码中,pack_t结构体都被用来表示协议包: typedef struct Pack {int size; // 记录整个协议包的实际大小enum Type type; …...

基于机器学习时序库pmdarima实现时序预测

目录 一、Pmdarima实现单变量序列预测1.1 核心功能与特性1.2 技术优势对比1.3 python案例1.3.1 时间序列交叉验证1.3.1.1 滚动交叉验证1.3.1.2 滑窗交叉验证 时间序列相关参考文章: 时间序列预测算法—ARIMA 基于VARMAX模型的多变量时序数据预测 基于机器学习时序库…...

计算机视觉的研究方向、发展历程、发展前景介绍

以下将分别从图像分类、目标检测、语义分割、图像分割(此处应主要指实例分割)四个方面,为你介绍研究生人工智能计算机视觉领域的应用方向、发展历程以及发展前景。 文章目录 1.图像分类应用方向发展历程发展前景 2.目标检测应用方向发展历程…...

NLP_[2]-认识文本预处理

文章目录 1 认识文本预处理1 文本预处理及其作用2. 文本预处理中包含的主要环节2.1 文本处理的基本方法2.2 文本张量表示方法2.3 文本语料的数据分析2.4 文本特征处理2.5数据增强方法2.6 重要说明 2 文本处理的基本方法1. 什么是分词2 什么是命名实体识别3 什么是词性标注 1 认…...

单硬盘槽笔记本更换硬盘

背景 本人的笔记本电脑只有一个硬盘槽,而且没有M.2的硬盘盒,只有一个移动硬盘 旧硬盘:512G 新硬盘:1T 移动硬盘:512G 参考链接:https://www.bilibili.com/video/BV1iP41187SW/?spm_id_from333.1007.t…...

在stm32mp257的yocto中设置用户名和密码

在STM32MP257的Yocto环境中设置用户名和密码,通常需要修改根文件系统的用户配置。以下是详细步骤: 1. 设置root密码 默认情况下,root账户可能无密码或使用默认密码。通过以下方法修改: 方法1:在local.conf中直接设置 # 打开Yocto工程的配置文件 vi conf/local.conf# 添…...

力扣--链表

相交链表 法一: 把A链表的节点都存HashSet里,遍历B链表找相同的节点 法二: 把A、B指针都移到末尾,再同时往回走,每次往回走都比较 当前节点的下一节点(a.next b.next ?)是否相同,当不相同…...

【redis】数据类型之hash

Redis中的Hash数据类型是一种用于存储键值对集合的数据结构。与Redis的String类型不同,Hash类型允许你将多个字段(field)和值(value)存储在一个单独的key下,从而避免了将多个相关数据存储为多个独立的key。…...

多路文件IO

一、思维导图...

计算机网络面经

文章目录 基础HTTPHTTP报文结构 (注意)RPC和http的区别TCPTCP报文结构(注意)IP基础 HTTP HTTP报文结构 (注意) 请求行:请求方法get/post,url,http版本 请求头:用户标识,请求体长度,类型,cookie 请求体:内容 状态行:状态码,状态消息、(http版本) 响应头:内…...

非递减子序列(力扣491)

这道题的难点依旧是去重,但是与之前做过的子集类问题的区别就是,这里是求子序列,意味着我们不能先给数组中的元素排序。因为子序列中的元素的相对位置跟原数组中的相对位置是一样的,如果我们改变数组中元素的顺序,子序…...

00_Machine Vision_基础介绍

基础概念 由于计算机只能处理离散的数据,所以需要将连续的图片转化为离散的数据。主要包含:空间离散以及灰度值离散 空间离散:将图片的像素点离散化,即将图片的像素点转化为一个个的小方块,即为图片的分辨率。分辨率…...

排错 -- 用React.js,Solidity,智能合约构建最新区块链应用

真枪实弹:第一个Web3项目【上集】用React.js,Solidity,智能合约构建最新区块链应用详细教程 构建web跟随b站教程中遇到了很多错误,从今天开始构建完整的应用,在此记录一些排错。 问题情况1:跟随视频后无Src文件 问题情况1解决方法&#xff1…...

【WB 深度学习实验管理】利用 Hugging Face 实现高效的自然语言处理实验跟踪与可视化

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在自然语言处理领域,使用Hugging Face的Transformers库进行模型训练已经成为主流。然而,随着模型复…...

ximalaya(三) playUriList值解密--webpack

本文主要介绍解密音频播放url参数。 本文仅代表个人理解,如有其他建议可在评论区沟通。 声明 仅仅记录一下自己的学习方法,不作为其他参考、更不作为商业用途。如有侵犯请联系本人删除 目标地址:aHR0cHM6Ly93d3cueGltYWxheWEuY29tL3NvdW5k…...

ES6 Map 数据结构是用总结

1. Map 基本概念 Map 是 ES6 提供的新的数据结构,它类似于对象,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map 也可以跟踪键值对的原始插入顺序。 1.1 基本用法 // 创建一个空Map…...

使用Redis实现业务信息缓存(缓存详解,缓存更新策略,缓存三大问题)-更新中

一、什么是缓存? 缓存是一种高效的数据存储方式,它通过将数据保存在内存中来提供快速的读写访问。这种机制特别适用于需要高速数据访问的应用场景,如网站、应用程序和服务。在处理大量数据和高并发请求时, 缓存能显著提高性能和用…...

Windows 系统下使用 Ollama 离线部署 DeepSeek - R1 模型指南

引言 随着人工智能技术的飞速发展,各类大语言模型层出不穷。DeepSeek - R1 凭借其出色的语言理解和生成能力,受到了广泛关注。而 Ollama 作为一款便捷的模型管理和部署工具,能够帮助我们轻松地在本地环境中部署和使用模型。本文将详细介绍如…...

1.2 变革里程碑:Transformer 的崛起

变革里程碑:Transformer 的崛起 一、架构革命的核心驱动力 #mermaid-svg-hsXnwHI0wO2qZaqb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}#mermaid-svg-hsXnwHI0wO2qZaqb .error-icon{fill:#552222;}#mermaid-sv…...

SpringBoot速成(八)登录实战:未登录不能访问 P5-P8

1.登录 package com.itheima.springbootconfigfile.controller;import com.itheima.springbootconfigfile.pojo.Result; import com.itheima.springbootconfigfile.pojo.User; import com.itheima.springbootconfigfile.service.UserService;import com.itheima.springbootco…...

[Unity角色控制专题] 详细说明如何使用Character Controller配合脚本实现类似MC的第一人称控制(仅移动与视角摇晃)

关于角色控制器的基本用法我就不做介绍了,请自行查看相关文档: Unity - Manual: Character Controller component reference 本文用到了三角函数和插值函数,非常简单,如有疑问请查询以下文章: Unity中的数学 之 Mathf_uni…...

2025_2_9 C语言中队列

1.队列(先进先出) 队列也是一种受限制的线性结构 它只能在一端添加元素,在另一端访问,删除元素 (队首插入,队尾删除) 因为链表实现没有数组实现快,所以队列大多数是用数组实现的 q…...

(原创,可用)SSH实现内外网安全穿透(安全不怕防火墙)

目前有A、B终端和一台服务器,A、B机器不能直接访问,服务器不能直接访问A、B终端但是A、B终端可以访问服务器,这个场景很像我们有一台电脑在单位内网,外机器想访问内网系统,可能大家目前想到的就是frp之类穿透工具&…...

mysql安装starting the server报错

win10家庭版无法启动服务的,先不要退出,返回上一栏,然后通过电脑搜索栏输入服务两个字,在里面找到mysql80,右键属性-登录,登录身份切换为本地系统就行了...

设计高效的测试用例:从需求到验证

在现代软件开发过程中,测试用例的设计一直是质量保证(QA)环节的核心。有效的测试用例不仅能够帮助发现潜在缺陷,提升软件质量,还能降低后期修复成本,提高开发效率。尽管如此,如何从需求出发&…...

【阅读笔记】信息熵自动曝光An Automatic Exposure Algorithm Based on Information Entropy

一、算法背景 信息熵作为衡量图像信息量的重要指标,能够反映图像的细节丰富程度。通过基于信息熵的自动曝光算法,可以自动调整曝光时间,使图像包含更多信息,从而提高图像质量。 灰度直方图在各个灰度值上分布越均匀,…...

Dockerfile 文件详解

在平常的开发工作中,我们经常需要部署项目,一个项目开发完成后,使用 Docker 方式部署,那么首先得构造镜像,构造镜像最主要的就是 Dockerfile 文件的编写,今天简单来总结下 Dockerfile 文件的编写以及有哪些…...

模型压缩 --学习记录2

模型压缩 --学习记录2 如何找到更好的权衡方式(模型量化)方法一:寻找更好的 range方法二:寻找更好的 X-fp32(浮点数)方法三:寻找更好的 scale 和 zp方法四:寻找更好的 roundPTQ 后训练量化(离线量化)QAT 量化感知训练(在线量化)量化为什么会带来加速?三、模型稀疏技…...

JVM常见命令

引言 掌握JVM是属于Java程序员的必修课,对线程的掌控,对内存的把控,所以了解JVM常见命令可以帮助我们快速了解虚拟机的详细数据 命令 1. java 这是最基础的命令,用于启动一个 Java 应用程序。 java -cp /path/to/your/class…...

ASP.NET Core托管服务

目录 托管服务的异常问题 托管服务中使用DI 托管服务案例:数据的定时导出 场景,代码运行在后台。比如服务器启动的时候在后台预先加载数据到缓存,每天凌晨3点把数据导出到备份数据库,每隔5秒钟在两张表之间同步一次数据。托管服…...

模型压缩中的四大核心技术 —— 量化、剪枝、知识蒸馏和二值化

一、量化 (Quantization) 量化的目标在于将原始以 32 位浮点数表示的模型参数和中间激活,转换为低精度(如 FP16、INT8、甚至更低位宽)的数值表示,从而在减少模型存储占用和内存带宽的同时,加速推理运算,特别适用于移动、嵌入式和边缘计算场景。 1.1 概念与目标 基本思想…...

C++:类和对象初识

C:类和对象初识 前言类的引入与定义引入定义类的两种定义方法1. 声明和定义全部放在类体中2. 声明和定义分离式 类的成员变量命名规则 类的访问限定符及封装访问限定符封装 类的作用域与实例化类的作用域类实例化实例化方式: 类对象模型类对象的大小存储…...

01-SDRAM控制器的设计——案例总概述

本教程重点▷▷▷ 存储器简介。 介绍 SDRAM 的工作原理。 详细讲解SDRAM 控制的Verilog 实现方法。 PLL IP和FIFO IP 的调用,计数器设计,按键边沿捕获,数码管控制。 完成SDRAM控制器应用的完整案例。 Signal Tap 调试方法。 准备工作▷…...

笔记:蓝桥杯python搜索(3-2)——DFS剪支和记忆化搜索

目录 一、DFS剪支 二、例题 P2942 数字王国之军训军队 P3075 特殊的多边形 三、记忆化搜索 四、例题 例题 P3820 混境之地 P216 地宫取宝 一、DFS剪支 在搜索过程中,如果需要完全遍历所有情况可能需要很多时间在搜索到某种状态时,根据当前状态判断…...

处理数据及其选择关键列进行一次聚类

1. 数据加载与初步处理 # 文件路径 file_path ../data/all_database_result.csv# 读取CSV文件到DataFrame df pd.read_csv(file_path)# 选择特定的特征列 selected_features [Q10, Q12, Q13, Q14]# 缺失值处理:这里简单地删除含有任何缺失值的行 df.dropna(subse…...

Qt 支持的动画格式对比,Lottie/APNG/GIF/WEBP

Qt版本:6.7.2 , QML 一,Lottie 在qml中使用LottieAnimation即可,但有三个问题: 1.动画加载中报错: 如果图片(.json)本身存在不支持的effect 或shape type等,效果并不好&#xff1a…...

FaceFusion如何设置公开链接和端口

有时候我们想在局域网内的其他设备上使用 FaceFusion,这时候需要设置公开链接和端口。 当你运行 FaceFusion 的时候,会发现有这样的一段提示: To create a public link, set shareTrue in launch().但是这个提示是错的,如果你查…...

【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统

在当前数字化时代,网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言,确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式,为OpenVPN的二次登录认证提供了理想的解决方案,特别是…...

RK3568实战项目(六)--开发工具介绍

目录 一、引言 二、开发工具 ------>2.1、trust_merger ------>2.2、boot_merger ------>2.3、loaderimage ------>2.4、resource_tool ------>2.5、mkimage ------>2.6、mkbootimg ------>2.7、unpack_bootimg ------>2.8、repack-bootimg …...

01.02、判定是否互为字符重排

01.02、[简单] 判定是否互为字符重排 1、题目描述 给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。 在这道题中,我们的任务是判断两个字符串 s1 和 s2 是…...

尝试一下,交互式的三维计算python库,py3d

py3d是一个我开发的三维计算python库,目前不定期在PYPI上发版,可以通过pip直接安装 pip install py3d 开发这个库主要可视化是想把自己在工作中常用的三维方法汇总积累下来,不必每次重新造轮子。其实现成的python库也有很多,例如…...

DeepSeek-R1模型的数学原理(说人话)

文章目录 1、什么是GRPO2、数学原理3、比喻4、流程总结 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,前三年专注于Java领域学习,擅长web应用开发,目前已转行人工智能领域。 🦅个人…...

安宝特方案 | AR助力制造业安全巡检智能化革命!

引言: 在制造业中,传统巡检常面临流程繁琐、质量波动、数据难以追溯等问题。安宝特AR工作流程标准化解决方案,通过增强现实AR技术,重塑制造业安全巡检模式,以标准化作业流程为核心,全面提升效率、质量与…...

DeepSeek和ChatGPT的对比

最近DeepSeek大放异彩,两者之间有什么差异呢?根据了解到的信息,简单做了一个对比。 DeepSeek 和 ChatGPT 是两种不同的自然语言处理(NLP)模型架构,尽管它们都基于 Transformer 架构,但在设计目标…...