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

【中大厂面试题】腾讯云 java 后端 最新面试题

腾讯云(一面) 

1. spring 和 springboot的区别是什么?

  • 配置方式的区别:Spring 应用的配置较为繁琐,通常需要编写大量的 XML 配置文件或者使用 Java 注解进行配置。例如,配置数据源、事务管理器等都需要手动编写详细的配置代码。Spring Boot 采用了 “约定优于配置” 的原则,它会根据项目中引入的依赖自动进行合理的默认配置。

  • 开发效率的区别:Spring 由于需要手动配置大量的组件和依赖,开发一个 Spring 应用的前期准备工作较多,开发效率相对较低,特别是在搭建一个新的项目时,需要花费较多的时间来配置环境和集成各种功能。Spring Boot提供了很多开箱即用的功能和快速启动的依赖(Starter),开发者可以通过添加相应的 Starter 依赖来快速集成各种功能,如 Web 开发、数据库访问、安全认证等,这样可以大大减少开发时间,提高开发效率。

  • 部署难道的区别:Spring 应用通常需要部署到外部的应用服务器(如 Tomcat、Jetty 等)中,部署过程相对复杂,需要将应用打包成 WAR 文件,然后部署到应用服务器中,还需要对应用服务器进行相应的配置。Spring Boot 应用可以以独立的 Java 程序形式运行,它内置了嵌入式的 Web 服务器(如 Tomcat、Jetty 等),可以将应用打包成可执行的 JAR 文件,直接通过java -jar命令运行,这样大大简化了部署过程,降低了部署难度。

2. @Autowire 注入的属性可不可以是一个接口?

可以的,@Autowired注解注入的属性可以是一个接口。

Spring 的依赖注入机制能够依据类型来查找合适的 Bean 进行注入,当使用@Autowired注解对一个接口类型的属性进行注入时,Spring 会在容器中寻找实现了该接口的 Bean,如果存在多个实现类,Spring 会依据特定的规则来确定具体注入哪个 Bean。

以下是一个简单示例,展示了如何使用@Autowired注入接口类型的属性:

// 定义一个接口
interface MessageService {String getMessage();
}// 接口的一个实现类
@Component
class EmailMessageService implements MessageService {@Overridepublic String getMessage() {return"This is an email message.";}
}// 另一个实现类
@Component
class SmsMessageService implements MessageService {@Overridepublic String getMessage() {return"This is an SMS message.";}
}// 使用接口的类
@Component
class MessagePrinter {@Autowiredprivate MessageService messageService;public void printMessage() {System.out.println(messageService.getMessage());}
}

在上述代码中,MessageService是一个接口,EmailMessageServiceSmsMessageService是它的两个实现类。MessagePrinter类中有一个MessageService类型的属性,使用@Autowired进行注入。Spring 会从容器中找到一个实现了MessageService接口的 Bean 注入到messageService属性中。

3. 如果接口有多个实现类,怎么指定注入哪个?

如果存在多个实现类,Spring 默认会根据类型进行匹配。如果无法唯一确定一个 Bean,会抛出NoUniqueBeanDefinitionException异常。

为了避免这种情况,可以使用@Qualifier注解可以指定要注入的 Bean 的名称。

@Component
class MessagePrinter {@Autowired@Qualifier("emailMessageService")private MessageService messageService;public void printMessage() {System.out.println(messageService.getMessage());}
}

也可以,在某个实现类上使用@Primary注解,将其标记为首选的 Bean。

@Component
@Primary
class EmailMessageService implements MessageService {@Overridepublic String getMessage() {return "This is an email message.";}
}

4. AOP底层原理是什么?

Spring AOP(面向切面编程)的底层原理主要基于 动态代理 技术,通过在运行时动态生成代理对象,将切面逻辑(如日志、事务等)织入目标方法中,底层主要基于两种代理机制来实现,分别是 JDK 动态代理和 CGLIB 代理

  • JDK 动态代理:JDK 动态代理是基于接口的代理方式。它利用 Java 的反射机制,在运行时创建一个实现了目标对象所实现的所有接口的代理对象。当调用代理对象的方法时,会触发一个 InvocationHandler 的 invoke 方法,在这个方法中可以添加额外的逻辑,从而实现对目标方法的增强。JDK 是 Java 内置的代理机制,无需额外引入依赖,使用方便。并且由于是基于接口的代理,符合面向接口编程的原则,代码的可维护性和可扩展性较好。

  • CGLIB 代理:使用CGLIB库来创建代理对象,代理对象继承了目标对象,并且覆盖了目标对象的方法,通过方法拦截来实现代理逻辑。因为CGLIB动态代理可以代理任意的目标对象,所以它的应用场景更加广泛,通常用来实现基于继承的代理。

在 Spring AOP 中,会根据目标对象是否实现了接口来选择使用 JDK 动态代理还是 CGLIB 代理,具体规则如下:

  • 如果目标对象实现了接口,Spring 默认会使用 JDK 动态代理。

  • 如果目标对象没有实现接口,Spring 会使用 CGLIB 代理。 也可以通过配置强制 Spring 使用 CGLIB 代理,只需要在配置文件中添加相应的配置即可。

5. 你知道动态代理有哪些实现方式?jdk和cglib有什么区别?

Java的动态代理是一种在运行时动态创建代理对象的机制,主要用于在不修改原始类的情况下对方法调用进行拦截和增强。

Java动态代理主要分为两种类型:

  • 基于接口的代理(JDK动态代理): 这种类型的代理要求目标对象必须实现至少一个接口。Java动态代理会创建一个实现了相同接口的代理类,然后在运行时动态生成该类的实例。这种代理的实现核心是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。每一个动态代理类都必须实现InvocationHandler接口,并且每个代理类的实例都关联到一个handler。当通过代理对象调用一个方法时,这个方法的调用会被转发为由InvocationHandler接口的invoke()方法来进行调用。

  • 基于类的代理(CGLIB动态代理): CGLIB是一个强大的高性能的代码生成库,它可以在运行时动态生成一个目标类的子类。CGLIB代理不需要目标类实现接口,而是通过继承的方式创建代理类。因此,如果目标对象没有实现任何接口,可以使用CGLIB来创建动态代理。

6. 哪些场景适合用反射?

反射是允许程序在运行时动态地获取类的信息、创建对象、调用方法和访问字段等,适合反射的场景如下。

  • 框架开发:像 Spring 框架就大量运用反射来达成依赖注入。在 Spring 里,容器会在运行时借助反射创建对象实例,并且将依赖的对象注入到目标对象中。例如,当你在配置文件或者使用注解声明一个 Bean 时,Spring 容器会通过反射机制来实例化这个 Bean,同时把它所依赖的其他 Bean 注入进去。

  • 插件化开发:在插件化系统中,主程序通常需要在运行时动态加载和使用插件。反射可以帮助主程序在不知道插件具体实现类的情况下,创建插件对象并调用其方法。例如,一个图形处理软件可能允许用户安装不同的图像滤镜插件,主程序可以通过反射来加载并使用这些插件。

  • JSON 序列化和反序列化:在将 Java 对象转换为 JSON 字符串或者将 JSON 字符串转换为 Java 对象时,反射可以用来动态获取对象的属性和值。例如,Gson 库在进行 JSON 序列化和反序列化时,就会使用反射来访问对象的字段。

  • 代码分析和调试:在开发过程中,有时候需要在运行时获取类的信息,例如类的所有方法、字段等。反射可以帮助开发者实现这样的功能,方便进行代码分析和调试。例如,开发者可以编写一个工具类,使用反射来打印出一个类的所有方法和字段。

  • 动态代理:在实现动态代理时,反射是必不可少的。JDK 动态代理就是基于反射机制实现的,它允许在运行时创建一个实现了指定接口的代理对象,并在代理对象的方法调用中添加额外的逻辑。

7. 怎么判断对象是否应该被回收?

垃圾回收器(GC)负责回收不再使用的对象所占用的内存。判断对象是否应该被回收,主要有以下几种算法:

  • 引用计数算法:为每个对象维护一个引用计数器,每当有一个地方引用该对象时,计数器加 1;当引用失效时,计数器减 1。当计数器的值为 0 时,就认为该对象不再被使用,可以被回收。优点是实现简单,判断效率高,能及时回收不再使用的对象,缺点是难以解决对象之间的循环引用问题。例如,对象 A 引用对象 B,对象 B 又引用对象 A,即使它们不再被其他对象引用,计数器的值也不会为 0,导致无法被回收。

  • 可达性分析算法:从一系列被称为 “GC Roots” 的对象作为起始点,开始向下搜索,搜索所走过的路径称为引用链。当一个对象到 GC Roots 没有任何引用链相连时(即从 GC Roots 到该对象不可达),则证明此对象是不可用的,可被回收。优点是可以有效解决循环引用问题,是目前主流的垃圾回收算法所采用的判断方式,缺点是实现较为复杂,需要遍历整个引用链,会带来一定的性能开销。

8. 哪些对象可以被视为GC Root?

可作为 GC Roots 的对象:

  • 虚拟机栈(栈帧中的本地变量表)中引用的对象:例如,在方法中创建的对象,被方法的局部变量引用。

  • 方法区中类静态属性引用的对象:类的静态变量引用的对象。

  • 方法区中常量引用的对象:例如,字符串常量池中的字符串对象。

  • 本地方法栈中 JNI(即一般说的 Native 方法)引用的对象:本地方法中引用的对象。

9. 你说的这些对象,你可以各举一些例子吗?

  • 虚拟机栈中引用的对象,在 main 方法中,obj 是局部变量,存于虚拟机栈中,它所引用的 MyClass 实例就是通过虚拟机栈中引用可达的对象。

public class StackReferenceExample {public static void main(String[] args) {// 方法中的局部变量,在虚拟机栈中MyClass obj = new MyClass(); // 此时 obj 引用的对象是可达的,不会被回收}
}class MyClass {// 类的定义
}
  • **方法区中类静态属性引用的对象,staticObj 是 StaticReferenceExample 类的静态属性,位于方法区,它所引用的 MyClass 实例通过方法区中的静态属性引用可达。

public class StaticReferenceExample {public static MyClass staticObj;public static void main(String[] args) {staticObj = new MyClass();// 此时 staticObj 引用的对象由于是类的静态属性引用,是可达的,不会被回收}
}class MyClass {// 类的定义
}
  • **方法区中常量引用的对象,CONSTANT_STR 是一个常量,它引用的字符串对象 "Hello, World" 存于方法区的常量池中,通过常量引用可达。

public class ConstantReferenceExample {public static final String CONSTANT_STR = "Hello, World";public static void main(String[] args) {// CONSTANT_STR 是常量,在方法区中,它引用的字符串对象 "Hello, World" 不会被回收}
}
  • 本地方法栈中 JNI 引用的对象,在下述代码中,nativeMethod 是本地方法,在本地方法栈中执行,若在本地方法中通过 JNI 引用了某个对象,那么这个对象就属于本地方法栈中 JNI 引用的对象,在其被引用期间不会被回收。

public class JNIReferenceExample {// 本地方法声明public native void nativeMethod();public static void main(String[] args) {JNIReferenceExample example = new JNIReferenceExample();// 假设 nativeMethod 中会通过 JNI 引用一个对象example.nativeMethod(); }static {System.loadLibrary("nativeLibrary");}
}

10. BIO、NIO、AIO的区别是什么?

  • BIO(blocking IO):就是传统的 java.io 包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序。优点是代码比较简单、直观;缺点是 IO 的效率和扩展性很低,容易成为应用性能瓶颈。

  • NIO(non-blocking IO) :Java 1.4 引入的 java.nio 包,提供了 Channel、Selector、Buffer 等新的抽象,可以构建多路复用的、同步非阻塞 IO 程序,同时提供了更接近操作系统底层高性能的数据操作方式。

  • AIO(Asynchronous IO) :是 Java 1.7 之后引入的包,是 NIO 的升级版本,提供了异步非堵塞的 IO 操作方式,所以人们叫它 AIO(Asynchronous IO),异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。

11. 同步和阻塞这两个概念介绍一下?

同步指的是任务执行的顺序性。在同步模式下,任务必须按预定的顺序依次执行,前一个任务完成后,才能执行下一个任务。

比如,同步函数调用过程,函数A调用函数B,必须等待函数B执行完毕并返回结果后,函数A才能继续执行。又或者同步I/O场景下,程序发起一个读取文件的操作,必须等待文件内容完全读入内存后才能继续执行后续代码。

同步不一定是阻塞的(例如非阻塞轮询),但通常同步操作会表现为阻塞行为。

阻阻塞指的是调用方的状态。当调用一个操作时,如果当前线程/进程必须等待该操作完成才能继续执行,则称为阻塞。

比如,阻塞I/O场景下:线程调用read()读取网络数据时,如果数据未就绪,线程会被挂起(进入睡眠状态),直到数据到达。又或者,线程尝试获取一个已被占用的锁时,会被阻塞直到锁释放。

阻塞一定是同步的(因为必须等待操作完成),但同步不一定阻塞(见非阻塞轮询)。

12. 手撕:三个线程循环打印1-100

实现思路:

  1. 线程协作:通过 wait() 和 notifyAll() 实现线程间的同步。

  2. 共享状态:使用一个共享变量 current 表示当前应该打印的数字,并通过取模运算(% 3)决定哪个线程应该执行打印。

  3. 线程安全:所有操作在 synchronized 块中完成,避免竞态条件。

public class CyclicPrinting {privatestaticfinalint MAX_NUMBER = 100;privatestaticint current = 1; // 共享变量,表示当前应打印的数字privatestaticfinal Object lock = new Object(); // 锁对象public static void main(String[] args) {// 创建三个线程Thread threadA = new Thread(new Printer(0), "ThreadA");Thread threadB = new Thread(new Printer(1), "ThreadB");Thread threadC = new Thread(new Printer(2), "ThreadC");// 启动线程threadA.start();threadB.start();threadC.start();}staticclass Printer implements Runnable {privatefinalint remainder; // 当前线程的标识(0、1、2)public Printer(int remainder) {this.remainder = remainder;}@Overridepublic void run() {while (true) {synchronized (lock) {// 检查是否超过最大值if (current > MAX_NUMBER) {break;}// 如果当前线程不该打印,则等待while (current % 3 != remainder) {try {lock.wait();} catch (InterruptedException e) {Thread.currentThread().interrupt();return;}}// 打印并更新 currentSystem.out.println(Thread.currentThread().getName() + ": " + current);current++;// 唤醒其他线程lock.notifyAll();}}}}
}

13. 反问

  • 请问部门用的技术栈是什么?有什么挑战?

  • 面试官你觉得我有哪些可以加强的地方?

相关文章:

【中大厂面试题】腾讯云 java 后端 最新面试题

腾讯云(一面) 1. spring 和 springboot的区别是什么? 配置方式的区别:Spring 应用的配置较为繁琐,通常需要编写大量的 XML 配置文件或者使用 Java 注解进行配置。例如,配置数据源、事务管理器等都需要手动…...

Redis存储“大数据对象”的常用策略及StackOverflowError错误解决方案

Hi,大家好,我是灰小猿! 在一些功能的开发中,我们一般会有一些场景需要将得到的数据先暂时的存储起来,以便后面的接口或业务使用,这种场景我们一般常用的场景就是将数据暂时存储在缓存中,之后再…...

【Vue】v-if和v-show的区别

个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–核心区别三–使用场景​四–性能对比五–总结​ 二. 核心区别 之前将css的显示隐藏的方式的时候,就已经提到过v-show和v-if了。忘记了的可以再回头去复习复习。 (2.1&#xff09…...

南瓜颜色预测:逻辑回归在农业分类问题中的实战应用

南瓜颜色预测:逻辑回归在农业分类问题中的实战应用 摘要 本案例通过预测南瓜颜色的分类问题,全面展示了逻辑回归在农业领域的实战应用。从数据预处理到模型评估,详细介绍了Seaborn可视化、模型构建、性能优化和结果解释等关键环节。案例不仅…...

【物联网-RS-485】

物联网-RS-485 ■ RS-485 连接方式■ RS-485 半双工通讯■ RS-485 的特点■ ModBus■ ModBus-ASCII■ ModBus-RTU ■ RS-485 连接方式 ■ RS-485 半双工通讯 一线定义为A 一线定义为B RS-485传输方式:半双工通信、(逻辑1:2V ~ 6V 逻辑0&…...

TDengine 语言连接器(Node.js)

简介 tdengine/websocket 是 TDengine 的官方 Node.js 语言连接器。Node.js 开发人员可以通过它开发存取 TDengine 数据库的应用软件。 Node.js 连接器源码托管在 GitHub。 Node.js 版本兼容性 支持 Node.js 14 及以上版本。 支持的平台 支持所有能运行 Node.js 的平台。 …...

Git分布式版本控制工具

一、工作流程 二、常用指令 1、配置git 配置环境变量 cmd打开命令行,输入git查看是否配置成功。 设置用户名和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" 查看用户名和邮箱 git config --glob…...

The first day of vue

关于小白直接接触vue3的第1天 首先我们需要一个脚手架node.js (这个可以从官网下载,免费的,安装也比较简单,后续我也会出一个相关的安装教程,方便大家和我一起讨论,互相学习) (不知道有没有人对…...

C语言超详细指针知识(三)

在经过前面两篇指针知识博客学习之后,我相信你已经对指针有了一定的理解,今天将更新C语言指针最后一篇,一起来学习吧。 1.字符指针变量 在指针类型的学习中,我们知道有一种指针类型为字符指针char*,之前我们是这样使用…...

无人机气动-结构耦合技术要点与难点

一、技术要点 1. 多学科耦合建模 气动载荷与结构响应的双向耦合:气动力(如升力、阻力、力矩)导致结构变形,而变形改变气动外形,进一步影响气流分布,形成闭环反馈。 建模方法: 高精度C…...

打造现代数据基础架构:MinIO对象存储完全指南

目录 打造现代数据基础架构:MinIO对象存储完全指南1. MinIO介绍1.1 什么是对象存储?1.2 MinIO核心特点1.3 MinIO使用场景 2. MinIO部署方案对比2.1 单节点单驱动器(SNSD/Standalone)2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)2.3 多节点多驱动器(…...

SpringBoot条件注解全解析:核心作用与使用场景详解

目录 引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、ConditionalOnClass和ConditionalOnMissingClass2、ConditionalOnBean和ConditionalOnMissingBean3、ConditionalOnProperty4、ConditionalOnWebApplication和ConditionalOnNotWebApplication5、ConditionalO…...

智慧酒店企业站官网-前端静态网站模板【前端练习项目】

最近又写了一个静态网站,智慧酒店宣传官网。 使用的技术 html css js 。 特别适合编程学习者进行网页制作和前端开发的实践。 项目包含七个核心模块:首页、整体解决方案、优势、全国案例、行业观点、合作加盟、关于我们。 通过该项目,小伙伴们…...

#2 物联网组成要素

从下至上,则包括了5个要素,包括 设备 / 传感器 / 网络 / 物联网服务 / 数据分析 这五个要素。为了便于理解,我们用思维导图展示 物联网构成架构 设备 能够感测和反馈并连到网络进行物联网服务的装置 传感器 传感器和网关的融合实现了物…...

UE5 物理模拟 与 触发检测

文章目录 碰撞条件开启模拟关闭模拟 多层级的MeshUE的BUG 触发触发条件 碰撞 条件 1必须有网格体组件 2网格体组件必须有网格,没有网格虽然可以开启物理模拟,但是不会有任何效果 注意开启的模拟的网格体组件会计算自己和所有子网格的mesh范围 3只有网格…...

C++23 新特性静态operator[]、operator()与Lambda

文章目录 静态操作符 operator[] 和 operator()示例:静态 operator[]示例:静态 operator() 静态 Lambda 表达式(P1169R4)示例:静态 Lambda 表达式 编译器支持和总结深入静态操作符 operator[] 和 operator()性能优化代…...

C# 13新特性 - .NET 9

转载: C# 13 中的新增功能 | Microsoft Learn C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 SDK 尝试这些功能:Introduced in Visual Studio 2022 Version 17.12 and newer when using C# 13 C# 13 中的新增功能 | Micr…...

MyBatis SQL会话管理详解

目录 一、SQL会话的基本概念(一)创建SQL会话 二、SQL会话的生命周期(一)打开会话(二)执行SQL操作(三)提交事务(四)回滚事务(五)关闭会…...

Uniapp: 下拉选择框 ba-tree-picker

目录 1、效果展示2、如何使用2.1 插件市场2.2 引入插件 3、参数配置3.1 属性3.2 方法 4、遇见的问题4.1、设置下拉树的样式 1、效果展示 2、如何使用 2.1 插件市场 首先从插件市场中将插件导入到项目中 2.2 引入插件 在使用的页面引入插件 <view click"showPicke…...

【高性能缓存Redis_中间件】三、redis 精通:性能优化与生产实践

一、引言​ 在前两篇 Redis 消息队列的文章中&#xff0c;我们掌握了基础使用和高级特性。本文作为系列终篇&#xff0c;将聚焦生产环境的性能优化与全流程实践&#xff0c;请各位跟随小编的步伐一起构建高可靠、高性能的消息处理系统&#xff08;文章中的演示均为Centos7的背…...

自然语言处理Hugging Face Transformers

Hugging Face Transformers 是一个基于 PyTorch 和 TensorFlow 的开源库&#xff0c;专注于 最先进的自然语言处理&#xff08;NLP&#xff09;模型&#xff0c;如 BERT、GPT、RoBERTa、T5 等。它提供了 预训练模型、微调工具和推理 API&#xff0c;广泛应用于文本分类、机器翻…...

uniapp自定义tabbar,根据角色动态显示不同tabbar,无闪动问题

🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐:《前端项目教程以及代码》 ✨一、前言 这个需求在开发中还是很常见的,搜索了网络其他教程,…...

狂神SQL学习笔记一:初识MySQL、关系型数据库和非关系型数据库

菜鸟教程学习一半了&#xff0c;但是已经疲倦了&#xff0c;所以换一个课程学习&#xff0c;来提升学习质量&#xff0c;可能会有很多已经学习到的地方&#xff0c;就当是复习巩固了。 按照SQL学习课程来划分&#xff0c;分为45集&#xff0c;所以可能也会写45篇文章&#xff…...

面向MoE和推理模型时代:阿里云大数据AI产品升级发布

阿里云 2025 AI 势能大会上&#xff0c;阿里云智能集团副总裁、阿里云智能计算平台事业部负责人汪军华带来主题演讲《范式演进&#xff1a;MoE&推理模型时代的挑战与应对》&#xff0c;并发布大数据 AI 平台一系列重磅产品能力升级。 汪军华认为&#xff0c;从 Generative …...

网络安全·第三天·ICMP协议安全分析

一、ICMP功能介绍 ICMP&#xff08;Internet Control Message Protocal&#xff09;是一种差错和控制报文协议&#xff0c;不仅用于传输差错报文&#xff0c; 还传输控制报文&#xff0c;但是ICMP只是尽可能交付&#xff0c;提供的服务是无连接、不可靠的&#xff0c;并不能保…...

Hadoop大数据平台部署(Hadoop3.2.4+Hive4.0.1)

这里写自定义目录标题 1、前置要求与规划2、基础环境配置3、Hadoop 3.2.4 集群部署4、MariaDB 10.6.x 安装&#xff08;仅 master 节点&#xff09;5、Hive 4.0.1 部署&#xff08;仅 master 节点&#xff09;6、Hive 离线数据预处理7、Sqoop导出预处理结果到MySQL 1、前置要求…...

JMeter使用

1.简介 1.1 打开方式 ①点击bat,打开 ②添加JMeter系统环境变量,输⼊命令jmeter即可启动JMeter⼯具 1.2 配置 简体中文 放大字体 1.3 使用 ①添加线程组 ②创建http请求 2. 组件 2.1 线程组 控制JMeter将⽤于执⾏测试的线程数&#xff0c;也可以把⼀个线程理解为⼀个测…...

API:科技赋能,引领智能文字识别、身份认证与发票查验真伪变革

在数字化进程不断加速的今天&#xff0c;各行业对高效、精准的数据处理和身份验证方式如饥似渴。 文字识别&#xff1a;精准捕捉&#xff0c;高效便捷 文字识别产品系列宛如一把把精准的信息采集利器&#xff0c;其中包含证件识别接口、车牌识别接口、文档识别接口、发票识别接…...

Docker 安装 Flink 实现数据实时统计 - 华为云

概述 案例介绍 Apache Flink 是一个开源的流处理框架&#xff0c;具有高吞吐、低延迟、可容错等特点&#xff0c;可同时支持批处理和流处理&#xff0c;为数据处理提供了强大而灵活的解决方案&#xff0c;Flink 在 Docker 中的应用场景主要是为了简化集群的部署和管理&#x…...

LeetCode算法题(Go语言实现)_46

题目 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件&#xff0c;其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题&#xff0c;其中 querie…...

AJAX与Axios基础

目录 一、AJAX 核心概念解析 1.1 AJAX 的核心概念 1.2 AJAX 工作原理 1.3 AJAX 局限性 二、axios 库介绍 2.1 Axios 核心特性 2.2 快速上手 2.3 核心配置项 2.4 错误处理标准方案 三、Axios 核心配置项 3.1 常用核心配置项 1. url 2. method 3. params 4. data …...

CodeReview工具集合

codereview 工具集合 在现代软件开发中&#xff0c;代码审查&#xff08;Code Review&#xff09; 已成为保障代码质量和团队协作效率的关键流程。一个合适的 Code Review 工具&#xff0c;不仅能帮助团队发现潜在问题&#xff0c;还能促进知识共享与规范统一。 本文整理了一些…...

LeetCode算法题(Go语言实现)_45

题目 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部决定重新规划路线&#xff0c;以改变交通拥堵的状况…...

C++23 新特性:[[assume(expression)]] 属性

文章目录 语法与基本用法作用与优化原理使用注意事项未满足假设时的行为使用场景 示例代码总结 C23 引入了一个新的属性 [[assume(expression)]]&#xff0c;它为程序员提供了一种向编译器传递额外信息的机制&#xff0c;从而让编译器能够生成更高效的代码。 语法与基本用法 …...

AI IDE 提示词

好的&#xff0c;这就将之前的分析内容整理成一篇适合发布在 CSDN 上的博客文章。 告别代码生成混乱&#xff1a;AI IDE 提示词模式权威指南 作者: (你的名字/昵称) 日期: 2025年4月14日 前言 随着人工智能技术的飞速发展&#xff0c;AI 助手&#xff08;如 GitHub Copilot…...

Framework Binder架构分解

整个 Binder 架构所涉及的总共有以下 5 个目录&#xff1a; 1. /framework/base/core/java/(Java) 2. /framework/base/core/jni/ (JNI) 3&#xff0c;/framework/native/libs/binder (Native) 4&#xff0c;/framework/native/cmds/servicemanager/ (Native) 5&#xff0c…...

三层交换机SVI功能(交换机虚拟接口)实现各个实训室电脑网络可互通,原本是独立局域网

三层交换机 SVI功能&#xff08;交换机虚拟接口&#xff09; 实现VLAN路由 需求 &#xff1a;各实训室使用独立局域网&#xff0c;即每个实训有自己的IP网段&#xff0c; 每个实训室只有内部互相访问。 需求&#xff1a;为了加强各实训室学生的交流&#xff0c;学校要求我们…...

Spark-SQL核心编程:DataFrame、DataSet与RDD深度解析

在大数据处理领域&#xff0c;Spark-SQL是极为重要的工具。今天就来深入探讨Spark-SQL中DataFrame、DataSet和RDD这三个关键数据结构。 Spark-SQL的前身是Shark&#xff0c;它摆脱了对Hive的过度依赖&#xff0c;在数据兼容、性能优化和组件扩展上有显著提升。DataFrame是基于R…...

腾讯云COS直传,官方后端demo,GO语言转JAVA

腾讯云COS直传,官方后端demo,GO写的,我们台是JAVA所以转一下,已跑通。废话不多说,直接上代码: Controller类如下: import com.ruoyi.web.core.config.CosConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.Ht…...

c语言坦克对战(前言)

实现C语言中的“坦克大战”游戏逻辑&#xff0c;可以按照以下步骤进行&#xff1a; 游戏初始化 定义游戏窗口&#xff1a;设置游戏窗口的大小和标题。加载资源&#xff1a;加载坦克、子弹、敌人等图像资源。初始化游戏状态&#xff1a;设置初始分数、生命值、坦克位置等。 游…...

空间信息可视化——WebGIS前端实例(一)

技术栈&#xff1a;原生HTML 源代码&#xff1a;CUGLin/WebGIS: This is a project of Spatial information visualization 4 全国贫困县可视化系统 4.1 系统设计思想 党的十九大报告明确指出,要“确保到2020年我国现行标准下农村贫困人口实现脱贫,贫困县全部摘帽,解决区域…...

JVM考古现场(十九):量子封神·用鸿蒙编译器重铸天道法则

楔子&#xff1a;代码鸿蒙劫 "警告&#xff01;警告&#xff01;昆仑山服务器集群出现量子纠缠现象&#xff01;"凌霄殿监控中心警报响彻云霄。全息投影中&#xff0c;Java线程在四维时空中编织出克莱因瓶拓扑结构&#xff0c;GC日志里闪烁着霍金辐射般的奇点事件。本…...

思维与算法共舞:AIGC语言模型的艺术与科学

云边有个稻草人-个人主页 热门文章_云边有个稻草人的博客-本篇文章所属专栏~ 目录 引言&#xff1a;AIGC与文本生成概述 一、AIGC基础&#xff1a;语言模型的基本原理 1. 什么是语言模型&#xff1f; 2. 预训练与微调 二、AIGC的应用领域&#xff1a;文本生成的具体应用 …...

C++之 多继承

在学校里有老师和学生&#xff0c;他们都是人&#xff0c;我么应该创建一个名为 Person 的基类和两个名为 Teacher 和Student 的子类&#xff0c;后两者是从前者继承来的 有一部分学生还教课挣钱&#xff08;助教&#xff09;&#xff0c;也就是同时存在着两个”是一个”关系&…...

AI模型的主要分类及其详细对比,涵盖任务类型、架构、数据需求、应用场景等维度,并附上典型代表模型

以下是 AI模型的主要分类及其详细对比&#xff0c;涵盖任务类型、架构、数据需求、应用场景等维度&#xff0c;并附上典型代表模型&#xff1a; 一、AI模型的主要分类 1. 按任务类型分类 分类定义特点代表模型应用场景推理模型专注于逻辑推理、问题解决、因果关系分析的模型…...

TypeScript 快速入门

TypeScript 快速入门 1. 初识 TypeScript 1.1 TS 是什么&#xff1f; 以 JavaScript 为基础构建的语言&#xff1b;一个 JavaScript 的超集&#xff1b;可以在任何支持 JavaScript 的平台执行&#xff1b;TypeScript 扩展了 JavaScript 并添加了类型&#xff1b;TS 不能被 J…...

第一章 计算机网络和因特网

1.1 什么是因特网(Internet) 在博客这一系列文章中&#xff0c;我们使用一种特定的计算机网络&#xff0c;即公共因特网作为讨论计算机网络及其协议的主要载体。什么是因特网&#xff1f;可以用两种方式来回答这个问题&#xff1a;其一&#xff0c;我们能够通过因特网的具体构…...

【uni-app】axios 报错:Error: Adapter ‘http‘ is not available in the build

在 uni-app 中使用 axios 会报错&#xff1a;Error: Adapter ‘http‘ is not available in the build 解决方法&#xff1a;为 axios 添加 adapter 适配器。 import axios from axios; import settle from ../../node_modules/axios/lib/core/settle; import buildURL from …...

【路由交换方向IE认证】BGP选路原则之Weight属性

文章目录 一、路由器BGP路由的处理过程控制平面和转发平面选路工具 二、BGP的选路顺序选路的前提选路顺序 三、Wight属性选路原则规则9与规则11的潜移默化使用Weight值进行选路直接更改Weight值进行选路配合使用route-map进行选路 四、BGP邻居建立配置 一、路由器BGP路由的处理…...

思科模拟器的单臂路由,交换机,路由器,路由器只要两个端口的话,连接三台电脑该怎么办,划分VLAN,dotlq协议

单臂路由 1. 需求&#xff1a;让三台电脑互通 2. 在二层交换机划分vlan&#xff0c;并加入&#xff1b; 3. 将连接二层交换机和路由器的端口f0/4改为trunk模式 4. 路由器&#xff1a;进入连接路由器的f0/0端口将端口开启 5. 进入每个vlan设dotlq协议并设网络IP&#xff08…...