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

1 Java 基础面试题(上)

文章目录

  • 前言
  • 1. Java 中的序列化和反序列化是什么?
    • 1.1 序列化(Serialization)
    • 1.2 反序列化(Deserialization)
    • 1.3 serialVersionUID
    • 1.4 序列化的应用场景
    • 1.5 Transient 关键字
  • 2. 为什么 Java 里面不支持多重继承,但是接口可以多实现?
    • 2.1 核心概念
    • 2.2 如果 Java 允许多重继承(类的继承),会发生什么?
    • 2.3 为什么接口的多实现(Multiple Interfaces)不会有这个问题?
    • 2.4 为什么接口可以多实现,而类不能多继承?
    • 2.5 终极答案
  • 3. Java 方法重载和方法重写之间的区别是什么?
  • 4 接口和抽象类有什么区别?
    • 4.1. 核心设计理念
    • 4.2. 语法特性对比
    • 4.3. 实际案例对比
      • 抽象类示例
      • 接口示例
      • 4.5. 如何选择?
    • 总结


前言


1. Java 中的序列化和反序列化是什么?

  • 序列化
    是将对象转换为字节流的过程,这样对象可以通过网络传输、持久化存储或者缓存。ava提供了java.io.serializab1e接口来支持序列化,只要类实现了这个接口,就可以将该类的对象进行序列化
  • 反序列化
    是将字节流重新转换为对象的过程,即从存储中读取数据并重新创建对象,

1.1 序列化(Serialization)

序列化是将 Java 对象转换为字节流的过程。通过序列化,可以将对象保存到文件中,或者通过网络传输对象。当一个对象被序列化时,它的状态(属性值)会被转换成一个字节流,以便存储或传输。

关键点:

  • 实现 Serializable 接口:要让一个对象支持序列化,它的类必须实现 java.io.Serializable 接口。
  • 不需要实现方法:Serializable 接口是一个标记接口,不包含任何方法,仅用于标记该类的对象是可以被序列化的。

示例代码:序列化

import java.io.*;// 定义一个类实现Serializable接口,表示这个类的对象是可序列化的
class Person implements Serializable {String name;int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + "}";}
}public class SerializationExample {public static void main(String[] args) {// 创建一个Person对象Person person = new Person("John", 30);// 序列化对象try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) {out.writeObject(person);  // 写入对象到文件System.out.println("对象已序列化到文件 person.ser");} catch (IOException e) {e.printStackTrace();}}
}

代码说明:

  1. Person 类实现了 Serializable 接口,使得它的对象可以被序列化。
  2. SerializationExample 类中,我们创建了一个 Person 对象,并通过 ObjectOutputStream 将对象写入到一个名为 person.ser 的文件中。

1.2 反序列化(Deserialization)

反序列化是将字节流重新转换为 Java 对象的过程。通过反序列化,可以从文件或网络接收到的字节流恢复出对象的原始状态。

示例代码:反序列化

import java.io.*;public class DeserializationExample {public static void main(String[] args) {// 反序列化对象try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) {// 从文件中读取对象Person person = (Person) in.readObject();System.out.println("反序列化的对象: " + person);} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}}
}

代码说明:

  1. DeserializationExample 类通过 ObjectInputStream 从文件 person.ser 中读取字节流。
  2. readObject() 方法将字节流反序列化为一个 Person 对象。
  3. 反序列化后的对象会打印其属性。

1.3 serialVersionUID

serialVersionUID 是用于确保序列化和反序列化过程中类版本一致性的标识符。当类结构发生变化(如字段变化)时,serialVersionUID 可以帮助确保反序列化过程能够正确地判断版本一致性。如果版本不一致,反序列化会抛出 InvalidClassException

示例代码:使用 serialVersionUID

import java.io.*;class Person implements Serializable {private static final long serialVersionUID = 1L; // 定义serialVersionUIDString name;int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + "}";}
}public class SerializationWithUID {public static void main(String[] args) {Person person = new Person("John", 30);// 序列化对象try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person_with_uid.ser"))) {out.writeObject(person);System.out.println("对象已序列化到文件 person_with_uid.ser");} catch (IOException e) {e.printStackTrace();}}
}

在反序列化时,如果 serialVersionUID 发生变化,Java 会抛出 InvalidClassException 异常,这样可以避免由于版本不一致导致的数据丢失或错误。

1.4 序列化的应用场景

  • 持久化存储:将对象保存到文件中,方便恢复。
  • 分布式系统:将对象通过网络传输,尤其是在远程方法调用(RMI)和 Web 服务中。
  • 缓存:将对象序列化到缓存中,加速读取和存储。

1.5 Transient 关键字

  • Transient 关键字:如果你不希望某个字段被序列化,可以使用 transient 关键字标记该字段。
class Person implements Serializable {String name;transient int age;  // 该字段不会被序列化public Person(String name, int age) {this.name = name;this.age = age;}
}

2. 为什么 Java 里面不支持多重继承,但是接口可以多实现?

2.1 核心概念

  • 继承(Inheritance):子类直接获得父类的实现代码(比如变量、方法)。
  • 实现接口(Implement Interface):类承诺实现接口定义的方法签名(没有具体代码,只有方法名和参数)。

2.2 如果 Java 允许多重继承(类的继承),会发生什么?

假设 Java 允许一个类继承两个父类:

class A {public void print() {System.out.println("A");}
}class B {public void print() {System.out.println("B");}
}// 假设 Java 允许多重继承(实际不允许!)
class C extends A, B { }  // ❌ 编译错误

此时,C 类同时继承了 AB,但 AB 都有 print() 方法。问题来了:

  • 当调用 c.print() 时,应该执行 Aprint(),还是 Bprint()
  • Java 无法确定,这就是著名的菱形问题(Diamond Problem),导致代码歧义。

2.3 为什么接口的多实现(Multiple Interfaces)不会有这个问题?

接口没有具体代码(Java 8 之前),只有方法签名。即使两个接口有同名方法,冲突由实现类解决

interface X {void print(); // 只有方法签名
}interface Y {void print(); // 只有方法签名
}class MyClass implements X, Y {// 必须实现 print(),否则编译错误@Overridepublic void print() {System.out.println("MyClass 自己实现的 print()");}
}
  • 关键点:接口的 print() 没有具体代码,冲突的解决方法由 MyClass 自己决定。
  • 即使 Java 8 允许接口有默认方法default 方法),如果两个接口有同名默认方法,实现类依然必须重写它,避免歧义:
interface X {default void print() { System.out.println("X"); } // 默认实现
}interface Y {default void print() { System.out.println("Y"); } // 默认实现
}class MyClass implements X, Y {@Overridepublic void print() { // 必须重写,否则编译错误!System.out.println("MyClass 自己的 print()");}
}

2.4 为什么接口可以多实现,而类不能多继承?

  • 接口不涉及代码继承:接口定义的是“能做什么”(行为规范),而不是“怎么做”(具体实现)。
    • 即使多个接口有同名方法,实现类必须自己给出具体代码,没有歧义。
  • 类的继承涉及代码继承:如果两个父类有同名方法,子类无法确定该继承哪个父类的方法,导致歧义。

2.5 终极答案

Java 的设计者为了避免多重继承的复杂性(如菱形问题),同时保留多态的能力(一个类可以有多种行为),所以:

  • 禁止类的多重继承:避免代码冲突。
  • 允许接口的多实现:通过接口定义行为规范,具体实现由类自己决定,没有冲突风险。

3. Java 方法重载和方法重写之间的区别是什么?

  • 方法重载(Overading):在同一个类中,允许有多个同名方法,只要它们的参数列表不同(参数个数、类型或顺序)。主要关注方法的签名变化,适用于在同一类中定义不同场景下的行为。
  • 方法重写(Ovemiding):子类在继承父类时,可以重写父类的某个方法(参数列表、方法名必须相同),从而为该方法提供新的实现,主要关注继承关系,用于子类改变父类的方法实现,实现运行时多态性
    在重写方法时使用@Override注解要

区别主要如下:

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

接口和抽象类是面向对象编程中实现抽象的两种机制,它们的核心区别体现在设计目的、使用场景和语法特性上。以下是关键区别的总结:


4 接口和抽象类有什么区别?

4.1. 核心设计理念

接口和抽象类在设计动机上有所不同

  • 抽象类
    体现 “is-a” 关系(继承关系)。
    例如:Dog extends Animal,表示“狗是一种动物”,抽象类定义子类的本质特征
    抽象类的设计是自下而上的。我们写了很多类,发现它们之间有共性,有很多代码可以复用,因此将公共逻辑封装成一个抽象类,减少代码冗余。
    而 自下而上的 是先有一些类,才抽象了共同父类(可能和学校教的不太一样,但是实战中很多时候都是因为重构才有的抽象)。

  • 接口
    体现 “has-a” 能力(功能契约)。
    例如:Bird implements Flyable,表示“鸟具备飞行能力”,接口定义类的可扩展行为
    接口的设计是自上而下的。我们知晓某一行为,于是基于这些行为约束定义了接口,一些类需要有这些行为,因此实现对应的接口.。
    所谓的 自上而下 指的是先约定接口,再实现。


4.2. 语法特性对比

特性抽象类接口
继承/实现单继承(Java 单继承限制)多实现(一个类可实现多个接口)
构造方法可以有构造方法不能有构造方法
方法实现可包含abstract 方法(没有实现)和具体方法(有实现)默认是 public 和 abstract修饰,Java 8+ 支持默认方法(default)和静态方法
成员变量可以是任意类型变量默认 public static final(常量)
访问修饰符方法可任意修饰符(如 protected默认 public,不可用其他修饰符

4.3. 实际案例对比

抽象类示例

abstract class Animal {protected String name;  // 实例变量public Animal(String name) { this.name = name; }  // 构造方法public void sleep() { System.out.println(name + " is sleeping."); }  // 具体方法public abstract void makeSound();  // 抽象方法
}class Dog extends Animal {public Dog(String name) { super(name); }@Overridepublic void makeSound() { System.out.println("Woof!"); }
}

接口示例

interface Flyable {void fly();  // 默认 public abstractdefault void glide() { System.out.println("Gliding..."); }  // Java 8+ 默认方法
}class Bird implements Flyable {@Overridepublic void fly() { System.out.println("Flying with wings."); }
}class Drone implements Flyable {@Overridepublic void fly() { System.out.println("Flying with propellers."); }
}

4.5. 如何选择?

  • 优先使用接口
    需要定义行为契约、支持多实现,或未来可能扩展更多功能时(如定义 SerializableRunnable)。

  • 使用抽象类
    多个相关类需要共享代码逻辑,或需要定义子类的共性结构时(如模板方法模式)。


总结

  • 抽象类:聚焦代码复用,定义“是什么”,适合紧密相关的类族。
  • 接口:聚焦行为抽象,定义“能做什么”,适合松散的功能扩展。

Java 8 后接口通过默认方法模糊了两者界限,但设计理念的本质差异仍存在。

相关文章:

1 Java 基础面试题(上)

文章目录 前言1. Java 中的序列化和反序列化是什么?1.1 序列化(Serialization)1.2 反序列化(Deserialization)1.3 serialVersionUID1.4 序列化的应用场景1.5 Transient 关键字 2. 为什么 Java 里面不支持多重继承&…...

个人笔记---关于详解threadlocal 上下文环境存储的最佳数据类型

个人原因很久没有写代码,对于一些基础的数据类型有一些忘记,可以根据gpt和我当时的问答进行复习 关于拦截器,由于在请求的到达controller处理器之前,拦截器(当然过滤器也可以实现,我感觉都差不多)就把上下文设置在了线程副本中,那么这个请求到处理器的这些代码进行查询出来的上…...

JVM监控和管理工具

基础故障处理工具 jps jps(JVM Process Status Tool):Java虚拟机进程状态工具 功能 1:列出正在运行的虚拟机进程 2:显示虚拟机执行主类(main()方法所在的类) 3:显示进程ID(PID,Process Identifier) 命令格式 jps […...

【数据结构】树哈希

目录 一、树的同构1. 定义2. 具体理解(1) 结点对应(2) 孩子相同(3) 递归性质 3. 示例 二、树哈希1.定义2.哈希过程(1)叶节点哈希(2)非叶节点哈希(3)组合哈希值 3.性质(1) 唯一性 \re…...

UE5 蓝图学习计划 - Day 12:存储与加载

在游戏开发中,存储(Save)与加载(Load) 系统至关重要,玩家需要能够保存游戏进度、角色状态、道具数据等信息,并在下次启动游戏时恢复它们。UE5 提供了 SaveGame 蓝图类,帮助开发者快速…...

18爬虫:关于playwright相关内容的学习

1.如何在python中安装playwright 打开pycharm,进入终端,输入如下的2个命令行代码即可自动完成playwright的安装 pip install playwright ——》在python中安装playwright第三方模块 playwright install ——》安装playwright所需的工具插件和所支持的…...

图解BWT(Burrows-Wheeler Transform) 算法

Burrows-Wheeler Transform (BWT) 是一种数据转换算法, 主要用于数据压缩领域. 它由 Michael Burrows 和 David Wheeler 在 1994 年提出, 广泛应用于无损数据压缩算法(如 bzip2)中. BWT 的核心思想是通过重新排列输入数据, 使得相同的字符更容易聚集在一起, 从而提高后续压缩算…...

CMake轻松实现把编译生成文件分类输出到指定路径,同时又拷贝一份到别的指定路径(Window/Linux通用)

使用CMake管理的C项目工程你是否有以下需求: 1.项目编译时将生成的文件分类自动输出到指定位置; 2.除了上面输出到指定位置以外,还要拷贝一份到指定位置(包含头文件,配置文件,第三方依赖库文件等&#xf…...

AJAX笔记原理篇

黑马程序员视频地址: AJAX-Day03-01.XMLHttpRequest_基本使用https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p33https://www.bilibili.com/video/BV1MN411y7pw?vd_sour…...

C32.【C++ Cont】静态实现双向链表及STL库的list

目录 1.知识回顾 2.静态实现演示图 3.静态实现代码 1.初始双向链表 2.头插 3.遍历链表 4.查找某个值 4.任意位置之后插入元素 5.任意位置之前插入元素 6.删除任意位置的元素 4.STL库的list 1.知识回顾 96.【C语言】数据结构之双向链表的初始化,尾插,打印和尾删 97.【C…...

【Elasticsearch】terms聚合误差问题

Elasticsearch中的聚合查询在某些情况下确实可能存在误差,尤其是在处理分布式数据和大量唯一值时。这种误差主要来源于以下几个方面: 1.分片数据的局部性 Elasticsearch的索引通常被分成多个分片,每个分片独立地计算聚合结果。由于数据在分…...

2-kafka服务端之延时操作实现原理

文章目录 背景案例延时生产实现原理延时拉取实现原理 总结 背景 上篇我们说到了kafka时间轮是延时操作内部实现的重要数据结构,这篇我们来说下kafka内部的延时操作实现原理。这里我们以延时生产和延时拉取为例说明延时操作的实现原理。 案例 延时生产 我们知道如…...

UE求职Demo开发日志#22 显示人物信息,完善装备的穿脱

1 创建一个人物信息显示的面板,方便测试 简单弄一下: UpdateInfo函数: 就是获取ASC后用属性更新,就不细看了 2 实现思路 在操作目标为装备栏,或者操作起点为装备栏时,交换前先判断能否交换(只…...

【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型 【DeepSeek论文精读】…...

顺丰大数据开发面试题及参考答案

Flink 的提交过程是怎样的? Flink 的提交过程通常包含以下步骤: 代码编写与打包:开发人员首先使用 Flink 提供的 API 编写数据处理逻辑,包括定义数据源、转换操作和数据 sink 等。完成代码编写后,将项目打包成可执行的 JAR 文件,其中包含了所有依赖的库和资源。选择提交方…...

C# 函数多个返回值

有时候需要从C#函数中返回多个返回值,而且返回值的类型又不一样,这个时候又不能用数组或者list。 其实C#函数是支持多个不同类型的返回值的,请参看下面的code. //多返回值函数定义 (string name, int age) GetNameAge(int id) {return (&qu…...

Deepseek 接入Word处理对话框(隐藏密钥)

硅基流动邀请码:1zNe93Cp 邀请链接:网页链接 亲测deepseek接入word,自由调用对话,看截图有兴趣的复用代码(当然也可以自己向deepseek提问,帮助你完成接入,但是提问逻辑不一样给出的答案是千差万…...

RabbitMQ深度探索:简单实现 MQ

基于多线程队列实现 MQ &#xff1a; 实现类&#xff1a; public class ThreadMQ {private static LinkedBlockingDeque<JSONObject> broker new LinkedBlockingDeque<JSONObject>();public static void main(String[] args) {//创建生产者线程Thread producer n…...

Baklib赋能数字内容体验个性化推荐提升用户体验的未来之路

内容概要 随着数字化时代的不断发展&#xff0c;用户对内容消费的需求日益多样化&#xff0c;个性化推荐成为提升用户体验的重要手段。Baklib以其先进的技术手段&#xff0c;在数字内容领域内积极推动个性化推荐的实施&#xff0c;从而满足用户在信息获取和内容消费中的独特需…...

使用 TensorRT 和 Python 实现高性能图像推理服务器

在现代深度学习和计算机视觉应用中&#xff0c;高性能推理是关键。本文将介绍如何使用 TensorRT 和 Python 构建一个高性能的图像推理服务器。该服务器能够接收客户端发送的图像数据&#xff0c;使用 TensorRT 进行推理&#xff0c;并将结果返回给客户端。 1. 概述 1.1 项目目…...

[MySQL#1] database概述 常见的操作指令 MySQL架构 存储引擎

#1024程序员节&#xff5c;征文# 目录 一. 数据库概念 0.连接服务器 1. 什么是数据库 口语中的数据库 为什么数据不直接以文件形式存储&#xff0c;而需要使用数据库呢&#xff1f; 总结 二. ??基础操作 三. 主流数据库 四. 基础知识 服务器&#xff0c;数据库&…...

WebAssembly:前后端开发的未来利器

引言 在互联网的世界里&#xff0c;前端和后端开发一直是两块重要的领域。而 JavaScript 长期以来是前端的霸主&#xff0c;后端则有各种语言诸如 Java、Python、Node.js、Go 等等。然而&#xff0c;近年来一个名为 WebAssembly (Wasm) 的技术正在逐渐改变这一格局。它的高性能…...

Spring Task之Cron表达式

&#x1f31f; Spring Task高能预警&#xff1a;你以为的Cron表达式可能都是错的&#xff01;【附实战避坑指南】 开篇暴击&#xff1a;为什么你的定时任务总在凌晨3点翻车&#xff1f; “明明设置了0 0 2 * * ?&#xff0c;为什么任务每天凌晨3点执行&#xff1f;” —— 来…...

deepseek API 调用-python

【1】创建 API keys 【2】安装openai SDK pip3 install openai 【3】代码&#xff1a; https://download.csdn.net/download/notfindjob/90343352...

数字滤波器的分类

数字滤波器可以根据不同的标准进行分类&#xff0c;以下是几种常见的分类方式&#xff1a; 1. 按实现结构分类 FIR滤波器&#xff08;有限脉冲响应滤波器&#xff09; - 特点&#xff1a;系统的脉冲响应在有限时间内衰减到零。 - 优点&#xff1a;线性相位特性&#xff08;保…...

iOS 老项目适配 #Preview 预览功能

前言 iOS 开发者 最憋屈的就是UI 布局慢,一直以来没有实时预览功能,虽然swiftUI 早就支持了,但是目前主流还是使用UIKit在布局,iOS 17 苹果推出了 #Preview 可以支持UIKit 实时预览,但是仅仅是 iOS 17,老项目怎么办呢?于是就有了这篇 老项目适配 #Preview 预览 的文章,…...

高等代数笔记—域与一元多项式

域与环 数域 F F F&#xff1a;至少包含两个元素且对加减乘除运算封闭的复数集合 F F F&#xff0c;其中作除运算时除数不为0。 封闭&#xff1a;集合 F F F中的两个元素作某一运算的结果仍属于集合 F F F&#xff0c;则称 F F F对该运算封闭。 Q , R , C \mathbb{Q}, \mathbb…...

【C语言设计模式学习笔记1】面向接口编程/简单工厂模式/多态

面向接口编程可以提供更高级的抽象&#xff0c;实现的时候&#xff0c;外部不需要知道内部的具体实现&#xff0c;最简单的是使用简单工厂模式来进行实现&#xff0c;比如一个Sensor具有多种表示形式&#xff0c;这时候可以在给Sensor结构体添加一个enum类型的type&#xff0c;…...

2.Python基础知识:注释、变量以及数据类型、标识符和关键字、输入函数、输出函数、运算符、程序类型转换

1. 注释 注释是用来解释代码&#xff0c;增强代码可读性的部分。在 Python 中&#xff0c;注释分为单行注释和多行注释。 单行注释&#xff1a;以 # 开头&#xff0c;后面的内容都被视为注释。 # 这是一个单行注释 print("Hello, World!") # 输出 "Hello, Wor…...

介绍10个比较优秀好用的Qt相关的开源库

记录下比较好用的一些开源库 1. Qt中的日志库“log4qt” log4qt 是一个基于 Apache Log4j 设计理念的 Qt 日志记录库&#xff0c;它为 Qt 应用程序提供了强大而灵活的日志记录功能。Log4j 是 Java 领域广泛使用的日志框架&#xff0c;log4qt 借鉴了其优秀的设计思想&#xff…...

利用Muduo库实现简单且健壮的Echo服务器

一、muduo网络库主要提供了两个类&#xff1a; TcpServer&#xff1a;用于编写服务器程序 TcpClient&#xff1a;用于编写客户端程序 二、三个重要的链接库&#xff1a; libmuduo_net、libmuduo_base、libpthread 三、muduo库底层就是epoll线程池&#xff0c;其好处是…...

渗透测试之文件包含漏洞 超详细的文件包含漏洞文章

目录 说明 通常分为两种类型&#xff1a; 本地文件包含 典型的攻击方式1&#xff1a; 影响&#xff1a; 典型的攻击方式2&#xff1a; 包含路径解释&#xff1a; 日志包含漏洞&#xff1a; 操作原理 包含漏洞读取文件 文件包含漏洞远程代码执行漏洞: 远程文件包含…...

高性能 :DeepSeek-V3 inference 推理时反量化实现 fp8_cast_bf16

FP8 (8 bits) & FP16 (16 bits) FP8 和 BF16 都是浮点数格式&#xff08;floating-point formats&#xff09;&#xff0c;float通过科学计数法表示数据&#xff0c;float [符号位指数位系数位] FP8 (8 bits)&#xff1a;SEEEMMMMFP16 (16 bits)&#xff1a;SEEEEEMMMMM…...

kakailio官网推荐的安装流程ubuntu 22.04

https://kamailio.org/docs/tutorials/6.0.x/kamailio-install-guide-git/ # 非必须项 wget -O- https://deb.kamailio.org/kamailiodebkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/kamailio.gpg在/etc/apt/sources.list文件追加以下内容 deb [signed-by/usr/sh…...

能否通过蓝牙建立TCP/IP连接来传输数据

前言&#xff1a; 最近在做一个项目时&#xff0c;产生了一个疑问&#xff1a;能否通过蓝牙建立TCP/IP连接来传输数据 查阅了一些文章&#xff0c;可以得出结论&#xff1a;不行 下面是我截取的两篇个人认可的文章的回答&#xff1a; 文章一&#xff1a; 蓝牙是一种短距离无…...

git基础使用--1--版本控制的基本概念

文章目录 git基础使用--1--版本控制的基本概念1.版本控制的需求背景&#xff0c;即为啥需要版本控制2. 集中式版本控制SVN3. 分布式版本控制 Git4. SVN和Git的比较 git基础使用–1–版本控制的基本概念 1.版本控制的需求背景&#xff0c;即为啥需要版本控制 先说啥叫版本&…...

高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案

目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行&#xff08;下载&#xff09; 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…...

高级java每日一道面试题-2025年01月30日-框架篇[SpringBoot篇]-如何理解 Spring Boot 配置加载顺序 ?

如果有遗漏,评论区告诉我进行补充 面试官: 如何理解 Spring Boot 配置加载顺序 ? 我回答: 在 Java 高级面试中讨论 Spring Boot 配置加载顺序时&#xff0c;理解其机制对于有效管理和调试应用程序配置至关重要。Spring Boot 通过一系列预定义的规则来确定如何加载和覆盖配置…...

代码随想录day06

242.有效的字母异位词 刚学哈希表想着使用unordered_set来实现&#xff0c;结果无法通过&#xff0c;原因是对字母异位词理解有问题&#xff0c;字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语&#xff0c;并使用所有原字母一次。对字母出现的次数有要求&am…...

C#常用744单词

1.visual 可见的 2.studio 工作室 3.dot 点 4.net 网 5.harp 尖端的&#xff0c;锋利的。 6.amework 骨架&#xff0c;构架&#xff0c;框架 7.beta 测试版&#xff0c;试用版 8.XML&#xff08;全称&#xff1a;eXtensible Markup Language&#xff09…...

14.PPT:中国注册税务师协会宣传【26】

目录 NO12 NO3/4/5​ NO678​ 【文本框水平/垂直居中】【文本框内容水平/垂直居中】 NO12 坑&#xff1a;注意❗Word文档的PPt素材.docx的标题大纲是混乱的&#xff0c;虽然他设置了&#xff0c;所以我们需要重新设置 设计→主题视图→幻灯片母版→删除版式插入logo NO3/4…...

Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 比赛信息管理 看板展示 系统管理 摘要 本文使用Python与…...

简单3步部署本地国产大模型DeepSeek大模型

简单3步部署本地国产大模型DeepSeek大模型 DeepSeek是最近非常火的开源大模型&#xff0c;国产大模型 DeepSeek 凭借其优异的性能和对硬件资源的友好性&#xff0c;受到了众多开发者的关注。 无奈&#xff0c;在使用时候deepseek总是提示服务器繁忙&#xff0c;请稍后再试。 …...

Redis常见数据类型与编码方式

⭐️前言⭐️ 本小节围绕Redis中常见的数据类型与编码方式展开。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及博主日常练习代码均已上传GitHu…...

利用matlab寻找矩阵中最大值及其位置

目录 一、问题描述1.1 max函数用法1.2 MATLAB中 : : :的作用1.3 ind2sub函数用法 二、实现方法2.1 方法一&#xff1a;max和find2.2 方法二&#xff1a;max和ind2sub2.3 方法对比 三、参考文献 一、问题描述 matlab中求最大值可使用函数max&#xff0c;对于一维向量&#xff0…...

解锁云电脑爽玩TGA游戏,ToDesk、海马云等多款云电脑游戏横测

作为一名游戏爱好者&#xff0c;我深入研究了云电脑技术在游戏娱乐中的应用。通过对比传统游戏机与云电脑的成本效益&#xff0c;我发现云电脑以其低成本和灵活性脱颖而出。我以自身为例&#xff0c;分析了云电脑如何满足对游戏体验的高要求。在测评中&#xff0c;我选择了ToDe…...

蓝桥杯思维训练(五)

文章目录 子集II1191.K次串联后最大子数组之和 子集II 子集II 思路分析&#xff1a; 求解子集的问题的关键就是&#xff0c;通过递归与回溯&#xff0c;我们就是得确定以某个元素开始的子集&#xff0c;对于这个题目来说&#xff0c;比较麻烦的一点就是&#xff0c;存在重复的…...

kaggle视频行为分析1st and Future - Player Contact Detection

这次比赛的目标是检测美式橄榄球NFL比赛中球员经历的外部接触。您将使用视频和球员追踪数据来识别发生接触的时刻&#xff0c;以帮助提高球员的安全。两种接触&#xff0c;一种是人与人的&#xff0c;另一种是人与地面&#xff0c;不包括脚底和地面的&#xff0c;跟我之前做的这…...

2025 CCF BDCI|“基于TPU平台的OCR模型性能优化”一等奖作品

2024年12月&#xff0c;中国计算机学会在海南博鳌成功举办了第十二届CCF大数据与计算智能大赛&#xff08;简称2024 CCF BDCI&#xff09;。本届比赛的算能赛道吸引了1748名选手报名&#xff0c;经过激烈角逐&#xff0c;北京航空航天大学的“常务副SOTA”团队脱颖而出&#xf…...

结合深度学习、自然语言处理(NLP)与多准则决策的三阶段技术框架,旨在实现从消费者情感分析到个性化决策

针对电商个性化推荐场景的集成机器学习和稳健优化三阶段方案。 第一阶段:在线评论数据处理&#xff0c;利用深度学习和自然语言处理技术进行特征挖掘&#xff0c;进而进行消费者情感分析&#xff0c;得到消费者偏好 在第一阶段&#xff0c;我们主要关注如何通过深度学习和自然语…...