【权限管理平台】Day—02项目搭建及Shiro相关配置

​​

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
【权限管理平台】Day—02项目搭建及Shiro相关配置
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

今日项目搭建进度

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​【权限管理平台】项目开发Day—02​
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍌权限数据设计&接口设计​
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍇 权限数据设计​
【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍑 接口设计​
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍍实际编码​
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍔 Swagger相关配置​
【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍰 Shiro框架基础搭建相关配置​
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍕 Shiro主要功能:​
【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍫 了解 Jwt​
【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​​🍒 Shiro配置实际操作​
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

🍌权限数据设计&接口设计

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

🍇 权限数据设计

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
​ 由于这部分数据的设计设计与添加过于耗费时间(其实是因为​ ​懒​​),我选择在开发的过程中等这部分接口编码完毕之后,通过Swagger文档按需添加。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

🍑 接口设计

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
​ 在平时做开发时,习惯性的把我们编写的接口称之为​ ​Api​​​,所以,这次索性就把本项目的接口设计为​ ​/api/xxx/xxx​​(其实根本算不上设计 ♨️ )。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

🍍实际编码

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

🍔 Swagger相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
​ ​ ​Swagger​​​是一个规范和完整的框架,用于生成、描述、调用和可视化 ​ ​RestFul​​​ 风格的 ​ ​Web​​ 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
导入依赖
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger-uiartifactId>
<version>2.9.2version>
dependency>

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
相关配置
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

public class SwaggerConfig {

("${swagger2.enable}")
private boolean enable;


public Docket docket(){




List<Parameter> pars = new ArrayList<Parameter>();
ParameterBuilder tokenPar = new ParameterBuilder();
tokenPar.name("authorization").description("请输入Token信息")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(false);



pars.add(tokenPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.pdx.controller"))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars)
.enable(enable);
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("派大星权限管理平台")
.description("派大星权限管理平台")
.termsOfServiceUrl("")
.version("1.0")
.build();
}
}

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

🍰 Shiro框架基础搭建相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
​ 那么什么是​ &#x200B;Shiro&#x200B;​呢?下面我们简单了解一下这个安全框架:
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
​ ​ &#x200B;Shiro&#x200B;​​框架是​ &#x200B;Apache&#x200B;​​下的一款Java安全框架,具有和​ &#x200B;SpringSecurity&#x200B;​​一样的效果,相较于​ &#x200B;SpringSecurity&#x200B;​​而​ &#x200B;Shiro&#x200B;​的特点会更加突出:
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* 便捷
【权限管理平台】Day—02项目搭建及Shiro相关配置
* 易上手
【权限管理平台】Day—02项目搭建及Shiro相关配置
* 支持注解开发
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
🍕 Shiro主要功能:

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
三个核心组件:​ &#x200B;Subject&#x200B;​​ ​ &#x200B; SecurityManager&#x200B;​​ 和​ &#x200B; Realms&#x200B;
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​ &#x200B;Subject&#xFF1A;&#x200B;​​即”当前操作用户”。但是,在​ &#x200B;Shiro&#x200B;​​中,​ &#x200B;Subject&#x200B;​这一概念并不仅仅指人,也可以是第三方进程、后台帐户或其他类似事物。它仅仅意味着”当前跟软件交互的东西”。
【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​ &#x200B;SecurityManager&#xFF1A;&#x200B;​​它是​ &#x200B;Shiro&#x200B;​框架的核心,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​ &#x200B;Realm&#xFF1A;&#x200B;​​ Realm充当了Shiro与应用安全数据间的”桥梁”或者”连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,​ &#x200B;Shiro&#x200B;​​会从应用配置的​ &#x200B;Realm&#x200B;​中查找用户及其权限信息。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
如果你还不了解​ &#x200B;shiro&#x200B;​​的认证机制,请移步: ​​
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
🍫 了解 Jwt

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
​ ​ &#x200B;JWT&#x200B;​​(全称:​ &#x200B;Json Web Token&#x200B;​)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
Jwt的数据结构
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
&#x200B;Jwt&#x200B;​​一般是字符串,分为三部分,并且每部分中间用​ &#x200B;"."&#x200B;​隔开:
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")
xxxxx.yyyyy.zzzzz
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
Jwt包括哪三部分呢?
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* *Header
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
&#x200B;JWT&#x200B;​​第一部分是头部分,它是一个描述JWT元数据的​ &#x200B;Json&#x200B;​对象,通常如下所示。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")
{    "alg": "HS256",    "typ": "JWT"}
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
&#x200B;alg&#x200B;​​属性表示签名使用的算法,默认为​ &#x200B;HMAC SHA256&#x200B;​​(写为​ &#x200B;HS256&#x200B;​​),​ &#x200B;typ&#x200B;​​属性表示令牌的类型,​ &#x200B;JWT&#x200B;​​令牌统一写为​ &#x200B;JWT&#x200B;​。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* *Payload
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
&#x200B;JWT&#x200B;​​第二部分是​ &#x200B;Payload&#x200B;​​,也是一个​ &#x200B;Json&#x200B;​对象,除了包含需要传递的数据,还有七个默认的字段供选择。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
分别是,​ &#x200B;iss&#x200B;​​:发行人、​ &#x200B;exp&#x200B;​​:到期时间、​ &#x200B;sub&#x200B;​​:主题、​ &#x200B;aud&#x200B;​​:用户、​ &#x200B;nbf&#x200B;​​:在此之前不可用、​ &#x200B;iat&#x200B;​​:发布时间、​ &#x200B;jti&#x200B;​​:​ &#x200B;JWT ID&#x200B;​​用于标识该​ &#x200B;JWT&#x200B;​.
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* *Signature
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
那么它是怎么生成的呢?首先需要指定一个​ &#x200B;secret&#x200B;​​,该​ &#x200B;secret&#x200B;​​仅仅保存在服务器中,保证不能让其他用户知道。然后使用Header指定的算法对​ &#x200B;Header&#x200B;​​和​ &#x200B;Payload&#x200B;​​进行计算,然后就得出一个签名哈希。也就是​ &#x200B;Signature&#x200B;​。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
🍨 优点
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
* ​ &#x200B;json&#x200B;​​格式的通用性,所以​ &#x200B;JWT&#x200B;​​可以跨语言支持,比如​ &#x200B;Java&#x3001;JavaScript&#x3001;PHP&#x3001;Node&#x200B;​等等。
【权限管理平台】Day—02项目搭建及Shiro相关配置
* 可以利用​ &#x200B;Payload&#x200B;​存储一些非敏感的信息。
【权限管理平台】Day—02项目搭建及Shiro相关配置
* 便于传输,​ &#x200B;JWT&#x200B;​结构简单,字节占用小。
【权限管理平台】Day—02项目搭建及Shiro相关配置
* 不需要在服务端保存会话信息,易于应用的扩展。
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
🍒 Shiro配置实际操作

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
导入依赖
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

<dependency>
<groupId>org.apache.shirogroupId>
<artifactId>shiro-springartifactId>
<version>1.4.1version>
dependency>

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
自定义Realm类
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")
public class CustomRealm extends AuthorizingRealm {        public boolean supports(AuthenticationToken token) {        return token instanceof CustomUsernamePasswordToken;    }                                protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {        return null;    }                                     protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {        CustomUsernamePasswordToken usernamePasswordToken = (CustomUsernamePasswordToken) token;        SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(usernamePasswordToken.getPrincipal(), usernamePasswordToken.getCredentials(), getName());        return info;    }}
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
自定义Shiro默认加密方式
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")
public class CustomHashedCredentialsMatcher extends HashedCredentialsMatcher {        private RedisService redisService;                                     public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {        CustomUsernamePasswordToken usernamePasswordToken = (CustomUsernamePasswordToken) token;        String accessToken = (String) usernamePasswordToken.getCredentials();        String userId = JwtTokenUtil.getUserId(accessToken);        log.info("doCredentialsMatch.....userId=>{}",userId);                if (redisService.hasKey(Constant.DELETE_USER_KEY+userId)){            throw new BusinessException(BaseResponseCode.ACCOUNT_HAS_DELETE_ERROR);        }                if (redisService.hasKey(Constant.ACCOUNT_LOCK_KEY+userId)){            throw new BusinessException(BaseResponseCode.ACCOUNT_LOCKED);        }                if (redisService.hasKey(Constant.JWT_ACCESS_TOKEN_BLACKLIST+userId)){            throw new BusinessException(BaseResponseCode.TOKEN_ERROR);        }                if (!JwtTokenUtil.validateToken(accessToken)){            throw new BusinessException(BaseResponseCode.TOKEN_PAST_DUE);        }        return true;    }}
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
自定义UsernamePasswordToken 类
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")
public class CustomUsernamePasswordToken extends UsernamePasswordToken {    private String jwtToken;    public CustomUsernamePasswordToken(String jwtToken){        this.jwtToken = jwtToken;    }        public Object getPrincipal() {        return jwtToken;    }        public Object getCredentials() {        return jwtToken;    }}
![【权限管理平台】Day—02项目搭建及Shiro相关配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230524/"请添加图片描述")

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
新鲜出炉的代码将会及时更新到​ &#x200B;Gitee&#x200B;​仓库
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
今天的工作量就进行到这里!希望大佬们可以监督派大星一步步从0搭建该平台!
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置
【权限管理平台】Day—02项目搭建及Shiro相关配置
【权限管理平台】Day—02项目搭建及Shiro相关配置

【权限管理平台】Day—02项目搭建及Shiro相关配置

Original: https://blog.51cto.com/u_15670179/5372649
Author: 派大星i
Title: 【权限管理平台】Day—02项目搭建及Shiro相关配置

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/517512/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CSS 浮动布局,解决清除浮动的问题

    仅供学习,转载请注明出处 浮动特性 1、浮动元素有左浮动(float:left)和右浮动(float:right)两种 2、浮动的元素会向左或向右浮动,碰到父元素边界、其他元素才停…

    大数据 2023年5月25日
    076
  • Qt中使用SQLite数据库

    一、简述SQLite SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite(Qt…

    大数据 2023年11月10日
    072
  • 跟风试试ChatGPT

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    大数据 2023年11月13日
    052
  • docker容器时间修改

    直接在docker容器里面通过date -s的方式修改会影响外部服务器时间 采用faketime只能欺骗应用 date -s 不生效 ==> sudo timedatectl…

    大数据 2023年5月29日
    0100
  • java版VR全景漫游制作平台- 2介绍

    @ 系统登录 作品管理 新增作品 作品制作 视角设置 热点设置 沙盘地图 地面广告 背景音乐设置 特效设置 系统登录 登录铁牛VR云系统。点击”登录”,即可…

    大数据 2023年5月27日
    097
  • Linux Shell 常用命令 – 02篇

    系列文章:Linux Shell 常用命令 – 01篇 8. shell 中各种括号的作用 参考https://www.jb51.net/article/123081….

    大数据 2023年5月27日
    090
  • Dockerfile 指令 VOLUME 介绍(转)

    1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上。一旦容器删除后,这些数据就没了,除非我们人工备份下来(或…

    大数据 2023年5月28日
    066
  • docker打包容器

    从dockerfile进行build sudo docker build -t 镜像名:镜像版本 . docker commit 容器id 镜像名:镜像版本docker save …

    大数据 2023年5月29日
    073
  • mysql与sqlite3数据库之间相互导入导出

    1.mysql库导入到sqlite3中 ##下载并上传mysql2sqilite压缩包至目标主机/etc/grafana目录下 https://github.com/dumblob…

    大数据 2023年11月11日
    038
  • 大数据学习笔记——————-(15)

    第15章 KAFKA安装 安装kafka在之前,安装过jdk、spark、zookeeper的机器上,安装步骤如下: step_1:下载kafka step_2:解压文件 进入到下…

    大数据 2023年5月26日
    0106
  • Asp.Net Core 中的“虚拟目录”

    写在前面 现在部署Asp.Net Core应用已经不再限制于Windows的IIS上,更多的是Docker容器、各种反向代理来部署。也有少部分用IIS部署的,IIS部署确实是又快又…

    大数据 2023年6月3日
    0137
  • -bash: wget: 未找到命令

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 在虚拟机中利用wget命令下载安装相关应用时,提示:-bash: wget: 未找到命令 问题原因: 1、服务器本身没有自带安装…

    大数据 2023年5月27日
    095
  • 每日一问:讲讲 JVM 的类加载机制

    JVM 的类加载过程分为加载、验证、准备、解析、初始化 5 个阶段。 加载阶段由类加载器进行负责,类加载器根据一个类的全限定名读取该类的二进制字节流到 JVM 内部,然后转换为一个…

    大数据 2023年5月28日
    055
  • R-Drop——更强大的dropout

    更强大的dropout——R-dropout 论文通过实验得出一种改进的正则化方法R-dropout,简单来说,它通过使用若干次(论文中使用了两次)dropout,定义新的损失函数…

    大数据 2023年5月28日
    075
  • 第四十五章 SQL命令 FROM(一)

    第四十五章 SQL命令 FROM(一) 一个SELECT子句,指定要查询的一个或多个表。 SELECT … FROM [optimize-option] table-ref […

    大数据 2023年11月11日
    048
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球