使用EDA架构部署在线外卖订单系统

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,u1 4核8GB 1个月
云服务器 ECS,每月免费额度200元 3个月
简介: 本实验将使用消息系统构建超级外卖订单,通过订单流转及处理阐述如何在多环境,复杂场景下使用消息做订单解耦,业务分发等。

使用EDA架构部署在线外卖订单系统

1. 选择实验资源

本实验支持实验资源体验、开通免费试用、个人账户资源三种实验资源方式。

在实验开始前,请您选择其中一种实验资源,单击确认开启实验

  • 如果您选择的是实验资源体验,资源创建过程需要3~5分钟(视资源不同开通时间有所差异,ACK等资源开通时间较长)。完成实验资源的创建后,在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等)。

说明:实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

  • 如果您选择的是开通免费试用,下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。

说明:试用云产品开通在您的个人账号下,并占用您的试用权益如试用超出免费试用额度,可能会产生一定费用。

阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心


2. 创建实验资源

开始实验之前,您需要先创建实验相关资源。

  1. 在实验室页面,单击创建资源
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。

说明:资源创建过程需要3~5分钟。


3. 配置云服务器ECS

本步骤指导如何通过控制台远程连接ECS实例配置实验所需环境。

1. 登录并访问ECS控制台

公共资源体验】请按如下步骤访问控制台

(1)双击打开远程桌面的Chromium网页浏览器

(2)在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码用户密码输入框,单击登录

(3)复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问云服务器ECS控制台。

https://ecs.console.aliyun.com/

个人账号资源】、【开通免费试用】请按如下步骤访问控制台

(1)在当前实验控制台操作区找到“云服务器ECS”卡片并点击

(2)直接在控制台操作区内打开ECS控制台,并进行后续操作

2. 在云服务器ECS控制台左侧导航栏中,选择实例与镜像>实例

3. 在实例页面顶部,选择资源所在地域。

说明:您可以在云产品资源列表中查看到实验室分配的云服务器ECS所在地域。

4. 在实例页面,找到您创建的ECS实例,单击右侧操作列下的远程连接

说明:您可以在云产品资源列表中查看到实验室分配的云服务器ECS的实例ID。

5. 在连接与命令对话框中,单击Workbench远程连接区域的立即登录

6. 执行如下命令,下载Node.js安装包。

说明:本实验需要下载并安装Node.js V17.XX以上版本,手册内容以v17.4.0为例。

wget https://npm.taobao.org/mirrors/node/v17.4.0/node-v17.4.0-linux-x64.tar.xz

7. 执行如下命令,解压安装包并重命名。

tar -xvf node-v17.4.0-linux-x64.tar.xz && mv node-v17.4.0-linux-x64/ /usr/local/node

8. 执行如下命令,配置环境变量。

echo "export PATH=$PATH:/usr/local/node/bin" >> /etc/profile
source /etc/profile

9. 执行如下命令,下载Demo文件的压缩包。

wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/Cloud_EventBridge_Demo-main.zip

10. 执行如下命令,安装unzip。

yum install unzip -y

11. 执行如下命令,解压Demo文件的压缩包。

unzip Cloud_EventBridge_Demo-main.zip

12. 执行如下命令,查看root目录下的文件。

ls

返回结果如下,Cloud_EventBridge_Demo-main就是本实验所使用的Demo文件。


4. 配置云数据库RDS MySQL版

本步骤指导您如何通过控制台创建云数据库RDS MySQL版实例,并通过控制台配置实验所需的账号、数据库和数据表。

  1. 登录云数据库RDS控制台。

1.1 【公共资源体验】复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问云数据库RDS控制台。

https://rdsnext.console.aliyun.com/

个人账号资源】、【开通免费试用】直接点击RDS控制台,在控制台操作区打开

1.2 在左侧导航栏中,单击实例列表

1.3 在实例列表页面顶部菜单栏中,切换资源所在地域。

说明:您可在云产品资源列表中查看RDS资源所在的地域。

  1. 创建数据库。

2.1在实例列表页面,找到实验室分配的RDS资源,单击实例ID

说明:您可在云产品资源列表中查看RDS的实例ID。

2.2 在基本信息页面,单击左侧导航栏的数据库管理

2.3 在数据库管理页面。单击创建数据库

2.4 在创建数据库对话框中,参考说明配置数据库信息,单击创建

参数说明:

  • 数据库(DB)名称:输入数据库名称,例如test123
  • 支持字符集:默认设为utf8
  • 备注说明:非必填。用于备注该数据库的相关信息,便于后续数据库管理,最多支持256个字符。

  1. 创建账号。

3.1 在数据库管理页面,单击左侧导航栏的账号管理

3.2 在账号管理页面,单击创建账号

3.3 在创建账号对话框中,参考说明配置账号信息,单击确定。

参数说明:

  • 数据库账号:输入数据库账号名称,例如user123
  • 账号类型:选择普通账号
  • 授权数据库:将上一步中创建的数据库添加至已授权数据库列表中,并设置权限为读写(DDL+DML)
  • 密码:输入账号密码,例如Password123
  • 确认密码:再次输入账号密码。

  1. 申请外网地址。

4.1 在账号管理页面,单击左侧导航栏的数据库连接

4.2 在数据库连接页面,单击开通外网地址

4.3 在提示对话框中,选中将0.0.0.0/0加入白名单。单击确定

  1. 创建表。

5.1 在数据库连接页面,单击登录数据库

5.2 在登陆实例对话框中,输入您上一步创建的数据库账号数据库密码,然后单击测试连接

5.3 在成功对话框中,单击确认

5.4 在登陆实例对话框中,单击登录

5.5 在数据库实例区域,选择已登录实例>您的云数据库RDS MySQL版实例,然后双击您创建的数据库

5.6 在SQL Console页签,输入如下SQL语句,单击执行(F8),创建名为test123的表。

CREATE TABLE `test123` (
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `city` varchar(260) DEFAULT NULL,
  `address` varchar(260) DEFAULT NULL,
  `telephone` varchar(255) DEFAULT NULL,
  `country` varchar(255) DEFAULT NULL,
  `total` varchar(255) DEFAULT NULL,
  `state` varchar(255) DEFAULT NULL,
  `id` int NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3
;

返回结果如下,表示您已成功创建实验所需要的表。

5.7在区域,单击刷新图标。

返回结果如下,您可查看到新创建的表。


5. 创建消息服务MNS

本步骤指导您如何通过控制台创建消息服务MNS。

注意:本步骤的所有操作均在您自己的阿里云主账号下进行,您需要使用您自己的阿里云主账号开通消息服务MNS,云起实验室暂不支持提供消息服务MNS。消息服务MNS的计费项说明,详情请参见定价中心

  1. 在您的本机浏览器中,登录并前往消息服务MNS控制台
  2. 开通消息服务MNS。

说明:如果您已开通消息服务MNS,请忽略此步骤。

2.1 在概览页面,单击免费开通

2.2 在消息服务MNS页面,选中《消息服务MNS服务协议》,单击立即开通

返回如下页面,表示消息服务MNS开通成功。

  1. 创建队列。

3.1 在开通完成页面,单击管理控制台

3.2 在左侧导航栏中,单击队列列表

3.3 在队列列表页面顶部菜单栏中,选择地域所在地。

说明:消息服务MNS需要创建与事件总线EventBridge相同的地域的消息服务,本实验手册以华东1(杭州)为例。

3.4 在队列列表页面,单击创建队列

3.5 在创建队列对话框中,输入名称,例如test,其他配置保持默认即可,单击确定

3.6 在队列列表页面,找到您创建的队列,单击右侧操作列下的详情

返回如下页面,您可查看到队列的的相关信息,其中名称和接入点中的地域将会在Demo配置文件中使用。


6. 创建事件总线EventBridge

本步骤指导您如何通过控制台创建事件总线EventBridge。

注意:本步骤的所有操作均在您自己的阿里云主账号下进行,您需要使用您自己的阿里云主账号开通事件总线EventBridge,云起实验室暂不支持提供事件总线EventBridge。事件总线EventBridge的计费项说明,详情请参见计费说明

  1. 前往事件总线EventBridge控制台
  2. 开通事件总线EventBridge。

说明:如果你已开通事件总线EventBridge,请忽略此步骤。

2.1 在概览页面,单击免费开通

2.2 在提示对话框中,单击确定

2.3 在事件总线EventBridge开通页面,选中《事件总线EventBridge(按量付费)服务协议》,单击立即开通

2.4 在事件总线EventBridge开通页面,单击关闭

2.5 在概览页面,单击刷新

2.6 在概览页面,选中全部角色,单击授权

返回如下页面,表示您已开通事件总线EventBridge并完成授权。

  1. 创建事件总线EventBridge。

4.1 在左侧导航栏中,单击事件总线

4.2 在事件总线页面,单击自定义事件总线快速创建

4.3 在创建自定义事件总线面板的总线中,输入自定义事件总线名称描述,例如自定义事件总线名称为test,描述为test123,单击下一步

4.4 在创建自定义事件总线面板的事件源中,输入事件源名称,例如mnstest,时间提供方选择消息服务MNS

4.5 在阿里云服务授权-消息服务MNS对话框中,单击确定

说明:如果您已授权过消息服务MNS,请忽略此步骤。

4.6 在创建自定义事件总线面板的事件源中,队列名称选择您刚刚创建的队列,取消选中开启Base64解码(注意:这一步一定要去掉选中,否则后面流程会走不通),单击下一步

4.7 在创建自定义事件总线面板的规则中,输入规则名称,例如ruletest,单击下一步

4.8 在创建自定义事件总线面板的规则中,单击跳过

4.9 在直接创建自定义事件总线对话框中,单击确定

返回如下页面,表示您已成功创建事件总线EventBridge。


7. 配置事件总线EventBridge

本步骤指导您如何配置事件总线EventBridge。

  1. 配置钉钉目标。

1.1 打开您的钉钉群聊。

1.2 在群聊中,单击右上角的 群设置图标。

1.3 在群设置面板,单击智能群助手

1.4 在智能群助手面板,单击添加机器人

1.5 在群机器人面板,单击添加机器人右侧的 设置图标。

1.6 在群机器人面板,单击自定义

1.7 在机器人详情面板,单击添加

1.8 在添加机器人面板,输入机器人名字,例如测试。选中安全设置中的加签,然后单击复制,将密钥粘贴到您本机的任意文本文档中。选中我已阅读并同意《自定义机器人服务及免责条款》,单击完成

说明:密钥在配置钉钉事件目标时需要使用。

1.9 在添加机器人面板,单击Webhook右侧的复制,将Webhook地址粘贴到您本机的任意文本文档中,单击完成

注意:

  • 请保管好此Webhook地址,不要公布在外部网站上,泄露有安全风险。
  • Webhook地址在配置钉钉事件目标时需要使用。

返回如下结果,表示您已成功添加群机器人。

1.10 切换至事件总线EventBridge控制台页签。在左侧导航中,单击事件规则

1.11 在事件规则页面,单击创建规则

1.12 在创建规则面板的配置基本信息中,输入名称,例如dingtalk,单击下一步

1.13 在创建规则面板配置事件模式中,单击下一步

1.14 在创建规则面板的配置事件目标中,参考如下说明配置事件目标,然后单击创建

配置说明:

  • 服务类型:选择钉钉asc.dingtalk。
  • 地址:输入您添加的机器人的Webhook地址。
  • 密钥:输入您添加的机器人的密钥。
  • 变量:在本实验中,添加如下变量声明。
{
  "name":"$.data.messageBody.name",
  "country":"$.data.messageBody.country",
  "total":"$.data.messageBody.total",
  "address":"$.data.messageBody.address",
  "city":"$.data.messageBody.city",
  "telephone":"$.data.messageBody.telephone",
  "email":"$.data.messageBody.email",
  "state":"$.data.messageBody.state"
}
  • 模板:在本实验中,添加如下模板。
{
     "msgtype": "markdown",
     "markdown": {
         "title":"订单推送通知",
         "text": "## 订单推送通知    \n  用户名:${name}  \n 订单金额:${total}  \n 订单地城市:${city}  \n 详细地址:${address}  \n 电话:${telephone}  \n 订单状态:${state}"
     }
 }

返回如下页面,表示您已成功在事件总线EventBridge中添加钉钉目标。

  1. 配置数据库目标-新订单创建。

2.1 在事件规则页面,单击创建规则

2.2 在创建规则面板的配置基本信息中,输入名称,例如rds-create,单击下一步

2.3 在创建规则面板配置事件模式中,在模式内容中添加如下内容,单击下一步

{
    "data": {
        "messageBody": {
            "state": [
                "未送达"
            ]
        }
    }
}

说明:在事件模式的模式内容填写的判断是本次实验的重点,通过此判断可以决定后续数据是否为新建订单的,如果是新建订单即状态为“未送达”则插入新数据,如果是老订单即状态为“已送达”则需更新相关状态到老订单。本条规则需配置未送达规则。

2.4 在创建规则面板的配置事件目标中,参考如下说明配置事件目标,然后单击创建

配置说明:

  • 服务类型:选择数据库asc.rds.mysql。如果弹出阿里云服务授权-RDS,用来完成数据投递至RDS对话框时,单击确定即可。
  • 数据库配置:选择自建MySql。
  • 数据库地址:输入实验室分配的云数据库RDS MySQL版实例的外网地址。
  • 数据库名称:输入您创建的数据库名称。
  • 数据库账号:输入您创建的数据库账号。
  • 数据库密码:输入您创建的数据库账号的密码。
  • 并发配置:在本实验中,输入1。
  • 网络配置:选择公网。
  • 入库配置:选择自定义SQL。
  • 变量:在本实验中,添加如下变量声明。
{
    "tableName": "test123",
    "column1": "name",
    "column1_value": "$.data.messageBody.name",
    "column2": "email",
    "column2_value": "$.data.messageBody.email",
    "column3": "city",
    "column3_value": "$.data.messageBody.city",
    "column4": "address",
    "column4_value": "$.data.messageBody.address",
    "column5": "telephone",
    "column5_value": "$.data.messageBody.telephone",
    "column6": "country",
    "column6_value": "$.data.messageBody.country",
    "column7": "total",
    "column7_value": "$.data.messageBody.total",
    "column8": "state",
    "column8_value": "$.data.messageBody.state"
}
  • SQL语句:在本实验中,添加如下SQL语句。
INSERT INTO ${tableName} 
 (${column1},${column2},${column3},${column4},${column5},${column6},${column7},${column8}) VALUES('${column1_value}','${column2_value}','${column3_value}','${column4_value}','${column5_value}','${column6_value}','${column7_value}','${column8_value}')

返回如下页面,表示您已成功在事件总线EventBridge中添加数据库目标-新订单创建。

  1. 配置数据库目标-更新订单。

3.1 在事件规则页面,单击创建规则

3.2 在创建规则面板的配置基本信息中,输入名称,例如rds-update,单击下一步

3.3 在创建规则面板配置事件模式中,在模式内容中添加如下内容,单击下一步

{
    "data": {
        "messageBody": {
            "state": [
                "已送达"
            ]
        }
    }
}

说明:在事件模式的模式内容填写的判断是本次实验的重点,通过此判断可以决定后续数据是否为新建订单的,如果是新建订单即状态为“未送达”则插入新数据,如果是老订单即状态为“已送达”则需更新相关状态到老订单。本条规则需配置已送达规则。

3.4 在创建规则面板的配置事件目标中,参考如下说明配置事件目标,然后单击创建

配置说明:

  • 服务类型:选择数据库asc.rds.mysql。如果弹出阿里云服务授权-RDS,用来完成数据投递至RDS对话框时,单击确定即可。
  • 数据库配置:选择自建MySql。
  • 数据库地址:输入实验室分配的云数据库RDS MySQL版实例的外网地址。
  • 数据库名称:输入您创建的数据库名称。
  • 数据库账号:输入您创建的数据库账号。
  • 数据库密码:输入您创建的数据库账号的密码。
  • 并发配置:在本实验中,输入1。
  • 网络配置:选择公网。
  • 入库配置:选择自定义SQL。
  • 变量:在本实验中,添加如下变量声明。
{
    "tableName": "test123",
    "column1": "state",
    "column1_value": "$.data.messageBody.state",
    "column2": "id",
    "column2_value": "$.data.messageBody.id"
}

SQL语句:在本实验中,添加如下SQL语句。

UPDATE `${tableName}`.`${tableName}` SET `${column1}`='${column1_value}' WHERE `${column2}`=${column2_value};

返回如下页面,表示您已成功在事件总线EventBridge中添加数据库目标-新订单创建。


8. 运行Demo并体验超级外卖订单系统

本步骤带您体验超级外卖订单系统。

  1. 配置Demo的配置文件。

1.1 切换至实验室的云服务器ECS的终端页面。

1.2 执行如下命令,进入Cloud_EventBridge_Demo-main/controllers目录。

cd Cloud_EventBridge_Demo-main/controllers

1.3 执行如下命令,将文件ali-config-sample.json重命名为ali-config.json

mv ali-config-sample.json ali-config.json

1.4 执行如下命令,修改ali-config.json配置文件。

vim ali-config.json

1.5 按i键切换至编辑模式,参考如下说明配置参数。

参数说明:

  • accountid:填写您的阿里云主账号的账号id(uid),请勿填写成实验室提供的子账号的uid。
  • region:填写消息服务MNS的队列所在地域。例如cn-hangzhou。
  • accessKeyId:填写您的阿里云主账号的AccessKey ID。请在安全信息管理页面查看您账号的AccessKey ID和AccessKey Secret,请勿填写成实验室提供的子账号的AK ID。
  • accessKeySecret:填写您的阿里云主账号的AccessKey Secret。请在安全信息管理页面查看您账号的AccessKey ID和AccessKey Secret,请勿填写成实验室提供的子账号的AK Secret。
  • queuename:填写消息服务MNS的队列的名称。例如test。
  • host:填写实验室提供的云数据库RDS MySQL版实例的外网地址。数据库RDS MySQL版实例的外网地址的查询位置为云数据库RDS控制台>RDS实例>数据库链接>外网地址
  • port:数据库端口默认为3306。
  • user:填写您创建的数据库用户名。例如user123。
  • password:填写您创建的数据库用户名的密码。例如Password123。
  • database:填写您创建的数据库名。例如test123。
  • tablename:填写表名,在本实验中填写test123。

1.6 修改完成后,按下Esc键后,输入:wq并回车,保存并退出配置文件。

  1. 运行Demo。

2.1 执行如下命令,进入Cloud_EventBridge_Demo-main目录。

cd /root/Cloud_EventBridge_Demo-main

2.2 执行如下命令,配置阿里巴巴镜像地址。

npm config set registry https://registry.npmmirror.com

2.3 执行如下命令,安装依赖。

注意:如果出现报错,你需要再次执行安装依赖的命令。

npm i

2.4 执行如下命令,启动服务。

node app.js

2.5 在您的浏览器中打开新页签,在地址栏中输入并访问https//<ECS公网地址>:3000

说明:您需要在将<ECS公网地址>替换为实验室分配的云服务器ECS的公网地址,您可在云产品资源列表中查看到实验室分配的云服务器ECS的公网地址。

返回如下页面,表示您已成功访问外卖下单系统。

  1. 体验客户侧。

3.1 在外卖下单系统页面,单击客户侧

3.2 在菜品选择页面,选择任意菜品并设置购买数量,然后单击Add to cart

3.3 在购物车页面,单击Go To Checkout

3.4 在结算页面用户联系方式明细区域,填写相关信息,然后单击Sumbit

返回如下页面,表示下单成功,同时在钉钉中收到订单信息。

  1. 体验商户侧。

外卖下单系统页面,单击商户侧

返回如下页面,在商户订单页面可以查询到所有订单。

  1. 体验骑手侧。

5.1 在外卖下单系统页面,单击骑手侧

5.2 在骑手页面,选择任意一条订单,单击右侧操作列下的订单送达

5.3 在商户订单页面可以看到订单状态变为已送达,钉钉中也推送相关订单通知。


9. 释放资源

在实验完成后,请您及时释放事件总线EventBridge和消息服务MNS相关资源,避免继续产生费用。

  1. 释放事件总线EventBridge。

1.1 在事件源页签中,找到您创建的事件源,单击删除

1.2 在事件规则页签中,找到您创建的规则,在右侧操作列下选择更多>删除,依次删除三个规则。

1.3 在事件总线页面,找到您创建的事件总线,单击删除

  1. 释放消息服务MNS。

在消息服务MNS控制台的队列列表页面,找到您创建的队列,单击删除

实验链接:https://developer.aliyun.com/adc/scenario/18b46d02239441cfa1538bf6b9d3e200

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
前端开发 Java 开发工具
Java医院绩效考核系统源码:关于医院绩效考核系统的技术架构、系统功能、如何选择医院绩效考核管理系统
系统开发环境 开发语言:java 技术架构:B/S架构 开发工具:maven、Visual Studio Code 前端框架:avue 后端框架:springboot、mybaits 数 据 库:MySQL
21 4
Java医院绩效考核系统源码:关于医院绩效考核系统的技术架构、系统功能、如何选择医院绩效考核管理系统
|
4天前
|
Kubernetes 测试技术 持续交付
深入理解微服务架构及其在现代后端系统中的应用
本文将深入探讨微服务架构的核心概念、设计原则以及如何在现代后端系统中实现和优化它。我们将从微服务的定义开始,逐步展开讨论其优势、面临的挑战,以及如何克服这些挑战。同时,文章还会涉及微服务与容器化技术、持续集成/持续部署(CI/CD)的协同作用,以及微服务架构的未来发展趋势。读者将获得对微服务架构全面而深刻的理解,并能够识别在实施过程中可能遇到的陷阱和解决方案。
24 1
|
11天前
|
设计模式 运维 供应链
探讨微服务架构如何降低系统复杂度
探讨微服务架构如何降低系统复杂度
20 1
|
17天前
|
监控 安全 自动驾驶
基于java+单体服务 + 硬件(UWB定位基站、卡牌)技术架构开发的UWB室内定位系统源码 UWB定位技术 超宽带定位 高精度定位系统源码
基于java+单体服务 + 硬件(UWB定位基站、卡牌)技术架构开发的UWB室内定位系统源码 UWB定位技术 超宽带定位 高精度定位系统源码
30 3
|
19天前
|
前端开发 JavaScript 安全
TypeScript作为一种静态类型的JavaScript超集,其强大的类型系统和面向对象编程特性为微前端架构的实现提供了有力的支持
【6月更文挑战第11天】微前端架构借助TypeScript提升开发效率和代码可靠性。 TypeScript提供类型安全,防止微前端间通信出错;智能提示和自动补全加速跨代码库开发;重构支持简化代码更新。通过定义公共接口确保一致性,用TypeScript编写微前端以保证质量。集成到构建流程确保顺利构建打包。在微前端场景中,TypeScript是强有力的语言选择。
30 2
|
2天前
|
缓存 监控 架构师
Java架构师必备:系统性能调优与监控
Java架构师必备:系统性能调优与监控
|
2天前
|
Linux Perl
如何在Linux系统中确定CPU架构
如何在Linux系统中确定CPU架构
6 0
|
6天前
|
存储 搜索推荐 算法
智能返利系统:探索个性化推荐技术的架构之道
智能返利系统:探索个性化推荐技术的架构之道
|
16天前
|
前端开发 JavaScript Java
计算机Java项目|基于SSM架构的网上书城系统
计算机Java项目|基于SSM架构的网上书城系统
|
23天前
|
Java 数据安全/隐私保护
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(二)
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(二)
41 0