如何运行黑马程序员redis项目黑马点评(hm-dianping)、常见报错解决与部分接口的测试方法

news2025/1/18 7:17:18

文章目录

  • 一、相关链接
  • 二、下载代码
    • 方法一:使用git clone
    • 方法二:直接下载程序zip压缩包
  • 三、如何运行这份代码
    • 运行sql文件
      • 1、先新建数据库hmdp
      • 2、导入项目中的hmdp.sql文件
    • 修改application.yaml配置文件
      • 配置Mysql
        • 1、配置驱动
        • 2、配置url(这个不一定要改)
        • 3、配置密码
      • 配置redis
      • 完整配置文件参考
    • pom.xml文件修改
    • 修改com.hmdp.config.RedissonConfig
    • 可能出现的报错解决
      • 1、ERR unknown command 'XREADGROUP'. channel:
      • 2、NOGROUP No such key ‘stream.orders’ or consumer group ‘g1’ in XREADGROUP with GROUP option
        • 在redis中运行以下命令:
        • docker中运行方法:
  • 四、接口测试注意事项
    • 正确的测试流程
      • 1、localhost:8080/user/code
      • 2、localhost:8080/user/login
      • 3、在测试其他方法前在header中添加参数authorization,参数值为token

一、相关链接

hm-dianping项目仓库地址:https://gitee.com/huyi612/hm-dianping
项目对应教学视频:https://www.bilibili.com/video/BV1cr4y1671t?p=24(p24-p95)

二、下载代码

hm-dianping项目仓库地址:https://gitee.com/huyi612/hm-dianping

方法一:使用git clone

在这里插入图片描述

git clone https://gitee.com/huyi612/hm-dianping.git

方法二:直接下载程序zip压缩包

在这里插入图片描述

三、如何运行这份代码

运行sql文件

以Navicat为例

1、先新建数据库hmdp

在这里插入图片描述
在这里插入图片描述

2、导入项目中的hmdp.sql文件

在这里插入图片描述
在这里插入图片描述

修改application.yaml配置文件

配置Mysql

要注意配置文件中默认的mysql配置是mysql5版本的配置
因此若使用的是mysql8.0+版本的mysql需要做以下修改;

1、配置驱动

driver-class-name: com.mysql.jdbc.Driver

改成

driver-class-name: com.mysql.cj.jdbc.Driver

2、配置url(这个不一定要改)

url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC

改成

url: jdbc:mysql://localhost:3306/hmdp?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true

3、配置密码

将password改成自己mysql的password

配置redis

这里的redis是单节点的redis,若没有单节点的redis建议在docker里面新建一个(ps:redis版本要5.0+,因此windows中的redis可能用不了,后面会提到)
在redis配置中配置好host(宿主机ip),端口,密码(如果有的话需要配置,没有的话可以空着或者不写)

完整配置文件参考

#server:
#  port: 8081
spring:
  application:
    name: hmdp
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC
    url: jdbc:mysql://localhost:3306/hmdp?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true
    username: root
    password: pwd
  redis:
    host: ip
    port: 6379
    password: 
    lettuce:
      pool:
        max-active: 10
        max-idle: 10
        min-idle: 1
        time-between-eviction-runs: 10s
  jackson:
    default-property-inclusion: non_null # JSON处理时忽略非空字段
mybatis-plus:
  type-aliases-package: com.hmdp.entity # 别名扫描包
logging:
  level:
    com.hmdp: debug
  pattern:
    dateformat: mm:ss.SSS

pom.xml文件修改

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
            <version>5.1.47</version>
        </dependency>

注意这里的mysql驱动是mysql5版本的驱动,若使用的是mysql8.0+,则需要修改这里的版本号,对于版本号的处理可以注释掉(因为spring-boot-starter-parent2.3.12.RELEASE默认配置的是mysql8.0+版本)或者自行指定对应的版本号

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
<!--            <version>5.1.47</version>-->
        </dependency>

修改com.hmdp.config.RedissonConfig

这个程序中也需要按照自己的redis的ip和密码进行配置

package com.hmdp.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RedissonConfig {

    @Bean
    public RedissonClient redissonClient(){
        // 配置
        Config config = new Config();
//        config.useSingleServer().setAddress("redis://192.168.150.101:6379").setPassword("123321");
//        config.useSingleServer().setAddress("redis://ip:6379"); //没有设置密码可以省略setPassword
        config.useSingleServer().setAddress("redis://ip:6379").setPassword("pwd");
        // 创建RedissonClient对象
        return Redisson.create(config);
    }
}

可能出现的报错解决

配置好以上几个文件后就可以尝试启动项目了
在这里插入图片描述
对于可能出现的报错可以参考以下解决方法:

1、ERR unknown command ‘XREADGROUP’. channel:

这个报错可能是因为redis版本太低了
redis 要求版本5.0+因为程序中使用到了 stream 特性。(https://gitee.com/zhijiantianya/ruoyi-vue-pro/issues/I3QISB)
因此windows中的redis可能用不了,建议在docker中新建一个单节点的redis

参考配置文件与docker运行命令:
在这里插入图片描述

redis.conf:
requirepass为设置redis的密码,可以根据需要进行设置或去掉

appendonly yes
requirepass pwd

文件结构:
在这里插入图片描述
docker运行命令:
注意这里的挂载地址需要根据实际的地址进行修改

docker run --name redis_6379_single -p 6379:6379 --privileged=true \
 -v /mydata/redis_single_6379/data:/data \
 -v /mydata/redis_single_6379/conf/redis.conf:/etc/redis/redis.conf \
 -d redis redis-server /etc/redis/redis.conf

新建5.0+版本的redis后记得修改配置文件与RedissonConfig中的相关信息

2、NOGROUP No such key ‘stream.orders’ or consumer group ‘g1’ in XREADGROUP with GROUP option

出现这个报错是因为redis中需要先设置一个键,根据官方的仓库中解决方法:
在这里插入图片描述

在redis中运行以下命令:

XGROUP CREATE stream.orders g1 $ MKSTREAM

docker中运行方法:

进入对应redis容器:

docker exec -it redis_6379_single /bin/bash

使用redis-cli客户端连接:

redis-cli -p 6379

在客户端中输入命令:

XGROUP CREATE stream.orders g1 $ MKSTREAM

若redis设置了密码则可能报以下错误:

(error) NOAUTH Authentication required.

需要先进行身份验证:

auth 密码

在这里插入图片描述

四、接口测试注意事项

当使用postman等测试工具对部分接口进行接口测试时可能会出现401的错误,且什么都没有返回,原因是因为请求被拦截了
在这里插入图片描述
而被拦截的原因是没有在header中携带token,这里要注意!!header中token值对应的参数是authorization而不是token如下图所示:
在这里插入图片描述

正确的测试流程

1、localhost:8080/user/code

拿到手机验证码
(这里的手机号是数据库中tb_user表中的手机号,貌似也可以使用数据库里没有的手机号)

后台中拿到验证码:
在这里插入图片描述

2、localhost:8080/user/login

登录拿到token
(返回数据中的data中的即为token)
在这里插入图片描述

3、在测试其他方法前在header中添加参数authorization,参数值为token

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Allwinner T3 汽车级处理器为工业级 SoM 提供动力

Allwinner T3 是一款四核 Cortex-A7 汽车级处理器&#xff0c;支持 -40C 至 85C 的宽工业温度范围。对比了全志T3的规格后&#xff0c;我觉得和全志A40i差不多&#xff0c;因为全志有不同的事业部&#xff0c;T系列是面向车规级市场&#xff0c;而A系列一直以来都是面向平板市场…

python之Matplotlib

1.数据可视化是什么? 数据可视化是将数据转换为图或表等信息图像,以一种更直观的方式展示和呈现数据.可视化,是通过图形化的手段进行有效地表达,准确高效,简洁全面地传递某种信息,甚至帮助我们发现某种规律和特征,挖掘数据背后的价值. 2. Matplotlib是什么? matplotlib是一…

教程:如何将一首歌生成一个二维码?

大雨打在树叶上的声音、烟花绽放的声音、邻居家的狗叫声、海浪和沙滩的决斗声、冬天的风掀翻路人衣服的声音、小孩练琴的声音、啤酒冒泡的声音…… 哦&#xff0c;还有你唱歌的声音&#xff0c;这些都可以做成一个二维码。扫码后就可以听到。 如今&#xff0c;声音二维码已经…

华为云GaussDB打造金融行业坚实数据底座,共创数字金融新未来

近期&#xff0c;由北京金融信息化研究所主办的首届中国金融业数据库技术大会在京顺利举行&#xff0c;大会邀请了金融主管单位领导、金融机构高层、以及数据库企业代表和众多数据库领域专家&#xff0c;共同畅谈金融行业数据库应用的创新发展和实践成果。华为云数据库服务产品…

为什么重写 equals 还要重写 hashCode 方法?

关于equals与hashCode关系的描述 我们可以先来看一下这个定理 &#xff08;1&#xff09;如果两个对象的 hashCode 值相等的情况下&#xff0c;对象的内容值不一定相等&#xff08;hash碰撞问题&#xff09; &#xff08;2&#xff09;如果使用 equals 方法比较两个对象内容值…

世界杯“引爆”东南亚电商狂潮,电商人如何选品和营销?

世界杯&#xff0c;作为最受关注的国际赛事之一&#xff0c;2022年的世界杯已经在卡塔尔拉开帷幕&#xff0c;中国元素无处不在&#xff0c;为跨境电商行业带来很多新机遇。对于跨境电商来说&#xff0c;更是要牢牢抓住这场全球赛事的商机&#xff01;那么跨境电商人应该如何紧…

全面焕新|详解 Grafana v9.0.x 新增功能特性

Grafana 9.0 是一个提升 Grafana 易用性的版本&#xff0c;通过全新的和改进的操作界面来获取数据&#xff0c;以及默认的 Grafana 警报体验。 Grafana 的一个主要使命是让可观测性、数据可视化和分析更容易的惠及到每个人。对于像 Prometheus 和 Loki 这样的流行数据源&#…

基于Jeecgboot前后端分离的ERP系统开发代码生成(四)

今天主要做一个采购入库单的功能 这个是主从表&#xff0c;所以也是通过online表单设计完成基本功能 1、采购入库单 按照上面生成代码&#xff0c;基本的录入编辑等功能就可以了&#xff0c;当然一些细节需要后续完善 选择商品 2、审核通过 对于库存的更新&#xff0c;需要进行…

跨境电商独立站站群模式

首先我们来了解一下什么是独立站组模式&#xff1f;独立站群模式是指通过建站工具快速建立多个网站。每个网站都有独立的域名&#xff0c;每个网站只存放某个垂直领域的产品&#xff0c;包装成专业的工厂和卖家。每个网站的产品详情和公司实力展示尽量完美(不是市面上的复制品)…

Spring——IOC容器启动及Bean生成流程

IOC容器启动及Bean生成流程一、容器启动IOC启动流程重点二、扫描并注册BeanDefination加载并过滤资源注册BeanDefination三、BeanFactory后置处理四、注册Bean后置处理器五、遍历BeanDefination&#xff0c;实例化单例BeanpreInstantiateSingletonsdoGetBean&#xff08;我们只…

idea配置tomcat,解决控制台乱码问题

问题描述&#xff1a; 配置tomcat&#xff0c;解决idea运行tomcat8.5.27版本控制台输出乱码。 版本&#xff1a; jdk1.8.0_172 IntelliJ IDEA 2019.3 3 (Ultimate Edition) apache-tomcat-8.5.27 解决步骤&#xff1a; 1、打开目录 apache-tomcat-8.5.27\conf\ 目录下 logging…

编译原理—运行环境、局部存储分配、活动记录、全局栈式存储分配、非局部名字的访问、参数传递

编译原理—运行环境、局部存储分配、全局栈式存储分配、非局部名字的访问、参数传递#pic_center 65%x55%1. 运行环境1.1存储组织与分配1.2运行时内存划分2.活动记录2.1活动记录的内容2.2活动记录内容的存取3.静态存储分配3.1FORTRAN静态存储分配4. 动态存储分配4.1 栈式分配下的…

Java反射(Reflex)机制

反射概述 Reflection(反射)是Java被视为动态语言的关键&#xff0c;反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息&#xff0c;并能直接操作任意对象的内部属性及方法。 加载完类之后&#xff0c;在堆内存的方法区中就产生了一个Class类型的对象&#x…

【linux】linux实操篇之软件包管理

前言 关于这一快软件包管理知识点不多&#xff0c;我们主要认识一下rpm和yum这两个软件包管理工具&#xff0c;主要还是yum的使用&#xff01; rpm 包的管理 一种用于互联网下载包的打包及安装工具&#xff0c;它包含在某些 Linux 分发版中。它生成具有 .rpm 扩展名的文件。…

QQ plot 的解读

QQ plot全称是Quantile-Quantile Plot&#xff0c;分位数-分位数图是通过比较两个概率分布的分位数对这两个概率分布进行比较的概率图方法。 这个图形的形式非常简单&#xff0c;有点类似RNA-seq中评价两个样本相关性的散点图&#xff08;图1&#xff09;。这类图形为什么那么…

Java小技能:多级菜单排序并返回树结构菜单列表

文章目录 引言I 生成树形结构菜单列表1.1 获取全部菜单1.2 获取一级菜单,递归获取子节点。1.3 实体1.4 DtoII 常见问题2.1 no instance(s) of type variable(s) R exist so that void conforms to R,2.2 集合filter过滤Integer数值为空问题解决方案引言 需求: 服务商角色配置…

面试官:说说你了解的分布式 ID 生成方案

为什么需要分布式 ID 对于单体系统来说&#xff0c;主键 ID 常用主键自动的方式进行设置。这种 ID 生成方法在单体项目是可行的&#xff0c;但是对于分布式系统&#xff0c;分库分表之后就不适应了。比如订单表数据量太大了&#xff0c;分成了多个库&#xff0c;如果还采用数据…

创业可以做什么项目,六个轻资产创业项目推荐

​2022年已经接近尾声了&#xff0c;你有为下一年做好计划嘛&#xff0c;今年并不是平静的一年&#xff0c;口罩总是反反复复的出现&#xff0c;很多人萌生了创业的想法&#xff0c;那有没有不怕口罩的创业项目呢&#xff1f;虽然创业并不容易&#xff0c;但当你有了正确的方向…

【优化充电】粒子群算法电动汽车充电动态优化策略【含Matlab源码 2163期】

⛄一、粒子群算法电动汽车充电优化 1 电动汽车充电负荷估算 电动汽车的充电负荷主要与电动汽车起始充电时刻和充电时长相关,而起始充电时刻是由电动汽车用户的到家时间决定的,充电时长主要与电动汽车的行驶里程和充电倍率相关。 目前电动汽车还没有大规模运营, 只能通过统计燃…

笔试强训day1

一、选择题 第一题&#xff1a; 题解&#xff1a;y123返回值为123&#xff0c;是非零数&#xff0c;所以y123总是正确&#xff0c;因此循环条件由x<4控制&#xff0c;答案 为C 第二题&#xff1a; %5表示输出总共占据了五列&#xff0c;%.3表示只取字符串左边三个字符并且…