vue顶部菜单加左侧菜单_物流项目之用户登录、主页面、顶部菜单授权

2023-10-31

工程搭建分析

freight-parent:父工程,打包方式pom,管理jar包的版本号。所有module都应该继承父工程。

为什么不在freight-parent定义所有jar包,而是定义版本号呢?

项目部署到tomcat需要打war包,如果这个项目依赖了所有的jar包则会非常大,导致传输非常慢。

|-- freight:聚合(pom)

|-- freight - common:通用的工具类(jar)

|-- freight - pojo:子工程(jar)

|-- freight - dao:子工程(jar)

|-- freight - service:子工程(jar)

|-- freight - web:子工程(war)

1. 用户登录

1.1 系统静态页面

1.2 pdm

1.3 pojo

逆向工程生成

1.4 mapper

逆向工程生成

1.5 service

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserPMapper userPMapper;
    @Autowired
    private DeptPMapper deptPMapper;
    @Autowired
    private ModulePMapper modulePMapper;
    @Autowired
    private UserInfoPMapper userInfoPMapper;

    @Override
    public UserP login(String username) {
        UserPExample userPExample = new UserPExample();
        UserPExample.Criteria criteria = userPExample.createCriteria();
        criteria.andUserNameEqualTo(username);
        List<UserP> user = userPMapper.selectByExample(userPExample);
        if (user !=null){
            return user.get(0);
        }
        return null;
    }

    @Override
    public CurrentUser findUserInfoDeptByUser(UserP user){
        CurrentUser currentUser = new CurrentUser();
        currentUser.setUser(user);// 设置用户基本信息
        currentUser.setDept(deptPMapper.selectByPrimaryKey(user.getDeptId()));// 设置用户所属部门信息
        currentUser.setUserInfo(userInfoPMapper.selectByPrimaryKey(user.getUserId()));// 设置用户详细信息
        return currentUser;
    }

    @Override
    public List<ModuleP> getPermissionsByUserId(String userid){

        return modulePMapper.getPermissionsByUserId(userid);
    }
}

1.6 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext-*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 解决post乱码 -->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!-- springmvc的前端控制器 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--启动shiro-->
    <filter>
        <filter-name>shiro</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>targetBeanName</param-name>
            <param-value>shiroFilter</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>shiro</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

1.7 applicationContext-shiro.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd ">


    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="loginUrl" value="/index"></property>
        <!--注入安全管理器-->
        <property name="securityManager" ref="securityManager"></property>
        <property name="filters">
            <map>
                <entry key="authc" value-ref="formAuthenticationFilter"></entry>
            </map>
        </property>
        <property name="filterChainDefinitions">
            <value>
                <!--登录页匿名访问-->
                / = anon
                <!--静态资源匿名访问-->
                /js/**  = anon
                /css/**  = anon
                /images/**  = anon
                /skin/**  = anon
                /components/**  = anon
                /favicon.ico = anon

                <!--表单认证过滤器-->
                /user/login = authc
                <!--退出-->
                /user/logout = logout
                /** = user
            </value>
        </property>
    </bean>

    <bean id="formAuthenticationFilter" class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter">
        <property name="usernameParam" value="username"></property>
        <property name="passwordParam" value="password"></property>
        <property name="loginUrl" value="/user/login"></property>
        <property name="successUrl" value="/main"></property>
    </bean>

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <!--注入自定义realm-->
        <property name="realm" ref="customRealm"></property>

        <!--注入缓存管理器-->
        <property name="cacheManager" ref="cacheManager"></property>

        <!--注入sessionManager-->
        <property name="sessionManager" ref="sessionManager"></property>
    </bean>

    <!--注入自定义realm-->
    <bean id="customRealm" class="com.y.realm.CustomRealm">

        <!--注入密码匹配器-->
        <property name="credentialsMatcher" ref="credentialsMatcher"></property>
    </bean>

    <!--密码匹配器-->
    <bean id="credentialsMatcher" class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
        <property name="hashAlgorithmName" value="md5"></property>
        <property name="hashIterations" value="1"></property>
    </bean>

    <!--会话管理器-->
    <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
        <property name="globalSessionTimeout" value="1800000"></property>
    </bean>

    <!--缓存管理器-->
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <property name="cacheManagerConfigFile" value="classpath:shiro-ehcache.xml" />
    </bean>

</beans>

1.8 realm


public class CustomRealm extends AuthorizingRealm{

    @Autowired
    private UserService userService;


    //认证
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        String username = (String) authenticationToken.getPrincipal();
        //查询用户名
        UserP user = userService.login(username);
        if(user==null){
            return null;
        }
        CurrentUser currentUser = userService.findUserInfoDeptByUser(user);
        currentUser.setUser(user);

        //从数据库中获取密码
        String pwd = user.getPassword();
        //从数据库中获取盐
        String salt ="1";

        //返回认证信息
        SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(user, pwd,
                ByteSource.Util.bytes(salt), getName());
        return authenticationInfo;
    }

    //授权
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principal) {
        // 获取用户
        UserP userP = (UserP) principal.getPrimaryPrincipal();
        CurrentUser currentUser = userService.findUserInfoDeptByUser(userP);
        UserP user = currentUser.getUser();

        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();

        // 填充用户权限
        List<ModuleP> modulePList = userService.getPermissionsByUserId(user.getUserId());
        if (modulePList != null && modulePList.size() > 0) {
            for (ModuleP m : modulePList) {

                authorizationInfo.addStringPermission(m.getCpermission());
            }
        }
        return authorizationInfo;
    }

    //清除缓存
    public void clearCached() {
        PrincipalCollection principals = SecurityUtils.getSubject().getPrincipals();
        super.clearCache(principals);
    }

}

1.9 controller

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;


    //认证失败,成功不调用
    @RequestMapping("/login")
    public String login(HttpServletRequest request, Model model){
        String shiroLoginFailure = (String) request.getAttribute("shiroLoginFailure");

        if(UnknownAccountException.class.getName().equals(shiroLoginFailure)){
            model.addAttribute("errorInfo","账号不存在!!!");
        }else if(IncorrectCredentialsException.class.getName().equals(shiroLoginFailure)){
            model.addAttribute("errorInfo","密码错误!!!");
        }
        return "index";
    }

}

1.10 index.jsp

修改登录地址

<div class="btnstyle">
           <input class="loginImgOut" value="" type="button"
                  onclick="formSubmit('${ctx}/user/login','_self');"
                  onmouseover="this.className='loginImgOver'"
                  onmouseout="this.className='loginImgOut'"
            />
             <input class="resetImgOut" value="" type="button"
                  onmouseover="this.className='resetImgOver'"
            />
</div>

显示异常信息

 <div class="erro" id="erro">
          <div class="erro_intro">
                 ${errorInfo}
          </div>
 </div>

2. 主页面

2.1 登录成功显示主页面

2.1.2 修改PageController

@Controller
public class PageController {
    @Autowired
    private UserService userService;

    @RequestMapping("/")
    public String showIndex(){
        return "index";
    }

    @RequestMapping("/main")
    public String showMaim(){
        return "home/fmain";
    }

    @RequestMapping("/homeAction_title")
    public String homeActionTitle(Model model){
        Subject subject = SecurityUtils.getSubject();
        UserP userP = (UserP) subject.getPrincipal();
        CurrentUser currentUser = userService.findUserInfoDeptByUser(userP);

        model.addAttribute("currentUser",currentUser);
        return "home/title";
    }

    @RequestMapping("/homeAction_toleft")
    public String homeActionToleft(String moduleName)
    {
        return moduleName+"/left";
    }

    @RequestMapping("/homeAction_tomain")
    public String homeActionTomain(String moduleName){

        return moduleName+"/main";
    }


}

2.2 主页面布局分析

frameset实现主页面布局:

<frameset rows="125,*" name="topFrameset" border="0">
	<frame name="top_frame" scrolling="no"  target="middleFrameSet" src="homeAction_title">	
	<frameset cols="202,*" height="100%" name="middle" frameborder="no" border="0" framespacing="0">
		<frame name="leftFrame" class="leftFrame" target="main" scrolling="no" src="homeAction_toleft?moduleName=home" />
		<frame name="main" class="rightFrame" src="homeAction_tomain?moduleName=home" />
	</frameset>
</frameset>

2.3 创建PageController

@Controller 
public class PageController {
    @Autowired
    private UserService userService;

    @RequestMapping("/")
    public String showIndex(){
        return "index";
    }

    @RequestMapping("/main")
    public String showMaim(){
        return "home/fmain";
    }

    //标题栏菜单
    @RequestMapping("/homeAction_title")
    public String homeActionTitle(Model model){
        Subject subject = SecurityUtils.getSubject();
        UserP userP = (UserP) subject.getPrincipal();
        CurrentUser currentUser = userService.findUserInfoDeptByUser(userP);

        model.addAttribute("currentUser",currentUser);
        return "home/title";
    }

    //跳转左侧菜单
    @RequestMapping("/homeAction_toleft")
    public String homeActionToleft(String moduleName)
    {
        return moduleName+"/left";
    }

    //跳转主窗口
    @RequestMapping("/homeAction_tomain")
    public String homeActionTomain(String moduleName){

        return moduleName+"/main";
    }


}

2.4.1展示当前登录用户信息

2.4.1 创建CurrentUser

public class CurrentUser implements Serializable {
    //用户信息
    private UserP user;
    //用户的扩展信息
    private UserInfoP userInfo;
    //部门信息
    private DeptP dept;

    public UserP getUser() {
        return user;
    }

    public void setUser(UserP user) {
        this.user = user;
    }

    public UserInfoP getUserInfo() {
        return userInfo;
    }

    public void setUserInfo(UserInfoP userInfo) {
        this.userInfo = userInfo;
    }

    public DeptP getDept() {
        return dept;
    }

    public void setDept(DeptP dept) {
        this.dept = dept;
    }
}

2.4.2 修改UserService

@Override

public CurrentUser findUserInfoDeptByUser(UserP user){
    CurrentUser currentUser = new CurrentUser();
    currentUser.setUser(user);// 设置用户基本信息
    currentUser.setDept(deptPMapper.selectByPrimaryKey(user.getDeptId()));// 设置用户所属部门信息
    currentUser.setUserInfo(userInfoPMapper.selectByPrimaryKey(user.getUserId()));// 设置用户详细信息
    return currentUser;
}

2.4.3 修改realm

前边的配置文件已经全了

2.4.4 修改PageController

//跳转标题栏菜单
@RequestMapping("/homeAction_totitle")
public String homeAction_totitle(Model model){
    Subject subject = SecurityUtils.getSubject();
    CurrentUser currentUser = (CurrentUser) subject.getPrincipal();
    model.addAttribute("currentUser",currentUser);
 return "home/title";
}

2.4.5 修改title.jsp

<div id="userInfo" style="z-index:999;" onclick="HideLoginDiv()" title="点击关闭">
 <img src="${ctx}/skin/default/images/title/avataronline.gif" border="0" style="margin-top:-1px;"/>
 您好:<strong>${currentUser.userInfoP.name}</strong> |
 您所属单位:
 <strong>${currentUser.deptP.deptName}</strong> 

 <img src="${ctx}/skin/default/images/title/close.gif" border="0" />
</div>

2.5 退出

2.5.1 修改applicationContext-shiro.xml

<!--退出-->
/logout = logout

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue顶部菜单加左侧菜单_物流项目之用户登录、主页面、顶部菜单授权 的相关文章

  • Spring Boot 面试现场题

    随着Spring Boot的面世已经有几年了 给程序员带来的最直观的感受是配置减少了 至于Spring Boot的核心功能和原理 很少人能答上来 为了在互联网寒冬中能找到工作 今天根据所学发表下关于spring Boot的愚见 下面以考官和
  • IDEA 配置Go环境,编写Golang代码,学习笔记(一)

    Hello 各位小伙伴们 又有一段时间没有更新了 老哥呢 最近去外面面试 发现Java已经是卷得不能在卷了 老哥没有办法 只能另辟蹊径 去卷Go 现在可以说又回到原点了 诶 世事无常 大肠包小肠 跟着Jessica老哥学习Golang 搭建
  • LeetCode算法之350-两个数组的交集 II

    给定两个数组 编写一个函数来计算它们的交集 示例 1 输入 nums1 1 2 2 1 nums2 2 2 输出 2 2 示例 2 输入 nums1 4 9 5 nums2 9 4 9 8 4 输出 4 9 说明 输出结果中每个元素出现的次
  • 【WSL】[02] windows subsytem linux 配置和使用

    第 2 章前言 上一篇我们已经安装好了ubuntu在WSL下的GUI的桌面 我们现在继续进一步进行配置工作 同时也把 运用WSL的流程摸一把 以备后用 补充1 彻底的关闭WSL的方法 WSL使用后 原来Windows安装的传统虚拟机是用不了
  • angular8组件传值总结(一)

    一 父 gt 子 1 div class father part div
  • Ubuntu 16.04中为Chromium、Chrome、Firefox安装Flash播放器插件

    Ubuntu 16 04 LTS正式发布有段时间了 许多Linux迷喜欢在 Ubuntu 平台上使用开源的 Chromium 浏览器 也就是Google Chrome 浏览器的开源版本 但是在 Chromium 浏览器上安装 Flash 播
  • QT 5.9 以后 android程序编译gradle遇到的问题

    在使用Qt5 9以后的版本时 编译android程序 不再需要配置ant 而是使用gradle 在JDK SDK NDK都已经配置好的情况下 但是我们一编译就遇到问题 如下 FAILURE Build failed with an exce
  • 理解泰勒中值定理1的证明过程的两个影响理解的简单隐含推导

    一 引言 在阅读同济大学高等数学泰勒中值定理1的证明过程时 老猿仔细理解了将近2个小时才完全理解 也许对熟知高数的高手们这很容易看懂 但对老猿这种数学知识忘光了从头学习的人来说还是有点难度的 之所以花这多时间 是因为书上的证明过程有2个隐含
  • Docker 生产环境之日志 - JSON File 日志驱动程序

    原文地址 默认情况下 Docker 捕获所有容器的标准输出 和标准错误 并将其写入使用 JSON 格式的文件 这个 JSON 格式用每个行的来源 stdout 或 stderr 及其时间戳注释 每个日志文件都包含只有一个容器的信息 1 使用
  • 御用导航提示页面_网站导航的重要性 - 神马蜘蛛池博客

    原出处 蜘蛛池博客 原文链接 网站导航的重要性 蜘蛛池博客 网站导航优化是什么 我信赖许多人在导航目录的优化这块操作还存在有待前进的空间 从前从前通知你千万不要掉进网站优化骗局提到过网站导航的重要性 网站导航的主要功能在是引导用户方便地拜访
  • PowerDesigner sql文件逆向工程

    背景 一个外包做的项目 他就给我了一个sql文件 我想看他数据库的设计 过程 navicat逆向 先导入到数据库 并且备份一下 用navicat逆向一下模型 看不懂 没有关联关系 用PowerDesigner逆向 使用Navicat逆向建立
  • Centos7安装配置NFS服务和挂载

    一 安装 NFS 服务器所需的软件包 1 yum install y nfs utils 二 编辑exports文件 添加从机 1 2 vim etc exports data 192 168 0 100 rw sync fsid 0 19
  • C++基础[1]

    目录 1 命名空间 2 缺省参数 3 函数重载 4 引用 5 指针vs引用 6 为什么C语言不支持函数重载 C 支持 7 C与C 能互相调用库吗 gt 可以 8 内联函数 9 auto关键字 10 nullptr 1 命名空间 第一次打印在
  • oracle 学习摘记

    常用函数 1字符函数 1 1转换函数 lower 大写转小写 upper 小写转大写 initcap 首字母转为大写 1 2 字符操作函数 concat 连接字符串 substr 取子串 length 取长度 instr 取得位置值 lpa
  • Gitlab之修改克隆地址

    问题 安装好Gitlab 创建项目之后 我就把自己的代码推送到了Gitlab上 但是当别的开发人员去克隆的时候 发现羡慕中的克隆地址是这样的 SSH和HTTP的克隆地址都都为gitlab example com 虽然我可以把这个地址复制下来
  • 无需租用云服务器:使用Linux本地搭建web服务并实现内网穿透发布公网访问的详细教程

    文章目录 前言 1 本地搭建web站点 2 测试局域网访问 3 公开本地web网站 3 1 安装cpolar内网穿透 3 2 创建http隧道 指向本地80端口 3 3 配置后台服务 4 配置固定二级子域名 5 测试使用固定二级子域名访问本
  • 【C++多继承】虚继承

    目录 1 多继承 菱形继承 2 虚继承 3 总结 1 多继承 菱形继承 单继承 一个子类只有一个直接父类时称这个继承关系为单继承 多继承 一个子类有两个或以上直接父类时称这个继承关系为多继承 菱形继承 菱形继承是多继承的一种特殊情况 菱形继
  • 使用粒子群算法求解生产调度问题的matlab实现

    使用粒子群算法求解生产调度问题的matlab实现 粒子群算法 Particle Swarm Optimization 是一种常用的优化算法 其思想源于鸟群觅食的行为 该算法通过模拟鸟群觅食的行为 在搜索空间中寻找最优解 在生产调度问题中 我

随机推荐

  • 谷歌自动化插件Automa简单使用

    前言 Automa是一款比较好用的自动化插件 可以利用它减少机械化操作 如打开网页 批量添加数据 测试流水线 下载安装 目前Github地址已经找不到下载地址了 可以在百度上搜索Automa下载 下载成功之后 进入谷歌输入 chrome e
  • neo4j 4.x新建数据库,并解决报错Unsupported administration command: CREATE DATABASE

    重要 社区版本不支持命令create database xxx 只有企业版可以 社区版本只允许同时打开一个数据库 当然你可以多开几个neo4j服务 当你打开成新的数据库后 除了新数据库和system 其他的数据库就无法访问啦 但是它们依旧存
  • SAP T CODE : Description (Program)

    SAP T CODE Description Program V Quickstart RKCOWUSL RKCOWUSL V 01 Create Sales Call SAPMV43A V 02 Create Telephone Call
  • 修改shell命令提示符和命令的输入颜色

    修改命令提示符颜色 修改命令提示符的话 只需修改PS1环境变量即可 PS1 033 01 31m u h W 033 00m 效果如图 修改命令输入的颜色 修改命令输入的颜色 思路是不关闭PS1的颜色 然后在每次敲下回车键执行命令的时候自动
  • 自己动手实现一个神经网络多分类器

    本文由 罗周杨stupidme me lzy gmail com 原创 转载请注明作者和出处 未经授权 不得用于商业用途 不使用任何深度学习框架 实现一个简单的神经网络用来分类 手把手带你搭建神经网络 包括损失函数的选择 已经手写反向传播代
  • 最优清零方案 蓝桥杯 2138 python实现

    问题描述 给定一个长度为 N 的数列 A1 A2 AN 现在小蓝想通过若干次操作将 这个数列中每个数字清零 每次操作小蓝可以选择以下两种之一 选择一个大于 0 的整数 将它减去 1 选择连续 K 个大于 0 的整数 将它们各减去 1 小蓝最
  • 数组模拟栈和队列

    全文目录 数组实现栈 数组实现队列 数组实现的循环队列 数组实现栈 元素的出入只在栈顶进行 所以在实现的时候只需要标记栈顶就行了 因为每次插入元素都需要先 tt 所以 tt 可以从 1 开始 tt表示栈顶 int stk N tt 1 向栈
  • (16) 基于图卷积神经网络的轨道交通流量预测

    交通预见未来 16 基于图卷积神经网络的轨道交通流量预测 1 文章信息 Predicting Station Level Short Term Passenger Flow in a Citywide Metro Network Using
  • 计算机c盘突然少了几个G,做系统时c盘显示0容量-关于Windows系统c盘突然没了十几个g...

    既然系统默认装软件是c盘 那为什么不把c盘空间做大点呢 C盘是系统盘 多大容量完全是自己分出来的 你的c盘容量应该是别人给分的 一般为了电脑速度快一些 会用SSD做系统盘 你说你就一个1T的硬盘 那其实可以完全分成一个区 也就是就一个C盘
  • 如何提取OneDrive文件直链?

    原理 原链接 https xxxx my sharepoint com x g personal xx xx xx xxxxxxxxxx 直链 https xxxx my sharepoint com personal xx xx xx l
  • CNN之手写数字识别(Handwriting Recognition)

    CNN之手写数字识别 Handwriting Recognition 目录 CNN之手写数字识别 Handwriting Recognition 1 常用的包 2 常见概念 3 手写数字识别器实现 3 1 数据准备 3 2 构建网络 3 3
  • VB基础语法

    一 基础概念 1 1变量 变量的定义格式 Dim Private Static Public 变量名 As 数据类型 Dim Private Static Public 就是我之前所说的权限的意思 As 数据类型 这个是可选项 你可以为这个
  • 准备数据集

    目录 介绍 足够的数据集 收集图像 调整图像大小 下一步 在这里 我们简要说明了数据集的要求 然后 我们提出了收集数据的方法 在Internet上搜索图像 搜索视频并从中上传帧 然后 我们提供一些找到的视频的参考 然后 我们说明使用可用工具
  • defer和async的区别

    没有 defer 或 async 浏览器会立即加载并执行指定的脚本 立即 指的是在渲染该 script 标签之下的文档元素之前 也就是说不等待后续载入的文档元素 读到就加载并执行 有 async 加载和渲染后续文档元素的过程将和 scrip
  • python读取docx文件,并进行一些操作

    python读取docx文件 1 安装包 先前试用过很多包 都不管用 读取文件时候会出现如下错误 pywintypes com error 2147352567 发生意外 0 Kingsoft WPS 文档保存失败 3011 2147467
  • 从零开始学python 07——字典

    一 字典 1 字典的定义 通过 里面的数据都是以键值对保存 key value 字典中可以存在多个键值对 用逗号隔开 注意点 字典中的key一般都是字符串类型 也可以是数值类型 字典中的key一般不要相同 如果出现多个相同的key 以最后一
  • python 点名随机+人脸识别

    基于tkinter写的随机点名窗口程序 运行截图 主窗口 点名操作 人脸识别操作 具体代码如下 主窗口 import random import tkinter import tkinter as tk import threading i
  • win7安装visual studio 2015出现安装包丢失或损坏

    win r 输入 certmgr msc 查看有没有选中的两个证书 如果没有需要从其他电脑导入 然后直接点击安装界面重试 即可继续安装
  • 海关爬虫7代(圣佛版)

    声明 代码仅作学习交流用途 代码分享者与创作者不承担任何由他人恶意运行而导致的责任 勿擅自修改限制频率的参数 勿恶意攻击网页 请学习浏览者遵守社会公德与法律秩序 爬虫导致的网页崩溃等损失由计算机操作者负全部责任 造成严重后果的需要承担刑事责
  • vue顶部菜单加左侧菜单_物流项目之用户登录、主页面、顶部菜单授权

    工程搭建分析 freight parent 父工程 打包方式pom 管理jar包的版本号 所有module都应该继承父工程 为什么不在freight parent定义所有jar包 而是定义版本号呢 项目部署到tomcat需要打war包 如果