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

Java高频面试题2:集合框架

一、集合框架概述

1. 常见的集合框架有哪些?

  • Collection:存储单个元素的集合。
    • List(有序、可重复):ArrayList(动态数组)、LinkedList(双向链表)。
    • Set(无序、唯一):HashSet(基于HashMap)、TreeSet(红黑树)。
    • Queue(队列):ArrayDeque(双端队列)、PriorityQueue(优先级队列)。
  • Map:存储键值对。
    • HashMap(数组+链表/红黑树)、LinkedHashMap(保持插入顺序)、TreeMap(红黑树,按Key排序)。

二、List

2. ArrayList和LinkedList的区别?

特性ArrayListLinkedList
数据结构动态数组双向链表
增删效率尾部O(1),中间O(n)头尾O(1),中间O(n)
查找效率随机访问O(1)顺序访问O(n)
内存占用连续内存,紧凑非连续内存,每个节点含前驱/后继指针
线程安全非线程安全非线程安全

3. ArrayList的扩容机制?

  • 初始容量:默认16。
  • 扩容触发:当元素个数超过当前容量的loadFactor(默认0.75)时。
  • 扩容逻辑:新容量为原容量的1.5倍,通过Arrays.copyOf()复制旧数组到新数组。

4. 如何实现ArrayList的线程安全?

  • 使 ⽤ Ve c t o r :不 推 荐 , Ve c t o r 是 ⼀ 个 历 史 遗 留 类 。
  • 使用Collections.synchronizedList():通过synchronized关键字保证线程安全。
  • 使用CopyOnWriteArrayList:写时复制,读操作无锁,适合读多写少场景。
  • 在 使 ⽤ A r r a y L i s t 时 , 应 ⽤ 程 序 通 过 同 步 机 制 去 控 制 A r r a y L i s t 的 读 写 。

三、Map

5. HashMap的底层数据结构?

  • JDK7:数组+链表。
  • JDK8:数组+链表/红黑树(链表长度≥8且数组长度≥64时转换为红黑树)。

6. HashMap的put流程?

  1. 计算哈希值:通过hash(key)方法(hashCode()异或高16位)。
  2. 确定桶位置(n-1) & hash(n为数组长度)。
  3. 处理冲突
    • 若桶为空,直接插入。
    • 若桶不为空,遍历链表/红黑树:
      • 若Key存在,覆盖Value。
      • 若Key不存在,链表尾插(JDK8),红黑树插入。
  4. 扩容检查:若元素个数超过阈值(capacity * loadFactor),触发扩容(2倍)。

7. HashMap的哈希函数设计?

  • 扰动函数(h = key.hashCode()) ^ (h >>> 16),混合高低位信息,减少哈希冲突。
  • 数组长度:必须为2的幂,保证(n-1) & hash均匀分布。

8. 为什么链表转红黑树的阈值是8?

  • 泊松分布:链表长度超过8的概率极低(约0.00000006),树化是为极端情况优化。
  • 空间权衡:红黑树节点占用更多内存,避免频繁转换。

9. JDK8对HashMap的优化?

  • 红黑树:链表过长时转换为红黑树,提升查询效率。
  • 尾插法:避免JDK7头插法导致的扩容死循环。
  • 扩容优化:节点位置仅可能是原位置或原位置+旧容量,减少重新计算哈希的开销。

10. HashMap的线程安全问题及解决方案?

  • 问题:多线程下扩容可能导致死循环、数据覆盖或丢失。
  • 解决方案
    • Hashtable:方法级synchronized,性能差。
    • ConcurrentHashMap:JDK7分段锁,JDK8 CAS+synchronized,高并发场景首选。
    • Collections.synchronizedMap:同步包装器,适合低并发。

11. LinkedHashMap如何保持有序?

  • 双向链表:维护插入顺序或访问顺序(通过accessOrder参数)。
  • 实现LRU缓存:重写removeEldestEntry方法。

12. TreeMap如何实现有序?

  • 红黑树:基于Key的自然排序(实现Comparable)或自定义Comparator
  • 范围查询:支持subMapheadMap等方法。

13.为什么HashMap的容量是2的幂次方?

  • 保证通过位运算(n-1)&hash高效计算索引,避免哈希冲突。
  • 扩容时只需检查高位,减少重新哈希的开销。

14.ConcurrentHashMap与Hashtable的区别?

  • 锁粒度:在 JDK 1.7 中,采用分段锁(Segment)机制,将数据分成多个段,每个段独立加锁。在 JDK 1.8 中,进一步优化为使用 CAS(Compare-And-Swap)和 synchronized 锁单个桶(bucket),减少了锁的粒度。Hashtable全表锁。
  • 性能:ConcurrentHashMap吞吐量更高。
  • 空键值:Hashtable不允许null键值,ConcurrentHashMap允许。

四、Set

15. HashSet的底层实现?

  • 基于HashMap:值为固定对象PRESENT,利用HashMap的Key唯一性。
  • 去重逻辑:依赖hashCode()equals()方法。

五、其他高频问题

16. 快速失败(Fail-Fast)与安全失败(Fail-Safe)?

  • 快速失败:遍历时若集合被修改(非预期),抛出ConcurrentModificationException(如ArrayList)。
  • 安全失败:遍历拷贝的集合副本,不反映原集合的修改(如CopyOnWriteArrayList)。

17. 如何选择集合类?

  • 需要随机访问:选ArrayList
  • 频繁增删:选LinkedList
  • 键值对存储
    • 无序:HashMap
    • 插入顺序:LinkedHashMap
    • 排序:TreeMap
  • 线程安全ConcurrentHashMapCopyOnWriteArrayList

六、代码实战

18. 手写简易HashMap(数组+链表版)?

public class SimpleHashMap<K, V> {private static final int DEFAULT_CAPACITY = 16;private Node<K, V>[] table;private int size;static class Node<K, V> {K key;V value;Node<K, V> next;Node(K key, V value) {this.key = key;this.value = value;}}public void put(K key, V value) {int index = hash(key) & (DEFAULT_CAPACITY - 1);Node<K, V> node = table[index];if (node == null) {table[index] = new Node<>(key, value);size++;} else {while (node != null) {if (node.key.equals(key)) {node.value = value;return;}if (node.next == null) {node.next = new Node<>(key, value);size++;return;}node = node.next;}}}public V get(K key) {int index = hash(key) & (DEFAULT_CAPACITY - 1);Node<K, V> node = table[index];while (node != null) {if (node.key.equals(key)) return node.value;node = node.next;}return null;}private int hash(K key) {int h = key.hashCode();return h ^ (h >>> 16);}
}

19. LinkedHashMap 实现 LRU(Least Recently Used,最近最少使用)缓存

import java.util.LinkedHashMap;
import java.util.Map;public class LRUCache<K, V> extends LinkedHashMap<K, V> {private final int capacity;public LRUCache(int capacity) {// 调用父类构造函数,设置初始容量、负载因子和访问顺序super(capacity, 0.75f, true) {@Overrideprotected boolean removeEldestEntry(Map.Entry<K, V> eldest) {// 当缓存大小超过容量时,移除最旧的元素return size() > capacity;}};this.capacity = capacity;}public static void main(String[] args) {LRUCache<Integer, String> cache = new LRUCache<>(3);cache.put(1, "one");cache.put(2, "two");cache.put(3, "three");System.out.println(cache.get(1)); cache.put(4, "four"); System.out.println(cache.get(2)); }
}

此代码定义了一个 LRUCache 类,它继承自 LinkedHashMap。在构造函数里,借助 LinkedHashMap 的特性,把访问顺序设为 true,这意味着访问元素时会将其移到链表尾部。同时,重写了 removeEldestEntry 方法,当缓存大小超出容量时,就会移除最旧的元素。在 main 方法里,对 LRUCache 的功能进行了简单测试。

总结:以上题目覆盖Java集合框架核心知识点,建议重点掌握HashMap的底层实现、扩容机制、线程安全方案以及List/Set的特性对比。面试时需结合源码和实际场景说明设计原理,体现对细节的理解。

相关文章:

Java高频面试题2:集合框架

一、集合框架概述 1. 常见的集合框架有哪些&#xff1f; Collection&#xff1a;存储单个元素的集合。 List&#xff08;有序、可重复&#xff09;&#xff1a;ArrayList&#xff08;动态数组&#xff09;、LinkedList&#xff08;双向链表&#xff09;。Set&#xff08;无序…...

06-公寓租赁项目-后台管理-公寓管理篇

尚庭公寓项目/公寓管理模块 https://www.yuque.com/pkqzyh/qg2yge/5ba67653b51379d18df61b9c14c3e946 一、属性管理 属性管理页面包含公寓和房间各种可选的属性信息&#xff0c;其中包括房间的可选支付方式、房间的可选租期、房间的配套、公寓的配套等等。其所需接口如下 1.1…...

目前主流OCR/语义理解/ASR

OCR 基于多篇专业评测的结果&#xff0c;以下是目前免费开源OCR工具的推荐排名&#xff08;侧重中文场景&#xff09;&#xff1a; 1. RapidOCR 优势&#xff1a;基于PaddleOCR优化&#xff0c;在印刷中文、自然场景文字识别中综合评分第一&#xff0c;支持180度旋转和低对比…...

Selenium 元素定位方法详解

Selenium 提供了多种元素定位方式&#xff0c;掌握这些方法是进行 Web 自动化测试的基础。以下是主要的元素定位方法及其使用示例&#xff1a; 1. 基本定位方法 1.1 通过 ID 定位 element driver.find_element(By.ID, "element_id") 1.2 通过 Name 定位 element …...

fastGPT—前端开发获取api密钥调用机器人对话接口(HTML实现)

官网文档链接&#xff1a;OpenAPI 介绍 | FastGPT 首先按照文档说明创建api密钥 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…...

c语言数据结构--------拓扑排序和逆拓扑排序(Kahn算法和DFS算法实现)

#include <stdio.h> #include <string.h> #include <stdbool.h> #include <stdlib.h>//使用卡恩算法(Kahn)和深度优先算法(DFS)实现//拓扑排序和逆拓扑排序//拓扑排序和逆拓扑排序顶点顺序相反//图&#xff0c;邻接矩阵存储 #define MaxVertexNum 100 …...

日期类的实现

本文运用c类和对象中的构造函数&#xff0c; 析构函数 &#xff0c;拷贝构造函数 &#xff0c; 赋值运算符重载等为大家模拟实现日期类的操作 #define _CRT_SECURE_NO_WARNINGS 1 #include"date.h" void Date:: showinfo() {cout << _year << "年&…...

3dgs通俗讲解

3d gaussian splatting&#xff1a;基于splatting和机器学习的三维重建方法。 特点&#xff1a; 无深度学习简单的机器学习大量的CG知识复杂的线性代数对GPU的高性能编程 一、什么是splatting 1、选择“雪球”&#xff1b; 为什么使用核&#xff08;雪球&#xff09; 各向…...

源码分析之Leaflet比例尺控件Control.Scale实现原理

概述 Control.Scale 是一个用于显示地图比例尺的控件&#xff0c;是 Leaflet 中实现比例尺控件的核心逻辑&#xff0c;用于在地图上动态显示公制&#xff08;米/千米&#xff09;和英制&#xff08;英尺/英里&#xff09;的比例尺。 源码分析 源码实现 Control.Scale的源码…...

【无标题 langsmith

【GPT入门】第32课 langsmith介绍与实战 1.lang smith作用2.lang smith配置方法3. 上手第一个lang smith3.1 可运行代码3.2 lang smith 官网&#xff0c;个人项目下 1.lang smith作用 LangSmith是由LangChain开发的一个平台&#xff0c;主要用于构建生产级LLM应用程序&#xf…...

智能建造新范式:装配式建筑 4.0 的数字化进阶

在全球数字化与可持续发展的浪潮中&#xff0c;建筑业正经历着第四次工业革命的深刻变革。装配式建筑4.0的出现&#xff0c;标志着建筑行业从传统的“钢筋水泥时代”迈向“数据驱动时代”&#xff0c;其核心在于通过技术融合重构建筑全生命周期的生产方式&#xff0c;实现从设计…...

从标准输入中读取所有内容sys.stdin.read()

sys.stdin.read().strip() 用于从标准输入中读取所有内容并去除首尾的空白字符。 1. sys.stdin.read() 作用&#xff1a;从标准输入流中读取所有内容&#xff0c;直到遇到文件结束符&#xff08;EOF&#xff09;。在命令行中&#xff0c;EOF 可以通过 CtrlD&#xff08;Linux…...

网络:华为数通HCIA学习:静态路由基础

文章目录 前言静态路由基础静态路由应用场景 静态路由配置静态路由在串行网络的配置静态路由在以太网中的配置 负载分担配置验证 路由备份&#xff08;浮动静态路由&#xff09;配置验证 缺省路由配置验证 总结 华为HCIA 基础实验&#xff0d;静态路由 & eNSP静态路由 基础…...

DAY 35 leetcode 202--哈希表.快乐数

题号202 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&a…...

Linux Command nmap 网络扫描

tags: 网络 文章目录 简介原理端口状态选项基本扫描发现扫描禁用DNS名称解析无ping扫描 端口扫描版本检测防火墙规避技术故障排除和调试NMAP 脚本 简介 Nmap&#xff08;“ Network Mapper ”&#xff09;是一个用于网络探索和安全审计的开源工具。它旨在快速扫描大型网络&…...

根据源码分析vue中nextTick的实现原理

根据源码分析vue中nextTick的实现原理 一. ‌核心变量定义‌‌二. 异步策略选择&#xff08;降级处理&#xff09;‌1. 微任务优先‌2. 降级到 MutationObserver‌3. 降级到宏任务‌ 三、回调执行逻辑‌四、 ‌nextTick 函数实现‌五、 ‌与 Vue 更新流程的结合‌六‌、关键设计…...

Linux内核TCP/IP协议栈中的设计模式:从面向对象到系统级软件的跨界实践

引言 设计模式(Design Patterns)自GoF(Gang of Four)在1994年提出以来,已成为软件工程领域的核心概念。尽管其经典定义基于面向对象编程(OOP),但设计模式的本质是解决复杂问题的经验总结,而非局限于特定编程范式。本文以Linux内核的TCP/IP协议栈为例,探讨设计模式在…...

风云可测:华为AI天气大模型将暴雨预测误差缩至3公里内

华为云正式发布全球首个气象专用人工智能大模型"盘古气象"&#xff0c;实现台风路径24小时预测误差<30公里、暴雨落区72小时精度91%&#xff0c;较传统数值预报效率提升10000倍。本文基于对西北太平洋10个台风回溯测试、全国2360个气象站验证数据&#xff0c;解析…...

DeepSeek-R1 面试题汇总

Deepseek-r1 面试宝典 原文地址&#xff1a;https://articles.zsxq.com/id_91kirfu15qxw.html DeepSeek-R1 面试题汇总 DeepSeek-R1 面试题汇总 GRPO&#xff08;Group Relative Policy Optimization&#xff09;常见面试题汇总篇 DeepSeek-R1 DeepSeek-R1-Zero 常见面试题汇总…...

ASM1042A型CANFD芯片通信可靠性研究

摘要 本文旨在深入探讨ASM1042A型CAN-FD芯片在多节点通信中的可靠性表现。通过对芯片的电气特性、测试环境、多节点通信测试结果等多方面进行分析&#xff0c;结合实验数据与理论研究&#xff0c;全面评估其在复杂通信场景下的性能与可靠性。研究结果表明&#xff0c;ASM1042A…...

Java8 到 Java21 系列之 Stream API:数据处理的新方式(Java 8)

Java 8 到 Java 21 系列之 Stream API&#xff1a;数据处理的新方式&#xff08;Java 8&#xff09; 系列目录 Java8 到 Java21 系列之 Lambda 表达式&#xff1a;函数式编程的开端&#xff08;Java 8&#xff09;Java 8 到 Java 21 系列之 Stream API&#xff1a;数据处理的…...

【每日一个知识点】分布式数据湖与实时计算

在现代数据架构中&#xff0c;分布式数据湖&#xff08;Distributed Data Lake&#xff09; 结合 实时计算&#xff08;Real-time Computing&#xff09; 已成为大数据处理的核心模式。数据湖用于存储海量的结构化和非结构化数据&#xff0c;而实时计算则确保数据能够被迅速处理…...

接口自动化学习三:参数化parameterize

使用parametrize之前&#xff1a; def add(x,y):return xy class TestAddFunction(object):def test01(self):resadd(2,4)assert 6resdef test02(self):resadd(4,6)assert 10resparametrize参数化之后&#xff1a; import pytest def add(x,y):return xydata[(10,20,30),(200…...

呼叫中心系统压力测试文档

前期准备 用户需要准备两台配置相同的服务器&#xff0c;A服务器和B服务器。我们在这两台服务器上部署相同授权的程序。 配置流程 1. 创建话术 A服务器和B服务器都需要创建压力测试放音的话术&#xff0c;用于放音。按图操作&#xff1a; 2. 线路和线路组配置 A服务器&am…...

从0开始的构建的天气预报小时钟(基于STM32F407ZGT6,ESP8266 + SSD1309)——第1章 简单的介绍一下ESP8266和他的编程指令

目录 ESP8266编程指令前导——三种工作模式 ESP8266编程指令 工作确认指令&#xff08;用于非穿透模式下&#xff09; 设置工作模式&#xff1a;ATCWMODEX 两个重要的复位 硬复位ATRESTORE 软复位ATRST 加入Wifi ATCWJAP 开始一次TCP通信 进入和退出穿透模式 进入 ES…...

Cadence Integrity 3D-IC的解密

Early System-Level Analysis and Signoff Flow 请看下期发布...

清晰易懂的 Flutter 开发环境搭建教程

Flutter 是 Google 推出的跨平台应用开发框架&#xff0c;支持 iOS/Android/Web/桌面应用开发。本教程将手把手教你完成 Windows/macOS/Linux 环境下的 Flutter 安装与配置&#xff0c;从零到运行第一个应用&#xff0c;全程避坑指南&#xff01; 一、安装 Flutter SDK 1. 下载…...

NO.63十六届蓝桥杯备战|基础算法-⼆分答案|木材加工|砍树|跳石头(C++)

⼆分答案可以处理⼤部分「最⼤值最⼩」以及「最⼩值最⼤」的问题。如果「解空间」在从⼩到⼤的「变化」过程中&#xff0c;「判断」答案的结果出现「⼆段性」&#xff0c;此时我们就可以「⼆分」这个「解空间」&#xff0c;通过「判断」&#xff0c;找出最优解。 这个「⼆分答案…...

Python星球日记 - 第1天:欢迎来到Python星球

&#x1f31f;引言&#xff1a; 上一篇&#xff1a;Python星球日记专栏介绍&#xff08;持续更新ing&#xff09; 名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗…...

去中心化交易所(DEX)

核心概念与DEX类型 DEX vs CEX 中心化交易所&#xff08;CEX&#xff09;风险&#xff1a;资产托管风险&#xff08;如2019年超2.9亿美元被盗&#xff09;、隐私泄露&#xff08;如50万用户信息泄漏&#xff09;。 DEX优势&#xff1a;用户自持资产&#xff08;非托管&#x…...

HTTP数据传输的几个关键字Header

本文着重针对http在传输数据时的几种封装方式进行描述。 1. Content-Type(描述body内容类型以及字符编码) HTTP的Content-Type用于定义数据传输的媒体类型&#xff08;MIME类型&#xff09;&#xff0c;主要分为以下几类&#xff1a; (一)、‌基础文本类型‌ text/plain‌ …...

Redis 的 Raft 选举协议

Redis 的 Raft 选举协议 主要用于 Redis Sentinel 和 Redis Cluster 的高可用实现中(尽管 Redis Cluster 默认使用类似 Gossip 的协议,但 Raft 的思想在 Sentinel 的领导者选举中有体现)。以下是关于 Raft 协议在 Redis 中的应用及脑裂问题的详细解析: 一、Redis 中的 Raft…...

sshd启动报错“Failed to start OpenSSH Server daemon”

“systemctl restart sshd”启动sshd服务异常&#xff0c;报错“Failed to start OpenSSH Server daemon”。 使用sshd -t命令检查sshd配置文件&#xff0c;返回关键信息gssapikexalgorithms相关错误。 解决方法 禁用 GSSAPI 相关的 KEX 算法 编辑sshd配置文件&#xff0c;注…...

MIT6.828 Lab3-2 Print a page table (easy)

实验内容 实现一个函数来打印页表的内容&#xff0c;帮助我们更好地理解 xv6 的三级页表结构。 修改内容 kernel/defs.h中添加函数声明&#xff0c;方便其它函数调用 void vmprint(pagetable_t);// lab3-2 Print a page tablekernel/vm.c中添加函数具体定义 采用…...

AI本地部署之ragflow

Ubunturagflowdeepseek本地部署目录 一、配置说明1. 软件配置说明2. 硬件配置说明 二、RagFlow安装和部署1. 前置条件2. 安装注&#xff1a;如果发现没有出现这个界面&#xff0c;可以进入ragflow/docker/ragflow-logs这个路径&#xff0c;查看ragflow_server.log文件中的内容&…...

源码分析之Leaflet属性控件Control.Attribution实现原理

概述 Control.Attribution 是一个 Leaflet 地图控件&#xff0c;用于显示地图的版权信息。它可以显示地图提供者的名称和链接&#xff0c;以及地图上的图层的版权信息。 源码分析 源码实现 Control.Attribution的源码实现如下 var ukrainianFlag <svg aria-hidden"…...

NO.62十六届蓝桥杯备战|基础算法-二分查找|查找元素的第一个和最后一个位置|牛可乐和魔法封印|A-B数对|烦恼的高考意愿(C++)

⼆分算法是我觉得在基础算法篇章中最难的算法。⼆分算法的原理以及模板其实是很简单的&#xff0c;主要的难点在于问题中的各种各样的细节问题。因此&#xff0c;⼤多数情况下&#xff0c;只是背会⼆分模板并不能解决题⽬&#xff0c;还要去处理各种乱七⼋糟的边界问题 34. 在…...

开源模型应用落地-Qwen2.5-Omni-7B模型-部署 “光速” 指南

一、前言 2025年3月,阿里巴巴通义千问团队开源的全模态大模型Qwen2.5-Omni-7B,犹如一记惊雷划破AI领域的长空。这个仅70亿参数的"小巧巨人",以端到端的架构实现了对文本、图像、音频、视频的全模态感知,更通过创新的Thinker-Talker双核架构,将人类"接收-思…...

顺序容器 -forward list单链表

forward list单链表是C11加入到STL的。 使用forward list&#xff0c;必须包含头文件<forward_list> #include <forward_list> 这个头文件被定义在命名空间std内。 namespace std {template <typename T,typename Allocator allocator<T> >class …...

C++:算术运算符

程序员Amin &#x1f648;作者简介&#xff1a;练习时长两年半&#xff0c;全栈up主 &#x1f649;个人主页&#xff1a;程序员Amin &#x1f64a; P   S : 点赞是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全…...

缺页异常导致的iowait打印出相关文件的绝对路径

一、背景 在之前的博客 增加等IO状态的唤醒堆栈打印及缺页异常导致iowait分析-CSDN博客 里&#xff0c;我们进一步优化了D状态和等IO状态的事件的堆栈打印&#xff0c;补充了唤醒堆栈打印&#xff0c;也分析了一种比较典型的缺页异常filemap_fault导致的iowait的情况。 在这篇…...

【Centos】centos7内核升级-亲测有效

相关资源 通过网盘分享的文件&#xff1a;脚本升级 链接: https://pan.baidu.com/s/1yrCnflT-xWhAPVQRx8_YUg?pwd52xy 提取码: 52xy –来自百度网盘超级会员v5的分享 使用教程 将脚本文件上传到服务器的一个目录 执行更新命令 yum install -y linux-firmware执行脚本即可 …...

多模态模型:专栏概要与内容目录

文章目录 多模态模型&#x1f4da; 核心内容模块Stable Diffusion基础教程Stable Diffusion原理深度解析部署与环境配置其他多模态模型实践 多模态模型 &#x1f525; 专栏简介 | 解锁AI绘画与多模态模型的技术奥秘 探索多模态AI技术&#xff0c;掌握Stable Diffusion等流行框…...

1. 购物车

1. 购物车 咱们购物车基于 V2 装饰器进行开发&#xff0c;底气来源于 自定义组件混用场景指导 1.1. 素材整合 observedv2和Trace 数据模型和页面 // 其他略 // 购物车 export interface CartGoods {count: number;id: string;name: string;picture: string;price: number;…...

frp 让服务器远程调用本地的服务(比如你的java 8080项目)

1、服务器上安装frp 2、本地安装frp 服务器上 frps.toml 配置信息&#xff1a; bindPort 30000auth.token "密码" # 客户端连接密码vhostHTTPPort 8082 本地 frpc.toml serverAddr "服务器ip" serverPort 30000 auth.token "服务器上设置的…...

《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例

第56篇&#xff1a;LangChain快速入门与应用示例 前言 最近最火的肯定非Manus和OpenManus莫属&#xff0c;因为与传统AI工具仅提供信息不同&#xff0c;Manus能完成端到端的任务闭环。例如用户发送“筛选本月抖音爆款视频”&#xff0c;它会自动完成&#xff1a; 爬取平台数据…...

大模型——如何在本地部署微软的OmniParser V2

微软的 OmniParser V2 是一款尖端的人工智能屏幕解析器,可通过分析屏幕截图从图形用户界面中提取结构化数据,使人工智能代理能够与屏幕元素进行无缝交互。该工具是构建自主图形用户界面代理的完美选择,它改变了自动化和工作流程优化的游戏规则。在本指南中,我们将介绍如何在…...

Oracle触发器使用(一):DML触发器

Oracle触发器使用(一):DML触发器 DML触发器条件谓词触发器INSTEAD OF DML触发器复合DML触发器Oracle数据库中的触发器(Trigger)本质上也是PL/SQL代码,触发器可以被Enable或者Disable,但是不能像存储过程那样被直接调用执行。 触发器不能独立存在,而是定义在表、视图、…...

智慧园区大屏如何实现全局监测:监测意义、内容、方式

智慧园区的价值不容小觑呀&#xff0c;可以说园区的大部分数据都在这个大屏上&#xff0c;监测数据越多&#xff0c;那么大屏的价值就越大。很多小伙伴拿到需求后感觉无从下手&#xff0c;本文在这里智慧园区大屏可以监测哪些内容、监测的意义、监测的方式等&#xff0c;欢迎点…...

LeetCode 解题思路 31(Hot 100)

解题思路&#xff1a; 递归参数&#xff1a; 字符串 s、结果集 result、当前路径 path、回文子串数组 dp、开始位置 start。递归过程&#xff1a; 当当前路径 path 的长度等于 s.length() 时&#xff0c;说明已经分割完成&#xff0c;加入结果集。若当前起止位置满足回文条件…...