【大数据】MapReduce 编程--索引倒排--根据“内容 ➜ 出现在哪些文件里(某个单词出现在了哪些文件中,以及在每个文件中出现了多少次)
将 Hadoop 所需的 JAR 文件添加到项目中,确保可以使用 Hadoop 的 API
JAR (Java Archive) 文件是一种用于打包多个 Java 类文件、资源文件(如图片、配置文件等)以及元数据的压缩文件格式。它类似于 ZIP 文件,但 JAR 文件通常用于 Java 应用程序或库的分发。
在 Hadoop 或其他 Java 项目中,JAR 文件是执行程序的主要载体。通过将所有相关的类文件打包到一个 JAR 文件中,可以方便地管理和分发
API (Application Programming Interface) 是一组定义了如何通过不同软件组件之间的交互来实现某个功能的接口
目标:将多个文档(比如 1.txt、2.txt、3.txt)中出现的每一个“单词”以及该单词出现在“哪些文档”中、“每个文档中出现几次”列出。
正排索引(正常顺序)
一个“文件”里有哪些“单词”?
文件名 | 包含的单词 |
---|---|
1.txt | MapReduce, simple, powerful |
倒排索引 ---把每个单词,反过来,查它在哪些文件里出现,并统计每个文件出现几次。
某个“单词”在哪些“文件”里出现过?
搜索引擎用这个来找“某个关键词在哪些网页里
Map 过程
从文本中提取每个单词的出现信息,并记录它出现在了哪个文件中
Mapper<Object, Text, Text, Text>
是泛型类型,表示输入的 key 是 Object
类型(一般用于偏移量,表示文件的每行),输入的 value 是 Text
类型(即一行文本)。Mapper 的输出 key 和 value 都是 Text
类型
private Text keyInfo = new Text();
private Text valueInfo = new Text();
private FileSplit split;
keyInfo
和 valueInfo
是用于输出的 key 和 value,类型是 Text---
字符串类型
map
方法
key 在 MapReduce 中通常是行的偏移量
context
: 用来将 Mapper 的输出写入到下游的 Reducer
split = (FileSplit) context.getInputSplit();
context.getInputSplit()
用于获取当前任务分割的信息。FileSplit
是用于表示输入数据切割的信息,这里通过它来获取当前文本数据所属的文件路径。
StringTokenizer
来分割输入行的单词。StringTokenizer
会根据空格、制表符等字符来切分字符串
MapReduce is powerful and simple变成
["MapReduce", "is", "powerful", "and", "simple"]
while (itr.hasMoreTokens()) {keyInfo.set(itr.nextToken() + " " + split.getPath().getName().toString());valueInfo.set("1");context.write(keyInfo, valueInfo);
}
循环处理每个单词。每个单词都会作为倒排索引的 key,文件名作为值的一部分
keyInfo.set(itr.nextToken() + " " + split.getPath().getName().toString())
: 每个单词和它所在的文件名组成一个新的 key
public class MyMapper extends Mapper<Object, Text, Text, Text> {private Text keyInfo = new Text(); // map输出的key变量(词+文件名)private Text valueInfo = new Text(); // map输出的value变量("1")private FileSplit split; // 用于获取当前行的文件名public void map(Object key, Text value, Context context)throws IOException, InterruptedException {split = (FileSplit) context.getInputSplit(); // 获取当前数据来自哪个文件// 分词,把当前行的字符串按空格分开StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {// 每个词 + 文件名作为keykeyInfo.set(itr.nextToken() + " " + split.getPath().getName());valueInfo.set("1"); // 出现了一次,记为“1”(注意是字符串"1")context.write(keyInfo, valueInfo); // 输出结果}}
}
MyMapper
是我们自定义的“映射器类”,继承自 Mapper<输入类型, 输出类型>
MapReduce is powerful and simple
程序会依次输出的是 (单词+文件名, 1)MapReduce 2.txt -> 1
is 2.txt -> 1
powerful 2.txt -> 1
and 2.txt -> 1
simple 2.txt -> 1
Combine 阶段(MyCombiner)
局部词频统计,即对 mapper 输出的内容,在每个节点内部做一次小聚合
("MapReduce 2.txt", "1")
("MapReduce 2.txt", "1")
变成("MapReduce", "2.txt:2")
public class MyCombiner extends Reducer<Text, Text, Text, Text> {private Text info = new Text();public void reduce(Text key, Iterable<Text> values, Context context)throws IOException, InterruptedException {int sum = 0;for (Text value : values) {sum += Integer.parseInt(value.toString());}String[] str = key.toString().split(" ");key.set(str[0]); // 把key改成单词info.set(str[1] + ":" + sum); // value为 文件名:词频context.write(key, info); // 输出如:MapReduce -> 2.txt:1}
}
int sum = 0;
for (Text value : values) {
sum += Integer.parseInt(value.toString()); // 把"1"变成数字加起来
}
然后再把 key 拆开(因为 key 是 "MapReduce 2.txt")
String[] str = key.toString().split(" "); // 分成:str[0]="MapReduce", str[1]="2.txt"
key.set(str[0]); // 只留下单词
info.set(str[1] + ":" + sum); // 文件名:次数
context.write(key, info); // ("MapReduce", "2.txt:2")
Reduce 阶段(MyReducer)
将来自多个mapper/combiner的同一个单词的 value 们拼起来
// Reducer类:处理 Map 阶段聚合后的数据(每个“单词”,对应一组“文件名:次数”)
// 泛型说明:输入是<Text, Text>,输出也是<Text, Text>
public class MyReducer extends Reducer<Text, Text, Text, Text> {// 用于存储最终拼接好的 value(也就是:某个词出现在哪些文件中)private Text result = new Text();// reduce 函数是核心,每个单词(key)对应一个文件频率列表(values)// Text key:是某个单词,例如 "MapReduce"// Iterable<Text> values:是这个单词在不同文件中的频次,如 ["1.txt:2", "2.txt:1"]// Context context:是 Hadoop 框架提供的上下文,用于输出结果public void reduce(Text key, Iterable<Text> values, Context context)throws IOException, InterruptedException {// 创建一个字符串用于拼接所有文件名:词频,格式如 "1.txt:2 ; 2.txt:1 ;"String value = "";// 遍历 values 中的每一项,把它们拼接到字符串里for (Text value1 : values) {// 把每个文件名:词频 加到 value 字符串中,并在末尾加上分号分隔value += value1.toString() + " ; ";}// 把拼接好的字符串设置为最终输出的 valueresult.set(value);// 把结果写到上下文中,表示输出一行结果// 比如: ("MapReduce", "1.txt:2 ; 2.txt:1 ;")context.write(key, result);}
}
步骤 | 输入 | 输出 |
---|---|---|
Mapper | 行(每次一行) | (单词 文件名, "1") |
Combiner | (单词 文件名, ["1", "1", ...]) | (单词, 文件名:词频) |
Reducer | (单词, [文件名1:词频, 文件名2:词频...]) | 输出倒排索引 |
执行MapReduce
-
提示用户输入输入路径和输出路径(在 HDFS 上)。
-
设置 Map、Reduce 和 Combiner 类来完成倒排索引操作。
-
运行 MapReduce 程序。
-
程序运行完后,会读取输出文件并把结果打印在控制台上
// 引入必要的包(这些包是 Hadoop 提供的类)
import java.io.IOException;
import org.apache.hadoop.conf.Configuration; // Hadoop配置类
import org.apache.hadoop.fs.Path; // HDFS路径类
import org.apache.hadoop.io.Text; // MapReduce中用到的字符串类型
import org.apache.hadoop.mapreduce.Job; // MapReduce任务对象
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; // 输入路径设置
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; // 输出路径设置// 用于读取控制台输入
import java.util.Scanner;// HDFS 相关类(用于读取输出文件内容)
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import java.net.URI;public class MyRunner {// 主函数,程序的入口public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {// 创建 Hadoop 配置对象(可以理解为 MapReduce 程序的设置说明书)Configuration conf = new Configuration();// 获取一个 MapReduce 作业对象(Job 就是我们要交给 Hadoop 运行的任务)Job job = Job.getInstance(conf);// 指定当前这个 job 的主类(让 Hadoop 知道要打包哪个类)job.setJarByClass(MyRunner.class);// 设置使用的 Mapper、Reducer 和 Combiner(都在你自己写的类中)job.setMapperClass(MyMapper.class); // 指定 Map 阶段使用的类job.setReducerClass(MyReducer.class); // 指定 Reduce 阶段使用的类job.setCombinerClass(MyCombiner.class); // 指定 Combine 阶段使用的类(可选)// 设置 Reducer 输出的 key 和 value 的类型(结果的 key 和 value)job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);// 设置 Mapper 输出的 key 和 value 类型(中间过程的 key 和 value)job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(Text.class);// 用来获取用户输入的输入路径和输出路径(通过命令行输入)Scanner sc = new Scanner(System.in);System.out.print("inputPath:"); // 提示输入路径String inputPath = sc.next(); // 读取路径(如 /input/)System.out.print("outputPath:"); // 提示输出路径String outputPath = sc.next(); // 读取路径(如 /output/)// 设置输入路径(注意:加上 HDFS 前缀)FileInputFormat.setInputPaths(job, new Path("hdfs://master:9000" + inputPath));// 设置输出路径(注意:不能和以前的输出目录重复)FileOutputFormat.setOutputPath(job, new Path("hdfs://master:9000" + outputPath));// 提交 job 并等待完成(true 表示打印运行日志)job.waitForCompletion(true);// --- 以下代码是:任务完成后,读取输出文件内容并打印到控制台 ---try {// 获取 Hadoop 文件系统对象FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());// 指定要读取的结果文件路径(MapReduce 输出文件名固定为 part-r-00000)Path srcPath = new Path(outputPath + "/part-r-00000");// 打开输出文件FSDataInputStream is = fs.open(srcPath);System.out.println("Results:");// 一行一行读取文件内容并打印while (true) {String line = is.readLine(); // 读取一行if (line == null) {break; // 读完就退出循环}System.out.println(line); // 打印这一行}// 关闭文件输入流is.close();} catch (Exception e) {e.printStackTrace(); // 如果读取失败,输出错误信息}}
}
相关文章:
【大数据】MapReduce 编程--索引倒排--根据“内容 ➜ 出现在哪些文件里(某个单词出现在了哪些文件中,以及在每个文件中出现了多少次)
将 Hadoop 所需的 JAR 文件添加到项目中,确保可以使用 Hadoop 的 API JAR (Java Archive) 文件是一种用于打包多个 Java 类文件、资源文件(如图片、配置文件等)以及元数据的压缩文件格式。它类似于 ZIP 文件,但 JAR 文件通常用于 …...
使用PHP对接东南亚、日本、印度和印度尼西亚股票数据源
本文将介绍如何通过StockTV提供的API接口,使用PHP语言来获取并处理东南亚(包括马来西亚、新加坡等)、日本、印度以及印度尼西亚的股票市场数据。我们将以获取市场列表、查询公司信息、查看涨跌排行榜为例,展示具体的操作流程。 准…...
从基础到高级:网站反爬技术全景解析与第三方工具对比
网站反爬与用户行为检测实战指南:从基础防护到智能识别 在当今数据驱动的互联网时代,网站面临着日益复杂的爬虫攻击和恶意行为威胁。本文将系统性地介绍网站反爬与用户行为检测的技术体系,包括基本原理、防护策略、第三方组件选型以及真实案例分析,帮助开发者构建更加安全…...
docker安装Prometheus+Grafana
docker 安装Prometheus 下载镜像 很多镜像服务器都不行了,我用的这个地址还可以 查看可用docker镜像地址:https://cloud.tencent.com/developer/article/2485043 docker pull docker.xuanyuan.me/prom/prometheus:latest启动 docker run -itd --name…...
解决 Linux Bash 脚本因换行符问题导致的 “bash^M: No such file or directory“ 错误
一、问题重现 最近在部署一个 Bash 脚本时遇到一个诡异的问题: bash $ chmod x deploy.sh $ ./deploy.sh /usr/bin/env: ‘bash\r’: No such file or directory 明明脚本内容正确,权限也设置好了,为什么会出现这样的错误? 二…...
DS1302实时时钟模块
目录 0.单片机定时器时钟的几个缺点: 1.DS1302介绍 2.引脚定义和应用电路 3.原理图 4.内部结果框图,RAM(寄存器) 5.寄存器定义 6.时序定义 7.DS1302时钟代码 第一步: 第二步: 第三步:…...
redis的List为什么用ziplist和quicklist
redis的List为什么用ziplist和quicklist 压缩列表(ziplist) 是一种节省内存的数据结构,最早是 Redis 中为了减少内存开销而引入的一种顺序存储结构。它不是标准库里的内容,而是某些底层系统(比如 Redis)在…...
Java 后端基础 Maven
Maven 1.什么是Maven 2.Maven的作用 Maven核心 Maven概述 IDEA集成Maven 1.创建Maven项目 点击设置里的 Project Structure 将jdk和编译语言进行设置 随后点击apply点击ok 2.Maven坐标 3.导入Maven项目 将文件夹复制到当前项目的目录下 在这个目录下,在磁盘中…...
开源情报的发展前景与行业运用
开源情报系统在实际中的应用正随着技术进步和社会需求的增长而不断拓展,其在国家安全、军事、经济、公共卫生等多个领域展现出显著价值。以下是结合最新动态与案例的综合分析: 一、国家安全:从传统到现代的情报体系升级 开源情报在国家安全…...
《黑马前端ajax+node.js+webpack+git教程》(笔记)——node.js教程+webpack教程(nodejs教程)
黑马程序员前端AJAX入门到实战全套教程,包含学前端框架必会的(ajaxnode.jswebpackgit),一套全覆盖 文章目录 Node.js与Webpack-01.Node.js入门定义和作用什么是前端工程化?(离不开node.js)Node.…...
Canvas设计图片编辑器全讲解(一)Canvas基础(万字图文讲解)
一、前序 近两年AI发展太过迅速,各类AI产品层出不穷,AI绘图/AI工作流/AI视频等平台的蓬勃发展,促使图片/视频等复杂内容的创作更加简单,让更多普通人有了图片和视频创作的机会。另一方面用户内容消费也逐渐向图片和视频倾斜。在“…...
disryptor和rabbitmq
disryptor和rabbitmq Disruptor 是什么? Disruptor 是一个由 LMAX Exchange 开发的高性能、低延迟的进程内(in-process)并发编程框架/库。它最初是为了解决金融交易系统中高吞吐量、低延迟消息传递的需求而设计的。 核心特点和设计理念&am…...
java基础-关键字:static、单例模式
1.例如:我们创造一个人的类,我们希望他是中国人类,所以我们希望所有对象都共有中国人的属性; import org.w3c.dom.ls.LSOutput;import java.sql.Connection; import java.sql.SQLOutput; import java.util.Arrays;public class Ma…...
深入解析PyTorch中MultiheadAttention的参数key_padding_mask与attn_mask
1. 基本背景 在multiheadattention中存在两个mask,一个参数是key_padding_mask,另外一个是attn_mask,尽管这两个参数是被人们所熟知的填充掩码和注意力掩码,但是深度理解以便清晰区分对于深刻理解该架构非常重要。 2. 参数Key_p…...
【Hadoop】--HA高可用搭建--3.2.2
修改环境配置文件 hadoop-env.sh # 在文件末尾添加以下内容: # java_home记得修改 export JAVA_HOME/usr/java/jdk1.8.0xxxx export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_ZKFC_USERroot export HDFS_JOURNALNODE_USERroot export YA…...
OpenCv(7.0)——银行卡号识别
文章目录 前言1.1 模板处理模块读取模板图像并预处理轮廓检测与处理构建数字模板库 1.2 银行卡图像预处理图像尺寸标准化形态学操作二值化与闭操作 1.3 卡号区域定位轮廓筛选逻辑 1.4 数字识别与结果展示完整代码展示总结 前言 本代码实现基于传统图像处理技术,通过…...
新手怎么样制作网站?
如果你是没有任何的建站基础,又没有任何的网站管理经验,那么应该如何开展网站制作呢?今天由我给大家分享一下网站制作的步骤和流程: 一、制定网站的核心主题: 在用户开展网站制作的之前,先确定一下以下的内…...
React集成百度【JSAPI Three】教程(002):设置不同的环境效果
文章目录 2、设置不同的天气2.1 安装antd前端UI库2.2 是否开启动态天空2.3 创建天气组件2.4 代码2.0版本下载2、设置不同的天气 2.1 安装antd前端UI库 安装命令: npm install antd --save2.2 是否开启动态天空 天气中的阴天、多云需要在开启动态天空后才能有效显示。在页面…...
Helm Chart 中配置多个 Docker Registry 地址以实现备用访问
在 Helm Chart 中配置多个 Docker Registry 地址以实现备用访问,可以通过以下几种方式实现: 1. 在 values.yaml 中定义多个 Registry 在 values.yaml 中定义主 Registry 和备用 Registry,以便在部署时灵活切换: # values.yaml …...
星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态
星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态 2024年5月15日,成都双流蛟龙社区党群服务中心迎来了一场备受业界瞩目的发布会——优雅草科技旗下”星云智控v1.0.0”物联网AI智控系统正式发布。本次发布会吸引了包括沃尔沃集团、新希…...
利用ffmpeg截图和生成gif
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180帧, 实测后发现如果视频是60fps,那么会从第10秒截取到第13秒-i input.mp4:指定输入视频文件。-ss 00:00:10:…...
OpenCV CUDA 模块中的矩阵算术运算-----在频域中执行两个复数频谱的逐元素乘法的函数mulSpectrums()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 mulSpectrums()是OpenCV CUDA 模块中用于在频域中执行两个复数频谱的逐元素乘法的函数。 该函数实现了以下运算: d s t s r c 1 ⋅…...
可视化图解算法41:搜索二维矩阵(二维数组中的查找)
1. 题目 牛客网 面试笔试TOP101 | LeetCode 74. 搜索二维矩阵 描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数…...
OpenCV CUDA模块中的矩阵算术运算------创建卷积操作对象的工厂方法 cv::cuda::createConvolution
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 createConvolution函数是OpenCV CUDA 模块中用于创建卷积操作对象的工厂方法。它返回一个指向 cv::cuda::Convolution 接口的智能指针࿰…...
从代码学习深度学习 - 用于预训练词嵌入的数据集 PyTorch版
文章目录 前言辅助工具代码绘图工具 (utils\_for\_huitu.py)数据处理工具 (utils\_for\_data.py)读取数据集 (PTB)构建词表下采样高频词中心词和上下文词的提取负采样小批量加载训练实例整合代码:构建数据加载器总结前言 词嵌入(Word Embedding)是将词语映射到低维连续向量…...
基于jsp+mysql+Spring的Springboot旅游网站管理系统设计和实现
基于jspmysqlSpring的Springboot旅游网站管理系统设计和实现 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定…...
【Rust迭代器】Rust迭代器用法解析与应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
嵌入式学习笔记DAY23(树,哈希表)
一、树 1.树的概念 之前我们一直在谈的是一对一的线性结构,现实中,还存在很多一对多的情况需要处理,一对多的线性结构——树。 树的结点包括一个数据元素及若干指向其子树的分支,结点拥有的子树数称为结点的度。度为0的结点称为叶…...
操作系统————五种页面置换算法(OPT,FIFO,LRU,NRU,加强版NRU)大总结
❤️❤️❤️算法1:最佳置换算法(OPT) 算法思想: 值得注意的是这是一种理想型算法,实际上并不可能实现,读者需要注意 下面我们来解析一下它的原理: 我们假设有三个内存块,对于页面…...
数据结构(二) 线性表
一. 线性表 1.定义 线性表是由n(n>0)个具有相同数据类型的数据元素构成的有限序列。其中,元素之间通过顺序关系排列,每个元素有且只有一个直接前驱和一个直接后继(除首尾元素外) 二.线性表的顺序表示(顺序表) 1.存储方式 使用连续的内存空间(数组)存储…...
TS04:高性能四通道自动灵敏度校准电容触摸传感器
在现代电子设备中,电容触摸传感器的应用越来越广泛,而高性能的传感器芯片是实现良好用户体验的关键。 TS04 四通道电容触摸传感器,凭借其自动灵敏度校准功能和多种特性,成为理想的解决方案。本文将简要介绍 TS04 的主要特性、功能…...
鸿蒙 系统-安全-程序访问控制-应用权限管控
Ability Kit 提供了一种允许应用访问系统资源(如:通讯录等)和系统能力(如:访问摄像头、麦克风等)的通用权限访问方式,来保护系统数据(包括用户个人数据)或功能࿰…...
ArcGIS Pro 3.4 二次开发 - 框架
环境:ArcGIS Pro SDK 3.4 .NET 8 文章目录 框架1 框架1.1 如何在 DockPane 可见或隐藏时订阅和取消订阅事件1.2 执行命令1.3 设置当前工具1.4 激活选项卡1.5 激活/停用状态 - 修改条件1.6 判断应用程序是否繁忙1.7 获取应用程序主窗口1.8 关闭 ArcGIS Pro1.9 获取 …...
打破传统仓库管理困局:WMS如何重构出入库全流程
引言 在制造业与零售业高速发展的今天,仓库管理仍普遍面临效率低、错发漏发频发、库存数据滞后等痛点。人工登记导致30%的错单率,货位混乱让拣货耗时增加50%,而账实不符引发的二次采购成本更吞噬着企业利润。如何突破传统管理桎梏࿱…...
npm 安装时 SSL 证书过期问题笔记
问题描述: npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm error request to https://registry.npm.taobao.org/axios failed, reason: certificate has expired 这表明当前配置的 npm 镜像源(淘宝镜像 https://registry.npm.taobao.org&…...
【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页
PageRank 是 Google 创始人拉里佩奇(Larry Page)和谢尔盖布林(Sergey Brin)在 1998 年提出的一种网页排名算法,用于衡量网页“重要性”的一种方式。它是搜索引擎中用于排序网页的一种基础算法 一个网页越是被其他重要…...
Craw4AI:LLM友好的网页爬虫
GitHub:https://github.com/unclecode/crawl4ai 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI Crawl4AI旨在让网页爬取和数据提取变得简单而高效。无论构建复杂的 AI 应用程序还是增强大语言模型,Crawl4AI 都能…...
idea 安装飞算-javaAI 插件使用
文章目录 前言idea 安装飞算-javaAI 插件使用1. 介绍一下飞算-AI2. 安装使用 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每天的运气都不会太差,实在白嫖的…...
Lombok
Lombok Lombok 是一个 Java 库,通过注解自动生成样板代码(如 Getter/Setter、构造函数等),从而简化开发。在你提供的代码中,AllArgsConstructor 就是一个 Lombok 注解。以下是 Lombok 常用注解及其作用的详细说明&…...
起点与破圈
写了多年代码,我为什么开始转向算法,直到如今投身于大模型领域? 作为一名拥有 10 年经验的开发者,我的职业路径几乎覆盖了技术发展的多个阶段。从最早使用 Flask/Django 开发网站,到后来构建大数据系统、设计服务器架…...
基于AI的Web数据管道,使用n8n、Scrapeless和Claude
引言 在当今数据驱动的环境中,组织需要高效的方法来提取、处理和分析网络内容。传统的网络抓取面临着诸多挑战:反机器人保护、复杂的JavaScript渲染以及持续的维护需求。此外,理解非结构化的网络数据则需要复杂的处理能力。 本指南演示了如…...
7GB显存如何部署bf16精度的DeepSeek-R1 70B大模型?
构建RAG混合开发---PythonAIJavaEEVue.js前端的实践-CSDN博客 服务容错治理框架resilience4j&sentinel基础应用---微服务的限流/熔断/降级解决方案-CSDN博客 conda管理python环境-CSDN博客 快速搭建对象存储服务 - Minio,并解决临时地址暴露ip、短链接请求改…...
初识函数------了解函数的定义、函数的参数、函数的返回值、说明文档的书写、函数的嵌套使用、变量的作用域(全局变量与局部变量)
文章目录 一、什么是函数?二、函数定义与调用2.1 基本语法2.2 示例演示 三、函数参数详解3.1 位置参数3.2 默认参数3.3 可变参数3.4 关键字参数 四、返回值与文档说明4.1 返回多个值4.2 编写文档字符串 五、函数嵌套与作用域5.1 嵌套函数示例5.2 变量作用域5.3 glob…...
Java常见API文档(下)
格式化的时间形式的常用模式对应关系如下: 空参构造创造simdateformate对象,默认格式 练习.按照指定格式展示 package kl002;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class Date3 {publi…...
ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案
ping baidu.coom可以通,ping www.baidu.com不通【DNS出现问题】解决方案 检查IPV6是否有问题 # 1. 检查 IPv6 地址,记住网络接口的名称 ip -6 addr show# 2. 测试本地 IPv6,eth0换成自己的网络接口名称 ping6 ff02::1%eth0# 3. 检查路由 ip…...
Oracle 中 open_cursors 参数详解:原理、配置与性能测试
#Oracle #参数 # open_cursors #ORA-01000 在 Oracle 数据库的众多参数中,open_cursors是一个对应用程序性能和资源管理有着重要影响的参数。它直接关系到数据库与应用程序之间游标资源的使用与分配,合理配置open_cursors参数,能够避免应用程…...
线程调度与单例模式:wait、notify与懒汉模式解析
一.wait 和 notify(等待 和 通知) 引入 wait notify 就是为了能够从应用层面,干预到多个不同线程代码的执行顺序,可以让后执行的线程主动放弃被调度的机会,等先执行的线程完成后通知放弃调度的线程重新执行。 自助取…...
AGI大模型(27):LangChain向量存储
1 安装依赖 使用一个简单的本地向量存储 FAISS,首先需要安装它 pip install faiss-cpu -i https://pypi.tuna.tsinghua.edu.cn/simple pip install langchain_community==0.3.7 -i https://pypi.tuna.tsinghua.edu.cn/simple 由于演示过程中用到了爬虫,需要安装依赖库,如…...
Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析
Changelog [25/04/28] 新增Qwen3-0.6B在Ag_news数据集Zero-Shot的效果。新增Qwen3-0.6B线性层分类方法的效果。调整Bert训练参数(epoch、eval_steps),以实现更细致的观察,避免严重过拟合的情况。 TODO: 利用Qwen3-0.6…...
Oracle 的 PGA_AGGREGATE_LIMIT 参数
Oracle 的 PGA_AGGREGATE_LIMIT 参数 基本概念 PGA_AGGREGATE_LIMIT 是 Oracle 数据库 12c 引入的一个重要内存管理参数,用于限制所有服务器进程使用的 PGA(Program Global Area)内存总量。 参数作用 硬性限制:设置 PGA 内存使…...