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

【大数据技术】Spark分布式实现词频统计(hadoop+python+spark)

Spark分布式实现词频统计(hadoop+python+spark)

  • 搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell)

  • 搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn)

  • 本机PyCharm远程连接CentOS虚拟机(Python)

  • 搭建完全分布式高可用大数据集群(Scala+Spark)

在阅读本文前,请确保已经阅读过以上4篇文章,成功搭建了Hadoop+MapReduce+Yarn+Python+Spark的大数据集群环境。

写在前面

本文主要介绍基于hadoop+spark技术,自己编写python代码实现单词词频统计的详细步骤。

  • 电脑系统:Windows

  • 技术需求:HadoopMapReduceYarnPythonSpark

  • 使用软件:VMwareFinalShellPyCharm

注:本文的所有操作均在虚拟机master中进行,不涉及另外两台虚拟机。

启动Hadoop

  1. 使用finalshell连接并启动masterslave01slave02三台虚拟机。

  2. 在虚拟机master的终端输入命令start-all.sh启动hadoop、mapreduce和yarn。

  3. 随后可以用命令jps查看是否成功启动集群。

准备数据

注意:该部分的数据文件为/data/word.txt,如果做过之前的案例,已经拥有该数据文件,可以跳过该部分。

  1. 创建文本数据

① 在虚拟机master的终端输入命令mkdir /data创建一个/data目录。

00

② 在虚拟机master的终端输入命令 vi /data/word.txt 创建并打开word.txt文件,填入以下内容。

hello world
hello hadoop
hello hdfs
hello yarn

01

  1. 创建目录

① 在终端输入以下命令,可以在HDFS中创建/wordcount/input目录,用于存放文件word.txt

hdfs dfs -mkdir -p /wordcount/input

② 在终端输入以下命令验证是否创建/wordcount/input目录。

hdfs dfs -ls /

02

  1. 上传文件

① 在终端执行以下命令将文件word.txt上传到HDFS的/wordcount/input目录。

hdfs dfs -put /data/word.txt /wordcount/input

② 在终端输入以下命令验证是否成功将文件word.txt上传到HDFS的/wordcount/input目录。

hdfs dfs -ls /wordcount/input

03

③ 可以使用以下命令查看上传的word.txt文件的内容。

hdfs dfs -cat /wordcount/input/word.txt

04

④ 也可以通过HDFS的Web UI(http://master:9870)查看文件word.txt是否上传成功。

05

编写Python脚本

打开PyCharm专业版,远程连接虚拟机master,创建脚本/wordcount/wordspark.py,填入以下代码。

from pyspark.sql import SparkSession# 创建 SparkSession,连接到 Hadoop 集群
spark = SparkSession.builder \.appName("WordCount") \.getOrCreate()# 从 HDFS 读取输入文件
text_file = spark.sparkContext.textFile("hdfs://master:9000/wordcount/input/word.txt")# 计算词频
counts = text_file.flatMap(lambda line: line.split(" ")) \.map(lambda word: (word, 1)) \.reduceByKey(lambda a, b: a + b)# 将结果保存到 HDFS
counts.saveAsTextFile("hdfs://master:9000/wordcount/output")# 停止 SparkSession
spark.stop()

这段代码是一个典型的使用 PySpark 实现的词频统计程序,具体分析如下。

  1. 导入 PySpark 模块
from pyspark.sql import SparkSession
  • SparkSession 是 PySpark 中的入口点,用于创建和配置 Spark 应用程序。SparkSession 提供了多种方法,允许我们与 Spark 集群进行交互,包括读取数据、执行转换、管理 Spark 作业等。
  1. 创建 SparkSession
spark = SparkSession.builder \.appName("WordCount") \.getOrCreate()
  • SparkSession.builder 是用来配置并构建一个 SparkSession 实例。通过 appName 方法,给当前的 Spark 应用程序指定一个名称(这里是 “WordCount”)。getOrCreate() 会返回一个现有的 SparkSession 或创建一个新的实例,如果 Spark 会话已经存在,它将返回该会话。
  1. 读取输入文件
text_file = spark.sparkContext.textFile("hdfs://master:9000/wordcount/input/input.txt")
  • sparkContext.textFile() 用于读取文本文件,并将其分割成多个行(行级数据)。这里的输入文件位于 HDFS 路径 hdfs://master:9000/wordcount/input/input.txt
  • sparkContext 是 SparkSession 的底层对象,它是与底层 Spark 集群进行交互的接口。
  • HDFS(Hadoop 分布式文件系统)作为分布式存储系统,存储着待处理的文件数据。
  1. 计算词频
counts = text_file.flatMap(lambda line: line.split(" ")) \.map(lambda word: (word, 1)) \.reduceByKey(lambda a, b: a + b)
  • flatMap(lambda line: line.split(" "))
    • flatMap 是一种转换操作,它会将每一行的文本通过空格分割成多个单词,并返回一个由单词构成的平坦化列表。例如,一行文本 "hello world" 会变成 ["hello", "world"]
    • flatMap 的特点是会扁平化返回的列表,生成的 RDD(弹性分布式数据集)将包含所有的单词。
  • map(lambda word: (word, 1))
    • map 操作对每个单词进行转换,返回一个键值对 (word, 1),其中 word 是单词,1 表示出现的次数。
    • 这样,对于每个单词,都会创建一个键值对,后续会对相同的单词进行聚合操作。
  • reduceByKey(lambda a, b: a + b)
    • reduceByKey 是对相同键(单词)进行归约操作。它会将具有相同键的所有值(次数)加起来,得到每个单词的总词频。
    • lambda a, b: a + b 表示对于同一单词的多个 1 值,执行求和操作。
  1. 保存结果
counts.saveAsTextFile("hdfs://master:9000/wordcount/output")
  • saveAsTextFile() 方法将结果保存到指定路径。在此,计算得到的词频统计结果会被保存到 HDFS 路径 hdfs://master:9000/wordcount/output
  • 结果会以文本文件的形式保存,每个文件包含一部分输出数据,Spark 会自动将结果分布在多个文件中。
  1. 停止 SparkSession
spark.stop()
  • stop() 方法用于停止当前的 SparkSession,这样可以释放占用的资源。
  • 停止 SparkSession 是良好的实践,特别是在处理完 Spark 作业后,防止资源泄漏。

总的来说,这段代码完成了一个简单的分布式词频统计任务,其基本步骤包括:

  1. 初始化 SparkSession。
  2. 从 HDFS 中读取输入数据。
  3. 对输入数据进行词频统计:拆分单词、生成键值对、按键聚合计算词频。
  4. 将统计结果保存回 HDFS。
  5. 最后关闭 SparkSession,释放资源。

这种类型的作业常见于大数据处理和日志分析等场景。通过 Spark 的分布式计算能力,能够高效地处理大量文本数据并进行复杂计算。

运行Python脚本

注意:运行Python脚本前请确保已经启动hadoop集群。

  1. 输入以下命令查看虚拟机是否有pip工具。
pip --version

06

注意:在虚拟机master中输入命令pip --version ,如果提示没有pip,请根据提示安装pip。

07

  1. 输入以下命令安装pyspark库。
pip install pyspark -i https://pypi.tuna.tsinghua.edu.cn/simple

08

  1. 在PyCharm中运行wordspark.py程序。

09

  1. 在HDFS的Web UI(http://master:9870/explorer.html#/wordcount/output)中查看程序运行结果。

注意:有part-00000part-00001两个文件,因为是分布式存储。

10

11

运行Spark程序

注意:建议在运行spark程序前,三台虚拟机的配置为:

  • master:8G内存,4个CPU
  • slave01:4G内存,2个CPU
  • slave02:4G内存,2个CPU

  1. 在运行Spark程序前,请先删除http://master:9870/explorer.html#/wordcount/output目录。

12

  1. 输入以下命令关闭HDFS的安全模式。
hdfs dfsadmin -safemode leave

13

  1. 输入以下命令运行spark代码。

注意:运行前请确保HDFS中/wordcount/output文件不存在,如果存在,请将其删除。

spark-submit --master yarn /opt/python/code/wordcount/wordspark.py
  • spark-submit :这是启动 Spark 应用程序的命令。无论你的应用程序是使用 Scala、Java、Python 还是 R 编写的,都需要通过这个命令来提交。

  • --master yarn :这个参数指定了要使用的集群管理器(master)。在这里指定的是 YARN (Yet Another Resource Negotiator),这意味着你希望在配置为使用 YARN 作为资源管理器的 Hadoop 集群上运行此 Spark 应用程序。YARN 负责管理集群中的资源(如内存、CPU等)以及调度任务。

  • /opt/python/code/wordcount/wordspark.py :这是你想要运行的 Spark 应用程序的入口脚本。在这个例子中,它是一个 Python 文件,实现了 WordCount 算法,通常用于计算输入数据集中每个单词出现的次数。WordCount 是一个经典的入门示例,常用来展示大数据处理框架的基本使用方法。

总结一下,这条命令的作用是告诉 Spark 以客户端模式向 YARN 集群提交 wordspark.py 这个 Spark 应用程序,并由 YARN 来负责分配资源和调度作业执行。

14

  1. 重新启动安全模式。
hdfs dfsadmin -safemode enter

查看程序运行状态和结果

  1. 程序运行过程中,可以使用浏览器访问Spark的Web UI(http://master:4040/jobs/)查看程序的运行状态。

15

  1. 程序运行过程中,也可以使用浏览器访问YARN的Web UI(http://master:8088)查看程序的运行状态。

16

  1. 程序运行结束后,可以在HDFS的Web UI(http://master:9870)查看词频统计的结果。

17

  1. 当然,也可以在master的终端输入以下命令查看程序运行结果。
hdfs dfs -cat /wordcount/output/part-00000
hdfs dfs -cat /wordcount/output/part-00001

18

写在后面

本文仅供学习使用,原创文章,请勿转载,谢谢配合。

相关文章:

【大数据技术】Spark分布式实现词频统计(hadoop+python+spark)

Spark分布式实现词频统计(hadooppythonspark) 搭建完全分布式高可用大数据集群(VMwareCentOSFinalShell) 搭建完全分布式高可用大数据集群(HadoopMapReduceYarn) 本机PyCharm远程连接CentOS虚拟机&#x…...

UMLS初探

什么是UMLS UMLS(Unified Medical Language System,统一医学语言系统),简单来说就是将不同的医学标准统一到一套体系的系统,主要为了医疗系统的统一而构建出的。 UMLS的主要组成部分 Metathesaurus:一个…...

Redis持久化机制详解

为什么需要持久化 Redis通常被作为缓存使用,但是Redis一旦宕机,内存中的数据全部丢失,可能会导致数据库崩溃。如果是从数据库中恢复这些数据就会存在频繁访问数据库和读取速度慢的问题。所以redis实现数据的持久化,是至关重要的。…...

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...

PB-DW-数据窗口-降级-从12.5降级到9.0

PB 数据窗口从125降级到90 供参考,有哪些属性仍然需要删除,请在评论区留言。谢谢。 如果您有更好的工具,能分享给我一份的话,就更好了,感谢。 12.5数据窗口降级9.01- release 12.5; 更改为 release 9;2- 第二行的 d…...

Logo语言的测试开发

Logo语言的测试开发 引言 随着编程教育的不断发展,学习编程的门槛逐渐降低,各种编程语言应运而生。其中,Logo语言作为一种经典的教育编程语言,在培养儿童的逻辑思维和解决问题的能力方面,发挥了重要的作用。本文将深…...

位图的深入解析:从数据结构到图像处理与C++实现

在学习优选算法课程的时候,博主学习位运算了解到位运算的这个概念,之前没有接触过,就查找了相关的资料,丰富一下自身,当作课外知识来了解一下。 位图(Bitmap)是一种用于表示图像的数据结构&…...

Faveo Helpdesk存在目录遍历漏洞(CVE-2024-37700)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

【Pytorch函数】PyTorch随机数生成全解析 | torch.rand()家族函数使用指南

🌟 PyTorch随机数生成全解析 | torch.rand()家族函数使用指南 🌟 📌 一、核心函数参数详解 PyTorch提供多种随机数生成函数(注意:无直接torch.random()函数),以下是常用函数及参数:…...

ML.NET库学习004:ML.NET基础知识复盘

文章目录 ML.NET库学习004:ML.NET基础知识复盘背景简单的 ML.NET 应用程序代码工作流机器学习模型基础进阶 ML.NET 架构构建管道训练模型使用模型 数据模型和架构模型部署 ML.NET库学习004:ML.NET基础知识复盘 学了几个小项目,发现好多方法莫…...

2. UVM的基本概念和架构

文章目录 前言1. UVM的基本概念1.1 UVM的核心组件1.2 UVM的基本架构1.3 UVM的工作流程 2. UVM的架构2.1 UVM的层次结构2.2 UVM的组件交互 3. 总结 前言 首先,得确定UVM的基本概念和架构包含哪些关键部分。我回忆起UVM的核心组件,比如uvm_component、uvm…...

算法10--哈希

哈希 原理经典例题[1. 两数之和](https://leetcode.cn/problems/two-sum/description/)[面试题 01.02. 判定是否互为字符重排](https://leetcode.cn/problems/check-permutation-lcci/description/)[217. 存在重复元素](https://editor.csdn.net/md?not_checkout1&spm1015…...

磁盘文件删除后恢复

磁盘文件删除后,文件数据并未立即消失,只是文件系统的指针被移除,标记该空间为可覆盖。要恢复文件,可以尝试以下方法: 1. 使用数据恢复软件 Recuva:适合Windows,能恢复多种文件类型。PhotoRec…...

STM32 CUBE Can调试

STM32 CUBE Can调试 1、CAN配置2、时钟配置3、手动添加4、回调函数5、启动函数和发送函数6、使用方法(采用消息队列来做缓存)7、数据不多在发送函数中获取空邮箱发送,否则循环等待空邮箱 1、CAN配置 2、时钟配置 3、手动添加 需要注意的是STM32CUBE配置的代码需要再…...

【大模型】Ubuntu下安装ollama,DeepSseek-R1:32b的本地部署和运行

1 ollama 的安装与设置 ollama官网链接:https://ollama.com/ 在左上角的【Models】中展示了ollama支持的模型在正中间的【Download】中课可以下载支持平台中的安装包。   其安装和模型路径配置操作流程如下: ollama的安装 这里选择命令安装curl -fsSL …...

Goland 内存逃逸问题

内存逃逸是什么? 在go语言中,内存分配存在两个方式:堆分配;栈分配。 栈分配:是在函数调用时为局部变量分配内存,当函数返回时,这些内存会自动释放。 堆分配:通过 new 或者 make 函…...

我们来学人工智能 -- 本地部署DeepSeek

本地部署DeepSeek 题记思考正题结语 题记 时不待我AI会淘汰各领域一些岗位AI可以精简部门,DP白菜价的落地,2025年会更加明显会AI的淘汰不会AI的第四次工业革命将在中国爆发 全产业链多年数字化建设以DP为代表的全球领先白菜价人工智能在各行各业的普及 …...

【GitHub】GitHub 2FA 双因素认证 ( 使用 Microsoft Authenticator 应用进行二次验证 )

文章目录 一、GitHub 的 2FA 双因素认证二、使用 Microsoft Authenticator 应用进行二次验证1、TOTP 应用2、下载 Microsoft Authenticator 应用3、安装使用 Authenticator 应用 三、恢复码重要性 一、GitHub 的 2FA 双因素认证 现在登录 GitHub 需要进行二次身份验证 ; 先登录…...

通过脚本实现自动将标签内容复制到下一个标签文件中

只需要将下面内容运行前 修改文件夹路径(控制修改范围的文件名 不需要的话 就随便写一个不相同的文件名 就行 需要的话就是在这个文件名字之前的会被修改) import os import time # 文件夹路径 image_directory r"C:\Users\Lenovo\Desktop\新建文件夹\images" # 替…...

Elasticsearch+Kibana安装启动与操作教程

在大数据时代,Elasticsearch(简称 ES)和 Kibana 作为强大的数据搜索与可视化工具,受到了众多开发者的青睐。本文将为您详细介绍在 Windows 和 Mac 系统上安装、启动 Elasticsearch 和 Kibana 的步骤,以及常用命令和 Ki…...

CSS Overflow 属性详解:控制内容溢出的利器

在前端开发中,处理内容溢出是一个常见的需求。CSS 提供了 overflow 属性,帮助我们控制当内容超出元素框时的显示方式。本文将详细介绍 overflow 属性的各种取值及其应用场景。 1. 什么是 overflow 属性? overflow 属性用于控制当元素的内容…...

什么是XMLHttpRequest?及其详细使用说明

XMLHttpRequest(通常缩写为XHR)是一个JavaScript对象,用于在浏览器和服务器之间进行异步通信。它允许网页在不重新加载整个页面的情况下,向服务器发送请求并接收响应。XHR是Ajax(Asynchronous JavaScript and XML&…...

Chrome浏览器原理及优化

1. 相关面试题 1.1. 请说说从输入 URL 到页面渲染完成的全过程 1. 输入URL,用户在浏览器的地址栏输入一个URL,并按下回车键; 2. DNS解析; 浏览器需要将域名转换为服务器的IP地址,以建立连接。 (1). 如果浏览器缓存、操作系统缓存或路由器缓存中已有该域名的IP地址,…...

Vue 3 + Vite + JS 项目中实现组件全局自动化注册的魔法,极致组件自动化注册方案,开发效率飙升300%。

在Vue项目开发中,你是否还在为重复的组件注册代码而烦恼?是否经历过在大型项目中手动维护数百个组件注册的痛苦?本文将揭秘一种革命性的组件自动化注册方案,结合Vite的黑魔法和Vue3的最新特性,让你的开发效率实现质的飞…...

寒假2.8

题解 web:[RoarCTF 2019]Easy Calc 打开,是一个计算界面 看一下源代码,提示设置了WAF,并且有一个calc.php文件 访问一下calc.php文件,得到源码,使用get方式传参赋值给num,设置了黑名单&#x…...

企业如何利用DeepSeek提升网络安全管理水平

企业可以通过深度整合DeepSeek的AI能力,构建智能化、动态化的网络安全防御体系,以应对APT(高级持续性威胁)等复杂攻击。以下是具体策略与实践路径: 1. AI驱动的威胁检测与分析 多模态威胁狩猎 DeepSeek的深度学习技术能…...

C++ libfmt 实战: 高效便捷的格式化库

libfmt 是一个现代化的 C格式化库{fmt}, 具有以下关键特性: 安全性: 受 Python 格式化功能启发, {fmt}为printf系列函数提供安全替代方案. 格式字符串错误在编译时就能被检测出来, 并且通过自动内存管理避免缓冲区溢出错误.可扩展性: 默认支持格式化大多数标准类型, 包括容器,…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_max_sockets

在 Nginx 的源代码中, ngx_max_sockets 全局变量的声明位于 os/unix/ngx_os.h extern ngx_int_t ngx_max_sockets; 定义在 os/unix/ngx_posix_init.c ngx_int_t ngx_max_sockets; ngx_max_sockets 定义了 Nginx 能够同时使用的最大 Socket 文件描述符数量。它…...

Spring Boot接入Deep Seek的API

1,首先进入deepseek的官网:DeepSeek | 深度求索,单击右上角的API开放平台。 2,单击API keys,创建一个API,创建完成务必复制!!不然关掉之后会看不看api key!!&…...

大语言模型实践——基于现有API的二次开发

基于现有的API平台做一些实用的AI小应用。 API服务商:阿里云百炼 云服务器:阿里云(2核2GB) 部署框架:gradio 调用框架:openai 语言:Python (注:若搭建网站或API接口…...

ChunkKV:优化 KV 缓存压缩,让 LLM 长文本推理更高效

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

深入探究 Go 语言中的 Fx 框架:依赖注入的强大工具

在软件开发中,依赖注入(Dependency Injection,简称 DI)是一种重要的设计模式,它可以帮助我们降低代码的耦合度,提高代码的可测试性和可维护性。Go 语言作为一门高效、简洁的编程语言,拥有许多优…...

用 DeepSeek + Kimi 自动做 PPT,效率起飞

以下是使用 DeepSeek Kimi 自动做 PPT 的详细操作步骤: 利用 DeepSeek 生成 PPT 内容: 访问 DeepSeek 官网,完成注册/登录后进入对话界面。输入指令,例如“请用 Markdown 格式生成一份关于[具体主题]的 PPT 大纲,需包…...

【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战

【04】Java若依vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战 项目背景 本项目经费43000元,需求文档如下,工期25天,目前已经过了8天,时间不多了&#x…...

【C++】异常

前言 本篇博客我们来看下C有关异常的处理,了解下异常有关的知识 💓 个人主页:小张同学zkf ⏩ 文章专栏:C 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 ​ 目录 1.异常的概念及使用 1.1异…...

Meta AI 最近推出了一款全新的机器学习框架ParetoQ,专门用于大型语言模型的4-bit 以下量化

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

金融资产配置

不要放在一个篮子里也不要放在太多篮子里: 尽量放在不相关的行业实现风险对冲 金融资产从风险类别上主要可以分为三类: 进攻型资产、稳定型资产和防守型资产 进攻型资产包括原油、股票、一级市场股权投资等 稳定型资产包括信托、理财、国债等 防守…...

(done) openMP学习 (Day14: 总结)

url: https://dazuozcy.github.io/posts/introdution-to-openmp-intel/#23-%E5%8F%AF%E6%80%95%E7%9A%84%E4%B8%9C%E8%A5%BF%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8Batomicsflushpairwise%E5%90%8C%E6%AD%A5%20 新手并行程序员与专家并行程序员之间的区别是专家have a collection…...

音频进阶学习十一——离散傅里叶级数DFS

文章目录 前言一、傅里叶级数1.定义2.周期信号序列3.表达式DFSIDFS参数含义 4.DFS公式解析1)右边解析 T T T、 f f f、 ω \omega ω的关系求和公式N的释义求和公式K的释义 e j ( − 2 π k n N ) e^{j(\frac{-2\pi kn}{N})} ej(N−2πkn​)的释义 ∑ n 0 N − 1 e…...

ssm的心得

spring是一个轻量级的ioc(控制反转)和aop(面向切面编程)容器框架,它可以管理和配置应用中的各种bean(对象),实现bean之间的依赖注入,以及提供事务管理、缓存、测试等功能…...

14vue3实战-----获取用户信息和用户的菜单树信息

14vue3实战-----获取用户信息和用户的菜单树信息 1.获取用户信息1.1封装接口1.2优化 2.获取用户的菜单树信息 1.获取用户信息 1.1封装接口 后端有根据id获取用户信息的接口,前端需要把该接口封装一下: service/login/login.ts: import hyRequest from…...

shell脚本学习笔记

Shell脚本学习笔记 参考资料:https://www.runoob.com/linux/linux-shell-passing-arguments.html 文章目录 Shell脚本学习笔记一、什么是Shell1.1、定义1.2、注释 二、Shell变量2.1、规则2.2、变量类型2.2.1、字符串2.2.2、整数2.2.3、数组2.2.4、环境变量2.2.5、特…...

Java中的线程池及其应用场景有哪些?

Java中的线程池是一种高效的并发编程机制,通过复用线程来管理任务的执行,从而提高资源利用率和系统性能。 本文将详细探讨Java线程池的概念、类型、应用场景以及实际代码示例,帮助读者全面理解线程池的使用方法及其在实际开发中的重要性。 …...

13.6 基于 LangChain架构优化实战:OpenAI-Translator翻译系统重构与10倍效率提升秘籍

LangChain架构优化实战:OpenAI-Translator翻译系统重构与10倍效率提升秘籍 关键词:LangChain 架构优化, 模块解耦, 翻译系统设计模式, 可扩展翻译框架, 多模型管理 1. 原架构痛点分析 问题维度原实现缺陷LangChain 优化方案大模型耦合直接调用 OpenAI API,切换模型需改代码…...

构建基于 SSE 协议通信的 MCP Server 和 Client

在之前的系列教程中,我们编写的 MCP 服务器与 MCP 客户端是通过 **stdio(Standard Input/Output,标准输入输出)**来进行交互的。客户端通过启动服务器子进程,并利用标准输入(stdin)和标准输出&a…...

Docker、Ollama、Dify 及 DeepSeek 安装配置与搭建企业级本地私有化知识库实践

在现代企业中,管理和快速访问知识库是提升工作效率、促进创新的关键。为了满足这些需求,企业越来越倾向于构建本地私有化的知识库系统,这样可以更好地保护企业数据的安全性和隐私性。本文将介绍如何利用 **Docker**、**Ollama**、**Dify** 和…...

第3章 使用 Vue 脚手架

第3章 使用 Vue 脚手架 3.1 初始化脚手架3.1.1 说明3.1.2. 具体步骤3.1.3 分析脚手架结构1 总结2 细节分析1 配置文件2 src文件1 文件结构分析2 例子 3 public文件4 最终效果 3.2 ref属性3.3 props配置项3.4 mixin混入3.5 插件3.6 scoped样式3.7 Todo-list 案例3.7.1 组件化编码…...

MySQL第五次作业

根据图片内容完成作业 1.建表 (1)建立两个表:goods(商品表)、orders(订单表) mysql> create table goods( -> gid char(8) primary key, -> name varchar(10), -> price decimal(8,2), -> num int); mysql> create t…...

pikachu[皮卡丘] 靶场全级别通关教程答案 以及 学习方法 如何通过渗透测试靶场挑战「pikachu」来精通Web渗透技巧? 一篇文章搞完这些问题

目录 Pikachu靶场 部署 暴力破解漏洞 学习地址: 靶场练习: 基于表单的暴力破解 验证码绕过(on server) 验证码绕过(on Client) token防爆破? XSS跨站脚本攻击 学习地址: 靶场练习: 反射型xss(get) 反射性xss(post) 存储型xss DOM型xss xss盲打 x…...

ai智能DeepSeek 在 Cursor 中的配置与应用实践

DeepSeek 是一款高效的深度搜索引擎,能够为开发者提供更智能、更精准的搜索体验。在数据量大、查询复杂的场景中,DeepSeek 能够帮助提升查询的响应速度和精确度。本文将介绍 DeepSeek 在 Cursor 中的配置与应用,帮助开发者理解如何在实际开发…...