当前位置: 首页 > news >正文

尚硅谷-云尚办公-项目复盘

尚硅谷-云尚办公-项目复盘

  • 资料地址
  • 本文介绍
  • 问题汇总
    • 问题1.knife4j无法下载 视频4
    • 问题2.dev等含义 视频5
    • 问题3.wrapper继承/实现图 视频8
    • 问题4.修改统一返回结果 视频11
    • 问题5.修改后新增也变修改 视频29
    • 问题6.redis中key值乱码 视频55-60
    • 问题7.RangeError: Maximum call stack size exceeded 视频80

资料地址

bilibili视频讲解地址:https://www.bilibili.com/video/BV1oM41177Jd
knife4j官网:https://doc.xiaominfo.com/

本文介绍

本文是作者在练习尚硅谷的云尚办公项目时,遇到的一些问题,问题自上而下顺序记录,当然,也包含一些理论知识的复习与巩固,以及作者对该项目的一些其他的见解。

问题汇总

问题1.knife4j无法下载 视频4

提示Dependency ‘com.github.xiaoymin:knife4j-spring-boot-starter:3.0.3’ not found

问题解释 :翻译为中文是这个knife4j3.0.3未被找到,且无法找到knife4j的任何版本,再结合本人用的maven镜像为阿里云,猜测原因可能是1.maven3.6.3版本过老,无法拉取较新的依赖;2,阿里云未收录knife4j。
解决方案:打开project structure,点击libraries,点击加号,选择from maven,把你需要查找的依赖输入进去,回车进行搜索,选择搜索出来的正确结果,点击ok进行安装,安装完后就ok了。
在这里插入图片描述

问题如图
在这里插入图片描述

问题2.dev等含义 视频5

开发过程中常会遇到dev、pro等缩写,在此对这些缩写进行统一阐述

  1. 开发环境(development):开发环境通常是指开发人员进行软件开发的场所,包括开发工具、开发框架、测试数据库、调试工具等。在开发环境中,开发人员可以进行代码编写、调试、运行和测试,以便及时发现和修复软件中出现的问题。

  2. 测试环境(test):主要用于测试软件或系统的稳定性,性能和功能等是否符合要求。

  3. 预生产环境(pre-production)或者称为用户验收环境(UAT):是在软件发布到线上之前的最后一个阶段,主要用于让用户验收系统是否符合其需求,测试系统是否可以正常工作。

  4. 生产环境(production):也称为线上环境,是软件最终运行的环境,主要用于处理真实的业务请求,有着极高的稳定性和安全性需求。

常用dev开发环境和pro生产环境。

问题3.wrapper继承/实现图 视频8

在这里插入图片描述

问题4.修改统一返回结果 视频11

感觉尚硅谷提供的统一返回结果封装类不是很好,就自己重新写了个,依旧调用的尚硅谷提供的ResultCodeEnum枚举类,将原本的泛型改为object便于操作。

将构造方法全部封装为private类型,防止他人调用时采用new的方式写入code,code已在枚举类中进行了定义,我希望的是需要code时直接从枚举中获取,而不是通过写入的方式。

封装了四个返回结果为ok的方法,分别表示无参、仅数据、仅消息、数据和消息,不传递code的原因是可以直接调用ResultCodeEnum枚举类中的code,且成功的code只能是200,既然封装到了枚举中,就没必要每次传递。

另外两个失败方法同理,但失败方法中不会传递数据回去,顶多修改返回消息,在返回消息中写失败原因。

因为我没有采用@data注解,所以自动生成的set/get方法,这里还意外发现了如果只有set方法,会报错No converter found for return value of type。这是因为SpringMVC在处理Controller返回结果时,需要将结果转换成JSON格式,如果返回结果的对象没有Get/Set方法,就无法进行转换。

package com.ys.oa.result;public class Result {private Integer code;private String message;private Object data;//构造方法 全为privateprivate Result(){}private Result(Integer code,String message,Object data){this.code = code;this.message = message;this.data = data;}private Result(ResultCodeEnum resultCodeEnum,Object data){this.code = resultCodeEnum.getCode();this.message = resultCodeEnum.getMessage();this.data = data;}//成功public static Result ok(){return new Result(ResultCodeEnum.SUCCESS,null);}public static Result ok(String message){return new Result(ResultCodeEnum.SUCCESS.getCode(),message,null);}public static Result ok(Object data){return new Result(ResultCodeEnum.SUCCESS,data);}public static Result ok(String message,Object data){return new Result(ResultCodeEnum.SUCCESS.getCode(),message,data);}//失败public static Result fail(){return new Result(ResultCodeEnum.FAIL,null);}public static Result fail(String message){return new Result(ResultCodeEnum.FAIL.getCode(),message,null);}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}
}

问题5.修改后新增也变修改 视频29

问题描述:对某一数据进行修改后,点击新增,输入数据,点击确定,会发现执行的依旧是修改操作。
产生原因:在修改时为表单绑定了一个id,修改结束后id依旧存在,此情况下执行新增操作时,因为存在id,会被认为是修改操作。
解决方案:点击添加按钮时,将this.sysRole置为空,我的方法名可能和你的不一样,记得修改。

        //添加按钮addBtn(){this.sysRole = {}this.titleName = "添加"this.dialogVisible = true},

问题6.redis中key值乱码 视频55-60

问题描述:按照视频讲解存入key应为admin,这儿的username是我自己加的,但实际存入的key前面多了一串乱码\xac\xed\x00\x05t\x00\x0e

在这里插入图片描述

问题分析:spring-data-redis 的 RedisTemplate<K, V>模板类 在操作redis时默认使用JdkSerializationRedisSerializer 来进行序列化。spring操作redis是在jedis客户端基础上进行的,而jedis客户端与redis交互的时候协议中定义是用byte类型交互,看到spring-data-redis中RedisTemplate<K, V>在操作的时候k,v是泛型对象,而不是byte[]类型的,这样导致的一个问题就是,如果不对RedisTemplate进行设置,spring会默认采用defaultSerializer = new JdkSerializationRedisSerializer();这个方法来对key、value进行序列化操作,JdkSerializationRedisSerializer它使用的编码是ISO-8859-1

问题解决方案:将所有的RedisTemplate redisTemplate改为RedisTemplate<String,String> redisTemplate

如图:
在这里插入图片描述
另外:jedis在springboot2.x中已经被弃用了,springboot2.x默认使用的是lettuce,因此在yaml中配置的jedis并不会生效,可以先不写

![在这里插入图片描述](https://img-blog.csdnimg.cn/875a8bbe7ec7481ebbe6c5248e9874dc.png在这里插入图片描述

问题7.RangeError: Maximum call stack size exceeded 视频80

【注:我出现此错误应该与我写的返回路由列表有关,当时我是根据自己的想法实现的,没有照着老师的写】
报错信息截图:
在这里插入图片描述
问题分析:先放代码,未改前的代码如下,我的原因是因为找不到该路由,this.$router.push(‘/processSet/templateSet’)是指跳转到路由下的/processSet/templateSet,但是!!!在我返回的路由中,根本就没有/processSet/templateSet,然后开始分析数据库找原因
在这里插入图片描述
来到数据库可以看见,审批模块设置不仅有个爸爸还有个爷爷,因此它理论上应该是一个三层路由,正确的路由地址为/processSet/processTemplate/templateSet,然后我查了下后台返还给前端的路由地址,也确实是/processSet/processTemplate/templateSet,but,我将前端的路由改成了/processSet/processTemplate/templateSet后,虽然不报错了,但跳转的界面还是原界面,继续分析错误…
在这里插入图片描述
我直接把模块审批设置的爸爸改为审批模块,将此模块修改为二级模块,路由就变成了/processSet/templateSet,于是开始测试,顺利通过~
在这里插入图片描述
到这儿问题已经解决了,但原因我继续挖掘了一下,可能是因为页面二级路由的和三级的路由共用router-view 了,利用router-view 和 redirect 重新定义一下(每个人的情况不一样,可以参考解决),原文:https://blog.csdn.net/Passerby_K/article/details/114890393

相关文章:

尚硅谷-云尚办公-项目复盘

尚硅谷-云尚办公-项目复盘 资料地址本文介绍问题汇总问题1.knife4j无法下载 视频4问题2.dev等含义 视频5问题3.wrapper继承/实现图 视频8问题4.修改统一返回结果 视频11问题5.修改后新增也变修改 视频29问题6.redis中key值乱码 视频55-60问题7.RangeError: Maximum call stack …...

nacos升级到2.0.3(单机模式)

前提&#xff1a;https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 Spring Cloud AlibabaSpring CloudSpring BootNacos2.2.7.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE2.0.3 一、pom.xml文件 <parent><groupId>org.springframework.boot&…...

Koa学习3:用户添加、错误处理

模型 在src目录下创建model目录&#xff0c;用来存放模型 创建用户模型 user.model.js 注意&#xff1a; UUID类型是无法自增的&#xff0c;将id设置为UUID类型时只需要为其指定默认值即可 // 数据类型 const { DataTypes } require(sequelize); // 导入已经连接了数据库…...

网络安全入门学习第十五课——PHP基础

文章目录 一、WEB技术1、什么是web2、B/S架构3、C/S架构 二、PHP概述1、PHP是什么2、PHP受欢迎的原因3、基于MVC模式的PHP框架4、常用编译工具5、PHP环境搭建6、开发工具 三、PHP基本语法格式1、标记2、输出语句3、注释4、标识符 四、数据与运算1、常量1.1、常量定义1.2、预定义…...

电子科技大学 数学专业-功不唐捐,玉汝于成

电子科技大学 数学专业 功不唐捐&#xff0c;玉汝于成 1.本科背景 本科是坐落于湖南湘潭的湖南科技大学&#xff0c;专业为网络工程专业&#xff0c;因热爱数学专业&#xff0c;所以决定跨考数学专业。 本科专业课平均成绩85&#xff0c;排名10/104。CET 4 474分&#xff0c;…...

Android10.0 iptables用IOemNetd实现删除子链功能的实现

1.前言 在10.0的系统rom定制化开发中,在system中netd网络这块的产品需要中,会要求设置屏蔽ip地址之内的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现删除创建子链的相关功能 2. iptables用IOemNetd实现删除创建子链功能的实现的核心类 syste…...

OpenGL光照之光照贴图

文章目录 漫反射贴图镜面光贴图放射光贴图代码 每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观&#xff0c;但是这仍不能对一个物体的视觉输出提供足够多的灵活性。 我们将整个物体的材质定义为一个…...

2018~2019 学年第二学期《信息安全》考试试题(B 卷)

北京信息科技大学 2018 ~2019 学年第 2 学期 《信息安全》课程期末考试试卷 B 课程所在学院:计算机学院 适用专业班级:计科 1601-06&#xff0c;重修 考试形式:(闭卷) 一. 选择题(本题满分 10 分&#xff0c;共含 10 道小题&#xff0c;每小题 1 分) 网络中存在的安全漏洞主…...

LeetCode-C#-0002.两数相加

0.声明 该题目来源于LeetCode 如有侵权&#xff0c;立马删除。 解法不唯一&#xff0c;如有新解法可一同讨论。 1.题目 0002两数相加 给你两个非空的链表&#xff0c;表示两个非负的整数&#xff0c;它们每位数字都是按照逆序的方式存储的&#xff0c;并且每个节点只能存储一…...

访问修饰符private,default,protected,public访问等级区别

private&#xff1a;private是最严格的访问修饰符&#xff0c;它将成员声明为私有的。私有成员只能在声明它们的类内部访问&#xff0c;其他类无法直接访问私有成员。这样可以确保数据的封装性和安全性。 default&#xff08;默认&#xff09;&#xff1a;如果没有明确指定访问…...

阿里云(Linux)安装Docker教程

首先安装docker&#xff0c;需要找到帮助文档&#xff0c;那肯定是我们的官网&#xff1a; Install Docker Engine on CentOS | Docker Documentation 找到对应的位置&#xff0c;这里是安装在CentOS中&#xff0c;版本需要Ce…...

Linux C编程基础:获取时间

1.前言 对于linux下的编程&#xff0c;无论是用户态还是内核态&#xff0c;时间获取都是经常需要使用到的。以下分别从用户态和内核态整理了几个常用的时间获取接口&#xff0c;供编写代码时快速查阅。 2.用户态获取时间 2.1 clock_gettime() #include <time.h>int c…...

Spring核心注解

1、Bean注解 作用&#xff1a;用于把当前方法的返回值作为bean对象存入spring的ioc容器中位置: 一般出现在方法上面属性: name:用于指定bean的id。当不写时&#xff0c;默认值是当前方法的名称细节&#xff1a;当我们使用注解配置方法时&#xff0c;如果方法有参数&#xff0c;…...

哈希表原理,以及unordered_set/和unordered_map的封装和迭代器的实现

哈希表 unordered系列unordered_set和unordered_map的使用哈希哈希概念哈希冲突哈希函数闭散列开散列哈希表的扩容哈希表源码&#xff08;开散列和闭散列&#xff09; 封装unordered_set/和unordered_map&#xff0c;以及实现迭代器节点定义unordered_set定义unordered_map定义…...

如何把歌曲里的伴奏音乐提取出来,分享几个方法给大家!

对于一首歌&#xff0c;我们都知道&#xff0c;它有两部分组成&#xff1a;背景音乐人声。这两者合在一起&#xff0c;便是我们经常听的歌。部分用户想要直接获取歌曲伴奏&#xff0c;那么可以在UU伴奏网上下载。 操作方法比较简单&#xff0c;直接搜索想要的歌曲名称就可以了…...

区块链产业快速发展 和数集团开启区块链应用新时代

UTONMOS区块链游戏要来了。 就在5月底&#xff0c;UTONMOS品牌所属公司上海和数集团在泰国发布了【神念无界】系列的多款国际版链游&#xff0c;包括【神念无界-源起山海】、【北荒传奇】、【神宠岛】、【神农园】等区块链游戏。 以【神念无界-源起山海】为例&#xff0c;其是…...

初出茅庐的小李博客之常见字符串函数使用

C语言字符数组与字符串数组 在C语言中&#xff0c;字符数组和字符串数组实际上是同一种类型。字符串是由字符组成的字符数组&#xff0c;通常以空字符 ‘\0’ 结尾。C语言中的字符串是一种常见的数据类型。我们可以通过两种方式定义字符数组跟字符串数组 char charArray[10];…...

运筹学工程化流程和常见的运筹学算法分类以及常见软件

文章目录 前言运筹学工程化流程运筹学算法分类运筹学软件参考文献 前言 自2023年初新冠疫情管控放开后&#xff0c;各家公司各类岗位的人员都有被裁的消息传出&#xff0c;但用人市场上运筹学算法岗位却反其道行之&#xff0c;用工出现了激增。可以预见的是数据算法将从传统的…...

JAVA面向对象(三)

第三章 封装与继承 目录 第三章 封装与继承 1.1.封装 1.2.包 1.3.访问权限控制 1.4.static修饰符 1.4.1.成员变量 1.4.2.成员方法 1.4.3.代码块 总结 内容仅供学习交流&#xff0c;如有问题请留言或私信&#xff01;&#xff01;&#xff01;&#xff01;&#xff0…...

前端面试题---跨域处理和异常、错误处理

一.跨域处理 在前端开发中&#xff0c;当我们在浏览器中向不同域名或端口发起请求时&#xff0c;就会遇到跨域请求的限制。为了处理跨域请求&#xff0c;有几种常见的方法 1.JSONP&#xff08;JSON with Padding&#xff09; JSONP是一种利用 <script> 标签可以跨域加载…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...