Java技术栈 —— 微服务框架Spring Cloud —— Ruoyi-Cloud 学习(二)

news2024/9/22 13:40:10

RuoYi项目开发过程

  • 一、登录功能(鉴权模块)
    • 1.1 后端部分
      • 1.1.1 什么是JWT?
      • 1.1.2 什么是Base64?为什么需要它?
      • 1.1.3 SpringBoot注解解析
      • 1.1.4 依赖注入和控制反转
      • 1.1.5 什么是Restful?
      • 1.1.6 Log4j 2、Logpack、SLF4j日志框架
      • 1.1.7 如何将项目打包成指定bytecode字节码版本?
        • 1.1.7.1 方式一(原生)
        • 1.1.7.1 方式二(Maven)
      • 1.1.8 依赖包字节码版本不同,如何编译至相同版本?
        • 1.1.7.1 依赖低版本jar包,想将项目整体编译至高版本
        • 1.1.7.2 依赖高版本jar包,想将项目整体编译至低版本
    • 1.2 前端部分

参考视频或文章链接
RuoYi-Cloud官方文档
《若依框架讲解-微服务版》- bilibili
《若依框架讲解-微服务版》课件 — 提取码 8888
《JWT及鉴权》— 骄傲的演员 — CSDN

一、登录功能(鉴权模块)

假如我是RuoYi项目的开发者,我应该怎么样从无到有的把这个项目搭建起来?或者说我要先开发什么功能,因为一开始我对这个项目要划分成哪些模块是模糊的,所以先从具体的功能入手,等有了大量的项目阅历,就知道这个项目要如何划分模块,如何进行架构了,先开发最常用的用户登录功能。我不打算完全照抄RuoYi的代码,而是在其基础上做些改动开发自己的功能,但模块甚至命名都会参考RuoYi。
验证码部分是在网关内部直接处理的。

1.1 后端部分

1.1.1 什么是JWT?

(1) Single Sign On is a feature that widely uses JWT nowadays, because of its small overhead and its ability to be easily used across different domains.
(2) In authentication, when the user successfully logs in using their credentials, a JSON Web Token will be returned. Since tokens are credentials, great care must be taken to prevent security issues. In general, you should not keep tokens longer than required.
(3) Whenever the user wants to access a protected route or resource, the user agent should send the JWT, typically in the Authorization header using the Bearer schema.

在这里插入图片描述

1.The application or client requests authorization to the authorization server. This is performed through one of the different authorization flows. For example, a typical OpenID Connect compliant web application will go through the /oauth/authorize endpoint using the authorization code flow.
2.When the authorization is granted, the authorization server returns an access token to the application.
3.The application uses the access token to access a protected resource (like an API).

参考视频或文章链接
JWT - offical website
《JWT及鉴权》— 骄傲的演员 — CSDN

1.1.2 什么是Base64?为什么需要它?

(1) Base64 allows you to transport binary over protocols or mediums that cannot handle binary data formats and require simple text.

参考视频或文章链接
Base64 encoding: What sysadmins need to know — RedHat
Base64 — Wiki

1.1.3 SpringBoot注解解析

我以为,注解@Annoation最重要的作用是提醒编译器,或者说提醒JVM虚拟机,带上注解@Annoation的这些类、方法、变量有哪些地方是要重点检查与注意的。

注解名称作用参考文章
@RestController结合了@Controller and @ResponseBody两个注解,简化了配置,Every request handling method of the controller class automatically serializes return objects into HttpResponse.The Spring @Controller and @RestController Annotations
@Autowired若不指定注入类名,根据变量名自动注入Guide to Spring @Autowired
@PostMapping
@RequestBody
@SpringBootApplication=@Configuration + @EnableAutoConfiguration + @ComponentScan18. Using the @SpringBootApplication Annotation

1.1.4 依赖注入和控制反转

两个词是一体两面的说法,控制反转,即将对象的控制权交给Spring容器,而以前的传统方式是程序员手工控制。

参考视频或文章链接
《控制反转及注入依赖详情「通俗易懂」》

1.1.5 什么是Restful?

一种设计风格,使用HTTP 协议传输数据,并通过URL来标识资源的位置和状态。

(1) Resource identification through URI. In the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs), typically links on the Web.
(2) Uniform interface. Resources are manipulated using a fixed set of four create, read, update, delete operations: PUT, GET, POST, and DELETE.

参考视频或文章链接
What Are RESTful Web Services? —— The Java EE 6 Tutorial
RESTful Web Services —— GeeksForGeeks
《图文详解 RESTful》—— CSDN

1.1.6 Log4j 2、Logpack、SLF4j日志框架

//@TODO待文章引用

1.1.7 如何将项目打包成指定bytecode字节码版本?

首先,要知道在Maven发明以前,也是可以打jar包的,所以肯定有两种方式,方式一是原生的方式,这里可以直接利用IDEA,更加便利,方式二是使用Maven,开始。

1.1.7.1 方式一(原生)

原生方式是采用Build Artifacts方式建立jar包(Artifacts = Art艺术 + ifacts事实 = 手工物品),如果不会用Build Artifacts构建jar包,请搜索其它文章,这里要说的是,原生方式下,怎么指定字节码版本。

Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler -> Per-module bytecode version -> 指定module的版本

1.1.7.1 方式二(Maven)

source指.java源码文件是按何种Java版本编写的
target指.class字节码文件是以何种字节码版本生成的,这个很好理解。

    <properties>
        <maven.compiler.source>6</maven.compiler.source> <!--这里修改后再mvn reload,即影响Project Structure/Modules/Sources-->
        <maven.compiler.target>6</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

1.1.8 依赖包字节码版本不同,如何编译至相同版本?

A包是55.0字节码版本,B包是52.0字节码版本,你想将项目最终编译成52.0,在中国这片土地上,52.0是最常用的了,我想变革的阻力会随着信创产业的推进而降低,老守旧有什么意思?还是说能够带来稳定收益,守旧就可以了,不想着怎么去让架构更优,运行更稳定,更快?听说连JDK都要国产化?

参考视频或文章链接
《JDK 版本和字节码版本对应表》
IDEA —— Project language level

有了问题1.1.7的基础,如果你有完整项目源码,可以重新编译到指定字节码版本,这很简单。

1.1.7.1 依赖低版本jar包,想将项目整体编译至高版本

假设你现在有一个依赖的jar包是字节码50.0的,并且只有jar包,你想将项目整体重新编译至52.0,如何操作?抱歉,依赖包完整打好包那刻起就决定了,无法重新再编译至其它字节码版本。

1.1.7.2 依赖高版本jar包,想将项目整体编译至低版本

假设你现在有一个依赖的jar包是字节码52.0的,并且只有jar包,你想将项目整体重新编译至50.0,如何操作?抱歉,依赖包完整打好包那刻起就决定了,无法重新再编译至其它字节码版本。



1.2 前端部分

//@TODO

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

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

相关文章

Datawhale聪明办法学Python(task3变量与函数)

一、课程基本结构 课程开源地址&#xff1a;课程简介 - 聪明办法学 Python 第二版 章节结构&#xff1a; Chapter 0 安装 Installation Chapter 1 启航 Getting Started Chapter 2 数据类型和操作 Data Types and Operators Chapter 3 变量与函数 Variables and Functions Ch…

《算法通关村——回溯模板如何解决回溯问题》

《算法通关村——回溯模板如何解决回溯问题》 93. 复原 IP 地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.1…

《Effective C++》学习笔记

条款01&#xff1a;把 C 看成一个语言联邦 C由几个重要的次语言构成 C语言&#xff1a;区块&#xff0c;语句&#xff0c;预处理器&#xff0c;数组&#xff0c;指针等等。 类&#xff1a;class&#xff0c;封装&#xff0c;继承&#xff0c;多态......&#xff08;动态绑定等…

基于ssm旅游景点管理系统设计论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游景点管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

深度学习中的预测图片中的矩形框、标签、置信度分别是什么意思。

问题描述&#xff1a;深度学习中的预测图片中的矩形框、标签、置信度分别是什么意思。 问题解答&#xff1a; 目标框&#xff08;Bounding Box&#xff09;&#xff1a; 描述目标位置的矩形边界框。 类别标签&#xff1a; 表示模型认为目标属于哪个类别&#xff08;例如&#…

证明四元数乘法与旋转矩阵乘法等价

刚体四元数姿态控制 一文中没有证明的公式 R ( Q 1 ) R ( Q 2 ) R ( Q 1 ∘ Q 2 ) R(Q_1)R(Q_2)R(Q_1\circ Q_2) R(Q1​)R(Q2​)R(Q1​∘Q2​) 在这篇文章中证明。 首先找几个数测试是否等价。 quaternions.py的代码见 自用的四元数、欧拉角、旋转矩阵转换代码。 下面的代码中…

dockerfite创建镜像---INMP+wordpress

搭建dockerfile---lnmp 在192.168.10.201 使用 Docker 构建 LNMP 环境并运行 Wordpress 网站平台 [rootdocker1 opt]# mkdir nginx mysql php [rootdocker1 opt]# ls #分别拖入四个包&#xff1a; nginx-1.22.0.tar.gz mysql-boost-5.7.20.tar.gz php-7.1.10.tar.bz2 wor…

重要通知!中国电信警告:用户须关闭路由器“双频合一”功能

在网络的无尽时空里&#xff0c;一场电信官方的宣战正酝酿中&#xff0c;目标锁定在我们日常生活中不可或缺的WiFi身上~ 最新消息曝光&#xff0c;竟然是路由器内藏的一个名为“双频合一”的功能引发了这场轰轰烈烈的网络风暴。 我们时常觉得WiFi就像是隐身在我们生活中的超级英…

Faulhaber 2.5代运动控制系统 25mNm/13W

2.5代控制系统&#xff1b; PWM输出&#xff1b; 四象限控制带&#xff1b; RS232或CANopen通信接口&#xff1b; 2250_BX4_CxD 选件&#xff0c;电缆和连接信息&#xff1a; 适配部件&#xff1a;

SystemVerilog基础:并行块fork-join、join_any、join_none(二)

相关阅读 SystemVerilog基础https://blog.csdn.net/weixin_45791458/category_12517449.html 在第一节中&#xff0c;我们讨论了并行块中的fork-join块和fork-join_any块&#xff0c;了解了它们的差异&#xff0c;本文将继续讨论fork-join_none块的使用。 fork-join_none并行块…

Ubuntu 常用命令之 ll 命令用法介绍

ll是ls -l的别名&#xff0c;用于在Ubuntu系统中列出目录的详细信息。ls命令用于列出目录内容&#xff0c;-l选项则以长格式显示&#xff0c;包括文件类型、权限、链接数、所有者、组、大小、最后修改时间以及文件或目录名。 这是ll命令的基本格式 ll [选项]... [文件]...这是…

《地理信息系统原理》笔记/期末复习资料(9. 网络地理信息系统)

目录 9. 网络地理信息系统 9.1. 概述 9.1.1. 网络GIS概念 9.1.2. 网络GIS体系结构 9.1.3. 网络GIS内容体系 9.2. 分布式网络GIS 9.2.1. 分布式网络GIS概念 9.2.2. 分布式主要技术 9.3. WebGIS 9.3.1. WebGIS概念 9.3.2. WebGIS分类与特点 9.3.3. WebGIS技术框架 9…

Graphics Profiler 使用教程

GraphicsProfiler 使用教程 1.工具简介&#xff1a;2.Navigation介绍2.1.打开安装好的Graphics Profiler。2.2.将手机连接到计算机&#xff0c;软件会在手机中安装一个GraphicsProfiler应用(该应用是无界面的&#xff09;。2.3.Show files list2.4.Record new trace2.4.1.Appli…

Kotlin ArrayList类型toTypedArray转换Array

Kotlin ArrayList类型toTypedArray转换Array data class Point(val x: Float, val y: Float)fun array_test(points: ArrayList<Array<Point>>) {points.forEachIndexed { idx, ap ->ap.forEach {print("$idx $it ")}println()} }fun main(args: Arra…

第二届“奇安信”杯网络安全技能竞赛Reverse | pyre(需要用到反编译工具 pyinstxtractor.py)

赛题描述 这种exe文件怎么调用py的库&#xff1f; 题目附件&#xff1a;&#xff08;下载可能会有问题&#xff0c;记得直接跳过下载就可以了&#xff09; 抱歉无法处理您这个问题哦&#xff0c;您可以换个问题 PyInstaller Extractor 解包 适用场景 制作exe后丢失源代码 前…

基于中小微企业_个体工商户的信贷评分卡模型和用户画像(论文_专利_银行建模_企业调研)

背景介绍 信用贷款是指由银行或其他金融机构向中小微企业和个体工商户提供的一种贷款产品。该贷款的特点是无需提供抵押品或担保&#xff0c;主要依据借款人的信用状况来进行评估和审批。 中小微企业和个体工商户信用贷款的申请流程相对简单&#xff0c;申请人只需要提供个人…

Zebec 推出由 Visa、万事达网络支持的即时支付卡

“Zebec 现已推出全新的加密支付卡&#xff0c;该卡由 Visa、万事达网络支持&#xff0c;具备即时、多链、非托管、无需 KYC、免费等特性&#xff0c;其能够通过加密钱包与多条主流公链链接并直接调用支付&#xff0c;这将是加密支付领域的里程碑事件。” 在 2023 年的 12 月 8…

冗余备份组网——HSRP和GLBP协议

目录 HSRP&#xff08;思科私有协议&#xff09; HSRP基本概念 HSRP工作过程 HSRP的状态 HSRP的可靠性 HSRP相关配置 GLBP协议 HSRP&#xff08;思科私有协议&#xff09; HSRP基本概念 HSRP&#xff08;Host Standby Router Protocol&#xff09;为主机备份路由协议 …

B037-Mybatis基础

目录 为什么需要Mybatis&#xff1f;mybatis简介入门案例其余见代码查询流程增删改流程 - 变动数据要加事务去持久化抽取公共类 mapper接口开发规则概述代码 mapper.xml引入本地约束文件别名日志管理作用log4j的使用规范 井大括号与dollar大括号的区别 框架&#xff1a;半成品&…

C# OpenVINO 直接读取百度模型实现图片旋转角度检测

目录 效果 模型信息 代码 下载 C# OpenVINO 直接读取百度模型实现图片旋转角度检测 效果 模型信息 Inputs ------------------------- name&#xff1a;x tensor&#xff1a;F32[?, 3, 224, 224] --------------------------------------------------------------- Ou…