精华内容
下载资源
问答
  • 目标函数常见解法

    千次阅读 2018-12-12 20:27:06
    如何求解目标函数 简介 相信大家在写程序的时候,尤其是一些机器学习算法的时候,都会遇到将自己的目标函数使用矩阵形式表达的情况。...此外,本文还包括一些常见的矩阵形式的目标函数的解法。 ...

    如何求解目标函数

    简介

    相信大家在写程序的时候,尤其是一些机器学习算法的时候,都会遇到将自己的目标函数使用矩阵形式表达的情况。大多数时候,我们写目标函数都是以\sum的形式递归的计算,但是写程序的时候一般输入都是所有的数据,如numpy储存的数组,因此需要转化为矩阵形式。这里简单介绍一下常用的方法以及函数(tensorflow),希望有所收获。

    此外,本文还包括一些常见的矩阵形式的目标函数的解法。

    常用函数

    1:numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)

    numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)[source]
    
    '''
       Parameters:	
                x : array_like Input array. If axis is None, x must be 1-D or 2-D.
    
                ord : {non-zero int, inf, -inf, ‘fro’, ‘nuc’}, optional Order of 
                      the norm (see table under Notes). inf means numpy’s inf object.
    
                axis : {int, 2-tuple of ints, None}, optional  If axis is an integer, it             
                       specifies the axis of x along which to compute the vector norms. 
                       If axis is a 2-tuple, it specifies the axes that hold 2-D matrices, 
                       and the matrix norms of these matrices are computed. If axis is None 
                       then either a vector norm (when x is 1-D) or a matrix norm (when x 
                       is 2-D) is returned.
    
                keepdims : bool, optional If this is set to True, the axes which are normed 
                           over are left in the result as dimensions with size one. With this 
                           option the result will broadcast correctly against the original x.
    
    
      Returns:	
                n : float or ndarray
    '''

    tf.linalg.norm主要用于计算向量的范数。上面的代码摘抄自numpy官网https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.norm.html,仅仅看注释还是很难理解每个参数的定义,下面我简单在介绍一下:

    X是输入,一般就是一个多维的ndarray,ord代表范数的类型,axis代表怎么看待每一个向量,axis=1表示按行向量处理,求多个行向量的范数;axis=0表示按列向量处理,求多个列向量的范数;axis=None表示矩阵范数。keepdims代表是否保持结果维度不变。

    这里主要根据一个例子说明上面几个属性的作用:

    np.linalg.norm(x)使用的ord=None,axis=None,keepdim=False说明做的是矩阵二范数(默认),sqrt(0^2+3^2+4^2+1^2+6^2+4^2)=8.83,与结果比较可以看出是正确的。

    当使用axis=1时,代表按行向量处理,因此计算[0,3,4]和[1,6,4]的二范数,分别是5和7.28.

    当使用axis=0时,代表按列向量处理,因此存在三个向量[0,1],[3,6],[4,4],因此可以得到对应的三个值。

    1.1 欧氏距离

    使用上面的函数可以求解各类距离函数,如欧式距离,python代码如下:

    def calc_l2_norm(feature1, others):
        diffs = feature1 - others
        dists = np.linalg.norm(diffs, axis=1)
        return dists

    上面的函数中feature1代表一个n维的数据,others代表1个或者多个n维的数据,上面的函数可以计算feature1和所有others的欧氏距离。

    1.2 汉明距离

    def calc_hammingDist(request, retrieval_all):
        K = retrieval_all.shape[1]
        distH = 0.5 * (K - np.dot(request, retrieval_all.transpose()))
        return distH

    汉明距离可以近似使用内积进行替换,如下公式,那么使用内积进行计算的汉明距离公式如上。

    1.3 余弦距离

    def calc_cosineDist(request, retrieval_all):
        numerator = np.dot(request, retrieval_all.transpose())
        denominator = np.linalg.norm(request) * np.linalg.norm(retrieval_all, axis=1)
        return numerator/denominator

    上面的公式不能解决0/0的问题,当0/0的时候结果是nan,因此需要做一些处理:

    ​
    def calc_cosineDist(request, retrieval_all):
        numerator = np.dot(request, retrieval_all.transpose())
        denominator = np.linalg.norm(request) * np.linalg.norm(retrieval_all, axis=1)
        index = [idx for idx in np.where(numerator == 0)[0] if np.where(denominator == 0)[0]]
        result[index] = 1
    return result

     其中第三行的公式就是将分子,分母都是0的结果置为1,因此分为为0肯定存在有至少一个向量的模长为0,也就是0向量,所以分子肯定也为0。

    2:tf.reduce_sum()

    tf.reduce_sum(
        input_tensor,
        axis=None,
        keepdims=None,
        name=None,
        reduction_indices=None,
        keep_dims=None
    )
    '''
        Args:
            input_tensor: The tensor to reduce. Should have numeric type.
            axis: The dimensions to reduce. If `None` (the default),
                  reduces all dimensions. Must be in the range
                  '[-rank(input_tensor), rank(input_tensor))'.
            keepdims: If true, retains reduced dimensions with length 1.
            name: A name for the operation (optional).
            reduction_indices: The old (deprecated) name for axis.
            keep_dims: Deprecated alias for `keepdims`.
        Returns:
            The reduced tensor, of the same dtype as the input_tensor.
    
        Example:
            x = tf.constant([[1, 1, 1], [1, 1, 1]])
            tf.reduce_sum(x)  # 6
            tf.reduce_sum(x, 0)  # [2, 2, 2]
            tf.reduce_sum(x, 1)  # [3, 3]
            tf.reduce_sum(x, 1, keepdims=True)  # [[3], [3]]
            tf.reduce_sum(x, [0, 1])  # 6
    '''

    3:矩阵的迹

    矩阵的点积(element-wise multiply)可以写成矩阵相乘的迹的形式,注意这里是矩阵的转置相乘的结果。

    因为矩阵的F范数的平方等于矩阵每个元素的平方和,所以也可以写成矩阵的迹的形式。对于向量来说,我们已经知道向量x的二范数的平方等于x'x,其中x'代表x的转置。因此,遇到上述的对应位置元素相乘的式子,可以转化为矩阵的迹的形式。

    4:矩阵的逆

    求矩阵的逆需要大约O(N^{3})的时间复杂度,但是存在一种特殊的矩阵,也就是正交矩阵,正交阵的逆矩阵等于矩阵的转置。

    除此之外,存在一些关于矩阵的重要性质:

    实对称矩阵的特征向量相互正交;

    实对称矩阵是半正定的; 

    5:F范数

    目标函数里面可能存在F范数,如果要对目标函数求梯度的话,可以首先转化为Tr()迹的形式,然后根据求导法则进行求导。

    参考:

    https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.norm.html

    https://blog.csdn.net/hqh131360239/article/details/79061535

    https://www.cnblogs.com/devilmaycry812839668/p/9352814.html

    https://blog.csdn.net/txwh0820/article/details/46392293

    6:one-hot向量

    one-hot编码的意思很简单,就是一个c维的向量,只存在一位是1,其余维都为0。举个简单的例子,如果想要分类MNIST手写体数字的话,我们可以为每一张图像生成一个label,该label就是one-hot形式的,如果该数字是2,那么one-hot编码为{0,0,1,0,0,0,0,0,0,0}。假设现在存在y∈(0,1)^{c},X∈R^{n*c},那么Xy = X_{k},满足y_{k} = 1。换句话说,如果对于一个c维的列向量y,它的第k位是1,那么一个矩阵X乘以y的结果就是X的第k列。

    7:Orthogonal Procrustes problem

    关于该问题的描述,请查看https://en.wikipedia.org/wiki/Orthogonal_Procrustes_problem,简单的说,就是要找到一个正交基,使得一个将某个矩阵A进行一个变换之后,去和另一个矩阵B对其。

    上面的公式就是该问题的一般描述。这里,我说一下该问题的实际用处,如下是哈希编码学习的一个目标函数:

    其中V是连续域R下的矩阵,B是{0,1}的哈希编码矩阵,V∈R^{n*d}​​​​​​, B∈(0,1)^{n*k},希望找到一个正交的矩阵R使得B和V尽可能的一致,该问题的解法就是:

    M = BA^{T},使用SVD分解M,结果R=UV^{T}

    参考:

    https://en.wikipedia.org/wiki/Orthogonal_Procrustes_problem

    8:tf.matmul和tf.multiply的区别

    很多算法需要用到矩阵的乘法,如果你使用的是tensorflow作为深度学习框架的话,就离不开tf.matmul和tf.multiply,他们的区别主要在于tf.multiply只能应用element-wise的乘法上,也就是元素之间的乘法,而tf.matmul适用于矩阵乘法,详情看如下代码:

    import tensorflow as tf
    import numpy as np
    
    # matmul
    inputs = tf.placeholder(tf.int32,[2,3])
    inputs2 = tf.placeholder(tf.int32, [3,1])
    result = tf.matmul(inputs, inputs2)
    temp = np.array([[1,2,3],[4,5,6]])
    temp2 = np.ones((3,1))
    
    
    with tf.Session() as sess:
        print(sess.run(result, feed_dict={inputs:temp, inputs2:temp2}))

    结果:

     

     

    import tensorflow as tf
    import numpy as np
    
    # multiply
    inputs = tf.placeholder(tf.int32,[2,3])
    inputs2 = tf.placeholder(tf.int32, [3,1])
    result = tf.multiply(inputs, inputs2)
    temp = np.array([[1,2,3],[4,5,6]])
    temp2 = np.ones((3,1))
    
    
    with tf.Session() as sess:
        print(sess.run(result, feed_dict={inputs:temp, inputs2:temp2}))

    结果:

    换成dimension一致之后:

     

    import tensorflow as tf
    import numpy as np
    
    # multiply
    inputs = tf.placeholder(tf.int32,[2,3])
    inputs2 = tf.placeholder(tf.int32, [2,3])
    result = tf.multiply(inputs, inputs2)
    temp = np.array([[1,2,3],[4,5,6]])
    temp2 = np.ones((2,3))
    
    
    with tf.Session() as sess:
        print(sess.run(result, feed_dict={inputs:temp, inputs2:temp2}))

    结果:

     

     

    展开全文
  • 常见漏洞类型汇总

    万次阅读 2018-11-06 16:33:57
    XSS类型包括:    (1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如...

    一、SQL注入漏洞

     

            SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。

     

           通常情况下,SQL注入的位置包括:

     

         (1)表单提交,主要是POST请求,也包括GET请求;

     

         (2)URL参数提交,主要为GET请求参数;

     

         (3)Cookie参数提交;

     

         (4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等;

     

         (5)一些边缘的输入点,比如.mp3文件的一些文件信息等。

     

          SQL注入的危害不仅体现在数据库层面上,还有可能危及承载数据库的操作系统;如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不局限于:

     

          (1)数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。作为数据的存储中心,数据库里往往保存着各类的隐私信息,SQL注入攻击能导致这些隐私信息透明于攻击者。

     

          (2)网页篡改:通过操作数据库对特定网页进行篡改。

     

          (3)网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

     

          (4)数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被篡改。

     

          (5)服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

     

          (6)破坏硬盘数据,瘫痪全系统。

     

             解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。 通常使用的方案有:

     

           (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。

     

           (2)对进入数据库的特殊字符('"\<>&*;等)进行转义处理,或编码转换。

     

           (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。

     

           (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。

     

            (5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。

     

            (6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。

     

            (7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

     

            (8)在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。

     

    二、跨站脚本漏洞

           

               跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。

     

               XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。

     

              XSS类型包括:

     

            (1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。

     

            (2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的Javascript代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。

     

            (3)DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。

     

               XSS的危害包括:

     

            (1)钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。

     

            (2)网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。

     

            (3)身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。

     

            (4)盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。

     

            (5)垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。

     

            (6)劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。

     

            (7)XSS蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。

     

             常用的防止XSS技术包括:

     

            (1)与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。

     

            (2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。

     

             (3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

     

             (4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

     

             (5)在发布应用程序之前测试所有已知的威胁。

     

    三、弱口令漏洞

     

              弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则:

     

           (1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。

     

           (2)口令长度不小于8个字符。

     

            (3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。

     

            (4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。

     

            (5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。

     

           (6)口令不应该为用数字或符号代替某些字母的单词。

     

           (7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。

     

            (8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。

     

    四、HTTP报头追踪漏洞

     

            HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头很可能包括Session Token、Cookies或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE请求可以通过客户浏览器脚本发起(如XMLHttpRequest),并可以通过DOM接口来访问,因此很容易被攻击者利用。

     

            防御HTTP报头追踪漏洞的方法通常禁用HTTP TRACE方法。

     

    五、Struts2远程命令执行漏洞

     

            Apache Struts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。

     

            网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD处置过诸多此类漏洞,例如:“GPS车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934);Aspcms留言本远程代码执行漏洞(CNVD-2012-11590)等。

     

            修复此类漏洞,只需到Apache官网升级Apache Struts到最新版本:http://struts.apache.org

     

    六、框架钓鱼漏洞(框架注入漏洞)

     

            框架注入攻击是针对Internet Explorer 5、Internet Explorer 6、与 Internet Explorer 7攻击的一种。这种攻击导致Internet Explorer不检查结果框架的目的网站,因而允许任意代码像Javascript或者VBScript跨框架存取。这种攻击也发生在代码透过多框架注入,肇因于脚本并不确认来自多框架的输入。这种其他形式的框架注入会影响所有的不确认不受信任输入的各厂商浏览器和脚本。

     

            如果应用程序不要求不同的框架互相通信,就可以通过完全删除框架名称、使用匿名框架防止框架注入。但是,因为应用程序通常都要求框架之间相互通信,因此这种方法并不可行。 因此,通常使用命名框架,但在每个会话中使用不同的框架,并且使用无法预测的名称。一种可行的方法是在每个基本的框架名称后附加用户的会话令牌,如main_display。

     

    七、文件上传漏洞

     

             文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。

     

            因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。

     

    八、应用程序测试脚本泄露

            由于测试脚本对提交的参数数据缺少充分过滤,远程攻击者可以利用洞以WEB进程权限在系统上查看任意文件内容。防御此类漏洞通常需严格过滤提交的数据,有效检测攻击。

     

    九、私有IP地址泄露漏洞

     

            IP地址是网络用户的重要标示,是攻击者进行攻击前需要了解的。获取的方法较多,攻击者也会因不同的网络情况采取不同的方法,如:在局域网内使用Ping指令,Ping对方在网络中的名称而获得IP;在Internet上使用IP版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者可以找到并直接通过软件解析截获后的数据包的IP包头信息,再根据这些信息了解具体的IP。

     

            针对最有效的“数据包分析方法”而言,就可以安装能够自动去掉发送数据包包头IP信息的一些软件。不过使用这些软件有些缺点,譬如:耗费资源严重,降低计算机性能;访问一些论坛或者网站时会受影响;不适合网吧用户使用等等。现在的个人用户采用最普及隐藏IP的方法应该是使用代理,由于使用代理服务器后,“转址服务”会对发送出去的数据包有所修改,致使“数据包分析”的方法失效。一些容易泄漏用户IP的网络软件(QQ、MSN、IE等)都支持使用代理方式连接Internet,特别是QQ使用“ezProxy”等代理软件连接后,IP版的QQ都无法显示该IP地址。虽然代理可以有效地隐藏用户IP,但攻击者亦可以绕过代理,查找到对方的真实IP地址,用户在何种情况下使用何种方法隐藏IP,也要因情况而论。

     

    十、未加密登录请求

     

            由于Web配置不安全,登陆请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者可以窃听网络以劫获这些敏感信息。建议进行例如SSH等的加密后再传输。

     

    十一、敏感信息泄露漏洞

     

           SQL注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。针对不同成因,防御方式不同。

    展开全文
  • 网络爬虫的几种常见类型

    千次阅读 2019-06-15 14:07:00
    1.批量型网络爬虫:限制抓取的属性,包括 抓取范围,特定目标,限制抓取时间,限制数量以及相知抓取页面,总之明显的特征就是受限, 2.增量网络爬虫(通用爬虫):与前者相反,没有固定的限制,无休无之直到抓取万...

    常见的优秀网络爬虫有一下几种类型:

    1.批量型网络爬虫:限制抓取的属性,包括 抓取范围,特定目标,限制抓取时间,限制数量以及相知抓取页面,总之明显的特征就是受限,

    2.增量网络爬虫(通用爬虫):与前者相反,没有固定的限制,无休无之直到抓取万所有的数据,这种类型一般用于搜索引擎的网站或程序。

    3.垂直网络爬虫(聚焦爬虫):简单的可以理解为一个无限西华的增量网络爬虫,可以细致的对诸如行业,内容,发布时间,页面大小等很多因素进行筛选。

    这些爬虫的功能不一,使用的方法也不同,例如谷歌,百度搜索就使用的增量爬虫,提供大而全的内容雷满足世界各地的用户,另外,天猫,京东很多店铺需要屏蔽外来的抓取,这时就需要爬虫爬虫根据一些低级域名的连接来抓取他们进行排名。

    转载于:https://www.cnblogs.com/jcjc/p/11027433.html

    展开全文
  • oracle常见的故障类型

    千次阅读 2014-03-07 13:40:10
    故障类别 全面了解故障类型及如何恢复 语句错误:单个数据库操作(选择、插入、更新或删除)失败。 用户进程错误:单个数据库会话失败。 介质故障:丢失了一个或多个数据库文件(也就是说,文件已删除或磁盘...

    数据库故障的几种类型:

    对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障,

    而DBA主要任务就是维持数据库的高可靠性运行, 

        尽量提高数据库的连续可用时间

        降低数据库的平均恢复时间

        最小化故障时的数据损失及业务影响

    在数据库环境中,常见故障类型:

    语句失败用户进程失败用户错误实例失败介质故障网络故障

    其中最为严重的故障主要是用户错误介质故障

    为了防止种种故障可能造成的数据损失,oracle提供了不同手段来进行数据备份,通过制定完善的备份策略,可以最小化数据损失。


    部分工作内容 

    数据库管理员 (DBA) 的目标是确保数据库处于打开状态,从而当用户需要时可提供使用。

    要实现这个目标,DBA 需要(通常与系统管理员合作): 

    1.预计导致出现故障的常见原因并努力避免出现这些原因 
    2.努力提高平均故障间隔时间 (MTBF),确保硬件尽量可靠,也就是通过冗余方式保护关键组件,定期执行操作系统维护。3.Oracle 数据库提供了用于提高 MTBF 的高级配置选项,其中包括: 
    Real Application Clusters
    Streams
    4.减少平均恢复时间 (MTTR),提前确定恢复过程方案并配置备份,以便在需要时随时可用 

    5.最大程度地减少丢失数据。 

    DBA 可按照接受的最佳方案配置数据库,以便永远不丢失提交的事务处理。用于帮助保证实现此目标的具体项包括: 

    归档日志文件

    备用数据库和 Oracle Data Guard


    故障类别 -----可分为以下几类: 

    语句错误单个数据库操作(选择、插入、更新或删除)失败。 

    用户进程错误:单个数据库会话失败。 

    网络故障:与数据库的连接断开。 

    用户错误:用户成功完成了操作,但是操作不正确(删除了表,或输入了错误 数据)。 

    实例错误:数据库实例意外关闭。 

    介质故障:丢失了一个或多个数据库文件(也就是说,文件已删除或磁盘出现了 故障)。 



    1. 语句错误:     ----- 可能需要DBA干预,才能更改用户权限

    尝试在表中输入无效的数据   --------- 通过用户验证更正数据

    尝试在权限不足时执行操作   --------- 提供适当的对象或系统权限

    尝试分配未成功分配的空间   --------- 启用可恢复的空间分配 、 增加所有者限额quota 、 添加表空间的空间

    应用程序中的逻辑错误     ---------- 与开发人员合作更正程序错误


    2. 用户进程错误:       ---通常不需要DBA操作,观察变化趋势

    与实例异常断开的用户进程中可能包含正在进行的、需要回退的未提交任务。

    为了确保服务器进程会话仍保持连接,进程监视程序(PMON)后台进程会查询服务器进程。

    如果PMON发现某个服务器进程的用户不再处于连接状态,PMON会从任何实时事务处理中进行恢复;

    还会回退未提交的更改并解除失败会话持有的任何锁定。

    DBA工作:

    从用户进程失败中进行恢复时不需要DBA的干预,但是管理员必须观察变化趋势。

    有一个或两个用户异常断开时不必担心。用户进程失败比例不高时也属正常

    一致性故障和系统性故障表示还存在其他的问题。

    异常断开连接比例较高时可能表示用户需要了解如何注销程序,此外,还可能存在网络和应用程序问题

    用户执行了异常断开连接操作

    用户会话已异常终止

    用户遇到了终止会话的程序错误    


    3. 网络故障

    最佳解决方法: 为网络连接提供冗余路径。通过备份监听程序、网络连接和网络接口卡可降低出现网络故障时影响系统可用性的可能性。

    监听程序失败     ------ 配置备份监听程序和连接时故障转移

    网络接口卡(NIC)故障      ------ 配置多个网卡

    网络连接失败        ----- 配置备份网络连接


    4. 用户错误

    用户可能会无意删除或修改数据。如果发生这种情况,DBA 可能需要帮助用户从错误中恢复。

    如果用户尚未提交或退出程序,则只可以回退操作。

    如果用户提交了更改,则可以使用闪回查询来确定以前的值是什么(然后,为还原原始信息而更新数据): 


    SQL> SELECT salary FROM employees WHERE employee_id=100;
    SALARY
    ------
    25
    SQL> SELECT salary FROM employees
    2    AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL’10’ minute)
    3    WHERE employee_id=100;
    SALARY
    ------
    24000


    在因超出了还原保留期而无法使用闪回查询的情况下,DBA 仍可通过使用 Oracle LogMiner 来恢复原始信息。


    用户无意中删除或修改了数据 ---------- 回退或使用闪回查询进行恢复

    用户删除了表    --------- 从回收站恢复表


    5. 实例错误            startup 启动通过alert日志调查出错原因。

    如果在同步所有数据库文件之前关闭了数据库实例,就会发生实例错误。出现软硬件故障,或者使用SHUTDOWN ABORT 和 STARTUP FORCE紧急关闭命令时,也会发生实例错误。

    管理员在实例错误恢复中参与的工作,通常仅限于重新启动实例和努力避免将来发生这种情况。

    断电                                                                        使用“startup”命令重新启动实例。从实例错误中

    硬件故障恢复时是自动执行的,其中包括前滚重做日志中的

    有一个后台进程出现错误的更改和回退任何未提交的事务处理。

    紧急关闭命令                              


    6. 介质故障

    oracle corporation 将介质故障定义为导致一个或多个数据库文件(数据文件、控制文件或重做日志文件)丢失或损坏的任何故障。

    要从介质故障中恢复,需要还原并恢复缺失的文件。

    · 磁盘驱动器故障 1. 从备份中还原受影响的文件。

    · 磁盘控制器故障 2. 如果需要,通知数据库关于新文件的位置。

    · 删除或损坏了数据库文件3. 如果需要,通知应用重做信息来恢复文件。



    oracle进行备份的需要了解的知识:

    oracle实例恢复 详解理论知识:http://blog.csdn.net/wanghui5767260/article/details/20769321

    oracle四个重要的后台进程(DBWR / LGWR / ARCH / CKPT):http://blog.csdn.net/wanghui5767260/article/details/20715809

    oracle物理备份和逻辑备份理解:http://blog.csdn.net/wanghui5767260/article/details/20627639


    展开全文
  • 常见软件测试类型分类

    万次阅读 2018-09-20 09:48:05
    软件测试类型 1)回归测试 回归测试: (regression testing): 回归测试有两类:用例回归和错误回归;用例回归是过一段时间以后再回头对以前使用过的用例在重新进行测试,看看会重新发现问题。错误回归,就是在新...
  • 4、Object and HEX Files目标和Hex类型文件; 5、Build Files编译类型文件; 6、Debugger Files调试类型文件; 7、Other Files其他类型文件。   下面章节会将 常见 的一些文件类型做详细说明。 ...
  • 常见网络爬虫的类型

    万次阅读 2018-10-15 11:57:00
     爬取目标资源在全互联网中,爬取目标数据巨大。对爬取性能要求非常高。应用于大型搜索引擎中,有非常高的应用价值。 通用网络爬虫的基本构成:初始URL集合,URL队列,页面爬行模块,页面分析模块,页面数据库,...
  • 常见的网络攻击类型

    万次阅读 2014-09-30 09:39:30
    常见的网络攻击类型  概括来说分四大类:服务拒绝攻击、利用型攻击、信息收集型攻击、假消息攻击。   1、服务拒绝攻击   服务拒绝攻击企图通过使你的服务计算机崩溃或把它压跨来阻止你提供服务,服务...
  • 标识符:用来标识程序中用到的变量名、函数名、类型名、数组名、文件名以及符号常量名的有效字符序列。 语法规则(部分): 标识符只能是由英文字母、数字和下划线组成的字符串,并且第一个字符必须为字母或下划线...
  • 常见黑客攻击类型

    万次阅读 2006-11-19 14:23:00
     1.5.2 常见黑客攻击类型虽然黑客攻击的手法多种多样,但就目前来说,绝大多数中初级黑客们所采用的手法和工具仍具有许多共性。从大的方面来划分的话,归纳起来一般不外乎以下几种:1. 网络报文嗅探网络嗅探其实...
  • 物联网常见的无线传输协议类型

    万次阅读 2018-03-05 15:38:04
    导读: “物联网”概念在1999年美国麻省理工学院首次被提出,狭义的物联网指的是“物—物相连的互联网”,这里相连的主体既包括物品到物品,也包括物品到识别管理设备。“物联网”概念在1999年美国麻省理工学院首次...
  • 基于深度学习的实时目标...主要采用yolov3进行32种常见目标检测 (模型可根据自己的需要进行定制替换,软件和软件源代码可以重复使用) 下载地址:https://download.csdn.net/download/cuihao1995/15909861 ...
  • 常见的几种acl类型

    千次阅读 2012-04-21 14:48:29
    dst 用户访问的目标主机或IP段 port 用户访问的目标端口 srcdomain 客户端地址来源 dstdomain 用户访问的目标域 time 时间段 每天的首字母表示 maxconn 客户端的并发http数 url_regex 完整URL匹配 -i忽略大小...
  • // 获得切入目标对象 Object target = pjp.getThis(); // 获得切入的方法 Method method = ((MethodSignature) pjp.getSignature()).getMethod(); // 执行校验,获得校验结果 Set...
  • 目录 OpenCV3.42+VS2017配置 ... “fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突”的问题解决   OpenCV3.42+VS2017配置 https://opencv.org/releases.html 下载 opencv-3.4.2...
  • 产品路线图是战略规划的结果,它通常包括以下要点: 产品愿景 - 您希望您的产品在未来成为什么样的产品。 战略 - 执行计划,详细说明贵公司将如何实现愿景。 目标 - 可以通过特定指标衡量的有时限的目标。 倡议 - ...
  • LSA(Link-State Advertisement,链路状态广播)是链接状态协议使用的一个分组,它包括有关邻居和通道成本的信息。 LSAs 被路由器接收用于维护它们的 RIB(路由表)。 OSPF 路由协议是链路状态型路由协议,这里的...
  • 设计改进的遗传算法进行求解,包括设计编码方案、初始化种群、制定解码方案、确定适应度函数、设计遗传算子、设定参数以及确定终止条件这几个步骤。 部分程序: % Author:  怡宝 2 号 % Use:  基于遗传...
  • 深度学习之目标检测与目标识别

    万次阅读 多人点赞 2018-06-05 21:58:54
    本文主要讲述了目标识别中的第一种类型---基于region proposal的目标检测和目标识别的算法, 主要主要包括R-CNN,Fast R-CNN,Faster R-CNN等网络, 揭示了基于region proposal的目标检测和目标识别的算法的发展历程....
  • 原因:   父类没有virtual的析构函数...   CConfig的父类IConfig没有加virtual析构函数, 而且我用的时候是shared_ptr&lt;IConfig&...这么用的....反正给IConfig加上virtual析构函数就行了 ...
  • 目标优化问题概述

    万次阅读 2017-08-29 20:34:16
    图片不清楚请看多目标问题详解:多目标问题详解 定义:若干冲突或相互影响条件约束下在给定区域内寻找尽可能的最优解(非劣解)。 关键词:条件约束,折中最优解(解并非唯一是与单目标优化问题的本质区别) 文字...
  • 目标跟踪入门

    万次阅读 多人点赞 2019-01-02 22:17:28
    视觉目标(单目标)跟踪任务就是在给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。 输入初始化目标框,在下一帧中产生众多候选框(Motion Model),提取这些候选框的特征...
  • mysql varchar类型转换int类型

    千次阅读 2019-03-06 14:07:44
    CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。 语法:CAST (expression AS data_type) 可以转换的类型是有限制的。这个类型可以是以下值其中的一个: 二进制,同带binary前缀的...
  • ● withpath — 是否输出该notify命令的路径(包括沿流关系),默认为false 二. 三板斧 – package, file, service 之所以叫三板斧,自然是因为这三类资源最为常用,大部分日常管理工作都可以借此完成。 首先是一个...
  • 之前我所在的公司七月在线开设的深度学习等一系列课程经常会讲目标检测,包括R-CNN、Fast R-CNN、Faster R-CNN,但一直没有比较好的机会深入(但当你对目标检测有个基本的了解之后,再看这些课程你会收益很大)。...
  • C++ 类型转换

    千次阅读 多人点赞 2017-08-17 19:03:25
    隐式类型转换 1 数值类型转换 2 指针类型转换 ...C++类型转换大体上包括隐式类型转换和显式类型转换。1. 隐式类型转换隐式类型转换是自动执行的,无需显式的操作符。 隐式类型转换发生在很多地方,比如函数
  • Access表数据类型/字段类型

    千次阅读 2019-02-20 19:52:41
    数据类型对于初学者来说不太会选择,例如,如果某个字段的数据类型是文本,那么它可存储包括文本或数值字符的数据。但数据类型为数字的字段却只能存储数值数据。因此,必须了解每种数据类型所用的属性。 表格中的...
  • 【深度学习】目标检测算法 YOLO 最耐心细致的讲解

    万次阅读 多人点赞 2018-12-04 20:43:50
    YOLO 是 You only look once 几个单词的缩写,大意是你看一次就可以预测了,灵感就来自于我们人类自己,因为人看一张图片时,扫一眼就可以得知这张图片不同类型目标的位置。 YOLO 胜在它的简单与快速。 YOLO 是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 724,359
精华内容 289,743
关键字:

常见的目标类型包括