sql注入/xss/csrf防御方法笔记
SQL注入
1.简介
SQL注入是比较常见的网络攻击方式之一,主要是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,实现无帐号登录,甚至篡改数据库。
2.SQL注入的危害
数据库信息泄漏:数据库中存放的用户的隐私信息的泄露;网页篡改:通过操作数据库对特定网页进行篡改;数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改;服务器被远程控制,被安装后门;删除和修改数据库表信息.
3.SQL注入的方式
通常情况下,SQL注入的位置包括:
表单提交,主要是POST请求,也包括GET请求;URL参数提交,主要为GET请求参数;Cookie参数提交;HTTP请求头部的一些可修改的值,比如Referer、User_Agent等;
4.防止SQL注入的解决方案
1)采用预编译语句集PreparedStatement
2)对用户的输入进行校验,使用正则表达式过滤传入的参数;
检测SQL meta-characters的正则表达式 :
/(%27)|(\’)|(--)|(%23)|(#)/ix
修正检测SQL meta-characters的正则表达式 :/((%3D)|(=))[^\n]((%27)|(\’)|(--)|(%3B)|(😃)/i
典型的SQL 注入攻击的正则表达式 :/\w((%27)|(\’))((%6F)|o|(%4F))((%72)|r|(%52))/ix
检测SQL注入,UNION查询关键字的正则表达式 :/((%27)|(\’))union/ix(%27)|(\’)
检测MS SQL Server SQL注入攻击的正则表达式:
/exec(\s|+)+(s|x)p\w+/ix
3)字符串过滤
比较通用的一个方法:
(||之间的参数可以根据自己程序的需要添加)
public static boolean sql_inj(String str){
String inj_str = “’|and|exec|insert|select|delete|update|
count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,”;
String inj_stra[] = split(inj_str,"|");
for (int i=0 ; i < inj_stra.length ; i++ ){
if (str.indexOf(inj_stra[i])>=0){
return true;
}
}
return false;
}
4)jsp中调用该函数检查是否包函非法字符
防止SQL从URL注入:
sql_inj.java代码:
package sql_inj;
import java.net.*;
import java.io.*;
import java.sql.*;
import java.text.*;
import java.lang.String;
public class sql_inj{
public static boolean sql_inj(String str){
String inj_str = "'|and|exec|insert|select|delete|update|
count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,";
//这里的东西还可以自己添加
String[] inj_stra=inj_str.split("\\|");
for (int i=0 ; i < inj_stra.length ; i++ ){
if (str.indexOf(inj_stra[i])>=0){
return true;
}
}
return false;
}
}
5)JSP页面判断代码
使用javascript在客户端进行不安全字符屏蔽
功能介绍:检查是否含有”‘”,”\”,”/”
参数说明:要检查的字符串
返回值:0:是1:不是
函数名是
function check(a){
return 1;
fibdn = new Array (”‘” ,”\”,”/”);
i=fibdn.length;
j=a.length;
for (ii=0; ii<i; ii++)
{ for (jj=0; jj<j; jj++)
{ temp1=a.charAt(jj);
temp2=fibdn[ii];
if (tem’; p1==temp2)
{ return 0; }
}
}
return 1;
}
6)使用参数化语句,不要拼接sql,也可以使用安全的存储过程;
PHP中的参数化语句PHP有三种用于数据库访问的框架,访问MySQL的mysqli包,PEAR::MDB2包及PDO(PHP Database Object)
① mysqli包适用于PHP5.x,可以访问MySQL 4.1+的版本
$con = new mysqli("localhost","username","password","dbname");
$sql = "select * from users where username=? and password=?";
$cmd = $con->prepare($sql);
$cmd->bind_param("ss", $username, $password);
$cmd -> execute();
② PHP使用PostgreSQl数据库
$result = pg_query_params("select * from users where username=$1 and password=$2", Array($username, $password));
//开发人员可以在同一行代码提供SQL查询和参数
③ PEAR::MDB2支持冒号字符参数和问号占位符两种方式定义参数
$mdb2 = & MDB2::factory($dsn);
$sql = "select * from users where username=? and password=?";
$types = array('text','text');$cmd = $mdb2->prepare($sql, $types, MDS2_PREPARE_MANIP);
$data = array($username, $password);$result = $cmd->execute($data);
④ PDO是一个面向对象且独立于供应商的数据层,支持冒号字符参数和问号占位符两种方式定义参数
$sql = "select * from uses where username=:username and" + "password=:password";$stmt = $dbh->prepare($sql);$stmt->bindParam(':username', $username, PDO::PARAM_STR,12);
$stmt->bindParam(':password', $password, PDO::PARAM_STR,12);$stmt->execute();
7)不要使用管理员权限的数据库连接,为每个应用使用权限有限的数据库连接;
8)检查数据存储类型;
9)重要的信息一定要加密。
XSS
1.XSS简介
跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。
XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。
2.XSS攻击的危害
1)盗取用户资料,比如:登录帐号、网银帐号等
2)利用用户身份,读取、篡改、添加、删除数据等
3)盗窃重要的具有商业价值的资料
4)非法转账
5)强制发送电子邮件
6)网站挂马
7)控制受害者机器向其它网站发起攻击
3.防止XSS解决方案
XSS的根源主要是没完全过滤客户端提交的数据 ,所以重点是要过滤用户提交的信息。
转义
使用转义解决。将<转义为< >转义为>
①使用过滤器,拦截所有请求,重写request
②重写获取值的方法,将特殊代码转换成html
具体代码实现:
XssHttpServletRequest.javapackage cn.itcats;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;public class XssHttpServletRequest extends HttpServletRequestWrapper{private HttpServletRequest request;//需要重写构造方法public XssHttpServletRequest(HttpServletRequest request) {super(request);this.request = request;}//需要重写getParameter(name)方法,将value进行转义public String getParameter(String name) {String value = request.getParameter(name);System.out.println("没有转义之前:value="+value);if(StringUtils.isNotBlank(value)){//转化为html,<script>标签都会转化为html格式 <script>//工具类来自于org.apache.commons.lang3.StringEscapeUtilsvalue = StringEscapeUtils.escapeHtml4(value);}return value;}}
web.xml配置过滤器<!-- 防止XSS攻击 --><filter><filter-name>FilterXSS</filter-name><filter-class>cn.itcats.FilterXSS</filter-class></filter><filter-mapping><filter-name>FilterXSS</filter-name><url-pattern>/*</url-pattern></filter-mapping>FilterXss.javapackage cn.itcats;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;public class FilterXSS implements Filter{public void init(FilterConfig filterConfig) throws ServletException {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {//强转为HttpServletRequestHttpServletRequest req = (HttpServletRequest)request;//需要重写request,重建一个类XssHttpServletRequest 继承 HttpServletRequestWrapper,重写构造和getParameter方法XssHttpServletRequest xssHttpServletRequest = new XssHttpServletRequest(req);//务必传入是重写过的request,放行chain.doFilter(xssHttpServletRequest, response);}public void destroy() {}}
非法字符过滤
一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤,请看如下XSS过滤工具类代码
1 import java.net.URLEncoder;2 3 /**4 * 过滤非法字符工具类5 * 6 */7 public class EncodeFilter {8 9 10 public static String encode(String input) {11 if (input == null) {12 return input;13 }14 StringBuilder sb = new StringBuilder(input.length());15 for (int i = 0, c = input.length(); i < c; i++) {16 char ch = input.charAt(i);17 switch (ch) {18 case '&': sb.append("&");19 break;20 case '<': sb.append("<");21 break;22 case '>': sb.append(">");23 break;24 case '"': sb.append(""");25 break;26 case '\'': sb.append("'");27 break;28 case '/': sb.append("/");29 break;30 default: sb.append(ch);31 }32 }33 return sb.toString();34 }35 36 37 public static String encodeForJS(String input) {38 if (input == null) {39 return input;40 }41 42 StringBuilder sb = new StringBuilder(input.length());43 44 for (int i = 0, c = input.length(); i < c; i++) {45 char ch = input.charAt(i);46 47 48 if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' ||49 ch >= '0' && ch <= '9' ||50 ch == ',' || ch == '.' || ch == '_') {51 sb.append(ch);52 } else {53 String temp = Integer.toHexString(ch);54 55 56 if (ch < 256) {57 sb.append('\\').append('x');58 if (temp.length() == 1) {59 sb.append('0');60 }61 sb.append(temp.toLowerCase());62 63 64 } else {65 sb.append('\\').append('u');66 for (int j = 0, d = 4 - temp.length(); j < d; j ++) {67 sb.append('0');68 }69 sb.append(temp.toUpperCase());70 }71 }72 }73 74 return sb.toString();75 }76 77 /**78 * css非法字符过滤79 * http://www.w3.org/TR/CSS21/syndata.html#escaped-characters80 */81 public static String encodeForCSS(String input) {82 if (input == null) {83 return input;84 }85 86 StringBuilder sb = new StringBuilder(input.length());87 88 for (int i = 0, c = input.length(); i < c; i++) {89 char ch = input.charAt(i);90 91 92 if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' ||93 ch >= '0' && ch <= '9') {94 sb.append(ch);95 } else {96 97 sb.append('\\').append(Integer.toHexString(ch)).append(' ');98 }99 }
100 return sb.toString();
101 }
102
103 /**
104 * URL参数编码
105 * http://en.wikipedia.org/wiki/Percent-encoding
106 */
107 public static String encodeURIComponent(String input) {
108 return encodeURIComponent(input, "utf-8");
109 }
110
111 public static String encodeURIComponent(String input, String encoding) {
112 if (input == null) {
113 return input;
114 }
115 String result;
116 try {
117 result = URLEncoder.encode(input, encoding);
118 } catch (Exception e) {
119 result = "";
120 }
121 return result;
122 }
123
124 public static boolean isValidURL(String input) {
125 if (input == null || input.length() < 8) {
126 return false;
127 }
128 char ch0 = input.charAt(0);
129 if (ch0 == 'h') {
130 if (input.charAt(1) == 't' &&
131 input.charAt(2) == 't' &&
132 input.charAt(3) == 'p') {
133 char ch4 = input.charAt(4);
134 if (ch4 == ':') {
135 if (input.charAt(5) == '/' &&
136 input.charAt(6) == '/') {
137
138 return isValidURLChar(input, 7);
139 } else {
140 return false;
141 }
142 } else if (ch4 == 's') {
143 if (input.charAt(5) == ':' &&
144 input.charAt(6) == '/' &&
145 input.charAt(7) == '/') {
146
147 return isValidURLChar(input, 8);
148 } else {
149 return false;
150 }
151 } else {
152 return false;
153 }
154 } else {
155 return false;
156 }
157
158 } else if (ch0 == 'f') {
159 if( input.charAt(1) == 't' &&
160 input.charAt(2) == 'p' &&
161 input.charAt(3) == ':' &&
162 input.charAt(4) == '/' &&
163 input.charAt(5) == '/') {
164
165 return isValidURLChar(input, 6);
166 } else {
167 return false;
168 }
169 }
170 return false;
171 }
172
173 static boolean isValidURLChar(String url, int start) {
174 for (int i = start, c = url.length(); i < c; i ++) {
175 char ch = url.charAt(i);
176 if (ch == '"' || ch == '\'') {
177 return false;
178 }
179 }
180 return true;
181 }
182
183 }
二、 过滤用户输入的 检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。、严格控制输出
可以利用下面这些函数对出现xss漏洞的参数进行过滤
1、htmlspecialchars() 函数,用于转义处理在页面上显示的文本。
2、htmlentities() 函数,用于转义处理在页面上显示的文本。
3、strip_tags() 函数,过滤掉输入、输出里面的恶意标签。
4、header() 函数,使用header(“Content-type:application/json”); 用于控制 json 数据的头部,不用于浏览。
5、urlencode() 函数,用于输出处理字符型参数带入页面链接中。
6、intval() 函数用于处理数值型参数输出页面中。
7、自定义函数,在大多情况下,要使用一些常用的 html 标签,以美化页面显示,如留言、小纸条。那么在这样的情况下,要采用白名单的方法使用合法的标签显示,过滤掉非法的字符。
各语言示例:
PHP的htmlentities()或是htmlspecialchars()。
Python的cgi.escape()。
ASP的Server.HTMLEncode()。
ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
Java的xssprotect(Open Source Library)。
Node.js的node-validator。
1)将重要的cookie标记为http only, 这样的话js 中的document.cookie语句就不能获取到cookie了.
2)只允许用户输入我们期望的数据。 例如:age用户年龄只允许用户输入数字,而数字之外的字符都过滤掉。
3)对数据进行Html Encode 处理: 用户将数据提交上来的时候进行HTML编码,将相应的符号转换为实体名称再进行下一步的处理。
4)过滤或移除特殊的Html标签, 例如:
5)过滤js事件的标签。例如 “οnclick=”, “onfocus” 等等。
CSRF攻击(跨站点请求伪造)
1.CSRF简介
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
XSS主要是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求,来利用受信任的网站。与XSS攻击相比,CSRF更具危险性。
2.CSRF攻击的危害
主要的危害来自于,攻击者盗用用户身份,发送恶意请求。比如:模拟用户发送邮件,发消息,以及支付、转账等。
3.防止CSRF的解决方案
重要数据交互采用POST进行接收,当然是用POST也不是万能的,伪造一个form表单即可破解。
使用验证码,只要是涉及到数据交互就先进行验证码验证,这个方法可以完全解决CSRF。但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。
验证HTTP Referer字段,该字段记录了此次HTTP请求的来源地址,最常见的应用是图片防盗链。为每个表单添加令牌token并验证。
// 从 HTTP 头中取得 Referer 值
String referer=request.getHeader(“Referer”);
// 判断 Referer 是否以 bank.example 开头
if((referer!=null) &&(referer.trim().startsWith(“bank.example”))){
chain.doFilter(request, response);
}else{
request.getRequestDispatcher(“error.jsp”).forward(request,response);
}
小补充:
SQL
1.pdo预编译
2.限制输入长度
3.转义过滤
pdo防SQL原理:https://www.cnblogs.com/leezhxing/p/5282437.html
XSS
1.用户提交参数过滤
2.html标签实体化
function RemoveXss($values){$str = trim($values); //清理空格 $str = strip_tags($str); //过滤html标签 $str = htmlspecialchars($str); //将字符内容转化为html实体 $str = addslashes($str); //防止SQL注入return $str;
}
笔记有可能做的不是那么好,有点乱,望体谅!
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- C++深入学习笔记—基础篇—个人银行账户管理程序
参考《C++语言程序设计(第4版)第5-12章 综合实例—个人银行账户管理程序 源代码已发布git个人银行账户管理程序 Personal-bank-account-management (个人银行账户管理程序) C++入手项目(《C++语言程序设计》(第4版)课本项目)第四章类和对象初步完成项目搭建 完成项目类…...
2024/4/25 1:22:15 - 蓝桥杯单片机(二)——LED流水灯
前面简单的介绍了如何关闭外设,现在就该简单的实现开发板的功能了,实现开发板LED 流水灯的功能。LED模块主要是通过Y4C这个锁存器来控制的,要想要对这个功能进行操作,首先要打开锁存器,然后再进行电平数据的读入。#include "STC15F2K60S2.h" #include "int…...
2024/4/9 8:37:19 - 有偿寻求arcgis技术支持
要求有实际项目经历三年以上,表达能力较好,请联系我,微信15501239699 ,邮件soft@info-soft.cn。...
2024/4/9 9:55:27 - FastReID:首个产业级通用目标重识别开源库
引言 京东AI研究院近日发布了基于PyTorch的通用目标重识别(ReID)开源库FastReID,其发布对相关领域的研究起到积极的促进作用,同时也加速技术产品落地应用。FastReID已经在行人重识别、车辆重识别上都取得了优异的评测结果,在京东内部,该技术已经获得广泛地应用于智慧园区…...
2024/4/24 15:34:25 - ftp免费下载工具,3款你用了绝对会喜欢的ftp免费下载工具
ftp免费下载工具主要是网络上用来传送文件的工具。但有些ftp免费下载工具传输文件不是特别稳定。今天就来为大家分享3款站长们都爱用的ftp免费下载工具。 第一款:IIS7服务器管理工具 这款软件的Ftp客户端做的是非常棒的,不仅具有批量操作功能,还具有定时同步(上传和下载)和…...
2024/4/15 4:29:40 - 企业如何利用软件机器人自动化办公夺回失去的一个季度?
"受疫情影响,2020年市场总体形势不乐观。这次爆发将是对绝大多数企业(特别是中小企业)商业能力的重大考验,我们期待着凛冬的结束。 但之后的前景会明朗吗?事实上,即使没有这次突然爆发,全球经济衰退也是显而易见的。2019年的经济数据证明了这一点,疫情爆发是其下降…...
2024/4/9 19:32:55 - 撸猫撸懂云计算
今天神扯第一篇,真实经历,绝非段子…这是第❶篇神扯:撸猫撸懂云计算。一个做云计算的朋友来公司玩,他只懂云计算,却从未养过猫,看见我养在工作室的猫,随口问:啥猫?👇答:美短,美国短毛猫。友疑:这和中华田园猫有啥区别啊?答:中华田园猫相当于阿里云,美短相当于…...
2024/4/10 20:05:30 - 有关机器视觉入门(vc++2013)练手版本gaugme0.2.4提供邮箱收发(有则改之,无则加勉)
我们的软件设计风格,突然发现潜意识受到bios设计风格的影响。你能说,微软menu和dialog(form)设计不受此影响?当你发现程序员喜欢使用黑白屏编程时,除了保护眼睛,(怎样保护颈椎呢?嘿嘿!以你超凡的想象,或许已心生办法)也是受到dos风格的影响我想,dos风格也是一种潜…...
2024/4/24 18:01:50 - spring mvc 过程
mvc的初始化在分析DispatcherServlet之前,我们先看下DispatcherServlet的继承关系 springmvc是主流的MVC框架,我先从使用开始一步一步解析其初始化过程,springmvc的核心是DispatcherServlet,它是前端控制器,负责拦截客户端发过来的请求,然后解析请求进行分发。 Dispatch…...
2024/4/14 20:21:34 - 加多宝发红包,利多码解读酒水如何防伪追溯
加多宝发红包,利多码解读酒水如何防伪追溯 近年来,市场之上虚假酒以次充好,以旧有夹杂全新乱象。同时,由于欠缺权威性的行业专家和严苛的认证标准,消费者很容易维权。受葡萄酒产品种类的限制,很容易建立统合的评价标准。在暴利的驱使之下,不法分子仍然以各种方式制售假冒…...
2024/4/25 9:06:12 - springboot run方法初始化,spring 初始化,以及bean的生命周期。mvc的初始化以及生命周期
注意:l懒加载的bean初始化 只是创建BeanDefinition。实例化在BeanFactory.getBean()的时候才会产生beanspringboot run方法初始化主要根据main方法和自动配置文件META-INF/spring.factories 中的相关配置类进行自动化化加载初始化等操作。注册监事件听器。初始化容器上下文Con…...
2024/4/17 5:45:28 - 国产之光!行业内第一款5G三防坚固平板破壳诞生,比松下、getac、Xplore抢先一步!
无数个昼夜不休的调试,40多个频段,耗资几百万的调试设备,动辄几十万的天线调试费用……所幸,在研发团队一百多号人的努力下,我们基于移远模块、高通骁龙X55平台的5G模块调试成功了,从测试数据来看相当出色!(见下图)5G速度对比(点击放大查看)作为行业内第一款5G三防工…...
2024/4/25 9:00:08 - 使用RNN
文章目录介绍设置内置RNN层:一个简单的例子输出和状态RNN层和RNN单元跨批状态RNN状态重用Bidirectional RNNs性能优化和CuDNN内核在可用时使用CuDNN内核具有列表/字典输入或嵌套输入的RNN定义一个支持嵌套输入/输出的自定义单元格使用嵌套的输入/输出构建RNN模型使用随机生成的…...
2024/4/22 17:34:26 - 使用mybatis-generator-maven-plugin的错误解决办法
在使用mybatis-generator生成逆向工程是报了错,错误如下: No plugin found for prefix ‘mybatis-generator’ in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (C:\Users\Administ…...
2024/4/21 21:31:30 - 「面面俱到」Vue篇
前言小编所分享整理的备战系列文章里面不会是一个完全完整且系统的一个内容,主要是针对所描述的相关知识自己觉得的重点,所以有时候可能整体文章逻辑上会不是很好,55555最近要备战面试了,文章整理就压缩了一下,但还是会用心滴。以下很多东西涉及到Vue源码,小编还是简单描…...
2024/4/16 21:41:13 - 头条面试题整理
java头条提前批面经(已拿offer 一面(1h20min) 自我介绍。 java:JVM 虚拟机运行时数据区域?GC算法,垃圾回收器(主要以 CMS 和 G1 展开 + 阐明分代思想)。介绍一下集合里的 hashmap?1.7和1.8区别?hashmap 的扩容机制?如何处理哈希碰撞?Hashmap 和 ConcurrentHashmap 的…...
2024/4/9 18:42:04 - 亲测可用:neo4j超快下载网址(无需梯子)
0、安装java环境,下载地址是: 下载网址 1、下载社区版的neo4j,不要去官网下载,我的下载地址是: 下载网址 2、无需安装,直接解压就好,然后进入它的bin目录,在终端敲:./neo4j console,点击终端弹出的最后的网址就可进入了(它的初始账户和密码都是neo4j)...
2024/4/25 0:48:10 - 有关机器视觉入门(vc++)练手版本gaugme0.2.4提供邮箱收发(有则改之,无则加勉)
我们的软件设计风格,突然发现潜意识受到bios设计风格的影响。你能说,微软menu和dialog(form)设计不受此影响?当你发现程序员喜欢使用黑白屏编程时,除了保护眼睛,(怎样保护颈椎呢?嘿嘿!以你超凡的想象,或许已心生办法)也是受到dos风格的影响我想,dos风格也是一种潜…...
2024/4/25 0:09:12 - POJ 2031 Building a Space Station G++ 最小生成树 Kruskal实现 prim未实现
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <vector> #include <algorithm> #include <iomanip> using namespace std; //英语 看博友分析 抄博友程序 最小生成树 Krus…...
2024/4/25 0:27:13 - 3.6 链表(环形链表,约瑟夫问题)
单向环形链表应用场景 单向环形链表示意图:约瑟夫问题:编号1,2,3,4,5…的n个人围坐在一圈,约定编号为k(1<=K<=n)的人从1开始报数,数到那个人出列,它的下一位又从1开始报数,数到m那个人出列,以此类推,知道所有人出列为止,由此产生一个出队序列。(需要借用…...
2024/4/25 0:28:34
最新文章
- 无人驾驶Autoware介绍
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、【导航业务框架】开源无人驾驶项目autoware解读【无人驾驶autoware 项目实战】autoware架构-manager 二、传感器sensor【…...
2024/4/25 22:16:07 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - [蓝桥杯 2014 省 A] 波动数列
容我菜菲说一句,全网前排题解都是rubbish,当然洛谷某些也是litter 不好意思,最近背单词背了很多垃圾的英文,正题开始 [蓝桥杯 2014 省 A] 波动数列 题目描述 输入格式 输入的第一行包含四个整数 n , s , a , b n,s,a,b n,s,a…...
2024/4/23 10:58:20 - qt事件机制学习笔记
实现闹钟功能 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), speecher(new QTextToSpeech(this)) //给语音播报者实例化空间 {ui->setupUi(this); }Widget::~Widget() {delete …...
2024/4/23 16:55:43 - 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/25 1:03:45 - 【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/25 21:14:51 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/4/24 11:04:21 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/4/25 10:01:46 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/4/25 16:50:01 - 【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/25 13:02:58 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/4/24 9:58:43 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/4/24 11:04:19 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/4/25 17:43:17 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/4/25 17:43:00 - 用欧拉路径判断图同构推出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/25 13:00:31 - 【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/25 17:42:40 - 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/25 3:28:56 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/4/25 3:39:58 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/4/25 13:40:45 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/4/25 13:01:30 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/4/25 15:31:26 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/4/25 17:31:15 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/4/25 13:22:53 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/4/25 1:03:22 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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