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

Java基础面试题学习

转换成自已的语言来回答,来源小林coding、沉默王二以及其它资源和自已改编。

1、概念

1、说一下Java的特点

我认为Java有很多特点

首先是平台无关性:Java可以实现一次编译到处运行,因为Java的编译器将源代码编译成字节码,使得该字节码可以在任意装有JVM的操作系统上运行。

其次是面向对象的性质:Java是面向对象编程语言,这种OOP的特性使得代码易于维护和重用。主要源于封装继承多态这三大特性。

然后是内存管理方面,Java有自己的垃圾回收机制,自动管理内存和不再使用的对象,无需手动管理,减少内存泄漏等问题。

2、Java为什么是跨平台的?

 这主要源于JVM的关系。

Java源码经过编译后会生成.class字节码文件,然后由JVM进行翻译成机器码使得程序能够正常运行。

而由于不同的平台它操作系统不一样,所以都会有自己对应版本的JVM,而这些JVM都可以将同样的字节码文件在各自平台上运行产生相同的结果。

其实跨平台的是Java程序,不是JVM。是通过JVM这一桥梁来达成一次编译到处运行的特点。

3、JVM、JDK、JRE三者关系?

JDK是开发工具包,它包括了JRE、编译器、调试器、开发工具等。

JRE是Java运行时环境,包括了运行Java的类库和JVM。

JVM是Java虚拟机,负责将字节码转换成机器码进行执行。使Java程序具备跨平台性。

4、为什么Java解释和编译都有?

因为Java先会将原代码进行编译生成字节码文件,这里体现他的编译性了。

而JVM里有解释器,会逐行解释字节码生成机器码到平台运行,这里体现了他的解释性。

所以说Java是编译与解释并存的语言。

 5、编译型语言和解释型语言的区别?

编译性语言:一般的编译型语言会将原代码解析成机器码生成可执行文件再运行,通常速度快但跨平台性差,典型的有C、C++

解释型语言:程序执行时逐行解析代码不生成独立的可执行文件。跨平台性好但速度慢

典型的有python\js

2、数据类型

1、Java有哪些数据类型?

Java数据类型包括基本数据类型和引用数据类型。

基本数据类型有8种:byte\char\short\int\long\double\float\boolean

引用数据类型有3种:数组、类、接口

(浮点数的默认类型是double

整数的默认类型是int

char是无符号的 )

 2、long和int可以互转吗? 

可以互相转换,但是int转为long是安全的,因为long的范围比int大。而long转int是不安全的,是只会剩下截断后的低四字节,需要注意数据范围。

3、 数据类型转换方式你知道哪些

首先包括隐式转换和显示转换,如果目标类型范围大于当前类型则会隐式转换,而范围小于当前类型则需要强制转换,但此处需要注意数据范围,以免数据损失。

然后还有使用方法进行转换,比如Integer的parseInt方法,可以将字符串转为int

4、类型互转会出现什么问题?

 首先目标类型范围小于当前类型则可能会出现数据丢失,会出现截断现象。

而浮点数里double转float则会出现精度损失的问题

还有就是有的类型之间无法转换,比如boolean 类型不能与任何其他基本数据类型直接互转

5、什么是自动装箱和拆箱?

装箱和拆箱发生在包装类和对应的基本数据类型之间。

装箱可以在赋值和方法调用时使用,会自动将基本类型转换成对应的包装类对象。

拆箱则是反过来,将包装类对象转为基本数据类型

本质上装箱是调用了valueOf方法,拆箱是调用了xxxValue方法

(注意除Character\Integer以外,其它均为首字母大写)

6、Integer比int有哪些优点?说说Interger的缓存。

Integer可以在泛型、集合中应用,更加灵活。因为集合和泛型必须要使用引用类型。

而且Java中绝大部分方法或类都是用来处理类类型对象的,所以包装类也是有必要的

Integer有一个静态缓存池,范围在-128-127之间,在调用valueOf方法时会去缓存池拿,不用新建一个对象。

7、switch 语句能否用在 byte/long/String 类型上?

最开始swich语句只能是 byte、short、char、int。

后来加入了枚举和String类型,但是长整型在目前所有的版本中都是不可以的。

8、说说float怎么存小数的?

包括符号位、尾数、指数

尾数 的第一位总是 1,因此这个 1 可以省略不写,它是个隐藏位

指数 表示 float 时,一共占 8 bit,所以它的取值范围为 0 ~ 255。但因为指数可以是负的,所以规定在存入 E 时在它原本的值加上一个中间数 127,这样 E 的取值范围为 -127 ~ 128。

不过这存在数据不精确的可能,可以使用 BigDecimal来精确计算小数

3、面向对象

1、怎么理解面向对象?简单说说封装继承多态

面向对象是一种编程范式,将现实事物抽象为对象进行交互从而完成程序的功能。而它主要有三大特性。

封装:将属性和方法封装在一起,隐藏起来限制访问,通过特定的方法来进行访问,更加安全。

继承:是子类可以共享父类的属性方法,可以更好的实现代码复用

多态:多态允许不同类的对象对同一消息做出响应,但表现出不同的行为,更加灵活。

2、多态解决了什么问题?

多态主要是指子类可以替换父类,而它也实现动态绑定机制,使程序选择调用哪个类的方法推迟到运行时决定,使得编译类型与运行类型不一样,从而更好的实现一些功能

3、重载与重写有什么区别? 

重载:指在一个类中有多个同名方法,但只要他们参数数量、类型、顺序不同就可以根据情况分别调用

重写:指子类可以重新定义父类的方法、但方法名、参数列表、返回类型必须一致

4、面向对象的设计原则了解哪些?

开放封闭原则:

接口隔离原则:

单一

5、抽象类和普通类的区别?

  1. 普通类可以实例化,但抽象类不能实例化
  2. 普通类没有抽象方法,而抽象类可以有抽象方法
  3.  普通类一般继承其它的类,而抽象类一般用作基类

6、抽象类和接口的区别是什么? 

1、一个类只能继承一个抽象类,但却可以实现多个接口。

2、一般情况下接口只有方法的定义没有实现且没有构造方法(1.8可以用default、static)而抽象类可以有定义和实现

3、接口的成员变量是public static final 的,只有静态常量。且所有方法都是public abstract。

抽象类中的成员变量可以在子类 中重新定义和赋值,但若有抽象方法则private、static等修饰。

7、 抽象类可以有构造方法吗?接口呢?

抽象类可以有构造方法,虽然抽象类不能实例化,但他的构造方法会在子类实现的时候调用进行初始化,是由子类间接调用构造方法。

而接口不能有构造方法,因为接口里的变量无需再次初始化,因为他们本身就是必须赋初值的。

 8、说说static关键字

static可以修饰变量和方法成为静态变量和静态方法。

静态变量只属于类不属于任何对象,只在类被加载时分配一次内存,但所有的类对象都可以访问,也可以通过类名访问。

静态方法也是只属于类,但不能调用非静态成员,只能使用静态变量和方法。也可以通过类名访问。

9、说说静态内部类和非静态内部类

  1.  静态内部类不依赖于外部类,但非静态内部类依赖于外部类

  2. 静态内部类只能访问外部类的静态成员,但非静态内部类都可以访问

  3. 静态内部类可以定义静态成员,但非静态内部类不可以

 10、说说final关键字

 当 final 修饰一个类时,表明这个类不能被继承,比如String类

当 final 修饰一个方法时,表明这个方法不能被重写

当 final 修饰一个变量时,表明这个变量的值一旦被初始化就不能被修改。如果是基本类型则值不能变,如果是引用类型则其不能指向其它对象,但指向的内容可以更改

 11、非静态内部类可以直接访问外部方法,编译器是怎么做到的?

编译器会在生成内部类实例的时候为他维护一个指向外部类实例的引用,从而能实现直接访问外部类的功能

12、 说说浅拷贝和深拷贝,以及如何实现深拷贝?(后期补充

浅拷贝是指只复制对象本身和其内部的值类型字段,但不会复制对象内部的引用类型字段。

深拷贝是指在复制对象的同时,将对象内部的所有引用类型字段的内容也复制一份,而不是共享引用。

Java里非手动(new 一个再赋值)实现深拷贝可以有两种方式
1、重写Cloneable的克隆方法,引用类型的变量也重新克隆一块地址来存放

2、使用序列化和反序列化,

13、说一说泛型

泛型允许类、接口和方法在定义时使用一些类型参数,这些类型参数在使用时可以被指定为具体的类型。使用泛型可以实现多种不同的数据结构实现相同的代码,并限制了类型避免了强制转换出现异常的情况

14、Java创建对象有哪些方式?(后期完成

1、new关键字,调用构造方法创建

2、如果该类实现了Cloneable接口则可以使用clone方法

3、使用反射,使用newInstance方法可以创建

4、序列化和反序列化

15、什么是反射?

 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性。

16、==与equals的区别?

==比较的是值,基本类型即为栈中的值,对象比的是指向的是否为同一对象

equals()方法比较的是对象的内容,但默认情况与==一样,只有重写该方法才行,比如String类

17、为什么重写equals时一定要重写hashCode?

因为在使用哈希表类数据结构(HashMap等)时时会使用hashcode来判断两个对象是否相等,hashcode判断的依据是两个对象是否放在同一个位置,这违背了我们的需求,我们只想根据里面的内容来判断相等,所以还需要重写hashcode方法才行

18、new子类时,子类和父类静态代码块、构造方法执行顺序?

  1. 首先执行父类的静态代码块(仅在类第一次加载时执行)。
  2. 接着执行子类的静态代码块(仅在类第一次加载时执行)。
  3. 再执行父类的构造方法。
  4. 最后执行子类的构造方法。

19、String有哪些常用方法?

  1. length() - 返回字符串的长度。
  2. charAt(int index) - 返回指定位置的字符。
  3. substring(int beginIndex, int endIndex) - 返回字符串的一个子串,从 beginIndex 到 endIndex-1
  4. contains(CharSequence s) - 检查字符串是否包含指定的字符序列。
  5. equals(Object anotherObject) - 比较两个字符串的内容是否相等。
  6. indexOf(int ch) 和 indexOf(String str) - 返回指定字符或字符串首次出现的位置。
  7. replace(char oldChar, char newChar) 和 replace(CharSequence target, CharSequence replacement) - 替换字符串中的字符或字符序列。
  8. trim() - 去除字符串两端的空白字符。
  9. split(String regex) - 根据给定正则表达式的匹配拆分此字符串。

20、String\StingBuffer\StringBuilder有什么区别,分别介绍一些?

 String的对象是不可变的,实际上每次String对象进行修改操作都会创建一个新的对象。

StringBuilder对字符串的操作是在原本基础上修改的,不会创建大量对象

StringBuffer在StringBuilder的基础上实现了线程安全,使用synchronized关键字适用于多线程环境

21、String str1 = new String("abc") 和 String str2 = "abc" 的区别?

直接使用双引号为字符串变量赋值时,会检查字符串常量池中是否已经存在相同内容的字符串。如果存在,Java 就会让变量引用池中的那个字符串;如果不存在,它会创建一个新的字符串,放入池中,并让变量引用它。

如果使用new的话跟上述步骤一样,但是不会指向常量池中的对象,而是在堆中新建一个副本让变量指向它。

22、String s = new String("abc")创建了几个对象?

如果常量池中存在该字符串则只会在堆中创建一个对象,否则会现在常量池中创建再在堆中创建。

23、String 是不可变类吗?(追问:是的话是如何实现的?)字符串拼接是如何实现的?

是不可变类,因为字符串对象使用非常频繁,尤其是在网络传输中,这样会保证更加的安全。易于重用,而且通过常量池的方式还能减少内存的开销。

实现原理是String类里有final数组来存放字符串,本身类也是final不可被继承修改,而且提供的方法对字符串操作都不会修改源字符串,会新建一个返回。

字符串拼接使用+就行,编译的时候把“+”号操作符替换成了 StringBuilder 的 append() 方法,新建一个StringBuilder对象并toString返回新String对象

24、intern方法有什么作用?

 如果当前字符串内容存在于常量池则返回常量池里的对象的引用,如果常量池没有,则将堆中该字符串对象的引用放入常量池,并返回该引用

能减少内存开销,创建的字符串无需很多

 25、说说异常

Throwable 是 Java 语言中所有错误和异常的基类。它有两个主要的子类:Error 和 Exception,这两个类分别代表了 Java 异常处理体系中的两个分支。

Error:意味程序出现了严重的问题,不应该由异常处理机制来处理,程序应该崩溃掉。

如Stackoverflow\outofmemory等

Exception:程序出现了在可控范围内的异常,可以人为处理解决

26、说说检查型异常和非检查型异常

检查型异常:由编译器检查的异常,程序员必须显式处理或声明这些异常,不处理的话编译器将报错。如文件不存在、类未找到等

非检查型异常: 运行时由程序错误导致,不需要在编译强制捕获或声明,程序员可以选择处理这些异常,它们通常为Runtimeexception及其子类、如空指针异常等

27、异常的处理方式?

 遇到异常时可以不处理,直接通过throw 和 throws 抛出异常,交给上层调用者处理。

throws 关键字用于声明可能会抛出的异常,而 throw 关键字用于抛出异常。

第二种是使用 try-catch 捕获异常,处理异常

28、 什么是序列化和反序列化?

序列化是将对象转换为字节流的过程,以便能够保存到数据库或文件中

反序列化是将字节流转换为对象的过程。

实现Serializable接口可以被序列化

29、什么是反射?原理是什么?

 在运行时,能够知道任意一个类的所有属性和方法,对于任意一个对象都可以调用他的任意一个方法和属性。        

Java 程序的执行分为编译和运行两步,编译之后会生成字节码(.class)文件,JVM 进行类加载的时候,会加载字节码文件,将类型相关的所有信息加载进方法区,反射就是去获取这些信息,然后进行各种操作。

30、什么是注解?

注解本质上是一个标记,可以标在类方法属性上,通过识别这些标记可以进行其它的操作

注解生命周期有三大类,分别是:

  • RetentionPolicy.SOURCE:给编译器用的,不会写入 class 文件
  • RetentionPolicy.CLASS:会写入 class 文件,在类加载阶段丢弃,也就是运行的时候就没这个信息了
  • RetentionPolicy.RUNTIME:会写入 class 文件,永久保存,可以通过反射获取注解信息

 31、Jdk1.8新特性

Java 8 允许在接口中添加默认方法和静态方法。

还有 Lambda 表达式描述了一个代码块(或者叫匿名方法),可以将其作为参数传递给构造方法或者普通方法以便后续执行

还提供了Stream流,方便我们进行一些操作

32、多态的底层原理说说?

多态最主要的实现就是向下转型,原理是jvm会为每个对象在方法区建立一个方法表,方法表的表项存放的是方法的地址。如果子类重写了父类的方法则地址为子类方法的地址,如果未重写 则放的是父类该方法的地址,也就是把父类的同名方法地址copy过来

相关文章:

Java基础面试题学习

转换成自已的语言来回答,来源小林coding、沉默王二以及其它资源和自已改编。 1、概念 1、说一下Java的特点 我认为Java有很多特点 首先是平台无关性:Java可以实现一次编译到处运行,因为Java的编译器将源代码编译成字节码,使得该…...

# [RPA] 使用八爪鱼进行高效网页数据采集

在许多行业中,数据是核心资产。然而,虽然许多网站的文本内容可以免费访问,但手动一条一条采集,不仅耗时耗力,还容易出错。这种情况下,使用自动化工具来提高采集效率就显得尤为重要。本文将介绍 八爪鱼 这一…...

【工具变量】全国地级市地方ZF债务数据集(2014-2023年)

地方ZF债务是地方财政运作的重要组成部分,主要用于基础设施建设、公共服务及经济发展,是衡量地方财政健康状况的重要指标。近年来,我国地级市的地方ZF债务规模不断变化,涉及一般债务和专项债务等多个方面,对金融市场、…...

6.5840 Lab 3: Raft

论文很重要 raft-zh_cn/raft-zh_cn.md at master maemual/raft-zh_cn GitHub Part 3A: leader election (moderate) 十次test都过了 实现 Raft 的领导者选举和心跳机制(AppendEntries RPC,无日志条目)。第 3A 部分的目标是实现以下功能&am…...

DCDC36V同步降压 输出可调 2A电流恒压芯片SL1588H 替换LV3842

在当今电子设备飞速发展的时代,电源管理芯片的性能优劣直接关乎设备的稳定性与高效运行。对于诸多需要将 36V 电压进行同步降压、输出电压可调且稳定输出 2A 电流的应用场景,一款卓越的恒压芯片不可或缺。SL1588H 正凭借其领先的技术和出色的性能&#x…...

AH4953A双PMOS管深度解析:无线充系统的“高效开关”设计实践

AH4953 30v5A双PMOS管深度解析:无线充系统的“高效开关”设计实践 1. 产品定位与基础特性 AH4953A双通道P沟道MOSFET,专为无线充电、电源管理等高频开关场景优化。其核心优势体现在: • 高耐压低损耗:30V漏源电压(Vd…...

图数据库Neo4j和JDK安装与配置教程(超详细)

目录 前言 一、Java环境配置 (一)JDK的下载与安装 (二)JDK环境配置 (三)检测JDK17是否配置成功 二、Neo4j的安装与配置 (一)Neo4j的下载与安装 (二)N…...

现代美学工业风品牌海报徽标设计PSAI无衬线英文字体安装包 Moldin – Condensed Sans Serif Font

现代几何工业风品牌海报徽标设计无衬线英文字体安装包 Moldin — Condensed Sans Serif Font Moldin 是一个粗体浓缩的无衬线字体系列,旨在为显示和标题提供最大的影响。Moldin 有 6 种粗细可供选择,从常规到黑色,提供静态和可变格式&#x…...

Excel(函数进阶篇):FILTER函数全解读、XLOOKUP函数全解读、UNIQUE函数、数组与数组公式

目录 数组与数组函数office365中VLOOKUP函数的加强数组中的多条件判断FILTER函数详解用法概述函数语法 基础筛选多条件筛选进阶技巧结合动态数组 高级函数整合错误处理注意事项FILTER经典问题:一对多查询 XLOOKUP函数XLOOKUP基础用法XLOOKUP函数多条件匹配和双向查询…...

django入门教程之request和reponse【二】

接上节:入门【一】 再创建一个orders子应用,python manager.py startapp orders,orders目录中新建一个urls.py文件。结构如图: 通过上节课,我们知道在views.py文件中编写函数时,有一个默认入参request&…...

第十五次CCF-CSP认证(含C++源码)

第十五次CCF-CSP认证 小明上学满分思路 数据中心满分思路 小明放学满分题解 小明上学 题目链接 满分思路 其实题目看着长,但是做起来是非常好写的,其实主要原因在于,他的红绿灯的变化规律是一定的,而且小明路上的每次红绿灯情况…...

Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框

单元格边框是指在单元格或单元格区域周围添加的线条。它们可用于不同的目的,如分隔工作表中的部分、吸引读者注意重要的单元格或使工作表看起来更美观。本文将介绍如何使用 Spire.XLS for .NET 在 C# 中添加或删除 Excel 单元格边框。 安装 Spire.XLS for .NET E-…...

混合精度-基于torch内部

定义 混合精度训练是一种在深度学习模型训练过程中,同时使用不同精度数据类型(主要是单精度 FP32 和半精度 FP16)来进行计算和存储的技术。以下是具体介绍: 数据类型: 单精度(FP32)&#xff1…...

Ubuntu16.04网卡ens33找不到异常修复

重启网络 systemctl stop NetworkManager systemctl restart networking允许网络可用 连接网络 验证网络...

C++编译流程

编译器其实就是一个翻译器,把我们的文件内容翻译成机器能够看懂的指令,但如何合理翻译是核心。 C语言编译 需要经过以下几步: 词法分析:扫描代码,确定单词类型,比如是变量还是函数,是标识符还…...

人工智能:企业RAG方案

一、LangChain FAISS、Milvus / Weaviate介绍 在企业 RAG (Retrieval-Augmented Generation)方案中,LangChain FAISS 和 Milvus / Weaviate 都是用于向量检索(Vector Search)的核心工具。两者的核心区别在于 存储方…...

【Git流程最佳实践】 开发较大功能时应使用project branch

目录 背景和失败经验名词定义曾经使用project branch犯的错 建立project branch的必要性正确的使用project branch的方法 背景和失败经验 我们曾经使用过project branch,但是后来放弃了 名词定义 特性branch(特性分支): 在开发跨越新特性的时候会从主…...

线程的概念

目录 线程的概念 创建线程快速验证 物理内存管理 再谈页表 今天我们学习线程的概念 线程的概念 进程是一个指向起来的程序,进程内核数据结构代码和数据,线程称为指向流,执行粒度比进程要更细,是进程内部的一个执行分支&…...

firefly经典蓝牙和QProcess、QFileSystemWatcher记录

QProcess 默认不会启动一个 shell 来解析命令,而是直接调用操作系统的系统调用来启动外部程序。也就是通过fork一个子线程或者exec一个子进程来执行命令。 QProcess的参数模式 QProcess 需要明确指定命令的可执行文件路径或参数列表。 如果命令是一个可执行文件的路径…...

北斗设备启动流程与时长解析

北斗卫星导航系统作为我国自主研发的全球卫星导航系统,广泛应用于交通、通信、农业等多个领域。今天,我们就来详细探讨一下北斗设备的启动流程以及不同启动方式下的时长。 一、北斗设备的启动流程 北斗设备的启动流程可以分为以下几个关键步骤&#xf…...

PyTorch分布式训练中各节点如何通信

深度学习 文章目录 深度学习前言pytorch如何初始化分布式训练怎么知道要使用哪几台机器进行训练的如何根据标识进行初始化(init_method)如何获取进程的唯一标识rank如何实现数据如何分发 前言 同学们在处理分布式训练时经常会遇到以下几个疑问&#xff…...

又双叒叕Scrapy爬虫相关的面试题及详细解答

Scrapy是Python开发的一个快速、高层次的网络爬虫框架,专注于高效抓取网页并提取结构化数据。其核心设计基于异步处理机制,适合大规模数据采集任务。 文章目录 基础概念1. Scrapy框架的核心组件有哪些?架构与流程2. 描述Scrapy的工作流程核心组件详解3. 如何自定义Item Pipe…...

Docker与K8S是什么该怎么选?

用了很久的容器化,最近突然看到一个问题问: docker和K8S究竟有什么区别,到底该怎么选?我认真思考了一会,发现一时间还真说不明白,于是就研究了一段时间发布今天的博文! Docker vs Kubernetes&a…...

FPGA中串行执行方式之计数器控制

FPGA中串行执行方式之计数器控制 使用计数器控制的方式实现状态机是一种简单且直观的方法。它通过计数器的值来控制状态的变化,从而实现顺序逻辑。计数器的方式特别适合状态较少且状态转移是固定的场景。 基本原理 计数器控制的状态机 ​例程1:简单的顺序状态机 以下是一个…...

尝试使用tauri2+Django+React的项目

前言 使用Tauri2前端,本质是进程间的通信。并非前后端。 而想使用nw,先后端打包exe,再和前端打包成exe,并没有完成成功。 而笔者从Tauri中看到这种可能性。很有可能成功基于SeaORMMySQLTauri2ViteReact等的CRUD交互项目-CSDN博…...

用@keyframes-animation来实现动画效果

一、使用规则 keyframes 用于定义动画的关键帧。 animation属性 用于将keyframes动画用于元素上。 二、基本语法 keyframes keyframes xuanZhuan { /*xuanZhuan是动画名字,实现旋转*/0%{transform: rotate(0deg);}50%{transform: rotate(180deg);}100%{transform: rotate(…...

kernel中外部传递参数使用方法

在 Linux 内核模块开发中,module_param(rpc_tdebug, uint, 0600); 表示定义一个可通过外部传递参数进行配置的模块级变量,具体解析如下: ‌参数名称‌ rpc_tdebug 是模块参数的变量名,该变量需在代码中提前声明为静态全局变量&…...

AI赋能流域生态评估:从多源数据融合到服务价值预测的技术突破

流域生态系统服务评价是生态学与地理信息科学的交叉前沿,传统方法受限于数据碎片化与模型解释力不足。本文以‌随机森林-时空图卷积联合模型(RF-STGCN)‌为核心,结合2022年长江中游实际监测数据,详解AI技术在服务评价中…...

SZU软件工程大学生涯 2022~2026

用于个人面试前自我介绍,防止忘记或谈吐不流利。 面试官您好,我是来自深圳大学计算机与软件学院的软件工程专业的王雅贤。在校期间,我修读了程序设计基础、面向对象程序设计、数据结构、算法分析与设计、操作系统等核心课程,系统…...

如何设计一个合理的库存系统

库存管理系统是电商、供应链管理、仓储管理等核心系统之一。一个合理的库存系统需要同时满足高并发、数据一致性、实时性、扩展性等要求,以确保在各种业务场景下都能稳定运行。 本文将探讨如何设计一个合理的库存系统,包括库存模型设计、数据一致性策略…...

数据人的进阶之路:四年数仓实践与成长思考

前言 在数据仓库开发的过程中,常常会遇到很多值得思考的问题,它们不仅关乎技术的深度,也涉及业务理解、个人的成长,甚至是数据行业未来的价值。回顾过去的经历,有很多问题反复出现,甚至成为绕不开的课题&am…...

数据库原理及应用mysql版陈业斌实验一

🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 实验一:数据库与数据表的定义和数据操作 1.实验数据如下 …...

Linux环境变量:深入解析与实用指南

目录 一、环境变量概述 二、环境变量的作用 三、环境变量的类型 3.1系统环境变量 3.2用户环境变量 四、环境变量的操作 4.1查看环境变量 4.2设置环境变量 4.3删除环境变量 五、环境变量的配置文件 六、环境变量的最佳实践 七、总结 环境变量是Linux系统中至关重要的…...

大数据 Spark 技术简介

Apache Spark 是一种快速、通用、可扩展的大数据处理引擎,最初由加州大学伯克利分校开发。它提供了一种高效的数据处理框架,可以处理大规模数据集,并在分布式计算集群上进行并行处理。 Apache Spark 的基本概念包括以下几个要点:…...

Go语言的基础类型

一基础数据类型 一、布尔型(Bool) 定义:表示逻辑真 / 假,仅有两个值:true 和 false内存占用:1 字节使用场景:条件判断、逻辑运算 二、数值型(Numeric) 1. 整数类型&…...

面试复习-基础网络+运维知识

一、TCP/IP模型及每层对应通信协议 1.1第一层-应用层 作用:服务及应用程序 HTTP --- 超文本传输协议--- 获取网页信息---80(TCP 80) HTTPS --- HTTP SSL(安全传输协议)/TLS ---443(TCP 443) …...

大屏设计新纪元:定制视觉盛宴

当城市天际线的巨型LED幕墙与元宇宙中的虚拟场景无缝交织,当博物馆的数字藏品在8K曲面屏上焕发新生,一个属于大屏设计的全新纪元已悄然降临。这场视觉革命不仅重构了信息传播的维度,更将“定制化体验”推向了前所未有的高度——每一寸屏幕都成…...

JavaIO流的使用和修饰器模式(直击心灵版)

系列文章目录 JavaIO流的使用和修饰器模式 文章目录 系列文章目录前言一、字节流: 1.FileInputStream(读取文件)2.FileOutputStream(写入文件) 二、字符流: 1..基础字符流:2.处理流:3.对象处理流:4.转换流: 三、修饰器…...

10-STL、位运算、常用函数库

1-STL vector vector是变长数组 //定义vector vector<int>a;//第一维长233&#xff0c;第二维长度动态变化 vector<int>b[233];//自定义的结构体类型也可以保存在vector中 struct res{...}; vector<rec>c;//函数 a.size();//返回vector的实际长度&#xf…...

【Ratis】Ratis Streaming概览

看了Tsz-Wo Nicholas Sze博士的一个关于Ratis的share,在share里提到了raits做的一个性能优化:客户端流。比较感兴趣,特此记录一下。如果想看原始分享的,可以搜关键词:Apache Ratis - A High Performance Raft Library 关于Ratis Stream的pdf介绍,在这个PR的附件里: [Ra…...

Python Seaborn面试题及参考答案

目录 如何用 stripplot () 绘制带随机偏移的分类散点图?如何控制 jitter 参数? swarmplot () 如何避免散点重叠?适用场景与数据量限制是什么? 使用 catplot () 绘制箱线图时,如何通过 kind 参数切换图表类型? 如何通过 hue 参数在分类图中添加第三个维度(如性别)? …...

linux下基本命令和扩展命令(安装和登录命令、文件处理命令、系统管理相关命令、网络操作命令、系统安全相关命令、其他命令)欢迎补充噢

基本命令 ls: 列出目录内容 ls&#xff1a;列出当前目录内容ls -l&#xff1a;以长格式列出&#xff08;显示详细信息&#xff09;ls -a&#xff1a;显示隐藏文件ls -lh&#xff1a;以易读格式显示文件大小 pwd: 显示当前工作目录 pwd&#xff1a;显示当前目录的绝对路径 cd:…...

K8S学习之基础四十:K8S配置altermanager发送告警到钉钉群

配置altermanager发送告警到钉钉群 ​ 创建钉钉群&#xff0c;设置机器人助手(必须是管理员才能设置)&#xff0c;获取webhook webhook&#xff1a; https://oapi.dingtalk.com/robot/send?access_token25bed933a52d69f192347b5be4b2193bc0b257a6d9ae68d81619e3ae3d93f7c6…...

实用工具--OfficeAI 助手 v0.3.20(长期免费,2025-03-18 本地支持WPSWord联动)

软件简介 OfficeAI助手&#xff0c;作为Microsoft Office与WPS的得力智能插件&#xff0c;集文档自动生成、内容精准校对与润色、公式智能推荐等多功能于一体。它凭借强大的数据分析能力&#xff0c;深度融入Office/WPS办公生态&#xff0c;一键简化复杂流程&#xff0c;让办公…...

Android 关于compose的一些坑和理解

** 1.如何在 WindowManager.addView 中使用 Jetpack Compose** 一、引出问题 Android 开发中&#xff0c;很常见的一个场景&#xff0c;通过 WindowManager.addView() 添加一个 View 到屏幕上。Android 最新的视图框架 Jetpack Compose&#xff0c;如何应用进来。这个被添加的…...

ref setState 合成事件

ref & setState & 合成事件 受控组件的概念&#xff1a;数据改变视图的叫受控组件&#xff1b;通过dom操作改变的叫非受控。 语法&#xff1a;给refxxx赋一个值&#xff0c;然后通过this.refs.xxx就可以获取到相应dom元素&#xff0c;通过你这个名字存储的值就是这个do…...

调用feapder作为子程序时setting.py文件不起作用

feaper 官方文档地址&#xff1a; 简介及安装 - feapder官方文档|feapder-document 问题&#xff1a; 在最近的开发中需要调用feapder作为主程序调用的子程序时发现自动入库时无法入库&#xff0c;通过查看日志信息发现连接数据库时被拒绝连接了&#xff0c;但是我的setting.p…...

gralloc1_perform具体在干什么

gralloc1_perform 会在特定场景下通过 ioctl 调用&#xff0c;执行 缓存 (cache) 管理 和 内存映射 操作&#xff0c;确保 CPU 和 GPU 之间的数据一致性。 &#x1f4cc; 为什么需要对 cache 进行操作&#xff1f; 在 Android 系统中&#xff0c;CPU 和 GPU 通常共享 DDR 内存…...

【Pandas】pandas Series plot.barh

Pandas2.2 Series Plotting 方法描述Series.plot([kind, ax, figsize, …])用于绘制 Series 对象的数据可视化图表Series.plot.area([x, y, stacked])用于绘制堆叠面积图&#xff08;Stacked Area Plot&#xff09;Series.plot.bar([x, y])用于绘制垂直条形图&#xff08;Ver…...

机器学习之浅层神经网络

文章目录 一、浅层神经网络概述&#xff08;一&#xff09;定义&#xff08;二&#xff09;常见类型 二、浅层神经网络的前向传播三、浅层神经网络的反向传播四、编写浅层神经网络案例&#xff08;Python NumPy 实现&#xff09;代码解释 五、浅层神经网络与深度学习的区别&am…...