java 双列集合Map 万字详解
目录
一、前言
二、概述
三、特点
四、常用方法
1. V put(K key, V value) :
Δ代码演示 :
2. V get(Object key) :
Δ代码演示 :
3. V remove(Object key) :
Δ代码演示 :
4. int size() :
Δ代码演示 :
5. default V replace(K key, V value) :
Δ代码演示 :
6. boolean isEmpty() :
Δ代码演示 :
7. void clear() :
Δ代码演示 :
8. boolean containsKey(Object key) :
Δ代码演示 :
9. Set keySet() :
Δ代码演示 :
五、 Map集合的遍历
0.前言 :
1.方式一 —— 通过keySet方法和get方法
①步骤 :
②代码演示 :
2.方式二 —— 通过values方法
①步骤 :
②代码演示 :
3.方式三 —— 通过entrySet方法
①步骤 :
②代码演示 :
六、HashMap源码解读(深度讲解)
七、Hashtable及其子类Properties源码解读
八、TreeMap源码解读
九、完结撒❀
一、前言
大家好,本篇博文是对集合框架中的双列集合——Map集合的一个深度总结。主要内容包括了Map集合的介绍、特点、常用方法演示、遍历方式,以及Map接口的几个常用实现类——HashMap,Hashtable,TreeMap的源码分析。
注意 : ①代码中的注释也很重要;②不要眼高手低,自己跟着过一遍才算有收获;③点击文章的侧边栏目录或者文章开头的目录可以进行跳转。良工不示人以朴,所有文章都会适时补充完善。大家如果有问题都可以在评论区进行交流或者私信up。感谢阅读!
二、概述
1° Map接口与Collection接口并列存在,与Collection系列的单列集合相对,Map是双列集合,用于保存具有映射关系的数据Key-Value(键值对)。
2° Map接口也属于java.base模块,java.util包下,如下图所示 : 
3° 再来回顾一下Map集合体系的类图,如下 : 
可以看到,Map接口常用的实现类有三个——Hashtable, HashMap, 和TreeMap,并且还有两个常用实现类Properties和LinkedHashMap分别是Hashtable和HashMap的子类。
三、特点
1° Map集合中的元素由key-value键值对(Entry)构成,其中key和value可以由任意引用类型的键值对构成,会封装到HashMap$Node对象中。
2° 键值对中的key不可重复(底层同HashSet),但是value可以重复。所以,当key或者value为null时,key只能有一个是null,而value可以有多个是null。
3° 键值对中的key常用String类型来表示。
4° key和value之间存在一一映射关系,即总可以通过指定的key来找到其对应的value。
5° 一个key-value键值对存放在一个HashMap$Node类型的对象中。(HashMap中的Node内部类实现了Map接口中的Entry内部接口)
四、常用方法
1. V put(K key, V value) :
该方法以键值对的形式向集合中添加元素,首次添加某元素时,返回null;重复添加相同键的元素时,新值覆盖旧值,并返回旧值。
Δ代码演示 :
up以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map = new HashMap();//1.V put(K key, V value) : 以键值对的形式向集合中添加元素/*首次添加某元素时,返回null;重复添加相同键的元素时,新值覆盖旧值,并返回旧值*/Object o = map.put("916", "计算机网络和数据结构");System.out.println(o);Object o2 = map.put("916", "数据结构和计算机网络");System.out.println(o2);map.put("935", "数据结构,操作系统和计组");map.put("872", "数据结构和操作系统");System.out.println(map);}
}
运行结果 :

2. V get(Object key) :
该方法可以获取到集合中指定键所对应的值,若没有则返回null。
Δ代码演示 :
up仍以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map = new HashMap();//2.V get(Object key) : 根据指定键返回其对应的值,没有则返回nullmap.put("916", "数据结构和计算机网络");map.put("935", "数据结构,操作系统和计组");map.put("872", "数据结构和操作系统");String value1 = (String) map.get("916");String value2 = (String) map.get("935");String value3 = (String) map.get("872");String value4 = (String) map.get("408");System.out.println("916——" + value1);System.out.println("935——" + value2);System.out.println("872——" + value3);System.out.println("408——" + value4);}
}
运行结果 :

3. V remove(Object key) :
根据指定的键删除集合中对应键值对,返回删除掉的值,若没有则返回null。
Δ代码演示 :
up仍以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map = new HashMap();//3.V remove(Object key) : 根据指定的键删除集合中对应键值对,返回删除掉的值,若没有则返回null。map.put("916", "数据结构和计算机网络");map.put("935", "数据结构,操作系统和计组");map.put("872", "数据结构和操作系统");System.out.println("map = " + map);Object o = map.remove("935"); //实际可不做接收System.out.println("删除的值 = " + o);System.out.println("map = " + map);Object o1 = map.remove("408");System.out.println("删除的值 = " + o1);}
}
运行结果 :

4. int size() :
该方法可以获取当前集合中元素的个数(集合中键值对的数量)。
Δ代码演示 :
up仍以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法 Map map = new HashMap();//4.int size() : 获取当前集合中元素的个数(集合中键值对的数量)map.put("916", "数据结构和计算机网络");map.put("935", "数据结构,操作系统和计组");map.put("872", "数据结构和操作系统");map.put("408", "数据结构,计算机组成原理,操作系统,计算机网络");int number = map.size();System.out.println("当前集合中元素的个数 = " + number);}
}
运行结果 :

5. default V replace(K key, V value) :
该方法可以根据指定键,替换掉其在集合中对应的值,并返回被替换的值。
Δ代码演示 :
up仍以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map = new HashMap();//5.default V replace(K key, V value) : 根据指定键,替换掉其在集合中对应的值,并返回被替换的值map.put("916", "数据结构和计算机网络");map.put("935", "数据结构,操作系统和计组");map.put("872", "数据结构和操作系统");map.put("408", "数据结构,计算机组成原理,操作系统,计算机网络");String s = (String) map.replace("916", "900 + 16");System.out.println("被替换掉的值 = " + s);for (Object o : map.entrySet()) {System.out.println(o);}}
}
运行结果 : 
6. boolean isEmpty() :
该方法可以判断当前集合是否为空。
Δ代码演示 :
up仍以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map = new HashMap();//6.boolean isEmpty() : 判断当前集合是否为空。System.out.println("当前集合为空吗?" + map.isEmpty());map.put(1, "666");map.put(2, "233");System.out.println("当前集合为空吗?" + map.isEmpty());}
}
运行结果 :

7. void clear() :
该方法可以清空当前集合中所有的键值对。
Δ代码演示 :
up仍以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map = new HashMap();//7.void clear() : 清空当前集合。map.put(1, "666");map.put(2, "233");map.put(3, "141");map.put(4, "424");System.out.println("map = " + map);map.clear();System.out.println("map = " + map);}
}
运行结果 : 
8. boolean containsKey(Object key) :
该方法可以查询集合中是否存在指定的键,存在则返回true。
Δ代码演示 :
up仍以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map = new HashMap();//8.boolean containsKey(Object key) : 判断集合中是否存在指定键map.put(1.1, "迫近的客星");map.put(1.2, "白垩与黑龙");map.put(1.3, "明霄升海平");System.out.println("集合中是否存在1.1键:" + map.containsKey(1.1));System.out.println("集合中是否存在1.3键:" + map.containsKey(1.1));System.out.println("集合中是否存在2.1键:" + map.containsKey(2.1));}
}
运行结果 :

9. Set<K> keySet() :
该方法可以获取到当前Map集合中所有的键,并将它们存在在一个Set集合中,返回该Set集合。
Δ代码演示 :
up仍以Methods类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Methods {public static void main(String[] args) {//演示 : Map集合的常用方法Map map = new HashMap();//9.Set<K> keySet() : 获取键的集合,返回一个Set集合。map.put("胡图图", "动耳神功");map.put("胡英俊", "英俊潇洒");map.put("胡歌", "好男人胡歌");Set set = map.keySet();System.out.println(set);}
}
运行结果 :

五、 Map集合的遍历
0.前言 :
java的设计者提供了一些机制来更好地遍历Map集合——它们令HashMap类的Node类型实现了Map类的Entry接口,而Entry接口中提供了访问键和值的方法。
同时,它们又在HashMap类中定义了EntrySet类型用于替代Map集合进行遍历操作,相当于EntrySet指向了Map集合中的元素,遍历EntrySet类型中的键值对实际上仍是遍历Map集合中实际存在的键值对。

可以通过entrySet方法来获取指向了Map集合中键值对的Set集合,如下 :

可以看到,其元素类型为Map.Entry类型。
上面这一大堆,说句人话就是——java的爸爸们把Node类型做成了Entry类型,又想办法放到EntrySet里面去了,最终是为了方便Map集合的遍历。
1.方式一 —— 通过keySet方法和get方法
①步骤 :
1.获取所有键的集合
2.遍历所有的键,获取到每一个键
3.根据键,获取指定的值
②代码演示 :
up以Traverse_map类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;/*** @author : Cyan_RA9* @version : 21.0*/
public class Traverse_map {public static void main(String[] args) {//演示 : 遍历Map集合方式一Map map = new HashMap();map.put(1, "张三");map.put(2, "李四");map.put(3, "王五");map.put(4, "赵六");//1.获取所有键的集合Set keys = map.keySet();Iterator iterator = keys.iterator();//2.遍历所有的键,获取到每一个键System.out.println("================迭代器遍历:====================");while (iterator.hasNext()) {Integer integer = (Integer) iterator.next();//3.根据键,获取指定的值String value = (String) map.get(integer);System.out.println("key = " + integer + ", value = " + value);}System.out.println("================增强for遍历:====================");for (Object key : keys) {Integer integer = (Integer) key;String value = (String) map.get(integer);System.out.println("key = " + integer + ", value = " + value);}}
}
运行结果 :

2.方式二 —— 通过values方法
①步骤 :
1.根据values方法获取所有的值
2.利用迭代器或者增强for遍历获取到的值
②代码演示 :
up仍以Traverse_map类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.*;/*** @author : Cyan_RA9* @version : 21.0*/
public class Traverse_map {public static void main(String[] args) {//演示 : 遍历Map集合方式二Map map = new HashMap();map.put("比企谷八幡", "雪之下雪乃");map.put("神田空太", "稚名真白");map.put("三鹰仁", "上井草美咲");//1.获取所有的值Collection values = map.values();Iterator iterator = values.iterator();//2.遍历获取到的值System.out.println("================迭代器遍历:=================");while (iterator.hasNext()) {String value = (String) iterator.next();System.out.println(value);}System.out.println("================增强for遍历:================");for (Object value : values) {System.out.println(value);}}
}
运行结果 :

3.方式三 —— 通过entrySet方法
①步骤 :
1.根据entrySet方法获取到——保存了Map.Entry类型元素的——Set集合
2.利用迭代器或者增强for遍历获取到的Set集合
3.注意,Set集合中的元素,编译类型是Entry类型,但运行类型其实是Node类型
②代码演示 :
up仍以Traverse_map类为演示类,代码如下 :
package csdn.knowledge.api_tools.gather.map;import java.util.*;/*** @author : Cyan_RA9* @version : 21.0*/
public class Traverse_map {public static void main(String[] args) {//演示 : 遍历Map集合方式三Map map = new HashMap();map.put("比企谷八幡", "雪之下雪乃");map.put("神田空太", "稚名真白");map.put("三鹰仁", "上井草美咲");//1.根据entrySet方法获取到保存键值对的Set集合Set mappings = map.entrySet();Iterator iterator = mappings.iterator();//2.遍历获取到的Set集合System.out.println("================迭代器遍历:=================");while (iterator.hasNext()) {Object entry = iterator.next();System.out.println(entry);}System.out.println("================增强for遍历:================");for (Object mapping : mappings) {Map.Entry entry = (Map.Entry) mapping; //多态(Entry类型指向了Node类型)System.out.println(entry);}}
}
运行结果 :

六、HashMap源码解读(深度讲解)
链接如下 :
https://blog.csdn.net/TYRA9/article/details/129781346?spm=1001.2014.3001.5501
https://blog.csdn.net/TYRA9/article/details/129781346?spm=1001.2014.3001.5501 HashMap类主要内容包括 :
①HashMap类简介
②HashMap类的底层实现
③HashMap类的源码分析
七、Hashtable及其子类Properties源码解读
链接如下 :
https://blog.csdn.net/TYRA9/article/details/129821222?spm=1001.2014.3001.5501
https://blog.csdn.net/TYRA9/article/details/129821222?spm=1001.2014.3001.5501 Hashtable及其子类Properties主要内容包括 :
①Hashtable类详解(1° 简介;2° 特点;3° 底层实现;4° 比较)
②Properties类详解(1° 简介;2° 特点;3° 具体使用)
八、TreeMap源码解读
链接如下 :
https://blog.csdn.net/TYRA9/article/details/129906619?spm=1001.2014.3001.5501
https://blog.csdn.net/TYRA9/article/details/129906619?spm=1001.2014.3001.5501 TreeMap主要内容如下 :
①TreeSet类简介
②TreeSet类的底层实现
③TreeMap类简介
④TreeMap类的底层实现
九、完结撒❀
🆗,以上就是我们Map集合的全部内容了。重点仍是Map接口的几个常用实现类的源码分析。下一小节内容up计划与大家分享关于Collections类的内容,Collections类讲解完后,整个API常用工具——集合就算是讲解完毕了。感觉阅读!
System.out.println("END----------------------------------------------------------------------------");
相关文章:
java 双列集合Map 万字详解
目录 一、前言 二、概述 三、特点 四、常用方法 1. V put(K key, V value) : Δ代码演示 : 2. V get(Object key) : Δ代码演示 : 3. V remove(Object key) : Δ代码演示 : 4. int size() : Δ代码演示 : 5. default V replace(K key, V value) : Δ代码演示 : 6. bo…...
【数据结构】二叉树<遍历>
【二叉树遍历】|-前序-中序-后序-层序-|<二叉树的遍历>1.前序遍历【递归】2.中序遍历【递归】3.后序遍历【递归】4.层序遍历【非递归】4.1判断是否是完全二叉树<二叉树的遍历> 在学习二叉树遍历之前我们先了解下二叉树的概念。 二叉树是: 1.空树 2.非空…...
linux查看硬件信息
dmidecode用于在linux下获取硬件信息,遵循SMBIOS/DMI标准,可获取包括BIOS、系统、主板、处理器、内存、缓存等等硬件信息 1、查看CPU信息cat /proc/cpuinfo、lscpu 型号:cat /proc/cpuinfo|grep name|cut -f2 -d:|uniq -c 物理核:…...
吐血整理,互联网大厂最常见的 1120 道 Java 面试题(带答案)整理
前言 作为一个 Java 程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪 50 万&#x…...
RabbitMQ如何避免消息丢失
目录1.生产者没有成功把消息发送到MQ2.RabbitMQ接收到消息之后丢失了消息3.消费者弄丢了消息前言 首先明确一点一条消息的传送流程:生产者->MQ->消费者 我们根据这三个依次讨论 1.生产者没有成功把消息发送到MQ 丢失的原因:因为网络传输的不稳定…...
做算法题的正确姿势(不断更新)
不停的反思自己,总结建议 做一道算法题,不能去死磕。 如果看一道题,半小时内,没有清晰的思路,就看题解!!!你可能觉得你有点思路,就往里死钻,结果可能就像进…...
p85 CTF夺旗-JAVA考点反编译XXE反序列化
数据来源 图片来源 Java 常考点及出题思路 考点技术:xxe,spel 表达式,反序列化,文件安全,最新框架插件漏洞等 设法间接给出源码或相关配置提示文件,间接性源码或直接源码体现等形式 https://www.cnblog…...
FastJson——JSO字符串与对象的相互转化
一、FastJson介绍 Fastjson是阿里巴巴的开源SON解析库它可以解析JSON格式的字符串,支持将java Bean序列化为ISON字符串,也可以从JSON字符串反序列化到JavaBean。 Fastjson的优点 速度快 fastjson相对其他JSON库的特点是快,从2011年fastj…...
《程序员面试金典(第6版)》面试题 08.08. 有重复字符串的排列组合(回溯算法,全排列问题)C++
题目描述 有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。 示例1: 输入:S “qqe” 输出:[“eqq”,“qeq”,“qqe”] 示例2: 输入:S “ab” 输出:[“ab”, “ba”] 提示: 字符都是英文字母。…...
k8s API限流——server级别整体限流和客户端限流
1. 背景 为了防止突发流量影响apiserver可用性,k8s支持多种限流配置,包括: MaxInFlightLimit,server级别整体限流Client限流EventRateLimit, 限制eventAPF,更细力度的限制配置 1.1 MaxInFlightLimit限流 apiserver…...
在华为做了三年软件测试被裁了,我该怎么办
近年来,随着经济环境的变化和企业战略的调整,员工被裁员的情况变得越来越普遍。无论是因为企业经营困难还是因为业务调整,员工们都可能面临被裁员的风险。如果你也遇到了这样的情况,那么你应该怎么办呢? 首先…...
Spring cloud 限流的多种方式
在频繁的网络请求时,服务有时候也会受到很大的压力,尤其是那种网络攻击,非法的。这样的情形有时候需要作一些限制。本文主要介绍了两种限流方法,感兴趣的可以了解一下 目录 一、实战基于 Spring cloud Gateway 的限流 二、基于阿…...
Linux命令·top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止…...
springmvc之系列文章
springmvc之编程步骤 springmvc初始化过程 用WebServlet和WebFilter干掉web.xml 没有web.xml怎么写web程序 一次GET请求在springmvc中是的处理流程 springMVC的handler都有哪些类型 springmvc主要组件简单介绍 springmvc 的Servlet WebApplicationContext springmvc 的…...
Matlab实现深度学习(附上完整仿真源码)
文章目录简单案例完整仿真代码下载简单案例 深度学习是一种能够自动学习和提取数据特征的机器学习方法,它已经在图像识别、语音识别、自然语言处理等领域取得了显著的成果。而Matlab作为一个强大的数学计算工具,也提供了丰富的深度学习工具箱࿰…...
我的谷歌书签
Form 表单 | Element Plusa Vue 3 based component library for designers and developershttps://element-plus.gitee.io/zh-CN/component/form.html#%E5%AF%B9%E9%BD%90%E6%96%B9%E5%BC%8F three.js exampleshttp://www.yanhuangxueyuan.com/threejs/examples/#software_geo…...
day3 数据库技术考点汇总
一、重点知识点 基本概念:三级模式-两级映像、数据库设计数据库模型:E-R模型、关系模型、关系代数(结合SQL语言)规范化:函数依赖、健与约束、范式、模式分解事务并发:并发三种问题、三级封锁协议数据库新技…...
学剪辑难吗 如何使用会声会影2023做剪辑视频
很多剪辑初学者都问过一个问题,学剪辑难吗?其实不论学什么,只要用心学都不难,今天我们就来讲讲如何学做剪辑视频,感兴趣的小伙伴们不要走开!一、学剪辑难吗 其实学剪辑并不是件难事,但是需要掌握…...
django学习日记
1、虚拟环境 virtualenv "加虚拟环境名字" 在当前目录下创建一个虚拟环境 进入虚拟环境执行activate进入该虚拟环境,再执行deactivate退出虚拟环境 安装一个包来管理虚拟环境,每次创建虚拟环境都放到同一位置,以及在任意位置都可…...
在线教学视频课程如何防止学员挂机?
阿酷TONY / 2023-3-31 / 长沙 / 原创 / 要不?交个朋友吧? 在线教学视频课程如何防止学员挂机?siri:这是个有意思的问题哈~~~在线教育、在线企业培训机构通常是如何处理的呢? 答:在视频播放过程中,弹出问题…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
