【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 一维数组声明: 1.2 多维数组声明: 2、数组的实例化和赋值 2.1 数组在声明时通过在花括号中使用以逗号分隔的数据项对数组赋值, 例如: 2.2 如果在声明后赋值,则需…...

线上问诊:业务数据采集
系列文章目录 线上问诊:业务数据采集 文章目录 系列文章目录前言一、环境准备1.Hadoop2.Zookeeper3.Kafka4.Flume5.Mysql6.Maxwell 二、业务数据采集1.数据模拟2.采集通道 总结 前言 暑假躺了两个月,也没咋写博客,准备在开学前再做个项目找…...
2023 CCPC 华为云计算挑战赛 hdu7399 博弈,启动!(图上博弈/枚举+逆向有向图sg函数)
题目 给定t(t<200)组样例, 每次给定一个n(n<300)个左边的点m(m<300)个右边的点的二分图,图无重边 所有边总量不超过5e5 初始时棋子可以被放置在任意一个点上, 若被放置在左边,则Alice先走;被放置在右边&a…...

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

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 二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树 ,或者是具有以下性质的二叉树 : 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大…...

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

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

【python】Leetcode(primer-set)
文章目录 78. 子集(集合的所有子集)90. 子集 II(集合的所有子集) 更多 leetcode 题解可参考:【Programming】 78. 子集(集合的所有子集) 给定一组不含重复元素的整数数组 nums,返回…...

【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语言:运算符优先级
一、优先级(常使用的运算符) 见表格 二、注意 总体原则:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符 同一级别下的运算符的运算次序由表达式的结合方向决定 运算符注释级别( )圆括号1[ ]数组下标1后置后置2后置--后置--2前置…...

Android GreenDao数据库升级(附Demo)
前言 大家好久不见,一转眼马上八月份下旬了,最近由于工作比较忙,没时间给大家更新博文。百忙之中抽出时间,给大家来更新一篇关于GreenDao3数据库的升级。 关于GreenDao的详细介绍以及一些逻辑性的增、删、改、查等,可以…...
剑指 Offer 32 - III. 从上到下打印二叉树 III
目录 使用函数实现 使用双端队列实现 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,nu…...

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

后端开发12.商品模块
概述 简介 商品模块这个设计的非常复杂 效果图 数据库...
/usr/bin/containerd: Operation not permitted
问题 今天在重启docker程序的时候一直启动不起来,通过systemctl status docker和jourctl -xu docker也没有发现什么有用的报错信息,无奈只好查看/var/log/message,发现以下错误提示: Started containerd container runtime Start…...

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

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...