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

每天一道面试题@第五天

1.包装类型的缓存机制了解么?

指部分包装类在创建对象时,会将一定范围内的对象缓存起来,当再次使用相同值创建对象时,优先从缓存中获取,而不是重新创建新对象。【提高性能】【节省内存】

列举几个常见的包装类缓存机制:

(1)Integer 类在 -128 到 127 这个范围内有缓存机制。当使用 Integer.valueOf(int) 方法创建 Integer 对象时,如果值在这个范围内,会直接从缓存中获取对象,否则会创建新对象。

Integer a = Integer.valueOf(100);
Integer b = Integer.valueOf(100);
System.out.println(a == b); // 输出 true,因为从缓存中获取的同一个对象Integer c = Integer.valueOf(200);
Integer d = Integer.valueOf(200);
System.out.println(c == d); // 输出 false,因为值不在缓存范围内,创建了新对象

(2)ByteShort 和 Long 类也有类似的缓存机制,缓存范围都是 -128 到 127

Byte byte1 = Byte.valueOf((byte) 10);
Byte byte2 = Byte.valueOf((byte) 10);
System.out.println(byte1 == byte2); // 输出 trueShort short1 = Short.valueOf((short) 100);
Short short2 = Short.valueOf((short) 100);
System.out.println(short1 == short2); // 输出 trueLong long1 = Long.valueOf(120L);
Long long2 = Long.valueOf(120L);
System.out.println(long1 == long2); // 输出 true

(3)Character 类会缓存从 \u0000 到 \u007F(即 0 到 127)的字符对象。

Character char1 = Character.valueOf('A');
Character char2 = Character.valueOf('A');
System.out.println(char1 == char2); // 输出 true

(4)Boolean 类会缓存 true 和 false 两个对象。

Boolean bool1 = Boolean.valueOf(true);
Boolean bool2 = Boolean.valueOf(true);
System.out.println(bool1 == bool2); // 输出 true

【注意】只有使用 valueOf 方法创建对象时才会触发缓存机制,如果使用 new 关键字创建对象,无论值是否在缓存范围内,都会创建新对象。

2. 自动装箱与拆箱了解吗?原理是什么?

Java的自动装箱和拆箱是Java 5 引入的,主要用于简化基本数据类型和对应的包装类之间的转换操作。

自动装箱:指基本类型自动转换成对应的包装类对象。如 int 自动转 Integer。

自动拆箱:指包装类对象自动转换成对应的基本类型。如 Integer自动转int。

// 自动装箱
int num1 = 10;
Integer num2 = num1;// 自动拆箱
Integer num3 = 20;
int num4 = num3;

自动装箱和拆箱的原理:

自动装箱原理:在编译阶段,编译器会调用包装类的valueOf()方法来实现自动装箱。

例如,上述代码中的Integer num2 = num1;

在编译后实际上会变成Integer num2 = Integer.valueOf(num1);。

自动拆箱:在编译阶段,编译器会调用包装类的xxxValue()方法来实现自动拆箱。

像int num4 = num3;

在编译后会变为int num4 = num3.intValue();。

包装类的缓存机制,又在这里得到了验证。

3. 浅拷贝和深拷贝区别了解吗?什么是引用拷贝?

浅拷贝、深拷贝和引用拷贝是三种不同的对象复制方式。

(1)引用拷贝仅仅是复制对象的引用,而不会创建新的对象。也就是说,原对象和复制后的对象都指向内存中的同一个实例。因此,对其中一个对象的修改会反映到另一个对象上。

(2)浅拷贝会创建一个新的对象,然后将原对象的非静态字段复制到新对象中。如果字段是基本数据类型,就直接复制其值;如果字段是引用类型,只复制引用,而不复制对象本身。这意味着原对象和浅拷贝对象中的引用类型字段会指向同一个对象(也就是说原对象的内部类会直接引用)。

要实现浅拷贝,可以让类实现 Cloneable 接口并重写 clone() 方法。

(3)深拷贝同样会创建一个新的对象,并且会递归地复制原对象的所有字段,包括引用类型的字段。这意味着原对象和深拷贝对象中的引用类型字段指向不同的对象,对一个对象的修改不会影响到另一个对象

要实现深拷贝,可以通过序列化和反序列化来完成,也可以手动递归地复制所有引用类型的字段。

4. 谈谈对 Java 注解的理解,解决了什么问题?

注解可以看作是一种特殊的标记,它可以应用于包、类、方法、字段等元素上,以提供额外的信息。注解通过 @ 符号来标识,例如 @Override@Deprecated 等。Java 提供了一些内置的注解,同时开发者也可以自定义注解。

注解解决的问题:

(1)编译时检查:编译器会检查被 @Override 注解标记的方法是否真的重写了父类的方法,如果没有则会报错。这样可以避免因方法名拼写错误或方法签名不匹配而导致的潜在问题。

(2)代码生成:在一些框架中,注解可以用于生成代码。如 Lombok 

(3)配置信息管理:注解可以用于替代传统的配置文件,将配置信息直接嵌入到代码中。例如,Spring 框架使用 @Component@Service@Repository 等注解来标识组件,将组件的配置信息与代码紧密结合,提高了代码的可维护性。

(4)运行时信息的获取:通过反射机制,在运行时获取注解的信息,并根据这些信息执行相应的操作。例如,JUnit 框架使用 @Test 注解来标记测试方法,在运行测试时,JUnit 会通过反射查找所有被 @Test 注解标记的方法并执行。

5. Exception 和 Error 有什么区别?

Exception 和 Error 都继承自 Throwable 类

Exception 表示程序运行时可能出现的可处理的异常情况。开发人员能够通过捕获和处理这些异常。

Error 表示系统级别的错误通常是由 JVM或者底层系统出现问题引发的。

应用场景

  • Exception
    • 受检查异常:在编译时就需要被处理的异常,若不处理,程序将无法通过编译,例如 IOExceptionSQLException 等。
    • 运行时异常:编译时不需要强制处理,例如 NullPointerExceptionArrayIndexOutOfBoundsException 等。
  • Error:一般是系统级的错误,常见的有 OutOfMemoryErrorStackOverflowError 

6. Java 反射?反射的缺点?反射的应用场景?

 反射是什么?

反射(Reflection)是 Java 提供的一种动态机制,允许程序在运行时获取类的元数据(如类名、方法、字段、构造器等),并动态操作类或对象(如实例化对象、调用方法、访问私有成员等)。其核心是通过 Class 对象实现,关键 API 包括:

  • Class 类:表示类的元数据。

  • MethodFieldConstructor:分别表示方法、字段和构造器。

示例:通过类名动态创建对象:
Class<?> clazz = Class.forName("com.example.User");
Object user = clazz.newInstance();

反射的缺点

  • 性能开销:反射调用涉及动态解析和 JVM 优化限制(如无法内联方法),性能比直接调用低。但通过缓存 Method 对象或使用 setAccessible(true) 关闭安全检查可缓解。

  • 破坏封装性:可访问私有成员(如 private 方法或字段),可能导致代码安全隐患。

  • 代码复杂度:反射代码冗长,需处理大量异常(如 ClassNotFoundException),降低可读性和维护性。

  • 兼容性风险:反射依赖类的内部细节(如方法名、参数列表),若类结构变更(如版本升级),反射代码可能失效。

  • 泛型擦除:反射无法直接获取泛型类型信息(如 List<String> 在运行时变为 List)。

 反射的应用场景

  • 框架开发

    • Spring 依赖注入:通过反射实例化 Bean 并注入属性。

    • ORM 框架(如 Hibernate):将数据库结果映射到 Java 对象。

    • 动态代理(如 AOP):生成代理类拦截方法调用。

  • 序列化/反序列化:如 Jackson 通过反射读取对象字段生成 JSON。

  • 测试工具:JUnit 使用反射调用测试方法。

  • 插件化架构:动态加载类(如通过配置文件的类名实例化对象)。

  • IDE 和调试工具:实时获取对象信息(如变量值、方法列表)。

7. Java 泛型了解么?什么是类型擦除?介绍⼀下常⽤的通配符?

Java泛型&通配符

相关文章:

每天一道面试题@第五天

1.包装类型的缓存机制了解么&#xff1f; 指部分包装类在创建对象时&#xff0c;会将一定范围内的对象缓存起来&#xff0c;当再次使用相同值创建对象时&#xff0c;优先从缓存中获取&#xff0c;而不是重新创建新对象。【提高性能】【节省内存】 列举几个常见的包装类缓存机…...

Python硬核革命:从微控制器到FPGA的深度开发指南

1. 重新定义硬件开发:Python的颠覆性突破 传统硬件开发长期被C/C++和Verilog/VHDL统治,但Python正通过两条路径改变这一格局: 1.1 微控制器领域的MicroPython革命 完整Python 3.4语法支持,运行在资源受限的MCU上(最低要求:64KB ROM,16KB RAM) 直接内存访问能力,突破…...

WebRTC 服务器之Janus概述和环境搭建

1 概述 Janus 是由 Meetecho 开发的通用 WebRTC 服务器&#xff0c;它为构建 WebRTC 应用程序提供了一个模块化框架。服务器目标&#xff1a;Janus WebRTC 网关被设计为轻量级、通用的 WebRTC 服务器&#xff0c;除了实现以下方法外&#xff0c;它本身不提供任何功能&#xff1…...

mcp+llm+rag

MCPRAG简介 前言一、MCP是什么&#xff1f;二、MCP工作原理&#xff08;1. MCP Hosts&#xff08;主机&#xff09;&#xff08;2.MCP Clients&#xff08;客户端&#xff09;(3. MCP Servers&#xff08;服务端&#xff09;(4. Local Data Sources&#xff08;本地数据源&…...

Seata RM的事务提交与回滚源码解析

文章目录 前言一、RM提交事务二、RM回滚事务2.1、undo校验逻辑2.2、执行回滚逻辑 总结RM 的事务提交与回滚行为说明&#xff08;基于 Seata AT 模式&#xff09;1. 提交阶段&#xff08;Phase Two Commit&#xff09;2. 回滚阶段&#xff08;Phase Two Rollback&#xff09; 前…...

Ubuntu 24.04 完整Docker安装指南:从零配置到实战命令大全

Ubuntu 24.04 完整Docker安装指南&#xff1a;从零配置到实战命令大全 文章目录 Ubuntu 24.04 完整Docker安装指南&#xff1a;从零配置到实战命令大全1. 安装 Docker2. 配置 Docker 镜像加速器2.1 配置 Docker 镜像源2.2 重启 Docker 服务 3. Docker 常用命令3.1 Docker 常用命…...

设计模式简述(十七)备忘录模式

备忘录模式 描述组件使用 描述 备忘录模式用于将对象的状态进行保存为备忘录&#xff0c;以便在需要时可以从备忘录会对象状态&#xff1b;其核心点在于备忘录对象及其管理者是独立于原有对象之外的。 常用于需要回退、撤销功能的场景。 组件 原有对象&#xff08;包含自身…...

【ICMP协议深度解析】从网络诊断到安全实践

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键报文类型说明协议版本对比 二、实战演示环境配置要求核心实验实现实验1&#xff1a;标准ping流程实验2&#xff1a;traceroute路径发现实验3&#xff1a;自定义ICMP…...

《应用开发突围指南:敏捷开发的实战精髓》

如何在应用开发中精准且深入地应用敏捷开发方法呢&#xff1f;让我们一同深入探索。 敏捷开发&#xff0c;绝非仅仅是一种开发流程&#xff0c;更是一种蕴含深刻智慧的理念与思维方式。它与传统开发模式有着本质的区别&#xff0c;传统开发模式如同严谨的线性旅程&#xff0c;…...

【Mytais系列】SqlSession

MyBatis 的 SqlSession 是框架的核心接口之一&#xff0c;它是应用程序与 MyBatis 交互的顶层 API&#xff0c;用于执行 SQL 命令、管理事务和访问数据库。以下是关于 SqlSession 的详细说明&#xff1a; 1. 核心功能 (1) 执行 SQL 操作 增删改查&#xff1a;通过方法如 sele…...

【掌握 DDL】:SQL 中的数据库与表管理

掌握 DDL&#xff1a;SQL 中的数据库与表管理 掌握 DDL&#xff1a;SQL 中的数据库与表管理数据库 DDL创建数据库查看数据库查看所有数据库查看数据库创建语句 进入数据库删除数据库备份数据库备份恢复 查看数据库连接深入理解数据库创建与删除数据库字符集与校验规则 表 DLL创…...

第43周:GAN总结

目录 摘要 Abstract 计算机视觉中的分类 架构变体 损失变体 时间序列中的GAN 连续型GAN 离散型GAN 总结 摘要 本周总结了GAN的变形&#xff0c;主要从图像处理和时间序列生成两部分入手&#xff0c;分别找出了其中比较经典的几种GAN变种模型&#xff0c;简单分析了…...

安卓基础(MediaProjection)

1. Display 类 ​​作用​​&#xff1a;代表显示设备&#xff08;手机屏幕、外接显示器&#xff09;​​常用方法​​&#xff1a; display.getRotation() // 获取屏幕方向&#xff08;横屏/竖屏&#xff09; display.getRefreshRate() // 获取屏幕刷新率&#xff08;如&…...

Android Compose 物联网(IoT)UI 组件库封装指南

Android Compose 物联网封装组件 在物联网(IoT)应用开发中&#xff0c;使用Jetpack Compose可以创建现代化、响应式的用户界面。以下是一些针对物联网场景的Compose封装组件思路和实现方法&#xff1a; 常用物联网组件封装 1. 设备状态指示器 Composable fun DeviceStatusI…...

实用在线工具箱OmniTools

简介 OmniTools 是一个自托管的网络应用&#xff0c;提供多种在线工具&#xff0c;旨在简化日常任务。它包含了一系列独立的、小型但实用的工具&#xff0c;涵盖了文件处理、文本操作、网络请求、系统监控等多个方面。 OmniTools 的设计理念是简单、易用、可定制&#xff0c;方…...

【AI大模型学习路线】第一阶段之大模型开发基础——第三章(大模型实操与API调用)单轮对话与多轮对话调用。

【AI大模型学习路线】第一阶段之大模型开发基础——第三章&#xff08;大模型实操与API调用&#xff09;单轮对话与多轮对话调用&#xff1f; 【AI大模型学习路线】第一阶段之大模型开发基础——第三章&#xff08;大模型实操与API调用&#xff09;单轮对话与多轮对话调用&…...

数字化转型进阶:26页华为数字化转型实践分享【附全文阅读】

本文分享了华为数字化转型的实践经验和体会。华为通过数字化变革,致力于在客户服务、供应链、产品管理等方面提高效率,并把数字世界带入每个组织,构建万物互联的智能世界。华为的数字化转型愿景是成为行业标杆,通过推进数字化战略、构建面向业务数字化转型的IT组织阵型、坚…...

Go语言的优势与应用场景 -《Go语言实战指南》

一、 Go语言的五大核心优势 1. 语法简洁&#xff0c;开发高效 Go语言借鉴了C语言的表达方式&#xff0c;但去掉了多余复杂的特性&#xff08;如继承、多态、异常处理等&#xff09;&#xff0c;语法风格清晰明了&#xff0c;极大地降低了学习成本&#xff1a; • 无需头文件…...

3D人物关系图开发实战:Three.js实现自动旋转可视化图谱(附完整代码)

3D人物关系图开发实战&#xff1a;Three.js实现自动旋转可视化图谱 效果核心解析场景初始化自动旋转控制器节点创建&#xff08;带图片和标签&#xff09;关系连线动画循环数据格式说明 代码 效果 本文将带您使用Three.js实现一个带自动旋转功能的3D人物关系图谱&#xff0c;核…...

文件操作-

1. 为什么使⽤⽂件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久化…...

硬件零基础入门(尚硅谷)

1 一个碳原子有一个自由电子。所以能够导电。 金刚石四个都是都弄成共价键了&#xff0c;所以没有自由电子不能自由电子。 2 新的电子进来&#xff0c;因为互斥电荷进行了定向运动&#xff0c;产生了能量。两边电子平衡就停止了。所以电池的负极有电子。 电荷就是质子和电…...

【Ai零件】高德开放平台MCP的API-key注册

前言 基本操作文档&#xff0c;为n8n等平台&#xff0c;调用高德MCP服务做准备&#xff0c;本文记录其API-Key的生成步骤。 操作步骤 高德开发平台官网&#xff1a;https://lbs.amap.com/ 完成后&#xff0c;进入控制台界面: 创建新应用 进入【应用管理】&#xff0c;点击页…...

安卓基础(startActivityForResult和onActivityResult)

onActivityResult 方法有三个参数&#xff1a; requestCode&#xff1a;启动 Activity 时传入的请求码&#xff0c;用于区分不同的启动请求。resultCode&#xff1a;返回结果的状态码&#xff0c;通常为 RESULT_OK 或 RESULT_CANCELED。data&#xff1a;一个 Intent 对象&…...

安卓基础(悬浮窗)

悬浮窗 import android.app.Service; import android.content.Context; import android.graphics.PixelFormat; import android.os.IBinder; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager…...

《windows GCC 版本升级到9以上》

《windows GCC 版本升级到9以上》 在 Windows 系统上升级 GCC 到 9 以上版本通常有两种主流方案:MinGW-w64 和 WSL(Windows Subsystem for Linux)。以下是具体操作步骤: 方案一:使用 MinGW-w64(原生 Windows 环境) 步骤 1:安装 MSYS2 MSYS2 是 Windows 上的软件分发…...

LeetCode —— 102. 二叉树的层序遍历

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…...

Python面向对象编程实战:从类定义到高级特性的进阶之旅(2/10)

摘要&#xff1a;本文介绍面向对象编程基础概念&#xff0c;包括类与对象、封装、继承和多态等。以Python语言为例&#xff0c;详细讲述了类的定义与使用、构造函数与析构函数、类的访问控制等。面向对象编程通过将数据和操作封装在一起&#xff0c;提高代码的模块化和可维护性…...

【AI论文】DeepCritic:使用大型语言模型进行有意识的批判

摘要&#xff1a;随着大型语言模型&#xff08;LLMs&#xff09;的快速发展&#xff0c;对其输出提供准确的反馈和可扩展的监督成为一个紧迫而关键的问题。 利用LLM作为评判模型来实现自动化监督是一种有前景的解决方案。 在这项工作中&#xff0c;我们专注于研究和提高LLM的数…...

硬件工程师面试常见问题(12)

第五十六问&#xff1a;PCI总线基本知识 关于PCI总线的描述,错误的是:&#xff08;A&#xff09;(4分) A.PCI总线是一个16位宽的总线。 B.PCI的地址线与数据线是复用的。 C.PCI是一种独立于处理器的总线标准,可以支持多种处理器。 D.PCI支持即插即用功能。 解释&#xff1a; …...

大数据Spark(五十八):Spark Pi介绍

文章目录 Spark Pi介绍 Spark Pi介绍 Spark Pi是Apache Spark官方提供的一个示例程序&#xff0c;该案例使用 Spark 进行分布式计算&#xff0c;通过蒙特卡罗方法估算圆周率&#xff08;π&#xff09;的值&#xff0c;其估算π原理如下&#xff1a; 上图中&#xff0c;正方形…...

深入理解 HttpExchange_Java 中构建 HTTP 服务的基础组件

1. 引言 1.1 Java 中的轻量级 HTTP 服务需求 随着微服务、工具类应用和嵌入式系统的兴起,开发者对轻量级 HTTP 服务的需求日益增长。相比引入庞大的框架(如 Spring Boot),使用 JDK 原生 API 构建 HTTP 服务成为一种快速、低依赖的替代方案。 JDK 提供了 com.sun.net.htt…...

MaC QT 槽函数和Lambda表达式

在C Qt框架中&#xff0c;槽函数&#xff08;Slot&#xff09;是一种特殊的成员函数&#xff0c;用于响应信号&#xff08;Signal&#xff09;的触发&#xff0c;从而实现对象间的通信和事件处理。 #include<QMessageBox>//包含槽函数的头文件 //定义槽函数 响应特定的信…...

JMM 与 JVM 运行时数据区有什么区别和联系?

JMM&#xff08;Java Memory Model&#xff09;和 JVM 运行时数据区&#xff08;JVM Runtime Data Areas&#xff09;是 Java 内存管理中的两个不同但密切相关的概念。 1. JVM 运行时数据区 (JVM Runtime Data Areas) 是什么&#xff1f; JVM 运行时数据区是 JVM 在程序执行过程…...

LeetCode Hot100题解

目录 一、数组 & 字符串 1. 两数之和&#xff08;简单&#xff09; 2. 删除有序数组中的重复项&#xff08;简单&#xff09; 3. 移除元素&#xff08;简单&#xff09; 4. 合并两个有序数组&#xff08;简单&#xff09; 5. 买卖股票的最佳时机&#xff08;简单&…...

基于Jenkins的DevOps工程实践之Jenkins共享库

文章目录 前言Jenkins共享库结构1、共享库演示2、知识点补充3、实践使用共享库格式化输出日志4、groovy基础语法4.1、 什么是 Groovy&#xff1f;4.2、groovy特点4.3、运行方法4.4、标识符4.5、基本数据类型4.5.1、string类型4.5.2、list类型 4.6、函数使用4.7、正则表达式 5、…...

【安装指南】Docker 安装最新版 Nginx 并进行项目的编排

目录 一、Nginx 的介绍 1.1 开源版 Nginx​ ① 访问路由​ ② 反向代理​ ③ 负载均衡​ ④ 内容缓存​ ⑤ 可编程​ 1.2 商业版 Nginx Plus​ ① 负载均衡​ ② 动态管理​ ③ 安全控制​ ④ 状态监控​ ⑤ Kubernetes Ingress Controller​ ⑥ 流媒体​ 1.3 扩…...

MFC自定义控件开发与使用指南

MFC自定义控件开发与使用指南 1. 概述 MFC(Microsoft Foundation Classes)框架提供了丰富的内置控件,但在实际开发中,我们常常需要创建自定义控件来满足特定的界面需求。本文将详细介绍如何在MFC中开发自定义控件,并以CCustomTextControl为例,展示自定义控件的实现和使…...

Learning vtkjs之PolyDataNormals

法线可视化 介绍 polydata法线可视化 效果 核心代码 主要流程 const fullScreenRenderer vtkFullScreenRenderWindow.newInstance({background: [0, 0, 0],rootContainer: vtkContainerRef.current,});const renderer fullScreenRenderer.getRenderer();const renderWind…...

DeepSeek辅助学术写作之提交和出版以及评审过程分析提示词分享祝你顺利毕业~

目录 1.提交和出版 2.评审过程 大家好这里是AIWritePaper官方账号&#xff0c;官网&#x1f449;AIWritePaper~ 宝子们可以使用小编精选的“ChatGPT研究论文提示词”集合来创建研究论文。利用DeepSeek的智能回应生成详尽有效的内容&#xff0c;这样可以加快研究论文的策划、创…...

基于机器学习的心脏病数据分析与可视化(百度智能云千帆AI+DeepSeek人工智能+机器学习)健康预测、风险评估与数据可视化 健康管理平台 数据分析与处理

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

Kubernetes(k8s)学习笔记(四)--入门基本操作

本文通过kubernetes部署tomcat集群&#xff0c;来学习和掌握kubernetes的一些入门基本操作 前提条件 1.各个节点处于Ready状态&#xff1b; 2.配置好docker镜像库(否则会出现ImagePullBackOff等一些问题)&#xff1b; 3.网络配置正常(否则即使应用发布没问题&#xff0c;浏…...

在Java项目中实现本地语音识别与热点检测,并集成阿里云智能语音服务

引言 随着语音交互技术的发展&#xff0c;如何高效地处理用户的语音输入成为许多应用的重要课题。本文将详细介绍如何在一个Java项目中同时实现&#xff1a; 基于Vosk的本地语音识别&#xff1a;无需调用云端API即可完成语音到文本的转换。本地热点语音内容识别&#xff1a;对…...

C++八股--5--设计模式--适配器模式,代理模式,观察者模式

3. 观察者模式&#xff08;也叫做观察者-监听者模式&#xff0c;发布-订阅模式&#xff09; 主要关注对象的一对多关系&#xff0c;也就是多个对象都依赖于一个对象&#xff0c;当该对象状态改变时&#xff0c;其余对象都能得到对应的通知 如&#xff1a;一组数据&#xff08;数…...

Ubuntu下安装Node.js

一、引言 Ubuntu下安装Node.js主要有两种方式&#xff1a;通过apt安装和通过源码安装。本文主要讲解通过apt安装Node.js的方法。 二、通过apt安装Node.js 安装Node.js&#xff1a; apt install nodejs 我之前已经安装过了&#xff0c;所以提示&#xff1a;“nodejs 已经是最…...

用单目相机和apriltag二维码aruco实现单目定位

目录 一、核心流程与代码框架 1. ‌环境准备‌ 2. ‌ArUco定位实现 3. ‌AprilTag定位实现&#xff08;需额外安装Apriltag库&#xff09; 二、关键优化点 1‌.亚像素角点优化 2‌ 多标签联合定位 三、性能指标&#xff08;实测&#xff09; 四、常见问题 ‌检测失败…...

AIGC算力消耗白皮书:Stable Diffusion vs Midjourney的架构成本差异

引言&#xff1a;文生图模型的算力经济学悖论 当Midjourney单日处理超过4000万张图像请求时&#xff0c;其云服务算力成本却低于Stable Diffusion开源方案的37%。这揭示了一个核心矛盾&#xff1a;开源模型的架构自由度与闭源系统的商业优化之间存在根本性博弈。本文基于H800 …...

介绍 PHP-FPM 和 Python WSGI

我来详细介绍 PHP-FPM 和 Python WSGI&#xff0c;它们是现代Web开发中替代传统CGI的高性能解决方案&#xff0c;分别针对PHP和Python优化。 1. PHP-FPM&#xff08;FastCGI Process Manager&#xff09; 是什么&#xff1f; PHP-FPM 是PHP的 FastCGI 进程管理器&#xff0c;…...

赛季7靶场 -- Checker --User flag

本系列仅说明靶场的攻击思路&#xff0c;不会给出任何的详细代码执行步骤&#xff0c;因为个人觉得找到合适的工具以实现攻击思路的能力也非常重要。root要逆向&#xff0c;没做了&#xff0c;但是user flag也有借鉴意义&#xff0c;关于2FA的绕过我们有必要了解 1.首先Nmap扫描…...

【c语言】数据在内存中的存储

一、 大小端字节序 大端字节序&#xff1a;数据的低字节内容存放在内存的高地址处&#xff0c;数据的高字节内容存放在内存的低地址处&#xff0c;对于0x11223344 小端字节序&#xff1a;数据的低字节内容存放在内存的低地址处&#xff0c;数据的高字节内容存放在内存的高地…...

【Unity】XLua访问C#文件

创建NPC.cs&#xff1a; public class NPC { public string name; public int age; public void Say() { Debug.Log("Say:我是未被修改的"); } public static void Say() { Debug.Log("Static Say:我是未被修改的"); } public void Say2(int a) { Debug.Lo…...