大数据领域数据产品的移动应用开发要点
关键词:大数据、数据产品、移动应用开发、数据处理、用户体验
摘要:本文聚焦于大数据领域数据产品的移动应用开发要点。首先介绍了大数据与移动应用结合的背景和意义,明确了开发的目的和范围,以及预期读者群体。接着阐述了核心概念,包括大数据和移动应用开发的相关原理及联系,并给出了清晰的示意图和流程图。详细讲解了核心算法原理和具体操作步骤,通过Python代码进行说明。引入数学模型和公式对开发中的关键问题进行剖析。以实际项目为例,展示了开发环境搭建、源代码实现和代码解读过程。分析了大数据领域数据产品移动应用的实际应用场景。推荐了相关的学习资源、开发工具框架和论文著作。最后总结了未来发展趋势与挑战,还设置了常见问题解答和扩展阅读参考资料,为大数据领域数据产品的移动应用开发提供全面而深入的指导。
1. 背景介绍
1.1 目的和范围
在当今数字化时代,大数据已经成为各个行业的核心资产之一。大数据领域的数据产品能够帮助企业和用户从海量的数据中提取有价值的信息,做出更明智的决策。而移动应用则是用户获取信息和服务的重要渠道。将大数据领域的数据产品与移动应用相结合,能够让用户随时随地获取大数据分析的结果,提高数据的利用效率和价值。
本文的目的在于探讨大数据领域数据产品移动应用开发的要点,包括技术原理、开发流程、实际应用场景等方面。范围涵盖了从数据采集、处理、分析到移动应用展示的整个过程,以及开发过程中涉及的算法、工具和资源。
1.2 预期读者
本文预期读者包括大数据领域的数据分析师、移动应用开发人员、软件架构师、产品经理等相关专业人士,以及对大数据和移动应用开发感兴趣的技术爱好者。对于数据分析师来说,可以了解如何将数据分析结果以移动应用的形式呈现给用户;对于移动应用开发人员,可以学习如何处理大数据并在移动应用中进行展示;对于软件架构师和产品经理,可以掌握大数据领域数据产品移动应用的整体架构和设计思路。
1.3 文档结构概述
本文将按照以下结构进行阐述:首先介绍大数据和移动应用开发的核心概念及联系,包括原理和架构的文本示意图和Mermaid流程图;接着讲解核心算法原理和具体操作步骤,通过Python代码详细说明;引入数学模型和公式对开发中的关键问题进行分析;通过实际项目案例展示开发环境搭建、源代码实现和代码解读;分析大数据领域数据产品移动应用的实际应用场景;推荐相关的学习资源、开发工具框架和论文著作;最后总结未来发展趋势与挑战,设置常见问题解答和扩展阅读参考资料。
1.4 术语表
1.4.1 核心术语定义
大数据:指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。数据产品:以数据为核心,通过对数据的采集、处理、分析和挖掘,为用户提供有价值的信息和服务的产品。移动应用开发:指创建移动应用软件的过程,包括原生应用开发、跨平台应用开发等多种方式。数据采集:从各种数据源中收集数据的过程,包括传感器、数据库、网络等。数据处理:对采集到的数据进行清洗、转换、集成等操作,以提高数据的质量和可用性。数据分析:对处理后的数据进行挖掘和分析,提取有价值的信息和知识。数据可视化:将数据分析结果以图表、报表等直观的形式展示给用户的过程。
1.4.2 相关概念解释
云计算:一种基于互联网的计算方式,通过将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。物联网:通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。人工智能:研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
1.4.3 缩略词列表
Hadoop:一个开源的分布式计算平台,用于处理大规模数据。Spark:一个快速通用的集群计算系统,用于大规模数据处理。SQL:结构化查询语言,用于管理关系型数据库。NoSQL:非关系型数据库,用于处理非结构化和半结构化数据。API:应用程序编程接口,用于不同软件系统之间的交互。
2. 核心概念与联系
2.1 大数据与移动应用开发的核心原理
大数据原理
大数据的核心原理在于数据的采集、存储、处理和分析。数据采集可以通过各种传感器、网络爬虫、数据库等方式进行。采集到的数据通常存储在分布式文件系统或数据库中,如Hadoop分布式文件系统(HDFS)或NoSQL数据库。数据处理包括数据清洗、转换和集成等操作,以提高数据的质量和可用性。数据分析则是通过各种算法和模型对处理后的数据进行挖掘和分析,提取有价值的信息和知识。
移动应用开发原理
移动应用开发的原理是创建运行在移动设备上的软件应用。原生应用开发使用特定平台的开发语言和工具,如iOS平台的Objective – C或Swift,Android平台的Java或Kotlin。跨平台应用开发则使用通用的开发语言和框架,如React Native、Flutter等,能够同时在多个平台上运行。移动应用开发需要考虑用户界面设计、交互逻辑、性能优化等方面。
2.2 大数据与移动应用开发的联系
大数据为移动应用提供了丰富的数据资源,通过对大数据的分析和挖掘,可以为移动应用提供更精准的推荐、个性化的服务和更深入的用户洞察。例如,电商移动应用可以根据用户的浏览和购买历史数据,为用户推荐符合其兴趣的商品。移动应用则是大数据的重要展示和交互平台,用户可以通过移动应用随时随地获取大数据分析的结果,进行数据查询和操作。
2.3 核心概念架构的文本示意图
+---------------------+ +---------------------+
| 大数据系统 | | 移动应用系统 |
|---------------------| |---------------------|
| 数据采集模块 | ----> | 数据接口模块 |
| 数据存储模块 | | 数据展示模块 |
| 数据处理模块 | | 用户交互模块 |
| 数据分析模块 | | 性能优化模块 |
+---------------------+ +---------------------+
2.4 Mermaid流程图
3. 核心算法原理 & 具体操作步骤
3.1 数据采集算法原理及Python实现
原理
数据采集的目的是从各种数据源中获取数据。常见的数据源包括网页、数据库、传感器等。以网页数据采集为例,主要通过网络请求获取网页的HTML内容,然后使用解析库提取所需的数据。
Python代码实现
import requests
from bs4 import BeautifulSoup
# 定义网页URL
url = 'https://example.com'
# 发送网络请求
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
# 使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(response.text, 'html.parser')
# 提取所需的数据,例如所有的标题标签
titles = soup.find_all('h1')
for title in titles:
print(title.text)
else:
print('请求失败')
3.2 数据处理算法原理及Python实现
原理
数据处理主要包括数据清洗、转换和集成等操作。数据清洗是去除数据中的噪声、重复值和缺失值;数据转换是将数据转换为适合分析的格式;数据集成是将多个数据源的数据合并到一起。
Python代码实现
import pandas as pd
# 创建一个包含缺失值和重复值的示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Alice', None],
'Age': [25, 30, 25, 35]
}
df = pd.DataFrame(data)
# 去除缺失值
df = df.dropna()
# 去除重复值
df = df.drop_duplicates()
# 数据转换,例如将年龄加1
df['Age'] = df['Age'] + 1
print(df)
3.3 数据分析算法原理及Python实现
原理
数据分析算法有很多种,如聚类分析、分类分析、回归分析等。以简单的线性回归分析为例,其原理是通过找到一条最佳的直线来拟合数据,使得数据点到直线的距离之和最小。
Python代码实现
import numpy as np
from sklearn.linear_model import LinearRegression
# 生成示例数据
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 6, 8, 10])
# 创建线性回归模型
model = LinearRegression()
# 拟合数据
model.fit(x, y)
# 预测新数据
new_x = np.array([6]).reshape(-1, 1)
prediction = model.predict(new_x)
print('预测值:', prediction)
3.4 具体操作步骤
数据采集:确定数据源,选择合适的采集工具和方法,编写采集代码,将采集到的数据存储到指定的位置。数据处理:对采集到的数据进行清洗、转换和集成,使用数据处理工具和库,如Pandas,提高数据的质量和可用性。数据分析:选择合适的分析算法和模型,对处理后的数据进行分析,使用机器学习库,如Scikit – learn,提取有价值的信息和知识。数据接口开发:将数据分析结果封装成API,供移动应用调用。可以使用Flask、Django等Web框架开发API。移动应用开发:选择合适的开发平台和工具,根据移动应用的需求设计用户界面和交互逻辑,调用数据接口获取数据并进行展示。
4. 数学模型和公式 & 详细讲解 & 举例说明
4.1 线性回归模型
数学公式
线性回归模型的一般形式为:
在简单线性回归中,只有一个自变量,公式简化为:
详细讲解
线性回归的目标是找到最佳的回归系数 β0eta_0β0 和 β1eta_1β1,使得误差项 ϵepsilonϵ 的平方和最小。常用的方法是最小二乘法,通过求解以下方程组来得到回归系数:
举例说明
假设有以下数据:
xxx | yyy |
---|---|
1 | 2 |
2 | 4 |
3 | 6 |
4 | 8 |
5 | 10 |
首先计算相关的统计量:
将这些值代入方程组:
解方程组可得:β0=0eta_0 = 0β0=0,β1=2eta_1 = 2β1=2。
所以线性回归方程为 y=2xy = 2xy=2x。
4.2 聚类分析模型(K – Means算法)
数学公式
K – Means算法的目标是将 nnn 个样本点划分为 kkk 个簇,使得每个样本点到其所属簇的质心的距离之和最小。距离通常使用欧几里得距离,对于两个样本点 x=(x1,x2,⋯ ,xn)x=(x_1,x_2,cdots,x_n)x=(x1,x2,⋯,xn) 和 y=(y1,y2,⋯ ,yn)y=(y_1,y_2,cdots,y_n)y=(y1,y2,⋯,yn),欧几里得距离公式为:
详细讲解
K – Means算法的步骤如下:
随机选择 kkk 个样本点作为初始质心。将每个样本点分配到距离最近的质心所在的簇。重新计算每个簇的质心。重复步骤2和3,直到质心不再发生变化或达到最大迭代次数。
举例说明
假设有以下二维样本点:
随机选择 (1,2)(1, 2)(1,2) 和 (8,7)(8, 7)(8,7) 作为初始质心。计算每个样本点到两个质心的欧几里得距离,将 (1,2)(1, 2)(1,2) 和 (2,3)(2, 3)(2,3) 分配到以 (1,2)(1, 2)(1,2) 为质心的簇,将 (8,7)(8, 7)(8,7) 和 (9,8)(9, 8)(9,8) 分配到以 (8,7)(8, 7)(8,7) 为质心的簇。重新计算两个簇的质心:
第一个簇的质心:(1+22,2+32)=(1.5,2.5)(frac{1 + 2}{2},frac{2 + 3}{2})=(1.5, 2.5)(21+2,22+3)=(1.5,2.5)第二个簇的质心:(8+92,7+82)=(8.5,7.5)(frac{8 + 9}{2},frac{7 + 8}{2})=(8.5, 7.5)(28+9,27+8)=(8.5,7.5)
重复步骤2和3,直到质心不再发生变化。
5. 项目实战:代码实际案例和详细解释说明
5.1 开发环境搭建
大数据环境搭建
安装Hadoop:Hadoop是一个开源的分布式计算平台,用于处理大规模数据。可以从Hadoop官方网站下载安装包,按照官方文档进行安装和配置。安装Spark:Spark是一个快速通用的集群计算系统,用于大规模数据处理。可以从Spark官方网站下载安装包,将其配置到Hadoop集群中。
移动应用开发环境搭建
iOS开发环境:需要安装Xcode开发工具,它包含了iOS开发所需的编译器、模拟器等。Android开发环境:需要安装Android Studio开发工具,以及Java开发环境和Android SDK。
数据接口开发环境搭建
安装Python:Python是一种常用的编程语言,用于开发数据接口。可以从Python官方网站下载安装包进行安装。安装Flask:Flask是一个轻量级的Web框架,用于开发RESTful API。可以使用pip命令进行安装:
pip install flask
5.2 源代码详细实现和代码解读
数据接口开发
from flask import Flask, jsonify
app = Flask(__name__)
# 模拟数据分析结果
data = {
'message': 'Hello, World!',
'data': [1, 2, 3, 4, 5]
}
@app.route('/api/data', methods=['GET'])
def get_data():
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
代码解读:
导入Flask库和jsonify函数,用于创建Web应用和返回JSON数据。创建一个Flask应用实例。定义一个模拟的数据分析结果。使用
装饰器定义一个API接口,当用户访问
@app.route
时,返回模拟的数据分析结果。最后启动Flask应用。
/api/data
iOS移动应用开发(Swift)
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 创建URL
if let url = URL(string: "http://localhost:5000/api/data") {
// 创建URL请求
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if let data = data {
do {
// 解析JSON数据
let json = try JSONSerialization.jsonObject(with: data, options: [])
if let jsonDict = json as? [String: Any] {
if let message = jsonDict["message"] as? String {
print("Message: (message)")
}
if let dataArray = jsonDict["data"] as? [Int] {
print("Data: (dataArray)")
}
}
} catch {
print("JSON解析错误: (error)")
}
}
}
// 启动任务
task.resume()
}
}
}
代码解读:
导入UIKit库,用于创建iOS界面。在
方法中,创建一个URL对象,指向数据接口的地址。使用
viewDidLoad
创建一个数据任务,发送HTTP请求获取数据。在回调函数中,解析返回的JSON数据,并打印出其中的信息。最后启动任务。
URLSession
Android移动应用开发(Java)
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
new FetchDataTask().execute("http://localhost:5000/api/data");
}
private class FetchDataTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
try {
URL url = new URL(urls[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = urlConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
return result.toString();
} finally {
urlConnection.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
try {
JSONObject json = new JSONObject(result);
String message = json.getString("message");
JSONArray dataArray = json.getJSONArray("data");
StringBuilder dataString = new StringBuilder();
for (int i = 0; i < dataArray.length(); i++) {
dataString.append(dataArray.getInt(i)).append(" ");
}
textView.setText("Message: " + message + "
Data: " + dataString.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}
代码解读:
导入必要的库,用于网络请求和JSON解析。在
方法中,找到布局文件中的
onCreate
控件,并启动一个异步任务
TextView
。
FetchDataTask
类继承自
FetchDataTask
,用于在后台线程中发送HTTP请求并获取数据。在
AsyncTask
方法中,创建URL对象,打开HTTP连接,读取返回的数据。在
doInBackground
方法中,解析返回的JSON数据,并将结果显示在
onPostExecute
中。
TextView
5.3 代码解读与分析
数据接口开发
使用Flask框架可以快速开发RESTful API,代码简洁易懂。通过定义路由和处理函数,可以方便地返回JSON数据。需要注意的是,在实际应用中,应该对数据进行更复杂的处理和验证,确保数据的安全性和可靠性。
iOS移动应用开发
使用
可以方便地发送HTTP请求并获取数据。在解析JSON数据时,需要处理可能的异常情况,确保应用的稳定性。可以将数据展示在UI界面上,提高用户体验。
URLSession
Android移动应用开发
使用
在后台线程中进行网络请求,避免阻塞主线程。在解析JSON数据时,同样需要处理异常情况。可以将数据显示在
AsyncTask
等UI控件上,方便用户查看。
TextView
6. 实际应用场景
6.1 金融领域
在金融领域,大数据领域的数据产品移动应用可以帮助用户实时获取金融市场数据,如股票价格、汇率等。通过对历史数据的分析和预测,为用户提供投资建议和风险评估。例如,用户可以通过移动应用查看自己的投资组合的实时收益情况,根据市场动态进行调整。
6.2 医疗领域
在医疗领域,大数据与移动应用的结合可以实现医疗数据的实时监测和分析。医生可以通过移动应用查看患者的病历、检查报告等信息,进行远程诊断和治疗。患者可以通过移动应用记录自己的健康数据,如心率、血压等,及时了解自己的健康状况。
6.3 电商领域
在电商领域,大数据领域的数据产品移动应用可以为用户提供个性化的商品推荐。通过分析用户的浏览和购买历史数据,了解用户的兴趣和偏好,为用户推荐符合其需求的商品。同时,还可以提供促销活动信息和订单跟踪服务,提高用户的购物体验。
6.4 交通领域
在交通领域,大数据与移动应用的结合可以实现交通流量的实时监测和预测。用户可以通过移动应用查看实时路况信息,选择最佳的出行路线。交通管理部门可以通过大数据分析,优化交通信号控制,提高交通效率。
7. 工具和资源推荐
7.1 学习资源推荐
7.1.1 书籍推荐
《Python数据分析实战》:介绍了如何使用Python进行数据分析,包括数据采集、处理、分析和可视化等方面的内容。《大数据技术原理与应用》:全面介绍了大数据的相关技术,如Hadoop、Spark等。《移动应用开发实战》:详细讲解了iOS和Android移动应用开发的技术和方法。
7.1.2 在线课程
Coursera上的“大数据基础”课程:由知名高校教授授课,系统地介绍了大数据的概念、技术和应用。Udemy上的“Python数据分析从入门到精通”课程:通过实际案例,帮助学员掌握Python数据分析的技能。edX上的“移动应用开发”课程:提供了iOS和Android移动应用开发的详细教程。
7.1.3 技术博客和网站
掘金:提供了大量的技术文章和案例,涵盖了大数据、移动应用开发等多个领域。开源中国:汇聚了众多开源项目和技术文章,是开发者学习和交流的平台。思否:专注于技术问答和分享,有很多关于大数据和移动应用开发的讨论。
7.2 开发工具框架推荐
7.2.1 IDE和编辑器
PyCharm:一款专业的Python集成开发环境,提供了丰富的代码编辑、调试和分析功能。Xcode:苹果官方的iOS开发工具,集成了编译器、模拟器等,方便开发者进行iOS应用开发。Android Studio:谷歌官方的Android开发工具,提供了可视化的界面设计和调试功能。
7.2.2 调试和性能分析工具
Charles:一款强大的HTTP代理服务器和调试工具,可用于拦截和分析移动应用的网络请求。Instruments:Xcode自带的性能分析工具,可用于分析iOS应用的性能瓶颈。Android Profiler:Android Studio自带的性能分析工具,可用于分析Android应用的CPU、内存和网络使用情况。
7.2.3 相关框架和库
Pandas:Python中用于数据处理和分析的库,提供了高效的数据结构和数据操作方法。Scikit – learn:Python中用于机器学习的库,包含了各种机器学习算法和工具。React Native:Facebook开发的跨平台移动应用开发框架,可用于快速开发iOS和Android应用。
7.3 相关论文著作推荐
7.3.1 经典论文
《MapReduce: Simplified Data Processing on Large Clusters》:介绍了MapReduce编程模型,是大数据处理的经典论文。《The Google File System》:介绍了Google文件系统(GFS)的设计和实现,对分布式文件系统的发展产生了重要影响。
7.3.2 最新研究成果
《Deep Learning for Big Data Analytics: A Survey》:综述了深度学习在大数据分析中的应用和研究进展。《Mobile Application Development with Big Data: Challenges and Opportunities》:探讨了大数据与移动应用开发结合的挑战和机遇。
7.3.3 应用案例分析
《Big Data in Finance: Applications and Challenges》:分析了大数据在金融领域的应用案例和面临的挑战。《Big Data in Healthcare: Transforming the Future of Medicine》:介绍了大数据在医疗领域的应用案例和发展趋势。
8. 总结:未来发展趋势与挑战
8.1 未来发展趋势
智能化
大数据领域的数据产品移动应用将越来越智能化。通过人工智能和机器学习技术,能够实现更精准的数据分析和预测,为用户提供更个性化的服务和建议。例如,智能投资顾问可以根据用户的财务状况和风险偏好,为用户制定最佳的投资方案。
实时化
随着网络技术的发展,大数据领域的数据产品移动应用将实现实时数据处理和展示。用户可以实时获取最新的数据分析结果,及时做出决策。例如,在金融交易中,用户可以实时了解市场行情,进行快速交易。
融合化
大数据将与物联网、区块链等技术深度融合。物联网设备产生的大量数据将为大数据分析提供更丰富的数据源,区块链技术可以保证数据的安全性和可信度。例如,在供应链管理中,通过物联网设备实时采集货物的位置和状态信息,利用区块链技术保证数据的不可篡改,通过大数据分析优化供应链流程。
8.2 挑战
数据安全和隐私
大数据领域的数据产品移动应用涉及大量的用户数据,数据安全和隐私问题是一个重要的挑战。需要采取有效的安全措施,如数据加密、访问控制等,保护用户数据的安全和隐私。
性能优化
随着数据量的不断增加,大数据处理和移动应用的性能优化成为一个关键问题。需要采用高效的算法和技术,如分布式计算、缓存技术等,提高系统的性能和响应速度。
人才短缺
大数据和移动应用开发是一个新兴的领域,需要具备多方面知识和技能的人才。目前,相关领域的人才短缺,需要加强人才培养和引进。
9. 附录:常见问题与解答
9.1 大数据领域的数据产品移动应用开发需要哪些技术栈?
需要掌握大数据技术(如Hadoop、Spark)、数据处理和分析技术(如Python、Pandas、Scikit – learn)、移动应用开发技术(如iOS开发、Android开发、React Native)以及Web开发技术(如Flask、Django)。
9.2 如何保证大数据领域的数据产品移动应用的安全性?
可以采取以下措施:数据加密、访问控制、安全审计、使用安全的网络协议等。同时,要对开发过程进行严格的安全测试和漏洞修复。
9.3 大数据领域的数据产品移动应用开发的成本高吗?
开发成本取决于多个因素,如开发团队的规模和经验、开发工具和技术的选择、项目的复杂度等。一般来说,大数据和移动应用开发需要投入一定的人力和物力资源,但随着技术的发展和开源工具的使用,成本会逐渐降低。
9.4 如何提高大数据领域的数据产品移动应用的性能?
可以采用以下方法:优化算法、使用分布式计算、缓存技术、压缩数据等。同时,要对系统进行性能测试和调优,及时发现和解决性能瓶颈。
10. 扩展阅读 & 参考资料
扩展阅读
《数据密集型应用系统设计》:深入探讨了数据密集型应用系统的设计和实现,包括数据存储、处理和分析等方面的内容。《人工智能:现代方法》:全面介绍了人工智能的理论和方法,对大数据分析和移动应用开发有一定的参考价值。
参考资料
Hadoop官方文档:https://hadoop.apache.org/docs/Spark官方文档:https://spark.apache.org/docs/Flask官方文档:https://flask.palletsprojects.com/React Native官方文档:https://reactnative.dev/docs/