【IDE插件教学】华为云应用中间件系列—Redis实现(电商游戏应用)排行榜示例
云服务、API、SDK,调试,查看,我都行
阅读短文您可以学习到:应用中间件系列之Redis实现(电商游戏应用)排行榜示例
1 什么是DEVKIT
华为云开发者插件(Huawei Cloud Toolkit),作为华为云围绕其产品能力向开发者桌面上的延伸,帮助开发者快速在本地连接华为云,打通华为云到开发者的最后一公里。Huawei Cloud ToolKit是围绕华为云开发者生态工具体系打造的一系列IDE插件,支持VS Code、IntelliJ IDEA等系列平台、以及华为云自研 CodeArts IDE ,帮助开发者更高效、便捷的搭建应用。致力于为开发者提供更稳定、快速、安全的编程体验。
体验路径:Toolkit-华为云
2 IDE与DEVKIT的关系
2.1 什么是CodeArts IDE?
CodeArts IDE是一个集成开发环境(IDE),兼具源代码编辑器的简易性和开发人员工具的强大功能,如代码补全和调试。
下载路径:Toolkit-华为云
2.2 IntelliJ IDEA与DEVKIT的关系
安装准备
下载并安装JDK1.8或更高版本。
下载并安装IntelliJ IDEA 2020.2或更高版本。
安装验证
在IntelliJ系列平台上安装插件成功后在左侧的导航栏中可以看到Huawei Cloud Toolkit图标,点击后面板会出现Huawei Cloud API的字样,则说明安装成功。
下载路径:Toolkit-华为云
2.3 CodeArts IDE与DEVKIT的关系
API插件是CodeArts IDE原生内置的插件,默认已经安装。左侧的导航栏中可以看到相关图标。
下载路径:Toolkit-华为云
2.4 Visual Studio Code IDE与DEVKIT的关系
安装准备
下载并安装Visual Studio Code最新版本。
安装验证
在VS Code IDE安装插件成功后在左侧的导航栏中可以看到Huawei Cloud Toolkit图标,点击后面板会出现Huawei Cloud API的字样,则说明安装成功。
下载路径:Toolkit-华为云
3 Redis实现(电商游戏应用)排行榜示例(Java版本)
3.1 使用Redis实现排行榜功能
版本说明:本示例基于华为云分布式缓存服务Redis基础版 5.0开发。
简介
Redis实现(电商游戏应用)排行榜示例(Java版本)
在网页和APP中常常需要用到榜单的功能,对某个key-value的列表进行降序显示。当操作和查询并发大的时候,使用传统数据库就会遇到性能瓶颈,造成较大的时延。
使用分布式缓存服务(DCS)的Redis版本,可以实现一个商品热销排行榜的功能。它的优势在于:
数据保存在缓存中,读写速度非常快。
提供字符串(String)、链表(List)、集合(Set)、哈希(Hash)等多种数据结构类型的存储。
本实践介绍如何使用Redis实现商品销量排行。
开发前准备
注册华为云账号,详细操作请参见如何注册华为云管理控制台的用户?,并完成实名认证。
已购买具有公网IP的ECS,详细操作请参见购买并登录Linux弹性云服务器。
已购买DCS缓存实例,详细操作请参见购买缓存实例,且需保证DCS实例与已购买具的ECS在同一虚拟私有云、子网内,并在已购买具的ECS上配置公网访问Redis,详细操作请参见使用Nginx实现公网访问Redis 4.0/5.0的单机/主备/Proxy集群实例。
安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version>
</dependency>
开始使用
导入依赖模块
//导入数据类型类
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
//通用唯一识别码类
import java.util.UUID;
//Redis客户端Jedis类
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;
生成产品及销量数据
示例代码
// 随机生成产品数据List<String> productList = new ArrayList<>();for (int i = 0; i < PRODUCT_KINDS; i++) {productList.add("product-" + UUID.randomUUID().toString());}// 随机生成销量for (int i = 0; i < productList.size(); i++) {int sales = (int) (Math.random() * 20000);String product = productList.get(i);// 插入Redis的SortedSet中jedisClient.zadd(key, sales, product);}
按销量顺序输出排行榜
示例代码
// 获取所有列表并按销量顺序输出Set<Tuple> sortedProductList = jedisClient.zrevrangeWithScores(key, 0, -1);for (Tuple product : sortedProductList) {System.out.println("产品ID: " + product.getElement() + ", 销量: "+ (int) product.getScore());}System.out.println();System.out.println(" " + key);System.out.println(" 前五大热销产品");// 获取销量前五列表并输出Set<Tuple> sortedTopList = jedisClient.zrevrangeWithScores(key, 0, 4);for (Tuple product : sortedTopList) {System.out.println("产品ID: " + product.getElement() + ", 销量: "+ (int) product.getScore());}
3.2 展示效果
编译并运行以上Demo程序,结果如下:
商品热销排行榜
产品ID: product-b290c0d4-e919-4266-8eb5-7ab84b19862d, 销量: 18433
产品ID: product-e61a0642-d34f-46f4-a720-ee35940a5e7f, 销量: 18334
产品ID: product-ceeab7c3-69a7-4994-afc6-41b7bc463d44, 销量: 18196
产品ID: product-f2bdc549-8b3e-4db1-8cd4-a2ddef4f5d97, 销量: 17870
产品ID: product-f50ca2de-7fa4-45a3-bf32-23d34ac15a41, 销量: 17842
产品ID: product-d0c364e0-66ec-48a8-9ac9-4fb58adfd033, 销量: 17782
产品ID: product-5e406bbf-47c7-44a9-965e-e1e9b62ed1cc, 销量: 17093
产品ID: product-0c4d31ee-bb15-4c88-b319-a69f74e3c493, 销量: 16432
产品ID: product-a986e3a4-4023-4e00-8104-db97e459f958, 销量: 16380
产品ID: product-a3ac9738-bed2-4a9c-b96a-d8511ae7f03a, 销量: 15305
产品ID: product-6b8ad4b7-e134-480f-b3ae-3d35d242cb53, 销量: 14534
产品ID: product-26a9b41b-96b1-4de0-932b-f78d95d55b2d, 销量: 11417
产品ID: product-1f043255-a1f9-40a0-b48b-f40a81d07e0e, 销量: 10875
产品ID: product-c8fee24c-d601-4e0e-9d18-046a65e59835, 销量: 10521
产品ID: product-5869622b-1894-4702-b750-d76ff4b29163, 销量: 10271
产品ID: product-ff0317d2-d7be-4021-9d25-1f997d622768, 销量: 9909
产品ID: product-da254e81-6dec-4c76-928d-9a879a11ed8d, 销量: 9504
产品ID: product-fa976c02-b175-4e82-b53a-8c0df96fe877, 销量: 8630
产品ID: product-0624a180-4914-46b9-84d0-9dfbbdaa0da2, 销量: 8405
产品ID: product-d0079955-eaea-47b2-845f-5ff05a110a70, 销量: 7930
产品ID: product-a53145ef-1db9-4c4d-a029-9324e7f728fe, 销量: 7429
产品ID: product-9b1a1fd1-7c3b-4ae8-9fd3-ab6a0bf71cae, 销量: 5944
产品ID: product-cf894aee-c1cb-425e-a644-87ff06485eb7, 销量: 5252
产品ID: product-8bd78ba8-f2c4-4e5e-b393-60aa738eceae, 销量: 4903
产品ID: product-89b64402-c624-4cf1-8532-ae1b4ec4cabc, 销量: 4527
产品ID: product-98b85168-9226-43d9-b3cf-ef84e1c3d75f, 销量: 3095
产品ID: product-0dda314f-22a7-464b-ab8c-2f8f00823a39, 销量: 2425
产品ID: product-de7eb085-9435-4924-b6fa-9e9fe552d5a7, 销量: 1694
产品ID: product-9beadc07-aab0-438c-ac5e-bcc72b9d9c36, 销量: 1135
产品ID: product-43834316-4aca-4fb2-8d2d-c768513015c5, 销量: 256
商品热销排行榜
前五大热销产品
产品ID: product-b290c0d4-e919-4266-8eb5-7ab84b19862d, 销量: 18433
产品ID: product-e61a0642-d34f-46f4-a720-ee35940a5e7f, 销量: 18334
产品ID: product-ceeab7c3-69a7-4994-afc6-41b7bc463d44, 销量: 18196
产品ID: product-f2bdc549-8b3e-4db1-8cd4-a2ddef4f5d97, 销量: 17870
产品ID: product-f50ca2de-7fa4-45a3-bf32-23d34ac15a41, 销量: 17842
4 体验插件的魅力
华为云devkit已上线:https://developer.huaweicloud.com/develop/toolkit.html
相关文章:
【IDE插件教学】华为云应用中间件系列—Redis实现(电商游戏应用)排行榜示例
云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:应用中间件系列之Redis实现(电商游戏应用)排行榜示例 1 什么是DEVKIT 华为云开发者插件(Huawei Cloud Toolkit)&a…...

Linux:mongodb数据库源码包安装(4.4.25版本)
环境 系统:centos7 本机ip:192.168.254.1 准备的mongodb包 版本 : 4.4.25 全名称:mongodb-linux-x86_64-rhel70-4.4.25.tgz 下载源码包 Download MongoDB Community Server | MongoDBhttps://www.mongodb.com/try/downloa…...

pdf怎么合并在一起?
pdf怎么合并在一起?对于pdf合并这个问题,有的小伙伴想很简单,只需要将文件直接复制再其中的一个后面不就完事了吗。其实不然,因为我们如果要是需要将很多文件进行合并的话,就会产生很多问题的。总之,在现在…...

杀死僵尸进程ZooKeeperMain
关闭Hadoop后jps发现还有个进程ZooKeeperMain没有关闭,使用kill -9 <>也没有用,这种就是僵尸进程,需要用父进程ID来杀死 解决方法 话不多说,直接上解决方案, 1. 第一步 清楚需要关闭的进程ID,我…...
JavaScript class和function的区别
待整理: 一 二 Class 组件和 Function 组件是 React 中创建组件的两种主要方式。他们在语法和功能上有一些不同。以下分点是 Class 组件和 Function 组件在不同方面的对比: 1. 语法结构 Class 组件: import React, { Component } from …...
MySQL8.0修改mysql允许远程连接
1、连接服务器: mysql -u root -p2、看当前所有数据库:show databases; 3、进入mysql数据库:use mysql; 4、查看mysql数据库中所有的表:show tables; 5、查看user表中的数据:select Host, User,Password from user; 6、修改us…...

【算法训练-排序算法 二】【手撕排序】快速排序、堆排序、归并排序
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【手撕排序系列】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...

C# RestoreFormer 图像修复
效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {pu…...

yolov5+车辆重识别【附代码】
本篇文章主要是实现的yolov5和reid结合的车辆重识别项目。是在我之前实现的yolov5_reid行人重识别的代码上修改实现的baseline模型。 目录 相关参考资料 数据集说明 环境说明 项目使用说明 vehicle reid训练 yolov5车辆重识别 从视频中获取想要检测的车(待检测车辆) 车…...
C语言练习百题之#ifdef和#ifndef的应用
#if, #ifdef, 和 #ifndef 是C语言预处理指令,它们可以用于条件编译,帮助控制程序的编译过程。以下是各种应用场景以及一些注意事项: 1. 使用 #ifdef 和 #ifndef 检查宏是否定义: 应用场景: 检查宏是否已经在代码中定义…...
与C语言不同的基础语法
一、不同 1.可同时定义并初始化多个变量 2.有string字符串类型 3.可在循环中定义变量 #include<iostream> using namespace std; int main() {int a1,b2;//可同时定义并初始化多个变量string name;//字符串类型 char array[3]; for(int i1;i<3;i)//for中定义i变量…...

Python文件读写实战:处理日常任务的终极工具!
更多资料获取 📚 个人网站:涛哥聊Python Python文件的读写操作时,有很多需要考虑的细节,这包括文件打开方式、读取和写入数据的方法、异常处理等。 在本文中,将深入探讨Python中的文件操作,旨在提供全面的…...

思维模型 秩序
本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。秩序是事物正常运行的基石。有序的安排是成功的先决条件。 1 秩序的应用 1.1 秩序在不同科学领域中的应用 物理学和天文学: 物理学家通过研究原子和分子的有序排列来理解物质的…...
pyqt5移动鼠标时显示鼠标坐标
问题: 只有按住鼠标左键或者右键移动的时候才会获取坐标值,即使对QLabel控件使用setMouseTracking(True)也无法解决。 解决方法: 在初始化构造函数中加入 self.setMouseTracking(True) self.centralwidget.setMouseTracking(True) 并且对…...

分享一下开发回收废品小程序的步骤
随着人们环保意识的不断提高,回收利用已成为日常生活中不可或缺的一部分。回收小程序作为一种便捷、高效的回收方式,越来越受到人们的关注和喜爱。本文将探讨回收小程序的意义和作用,设计理念、功能特点、使用流程以及推广策略,并…...

568A和568B两种线序
现状 现在大家都是采用568B的线序 线序 标准568A:橙白-1,橙-2,绿白-3,蓝-4,蓝白-5,绿-6,棕白-7,棕-8 标准568B:绿白-1,绿-2,橙白-3&#x…...

kafka广播消费组停机后未删除优化
背景 kafka广播消息的时候为了保证groupId不重复,再创建的时间采用前缀时间戳的形式,这样可以保证每次启动的时候是创建的新的,但是 会出现一个问题:就是每次停机或者重启都会新建一个应用实例,关闭应用后并不会删除…...

深度学习自学笔记十三:unet网络详解和环境配置
一、unet网络详解 UNet(全名为 U-Net)是一种深度学习架构,最初由Olaf Ronneberger、Philipp Fischer和Thomas Brox于2015年提出,用于图像分割任务。该网络的名称来源于其U形状的架构,该架构使得网络在编码和解码过程中…...

如何给苹果ipa和安卓apk应用APP包体修改手机屏幕上logo图标iocn?
虽然修改应用文件图标是一个简单的事情,但是还是有很多小可爱是不明白的,你要是想要明白的话,那我就让你今天明白明白,我们今天采用的非常规打包方式,常规打包方式科技一下教程铺天盖地,既然小弟我出马&…...

复旦MBA魏文童:构建完备管理知识体系,助力企业数字化发展
日月光华,旦复旦兮!复旦MBA如同一个巨大的磁场,吸引了诸多来自五湖四海、各行各业的职场精英。从初入职场的青涩懵懂到如今的独当一面专业干练,他们逐渐成长为职场的中坚力量,在各自领域内发光发热。作为新时代的青年&…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...