Redisson 分布式限流器 RRateLimiter 的使用及原理

文章目录 一、基本使用1.1 创建限流器1.2 获取令牌1.3 使用示例 二、实现原理 一、基本使用 1.1 创建限流器 /** * Returns rate limiter instance by name * * @param name of rate limiter * @return RateLimiter object */ RRateLimiter getRateLimiter(String name); /** * Initializes RateLimiter's state and stores config to Redis server. * * @param mode - rate mode * @param rate - rate * @param rateInterval - rate time interval * @param rateIntervalUnit - rate time interval unit * @return true if rate was set and false otherwise */ boolean trySetRate(RateType mode, long rate, long rateInterval, RateIntervalUnit rateIntervalUnit); trySetRate 用于设置限流参数。其中 RateType 包含 OVERALL 和 PER_CLIENT 两个枚举常量,分别表示全局限流和单机限流。后面三个参数表明了令牌的生成速率,即每 rateInterval 生成 rate 个令牌,rateIntervalUnit 为 rateInterval 的时间单位。

大数据基础-测试过程

一、大数据: 大数据是一个大的数据集合,通过传统的计算技术无法处理。这些数据集的测试需要用各种工具、技术、框架进行处理。大数据涉及数据创建,存储、检索、分析,而且它在数量、多样性、速度都很出色。 二、大数据的测试类型: 验证其数据处理、性能和功能测试是关键 处理:批量、实时、交互数据质量测试:字段一致性、准确性、重复性、有效性、数据完整性性能测试 三、大数据的测试步骤 step1:数据阶段验证: pre-Hadoop阶段,数据预测试阶段 工具:Talend或Datameer step2:Mapreduce验证 测试每个节点上进行业务逻辑验证,然后运行多个节点后验证他们,确保如下操作的正确性。 来自方面的数据资源应该被验证,来确保正确的数据被加载进系统;将源数据与推送到Hadoop系统中数据进行比较,确保他们匹配;验证正确的数据被提取并加载到HDFS正确位置Map与Reduce进程正常工作;在数据上实施数据聚合或隔离规则;生成键值对;在执行Map和Reduce进程后验证数据。 Step3:输出阶段验证 输出验证过程,生成输出数据文件,同时把文件移到EDW中或者把文件移动到任何其他基于需求的系统中。(一般有开发人员完成,测试需要在有数据调用处看数据回显是否正常) 检查转换规则被正确应用;检查数据完整性和成功的数据加载到目标系统中;通过目标数据与HDFS文件系统数据比较检查数据是否损坏。 四、架构测试 性能测试以及故障转移测试服务应该在hadoop中完成 性能测试包括作业完成时间,内存使用率,数据吞吐量和类似的系统指标,而故障转移测试服务的动机是为了验证在数据节点发生故障情况下数据处理是否无缝的发生。 五、性能测试 大数据性能测试包括两个主要的行动:数据采集和整个过程 数据采集和整个过程:在这个阶段,测试人员验证快速系统如何消耗来自各种数据源的数据。测试涉及识别队列在给定时间框架内可以处理的不同消息。它还包括如何快速将数据插入到底层数据存储中,例如插入到Mongo和Cassandra数据库中。 数据处理:它涉及验证执行查询或映射缩减作业的速度。它还包括在底层数据存储填充到数据集中时独立测试数据处理。例如,在底层HDFS上运行MapReduce作业 子组件性能:这些系统由多个组件组成,而且必须单独测试每个组件。例如,消息的索引和消费速度有多快,mapreduce作业,查询性能,搜索等 六、性能测试方法 大数据应用性能测试涉及大量结构化和非结构化数据的测试,并且需要特定的测试方法来测试这些海量数据。 性能测试按此顺序执行 性能测试的参数 性能测试需要验证的各种参数 数据存储:数据如何存储在不同的节点中; 过程从设置要测试性能的大数据群集开始确定和设计相应的工作量准备个人客户(自定义脚本创建)执行测试并分析结果(如果不满足目标,则调整组件并重新执行)最佳配置 提交日志:允许增长的提交日志有多大;并发性:有多少个线程可以执行写入和读取操作;缓存:调整缓存设置“行缓存”和“键缓存”;超时:连接超时值,查询超时值等;JVM参数:堆大小,GC收集算法等;地图降低性能:排序,合并等;消息队列:消息速率,大小等。 测试环境需求 测试环境需求取决于您正在测试的应用程序的类型。对于大数据测试,测试环境应该包含 它应该有足够的空间来存储和处理大量的数据;它应该有分布式节点和数据的集群;它应该有最低的CPU和内存利用率,以保持高性能。 七、大数据测试面临的挑战 自动化 大数据的自动化测试需要具有技术专长的人员。另外,自动化工具不具备处理测试过程中出现的意外问题的能力 虚拟化 这是测试的一个不可缺少的阶段。虚拟机延迟会在实时大数据测试中造成计时问题。在大数据中管理图像也是一件麻烦事。 大数据集 八、性能测试挑战 多种技术组合:每个子组件属于不同的技术,需要单独测试 不可用的特定工具:没有一个工具可以执行端到端的测试。例如,NoSQL可能不适合消息队列 测试脚本:需要高度的脚本来设计测试场景和测试用例 测试环境:数据量大,需要特殊的测试环境 监控解决方案:存在有限的解决方案,可以监控整个环境 诊断解决方案:需要定制解决方案来深入了解性能瓶颈区域 需要验证更多的数据,并需要更快地完成;需要自动化测试工作;需要能够跨不同的平台进行测试。 概要 随着数据工程和数据分析技术的不断进步,大数据测试是不可避免的。 大数据处理可以是批处理,实时或交互式处理 测试大数据应用程序的3个阶段是 数据分级验证 “MapReduce”验证 输出验证阶段 架构测试是大数据测试的重要阶段,因为设计不佳的系统可能会导致前所未有的错误和性能下降 大数据的性能测试包括验证 数据吞吐量 数据处理 子组件性能 大数据测试与传统数据测试在数据,基础架构和验证工具方面有很大的不同 最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走: 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

计算机组成课设-设计并实现LA32R架构的模型机硬件系统

一、课程设计题目 1.课程设计任务与要求 本次课程设计的任务是:设计并实现LA32R架构的模型机硬件系统。该模型机的指令系统包括以下6条指令: 序号 类型 指令 功能 说明 1 1RI20 LU12I.W rd,si20 GR[rd] ⟵si20 || 12’b0 ①GR[rd]的高20位为si20,低12位为0 ②符号||表示拼接 2 3R ADD.W rd, rj, rk GR[rd]⟵GR[rj]+GR[rk] 加法 3 3R SLT rd, rj, rk if (GR[rj]<GR[rk]) GR[rd]⟵1 else GR[rd]⟵0 带符号数的大小比较 4 3R SLTU rd, rj, rk if (GR[rj]<GR[rk]) GR[rd]⟵1 else GR[rd]⟵0 无符号数的大小比较 5 2RI12 LD.W rd ,rj,si12 Addr⟵GR[rj] + SignExtend (si12) ,GR[rd] ⟵M[Addr] ①将内存Addr单元的值取出后存入R[rd] ②si12是12位立即数,进行符号位扩展后与GR[rj]相加后得到内存单元的地址Addr 6 2RI12 ST.W rd, rj, si12

Hive数据导出的四种方法

hive数据仓库有多种数据导出方法,我在本篇文章中介绍下面的四种方法供大家参考:Insert语句导出、Hadoop命令导出、Hive shell命令导出、Export语句导出。 一、Insert语句导出 语法格式 Hive支持将select查询的结果导出成文件存放在文件系统中。语法格式如下; 注意:导出操作是一个OVERWRITE覆盖操作,慎重。 目录可以是完整的URI。Hive使用hadoop配置变量fs.default.name来决定导出位置; 如果使用LOCAL关键字,则Hive会将数据写入本地文件系统上的目录; 写入文件系统的数据被序列化为文本,默认列之间用\001隔开,行之间用换行符隔开。 代码示例: --标准语法: INSERT OVERWRITE [LOCAL] DIRECTORY directory1 [ROW FORMAT row_format] [STORED AS file_format] SELECT ... FROM ... --Hive extension (multiple inserts): FROM from_statement INSERT OVERWRITE [LOCAL] DIRECTORY directory1 ROW FORMAT DELIMITED FIELDS TERMINATED BY ... select_statement1 [INSERT OVERWRITE [LOCAL] DIRECTORY directory2 ROW FORMAT DELIMITED FIELDS TERMINATED BY ... select_statement2] ... 演示 --1、导出查询结果到HDFS指定目录下 insert overwrite directory '/test1' select * from users; --2、导出时指定分隔符和文件存储格式 insert overwrite directory '/test1' row format delimited fields terminated by ',' stored as orc select * from users; --3、导出数据到本地文件系统指定目录下 insert overwrite local directory '/home/huser/test1' row format delimited fields terminated by ',' select * from users; 二、Hadoop命令导出 Hadoop命令将HDFS中的数据导出到本地文件系统指定目录中:

Android.mk详解+入门必备

Android.mk详解+入门必备 文章目录 Android.mk详解+入门必备一、前言二、Android.mk 文件模版1、编译.jar包2、编译apk3、编译动态库.so4、编译静态库.a5、Android.mk 编译文件小结最后编译的:include $(TYEPXXX)类型总结:Android系统源码编译Android.mk文件方式: 三、Android.mk 示例1、编译某个apk文件到系统中2、编译某个app源码到系统中 四、Android.mk 主要属性五、总结1、Android.mk 的简单使用总结2、Android.mk 详解3、Android.mk的其他知识(1)Android.mk编译的模块类别和属性定义字符串都是大写的(2)编译的属性定义对应的值的字符串,大小写是敏感的,根据实际情况写即可(3)Android 源码编译 及 mk文件解读 (4)Android.mk和Android.bp的关系关系:区别:(5)其他 一、前言 网上有很多关于Android.mk详解的文章,但是感觉比较散,所以有必要写一篇更加完整一点的,更加容易入门一点的文章。 Android 官方对于Android.mk 的介绍:https://developer.android.google.cn/ndk/guides/android_mk?hl=zh-cn#local_src_files Android.mk 博客介绍 :https://blog.csdn.net/hudashi/article/details/7059006 Android.mk 博客介绍 : https://blog.51cto.com/u_15955464/6057535 Android.mk 博客介绍 :https://blog.csdn.net/pashanhu6402/article/details/96584229 简单的说:Android.mk就是一个GNU make语法的脚本文件,用来编译出类库.jar,应用文件.apk,动态库.so,静态库.a作用。其中关键的就是include类型和不同的属性定义。 本文主要对编译 apk 的 Android.mk 文件进行举例和介绍,包含完整示例的展示以及重要属性的介绍。 二、Android.mk 文件模版 1、编译.jar包 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # 设置模块名为mylibrary LOCAL_MODULE := mylibrary # 添加需要编译的Java源文件 LOCAL_SRC_FILES := $(wildcard *.java) # 设置编译目标为Java类文件 LOCAL_JAVA_FILES := $(LOCAL_SRC_FILES) # 设置Java编译标志 LOCAL_JAVA_FLAGS := -source 1.8 -target 1.

数据库导出神器:Database-Export

引言 数据库是现代应用开发中的核心数据存储组件,而数据库导出工具成为了开发者在数据管理和迁移中的得力助手。Database-Export作为一款功能强大的数据库导出工具,为开发者提供了高效、灵活的数据导出方案。助力开发者更好地利用这一工具进行数据库操作。 Database-Export简介 Database-Export是一款开源的数据库导出工具,支持多种主流数据库系统,包括MySQL、ORACLE、SqlServer、Postgresql、Clickhouse 、Sqlite3、DB2、达梦等。其设计目的是简化数据库导出的流程,提供可视化的操作界面和丰富的配置选项,使得开发者能够轻松地导出数据,进行备份、迁移等操作。 现已支持导出的类型 wordexcelmarkdownpdfhtml 项目特点 导出sql支持多线程查询,导出速度更快使用element-ui,界面更美观支持导出word、excel、markdown、pdf、html,更支持网页预览导出速度高于现在的所有导出工具 应用 下载jar包 cmd/shell执行java -jar xxx.jar 即可启动 浏览器输入:http://localhost:9999 导出mysql数据库 html预览 导出为word 结语 Database-Export作为一款强大的数据库导出工具,通过多数据库支持、可视化操作界面、灵活的配置选项等特性,为开发者提供了便捷高效的数据库导出解决方案。将有助于开发者更好地利用这一工具,提高数据管理的效率和安全性。在未来的数据库操作中,Database-Export必将成为开发者的得力助手。

常用的将Java的String字符串转具体对象的几种方式

Java对象以User.class为例,注意:代码中使用到了lombok的@Data注解 package com.example.entity; import lombok.Data; @Data public class User { // 姓名 private String name; // 年龄 private int age; } java字符串转具体对象 1.Jsonlib解析器依赖字符串转对象-代码展示打印截图示例延伸(对象转String)代码展示延伸(对象转String)运行截图 2.fastjson解析器依赖字符串转对象-代码展示打印截图示例延伸(对象转String)代码展示延伸(对象转String)运行截图 3.jackson解析器依赖字符串转对象-代码展示打印截图示例延伸(对象转String)代码展示延伸(对象转String)运行截图 4.Gson解析器依赖字符串转对象-代码展示打印截图示例延伸(对象转String)代码展示延伸(对象转String)运行截图 1.Jsonlib解析器 依赖 <!--json-lib--> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> 字符串转对象-代码展示 package com.example.demo; import com.example.entity.User; import net.sf.json.JSONObject; public class TestA { public static void main(String[] args) throws Exception { String objectStr = "{\"name\":\"张三\",\"age\":\"18\"}"; //1、使用JSONObject JSONObject jsonObject = JSONObject.fromObject(objectStr); User user = (User) JSONObject.toBean(jsonObject, User.class); System.

Linux系统安装Mysql(手把手保姆级)

Mysql 下载 官网下载: MySQL :: MySQL Downloads 进入页面下滑底部! 等待下载完成即可 安装 上传 到/usr/local目录下 解压 将文件放在usr/local/下,进行解压 解压 tar -zxf /usr/local/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz 重命名mysql根目录文件名 重命名命令: mv /usr/local/mysql-5.7.43-linux-glibc2.12-x86_64 /usr/local/mysql 创建data文件夹 mkdir /usr/local/mysql/data 配置环境变量 打开环境配置文件 vi /etc/profile 如何进入编辑模式和保存退出请看这里:http://t.csdnimg.cn/M4GAF 进入后拉到底部加入: export PATH=/usr/local/mysql/bin:$PATH 重新加载配置文件 source /etc/profile 查找mysql配置路径 mysql --help | grep 'my.cnf' vi /etc/my.cnf [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置端口 port=3306 socket=/tmp/mysql.sock #设置mysql根目录 basedir=/usr/local/mysql #设置数据库的数据存放目录 datadir=/usr/local/mysql/data #设置最大连接数 max_connections=200 #设置mysql服务端字符集,默认为latin1 character-set-server=UTF8MB4 #设置默认存储引擎 default-storage-engine=INNODB #设置密码永不过期 default_password_lifetime=0 #设置 server接受的数据包大小 max_allowed_packet=16M 注意:根目录和数据存放目录要与上面的目录一致

django基于spark的电影推荐系统(程序+开题)

本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取 系统程序文件列表 开题报告内容 研究背景: 随着互联网的普及和大数据技术的发展,人们对于个性化推荐的需求越来越高。电影作为一种重要的娱乐方式,其推荐系统的研究也受到了广泛关注。传统的电影推荐系统主要依赖于人工规则或者简单的协同过滤算法,这些方法往往无法满足用户对于个性化推荐的需求。因此,基于Spark的电影推荐系统的研究具有重要的现实意义。 研究意义: 基于Spark的电影推荐系统可以有效地处理大规模的数据,提供更准确、更个性化的推荐结果。通过使用Spark的强大计算能力,我们可以对大量的用户行为数据进行深度挖掘,从而更好地理解用户的兴趣和需求,提供更符合用户口味的电影推荐。此外,基于Spark的电影推荐系统还可以实现高效的并行计算,大大提高了系统的运行效率。 研究目的: 本研究的主要目的是设计和实现一个基于Spark的电影推荐系统。该系统将利用Spark的强大数据处理能力,对大量的用户行为数据进行深度挖掘和分析,从而提供更准确、更个性化的电影推荐。 研究内容: 本研究的内容主要包括以下几个方面:首先,我们将设计一个用户模型,用于描述用户的兴趣和需求;其次,我们将设计一个电影分类模型,用于对电影进行分类;然后,我们将设计一个电影信息模型,用于存储电影的详细信息;最后,我们将设计一个基于Spark的电影推荐算法,用于根据用户的兴趣和需求,以及电影的分类和信息,提供个性化的电影推荐。 拟解决的主要问题: 本研究将主要解决以下几个问题:如何设计一个有效的用户模型,以准确地描述用户的兴趣和需求?如何设计一个有效的电影分类模型,以准确地对电影进行分类?如何设计一个有效的电影信息模型,以准确地存储电影的详细信息?如何设计一个基于Spark的电影推荐算法,以提供更准确、更个性化的电影推荐? 进度安排: 2022.7.2——2022.7.12 选题 2022.7.14——2022.8.25 搜集资料 2022.8.26——2022.9.10 拟写开题报告 2022.9.16——2022.10.15 系统设计 2022.10.17——2022.11.4 撰写成文 2022.11.5——2022.11.15 论文修改与定稿 参考文献: [1] 蔡迪阳. 基于Python的网页信息爬取技术分析[J]. 科技资讯, 2023, 21 (13): 31-34. [2] 崔欢欢. 基于Python的网络爬虫技术研究[J]. 信息记录材料, 2023, 24 (06): 172-174. [3] 王春明. 基于Unittest的Python测试系统[J]. 数字通信世界, 2023, (03): 66-69. [4] 丁煜飞, 夏寅宇, 汪缪凡, 齐沛锋. 基于Python软件的故障录波数据分析[J]. 电工技术, 2023, (02): 72-73+76. [5] 聂菊荣. 基于Python语言的智能信息化管理平台设计与实现[J]. 信息记录材料, 2023, 24 (05): 216-218. [6] 余飞扬, 杨衡杰.

人工智能时代:ChatGPT破土重生(文末送书)

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. 什么是ChatGPT?二. ChatGPT是如何工作的?三. ChatGPT的应用领域四. ChatGPT的优缺点4.1 ChatGPT的优点4.2 ChatGPT的缺点 五. ChatGPT 3.5与ChatGPT 4.0对比六. 总结七. 书籍推荐7.1 书籍介绍7.2 作者简介7.3 购买链接&粉丝福利 参与活动方式文末详见。 一. 什么是ChatGPT? ChatGPT是一种基于人工智能技术的自然语言处理系统,它由OpenAI开发。GPT是Generative Pre-trained Transformer的缩写,是一种使用基于Transformer模型的预训练语言模型,通过对大规模语言数据的预训练和微调来实现自然语言的理解和生成。 ChatGPT是GPT模型的一种应用,旨在实现智能化的对话交互。它可以通过处理大量的语言数据,实现对人类语言的理解和生成,从而实现智能化的对话交互。 ChatGPT的性能和效果取决于其训练数据的数量和质量,以及其预训练和微调的技术细节等因素。目前,ChatGPT已经成为自然语言处理领域内最先进的技术之一。 二. ChatGPT是如何工作的? ChatGPT 是 OpenAI 开发的一种大型语言模型,它使用了一种称为 transformer 的最先进的神经网络架构。 2017年Vaswani 等人在论文“Attention is All You Need”中首次介绍了 Transformer 架构。 ChatGPT 使用无监督学习在大量文本数据集上进行训练。训练数据由各种文本组成,包括书籍、文章、网站和其他来源。在训练期间,该模型学习识别数据中的模式和关系,然后可以使用这些模式和关系对用户输入生成连贯且相关的响应。 当您与 ChatGPT 交互时,您的输入首先由模型的分词器处理,它将文本分解为单独的分词并将它们映射为可以输入神经网络的数字表示形式。然后,该模型使用其经过训练的权重根据输入及其当前状态生成响应。对每个后续输入和响应重复此过程,使 ChatGPT 能够生成感觉自然且响应迅速的对话。 ChatGPT 通过利用强大的神经网络架构和大量训练数据来生成对用户输入的连贯且相关的响应。 三. ChatGPT的应用领域 ChatGPT可以处理各种自然语言交互任务,如问答、对话、翻译、文本生成、摘要等。以下是ChatGPT主要的应用场景: 1. 聊天机器人 ChatGPT可以实现智能化的聊天机器人,能够进行自然、流畅、智能的对话,为用户提供各种服务。 2. 文本生成 ChatGPT可以生成各种类型的文本,包括散文、新闻报道、诗歌、对话等。 3. 代码生成 在生成代码方面,ChatGPT通常是通过学习大量的代码文本数据集,以及深度学习算法的模式识别和生成能力,来生成符合特定要求的代码。 4. 搜索功能 虽然 ChatGPT 并没有直接的搜索功能,但它可以通过结合搜索引擎、问答系统和其他自然语言处理技术,提供一定的搜索服务。

保姆级amd显卡win11搭建stable diffusion教程,GPU运算,而不是CPU运算!!!

1.安装Git 2.安装python python版本一定要是3.10.6 如果是其他版本,请卸载后再重新安装此版本 3.git代理配置 此步骤主要是解决拉github源码慢的问题,如果有vpn客户端的同学,记得要单独再配置下git的代理配置(可具体查看自己开启VPN后的代理ip 端口,配置一样即可)。 开了VPN没配置git代理,正常网站进外网和github下载很快,但git命令拉取很慢? 网站会检查电脑的代理配置并使用,而git是检查git单独的代理配置,所以得配 4.stable diffusion web UI 源码包下载 源码地址 https://github.com/lshqqytiger/k-diffusion-directml.git 找一个纯英文目录的文件夹用于存放你的sd程序,执行命令拉取源码。注意这里是directml版本的了,这是为AMD显卡适配新二开的源码。 git clone https://github.com/lshqqytiger/k-diffusion-directml.git 如果网络没问题且配置了代理的话按步骤下好就行了 下好后直接双击执行里面的webui-user.bat 脚本 中间会下载各种的依赖库,会下载到根目录下的repositories文件夹里面 问题: 1.中间下载依赖包时出现各种git fetch失败情况的话,进入对应的依赖目录中,在上面的url上或者在文件夹空白部分右键进入git bash/cmd 然后执行git fetch 执行如果出现 git config --global --add safe.directory ‘F:/Stable Diffusion/stable-diffusion-webui’ fatal: detected dubious ownership in repository at ‘F:/Stable Diffusion/stable-diffusion-webui’ ‘F:/Stable Diffusion/stable-diffusion-webui’ is on a file system that does not record ownership To add an exception for this directory, call: git config --global --add safe.

轻松识别Midjourney等AI生成图片,开源GenImage

AIGC时代,人人都可以使用Midjourney、Stable Diffusion等AI产品生成高质量图片,其逼真程度肉眼难以区分真假。这种虚假照片有时会对社会产生不良影响,例如,生成公众人物不雅图片用于散播谣言;合成虚假图片用于金融欺诈,造成信任危机等。 因此,华为诺亚方舟实验室开源了百万量级的GenImage数据集,帮助企业、开发者快速构建区分AI生成的图像和真实图像的检测器和评估工具,致力于构建AIGC时代的ImageNet。 开源地址:https://github.com/GenImage-Dataset/GenImage 论文:https://arxiv.org/abs/2306.08571 项目主页:https://genimage-dataset.github.io/ GenImage主要优点 1)大量图像,包括超过一百万对 AI 生成的假图像和收集的真实图像。 2)丰富的图像内容,涵盖广泛的1000类图像。 3) 最先进的生成器,Midjourney、Stable Diffusion、ADM、GLIDE、Wukong、VQDM等,利用先进的扩散模型和 GAN 合成图像。 上述优点使得在GenImage 上训练的检测器能够经过全面的评估,并表现出对不同图像的强大适用性。 华为团队对数据集进行了全面分析,并提出了两个任务来评估类似于真实场景的检测方法。交叉生成器:检测器在一种生成器生成的数据上训练,在其他生成器生成的数据上验证。这个任务目的是考察检测器在不同生成器上的泛化能力。 退化图像识别:检测器需要对于低分辨率,模糊和压缩图像进行识别。这个任务主要考察检测器在真实条件(如互联网上传播)中面对低质量图像时的泛化问题。 数据集介绍 过去开源界也推出了一些数据集,主要有三个特点。第一数据规模小,第二都是基于GAN的,第三是局限于人脸数据。随着时间推移,数据规模慢慢地在增加,生成器也从GAN时代过渡到Diffusion时代,数据的范围也在增加。 但是一个大规模以Diffusion模型为主,涵盖各类通用图像的数据集仍然是缺失的。 基于此,华为团队提出一个对标imagenet的genimage数据集。真实的图片采用了ImageNet。 虚假的图片采用ImageNet的标签进行生成。华为团队利用了八个先进的生成器来生成,分别是Midjourney, Stable Diffusion V1.4, Stable Diffusion V1.5, ADM, GLIDE, Wukong,VQDM和BigGAN。 这些生成器生成的图片总数基本与真实图片一致。每个生成器生成的图片数量也基本一致。每一类生成的图片数量基本一致。 实验结果 华为团队做了一些实验来考察这个数据集。他们发现在某个生成器上训练的ResNet-50模型在其他的测试准确率会明显降低。 然而在真实情况下华为团队难以得知遇到的图像的生成器是什么。因此检测器对于不同生成器生成图片的泛化能力很重要。 华为团队对比了现有方法在Stable Diffusion V1.4上训练,然后在各种生成器上测试的结果,也评测了各种生成器上训练,然后在各种生成器上测试的结果。 Testing Subset那一列中的每一个数据点,都是在八个生成器上训练,然后在一个生成器上测试得到的平均结果。然后华为团队将这些测试集上的结果平均,得到最右侧的平均结果。 华为团队对测试集进行退化处理,采用不同参数下的低分辨率,JPEG压缩和高斯模糊,评测结果如下 那么采集这么多数据是不是有用呢?华为团队做了相关实验,证明通过提升数据类比和每类的图片数量是可以提高性能。 针对GenImage数据集对于不同图片的泛化能力,华为团队发现他对于人脸和艺术类图片也能达到很好的效果。 未来展望 随着AI生成图片能力的不断提升,对于AI生成的图片实现有效检测的需求将会越来越迫切。本数据集致力于为真实环境下的生成图片检测提供有效训练数据。 华为团队使用ResNet-50在本数据集中训练,然后在真实推文中进行检测。如下图,ResNet-50能够有效识别真图和假图。 这个结果证明了GenIamge可以用于训练模型以判别真实世界的虚假信息。华为团队认为,该领域未来值得努力的方向是不断提升检测器在GenImage数据集上的准确率,并进而提升其在真实世界面对虚假信息的能力。 真实图片 AI生成虚假图片 本文素材来源华为GenImage,如有侵权请联系删除 END

如何将Xcode编程环境设置为中文

Hello大家好我是咕噜铁蛋!苹果开发者们经常使用 Xcode 进行开发工作。然而,默认情况下,Xcode 是以英文界面呈现的,对于非英语母语的开发者来说,这可能会造成一些困扰。在本文中,我将分享如何设置 Xcode 的编程环境为中文,帮助你更轻松地进行开发工作,并提升开发效率与舒适体验。 一.为什么选择中文化的 Xcode 环境 在进行软件开发时,使用熟悉和舒适的语言环境可以让开发工作更加高效和愉快。将 Xcode 的编程环境设置为中文有以下好处: 1. 提升开发效率:以母语进行开发可以减少理解和翻译的时间,提高开发效率。 2. 降低学习成本:对于初学者来说,使用中文界面可以降低学习曲线和理解难度。 3. 提供更舒适的开发体验:使用熟悉的语言环境可以让开发工作更加愉快,减少语言障碍带来的困扰。 二.设置 Xcode 编程环境为中文 要将 Xcode 的编程环境设置为中文,可以按照以下步骤进行操作: 1. 下载中文语言包:打开 App Store,在搜索框中输入“Xcode”,找到 Xcode 应用,点击下载并安装。 2. 更改系统语言:打开“偏好设置” -> “语言与地区”,将中文语言拖动到首选语言列表的顶部。 3. 重新启动 Xcode:关闭已经打开的 Xcode,然后重新启动应用程序。 三.优化中文化的 Xcode 环境 为了进一步优化中文化的 Xcode 环境,可以考虑以下建议: 1. 设置代码编辑器字体:打开 Xcode,点击顶部菜单栏的 “Xcode” -> “偏好设置”,选择 “字体与颜色”,在“字体”选项卡中选择一个适合你的中文字体。 2. 自定义代码片段:Xcode 提供了丰富的代码片段库,你可以根据自己的需要进行定制,并使用中文描述和注释,以便更好地理解和使用。 3. 使用中文命名:在编写代码时,可以使用中文命名变量、函数和注释等,以增加代码的可读性和可维护性。 4. 导入中文本地化资源:如果你的项目需要多语言支持,可以导入中文本地化资源文件,以便在应用程序中提供中文界面和内容。 四.中文化 Xcode 的注意事项 在使用中文化的 Xcode 环境时,需要注意以下事项: 1. 更新 Xcode 版本时,请确保也更新中文语言包,以兼容新版本的 Xcode。

Android音频系统AudioFlinger详解 超级干货

Android 音频框架概述 Android 音频框架 Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等,Android从7.0开始专门给Audio一个server。在此之前,Audio是在MediaServer中启动Server服务的。Audio主要包括如下部分: Audio Application Framework:音频应用框架 AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类 AudioRecord:负责录音数据的采集,属 Android 应用框架 API 类 AudioSystem: 负责音频事务的综合管理,属 Android 应用框架 API 类 Audio Native Framework:音频本地框架 AudioTrack:负责回放数据的输出,属 Android 本地框架 API 类 AudioRecord:负责录音数据的采集,属 Android 本地框架 API 类 AudioSystem: 负责音频事务的综合管理,属 Android 本地框架 API 类 Audio Services:音频服务 AudioPolicyService:音频策略的制定者,负责音频设备切换的策略抉择、音量调节策略等 AudioFlinger:音频策略的执行者,负责输入输出流设备的管理及音频流数据的处理传输 Audio HAL:音频硬件抽象层,负责与音频硬件设备的交互,由 AudioFlinger 直接调用 与 Audio 强相关的有 MultiMedia,MultiMedia 负责音视频的编解码,MultiMedia 将解码后的数据通过 AudioTrack 输出,而 AudioRecord 采集的录音数据交由 MultiMedia 进行编码。 播放声音可以用MediaPlayer和AudioTrack,两者都提供了java API供应用开发者使用。虽然都可以播放声音,但两者还是有很大的区别的。其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在framework层创建对应的音频解码器。而AudioTrack只能播放已经解码的PCM流,如果是文件的话只支持wav格式的音频文件,因为wav格式的音频文件大部分都是PCM流。AudioTrack不创建解码器,所以只能播放不需要解码的wav文件。当然两者之间还是有紧密的联系,MediaPlayer在framework层还是会创建AudioTrack,把解码后的PCM数流传递给AudioTrack,AudioTrack再传递给AudioFlinger进行混音,然后才传递给硬件播放,所以是MediaPlayer包含了AudioTrack。使用AudioTrack播放音乐示例: AudioTrack audio = new AudioTrack( AudioManager.

Android显示系统SurfaceFlinger详解 超级干货

本文详细讲解了Android显示系统SurfaceFlinger,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 目录 一、Android系统启动二、SurfaceFlinger代码剖析[Android 11] 1.【执行文件-surfaceflinger】2.【动态库-libsurfaceflinger.so】3. 服务启动配置文件:/frameworks/native/services/surfaceflinger/surfaceflinger.rc4. Surface 创建过程 ①FramebufferNativeWindow②应用程序的本地窗口 - Surface③Surface的创建④SurfaceFlinger服务框架: 一、Android系统启动 Android设备从按下开机键到桌面显示画面,大致过程如下图流程: 开机显示桌面、从桌面点击 App 图标到 Activity显示在屏幕上的过程又是怎样的呢?下面介绍Android系统中的“画家” - SurfaceFlinger. SurfaceFlinger 启动过程: 二、SurfaceFlinger代码剖析[Android 11] 代码路径:/frameworks/native/services/surfaceflinger/ SurfaceFlinger二进制分成surfaceflinger可执行文件(main入口)和libsurfaceflinger.so库文件(功能实现),由main_surfaceflinger.cpp文件编译而成,Android.bp代码模块编译配置如下: 1.【执行文件-surfaceflinger】 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

Python调用MATLAB程序

提示:版本要求:Python 3.7,MATLB R2020a 文章目录 前言一、常规方法1.1 MATLAB配置MATLAB Engine API for Python1.2 测试Python 二、解决方案2.1 创建新的Python虚拟环境2.2 MATLAB配置MATLAB Engine API for Python2.3 Python配置MATLAB Engine API for Python 三、调用测试总结 前言 为纪念2024年1月16日浪费的4个小时,而创作本教程,以明晰如何在Python程序中顺利调用MATLAB。同时,在这里,感谢ChatGPT在我调试程序解决bug过程中的知无不言,无私奉献,耐心指导。 关键字:Python调用MATLAB,matlab.engine,MATLAB Engine for Python 一、常规方法 常规方法不一定适合所有可能遇到的情况 1.1 MATLAB配置MATLAB Engine API for Python 打开MATLAB软件(本文中指的是MATLAB R2020a),在命令行输入以下指令并回车执行: fullfile(matlabroot, 'extern', 'engines', 'python') 该命令旨在找到 MATLAB Engine API for Python 安装脚本所在的路径。这里,给出明确的安装脚本所在路径C:\Program Files\MATLAB\R2020a\extern\engines\python,安装脚本为该路径下的python文件setup.py 进入MATLAB Engine API for Python 目录(下面两条指令作用一致): cd (fullfile(matlabroot,'extern','engines','python')) % MATLAB命令窗口 cd /path/to/matlab/extern/engines/python % Windows PowerShell 运行安装脚本: system('python setup.

AndroidStudio开发实现一个音乐播放器

文章目录 项目概述开发环境项目结构功能演示和分析视频演示主要功能点源码获取 项目概述 此次项目使用AndroidStudio开发一个音乐播放器。包含登录注册功能,播放暂停等功能,自动检索和手动检索Mp3功能。还使用Sqlite数据库做了一个音乐收藏,播放页面还增加了一个旋转专辑的动画。非常炫酷好看。 开发环境 Android Studio版本:4.2.1 下载链接 gradle版本:gradle-6.7.1-bin 下载链接 开发语言:Java11 项目结构 项目包名:com.example.simplemusic adapter包中包含列表RecycleView用到的适配器等。 bean和db包中放置的是项目中用到的所有Java实体类,数据库操作类等。 activity包中包含所有的页面。主要是播放页面,音乐列表页面,我的收藏页面。 util和widget是一些工具类和小组件。 功能演示和分析 欢迎页面和登录页面,忽略。 首先是音乐列表页面 音乐列表页面 使用AsyncTask异步去查询手机中存在的mp3文件,本项目中使用的是ContentResolver去查询MP3文件。也可以使用递归的方式去循环遍历内存卡。 使用ContentResolver去查询的好处是,可以根据MP3查询到歌曲的作者,所属专辑图片等。但事实效果发现,网络上下载MP3大多都识别不出来。 一下代码是开启一个异步线程去查询MP3文件的代码,查询成功数据后,显示在RecycleView列表 查询到数据后,更新列表: 播放页面 播放页面使用了一个旋转的动画,非常好看 除了页面之间的交互之外,还使用到了Service。音乐在后台任务Service中播放,保证在app退出后,音乐仍然能正常播放。本文这里讲app外功能去掉了。app中列表页面和播放页面,以及我的收藏页面,都是通过service进行交互的。 视频演示 Android音乐播放器 主要功能点 最基本的5大布局,基础控件,对话框Dialog,下拉框Spinner。稍微高级一点的RecycleView,ActionBar控件。数据存储使用的是Android的Sqlite数据库,完成项目的增删改查等操作。本次项目中Android的4大组件,用到了3个。activity,service,contentprovider。是一个非常好的练手项目,代码也易于学习。Android中播放音乐使用的事MediaPlayer组件,也是很重要的知识。 源码获取 关注公众号:新手学安卓 后台回复: 音乐播放器

基于java个人博客系统(springboot框架)开题答辩常规问题和如何回答

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版等 项目都录了发布和功能操作演示视频;项目的界面和功能都可以定制,包安装运行!!! 如果需要联系我,可以在CSDN网站查询黄菊华老师 在文章末尾可以获取联系方式 基于Java的个人博客系统(使用Spring Boot框架)在开题答辩时,通常会面临关于项目背景、目标、技术选型、功能设计等方面的问题。以下是一些常规问题以及建议的回答方式: 1. 项目背景与目标 问题:请介绍个人博客系统的背景以及项目目标。 回答: 背景:随着互联网的发展,个人博客成为展示个人思想、分享知识和经验的重要平台。Java作为一种成熟、稳定的语言,结合Spring Boot框架,非常适合构建高效、可扩展的Web应用。目标:本项目的目标是开发一个功能完善、界面友好、易于扩展的个人博客系统,为用户提供便捷的博客创建、管理、分享和交流的平台。 2. 技术选型与理由 问题:为何选择Java和Spring Boot作为开发语言和框架? 回答: Java优势:Java语言具有跨平台性、面向对象、安全性高等特点,适合开发大型、复杂的Web应用。Spring Boot优势:Spring Boot简化了Spring应用的初始搭建和开发过程,提供了丰富的内置功能和快速构建Web应用的能力,非常适合敏捷开发和快速迭代。 3. 系统功能与模块 问题:个人博客系统将包含哪些核心功能和模块? 回答: 核心功能:用户注册登录、博客文章的创建与编辑、文章分类管理、评论功能、搜索功能、个人主页定制等。模块划分:用户模块、博客模块、评论模块、搜索模块、后台管理模块等。各模块之间通过清晰的接口进行交互,保证了系统的可维护性和可扩展性。 4. 数据库设计与优化 问题:请简述数据库的设计原则和优化策略。 回答: 设计原则:采用关系型数据库,设计合理的表结构和索引,保证数据的完整性和一致性。同时考虑数据的冗余和备份策略。优化策略:根据查询需求和数据量大小,合理设计数据库索引和查询语句,以提高查询效率。对于大量数据的处理,考虑使用分页查询、批量处理等技术。 5. 系统安全性与隐私保护 问题:如何确保系统的安全性和用户隐私保护? 回答: 安全措施:采用加密技术保护用户数据和传输过程的安全;实施严格的访问控制和权限管理,防止未授权访问;定期对系统进行安全漏洞扫描和修复。隐私保护:遵循相关法律法规和隐私政策,对用户数据进行脱敏处理和加密存储,确保用户隐私不被泄露。 6. 开发计划与进度安排 问题:请概述你的开发计划和进度安排。 回答: 开发计划:项目将分为需求分析、设计、开发、测试、部署和维护六个阶段进行。每个阶段都有明确的任务和时间表,通过迭代开发的方式逐步实现系统功能。进度安排:根据开发计划,合理分配时间和资源,确保项目按时完成。同时留有一定的缓冲时间以应对可能的风险和挑战。 在准备开题答辩时,除了对上述问题进行深入思考外,还要熟悉自己的项目提案和技术细节,以便能够清晰、自信地向答辩委员会展示项目的整体框架、实施计划和预期成果。同时,也要准备好应对可能的挑战和风险的策略,展示你对项目的全面掌控能力。 在回答个人博客系统开题答辩常规问题时,你可以按照以下顺序进行回答: 介绍个人博客系统的概述: 提及个人博客系统的目的和意义,如提供一个平台让用户可以发布和分享自己的文章,与其他用户交流和互动。强调使用Java语言和Spring Boot框架的优势,如高效的开发和维护、丰富的生态系统、强大的社区支持等。 系统功能和特点的介绍: 列举个人博客系统的主要功能模块,如用户管理、文章管理、评论管理、标签管理、搜索功能等。强调系统的特点,如响应式设计、多平台兼容性、安全性等。 技术选型和架构设计: 解释为什么选择使用Spring Boot框架,如其轻量级的特点、丰富的特性和插件等。详细讲解系统的架构设计,如前端使用HTML、CSS、JavaScript进行开发,后端使用Java和Spring Boot框架提供RESTful API接口。 开发流程和方法: 介绍项目的开发流程,如需求分析、系统设计、编码、测试、部署等。强调使用敏捷开发方法,如Scrum或Kanban,以保证项目的高效、灵活和质量。 难点和挑战: 提及在开发个人博客系统中遇到的难点和挑战,如系统性能优化、数据安全保护、用户体验设计等。简要介绍针对这些难点和挑战所采取的解决方案和措施。 未来的扩展和优化方向: 提及个人博客系统未来的发展方向,如引入更多的功能模块、优化系统的性能和安全性、增加更多的社交化特性等。强调个人博客系统具有良好的可扩展性和可定制性,可以满足用户不断变化的需求。 在回答这些问题时,要确保清晰、简洁和有条理,同时展示出对个人博客系统开发的专业知识和技术能力。最好通过实际案例、项目经验或相关调研数据来支持你的回答,以增加说服力。另外,也要积极回答答辩委员会提出的问题,并尽量给出合理的解决方案。

ChatGPT 和文心一言哪个更好用?

ChatGPT 和文心一言哪个更好用? 一:ChatGPT 更长的上下文:ChatGPT 可以处理更长的对话上下文。以前的模型限制了对话历史的长度,可能导致回答不完整或不连贯。ChatGPT 增加了对更长对话历史的理解能力,从而更好地回应前文和上下文。 多轮对话:ChatGPT 能够更好地处理多轮对话。以前的模型主要是基于单个句子或短语的回答,在多轮对话中可能无法准确捕捉对话的连续性和上下文。ChatGPT 能够跟踪对话的发展,并提供更连贯和一致的回答。 主动性:ChatGPT 具有更强的主动性,能够主动提出问题并追问细节。这种主动性使得对话更加交互和流畅,用户可以更好地与模型进行对话而不仅仅是简单的提问-回答。 更多的知识和背景:ChatGPT 的训练数据集中包含了更多的知识和背景信息。这使得模型能够回答更广泛的问题,并提供更准确的答案。模型可以从大量的网络文章、维基百科和其他在线资源中获取信息,并将其应用于对话中。 人类演示和修正:ChatGPT 使用了人类演示和修正的技术来改进回答的质量。模型通过与人类对话伙伴进行交互,并根据人类的指导进行学习和改进。这种训练方法可以帮助模型更好地理解用户的意图,并提供更准确和有用的回答。 二:文心一言 语言的魅力:文心一言能够以一种具有艺术性和吸引力的方式生成文案。它能够运用修辞、表达技巧和情感因素,创造出引人入胜的文本。这使得它在广告、营销和文案撰写方面非常有用,能够吸引读者的注意力并产生共鸣。 创意和灵感:文心一言能够生成独特、富有创意的文案。它能够结合不同的概念、主题和情感,为用户提供新颖和令人振奋的创意灵感。这对于需要设计或创造新颖内容的人们来说非常有帮助。 适应不同场景:文心一言具有适应性,能够为不同的场景生成合适的文案。它可以根据用户提供的关键词、要求或特定背景,生成与之相关的文案。这使得它在广告、标语、社交媒体内容等方面非常有用。 简洁而有力:文心一言能够用简洁而有力的语言表达出深入的思想和情感。它能够用精炼的文字传达信息,使得文案更加简洁明了,同时又不失表达的力度。这对于有限的字数限制或需要简明扼要表达的场景非常有用。 多样性和灵活性:文心一言可以生成不同风格、不同类型的文案,从而满足不同用户的需求。它可以根据用户的偏好和要求生成不同风格的文案,使得内容更具个性化和多样性。 三:对人工智能的看法 提高效率和便利性:人工智能技术可以自动化和优化许多重复繁琐的任务,从而提高工作效率和生活便利性。例如,自动化机器人可以代替人类从事危险、重复或枯燥的工作,智能助手可以帮助我们管理日常任务和时间安排,智能家居可以自动化控制设备和家居系统。 解决复杂问题:人工智能可以处理大量数据和复杂的问题,帮助我们发现模式、分析趋势,从而提供更准确的预测和决策支持。它可以应用于医疗诊断、金融风险分析、天气预报、交通管理等领域,帮助我们解决一些困扰已久的难题。 智能辅助和增强人类能力:人工智能可以为人类提供智能辅助,帮助我们扩展和增强自身能力。例如,智能助手可以提供实时的语音翻译,使人们能够更轻松地跨越语言障碍进行沟通。虚拟现实技术结合人工智能可以为培训、教育和医疗等领域提供更加沉浸式和个性化的体验。 促进创新和创造力:人工智能可以为创新和创造力提供有力支持。它可以帮助我们发现新的模式、设计新的产品和服务,并提供创意灵感。人工智能技术的发展将催生新的行业和就业机会,推动社会和经济的进步。

基于Spark+Springboot的电商用户行为分析系统设计和实现

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅ Java项目精品实战案例《100套》 Java微信小程序项目实战《100套》 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 目录 一、 前言介绍: 二 、功能设计: 三、功能实现: 四、库表设计: 五、关键代码: 六、论文参考: 七、其他案例: 八、推荐项目: 九、源码获取: 一、 前言介绍: 随着互联网的发展,电商行业日益繁荣。为了更好地了解用户需求和提高用户体验,越来越多的电商平台开始采用大数据分析技术来分析用户行为。本文介绍了一种基于Spark的电商用户行为分析系统,该系统可以快速地处理海量数据,并能够从多个维度对用户行为进行分析和挖掘。通过该系统,电商平台可以更好地了解用户的购买偏好、浏览习惯等信息,从而为用户提供更加个性化的服务和推荐商品。还可以帮助电商平台发现潜在的商机和市场趋势,为企业决策提供有力的支持。该系统以springboot架构技术为基础,采用Java语言和mysql数据库进行开发设计,通过对电商用户行为分析业务流程的分析,分析了其功能性和非功能性需求,设计了电商用户行为分析系统,该系统包括个人管理员和用户两部分。使得用户能够及时地找到合适自己的电商信息。个人用户在使用本系统时,可以手机、系统公告等;管理员在使用本系统时,可以通过后台管理员界面管理用户的信息,也可以发布系统公告,让用户及时了解电商信息。 二 、功能设计: 功能需求分析是系统设计的前提,它要求开发者和用户定义开发什么样的体系和系统需要什么样的功能。本文主要介绍了一种基于windows平台实现的电商用户行为分析系统。该系统为用户找到手机信息提供了更安全、更高效、更便捷的途径。本系统有两个角色:管理员和用户,要求具备以下功能: (1)用户可以浏览主页了解手机信息,并进行评论或收藏操作; (2)管理员通过后台管理员界面,实现对用户、手机、系统管理、用户资料等功能进行操作; 三、功能实现: 系统实现章节的主要内容主要是将系统分析和系统设计方案进行实现,按照各个系统角色进行功能介绍,系统实现就是一个真正开始编写的阶段,将前面的分析结果以及设计方案进行实现,最终做出一个符合用户需求的软件系统。 5.1系统前台实现 当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示: 图5-1 系统首页界面 系统注册:在系统注册页面的输入栏中输入用户注册信息进行注册操作,系统注册页面如图5-2所示: 图5-2系统注册页面 手机:在手机页面通过填写标题、商家、机身颜色、型号和品牌等详细信息进行查询,可以查看到手机详细信息,并根据需要进行评论或收藏操作;手机页面如图5-3所示: 图5-3手机详细页面 个人中心,在个人中心页面输入个人信息可以进行更新操作,并根据需要在我的收藏页面对手机信息进行收藏操作;如图5-4所示: 图5-4个人中心界面 5.2管理员功能实现 管理员登录,在登录页面正确输入用户名和密码后,点击登录进入操作系统进行操作;如图5-5所示。 图5-5管理员登录界面 管理员进入主页面,主要功能包括对用户、手机、系统管理、用户资料等进行操作。管理员主页面如图5-6所示: 图5-6 管理员主界面 管理员进行爬取数据后,点击主页面右上角的看板,可以查看到系统简介、品牌、手机总数、价格区间、机身颜色、手机信息等实时的分析图进行可视化管理;如图5-7所示: 图5-7看板界面 管理员点击用户,在用户页面输入姓名和账号进行搜索、删除或新增用户列表,并根据需要对用户详情信息进行查看、修改或删除操作;如图5-8所示: 图5-8用户界面 管理员点击手机,在手机页面输入品牌、型号、机身颜色、商家和标题进行搜索、爬取数据、删除或新增用户列表,并根据需要对手机详情信息进行修改、查看评论或删除操作;如图5-9所示: 图5-9手机界面 管理员点击系统管理,在系统公告页面输入标题进行搜索、删除或新增系统公告列表,并根据需要对系统公告详情信息进行查看、修改或删除操作,还可以对轮播图管理、系统公告分类、关于我们和系统简介进行详细操作;如图5-10所示: 图5-10系统管理界面 四、库表设计: E-R图也可称为实体-联系图,其可以清楚的显示实体与实体之间的关系,是描述概念模型的有效方式,通过各实体间的关系方便数据库结构的设计。本系统将“用户、手机、关于我们、系统公告”等作为实体,它们的局部E-R图,如图4-2所示: 五、关键代码: /** * 登录相关 */ @RequestMapping("users") @RestController public class UserController{ @Autowired private UserService userService; @Autowired private TokenService tokenService; /** * 登录 */ @IgnoreAuth @PostMapping(value = "