网站的建设部署与发布小程序怎么开发自己的小程序要钱吗
2026/5/24 3:37:30 网站建设 项目流程
网站的建设部署与发布,小程序怎么开发自己的小程序要钱吗,易语言网站开发教程,赚钱软件排行榜前十名博主介绍#xff1a; ✌我是阿龙#xff0c;一名专注于Java技术领域的程序员#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…博主介绍✌我是阿龙一名专注于Java技术领域的程序员全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师我在计算机毕业设计开发方面积累了丰富的经验。同时我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导我致力于帮助更多学生完成毕业项目和技术提升。技术范围我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等方面的设计与开发。如果你有任何技术难题我都乐意与你分享解决方案。获取源码请在文末联系我温馨提示文末有 CSDN 平台官方提供的阿龙联系方式的名片温馨提示文末有 CSDN 平台官方提供的阿龙联系方式的名片目录2 相关工具及介绍2.1 Python语言2.2 hive简介2.5 Spark2.4 数据采集2.5 环境部署2.6 环境部署本项目hadoop核心代码本项目Spark核心代码本项目Hive核心代码​编辑本次案例系统实现界面展示2.9测试用例源码获取文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看获取联系方式精彩专栏推荐订阅在下方专栏2 相关工具及介绍2.1 Python语言Python是由荷兰数学和计算机研究学会的吉多·范罗苏姆于20世纪90年代设计的一款高级语言。Python优雅的语法和动态类型以及解释型语言的本质使它成为许多领域脚本编写和快速开发应用的首选语言。Python相比与其他高级语言开发代码量较小代码风格简洁优雅拥有丰富的第三方库。Python的代码风格导致其可读性好便于维护人员阅读维护程序更加健壮。Python能够轻松地调用其他语言编写的模块因此也被成为“胶水语言”。2.2 hive简介Hive是一个数据仓库工具当把特定结构地数据文件存入Hive对应的HDFS目录时Hive能将其映射成表并提供类 SQL 查询功能。底层会将sql语句转成MapReduce程序大大方便程序开发其中执行引擎可以更换执行效率大大提高Hive主要用于解决海量结构化日志的数据统计。在本课题中配置Hive为主要数据仓库有以下几点原因1 Hive的操作接口采用类SQL语法提供快速开发能力。2相对于传统的关系型数据库Hive更擅长于数据分析。3 Hive支持用户自定义函数用户可根据自己的需求来实现自己的函数。4 Hive基于HDFS进行存储扩展性高可靠性高。5 Hive底层计算引擎可更换。由于Hive默认底层引擎位MapReduceMapReduce在遇到迭代式任务时会将任务落盘至HDFS再进行运算对于大批量数据处理来说这很影响效率所以我们会将引擎改成Tez。2.3 hadoop技术Hadoop 是 Apache 软件基金会下的一个开源分布式计算平台它以分布式文件系统HDFS和MapReduce算法为核心。Hadoop提供了一个可靠的共享存储与分析系统[2]。用户可以在不了解分布式底层细节的情况下开发分布式程序充分利用集群的威力进行高速运算和存储。Hadoop拥有以下4大优势1 高容错性Hadoop底层维护多个数据副本所以即使Hadoop某个计算元素或存储出现故障也不会导致数据的丢失。2 高扩展性在集群间分配任务数据可方便扩展数以千计的节点。3 高效性在MapReduce的思想下Hadoop是并行工作的大大加快了任务的处理速度。Hadoop实现了一个分布式文件系统 Distributed File System其中一个组件是HDFSHadoop Distributed File System。HDFS有高容错性的特点并且设计用来部署在低廉的low-cost硬件上而且它提供高吞吐量high throughput来访问应用程序的数据适合那些有着超大数据集large data set的应用程序。HDFS放宽了relaxPOSIX的要求可以以流的形式访问streaming access文件系统中的数据。在本课题中由于其中的Mapreduce框架其设计初衷并不是为了满足循环迭代式数据流处理因此在多并行运行的数据可复用场景中存在诸多计算效率等问题Hadoop框架主要用于数据存储。2.5 Spark是一种DAG有向无环图的基于内存的快速、通用、可扩展的大数据分析计算引擎。Spark 是分布式数据快速分析项目。它的核心技术是弹性分布式数据集Resilient Distributed Datasets简称RDD提供了比 MapReduce 丰富的模型可以快速在内存中对数据集进行多次迭代不像MapReduce需要落盘数据才能进行迭代式运算可支持复杂的数据挖掘算法和图形计算算法[4]。Spark的运行模式包括Local、Standalone、Yarn及Mesos几种。其中Local模式仅用于本地开发Mesos模式国内几乎不用。在公司中因为大数据服务基本搭载Yarn集群调度因此Spark On Yarn模式会用的比较多。Spark是一个基于内存的用于大规模数据处理的统一分析引擎其运算速度可以达到Mapreduce的10-100倍。具有如下特点内存计算。Spark优先将数据加载到内存中数据可以被快速处理并可启用缓存。shuffle过程优化。和Mapreduce的shuffle过程中间文件频繁落盘不同Spark对Shuffle机制进行了优化降低中间文件的数量并保证内存优先。RDD计算模型。Spark具有高效的DAG调度算法同时将RDD计算结果存储在内存中避免重复计算。2.4 数据采集考虑到更方便后续对数据的处理和分析在采集视频数据后选择了将爬取到的数据存入CSV文件中。CSV提供了一种轻量级、便捷的方式来批量写入数据且CSV文件较小便于在网络间传输和分享这对于分布式计算框架如Hadoop非常有利。而且CSV以纯文本形式存储表格数据每行代表一条记录各字段由逗号或其他分隔符分隔。这种结构化数据格式可以被各种编程语言和工具解析包括Hadoop生态中的MapReduce程序。2.5 环境部署本文的软件开发环境及运行环境如下。操作系统LinuxJDK1.8.0_241 版本Hadoophadoop-3.3.5版本虚拟机VMware-16.0数据库工具mysql-5.7.29版本、SQLyog-13.2.0版本框架Flask可视化工具Echarts。为了实现基于大数据技术的视频数据分析与研究需要搭建Hadoop集群它可提供海量数据的分布式存储、分布式计算和分布式管理功能[9]。首先创建三台Linux系统的虚拟机修改三台虚拟机的IP(192.168.144.131、192.168.144.132、192.168.144.133)并添加免密登录和安装JDK与Hadoop修改Hadoop配置文件hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml在终端运行hadoop namenode -format命令进行格式化格式化HDFS最后启动Hadoopstart-all.sh)2.6 环境部署本文的软件开发环境及运行环境如下。操作系统LinuxJDK1.8.0_241 版本Hadoophadoop-3.3.5版本虚拟机VMware-16.0数据库工具mysql-5.7.29版本、SQLyog-13.2.0版本框架Flask可视化工具Echarts。为了实现基于大数据技术的视频数据分析与研究需要搭建Hadoop集群它可提供海量数据的分布式存储、分布式计算和分布式管理功能[9]。首先创建三台Linux系统的虚拟机修改三台虚拟机的IP(192.168.144.131、192.168.144.132、192.168.144.133)并添加免密登录和安装JDK与Hadoop修改Hadoop配置文件hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml在终端运行hadoop namenode -format命令进行格式化格式化HDFS最后启动Hadoopstart-all.sh)本项目hadoop核心代码package com.example.demo.hadoop; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration as SpringConfig; import java.net.URI; SpringConfig public class HadoopConfig { Bean public FileSystem fileSystem() throws Exception { Configuration conf new Configuration(); conf.set(fs.defaultFS, hdfs://namenode:8020); // 改成你的 NameNode 地址 conf.set(dfs.client.use.datanode.hostname, true); // 如果用主机名访问 return FileSystem.get(new URI(hdfs://namenode:8020), conf, hadoop); // 第三个参数是Hadoop用户 } } package com.example.demo.hadoop; import org.apache.hadoop.fs.*; import org.springframework.stereotype.Service; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; Service public class HdfsService { private final FileSystem fileSystem; public HdfsService(FileSystem fileSystem) { this.fileSystem fileSystem; } public void upload(String localPath, String hdfsPath) throws IOException { fileSystem.copyFromLocalFile(false, true, new Path(localPath), new Path(hdfsPath)); } public void download(String hdfsPath, String localPath) throws IOException { fileSystem.copyToLocalFile(false, new Path(hdfsPath), new Path(localPath)); } public String readFile(String hdfsPath) throws IOException { try (FSDataInputStream in fileSystem.open(new Path(hdfsPath))) { return new String(in.readAllBytes()); } } public void writeFile(String hdfsPath, String content) throws IOException { try (FSDataOutputStream out fileSystem.create(new Path(hdfsPath), true)) { out.writeBytes(content); } } public FileStatus[] listFiles(String dirPath) throws IOException { return fileSystem.listStatus(new Path(dirPath)); } }本项目Spark核心代码dependency groupIdorg.apache.spark/groupId artifactIdspark-core_2.12/artifactId version3.5.1/version scopeprovided/scope /dependency dependency groupIdorg.apache.spark/groupId artifactIdspark-sql_2.12/artifactId version3.5.1/version scopeprovided/scope /dependency package com.example.demo.spark; import org.apache.spark.sql.SparkSession; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class SparkConfig { Bean(destroyMethod stop) public SparkSession sparkSession() { return SparkSession.builder() .appName(SpringBootSparkApp) .master(local[*]) // 测试用本地模式部署到集群时去掉或改成 yarn/k8s .getOrCreate(); } } package com.example.demo.spark; import org.springframework.web.bind.annotation.*; RestController RequestMapping(/spark) public class SparkController { private final SparkService sparkService; public SparkController(SparkService sparkService) { this.sparkService sparkService; } GetMapping(/wordcount) public String wordCount(RequestParam String path) { return sparkService.runWordCount(path); } GetMapping(/sql) public String sqlExample() { return sparkService.runSimpleSqlExample(); } } package com.example.demo.spark; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; import org.springframework.stereotype.Service; Service public class SparkService { private final SparkSession spark; public SparkService(SparkSession spark) { this.spark spark; } public String runWordCount(String filePath) { DatasetRow df spark.read().text(filePath); DatasetRow wordCounts df .selectExpr(explode(split(value, )) as word) .groupBy(word) .count() .orderBy(org.apache.spark.sql.functions.desc(count)); wordCounts.show(); // 控制台输出 return wordCounts.limit(10).collectAsList().toString(); } public String runSimpleSqlExample() { DatasetRow df spark.read().json(examples/src/main/resources/people.json); df.createOrReplaceTempView(people); DatasetRow sqlDF spark.sql(SELECT name, age FROM people WHERE age 21); sqlDF.show(); return sqlDF.collectAsList().toString(); } }本项目Hive核心代码package com.example.demo.hive; import org.springframework.stereotype.Service; import java.sql.*; Service public class HiveService { private final Connection connection; public HiveService(Connection connection) { this.connection connection; } public String runQuery(String sql) throws SQLException { try (Statement stmt connection.createStatement(); ResultSet rs stmt.executeQuery(sql)) { StringBuilder sb new StringBuilder(); ResultSetMetaData meta rs.getMetaData(); int colCount meta.getColumnCount(); // 表头 for (int i 1; i colCount; i) { sb.append(meta.getColumnName(i)).append(\t); } sb.append(\n); // 数据 while (rs.next()) { for (int i 1; i colCount; i) { sb.append(rs.getString(i)).append(\t); } sb.append(\n); } return sb.toString(); } } public void runUpdate(String sql) throws SQLException { try (Statement stmt connection.createStatement()) { stmt.execute(sql); } } }本次案例系统实现界面展示2.9测试用例1用户登陆测试用例表 6-1 用户登录用例表项目/软件编制时间20xx/xx/xx功能模块名用户登陆模块用例编号xxxx功能特性用户身份验证测试目的验证是否输入合法的信息允许合法登陆阻止非法登陆测试数据用户名1密码a1身份 非认证用户操作步骤操作描述数 据期望结果实际结果状态1输入用户名和密码用户名 1密码1显示进入后的页面。同期望结果。正常2输入用户名和密码用户名 1密码aaa显示警告信息“不存在该用户名或密码错误”同期望结果。正常3输入用户名和密码用户名 aaa密码1显示警告信息“不存在该用户名或密码错误”同期望结果。正常4输入用户名和密码用户名“” 密码“”显示警告信息“用户名密码不能为空”同期望结果。正常2用户注册测试用例表 6-2 用户注册用例表项目/软件编制时间20xx/xx/xx功能模块名用户注册模块用例编号xxxx功能特性用户注册测试目的验证私注册是否成功注册数据是否合法测试数据用户名aaa 密码aaa电子邮件dwaqq.com操作步骤操作描述数 据期望结果实际结果测试状态1输入注册数据用户名 aaa密码aaa 电子邮件dwaqq.com提示注册成功转入用户主页同期望结果。正常2输入注册数据用户名 aaa密码aaa 电子邮件dwaqq.com提示用户名已注册同期望结果。正常3输入注册数据用户名 aaa密码”” 电子邮件dwaqq.com提示密码不能为空同期望结果。正常4输入注册数据密码aaa 电子邮件dwaqq.com提示用户名为空同期望结果。正常源码获取文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看获取联系方式精彩专栏推荐订阅在下方专栏

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询