【C#】.Net基础语法二

news2024/11/19 15:20:26

目录

一、字符串(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"); // 如果没有找到返回-1
    Console.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}"); // 打印结果:xxxxxx
    string str2 = email.Substring(0, email.IndexOf("@"));
    Console.WriteLine($"截取内容:{str2}"); // 打印结果:xxxxxx
    string str3 = email.Substring(email.IndexOf("@") + 1);
    Console.WriteLine($"截取内容:{str3}"); // 打印结果:qq.com
​
    // 字符串比较
    string strName1 = "jack";
    string strName2 = "jack";
    string strName3 = "jddd";
    Console.WriteLine(strName1 == strName2); // 打印结果:True
    Console.WriteLine(strName1 == strName3); // 打印结果:False
    Console.WriteLine("strName1 == strName2:" + (strName1 == strName2)); // 打印结果:strName1 == strName2:True
    Console.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.000
    Console.WriteLine(string.Format(" {0:D3}", 5000));      // 打印结果: 5000
    Console.WriteLine(string.Format(" {0:F3}", 5000));      // 打印结果: 5000.000
    Console.WriteLine(string.Format(" {0:N}", 250000));     // 打印结果: 250,000.00
    Console.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.12
    Console.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.txt
    Console.WriteLine(path2); // C:\DB\Test.txt
    Console.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); 	// 10
    Console.WriteLine("B: " + B); 	// 20
    Console.WriteLine("----------------------");

    int C = A;
    C += 100;
    Console.WriteLine("C: " + C); 	// 110
    Console.WriteLine("----------------------");

    Console.WriteLine("A: " + A); 	// 10
    Console.WriteLine("B: " + B); 	// 20
}

// 值类型变量在传值时,传递的是变量的”副本“,而不是变量本身,变量修改后互相没有影响。
// 常见的值类型:
// int、float、double、decimal....等

引用类型代码:

static void CodeTest()
{
    int[] arrayA = { 10, 20 };
    Console.WriteLine("A: " + arrayA[0]); // 10
    Console.WriteLine("B: " + arrayA[1]); // 20
    Console.WriteLine("----------------------");

    int[] arrayC = arrayA;
    arrayC[0] += 100;
    Console.WriteLine("C: " + arrayC[0]); // 110
    Console.WriteLine("----------------------");

    Console.WriteLine("A: " + arrayA[0]); // 110
    Console.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));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1035626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据的崭露头角:数据湖与数据仓库的融合之道

文章目录 数据湖与数据仓库的基本概念数据湖&#xff08;Data Lake&#xff09;数据仓库&#xff08;Data Warehouse&#xff09; 数据湖和数据仓库的优势和劣势数据湖的优势数据湖的劣势数据仓库的优势数据仓库的劣势 数据湖与数据仓库的融合之道1. 数据分类和标记2. 元数据管…

RabbitMQ快速入门——消费者

public class Consumer_HelloWorld {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133"); ip 默认值 localhostfac…

Vue3-Vue3生命周期、自定义hook函数、toRef与toRefs、其他组合式API、组合式API的优势、Vue3新的组件和功能

Vue3&#xff08;2&#xff09; 更多Vue.js知识请点击——Vue.js &#x1f954;&#xff1a;有的山长满荆棘&#xff0c;有的山全是野兽&#xff0c;所以你应该是自己的那座山 文章目录 Vue3&#xff08;2&#xff09;一、Vue3生命周期二、自定义hook函数三、toRef与toRefs四、…

Ctfshow web入门 phpCVE篇 web311-web315 详细题解 全

CTFshow phpCVE web311 CVE-2019-11043 PHP远程代码执行漏洞复现&#xff08;CVE-2019-11043&#xff09;【反弹shell成功】-腾讯云开发者社区-腾讯云 (tencent.com) 漏洞描述 CVE-2019-11043 是一个远程代码执行漏洞&#xff0c;使用某些特定配置的 Nginx PHP-FPM 的服务…

RabbitMQ的工作模式——WorkQueues

1.工作队列模式 生产者代码 public class Producer_WorkQueues1 {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133&qu…

基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow环境Keras环境Android环境1. 安装AndroidStudio2. 导入TensorFlow的jar包和so库3. 导入OpenCV库 相关其它博客工程源代码下载其它资料下载 前言 本项目依赖于Keras深度学习模型&#xff0c;旨在对手语…

idea更改java项目名

做了一个普通的java项目&#xff08;使用socket进行网络通信的练手项目&#xff09;&#xff0c;需要更改项目名&#xff0c;更改过程记录在这里。 修改项目名可能会出现很多错误&#xff0c;建议先备份当前项目 1.在idea里&#xff0c;右键项目名——》选择Refactor——》选择…

服务注册发现_搭建单机Eureka注册中心

创建cloud-eureka-server7001模块 pom添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&quo…

Xshell工具连接本地虚拟机Linux系统

你知道的越多&#xff0c;你不知道的越多&#xff1b;本文仅做记录&#xff0c;方便以后备阅。希望也能帮到正在看这篇文章的你。 使用Xshell工具连接Linux系统具有方便&#xff0c;易于操作等诸多特点。对于Xshell的介绍&#xff0c;我就不详细说了。我相信百度百科上的介绍更…

RabbitMQ工作模式——PubSub生产者及消费者

PubSub模式生产者代码 public class Producer_PubSub {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133"); ip 默…

SAP PO运维(四):适配器消息监控

登录SAP PO系统,点击“Configuration and Monitoring Home”,使用PISUPER账号登录: 2、选择“适配器引擎->消息监控器”: 3、查看是否有报错消息: 双击报错的数字,筛选出报错的条目(可以根据状态、接口命名空间等来筛选):常见的报错消息有: 接口配置问题:字段为空值…

java框架-Springboot3-场景整合

文章目录 java框架-Springboot3-场景整合批量安装中间件NoSQL整合步骤RedisTemplate定制化 接口文档远程调用WebClientHttp Interface 消息服务 java框架-Springboot3-场景整合 批量安装中间件 linux安装中间件视频 NoSQL 整合redis视频 整合步骤 RedisTemplate定制化 Re…

Qt5开发及实例V2.0-第十八章-Qt-MyselfQQ实例

Qt5开发及实例V2.0-第十八章-Qt-MyselfQQ实例 第18章-Qt MyselfQQ18.1 概述18.2 、发送文件18.3 、接收文件18.4 、保证传输的安全和稳定18.5 、总结 本章相关例程源码下载1.Qt5开发及实例_CH1801.rar 下载 第18章-Qt MyselfQQ 18.1 概述 MyselfQQ是一个基于Qt5框架开发的轻量…

技术学习群-第三周内容共享

本周为技术群聊的第三周&#xff0c;看看本周&#xff0c;都聊了些啥。 探讨u2以及appium 什么是u2&#xff1f;也就是uiautomator2&#xff0c;主要探讨的是uiautomator2与appium哪个更好用。 为什么探讨&#xff1f;他们拿来干什么的&#xff1f; 都是可以拿来做app自动化的&…

基于springboot+vue的毕业生实习与就业管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

C语言之字符函数字符串函数篇(1)

目录 前言 求字符串长度 strlen strlen统计的是字符串\0之前的字符串长度 字符指针 strlen的返回值是无符号整型 strlen的三种模拟实现 计数器 函数递归 指针_指针 长度不受限制的字符串函数 strcpy strcpy会将源字符串中的 \0 拷贝到目标空间 strcpy参数目标空…

cocos2dx查看版本号的方法

打开文件&#xff1a;项目根目录\frameworks\cocos2d-x\docs\RELEASE_NOTES.md 知道引擎版本号的意义&#xff1a; 1.面试中经常被问到(面试官想知道你会不会查版本号&#xff0c;你会查也不一定会去看&#xff0c;如果你去看了说明你是一个有心人&#xff0c;或者想深入研究下…

Innodb 原理和日志

一、MySQL结构 客户端 server层 查询缓存&#xff08;5.7&#xff09; 连接器 分析器 优化器 执行器 引擎层 二、一条update操作mysql的流程 三、MySQL的日志 &#xff08;1&#xff09;redo log 保证MySQL 持久性的关键&#xff0c;如果MySQL宕机&#xff0c;buffer pool…

Jupyter 报错:can‘t convert np.ndarray of type numpy.object_.

can’t convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool. 解决方案&#xff1a;使用.astype(“float64”)强制转化