【C# Programming】编程入门:数组、操作符、控制流

目录

一、数组

1、数组的声明

1.1 一维数组声明:      

1.2 多维数组声明:       

2、数组的实例化和赋值

2.1 数组在声明时通过在花括号中使用以逗号分隔的数据项对数组赋值, 例如:

2.2 如果在声明后赋值,则需要使用new

2.3 C# 也支持将new 作为声明语句的一部分, 例如:

2.4 在new 关键字作为数组赋值的一部分,可以同时在括号内指定数组的大小

2.5 在为数组分配空间时可以不指定初始值。 例如:

2.6 分配数组但不指定初始值仍会初始化每个元素,每个元素都将初始化成默认值  

2.8 类似一维数组,多维数组也能声明的时候初始化 或者仅分配空间, 例如:

2.9 多维数组每一维的大小必须一致,例如下列声明是错误的

2.10 在多维数组中,元素是用每个维上的一个索引来标识的, 例如:

3、交错数组

3.1 交错数组是指数组的数组,它不要求数组的每一维大小一致,但需要为内部的每个数组都创建数组实例。例如:

3.2 交错数组中元素是用每个维上的一个索引来标识的, 例如:

4、获取数组长度和维度

4.1 数组的长度是固定的,不能随便更改,除非重新创建数组。此外,数组越界会抛出异常

4.2 数组的 Length 属性返回数组的长度  

4.3 要获得数组特定维的长度需要使用GetLength() 方法,调用时要指定返回哪一维的长度,还可以使用Rank 成员获取整个数组的维度, 例如:

5、数组方法

数组提供了更多的方法来操纵数组中的元素,例如 Sort, BinarySearch 等:

二、操作符

1、操作符

1.1 操作符通常操作符分为3大类:一元操作符、二元操作符、三元操作符

1.2 一元操作符正负(+/-)。 例:decimal debt = -18125876697430.99M

1.3 二元算术操作符

1.4 加法操作符用于字符串

1.5 加法操作符可用来拼接两个或更多字符

1.6 在算术运算中可以直接操作字符, 例如:

2、浮点数

2.1 比较两个浮点数是否相等时,浮点类型的不准确性可能造成严重的后果

2.2 避免将二进制浮点数用于相等性条件式。要么判断两个值之差是否在容差范围内,要么使用 decimal 类型

2.3 C#中,浮点数0除以0将会得到 “NaN”; 当浮点向上溢出时,将会得到Infinity,向下溢出将会得到 –Infinity

3、复合赋值操作符

3.1 C#中同样支持下列复合赋值操作符:

3.2 前缀操作符和后缀操作符例子:

3.3 常量表达式和常量符号

3.4 常量表达式是指C# 编译时能求值的表达式 

3.5 值为常量表达式的符号称为常量符号。常量符号的值在生命周期内不能被改变。C#中使用 const 声明常量符号  

三、控制流

1、if 语句

1.1 语法形式

1.2 if 语句中的条件称为布尔表达式,不同于C++, C# 要求条件必须是布尔类型

1.3 嵌套if 语句 

2、switch 语句

2.1 语法形式

3、关系操作符

3.1 关系和相等型操作符​编辑

3.2 使用相等操作符例子

4、逻辑布尔操作符

4.1 OR 操作符 (||)      

4.2 AND (&&)操作符      

4.3 XOR (^) 操作符  

4.4 逻辑反(!)操作符      

5、条件及空结合操作符

5.1 条件运算符语法:      

5.2 C# 要求条件运算符的 consequence 和alternative 类型一致,而且在判定类型时不会检查表达式上下文。

5.3 空结合运算符 (??)      (C# 6.0)        expr1  ?? expr2        

5.4 表示如果expr1 不为null,返回expr1的值,否则返回expr2的值。

5.5 空结合运算符 (??) 能组成调用链,

6、null 条件操作符

6.1 在调用值为null的方法时,程序将抛出System.NullReferenceException 异常

6.2 null 条件运算符(C# 6.0) 在调用方法或属性之前检查操作数是否为null,如果为null 则忽略调用直接返回null

6.3 当调用成员返回是一个值类型时,null 条件运算符总是返回该类型可为空版本,

6.4 null条件操作符可以组成调用链。

6.5 null 条件运算符 也可以和索引操作符结合使用

7、位操作符

7.1 移位操作符        

7.2 按位操作符        

8、循环

8.1 while 语法      

8.2 do/while 语法        

8.3 for 循环      

8.4 所有循环的条件必须是布尔表达式

8.5 foreach 循环

8.5.1 foreach 遍历数据项集合,设置循环变量来依次表示每一项,语法形式如下:    

8.5.2 例子:

9、C#预处理指令

10、错误和警告

10.1 C# 允许在代码中插入 #error 和 #warning 指令分别来生成错误和警告信息, 例如:

10.2 C#编译器提供了预处理指令#pragma 来关闭或还原警告    

11、#region

11.1 C# 允许使用#region指令展开或折叠代码区域 ,当这组代码被折叠起来的时候,我们可以看到#region后面的说明文字。  

11.2 #region和#endregion 必须成对使用,两个指令都可以选择在指令后面跟随一个描述性字符

11.3 #region 块不能与 #if块重叠。但是,可以将 #region 块嵌套在 #if 块内,或将 #if 块嵌套在 #region 块内。


一、数组

1、数组的声明

1.1 一维数组声明:      

        T[] 表示T类型元素的数组,元素的索引值范围从0 到 size -1,可以使用下标运算符[]访问数组中元素, 例如:string[] languages

1.2 多维数组声明:       

        T[, …, ]  表示T类型元素的多维数组,数组的维数等于逗号数加1, 例如:int[, ] cells 

2、数组的实例化和赋值

2.1 数组在声明时通过在花括号中使用以逗号分隔的数据项对数组赋值, 例如:

string[] languages={ "C#", "COBOL", "JAVA", "C++"};

2.2 如果在声明后赋值,则需要使用new

string[] languages;
languages = new string[]{ "C#", "COBOL", "JAVA", "C++"};

2.3 C# 也支持将new 作为声明语句的一部分, 例如:

string[] languages= new string[]{ "C#", "COBOL", "JAVA", "C++"};

2.4 在new 关键字作为数组赋值的一部分,可以同时在括号内指定数组的大小

string[] languages= new string[4]{ "C#", "COBOL", "JAVA", "C++"}; 

2.5 在为数组分配空间时可以不指定初始值。 例如:

string[] languages = new string[9];

2.6 分配数组但不指定初始值仍会初始化每个元素,每个元素都将初始化成默认值  

  • 引用类型初始化为null  
  • 数值类型初始化为0  
  • bool 初始化为 false 
  • char 初始化为 \0  
  • 非基础值类型以递归方式初始化,每个字段被初始化为默认值  

2.8 类似一维数组,多维数组也能声明的时候初始化 或者仅分配空间, 例如:

int[,] cells = { {1, 0, 2}, {1, 2, 0}, {1, 2, 1} };
Int[,] arr = int[3,3];

2.9 多维数组每一维的大小必须一致,例如下列声明是错误的

int[,] cells = { {1, 0, 2, 0}, {1, 2, 0},   {1, 2}, {1}};

2.10 在多维数组中,元素是用每个维上的一个索引来标识的, 例如:

int[,] cells = { {1, 0, 2}, {1, 2, 0}, {1, 2, 1} };
cells[1, 0] = 1; 

3、交错数组

3.1 交错数组是指数组的数组,它不要求数组的每一维大小一致,但需要为内部的每个数组都创建数组实例。例如:

int[][] cells = {new int[] {1, 0, 2, 0},  new int[] {1, 2, 0},       new int[] {1, 2},            new int[] {1}};

3.2 交错数组中元素是用每个维上的一个索引来标识的, 例如:

int[][] cells = { new int[] {1, 0, 2},  new int[] {1, 2, 0},    new int[] {1, 2, 1}};           cells[1][0] = 1;            // ...

4、获取数组长度和维度

4.1 数组的长度是固定的,不能随便更改,除非重新创建数组。此外,数组越界会抛出异常

4.2 数组的 Length 属性返回数组的长度  

  • 对于一维和多维数组,它返回数组中元素的总数  
  • 对于交错数组,它返回最外层数组的元素数

4.3 要获得数组特定维的长度需要使用GetLength() 方法,调用时要指定返回哪一维的长度,还可以使用Rank 成员获取整个数组的维度, 例如:

bool[, ,] cells;  
cells = new bool[2, 3, 3];   
System.Console.WriteLine(cells.GetLength(0));      // Displays 2
System.Console.WriteLine(cells.Rank);      // Displays 3

5、数组方法

数组提供了更多的方法来操纵数组中的元素,例如 Sort, BinarySearch 等:

public static void Main()        
{        string[] languages = new string[] { "C#", "COBOL", "Java", "C++", "Visual Basic", "Pascal", "Fortran", "Lisp", "J#" };System.Array.Sort(languages);string searchString = "COBOL";int index = System.Array.BinarySearch(languages, searchString);System.Console.WriteLine("The wave of the future, " + $"{ searchString}, is at index {index }.");System.Console.WriteLine();System.Console.WriteLine($"{"First Element",-20 }\t{"Last Element", -20 }");               System.Console.WriteLine($"{"-------------",-20 }\t{"------------",-20 } ");              System.Console.WriteLine($"{ languages[0],-20 }\t{ languages[languages.Length - 1],-20 } ");               System.Array.Reverse(languages); System.Console.WriteLine($"{ languages[0],-20 }\t{ languages[languages.Length - 1],-20 }");  // Note this does not remove all items from the array. Rather it sets each item to the type’s default value.                 System.Array.Clear(languages, 0, languages.Length);           System.Console.WriteLine($"{ languages[0],-20 }\t{ languages[languages.Length - 1],-20 }");                System.Console.WriteLine($"After clearing, the array size is: { languages.Length }");   
}

二、操作符

1、操作符

1.1 操作符通常操作符分为3大类:一元操作符、二元操作符、三元操作符

1.2 一元操作符正负(+/-)。 例:decimal debt = -18125876697430.99M

1.3 二元算术操作符

  • *、 / 和 %  具有最高优先级  
  • + 和 – 具有较低优先级  
  • = 优先级最低

1.4 加法操作符用于字符串

1.5 加法操作符可用来拼接两个或更多字符

public static void Main()       
{           short windSpeed = 42; Console.WriteLine("The original Tacoma Bridge in Washington\nwas "   + "brought down by a " + windSpeed + " mile/hour wind.");        
}

1.6 在算术运算中可以直接操作字符, 例如:

public static void Main()      
{            int n = '3' + '4';char c = (char)n;System.Console.WriteLine(c);  // Writes out g.int a = '3';System.Console.WriteLine($"0x{a:x}");
}

2、浮点数

2.1 比较两个浮点数是否相等时,浮点类型的不准确性可能造成严重的后果

public static void Main()        
{            decimal decimalNumber = 4.2M;        double doubleNumber1 = 0.1F * 42F;           double doubleNumber2 = 0.1D * 42D;          float floatNumber = 0.1F * 42F;             Console.WriteLine($"{decimalNumber} != {(decimal)doubleNumber1}"); Console.WriteLine($"{(double)decimalNumber} != {doubleNumber1}"); Console.WriteLine($"(float){(float)decimalNumber}M != {floatNumber}F"); Console.WriteLine($"{doubleNumber1} != {(double)floatNumber}"); Console.WriteLine($"{doubleNumber1} != {doubleNumber2}"); Console.WriteLine($"{floatNumber}F != {doubleNumber2}D"); Console.WriteLine($"{(double)4.2F} != {4.2D}"); Console.WriteLine($“{4.2F}F != {4.2D}D");              
}

2.2 避免将二进制浮点数用于相等性条件式。要么判断两个值之差是否在容差范围内,要么使用 decimal 类型

2.3 C#中,浮点数0除以0将会得到 “NaN”; 当浮点向上溢出时,将会得到Infinity,向下溢出将会得到 –Infinity

public static void Main()        
{  System.Console.WriteLine(0 / 0);    // Displays: -Infinity           System.Console.WriteLine(-1f / 0);        // Displays: Infinity            System.Console.WriteLine(3.402823E+38f * 2f);
}

3、复合赋值操作符

3.1 C#中同样支持下列复合赋值操作符:

        *=expr   /=expr   %=expr   +=expr    -=expr     ++expr  expr ++  --expr  expr--  

3.2 前缀操作符和后缀操作符例子:

public static void Main()       
{          int x = 123;  // Displays 123, 124, 125.       Console.WriteLine($"{x++}, {x++}, {x}"); // x now contains the value 125.    // Displays 126, 127, 127.          Console.WriteLine($"{++x}, {++x}, {x}"); // x now contains the value 127.     
}

3.3 常量表达式和常量符号

3.4 常量表达式是指C# 编译时能求值的表达式 

3.5 值为常量表达式的符号称为常量符号。常量符号的值在生命周期内不能被改变。C#中使用 const 声明常量符号  

public static void Main()     
{   const int secondsPerDay = 60 * 60 * 24;     const int secondsPerWeek = secondsPerDay * 7;       // ...      
}

三、控制流

1、if 语句

1.1 语法形式

if(contidition)consequence-statement
else alternative-statement 

1.2 if 语句中的条件称为布尔表达式,不同于C++, C# 要求条件必须是布尔类型

1.3 嵌套if 语句 

public static void Main()
{if(input < 0)System.Console.WriteLine("Exiting...");else if(input < 9)System.Console.WriteLine($"Tic-tac-toe has more than {input}" + " maximum turns.");else if (input > 9)System.Console.WriteLine($"Tic-tac-toe has less than {input}" +  " maximum turns.");elseSystem.Console.WriteLine("Correct, tic-tac-toe has a maximum " + " of 9 turns.");
}
public static int input { get; set; }

2、switch 语句

2.1 语法形式

switch (expr )
{case constant: statements default: statements }

expr的类型决定了switch 的“主导类型”(governing type).允许的主导类型包括:      

  • bool, sbyte, byte, short, ushort, int, uint, long, ulong, char, enum 类型 以及上述类型的可空      
  • 类型和string    

constant: 与主导类型兼容的常量表达

3、关系操作符

3.1 关系和相等型操作符

3.2 使用相等操作符例子

public static void Main()
{if(input == "" || input == "quit"){Console.WriteLine($"Player {currentPlayer} quit!!");}
}
public static string input { get; set; }

4、逻辑布尔操作符

4.1 OR 操作符 (||)      

  • || 对两个表达式求值, 如果其中任一个为true, 就返回true      
  • || 操作符是从左往右求值的,如果左边为true,则右表达式被忽略

4.2 AND (&&)操作符      

  • && 在两个表达式都为true的情况下才返回true    
  • &&操作符也是从左往右求值的,如果左边为false,则右表达式被忽略  

4.3 XOR (^) 操作符  

  • ^操作符在两个表达式值互异的情况下才返回true.  
  • ^操作符总是对两个表达式求值    

4.4 逻辑反(!)操作符      

  • 用于反转一个布尔类型数值,例如:bool valid = false;bool result = !valid;

5、条件及空结合操作符

5.1 条件运算符语法:      

  • condition ? consequence : alternative; 

5.2 C# 要求条件运算符的 consequence 和alternative 类型一致,而且在判定类型时不会检查表达式上下文。

  • 例如:f? “abc” : 123 ; // illegal expr  

5.3 空结合运算符 (??)      (C# 6.0)        expr1  ?? expr2        

5.4 表示如果expr1 不为null,返回expr1的值,否则返回expr2的值。

  • 例如:string file_name = file_name?? “default.txt”;          

5.5 空结合运算符 (??) 能组成调用链,

  • 例如:x ??  y  ?? z;

6、null 条件操作符

6.1 在调用值为null的方法时,程序将抛出System.NullReferenceException 异常

6.2 null 条件运算符(C# 6.0) 在调用方法或属性之前检查操作数是否为null,如果为null 则忽略调用直接返回null

static void Main(string[] args)
{if (args?.Length == null)System.Console.WriteLine("ERROR: File missing. "+ "Use:\n\tfind.exe file:<filename>");else{if (args[0]?.ToLower().StartsWith("file:")??false){string fileName = args[0]?.Remove(0, 5);// ...}}
}

6.3 当调用成员返回是一个值类型时,null 条件运算符总是返回该类型可为空版本,

  • 例如:args?.Length 返回 int ?

6.4 null条件操作符可以组成调用链。

例如:args[0]?.ToLower().StartsWith("file:")

6.5 null 条件运算符 也可以和索引操作符结合使用

public static void Main(string[] args)
{// CAUTION: args?.Length not verified.string directoryPath = args?[0];string searchPattern = args?[1];// ...
}

7、位操作符

7.1 移位操作符        

  • 和C++ 一样,C#支持  <<  >>   <<=   >>=  操作符,例如: int x= -7 >>2;  

7.2 按位操作符        

  • C#支持  ~,&  ,| , ^, 及  &= ,|= , ^= 操作符
public static void Main()
{const int size = 64;ulong value;char bit;System.Console.Write("Enter an integer: ");value = (ulong)long.Parse(System.Console.ReadLine());// Use long.Parse() to support negative numbers  ulong mask = 1UL << size - 1;// Set initial mask to 100....for(int count = 0; count < size; count++){bit = ((mask & value) != 0) ? '1' : '0';System.Console.Write(bit);mask >>= 1;// Shift mask one location over to the right}System.Console.WriteLine();
}

8、循环

8.1 while 语法      

while (condition)  
{      statement;
}

8.2 do/while 语法        

do
{            statement        
}while(condition);

8.3 for 循环      

for (initial; condition; loop) 
{     statement;
}  

8.4 所有循环的条件必须是布尔表达式

8.5 foreach 循环

8.5.1 foreach 遍历数据项集合,设置循环变量来依次表示每一项,语法形式如下:    
foreach(type variable in collection)          
{statement;
}
  • type:collection每一项的variable 的数据类型,可将类型设置为var
  • variable:只读变量,foreach循环自动将collection中下一项赋给它  
  • collection:多个数据项的表达式,如 数组等
  • Statement : 循环体语句集合  
8.5.2 例子:
public static void Main() // Declares the entry point of the program.
{char[] cells = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};// Write out the initial available movesforeach(char cell in cells){if(cell != 'O' && cell != 'X’)System.Console.Write($"{ cell } ");}
}

9、C#预处理指令

10、错误和警告

10.1 C# 允许在代码中插入 #error 和 #warning 指令分别来生成错误和警告信息, 例如:

public static void Main()
{#warning "Same move allowed multiple times."
}

10.2 C#编译器提供了预处理指令#pragma 来关闭或还原警告    

  • #pragma warning disable 1030       禁用 #warning指令  
  • #pragma warning restore 1030      还原 #warning指令

11、#region

  • C# 允许使用#region指令展开或折叠代码区域 ,当这组代码被折叠起来的时候,我们可以看到#region后面的说明文字。  
  • #region和#endregion 必须成对使用,两个指令都可以选择在指令后面跟随一个描述性字符
  • #region 块不能与 #if块重叠。但是,可以将 #region 块嵌套在 #if 块内,或将 #if 块嵌套在 #region 块内。

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

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

相关文章

数据采集:selenium 获取 CDN 厂家各省市节点 IP

写在前面 工作需要遇到&#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式&#xff0c;是对…

如何使用CSS实现一个无限循环滚动的图片轮播效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐HTML 结构⭐ CSS 样式⭐ JavaScript 控制⭐ 注意事项&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff0…

数据集收集列表(opencv,机器学习,深度学习)持续更新

opencv 车牌识别数据集 opencv 手写数字识别数据集 机器学习 Pima Indians数据集&#xff0c;下载地址

Kyligence Copilot 登陆海外,斩获 Product Hunt 日榜 TOP 2

8月14日&#xff0c;AI 数智助理 Kyligence Copilot 在全球知名科技产品平台 Product Hunt 上线&#xff0c;其以出色的产品创新实力&#xff0c;在激烈的竞争中脱颖而出&#xff0c;仅仅在 24 小时内收获了超过 400 个投票和近 200 条支持评论&#xff0c;荣登当日产品榜排名第…

C++动态规划经典案例解析之合并石子

1. 前言 区间类型问题&#xff0c;指求一个数列中某一段区间的值&#xff0c;包括求和、最值等简单或复杂问题。此类问题也适用于动态规划思想。 如前缀和就是极简单的区间问题。如有如下数组&#xff1a; int nums[]{3,1,7,9,12,78,32,5,10,11,21,32,45,22}现给定区间信息[…

【Java 高阶】一文精通 Spring MVC - 标签库 (八)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

提高nodejs中promise的性能

提高nodejs中promise的性能 我们先来看一个常见问题&#xff0c;假设我们有 N 条记录需要处理&#xff0c;或者例如&#xff0c;为每条记录发出 API 请求以获取数据。 通常情况下我们都是使用promise.all方法来实现这一需求&#xff1a; // 记录 const data [{}, {}, {}];/…

枚举和反射

枚举 枚举 枚举是一种特殊的类&#xff0c;它可以有自己的属性、方法和构造方法。 两种枚举的方法 自定义枚举 a.将构造器私有化&#xff0c;防止外部直接new b.去掉set方法&#xff0c;防止属性被修改 c.在内部直接创建固定的对象 通过类名直接去访问 关键字枚举 用…

2023.8各大浏览器11家对比:Edge/Chrome/Opera/Firefox/Tor/Vivaldi/Brave,安全性,速度,体积,内存占用

测试环境&#xff1a;全默认设置的情况下&#xff0c;均在全新的系统上进行测试&#xff0c;系统并未进行任何改动&#xff0c;没有杀毒软件&#xff0c;浏览器进程全部在后台&#xff0c;且为小窗模式&#xff0c;小窗分辨率均为浏览器厂商默认缩放大小(变量不唯一)&#xff0…

DevExpress WinForms数据编辑器组件,提供丰富的数据输入样式!(二)

DevExpress WinForms超过80个高影响力的WinForms编辑器和多用途控件&#xff0c;从屏蔽数据输入和内置数据验证到HTML格式化&#xff0c;DevExpress数据编辑库提供了无与伦比的数据编辑选项&#xff0c;包括用于独立数据编辑或用于容器控件(如Grid, TreeList和Ribbon)的单元格。…

nginx会话保持

ip_hash:通过IP保持会话 作用&#xff1a; nginx通过后端服务器地址将请求定向的转发到服务器上。 将客户端的IP地址通过哈希算法加密成一个数值 如果后端有多个服务器&#xff0c;第一次请求到服务器A&#xff0c; 并在务器登录成功&#xff0c;那么再登录B服务器就要重新…

AIGC ChatGPT 制作地图可视化分析

地图可视化分析是一种将数据通过地图的形式进行展示的方法&#xff0c;可以让人们更加直观、快速、准确的理解和分析数据。以下是地图可视化分析的一些主要好处&#xff1a; 加强数据理解&#xff1a;地图可视化可以将抽象的数字转化为直观的图形&#xff0c;帮助我们更好地理解…

科技赋能,教育革新——大步迈向体育强国梦

在 "全民健身"、"体育强国建设"战略的推进下&#xff0c;体育考试成绩被纳入重要升学考试且分值不断提高&#xff0c;体育科目的地位逐步上升到前所未有的高度&#xff0c;在此趋势下&#xff0c;体育教学正演变出更多元化、个性化的需求。然而现实中却面临…

Python标准库概览

Python标准库概览 知识点 标准库: turtle库(必选)标准库: random库(必选)、time库(可选&#xff09; 知识导图 1、turtle库概述 turtle&#xff08;海龟&#xff09;是Python重要的标准库之一&#xff0c;它能够进行基本的图形绘制。turtle库绘制图形有一个基本框架&#x…

RabbitMQ特性介绍和使用案例

❤ 作者主页&#xff1a;李奕赫揍小邰的博客 ❀ 个人介绍&#xff1a;大家好&#xff0c;我是李奕赫&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 记得点赞、收藏、评论⭐️⭐️⭐️ &#x1f4e3; 认真学习!!!&#x1f389;&#x1f389; 文章目录 RabbitMQ特性…

Web 开发 Django 管理工具

上次为大家介绍了 Django 的模型&#xff0c;通过模型就可以操作数据库&#xff0c;从而就可以改变页面的展示内容&#xff0c;那问题来了&#xff0c;我们只能通过手动编辑模型文件来配置模型吗&#xff1f;当然不是&#xff0c;Django 为我们提供了强大的工具&#xff0c;可以…

【JavaEE】Spring全家桶实现AOP-统一处理

【JavaEE】AOP&#xff08;2&#xff09; 文章目录 【JavaEE】AOP&#xff08;2&#xff09;1. 统一登录校验处理1.1 自定义拦截器1.2 将自定义拦截器加入到系统配置1.3 测试1.4 对于静态资源的处理1.5 小练习&#xff1a;统一登录拦截处理1.6 拦截器原理1.6.1 执行流程1.6.2 源…

matlab 最小二乘拟合二维直线(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 平面直线的表达式为: y = k x + b

死锁的典型情况、产生的必要条件和解决方案

前言 死锁&#xff1a;多个线程同时被阻塞&#xff0c;他们中的一个或全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 目录 前言 一、死锁的三种典型情况 &#xff08;一&#xff09;一个线程一把锁 &#xff08;二&#xff09;…

==和===的区别(经典面试题,你不知道的细节)

全等运算符 又叫全等运算符&#xff0c;结果会返回一个布尔值&#xff0c;在数据类型相同的情况下&#xff0c;会比较值&#xff0c;值相同才返回true "1" 1 // false NaN NaN // false undefined undefined // true相等运算符 相等运算符在比较两个变量是否相…