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

【集合】Java 8 - Stream API 17种常用操作与案例详解

文章目录

  • Java8 Stream API 17种常用操作与案例详解
    • 1. collect():将流中的元素收集到集合中
    • 2. filter():根据条件过滤流中的元素
    • 3. map():元素映射为另一个值
    • 4. forEach():对流中的元素执行操作
    • 5. flatMap():将流中的元素展开成一个流
    • 6. reduce():累积操作
    • 7. distinct():去重
    • 8. sorted():排序
    • 9. limit():截断流
    • 10. skip():跳过前 n 个元素
    • 11. anyMatch() / allMatch() / noneMatch():条件匹配
    • 12. findFirst() 和 findAny()
    • 13. max() / min():获取最大值或最小值
    • 14. peek():调试流中的元素
    • 15. count():统计流中的元素个数
    • 16. groupBy():将流中的元素按照指定的条件分组
    • 17. partitioningBy():将流中的元素按照指定的条件分成两个部分。
  • 总结补充

Java8 Stream API 17种常用操作与案例详解

在 Java 8 中,Stream API 提供了一种高效、简洁的数据处理方式,特别适合对集合、数组等数据源进行操作。Stream 通过函数式编程风格,支持链式调用,避免了传统 for 循环中复杂的代码逻辑。本文将详细介绍 17 种常用 Stream 操作方法,并通过示例代码帮助大家理解如何应用于实际开发中。


1. collect():将流中的元素收集到集合中

collect() 方法用于将流中的数据收集到集合、映射等数据结构中,非常常见。

示例

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");// 收集名字长度大于 3 的元素到 List 集合
List<String> filteredNames = names.stream().filter(name -> name.length() > 3).collect(Collectors.toList());
System.out.println(filteredNames); // Output: [Alice, Charlie, David]

理解要点
collect() 是终止操作,它将流中的元素重新汇总到新的集合中。这里的 Collectors.toList() 是一种常见用法,用于收集元素到 List 集合中。


2. filter():根据条件过滤流中的元素

filter() 用于筛选出满足特定条件的元素,它返回一个新的流,流中的元素都满足过滤条件。

示例

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 过滤出偶数
List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
System.out.println(evenNumbers); // Output: [2, 4]

理解要点
这里 n -> n % 2 == 0 是一个 Lambda 表达式,表示只保留能被 2 整除的元素。filter() 不会修改原数据,而是返回一个新的流。


3. map():元素映射为另一个值

map() 会对流中的每个元素执行操作,并将结果映射成一个新的流。

示例

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");// 转换为大写
List<String> upperCaseNames = names.stream().map(String::toUpperCase).collect(Collectors.toList());
System.out.println(upperCaseNames); // Output: [ALICE, BOB, CHARLIE]

理解要点

  • map() 接受一个函数作为参数,将流中的每个元素转换为新形式。
  • String::toUpperCase 是方法引用,等同于 name -> name.toUpperCase()

4. forEach():对流中的元素执行操作

forEach() 是终止操作,用于遍历流中的元素并执行指定的操作。

示例

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 输出每个元素
numbers.stream().forEach(System.out::println);
// Output: 1 2 3 4 5

理解要点

  • System.out::println 是方法引用,等同于 n -> System.out.println(n)
  • forEach() 不返回新流,只执行操作。

5. flatMap():将流中的元素展开成一个流

flatMap() 用于处理嵌套集合(比如 List),它将每个元素的流展开,并合并成一个新的流。

示例

List<List<Integer>> listOfLists = Arrays.asList(Arrays.asList(1, 2, 3), Arrays.asList(4, 5), Arrays.asList(6, 7, 8)
);// 合并多个列表为一个流
List<Integer> mergedList = listOfLists.stream().flatMap(List::stream).collect(Collectors.toList());
System.out.println(mergedList); // Output: [1, 2, 3, 4, 5, 6, 7, 8]

理解要点

  • flatMap() 的作用是 “摊平” 元素,比如将多个小集合合并成一个大集合。
  • 这里 List::stream 表示将每个子集合转换为流。

6. reduce():累积操作

reduce() 用于将流中的元素进行聚合操作,例如求和、求最大值等。

示例

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 求和
int sum = numbers.stream().reduce(0, Integer::sum);
System.out.println(sum); // Output: 15

理解要点

  • reduce 需要一个初始值(这里是 0),一个二元操作(Integer::sum)。
  • 操作会从初始值开始累加流中的元素。

7. distinct():去重

distinct() 方法用于去掉流中的重复元素,最终返回一个去重后的流。

示例

List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 3, 4);// 去重
List<Integer> distinctNumbers = numbers.stream().distinct().collect(Collectors.toList());
System.out.println(distinctNumbers); // Output: [1, 2, 3, 4]

理解要点
distinct() 会基于元素的 equals()hashCode() 方法判断是否重复。


8. sorted():排序

sorted() 可以对流中的元素进行排序,支持自然排序和自定义排序。

示例

List<Integer> numbers = Arrays.asList(5, 3, 1, 4, 2);// 升序排序
List<Integer> sortedNumbers = numbers.stream().sorted()	//Comparator.comparing().collect(Collectors.toList());
System.out.println(sortedNumbers); // Output: [1, 2, 3, 4, 5]

理解要点

  • 默认情况下,sorted() 使用自然排序(升序)。
  • 如果需要自定义排序,可以传入比较器。

9. limit():截断流

limit() 用于获取流中的前 n 个元素。

示例

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7);// 只获取前 3 个元素
List<Integer> limitedNumbers = numbers.stream().limit(3).collect(Collectors.toList());
System.out.println(limitedNumbers); // Output: [1, 2, 3]

实际场景
例如分页功能中,可以结合 skip() 实现数据的分页查询。


10. skip():跳过前 n 个元素

skip() 用于跳过流中的前 n 个元素,返回剩余元素的流。

示例

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7);// 跳过前 4 个元素
List<Integer> skippedNumbers = numbers.stream().skip(4).collect(Collectors.toList());
System.out.println(skippedNumbers); // Output: [5, 6, 7]

结合 limit()

// 获取第 4 到第 6 个元素
List<Integer> subList = numbers.stream().skip(3).limit(3).collect(Collectors.toList());
System.out.println(subList); // Output: [4, 5, 6]

实际场景
跳过已处理数据,优化批量处理的效率。


11. anyMatch() / allMatch() / noneMatch():条件匹配

这三个方法用于判断流中的元素是否符合条件:

  • anyMatch():是否有任意一个元素满足条件。
  • allMatch():所有元素都满足条件。
  • noneMatch():没有任何元素满足条件。

示例

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 是否存在大于 4 的元素
boolean anyMatch = numbers.stream().anyMatch(n -> n > 4);
System.out.println(anyMatch); // Output: true// 是否所有元素都小于 6
boolean allMatch = numbers.stream().allMatch(n -> n < 6);
System.out.println(allMatch); // Output: true// 是否没有大于 5 的元素
boolean noneMatch = numbers.stream().noneMatch(n -> n > 5);
System.out.println(noneMatch); // Output: true

实际场景

  • 数据校验,例如用户输入是否符合条件。
  • 筛选判断,例如是否存在符合条件的订单。

12. findFirst() 和 findAny()

  • findFirst():返回流中的第一个元素,通常在顺序流中使用。
  • findAny():返回流中的任意一个元素,适合并行流操作,效率更高。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 使用 findFirst 方法查找第一个元素
Optional<Integer> first = numbers.stream().findFirst();// 使用 findAny 方法查找任意一个元素
Optional<Integer> any = numbers.stream().findAny();// 输出结果
System.out.println("First: " + first.orElse(null)); // Output: 1
System.out.println("Any: " + any.orElse(null));     // Output: 1 或其他任意元素

特别说明:

  • 顺序流 中,findAny() 的行为与 findFirst() 相似,通常会返回第一个元素。
  • 并行流 中,findAny() 可能会返回流中任意位置的元素,以提高性能。

13. max() / min():获取最大值或最小值

max()min() 用于根据比较器找出流中的最大或最小元素。

示例

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 获取最大值
Optional<Integer> max = numbers.stream().max(Integer::compareTo);
System.out.println(max.get()); // Output: 5// 获取最小值
Optional<Integer> min = numbers.stream().min(Integer::compareTo);
System.out.println(min.get()); // Output: 1

理解要点

  • max()min() 返回 Optional 对象,需使用 .get() 获取值。
  • 可以使用自定义比较器实现复杂比较逻辑。

14. peek():调试流中的元素

peek() 用于对流中的每个元素执行操作,但不会中断流的操作。适合用来调试。

示例

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");// 打印调试信息
List<String> filteredNames = names.stream().peek(name -> System.out.println("Before filter: " + name)).filter(name -> name.length() > 3).peek(name -> System.out.println("After filter: " + name)).collect(Collectors.toList());
System.out.println(filteredNames);

输出

Before filter: Alice  
After filter: Alice  
Before filter: Bob  
Before filter: Charlie  
After filter: Charlie  
[Alice, Charlie]

理解要点
peek() 通常用于调试,打印中间状态,帮助排查问题。


15. count():统计流中的元素个数

count() 是一个终止操作,用于统计流中元素的个数。

示例

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");// 统计名字长度大于 3 的元素个数
long count = names.stream().filter(name -> name.length() > 3).count();
System.out.println(count); // Output: 2

实际场景
数据统计,比如计算符合条件的记录数量。


16. groupBy():将流中的元素按照指定的条件分组

sorted(Comparator) 支持根据自定义逻辑对流中的元素进行排序。

示例

 List<String> words = Arrays.asList("dog", "cat", "elephant", "rat", "ant");// 按字符串长度分组
Map<Integer, List<String>> groupedByLength = words.stream().collect(Collectors.groupingBy(String::length));System.out.println(groupedByLength); 
// 输出: {3=[dog, cat, rat, ant], 8=[elephant]}

理解要点

  • Collectors.groupingBy() 返回值作为键。

17. partitioningBy():将流中的元素按照指定的条件分成两个部分。

sorted(Comparator) 支持根据自定义逻辑对流中的元素进行排序。

示例

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);// 根据是否为偶数进行分区
Map<Boolean, List<Integer>> partitionedByEvenOdd = numbers.stream().collect(Collectors.partitioningBy(num -> num % 2 == 0));System.out.println(partitionedByEvenOdd); 
// 输出: {false=[1, 3, 5, 7, 9], true=[2, 4, 6, 8]}

分区结合统计信息:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);// 分区后统计每组的元素数量
Map<Boolean, Long> countByEvenOdd = numbers.stream()
.collect(Collectors.partitioningBy(num -> num % 2 == 0, Collectors.counting()));System.out.println(countByEvenOdd); 
// 输出: {false=5, true=4}

总结补充

通过以上 17 个常用操作,我们可以看到 Stream API 在数据处理方面提供了强大的功能。总结一些常见的使用场景:

  1. 数据过滤与筛选filter()distinct()limit()
  2. 数据转换与聚合map()flatMap()reduce()
  3. 数据统计与校验count()allMatch()anyMatch()
  4. 调试与排序peek()sorted()max()min()

合理使用 Stream API,能够让代码更加简洁、可读性更强,同时提高开发效率。希望这篇文章对大家有帮助!!👍★(疯狂暗示)


博客主页: 总是学不会.

相关文章:

【集合】Java 8 - Stream API 17种常用操作与案例详解

文章目录 Java8 Stream API 17种常用操作与案例详解1. collect()&#xff1a;将流中的元素收集到集合中2. filter()&#xff1a;根据条件过滤流中的元素3. map()&#xff1a;元素映射为另一个值4. forEach()&#xff1a;对流中的元素执行操作5. flatMap()&#xff1a;将流中的元…...

Spring(三)-SpringWeb-概述、特点、搭建、运行流程、组件、接受请求、获取请求数据、特殊处理、拦截器

文章目录 一、SpringWeb概述 二、SpringWeb特点 三、搭建SpringWeb&#xff08;在web项目中&#xff09; 1、导包 2、在web.xml文件中配置统一拦截分发器 DispatcherServlet 3、开启 SpringWEB 注解 4、处理器搭建 四、SpringWeb运行流程 五、SpringWeb组件 1、前端控…...

uni-app商品搜索页面

目录 一:功能概述 二:功能实现 一:功能概述 商品搜索页面,可以根据商品品牌,商品分类,商品价格等信息实现商品搜索和列表展示。 二:功能实现 1:商品搜索数据 <view class="search-map padding-main bg-base"> <view class…...

基于Spring Boot的远程教育网站

一、系统背景与意义 随着互联网技术的飞速发展和普及&#xff0c;远程教育已成为现代教育体系中的重要组成部分。它打破了时间和空间的限制&#xff0c;让学习者可以随时随地进行学习。基于Spring Boot的远程教育网站正是为了满足这一需求而设计的&#xff0c;它利用互联网技术…...

降低Mobx技术债问题-React前端数据流方案调研整理

我们现在主要是使用Mobx&#xff0c;但是Mobx的易于上手和灵活度也带来了很多预期以外的问题&#xff0c;随着项目的增长我们的代码技术债变得愈加沉重&#xff0c;不同的模块杂糅一起、单一store无限膨胀。 为此我们的调研是希望能找到一个更好的state配置、数据流的约定方案。…...

Linux通信System V:消息队列 信号量

Linux通信System V&#xff1a;消息队列 & 信号量 一、信号量概念二、信号量意义三、操作系统如何管理ipc资源&#xff08;2.36版本&#xff09;四、如何对信号量资源进行管理 一、信号量概念 信号量本质上就是计数器&#xff0c;用来保护共享资源。多个进程在进行通信时&a…...

STM32, GD32 cubemx CAN 低速率125kbps 报文丢失,解决了

用STM32 CUBEMX生成的GD32的 can程序&#xff0c;在500K波特率时可以正常使用&#xff0c;没有发现丢包&#xff0c;但速率降到250k和125k时&#xff0c;发送138帧数据&#xff0c;会丢失5个包。&#xff08;系统时钟168M&#xff0c;APB1的时钟42M&#xff09; 试了各种方法无…...

医疗服务品质提升:SSM 与 Vue 打造医院预约挂号系统方案

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了医院预约挂号系统的开发全过程。通过分析医院预约挂号系统管理的不足&#xff0c;创建了一个计算机管理医院预约挂号系统的方案。文章介绍了医院预约挂号系统的系…...

在UE5中调用ImGui图形界面库

ImGui是一个小巧灵活、简洁美观的图形界面库 首先我们直接参考Github https://github.com/SLSNe/Unreal5-ImGui 把项目下载下来后 打开项目目录或者引擎目录 项目根目录/Plugins/ImGui/ 或 UE5引擎根目录/Engine/Plugins/ 如果没有Plugins文件夹就新建一个 把项目放里面…...

汇聚点滴启迪思维(三)

switch存在的问题 缺少default语句 ‌switch语句可以包含一个可选的default语句&#xff0c;用于处理没有与任何case标签匹配的情况。如果没有default语句&#xff0c;并且没有与表达式匹配的case标签&#xff0c;程序将不会执行任何操作。 除了case switch包含的大括号中间…...

C#代码实现把中文录音文件(.mp3 .wav)转为文本文字内容

我们有一个中文录音文件.mp3格式或者是.wav格式&#xff0c;如果我们想要提取录音文件中的文字内容&#xff0c;我们可以采用以下方法&#xff0c;不需要使用Azure Speech API 密钥注册通过离线的方式实现。 1.首先我们先在NuGet中下载两个包 NAudio 2.2.1、Whisper.net 1.7.3…...

第18篇 :深入剖析systemverilog中 randomize 再谈失败案例(六)

今天,我们再谈一随机失败案例,希望再次同大家续探讨这块内容。 一 案例分析 我们先看一例子,代码如下: 上述代码中,共有5处使用 randomize 随机。它们的随机对象都是类 helloworld_test 中的 rand shortint unsigned counter ; 其中,counter 被赋予初始数值 66 。 …...

(耗时4天制作)详细介绍macOS系统 本博文含有全英版 (全文翻译稿)

(耗时4天制作)详细介绍macOS系统 本博文含有全英版-CSDN博客 全篇英文 Introduction to the macOS System I. Overview of macOS macOS is a proprietary operating system developed by Apple Inc., primarily used for Macintosh (Mac) computers. It is the first comme…...

React与Vue的区别(相同点和不同点)

前言 JavaScript是世界上最流行的语言之一&#xff0c;React和Vue是JS最流行的两个框架。但各有优缺点&#xff0c;本文将详细对比两大框架 一、框架背景 React React是由Facebook开发的用于构建用户界面的JavaScript库&#xff0c;Facebook对市场上JavaScript MVC框架都不太…...

flutter --no-color pub get 超时解决方法

新建Flutter项目后&#xff0c;运行报错&#xff0c;需要执行pub get 点击Run ‘flutter pub get’ … … … 卡着&#xff0c;不动了&#xff0c;提示超时 是因为墙的问题 解决方案&#xff1a; 添加以下环境变量 变量名: PUB_HOSTED_URL 变量值: https://pub.flutter-io.cn …...

MacPorts 中安装高/低版本软件方式,以 RabbitMQ 为例

查询信息 这里以 RabbitMQ 为例&#xff0c;通过搜索得到默认安装版本信息&#xff1a; port search rabbitmq-server结果 ~/Downloads> port search rabbitmq-server rabbitmq-server 3.11.15 (net)The RabbitMQ AMQP Server ~/Downloads>获取二进制文件 但当前官网…...

启动报错java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus

报错信息图片 日志&#xff1a; Exception in thread "Quartz Scheduler [scheduler]" java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus先说我自己遇到的问题&#xff0c;我们项目在web设置了自定义的log输出路径&#xff0c;多了一个 / 去…...

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——11上位机与小车交互

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——11上位机与小车交互 ​ 根据上一节的配置&#xff0c;目前已经建立了通讯环境&#xff0c;接下来给大家带来上位机与小车交互 这一章节里面也有图片大家去地瓜开发者社区看对应文章吧链接...

harbor离线安装 配置https 全程记录

1. 下载harbor最新版本 下载网址: 找最新的版本: https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz 这里我直接使用迅雷下载, 然后上传 1.1解压 sudo tar -xf harbor-offline-installer-v2.11.2.tgz -C /opt/ 2. 配置Harb…...

使用生存分析进行游戏时间测量

标题&#xff1a;Playtime Measurement with Survival Analysis 作者&#xff1a;Markus Viljanen, Antti Airola, Jukka Heikkonen, Tapio Pahikkala 译者&#xff1a;游戏数据科学 1 游戏中的游戏时间 1.1 为什么游戏时间很重要 游戏分析在理解玩家行为方面变得越来越重…...

Fiddler勾选https后google浏览器网页访问不可用

一、说明 最近电脑重新安装系统后&#xff0c;之前的所有工具都需要重新安装和配置&#xff0c;有个项目需要抓包https包查看一下请求的内容&#xff0c;通过Fiddler工具&#xff0c;但是开启后&#xff0c;发现https的无法抓取&#xff0c;同时google浏览器也不无法访问互联网…...

【信息系统项目管理师】高分论文:论信息系统项目的成本管理(社区网格化管理平台系统)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文一、规划成本管理二、估算成本三、制定预算四、控制成本论文 2022年6月,我作为项目经理负责了XX市社区网格化管理平台系统集成项目建设,该项目投资金额512.5万元,建设周期12个月。该项目由XX市综治办发…...

vscode配置markdown代码片段snippet不生效问题

markdown.json {"cpp code": {"prefix": "cpp","body": ["cpp","$1","",],"description": "cpp code"} }Ctrl Shift P 后输入settings ,然后选择open settings (json)&#xff…...

小脑萎缩与维生素补充:科学饮食,助力健康

小脑萎缩是一种神经影像学表现&#xff0c;常见于某些遗传症和神经系统变性类疾病&#xff0c;患者常表现出共济失调、语言功能障碍、眼球运动障碍以及肌肉功能障碍等症状。尽管小脑萎缩目前尚无完全治愈的方法&#xff0c;但通过合理的饮食调整和必要的维生素补充&#xff0c;…...

基于SSM+Vue的个性化旅游推荐系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着社会经济的快速发展和人民生活水平的不断提高&#xff0c;旅游业逐渐成为我国国民经济的重要支柱产业。然而&#xff0c;在旅游市场日益繁荣的背景下&#xff0c;游客对于旅游产品和服务的需求逐渐呈现出多样化和个性化的趋…...

灰狼优化算法(GWO)与狼群算法(WPA)的全面比较

灰狼优化算法&#xff08;GWO&#xff09;与狼群算法&#xff08;WPA&#xff09;都是基于狼群行为的智能优化算法&#xff0c;但它们在多个方面存在显著的区别。以下是对这两种算法的全方面比较&#xff1a; 一、算法起源与灵感 1. 灰狼优化算法&#xff08;GWO&#xff09;&…...

探索未知,乐享惊喜 —— 盲盒APP开发,开启您的个性化惊喜之旅!

在这个瞬息万变的数字时代&#xff0c;我们总在寻找那些能触动心灵、带来无限可能的小确幸。为了满足您对未知的好奇与对惊喜的渴望&#xff0c;我们匠心打造了一款全新的盲盒APP&#xff0c;旨在为您的生活增添一抹不同寻常的色彩&#xff0c;让每一次打开都是一次全新的探索与…...

音视频学习(二十五):ts

TS&#xff08;MPEG-TS&#xff0c;MPEG Transport Stream&#xff09; 是一种广泛应用于流媒体传输和存储的容器格式。它最早由 MPEG&#xff08;Moving Picture Experts Group&#xff09;组织制定&#xff0c;用于视频和音频的压缩编码。在 HLS&#xff08;HTTP Live Stream…...

MVVM、MVC、MVP 的区别

MVVM&#xff08;Model-View-ViewModel&#xff09;、MVC&#xff08;Model-View-Controller&#xff09;和MVP&#xff08;Model-View-Presenter&#xff09;是三种常见的软件架构模式&#xff0c;它们在客户端应用开发中被广泛使用。每种模式都有其特定的设计理念和应用场景&…...

低延迟!实时处理!中软高科AI边缘服务器,解决边缘计算多样化需求!

根据相关统计&#xff0c;随着物联网的发展和5G技术的普及&#xff0c;到2025年&#xff0c;全球物联网设备连接数将达到1000亿&#xff0c;海量的计算数据使得传输到云端再处理的云计算方式显得更捉襟见肘。拥有低延迟、实时处理、可扩展性和更高安全性的边缘计算应运而生&…...

CSS|14 z-index

z-index z-index表示谁压盖着谁&#xff0c;数值大的会压盖住数值小的。只有定位的元素才有z-index值&#xff0c;只有设置了固定定位、相对定位、绝对定位了的元素&#xff0c;才会拥有z-indexz-index的值是没有单位的&#xff0c;值是一个正整数&#xff0c;默认的z-index值…...

Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索

作者&#xff1a;来自 Elastic Jeff Vestal 了解如何使用开放爬虫与 semantic text 字段结合来轻松抓取网站并使其可进行语义搜索。 Elastic Open Crawler 演练 我们在这里要做什么&#xff1f; Elastic Open Crawler 是 Elastic 托管爬虫的后继者。 Semantic text 是 Elasti…...

【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题

目录 为什么要结合项目与算法&#xff1f; 1. 蓝桥杯与《苍穹外卖》项目的结合 实例&#xff1a;基于蓝桥杯算法思想的订单配送路径规划 问题描述&#xff1a; 代码实现&#xff1a;使用动态规划解决旅行商问题 代码解析&#xff1a; 为什么这个题目与蓝桥杯相关&#x…...

powershell基础(1)

powershell基础(1) 1. 安装PowerShell 首先&#xff0c;确保你的计算机上已经安装了PowerShell。对于Windows 10及更高版本&#xff0c;PowerShell通常是默认安装的。你也可以从微软官网下载并安装最新版本的PowerShell Core。 2. 打开PowerShell 在Windows搜索栏中输入“P…...

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案

随着科技高速发展&#xff0c;视频信号经过数字压缩&#xff0c;通过互联网宽带或者移动4G网络传递&#xff0c;可实现远程视频监控功能。将这一功能运用于施工现场安全管理&#xff0c;势必会大大提高管理效率&#xff0c;提升监管层次。而这些&#xff0c;通过Liveweb监控系统…...

踩准智能汽车+机器人两大风口,速腾聚创AI+机器人应用双线爆发

日前&#xff0c;RoboSense速腾聚创交出了一份亮眼的Q3财报。受到多重利好消息影响&#xff0c;其股价也应势连续大涨。截止12月9日发稿前&#xff0c;速腾聚创股价近一个月内累计涨幅已超88%。 财务数据方面&#xff0c;速腾聚创在今年前三季度实现总收入约11.3亿元&#xff0…...

本地maven项目打包部署到maven远程私库

目的&#xff1a;在自己的maven项目中&#xff0c;要把当前maven项目部署到maven私库&#xff0c;供其他人引入依赖使用。 首先要确保你当前能访问到你的私库&#xff0c;能拉私库的maven依赖即可。 maven部署命令&#xff1a; mvn deploy:deploy-file -Dmaven.test.skiptrue -…...

青少年编程与数学 02-004 Go语言Web编程 14课题、数据操作

青少年编程与数学 02-004 Go语言Web编程 14课题、数据操作 一、数据操作二、CRUD说明&#xff1a; 三、数据验证为什么需要数据验证&#xff1f;Go Web应用中的数据验证示例步骤 1: 定义订单结构体步骤 2: 实现验证逻辑步骤 3: 在HTTP处理函数中使用验证 四、数据格式化什么是数…...

Java 中 ConcurrentHashMap 和 HashMap 能存 null 吗?深挖原理和使用场景

前言 当你使用 HashMap 或 ConcurrentHashMap 时&#xff0c;可能会冒出一个经典问题&#xff1a;它们能存储 null 键或 null 值吗&#xff1f; 初学者可能觉得无所谓&#xff0c;试一下不就知道了&#xff0c;但在真实项目中&#xff0c;这个问题可能导致严重的 bug。今天我们…...

【JavaWeb后端学习笔记】Spring Task实现定时任务处理

Spring Task是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 主要的应用场景有&#xff1a;纪念日提醒&#xff0c;处理订单未支付&#xff0c;还款提醒等。 1、corn表达式 使用Spring Task首先需要了解corn表达式&#xff0c;通过cor…...

【CSS in Depth 2 精译_087】14.4:CSS 中的浮动特效以及在文字环绕中的应用 + 14.5:本章小结

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 14 章 蒙版、形状与剪切】 ✔️ 14.1 滤镜 14.1.1 滤镜的类型14.1.2 背景滤镜 14.2 蒙版 14.2.1 带渐变效果的蒙版特效14.2.2 基于亮度来定义蒙版14.2.3 其他蒙版属…...

探索 Python编程 调试案例:计算小程序中修复偶数的bug

在 学习Python 编程的过程里&#xff0c;会遇到各种各样的bug。而修复bug调试代码就像是一场充满挑战的侦探游戏。每一个隐藏的 bug 都是谜题&#xff0c;等待开发者去揭开真相&#xff0c;让程序可以顺利运行。今天&#xff0c;让我们通过一个实际案例&#xff0c;深入探索 Py…...

探索 CI/CD 工具的力量

CI/CD 工具是什么&#xff1f; CI/CD 工具是开发者的“生产力加速器”。它通过自动化代码构建、测试、部署等流程&#xff0c;消除了繁琐的手动操作&#xff0c;确保开发和运维的无缝衔接。借助这些工具&#xff0c;开发者不仅能够更快地发布产品&#xff0c;还能更早发现问题…...

MySQL和Oracle的区别

MySQL和Oracle的区别 MySQL是轻量型数据库&#xff0c;并且免费&#xff0c;没有服务恢复数据。 Oracle是重量型数据库&#xff0c;收费&#xff0c;Oracle公司对Oracle数据库有任何服务。 1.对事务的提交 MySQL默认是自动提交&#xff0c;而Oracle默认不自动提交&#xff0…...

亚马逊云科技 re:Invent 2024重磅发布!Amazon Bedrock Data Automation 预览版震撼登场

AWS re:Invent 2024 已圆满落幕&#xff01; 在本次大会中&#xff0c;隆重推出了一项全新功能&#xff1a; Amazon Bedrock Data Automation&#xff08;预览版&#xff09;震撼登场&#xff01; New Amazon Bedrock capabilities enhance data processing and retrieval | …...

SQL语句练习

阅读《SQL必知必会》&#xff08;第五版&#xff09;然后结合往常表做的练习记录 这里使用的数据库时sqlite3,使用的工具时navicat 表资源链接https://wenku.baidu.com/view/349fb3639b6648d7c1c74652.html 表录入后如上图所示。后面如果有多张表之间的操作&#xff0c;在引入…...

保姆级教程Docker部署RabbitMQ镜像

目录 1、创建挂载目录 2、运行RabbitMQ容器 3、Compose运行RabbitMQ容器 4、开启界面插件 5、查看RabbitMQ运行状态 6、常见问题处理 1、创建挂载目录 # 创建宿主机rabbitMQ挂载目录 sudo mkdir -p /data/docker/rabbitmq/log# 修改log目录权限 sudo chmod 777 /data/do…...

P6打卡—Pytorch实现人脸识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.检查GPU import torch import torch.nn as nn import matplotlib.pyplot as plt import torchvisiondevicetorch.device("cuda" if torch.cuda.is_…...

clickhouse-介绍、安装、数据类型、sql

1、介绍 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据报告。 OLAP&#xff08;On-Line A…...

基于单片机的智能婴儿床监护系统多功能婴儿床摇篮系统

功能介绍 以STM32单片机为控制核心蓝牙传输控制可以进行哭闹检测、尿床检测、音乐播放、语音提醒、哭闹时可以进行摇床有不同的模式自动模式和睡眠模式 实物可做&#xff0c;其他功能也可以 电路图 PCB 源代码 u8 Temperature_High; //室内温度高阈值 u8 Temperature_…...