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

【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 块内。

相关文章:

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

目录 一、数组 1、数组的声明 1.1 一维数组声明&#xff1a; 1.2 多维数组声明&#xff1a; 2、数组的实例化和赋值 2.1 数组在声明时通过在花括号中使用以逗号分隔的数据项对数组赋值&#xff0c; 例如&#xff1a; 2.2 如果在声明后赋值&#xff0c;则需…...

线上问诊:业务数据采集

系列文章目录 线上问诊&#xff1a;业务数据采集 文章目录 系列文章目录前言一、环境准备1.Hadoop2.Zookeeper3.Kafka4.Flume5.Mysql6.Maxwell 二、业务数据采集1.数据模拟2.采集通道 总结 前言 暑假躺了两个月&#xff0c;也没咋写博客&#xff0c;准备在开学前再做个项目找…...

2023 CCPC 华为云计算挑战赛 hdu7399 博弈,启动!(图上博弈/枚举+逆向有向图sg函数)

题目 给定t(t<200)组样例&#xff0c; 每次给定一个n(n<300)个左边的点m(m<300)个右边的点的二分图&#xff0c;图无重边 所有边总量不超过5e5 初始时棋子可以被放置在任意一个点上&#xff0c; 若被放置在左边&#xff0c;则Alice先走&#xff1b;被放置在右边&a…...

Unity之 Vector3 的详细介绍以及方法的介绍

文章目录 总的介绍小试牛刀相关的描述的参数看个小例子 总的介绍 当涉及到Unity中的Vector3类时&#xff0c;以下是一些常用的方法和操作&#xff1a; magnitude 方法&#xff1a;返回向量的长度。 float length vector.magnitude;sqrMagnitude 方法&#xff1a;返回向量的平…...

Postgresql部署及简单操作

目录 1、介绍 2、什么是PostgreSQL 3、PostgreSQL 的特点 4、数据库定为 5、环境准备 6、编译安装 6.1 安装依赖包 6.2 下载安装包 6.3 创建用户 6.4 创建 postgresql数据目录并授权 6.5 上传压缩包并解压 6.6 编译postgresql源码 6.7 配置环境变量 6.8 初始化数…...

rabbitmq集群搭建

升级步骤 1.升级包上传 1.1上传erlang、rabbitmq安装包 创建对应升级目录 将安装包otp_src_22.1.7.tar.gz上传到新创建的目录下 将安装包rabbitmq-server-generic-unix-3.8.9.tar.xz上传到新创建的目录下 1.2 执行解压命令tar -zxvf otp_src_22.1.7.tar.gz xz -d rabbitmq-s…...

C++ 二叉搜索树的概念特性

1. 二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树 &#xff0c;或者是具有以下性质的二叉树 : 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大…...

7、Spring_AOP

一、Spring AOP 简介 1.概述 对于spring来说&#xff0c;有三大组件&#xff0c;IOC&#xff0c;ID&#xff0c;AOP aop概述&#xff1a;AOP(Aspect Oriented Programming)面向切面编程。 作用&#xff1a;不改变原有代码设计的基础上实现功能增强 例子 传统打印日志 使用…...

QChart:数据可视化(用图像形式显示数据内容)

1、数据可视化的图形有&#xff1a;柱状/线状/条形/面积/饼/点图、仪表盘、走势图&#xff0c;弦图、金字塔、预测曲线图、关系图、数学公式图、行政地图、GIS地图等。 2、在QT Creator的主页面&#xff0c;点击 欢迎》示例》右侧输入框 输入Chart&#xff0c;即可查看到QChar…...

【python】Leetcode(primer-set)

文章目录 78. 子集&#xff08;集合的所有子集&#xff09;90. 子集 II&#xff08;集合的所有子集&#xff09; 更多 leetcode 题解可参考&#xff1a;【Programming】 78. 子集&#xff08;集合的所有子集&#xff09; 给定一组不含重复元素的整数数组 nums&#xff0c;返回…...

【LVS集群】

目录 一、集群概述 1.负载均衡技术类型 2.负载均衡实现方式 二、LVS结构 1.三层结构 2.架构对象 三、LVS工作模式 四、LVS负载均衡算法 1.静态负载均衡 2.动态负载均衡 五、ipvsadm命令详解 1. -A 2. -D 3. -L 4. -a 5. -d 6. -l 7. -t 8. -s 9. -r 10. -…...

软考高级系统架构设计师系列之:论文题目类型、论文考试大纲、历年考试论文真题汇总、论文写作原则、论文写作常见问题、论文评分标准

软考高级系统架构设计师系列之:论文题目类型、论文考试大纲、历年考试论文真题汇总、论文写作原则、论文写作常见问题、论文评分标准 一、论文写作概述二、论文题目类型三、论文考试大纲1.系统建模2.软件架构设计3.系统设计4.分布式系统设计5.系统的可靠性分析与设计6.系统的安…...

完整的application.xml

<!-- 资源文件配置 --><beans profile"dev"><bean class"com.ningpai.util.CustomPropertyPlaceholderConfigurer"><property name"locations"><list><value>classpath:/com/ningpai/web/config/dev/jdbc.p…...

C语言:运算符优先级

一、优先级&#xff08;常使用的运算符&#xff09; 见表格 二、注意 总体原则&#xff1a;算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符 同一级别下的运算符的运算次序由表达式的结合方向决定 运算符注释级别( )圆括号1[ ]数组下标1后置后置2后置--后置--2前置…...

Android GreenDao数据库升级(附Demo)

前言 大家好久不见&#xff0c;一转眼马上八月份下旬了&#xff0c;最近由于工作比较忙&#xff0c;没时间给大家更新博文。百忙之中抽出时间&#xff0c;给大家来更新一篇关于GreenDao3数据库的升级。 关于GreenDao的详细介绍以及一些逻辑性的增、删、改、查等&#xff0c;可以…...

剑指 Offer 32 - III. 从上到下打印二叉树 III

目录 使用函数实现 使用双端队列实现 请实现一个函数按照之字形顺序打印二叉树&#xff0c;即第一行按照从左到右的顺序打印&#xff0c;第二层按照从右到左的顺序打印&#xff0c;第三行再按照从左到右的顺序打印&#xff0c;其他行以此类推。 例如: 给定二叉树: [3,9,20,nu…...

【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】

【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】 1、前言2、实验环境3、自我总结&#xff08;1&#xff09;文件的编写&#xff08;2&#xff09;信号与槽的新理解&#xff08;3&#xff09;线程数据的传递 4、移植步骤第一步&#xff1a;添加新文…...

后端开发12.商品模块

概述 简介 商品模块这个设计的非常复杂 效果图 数据库...

/usr/bin/containerd: Operation not permitted

问题 今天在重启docker程序的时候一直启动不起来&#xff0c;通过systemctl status docker和jourctl -xu docker也没有发现什么有用的报错信息&#xff0c;无奈只好查看/var/log/message&#xff0c;发现以下错误提示&#xff1a; Started containerd container runtime Start…...

分析商务报表使用什么工具?

传统的BI分析商务报表存在的问题 随着数字化转型的深入推进&#xff0c;企业面临着海量数据的挑战和机遇。数据是企业的重要资产&#xff0c;能够帮助企业洞察市场动态、优化业务流程、提升客户满意度、创造竞争优势。然而&#xff0c;传统的BI&#xff08;商业智能&#xff0…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...