【学生管理系统】权限管理之用户管理

目录

6. 权限管理

6.1 环境搭建

6.1.1 数据库

6.1.2 后端环境

6.2 用户管理

6.2.1 查询所有用户(关联角色)

6.2.2 核心1:给用户授予角色

6. 权限管理

6.1 环境搭建

6.1.1 数据库

  • 权限管理的5张表的关系

  • 添加4张表

# 权限表(菜单表)
CREATE TABLE `sys_permission`  (`id` int(10) NOT NULL AUTO_INCREMENT,`permName` varchar(50) ,`parent_id` int(11) ,`path` varchar(255) ,PRIMARY KEY (`id`) USING BTREE
);
​
INSERT INTO `sys_permission` VALUES (1, '班级管理', 0, '/classes');
INSERT INTO `sys_permission` VALUES (2, '添加班级', 1, '/classes/classesAdd');
INSERT INTO `sys_permission` VALUES (3, '班级列表', 1, '/classes/classesList');
​
INSERT INTO `sys_permission` VALUES (4, '学生管理', 0, '/student');
INSERT INTO `sys_permission` VALUES (5, '学生列表', 4, '/student/studentList');
​
INSERT INTO `sys_permission` VALUES (6, '权限管理', 0, '/perm');
INSERT INTO `sys_permission` VALUES (7, '权限列表', 6, '/perm/permissionList');
INSERT INTO `sys_permission` VALUES (8, '角色列表', 6, '/perm/roleList');
INSERT INTO `sys_permission` VALUES (9, '用户列表', 6, '/perm/userList');
​
​
# 角色表
CREATE TABLE `sys_role`  (`id` int(10) NOT NULL AUTO_INCREMENT,`roleName` varchar(50),`roleDesc` varchar(50),PRIMARY KEY (`id`) USING BTREE
) ;
​
INSERT INTO `sys_role` VALUES (1, 'admin', '超级管理员');
INSERT INTO `sys_role` VALUES (2, 'sms_admin', 'sms管理员');
INSERT INTO `sys_role` VALUES (3, 'user', '普通用户');
​
​
​
#中间表:角色权限表
CREATE TABLE `sys_role_permission`  (`role_id` int(10),`perm_id` int(10),INDEX `FK_Reference_3`(`role_id`) USING BTREE,INDEX `FK_Reference_4`(`perm_id`) USING BTREE,CONSTRAINT `sys_role_permission_ibfk_1` FOREIGN KEY (`perm_id`) REFERENCES `sys_permission` (`id`) ,CONSTRAINT `sys_role_permission_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`) 
);
​
​
INSERT INTO `sys_role_permission` VALUES (1, 1);
INSERT INTO `sys_role_permission` VALUES (1, 2);
INSERT INTO `sys_role_permission` VALUES (1, 3);
INSERT INTO `sys_role_permission` VALUES (1, 4);
INSERT INTO `sys_role_permission` VALUES (1, 5);
INSERT INTO `sys_role_permission` VALUES (1, 6);
INSERT INTO `sys_role_permission` VALUES (1, 7);
INSERT INTO `sys_role_permission` VALUES (1, 8);
INSERT INTO `sys_role_permission` VALUES (1, 9);
​
INSERT INTO `sys_role_permission` VALUES (2, 1);
INSERT INTO `sys_role_permission` VALUES (2, 2);
INSERT INTO `sys_role_permission` VALUES (2, 3);
INSERT INTO `sys_role_permission` VALUES (2, 4);
INSERT INTO `sys_role_permission` VALUES (2, 5);
​
​
# 中间表:用户角色表
CREATE TABLE `sys_user_role`  (`user_id` VARCHAR(32),`role_id` INT(10) ,INDEX `FK_Reference_1`(`user_id`) USING BTREE,INDEX `FK_Reference_2`(`role_id`) USING BTREE,CONSTRAINT `sys_user_role_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`),CONSTRAINT `sys_user_role_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`u_id`)
);
​
INSERT INTO `sys_user_role` VALUES ('u001', 1);
INSERT INTO `sys_user_role` VALUES ('u001', 2);
INSERT INTO `sys_user_role` VALUES ('u002', 2);
​

6.1.2 后端环境

  • 基本内容:JavaBean、Mapper、Service、Controller

    • JavaBean

    • 基本结构

6.2 用户管理

6.2.1 查询所有用户(关联角色)

1)后端

  • 修改javaBean:List<SysRole> roleList

  • 编写Mapper:使用注解的方式查询关联数据

  • 编写Service

  • 编写Controller

  • 修改javaBean:List<SysRole> roleList

  • 编写Mapper:使用注解的方式查询关联数据

    • 修改UserMapper:查询所有,含角色

      package com.czxy.classes.mapper;
      ​
      import com.baomidou.mybatisplus.core.mapper.BaseMapper;
      import com.czxy.domain.TbUser;
      import org.apache.ibatis.annotations.*;
      ​
      import java.util.List;
      ​
      /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
      @Mapper
      public interface TbUserMapper extends BaseMapper<TbUser> {
      ​@Select("SELECT * FROM tb_user")@Results({@Result(property = "uid", column = "u_id"),@Result(property = "userName", column = "user_name"),@Result(property = "password", column = "password"),@Result(property = "gender", column = "gender"),@Result(property = "image", column = "image"),@Result(property = "roleList", many = @Many(select = "com.czxy.classes.mapper.SysRoleMapper.findAllByUid") , column = "u_id")})public List<TbUser> findAll();
      }
      ​

    • 修改RoleMapper:查询指定用户的角色

      package com.czxy.classes.mapper;
      ​
      import com.baomidou.mybatisplus.core.mapper.BaseMapper;
      import com.czxy.sys.SysRole;
      import org.apache.ibatis.annotations.Mapper;
      import org.apache.ibatis.annotations.Param;
      import org.apache.ibatis.annotations.Select;
      ​
      import java.util.List;
      ​
      /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
      @Mapper
      public interface SysRoleMapper extends BaseMapper<SysRole> {/*** 查询指定用户的所有角色* @author 桐叔* @email liangtong@itcast.cn* @return*/@Select("SELECT r.* FROM sys_role r, sys_user_role ur WHERE r.id = ur.role_id AND ur.user_id = #{uid}")public List<SysRole> findAllByUid(@Param("uid") String uid);
      }
      ​

  • 编写Service

    package com.czxy.classes.service;
    ​
    import com.baomidou.mybatisplus.extension.service.IService;
    import com.czxy.domain.TbUser;
    ​
    import java.util.List;
    ​
    /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
    public interface TbUserService extends IService<TbUser> {
    ​public List<TbUser> findAll();
    }
    ​

    package com.czxy.classes.service.impl;
    ​
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.czxy.domain.TbUser;
    import com.czxy.classes.mapper.TbUserMapper;
    import com.czxy.classes.service.TbUserService;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    ​
    import java.util.List;
    ​
    /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
    @Service
    @Transactional
    public class TbUserServiceImpl extends ServiceImpl<TbUserMapper, TbUser> implements TbUserService {
    ​@Overridepublic List<TbUser> findAll() {return baseMapper.findAll();}
    }
    ​

  • 编写Controller

    package com.czxy.classes.controller;
    ​
    import com.czxy.classes.config.JwtProperties;
    import com.czxy.classes.utils.JwtUtils;
    import com.czxy.domain.TbUser;
    import com.czxy.classes.service.TbUserService;
    import com.czxy.vo.BaseResult;
    import org.springframework.web.bind.annotation.*;
    ​
    import javax.annotation.Resource;
    import java.util.List;
    ​
    /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
    @RestController
    @RequestMapping("/user")
    public class TbUserController {@Resourceprivate TbUserService tbUserService;
    ​@GetMappingpublic BaseResult findAll() {List<TbUser> list = tbUserService.findAll();return BaseResult.ok("查询成功", list);}
    ​
    ​
    }
    ​

2)前端

<template><div><!-- 列表start --><el-table:data="userList"stripestyle="width: 100%"><el-table-columntype="selection"width="55"></el-table-column><el-table-columnprop="uid"label="用户ID"fixedwidth="80"></el-table-column><el-table-columnprop="userName"label="姓名"fixedwidth="100"></el-table-column><el-table-columnprop="gender"label="性别"width="80"><template slot-scope="scope">{{scope.row.gender == 1 ? '男': '女'}}</template></el-table-column><el-table-columnprop="image"label="头像"width="80"><template slot-scope="scope"><el-avatar size="20" :src="scope.row.image"></el-avatar></template></el-table-column><el-table-columnlabel="角色"width="300"><template slot-scope="scope"><el-tag v-for="(role,index) in scope.row.roleList" :key="index" closable>{{role.roleName}}</el-tag></template></el-table-column><el-table-columnlabel="操作" fixed="right"><template slot-scope="scope"><el-button size="mini">编辑</el-button><el-button size="mini" type="danger">删除</el-button></template></el-table-column></el-table><!-- 列表end --></div>
</template>
​
<script>
export default {data() {return {userList: []}},methods: {async findAllUser() {// ajaxlet { data: baseResult } = await this.$axios.get('/user-service/user')// 处理if(baseResult.code == 20000) {this.userList = baseResult.data} else {this.$message.error(baseResult.message)}},},mounted() {// 查询所有的用户this.findAllUser()},
}
</script>
​
<style>
​
</style>

6.2.2 核心1:给用户授予角色

1)分析

  • 前置功能:查询所有的角色

    • 后端:查询所有

    • 前端:下拉列表展示

  • 核心:给用户授予角色

    • 完成修改的部分功能,将用户选择的角色更新到数据库(先删除、后添加)

    • 后端:用户角色直接操作,给一个用户,添加一组角色

    • 前端:弹出框,直接使用table中的数据填充前端额下拉列表

2)前置功能:查询所有的角色-后端

package com.czxy.classes.controller;
​
import com.czxy.classes.service.SysRoleService;
import com.czxy.sys.SysRole;
import com.czxy.vo.BaseResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
​
import javax.annotation.Resource;
import java.util.List;
​
/*** @author 桐叔* @email liangtong@itcast.cn* @description*/
@RestController
@RequestMapping("/role")
public class SysRoleController {@Resourceprivate SysRoleService sysRoleService;
​@GetMappingpublic BaseResult findAll() {List<SysRole> list = sysRoleService.list();return BaseResult.ok("查询成功", list);}
​
​
}
​

3)核心:给用户授予角色-后端

  • 用户角色直接操作,给一个用户,添加一组角色

  • 编写mapper:通过uid删除关联信息

  • 编写service:先删除后,后添加

  • 编写controller

  • 编写mapper:通过uid删除关联信息

    package com.czxy.classes.mapper;
    ​
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.czxy.sys.SysRole;
    import com.czxy.sys.SysUserRole;
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.annotations.Select;
    ​
    /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
    @Mapper
    public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {@Delete("DELETE FROM sys_user_role WHERE user_id = #{uid}")int deleteByUid(@Param("uid") String uid);
    }
    ​

  • 编写service:先删除后,后添加

    package com.czxy.classes.service;
    ​
    import com.baomidou.mybatisplus.extension.service.IService;
    import com.czxy.domain.TbUser;
    import com.czxy.sys.SysUserRole;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    ​
    /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
    @Service
    @Transactional
    public interface SysUserRoleService extends IService<SysUserRole> {/*** 给指定用户收取角色* @author 桐叔* @email liangtong@itcast.cn* @return*/void addRoleWithUser(TbUser tbUser);
    }
    ​
    package com.czxy.classes.service.impl;
    ​
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.czxy.classes.mapper.SysUserRoleMapper;
    import com.czxy.classes.service.SysUserRoleService;
    import com.czxy.domain.TbUser;
    import com.czxy.sys.SysUserRole;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    ​
    /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
    @Service
    @Transactional
    public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
    ​@Overridepublic void addRoleWithUser(TbUser tbUser) {
    ​//1 删除baseMapper.deleteByUid(tbUser.getUid());
    ​//2 添加for (Integer roleId : tbUser.getRoleIds()) {SysUserRole sysUserRole = new SysUserRole(tbUser.getUid(), roleId);baseMapper.insert(sysUserRole);}}
    }
    ​

  • 编写controller

    package com.czxy.classes.controller;
    ​
    import com.czxy.classes.service.SysUserRoleService;
    import com.czxy.domain.TbUser;
    import com.czxy.vo.BaseResult;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    ​
    import javax.annotation.Resource;
    ​
    /*** @author 桐叔* @email liangtong@itcast.cn* @description*/
    @RestController
    @RequestMapping("/userRole")
    public class SysUserRoleController {@Resourceprivate SysUserRoleService sysUserRoleService;
    ​@PostMapping("/addRoleWithUser")public BaseResult addRoleWithUser(@RequestBody TbUser tbUser) {// 给用户添加角色sysUserRoleService.addRoleWithUser(tbUser);return BaseResult.ok("授权成功");}
    ​
    ​
    }
    ​

4)前置功能:查询所有的角色-后端

5)核心:给用户授予角色-前端

<template><div><!-- 列表start --><el-table:data="userList"stripestyle="width: 100%"><el-table-columntype="selection"width="55"></el-table-column><el-table-columnprop="uid"label="用户ID"fixedwidth="80"></el-table-column><el-table-columnprop="userName"label="姓名"fixedwidth="100"></el-table-column><el-table-columnprop="gender"label="性别"width="80"><template slot-scope="scope">{{scope.row.gender == 1 ? '男': '女'}}</template></el-table-column><el-table-columnprop="image"label="头像"width="80"><template slot-scope="scope"><el-avatar :size="20" :src="scope.row.image"></el-avatar></template></el-table-column><el-table-columnlabel="角色"width="300"><template slot-scope="scope"><el-tag v-for="(role,index) in scope.row.roleList" :key="index" closable>{{role.roleName}}</el-tag></template></el-table-column><el-table-columnlabel="操作" fixed="right"><template slot-scope="scope"><el-button size="mini" @click="openRoleDialog(scope.row)">授权</el-button><el-button size="mini">编辑</el-button><el-button size="mini" type="danger">删除</el-button></template></el-table-column></el-table><!-- 列表end -->
​<!-- 弹出框 start --><el-dialog title="授权" :visible.sync="dialogRoleVisible"><el-form :model="user" label-width="80px"><el-form-item label="角色列表"><el-select v-model="user.roleIds" multiple placeholder="请选择角色"><el-option v-for="(role,index) in roleList" :key="index" :label="role.roleName" :value="role.id"></el-option></el-select></el-form-item></el-form>{{user}}<div slot="footer" class="dialog-footer"><el-button @click="dialogRoleVisible = false">取 消</el-button><el-button type="primary" @click="addRoleWithUser">确 定</el-button></div></el-dialog><!-- 弹出框 end --></div>
</template>
​
<script>
export default {data() {return {userList: [],dialogRoleVisible: false,user: {},roleList: []}},methods: {async findAllUser() {// ajaxlet { data: baseResult } = await this.$axios.get('/user-service/user')// 处理if(baseResult.code == 20000) {this.userList = baseResult.data} else {this.$message.error(baseResult.message)}},async findAllRole() {// ajaxlet { data: baseResult } = await this.$axios.get('/user-service/role')// 处理if(baseResult.code == 20000) {this.roleList = baseResult.data} else {this.$message.error(baseResult.message)}},openRoleDialog(user) {// 查询所有角色this.findAllRole()// 填充表单this.user.uid = user.uid// 处理数据:从role对象过滤出role.id// this.user.roleIds = user.roleList.map(role => role.id)   //只能回显,不能操作this.$set(this.user, 'roleIds', user.roleList.map(role => role.id))// 打开弹出框this.dialogRoleVisible = true},async addRoleWithUser() {// ajaxlet { data: baseResult } = await this.$axios.post('/user-service/userRole/addRoleWithUser', this.user)// 处理if(baseResult.code == 20000) {// 成功this.$message.success(baseResult.message)// 刷新页面this.findAllUser()// 关闭弹出框this.dialogRoleVisible = false} else {this.$message.error(baseResult.message)}}},mounted() {// 查询所有的用户this.findAllUser()},
}
</script>
​
<style>
​
</style>

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

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

相关文章

数据库设计问题记录

唯一性约束和逻辑删除的冲突 问题描述 如果一张表中&#xff0c;存在唯一性约束&#xff0c;比如一些数据中的code&#xff0c;且数据表使用逻辑删除。当删除某行数据的时候&#xff0c;以后再次插入相同code的数据&#xff0c;数据库会报错。 问题分析 在逻辑删除中&#…

Unity 和 OpenCV:结合计算机视觉和游戏开发

文章目录 前言一、Unity 中集成 OpenCV1. 安装OpenCV plus Unity 插件2. 导入 OpenCV 包 二、图像处理应用程序的创建1. 实时轮廓检测2. 粒子发射器3. 碰撞区域 三、效果四、总结 前言 Unity 和 OpenCV 是两个强大的开发工具&#xff0c;分别用于游戏开发和计算机视觉。结合它…

记一次内存泄漏分析(待写稿)

背景 线上Flink频繁重启&#xff0c;先后排查了很多情况&#xff0c;目前在内存阶段排查&#xff0c;首先说说学到的知识 内存泄漏分析 JVM常用命令 JConsole JVisualvm 快照的这里是最有用的&#xff0c;它和jmap不同&#xff0c;jmap查找的是占用字节最多的类&#xff…

SCAU高程进阶题(自用)

18711 字符串去重 Description 一个完全由小写字母组成的长度为n的字符串&#xff0c;现在要求你去除所有重复的字母&#xff0c;并将剩下的字母按从小到大的次序输出。 如输入baaadccaab&#xff0c;输出abcd。 输入格式 第一行一个整数n&#xff0c;表示字符串长度(0<n&…

JAVA学习笔记_MySQL进阶

文章目录 存储引擎InnoDB引擎MyISAM引擎Memory存储引擎的选择 索引索引数据结构Btree(多路平衡查找树)BTreeHash索引为什么InnoDQB存储引擎采用Btree索引结构 索引分类思考题 索引语法索引性能分析慢查询日志show profiesexplain 索引的使用规则最左前缀法则索引失效SQL提示覆盖…

Java爬虫获取速卖通(AliExpress)商品详情

1. 环境准备 在开始编写爬虫之前&#xff0c;需要准备以下环境和工具&#xff1a; Java开发环境&#xff1a;确保你的计算机上安装了Java开发工具包&#xff08;JDK&#xff09;。IDE&#xff1a;选择一个Java集成开发环境&#xff0c;如IntelliJ IDEA、Eclipse等。第三方库&…

剑指Offer|LCR 014. 字符串的排列

LCR 014. 字符串的排列 给定两个字符串 s1 和 s2&#xff0c;写一个函数来判断 s2 是否包含 s1 的某个变位词。 换句话说&#xff0c;第一个字符串的排列之一是第二个字符串的 子串 。 示例 1&#xff1a; 输入: s1 "ab" s2 "eidbaooo" 输出: True 解…

Java编程题_面向对象和常用API01_B级

Java编程题_面向对象和常用API01_B级 第1题 面向对象、异常、集合、IO 题干: 请编写程序&#xff0c;完成键盘录入学生信息&#xff0c;并计算总分将学生信息与总分一同写入文本文件 需求&#xff1a;键盘录入3个学生信息(姓名,语文成绩,数学成绩) 求出每个学生的总分 ,并…

用户界面的UML建模05

4 抽象表示层建模&#xff08;Abstract Presentation Modeling&#xff09; 在进行应用程序建模时&#xff0c;很自然地会需要对UI 表示层进行建模。甚至是对于非常简单的场景&#xff08;scenario&#xff09;而言&#xff0c;UI 表示层部分的建模都是必不可少的。在这个阶段…

2024.12.25在腾讯云服务器上使用docker部署flask

2024.12.25在腾讯云服务器上使用docker部署flask 操作系统&#xff1a;Ubuntu 根据腾讯云的说明文档安装 Docker 并配置镜像加速源&#xff0c;注意需要安装腾讯云的加速源&#xff0c;使用官网的加速源连接极其不稳定&#xff0c;容易导致运行失败。使用哪个公司的云服务器就…

存储块的删除与状态查询

目录 存储块的删除 设计实现 存储块的删除 仅需删除任务列表的所有任务&#xff0c;无需在意空闲存储块。 设计实现 存储块的删除&#xff08;清空过程中可能有任务就绪&#xff0c;需执行一次调度&#xff09;存储块的状态查询&#xff08;当前存储块的计数、允许的最大计数、…

代理arp(proxy arp)原理 及配置

openwrt下打开 arp代理方法 proxy arp概念打开方法openwrt下打开 arp代理方法proxy arp概念 定义 Proxy ARP(代理地址解析协议)是一种网络技术,它允许一个设备(通常是路由器)代表另一个设备来回应 ARP(地址解析协议)请求。工作原理 ARP 回顾:在正常的 ARP 过程中,当主…

如何在IDEA一个窗口中导入多个项目

一般在IDEA窗口中想导入一个新项目&#xff0c;会提示我们在当前窗口还是新窗口。如果选新窗口&#xff0c;就会新打开一个窗口&#xff0c;此时新窗口里面只有新导入的项目。 而为了浏览起来更方便&#xff0c;需要实现在IDEA一个窗口中导入多个项目。具体步骤如下&#xff1…

SQL 实战:基于经纬度的距离计算与位置查询

在位置服务&#xff08;LBS&#xff09;系统中&#xff0c;基于地理位置查询和距离计算是核心功能之一。例如&#xff1a; 查找附近的商铺、加油站或医院。计算两点之间的实际直线距离。筛选出指定范围内的用户或设备位置。 MySQL 提供了多种方式实现地理位置查询&#xff0c…

SpringCloudAlibaba技术栈-Higress

1、什么是Higress? 云原生网关&#xff0c;干啥的&#xff1f;用通俗易懂的话来说&#xff0c;微服务架构下Higress 就像是一个智能的“交通警察”&#xff0c;它站在你的网络世界里&#xff0c;负责指挥和调度所有进出的“车辆”&#xff08;也就是数据流量&#xff09;。它的…

虚幻引擎结构之AActor

在虚幻引擎中&#xff0c;AActor 是一个核心类&#xff0c;作为游戏世界内所有可交互对象的基础。任何可以在关卡中放置或动态生成的对象&#xff0c;几乎都是从 AActor 类派生而来。这包括但不限于角色、道具、特效、静态和动态物体等。 1. AActor 的基本概念 AActor 作为基类…

现代图形API综合比较:Vulkan DirectX Metal WebGPU

Vulkan、DirectX、Metal 和 WebGPU 等低级图形 API 正在融合为类似于当前 GPU 构建方式的模型。 图形处理单元 (GPU) 是异步计算单元&#xff0c;可以处理大量数据&#xff0c;例如复杂的网格几何形状、图像纹理、输出帧缓冲区、变换矩阵或你想要计算的任何数据。 NSDT工具推荐…

工业大数据分析算法实战-day19

文章目录 day19讨论范畴介绍知识工程 知识沉淀方法的维度模型模型要素维度传感器异常报警异常预警的范式&#xff1a;特征量-征兆量-研判规则健康评估的范式&#xff1a;劣化度-健康度-综合评价故障类型研判范式&#xff1a;特征量-证据/现象-推理逻辑故障处理效果监控范式&…

Elasticsearch-模糊查询

模糊查询 前缀搜索&#xff1a;prefix 概念&#xff1a;以xx开头的搜索&#xff0c;不计算相关度评分。 注意&#xff1a; 前缀搜索匹配的是term&#xff0c;而不是field。 前缀搜索的性能很差 前缀搜索没有缓存 前缀搜索尽可能把前缀长度设置的更长 语法&#xff1a; GET &…

轮胎识别数据集,可对生产流水线里的轮胎图片标注,支持yolo,coco json,voc xml格式的标注,一共785张采集图片

轮胎识别数据集&#xff0c;可对生产流水线里的轮胎图片标注&#xff0c;支持yolo&#xff0c;coco json&#xff0c;voc xml格式的标注&#xff0c;一共785张采集图片 数据集分割 训练组90&#xff05; 706图片 有效集6% 46图片 测试集4% 33图片 预处理…