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

【Java八股文】01-Java基础面试篇

【Java八股文】01-Java基础面试篇

  • 概念
    • Java特点
    • Java为什么跨平台
    • JVM、JDK、JRE关系
  • 面向对象
    • 什么是面向对象,什么是封装继承多态?
    • 多态体现的方面
    • 面向对象设计原则
    • 重载重写的区别
    • 抽象类和实体类区别
    • Java抽象类和接口的区别
    • 抽象类可以被实例化吗
  • 深拷贝浅拷贝
    • 区别
    • 实现深拷贝方法
  • 对象
    • java创建对象的方式
    • new出来的对象什么时候回收
  • 反射
    • 什么是反射
    • 反射应用场景
  • 注解
  • 异常
    • 常见异常
    • 异常处理
  • object
    • ==和equals
    • String、StringBuilder和StringBuffer
  • 序列化
    • 怎么把一个对象从一个jvm转移到另一个jvm
      • 序列化和反序列化让你自己实现你会怎么做?
  • 设计模式
    • volatile和sychronized如何实现单例模式
    • 代理模式和适配器模式有什么区别?
  • I/O
    • BIO、和NIO、AIO区别
    • NIO如何实现
    • Netty
  • 其他
    • 有一个学生类,想按照分数排序,再按学号排序,应该怎么做?
    • Native


概念

Java特点

  • 平台无关
  • 面向对象
  • 拥有自己的内存管理机制

Java为什么跨平台

Java 之所以能够跨平台,是因为不同操作系统都有对应版本的 Java 虚拟机(JVM)。只要在目标平台上安装相应的 JVM,就能运行 Java 的字节码文件(.class)。

字节码本身是跨平台的,但 JVM 并不能跨平台。不同操作系统需要不同版本的 JVM 来解析 Java 字节码,并将其转换为该平台对应的机器码,以供执行。

JVM、JDK、JRE关系

JVM<JDK<JRE

  • JVM是虚拟机,本质上是一个用来运行java字节码文件的程序。

    • 对字节码文件中的指令,实时的解释成机器码供计算机执行
    • 自动为对象、方法分配内存以及回收不再使用的对象
    • 即时编译JIT对热点代码进行优化,提升效率,JIT将热点代码转为机器码后存至RAM,下次运行可以直接从RAM中调用。
  • JRE是虚拟机+类库,也就是java的运行时环境。

  • JDK包含虚拟机jvm、编译器javac、调试器jdb和一些标准库和工具库。

面向对象

什么是面向对象,什么是封装继承多态?

面向对象就是将事物抽象成对象,提取出对应的属性或者方法,以该对象为中心,通过对象与对象之间交互来完成所需功能。

java面向对象三大特征:封装、继承、多态

  • 封装:将对象的属性和方法结合起来,对外隐藏内部细节,仅通过对象的暴露出来的接口进行交互。
  • 继承:子类共享父类数据结构和方法,是代码复用的主要手段。
  • 多态:指多个不同类的对象对同一接口展现出不同的运行状态,也就是不同实力对同一接口表现出来的不同操作,多态分为编译时多态(重载)和运行时多态(重写)。

多态体现的方面

  • 方法重载:同一个命名的方法可以有多种参数列表。

  • 方法重写:子类可以重写父类同名行为。

  • 接口与实现:多个类可以实现同一接口,多个动物类实现动物接口并调用动物接口的方法则会出发对应的实现。

  • 向上向下转型

    • 向上:父类引用指向子类对象,只能调用父类忒的那个方法,不能调用子类特有方法。

      Animal animal = new Dog();
      animal.makeSound();
      
    • 向下:父类引用转为子类类型,转为子类类型必须强制转换,可以调用子类特有方法。

      Animal animal = new Dog();
      Dog dog = (Dog) animal;
      dog.makeSound();
      dog.wagTail();`
      

      向下转有风险

面向对象设计原则

  • 单一职责:一个类只负责一项职责。
  • 开放封闭:对拓展开放,对修改封闭。
  • 里氏替换:子类对象应该能够替换所有父类对象,并且程序的行为不会发生变化。
  • 接口隔离:接口应该设计得小而专,同时通过依赖注入管理依赖关系。强调通过依赖注入来管理类之间的依赖关系,而不是在类内部直接创建依赖,从而实现松耦合。
  • 依赖倒置:高层次模块不应该依赖于底层模块。
  • 最少知识:一个类应该对其他对象最少了解。

重载重写的区别

  • 重载是对同一命名方法可以拥有不同的参数列表,编译器根据调用时参数类型来自动选择调用哪个方法
  • 重写是子类重写父类同名方法,通过@override来标注

抽象类和实体类区别

  • 实例化:抽象类不能被实例化,只能被继承
  • 方法:抽象类的方法可以没有具体实现
  • 继承:
    • 一个类只能继承一个普通类,但可以实现多个接口
    • 一个类只能继承一个抽象类,但可以实现多个接口。
  • 实现限制:抽象类一般是基类,供其他类继承。而实体类可以被其他类继承和使用。

Java抽象类和接口的区别

  • 两者特点:

    • 抽象类描述类的共同特性和行为,可以有具体的成员变量,构造方法和具体方法。
    • 接口可以多实现,只能有常量字段和抽象方法。
  • 两者区别:

    • 实现接口的关键字implements,继承为extends,一个类可以实现多个接口,一个类只能继承一个抽象类。
    • 接口只能有定义,而抽象类可以有定义与实现。
    • 接口成员默认是常量,public static final,并且必须赋初值不能背修改,方法为public abstract的。抽象类成员默认default,可以被定义,抽象方法由abstract修饰,必须以分号结尾,不带花括号。
    • 抽象类可以由实体变量和静态变量,而接口只能由静态常量。

抽象类可以被实例化吗

抽象类不能通过new被实例化,但是抽象类可以有自己的构造器,在子类实例化的过程也会被调用,以便进行必要的初始化工作。

深拷贝浅拷贝

区别

浅拷贝类似于快捷方式,只是创建了一个新的对象,指向原复制对象的地址,所以如果原复制对象发生变化,他也跟着变化。

深拷贝是指在复制对象的同时,重新开辟一部分内存区域,将其的全部字面值都复制一份,创建一个新对象,与原复制对象除了值一样外没有其他关系。

实现深拷贝方法

  • 实现Cloneable接口并重现clone方法
  • 使用序列化和反序列化:将对象序列化为字节流,在通过字节流反序列化为对象实现深拷贝,要求对象和引用类型实现Serializable接口
  • 手动复制

对象

java创建对象的方式

  • new MyClass obj = new MyClass();

  • 通过反射使用Class类的newInstance()方法:

    MyClass obj = (MyClass) Class.forName("com.example.MyClass").newInstance();
    
  • 使用Constructor类的newInstance()方法:

    Constructor<MyClass> constructor = MyClass.class.getConstructor(String.class);
    MyClass obj = constructor.newInstance("John");
    
  • 使用clone()方式,clone() 方法是 Object 类的一个方法,必须实现 Cloneable 接口才能正常工作。

    class MyClass implements Cloneable {private String name;MyClass(String name) {this.name = name;}void display() {System.out.println("Name: " + name);}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();  // 调用 Object 的 clone() 方法}
    }
    public class Main {public static void main(String[] args) throws CloneNotSupportedException {MyClass original = new MyClass("John");MyClass cloned = (MyClass) original.clone();cloned.display();}
    }
    
  • 使用反序列化

    class MyClass implements Serializable {private String name;MyClass(String name) {this.name = name;}void display() {System.out.println("Name: " + name);}
    }
    public class Main {public static void main(String[] args) throws IOException, ClassNotFoundException {ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("obj.dat"));MyClass original = new MyClass("John");out.writeObject(original);out.close();ObjectInputStream in = new ObjectInputStream(new FileInputStream("obj.dat"));MyClass deserialized = (MyClass) in.readObject();in.close();deserialized.display();}
    }
    

new出来的对象什么时候回收

new出来的对象由GC进行回收,根据一下算法进行检测:

  • 引用计数法:为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减1。
  • 可达性分析法:可达性分析将对象分类两类:垃圾回收的根对象GCRoot和普通对象,如果某个到GCRoot对象是可达的那么这个对象就不可回收。

反射

什么是反射

指在运行中对于任意一个类或对象都知道其所有属性及方法,这种动态获取信息及动态调用对象的方法称为java的反射机制。

  • 运行时类信息访问。

  • 动态对象创建,即使不知道具体类名也可以通过Class类的newInstance()或Constructor对象的newInstance()创建。

  • 动态方法调用,通过调用Method的invoke方法实现,可以调用私有方法。

  • 访问和修改字段值,即使时私有的也可以通过Field类的get()和set()方法调用。

    class Person {private String name = "Alice";private void sayHello() {System.out.println("Hello, my name is " + name);}
    }
    Person person = new Person();
    Field nameField = Person.class.getDeclaredField("name");
    nameField.setAccessible(true); // 允许访问私有字段
    System.out.println("Before modification: " + nameField.get(person));
    nameField.set(person, "Bob"); // 修改私有字段的值
    Method sayHelloMethod = Person.class.getDeclaredMethod("sayHello");
    sayHelloMethod.setAccessible(true); // 允许访问私有方法
    sayHelloMethod.invoke(person); // 调用方法
    

反射应用场景

  • 加载数据库驱动

    我们可以根据实际情况通过反射动态的来加载驱动类,那么在JDBC连接数据库的时候我们就可以通过Class.forName()通过反射加载对应的驱动类

    Class.forName("com.mysql.cj.jdbc.Driver");
    Connection connection = DriverManager.getConnection(url, user, password);
    

    通过反射加载 MySQL JDBC 驱动类,触发其 static 代码块注册驱动。通过 DriverManager 获取数据库连接,内部会调用已注册的驱动程序的 connect() 方法。

  • 配置文件加载

    Spring IoC 容器的本质可以类比为一个 HashMap,其中 Key 是 Bean 的名称,Value 是实例化的对象。Spring 通过反射动态加载 Bean:

    • 解析 beans.xml@Configuration 类,获取需要实例化的类名。
    • 通过 Class.forName() 反射加载类,并使用Constructor.newInstance() 创建对象。
    • 通过 Field.set() 或 方法反射调用(setter、构造器)进行依赖注入。
    • BeanPostProcessor 允许在 Bean 初始化前后 进行额外处理,如AOP 代理等。

注解

注解可以作用在类上、方法上、字段上。注解的本质时继承了Annotation的特殊接口,具体实现时java运行时生成的动态代理。

异常

常见异常

错误和异常均继承于Throwable类

  • 错误Error:OutOfMemoryError、StackOverflowError
  • 异常Exception:
    • 非运行时异常:文件不存在、类未找到
    • 运行时异常:空指针、数组越界

异常处理

通过try-catch

try {int result = 10 / 0; // 触发 ArithmeticException
} catch (ArithmeticException e) {System.out.println("捕获异常:" + e.getMessage());
} finally {System.out.println("无论如何都会执行的 finally 代码块!");
}

object

==和equals

==对比的是对象的首地址是否一样,equals是对比字面值是否一样

String、StringBuilder和StringBuffer

  • String是不可变字符串,String对象是在jdk8之后是存储在堆中,具体存储位置取决于创建方式,常量创建放在字符串常量池,new出来放在普通对象中,intern()手动放入常量池。StringBuilder和StringBuffer也都创建在队中的普通对象里。

  • StringBuffer线程安全,StringBuilder线程不安全

  • 因为StringBuffer引入了线程安全,所以速度要慢于StringBuilder,但都大于String,因为String修改要频繁进行字符串常量池变更。

序列化

怎么把一个对象从一个jvm转移到另一个jvm

  • 序列化与反序列化Serializable
  • 使用中间件的消息传递机制
  • 远程方法调用RPC(Remote Procedure Call)、Feign等
  • 共享数据库

序列化和反序列化让你自己实现你会怎么做?

要么手动拼接JSON字符串,要么使用成熟的框架Fastjson、Jackson

import com.alibaba.fastjson.JSON;
public class FastjsonExample {public static void main(String[] args) {MyClass obj = new MyClass("John", 30);String json = JSON.toJSONString(obj);// 序列化System.out.println(json);  // Output: {"age":30,"name":"John"}// 反序列化MyClass deserializedObj = JSON.parseObject(json, MyClass.class);System.out.println(deserializedObj.name);  // Output: JohnSystem.out.println(deserializedObj.age);   // Output: 30}
}

设计模式

volatile和sychronized如何实现单例模式

volatile 关键字可以防止 JVM 对变量进行指令重排,sychronized是加锁

有两种实现方式

  • 单sychronized,保证一个线程只会拿到一把锁

    public class Singleton {private static Singleton instance;private Singleton() {}// 私有构造函数,防止外部实例化public static synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton(); // 创建实例}return instance;}
    }
    

​ 缺点:每个线程所对应的对象无论是否创建都会拿锁,性能较差

  • volatile+更细粒度的锁

    public class Singleton {private static volatile Singleton instance;// 使用 volatile 防止指令重排private Singleton() {} // 私有构造函数,防止外部实例化public static Singleton getInstance() {// 第一次检查,不加锁if (instance == null) {synchronized (Singleton.class) {// 第二次检查,加锁if (instance == null) {instance = new Singleton(); // 创建实例}}}return instance;}
    }
    

​ 只有在第一次检查没有实例化的时候才会加锁,volatile保证顺序,更细粒度的锁synchronized保证性能。

代理模式和适配器模式有什么区别?

代理模式通过是增强功能,例如AOP来对目标方法进行增强,比如增加日志、事务、权限检查等。

适配器模式是为了适配不同场景不同应用。

I/O

BIO、和NIO、AIO区别

特性BIONIOAIO
工作模式阻塞 I/O,数据流模式非阻塞 I/O,缓冲区 + 通道 + 选择器异步 I/O,回调通知
线程模型每个连接一个线程多个通道由单线程管理(通过 Selector)异步 I/O,无需阻塞或轮询
I/O 操作阻塞,直到 I/O 操作完成非阻塞,可以轮询多个通道的事件异步,不会阻塞,完成时回调通知
适用场景并发连接数少,低性能需求高并发、大量连接,I/O 密集型应用超高并发、大数据量 I/O 操作
性能问题并发连接数多时性能差(线程开销大)比 BIO 性能好,但需要轮询(高并发时更有效)性能非常高,尤其适用于高并发应用

NIO如何实现

在这里插入图片描述

每个客户端通过通道(Channel)与服务端进行数据交互,客户端通过端口向服务端发送连接请求。服务端使用一个线程,通过多路复用器(Selector)来监听多个客户端的连接请求和数据事件,服务端会将每个客户端的通道注册到 Selector 上进行管理。

Netty

Netty 是建立在 Java NIO 之上的框架,它在底层使用 NIO 的 Selector(选择器)和非阻塞 I/O来处理并发的连接。与传统的 NIO 编程方式相比,有一下特点:

  • 事件驱动和异步机制:通过回调机制处理I/O结果
  • boss-worker:boss只负责管理,具体处理交给worker,还有更加智能的线程管理
  • 内存管理优化:采用内存池化区别于传统每次读取都会分配新的字节数组
  • 支持多种协议:不仅有tcp、udp还有http、https、websocket等等

其他

有一个学生类,想按照分数排序,再按学号排序,应该怎么做?

  • 如果这个学生类是原生数组,直接用Array.sort配合内部函数实现自定义排序。

    Arrays.sort(students,(a,b)->{if(a.getScore()!=b.getScore()){return b.getScore()-a.getScore();}else{return a.getId()-b.getId();}
    });
    
  • 如果这个学生类是List集合,建议建议 Student 实现 Comparable<Student>以提供自定义排序

    class Student implements Comparable<Student> {private int score;private int id;... //构造、getter、setter@Overridepublic int compareTo(Student other) {if (this.score != other.score) {return Integer.compare(other.score, this.score); // 降序}return Integer.compare(this.id, other.id); // 升序}
    }
    

Native

在 Java 中,native 关键字用于声明本地方法(Native Method),这些方法的实现通常由 C 或 C++ 编写,并通过 JNI(Java Native Interface)调用。

用native声明的方法没有方法体

  • native方法声明:

    public class NativeExample {  public native void sayHello();// 声明一个 native 方法// 加载 C/C++ 库static {System.loadLibrary("NativeLib"); // 加载 "NativeLib.dll"(Windows)或 "libNativeLib.so"(Linux)}public static void main(String[] args) {new NativeExample().sayHello(); // 调用本地方法}
    }
    
  • C/C++ 代码实现

    创建 NativeExample.h(通过 javac + javah 生成)

    #include <jni.h>
    #include <stdio.h>
    #include "NativeExample.h"
    JNIEXPORT void JNICALL Java_NativeExample_sayHello(JNIEnv *env, jobject obj) {printf("Hello from C!\n");
    }
    

    编译成动态库:

    • Windows: gcc -shared -o NativeLib.dll NativeExample.c -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32"
    • Linux: gcc -shared -o libNativeLib.so NativeExample.c -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux"

相关文章:

【Java八股文】01-Java基础面试篇

【Java八股文】01-Java基础面试篇 概念Java特点Java为什么跨平台JVM、JDK、JRE关系 面向对象什么是面向对象&#xff0c;什么是封装继承多态&#xff1f;多态体现的方面面向对象设计原则重载重写的区别抽象类和实体类区别Java抽象类和接口的区别抽象类可以被实例化吗 深拷贝浅拷…...

读取本地excel删除第一行,并生成List数组

在 pom.xml 里添加如下依赖&#xff1a; <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.ap…...

【核心特性】Go 模块化开发入门(go mod 深度解析)

Go 模块化开发入门&#xff08;go mod 深度解析&#xff09; 一、引言 在 Go 语言的开发过程中&#xff0c;随着项目规模的不断扩大&#xff0c;依赖管理变得愈发重要。Go Modules 作为 Go 语言官方的依赖管理工具&#xff0c;自 Go 1.11 版本引入后&#xff0c;极大地简化了项…...

【新品解读】AI 应用场景全覆盖!解码超高端 VU+ FPGA 开发平台 AXVU13F

「AXVU13F」Virtex UltraScale XCVU13P Jetson Orin NX 继发布 AMD Virtex UltraScale FPGA PCIE3.0 开发平台 AXVU13P 后&#xff0c;ALINX 进一步研究尖端应用市场&#xff0c;面向 AI 场景进行优化设计&#xff0c;推出 AXVU13F。 AXVU13F 和 AXVU13P 采用相同的 AMD Vir…...

Flask和Django相比哪个更适合新手?

Flask 与 Django:哪个更适合新手? 对于新手来说,选择 Flask 还是 Django 主要取决于你的具体需求和项目复杂度。以下是两者的详细对比,帮助你做出选择: 1. Flask 优点 简单易用:Flask 是一个轻量级的微框架,代码简洁,易于理解和上手。适合初学者快速入门。灵活性高:…...

高通android WIFI debug

参考高通文档&#xff1a;80-76240-16_REV_AA_Wi-Fi_Debug_Techniques 大纲 一、 WLAN Debug Logs –logcat ■ Logcat log logcat is a command-line tool that dumps the log of system messages, ■ Including stack traces when the device throws an error. ■ Need t…...

ADC 的音频实验,无线收发模块( nRF24L01)

nRF24L01 采用 QFN20 封装&#xff0c;有 20 个引脚&#xff0c;以下是各引脚的详细介绍&#xff1a; 1. 电源引脚 ◦ VDD&#xff1a;电源输入端&#xff0c;一般接 3V 电源&#xff0c;为芯片提供工作电压&#xff0c;供电电压范围为 1.9V&#xff5e;3.6V。 ◦ VSS&#xf…...

Swagger2 Knife4jConfig 配置,父子项目swagger扫描多个子模块中的Controller生成接口文档:

问题: 需求父子项目swagger扫描多个子模块中的Controller生成接口文档: Swagger2Knife4jConfig 配置放在了 springboot-app 启动项目里&#xff0c;而 tiger-web 和 tiger-web2 这两个子项目有自己的 Controller。这种情况下&#xff0c;Swagger 可能无法正确扫描 tiger-web 和…...

Unity UI 道路线跟随:让图标沿道路轨迹移动

在 Unity UI 开发中&#xff0c;有时需要让图标沿着一条道路轨迹移动&#xff0c;比如地图上的车辆行驶动画、导航路径指示等。本文介绍如何基于 UI 图片中的道路线生成曲线&#xff0c;并使用 Slider 控制图标沿轨迹运动&#xff0c;适用于 UI 导航、路径跟随动画等场景。 1. …...

Springboot核心:拦截器

拦截器是 Spring 框架提供的核心功能之一,属于一种设计模式&#xff0c;它允许在某个方法调用或请求处理前后执行自定义逻辑&#xff0c;是一种AOP&#xff08;面向切面编程&#xff09;机制。它们可以在不修改原有业务逻辑的情况下&#xff0c;对进入系统的请求进行预处理和后…...

【AI学习笔记】基于Unity+DeepSeek开发的一些BUG记录解决方案

【AI学习笔记】基于UnityDeepSeek开发的一些BUG记录&解决方案 背景前摇&#xff1a;&#xff08;省流可不看&#xff09; Unity是大学学的&#xff0c;AI是研究生学的&#xff0c;DeepSeek是第一份实习偷师的&#xff0c;三合一的梦是最近开始做的&#xff0c;BUG是今天遇…...

六西格玛设计培训如何破解风电设备制造质量与成本困局

2023年&#xff0c;中国风电行业装机容量突破4.3亿千瓦&#xff0c;稳居全球第一&#xff0c;但高速扩张背后暗藏隐忧&#xff1a; 质量痛点&#xff1a;叶片开裂、齿轮箱故障等缺陷频发&#xff0c;运维成本占项目全生命周期成本超30%&#xff1b;成本压力&#xff1a;原材料…...

xml 和json互转工具

工具1 有个问题会导致springboot返回捕获的异常编程xml格式 import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import org.json.JSONObject; import org.json.XML; import org.w3c.dom.Document;import javax.xm…...

【STM32】舵机SG90

1.舵机原理 舵机内部有一个电位器&#xff0c;当转轴随电机旋转&#xff0c;电位器的电压会发生改变&#xff0c;电压会带动转一定的角度&#xff0c;舵机中的控制板就会电位器输出的电压所代表的角度&#xff0c;与输入的PWM所代表的角度进行比较&#xff0c;从而得出一个旋转…...

【RK3588嵌入式图形编程】-SDL2-鼠标输入处理

鼠标输入处理 文章目录 鼠标输入处理1、概述2、鼠标移动事件3、鼠标点击事件4、鼠标点击位置5、鼠标双击6、鼠标进入和离开事件7、总结在本文中,将介绍如何在 SDL2 中检测和处理鼠标输入事件,包括鼠标移动、按钮点击以及窗口进入/退出。 1、概述 在本文中,我们将详细介绍如…...

知识管理成功:关键指标和策略,研究信息的投资回报率

信息过载会影响生产力。没有人工智能的帮助&#xff0c;信息过载会影响生产力。大量的可用信息&#xff0c;知识工作者不仅仅是超负荷工作&#xff1b;他们感到不知所措&#xff0c;他们倾向于浪费时间&#xff08;和脑细胞&#xff09;来应付他们被大量的数据抛向他们&#xf…...

Linux权限提升-内核溢出

一&#xff1a;Web到Linux-内核溢出Dcow 复现环境&#xff1a;https://www.vulnhub.com/entry/lampiao-1,249/ 1.信息收集&#xff1a;探测⽬标ip及开发端⼝ 2.Web漏洞利⽤&#xff1a; 查找drupal相关漏洞 search drupal # 进⾏漏洞利⽤ use exploit/unix/webapp/drupal_dr…...

Bootstrap5 折叠功能详解

Bootstrap5 折叠功能详解 引言 Bootstrap 是一个流行的前端框架&#xff0c;它提供了许多组件和工具&#xff0c;使得开发者可以轻松构建响应式网站。在 Bootstrap5 中&#xff0c;折叠&#xff08;Collapse&#xff09;组件得到了增强&#xff0c;使其更加灵活和易于使用。本…...

JAVA:Spring Boot 项目中自定义 Banner 的技术指南

1、简述 在 Spring Boot 项目中&#xff0c;当应用启动时会显示默认的 Spring 标志和版本信息。定制化的启动 Banner 不仅可以美化应用&#xff0c;还能在项目中增加个性化的品牌印记&#xff0c;甚至可以提供一些关键信息。本文将介绍如何在 Spring Boot 项目中自定义启动 Ba…...

【虚幻引擎UE】UE4.23到UE5.5的核心功能变化

简单总结从UE4.23到UE5.5&#xff0c;虚幻引擎的重大变化&#xff1a; 1. WebGL/HTML5 平台支持和像素流 UE4.23-UE4.25&#xff1a;移除官方HTML5支持&#xff0c;改为社区插件维护。 但通过第三方插件&#xff08;如WebAssemblyWebGPU&#xff09;可在浏览器运行部分项目。U…...

信号检测和信道均衡的联系

1. 系统模型 假设一个通信系统的数学模型如下&#xff1a; 发送信号&#xff1a; s [ s 1 , s 2 , … , s N ] T \mathbf{s} [s_1, s_2, \dots, s_N]^T s[s1​,s2​,…,sN​]T&#xff0c;其中 s i s_i si​ 是发送符号。信道矩阵&#xff1a; H \mathbf{H} H&#xff08;…...

在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档教程

既然我们已经在本地部署了DeepSeek,肯定希望能够利用本地的模型对自己软件开发、办公文档进行优化使用,接下来就先在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档的教程奉上。 前提: (1)已经部署好了DeepSeek,可以看我的文章:个人windows电脑上安装DeepSe…...

26、深度学习-自学之路-NLP自然语言处理-理解加程序,怎么把现实的词翻译给机器识别。

一、怎么能让机器能够理解我们的语言呢&#xff0c;我们可以利用神经网络干很多的事情&#xff0c;那么我们是不是也可以用神经元做自然语言处理呢&#xff0c;现在很多的实际应用已经说明了这个问题&#xff0c;可以这么做。 那我们考虑一下该怎么做&#xff0c;首先我们应该…...

微信服务号推送消息

这里如果 没有 就需要点新的功能去申请一下 申请成功之后就可以设置模版消息 推送到用户接受的页面是 需要后端调用接口 传递token 发送给客户...

Excel常用操作

Excel常用操作 学习资源 37_电子表格处理考点精讲_设置数据格式_哔哩哔哩_bilibili 快速输入数据与编辑数据 一个工作簿可以包含多个工作表 特殊数据的添加格式 输入负数, 例如-3、-5 常规输入, 直接输入-3、-5;使用(), 例如在单元格中输入(3)回车即可变为-3;上述括号不区分中…...

得物端智能视频封面推荐

一、背景 什么要做智能封面&#xff1f; 用户可以在得物购物&#xff0c;也可以在得物社区分享自己的生活。 得物社区中的视频使用双列流&#xff0c;每条内容包含封面、标题等。 对得物社区的创作者而言&#xff0c;选择视频封面是创作链路的重要环节。对得物社区的消费者…...

【Stable Diffusion部署至GNU/Linux】安装流程

以下是安装Stable Diffusion的步骤,以Ubuntu 22.04 LTS为例子。 显卡与计算架构介绍 CUDA是NVIDIA GPU的专用并行计算架构 技术层级说明CUDA Toolkit提供GPU编译器(nvcc)、数学库(cuBLAS)等开发工具cuDNN深度神经网络加速库(需单独下载)GPU驱动包含CUDA Driver(需与CUDA …...

介绍 Liquibase、Flyway、Talend 和 Apache NiFi:选择适合的工具

在现代软件开发中&#xff0c;尤其是在数据库管理和数据集成方面&#xff0c;选择合适的工具至关重要。本文将介绍四个流行的工具&#xff1a;Liquibase、Flyway、Talend 和 Apache NiFi&#xff0c;分析它们的应用、依赖以及如何选择适合的工具。 1. Liquibase 简介&#xff…...

Unity 接入Tripo 文生模型,图生模型

官方网站&#xff1a;https://www.tripo3d.ai/app/home自行注册账号并且登陆下载Unity插件&#xff1a;https://cdn-web.tripo3d.ai/plugin/tripo-unity.zip申请apikey&#xff1a; https://platform.tripo3d.ai/api-keys使用&#xff08;后续过程就按照第二步下载的插件里面的…...

黑马Redis详细笔记(实战篇---短信登录)

目录 一.短信登录 1.1 导入项目 1.2 Session 实现短信登录 1.3 集群的 Session 共享问题 1.4 基于 Redis 实现共享 Session 登录 一.短信登录 1.1 导入项目 数据库准备 -- 创建用户表 CREATE TABLE user (id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,phone …...

Unity 增量打包AssetBundle

背景 打包太慢了&#xff0c;想要没改动的资源不重新打包浪费时间。 来源 官方文章&#xff1a;https://forum.unity.com/threads/about-incremental-build-and-asset-bundle-hashes.1436032/ 官网AB介绍&#xff1a;https://learn.unity.com/tutorial/assets-resources-and…...

前端 TypeError 错误永久消失术

作者&#xff1a;来自 vivo 互联网大前端团队- Sun Maobin 通过开发 Babel 插件&#xff0c;打包时自动为代码添加 可选链运算符(?.)&#xff0c;从而有效避免 TypeError 的发生。 一、背景介绍 在 JS 中当获取引用对象为空值的属性时&#xff0c;程序会立即终止运行并报错&…...

【视频总结】Deep Dive into LLMs like ChatGPT 深入探索像ChatGPT这样的大语言模型|Andrej Karpathy

【视频总结】Deep Dive into LLMs like ChatGPT 深入探索像ChatGPT这样的大语言模型&#xff5c;Andrej Karpathy 大型语言模型&#xff08;LLM&#xff09;工作原理与使用指南核心观点模型训练三阶段1. 预训练阶段2. 后训练阶段&#xff08;Post-training&#xff09;3. 强化学…...

内网ip网段记录

1.介绍 常见的内网IP段有&#xff1a; A类&#xff1a; 10.0.0.0/8 大型企业内部网络&#xff08;如 AWS、阿里云&#xff09; 10.0.0.0 - 10.255.255.255 B类&#xff1a;172.16.0.0/12 中型企业、学校 172.16.0.0 - 172.31.255.255 C类&#xff1a;192.168.0.0/16 家庭…...

本地部署DeepSeek + AnythingLLM 搭建高效安全的个人知识库

环境准备: 本地部署方案请参考博客:windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)-CSDN博客 windows平台本地部署DeepSeek大模型+Chatbox界面(可以离线使用)-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确…...

Xcode证书密钥导入

证书干嘛用 渠道定期会给xcode证书&#xff0c;用来给ios打包用&#xff0c;证书里面有记录哪些设备可以打包进去。 怎么换证书 先更新密钥 在钥匙串访问中&#xff0c;选择系统。(选登录也行&#xff0c;反正两个都要导入就是了)。 mac中双击所有 .p12 后缀的密钥&#xff…...

机械学习基础-5.分类-数据建模与机械智能课程自留

data modeling and machine intelligence - CLASSIFICATION 为什么我们不将回归技术用于分类&#xff1f;贝叶斯分类器&#xff08;The Bayes Classifier&#xff09;逻辑回归&#xff08;Logistic Regression&#xff09;对逻辑回归的更多直观理解逻辑 /sigmoid 函数的导数我们…...

springcloud集成gateway

本篇文章只介绍gateway模块的搭建步骤&#xff0c;并无gateway详细介绍 gateway详解请查看&#xff1a;SpringCloudGateway官方文档详解 前置处理 父模块中已指定版本 不知道如何选择版本看这篇&#xff1a; 手把手教你梳理springcloud与springboot与springcloudalibaba的版本…...

RocketMQ之偏移量Offset

偏移量&#xff1a;偏移量是 ConsumerQueue 文件中的逻辑位置&#xff0c;表示消息在队列中的顺序。每次消费通过偏移量在索引文件ConsumerQueue中快速找到对应的消息内容。 1.Broker端 Broker端主要通过ConsumerManageProcessor类来处理Offset的更新查询的请求&#xff0c;真…...

2024-2025年主流的开源向量数据库推荐

以下是2024-2025年主流的开源向量数据库推荐&#xff0c;涵盖其核心功能和应用场景&#xff1a; 1. Milvus 特点&#xff1a;专为大规模向量搜索设计&#xff0c;支持万亿级向量数据集的毫秒级搜索&#xff0c;适用于图像搜索、聊天机器人、化学结构搜索等场景。采用无状态架…...

Redis 集群(Cluster)和基础的操作 部署实操篇

三主三从 集群概念 Redis 的哨兵模式&#xff0c;提高了系统的可用性&#xff0c;但是正在用来存储数据的还是 master 和 slave 节点&#xff0c;所有的数据都需要存储在单个 master 和 salve 节点中。 如果数据量很大&#xff0c;接近超出了 master / slave 所在机器的物理内…...

RTD2775QT/RTD2795QT瑞昱显示器芯片方案

RTD2775QT与RTD2795QT&#xff1a;高性能4K显示驱动芯片 RTD2775QT与RTD2795QT是瑞昱半导体公司推出的两款高性能显示驱动芯片&#xff0c;专为满足现代显示设备对高清、高分辨率的需求而设计。这两款芯片不仅支持4K分辨率&#xff0c;还具备丰富的功能和卓越的性能&#xff0…...

Java进阶面试题

Java 进阶面试问题列表翻译自Java developer interview questions: The hard part&#xff0c;从属于笔者的Java入门与工程实践系列。最近公司打算招几个 Java 开发人员&#xff0c;正巧在 Reddit 上看到了该文&#xff0c;顺手翻译了一波。只是单纯的问题列表&#xff0c;可能…...

Spring Cloud-Sentinel

Sentinel服务熔断与限流 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。 官网地址&#xff1a;home | Sentinelhttps://sen…...

21道关于Vue3的面试题及其解析

Vue 3是一种流行的JavaScript框架&#xff0c;它是Vue.js的第三个主要版本&#xff0c;于2020年9月18日正式发布。关于Vue 3的一些关键信息&#xff1a; 文章目录 1. 性能优化2. 组合式API&#xff08;Composition API&#xff09;3. 响应式系统改进4. 更好的TypeScript支持5. …...

使用 Visual Studio Code (VS Code) 开发 Python 图形界面程序

安装Python、VS Code Documentation for Visual Studio Code Python Releases for Windows | Python.org 更新pip >python.exe -m pip install --upgrade pip Requirement already satisfied: pip in c:\users\xxx\appdata\local\programs\python\python312\lib\site-pa…...

深入理解 MyBatis 框架的核心对象:SqlSession

Mybatis框架中的SqlSession对象详解 引言 MyBatis 是一个优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息&#xff0…...

day09_实时类标签/指标

文章目录 day09_实时类标签/指标一、日志数据实时采集2、Flume简介2.3 项目日志数据采集Flume配置2.3.1 涉及的Flume组件和参数2.3.2 Nginx日志采集2.3.3 用户行为日志采集 二、Nginx日志数据统计1、日志格式说明2、数据ETL2.1 日志抽取2.1.1 正则表达式2.1.2 基于Spark实现Ngi…...

AWTK-WEB 快速入门(4) - JS Http 应用程序

XMLHttpRequest 改变了 Web 应用程序与服务器交换数据的方式&#xff0c;fetch 是 XMLHttpRequest 继任者&#xff0c;具有更简洁的语法和更好的 Promise 集成。本文介绍一下如何使用 JS 语言开发 AWTK-WEB 应用程序&#xff0c;并用 fetch 访问远程数据。 用 AWTK Designer 新…...

github不翻墙就可以访问

目录 简介资料准备windows平台设置下载运行git设置firefox设置 ubuntu平台设置下载启动服务设置系统代理git设置firefox设置证书 注意事项 简介 由于github访问不稳定,严重影响了国内软件开发,在网上搜索并验证了一些方法.现在整理出来一个可以正常使用的方法, 在windows和Lin…...