富文本编辑器过滤XSS注入(JSOUP)
众所周知,让用户在富文本编辑器中进行自己的输入绝对不是一个明智的选择,但是有的时候又没有办法,所以只有一条原则来保证系统的安全性,那就是我们让用户输入什么,用户才能输入什么,而不是用户想输入什么,他就能输入什么,这样才能让系统处于我们的掌控,不至于出现各种娄子,比如各种XSS注入什么的。
后来我们发现有一个比较好用的东西就是JSOUP,这是一个能够对输入的html进行过滤,简单来说就是可以增加白名单和黑名单(基于正则表达式),白名单就是只允许一个html标签上有固定的属性,比如我们只允许<div height="100" >,即div上只允许有height属性,其他的都是非法的我们认为,就可以用jsoup设置白名单进行过滤。我们也可以设置黑名单,即我们觉得<div>标签什么属性都可以有,但是style标签我们不能控制,认为他是个黑名单,我们也可以用jsoup进行实现。
下面贴出一个样例:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;import org.apache.commons.io.IOUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Document.OutputSettings;
import org.jsoup.nodes.Element;
import org.jsoup.safety.Whitelist;
import org.jsoup.select.Elements;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springside.modules.mapper.JsonMapper;public class HTMLStringFilter {private final static String regxpForHtml = "<([^>]*)>"; // 过滤所有以<开头以>结尾的标签private final static String PICTURE = "[图片]";//private final static String regxpForImgTag = "<\\s*img\\s+([^>]*)\\s*>"; // 找出IMG标签//private final static String regxpForImaTagSrcAttrib = "src=\"([^\"]+)\""; // 找出IMG标签的SRC属性public HTMLStringFilter() {}public static String HTMLEncode(String fString){fString=fString.replaceAll(" <", "<");fString=fString.replaceAll(">", ">");fString=fString.replaceAll(new String(new char[]{32}), " ");fString=fString.replaceAll(new String(new char[]{9}), " ");fString=fString.replaceAll(new String(new char[]{34}), """);fString=fString.replaceAll(new String(new char[]{39}), "'");fString=fString.replaceAll(new String(new char[]{13}), "");fString=fString.replaceAll(new String(new char[]{10,10}), " </p> <p>");fString=fString.replaceAll(new String(new char[]{10}), " <br>");return fString;}/*** xss escape*/public static String xssEscape(String input) {return input == null ? null : input.replaceAll("<", "<").replaceAll(">", ">")
// .replaceAll("eval\\((.*)\\)", "")
// .replaceAll("[\"'][\\s]*((?i)javascript):(.*)[\"']", "\"\"")
// .replaceAll("((?i)script)", "");}/*** 除指定标签之外的html标签编码* @param str* @param tag* @return*/public static String xssEscapeExceptTag(String str,String tag) {String replaceTag="@"+tag+"@";str=str.replaceAll("<"+tag,replaceTag );str=xssEscape(str);str=str.replaceAll(replaceTag, "<"+tag);return str;}public static void main(String[] args){
// System.out.println(new java.util.Date().getTime());
// System.out.println(HTMLStringFilter.filterSafe("< script >ddd</div>"));
// System.out.println(HTMLStringFilter.filterSafe("< div >ddd</div>"));
// System.out.println("======"+HTMLStringFilter.filterSafe("< div oncliCk=''><img src='http://s.jsp'/>ddd</div>"));
//
// String imgHTML="<img src=\"http:\"/>";
// String tag="img";
// System.out.println("filter except:"+filterHtmlExceptTag(imgHTML, tag));
//
// System.out.println(new java.util.Date().getTime());
//
// String source="aaaaa<img alt=\"[可爱]\" src=\"http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/14/tza_thumb.gif\" height=\"22\" width=\"22\" />bbbb<img alt=\"[给力]\" src=\"http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/c9/geili_thumb.gif\" height=\"22\" width=\"22\" />ccc";
// String title=replaceTag(source, "img", "alt");
// System.out.println("title=="+title);
//
// String s="<img src=\"http://img7.9158.com/200708/10/09/18/200708103758836.jpg\"/>";
// List<String> srcs=match(source, "img", "src");
// if (CollectionUtils.isNotEmpty(srcs)) {
// for (String att : srcs) {
// System.out.println("attr=="+att);
// }
// }
//
// System.out.println("html标签替换=="+replaceHtmlTagOfText(s, "img", "[图片]"));
// String htmlStr="<html>bb<img style='display:inline;' alt='[挤眼]' src='http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/c3/zy_thumb.gif' height='22' width='22' />bb<img style='display:inline;' alt='[挤眼]' src='http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/c3/zy_thumb.gif' height='22' width='22' />aaaa</html>";List<String> srcs=getImgHTML(htmlStr);for (String src : srcs) {System.out.println("======="+src);}
// System.out.println("=HTMLEncode=="+);// List<String> htmls=getImgHTML(htmlStr);
// List<String> srcs=getImgSrc(htmlStr);
//
// System.out.println("--"+htmls.size()+"=="+srcs.size());
//
// for (String s : htmls) {
// System.out.println("----"+s);
// System.out.print(htmlStr.replaceFirst(s, "[图一]"));
// }
// for (String s : srcs) {
// System.out.println("==="+s);
// }}/*** 过滤一下字符串,连同前后< xxx >yyy< / xxx >全部消除。* 不区分大小写、空格可识别* <br>"function", "window\\.", "javascript:", "script",* <br>"js:", "about:", "file:", "document\\.", "vbs:", "frame",* <br>"cookie", "onclick", "onfinish", "onmouse", "onexit=",* <br>"onerror", "onclick", "onkey", "onload", "onfocus", "onblur" * @param htmlStr* @return*/public static String filterSafe(String htmlStr){Pattern p = null; // 正则表达式Matcher m = null; // 操作的字符串StringBuffer tmp = null;String str = "";boolean isHave = false;String[] Rstr = { "meta", "script", "object", "embed" };if (htmlStr == null || !(htmlStr.length() > 0)) {return "";}str = htmlStr.toLowerCase();for (int i = 0; i < Rstr.length; i++) {p = Pattern.compile("<" + Rstr[i] + "(.[^>])*>");m = p.matcher(str);tmp = new StringBuffer();if (m.find()) {m.appendReplacement(tmp, "<" + Rstr[i] + ">");while (m.find()) {m.appendReplacement(tmp, "<" + Rstr[i] + ">");}isHave = true;}m.appendTail(tmp);str = tmp.toString();p = Pattern.compile("</" + Rstr[i] + "(.[^>])*>");m = p.matcher(str);tmp = new StringBuffer();if (m.find()) {m.appendReplacement(tmp, "</" + Rstr[i] + ">");while (m.find()) {m.appendReplacement(tmp, "</" + Rstr[i] + ">");}isHave = true;}m.appendTail(tmp);str = tmp.toString();}// System.out.println(str);String[] Rstr1 = { "function", "window\\.", "javascript:", "script","js:", "about:", "file:", "document\\.", "vbs:", "frame","cookie", "onclick", "onfinish", "onmouse", "onexit=","onerror", "onclick", "onkey", "onload", "onfocus", "onblur" };for (int i = 0; i < Rstr1.length; i++) {p = Pattern.compile("<([^<>])*" + Rstr1[i] + "([^<>])*>([^<>])*</([^<>])*>");m = p.matcher(str);tmp = new StringBuffer();if (m.find()) {m.appendReplacement(tmp, "");while (m.find()) {m.appendReplacement(tmp, "");}isHave = true;}m.appendTail(tmp);str = tmp.toString();}if (isHave) {htmlStr = str;}htmlStr = htmlStr.replaceAll("%3C", "<");htmlStr = htmlStr.replaceAll("%3E", ">");htmlStr = htmlStr.replaceAll("%2F", "");htmlStr = htmlStr.replaceAll("&#", "<b>&#</b>");return htmlStr; }/*** 采用jsoup白名单方式过滤非法的html字符。* 原理:* 1.首先通过白名单过滤掉非法的html标签,即只允许输出白名单内的标签* 2.对特殊的属性(主要是style)用正则过滤,只允许安全的属性值存在 * @param htmlStr 原始的html片段(用户通过富文本编辑器提交的html代码)* @return 过滤后的安全的html片段*/public static String cleanSafeHtml(String htmlStr) {Document doc = Jsoup.parseBodyFragment(htmlStr);OutputSettings outSet = new OutputSettings();outSet.prettyPrint(false);outSet.outline(false);doc.outputSettings(outSet);Map<String, String> regexMap = initRegexMap(); if (regexMap != null) {for (Map.Entry<String,String> entiy:regexMap.entrySet()){String key = entiy.getKey();Elements els = doc.select(key);for (Element el:els) {System.out.println("old el:"+el.toString());String attribute = key.substring(key.indexOf("[")+1, key.indexOf("]"));String attributeValue = el.attr(attribute);Matcher valueMatcher = Pattern.compile(entiy.getValue()).matcher(attributeValue);if (valueMatcher.find()) {String safeValue = valueMatcher.group();System.out.println("safeValue:"+safeValue);el.attr(attribute, safeValue);}System.out.println("new el:"+el.toString());}}}Whitelist whitelist = initWhiteList();String safeString = Jsoup.clean(doc.html(), "", whitelist);System.out.println("safestring:"+safeString);return safeString; // Elements els = doc.select("[style]");
// for (Element el:els) {
// System.out.println("old el:"+el.toString());
// String styleattribute = el.attr("style");
// Matcher styleMatcher = Pattern.compile(styleAttributeRegex).matcher(styleattribute);
// if (styleMatcher.find()) {
// String safeStyle = styleMatcher.group();
// System.out.println("safeStyle:"+safeStyle);
// el.attr("style", safeStyle);
// }
// System.out.println("new el:"+el.toString());
// }
// Whitelist whitelist = Whitelist.relaxed();
// whitelist.addAttributes("span", "style");
// String safeString = Jsoup.clean(doc.html(), "", whitelist);
// System.out.println("safestring:"+safeString);
// return safeString; }private static Whitelist whitelist = null;private static Whitelist initWhiteList() {if (whitelist == null) {synchronized(new Object()) {whitelist = new Whitelist(); String jsonString = null;Resource resource = new ClassPathResource("/data/whitelist.conf");File file = null;InputStream input = null;Writer output = null;try {file = resource.getFile();input = new FileInputStream(file);output = new StringWriter();IOUtils.copy(input, output);jsonString = output.toString(); } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if (input != null) {IOUtils.closeQuietly(input);}if (output != null) {IOUtils.closeQuietly(output);}}JsonConfig config = new JsonConfig(); config.setIgnoreDefaultExcludes(true);//这里不设置,会把class属性过滤掉JSONObject jsonObject = JSONObject.fromObject(jsonString,config);JSONObject whitelistjson = jsonObject.getJSONObject("whiteList");JSONObject protocolsjson = jsonObject.getJSONObject("protocols");JsonMapper newMapper = new JsonMapper();Map<String, Map<String, String>> whitelistmap = newMapper.fromJson(whitelistjson.toString(), HashMap.class);Map<String, List<String>> protocolsmap = newMapper.fromJson(protocolsjson.toString(), HashMap.class);for (Map.Entry<String, Map<String, String>> entiy:whitelistmap.entrySet()){String tag = entiy.getKey();whitelist.addTags(tag);for (Map.Entry<String,String> entiy2:entiy.getValue().entrySet()){String attribute = entiy2.getKey();whitelist.addAttributes(tag, attribute); System.out.println("value value:"+entiy2.getValue()); }}for (Map.Entry<String, List<String>> entiy:protocolsmap.entrySet()){String tag = entiy.getKey().substring(0, entiy.getKey().indexOf("."));String key = entiy.getKey().substring(entiy.getKey().indexOf(".")+1, entiy.getKey().length());for (String entiy2:entiy.getValue()){ whitelist.addProtocols(tag, key, entiy2);}}} } return whitelist;}private static Map<String, String> regexMap = null;private static Map<String, String> initRegexMap() {if (regexMap == null) {synchronized (new Object()) {regexMap = new HashMap<String, String>(); String jsonString = null;Resource resource = new ClassPathResource("/data/whitelist.conf");File file = null;InputStream input = null;Writer output = null;try {file = resource.getFile();input = new FileInputStream(file);output = new StringWriter();IOUtils.copy(input, output);jsonString = output.toString(); } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if (input != null) {IOUtils.closeQuietly(input);}if (output != null) {IOUtils.closeQuietly(output);}}JSONObject jsonObject = JSONObject.fromObject(jsonString);JSONObject whitelistjson = jsonObject.getJSONObject("whiteList");JsonMapper newMapper = new JsonMapper();Map<String, Map<String, String>> whitelistmap = newMapper.fromJson(whitelistjson.toString(), HashMap.class);for (Map.Entry<String, Map<String, String>> entiy:whitelistmap.entrySet()){String tag = entiy.getKey(); for (Map.Entry<String,String> entiy2:entiy.getValue().entrySet()){String attribute = entiy2.getKey();String attributeValue = entiy2.getValue();if (attributeValue != null && attributeValue.trim().length() > 0) {regexMap.put(tag+"["+ attribute +"]", attributeValue);}}}}} return regexMap;}public static String filter(String input) {if (!hasSpecialChars(input)) {return input;}StringBuffer filtered = new StringBuffer(input.length());char c;for (int i = 0; i <= input.length() - 1; i++) {c = input.charAt(i);switch (c) {case '<':filtered.append("<");break;case '>':filtered.append(">");break;case '"':filtered.append("&uot;");break;case '&':filtered.append("&");break;default:filtered.append(c);}}return (filtered.toString());}public static boolean hasSpecialChars(String input) {boolean flag = false;if ((input != null) && (input.length() > 0)) {char c;for (int i = 0; i <= input.length() - 1; i++) {c = input.charAt(i);switch (c) {case '>':flag = true;break;case '<':flag = true;break;case '"':flag = true;break;case '&':flag = true;break;}}}return flag;}/*** * 基本功能:过滤所有以"<"开头以">"结尾的标签* <p>* * @param str* @return String*/public static String filterHtml(String str) {Pattern pattern = Pattern.compile(regxpForHtml);Matcher matcher = pattern.matcher(str);StringBuffer sb = new StringBuffer();boolean result1 = matcher.find();while (result1) {matcher.appendReplacement(sb, "");result1 = matcher.find();}matcher.appendTail(sb);return sb.toString();}/*** 过滤除指定tag之外的html标签* @param str* @param tag* @return*/public static String filterHtmlExceptTag(String str,String tag) {String replaceTag="@"+tag+"@";str=str.replaceAll("<"+tag,replaceTag );str=filterHtml(str);str=str.replaceAll(replaceTag, "<"+tag);return str;}/*** * 基本功能:过滤指定标签* <p>* * @param str* @param tag* 指定标签* @return String*/public static String fiterHtmlTag(String str, String tag) {String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>";Pattern pattern = Pattern.compile(regxp);Matcher matcher = pattern.matcher(str);StringBuffer sb = new StringBuffer();boolean result1 = matcher.find();while (result1) {matcher.appendReplacement(sb, "");result1 = matcher.find();}matcher.appendTail(sb);return sb.toString();}/*** * 基本功能:替换指定的标签* <p>* * @param str* @param beforeTag* 要替换的标签* @param tagAttrib* 要替换的标签属性值* @param startTag* 新标签开始标记* @param endTag* 新标签结束标记* @return String* @如:替换img标签的src属性值为[img]属性值[/img]*/public static String replaceHtmlTag(String str, String beforeTag,String tagAttrib, String startTag, String endTag) {String regxpForTag = "<\\s*" + beforeTag + "\\s+([^>]*)\\s*>";String regxpForTagAttrib = tagAttrib + "=\"([^\"]+)\"";Pattern patternForTag = Pattern.compile(regxpForTag);Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);Matcher matcherForTag = patternForTag.matcher(str);StringBuffer sb = new StringBuffer();boolean result = matcherForTag.find();while (result) {StringBuffer sbreplace = new StringBuffer();Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1));if (matcherForAttrib.find()) {matcherForAttrib.appendReplacement(sbreplace, startTag+ matcherForAttrib.group(1) + endTag);}matcherForTag.appendReplacement(sb, sbreplace.toString());result = matcherForTag.find();}matcherForTag.appendTail(sb);return sb.toString();}/*** html标签替换为指定字符* @param str* @param tagAttrib* @param beforeTag* @param replace* @return*/public static String replaceHtmlTagOfText(String str,String tag,String text) {String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>";Pattern pattern = Pattern.compile(regxp);Matcher matcher = pattern.matcher(str);StringBuffer sb = new StringBuffer();boolean result1 = matcher.find();while (result1) {matcher.appendReplacement(sb, text);result1 = matcher.find();}matcher.appendTail(sb);return sb.toString();}/** * 获取指定HTML标签的指定属性的值 * @param source 要匹配的源文本 * @param element 标签名称 * @param attr 标签的属性名称 * @return 属性值列表 */ public static List<String> match(String source, String element, String attr) { List<String> result = new ArrayList<String>(); String reg = "<" + element + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?\\s.*?>";Matcher m = Pattern.compile(reg).matcher(source); while (m.find()) { String r = m.group(1); result.add(r); } return result; }public static List<String> getImgHTML(String html) {List<String> resultList=new ArrayList<String>();Pattern p=Pattern.compile("<img ([^>]*)");//<img开头 >结尾Matcher m=p.matcher(html);//开始编译while (m.find()) {resultList.add("<img "+m.group(1)+">");//获取匹配的部分}return resultList;}public static List<String> getImgSrc(String htmlStr){ String img=""; Pattern p_image; Matcher m_image; List<String> pics = new ArrayList<String>(); String regEx_img = "<img.*src=(.*?)[^>]*?>"; //图片链接地址 p_image = Pattern.compile (regEx_img,Pattern.CASE_INSENSITIVE); m_image = p_image.matcher(htmlStr); while(m_image.find()){ img = m_image.group(); Matcher m = Pattern.compile("src=\"?(.*?)(\"|>|\\s+)").matcher(img); //匹配src while(m.find()){pics.add(m.group(1)); } } return pics; }public static List<String> getImgAlt(String htmlStr){ String img=""; Pattern p_image; Matcher m_image; List<String> alts = new ArrayList<String>(); String regEx_img = "<img.*src=(.*?)[^>]*?>"; //图片链接地址 p_image = Pattern.compile (regEx_img,Pattern.CASE_INSENSITIVE); m_image = p_image.matcher(htmlStr); while(m_image.find()){ img = m_image.group(); Matcher m = Pattern.compile("alt=\"?(.*?)(\"|>|\\s+)").matcher(img); //匹配src while(m.find()){alts.add(m.group(1)); } } return alts; }/*** * 基本功能:过滤所有以"<"开头以">"结尾的标签,但是替换为空格* <p>* * @param str* @return String*/public static String filterHtmlWithSapce(String str) {Pattern pattern = Pattern.compile(regxpForHtml);Matcher matcher = pattern.matcher(str);StringBuffer sb = new StringBuffer();boolean result1 = matcher.find();while (result1) {matcher.appendReplacement(sb, " ");result1 = matcher.find();}matcher.appendTail(sb);return sb.toString();}}
{
"whiteList":{
"a":{"href":"","title":""},
"b":{},
"blockquote":{"cite":""},
"br":{},
"caption":{},
"cite":{},
"code":{},
"col":{"span":"","width":""},
"colgroup":{"span":"","width":""},
"dd":{},
"div":{},
"dl":{},
"dt":{},
"em":{},
"h1":{},
"h2":{},
"h3":{},
"h4":{},
"h5":{},
"h6":{},
"i":{},
"img":{"align":"", "alt":"", "height":"", "src":"", "title":"", "width":""},
"li":{"class":"","style":"/^text-align:\\s*(left|right|center);?\\s*$/i"},
"ol":{"start":"", "type":""},
"p":{"style":"/^text-align:\\s*(left|right|center);?\\s*$/i"},
"pre":{},
"q":{"cite":""},
"small":{},
"span":{"style":"/^\\s*font-family\\s*:\\s*(('|\\\"|"|')?(楷体|楷体_GB2312|宋体|微软雅黑|黑体|,|\\s|\\w|sans-serif)('|\\\"|"|')?)+;?\\s*|\\s*(color|font-size|background-color)\\s*:\\s*(#\\w*|[\\w\\s]*|rgb\\s*\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\));?\\s*|\\s*text-decoration\\s*:\\s*(underline|overline|line-through|blink)\\s*;?\\s*$/i"},
"strike":{},
"strong":{},
"sub":{},
"sup":{},
"table":{"summary":"", "width":""},
"tbody":{},
"td":{"abbr":"", "axis":"", "colspan":"", "rowspan":"", "width":""},
"tfoot":{},
"th":{"abbr":"", "axis":"", "colspan":"", "rowspan":"", "scope":"","width":""},
"thead":{},
"tr":{},
"u":{},
"ul":{"type":"","class":"","style":"/^list-style-type:\\s*(decimal|disc);\\s*$/i"}
},
"protocols":{
"a.href":["ftp", "http", "https", "mailto"],
"blockquote.cite":["http", "https"],
"cite.cite":["http", "https"],
"img.src":["http", "https"],
"q.cite":["http", "https"]
}
}
即每个标签的任何属性,属性的值我们都可以进行过滤和定制。
这样,用户输入的任何东西都可以得到我们的控制。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Tomcat8中开启gzip压缩功能的配置方法
使用gzip压缩可以减少数据传输大小,加快网页加载速度。很多大站都开启了gzip压缩,不过也有很多网站并没有开启gzip压缩,上次看了一篇文章说开启gzip压缩后对搜索引擎不友好,但从带宽和流量的角度来看,还是有必要开启gzip压缩的。Tomcat5.0以后的版本是支持对输出内容进行压…...
2024/5/1 23:33:42 - Nginx 负载均衡4种模式
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80541464 本文出自【赵彦军的博客】 4 种负载均衡算法upstream 支持4种负载均衡调度算法:A)轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;B)ip_hash:每个请求按访问IP的hash结果分配,同一个IP…...
2024/5/2 0:09:08 - Nginx负载均衡配置及算法详解
1.简单介绍负载均衡 如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台机器web程序关闭造成web不能访问,那么nginx服务器分发请求还是会给这台不能访问的web服务器,如果这里的响应连接时间过长,就会导致客户端的页面一直在等待响应,对用户来…...
2024/5/1 23:58:00 - 字体压缩—字体引入,页面加载问题
昨天成功引入字体以为就大功告成了,但是又出了个小问题。问题复现:将文件放在本地搭建的nginx服务器上,页面加载是没有问题的。但是将文件放在服务器上时,引入的字体文件加载的超级超级慢,(截图如下)解决方法:那就是需要将字体文件压缩,那么问题来了,字体文件要怎样压…...
2024/5/2 1:16:47 - iOS学习笔记--如何用ssh key 配置Github
1.什么是ssh,及作用SSH:安全外壳协议 (SSH: Secure Shell Protocol) 安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。Secure Shell,又可记为S S H,最初是U N I X系统上的一个程序,后来又迅速扩展到其他操作平台。S S H是一个好的应用…...
2024/5/1 23:35:32 - 在JAVA代码中控制文本的显示行数
复制代码代码如下:ViewTreeObserver observer = textAbstract.getViewTreeObserver(); //textAbstract为TextView控件 observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {@Override public void onGlobalLayout() { ViewTreeObserver obs = textAbstract.getV…...
2024/4/20 23:27:29 - nginx+tomcat负载均衡和session复制
本文介绍下传统的tomcat负载均衡和session复制. session复制是基于JVM内存的,当然在当今的互联网大数据时代,有更好的替代方案,如将session数据保存在Redis中. 1、安装nginx 首先下载nginx,我下载的版本是1.11.4版本 .http://nginx.org/download/nginx-1.11.4.zip .…...
2024/5/1 23:28:47 - 墙裂推荐9个在线图片压缩网站
转载自:https://www.zcool.com.cn/article/ZNTQzNDYw.html?switchPage=on 1.Tinypng 网址:https://tinypng.com/Tinypng可以说是很受大家欢迎的一个图片压缩站点,不管对于前端工程师或者设计师来说都是一个不错的图片压缩工具。Tinypng的操作方式也十分的简单,上传、压缩、…...
2024/5/2 1:37:39 - Git学习--03--如何获取本机的SSH公钥
最近给电脑的系统换成了windows 10 专业版,然后从GITHUB进行SSH绑定时,发现电脑里面根本就没有SSH公钥的文件夹。 于是就翻看GIT文档就找到如下方法:一般情况下,SSH公钥文件夹会放在登录账户的主目录下,默认就是C:\Users\账户名\.ssh,然后打开后就会有一个id_rsa文件和id…...
2024/5/1 23:02:17 - java web项目中使用百度编辑器UEditor
宽为限 紧用功 工夫到 滞塞通项目上用到富文本编辑器,用的是百度的UEditor编辑器。第一次使用,一起来学学吧! 二话不说,下载先:http://ueditor.baidu.com/website/download.html#ueditor 这里我用的是jsp版本的,我们一起来看看。目录结构部署包解压后的文件目录结构…...
2024/5/2 1:10:26 - php压缩页面的html代码一行显示
在浏览网页的时候,偶尔我们会通过浏览器在页面右键中查看源代码,一般网站源码都有排版,有一些网站的源码会一直在一行显示。这是怎么实现的呢?html代码通过php压缩去除其中的空格换行符缩进符,代码自然就在一行显示了。就像jquery.js和jquery.min.js一样。好处:1.减小htm…...
2024/4/20 23:27:23 - SSH框架整合(实现分页查询)
SSH框架整合、分页查询案例之前已经写过了SSM框架的分页查询案例,刚翻笔记时看到了以前写过的SSH分页查询的功能的笔记,这里就也再整理一下喽,送给那些在学习SSH框架的同学,SSH框架因为用的Hibernate,所以与SSM有所不同,希望这个小案例能对大家有所帮助。<!--more--&g…...
2024/5/1 23:05:40 - Linux下的文本编辑器和Windows的编辑器
Linux下有: vi/vim:功能强大,插件多。 gedit:(我的电脑上没有,无法演示) nano命令:nano是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。 nano亲自体验心得:感觉这个编译器还不错,界面丑了点,编译方式有点不太灵…...
2024/5/1 21:23:04 - 自己动手写web服务器四(web服务器是如何通过压缩数据,web服务器的gzip模块的实现)
web服务器为什么要压缩数据?web服务器如果将要发送的网页经过压缩后,待发送的数据将会减少一半左右,将会节省很大一部分的带宽,从而提高自己的并发量和减少网页传输时间。加快网页的浏览。是不是web服务器开启压缩一定会提高性能?不一定的,因为每次压缩,都需要对文件进行…...
2024/4/28 23:40:35 - Nginx-1.9.9 实现 负载均衡、反向代理
《 Nginx-1.9.9 实现 负载均衡、反向代理 》了解 Nginx 虚拟主机《Centos-7.2下使用 Nginx-1.9.9 实现虚拟主机的几种解决方案》 安装 Nginx 《 Centos-7.2 下 Nginx-1.9.9 安装图文详解 》 一、关于 Nginx 的反向代理;通常的代理服务器,只用于代理内部网络对 Internet 的连接…...
2024/5/2 0:42:10 - 玩转spring boot——负载均衡与session共享
前言 当项目上线后,如果要修复bug或扩充功能,都需要重启tomcat服务。此时,正在使用应用的用户们就需要等待服务器的重启,而这就会造成不好的用户体验。还有,当仅仅只有一台tomcat服务时,如果CPU或内存达到极限,就会很难顶住压力。而负载均衡就是解决这些问题的方案。 项…...
2024/5/2 1:12:19 - Java 从网页指定url获取图片并压缩到本地
运行平台: windows10 JDK版本: 1.8 IDE: eclipse一. 知识储备Java IO流 : 推荐博客: Java IO详解 本文用到的IO方法:DataInputStream; BufferedInputStream; FileOutputStream; BufferedOutputStream;BufferedImage类: 简单地说,BufferedImage类是一个能够操作图片的类。…...
2024/4/22 23:20:18 - Git学习笔记之 .ssh默认错误路径问题导致无法克隆GitHub版本库
由于公司的电脑上之前安装过TortoiseGit,在没有卸载的情况下在其他路径下安装了Git,根据廖雪峰前辈的教程在Git Bash中进行学习使用Git,到了远程库章节的时候,依照教程执行到命令:$ ssh-keygen -t rsa -C "youremail@example.com" 时,结果并没有发现.ssh的文件…...
2024/4/20 23:27:21 - 富文本编辑器三种不同图片上传功能
最近在集成富文本和fastDFS文服做图片上传,找了写相关资料,感觉官网的比较全也比较杂。刚好看到一片好的文章,然后我就转载并对不太详细的地方进行了一定的修改并新添加了一种前后端分离的方法。各位小伙伴就将就看吧。一学就会。 下面是转载的小伙伴正文;修改地方我会用红…...
2024/4/20 23:27:19 - 搭建Apache+Tomcat负载均衡集群
一个项目需要搭建Apache+Tomcat负载均衡服务器集群,小弟网上找了很多资料,尝试了很多次,今天终于搭建成功,这里记录一下,欢迎大家一起讨论交流。谢谢!这里主要参考了百度经验这位仁兄的文章,值得推荐一下,同时这里也谈谈这位仁兄的文章中需要注意的几个地方http://jingy…...
2024/4/29 4:09:06
最新文章
- 分布式链路追踪工具Sky walking详解
1,为什么要使用分布式链路追踪工具 随着分布式系统和微服务架构的出现,且伴随着用户量的增加,项目的体量变得十分庞大,一次用户请求会经过多个系统,不同服务之间调用关系十分复杂,一旦一个系统出现错误都可…...
2024/5/2 6:15:33 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - promise.all方式使用
romise.all( ).then( ) 处理多个异步任务,且所有的异步任务都得到结果时的情况。 比如:用户点击按钮,会弹出一个弹出对话框,对话框中有两部分数据呈现,这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…...
2024/5/1 13:17:42 - python爬取B站视频
参考:https://cloud.tencent.com/developer/article/1768680 参考的代码有点问题,请求头需要修改,上代码: import requests import re # 正则表达式 import pprint import json from moviepy.editor import AudioFileClip, Vid…...
2024/5/1 13:29:05 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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