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

JAVA八股、JAVA面经

还有三天面一个JAVA软件开发岗,之前完全没学过JAVA,整理一些面经......

大佬整理的:Java面试必备八股文_-半度的博客-CSDN博客

另JAVA学习资料:Java | CS-Notes

  • Java 基础
  • Java 容器
  • Java 并发
  • Java 虚拟机
  • Java IO

目录

int和Integer的区别

包装类及其作用

HashMap

Java HashMap 常用方法如下表

HashMap为什么线程不安全?如何保障HashMap线程安全?

Key为什么不重复?哈希冲突...

JVM(Java虚拟机)运行时数据区怎么分?

JMM(Java内存模型)

1.什么是JMM?

2.JMM的三大特性:原子性、可见性、有序性

3.关于同步的规定

4.解释说明

JMM中的八种操作

Java有哪些锁?syn底层是什么?

Synchronized 同步锁 


JVM、JRE和JDK的关系

  • JVM,Java虚拟机(Java Virtual Machine),Java程序需要运行在虚拟机上,不同的平台都有自己的虚拟机,所以Java语言实现了跨平台。
  • JRE,Java运行环境(Java Runtime Environment),指的是Java的运行时环境,包括需要的大量的类库和Java的虚拟机。
  • JDK,Java开发工具包(Java Development Kit),提供了Java的开发环境和运行环境。

int和Integer的区别

1、数据类型不同:int 是基础数据类型,而 Integer 是包装数据类型;
2、默认值不同:int 的默认值是 0,而 Integer 的默认值是 null;
3、内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer 实际存储的是对象引用,当 new 一个 Integer 时实际上是生成一个指针指向此对象;
4、实例化方式不同:Integer 必须实例化才可以使用,而 int 不需要;
5、变量的比较方式不同:int 可以使用 == 来对比两个变量是否相等,而 Integer 一定要使用 equals 来比较两个变量是否相等。
来源:Java基础 - Integer和int的区别_程序员老石的博客-CSDN博客_integer和int的区别

包装类及其作用

因为Java 的设计理念是一切皆是对象,在很多情况下,需要以对象的形式操作,比如 hashCode() 获取哈希值,或者 getClass() 获取类等。

包装类的作用:在 Java 中每个基本数据类型都对应了一个包装类,包装类的存在解决了基本数据类型无法做到的事情泛型类型参数、序列化、类型转换、高频区间数据缓存等问题

Java基本数据类型包装类型
4 种整型byte: 占用1个字节,取值范围-128 ~ 127Byte
short: 占用2个字节,取值范围-215 ~ 215-1Short
int:占用4个字节,取值范围-231 ~ 231-1Integer
long:占用8个字节Long
2 种浮点类型float:占用4个字节Float
double:占用8个字节Double
字符类型char: 占用2个字节Character
真假类型boolean:占用大小根据实现虚拟机不同有所差异Boolean

引用数据类型:String 类 接口 抽象类 枚举 数组

HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

HashMap 是无序的,即不会记录插入的顺序。

HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。

HashMap 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

HashMap 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.HashMap; // 引入 HashMap 类

以下实例我们创建一个 HashMap 对象 Sites, 整型(Integer)的 key 和字符串(String)类型的 value:

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

Java HashMap 常用方法如下表

更多语法见:Java HashMap | 菜鸟教程

方法描述
clear()删除 hashMap 中的所有键/值对
clone()复制一份 hashMap
isEmpty()判断 hashMap 是否为空
size()计算 hashMap 中键/值对的数量
put()将键/值对添加到 hashMap 中
putAll()将所有键/值对添加到 hashMap 中
putIfAbsent()如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。
remove()删除 hashMap 中指定键 key 的映射关系
containsKey()检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsValue()检查 hashMap 中是否存在指定的 value 对应的映射关系。
replace()替换 hashMap 中是指定的 key 对应的 value。
replaceAll()将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。
get()获取指定 key 对应对 value
getOrDefault()获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值
forEach()对 hashMap 中的每个映射执行指定的操作。
entrySet()返回 hashMap 中所有映射项的集合集合视图。
keySet()返回 hashMap 中所有 key 组成的集合视图。
values()返回 hashMap 中存在的所有 value 值。
merge()添加键值对到 hashMap 中
compute()对 hashMap 中指定 key 的值进行重新计算
computeIfAbsent()对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中
computeIfPresent()对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。

HashMap为什么线程不安全?如何保障HashMap线程安全?

Hashmap如何保证线程安全_马腾.♔的博客-CSDN博客_hashmap如何保证线程安全

在JDK1.7中,HashMap采用头插法插入元素,因此并发情况下会导致环形链表,产生死循环。
虽然JDK1.8采用了尾插法解决了这个问题,但是并发下的put操作也会使前一个key被后一个key覆盖。
由于HashMap有扩容机制存在,也存在A线程进行扩容后,B线程执行get方法出现失误的情况。

(扩容容量必须是 2 的幂次方、最大容量为 1<< 30 、若当前数据/总数据容量>加载因子,Hashmap将执行扩容操作,默认加载因子为0.75)

线程安全Map的三种方法:

Key为什么不重复?哈希冲突...

引入哈希表的目的是使查找和处理一个数时(不经过比较)让时间复杂度保持在O(1),这样就是为了加快查询效率,这里我们需要了解有关如何设计哈希函数以及尽可能地避免哈希冲突的方法。

JVM(Java虚拟机)运行时数据区怎么分?

JVM: Java Virtual Machine(Java虚拟机),是用来执行Java字节码(二进制的形式)的虚拟机计算机。JVM是运行在操作系统之上的,与硬件没有任何关系。

JVM - 运行时数据区详细篇_星辰与晨曦的博客-CSDN博客

JVM——运行时数据区域_喵喵超牛的博客-CSDN博客_jvm运行时数据区

如上图,运行时数据区包括五个部分,蓝色区域多个线程共享,黄色区域每一个线程独占,在java API ,一个java虚拟机就对应一个Runtime类,一个Runtime就对应一个运行时数据区。

  • 程序计数器(Program Counter Register):程序计数器是一块较小的内存空间,可以把它看作是当前线程所执行的字节码的行号指示器。
  • Java虚拟机栈(Java Virtual Machine Stack):描述的是Java方法执行的内存模式,每个方法在执行的同时都会创建一个线帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息,每个方法从调用直至执行完成的过程,都对应着一个线帧在虚拟机栈中入栈到出栈的过程。
  • 本地方法栈(Native Method Stack):与虚拟机栈的作用一样,只不过虚拟机栈是服务于Java方法的,而本地方法栈是为虚拟机调用Native(本地)方法服务的。
  • Java堆(Java Heap):是Java虚拟机中内存最大的一块,是被所有线程所共享的,在虚拟机启动的时候就创建好了,Java堆唯一的目的就是存放对象的实例,几乎所有的对象实例都是在这里分配内存的。
  • 方法区(Method Area)(也叫元空间):方法区就是用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数。方法区是很重要的系统资源,是硬盘和CPU的中间桥梁,承载着操作系统和应用程序的实时运行。

(栈是运行时的单位,堆是存储时的单位)

JMM(Java内存模型)

JMM(Java内存模型)详解_加油进大厂的博客-CSDN博客_jmm

1.什么是JMM?

JMM 是Java内存模型( Java Memory Model)。它本身只是一个抽象的概念,并不真实存在,它描述的是一种规则或规范,是和多线程相关的一组规范。通过这组规范,定义了程序中对各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。每个JVM 的实现都要遵守这样的规范,有了JMM规范的保障,并发程序运行在不同的虚拟机上时,得到的程序结果才是安全可靠可信赖的。如果没有JMM 内存模型来规范,就可能会出现,经过不同 JVM 翻译之后,运行的结果不相同也不正确的情况。

计算机在执行程序时,每条指令都是在CPU中执行的。而执行指令的过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程,跟CPU执行指令的速度比起来要慢的多(硬盘 < 内存 <缓存cache < CPU)。因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存当中,那么CPU进行计算时,就可以直接从它的高速缓存中读取数据或向其写入数据了。当运算结束之后,再将高速缓存中的数据刷新到主存当中。

JMM 抽象出主存储器(Main Memory)和工作存储器(Working Memory)两种。

  • 主存储器是实例对象所在的区域,所有的实例都存在于主存储器内。比如,实例所拥有的字段即位于主存储器内,主存储器是所有的线程所共享的。
  • 工作存储器是线程所拥有的作业区,每个线程都有其专用的工作存储器。工作存储器存有主存储器中必要部分的拷贝,称之为工作拷贝(Working Copy)。

所以,线程无法直接对主内存进行操作,此外,线程A想要和线程B通信,只能通过主存进行。

2.JMM的三大特性:原子性、可见性、有序性

1.原子性
一个或多个操作,要么全部执行,要么全部不执行(执行的过程中是不会被任何因素打断的)。

2.可见性
只要有一个线程对共享变量的值做了修改,其他线程都将马上收到通知,立即获得最新值。

3.有序性
有序性可以总结为:在本线程内观察,所有的操作都是有序的;而在一个线程内观察另一个线程,所有操作都是无序的。前半句指 as-if-serial 语义:线程内似表现为串行,后半句是指:“指令重排序现象”和“工作内存与主内存同步延迟现象”。处理器为了提高程序的运行效率,提高并行效率,可能会对代码进行优化。编译器认为,重排序后的代码执行效率更优。这样一来,代码的执行顺序就未必是编写代码时候的顺序了,在多线程的情况下就可能会出错。

在代码顺序结构中,我们可以直观的指定代码的执行顺序, 即从上到下按序执行。但编译器和CPU处理器会根据自己的决策,对代码的执行顺序进行重新排序,优化指令的执行顺序,提升程序的性能和执行速度,使语句执行顺序发生改变,出现重排序,但最终结果看起来没什么变化(在单线程情况下)。

有序性问题 指的是在多线程的环境下,由于执行语句重排序后,重排序的这一部分没有一起执行完,就切换到了其它线程,导致计算结果与预期不符的问题。这就是编译器的编译优化给并发编程带来的程序有序性问题。

Java 语言提供了 volatile 和 synchronized 两个关键字来保证线程之间操作的有序性,volatile 是因为其本身包含“禁止指令重排序”的语义,synchronized 是由“一个变量在同一个时刻只允许一条线程对其进行 lock 操作”这条规则获得的,此规则决定了持有同一个对象锁的两个同步块只能串行进入。

3.关于同步的规定

  1. 线程解锁前,必须把共享变量的值刷新回主内存。
  2. 线程加锁前,必须将主内存的最新值读取到自己的工作内存。
  3. 加锁解锁是同一把锁。

4.解释说明

​ 在JVM中,栈负责运行(主要是方法),堆负责存储(比如new的对象)。由于JVM运行程序的实体是线程,而每个线程在创建时,JVM都会为其创建一个工作内存(有些地方称为栈空间),工作内存是每个线程的私有数据区域。而JAVA内存模型中规定,所有变量都存储在主内存中,主内存是共享内存区域,所有线程都可以访问。

​ 但线程对变量的操作(读取赋值等)必须在自己的工作内存中进行。首先要将变量从主内存拷贝到自己的工作内存空间,然后对变量进行操作,操作完成后,再将变量写回到主内存。由于不能直接操作主内存中的变量,各个线程的工作内存中存储着主内存中的变量副本,因此,不同的线程之间无法直接访问对方的工作内存,线程间的通信(传值)必须通过主内存来完成。

JMM中的八种操作

为了支持 JMM,Java 定义了8种原子操作,用来控制主存与工作内存之间的交互:

  • read 读取:作用于主内存,将共享变量从主内存传送到线程的工作内存中。
  • load 载入:作用于工作内存,把 read 读取的值放到工作内存中的副本变量中。
  • store 存储:作用于工作内存,把工作内存中的变量传送到主内存中。
  • write 写入:作用于主内存,把从工作内存中 store 传送过来的值写到主内存的变量中。
  • use 使用:作用于工作内存,把工作内存的值传递给执行引擎,当虚拟机遇到一个需要使用这个变量的指令时,就会执行这个动作。
  • assign 赋值:作用于工作内存,把执行引擎获取到的值赋值给工作内存中的变量,当虚拟机栈遇到给变量赋值的指令时,就执行此操作。
  • lock锁定: 作用于主内存,把变量标记为线程独占状态。
  • unlock解锁: 作用于主内存,它将释放独占状态。

Java有哪些锁?syn底层是什么?

java中都有哪些锁?_羡羡ˇ的博客-CSDN博客

Java中常见的各种锁-超全面_【JAVA】玩家的博客-CSDN博客

Synchronized 同步锁

Java提供的一种原子性内置锁(关键字),用于解决多个线程间访问资源同步性问题,保证其修饰的方法或代码块任意时刻只能有一个线程访问synchronized,它可以把任非NULL 的对象当作锁。它属于独占式悲观锁,同时属于可重入锁。每个对象都可以使用它当作同步监视器, 当线程进入使用Synchronized修饰的代码块中会自动获取内部锁 , 此时其他线程想要访问此同步代码时只能被阻塞, 等待锁的释放(前一个线程执行完, 或者出现异常,调用了wait()方法等), 在进入synchronized会从 主内存把变量读取到自己工作内存,在退出的时候会把工作内存的值写入到主内存,保证了原子性。

synchronized的实现是通过字节码指令完成的 , 我们可以通过反编译去看具体的底层实现。

代码块的同步是利用monitorenter和monitorexit这两个字节码指令。在虚拟机执行到monitorenter指令时,首先要尝试获取对象的锁。 当前线程拥有了这个对象的锁,把锁的计数器+1;当执行 monitorexit指令时将模计数器-1;当计数器为 0 时,锁就被释放了。

另外synchronized 通过在对象头设置标记,达到了获取锁和释放锁的目的。

相关文章:

JAVA八股、JAVA面经

还有三天面一个JAVA软件开发岗&#xff0c;之前完全没学过JAVA&#xff0c;整理一些面经...... 大佬整理的&#xff1a;Java面试必备八股文_-半度的博客-CSDN博客 另JAVA学习资料&#xff1a;Java | CS-Notes Java 基础Java 容器Java 并发Java 虚拟机Java IO目录 int和Inte…...

GAN系列基础知识

原始值函数 原始GAN的值函数是 minGmaxDV(D,G)Ex∼pdata(x)[logD(x)]Ez∼pz(z)[log(1−D(G(z)))]min_Gmax_DV(D,G) E_{x \sim p_{data}(x)}[logD(x)]E_{z \sim p_{z}(z)} [log(1-D(G(z)))]minG​maxD​V(D,G)Ex∼pdata​(x)​[logD(x)]Ez∼pz​(z)​[log(1−D(G(z)))] 其中Ex…...

Linux/CenterOS 7.9配置汉化gitlab服务器

1.安装gitlab的依赖项 yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python2.启动postfix&#xff0c;并设置为开机启动 systemctl start postfixsystemctl enable postfix3.防火墙和selinux的设置 setenforce 0systemctl stop fire…...

山洪灾害监测预警平台 山洪灾害监测预警系统解决方案 以人为本 科学防御

平升电子山洪灾害监测预警平台 山洪灾害监测预警系统解决方案&#xff0c;集信息采集、传输、分析和预警等功能于一体&#xff0c;实现预警信息及时、准确地上传下达&#xff0c;提升监测预警能力&#xff0c;使可能受灾区域能够及时采取措施&#xff0c;最大程度减少人员伤亡和…...

The Number Of ThreadPoolExecutor

序言整理下Java 线程池中线程数量如何设置的依据巨人肩膀:https://blog.csdn.net/weilaizhixing007/article/details/125955693https://blog.csdn.net/yuyan_jia/article/details/120298564#:~:text%E4%B8%80%E4%B8%AA%E7%BA%BF%E7%A8%8B%E6%B1%A0%E5%A4%84%E7%90%86%E8%AE%A1,…...

Linux(Linux各目录结构详解)

我们知道Linux系统是一个文件系统&#xff0c;它的文件系统就类似windows系统下的磁盘文件系统。 我们连接上一台linux系统的服务器。 输入命令 &#xff1a; ls / 我们可以看到 linux系统的根目录下有这些目录 bin boot data dev etc hbr home lib lib64 lostfoun…...

UART通讯简介

UART全称Universal AsynchronousReceiver/Transmitter&#xff0c;通用异步收发传输器。 一、工作原理 和其它串口一样&#xff0c;数据按照二进制从低位到高位一位一位的传输&#xff0c;能将要传输的数据在串行通信与并行通信之间加以转换&#xff0c;能够灵活地与外部设备进…...

80 90后表示真干不过,部门新来的00后已经把我卷奔溃了,不想干了····

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。这不&#xff0c;刚开年我们公司来了个00后&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 …...

Python中2.x 与 3​​.x 版本区别?

Python 的 3​​.0 版本&#xff0c;常被称为 Python 3000&#xff0c;或简称 Py3k。相对于 Python 的早期版本&#xff0c;这是一个较大的升级。 为了不带入过多的累赘&#xff0c;Python 3.0 在设计的时候没有考虑向下相容。 许多针对早期 Python 版本设计的程式都无法在 P…...

性能指南笔记一

全面的性能 1.好处和效率之间的权衡在增加程序特性的过程 2.数据库永远是瓶颈&#xff0c;分布式系统的整体性能问题 我们当前的性能处于什么百分位&#xff1f; 是不是整体的性能属于下降的&#xff1f; 一开始就考虑可能性很小的性能问题&#xff1f; 3.吞吐量测试 TPS 每秒…...

es数据导入导出

使用elasticdump导入导出数据 一、安装elasticdump 终端中输入 1 npm install elasticdump -g -g表示全局可用&#xff0c;直接在终端输入 elasticdump --version&#xff0c;出现版本信息即表示安装成功&#xff0c;如下 1 2 C:\Users\T470s>elasticdump --version 6.3.3 …...

Python3入门教程||Python3 字符串||Python3 列表

Python3 字符串字符串&#xff08;string&#xff0c;简写为str&#xff09;是 Python 中最常用的数据类型之一。我们可以使用引号( 或 " )来创建字符串。创建字符串很简单&#xff0c;只要为变量分配一个值即可。例如&#xff1a;var1 Hello World!var2 "W3Cscho…...

API 的安全性

大家好。今天聊一个很重要但是大部分人不重视的API安全问题。api固有的范围和风险意味着它们需要一种不同的安全方法。应用程序编程接口(api)是现代应用程序的构建模块&#xff0c;它们的使用正在以惊人的速度增长。然而&#xff0c;随着使用的增加&#xff0c;风险也会增加。。…...

Linux驱动->设备树

1.定义 设备树&#xff08;device tree是描述硬件信息的一种树形结构&#xff0c;设备书文件在linux内核启动后被内核解析。描述一个硬件设备信息的节点我们叫做设备节点&#xff0c;一个设备节点内部包含当前硬件的多个不同属性&#xff0c;相同节点不同 2.设备树的文件格式…...

一天一道力扣题

232. 用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a;实现 MyQueue 类&#xff1a;void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek()…...

算法leetcode|36. 有效的数独(rust重拳出击)

文章目录36. 有效的数独&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a;分析&#xff1a;题解&#xff1a;rustgoccpythonjava36. 有效的数独&#xff1a; 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效…...

都说爱有回音,这次情人节驱动人生宠你!

来了来了&#xff0c;它又来了——那个一波人狂欢&#xff0c;一波人孤单的节日。 眼看着身边人在订花订餐厅&#xff0c;选礼物&#xff0c;空气中弥漫着微妙的氛围&#xff0c;驱动哥脑海里只有明天下班的地铁挤不挤得过这群约会的人。 不过根据哥的观察&#xff0c;发现一个…...

npm安装依赖报错 npm code ERESOLVEnpm ERESOLVE unable to resolve dependency tree

在安装npm i vue-router (路由)时出现了这个错误。 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: vue_test@0.1.0 npm ERR! Found: vue@2.6.14 npm ERR! node_modules/vue npm ERR! vue@"^2.6.…...

【项目设计】—— 基于Boost库的搜索引擎

目录 前言 一、项目的相关背景 1. 什么是Boost库 2. 什么是搜索引擎 3. 为什么要做Boost搜索引擎 二、搜索引擎的宏观原理 三、搜索引擎技术栈和项目环境 四、正排索引 VS 倒排索引 —— 搜索引擎的具体原理 1. 正排索引&#xff08;forword index&#xff09; 2. 倒…...

全网详解MyBatis-Plus updateById方法更新不了空字符串或null的解决方法

文章目录1. 文章引言2. 分析问题3. 解决问题3.1 方法1&#xff1a;全局配置方式3.2 方法2&#xff1a;非null字段验证策略3.3 方法3&#xff1a;通过注解的方式4. 总结1. 文章引言 在开发的过程中&#xff0c;我们经常使用MyBatis-Plus的updateById方法更新数据表&#xff0c;…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...