基于Javaweb实现ATM机系统开发实战(六)开卡用户登录及其功能实现

news2025/4/8 22:59:34

首先输入用户名密码,测试一下用户登录功能,跳转到了UserLogin页面,发现404,是因为我们的servlet还没有编写,页面无法进行跳转。

还是老规矩,先写servlet:

package com.atm.servlet;

import com.atm.pojo.User;
import com.atm.service.UserService;
import com.atm.service.impl.UserServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;



//开卡用户登录
@WebServlet("/UserLogin")
public class UserLoginServlet extends HttpServlet {

    private UserService userService=new UserServiceImpl();
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取登录的账户密码:
        String icno=request.getParameter("Icno");
        String pwd=request.getParameter("pwd");
        //调用接口验证用户账户
        try {
            User user=userService.login(icno,pwd);
            if(user==null){
                request.setAttribute("error", "用户不存在或密码错误");
                request.getRequestDispatcher("/changepage/login.jsp").forward(request,response);
            }else {
                request.getSession().setAttribute("ua",user);
                response.sendRedirect("/changepage/UserIndex.jsp");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request,response);
    }
}

这里我们前端有很多虚拟路径Final没有处理会影响效果显示,所以我们先把/Final都删了,替换成:(还有很多变量名字都是大写的,要改成小写),并且全局查找/Final,把他们都替换成空

 登录界面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<%@ page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>IMUT_BANK ATM WelCome!!</title>
  <link href="<%=request.getContextPath()%>/changepage/css/login.css" rel="stylesheet" rev="stylesheet" type="text/css" media="all" />
  <link href="<%=request.getContextPath()%>/changepage//images/nmb.png" rel="shortcut icon"/>
  <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/js/jQuery1.7.js"></script>
  <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/js/jquery-1.8.2.min.js"></script>
  <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/js/jquery1.42.min.js"></script>
  <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/js/jquery.SuperSlide.js"></script>
  <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/js/Validform_v5.3.2_min.js"></script>
  <script type="text/javascript">
    $(document).ready(function(){
      var $tab_li = $('#tab ul li');
      $tab_li.hover(function(){
        $(this).addClass('selected').siblings().removeClass('selected');
        var index = $tab_li.index(this);
        $('div.tab_box > div').eq(index).show().siblings().hide();
      });
    });
  </script>
  <script type="text/javascript">
    $(function() {
      /*用户登录*/
      $("#stu_username_hide").focus(function () {
        var username = $(this).val();
        if (username == '输入卡号') {
          $(this).val('');
        }
      });
      $("#stu_username_hide").focusout(function () {
        var username = $(this).val();
        if (username == '') {
          $(this).val('输入卡号');
        }
      });
      $("#stu_password_hide").focus(function () {
        var username = $(this).val();
        if (username == '输入密码') {
          $(this).val('');
        }
      });
      $("#stu_password_hide").focusout(function () {
        var username = $(this).val();
        if (username == '') {
          $(this).val('输入密码');
        }
      });

      // $(".stu_login_error").Validform({
      //   tiptype: function (msg, o, cssctl) {
      //     var objtip = $(".stu_error_box");
      //     cssctl(objtip, o.type);
      //     objtip.text(msg);
      //   },
      //   ajaxPost: true
      // });
      /*管理员登录*/
      $("#tea_username_hide").focus(function () {
        var username = $(this).val();
        if (username == '输入用户名') {
          $(this).val('');
        }
      });
      $("#tea_username_hide").focusout(function () {
        var username = $(this).val();
        if (username == '') {
          $(this).val('输入用户名');
        }
      });

      $("#tea_password_hide").focus(function () {
        var username = $(this).val();
        if (username == '输入密码') {
          $(this).val('');
        }
      });

      $("#tea_password_hide").focusout(function () {
        var username = $(this).val();
        if (username == '') {
          $(this).val('输入密码');
        }
      });

      // $(".tea_login_error").Validform({
      //   tiptype: function (msg, o, cssctl) {
      //     var objtip = $(".tea_error_box");
      //     cssctl(objtip, o.type);
      //     objtip.text(msg);
      //   },
      //    ajaxPost: true
      // });
    })

  </script>
  <script type="text/javascript">
    $(function(){
      $(".screenbg ul li").each(function(){
        $(this).css("opacity","0");
      });
      $(".screenbg ul li:first").css("opacity","1");
      var index = 0;
      var t;
      var li = $(".screenbg ul li");
      var number = li.size();
      function change(index){
        li.css("visibility","visible");
        li.eq(index).siblings().animate({opacity:0},3000);
        li.eq(index).animate({opacity:1},3000);
      }
      function show(){
        index = index + 1;
        if(index <= number-1){
          change(index);
        }else{
          index = 0;
          change(index);
        }
      }
      t = setInterval(show,8000);
      //根据窗口宽度生成图片宽度
      var width = $(window).width();
      $(".screenbg ul img").css("width",width+"px");
    });
  </script>
</head>

<body>
<div id="tab">
  <ul class="tab_menu">
    <li class="selected">用户登录</li>
    <li>管理员登录</li>

  </ul>
  <div class="tab_box">
    <!-- 用户登录开始 -->
    <div>
      <div class="stu_error_box"></div>
      <form action="<%=request.getContextPath()%>/UserLogin" method="post" class="stu_login_error">
        <div id="username">
          <label>卡&nbsp;&nbsp;&nbsp;号:</label>
          <input type="text" id="stu_username_hide" name="Icno" placeholder="输入卡号" nullmsg="卡号不能为空!" datatype="s6-18" errormsg="卡号范围在6~18个字符之间!" sucmsg="卡号验证通过!"/>
          <!--ajaxurl="demo/valid.jsp"-->
        </div>
        <div id="password">
          <label>密&nbsp;&nbsp;&nbsp;码:</label>
          <input type="password" id="stu_password_hide" name="pwd" placeholder="输入密码" nullmsg="密码不能为空!" datatype="*6-16" errormsg="密码范围在6~16位之间!" sucmsg="密码验证通过!"/>
        </div>
        <p style="color:red;font-size: 14px" >${error}</p>
        <div id="login">
          <button type="submit">登录</button>
        </div>
      </form>
    </div>
    <!-- 用户登录结束-->
    <!-- 管理员登录开始-->
    <div class="hide">
      <div class="tea_error_box"></div>
      <form action="<%=request.getContextPath()%>/login" method="post" class="tea_login_error">
        <div id="username">
          <label>用户名:</label>
          <input type="text" id="tea_username_hide" placeholder="请输入用户名" name="name"  nullmsg="用户名不能为空!" datatype="s6-18" errormsg="用户名范围在6~18个字符之间!" sucmsg="用户名验证通过!"/>
          <!--ajaxurl="demo/valid.jsp"-->
        </div>
        <div id="password">
          <label>密&nbsp;&nbsp;&nbsp;码:</label>
          <input type="password" id="tea_password_hide" placeholder="请输入密码" name="password"  nullmsg="密码不能为空!" datatype="*6-16" errormsg="密码范围在6~16位之间!" sucmsg="密码验证通过!"/>
        </div>
        <p style="color:red;font-size: 14px" >${error}</p>
        <div id="login">
          <button type="submit">登录</button>
        </div>
      </form>
    </div>
    <!-- 管理员登录结束-->

  </div>
</div>
<div class="bottom">©2023  <a href="javascript:;" target="_blank">关于</a> <span>京ICP证030173号</span>   <img width="13" height="16" src="images/copy_rignt_24.png" /></div>
<div class="screenbg">
  <ul>
    <li><a href="javascript:;"><img src="<%=request.getContextPath()%>/images/forest-3840x2160-sunset-artwork-4k-20035.jpg" length="100%" width="100%"></a></li>

  </ul>
</div>
</body>
</html>

用户信息界面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>IMUT_BANK ATM WelCome!!</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
    <!-- Le styles -->
    <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/assets/js/jquery.js"></script>

    <link rel="stylesheet" href="<%=request.getContextPath()%>/changepage/assets/css/style.css">
    <link rel="stylesheet" href="<%=request.getContextPath()%>/changepage/assets/css/loader-style.css">
    <link rel="stylesheet" href="<%=request.getContextPath()%>/changepage/assets/css/bootstrap.css">
    <link rel="stylesheet" href="<%=request.getContextPath()%>/changepage/assets/css/media.css">
    <link rel="stylesheet" href="<%=request.getContextPath()%>/changepage/assets/css/social.css">
    
    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
    <!--[if lt IE 9]>
        <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    <!-- Fav and touch icons -->
    <link rel="shortcut icon" href="<%=request.getContextPath()%>/changepage/assets/ico/minus.png">
    
 
</head>

<body>
    <!-- Preloader -->
    <div id="preloader">
        <div id="status">&nbsp;</div>
    </div>
    <!-- 顶栏 -->
    <nav role="navigation" class="navbar navbar-static-top">
        <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button data-target="#bs-example-navbar-collapse-1" data-toggle="collapse" class="navbar-toggle" type="button">
                    <span class="entypo-menu"></span>
                </button>
                <button class="navbar-toggle toggle-menu-mobile toggle-left" type="button">
                    <span class="entypo-list-add"></span>
                </button>




                <div id="logo-mobile" class="visible-xs">
                   <h1>IMUT ATM<span>v2.2.7</span></h1>
                </div>

            </div>


            <!-- Collect the nav links, forms, and other content for toggling -->
            <div id="bs-example-navbar-collapse-1" class="collapse navbar-collapse">
                <ul class="nav navbar-nav">

                    <li class="dropdown">

                       
                        <ul style="margin: 11px 0 0 9px;" role="menu" class="dropdown-menu dropdown-wrap">
                            
                          
                        </ul>
                    </li>
                    
                    <li><a href="#"><i data-toggle="tooltip" data-placement="bottom" title="Help" style="font-size:20px;" class="icon-help tooltitle"></i></a>
                    </li>

                </ul>
                <div id="nt-title-container" class="navbar-left running-text visible-lg">
                    

                    <ul id="digital-clock" class="digital">
                        <div id="time">
    <script>
        document.getElementById('time').innerHTML = new Date().toLocaleString()
                + ' 星期' + '日一二三四五六'.charAt(new Date().getDay());
        setInterval(
                "document.getElementById('time').innerHTML=new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay());",
                1000);
    </script>
</div>
                    </ul>
                    <ul id="nt-title">
                        <li><i class="wi-day-lightning"></i>&#160;&#160;北京&#160;
                            <b>24°</b><i class="wi-Celsius"></i>&#160;; 
                        </li>
                        <li><i class="wi-day-lightning"></i>&#160;&#160;上海&#160;
                            <b>28°</b><i class="wi-Celsius"></i>&#160;;
                        </li>

                        <li><i class="wi-day-lightning"></i>&#160;&#160;内蒙古&#160;
                            <b>26°</b><i class="wi-Celsius"></i>&#160;;
                        </li>

                        <li><i class="wi-day-lightning"></i>&#160;&#160;海南&#160;
                            <b>31°</b><i class="wi-Celsius"></i>&#160;; 
                        </li>

                        <li><i class="wi-day-lightning"></i>&#160;&#160;四川&#160;
                            <b>29°</b><i class="wi-Celsius"></i>&#160;; 
                        </li>

                    </ul>
                </div>

                <ul style="margin-right:0;" class="nav navbar-nav navbar-right">
                    <li>
                        <a data-toggle="dropdown" class="dropdown-toggle" href="#">
                            <img alt="" class="admin-pic img-circle" src="http://api.randomuser.me/portraits/thumb/men/10.jpg">欢迎您 <b class="caret"></b>
                        </a>
                        <ul style="margin-top:14px;" role="menu" class="dropdown-setting dropdown-menu">
                            <li>
                                <a href="#">
                                    <span class="entypo-user"></span>&#160;&#160;我的账户</a>
                            </li>
                            <li>
                                <a href="#">
                                    <span class="entypo-vcard"></span>&#160;&#160;账户设置</a>
                            </li>
                            <li>
                                <a href="#">
                                    <span class="entypo-lifebuoy"></span>&#160;&#160;帮助</a>
                            </li>
                            <li class="divider"></li>
                            <li>
                                <a href="/changepage/login.jsp">
                                    <span class="entypo-user"></span>&#160;&#160; 退出账户</a>
                            </li>
                        </ul>
                    </li>
                    <li>
                        <a data-toggle="dropdown" class="dropdown-toggle" href="#">
                            <span class="icon-gear"></span>&#160;&#160;背景颜色</a>
                        <ul role="menu" class="dropdown-setting dropdown-menu">

                            <li class="theme-bg">
                                <div id="button-bg"></div>
                                <div id="button-bg2"></div>
                                <div id="button-bg3"></div>
                                <div id="button-bg5"></div>
                                <div id="button-bg6"></div>
                                <div id="button-bg7"></div>
                                <div id="button-bg8"></div>
                                <div id="button-bg9"></div>
                                <div id="button-bg10"></div>
                                <div id="button-bg11"></div>
                                <div id="button-bg12"></div>
                                <div id="button-bg13"></div>
                            </li>
                        </ul>
                    </li>
                    
                </ul>

            </div>
            <!-- /.navbar-collapse -->
        </div>
        <!-- /.container-fluid -->
    </nav>

    <!-- /END OF TOP NAVBAR -->

    <!-- SIDE MENU -->
    <div id="skin-select">
        <div id="logo">
          <h1>IMUT ATM<span>v2.2.7</span></h1>
        </div>

        <a id="toggle">
            <span class="entypo-menu"></span>
        </a>
        <div class="dark">
            <form action="#">
                <span>
                    <input type="text" name="search" value="" class="search rounded id_search" placeholder="Search Menu..." autofocus="">
                </span>
            </form>
        </div>

        <div class="search-hover">
            <form id="demo-2">
                <input type="search" placeholder="Search Menu..." class="id_search">
            </form>
        </div>

        <div class="skin-part">
            <div id="tree-wrap">
                <div class="side-bar">
                    

                    <ul class="topnav menu-left-nest">
                       <li>
                                    <a class="tooltip-tip2 ajax-load" href="/changepage/UserIndex.jsp" title="Profile Page">
                                    <i class="icon-user"></i><span>用户信息</span></a>
                                </li>

                        <li>
                            <a class="tooltip-tip" href="/changepage/UserChangePwd.jsp" title="Extra Pages">
                                <i class="icon-lock"></i>
                                <span>修改密码</span>
                            </a>
                          
                                <li>
                                    <a class="tooltip-tip2 ajax-load" href="/UserSerch?${QueryBalance}" title="Blank Page">
                                    <i class="icon-media-record"></i><span>查询余额</span></a>
                                </li>
                                
                                <li>
                                    <a class="tooltip-tip2 ajax-load" href="/changepage/UserStore.jsp" title="Invoice">
                                    <i class="entypo-newspaper"></i><span>存款</span></a>
                                </li>
                                <li>
                                    <a class="tooltip-tip2 ajax-load" href="/changepage/UserFetch.jsp" title="Pricing Table">
                                    <i class="fontawesome-money"></i><span>取款</span></a>
                                </li>
                                <li>
                                    <a class="tooltip-tip2 ajax-load" href="/changepage/UserTransfer.jsp" title="Time Line">
                                    <i class="entypo-clock"></i><span>转账</span></a>
                                </li>
                                <li>
                                    <a class="tooltip-tip2" href="/serchDetaile" title="404 Error Page">
                                    <i class="icon-preview"></i><span>交易明细</span></a>
                                </li>
                                <li>
                                    <a class="tooltip-tip2" href="/changepage/login.jsp" title="login.jsp">
                                    <i class="icon-mail"></i><span>退卡</span></a>
                                </li>
                                
                           
                    

                        

                    </ul>

                    


                    
                </div>
            </div>
        </div>
    </div>
    <!-- END OF SIDE MENU -->



    <!--  PAPER WRAP -->
    <div class="wrap-fluid">
        <div class="container-fluid paper-wrap bevel tlbr">


            <!-- CONTENT -->
            <!--TITLE -->
            <div class="row">
                <div id="paper-top">
                    <div class="col-sm-3">
                        <h2 class="tittle-content-header">
                            <span class="entypo-newspaper"></span>
                            <span>用户信息</span>
                        </h2>

                    </div>

                    
                    
                </div>
            </div>
            <!--/ TITLE -->

            <!-- BREADCRUMB -->
            <ul id="breadcrumb">
                <li>
                    <span class="entypo-home"></span>
                </li>
                <li><i class="fa fa-lg fa-angle-right"></i>
                </li>
                <li><a href="#" title="Sample page 1">首页</a>
                </li>
                <li><i class="fa fa-lg fa-angle-right"></i>
                </li>
                <li><a href="#" title="Sample page 1">用户信息</a>
                </li>
                
            </ul>

            <!-- END OF BREADCRUMB -->



            <div class="content-wrap">
                
                
                 <table width="10%" border='2'>
		<tr align="center">
		<br><br>
			<th><font size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;卡&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></th>
			<th><font size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用&nbsp;&nbsp;&nbsp;户&nbsp;&nbsp;&nbsp;名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></th>
			<th><font size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></th>
			<th><font size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;电&nbsp;&nbsp;话&nbsp;&nbsp;号&nbsp;&nbsp;码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></th>
			<th><font size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;身&nbsp;&nbsp;份&nbsp;&nbsp;证&nbsp;&nbsp;号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></th>
		</tr>
			<tr align="center">
				<td><font size="2">${ua.icno }</font></td>
				<%-- <%=request.getSession().getAttribute("ua") %> --%>
				<td><font size="2">${ua.name }</font></td>
				<td><font size="2">${ua.pwd }</font></td>
				<td><font size="2">${ua.mobile }</font></td>
				<td><font size="2">${ua.idcard }</font></td>
			</tr>
	</table>
                
                
                
                
                
            </div>
            <!-- /END OF CONTENT -->



            <!-- FOOTER -->
            <div class="footer-space"></div>
            <div id="footer">
                <div class="devider-footer-left"></div>
                <div class="time">
                    <p id="spanDate">
                    <p id="clock">
                </div>
                <div class="copyright">本网站基于百度查询开发 <a href="http://www.baidu.com/" title="百度" target="_blank">百度</a> All Rights Reserved</div>
                <div class="devider-footer"></div>

            </div>
            <!-- / END OF FOOTER -->


        </div>
    </div>
    <!--  END OF PAPER WRAP -->

    <!-- RIGHT SLIDER CONTENT -->
    

    <!-- END OF RIGHT SLIDER CONTENT-->




    <!-- MAIN EFFECT -->
    <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/assets/js/preloader.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/assets/js/bootstrap.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/assets/js/app.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/assets/js/load.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/changepage/assets/js/main.js"></script>

</body>

</html>

然后我们来完成业务层代码:

    //根据卡号和密码查询用户
    public User login(String icno, String pwd) throws Exception;

实现类代码:

    //根据银行卡号、密码查询用户信息
    public User login(String icno,String pwd) throws Exception{
        return userDao.getUserByIcnoAndpwd(icno,pwd);
    }

数据层代码;

    //根据卡号和密码校验用户
    public static User getUserByIcnoAndpwd(String icno, String pwd) throws Exception{
        Connection connection= DBUtils.getConnection();
        PreparedStatement preparedStatement = connection.prepareStatement("select * from user where icno=? and pwd=?");
        preparedStatement.setString(1,icno);
        preparedStatement.setString(2,pwd);
        ResultSet resultSet=preparedStatement.executeQuery();
        User user=null;
        if (resultSet.next()){
            user=new User();
            user.setIcno(resultSet.getString(1));
            user.setName(resultSet.getString(2));
            user.setPwd(resultSet.getString(3));
            user.setMobile(resultSet.getString(4));
            user.setIdcard(resultSet.getString(5));
            user.setBalance(resultSet.getDouble(6));
        }
        DBUtils.release(connection,preparedStatement,resultSet);
        return user;
    }

这里我们重启系统进行测试:

发现登录成功啦~并且效果也都正常显示了~

实现代码已上传~

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

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

相关文章

计算机网络实验(4)--配置网络路由

&#x1f4cd;实验目的 了解路由器的特点、基本功能及配置方法&#xff1b;使用模拟软件Packet Tracer 5.3熟悉Cisco路由器的操作&#xff1b;配置静态路由和距离矢量路由协议RIP&#xff0c;实现给定网络的连通&#xff1b;从而加深对IP编址、路由转发机制、路由协议、路由表…

作为一个程序员一定要掌握的算法之遗传算法

目录 一、引言 1.1 目的 1.2 意义 二、遗传算法介绍 2.1 遗传算法的基本思想 2.2 遗传算法与其他算法的主要区别 2.3 基于Java的遗传算法设计思想 三、遗传算法的具体实现 3.1 系统功能模块图和说明 3.2 代码和说明 3.2.1 初始化 3.2.2 选择运算 3.2.3 交叉运算 3…

go语言 Sort包

Sort包 1.常见的类型进行排序 类型功能sort.Float64s([]float64)对float64切片进行升序排序sort.Float64sAreSorted([]float64)bool判断float64切片是否为升序sort.SearchFloat64s([]float64,float64)int在升序切片中查找给定值,找到则返回下标,找不到则返回适合插入值的下标 …

selenium+python做web端自动化测试框架实战

最近受到万点暴击&#xff0c;由于公司业务出现问题&#xff0c;工作任务没那么繁重&#xff0c;有时间摸索seleniumpython自动化测试&#xff0c;结合网上查到的资料自己编写出适合web自动化测试的框架&#xff0c;由于本人也是刚刚开始学习python&#xff0c;这套自动化框架目…

基于 FPGA 的 HDMI/DVI 显示

文章目录 前言一、HDMI 与 DVI 的区别与联系1.1 DVI 接口含义1.2 HDMI 接口含义1.3 HDMI 与 DVI 的区别1.4 HDMI 与 DVI 的兼容性1.5 HDMI 与 DVI 接口对比 二、DVI 数据链路介绍2.1 输入接口层2.2 TMDS 发送器2.3 TMDS 接收器2.4 输出接口层 三、传输原理与实现3.1 TMDS原理3.…

jvm调优工具详解

一、调优工具 先通过jps命令显示Java应用程序的进程id 1、jmap 查看堆实例个数及占用内存大小&#xff0c;把这些信息生成到当前目录下的log.txt文件 jmap -histo 21932 > ./log.txt #查看历史生成的实例 jmap -histo:live 14660 #查看当前存活的实例&#xff0c;执行…

跨浏览器测试的重要性及需要注意的问题

随着互联网的快速发展&#xff0c;人们使用各种不同的浏览器来访问网站。因此&#xff0c;跨浏览器测试变得尤为重要&#xff0c;以确保网站在各种浏览器上都能正常运行和显示。本文将探讨跨浏览器测试的重要性以及需要注意的问题。 一、跨浏览器测试的重要性 随着浏览器的多…

【JAVA】仿顺丰淘宝智能识别信息模块——DidYourTypeItCorrectly

文章目录 题目项目层级结构解答已完成的部分简介未完成的部分概述代码部分DidYourTypeCorrectly.javaFormModel.javaIntelligentRecognition.javaMVCWindow.javaPlaint.java 运行结果截图结语 题目 模拟顺风地址智能识别&#xff0c;对用户输入的信息&#xff0c;包括&#xf…

iOS五大内存分区

我们知道任何一个程序在运行的时候实际是运行在内存中的&#xff0c;这个内存也就是我们通常所说的主存&#xff0c;也叫运行内存&#xff0c;也叫RAM&#xff08;Random Access Memory&#xff09;&#xff0c;是可以直接与CPU进行交换数据的内部存储器。内存读取速度很快&…

【Solr】删除core中的文档数据

推荐使用xml的方式&#xff0c;详情如下所示&#xff1a; &#xff08;清空文档数据&#xff09; <delete> <query>*:*</query> <!-- 示例模糊删除&#xff1a;<query>name:*老六*</query> --> </delete> <commit/>

代码随想录第25天 | * 491.递增子序列 * 46.全排列 * 47.全排列 II

491.递增子序列 自己的做法&#xff1a; /*** param {number[]} nums* return {number[][]}*/let road [];let path [];var findSubsequences function (nums) {road []; //road会有之前的数据&#xff0c;所以需要每次清空roadbrektraning(nums, 0);let obj {};road.for…

springboot校园二手书交易管理系统

本次设计任务是要设计一个乐校园二手书交易管理系统&#xff0c;通过这个系统能够满足乐校园二手书交易的管理员及卖家用户和用户二手书交易信息管理功能。系统的主要功能包括首页、个人中心、用户管理、卖家用户管理、图书分类管理、二手图书管理、求购图书管理、求购回复管理…

复习opencv:螺丝螺纹缺陷检测

螺牙缺陷检测 简述去噪椒盐噪声高斯噪声 小波变换引导滤波求最大凸包判断曲直全部代码 简述 今天收到了一个检测螺牙缺陷的问题&#xff0c;当复习opencv练个手&#xff0c;记录一下基础知识。这里的代码是检测弯曲的&#xff0c;其他缺陷用yolo处理。东家给的图片有的是有干扰…

激活函数》

一. 常用激活函数 1. Sigmoid函数 优点与不足之处 对应pytorch的代码 import torch import torch.nn as nn# Sigmoid函数 print(**25"Sigmoid函数""*"*25) m nn.Sigmoid() input torch.randn(2) print("原&#xff1a;",input) print("结…

RabbitMQ ---- Work Queues

RabbitMQ ---- Work Queues 1. 轮训分发消息1.1 抽取工具类1.2 启动两个工作线程1.3 启动一个发送线程1.4 结果展示 2. 消息应答2.1 概念2.2 自动应答2.3 消息应答的方法2.4 Multiple 的解释2.5 消息自动重新入队2.6 消息手动应答代码2.7 手动应答效果演示 3. RabbitMQ 持久化3…

RT-Thread 互补滤波器 (STM32 + 6 轴 IMU)

作者&#xff1a;wuhanstudio 原文链接&#xff1a;https://zhuanlan.zhihu.com/p/611568999 最近在看无人驾驶的 Prediction 部分&#xff0c;可以利用 EKF (Extended Kalman Filter) 融合不同传感器的数据&#xff0c;例如 IMU, Lidar 和 GNSS&#xff0c;从而给出更加准确的…

Go——基础语法

目录 Hello World&#xff01; 变量和常量 变量交换 匿名变量 常量 iota——特殊常量 基本数据类型 数据类型转换 运算符 算数运算符 关系运算符 逻辑运算符 位运算符号 ​编辑 赋值运算符 输入输出方法 流程控制 函数 可变参数类型 值传递和引用传递 Hello Wor…

性能测试 jmeter 的 beanshell 脚本的 2 个常用例子

目录 前言&#xff1a; Bean Shell 内置变量大全 例子 1 例子 2 技巧 前言&#xff1a; JMeter是一个功能强大的性能测试工具&#xff0c;而Beanshell是JMeter中用于编写脚本的一种语言。 在利用 jmeter 进行接口测试或者性能测试的时候&#xff0c;我们需要处理一些复杂…

使用GithubAction自动构建部署项目

GitHub Actions 是一种持续集成和持续交付(CI/CD) 平台&#xff0c;可用于自动执行生成、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求&#xff0c;或将合并的拉取请求部署到生产环境。 GitHub Actions 不仅仅是DevOps&#xff0c;还允许您在存储库中…

基于linux下的高并发服务器开发(第一章)-GCC(2)1.3

04 / gcc 和 g的区别 gcc 和 g都是GNU&#xff08;组织&#xff09;的一个编译器 【误区一】&#xff1a;gcc只能编译 C 代码&#xff0c;g 只能编译 c 代码。两者都可以&#xff0c;请注意&#xff1a; 后缀为 .c 的&#xff0c;gcc 把它当做是 C 程序&#xff0c;而 g 当做是…