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

菜鸟之路Day10一一集合进阶(三)

菜鸟之路Day10一一集合进阶(三)

作者:blue

时间:2025.1.28

文章目录

  • 菜鸟之路Day10一一集合进阶(三)
    • 0.概述
    • 1.双列集合概述
    • 2.Map
      • 2.1Map的常见API
      • 2.2Map的遍历方式
    • 3.HashMap
    • 4.LinkedHashMap
    • 5.TreeMap

0.概述

文章学习自黑马程序员BV1yW4y1Y7Ms,今天是甲辰龙年最后一天,除夕,祝大家蛇年快乐。

1.双列集合概述

特点:①双列集合一次需要存一对数据,分别为键和值

​ ②键不能重复,值可以重复

​ ③键和值是一一对应的,每一个键只能找到自己对应的值

​ ④键+值这个整体 我们称之为“键值对”或者“键值对对象”,在Java中叫做“Entry对象”

体系结构

在这里插入图片描述

2.Map

Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用

2.1Map的常见API

package MapAPI;import java.util.HashMap;
import java.util.Map;public class MapAPIDemo {public static void main(String[] args) {//因为Map是一个接口所以只能创建它的实现类对象Map<String,String> mp = new HashMap<>();//1.V put(K key,V value) 添加元素//在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map集合当中//在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,会把被覆盖的值进行返回mp.put("郭靖","黄蓉");mp.put("杨过","小龙女");mp.put("端木燕","灵灵");String res = mp.put("端木燕","欧克瑟");System.out.println(mp);System.out.println(res);//灵灵被替换了System.out.println("==========================");//2.V remote(Object key)  根据键删除键值对元素String res1 = mp.remove("杨过");System.out.println(mp);//杨过被删了System.out.println(res1);//返回值是小龙女System.out.println("==========================");//3.void clear() 移除所有的键值对元素//4.boolean containsKey(Object key) 判断集合是否包含指定的键System.out.println(mp.containsKey("郭靖"));//trueSystem.out.println(mp.containsKey("杨过"));//falseSystem.out.println("==========================");//5.boolean containsValue(Object value) 判断集合是否包含指定的值System.out.println(mp.containsValue("黄蓉"));//trueSystem.out.println("==========================");//6.boolean isEmpty()   判断集合是否为空System.out.println(mp.isEmpty());//false,说明不空System.out.println("==========================");//7.int size()  集合长度,也就是集合中键值对的个数System.out.println(mp.size());//2}
}

2.2Map的遍历方式

方式一:键找值,将键放入单列集合中,遍历单列集合

package MapAPI;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo1 {public static void main(String[] args) {Map<String,String> mp = new HashMap<>();mp.put("杨过","小龙女");mp.put("郭靖","黄蓉");mp.put("张无忌","赵敏");//获取所有的键,把键都放到单列集合中Set<String> set = mp.keySet();for(String key:set){System.out.println(key+"<->"+mp.get(key));//获取对应的value}}
}

方式二:键值对(Entry对象),通过一个方法获取一个键值对对象,返回一个Set集合

package MapAPI;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo1 {public static void main(String[] args) {Map<String,String> mp = new HashMap<>();mp.put("杨过","小龙女");mp.put("郭靖","黄蓉");mp.put("张无忌","赵敏");Set<Map.Entry<String,String>> entries = mp.entrySet();for(Map.Entry<String,String> entry:entries){System.out.println(entry.getKey()+"->"+entry.getValue());}}
}

方式三:Lambda表达式遍历

package MapAPI;import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;public class MapDemo1 {public static void main(String[] args) {Map<String,String> mp = new HashMap<>();mp.put("杨过","小龙女");mp.put("郭靖","黄蓉");mp.put("张无忌","赵敏");//匿名内部类mp.forEach(new BiConsumer<String, String>() {@Overridepublic void accept(String key, String value) {System.out.println(key+"->"+value);}});System.out.println("===============================");//Lambda表达式mp.forEach((String key, String value)->{System.out.println(key+"->"+value);});}
}

3.HashMap

特点:①无序,不重复,无所引

​ ②HashMap底层是哈希表结构的

​ ③依赖hashCode方法和equals方法保证键的唯一

​ ④如果存储的是自定义对象,需要重写hashCode和equals方法

练习一:

创建一个HashMap集合,键是学生对象,值是籍贯String

要求:同姓名,同年龄认为是同一个学生

package MapAPI;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class HashMapDemo1 {public static void main(String[] args) {HashMap<Student,String> hm = new HashMap<>();Student s1 = new Student("zhangsan",23);Student s2 = new Student("lisi",23);Student s3 = new Student("wangwu",23);hm.put(s1,"guangdong");hm.put(s2,"jiangsu");hm.put(s3,"shandong");Student s4 = new Student("zhangsan",23);hm.put(s4,"zhejiang");//因为我们重写了hashCode方法,所以s4被认为是重复的对象,故zhangsan的籍贯被替换成zhejiangSet<Map.Entry<Student,String>> entries = hm.entrySet();for(Map.Entry<Student,String> entry:entries){System.out.println(entry.getKey().getName()+" "+entry.getKey().getAge()+" "+entry.getValue());}}
}

练习二:

某个班级80名学生,现在需要组成秋游活动,班长提供了四个景点依次是(A,B,C,D),每个学生只能选择一个景点,请统计出最终哪个景点想去的人数最多。

package MapAPI;import java.util.*;public class HashMapDemo2 {public static void main(String[] args) {String[] arr = {"A","B","C","D"};//随机投票ArrayList<String> list = new ArrayList<>();Random rd = new Random();for(int i=0;i<80;i++){int index = rd.nextInt(4);list.add(arr[index]);}HashMap<String,Integer> hm = new HashMap<>();for(String name : list){if(hm.containsKey(name)){//先判断存不存在int cnt = hm.get(name);//存在先加cnt++;hm.put(name,cnt);}else {//不存在就更新,值为1hm.put(name,1);}}System.out.println(hm);//获取最大值int max=0;Set<Map.Entry<String,Integer>> entries = hm.entrySet();for(Map.Entry<String,Integer> entry : entries){int cnt = entry.getValue();if(cnt>max) max = cnt;}System.out.println(max);//最大值所在的景点for(Map.Entry<String,Integer> entry : entries){int cnt = entry.getValue();if(cnt==max) System.out.println(entry.getKey());}}
}

4.LinkedHashMap

特点:①由键决定:有序,不重复,无索引

​ ②这里的有序是指保证存储和取出的元素顺序一致

​ 原理:底层数据结构是哈希表,只是每个键值对元素又额外多了一个双向链表的机制记录存储的顺序

除了有序,它的特点和其他双列集合的实现类都一样,在此就不过多赘述了。

5.TreeMap

①TreeMap跟TreeSet的底层原理一样,都是红黑树结构

②由键决定特性:不重复,无索引,可排序

③可排序:对键进行排序

④注意:默认按照键的从小到大进行排序,也可以自己规定键的排序规则

代码书写两种排序规则:

​ ①实现Comparable接口,指定比较规则

​ ②创建集合时传递Comparator比较器对象,指定比较规则

基本应用:

需求1:

​ 键:整数表示id;

​ 值:字符串表示商品名称;

​ 要求:按照id的升序排列,按照id的降序排列

public class TreeMapDemo1 {public static void main(String[] args) {/*TreeMap<Integer,String> tm = new TreeMap<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1-o2;//升序//return o2-o1 降序}});*///Lambda表达式TreeMap<Integer,String> tm = new TreeMap<>((Integer o1, Integer o2)->{return o1-o2;//升序//return o2-o1 降序});tm.put(4,"aaa");tm.put(2,"aaa");tm.put(7,"ggg");System.out.println(tm);}
}

需求2:

​ 键:学生对象

​ 值:籍贯

​ 要求:按照学生年龄的升序排列,年龄一样按照姓名的字母排列,同姓名视为同一个人

package MapAPI;import java.util.Objects;public class Student implements Comparable<Student>{private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//实现Comparable接口,重写compareTo方法@Overridepublic int compareTo(Student o) {//按照学生年龄的升序排列,年龄一样按照姓名的字母排列,同姓名视为同一个人int i = this.getAge()-o.getAge();i=i==0?this.getName().compareTo(o.getName()):i;return i;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}
public class TreeMapDemo2 {public static void main(String[] args) {TreeMap<Student,String> hm = new TreeMap<>();Student stu1 = new Student("zhangsan",17);Student stu2 = new Student("lisi",17);Student stu3 = new Student("wangwu",13);Student stu4 = new Student("zhangsan",17);hm.put(stu1,"广东");hm.put(stu2,"浙江");hm.put(stu3,"江苏");System.out.println(hm.put(stu4,"山东"));//由于stu4和stu1是一个人,所以广东被替换System.out.println(hm);}
}

需求3:

​ 字符串“aababcabcdabcde”

​ 请统计字符串中每一个字符出现的次数,并按照以下格式输出

​ 输出结果:a(5) b(4) c(3) d(2) e(1)

public class TreeMapDemo3 {public static void main(String[] args) {String str = "aababcabcdabcde";TreeMap<Character,Integer> tm = new TreeMap<>();for(int i=0;i<str.length();i++){char ch = str.charAt(i);if(tm.containsKey(ch)){//看看这个键在不在int cnt = tm.get(ch);cnt++;tm.put(ch,cnt);}else{tm.put(ch,1);}}Set<Map.Entry<Character,Integer>> entries = tm.entrySet();for(Map.Entry<Character,Integer> entry : entries){System.out.print(entry.getKey()+"("+entry.getValue()+")");}}
}

相关文章:

菜鸟之路Day10一一集合进阶(三)

菜鸟之路Day10一一集合进阶&#xff08;三&#xff09; 作者&#xff1a;blue 时间&#xff1a;2025.1.28 文章目录 菜鸟之路Day10一一集合进阶&#xff08;三&#xff09;0.概述1.双列集合概述2.Map2.1Map的常见API2.2Map的遍历方式 3.HashMap4.LinkedHashMap5.TreeMap 0.概…...

Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓

Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓 1.SDK解压到家目录下的 rk3588_android_sdk 目录 一. 全部编译 ###执行 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib gmultilib…...

Workerman和Swoole有什么区别

Workerman和Swoole都是PHP的socket服务器框架&#xff0c;它们之间存在一些显著的区别&#xff0c;主要体现在以下几个方面&#xff1a; 一、实现语言与性能 Workerman&#xff1a;使用纯PHP实现。由于PHP本身的性能限制&#xff0c;Workerman在某些方面可能不如C语言实现的框…...

MySQL(1)

数据库 基础篇 MYSQL概述 SQL 函数 约束 多表查询 事务 进阶篇 存储索引 索引 SQL优化 试图/存储过程/触发器 锁 InnoDB核心 MySQL管理 运维篇 日志 主从复制 分库本表 读写分离 基础篇 MySQL 数据库概念&#xff1a;存储数据的仓库&#xff0c;数据是有…...

DeepseekMath:超强开源数学模型(论文详解)

摘要 近日&#xff0c;中国团队Deepseek推出了一款名为DeepSeekMath的7B开源数学模型&#xff0c;这个模型在数学方面的表现令人惊叹。DeepSeekMath 7 B在不依赖外部工具包和投票技术的情况下&#xff0c;在竞赛级MATH基准测试中获得了51.7%的分数&#xff0c;接近Gemini-Ultr…...

OpenCSG月度更新2025.1

1月的OpenCSG取得了一些亮眼的成绩 在2025年1月&#xff0c;OpenCSG在产品和社区方面继续取得了显著进展。产品方面&#xff0c;推出了AutoHub浏览器自动化助手&#xff0c;帮助用户提升浏览体验&#xff1b;CSGHub企业版功能全面升级&#xff0c;现已开放试用申请&#xff0c…...

简易CPU设计入门:控制总线的剩余信号(四)

项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了&#xff0c;那就不用重复下载了。如果还没有下载&#xff0c;那么&#xff0c;请大家点击下方链接&#xff0c;来了解下载本项目的CPU源代码的方法。 CSDN文章&#xff1a;下载本项目代码 上述链接为本项目…...

scrol家族 offset家族 client家族学习

Scroll 系列属性 scrollTop & scrollLeft scrollTop: 返回元素的内容已向上滚动的部分的高度。scrollLeft: 返回元素的内容已向左滚动的部分的宽度。 scrollHeight & scrollWidth scrollHeight: 返回元素的实际高度&#xff0c;包括由于溢出而在屏幕上不可见的内容…...

人工智能发展历程

AI 发展历史时间表 1943年&#xff0c;美国神经科学家沃伦斯特麦卡洛克和逻辑学家沃尔特皮茨提出了神经元的数学模型&#xff0c;第一个神经元的数学模型- MP 模型。为现代人工智能学科的建立奠定了基础。1950年&#xff0c;艾伦图灵提出了著名的“图灵测试”&#xff0c;使得…...

vim交换文件的工作原理

在vim中&#xff0c;交换文件是一个临时文件&#xff0c;当我们使用vim打开一个文件进行编辑&#xff08;一定得是做出了修改才会产生交换文件&#xff09;时候&#xff0c;vim就会自动创建一个交换文件&#xff0c;而之后我们对于文件的一系列修改都是在交换文件中进行的&…...

利用 PyTorch 动态计算图和自动求导机制实现自适应神经网络

在深度学习任务中&#xff0c;不同任务的复杂度千差万别。为了解决复杂任务对模型容量的需求&#xff0c;同时避免简单任务因过度拟合导致的性能下降&#xff0c;我们可以构建一个能够根据任务自动调整网络结构的神经网络。在 PyTorch 中&#xff0c;动态计算图和自动求导机制为…...

docker如何查看容器启动命令(已运行的容器)

docker ps 查看正在运行的容器 该命令主要是为了详细展示查看运行时的command参数 # 通过docker --no-trunc参数来详细展示容器运行命令 docker ps -a --no-trunc | grep <container_name>通过docker inspect命令 使用docker inspect&#xff0c;但是docker inspect打…...

学历赋

崇岳北峙&#xff0c;紫气东临&#xff1b;学海横流&#xff0c;青云漫卷。连九陌而贯八荒&#xff0c;纳寒门而载贵胄。墨池泛舟&#xff0c;曾照匡衡凿壁之光&#xff1b;杏坛飞絮&#xff0c;犹闻仲尼弦歌之音。然观当下&#xff0c;黉宇接天如笋立&#xff0c;青衫叠浪似云…...

vue和reacts数据响应式的差异

Vue 的数据响应式&#xff1a; 原理&#xff1a; Vue 使用 Object.defineProperty 或 Proxy&#xff08;在 Vue 3 中&#xff09;来实现数据的响应式。当创建 Vue 实例时&#xff0c;会对 data 对象中的属性进行遍历&#xff0c;将其转换为响应式属性。对于 Object.definePro…...

doris: MAP数据类型

MAP<K, V> 表示由K, V类型元素组成的 map&#xff0c;不能作为 key 列使用。 目前支持在 Duplicate&#xff0c;Unique 模型的表中使用。 K, V 支持的类型有&#xff1a; BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL, DECIMALV3, DAT…...

在计算机上本地运行 Deepseek R1

Download Ollama on Linux Download Ollama on Windows Download Ollama on macOS Deepseek R1 是一个强大的人工智能模型&#xff0c;在科技界掀起了波澜。它是一个开源语言模型&#xff0c;可以与 GPT-4 等大玩家展开竞争。但更重要的是&#xff0c;与其他一些模型不同&…...

LeetCode 16. 排列序列

思路 排序数组&#xff1a;对数组进行从小到大排序。 遍历固定一个元素&#xff1a;遍历数组中的每个元素作为三个数中的第一个数&#xff0c;固定该元素后&#xff0c;使用双指针在剩余的子数组中寻找另外两个数。 双指针逼近target&#xff1a;对于每个固定的元素&#xff…...

【C++高并发服务器WebServer】-9:多线程开发

本文目录 一、线程概述1.1 线程和进程的区别1.2 线程之间共享和非共享资源1.3 NPTL 二、线程操作2.1 pthread_create2.2 pthread_exit2.3 pthread_join2.4 pthread_detach2.5 patch_cancel2.6 pthread_attr 三、实战demo四、线程同步五、死锁六、读写锁七、生产消费者模型 一、…...

全解:Redis RDB持久化和AOF持久化

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

视频外绘技术总结:Be-Your-Outpainter、Follow-Your-Canvas、M3DDM

Diffusion Models专栏文章汇总:入门与实战 前言:视频Inpaint的技术很火,但是OutPaint却热度不高,这篇博客总结比较经典的几篇视频Outpaint技术。其实Outpaint在runway等工具上很火,可是学术界对此关注比较少,博主从这三年的顶会中找到了最具代表性的三篇论文解读。 目录 …...

LLM - 大模型 ScallingLaws 的设计 100B 预训练方案(PLM) 教程(5)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145356022 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与…...

Python帝王學集成-母稿

引用:【【全748集】这绝对是2024最全最细的Python全套教学视频,七天看完编程技术猛涨!别再走弯路了,从零基础小白到Python全栈这一套就够了!-哔哩哔哩】 https://b23.tv/lHPI3XV 语法基础 Python解释器与pycharm编辑器安装 - 定义:Python解释器负责将Python代码转换为计…...

MySQL数据导入与导出

在现代软件开发中,数据管理是一个重要的核心环节,而数据库则是进行数据管理的主要工具。MySQL 作为一款开源的关系型数据库管理系统,被广泛应用于企业和个人开发项目中。对于学习编程的初学者或是自学者来说,掌握 MySQL 的基本操作尤为重要,尤其是数据的导入与导出功能。这…...

微服务面试题:概览

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

每日一题 430. 扁平化多级双向链表

430. 扁平化多级双向链表 简单 /*class Solution { public:Node* flatten(Node* head) {Node* tail nullptr;return dfs(head);}Node* dfs(Node* head){Node* cur head;while(cur ! nullptr){if(cur->child ! nullptr){Node* curChild getTail(cur->child);Node* te…...

冯诺依曼系统及操作系统

目录 一.冯诺依曼体系结构 二.操作系统 三.系统调用和库函数概念 一.冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由一…...

双指针(典型算法思想)——OJ例题算法解析思路

目录 一、283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 1. 问题分析 2. 算法思路 3. 代码逐行解析 4. 示例运行 5. 时间复杂度与空间复杂度 6. 总结 二、1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 1. 问题分析 2. 算法思路 3. 代码逐行解析 4. …...

大数据Hadoop入门1

目录 相关资料 第一部分 1.课程内容大纲和学习目标 2.数据分析和企业数据分析方向 3.数据分析基本流程步骤 4.大数据时代 5.分布式和集群 6.Linux操作系统概述 7.VMware虚拟机概念与安装 8.centos操作系统的虚拟机导入 9.VMware虚拟机常规使用、快照 第二部分 1.课…...

Ubuntu-手动安装 SBT

文章目录 前言Ubuntu-手动安装 SBT1. SBT是什么?1.1. SBT 的特点1.2. SBT 的基本功能1.3. SBT 的常用命令 2. 安装2.1. 下载2.2. 解压 sbt 二进制包2.3. 确认 sbt 可执行文件的位置2.4. 设置执行权限2.5. 创建符号链接2.6. 更新 PATH 环境变量2.7. 验证 sbt 安装 前言 如果您觉…...

人工智能:农业领域的变革力量

在当今科技飞速发展的时代&#xff0c;人工智能正以前所未有的态势渗透进各个领域&#xff0c;农业也不例外。想象一下&#xff0c;未来的农田里&#xff0c;农民不再是弯腰劳作的形象&#xff0c;而是坐在高科技的“智能农场”里&#xff0c;悠闲地喝着咖啡&#xff0c;指挥着…...

Qt——界面优化

一.QSS 1.背景 在网页前端开发领域中&#xff0c; CSS 是⼀个至关重要的部分。 描述了⼀个网页的 "样式"。 从而起到对网页美化的作用。 所谓样式&#xff0c;包括不限于大小&#xff0c;位置&#xff0c;颜色&#xff0c;背景&#xff0c;间距&#xff0c;字体等等…...

Qt Designer and Python: Build Your GUI

1.install pyside6 2.pyside6-designer.exe 发送到桌面快捷方式 在Python安装的所在 Scripts 文件夹下找到此文件。如C:\Program Files\Python312\Scripts 3. 打开pyside6-designer 设计UI 4.保存为simple.ui 文件&#xff0c;再转成py文件 用代码执行 pyside6-uic.exe simpl…...

HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法

HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法 翻遍了CSDN&#xff0c;试了所有办法都没办法&#xff0c;最后偶然间竟然解决了 解决方法其实很简单&#xff1a;本地模拟器下载路径下面不能有中文。。。。。 切换正确路径以后&#xff0c;成功运行&#xff0c;哦…...

java中的算数运算符

1.java中的加法是“”。 简单数字的相加对于byte.short.char.int类型数字相加时进行整形提升至int,对于数据类型大于int的long.float.double数据类型有参与计算时&#xff0c;需要进行整形提升至最高的数据类型。 有字符串类型的相加&#xff0c;将数字视为字符串进行字符串的…...

【数据结构】二叉树

二叉树 1. 树型结构&#xff08;了解&#xff09;1.1 概念1.2 概念&#xff08;重要&#xff09;1.3 树的表示形式&#xff08;了解&#xff09;1.4 树的应用 2. 二叉树&#xff08;重点&#xff09;2.1 概念2.2 两种特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储2.5 二叉树的…...

websocket实现

由于安卓资源管理器展示的路径不尽相同,各种软件保存文件的位置也不一定一样.对于普通用户上传文件时,查找文件可能是一个麻烦的事情.后来想到了一个办法,使用pc端进行辅助上传. 文章目录 实现思路1.0 实现定义web与客户端通信数据类型和数据格式web端websocket实现web端对客户…...

AI软件外包需要注意什么 外包开发AI软件的关键因素是什么 如何选择AI外包开发语言

1. 定义目标与需求 首先&#xff0c;要明确你希望AI智能体做什么。是自动化任务、数据分析、自然语言处理&#xff0c;还是其他功能&#xff1f;明确目标可以帮助你选择合适的技术和方法。 2. 选择开发平台与工具 开发AI智能体的软件时&#xff0c;你需要选择适合的编程语言、…...

电梯系统的UML文档12

5.2.1 DoorControl 的状态图 图 19: DoorControl 的状态图 5.2.2 DriveControl 的状态图 图 20: DriveControl 的状态图 5.2.3 LanternControl 的状态图 图 21: LanternControl 的状态图 5.2.4 HallButtonControl 的状态图 图 22: HallButtonControl 的状态图 5.2.5 CarB…...

【华为路由的arp配置】

华为路由的arp配置 ARP&#xff1a;IP地址与MAC地址的映射。 R1: g0/0/0:10.1.1.254/24 g0/0/1:10.1.2.254/24 PC1: 10.1.1.1/16 PC2: 10.1.1.2/16 PC3: 10.1.2.3/16 动态ARP 查看PC1的arp表&#xff0c;可以看到&#xff0c;列表为空。 查看R1的arp表 在PC3上ping命令测…...

Web 代理、爬行器和爬虫

目录 Web 在线网页代理服务器的使用方法Web 在线网页代理服务器使用流程详解注意事项 Web 请求和响应中的代理方式Web 开发中的请求方法借助代理进行文件下载的示例 Web 服务器请求代理方式代理、网关和隧道的概念参考文献说明 爬虫的工作原理及案例网络爬虫概述爬虫工作原理 W…...

node 爬虫开发内存处理 zp_stoken 作为案例分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 主要说3种我们补环境过后如果用…...

【Samba】Ubuntu20.04 Windows 共享文件夹

【Samba】Ubuntu20.04 Windows 共享文件夹 前言整体思路检查 Ubuntu 端 和 Windows 网络通信是否正常创建共享文件夹安装并配置 Samba 服务器安装 Samba 服务器创建 Samba 用户编辑 Samba 配置文件重启 Samba 服务器 在 Windows 端 访问 Ubuntu 的共享文件夹 前言 本文基于 Ub…...

windows下本地部署安装hadoop+scala+spark-【不需要虚拟机】

注意版本依赖【本实验版本如下】 Hadoop 3.1.1 spark 2.3.2 scala 2.11 1.依赖环境 1.1 java 安装java并配置环境变量【如果未安装搜索其他教程】 环境验证如下&#xff1a; C:\Users\wangning>java -version java version "1.8.0_261" Java(TM) SE Runti…...

GitHub 仓库的 Archived 功能详解:中英双语

GitHub 仓库的 Archived 功能详解 一、什么是 GitHub 仓库的 “Archived” 功能&#xff1f; 在 GitHub 上&#xff0c;“Archived” 是一个专门用于标记仓库状态的功能。当仓库被归档后&#xff0c;它变为只读模式&#xff0c;所有的功能如提交代码、创建 issue 和 pull req…...

银行卡三要素验证接口:方便快捷地实现银行卡核验功能

银行卡三要素验证API&#xff1a;防止欺诈交易的有力武器 随着互联网的发展&#xff0c;电子支付方式也越来越普及。在支付过程中&#xff0c;银行卡是最常用的支付工具之一。然而&#xff0c;在一些支付场景中&#xff0c;需要对用户的银行卡信息进行验证&#xff0c;以确保支…...

Banana JS,一个严格子集 JavaScript 的解释器

项目地址&#xff1a;https://github.com/shajunxing/banana-js 特色 我的目标是剔除我在实践中总结的JavaScript语言的没用的和模棱两可的部分&#xff0c;只保留我喜欢和需要的&#xff0c;创建一个最小的语法解释器。只支持 JSON 兼容的数据类型和函数&#xff0c;函数是第…...

引领未来科技潮流:Web3 前沿发展趋势

随着技术不断发展&#xff0c;我们正站在一个全新的互联网时代的门槛上&#xff0c;Web3的出现正在重新定义互联网的构架和运作方式。Web3&#xff0c;作为互联网的下一代发展趋势&#xff0c;其核心思想是去中心化、开放与用户主权。与现有的Web2.0相比&#xff0c;Web3更加注…...

OpenCV:在图像中添加高斯噪声、胡椒噪声

目录 在图像中添加高斯噪声 高斯噪声的特性 添加高斯噪声的实现 给图像添加胡椒噪声 实现胡椒噪声的步骤 相关阅读 OpenCV&#xff1a;图像处理中的低通滤波-CSDN博客 OpenCV&#xff1a;高通滤波之索贝尔、沙尔和拉普拉斯-CSDN博客 OpenCV&#xff1a;图像滤波、卷积与…...

在深度Linux (Deepin) 20中安装Nvidia驱动

文章创作不易&#xff0c;麻烦大家点赞关注收藏一键三连。 在Deepin上面跑Tensorflow, pytorch等人工智能框架不是一件容易的事情。特别是如果你要使用GPU&#xff0c;就得有nvidia的驱动。默认情况下Deepin系统自带的是nouveau开源驱动。这是没办法用tensorflow的。下面内容是…...

PC端实现PDF预览(支持后端返回文件流 || 返回文件URL)

一、使用插件 插件名称&#xff1a;vue-office/pdf 版本&#xff1a;2.0.2 安装插件&#xff1a;npm i vue-office/pdf^2.0.2 1、“vue-office/pdf”: “^2.0.2”, 2、 npm i vue-office/pdf^2.0.2 二、代码实现 // 引入组件 &#xff08;在需要使用的页面中直接引入&#x…...