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

C# 中比较实用的关键字,基础高频面试题!

前言

在C#编程中关键字是构建逻辑和实现功能的基石,它承载着编程语言的语法规则和编程智慧。熟练掌握这些基础高频关键字对提升编程能力和面试表现至关重要,它们是日常开发和解决复杂问题的关键。

DotNetGuide

全面的C#/.NET/.NET Core学习、工作、面试指南,记录、收集和总结C#/.NET/.NET Core基础知识、学习路线、开发实战、编程技巧练习、学习视频、文章、书籍、项目框架、社区组织、开发必备工具、技术前沿周刊、常见面试题、面试须知、简历模板、人才招聘、以及自己在学习和工作中的一些微薄见解。

  • https://github.com/YSGStudyHards/DotNetGuide

C#访问修饰符

访问修饰符的作用

访问修饰符是用于指定成员或类型的声明可访问性的关键字。

四种常见的访问修饰符

  • public(公共的)

  • protected(受保护的)

  • internal(内部的)

  • private(私有的)

访问修饰符的六种组合及其可访问性级别

  • public 访问不受限制

  • protected 访问限于包含类或派生自包含类的类型

  • internal 访问限于当前程序集

  • private 访问限于包含类

  • protected internal 访问限于当前程序集或派生自包含类的类型访问

  • private protected 访问限于包含类或当前程序集中包含类的派生类的类型访问

//包含类
publicclassBaseClass
{privateprotectedint myValue = 0;
}//当前程序集中包含类的派生类
publicclassDerivedClass1 : BaseClass
{void Access(){var baseObject = new BaseClass();myValue = 5;}
}

C#类和结构默认访问修饰符

Internal

C#适用于类和结构访问修饰符有哪些

public 或 internal

类成员和结构成员的默认访问修饰符为

private

结构成员(包括嵌套的类和结构)可以声明为

public、internal 或 private 注意:结构成员无法声明为 protected、protected internal 或 private protected,因为结构不支持继承。

类成员(包括嵌套的类和结构)可以声明为

public、protected internal、protected、internal、private protected 或 private

readonly与const区别?

readonly关键字(运行时常量):字段可以在声明或构造函数中初始化,常作为运行时常量使用。

const关键字(编译时常量):字段只能在该字段的声明时初始化,常作为编译时常量使用过。

virtual作用?

详情阅读:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/virtual

virtual关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写(使用override关键字对虚方法重写)。 如下是虚方法声明和重写虚方法的示例:

   // 基类虚方法声明class BaseClass  {  public virtual void Method1()  {  Console.WriteLine("Base - Method1");  }  public virtual void Method2()  {  Console.WriteLine("Base - Method2");  }  }  class DerivedClass : BaseClass  {  // 重写基类中的虚方法public override void Method1()  {  Console.WriteLine("Derived - Method1");  }  public new void Method2()  {  Console.WriteLine("Derived - Method2");  }  }  

override作用?

扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现需要 override 修饰符。

static作用?

详情阅读:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/static

使用 static 修饰符可声明属于类型本身而不是属于特定对象的静态成员。 static 修饰符可用于声明 static 类。 在类、接口和结构中,可以将 static 修饰符添加到字段、方法、属性、运算符、事件和构造函数。 static 修饰符不能用于索引器或终结器。

静态类与非静态类的区别?

  1. 静态类无法实例化(换句话说,无法使用 new 运算符创建类类型的变量。 由于不存在任何实例变量,因此可以使用类名本身访问静态类的成员)。

  2. 静态构造函数只调用一次,在程序所驻留的应用程序域的生存期内,静态类会保留在内存中(即使用Static修饰的类,应用一旦启用静态类就会保留在内存中)。

  3. 静态类只包含静态成员

  4. 不能包含实例构造函数。

  5. 静态类会进行密封,因此不能继承。 它们不能继承自任何类(除了 Object)。 静态类不能包含实例构造函数。 但是,它们可以包含静态构造函数。

静态成员和非静态成员的区别?

成员主要指的是:字段、方法、属性、运算符、事件和构造函数等。

  1. 静态成员用static修饰符,非静态成员不需要。

  2. 静态成员属于类所有,非静态成员属于类的实例化对象所有。

  3. 静态方法里不能使用非静态成员,非静态方法可以使用静态成员。

  4. 每创建一个类的实例,都会在内存中为非静态成员新分配一块新的存储。

  5. 静态成员无论类创建多少个实例,在内存中只占同一块区域。

静态方法的使用场合

  1. 静态方法最适合工具类中方法的定义。

  2. 静态变量适合全局变量的定义。

静态方法和非静态方法区别(优/缺点)?

优点:
  1. 属于类级别的,不需要创建对象就可以直接使用。

  2. 全局唯一,内存中唯一,静态变量可以唯一标识某些状态。

  3. 在类加载时候初始化,常驻在内存中,调用快捷方便。

缺点:
  1. 静态方法不能调用非静态的方法和变量。(非静态方法可以任意的调用静态方法/变量

  2. 不可以使用 this 引用 static 方法或属性访问器。

sealed 关键字有什么作用?

sealed 关键字用于修饰类、方法或属性,表示该类或成员不可被继承或重写。如果一个类被声明为 sealed,其他类不能继承该类;如果一个方法或属性被声明为 sealed,其他类不能重写该方法或属性。

this 关键字有什么作用?

this 关键字表示当前对象的引用,可以用于访问当前对象的成员。它可以用来区分局部变量和实例变量、在构造函数中调用其他构造函数、传递当前对象给其他方法等。

base 关键字有什么作用?

base 关键字表示基类的引用,可以用于访问基类的成员。它可以用来在子类中调用基类的构造函数、调用基类的方法或属性等。

sizeof 关键字有什么作用?

sizeof 运算符返回给定类型的变量所占用的字节数。 sizeof 运算符的参数必须是一个非托管类型的名称,或是一个限定为非托管类型的类型参数。

lock 关键字有什么作用?

lock 关键字用于在多线程环境下对共享资源进行互斥访问。使用 lock 关键字可以将代码块标记为临界区,使得只有一个线程能够进入临界区执行代码。

async 和 await 关键字有什么作用?

async 和 await 关键字用于异步编程。通过使用 async 标记方法和 await 等待异步操作完成,可以实现在异步任务执行过程中不阻塞主线程。

delegate 关键字有什么作用?

delegate 关键字用于声明委托类型,即代表一个或多个方法的对象。使用 delegate 可以实现事件和回调机制,简化方法的调用和管理。

using关键字的作用

  1. using指令为命名空间创建别名,或导入在其他命名空间中定义的类型

  2. using 语句定义一个范围,在此范围的末尾将释放对象资源,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。

C# 中的 in 关键字有什么作用?

in 关键字用于参数传递时,将参数按只读引用传递。使用 in 关键字可以提高性能,避免不必要的参数复制。

在 C# 中,in 关键字用于将参数标记为输入参数。它告诉编译器在方法调用过程中不会修改该参数的值,并且可以通过引用传递避免对参数进行复制。这对于大型结构或对象参数非常有用,因为直接引用参数可以提高性能和内存效率。

class Program
{static void Main(string[] args){int x = 5;MultiplyByTwo(in x);Console.WriteLine(x); // 输出 5}static void MultiplyByTwo(in int number){// 无法修改 in 参数的值// number *= 2; // 编译错误// 仅能读取 in 参数的值Console.WriteLine(number * 2); // 输出 10}
}

C# 中的 ref 关键字有什么作用?

  • 参数在使用 ref 关键字进行引用传递时,必须在方法调用之前对其进行初始化。

  • ref 关键字既可以在进入方法之前初始化参数的值,也可以在方法内部对参数进行修改。

  • ref 参数在进入方法时保持原始值,并在方法结束后将值带回到调用处。

C# 中的 out 关键字有什么作用?

  • 参数在使用 out 关键字进行引用传递时,不需要在方法调用之前进行初始化。

  • out 关键字通常用于表示方法返回多个值的情况,或者用于修改方法外部的变量。

  • out 参数必须在方法内部进行初始化,并确保在方法结束前完成赋值操作。方法内部没有为 out 参数赋值的情况下,方法调用将会导致编译错误。

C#中参数传递 ref与out 的区别?

ref 指定此参数由引用传递,指定的参数在函数调用时必须先初始化(有进有出)。

out 指定此参数由引用传递,指定的参数在进入函数时会清空参数值,因此该参数必须在调用函数内部进行初始化赋值操作(无进有出)。

总结:

  • ref 和 out 都用于引用传递参数。

  • ref 参数在方法调用前必须被初始化,而 out 参数不需要。

  • ref 参数可以保留原始值并在方法内部进行修改,而 out 参数必须在方法内部进行初始化赋值。

不能将 in、ref 和 out 关键字用于以下几种方法:

  • 异步方法,通过使用 async 修饰符定义。

  • 迭代器方法,包括 yield return 或 yield break 语句。

  • 扩展方法的第一个参数不能有 in 修饰符,除非该参数是结构。

  • 扩展方法的第一个参数,其中该参数是泛型类型(即使该类型被约束为结构)

as和is的区别

  1. is 只是做类型兼容判断,并不执行真正的类型转换。返回true或false,不会返回null,对象为null也会返回false。

  2. as运算符将表达式结果显式转换为给定的引用类型或可以为null值的类型。 如果无法进行转换,则as运算符返回 null。

总结:as模式的效率要比is模式的高,因为借助is进行类型转换的化,需要执行两次类型兼容检查。而as只需要做一次类型兼容,一次null检查,null检查要比类型兼容检查快。

is 运算符

is 运算符用于检查对象是否是某个特定类型,或者是否可以转换为该类型。它返回一个布尔值 (true 或 false)。

string title = "Hello DotNetGuide";if (title is string){Console.WriteLine("是 string 类型");}else{Console.WriteLine("不是 string 类型");}if (title is not null){Console.WriteLine("不为 null");}else{Console.WriteLine("为 null");}

模式匹配:C# 7.0 引入了模式匹配,允许在 is 表达式中进行类型检查和转换:

object obj = "追逐时光者";if (obj is string str){Console.WriteLine($" {str}");}else{Console.WriteLine("不是指定类型");}

列表模式:从 C# 11 开始,可以使用列表模式来匹配列表或数组的元素。以下代码检查数组中处于预期位置的整数值:

int[] empty = [];
int[] one = [1];
int[] odd = [1, 3, 5];
int[] even = [2, 4, 6];
int[] fib = [1, 1, 2, 3, 5];Console.WriteLine(odd is [1, _, 2, ..]);   // false
Console.WriteLine(fib is [1, _, 2, ..]);   // true
Console.WriteLine(fib is [_, 1, 2, 3, ..]);     // true
Console.WriteLine(fib is [.., 1, 2, 3, _ ]);     // true
Console.WriteLine(even is [2, _, 6]);     // true
Console.WriteLine(even is [2, .., 6]);    // true
Console.WriteLine(odd is [.., 3, 5]); // true
Console.WriteLine(even is [.., 3, 5]); // false
Console.WriteLine(fib is [.., 3, 5]); // true

as 运算符

as 运算符尝试将对象转换为特定类型,如果转换失败,则返回 null 而不是抛出异常。它通常用于在不需要显式检查对象是否为特定类型的情况下进行安全的类型转换。

object title = "Hello DotNetGuide";string str = title as string;if (str != null){Console.WriteLine("是 string 类型: " + str);}else{Console.WriteLine("不是 string 类型");}int? num = title as int?;if (num.HasValue){Console.WriteLine("是 int 类型: " + num.Value);}else{Console.WriteLine("不是 int 类型");}

null是什么类型?

null 关键字是表示不引用任何对象的空引用的文字值。 null是引用类型变量的默认值。 普通值类型不能为 null,可为空的值类型除外。

new关键字的作用?

  1. 运算符:创建类型的新实例

  2. 修饰符:可以显式隐藏从基类继承的成员。

  3. 泛型约束:泛型约束定义,约束可使用的泛型类型。

return、continue、break的区别? 

return:

结束整个方法,return关键字并不是专门用于跳出循环的,return的功能是结束一个方法。 一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之结束。与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。

continue:

结束本次循环,然后持续进行下一次循环。

break:

break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。

yield

yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,减少了内存占用,并允许在迭代时执行复杂逻辑。

咱们来看看传统迭代方式和yield关键字迭代方式对比,是否如传说中的代码实现起来更简洁和高效:

/// <summary>/// 传统迭代方式和yield关键字迭代方式对比/// </summary>public static void IteratorComparisonRun(){Console.WriteLine("迭代器方法使用yield关键字:");foreach (var number in GetNumbersWithYield()){Console.WriteLine(number);}Console.WriteLine("传统迭代方法返回一个List<int>");var numbers = GetNumbersWithoutYield();foreach (var number in numbers){Console.WriteLine(number);}}/// <summary>/// 迭代器方法使用yield关键字/// </summary>/// <returns></returns>public static IEnumerable<int> GetNumbersWithYield(){for (int i = 0; i < 6; i++){yield return i;}}/// <summary>/// 传统迭代方法返回一个List<int>/// </summary>/// <returns></returns>public static List<int> GetNumbersWithoutYield(){var numbers = new List<int>();for (int i = 0; i < 6; i++){numbers.Add(i);}return numbers;}

什么情况不能使用yield关键字

  • 带有 in、ref 或 out 参数的方法。

  • Lambda 表达式和匿名方法。

  • 在 C# 13 之前,yield 在具有 unsafe 块的任何方法中都无效。从 C# 13 开始,可以在包含 unsafe 块的方法中使用 yield,但不能在 unsafe 块中使用。

  • 不能在catch和finally块中使用yield return和yield break。

  • 不能在具有catch块的try块中使用yield return和yield break。

  • 可以在只有finally块的try块中使用yield return和yield break。

params

params适用于参数个数动态变化的场景,例如日志、数学计算或格式化输出等,减少冗余代码,增强方法通用性。

在 C# 13 之前:

params 仅支持一维数组(如params int[] listparams object[] list)。调用方法时需显式传递数组或数组元素类型的参数的逗号分隔列表。

在 C# 13 中:

params 修饰符并不局限于数组类型。 现在可以将 params 用于任何已识别的集合类型,包括 System.Span<T>、System.ReadOnlySpan<T>,以及那些实现 System.Collections.Generic.IEnumerable<T> 并具有 Add 方法的类型。 除了具体类型外,还可以使用接口 System.Collections.Generic.IEnumerable<T>、System.Collections.Generic.IReadOnlyCollection<T>、System.Collections.Generic.IReadOnlyList<T>、System.Collections.Generic.ICollection<T>和 System.Collections.Generic.IList<T>

注意事项

在方法声明中的 params 关键字之后不允许有任何其他参数,并且在方法声明中只允许有一个 params 关键字。

goto跳转语句

  • goto 语句由关键字 goto 后跟一个标签名称组成,通过标签名称指定跳转的位置。

  • 可以在方法的任何地方放置标签,并且可以多次使用相同的标签。

/// <summary>/// 使用goto进行代码重试示例/// </summary>public static void GotoRetryUseExample(){int retryCount = 0;for (int i = 0; i < 10; i++){retryLogic:try{//模拟可能出错的操作Random random = new Random();int result = random.Next(0, 2);if (result == 0){throw new Exception("Error occurred");}Console.WriteLine("Operation successful on attempt: " + retryCount);}catch (Exception ex){retryCount++;if (retryCount < 3){Console.WriteLine("Error occurred, retrying...");goto retryLogic; //跳转到重试逻辑}else{Console.WriteLine("Max retry limit reached.");return;}}}}

文章转载自:追逐时光者

原文链接:C# 中比较实用的关键字,基础高频面试题! - 追逐时光者 - 博客园

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关文章:

C# 中比较实用的关键字,基础高频面试题!

前言 在C#编程中关键字是构建逻辑和实现功能的基石&#xff0c;它承载着编程语言的语法规则和编程智慧。熟练掌握这些基础高频关键字对提升编程能力和面试表现至关重要&#xff0c;它们是日常开发和解决复杂问题的关键。 DotNetGuide 全面的C#/.NET/.NET Core学习、工作、面试指…...

文献分享: XTR——优化Token级检索的高效多向量模型

原文章 文章目录 1. XTR \textbf{1. XTR} 1. XTR原理 1.1. \textbf{1.1. } 1.1. 导论 1.2. XTR \textbf{1.2. XTR} 1.2. XTR的训练和推理 2. \textbf{2. } 2. 实验与分析 2.1. \textbf{2.1. } 2.1. 实验配置与结果 2.2. \textbf{2.2. } 2.2. 结果分析 3. \textbf{3. } 3. 其它分…...

【数据结构】C语言实现树和森林的遍历

C语言实现树和森林的遍历 导读一、树的遍历二、森林的遍历2.1 为什么森林没有后序遍历?2.2 森林中存不存在层序遍历?三、C语言实现3.1 准备工作3.2 数据结构的选择3.3 树与森林的创建3.4 树与森林的遍历3.4.1 先根遍历3.4.2 后根遍历3.4.3 森林的遍历3.5 树与森林的销毁3.6 算…...

《Python深度学习》第七讲:生成式深度学习

在深度学习的世界里,生成式模型是一种非常有趣且富有创造力的技术。它们能够生成全新的内容,比如文本、图像、音乐等,甚至可以创造出从未见过的虚拟世界。这一讲,我们将深入探讨生成式深度学习的核心技术,包括 LSTM 文本生成、DeepDream、神经风格迁移、变分自编码器(VAE…...

Spring的IOC

在现代 Java 开发中&#xff0c;Spring 框架几乎无处不在&#xff0c;特别是其核心的 IOC&#xff08;Inversion of Control&#xff09; 容器&#xff0c;几乎所有Spring的功能都与它紧密相关。 一、什么是IOC IOC&#xff0c;全称为 Inversion of Control&#xff08;控制反…...

常考计算机操作系统面试习题(四)

目录 1. Peterson 算法伪代码 2. 信号量生产者消费者问题分析 3. 注释 Peterson 主函数并分析输出结果 4. 用 fork 创建子进程的程序 1. Peterson 算法伪代码 题目&#xff1a; 写出 Peterson 算法的伪代码。 参考答案&#xff1a; // 定义变量 boolean flag[2]; //…...

Visual Studio Code 连接 SAP ERP 系统

首先确保服务打开 在vscode&#xff0c;在extension安装ABAP remote filesystem&#xff0c;然后打开设置SAP 系统的地址配置 CtrlshiftP 执行代码&#xff1a;AbapFS connect to an ABAP system&#xff0c;可以根据要求一步一步配置。 根据配置。加载系统 也可以直接在extens…...

从报错到成功:Mermaid 流程图语法避坑指南✨

&#x1f680; 从报错到成功&#xff1a;Mermaid 流程图语法避坑指南 &#x1f680; &#x1f6a8; 问题背景 在开发文档或技术博客中&#xff0c;我们经常使用 Mermaid 流程图 来可视化代码逻辑。但最近我在尝试绘制一个 Java Stream 转换流程图时&#xff0c;遭遇了以下报错…...

TDengine 中的 show 命令

简介 SHOW 命令可以用来获取简要的系统信息。若想获取系统中详细的各种元数据、系统信息和状态&#xff0c;请使用 select 语句查询 INFORMATION_SCHEMA 数据库中的表, 详见 元数据查询 SHOW APPS SHOW APPS;显示接入集群的应用&#xff08;客户端&#xff09;信息。 SHOW …...

博弈论中的均衡精炼:完美贝叶斯均衡、序贯均衡与颤抖手均衡详解

博弈论中的均衡精炼&#xff1a;完美贝叶斯均衡、序贯均衡与颤抖手均衡详解 1. 引言&#xff1a;为什么需要均衡精炼&#xff1f; 在博弈论中&#xff0c;纳什均衡是分析策略互动的核心工具&#xff0c;但其存在一个显著缺陷&#xff1a;无法排除不合理的均衡。例如&#xff0…...

github代理 | 快速clone项目

代理网址&#xff1a; https://ghproxy.com/ https://ghproxy.com/代理网址&#xff1a; https://ghproxy.com/ 比如需要克隆的项目git地址为&#xff1a;https://github.com/AUTOMATIC1111/stable-diffusion-webui.git git clone https://ghproxy.com/https://github.com/AUTO…...

C语言基础与进阶学习指南(附运行效果图及术语解析)

C语言基础与进阶学习指南&#xff08;附运行效果图及术语解析&#xff09; 目录 C语言标准与编译流程CPU与内存基础C语言基础语法数据类型详解变量与内存管理运算符与表达式输入输出函数函数与内存管理指针与内存操作结构体与高级应用 1. C语言标准与编译流程 1.1 C语言标准演…...

【Scrapy】Scrapy教程8——处理子链接

通过前面几篇文章,已经了解了如何去爬取网页内容并存储到数据库,但是目前只是存储了一个页面的内容,现在想要获取每篇文章链接内的文章内容,我们来看看怎么获取。 生成新请求 首先我们肯定要先拿到链接,所以第一步都获取文章标题和链接肯定少不了,然后再爬取获取到到子…...

Python推导式深入解析

引言 Python 以其简洁、高效的语法而备受开发者喜爱&#xff0c;其中推导式&#xff08;Comprehensions&#xff09;更是 Python 语法的一大特色。推导式提供了一种简洁明了的方式来创建列表、集合和字典等数据结构&#xff0c;让代码更加紧凑和易读。本文将深入探讨 Python 推…...

在 macOS 上配置 SSH 连接 GitHub

在 macOS 上使用 SSH 连接 GitHub&#xff0c;可以免去每次使用 Git 时输入密码的麻烦&#xff0c;提高开发效率。本文将介绍如何在 macOS 上生成 SSH 密钥并配置 GitHub 进行身份认证。 1. 检查是否已有 SSH 密钥 在终端运行以下命令&#xff0c;检查是否已有 SSH 密钥&#…...

常考计算机操作系统面试习题(二)(中)

目录 24. 操作系统的主要功能有哪些&#xff1f; 25. 文件的属性主要有哪些&#xff1f; 26. 对文件的基本操作主要有哪些&#xff1f; 27. 目录的基本操作有哪些&#xff1f; 28. 目录的逻辑结构有哪些种&#xff1f; 29. 简述银行家算法的Available、Max、Allocation、…...

手机录视频风噪太大?华为Pura X“AI降风噪“太硬核了

你是否也在用手机录像时&#xff0c;比如大海海浪、阅览群山、空旷的原野的时候&#xff0c;呼啸的风总是能沦为刺耳的噪音&#xff0c;让精心构思的镜头&#xff0c;最后因为呼啸的风声最终成为“灾难现场”。传统的解决方式往往陷入两难&#xff1a;物理防风罩影响收音指向性…...

React 事件处理

1. React 事件处理的基本概念 React 事件处理的特点&#xff1a; 驼峰命名法&#xff1a;事件名采用驼峰命名法&#xff0c;如 onClick、onChange。JSX 语法&#xff1a;事件处理函数通过 JSX 传递给元素&#xff0c;如 <button onClick{handleClick}>。合成事件&#…...

搭建React简单项目

一、项目构建 目录结构&#xff1a; 安装脚手架 npm install -g create-react-app // or yarn add -g create-react-app 一、项目版本 1、react&#xff1a;"^18.3.1"&#xff1b; 2、react-router-dom&#xff1a;"^6.23.1"&#xff1b; 3、项目创…...

ROCK 280A-M 工业级电调:高性能无人机动力心脏,重塑严苛场景飞行边界

—— 工业级动力控制系统解决方案 —— 【产品概述】 针对工业级无人机高负载、复杂工况需求&#xff0c;南昌长空科技的ROCK 280A-M 电调以航空级标准打造动力控制中枢。采用工业级控制算法与智能自适应系统&#xff0c;为多旋翼 / 固定翼无人机提供稳定动力支撑&#xff0c;突…...

带你从入门到精通——自然语言处理(十. BERT)

建议先阅读我之前的博客&#xff0c;掌握一定的自然语言处理前置知识后再阅读本文&#xff0c;链接如下&#xff1a; 带你从入门到精通——自然语言处理&#xff08;一. 文本的基本预处理方法和张量表示&#xff09;-CSDN博客 带你从入门到精通——自然语言处理&#xff08;二…...

八股JAVA并发

多线程 线程的创建方式有哪些? 1.继承Thread类 2.实现Runnable接口 3.Callable接口FutureTask 4.线程池 1.继承Thread类 这是最直接的一种方式&#xff0c;用户自定义类继承java.lang.Thread类&#xff0c;重写其run()方法&#xff0c;run()方法中定义了线程执行的具体任务。…...

#include <hello.h> 与 #include “hello.h“的区别

#include <hello.h> 和 #include "hello.h" 在C/C中用于包含头文件&#xff0c;但它们在搜索头文件时的行为有所不同&#xff0c;这可能导致前者找不到头文件的情况。 ### 区别 1. **搜索路径不同** - #include "hello.h"&#xff1a;编译器首先…...

PyPDF2简单介绍

PyPDF2 是一个开源的纯 Python 库&#xff0c;用于读取、操作和创建 PDF 文件。它最初是 PyPDF 的改进版&#xff0c;功能更丰富。 安装&#xff1a; bash pip install PyPDF2核心功能 1.合并 PDF 文件 python from PyPDF2 import PdfMergermerger PdfMerger() merger.appe…...

记录flutter编译项目遇到的问题

目录 1.更换flutter版本 2.解压到指定地址 3.在Android Studio配置 问题: Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source! Resolving dependencies... The current Dart SDK version is 3.3.0. Because coach d…...

小米AX6000上安装tailscale

在之前的文章中&#xff0c;已经介绍了如何解锁ax6000的ssh&#xff0c;以及必坑指南。 今天突发奇想&#xff0c;为了不让我的nas天天开着tailscale&#xff0c;所以我想让我的tailscale运行在路由器&#xff0c;这样完美实现穿透。 首先&#xff0c;通过ssh登录ax6000&#x…...

git使用经验(一)

git使用经验&#xff08;一&#xff09; 我之前已经下载了别人的代码&#xff0c;我想在此基础上进行修改&#xff0c;并移动到自己的私有仓库&#xff0c;方便上传到自己的私有仓库自己进行版本控制 git clone下来别人的代码&#xff0c;删除有关git的隐藏文件 进入到自己的…...

C语言【文件操作】详解中

引言 介绍和文件操作中文件的顺序读写相关的函数 看这篇博文前&#xff0c;希望您先仔细看一下这篇博文&#xff0c;理解一下文件指针和流的概念&#xff1a;C语言【文件操作】详解上-CSDN博客文章浏览阅读606次&#xff0c;点赞26次&#xff0c;收藏4次。先整体认识一下文件是…...

基于SpringBoot的在线学习平台

项目介绍 平台采用B/S结构&#xff0c;后端采用主流的SpringBoot语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。是一个综合的在线学习平台&#xff0c;该平台有管理员、教师、学生三类角色&#xff0c;各项功能根据不同角色分别设定。 整个平台包括前台和后台两个部分…...

鸿蒙生态开发

鸿蒙生态开发概述 鸿蒙生态是华为基于开源鸿蒙&#xff08;OpenHarmony&#xff09;构建的分布式操作系统生态&#xff0c;旨在通过开放共享的模式连接智能终端设备、操作系统和应用服务&#xff0c;覆盖消费电子、工业物联网、智能家居等多个领域。以下从定义与架构、核心技术…...

qt实现一个简单http服务器和客户端

一、功能简介 服务器&#xff1a; 登录功能、下载文件功能 客户端&#xff1a; 登录功能、下载文件功能、上传成绩功能 二、服务器代码 //HttpServer.h #ifndef HTTPSERVER_H #define HTTPSERVER_H#include <QMainWindow> #include <QTcpSocket> #include <QTc…...

深入理解Linux网络随笔(五):深度理解本机网络I/O

深入理解Linux网络随笔&#xff08;五&#xff09;&#xff1a;深度理解本机网络I/O 文章目录 深入理解Linux网络随笔&#xff08;五&#xff09;&#xff1a;深度理解本机网络I/O本机发送过程本机接收过程总结 分析本机网络I/O部分源码需要知道本机I/O是什么&#xff1f;扮演什…...

Debian12生产环境配置笔记

在 Debian 12 上进行生产环境配置的详细步骤&#xff0c;涵盖软件更新、基础软件安装、Docker 及 Redis 部署&#xff0c;以及 Nginx 配置多个虚拟主机等内容。所有命令均以 root 用户身份执行&#xff0c;无需添加 sudo 1. 更新软件 首先&#xff0c;确保系统上的所有软件包…...

工业物联网的范式革命:从“云边“ 到“边边” 协的技术跃迁

基于DIOS操作系统的去中心化重构 一、云边协同模式的局限性&#xff1a;技术瓶颈与成本困局 当前工业物联网主流的云边协同架构&#xff08;Cloud-Edge Collaboration&#xff09;已暴露出显著短板&#xff0c;其核心问题源于对中心云的过度依赖&#xff1a; ​带宽资源挤占与…...

python学习笔记--实现简单的爬虫(二)

任务&#xff1a;爬取B站上最爱欢迎的编程课程 网址&#xff1a;编程-哔哩哔哩_bilibili 打开网页的代码模块&#xff0c;如下图&#xff1a; 标题均位于class_"bili-video-card__info--tit"的h3标签中&#xff0c;下面通过代码来实现&#xff0c;需要说明的是URL中…...

【蓝桥杯速成】| 8.回溯算法

因为在进行背包问题的练习时&#xff0c;发现很多题目需要回溯&#xff0c;但本人作为小白当然是啥也不知道 那么就先来补充一下回溯算法的知识点&#xff0c;再进行练习 理论基础 回溯算法本质上是一种递归函数&#xff0c;是纯暴力搜索方法&#xff0c; 适合组合问题、排列…...

聚水潭商品信息集成MySQL的高效解决方案

聚水潭商品信息集成到MySQL的技术案例分享 在数据驱动的业务环境中&#xff0c;如何高效、准确地将聚水潭系统中的商品信息集成到MySQL数据库&#xff0c;是许多企业面临的重要挑战。本文将详细介绍一个实际运行的方案——“聚水潭-商品信息查询-->BI崛起-商品信息表_copy”…...

【数学建模】多目标规划模型:原理、方法与应用

多目标规划模型&#xff1a;原理、方法与应用 文章目录 多目标规划模型&#xff1a;原理、方法与应用引言1. 多目标规划的基本概念1.1 数学模型1.2 Pareto最优解/有效解1.3 满意解方法 2. 多目标规划的主要求解方法2.1 加权求和法2.2 ε-约束法2.3 理想点法2.4 优先级法&#x…...

基于Spring Boot的党员学习交流平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Flink CDC 与 SeaTunnel CDC 简单对比

Flink CDC 与 SeaTunnel CDC 简单对比 CDC 技术概述 变更数据捕获&#xff08;Change Data Capture&#xff0c;简称 CDC&#xff09;是一种用于捕获数据库中数据变更的技术&#xff0c;能够实时识别、捕获并输出数据库中的插入、更新和删除操作。CDC 技术在现代数据架构中扮…...

ARM 汇编基础

ARM 汇编是嵌入式开发、操作系统底层编程和性能优化的核心技能之一。以下是一份系统的 ARM 汇编指令教学指南&#xff0c;涵盖基础语法、核心指令、编程模式和实用示例。 ​1. ARM 汇编基础 ​ 1.1 寄存器 ARM 架构&#xff08;32位&#xff09;包含 ​16 个通用寄存器​&…...

【嵌入式狂刷100题】- 1基础知识部分

准备新开专栏【嵌入式狂刷100题】&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f927;加油!!!&#xff0c;内容包括 基础知识部分操作系统部分处理器架构部分外设驱动部分通信协议部分存储器管理部分硬件设计部分多媒体部分调试故障排除部分编码开发部…...

【模板】计算几何入门

来源 计算几何基本模板&#xff08;二维&#xff09; 目录 基本设置点 向量 Point&#xff08;Vector&#xff09;点积&#xff08;数量积、内积&#xff09;向量积&#xff0c;叉积两点间距离向量的模单位向量两向量的夹角判断点在直线的哪边逆转角 线 直线表达式Line判断…...

PostgreSQL 数据库中导入大量数据

在 PostgreSQL 数据库中导入大量数据,可根据数据来源和格式选择不同的方法。以下为你详细介绍几种常见的方式: 1. 使用 COPY 命令(适用于本地数据文件) COPY 命令是 PostgreSQL 内置的高效数据导入工具,适合处理本地的数据文件。 步骤 准备数据文件 确保你的数据文件格…...

DeepSeek和Kimi在Neo4j中的表现

以下是2个最近爆火的人工智能工具&#xff0c; DeepSeek:DeepSeek Kimi: Kimi - 会推理解析&#xff0c;能深度思考的AI助手 1、提示词&#xff1a; 你能帮我生成一个知识图谱吗&#xff0c;等一下我会给你一篇文章&#xff0c;帮我从内容中提取关键要素&#xff0c;然后以N…...

xQueueSendToBack的中文释义和裸机调用

如果不在 FreeRTOS 环境下运行&#xff0c;而是裸机环境中实现类似的功能&#xff0c;需要移除 xQueueSendToBack 的依赖&#xff0c;并直接调用 CAN 发送函数。以下是修改后的代码和实现思路&#xff1a; 1. FreeRTOS 中的 xQueueSendToBack 功能 作用&#xff1a;将消息发送…...

2025年- G24-Lc98-217.包含重复(使用hashSet解决)-java版

1.题目描述 2.思路 思路一&#xff1a; 我的想法是直接用集合来判断&#xff0c;如果集合的元素不能添加说明之前已经存在这个元素&#xff0c;也就是发现了重复元素&#xff0c;所以返回false。 补充一&#xff1a; Map、ArrayList的定义和声明 3.代码实现 class Soluti…...

【树莓派驱动验证步骤】

终端操作和输出&#xff1a; 清理项目 adaraspberrypi:~/mt3502 $ make clean make -C /lib/modules/6.6.51rpt-rpi-v8/build M/home/ada/mt3502 clean make[1]: 进入目录“/usr/src/linux-headers-6.6.51rpt-rpi-v8”CLEAN /home/ada/mt3502/Module.symvers make[1]: 离开…...

百度SEO和必应SEO优化方法

如需SEO服务&#xff0c;可以搜索&#xff1a;深圳市信科网络科技有限公司。 一、搜索引擎生态格局&#xff1a;流量入口的重新洗牌 2025 年&#xff0c;中国 PC 端搜索引擎市场正经历戏剧性变革。StatCounter 数据显示&#xff0c;必应凭借 Edge 浏览器的预装优势与 ChatGPT …...

2025年3月AI搜索发展动态与趋势分析:从技术革新到生态重构

025年3月AI搜索发展动态与趋势分析&#xff1a;从技术革新到生态重构 一、行业动态&#xff1a;巨头布局与技术升级 谷歌推出“AI模式”&#xff0c;重新定义搜索体验 谷歌上线全新“AI模式”&#xff0c;集成多模态交互与实时数据能力&#xff0c;用户可通过文本、图片或语音…...