当前位置: 首页 > news >正文

【C#】.Net基础语法二

目录

一、字符串(String)

【1.1】字符串创建和使用

【1.2】字符串其他方法

【1.3】字符串格式化的扩展方法

【1.4】字符串空值和空对象比较

【1.5】字符串中的转移字符

【1.6】大写的String和小写的string

【1.7】StringBuilder类的重要性

二、数组(Array)

【2.1】声明数组

【2.2】赋值数组

【2.3】使用数组

【2.4】区分值类型变量和引用类型变量

三、动态数组

【3.1】动态数组简单应用

【3.2】动态数组常用属性和方法

四、常量

五、枚举(Enum)

【5.1】枚举类型声明

【5.2】常见的系统枚举

【5.3】枚举类型的转化


一、字符串(String)

【1.1】字符串创建和使用

您可以使用以下方法之一来创建 string 对象:

  • 通过给 String 变量指定一个字符串

  • 通过使用 String 类构造函数

  • 通过使用字符串串联运算符( + )

  • 通过检索属性或调用一个返回字符串的方法

  • 通过格式化方法来转换一个值或对象为它的字符串表示形式

static void TestCode()
{string email = "xxxxxx@qq.com";// 获取指定字符串第一个字符的索引int index1 = email.IndexOf("@");      // 返回索引int index2 = email.IndexOf("qq.com"); // 返回起始索引int index3 = email.IndexOf("qq.net"); // 如果没有找到返回-1Console.WriteLine($"{index1} {index2} {index3}"); // 打印结果:6 7 -1
​// 获取字符串的长度int lenght = email.Length;Console.WriteLine($"字符串长度:{lenght}"); // 打印结果:13
​// 字符串截取Substring方法string str1 = email.Substring(0, 6);Console.WriteLine($"截取内容:{str1}"); // 打印结果:xxxxxxstring str2 = email.Substring(0, email.IndexOf("@"));Console.WriteLine($"截取内容:{str2}"); // 打印结果:xxxxxxstring str3 = email.Substring(email.IndexOf("@") + 1);Console.WriteLine($"截取内容:{str3}"); // 打印结果:qq.com
​// 字符串比较string strName1 = "jack";string strName2 = "jack";string strName3 = "jddd";Console.WriteLine(strName1 == strName2); // 打印结果:TrueConsole.WriteLine(strName1 == strName3); // 打印结果:FalseConsole.WriteLine("strName1 == strName2:" + (strName1 == strName2)); // 打印结果:strName1 == strName2:TrueConsole.WriteLine("strName1 == strName3:" + (strName1 == strName3)); // 打印结果:strName1 == strName3:True// Equals是一个虚方法Console.WriteLine(strName1.Equals(strName2)); // 打印结果:True   Console.WriteLine(strName1.Equals(strName3)); // 打印结果:False// 提示:==或Equals方法默认智能比较“值类型”或者“字符串”类型,对象类型(引用类型)是不能使用这种比较方法的。string str4 = "askjdhASDAasd";// 字符串转换为小写Console.WriteLine(str4.ToLower()); // 打印结果:askjdhasdaasd// 字符串转换为大写Console.WriteLine(str4.ToUpper()); // 打印结果:ASKJDHASDAASD// 字符串去掉前后空格Console.WriteLine(str4.Trim());    // 打印结果:askjdhASDAasd// 字符串分割和拼接// Split():基于数组中的字符将字符串拆分为多个子字符串。// string.Join():串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符。string strVal = "AB CD EF HU 00";Console.WriteLine(strVal);
​// 将字符串进行分割string[] strArray = strVal.Split(' ');foreach(string val in strArray){Console.WriteLine(val + " ");}
​// 将字符串数组重新拼接string strJoin = string.Join("_", strArray);Console.WriteLine(strJoin);
​
​// 字符串替换// Replace(): 返回一个新字符串,其中此实例中出现的所有指定 Unicode 字符都替换为另一个指定的 Unicode 字符。string strVal2 = "AB CD EF HU 00";Console.WriteLine(strVal2);string strVal3 = strVal2.Replace(' ', '@');Console.WriteLine(strVal3);
​Console.Read();
}

【1.2】字符串其他方法

序号方法名称 & 描述
1public static int Compare( string strA, string strB ) 比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。该方法区分大小写。
2public static int Compare( string strA, string strB, bool ignoreCase ) 比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。但是,如果布尔参数为真时,该方法不区分大小写。
3public static string Concat( string str0, string str1 ) 连接两个 string 对象。
4public static string Concat( string str0, string str1, string str2 ) 连接三个 string 对象。
5public static string Concat( string str0, string str1, string str2, string str3 ) 连接四个 string 对象。
6public bool Contains( string value ) 返回一个表示指定 string 对象是否出现在字符串中的值。
7public static string Copy( string str ) 创建一个与指定字符串具有相同值的新的 String 对象。
8public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count ) 从 string 对象的指定位置开始复制指定数量的字符到 Unicode 字符数组中的指定位置。
9public bool EndsWith( string value ) 判断 string 对象的结尾是否匹配指定的字符串。
10public bool Equals( string value ) 判断当前的 string 对象是否与指定的 string 对象具有相同的值。
11public static bool Equals( string a, string b ) 判断两个指定的 string 对象是否具有相同的值。
12public static string Format( string format, Object arg0 ) 把指定字符串中一个或多个格式项替换为指定对象的字符串表示形式。
13public int IndexOf( char value ) 返回指定 Unicode 字符在当前字符串中第一次出现的索引,索引从 0 开始。
14public int IndexOf( string value ) 返回指定字符串在该实例中第一次出现的索引,索引从 0 开始。
15public int IndexOf( char value, int startIndex ) 返回指定 Unicode 字符从该字符串中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
16public int IndexOf( string value, int startIndex ) 返回指定字符串从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
17public int IndexOfAny( char[] anyOf ) 返回某一个指定的 Unicode 字符数组中任意字符在该实例中第一次出现的索引,索引从 0 开始。
18public int IndexOfAny( char[] anyOf, int startIndex ) 返回某一个指定的 Unicode 字符数组中任意字符从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
19public string Insert( int startIndex, string value ) 返回一个新的字符串,其中,指定的字符串被插入在当前 string 对象的指定索引位置。
20public static bool IsNullOrEmpty( string value ) 指示指定的字符串是否为 null 或者是否为一个空的字符串。
21public static string Join( string separator, string[] value ) 连接一个字符串数组中的所有元素,使用指定的分隔符分隔每个元素。
22public static string Join( string separator, string[] value, int startIndex, int count ) 连接一个字符串数组中的指定位置开始的指定元素,使用指定的分隔符分隔每个元素。
23public int LastIndexOf( char value ) 返回指定 Unicode 字符在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。
24public int LastIndexOf( string value ) 返回指定字符串在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。
25public string Remove( int startIndex ) 移除当前实例中的所有字符,从指定位置开始,一直到最后一个位置为止,并返回字符串。
26public string Remove( int startIndex, int count ) 从当前字符串的指定位置开始移除指定数量的字符,并返回字符串。
27public string Replace( char oldChar, char newChar ) 把当前 string 对象中,所有指定的 Unicode 字符替换为另一个指定的 Unicode 字符,并返回新的字符串。
28public string Replace( string oldValue, string newValue ) 把当前 string 对象中,所有指定的字符串替换为另一个指定的字符串,并返回新的字符串。
29public string[] Split( params char[] separator ) 返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。
30public string[] Split( char[] separator, int count ) 返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。int 参数指定要返回的子字符串的最大数目。
31public bool StartsWith( string value ) 判断字符串实例的开头是否匹配指定的字符串。
32public char[] ToCharArray() 返回一个带有当前 string 对象中所有字符的 Unicode 字符数组。
33public char[] ToCharArray( int startIndex, int length ) 返回一个带有当前 string 对象中所有字符的 Unicode 字符数组,从指定的索引开始,直到指定的长度为止。
34public string ToLower() 把字符串转换为小写并返回。
35public string ToUpper() 把字符串转换为大写并返回。
36public string Trim() 移除当前 String 对象中的所有前导空白字符和后置空白字符。

【1.3】字符串格式化的扩展方法

字符说明实例输出结果
C货币格式string.Format(" {0:C3}", 5000)¥5000.000
D十进制格式string.Format(" {0:D3}", 5000)5000
F小数点后的位数固定string.Format(" {0:F3}", 5000)5000.00
N用逗号隔开的数字string.Format(" {0:N}", 250000)250,000.0
P百分比计数法string.Format(" {0:P3}", 0.25755)257.55%
X十六进制格式string.Format(" {0:X000}", 12)C
static void TestCode()
{Console.WriteLine(string.Format(" {0:C3}", 5000));      // 打印结果: ¥5,000.000Console.WriteLine(string.Format(" {0:D3}", 5000));      // 打印结果: 5000Console.WriteLine(string.Format(" {0:F3}", 5000));      // 打印结果: 5000.000Console.WriteLine(string.Format(" {0:N}", 250000));     // 打印结果: 250,000.00Console.WriteLine(string.Format(" {0:P2}", 25000));     // 打印结果: 2,500,000.00%Console.WriteLine(string.Format(" {0:P3}", 25000));     // 打印结果: 2,500,000.000%Console.WriteLine(string.Format(" {0:P3}", 0.25755));   // 打印结果: 25.755%Console.WriteLine(string.Format(" {0:X000}", 12));      // 打印结果: C
​double sum = 2.1231241;Console.WriteLine(sum.ToString("0.00"));  // 打印结果:2.12Console.WriteLine(sum.ToString("0.000")); // 打印结果:2.123
​Console.Read();
}

【1.4】字符串空值和空对象比较

static void TestCode()
{// 这个“空”字符串是占用空间的string str1 = "";
​// 和 string str1 = "" 一样string str2 = string.Empty;
​// 这个会有语法错误// string str3;
​// 这个是存在一个赋值过程的,不占用空间string str4 = null; // 如果这样直接使用会出现错误,为引用的对象
​// 判断字符串为空值if (str1.Length == 0) ;if (str1 == string.Empty) ;if (str1 == "") ;// 判断字符串为空if (str1 == null) ;
​// 推荐使用方法// 如果 true 参数为 value 或 null,或者如果 Empty 仅由空白字符组成,则为 value。string.IsNullOrWhiteSpace(str1); 
}

【1.5】字符串中的转移字符

  • 转移字符:具有特定含义,不用于字符原有的意思。

  • 常用反斜杠:【\\】【@】

static void TestCode()
{string path1 = "C:\\DB\\Test.txt";string path2 = @"C:\DB\Test.txt";
​Console.WriteLine(path1); // C:\DB\Test.txtConsole.WriteLine(path2); // C:\DB\Test.txtConsole.Read();
}

其他转移字符:

转义序列含义
\\ 字符
'' 字符
"" 字符
\?? 字符
\aAlert 或 bell
\b退格键(Backspace)
\f换页符(Form feed)
\n换行符(Newline)
\r回车
\t水平制表符 tab
\v垂直制表符 tab
\ooo一到三位的八进制数
\xhh . . .一个或多个数字的十六进制数

【1.6】大写的String和小写的string

  • String是.Net Framework的类(在C#的IDE中不会显示颜色)。

  • string是C#的关键字,也就是String类的别名,表示一种数据类型,映射为.Net Framwork中的String。

  • 使用string时编译器会把它编译成String。

  • string关键字,不能作类、结构、枚举、常量、方法、属性的名称,而String不是关键字,可以作为名称。

【1.7】StringBuilder类的重要性

常用方法说明
Append()在尾巴追加
Insert()在指定位置插入
Remove()移除指定位置字符串
AppendFormat()追加的同时格式化
Clear()清空
Replace()替换字符
static void TestCode()
{string data = "";data += "AB";data += "CD";data += "EF";Console.WriteLine(data);// 以上的程序执行过程:每次拼接都会重新开辟一个新的空间来重新存储组合后的值。
​// 解决方式:可以定义可变字符串,实现字符串的追加。// 常用的方法:Append、Insert、Remove、AppendFormat、clear..等。// 使用:如果高频的字符串拼接中首选,普通的简单拼接依然可以使用前面的方法。StringBuilder sb = new StringBuilder();sb.Append("AB"); // 追加sb.Append("BC"); // 追加sb.Append("EF"); // 追加Console.WriteLine(sb.ToString());
​sb.Clear(); // 清空for(int i = 0; i < 3; i++){Console.Write($"请输入第{i + 1}个数据: ");sb.Append(Console.ReadLine());}Console.WriteLine(sb.ToString());
​sb.Clear(); // 清空sb.Insert(0, "AAAA"); // 插入sb.Insert(sb.Length, "BBBB"); // 插入Console.WriteLine(sb.ToString());
​sb.Remove(0, 4); // 移除Console.WriteLine(sb.ToString());
​Console.Read();
}

二、数组(Array)

数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。

数组基本要素包含:

  • 标识符:数组的名称。

  • 元 素:存放的数据。

  • 类 型:元素的数据类型。

  • 下 标:元素的索引(从0开始)。

【2.1】声明数组

datatype[] arrayName;
​
// datatype 用于指定被存储在数组中的元素的类型。
// [ ] 指定数组的秩(维度)。秩指定数组的大小。
// arrayName 指定数组的名称。

【2.2】赋值数组

// 赋值方法一:通过使用索引号赋值给一个单独的数组元素
double[] balance = new double[10];
balance[0] = 4500.0;
​
// 赋值方法二:可以在声明数组的同时给数组赋值
double[] balance = { 2340.0, 4523.69, 3421.0};
​
// 赋值方法三:可以创建并初始化一个数组
double[] balance = { 2340.0, 4523.69, 3421.0};
​
// 赋值方法四:以省略数组的大小
double[] balance = { 2340.0, 4523.69, 3421.0};
​
// 赋值方法五:可以赋值一个数组变量到另一个目标数组变量中
int [] marks = new int[]  { 99,  98, 92, 97, 95};
int[] score = marks;

【2.3】使用数组

// 使用for循环遍历
static void CodeTest()
{int[] scoreArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };for (int i = 0; i < scoreArray.Length; i++){Console.Write(scoreArray[i] + " "); // 打印结果:1 2 3 4 5 6 7 8 9 10}
}
​
// 使用foreach循环遍历
static void CodeTest()
{int[] scoreArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };foreach(int val in scoreArray){Console.Write(val + " "); // 打印结果:1 2 3 4 5 6 7 8 9 10}
}

数组中常用的方法:

方法名说明
Max获取数组最大值
Min获取数组最小值
Contains判断某一个元素是否包含
Sum求和
Count求数组元素数
Reverse逆置
IndexOf获取指定元素匹配的第一个位置
LastIndexOf获取指定元素匹配的最后第一个位置
Sort排序

【2.4】区分值类型变量和引用类型变量

  • 值类型变量,又被称为【基本数据类型变量】

  • 引用类型变量,又被称为【对象类型变量】

值类型代码:

static void CodeTest()
{int A = 10;int B = 20;Console.WriteLine("A: " + A); 	// 10Console.WriteLine("B: " + B); 	// 20Console.WriteLine("----------------------");int C = A;C += 100;Console.WriteLine("C: " + C); 	// 110Console.WriteLine("----------------------");Console.WriteLine("A: " + A); 	// 10Console.WriteLine("B: " + B); 	// 20
}// 值类型变量在传值时,传递的是变量的”副本“,而不是变量本身,变量修改后互相没有影响。
// 常见的值类型:
// int、float、double、decimal....等

引用类型代码:

static void CodeTest()
{int[] arrayA = { 10, 20 };Console.WriteLine("A: " + arrayA[0]); // 10Console.WriteLine("B: " + arrayA[1]); // 20Console.WriteLine("----------------------");int[] arrayC = arrayA;arrayC[0] += 100;Console.WriteLine("C: " + arrayC[0]); // 110Console.WriteLine("----------------------");Console.WriteLine("A: " + arrayA[0]); // 110Console.WriteLine("B: " + arrayA[1]); // 20
}// 引用类型变量在传值时,是将自己传递给他人,没有开辟新的控件 自己=变量地址/指针
// 常见引用类型:
// string字符串、数组、系统库中的各种类、自定义的类

注意:string字符串的底层是引用类型(.Net做了特殊包装,属于引用类型,但需要当值类型来使用)

三、动态数组

        在C#中,ArrayList 是一个非泛型的对象集合,其大小会动态增加。它与Array相同,只是它的大小是动态增加的。

        一个ArrayList可以用来添加未知数据,可能你并不知道的类型和数据的大小。

System.Collections 命名空间中包含的 ArrayList 类。ArrayList使用 new 关键字创建对象。

官方文档:ArrayList 类 (System.Collections) | Microsoft Learn

【3.1】动态数组简单应用

static void CodeTest()
{// 添加数据ArrayList arrayList = new ArrayList();arrayList.Add(1);arrayList.Add(2);arrayList.Add("New York");arrayList.Add("London");// 遍历for(int i = 0; i < arrayList.Count; i++){Console.Write(arrayList[i].ToString() + " ");}Console.WriteLine();// 获取长度int arrayCount = arrayList.Count;// 转换为数组object[] objArray = arrayList.ToArray();// 添加数组string[] strS = { "AA", "BB", "CC", "DD" };arrayList.AddRange(strS);for (int i = 0; i < arrayList.Count; i++){Console.Write(arrayList[i].ToString() + " ");}Console.WriteLine();// 查找某个元素bool bRet1 = arrayList.Contains("AA");bool bRet2 = arrayList.Contains("HH");// 指定位置插入元素arrayList.Insert(3, "插入值");for (int i = 0; i < arrayList.Count; i++){Console.Write(arrayList[i].ToString() + " ");}Console.WriteLine();// 移除元素arrayList.Remove("插入值");arrayList.RemoveAt(2);for (int i = 0; i < arrayList.Count; i++){Console.Write(arrayList[i].ToString() + " ");}Console.WriteLine();arrayList.Clear();
}

【3.2】动态数组常用属性和方法

属性描述
Capacity获取或设置ArrayList可以包含的元素数。
Count获取ArrayList中实际包含的元素数。
IsFixedSize获取一个值,该值指示 ArrayList 是否具有固定大小。
IsReadOnly获取一个值,该值指示ArrayList是否为只读。
Item获取或设置指定索引处的元素。
方法描述
Add()/AddRange()Add ()方法在 ArrayList 的末尾添加单个元素。AddRange ()方法将指定集合中的所有元素添加到 ArrayList 中。
Insert()/InsertRange()Insert ()方法在 ArrayList 中的指定索引处插入单个元素。InsertRange ()方法从 ArrayList 中的指定索引开始插入指定集合的所有元素。
Remove()/RemoveRange()Remove ()方法从 ArrayList 中删除指定的元素。RemoveRange ()方法从 ArrayList 中删除指定范围的元素。
RemoveAt()从 ArrayList 中移除指定索引处的元素。
Sort()对 ArrayList 的所有元素排序。
Reverse()反转整个 ArrayList 中元素的顺序。
Contains检查指定的元素是否存在于 ArrayList 中。如果存在则返回 true,否则返回 false。
Clear移除 ArrayList 中的所有元素。
CopyTo将所有元素或元素范围复制到可编译数组。
GetRange从 ArrayList 返回指定索引中指定的元素数。
IndexOf搜索指定的元素,如果找到,则返回从零开始的索引。如果找不到元素,则返回-1。
ToArray从ArrayList返回 数组。

四、常量

常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量,常量可以被当作常规的变量,只是它们的值在定义后不能被修改。

static void CodeTest()
{// 定义变量int value = 10;value = 100;  // 变量是可以被修改的。// 定义常量const int VALUE = 10;VALUE = 100;  // 报错了:赋值号左边必须是变量、属性和索引器。
}

五、枚举(Enum)

枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的,C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

枚举作用:可以用来定义 “有限个变量值”,方便选择使用,避免出错。

枚举特点:可以表示一组描述性的名称,还可以有对应的 “整数值”。

【5.1】枚举类型声明

enum <enum_name>
{ enumeration list 
};// enum_name 指定枚举的类型名称。
// enumeration list 是一个用逗号分隔的标识符列表。

【5.2】常见的系统枚举

namespace System
{// 摘要: //     指定一周中的某天。[Serializable][ComVisible(true)]public enum DayOfWeek{Sunday = 0,Monday = 1,Tuesday = 2,Wednesday = 3,Thursday = 4,Friday = 5,Saturday = 6,}
}// 结合代码:
static void CodeTest()
{DayOfWeek week = DayOfWeek.Friday;switch (week){case DayOfWeek.Friday:Console.WriteLine("今天是星期日");break;case DayOfWeek.Monday:Console.WriteLine("今天是星期一");break;case DayOfWeek.Saturday:Console.WriteLine("今天是星期二");break;case DayOfWeek.Sunday:Console.WriteLine("今天是星期三");break;case DayOfWeek.Thursday:Console.WriteLine("今天是星期四");break;case DayOfWeek.Tuesday:Console.WriteLine("今天是星期五");break;case DayOfWeek.Wednesday:Console.WriteLine("今天是星期六");break;default:break;}
}

【5.3】枚举类型的转化

        枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0。

// 比如说:
enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };
=
enum Days { Sun = 0, Mon, tue, Wed, thu, Fri, Sat };
  • 获取枚举的常量名

Days nDay = Days.Mon;
  • 获取枚举类型的常量值

int iDay = Convert.ToInt32(Days.Mon);
  • 通过字符串获取枚举类型的常量名

string str = "Wed";
Days toiDay = (Days)Enum.Parse(typeof(Days), str);
  • 通常数值获取枚举类型的常量值

int iVal = 2;
string tosDay = Enum.GetName(typeof(Days), iVal);
  • 通过枚举类型,获取所有常量名的字符串数组

string[] tosDays = Enum.GetNames(typeof(Days));

相关文章:

【C#】.Net基础语法二

目录 一、字符串(String) 【1.1】字符串创建和使用 【1.2】字符串其他方法 【1.3】字符串格式化的扩展方法 【1.4】字符串空值和空对象比较 【1.5】字符串中的转移字符 【1.6】大写的String和小写的string 【1.7】StringBuilder类的重要性 二、数组(Array) 【2.1】声…...

C++之this指针总结(二百二十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

C++——如何正确的使用STL中的vector?

什么是vector&#xff1f; 在STL&#xff08;标准模板库&#xff09;中&#xff0c;vector是一种动态数组容器&#xff0c;可根据需要自动增长或缩小。它可以存储任意类型的元素&#xff0c;并且支持快速的随机访问。 vector是表示可变大小数组的序列容器vector采用的是连续的…...

【C语言】模拟实现内存函数

本篇文章目录 相关文章1. 模拟 memcpy 内存拷贝2. 模拟 memmove 内存移动 相关文章 【C语言】数据在内存中是以什么顺序存储的&#xff1f;【C语言】整数在内存中如何存储&#xff1f;又是如何进行计算使用的&#xff1f;【C语言】利用void*进行泛型编程【C语言】4.指针类型部…...

Jenkins学习笔记3

gitgithubjenkins&#xff1a; 架构图&#xff1a; 说明&#xff1a;jenkins知道github有更新了&#xff0c;就pull进行构建build&#xff0c;编译、自动化测试。然后部署到应用服务器。 maven java的项目构建工具。 在开发者电脑上创建空密码密钥对。 [rootgit-developer ~…...

基于单片机火灾报警器仿真设计

一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20采集温度值送到液晶1602显示。 3、MQ2采集烟雾值&#xff0c;送到液晶1602显示。 4、按键设置温度报警值&#xff0c;大于报警值&#xff0c;声光报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计…...

阿里测开面试大全(一)附答案完整版

万字长文&#xff0c;建议收藏 1 什么是POM&#xff0c;为什么要使用它&#xff1f; POM是Page Object Model的简称&#xff0c;它是一种设计思想&#xff0c;而不是框架。大概的意思是&#xff0c;把一个一个页面&#xff0c;当做一个对象&#xff0c;页面的元素和元素之间操…...

STL-常用容器

string容器 string构造函数 string本质&#xff1a;类 string和char*区别&#xff1a; char* 是一个指针 string是一个类&#xff0c;类内部封装了char*&#xff0c;管理这个字符串&#xff0c;是一个char*型的容器。 特点&#xff1a; string类内部封装了很多成员方法 …...

【owt】关闭microk8s 等无关服务

打算部署下owt,发现之前跑了microk8s ,一直运行:操作指令 // 1. 启动 microk8s.start// 2. 关闭 microk8s.stop// 3. kubectl 操作 // --- 查看 cluster microk8s.kubectl cluster-info// --- 查看 nodes microk8s.kubectl get nodes// --- 查看 pods microk8s.kubectl get …...

【面试题】——Spring

1.Spring是什么&#xff1f; Spring是一个开源的Java应用框架&#xff0c;它提供了广泛的基础设施支持&#xff0c;用于构建Java应用程序。极大提高了开发效率。它提供了一种轻量级的编程模型&#xff0c;通过依赖注入&#xff08;Dependency Injection&#xff09;和面向切面…...

【算法思想-排序】根据另一个数组次序排序 - 力扣 1122 题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...

毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计

基于stm32单片机的app视频遥控抽水灭火水泵小车设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 L298N电机驱动电路设计2.2 继电器控制电路设计 3、部分代码展示3.1 小车控制代码3.1 水泵控制代码 4 演示视频及代码资料获取 1、项目简介 视频简介中包含资料http…...

编译原生安卓aosp源码,实现硬改以及定位

系列文章目录 第一章 安卓aosp源码编译环境搭建 第二章 手机硬件参数介绍和校验算法 第三章 修改安卓aosp代码更改硬件参数 第四章 编译定制rom并刷机实现硬改(一) 第五章 编译定制rom并刷机实现硬改(二) 第六章 不root不magisk不xposed lsposed frida原生修改定位 第七章 安卓…...

找单身狗。一个数组中只有两个数字出现一次,其他数字出现了两次,编写一个函数找出这两个只出现一次的数字

例&#xff1a;在{1 2 3 4 5 6 1 2 3 4}找出5和6 方法二&#xff1a; 设计思想&#xff1a; 1.分组原理 &#xff08;1&#xff09;将所有数字进行异或&#xff0c;相同数字异或为零&#xff0c;所以只会剩5^6&#xff0c;即为异或的结果xor_result &#xff08;…...

Java数据结构技巧

Java数据结构技巧 1、循环 for-each循环如果不是"[]"的数组类型&#xff0c;则需要提前判断数据结构是否为空&#xff0c;否则有可能会有空指针异常。 2、对于List对象的i到j位进行排序 for(List<String> now_result:result){List<String> sublist …...

easyui disabled 属性设置

1.设置disabled $("#id").attr("disabled",true); 或 $("#id").attr("disabled","随意字符"); easyui写法 $("#id").numberbox("textbox").attr("disabled", true); $("#id")…...

使用容器运行Nginx应用及Docker命令

目录 一、使用容器运行Nginx应用 1.1 使用docker run命令运行Nginx应用 1.1.1 观察下载容器镜像过程 1.1.2 观察容器运行情况 ​编辑 1.2 访问容器中运行的Nginx服务 1.2.1 确认容器IP地址 1.2.2 容器网络说明 1.2.3 在主机中使用curl命令容器IP地址访问 二、Docker命…...

fastapi 基本介绍+使用

FastAPI是一个基于Python 3.6的现代、快速&#xff08;高性能&#xff09;的web框架&#xff0c;它使用Starlette作为其底层Web框架。FastAPI有很好的文档和丰富的功能&#xff0c;包括自动为路由生成API文档、查询参数验证、依赖注入、WebSocket等等。 以下是一个FastAPI的基…...

C语言的结构体的认识

注&#xff1a;类似于①、②……是代码的编写顺序&#xff0c;也是对下方代码的注解 【①】、【②】……是用到了之前的代码 #include <stdio.h> //②定义生日结构体&#xff0c;必须声明在前面不然会报错&#xff0c;c语言是从上到下执行的&#xff08;这点要注意&#…...

只通过在vimrc文件写东西来实现或安装vim的插件

2023年9月23日&#xff0c;周日上午 有时候觉得用插件管理器来安装插件太麻烦了&#xff0c; 所以我就在想能不能只通过在vimrc文件写东西来实现或安装vim的插件&#xff0c; 不过这样做肯定有很大的局限性&#xff0c;但我会尽量做到最好的效果 不定期更新 把下面这些代码…...

云原生Kubernetes:K8S存储卷

目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验 1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享…...

“五育”并举育人体系构建的实践研究课题实施方案

目录 一、研究背景与意义 二、课题理论依据 三、国内外研究情况与现状 四、研究目标...

小样本目标检测:ECEA: Extensible Co-Existing Attention for Few-Shot Object Detection

论文作者&#xff1a;Zhimeng Xin,Tianxu Wu,Shiming Chen,Yixiong Zou,Ling Shao,Xinge You 作者单位&#xff1a;Huazhong University of Science and Technology; UCAS-Terminus AI Lab 论文链接&#xff1a;http://arxiv.org/abs/2309.08196v1 内容简介&#xff1a; 1&…...

Android 10.0 系统开启和关闭黑白模式主题功能实现

1. 概述 在10.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…...

Linux-VI和VIM

目录 VI的使用 VI的三种模式 进入VI 切换至插入模式&#xff08;Insert mode&#xff09;编辑文件 Insert 的切换 退出VI及保存文件 搜索 快捷删除 光标定位到最后一行 VIM查找字符串 全匹配 模糊匹配&#xff08;正则表达式&#xff09; 快速查找​​​​​​…...

【送书】实现可观测性平台的技术要点是什么?

文章目录 实现可观测性平台的技术要点是什么?兼容全域信号量所谓全域信号量有哪些&#xff1f;统一采集和上传工具统一的存储后台自由探索和综合使用数据总结 实现可观测性平台的技术要点是什么? 随着可观测性理念的深入人心&#xff0c;可观测性平台已经开始进入了落地阶段…...

AUTOSAR汽车电子嵌入式编程精讲300篇-车载网络 CAN 总线报文异常检测

目录 前言 国内外研究现状 车载网络 CAN 总线威胁分析和报文异常检测研究...

基于MUSIC算法的二维超声波成像matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、基本原理 4.2、数学公式 4.3、实现过程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................................…...

Linux0.11——第三回 做好访问内存的最基础准备工作

前面两回是把启动区的代码复制来复制去的&#xff0c;这里我们要讨论的就是操作系统怎么为程序访问内存的方式做初步规划的&#xff1f; 操作系统的代码最开头的 512 字节的数据&#xff0c;先从硬盘的启动区移动到了内存 0x7c00 处&#xff0c;然后又立刻被移动到 0x90000 处…...

unity自己对象池的使用

unity出了自己的对象池 这里记录一下用法 命名空间就是这个 一般有两种用法&#xff0c;第一种是在using里面获取&#xff0c;脱离这个域就释放。第二种是在Get和Release配合使用 // This version will only be returned to the pool if we call Release on it.//只有使用Re…...