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

学习日志03 java

最近有点懈怠了,多多实践,多敲代码,多多专注!

1 ArithmeticException

ArithmeticException 是 Java 中的一个异常类,它继承自 RuntimeException,用于表示在算术运算中出现的错误。这个异常通常在以下情况下抛出:

  1. 整数除以零:当你尝试用一个整数(如 intlong 等)除以零时,会抛出 ArithmeticException

    java

    int result = 10 / 0; // 这行代码会抛出 ArithmeticException
    
  2. 模运算(取余)中除数为零:同样,整数的模运算中如果除数是零,也会抛出此异常。

    java

    int remainder = 10 % 0; // 这行代码也会抛出 ArithmeticException
    
  3. 其他情况:在极少数情况下,某些库或自定义代码可能会显式抛出这个异常,但最常见的场景还是整数除零。

注意事项

  • 浮点数除零:对于浮点数(如 float 和 double),除以零不会抛出异常,而是返回无穷大(Infinity)或 NaN(Not a Number)。

    java

    double result = 10.0 / 0.0; // 返回 Infinity
    double invalid = 0.0 / 0.0; // 返回 NaN
    
  • 如何避免:在进行除法或模运算前,应先检查除数是否为零。

    java

    int divisor = 0;
    if (divisor != 0) {int result = 10 / divisor;
    } else {System.out.println("除数不能为零");
    }
    
  • 异常处理:如果你无法在代码中预先检查除数是否为零,可以使用 try-catch 块捕获异常。

    java

    try {int result = 10 / divisor;
    } catch (ArithmeticException e) {System.out.println("发生算术异常: " + e.getMessage());
    }
    

总结

ArithmeticException 主要用于处理整数运算中的除零错误,是一个运行时异常(不需要显式捕获)。在编写代码时,建议通过条件判断避免除零操作,或使用异常处理机制增强程序的健壮性。

2 java里面的异常体系结构

写捕获异常的时候要从小到大写,要不然会被覆盖。

throw new RuntimeException(e); 的含义

package Exception;public class Test2 {public static void main(String[] args) {int a =1;int b =0;try {System.out.println(a/b);} catch (Exception e) {throw new RuntimeException(e);} finally {}}
}

throw new RuntimeException(e); 的含义是把捕获到的异常 e 封装成一个新的运行时异常 RuntimeException,然后再次抛出。

---------------------------------------------------------------------------------------------------------------------------------Q:new出来的这个异常对象是我随便想叫什么名字的吗?(・∀・(・∀・(・∀・*)

A:在 Java 里,通过new关键字创建异常对象时,异常变量的命名规则和普通变量是一样的。也就是说,你能按照自己的想法来命名,不过为了保证代码的可读性,一般会使用能体现异常类型或者含义的名称。

=========================================================================

这里的 e 是原始异常对象,作为参数传入,它会成为新异常的原因(cause)。这种做法被称作异常包装或者异常链

为什么要进行异常包装?

  1. 隐藏底层实现细节:假设你设计的是一个数据库工具类,当出现 SQLException 时,你不想让上层调用者直接处理这个特定的数据库异常,于是将其包装成更通用的 RuntimeException
  2. 异常类型转换:受检查异常(像 IOException)无法直接抛出,这时可以把它包装成运行时异常,从而避免进行 throws 声明。
  3. 添加更多上下文信息:你可以创建自定义的异常类,然后把原始异常包装在其中,为异常处理提供更多的信息。

异常包装的示例

下面是一个简单的工具类示例,展示了如何使用异常包装:

public class FileUtils {public static String readFile(String path) {try {return Files.readString(Path.of(path));} catch (IOException e) {// 将受检查异常包装成运行时异常throw new RuntimeException("读取文件失败: " + path, e);}}
}

处理包装后的异常

在调用栈的上层,你可以捕获这个包装后的异常,并且通过 getCause() 方法获取原始异常:

java

try {FileUtils.readFile("nonexistent.txt");
} catch (RuntimeException e) {System.err.println("发生错误: " + e.getMessage());// 获取原始异常Throwable originalCause = e.getCause();if (originalCause instanceof IOException) {System.err.println("原始错误: 文件不存在");}
}

你提供的代码存在的问题

在你的代码里,捕获到 ArithmeticException 后又把它包装成 RuntimeException 抛出,这是多此一举的。因为 ArithmeticException 本身就是运行时异常,完全可以直接抛出。更合适的处理方式应该是:

java

try {System.out.println(a/b);
} catch (ArithmeticException e) {System.err.println("除数不能为零!");// 或者记录日志// logger.error("除数为零", e);
}

总结来说,异常包装是一种很有用的技巧,但要根据具体场景合理运用。在你的代码中,这样的包装并没有实际价值。

4 有关new出来的异常对象的命名

变量命名规范

下面是一些常见的命名方式:

java

try {// 执行可能会抛出异常的代码
} catch (ExceptionType e) { // 通常使用单个字母,像e、exthrow new RuntimeException("错误信息", e);
}// 或者使用更具描述性的名称
try {// ...
} catch (FileNotFoundException fileNotFoundEx) {throw new RuntimeException("文件未找到", fileNotFoundEx);
}// 也可以使用全小写加下划线的形式(不过这种方式不太常用)
try {// ...
} catch (SQLException sql_exception) {// ...
}

命名建议!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  1. 保持简洁:使用eex或者简单的描述,例如fileError
  2. 类型清晰:命名要能体现异常的类型,比如networkExceptionparseError
  3. 避免重复:不要使用和已有变量相同的名称。

异常类名与变量名的区别

需要注意的是,异常类名(像RuntimeException)是固定的,必须使用已有的类或者自定义类,而异常对象的变量名(如e)则可以自由命名。

java

// 正确:使用已有的异常类,变量名可自由选择
catch (Exception e) {throw new MyCustomException("自定义错误", e); // MyCustomException 是自定义的异常类
}// 错误:不能随意编造异常类名
catch (Exception e) {throw new MyRandomException(); // 编译会报错,因为 MyRandomException 类不存在
}

总结

你可以自由命名异常对象的变量,但异常类名必须是已存在的类。建议采用简洁且能描述异常性质的命名方式,比如:

java

try {int result = divide(1, 0);
} catch (ArithmeticException divisionError) {throw new RuntimeException("除法运算失败", divisionError);
}

5 介绍throw和throws 

throw 和 throws 是 Java 中用于处理异常的两个关键字,它们的主要区别在于位置用途

一、基本用法

1. throw(主动抛出异常)
  • 位置:用在方法内部,用于主动抛出一个异常对象
  • 语法throw new ExceptionType("错误信息");
  • 示例

    java

    public void divide(int a, int b) {if (b == 0) {throw new ArithmeticException("除数不能为零"); // 主动抛出异常}System.out.println(a / b);
    }
    
2. throws(声明异常)
  • 位置:放在方法签名后面,用于声明该方法可能会抛出的异常
  • 语法returnType methodName(params) throws ExceptionType1, ExceptionType2... { ... }
  • 示例

    java

    public void readFile(String path) throws FileNotFoundException {File file = new File(path);if (!file.exists()) {throw new FileNotFoundException("文件不存在"); // 抛出异常}// ...
    }
    

二、核心区别

---------------------------------------------------------------------------------------------------------------------------------

对比项throwthrows
位置方法内部方法签名后面
作用主动抛出一个异常对象声明方法可能抛出的异常类型
语法throw new Exception(...);void method() throws Exception {...}
异常类型只能抛出一个具体的异常对象可以声明多个异常类型,用逗号分隔
处理要求必须被捕获(try-catch)或继续向上抛出调用者必须处理受检查异常(Checked Exception)

三、联系与配合

  1. 受检查异常必须配合 throws

    • 如果方法内部抛出受检查异常(如 IOException),则必须在方法签名中用 throws 声明。

    java

    public void writeFile() throws IOException { // 必须声明 throwsFileWriter writer = new FileWriter("test.txt");// ...
    }
    
  2. 异常传递链

    • throw 抛出的异常可以通过 throws 层层向上传递,直到被 try-catch 捕获。

    java

    public void methodA() throws IOException {throw new IOException("文件错误"); // 抛出异常
    }public void methodB() throws IOException {methodA(); // 未处理异常,继续向上抛
    }public void methodC() {try {methodB(); // 最终捕获异常} catch (IOException e) {e.printStackTrace();}
    }
    

四、常见误区

  1. throw 后不能有后续代码

    java

    public void test() {throw new RuntimeException();System.out.println("永远执行不到"); // 编译错误!
    }
    
  2. throws 不负责处理异常

    • throws 只是声明异常,真正的处理(try-catch)要在调用链的上层完成。
  3. 运行时异常(RuntimeException)不强制要求 throws

    java

    public void divide(int a, int b) {if (b == 0) {throw new ArithmeticException(); // 无需声明 throws}
    }
    

五、总结

  • throw:用于 “制造” 异常,是异常的源头。
  • throws:用于 “传递” 异常,提醒调用者处理潜在的异常。
  • 配合使用:当方法内部 throw 受检查异常时,必须用 throws 声明;调用者可以继续 throws 或用 try-catch 捕获。

6 自定义异常在实际应用中的经验总结

1 处理运行时异常时,采用逻辑去合理规避同时辅助 try-catch 处理

2 在多重 catch 块后面,可以加一个 catch (Exception)(放一个最大的异常哈) 来处理可能会被遗漏的异常

3 对于不确定的代码,也可以加上 try-catch,处理潜在的异常(IDE一般会报错,这个时候呢alt + enter 可以自动提示

4 尽量去处理异常增加一些处理异常的代码块!!切忌只是简单地调用 printStackTrace () 去打印输出(这个是默认的处理哈

5具体如何处理异常,要根据不同的业务需求和异常类型去决定(这个多多实践吧,,,)

6 尽量添加 finally 语句块去释放占用的资源(IO Scanner异常之类的哈,涉及到资源的释放)

相关文章:

学习日志03 java

最近有点懈怠了,多多实践,多敲代码,多多专注! 1 ArithmeticException ArithmeticException 是 Java 中的一个异常类,它继承自 RuntimeException,用于表示在算术运算中出现的错误。这个异常通常在以下情况…...

数据库故障排查指南

对于项目研发来讲,数据库是必不可少的一个重要环节,本文详细总结了项目研发中数据库故障问题排查指南,希望会对大家有所帮助。 数据库连接问题 检查数据库服务是否正常运行,确认网络连接是否畅通,验证数据库配置文件…...

洛谷 P1955 [NOI2015] 程序自动分析

【题目链接】 洛谷 P1955 [NOI2015] 程序自动分析 【题目考点】 1. 并查集 2. 离散化 【解题思路】 多组数据问题,对于每组数据,有多个 x i x j x_ix_j xi​xj​或 x i ≠ x j x_i \neq x_j xi​xj​的约束条件。 所有相等的变量构成一个集合&…...

音视频学习:使用NDK编译FFmpeg动态库

1. 环境 1.1 基础配置 NDK 22b (r22b)FFmpeg 4.4Ubuntu 22.04 1.2 下载ffmpeg 官网提供了 .tar.xz 包,可以直接下载解压: wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz tar -xvf ffmpeg-4.4.tar.xz cd ffmpeg-4.41.3 安装基础工具链 sudo …...

OpenHarmony Linux内核本地管理

概述 写这篇文章的初衷,其实也是作者从事多年Android系统开发中,根深蒂固的目录情节导致的,再开发Harmony系统中,总是想模拟Android系统的开发思路。 对于OpenHarmony这个patch机制,其实我很讨厌它,虽然这样…...

2025最新出版 Microsoft Project由入门到精通(六)

目录 三种资源类型的分配方式 成本类资源的分配方式 第一步:切换视图为”任务分配状况“视图 第二步:选中任务→资源→分配资源,打开分配资源窗口选择资源单击”分配“ 资源成本的修改方式 ​编辑工时类资源的分配方式 工时类资源的…...

Tomcat服务部署

目录 一. Tomcat概述 1.1 什么是Tomcat 1.2 安装Tomcat 1.2.1 CentOS7 安装 1.2.2 ubuntu 安装 1.2.3 使用脚本快速安装 二. 配置文件及核心组件 2.1 配置文件 2.1.1 安装目录下文件介绍 2.1.2 conf子目录 2.2 组件 三. tomcat 处理请求过程 四. 常见配置详解 4.…...

Chrome更新到136以后selenium等自动化浏览器失效

Chrome更新到136以后,已经不再支持对默认浏览器数据文件夹进行自动化调试,从而导致selenium在指定user-data-dir为默认路径“C:\Users\{计算机名}\AppData\Local\Google\Chrome\User Data”会报错,相应地的selenium-wire,undetect…...

数据库原理期末考试速成--最后附带两套题

引言 为什么从3开始呢,毕竟是速成吗,总要放弃一些东西 前两章1.概论 2.关系数据库:这里面都是一些运算符什么的,我感觉都学这个:笛卡尔积之列的都会算 这两章比较重要的我就放在这里了 选择、投影、连接、除、并、交、差,其中选择、投影、并、差、笛卡尔积是5种基本关…...

网络基础1(应用层、传输层)

目录 一、应用层 1.1 序列化和反序列化 1.2 HTTP协议 1.2.1 URL 1.2.2 HTTP协议格式 1.2.3 HTTP服务器示例 二、传输层 2.1 端口号 2.1.1 netstat 2.1.2 pidof 2.2 UDP协议 2.2.1 UDP的特点 2.2.2 基于UDP的应用层…...

使用Spring Boot集成Nacos

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它集成了服务发现、服务配置和服务管理等功能,是微服务架构中一个非常重要的组件。以下是使用Spring Boot集成Nacos的详细步骤。 1. 环境准备 确保你已经安装和配置了以下环境&#xff1…...

破局智算瓶颈:400G光模块如何重构AI时代的网络神经脉络

一、技术演进与市场需求双重驱动 在数字化转型浪潮下,全球互联网流量正以每年30%的复合增长率持续攀升。根据Dell’Oro Group最新报告,2023年400G光模块市场规模已突破15亿美元,预计2026年将占据数据中心光模块市场60%以上份额。这种爆发式增…...

Vue:插值表达

Vue 的插值表达式是数据绑定的基础形式&#xff0c;它通过 {{ }} 将 JavaScript 数据动态渲染到模板中。下面通过代码示例&#xff0c;直观感受它的用法和限制。 基础用法 <template>&#xff1c;div&#xff1e;<!-- 直接显示数据 --><p&#xff1e;{{ messag…...

26考研|数学分析:函数列与函数项级数

前言 函数列与函数项级数这一章虽然课本安排章节较少&#xff0c;只要两小节&#xff0c;但是在具体学习过程中&#xff0c;确实会有一定的难度&#xff0c;首先难点便是在对于函数列与函数项级数的理解&#xff0c;其次关于一致收敛性质的理解与判断&#xff0c;也是难点所在…...

设置环境变量启动jar报

1. 环境变量设置 set PATHC:\Program Files\java17\jdk-17.0.9\bin;%PATH%2. 启动jar java -jar jar包名3. 记录原因 PATH路径前添加java执行文件路径才会管用。添加后可以试试以下命令 直接输入PATH 回车 PATH进行java版本测试 java -version...

项目售后服务承诺书,软件售后服务方案,软件安装文档,操作文档,维护文档(Word原件)

一、系统安全性保障 &#xff08;一&#xff09;设计原则 &#xff08;二&#xff09;应用安全 &#xff08;三&#xff09;数据安全 &#xff08;四&#xff09;用户安全 &#xff08;五&#xff09;管理安全 二、售后服务 &#xff08;一&#xff09;服务总体要…...

Arduino快速入门

Arduino快速入门指南 一、硬件准备 选择开发板&#xff1a; 推荐使用 Arduino UNO&#xff08;兼容性强&#xff0c;适合初学者&#xff09;&#xff0c;其他常见型号包括NANO&#xff08;体积小&#xff09;、Mega&#xff08;接口更多&#xff09;。准备基础元件&#xff1a…...

每日一题——樱桃分级优化问题:最小化标准差的动态规划与DFS解决方案

文章目录 一、问题描述输入格式输出格式 二、问题本质分析三、解题思路1. 前缀和预处理2. DFS 枚举与剪枝3. 剪枝策略4. 标准差计算 四、代码实现五、样例解析样例 1样例 2 六、一行行代码带你敲dfs 七、总结 一、问题描述 某大型樱桃加工厂使用自动化机械扫描了一批樱桃的尺寸…...

C++类与对象(二):六个默认构造函数(一)

在学C语言时&#xff0c;实现栈和队列时容易忘记初始化和销毁&#xff0c;就会造成内存泄漏。而在C的类中我们忘记写初始化和销毁函数时&#xff0c;编译器会自动生成构造函数和析构函数&#xff0c;对应的初始化和在对象生命周期结束时清理资源。那是什么是默认构造函数呢&…...

荣耀手机,系统MagicOS 9.0 USB配置没有音频来源后无法被adb检测到,无法真机调试的解决办法

荣耀手机&#xff0c;系统MagicOS 9.0 USB配置没有音频来源后无法被adb检测到&#xff0c;无法真机调试的解决办法 前言环境说明操作方法 前言 一直在使用的uni-app真机运行荣耀手机方法&#xff0c;都是通过设置USB配置的音频来源才能成功。突然&#xff0c;因为我的手机的系…...

每日分享-Python哈希加盐加密实战分享

没事找事干&#xff0c;找到本地有个hashdemo.py&#xff0c;那就来分享一下代码吧&#xff0c;主要内容就是使用python实现哈希加盐加密方式。 1、导入所需库 不多BB&#xff0c;先打开我们的 pychram 然后导入所需要用到的库 import hashlib import random import strin…...

Webpack中Compiler详解以及自定义loader和plugin详解

Webpack Compiler 源码全面解析 Compiler 类图解析&#xff1a; 1. Tapable 基类 Webpack 插件系统的核心&#xff0c;提供钩子注册&#xff08;plugin&#xff09;和触发&#xff08;applyPlugins&#xff09;能力。Compiler 和 Compilation 均继承此类&#xff0c;支持插件…...

deepseek-coder-6.7b-instruct安装与体验-success

目录 步骤1:安装环境 步骤2:下载模型 步骤3:安装依赖 步骤4:运行模型 报错NameError: name torch is not defined 步骤5:运行结果 步骤1:安装环境 pip install modelscope 步骤2:下载模型 modelscope download --model deepseek-ai/deepseek-coder-6.7b-instruct --lo…...

对抗进行性核上性麻痹,健康护理筑牢生活防线

进行性核上性麻痹是一种复杂的神经退行性疾病&#xff0c;主要影响患者的运动、平衡及吞咽等功能&#xff0c;随着病情进展&#xff0c;患者生活质量会受到严重影响。除规范治疗外&#xff0c;科学的健康护理是提高患者生活质量、延缓病情发展的重要手段。 日常活动护理是基础。…...

科学养生,拥抱健康生活

在生活节奏日益加快的今天&#xff0c;养生不再是遥不可及的概念&#xff0c;而是可以融入日常的健康生活方式。即使抛开中医理念&#xff0c;通过科学的生活方式选择&#xff0c;也能为身体注入源源不断的活力。 从营养管理开始&#xff0c;构建科学的饮食体系。采用 “321 饮…...

基于若依框架的岗位名称查询模块实现

表名&#xff1a;sys_post&#xff08;若依自带的一个表&#xff09; 目标&#xff1a;获取post_name中所有的名字 模块结构说明 src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── ruoyi/ │ │ └── nametraversal/ │ │…...

(2)Python爬虫--requests

文章目录 前言一、 认识requests库1.1 前情回顾1.2 为什么要学习requests库1.3 requests库的基本使用1.4 响应的保存1.5 requests常用的方法1.6 用户代理1.7 requests库&#xff1a;构建ua池(可以先跳过去)1.8 requests库&#xff1a;带单个参数的get请求1.9 requests库&#x…...

springboot旅游小程序-计算机毕业设计源码76696

目 录 摘要 1 绪论 1.1研究背景与意义 1.2研究现状 1.3论文结构与章节安排 2 基于微信小程序旅游网站系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统…...

TCPIP详解 卷1协议 七 防火墙和网络地址转换

7.1——防火墙和网络地址转换 为防止终端系统不被攻击&#xff0c;需要一种方法来控制互联网中网络流量的流向。这项工作由防火墙来完成&#xff0c;它是一种能够限制所转发的流量类型的路由器。 随着部署防火墙来保护企业&#xff0c;另一个问题变得越来越重要&#xff1a;可…...

Golang 应用的 CI/CD 与 K8S 自动化部署全流程指南

一、CI/CD 流程设计与工具选择 1. 技术栈选择 版本控制&#xff1a;Git&#xff08;推荐 GitHub/GitLab&#xff09;CI 工具&#xff1a;Jenkins/GitLab CI/GitHub Actions&#xff08;本文以 GitHub Actions 为例&#xff09;容器化&#xff1a;Docker Docker Compose制品库…...

Jenkins:库博静态工具CI/CD 的卓越之选

在当今快节奏的软件开发领域&#xff0c;高效的持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;流程对于项目的成功至关重要。Jenkins 作为开源 CI/CD 软件的领导者&#xff0c;以其强大的功能、丰富的插件生态和高度的可扩展性&#xff0c;成为众多开…...

Maven私服搭建与登录全攻略

目录 1.背景2.简介3.安装4.启动总结参考文献 1.背景 回顾下maven的构建流程&#xff0c;如果没有私服&#xff0c;我们所需的所有jar包都需要通过maven的中央仓库或者第三方的maven仓库下载到本地&#xff0c;当一个公司或者一个团队所有人都重复的从maven仓库下载jar包&#…...

大模型数据分析破局之路20250512

大模型数据分析破局之路 本文面向 AI 初学者、数据分析从业者与企业技术负责人&#xff0c;围绕大模型如何为数据分析带来范式转变展开&#xff0c;从传统数据分析困境谈起&#xff0c;延伸到 LLM MCP 的协同突破&#xff0c;最终落脚在企业实践建议。 &#x1f30d; 开篇导语…...

数据结构-树(1)

一、树的基本概念 二&#xff0c;树的抽象数据结构 三&#xff0c;树的存储结构 1.双亲表示法 数组存储结点&#xff0c;含数据域和双亲下标&#xff08;根结点双亲为 - 1&#xff09; 代码示例 include <stdio.h> #include <stdlib.h>#define MAX_TREE_SIZE 10…...

什么是ERP?ERP有哪些功能?小微企业ERP系统源码,SpringBoot+Vue+ElementUI+UniAPP

什么是ERP&#xff1f; ERP翻译过来叫企业资源计划&#xff0c;通俗的讲&#xff0c;应该叫企业的全面预算控制&#xff0c;其通常包括三个部分&#xff1a;工程预算、投资预算和经营预算&#xff08;即产销存预算&#xff09;。之所以做预算控制&#xff0c;是因为企业运作的…...

视觉-语言-动作模型:概念、进展、应用与挑战(上)

25年5月来自 Cornell 大学、香港科大和希腊 U Peloponnese 的论文“Vision-Language-Action Models: Concepts, Progress, Applications and Challenges”。 视觉-语言-动作 (VLA) 模型标志着人工智能的变革性进步&#xff0c;旨在将感知、自然语言理解和具体动作统一在一个计…...

C++ 与 Go、Rust、C#:基于实践场景的语言特性对比

目录 ​编辑 一、语法特性对比 1.1 变量声明与数据类型 1.2 函数与控制流 1.3 面向对象特性 二、性能表现对比​编辑 2.1 基准测试数据 在计算密集型任务&#xff08;如 10⁷ 次加法运算&#xff09;中&#xff1a; 在内存分配测试&#xff08;10⁵ 次对象创建&#xf…...

RDB和AOF的区别

Redis提供两种主要的持久化机制&#xff1a;RDB&#xff08;Redis Database&#xff09;和AOF&#xff08;Append Only File&#xff09;&#xff0c;它们在数据持久化方式、性能影响及恢复策略上各有特点。以下是两者的对比分析及使用建议&#xff1a; RDB&#xff08;快照持久…...

因子分析基础指南:原理、步骤与地球化学数据分析应用解析

前言 在看深度学习成矿预测以及地球化学数据分析的文献的时候很多引言部分的内容会提到一些老的技术&#xff0c;正所谓&#xff1a;知其然知其所以然。所以我把关于一些老技术的基础铺垫的内容作为&#xff1a;研究生基础指南部分进行记录。 这部分讲述的是因子分析&#xf…...

采用AI神经网络降噪算法的通信语音降噪(ENC)模组性能测试和应用

采用AI降噪的语言通话环境抑制模组性能效果测试 随着AI时代来临.通话设备的环境噪音抑制也进入AI降噪算法时代. AI神经网络降噪技术是一款革命性的语音处理技术&#xff0c;他突破了传统单麦克风和双麦克风降噪的局限性,利用采集的各种日常环境中的噪音样本进行训练学习.让降噪…...

面试题 - Kafka、RabbitMQ、RocketMQ如何选型?

在当今的高并发、大数据时代&#xff0c;系统架构的复杂性呈指数级增长。你是否曾遇到过这样的问题&#xff1a;用户订单提交后&#xff0c;系统响应缓慢甚至卡顿&#xff1f;或者在业务高峰期&#xff0c;消息积压导致系统崩溃&#xff1f; 这些问题的背后&#xff0c;往往隐…...

【落羽的落羽 C++】stack和queue、deque、priority_queue、仿函数

文章目录 一、stack和queue1. 概述2. 使用3. 模拟实现 二、deque三、priority_queue1. 概述和使用2. 模拟实现 四、仿函数 一、stack和queue 1. 概述 我们之前学习的vector和list&#xff0c;以及下面要认识的deque&#xff0c;都属于STL的容器&#xff08;containers&#x…...

Golang 空结构体特性与用法

文章目录 1.简介2.核心特性2.1 零内存占用2.2 值比较语义2.3 类型隔离2.4 值地址 3.作用3.1 实现集合&#xff08;Set&#xff09;3.2 不发送数据的信道3.3 无状态方法接收者3.4 作为 context 的 value 的 key 4.小结参考文献 1.简介 在 Go 语言中&#xff0c;空结构体是一个不…...

企业对数据集成工具的需求及 ETL 工具工作原理详解

当下&#xff0c;数据已然成为企业运营发展过程中的关键生产要素&#xff0c;其重要性不言而喻。 海量的数据分散在企业的各类系统、平台以及不同的业务部门之中&#xff0c;企业要充分挖掘这些数据背后所蕴含的巨大价值&#xff0c;实现数据驱动的精准决策&#xff0c;数据集…...

基于HTTP头部字段的SQL注入:SQLi-labs第17-20关

前置知识&#xff1a;HTTP头部介绍 HTTP&#xff08;超文本传输协议&#xff09;头部&#xff08;Headers&#xff09;是客户端和服务器在通信时传递的元数据&#xff0c;用于控制请求和响应的行为、传递附加信息或定义内容类型等。它们分为请求头&#xff08;Request Headers&…...

Megatron系列——流水线并行

内容总结自&#xff1a;bilibili zomi 视频大模型流水线并行 注&#xff1a;这里PipeDream 1F1B对应时PP&#xff0c;Interleaved 1F1B对应的是VPP 1、朴素流水线并行 备注&#xff1a; &#xff08;1&#xff09;红色三个圈都为空泡时间&#xff0c;GPU没有做任何计算 &am…...

Android HttpAPI通信问题(待解决)

使用ClearTextTraffic是Android中一项重要的网络设置&#xff0c;它控制了应用程序是否允许在不使用HTTPS加密的情况下访问网络。在默认情况下&#xff0c;usescleartexttraffic的值为true&#xff0c;这意味着应用程序可以通过普通的HTTP协议进行网络通信。然而&#xff0c;这…...

WebFlux vs WebMVC vs Servlet 对比

WebFlux vs WebMVC vs Servlet 技术对比 WebFlux、WebMVC 和 Servlet 是 Java Web 开发中三种不同的技术架构&#xff0c;它们在编程模型、并发模型和适用场景上有显著区别。以下是它们的核心对比&#xff1a; 核心区别总览 特性ServletSpring WebMVCSpring WebFlux编程模型…...

Spring MVC参数传递

本内容采用最新SpringBoot3框架版本,视频观看地址:B站视频播放 1. Postman基础 Postman是一个接口测试工具,Postman相当于一个客户端,可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果。 2. Spring MVC相关注解 3. Spring MVC参数传递 Spri…...

Spring MVC 和 Spring Boot 是如何访问静态资源的?

Spring MVC 和 Spring Boot 在配置静态资源访问方面有所不同&#xff0c;Spring Boot 提供了更便捷的自动配置。 一、Spring Boot 如何配置静态资源访问 (推荐方式) Spring Boot 遵循“约定优于配置”的原则&#xff0c;对静态资源的访问提供了非常方便的自动配置。 默认静态…...