字符串拼接:语言C#(CSharp)
今天我们来介绍一下C#语言的字符串花式拼接方式
1. 基本使用
废话少说,我们直接上代码,介绍一下字符串的拼接的方式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CSharpPrimeNumber
{public class StringSplicingDemo{public void RunDemo(){Console.WriteLine("---------------------------------基本使用---------------------------------");Console.WriteLine("PlusSignString:" + PlusSignString("小蔡同学", "非常帅"));Console.WriteLine("StringFormatString:" + StringFormatString("小蔡同学", "非常帅"));Console.WriteLine("StringBuilderString:" + StringBuilderString("小蔡同学", "非常帅"));Console.WriteLine("StringFormatVS2017:" + StringFormatVS2017("小蔡同学", "非常帅"));Console.WriteLine("--------------------------------------------------------------------------");}/// <summary>/// +号运算/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string PlusSignString(string str1,string str2){string strReturn = str1 + str2;return strReturn;}/// <summary>/// stringFormat拼接字符串/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string StringFormatString(string str1, string str2){string strReturn = string.Format("{0}{1}",str1,str2);return strReturn;}/// <summary>/// StringBuilder拼接字符串/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string StringBuilderString(string str1, string str2){StringBuilder stringBuilder = new StringBuilder();stringBuilder.Append(str1);stringBuilder.Append(str2);return stringBuilder.ToString();}/// <summary>/// VS2017以上提供的字符串拼接/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string StringFormatVS2017(string str1, string str2){string strReturn = string.Format($"{str1}{str2}");return strReturn;}}static void Main(string[] args){StringSplicingDemo pStringSplicingDemo = new StringSplicingDemo();pStringSplicingDemo.RunDemo();Console.ReadKey();}}
好了,到这里,今天的博客就水到这里了
哈哈哈,各位看客老爷别走,还没有分析完。我们继续说一下以上这几种方式的适用场景。
2. 具体分析
2.1. 算法效率
我们建立几个测试数据,我们将他们拼接,看看效率差距有多大
- 简单拼接
n
次,将str1="小菜同学"
和str2="非常帅"
,进行一定次数的拼接 - 复杂拼接
n
次,将滕王阁序
节选拆分后拼接,进行一定次数的拼接
先看结果
---------------------------------1.基本使用---------------------------------
PlusSignString:小蔡同学非常帅
StringFormatString:小蔡同学非常帅
StringBuilderString:小蔡同学非常帅
StringFormatVS2017:小蔡同学非常帅
--------------------------------------------------------------------------
---------------------------------2.算法效率---------------------------------
---------------------------------2.1.简单拼接---------------------------------
---------------------------------2.1.1.简单拼接10000次---------------------------------
PlusSignString:计算10000总共花费1.5047 ms.
StringFormatString:计算10000总共花费3.3441 ms.
StringBuilderString:计算10000总共花费2.7871 ms.
SingletonStringBuilderString:计算10000总共花费2.6882 ms.
StringFormatVS2017:计算10000总共花费1.5376 ms.
--------------------------------------------------------------------------
---------------------------------2.1.2.简单拼接100000次---------------------------------
PlusSignString:计算100000总共花费10.0948 ms.
StringFormatString:计算100000总共花费34.3649 ms.
StringBuilderString:计算100000总共花费16.5996 ms.
SingletonStringBuilderString:计算100000总共花费17.6449 ms.
StringFormatVS2017:计算100000总共花费62.0455 ms.
---------------------------------2.1.2.简单拼接100000次---------------------------------
PlusSignString:计算1000000总共花费117.9943 ms.
StringFormatString:计算1000000总共花费216.8216 ms.
StringBuilderString:计算1000000总共花费170.7078 ms.
SingletonStringBuilderString:计算1000000总共花费103.9131 ms.
StringFormatVS2017:计算1000000总共花费226.8915 ms.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
---------------------------------2.2.复杂拼接---------------------------------
---------------------------------2.2.1.复杂拼接10000次---------------------------------
披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩,闾阎扑地,钟鸣鼎食之家,舸舰弥津,青雀黄龙之舳,云销雨霁,彩彻区明,落霞与孤鹜齐飞,秋水共长天一色,渔舟唱晚,响穷彭蠡之滨,雁阵惊寒,声断衡阳之浦,遥襟甫畅,逸兴遄飞,爽籁发而清风生,纤歌凝而白云遏,睢园绿竹,气凌彭泽之樽,邺水朱华,光照临川之笔,四美具,二难并,穷睇眄于中天,极娱游于暇日,天高地迥,觉宇宙之无穷,兴尽悲来,识盈虚之有数,望长安于日下,目吴会于云间,地势极而南溟深,天柱高而北辰远,关山难越,谁悲失路之人,萍水相逢,尽是他乡之客,怀帝阍而不见,奉宣室以 何年,嗟乎,时运不齐,命途多舛,冯唐易老,李广难封,屈贾谊于长沙,非无圣主,窜梁鸿于海曲,岂乏明时,所赖君子见机,达人知命,老当益壮,宁移白首之心,穷且益坚,不坠青云之志,酌贪泉而觉爽,处涸辙以犹欢,北海虽赊,扶摇可接,东隅已逝,桑榆非晚,孟尝高洁,空余报国之情,阮籍猖狂,岂效穷途之哭。
PlusSignString:计算10000总共花费107.0751 ms.
StringFormatString:计算10000总共花费211.6322 ms.
StringBuilderString:计算10000总共花费24.7743 ms.
SingletonStringBuilderString:计算10000总共花费13.1791 ms.
StringFormatVS2017:计算10000总共花费667.0529 ms.
--------------------------------------------------------------------------
---------------------------------2.2.2.复杂拼接100000次---------------------------------
PlusSignString:计算100000总共花费708.8968 ms.
StringFormatString:计算100000总共花费1498.7978 ms.
StringBuilderString:计算100000总共花费181.1703 ms.
SingletonStringBuilderString:计算100000总共花费103.6469 ms.
StringFormatVS2017:计算100000总共花费4302.9795 ms.
--------------------------------------------------------------------------
其次结论
- 当简单拼接时,
+
的方式是最优的 - 当复杂拼接时,
StringBuilder
的方式最优 - 至于
string.Format
代码的可读性和维护性高一些
再说原因
- 简单拼接时,
StringBuilder
生成实例的方式不划算,且需要对对象进行一定操作清理,如使用SingletonStringBuilderString
单例StringBuilder
- 复杂拼接时,则是由于
string类型具有不可变性,在底层的存储方式是采用享元的方式存储的,对string字符串的操作(如拼接、Trim()等)都会在内存中产生一个新的字符串对象,在对字符串进行频繁修改的情况下,如在For循环中进行操作等,那么将会频繁的创建新的字符串对象,造成系统的不必要开销,所以这种情况下大家都推荐使用StringBuilder类来对字符串进行操作,那么到底是怎么实现的呢?可以参见下方代码
/// <summary>/// Appends a string to the end of this builder./// </summary>/// <param name="value">The string to append.</param>public StringBuilder Append(string? value){if (value != null){// We could have just called AppendHelper here; this is a hand-specialization of that code.char[] chunkChars = m_ChunkChars;int chunkLength = m_ChunkLength;int valueLen = value.Length;if (((uint)chunkLength + (uint)valueLen) < (uint)chunkChars.Length) // Use strictly < to avoid issues if count == 0, newIndex == length{if (valueLen <= 2){if (valueLen > 0){chunkChars[chunkLength] = value[0];}if (valueLen > 1){chunkChars[chunkLength + 1] = value[1];}}else{Buffer.Memmove(ref Unsafe.Add(ref MemoryMarshal.GetArrayDataReference(chunkChars), chunkLength),ref value.GetRawStringData(),(nuint)valueLen);}m_ChunkLength = chunkLength + valueLen;}else{AppendHelper(value);}}return this;}
最后贴代码
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CSharpPrimeNumber
{public class StringSplicingDemo{public void RunDemo(){Console.WriteLine("---------------------------------1.基本使用---------------------------------");Console.WriteLine("PlusSignString:" + PlusSignString("小蔡同学", "非常帅"));Console.WriteLine("StringFormatString:" + StringFormatString("小蔡同学", "非常帅"));Console.WriteLine("StringBuilderString:" + StringBuilderString("小蔡同学", "非常帅"));Console.WriteLine("StringFormatVS2017:" + StringFormatVS2017("小蔡同学", "非常帅"));Console.WriteLine("--------------------------------------------------------------------------");Console.WriteLine("---------------------------------2.算法效率---------------------------------");Console.WriteLine("---------------------------------2.1.简单拼接---------------------------------");Console.WriteLine("---------------------------------2.1.1.简单拼接10000次---------------------------------");SimpleTogether(10000, PlusSignString);SimpleTogether(10000, StringFormatString);SimpleTogether(10000, StringBuilderString);SimpleTogether(10000, SingletonStringBuilderString);SimpleTogether(10000, StringFormatVS2017);Console.WriteLine("--------------------------------------------------------------------------");Console.WriteLine("---------------------------------2.1.2.简单拼接100000次---------------------------------");SimpleTogether(100000, PlusSignString);SimpleTogether(100000, StringFormatString);SimpleTogether(100000, StringBuilderString);SimpleTogether(100000, SingletonStringBuilderString);SimpleTogether(100000, StringFormatVS2017);Console.WriteLine("---------------------------------2.1.2.简单拼接100000次---------------------------------");SimpleTogether(1000000, PlusSignString);SimpleTogether(1000000, StringFormatString);SimpleTogether(1000000, StringBuilderString);SimpleTogether(1000000, SingletonStringBuilderString);SimpleTogether(1000000, StringFormatVS2017);Console.WriteLine("--------------------------------------------------------------------------");Console.WriteLine("--------------------------------------------------------------------------");Console.WriteLine("---------------------------------2.2.复杂拼接---------------------------------");Console.WriteLine("---------------------------------2.2.1.复杂拼接10000次---------------------------------");List<string> listInfo = new List<string>() {"披绣闼","俯雕甍","山原旷其盈视","川泽纡其骇瞩","闾阎扑地","钟鸣鼎食之家","舸舰弥津","青雀黄龙之舳","云销雨霁","彩彻区明","落霞与孤鹜齐飞","秋水共长天一色","渔舟唱晚","响穷彭蠡之滨","雁阵惊寒","声断衡阳之浦","遥襟甫畅","逸兴遄飞","爽籁发而清风生","纤歌凝而白云遏","睢园绿竹","气凌彭泽之樽","邺水朱华","光照临川之笔","四美具","二难并","穷睇眄于中天","极娱游于暇日","天高地迥","觉宇宙之无穷","兴尽悲来","识盈虚之有数","望长安于日下","目吴会于云间","地势极而南溟深","天柱高而北辰远","关山难越","谁悲失路之人","萍水相逢","尽是他乡之客","怀帝阍而不见","奉宣室以何年","嗟乎","时运不齐","命途多舛","冯唐易老","李广难封","屈贾谊于长沙","非无圣主","窜梁鸿于海曲","岂乏明时","所赖君子见机","达人知命","老当益壮","宁移白首之心","穷且益坚","不坠青云之志","酌贪泉而觉爽","处涸辙以犹欢","北海虽赊","扶摇可接","东隅已逝","桑榆非晚","孟尝高洁","空余报国之情","阮籍猖狂","岂效穷途之哭" };Console.WriteLine(string.Join(",", listInfo) + "。");ComplexTogether(10000, listInfo, PlusSignString);ComplexTogether(10000,listInfo, StringFormatString); ComplexTogether(10000, listInfo, StringBuilderString);ComplexTogether(10000, listInfo, SingletonStringBuilderString);ComplexTogether(10000, listInfo, StringFormatVS2017);Console.WriteLine("--------------------------------------------------------------------------");Console.WriteLine("---------------------------------2.2.2.复杂拼接100000次---------------------------------");ComplexTogether(100000,listInfo, PlusSignString);ComplexTogether(100000,listInfo, StringFormatString);ComplexTogether(100000,listInfo, StringBuilderString);ComplexTogether(100000, listInfo, SingletonStringBuilderString);ComplexTogether(100000, listInfo, StringFormatVS2017);Console.WriteLine("--------------------------------------------------------------------------");}StringBuilder SingletonStringBuilder = new StringBuilder();#region 复杂字符串拼接代码段/// <summary>/// 复杂字符串拼接/// </summary>/// <param name="num"></param>/// <param name="list"></param>/// <param name="action"></param>public void ComplexTogether(int num, List<string> list, Func<List<string>, string> action){Stopwatch sw = new Stopwatch();sw.Start();for (int i = 0; i < num; i++){action(list);}sw.Stop();TimeSpan ts2 = sw.Elapsed;Console.WriteLine($"{action.Method.Name}:计算{num}总共花费{ts2.TotalMilliseconds} ms.");}public string PlusSignString(List<string> listInfo){string strReturn = "";for (int i = 0; i < listInfo.Count; i++){strReturn += listInfo[i];}return strReturn;}public string StringFormatString(List<string> listInfo){string strReturn = "";for (int i = 0; i < listInfo.Count; i++){strReturn =string.Format("{0}{1}",strReturn,listInfo[i]);}return strReturn;}public string StringBuilderString(List<string> listInfo){StringBuilder stringBuilder = new StringBuilder();foreach (var item in listInfo){stringBuilder.Append(item);}return stringBuilder.ToString();}/// <summary>/// StringBuilder拼接字符串/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string SingletonStringBuilderString(List<string> listInfo){SingletonStringBuilder.Clear();foreach (var item in listInfo){SingletonStringBuilder.Append(item);}return SingletonStringBuilder.ToString();}public string StringFormatVS2017(List<string> listInfo){string strReturn = "";for (int i = 0; i < listInfo.Count; i++){strReturn = string.Format($"{strReturn}{listInfo[i]}");}return strReturn;}#endregion#region 简单字符串拼接代码段/// <summary>/// 简单字符串拼接/// </summary>/// <param name="num"></param>/// <param name="action"></param>public void SimpleTogether(int num, Func<string,string, string> action){Stopwatch sw = new Stopwatch();sw.Start();for (int i = 0; i < num; i++){action("小蔡同学", "非常帅"+i);}sw.Stop();TimeSpan ts2 = sw.Elapsed;Console.WriteLine($"{action.Method.Name}:计算{num}总共花费{ts2.TotalMilliseconds} ms.");}/// <summary>/// +号运算/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string PlusSignString(string str1,string str2){string strReturn = str1 + str2;return strReturn;}/// <summary>/// stringFormat拼接字符串/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string StringFormatString(string str1, string str2){string strReturn = string.Format("{0}{1}",str1,str2);return strReturn;}/// <summary>/// StringBuilder拼接字符串/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string SingletonStringBuilderString(string str1, string str2){SingletonStringBuilder.Clear();SingletonStringBuilder.Append(str1);SingletonStringBuilder.Append(str2);return SingletonStringBuilder.ToString();}/// <summary>/// StringBuilder拼接字符串/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string StringBuilderString(string str1, string str2){StringBuilder stringBuilder = new StringBuilder();stringBuilder.Append(str1);stringBuilder.Append(str2);return stringBuilder.ToString();}/// <summary>/// VS2017以上提供的字符串拼接/// </summary>/// <param name="str1"></param>/// <param name="str2"></param>/// <returns></returns>public string StringFormatVS2017(string str1, string str2){string strReturn = string.Format($"{str1}{str2}");return strReturn;}#endregion}
}
2.2 代码可读性
- 简单情况下
+
运算,是最清晰的 - 极度复杂且重复的情况下
StringBuilder
是最佳的方式 - 当只是拼接一次
长字符串是
,我认为string.format
可读性是最强的
-
string.Format("{0}",str) 和 string.Format($"{str}")
string.Format($"{str}")
我非常推崇这种写法
举例说明:现在有一个如下代码,使用string.Format("{0}",str)
string strUpdateSql=string.Format("update {0} set FieldA='{1}' where ID ={2}",TableName,FieldAValuem,IDValue);
以上代码是拼接一个sql语句,这样相较+
和StringBuilder
更加具有优势。
如果这个strUpdateSql
不发生改变就还好,但是如果发生改变,如现在需要多更新几个字段,代码转变为如下:几种情况
string strUpdateSql=string.Format("update {0} set FieldA='{1}',FieldA='{2}' where ID ={3}",TableName,FieldAValuem,FieldBValuem,IDValue);
string strUpdateSql=string.Format("update {0} set FieldA='{1}',FieldA='{3}' where ID ={2}",TableName,FieldAValuem,IDValue,FieldBValuem);
如果仔细思考的话,我们应该想到:当字段复杂的时候上述两种拼接都是一个毫无必要的拼接
,第一种情况:遵循强迫症或者说为了代码有一个从始至终的编码逻辑,就需要调整
,第二种情况:可以预想到当经过几轮的没有原则的修改,这个长代码的维护性及其的差
一下我们贴一下+
的代码,仔细对比一下,个人认为在代码的引号上非常容易出错
string strUpdateSql="update "+TableName+" set FieldA='"+FieldAValuem+"',FieldA='"+FieldBValuem+"' where ID ="+IDValue;
在这里我们写一下string.Format($"{str}")
string strUpdateSql=string.Format($"update {TableName} set FieldA='{FieldAValuem}',FieldA='{FieldBValuem}' where ID ={IDValue}");
以上代码的可读性以及维护性及其的好。
但是
,凡是都担心但是,这种写法是在VS2017之后出现的,这种写法是编译器
行为,如果需要在低版本VS中继续编写代码时,就不建议使用这种代码编写格式了。
3. 小技巧
我个人还是看了蛮多上古代码
的,其中有一种代码我见过很多,现在有三个人名,需要用、分隔拼接起来
,大部分代码如下方式。
List<string> listName=new List<string>(){"张三","李四","王五"};string strReturn=listName[0];for(int i=1;i<listName.Count;i++)
{strReturn+="、"+listName[0];
}// string strReturn="";
// for(int i=0;i<listName.Count;i++)
// {
// strReturn+="、"+listName[0];
// }
// strRetuern=strReturn==""?strReturn:strReturn.SubString(1);return strReturn;
个人的写法如下:
List<string> listName=new List<string>(){"张三","李四","王五"};string strReturn=string.Join("、",listName);
C#源码如下:mscorlib_Source\System\String.cs
[ComVisible(false)]
public static string Join(string separator, IEnumerable<string> values)
{if (values == null){throw new ArgumentNullException("values");}if (separator == null){separator = Empty;}using (IEnumerator<string> enumerator = values.GetEnumerator()){if (!enumerator.MoveNext()){return Empty;}StringBuilder builder = new StringBuilder();if (enumerator.Current != null){builder.Append(enumerator.Current);}while (enumerator.MoveNext()){builder.Append(separator);if (enumerator.Current != null){builder.Append(enumerator.Current);}}return builder.ToString();}
}
我个人写代码和改代码都相较蛮快的,是因为在每一个细节上都考虑可读性、简洁、是不是常人思路以及这个地方如果改怎么方便改
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 请求和响应——2004班 44号
1.HttpServletResponse对象 1.1 HttpServletResponse对象 他继承自servletResponse接口,用来封装HTTP响应消息,由于HTTP响应消息分为状态行、响应消息头、消息体三部分,因此,在HttpServletResponse中定义了状态行、响应消息头、消息体三部分; 1.2 setStatus(int status)方法 该…...
2024/4/19 4:42:18 - React-hooks useReducer和useContext 封装和使用
一、React-hooks useReducer和useContext 封装和使用 userReducer.ts 数据存储文件 /** * userReducer.ts * 数据封装:reducer */ type Actions updateUserId | updateToken; export interface TAction {type: Actions;data: any; } export interface TState{us…...
2024/4/16 17:41:02 - QT 编写Rtf(富文本格式) 文件实例
首先, 什么是rtf 格式, rtf称为富文本格,具体的内容如下 :rtf格式是又叫富文本格式或者多文本格式,RTF是Rich Text Format的缩写,意即丰富的文本格式。在rtf文档中可以嵌入图像等文件,RTF是word为了与其他字处理软件兼容而能够保存的文档格式,类似 DOC格式(Word文档)的…...
2024/4/20 5:22:08 - Java中的Set类
Set集合不包含重复元素,包括HashSet、TreeSet和LinkedHashSet三种类型。 HashSet:快速访问。 TreeSet:排序Set。 LinedHashSet:记录插入时的顺序。 Set接口的特性,Set接口继承了Collection接口,Set集合中…...
2024/4/27 3:05:22 - [问题解决]Flutter中GestureDetector+Expanded点击无效果
给GestureDetector包裹的最外层Widget加一个背景色即可: GestureDetector(child: Container(color: Colors.transparent, // 这里加一个颜色child: Row(children: [Text(""),Expanded(child: Container()), // 解决点击这里无法触发onTap的问题Text("…...
2024/4/19 18:24:45 - Linux环境搭建hadoop(伪分布式)平台
伪分布式搭建 1.安装环境 采用的LInux环境为14.04版本 使用的hadoop是3.0.3版本,jdk使用的是8u91版本 2.安装步骤 (1)安装好Linux之后,按ctrlAltT打开终端,进入之后首先增加一个Hadoop用户,并为其设置登…...
2024/4/25 23:11:48 - 6. fontbackground学习
文章目录01.字体02.图标字体03.图标字体04.阿里的字体库05.行高06.字体的简写属性07.文本的样式08.文本的样式09.背景10.背景211.渐变12.径向渐变01.字体 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta …...
2024/4/15 6:08:19 - Linux下搭建hadoop平台
伪分布式搭建 1.安装环境 采用的LInux环境为14.04版本 使用的hadoop是3.0.3版本,jdk使用的是8u91版本 2.安装步骤 (1)安装好Linux之后,按ctrlAltT打开终端,进入之后首先增加一个Hadoop用户,并为其设置登…...
2024/4/18 9:33:04 - Jmeter简单测试
Jmeter简单测试 // 先运行打包好的项目jar包 java -jar 项目jar包// 在windows可视化下的jmeter中配置好查看器并保存,然后将其粘贴到服务器配置的jmeter的bin目录下# 运行 # ./jmeter.sh -n -t (first.jmx 配置文件名称) -l(记录日志文件) result.jtl(运行到这个目录中)// 再…...
2024/4/20 14:28:30 - 上线仅1小时点击量破千万,阿里巴巴首发:Java核心框架指导手册
来了,来了!他终于来了,阿里巴巴最新推出的Java核心框架指导手册,终于出来了。1小时的点击量就破了千万! 手册分为三个部分:第一部分:解读MyBatis框架中关于接口层和配置文件解析过程;…...
2024/4/27 5:55:27 - 二叉排序树BST
二叉排序树:BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点…...
2024/4/24 14:39:15 - 力扣 198. 打家劫舍
题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放…...
2024/4/20 10:27:30 - what is your research about?
近似算法的支配分析是一种估计算法性能的方法,由Glover和Punnen在1997年提出。与经典的近似比分析不同的是,支配分析是将计算出的解与最优解的数字质量进行比较,而支配分析则是考察计算出的解在所有可能的解中的排序情况。在这种分析方式中&a…...
2024/4/15 6:09:34 - 基于mysql实现乐观锁
最近开发微服务商城用户账户余额扣减发生的问题,比如说一个用户的账户同时扣减买东西的时候在高并发情况下会出现余额少扣的情况。 其实解决方案可以使用悲观锁去只让一个线程去实现,但是我想做并发量并不是很大感觉极限情况下最多也就10qps 悲观锁阻塞…...
2024/4/26 14:30:48 - STC15W408AS-35I-DIP28引脚功能图
STC15W408AS-35I-DIP28引脚功能图吐槽一下STC这芯片命名乱七八糟的,真难找。名字能不能统一。 官网详细地址:http://www.stcmicro.com/cn/stc/stc15w408as.htmlPDF:http://www.stcmicro.com/datasheet/STC15F2K60S2-cn.pdfSTC15W408AS-35I-DI…...
2024/4/20 2:52:21 - 算法-------树
1.什么是树? 树的概念 2.二叉树 3.1,在二叉树的第i层上最多有 2i-1个结点(i>1) 3.2,深度为k的二叉树至多有2k-1个结点 2021222324252627…2k-11 12021222324252627…2k-1-1 2121222324252627…2k-1-1 22222324252…...
2024/4/26 15:38:52 - 05基本运算符
运算符 Java 语言支持如下运算符: 优先级() 算术运算符:, -, *, /, %, , -- 赋值运算符: 关系运算符:>, <, >, <, , ! instanceof 逻辑运算符:&&, ||, ! 位运算符:&, |, ^, ~,…...
2024/4/19 8:52:58 - 学习笔记:分块
前言 分块可以解决几乎全部的区间查询区间更新等问题,功能比线段树和树状数组要强大,但是时间复杂度会更大一点。其实分块就是一种优化过的暴力,它是对于整体进行像线段树一样的维护,对局部进行暴力的修改。 原理 顾名思义分块…...
2024/4/24 17:57:00 - 在做项目过程中遇到的问题
1.Mybatis主键异常 异常如下图所示 由于是通过selectKey生成主键id的数值,此时,mybatis会在主键上生成其默认的uuid的值,比如上面的1455491125125300226 如果UUID的值超过主键id字符串长度,就会报下面的错误 解决办法 在封装属…...
2024/4/25 8:11:53 - RobotFramework3
一. 注意:跳转窗口需要Select Window By Handle关键字,但是类库中没有对应的关键字,需要我们进行如 下操作 1:在D:\python\Lib\site-packages\SeleniumLibrary\locators\windowmanager.py中 添加 def select_by_handle(self, browser, toHan…...
2024/4/20 14:04:55
最新文章
- 法律知识学习考试系统 C#+uniapp+asp.net微信小程序
技术要求:后端C#,安卓app,mysql数据库 系统分为管理员、教师端和学生端: 管理员端实现管理员的注册登录以及教师和学生的注册、法律法规内容的发布与更新、法律法规页面的评论的添加与删除、内容查询、知识小测的内容发布与删除、问卷调查的发…...
2024/4/27 9:40:48 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Java-运算符
运算符 Java语言支持如下运算符: 算术运算符:,-,*,/,%,,--复制运算符:关系运算符:>, <, >, <, , !instanceof逻辑运算符:&&…...
2024/4/27 0:55:38 - PostCss:详尽指南之安装和使用
引言 在现代前端开发中,CSS预处理器如Sass、Less等已经成为提升开发效率、增强代码可维护性的重要工具。然而,随着Web技术的发展,CSS的功能也在不断扩展,一些新的CSS语法(如变量、自定义属性、CSS Grid等)以…...
2024/4/26 1:51:33 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/26 18:09:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/26 20:12:18 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/27 4:00:35 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/25 18:39:22 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/25 18:39:22 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/26 21:56:58 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/27 9:01:45 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/26 16:00:35 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/25 18:39:16 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/26 22:01:59 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/25 2:10:52 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/25 18:39:00 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/25 18:38:58 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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