02C#基本结构篇(D4_注释-访问修饰符-标识符-关键字-运算符-流程控制语句)
目录
一、注释
1. 单行注释
2. 多行注释
3. XML文档注释
4. 使用建议和最佳实践:
二、访问修饰符
1. public
2. private
3. protected
4. internal
5. protected internal 或 protected and internal
6. private protected 或 private and protected
7. 使用场景
三、标识符
1. 命名规则
2. 命名约定
3. 关键字和保留字
4. 使用@符号
5. 最佳实践
四、关键字
1. 访问修饰符
2. 类型关键字
3. 方法修饰符
4. 属性修饰符
5. 字段修饰符
6. 声明变量和类型
7. 控制流关键字
8. 其他关键字
9. 上下文关键字(Contextual Keywords)
---------------
七、方法
1. 方法的定义
2. 示例
3. 方法的调用
4. 参数传递方式
5. 方法重载(Overloading)
6. 可选参数和命名参数(C# 4.0及以后)
7. 表达式体定义方法(C# 6.0及以后)
8. 异步方法(Async/Await)
-------------------------------------------
八、构造器
1. 实例构造器
1.1. 2. 静态构造器
2. 构造器的特性与使用场景
3. 构造器的调用顺序
4. 构造函数链(Chaining)
一、注释
在C#中,注释是用来在代码中添加说明性文字的,它们不会被编译器执行,但有助于提高代码的可读性和维护
性。C#支持三种类型的注释:
- 单行注释
- 多行注释
- XML文档注释
1. 单行注释
单行注释使用//
开头,从//
开始到该行结束的所有内容都会被视为注释。
示例:
// 这是一个单行注释
int number = 5; // 这也是单行注释
2. 多行注释
多行注释使用/*
开头,以*/
结尾。它们可以跨越多行。
示例:
/* 这是一个多行注释的开始这是多行注释的中间部分这是多行注释的结束 */
int number = 10; // 这行代码不会被视为多行注释的一部分
3. XML文档注释
XML文档注释以///
开头,这种注释通常用于生成文档(例如,使用Visual Studio的XML文档注释工具)。它
们遵循XML的格式,可以包含标签和属性,用于提供更丰富的代码描述信息。
示例:
/// <summary>
/// 这是一个计算两个数字之和的方法。
/// </summary>
/// <param name="a">第一个数字</param>
/// <param name="b">第二个数字</param>
/// <returns>返回两个数字的和</returns>
public int Add(int a, int b)
{return a + b;
}
4. 使用建议和最佳实践:
- 保持代码清晰:使用注释来解释复杂的逻辑、算法或者为什么这样实现。
- 避免过度注释:好的代码应该尽可能自解释,过多的注释可能会让代码显得杂乱无章。
- 更新和维护:当代码发生变化时,确保相关的注释也随之更新,避免误导。
- 使用XML文档注释生成文档:对于公开的API或库,使用XML文档注释可以帮助自动生成文档,这对于维护和团队协作非常有帮助。
- 遵循团队的编码规范:如果在一个团队中工作,确保所有成员遵循相同的注释规范和风格。
通过合理使用这些注释技巧,你可以显著提高代码的可读性和维护性。
二、访问修饰符
在C#中,访问修饰符是用来控制类、方法、属性、事件和索引器等成员的访问权限的。它们决定了这些成员可以
被哪些代码访问。C#中共有五种访问修饰符,每种都有其特定的用途和范围。以下是这五种访问修饰符的详细解
释:
1. public
public 修饰符表示成员可以被任何其他代码访问,无论是同一个程序集内的代码还是其他程序集的代码。
示例:public class MyClass { }
表示这个类可以在任何地方被访问。
2. private
private 修饰符表示成员只能被定义它的类内部访问。
这意味着,即使是在同一个程序集内,其他类也无法访问该成员。
示例:private int myVariable;
表示这个变量只能在定义它的类内部被访问。
3. protected
protected 修饰符表示成员可以被定义它的类以及所有派生类(子类)访问。
但是,如果这个成员位于不同的程序集,那么只有在派生类位于同一个程序集内时才能访问。
示例:protected virtual void MyMethod() { }
表示这个方法可以在派生类中被重写和调用。
4. internal
internal 或称为 assembly 修饰符表示成员可以被同一个程序集内的任何代码访问,但不能被其他程序集的代码
访问。
示例:internal class MyInternalClass { }
表示这个类只能在定义它的程序集内被访问。
5. protected internal 或 protected and internal
protected internal 修饰符是 protected 和 internal 的组合,表示成员可以被定义它的类、所有派生类以及同
一个程序集内的任何代码访问,但不能被其他程序集的代码访问。
示例:protected internal string MyProperty { get; set; }
表示这个属性可以在派生类和同一个程序集内被访问,但不能被其他程序集访问。
6. private protected 或 private and protected
private protected 是C# 7.2引入的,它结合了 private 和 protected 的特性,使得成员只能被定义它的类和所
有派生类(无论是否在同一程序集内)访问。
示例:private protected void MyMethod() { }
表示这个方法只能在定义它的类和所有派生类中被访问。
7. 使用场景
- public:当你希望类的成员对所有外部代码都可见时使用。
- private:当你希望类的成员仅在其定义的类内部可用时使用。
- protected:当你希望类的成员在其自身和派生类中可用时使用。
- internal:当你希望类的成员在同一个程序集内可用时使用。
- protected internal:当你希望类的成员在同一个程序集内或在派生类中可用时使用。
- private protected:当你希望类的成员在定义它的类和所有派生类中可用时使用,无论它们是否在同一程序集内。
正确选择和使用这些访问修饰符对于设计良好的、可维护的C#代码非常重要。
三、标识符
在C#中,标识符是用来命名变量、方法、类、接口、事件、属性等元素的名称。
它们遵循一系列规则和约定,以确保代码的可读性和一致性。
下面是一些关于C#中标识符的重要规则和细节:
1. 命名规则
- 首字母规则:标识符可以以字母或下划线(_)开头。在C#中,标识符不能以下划线开头。
- 后续字符规则:标识符可以包含字母、数字、下划线(_)和@符号。但是,不能包含空格或其他特殊字符。
- 大小写敏感:C#是大小写敏感的,这意味着
variable
和Variable
被视为两个不同的标识符。
2. 命名约定
C#社区遵循一些命名约定,以提高代码的可读性和维护性:
- 驼峰命名法(Camel Case):
-
- 小驼峰命名法(lowerCamelCase):第一个单词的首字母小写,后续单词的首字母大写。例如:
myVariable
。 - 大驼峰命名法(UpperCamelCase或PascalCase):每个单词的首字母都大写。例如:
MyClass
。
- 小驼峰命名法(lowerCamelCase):第一个单词的首字母小写,后续单词的首字母大写。例如:
- 匈牙利命名法(Hungarian Notation):尽管不常用,但某些旧代码中仍可见。匈牙利命名法通过在变量名前加上一个或多个字母来表示变量的类型或作用。例如:
iCount
表示一个整型计数器。
3. 关键字和保留字
C#有一些关键字和保留字不能用作标识符,因为它们已经被赋予了特定的意义。例如:
int class = 5; // 错误,因为'class'是C#的关键字
完整的C#关键字列表可以在官方文档中找到,例如:C# Keywords。
4. 使用@符号
如果你需要使用一个以关键字命名的变量名,或者变量名与C#的保留字冲突,你可以在变量名前加上@符号
来“转义”关键字或保留字。例如:
int @class = 5; // 正确,使用@来避免关键字冲突
5. 最佳实践
- 清晰和描述性:选择能够清晰描述变量或对象用途的名称。
- 一致性:在项目中保持一致的命名约定。
- 避免混淆:避免使用可能引起混淆的缩写或过于简短的名称。
示例
public class MyClass {private int myVariable; // 小驼峰命名法private int MyProperty { get; set; } // 大驼峰命名法,用于属性public static void Main() {int iCount = 10; // 小驼峰命名法,表示一个计数器Console.WriteLine(iCount);}
}
遵循这些规则和最佳实践将有助于编写更清晰、更易于维护的C#代码。
四、关键字
在C#中,关键字是用来表示程序中特定功能的词汇,它们在编程时具有特殊的含义和用途。了解这些关键字对于
编写有效的C#代码至关重要。C#的关键字可以分为以下几类:
1. 访问修饰符
public
:允许访问的类型或成员可以被任何其他代码访问。private
:限制访问的类型或成员只能被其所属的类访问。protected
:允许访问的类型或成员只能被其所属的类或派生类访问。internal
:允许访问的类型或成员只能在同一个程序集内被访问。protected internal
:允许访问的类型或成员只能在同一个程序集内或派生类中被访问。private protected
:允许访问的类型或成员只能在同一个程序集内的派生类中被访问。
2. 类型关键字
class
:定义一个类。struct
:定义一个值类型结构体。interface
:定义一个接口。enum
:定义一个枚举类型。delegate
:定义一个委托。
3. 方法修饰符
static
:表示方法属于类而不是类的实例。virtual
:表示方法可以在派生类中被重写。override
:表示方法重写基类中的虚方法。abstract
:表示方法在派生类中必须被重写。sealed
:阻止方法被重写。
4. 属性修饰符
get
:用于获取属性值的方法。set
:用于设置属性值的方法。readonly
:指示属性只可读,不可写。
5. 字段修饰符
const
:定义一个常量字段。readonly
:定义一个只读字段,其值必须在声明时或在构造函数中初始化。volatile
:指示字段可能由多个线程同时修改,编译器应避免优化该字段的访问。
6. 声明变量和类型
var
:自动推断变量的类型(C# 3.0引入)。dynamic
:在运行时解析类型(C# 4.0引入)。ref
:引用传递参数(传递变量的引用而不是值)。out
:用于方法参数,表示该参数用于从方法返回一个值(通常用在返回多个值时)。params
:用于方法的参数,允许传递零个或多个参数。
7. 控制流关键字
if
、else
、switch
、case
、default
、while
、do
、for
、foreach
、break
、continue
、goto
、return
、try
、catch
、finally
、throw
、checked
、unchecked
。
8. 其他关键字
using
:用于声明命名空间或使用资源(如文件、数据库连接等)。namespace
:定义命名空间。class
、struct
、interface
、enum
、delegate
等用于定义类型的关键字也在此分类下,但它们属于类型关键字类别。null
:表示空引用或空指针。true
和false
:布尔值的字面量。sizeof
: 在不安全代码中,用于获取类型的字节大小。lock
: 用于锁定对象,确保线程安全地访问共享资源。yield
: 在迭代器块中使用,用于返回序列中的元素。async
和await
: 用于异步编程模型中,使异步方法更易于编写和使用。
9. 上下文关键字(Contextual Keywords)
这些关键字在不同的上下文中可能有不同的含义,例如在泛型编程中:
where
: 在泛型约束中使用,例如指定类型参数必须继承自某个类或实现某个接口。in
: 在泛型编程中指定协变(C# 7.3及以后版本)。out
: 在泛型编程中指定逆变(C# 7.3及以后版本)。
了解这些关键字及其用途对于编写高效和正确的C#代码至关重要。在实际开发中,合理地使用这些关键字可以提
高代码的可读性和维护性。
---------------
七、方法
在C#中,方法(也称为函数)是执行特定任务的代码块。它们可以被定义在一个类中,并被其他类或方法调用。
C#中的方法可以是静态的(属于类本身)或实例的(属于类的实例)。下面将详细解释C#中方法的各个方面。
1. 方法的定义
一个C#方法的基本定义格式如下:
[访问修饰符] [返回类型] 方法名([参数列表])
{// 方法体
}
- 访问修饰符:如
public
,private
,protected
,internal
等,控制方法的访问权限。 - 返回类型:方法返回的数据类型,如果是
void
则表示不返回任何值。 - 方法名:标识符,遵循C#的命名规则。
- 参数列表:括号内包含一个或多个参数,每个参数由类型和名称组成,参数间用逗号分隔。
- 方法体:包含执行任务的代码块。
2. 示例
public class ExampleClass
{// 无参数无返回值的方法public void SayHello(){Console.WriteLine("Hello, World!");}// 有参数有返回值的方法public int Add(int a, int b){return a + b;}
}
3. 方法的调用
- 静态方法:使用类名直接调用。
ExampleClass.SayHello(); // 需要是静态方法或静态属性访问方式
- 实例方法:首先创建类的实例,然后通过该实例调用。
ExampleClass example = new ExampleClass();
example.SayHello(); // 调用非静态方法
int result = example.Add(5, 3); // 调用非静态方法并获取返回值
4. 参数传递方式
C#支持按值传递(默认)和按引用传递(使用ref
或out
关键字)。
- 按值传递:传递参数的副本,对副本的修改不会影响原始参数。
- 按引用传递:直接传递参数的内存地址,对参数的修改会影响原始参数。
ref
用于修改传入的参数值,out
用于在方法内部给参数赋值。
5. 方法重载(Overloading)
同一个类中可以有多个同名方法,只要它们的参数列表不同(参数数量或类型不同)。这称为方法重载。
public void Show(int a) { }
public void Show(string text) { }
6. 可选参数和命名参数(C# 4.0及以后)
从C# 4.0开始,可以在方法定义时为参数提供默认值,使其成为可选参数。还可以在调用时使用命名参数。
public void Print(string message = "Default Message") { }
Print("Hello"); // 使用默认值和命名参数调用Print方法。
7. 表达式体定义方法(C# 6.0及以后)
从C# 6.0开始,可以使用表达式体来定义简单的只返回一个表达式结果的方法。
public int Multiply(int a, int b) => a * b; // 相当于 { return a * b; } 的简写形式。
8. 异步方法(Async/Await)
C#支持异步编程模式,允许方法在等待操作完成时释放线程,使用async
和await
关键字。
public async Task<int> GetDataAsync()
{ // 使用await调用异步方法并获取结果 return await SomeAsyncMethod();
}
通过以上介绍,你应该对C#中的方法有了一个全面的理解。
每种方法和概念都可以帮助你更有效地编写和组织代码。
-------------------------------------------
八、构造器
在C#中,构造器(Constructor)是一种特殊的方法,用于在创建对象时初始化对象。构造器与类同名,没有返回
类型,主要用于分配内存并初始化对象。C#中有两种类型的构造器:实例构造器(用于创建对象实例)和静态构
造器(用于初始化静态成员)。
1. 实例构造器
实例构造器用于创建类的实例,并初始化对象的状态。每个类可以有多个构造器,只要它们的参数列表不同。
示例
public class Person
{public string Name { get; set; }public int Age { get; set; }// 无参数构造器public Person(){Name = "Unknown";Age = 0;}// 带参数的构造器public Person(string name, int age){Name = name;Age = age;}
}
1.1. 2. 静态构造器
静态构造器用于初始化类的静态成员。静态构造器是类的一部分,而不是实例的一部分。静态构造器在类第一次
被引用时自动调用,仅执行一次。
示例
public class DatabaseConnection
{private static string connectionString;// 静态构造器static DatabaseConnection(){connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";}
}
2. 构造器的特性与使用场景
- 无参数构造器:通常用于提供一个默认的初始化状态。如果类中没有定义任何构造器,编译器会自动提供一个无参数的默认构造器。一旦你定义了任何构造器(无论是带参数的还是无参数的),编译器就不会自动提供默认的无参数构造器。
- 带参数的构造器:允许在创建对象时传递不同的初始值。这增加了对象的灵活性,使得可以根据需要创建具有不同初始状态的多个对象实例。
- 构造函数重载:通过定义多个具有不同参数列表的构造器,可以实现构造函数重载。这允许根据提供的参数创建不同类型的对象实例。
3. 构造器的调用顺序
- 父类构造器的调用:在派生类的构造器中,必须首先调用基类的构造器(除非基类是无参数的默认构造器)。这通常通过使用
:base()
语法完成。例如:public ChildClass(string name) : base(name)
。 - 静态构造器的调用:静态构造器在类第一次被引用时自动调用,用于初始化静态成员。它不能被直接调用,也不能带有访问修饰符或参数。
4. 构造函数链(Chaining)
在派生类的构造函数中,可以使用 this()
来调用基类的另一个构造函数。例如:
public class ChildClass : BaseClass
{public ChildClass(string name) : base(name) // 调用基类的带参数的构造器{// 子类的初始化代码}
}
通过以上介绍,你可以更好地理解C#中构造器的使用和它们的重要性。
相关文章:
02C#基本结构篇(D4_注释-访问修饰符-标识符-关键字-运算符-流程控制语句)
目录 一、注释 1. 单行注释 2. 多行注释 3. XML文档注释 4. 使用建议和最佳实践: 二、访问修饰符 1. public 2. private 3. protected 4. internal 5. protected internal 或 protected and internal 6. private protected 或 private and protected 7.…...
Python:正则表达式
正则表达式的基础和应用 一、正则表达式核心语法(四大基石) 1. 元字符(特殊符号) 定位符 ^:匹配字符串开始位置 $:匹配字符串结束位置 \b:匹配单词边界(如 \bword\b 匹配…...
ChatGPT4.5详细介绍和API调用详细教程
OpenAI在2月27日发布GPT-4.5的研究预览版——这是迄今为止OpenAI最强大、最出色的聊天模型。GPT-4.5在扩大预训练和微调规模方面迈出了重要的一步。通过扩大无监督学习的规模,GPT-4.5提升了识别内容中的模式、建立内容关联和生成对于内容的见解的能力,但…...
linux makefile tutorial
一个makefile的教程,几个小时就能看完,对makefile有个总体加细节的系统了解,非常不错: Learn Makefiles With the tastiest examples 中文翻译版: 起步 - Makefile 教程 (gavinliu6.github.io) gcc官网手册&#x…...
学习C2CRS Ⅲ (Response Generation Module)
代码地址:https://github.com/RUCAIBox/WSDM2022-C2CRS 论文地址:https://arxiv.org/abs/2201.02732 CFSelectionConvModel模型结构与功能 CFSelectionConvModel 是一个用于对话推荐系统的端到端模型,结合了知识图谱(KG)、评论信息和对话上下文来生成对话响应。它通过以…...
SpringBoot全栈开发:从数据库到Markdown文件导出的终极实践指南
一、SpringBoot后端核心实现 1.1 数据库数据转MD文件 通过SpringBoot实现数据库内容导出为Markdown文件,是文档自动化生成的关键技术: GetMapping("/download") public void exportMd(HttpServletResponse response, Integer id) {Content …...
go函数详解
1.简介 函数是组织好的、可重复使用的,用于执行指定任务的代码块,为了完成某一个功能的程序指令的集合,称为函数。go语言中支持:函数、匿名函数和闭包。 2.函数的定义 func 函数名 (形参列表) (返回值列表){ 函数体 return …...
MVCC实现原理
一、引言 在现代数据库管理系统中,数据的一致性和并发性是两个至关重要的特性。传统的锁机制虽然有效,但也存在着性能瓶颈,特别是在高并发环境下,锁的争用会导致系统响应时间变慢,甚至引发死锁等问题。为了克服这些挑…...
通过Golang的container/list实现LRU缓存算法
文章目录 力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2. 插入元素3. 删除元素4. 遍历链表5. 获取链表长度使用场景注意事项 源代码阅读 在 Go 语言中,container/list 包提供了一个双向链表的实现。链表是一种常见的数据结构&#…...
网络编程7天学java
* 网络编程:两台或两台以上的主机构成一个网络 * IP地址:标志网络中的一个通信实体的地址 * 端口号:区分不同应用程序 * 网络通信协议:ISO参考模型(7层),TCP/IP协议(4层)…...
在 IntelliJ IDEA 中配置 Git
1. 确保已安装 Git 在配置之前,确保你的系统已经安装了 Git。 检查是否已安装 Git: bash 复制 git --version 如果未安装,请前往 Git 官网 下载并安装。 2. 在 IntelliJ IDEA 中配置 Git 打开 IntelliJ IDEA。 进入设置: Windo…...
【Godot4.4】Rect2总结
概述 Rect2是2D场景中比较重要的一种数据类型。 Rect2的本质含义是2D场景的轴对齐包围盒,而不是可以自由变换的矩形。 Rect2提供了一些方法,可以方便的判断Rect2之间是否重叠、包含等,并可以获得重叠的区域。也可以获得两个Rect2的包围盒。…...
git使用命令总结
文章目录 Git 复制创建提交步骤Git 全局设置:创建 git 仓库:已有仓库? 遇到问题解决办法:问题一先git pull一下,具体流程为以下几步: 详细步骤 Git 复制 git clone -b RobotModelSetting/develop https://gitlab.123/PROJECT/123.git创建提…...
Unity DOTS从入门到精通之 C# Job System
文章目录 前言安装 DOTS 包C# 任务系统Mono 环境DOTS 环境运行作业NativeContainer 前言 作为 DOTS 教程,我们将创建一个旋转立方体的简单程序,并将传统的 Unity 设计转换为 DOTS 设计。 Unity 2022.3.52f1Entities 1.3.10 安装 DOTS 包 要安装 DOTS…...
linux下的网络抓包(tcpdump)介绍
linux下的网络抓包[tcpdump]介绍 前言tcpdump1. 安装 tcpdump2. 基本抓包命令3. 过滤器使用4. 保存捕获的数据包 异常指标1. 连接建立与断开相关指标异常 SYN 包异常 FIN 或 RST 包 2. 流量相关指标异常流量峰值异常源或目的 IP 流量 3. 端口相关指标异常端口使用端口扫描 4. 数…...
深入理解 Linux 中的 -h 选项:让命令输出更“人性化”
在 Linux 系统中,命令行工具是系统管理员和普通用户最常用的交互方式之一。然而,命令行输出往往充满了技术性术语和数字,对于初学者或非技术用户来说可能显得晦涩难懂。幸运的是,许多 Linux 命令都提供了一个非常实用的选项&#…...
selenium的鼠标操作
1、鼠标操作 鼠标时间对应的方法在那个类中? ActionChains类,实例化 鼠标对象 1、context_click(element) # 右击 2、double_click(element) #双击 3、double_and_drop(source, target) # 拖拽 4、move_to_element(element) # 悬停 【重点】 5、perform() …...
STM32——GPIO介绍
GPIO(General-Purpose IO ports,通用输入/输出接口)模块是STM32的外设接口的核心部分,用于感知外界信号(输入模式)和控制外部设备(输出模式),支持多种工作模式和配置选项。 1、GPIO 基本结构 STM32F407 的每个 GPIO 引脚均可独立配置,主要特性包括: 9 组 GPIO 端口…...
Word 小黑第15套
对应大猫16 修改样式集 导航 -查找 第一章标题不显示 再选中文字 点击标题一 修改标题格式 格式 -段落 -换行和分页 勾选与下段同页 添加脚注 (脚注默认位于底部 )在脚注插入文档属性: -插入 -文档部件 -域 类别选择文档信息,域…...
linux自启动服务
在Linux环境中,systemd是一个系统和服务管理器,它为每个服务使用.service文件进行配置。systemctl是用于控制系统服务的主要工具。本文将详细介绍如何使用systemctl来管理vsftpd服务,以及如何设置服务自启动。 使用Systemd设置自启动服务 创…...
react使用拖拽,缩放组件,采用react-rnd解决 -完整版
屏幕录制2025-03-10 10.16.06 以下代码仅提供左侧可视化区域 右侧数据根据你们的存储数据来 大家直接看Rnd标签设置的属性即可!!!!! /*** 用户拖拽水印的最终位置信息*/ export interface ProductWatermarkValue {wat…...
通过 ElasticSearch的Python API和`curl` 命令获取Elasticsearch 所有索引名称
导言 在大数据管理和实时搜索场景中,Elasticsearch 是一款不可或缺的工具。无论是开发调试、数据维护,还是系统监控,快速列出所有索引名称都是一个高频需求。本文将手把手教你如何通过 Python 客户端连接 Elasticsearch,并用两种方…...
Flutter:StatelessWidget vs StatefulWidget 深度解析
目录 1. 引言 2. StatelessWidget(无状态组件) 2.1 定义与特点 2.2 代码示例 3. StatefulWidget(有状态组件) 3.1 定义与特点 3.2 代码示例 4. StatelessWidget vs StatefulWidget 对比 5. StatefulWidget 生命周期 5.1…...
[密码学实战]Java实现国密TLSv1.3单向认证
一、代码运行结果 1.1 运行环境 1.2 运行结果 1.3 项目架构 二、TLS 协议基础与国密背景 2.1 TLS 协议的核心作用 TLS(Transport Layer Security) 是保障网络通信安全的加密协议,位于 TCP/IP 协议栈的应用层和传输层之间,提供: • 数据机密性:通过对称加密算法(如 AE…...
蓝桥杯省赛真题C++B组2024-握手问题
一、题目 【问题描述】 小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手(但这…...
项目实操分享:一个基于 Flask 的音乐生成系统,能够根据用户指定的参数自动生成 MIDI 音乐并转换为音频文件
在线体验音乐创作:AI Music Creator - AI Music Creator 体验者账号密码admin/admin123 系统架构 1.1 核心组件 MusicGenerator 类 负责音乐生成的核心逻辑 包含 MIDI 生成和音频转换功能 管理音乐参数和音轨生成 FluidSynth 集成 用于 MIDI 到音频的转换 …...
Java开发者如何接入并使用DeepSeek
目录 一、准备工作 二、添加DeepSeek SDK依赖 三、初始化DeepSeek客户端 四、数据上传与查询 五、数据处理与分析 六、实际应用案例 七、总结 【博主推荐】:最近发现了一个超棒的人工智能学习网站,内容通俗易懂,风格风趣幽默ÿ…...
多方安全计算(MPC)电子拍卖系统
目录 一、前言二、多方安全计算(MPC)与电子拍卖系统概述2.1 多方安全计算(MPC)的基本概念2.2 电子拍卖系统背景与需求三、MPC电子拍卖系统设计原理3.1 系统总体架构3.2 电子拍卖中的安全协议3.3 数学与算法证明四、数据加解密模块设计五、GPU加速与系统性能优化六、GUI设计与系…...
【数据库系统概论】第十一章 并发控制
第十一章 并发控制 11.1 并发控制概述(1)丢失修改(2)不可重复读(3)读“脏”数据 11.2 封锁11.2.1 封锁的概念11.2.2 基本封锁类型(1)排它锁/X锁/写锁(2)共享锁…...
C语言_数据结构总结4:不带头结点的单链表
纯C语言代码,不涉及C 0. 结点结构 typedef int ElemType; typedef struct LNode { ElemType data; //数据域 struct LNode* next; //指针域 }LNode, * LinkList; 1. 初始化 不带头结点的初始化,即只需将头指针初始化为NULL即可 void Init…...
用CSS画一条0.5px的线
上次面试前端被问到了这个问题,感觉有点懵懵的,我就回答了一个scaleY(0.5),这个是真的没想到,希望有需要的朋友可以去看看。随便记住一种就行。 1.第一种方式:通过缩放1px的线条实现视觉上的0.5px效果,兼容性较好。 …...
知识库全链路交互逻辑
阶段顺序 URL输入 → 网络连接 → 前端请求 → 后端处理 → 数据库交互 → 数据返回 → 前端渲染 → 连接关闭 阶段1:用户输入URL 用户行为:在浏览器地址栏输入 https://knowledge.com/search?keyword金融趋势 浏览器动作: “浏览器解析U…...
BambuStudio学习笔记:Model
# Model.hpp 核心模型结构说明## 文件概述 该头文件定义了3D打印数据处理的核心数据结构,包含模型对象、体积、实例、材料等关键类。主要功能包括: - 三维模型数据存储与管理 - 模型变换操作(平移/旋转/缩放) - 打印参数配置 - 多…...
Spring (八)AOP-切面编程的使用
目录 实现步骤: 1 导入AOP依赖 2 编写切面Aspect 3 编写通知方法 4 指定切入点表达式 5 测试AOP动态织入 图示: 一 实现步骤: 1 导入AOP依赖 <!-- Spring Boot AOP依赖 --><dependency><groupId>org.springframewor…...
【Go每日一练】构建一个简单的用户信息管理系统
👻创作者:丶重明 👻创作时间:2025年3月7日 👻擅长领域:运维 目录 1.😶🌫️题目:简单的用户信息管理系统2.😶🌫️代码开发3.😶&a…...
PathRAG:通过图剪枝的方法优化Graph-based RAG的性能方法浅析
PathRAG 也是一种新型 Graph-based RAG 方法,通过检索索引图中的关键关系路径,减少噪声并优化 LLM 提示。其核心创新在于基于流的剪枝算法和路径为基础的提示策略,特别适用于捕捉复杂数据集中的关系。(其实可以看做相比GraphRAG假…...
ElementUI 级联选择器el-cascader启用选择任意一级选项,选中后关闭下拉框
1、启用选择任意一级选项 在 el-cascader 标签上加上配置项: :props"{ checkStrictly: true }"例如: <el-cascaderref"selectedArrRef"v-model"selectedArr":options"optionsList":props"{ checkStri…...
【软件逆向】QQ 连连看小游戏去广告与一键消除实现
目录 一、背景介绍 二、去广告实现 2.1 分析广告加载流程 2.2 逆向分析广告加载逻辑 2.3 去广告方案 三、一键消除外挂实现 3.1 分析游戏逻辑 3.2 编写外挂插件 3.3 注入外挂: 四、一键消除效果展示 五、额外扩展 一、背景介绍 QQ 连连看是一款经典的休闲…...
vue el-select 省市区三级联动 vue + element-ui使用第三方插件实现省市区三级联动
vue el-select 省市区三级联动 vue使用第三方插件实现省市区三级联动 网上找了好多教程,都是使用el-cascader级联选择器的省市区选择器,但是几乎没有三个单独的el-select的进行关联的三级省市联动组件效果 第一步:先安装省市区element-ui的插件 npm install element-china-a…...
【GPT入门】第8课 大语言模型的自洽性
【GPT入门】第8课 大语言模型的自洽性 1.自洽性概念2.代码(观察执行结果)3.自洽性核心思想 1.自洽性概念 大模型的自洽性(self - consistency)是指在推理阶段,大模型通过生成多个答案并选择出现频率最高的那个&#x…...
工程化与框架系列(28)--前端国际化实现
前端国际化实现 🌍 引言 前端国际化(i18n)是现代Web应用中的重要组成部分,它能够让应用支持多语言和多地区的用户使用。本文将深入探讨前端国际化的实现方案和最佳实践,包括文本翻译、日期时间格式化、货币处理等方面…...
【阿里云】操作系统控制台操作体验与性能评测全解析
引言 在现代的云计算环境中,操作系统控制台是进行系统管理和运维的重要工具。它不仅帮助用户高效地管理云端资源,还提供了智能助手、系统诊断、性能观测等功能,能够提升操作系统的使用效率,增强用户的操作体验。本文简要介绍了操…...
面试之《IntersectionObserver的使用》
IntersectionObserver 是一个 Web API,用于异步观察目标元素与其祖先元素或顶级文档视口(viewport)交叉状态的变化。这在很多场景下非常有用,比如懒加载图片、实现无限滚动加载更多内容等。下面详细介绍它的使用方法。 基本原理 …...
在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践
文章目录 在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践一、下载 Kafka-0.9二、启动 Zookeeper 和 Kafka三、创建 Spring Boot 项目四、引入 kafka 依赖五、移除 Kafka 自动配置六、编写 Kafka 生产者6.1 Kafka配置类6.2 生产者监听类 七、编写Controller发送Kafka八、验证消费…...
【MACOS】用户数据过多
进入下面的路径下找到.Spotlight-V100文件夹 /System/Volumes/Data修改选线 通过终端权限不够 在finder中进行查看然后解锁 然后添加权限 使用代码查看存储数据。 diskutil apfs list...
鸿蒙系统中的持续部署
鸿蒙操作系统,作为一款面向未来的分布式操作系统,旨在为不同的设备提供统一的操作系统平台。它支持多种终端设备,包括但不限于智能手机、平板电脑、智能穿戴设备和物联网(IoT)设备等,并且能够实现跨平台的无…...
centos linux安装mysql8 重置密码 远程连接
1. 下载并安装 MySQL Yum 仓库 从 MySQL 官方网站下载并安装 Yum 仓库配置文件。 # 下载MySQL 8.0的Yum仓库包 wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm # 安装Yum仓库包 sudo rpm -ivh mysql80-community-release-el7-5.noarch.rpm2. 启…...
几种常见的虚拟环境工具(Virtualenv、Conda、System Interpreter、Pipenv、Poetry)的区别和特点总结
在 PyCharm 中创建虚拟环境是一个非常直接的过程,可以帮助你管理项目依赖,确保不同项目之间的依赖不会冲突。 通过 PyCharm 创建虚拟环境 打开 PyCharm 并选择或创建一个项目。 打开项目设置: 在 Windows/Linux 上,可以通过点击…...
VScode:运行程序停止后,频繁出现终端进程被终止
VScode里面powershell被迫关闭 bug场景排查原因解决办法 bug场景 系统:Windows IDE:Visual Studio Code 停止运行程序后,按向上箭头想要执行上一步命令,忽然终端页面强行关闭,并报错如下: 终端进程 &quo…...
PHP框架加载不上.env文件中的变量
以lumen5.5框架为例,根目录中bootstrap文件夹下的app.php文件中 (new Dotenv\Dotenv(__DIR__./../))->load(); 是读取所有.env中的文件的,这个是正常的,但是在代码中的任何位置或者在config目录下的databases.php里,代码如…...