【第十章第二节】逻辑错误漏洞
10.2 逻辑错误漏洞
- 提交订单;
- 付款。
③ 拦截HTTP/HTTPS请求,分析其参数项的含义;
④ 修改参数值,尝试触发逻辑漏洞;
⑤ 返回第②步骤,对其他功能继续测试;
简单地说,黑客挖掘逻辑漏洞有两个重点,就是业务流程和HTTP/HTTPS 请求篡改。下面将详细介绍常见的逻辑漏洞。
10.2.2 绕过授权验证
授权在网络上的意思是指,对特定资源的读写权限。通俗地讲,就是你的权限能让你做什么事情。而验证则表示你是否真的可以对这些资源进行读写。这就好比朋友在网上向你借钱,在转账时,你要求用电话确认一下,是否真的是朋友找你借钱,这就是验证。
授权问题是指访问了没有授权的资源或信息,也叫作越权。顾名思义,越权就是超越原本的权限。越权又可以分为两种:水平越权与垂直越权。接下来,将深入分析水平越权与垂直越权。
1.水平越权
例如,http://www.secbug.org 提供了用户修改资料的功能,当访问URL:
http://www.secbug.org/userinfo.action?id=2
时,将会显示自己的信息,并且可以编辑,UserInfo.java 源代码如下:
public String execute() {int id = this.user.getUserId();this.user = new UserProxy.findUserById(id);return SUCCESS;
}
这段代码并没有对ID 做任何验证,直接接收用户的ID,然后根据ID来查询用户信息。
当提交URL 为:
http://www.wecbug.org/userinfo.action?id=3
时,程序就会按部就班地执行,返回ID 为3的User 信息到页面中,这就是水平越权。
总的来说,水平越权就是相同级别(权限)的用户或者同一-角色的不同用户之间,可以越权访问、修改或者删除的非法操作。如果出现此类漏洞,那么将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改。
2.垂直越权
水平越权是相同级别的用户之间的越权操作,而垂直越权则恰恰相反,是不同级别之间或不同角色之间的越权。
垂直越权又被分为向上越权与向下越权。比如,某些网站,像发布文章、删除文章等操作是属于管理员做的事情,假设一个匿名用户也可以做相同的事情,这就叫作向上越权。
向下越权与向上越权恰恰相反,向下越权是一个高级别用户可以访问一个低级别的用户信息。这样做似乎没错,而且很多网站都是这么做的,包括低级别密码也可以被高级别用户掌控,但这样做可以说是完全错误!因为即使权限再低的用户都有他自己的隐私,可能用户为了更方便,会将自己的银行卡号与密码记录在网站中,这些信息都属于用户的隐私。
3.水平越权示例
越权漏洞中水平越权访问是最常见的,当然水平越权也包括越权删除、越权修改、越权增加等逻辑漏洞。
以任意密码的修改为例,UpDataUser.java 源码如下:
public String execute() {int id = Integer.parseInt(request.getParameter("userId"));String password = request.getParameter("password");String password2 = request.getParameter("password2");if(!("".equals(password)||"".equals(password2))){return ERROR;}if(!password.equals(password2)) {return ERROR;}User u = new UserBiz().findUserById(id); //根据ID 来获取User具体对象u.setPassword(password);boolean flag = new UserBiz().saveOrUpate(u); //更新对象if(flag){return SUCCESS;}else{return ERROR;}
}
这段代码看起来没有任何错误,而且具有较高的通用性,只要是修改密码操作,均可以使用此方法。
首先,程序将接收用户ID 以及新密码,然后根据ID 查询出用户的全部信息,再设置新密码,最后更新对象。
但这里隐含了一个非常大的逻辑漏洞,那就是任意密码的修改,现在假设有两个用户,一个用户是Admin 用户,UserID 为1。另一个用户是Guest,UserID 为2。Guest 进行密码修改时,拦截HTTP请求,HTTP请求如下:
POST /user/UpDateUser.action HTTP/1.1
Host: www.xxser.com
Accept: text/html, application/ xhtml+xml, application/xml;q=0.9, */*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko)
Referer: http:/ /www . xxser . com/user/userinfo. action
Accept-Encoding: gzip, deflate, sdch
Accept- Language: zh-CN, zh;q=0.8
Accept-Charset: GBK, utf-8;q=0.7, *;q=0.3id=2&password-myuser123&password2=myuser123
此时,ID 为2,密码为myuser123,当Guest 把用户的ID 修改为1时,Admin 用户的密码就会被修改为myuser123。程序会根据ID 查询出Admin 用户的所有信息,然后修改Admin 用户的密码。
此段代码中最大的BUG 在于程序中并没有进行二次密码验证,也就是原密码验证,如果对密码进行二次验证,则不会存在任意密码修改漏洞。
如果你希望不输入原始密码就使用该功能,可以通过Session 来实现,当用户登录成功后,就将用户信息放到Session中,当进行修改密码的操作时,将用户信息从Session 中取出即可,虽然这样可以不输入旧密码就能修改密码,但不建议这样做,因为无法确定修改密码的用户一定是本人。
4.垂直越权示例
垂直越权的漏洞也不少见,下面将以向上越权为例,分析垂直越权。
后台管理页面一般只允许管理员访问,如果普通用户可以访问,就存在向上越权漏洞。
解决向上越权是比较容易处理的事情,如果管理员表与普通用户表是同一张数据库表,就必须要存在权限验证字段,权限验证字段用来区分是否为管理员。
以Java 为例,做一个Filter即可,当用户登录后,就把此用户的信息放到Session 中,当访问设定路径时,过滤器就会判断是否是管理员。
如果不是一张表,更容易操作,在过滤器中直接取出管理员信息即可。当访问admin 路径下的资源时,将自动调用过滤器。
10.2.3 密码找回逻辑漏洞
为了防止用户遗忘密码,大多数网站都提供了找回密码功能。常见的找回密码方式有:邮箱找回密码、根据密码保护问题找回密码、根据手机号码找回密码等。虽然这些方式都可以找回密码,但实现方式各不相同。无论是哪种密码找回方式,在找回密码时,除了自己的用户密码,如果还能找回其他用户的密码,就存在密码找回漏洞。
密码找回漏洞在逻辑漏洞中占了较大的比例。测试密码找回漏洞与其他逻辑漏洞的方法相同,其中必经的两个步骤是:熟悉业务流程(密码找回过程)与对流程中的HTTP请求分析。
下面将介绍一个简单的密码找回漏洞。
http://www.xxser.com 提供了密码找回的功能,根据网页提示,可以发现业务流程为:输入注册邮箱地址→提交→收取邮件→更改密码。看起来这些步骤并没有漏洞,但有些“东西"隐藏在背后,只有抓包才能看到。在收取邮件重置链接步骤看到有一个重新发送的超链接,对此使用BurpSuite进行抓包。
此时可以猜想,网站是否根据此邮箱发送的重置密码链接。尝试修改参数为另一个邮箱(xxser@xxser.com),然后发送,发现果然发来了密码重置邮件。
这样一个任意修改密码漏洞就出现了,如果知道其他用户的邮箱,就可以更改他的密码。这个案例中最大的错误就是“重新发送”功能使用了客户端的邮箱,而程序开发人员根本没有想到,“用户”会修改隐藏在HTML中的邮箱。
10.2.4 支付逻辑漏洞
不同的功能分别对应不同的逻辑漏洞,例如,密码找回功能就对应任意修改密码的问题,查询功能可能存在越权的问题,但查询功能最多是让你看到了不该看到的资源,却不会造成一些其他的漏洞,如删除某些资源,也就是说,只与查询有关的漏洞。而支付逻辑漏洞与钱有关,那么对应的则是“刷钱”、“免费购买”等漏洞。
同样,测试支付逻辑漏洞的重点是对HTTP 请求及业务流程的分析。在前面简单介绍了支付的业务流程,接下来将详细介绍支付逻辑漏洞。
在测试支付逻辑漏洞时,也有几个侧重点,就是由用户提交的参数,如:购买数量、商品价格、折扣、运费、商品信息的中转页面、跳转到支付接口时等参数。接下来介绍几种常见的逻辑支付漏洞场景。
1.商品数量为负数
商品数量为负数的情况多数出现在有站内货币(虚拟币)的网站上,当购买一个产品时,算法一般为“购买数量X商品单价=支付金额”,但如果购买数量为负数,比如-5,那么支付金额将会为负数。下面我们来看逻辑步骤:
- ① 从Session 中取得User 对象,也就是当前用户信息。
- ② 根据User 的ID,在数据库中查询当前用户的最新信息。
- ③ 取得商品的ID,根据商品ID 查询出商品的详细信息,包括价格、总数量。
- ④ 对商品数量进行判断,如果用户购买数量大于库存数量,则跳转页面,结束购物。
- ⑤ 根据数量计算出总价格。
- ⑥ 判断用户的Money 是否大于总价格,如Moeny 不够,则跳转页面,结束购物。
- ⑦ 将用户的Money 与商品数量重置,然后保存,如果都成功,则进行下一步,否则页面跳转,结束购物。
- ⑧ 将最新的用户信息与商品信息放入Session 中。
这段代码是一个比较常见的购买流程,但却存在安全隐患,那就是用户可以“刷钱”。现在假设用户的Money 为100元,商品价格为30元,商品数量为20个。用户购买1个商品后,那么Money 就变为70元,商品数量也剩下19个,这属于正规流程。下面来看不正规的流程,也就是最常见的支付逻辑漏洞之一。
将购买数量修改为-3,然后购买,当这段Servlet 在计算价格时,并没有对负数进行验证,而是直接进行运算: 30*(-3)=-90,现在的商品价格为-90元。接下来判断用户的金额是否大于-90,这里显然是大于的,所以通过验证,进入下一环节。
有趣的事情出现了,u.setMoney(u.getMoney()-allprice)的意思是将用户的Money 进行重置,我们来算算,100-( -90)= 190,我们账户中的钱不但没有减少,反增加了90元,如果购买的商品数量越多,那么你刷的“钱”也就越多。
再来看商品的数量comm.setNumber(comm.getNumber)-number),这句代码的意思是重置商品的数量,也就是原来的商品数量减去购买的数量,为:20-(-3)=23,商品也是一样,不但没有减少,反而增加了。
2.0元购买商品
0元也能购买商品?对,你没听错。下面将介绍一种比较常见的0元商品的逻辑漏洞。
至今,大多数脚本语言都会支持异常处理机制,而异常处理机制有哪些好处呢?比如,我们的程序正在读取数据库,这时突然断网了,程序无法控制网络是否畅通,如果没有正确处理,则会产生致命的错误,可能程序都会因此而崩溃,而有了异常处理机制后,程序员可以将关键性的代码、可能会出现异常的代码块使用异常处理机制处理,即使这块代码真的出了问题,程序也不会因此问题而使整个软件崩溃,这就是异常处理。
一个存在BUG 的Main,java源码如下:
public static void main(String[] args) {Scanner sc = new Scanner (System.in) ;System.out.print ("请输入一个整数: ");String str = sC.nextLine() ; //接收键盘记录int num = Integer.parseInt (str) ; //将字符串转换为整数System.out.println("您输入的是: "+num) ;
}
当程序运行后,会提示用户输入一个整数,这时输入5,程序将会告诉你“您输入的是5”,程序看起来没有什么错误,但如果某个不规矩的用户不输入整数,而是输入“Hello”,那么程序又会怎样呢?毫无疑问,程序会崩溃,因为在Java 中尝试将一个不是数字的字 符串转为整型时,将会抛出一个致命的错误,java.lang.NumberFormatException 类型转换异常,相信这个关键字大家并不陌生,在Java 语言的SQL 注射时可能会经常遇到这个关键字。
为了避免这样的错误,可使用Java 异常处理机制,改善后的代码如下:
public static void main(String[] args) { Scanner sc = new Scanner (System.in) ;System.out.print ("请输入一个整数: ");String str = sc.nextLine(); //接收键盘记录int num = 0;try {num = Integer.parseInt (str) ; //将字符串转换为整数} catch (Exception e) {System. out.println("类型转换异常!");}System.out.println("您输入的是: " + num) ;
}
这样即使程序再出错,也不会直接崩溃。
可能有人会说:使用异常处理是比较合理的做法,怎么可能造成0元购买商品漏洞呢?请读者注意,程序的执行流程最后显示的是“您输入的是0”,程序虽然没有退出,但这个0可能会影响之后的代码执行结果。
有些支付页面会做一些这样的异常处理措施,但如果没有正确地使用异常处理,则可能会隐藏安全隐患。
逻辑漏洞的例子数不胜数,这里关键是看程序员的思维,很多程序都是闭源的,我们看不到其源码,只能“盲目”地修改HTPP请求参数测试,也就是Fuzz Testing。
常见的支付逻辑漏洞场景还有商品价格修改、物流运费修改等。
10.2.5 指定账户恶意攻击
逻辑漏洞也能恶意攻击指定账户?没错。
在一些安全性较高的网站经常会遇到以下场景:在输入密码时,不小心输入错误,系统提示“失败三次后,将锁定账户”、“您还有三次输入机会”等。
一般情况下,普通用户输入密码错误次数不会超过三次,如果超过三次,就有可能是攻击者正在尝试破解你的密码。
有人可能会说:这不正是一个很好的方案吗?可以有效地防止攻击者破解密码。但反过来想想,如果攻击者不是想入侵你的账户,而仅仅是“封锁”你的账户呢?
例如,某银行系统安全体系较高,限制用户登录,当密码输入错误次数大于5次后,则封锁账户一天,一天之内此账户无法登录。这就意味着你的银行卡号千万不要随便让别人知道。
如果碰到有心的“攻击者”每天在凌晨时刻就开始输入错误的密码,进行另类攻击,那么最终结果就是你的卡号无法使用。
在上述例子中这种“有心的”攻击者可能很少见,但如果换一个场景呢?如:商城拍卖系统,当密码连续输入错误时,就会封锁一天,那么你的竞争对手在得知你的账户之后,每天都会多次输入错误的密码,这样的结局可想而知。如果安全体系较高,必须要提供“封锁”账户的功能,那么应该怎么办呢?针对这种逻辑漏洞场景,最好的办法就是不要暴露登录账户,而对外仅仅暴露NikeName(昵称)。就像人与人交流一样,交流的时候只说名字就可以,不需要用身份证号码。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 2020.7.26 web概念的概述和HTML标签
web概念的概述和HTML web概念的概述 *JavaWeb:*使用Java语言开发基于互联网项目 *软件架构:*1、C/S架构:Client/Server 顾名思义,本地有一个客户端程序,在远程有一个服务端程序优点:用户体验好缺点:开发、安装、部署、维护麻烦*2、B/S:Browser/Server 浏览器/服务器优点…...
2024/4/10 12:17:56 - 农村谋定产业发展模式-农业大健康:特色赋能乡村多元化
农村谋定产业发展模式-农业大健康:特色赋能乡村多元化新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万赢信采编:“一些新农村建设,由于没有产业发展甚至削弱了产业发展的条件,反而使农民陷入了新的困境。尽管人们千方百计试图振…...
2024/4/20 3:26:04 - 【搭建方案】国标GB28181视频平台EasyGBS如何做到4G无线网络监控水利设施?
水利大坝等设施,关系到国计民生,稍有差池可能会殃及百姓生命财产安全,尤其是当暴雨、地震等各种自然灾害来临时,这些设施的安全更显得尤为重要。因此,监管部门对这些设施的巡查、维护及监管须得毫不放松,以平常谨小慎微之心态,防天有不测之风云。针对目前日益增长的无人…...
2024/4/20 15:26:31 - Fiddler抓包工的使用
转载于 https://www.cnblogs.com/yyhh/p/5140852.html序章Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。也可以用来检测网络安全。反正好处多多,举之不尽呀!当年学习的时候也蛮费劲,一些蛮实用隐藏的小功能用了之后就…...
2024/4/17 2:34:22 - Docker文档笔记
笔记整理来源 B站UP主狂神说Javahttps://space.bilibili.com/95256449/ <<三体>>: 弱小和无知不是生存的障碍,傲慢才是。即使再小的帆,就往死里学Docker 学习Docker 概述 Docker安装 Docker命令镜像命令 容器命令 操作命令 。。。Docker镜像 容器数据卷 DockerF…...
2024/4/10 13:24:22 - 酒店小程序制作平台哪家比较好?
微信小程序自2017年问世至今,已经三年半了,使用人数越来越多,各行各业商家也争相建立小程序。 相对的,市场上也出现了许多小程序制作平台,大大小小各不相同。 对于很多想要建立小程序的商家而言,第一步就是挑选合适的开发商,确定选择哪个制作平台比较好。 下面小编给大家…...
2024/4/28 6:01:58 - MVC Html.AntiForgeryToken() 防止CSRF攻击
转载博客:http://blog.csdn.net/cpytiger/article/details/8781457 (一)MVC Html.AntiForgeryToken() 防止CSRF攻击 MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cross-Site-Script),攻击不同…...
2024/4/10 13:24:22 - 阿里面试官问我多线程,我丝毫不慌
文章目录一、什么是多线程一、初识多线程1.1介绍进程1.2回到线程1.3进程与线程1.4并行与并发1.5Java实现多线程1.5.1继承Thread,重写run方法1.5.2实现Runnable接口,重写run方法1.6Java实现多线程需要注意的细节二、Thread类解析一、Thread线程类API1.1设置线程名1.2守护线程1…...
2024/4/27 23:11:37 - CodeForces - 1312E Array Shrinking
Solution 先放一下自己的错误代码: #include <cstdio> #include <cstring> #include <iostream> using namespace std;const int N = 505;int n, a[N], dp[N][N];int read() {int x = 0, f = 1; char s;while((s = getchar()) > 9 || s < 0) if(s == …...
2024/4/17 6:25:37 - mysql02基础命令:ddl操作
Mysql的DDL操作: 修改表名、列名、列属性、删除列语句。 1.修改表名: alter table tb_teacher rename tb_teacher1;2.添加表列:alter table tb_teacher1 add column phone varchar(18); 3.删除表列:alter table tb_teacher1 drop column phone; 4.修改表列类型:alter tabl…...
2024/4/28 4:39:31 - Java抽象类
Java抽象类一般的类都是拥有完整功能的类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法等。而抽象类是指在普通类的结构里增加抽象方法的组成部分。 那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法…...
2024/4/28 1:36:42 - flask_python_web框架源码阅读(1)
引言 还是老样子,想研究源码,从最新版看没有太大的意义,最好是从第一个版本v0.1开始看起,因为东西最少,但是涉及到的整个框架的设计思路是基本上不会变的 文章目录一些概念flaskwerkzeugwsgiweb server /web application简单了解werkzeug开始了解flask快速开发一个hello,w…...
2024/4/26 21:37:00 - JAVA基础——泛型和容器类7_27
创建HashMap对象,初始化,替换,遍历的三种方式//创建HashMap对象Map<Integer,String> map1=new HashMap <>();map1.put(001, "Andy");map1.put(001,"Cintry");//key不可以重复,value可以重复map1.put(002,"Smith");System.out.pr…...
2024/4/10 13:24:16 - listagg Oracle ,根据条件汇总某些字段,多行字段合并
我们的某些业务需要做汇总处理目标:现状:程序处理比较麻烦,这时候oracle listagg 函数就帮上忙了。可以参考一下使用方法:SELECTxzmc "cityName",listagg ( address, , ) within GROUP ( ORDER BY xzmc ) "roadList" FROMZHXT_GD_YDSJLB GROUP BYxzm…...
2024/4/24 21:28:08 - 操作系统中程序的内存结构说明
一个程序在内存上由BSS段、data段、text段三个组成的。在没有调入内存前,可执行程序分为代码段、数据区和未初始化数据区三部分。 BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存…...
2024/4/21 17:34:34 - Java学习-MySQL数据库
Java学习-MySQL数据库1.基础1.1MySQL数据库在MAC电脑上的安装1.2 数据基本概念1.3 MySQL的一些基本操作2.数据库的基本操作2.1 DDL:操作数据库、表 (CRUD)2.1.1 操作数据库2.2.2 操作表2.2 DML(增删改表中的数据)2.3 DQL:查询表中的记录2.3.1 基础查询2.3.2 排序查询2.3.3 聚…...
2024/4/27 22:48:56 - ShellEOF说明,Expect详解
文章目录一、EOF说明cat和eof结合使用具有追加功能二、Expect概述三、基本命令四、Expect语法单一分支语法多分支模式语法五、Expect执行方式直接执行嵌入执行案例一:创建用户tom,密码tom123**案例二:SSH登录案例三:FTP登录 前言 一、EOF说明 ● Shell中通常将EOF与 <<…...
2024/4/26 13:10:58 - 快速分析竞争对手的店铺的方法有哪些?
"强者生存,弱者淘汰,它是大自然的生存之道,一样适用如今市场竞争激烈的电商行业。 怎样锁定自身的竞争者,并迅速地对竞争者开展剖析,随后在剖析后制订有关的对决对策,在经营店面的全过程中就至关重要。 假如连自身都不清楚自身的店面和市场定位,那麼你要沒有宣战就…...
2024/4/10 13:24:11 - cmd命令大全
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) chcp 修改默认字符集 chcp 936默认中文 chcp 65001 1. appwiz.cpl:程序和功能 2. calc:启动计算器 5. chkdsk.exe:Chkdsk磁盘检查(管理员身份运行命令提示符) 6. cleanmgr: …...
2024/4/19 9:17:40 - Spring 常见注解原理和自定义@interface注解
一、认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,现在已经有不少的人开始用注解了,注解是JDK1.5之后才有的新…...
2024/4/21 4:46:12
最新文章
- 【Flutter】GetX
前言 状态管理 / 路由管理 / 依赖管理 这三部分之间存在联系 参考文章 建议看官网文章,很详细 ,pub.dev搜索get pub.dev的文档 状态管理文章相关链接 状态管理 案例 实现一个计算器,运用GetX去管理它 构建界面 构建一个计算器界面 …...
2024/4/28 8:48:36 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 8卡微调Grok-1实战教程
本文是根据魔搭社区推出的轻量级训练推理工具SWIFT微调实战教程。SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning)是一套基于PyTorch的轻量级、开箱即用的模型微调、推理框架,让AI爱好者能够轻松地在消费级显卡上运行大模型和AI…...
2024/4/27 12:27:41 - Django实现的登录注册功能
1 前言 在Web开发中,用户登录和注册是最基本且必不可少的功能。Django,作为一个高级的Python Web框架,为我们提供了强大的工具和库来快速实现这些功能。下面,我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …...
2024/4/23 6:25:06 - Android Framework学习笔记(2)----系统启动
Android系统的启动流程 启动过程中,用户可控部分是framework的init流程。init是系统中的第一个进程,其它进程都是它的子进程。 启动逻辑源码参照:system/core/init/main.cpp 关键调用顺序:main->FirstStageMain->SetupSel…...
2024/4/26 21:26:41 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/4/28 4:04:40 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/4/27 3:39:11 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/4/27 12:24:35 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/4/27 12:24:46 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/4/27 3:39:08 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/4/27 3:39:07 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/4/27 3:39:07 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/4/27 12:44:49 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/4/27 21:08:20 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/4/26 22:35:59 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/4/27 18:40:35 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/4/28 4:14:21 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/4/27 13:52:15 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/4/27 13:38:13 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/4/27 1:03:20 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/4/27 3:22:12 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/4/27 22:51:49 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/4/28 7:31:46 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/4/28 8:32:05 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/4/27 20:28:35 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57