精华内容
下载资源
问答
  • 科技股突变的滞后作用分析——基于Bai-Perron检验,柳向东,米泽宇,了解科技股股价序列由于不同性质因素影响而产生结构性突变这一响应的滞后期,在对不同因素响应滞后期观察,比较不同因素对科技
  • 密码验证分析

    2008-12-30 15:26:00
    用户登录的作用是保护应用程序中的相关资料,以防止无关人员对程序信息的肆意破坏。当进入程序,会根据用户的所拥有的权限对程序中的相关模块进行相应操作。为了防止其他人员在数据库中获取用户信息,而对应用程序...

    在运行应用程序时,首先看到的就是用户登录界面,只有输入正确的用户名及密码,才可以进入程序的主界面。用户登录的作用是保护应用程序中的相关资料,以防止无关人员对程序信息的肆意破坏。当进入程序后,会根据用户的所拥有的权限对程序中的相关模块进行相应操作。为了防止其他人员在数据库中获取用户信息,而对应用程序进行操作,可以对用户名和密码进加密后存入数据库中。本章将详细介绍如何制作用户的登录界面、权限以及密码验证。

    3.1  基础技术分析

    本节将对用户登录、权限及密码验证在制作过程中所应用的基础知识进行一下讲解,使读者在制作登录窗体及用户权限时便于编写。

    3.1.1  用户登录分析

    在制作用户登录窗口时,最基本的就是如何判断用户名和密码是否在指定数据表的同一个记录中,如果在,表示该用户可以登录该系统,反之,用户名、密码不正确。

    在数据表中判断用户名及密码是否正确,可以用SQL语句来实现。

    首先,在指定的数据表中查找是否有要登录的用户名。

    select * from 表名 where 用户字段名=用户名称

    如果有用户名,则判断输入密码是否与该记录中的密码相同。

    If 记录>0

    Begin

      If 当前记录的密码字段信息=输入密码

        登录成功

      Else

        密码错误

    End

    Else

      用户名不正确

    以上的登录过程,适合于ADO组件和BDE组件。

    在制作管理软件时,登录窗口最好设为子窗体,因为登录窗体关闭时,不一定关闭整个工程。那么如何解决登录窗口的关闭问题呢?登录窗口有两种关闭情况,一种是自身窗体的关闭,进入主窗体;另一种是工程的关闭。工程关闭可以用如下代码来实现:

      Application.Terminate;

    而自身窗体的关闭只需要用窗体的Close方法便可以实现,具体如何关闭登录窗体可以用公共变量进行判断。

    当然,登录窗体也可以是主窗体,在登录成功后,可以隐藏登录窗体,并显示主界面窗体,如果想要利用主界面窗体来关闭整个工程,可以在主界面窗体的OnClose事件中用Application.Terminate代码来关闭。

    3.1.2  密码验证分析

    密码验证实际上就是将密码进行加密,避免其他无关人员通过数据库,查找到用户数据表进入本系统。

    密码加密可以有很多种方法,如在数据库中进行加密、对字符串进行算数加密、MD5加密等。在这里只对数据库加密及算数加密进行说明。

    数据库加密是用SQL函数pwdencryp(@Str)对存入数据库中的字符串进行加密,其中@Str变量表示要加密的字符串密码。在登录时,通过Pwdcompare()函数来进行解密,其具体格式如下:

    Pwdcompare(@Old,PassWord)

    当该函数返回1时,表示旧密码与解密后的密码相同,如果返回0,表示不同。

    l          @Old:旧密码。

    l          PassWord:加密后的密码。

    算数加密是将要加密的字符串中的字符按照指定的二进制数组进行异或运算,然后用IntToHex函数将异或后的数字转换成指定位数的字符串。当进行解密时,也是按照相同的二进制数组将加密后的字符串按照指定位数的字符串顺序进行异或运算,将其进行解密。

    下面是IntToHex函数的语法格式:

    function IntToHex(Value: Int64; Digits: Integer): string; overload;

    该函数将一个数字转换成为一个字符串,字符串中包含该数字的十六进制表示形式。

    IntToHex函数的参数说明如表3.1所示。

    表3.1                      IntToHex函数的参数说明

    参数

    说明

    Value

    将要转换的整型值

    Digits

    转换位数

    返回值:返回转换后的字符串。

    3.1.3  用户权限分析

    用户权限实际上就是在用户登录后,是否可以在应用程序中调用各个子窗体,或者是在进入子窗体后,是否可以对该窗体中的各个组件进行操作。这样,可以将用户权限分成两种:一是对窗体进行控制;二是对窗体中的各个组件进行控制。

    1.对窗体权限进行控制

    只对窗体权限进行控制,可以在数据库中创建用户数据表时,插入与窗体个数等同的字段数,字段名的后面最好以数字进行排序(权限字段名如:P_0、P_1等),以便查找相应的字段,为了方便控制窗体,可以将字段类型设为Bit型,该类型只有两个值1(True)和0(False),可以通过该值来判断窗体是否可用。

    在用户权限窗体中可以用TCheckBox组件来显示和设置权限,它是一个多选组件,可以通过用户数据表中的权限字段值对该组件的Checked属性进行设置。

    用TCheckBox组件显示各窗体的权限,关键在于各窗体的权限字段如何与TCheckBox组件一一对应。可以用窗体的FindComponent()方法来查找窗体中已有的TCheckBox组件,并对其按照数据表的权限值进行设置。代码如下:

    with ADOQuer do

    begin

      close;

      SQL.Clear;

      SQL.Add('select * from 用户表 where 用户字段名='+''''+查找的用户名称+'''');

      Open;

      for i:=0 to 12 do

      begin

        (self.FindComponent('CheckBox'+inttostr(i+1)) as TCheckBox).Checked :=

    FieldByName('P_'+IntToStr(i)).AsBoolean;

    end;

    用户的权限名称是以权限名+数字进行组合的,可以通过数字将TCheckBox组件与权限相对应。

    2.对窗体中的各个按钮进行控制

    在对窗体中的各组件进行权限设置时,可以使用TTreeView组件对窗体以及窗体中各组件的使用权限进行设置。

    在制作用户权限窗体前,首先要在数据库中创建一个数据表(tb_TemPop),该数据表记录了主窗体中的所有菜单名称,以及各菜单所对应窗体中的所有组件名称和使用权限等。数据表的关系图如图3.1所示。

    图3.1  tb_TemPop数据表的关系图

    可以通过tb_TemPop数据表查找出各主菜单下子菜单所对应窗体的各组件的应用权限。下面以tb_TemPop数据表中的信息作详细说明。如图3.2所示。

    图3.2  tb_TemPop数据表

    在tb_TemPop数据表中可以看出,当Fu_ID字段的值为0时,表示该记录为主菜单项,当Fu_ID字段的值为主菜单项的Zhu_ID字段值时,表示该记录为指定主菜单项的子菜单项(也就是子窗体的名称),当Fu_ID字段的值为子菜单项的Zhu_ID字段值时,表示该记录为子菜单项所对应窗体中的组件,在Tree_Name字段中记录了各窗体与组件的名称,便于在程序中查找相对应的各菜单项及相关组件

    下面以TTreeView组件在权限窗体中应用的基础识知进行一下讲解。

    在窗体显示时,可以利用TreeView1组件的Items属性的AddChild()方法向该组件中添加一个新节点。语法如下:

    function AddChild(Node: TTreeNode; const S: string): TTreeNode;

    Node:表示父节点,当Node为Nil,添加的是一个根节点,当Node不为空时,创建一个新的节点,是Node节点的子节点。

    S:创建节点的名称。

    返回值:当前添加节点的节点值。

    在TreeView1组件中添加节点应用如下:

    Var

      ItemNode : TtreeNode;

    begin

      ItemNode := TreeView1.Items.AddChild(Nil,节点名称);  //添加根节点

      TempNode.ImageIndex := 0;  //对根节点的图片样式进行设置

      ItemNode := TreeView1.Items.AddChild(ItemNode,节点名称);  //在根节点下添加子节点

      TempNode.ImageIndex := 1;  //对子节点的图片样式进行设置

    end

    如果要想在添加节点的同时,在节点的左面显示图片,或是以图片的形式来显示多选按钮,可以在TreeView1组件的Images属性中添加ImageList1组件,在ImageList1组件中保存了要显示的图片样式,在添加节点时,可以用当前节点的ImageIndex属性来设置要显示图片的索引号。

    当根节点中的子节点过多时,可以在TreeView1组件中只显示根节点的信息,并在根节点的下面添加一个空的子节点,这样,可以在根节点的左面出现一个扩展标记,以便在扩展根节点时,动态加载当前根节点的子节点,这一操作可以在TreeView1组件的OnExpanding事件中完成,该事件的语法如下:

    procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;

      var AllowExpansion: Boolean);

    在该语法中的Node参数记录了当前扩展节点的节点值,可以通过Node节点值,在该节点的下面添加子节点。在添加子节点前,用当前节点的DeleteChildren属性删除该节点下的所有子字点,如Node.DeleteChildren。因为在添加根节点时,在根节点的下面添加了一个空的子节点。

    添加完子节点后,就可以通过鼠标选择节点来改变节点左面的图片样式。为了防止用鼠标扩展节点时,改变图片的样式,可以用单击鼠标右键来完成图片的更换。该操作可以在TreeView1组件的OnMouseUp事件中完成。代码如下:

    procedure TFrm_Popedom.TreeView1MouseUp(Sender: TObject;

      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

    var

    begin

      if Button = mbRight then

      begin

        //更换图片或其它的操作

      end;

    在扩展和收缩节点时,可以利用OnGetImageIndex事件来改变当前节点和子节点的图片样式。语法格式如下:

    procedure TreeView2GetImageIndex(Sender: TObject;

      Node: TTreeNode);

    Node参数记录了当前操作的节点值。可以通过该节点的Level属性来判断当前节点是根级节点还是子级节点,当Level属性值为0时,表示根级节点,当Level属性值大于0时,表示子级节点。可以通过Level属性来设置Node节点或Node子节点的图片样式。代码如下:

    procedure TFrm_User_Part.TreeView2GetImageIndex(Sender: TObject;

      Node: TTreeNode);

    begin

      if node.Level = 0 then

        node.ImageIndex := 1

      else

      if Node.Level = 1 then

        node.ImageIndex := 2;

    end;

    在TreeView1组件中选中一个节点时,改变当前节点的图片样式,可以在OnGetSelectedIndex事件中完成。其实现过程与OnGetImageIndex事件的实现过程基本相同,在这里不作讲解。

    转载于:https://www.cnblogs.com/wenwencao/archive/2008/12/30/1365317.html

    展开全文
  • 采用基于误差分析的特征提取方法提取各可选仿真模型和实际系统输出的特征向量,利用各可选模型的特征向量及相应的模型标号组成训练集建立后验概率SVM模型,将实际系统的特征向量作用后验概率SVM模型,依据其概率...
  • 白噪声序列检验的小波分析方法 ...白噪声序列在应用时间序列分析中有着重要的作用,例如在判断为数据建立的统计分析模型是否合理时,对模型的残差进行白噪声检是判别模型合理性的重要依据。另外,
  • 噪声抑制算法中,谱减算法用的是后验证信噪比,维纳滤波器使用的是先验信噪比,MMSE算法既用到了先验信噪比,也用到了后验信噪比,那么,自然提出一个问题,在降噪过程中,先验信噪比与后验信噪比到底那个作用比较大...
          原文转载于:https://user.qzone.qq.com/314138065/blog/1442843834      非常感谢。
         噪声抑制算法中,谱减算法用的是后验证信噪比,维纳滤波器使用的是先验信噪比,MMSE(最小均方误差)算法既用到了先验信噪比,也用到了后验信噪比,那么,自然提出一个问题,在降噪过程中,先验信噪比与后验信噪比到底那个作用比较大。这个结论其实通过验证可以得出,先验信噪比是影响噪声抑制的主要参数,后验信噪比是辅助参数。

           那么先验信噪比与后验信噪比它们之间又有什么关系,这里做一个分析。
           先看下面的一个公式:
     
          这里k为帧数,m为频率,先验信噪比等于纯净语音信号的功率(X)除以噪声信号的功率(D),假设语音信号是平稳的,且噪声与语音信号不相关,则等于带噪语音功率(Y)减去噪声功率(D)后除以噪声功率,最后化简为先验信噪比等于后验信噪(gamma)比减去1。

          另外,根据统计学中的先验信噪比与后验信噪比的关系,已知:

          这里,我们发现,第二个公式跟第一个是很像的,如果我们把这两个公式中的值分别只取一半进行中和一下,可以得到第三个公式:

          再扩展下,如果这里的权重1/2变成一个变量a,上式就变为:

          这个公式就是知名的判决引导法公式,很多降噪算法就使用这个公式进行先验信噪比的估计!

    参考文献:https://user.qzone.qq.com/314138065/blog/1442843834
    展开全文
  • 噪声抑制算法中,谱减算法用的是后验证信噪比,维纳滤波器使用的是先验信噪比,MMSE算法既用到了先验信噪比,也用到了后验信噪比,那么,自然提出一个问题,在降噪过程中,先验信噪比与后验信噪比到底那个作用比较大...

    噪声抑制算法中,谱减算法用的是后验证信噪比,维纳滤波器使用的是先验信噪比,MMSE算法既用到了先验信噪比,也用到了后验信噪比,那么,自然提出一个问题,在降噪过程中,先验信噪比与后验信噪比到底那个作用比较大。这个结论其实通过验证可以得出,先验信噪比是影响噪声抑制的主要参数,后验信噪比是辅助参数。

     
    那么先验信噪比与后验信噪比它们之间又有什么关系,这里做一个分析。中间如有不清楚的地方,可以到群(374737122)内寻求帮助。
     
    先看下面的一个公式:
    这里k为帧数,m为频率,先验信噪比等于纯净语音信号的功率(X)除以噪声信号的功率(D),假设语音信号是平稳的,且噪声与语音信号不相关,则等于带噪语音功率(Y)减去噪声功率(D)后除以噪声功率,最后化简为先验信噪比等于后验信噪(gamma)比减去1。
     
    另外,根据统计学中的先验信噪比与后验信噪比的关系,已知:
    这里,我们发现,第二个公式跟第一个是很像的,如果我们把这两个公式中的值分别只取一半进行中和一下,可以得到第三个公式:

    再扩展下,如果这里的权重1/2变成一个变量a,上式就变为:

    这个公式就是知名的判决引导法公式,很多降噪算法就使用这个公式进行先验信噪比的估计!
     
    本文来自于icoolmedia,有对相关算法感兴趣的朋友,欢迎加入音视频算法讨论QQ群(374737122)里一起交流!
    展开全文
  • 这种检测用户ID的操作用Ajax完成。 行为:当用户输入ID,会使用Ajax将信息提交到服务器上进行验证,如果此ID没有被人使用,则提示可以使用。如果被人使用了,则提示错误信息。 2 建立database和user表 并插入数据...

    1 示例描述:

    登陆注册程序中,必须保证每个用户ID不能重复。这种检测用户ID的操作用Ajax完成。

    行为:当用户输入ID后,会使用Ajax将信息提交到服务器上进行验证,如果此ID没有被人使用,则提示可以使用。如果被人使用了,则提示错误信息。

    2 建立database和user表 并插入数据:

    create database mld;

     create table user( userid varchar(30) primary key,name varchar(30),passwo
    rd varchar(32));

     insert into user values("admin","administrator","admin");

    3 编写注册表单页 regist..html的分析:

    ① 若是ID重复,则不能提交。

    form中有一个οnsubmit="return "事件

    ② form表单中,ID项填写完成,失去焦点后,就立刻开始检测并提示(核心

    ID里面有一个 οnblur="核心业务名字"事件。

    在ID后面有一个<span></span>将提示的信息显示出来。

    4 regist.html的核心代码:

    <html>
    <head>
    <meta charset="UTF-8">
    <title>注册</title>
    <script type="text/javascript">
    var xmlHttp;
    var flag;

    //创建xmlHttp
    function createXMLHttp() {
    if (window.XMLHttpRequest) {
    xmlHttp = new XMLHttpRequest();
    } else {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }

    //3的②中的核心函数
    function checkUserid(userid) {
    createXMLHttp();
    xmlHttp.open("POST", "CheckServlet?userid=" + userid);//查找ID的请求

    //open post参数后面的资源,有可能是现成的内容,也有可能是另一个需要执行的代码。该xmlhttp接收这段执行代码的返回的内容
    xmlHttp.onreadystatechange = checkUseridCallback;//回调函数
    xmlHttp.send(null);//发送请求
    doucument.getElementById("msg").innerHTML = "正在验证";
    }
    function checkUseridCallback() {
    if (xmlHttp.readyState == 4) {
    if (xmlHttp.status == 200) {
    var text = xmlHttp.responseText;//接收"CheckServlet?userid=" + userid  返回的内容
    if (text == "true") {
    flag = false;//flag的意义在于,若是返回true,则说明ID重复,则无法提交。为了满足3的①的业务逻辑
    document.getElementById("msg").innerHTML = "用户ID重复,无法使用!";
    } else {
    flag = true;
    document.getElementById("msg").innerHTML = "此用户ID可以注册!";
    }
    }
    }
    }
    function checkForm(){//form能否提交,取决于返回的flag的内容. 在form中:οnsubmit="return checkForm()"
    return flag;
    }

    </script>
    </head>
    <body>


    <form action="regist.html" method="post" οnsubmit="return checkForm()">
    用户ID:<input type="text" name="userid" οnblur="checkUserid(this.value)" /> //离开焦点调用js中的业务逻辑
    <span id="msg"></span><br /> 姓&nbsp;&nbsp;名:<input type="text"
    name="name" /></br> 密&nbsp;&nbsp;码:<input type="password" name="password" /></br>
    <input type="submit" vaule="注册" /> <input type="reset" value="重置" />
    </form>
    </body>
    </html>

    5 :由js中的逻辑很容易看出在servlet中我们要的是什么:

    名字:CheckServlet

    业务:检查其userid是否存在。

    若存在,返回"true"

    若不存在,返回“false”

    CheckServlet.java 代码:

    package org.lxh.ajaxdemo ;
    import java.sql.* ;
    import java.io.* ;
    import javax.servlet.* ;
    import javax.servlet.http.* ;
    public class CheckServlet extends HttpServlet{
    public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
      public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
    public static final String DBUSER = "root" ;
    public static final String DBPASS = "0000" ;//我的mysql数据库的密码
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
    this.doPost(request,response) ;
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
    request.setCharacterEncoding("GBK") ;
    response.setContentType("text/html") ;
    Connection conn = null ;
    PreparedStatement pstmt = null ;
    ResultSet rs = null ;
    PrintWriter out = response.getWriter() ;//返回用response返回。因为在js中是用post方法,所以在这里直接用doPost
    String userid = request.getParameter("userid") ;//接收参数
    try{
    Class.forName(DBDRIVER) ;
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
    String sql = "SELECT COUNT(userid) FROM user WHERE userid=?" ;
    pstmt = conn.prepareStatement(sql) ;
    pstmt.setString(1,userid) ;
    rs = pstmt.executeQuery() ;
    if(rs.next()){
    if(rs.getInt(1)>0){// 用户ID已经存在了
    out.print("true") ;//返回true
    } else {
    out.print("false") ;//返回false
    }
    }
    }catch(Exception e){
    e.printStackTrace() ;
    }finally{
    try{
    conn.close() ;
    }catch(Exception e){}
    }
    }
    }

    6 部署servlet 到web.xml并启动服务器 然后就可以执行了

    展开全文
  • 可能昨天很多人会说太简单了,根本没难度,今天带大家看下那个网站的验证码,希望大家还能保持这番乐观:aHR0cHM6Ly9wb3J0YWwubW9ndS5jb20vdXNlci9uZXdsb2dpbg==01还是照常看...首先先是第一个请求,作用是获取请求...
  • 明白了特性你才能懂得Synchronized的作用范围,使用的时候才不容易犯错。 一.可重入性 可重入性:同一个线程的外层函数获得锁,内存函数可以直接获取该锁。 举个生活中的可重入性的例子: 当我们排队的时候,经常...
  • 为了给煤矿塌陷区土地的治理利用提供理论依据,对建筑荷载作用下采空区顶板岩梁的稳定性进行了分析研究。采空区顶板岩梁突变失稳过程是比较典型的偏离平衡态的非线性过程,将浅部开采老采空断裂的顶板岩梁概化为三铰拱...
  • 通过对辛屯地区以往地质资料的收集整理以及现场踏勘,经综合分析,否定了过去对长城窝堡井田南部存在辛屯基底隆起,辛屯地区煤层变薄尖灭,无可采煤层的认识。推断张强盆地聚煤凹陷中心应在辛屯及以南的区域内,...
  • MSDN 中提及 FormsAuthenticationModule 在 Forms 身份验证中起到了关键作用,那么这背后究竟隐藏了什么?本分将简要分析 Forms 身份验证流程,以便让大家更加清楚地了解并使用它。FormsAuthenticationModule 是一个...
  • 为实现被保护层回采区域安全、快速、...通过对不同影响区域内的煤体制定合理的防突措施及防突措施效果检验或验证,采用理论分析和现场考察,结合1201回采区域具体开采工程实践,总结出保护层开采区域防突措施方法经验。
  • 分析了INTERPOINT公司的DC/DC模块的输入端反接,输入电压对DC/DC模块、电源保护滤波电路及负载的影响,通过仿真与验证试验,得出电源模块输入端反接单机产品中电源保护电路发生作用,对产品中负载无影响,可以...
  • MSDN中提及FormsAuthenticationModule在Forms身份验证中起到了关键作用,那么这背后究竟隐藏了什么?本分将简要分析Forms身份验证流程,以便让大家更加清楚地了解并使用它。 FormsAuthenticationModule是一个...
  • 针对急斜煤层水平分段综放开采的特点,将沿倾向初次破断的基本顶视为三边固支一边自由,受纵横载荷共同作用的斜置矩形板力学模型.应用Kirchhoff薄板理论,考虑中面内力对弯曲的影响,运用能量法得到了顶板挠度的解析...
  • 分析了INTERPOINT公司的DC/DC模块的输入端反接,输入电压对DC/DC模块、电源保护滤波电路及负载的影响,通过仿真与验证试验,得出电源模块输入端反接单机产品中电源保护电路发生作用,对产品中负载无影响,可以...
  • 分析器 优化器 执行器 存储引擎 所组成。 1. 连接器: 连接器负责管理连接的【创建、维持、管理】以及【权限验证】。 执行SQL语句之前,客户端需要先与服务器进行连接,即: mysql -u root -p 此时客户端会与...
  • 软件的主要作用是为临床检验报告编辑、管理、统计及分析为一体辅助功能。软件还提供打印报告、数据查询、统计计算等诸多功能。软件界面美观简洁、简单全面、实用方便,无需培训,即可快速上手,轻轻松松完成日常临床...
  • 基于能量释放的电磁辐射原理,针对杨村煤矿冲击地压特点,结合该矿工程地质概况及爆破参数,阐述利用电磁辐射法对卸压爆破进行监测,通过现场试验与电磁辐射强度、脉冲数指标的监测分析,得出爆破卸压前后的电磁辐射规律...
  • 目的:评价无糖口香糖对剖宫产术后胃肠功能恢复的影响。... 结论:剖宫产咀嚼无糖口香糖可以促进胃肠功能的早期恢复,但其口香糖的副作用尚不清楚,需要更多的临床,大量的样本和高质量的研究以进一步验证。
  • R语言:数据分析

    千次阅读 2020-01-31 12:15:36
    数据分析是指用适当的统计方法对收集来的大量第一手资料和第二手资料进行分析,以求最大化地开发数据资料的功能,发挥数据的作用。 数据分析的原则 数据分析是为了验证假设的问题,需要提供必要的数据验证。分析...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 577
精华内容 230
关键字:

后验分析作用