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

【从零开始入门unity游戏开发之——C#篇13】命名规范——驼峰命名法和帕斯卡命名法,函数(方法)的使用介绍

文章目录

  • 一、命名规范
    • 1、**驼峰命名法(Camel Case)**
      • 用途:
    • 2、**帕斯卡命名法(Pascal Case)**
      • 用途:
    • 3、**C# 中命名约定的最佳实践**
      • 3.1 **类、结构体、接口、枚举、委托**
      • 3.2 **方法、属性、事件**
      • 3.3 **字段(私有字段)**
      • 3.4 **局部变量**
      • 3.5 **常量**
      • 3.6 **接口**
    • 4、总结
  • 二、函数(方法)
    • 1、**方法的基本语法**
    • 2、**方法的组成部分详细讲解**
      • a. **访问修饰符**
      • b. **返回类型**
      • c. **方法名**
      • d. **参数列表**
      • e. **方法体**
    • 3、**返回值**
    • 4、**调用方法**
    • 5、使用return中途退出方法
    • 6、**方法重载(Overloading)**
    • 7、**默认参数**
    • 8、**递归方法**
    • 9、**静态方法(Static Methods)**
    • 10、总结
  • 专栏推荐
  • 完结

一、命名规范

注意:现在有些知识(比如类、接口、委托等等)看不懂也没关系,后面都会一一学习的,到时,再回过头来看,现在不懂的地方应该就都会懂了,现在有个印象就行了

驼峰命名法(Camel Case)和帕斯卡命名法(Pascal Case)是两种常见的命名约定,广泛用于编程语言中,尤其是在 C# 中。

1、驼峰命名法(Camel Case)

驼峰命名法的特点是:

  • 第一个字母小写,后续单词的首字母大写。
  • 例子:myVariableNameuserAgecalculateTotalAmount

这种命名法形状类似于驼峰,因此得名“驼峰命名法”。

用途:

  • 驼峰命名法通常用于局部变量、方法的参数和私有字段的命名。
  • 在 C# 中,通常对私有字段和局部变量使用小写字母开头的驼峰命名法。

示例:

class ExampleClass
{private int myField;  // 私有字段(通常使用驼峰命名法)public void CalculateSum(int firstNumber, int secondNumber)  // 方法参数(驼峰命名法){int result = firstNumber + secondNumber;  // 局部变量(驼峰命名法)}
}

2、帕斯卡命名法(Pascal Case)

帕斯卡命名法的特点是:

  • 每个单词的首字母都大写,没有下划线或其他分隔符。
  • 例子:MyClassNameCalculateTotalAmountFirstName

这种命名法形状像“帕斯卡”(Pascal)三角形的结构,所以叫做“帕斯卡命名法”。

用途:

  • 在 C# 中,类名方法名属性名公共字段名 通常使用帕斯卡命名法。
  • 命名空间枚举类型也采用帕斯卡命名法。

示例:

class MyClassName  // 类名(帕斯卡命名法)
{public int MyProperty { get; set; }  // 属性名(帕斯卡命名法)public void CalculateTotalAmount()  // 方法名(帕斯卡命名法){// 逻辑}
}

3、C# 中命名约定的最佳实践

在 C# 中,使用哪种命名法取决于代码的对象类型(变量、方法、类、属性等)。微软的官方 C# 编码规范对命名有明确的建议。

3.1 类、结构体、接口、枚举、委托

  • 命名法:使用帕斯卡命名法(Pascal Case)。
  • 示例
    • class Person
    • struct Point
    • interface IShape(接口名以“I”开头)
    • enum DaysOfWeek

3.2 方法、属性、事件

  • 命名法:使用帕斯卡命名法(Pascal Case)。
  • 示例
    • public void CalculateSalary()
    • public string GetName()
    • public event EventHandler OnDataChanged

3.3 字段(私有字段)

  • 命名法:对于私有字段,使用驼峰命名法(Camel Case),并且在私有字段前面常常加上一个下划线(_)作为前缀。
  • 示例
    • private int _age
    • private string _firstName

3.4 局部变量

  • 命名法:使用驼峰命名法(Camel Case)。
  • 示例
    • int totalAmount
    • string customerName

3.5 常量

  • 命名法:常量通常使用全大写字母,并用下划线分隔单词。
  • 示例
    • const int MAX_VALUE = 100
    • const string USER_ROLE_ADMIN = "admin"

3.6 接口

  • 命名法:接口名通常以**I** 开头,并使用帕斯卡命名法
  • 示例
    • IEnumerable
    • IDisposable

4、总结

  • 驼峰命名法(Camel Case):第一个字母小写,常用于局部变量、方法参数和私有字段。
  • 帕斯卡命名法(Pascal Case):每个单词首字母大写,常用于类名、方法名、属性名、公共字段名、命名空间和枚举。

在 C# 中遵循这些命名约定有助于提高代码的可读性和一致性,同时使得代码更符合微软的编码标准,便于团队协作和代码维护。


二、函数(方法)

注意:现在有些地方看不懂也没关系,后面学习面向对象时,会再重新介绍的,再回过头来看,现在不懂的地方应该就都会懂了

在C#中,函数(通常称为方法)是执行特定任务的代码块。方法可以包含参数、返回值以及执行某些操作的逻辑。C#中的方法通常与类(class)、接口(interface)或结构体(struct )关联,并且是对象行为的核心部分。方法允许我们将代码组织成可重用的单元。

函数(方法)本质就是一块具有名称的代码块,可以使用函数(方法)的名称来执行该代码块,函数(方法)是封装进行重复使用的一种机制。

1、方法的基本语法

一个方法通常由以下几个部分组成:

  • 访问修饰符:定义方法的可访问性(如 publicprivateprotected 等)。
  • 返回类型:方法返回的值的数据类型。如果方法不返回值,则使用 void
  • 方法名:方法的名称,用来标识方法。
  • 参数列表(可选):方法接收的输入参数。
  • 方法体:包含方法执行逻辑的代码块。
// 方法定义
public int AddNumbers(int num1, int num2)
{return num1 + num2;
}

2、方法的组成部分详细讲解

a. 访问修饰符

  • public:方法可以在任何地方访问。
  • private:方法只能在定义它的类中访问。
  • protected:方法可以在当前类和派生类中访问。
  • internal:方法在同一程序集内可访问。
  • protected internal:方法在同一程序集内或派生类中可访问。

b. 返回类型

方法返回的类型定义了该方法返回的数据类型。常见的返回类型包括:

  • void:表示方法不返回任何值。
  • 基本数据类型(如 intstringbool 等)。
  • 自定义类型(如类、结构体、枚举等)。
public void PrintMessage(string message)
{Console.WriteLine(message);
}

c. 方法名

方法名用于标识方法,遵循 C# 的标识符命名规则。通常,方法名采用 Pascal命名法(首字母大写)。

d. 参数列表

方法的参数用于接收传递给方法的输入值。参数列表可以为空,也可以包含一个或多个参数。每个参数都需要指定类型和名称。

public int MultiplyNumbers(int a, int b)
{return a * b;
}

e. 方法体

方法体包含方法实际执行的逻辑代码。代码块用 {} 括起来。

3、返回值

方法可以根据需要返回一个值。例如,下面的 AddNumbers 方法返回一个整数:

public int AddNumbers(int a, int b)
{return a + b;
}

如果方法的返回类型是 void,则方法没有返回值:

public void PrintMessage(string message)
{Console.WriteLine(message);
}

4、调用方法

调用方法时,需要提供方法名和传递适当的参数(如果方法有参数)。对于有返回值的方法,可以使用返回的值。

int result = AddNumbers(5, 10);  // 调用有返回值的方法
Console.WriteLine(result);        // 输出 15PrintMessage("Hello, World!");  // 调用没有返回值的方法

5、使用return中途退出方法

即使函数没有返回值,我们也可以使用return
returni可以直接不执行之后的代码,直接返回到函数外部

public void PrintMessage(string message)
{if(message == "结束"){return;} Console.WriteLine(message);
}

调用方法时如果传的是"结束",则不会继续执行下面的打印

6、方法重载(Overloading)

C# 允许方法重载,即可以定义多个同名但参数不同的方法。重载方法的区别通常体现在参数的数量、类型或顺序上。

public int AddNumbers(int a, int b)
{return a + b;
}public double AddNumbers(double a, double b)
{return a + b;
}public string AddNumbers(string a, string b)
{return a + b;
}

7、默认参数

C#支持为方法的参数指定默认值。如果调用方法时未提供这些参数的值,C#将使用默认值。

public int MultiplyNumbers(int a, int b = 2)
{return a * b;
}// 调用时可以省略 b 参数,使用默认值 2
int result1 = MultiplyNumbers(5);  // 输出 10
int result2 = MultiplyNumbers(5, 3);  // 输出 15

8、递归方法

方法还可以调用自身,这被称为递归。递归方法通常有一个终止条件,否则会导致无限循环。

public int Factorial(int n)
{if (n == 0)return 1;elsereturn n * Factorial(n - 1); // 递归调用
}

9、静态方法(Static Methods)

静态方法属于类而不是类的实例,可以通过类直接调用,而无需创建类的对象。

public class MathUtility
{public static int AddNumbers(int a, int b){return a + b;}
}// 调用静态方法
int result = MathUtility.AddNumbers(5, 10); 

10、总结

  • 方法是 C# 中组织和复用代码的核心机制。
  • 方法通过 访问修饰符返回类型方法名参数列表方法体 组成。
  • 方法可以有返回值,也可以没有(void)。
  • 方法重载默认参数递归 等特性使得方法的使用更加灵活。

专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

相关文章:

【从零开始入门unity游戏开发之——C#篇13】命名规范——驼峰命名法和帕斯卡命名法,函数(方法)的使用介绍

文章目录 一、命名规范1、**驼峰命名法(Camel Case)**用途: 2、**帕斯卡命名法(Pascal Case)**用途: 3、**C# 中命名约定的最佳实践**3.1 **类、结构体、接口、枚举、委托**3.2 **方法、属性、事件**3.3 **…...

Android 写排行榜,顶部前三

activity_step_rank.xml <?xml version"1.0" encoding"UTF-8"?> <FrameLayout android:layout_height"match_parent" android:layout_width"match_parent" android:id"id/fragment_parent" android:orientation…...

sql server一些冷知识

1. Sql Server冷知识 &#xff08;1&#xff09; 删除表内容的方法 truncate table 表名 &#xff08;清除表记录&#xff0c;这个快&#xff09; &#xff08;2&#xff09; 列出所有数据库 sp_redatabases &#xff08;3&#xff09; 存储过程的参数命名 参数一定要以开头&am…...

【功能安全】随机硬件失效导致违背安全目标的评估(FMEDA)

目录 01 随机硬件失效介绍 02 FMEDA介绍 03 FMEDA模板 01 随机硬件失效介绍 GBT 34590 part5...

【Qt】信号、槽

目录 一、信号和槽的基本概念 二、connect函数&#xff1a;关联信号和槽 例子&#xff1a; 三、自定义信号和槽 1.自定义槽函数 2.自定义信号函数 例子&#xff1a; 四、带参的信号和槽 例子&#xff1a; 五、Q_OBJECT宏 六、断开信号和槽的连接 例子&#xff1a; …...

二叉树、平衡二叉树、红黑树、BTree、B+Tree的区别

一、二叉查找树 二叉树具有以下性质&#xff1a;左子树的键值小于根的键值&#xff0c;右子树的键值大于根的键值。 如下图所示就是一棵二叉查找树&#xff0c; 对该二叉树的节点进行查找发现深度为1的节点的查找次数为1&#xff0c;深度为2的查找次数为2&#xff0c;深度为n…...

【Rust自学】3.1. 变量与可变性

3.1.0. 写在正文之前 欢迎来到Rust自学的第三章&#xff0c;一共有6个小节&#xff0c;分别是: 变量与可变性&#xff08;本文&#xff09;数据类型&#xff1a;标量类型数据类型&#xff1a;复合类型函数和注释控制流&#xff1a;if else控制流&#xff1a;循环 通过第二章…...

如何使用生成式AI实现跨领域内容生成

文章目录 引言生成式AI的基本概念定义与分类技术发展现状 跨领域内容生成的技术实现数据准备模型选择与设计训练策略 应用案例分析教育培训新闻媒体文化创意产业 实践建议确定明确的目标构建合适的团队持续迭代改进遵守法律法规 结论 引言 在当今数字化时代&#xff0c;信息的…...

ubuntu无网络图标无法上网解决方案

1.打开/etc/resolv.conf&#xff0c;在其中添加需要配置的DNS地址&#xff0c;根据自己的电脑情况配置IP和网关 # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback#网卡2&#xff0c;双网卡的话eth0、eth1 auto eth1 iface eth1 inet stat…...

手写Redis分布式锁+RedisUtil二次封装

文章目录 1.手写Redis分布式锁1.RedisShareLockUtil2.使用方式 2.RedisUtil二次封装1.RedisUtil2.使用案例 1.手写Redis分布式锁 1.RedisShareLockUtil package com.sunxiansheng.redis.util;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springfra…...

APP测试中ios和androis的区别,有哪些注意点

一、运行机制不同 IOS采用的是沙盒运行机制&#xff0c;安卓采用的是虚拟机运行机制。 1、沙盒机制&#xff1a; 概念&#xff1a;沙盒是一种安全机制&#xff0c;用于防止不同应用之间互相访问 作用&#xff1a;就是存储数据&#xff0c;每个沙盒就相当于每个每个应用的系…...

Qt编译MySQL数据库驱动

目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 &#xff08;1&#xff09;先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 &#xff08;2&#xff09;在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…...

Springboot中使用Retrofit

Retrofit官网 https://square.github.io/retrofit/ 配置gradle implementation("com.squareup.okhttp3:okhttp:4.12.0")implementation ("com.squareup.retrofit2:retrofit:2.11.0")implementation ("com.squareup.retrofit2:converter-gson:2.11.0…...

字体子集化实践探索

最近项目rust生成PDF组件printpdf需要内嵌完整字体导致生成的PDF很大&#xff0c;需要做压缩&#xff0c;但是rust的类库allsorts::subset::subset不支持windows&#xff0c;所以做了一些windows下字体子集化的尝试 方案一&#xff1a;node.js做子集化 fontmin 缺点是也需要集…...

统计一个目录下的文件及目录数量-linux010

要统计一个目录下的文件数量&#xff08;包括子目录中的文件&#xff09;&#xff0c;可以使用以下命令&#xff1a; 1. 统计所有文件数量&#xff08;包括子目录&#xff09; 在终端中运行以下命令&#xff1a; find /path/to/directory -type f | wc -l 解释&#xff1a;…...

【计算机网络】期末考试预习复习|上

作业讲解 物理层作业 共有4个用户进行CDMA通信。这4个用户的码片序列为&#xff1a; A: (–1 –1 –1 1 1 –1 1 1)&#xff1b;B: (–1 –1 1 –1 1 1 1 –1) C: (–1 1 –1 1 1 1 –1 –1)&#xff1b;D: (–1 1 –1 –1 –1 –1 1 –1) 现收到码片序列&#xff1a;(–1 1 –…...

构建一个rust生产应用读书笔记四(实战3)

从这一节开始&#xff0c;我们将继续完善邮件订阅生产级应用&#xff0c;根据作者的选型sqlx作为数据库操作的类库&#xff0c;它有如下优点&#xff1a; 它旨在提供高效、安全且易于使用的数据库交互体验。sqlx 支持多种数据库&#xff0c;包括 PostgreSQL、MySQL 和 SQLite&…...

idea无法识别文件,如何把floder文件恢复成model

前景&#xff1a; 昨天&#xff0c;我在之前的A1214模块包下新增了一个demo类&#xff0c;然后又新建了一个A1216模块&#xff0c;写了算法题&#xff0c;后面打算用git提交&#xff0c;发现之前的A1214模块下的demo类和新建的模块源文件都已经被追踪了&#xff0c;都是绿色的&…...

更新数据时Redis的操作

一般做法是在数据库更新后删除Redis中对应的缓存数据&#xff0c;而非更新数据。那么为什么要这么做呢&#xff1f; 以下是一些拙见 场景使用 金融交易系统&#xff1a;在金融领域&#xff0c;数据的准确性至关重要。任何数据不一致都可能导致严重的财务损失。因此&#xff0…...

Flink CDC 读取oracle库数据性能优化

通过综合考虑Oracle数据库配置、Flink作业配置以及其他优化措施&#xff0c;可以显著提升Flink CDC读取Oracle库数据的性能和效率。可以从以下几个方面进行&#xff1a; 一、Oracle数据库配置优化 ‌开启归档日志‌&#xff1a; 通过执行sqlplus /assysdba或sqlplus/nolog命令…...

学习记录:js算法(一百二十三):不同路径 II

文章目录 不同路径 II思路一 不同路径 II 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]&#xff09;。机器人尝试移动到 右下角&#xff08;即 grid[m - 1][n - 1]&#xff09;。机器人每次只能向下或者向右移动一步。 网格中的障碍物…...

mybatis 的动态sql 和缓存

动态SQL 可以根据具体的参数条件&#xff0c;来对SQL语句进行动态拼接。 比如在以前的开发中&#xff0c;由于不确定查询参数是否存在&#xff0c;许多人会使用类似于where 1 1 来作为前缀&#xff0c;然后后面用AND 拼接要查询的参数&#xff0c;这样&#xff0c;就算要查询…...

You need to call SQLitePCL.raw.SetProvider()

在.NET环境中使用Entity Framework Core&#xff08;EF Core&#xff09;连接SQLite数据库时&#xff0c;报错。 使用框架 .NET8 错误信息&#xff1a; Exception: You need to call SQLitePCL.raw.SetProvider(). If you are using a bundle package, this is done by calling…...

MYSQL执行一条update语句,期间发生了什么

客户端先通过连接器建立连接&#xff0c;连接器自会判断用户身份&#xff1b; 因为这是一条 update 语句&#xff0c;所以不需要经过查询缓存&#xff0c;但是表上有更新语句&#xff0c;是会把整个表的查询缓存清空的&#xff0c;所以说查询缓存很鸡肋&#xff0c;在 MySQL 8…...

《安全工程师自我防护指南:直面数字威胁的有效策略与实践》

一、法律层面的保护 获取授权 在对目标系统进行任何测试之前&#xff0c;确保已经获得了合法的授权。这可以是来自目标组织&#xff08;如企业的信息安全部门&#xff09;的书面授权或者合同协议。例如&#xff0c;一家公司聘请外部安全团队来测试其网络安全防御能力&#xff…...

SpringBoot2+Vue2开发工作管理系统

项目介绍 在工作中使用的管理系统&#xff0c;可以随手记录一些笔记、可以汇总一些常用网站的链接、可以管理自己负责的项目、可以记录每日日报和查看历史日报、可以记录加班情况、可以记录报销内容、可以编写文章文档。 系统功能 我的笔记快捷入口项目管理今日日报我的日报…...

华为HarmonyOS实现跨多个子系统融合的场景化服务 -- 7 地图选点Button

场景介绍 本章节将向您介绍如何使用地图选点Button功能&#xff0c;开发者可调用Button组件拉起Map Kit的地图选点页面&#xff0c;用户在地图中选择位置后&#xff0c;位置相关信息返回Button界面。 说明 该场景暂不支持2in1设备。 前提条件 参见开发准备。 效果图展示 …...

Web项目图片视频加载缓慢/首屏加载白屏

Web项目图片视频加载缓慢/首屏加载白屏 文章目录 Web项目图片视频加载缓慢/首屏加载白屏一、原因二、 解决方案2.1、 图片和视频的优化2.1.1、压缩图片或视频2.1.2、 选择合适的图片或视频格式2.1.3、 使用图片或视频 CDN 加速2.1.4、Nginx中开启gzip 三、压缩工具推荐 一、原因…...

Java系统对接企业微信审批项目流程

若依做的一个系统需求需要对接企业微信的人员去审核订单 回款之类&#xff0c;以下是详细步骤. 1.首先登入企业微信管理后台&#xff1a; 企业微信 2.找到应用管理 3.自建一个应用 4.这些数据都可以拿到 5.配置可信Ip 6.进入有两种方法让你去配置 &#xff0c;第一种用公司的…...

MacOS 命令行详解使用教程

本章讲述MacOs命令行详解的使用教程&#xff0c;感谢大家观看。 本人博客:如烟花般绚烂却又稍纵即逝的主页 MacOs命令行前言&#xff1a; 在 macOS 上,Terminal&#xff08;终端) 是一个功能强大的工具&#xff0c;它允许用户通过命令行直接与系统交互。本教程将详细介绍 macOS…...

易语言鼠标轨迹算法(游戏防检测算法)

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…...

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象 一、引言二、环境三、待解析的DDL四、解析后的对象结构五、完整的UT类六、控制台输出总结 一、引言 在日常开发中&#xff0c;有些需要对SQL进行解析的场景&#xff0c;比如读取表结构信息&#xff0c;生成文档、…...

靜態IP與DHCP的區別和用法

IP地址可以是靜態的&#xff0c;即固定不變&#xff0c;也可以是動態的&#xff0c;定期更改或每次連接後更改。 什麼是靜態 IP&#xff1f; 靜態IP地址是固定的&#xff0c;手動分配的IP地址&#xff0c;不會隨時間而變化。分配後&#xff0c;此 IP 保持不變&#xff0c;並由…...

【C#】Debug和Release的区别和使用

在 C 或 C# 开发中&#xff0c;Debug 和 Release 是两种不同的编译配置&#xff0c;主要用于开发过程中的不同阶段。它们的主要区别如下&#xff1a; 1. Debug 版本 Debug 版本是为了开发和调试程序而优化的构建模式。 特点&#xff1a; 包含调试信息&#xff1a; Debug 版本…...

Element plus 下拉框组件选中一个选项后显示的是 value 而不是 label

最近刚进行 Vue3 Element plus 项目实践&#xff0c;在进行表单二次封装的时候&#xff0c;表单元素 select 下拉框组件选中一个选项后显示的是 value 而不是 label&#xff0c;下面上代码&#xff1a; 原来的写法&#xff1a; <el-selectv-if"v.type select"…...

Redis - 消息队列 Stream

一、概述 消息队列 定义 消息队列模型&#xff1a;一种分布式系统中的消息传递方案&#xff0c;由消息队列、生产者和消费者组成消息队列&#xff1a;负责存储和管理消息的中间件&#xff0c;也称为消息代理&#xff08;Message Broker&#xff09;生产者&#xff1a;负责 产…...

【多维DP】【hard】力扣1269. 停在原地的方案数

有一个长度为 arrLen 的数组&#xff0c;开始有一个指针在索引 0 处。 每一步操作中&#xff0c;你可以将指针向左或向右移动 1 步&#xff0c;或者停在原地&#xff08;指针不能被移动到数组范围外&#xff09;。 给你两个整数 steps 和 arrLen &#xff0c;请你计算并返回&…...

Android显示系统(11)- 向SurfaceFlinger申请Surface

Android显示系统&#xff08;01&#xff09;- 架构分析 Android显示系统&#xff08;02&#xff09;- OpenGL ES - 概述 Android显示系统&#xff08;03&#xff09;- OpenGL ES - GLSurfaceView的使用 Android显示系统&#xff08;04&#xff09;- OpenGL ES - Shader绘制三角…...

OpenCV实验篇:识别图片颜色并绘制轮廓

第三篇&#xff1a;识别图片颜色并绘制轮廓 1. 实验原理 颜色识别的原理&#xff1a; 颜色在图像处理中通常使用 HSV 空间来表示。 HSV 空间是基于人类视觉系统的一种颜色模型&#xff0c;其中&#xff1a; H&#xff08;Hue&#xff09;&#xff1a;色调&#xff0c;表示颜色…...

鸿蒙-应用内悬浮窗

//悬浮窗工具类 import { window } from kit.ArkUI; import { BusinessError } from kit.BasicServicesKit; import { Logger } from mbbase/common-ui; import * as FloatedWindowPage from ./FloatedWindowPage; // 导入命名路由页面 const TAG [FloatedWindowUtils]; ex…...

Ubuntu Linux操作系统

一、Ubuntu简介 Ubuntu Linux是由南非人马克沙特尔沃思(Mark Shuttleworth)创办的基于Debian Linux的操作系统&#xff0c;于2004年10月公布。Ubuntu是一个以桌面应用为主的Linux发行版操作系统。Ubuntu拥有庞大的社区力量&#xff0c;用户可以方便地从社区获得帮助。其官方网…...

Linux下SVN客户端保存账号密码

参考文章&#xff1a;解决&#xff1a;Linux上SVN 1.12版本以上无法直接存储明文密码_linux svn 保存密码-CSDN博客新版本svn使用gpg-agent存储密码-CSDN博客svn之无法让 SVN 存储密码&#xff0c;即使配置设置为允许_编程设计_ITGUEST 方法一&#xff1a;明文方式保存密码 首…...

【DBeaver】连接带kerberos的hive[Apache|HDP]

目录 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 1.2 环境配置 二、基于Cloudera驱动创建连接 三、基于Hive原生驱动创建连接 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 在Kerberos官网下载,地址如下&#xff1a;https://web.mit.edu/kerberos…...

Android-Glide详解

目录 一&#xff0c;介绍 二&#xff0c;使用 三&#xff0c;源码分析思路 四&#xff0c;with源码分析 五&#xff0c;模拟Glide生命周期管理 一&#xff0c;介绍 Glide目前是安卓最主流的加载图片的框架&#xff0c;也是源码最为复杂的框架之一。 要想完完全全吃透Glide的源…...

【容器】k8s学习笔记原理详解(十万字超详细)

Pod详解 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类&#xff1a; 用户程序所在的容器&#xff0c;数量可多可少Pause容器&#xff0c;这是每个Pod都会有的一个根容器&#xff0c;它的作用有两个&#xff1a; 可以以它为依据&am…...

SQL Server通过存储过程实现自定义邮件格式并定时发送

在 SQL Server 中,可以通过存储过程实现自定义邮件格式并定时发送。这通常涉及以下几个步骤: 1. 配置 Database Mail:首先需要配置 SQL Server 的 Database Mail 功能。 2. 创建存储过程:编写存储过程来生成自定义邮件格式并发送邮件。 3. 设置 SQL Server 代理作…...

通过增强的 vSphere 集成增强你的 vSphere 监控

作者&#xff1a;来自 Elastic Ishleen Kaur•Lalit Satapathy vSphere 是 VMware 的云计算虚拟化平台&#xff0c;提供一套功能强大的虚拟化资源管理套件。它允许组织创建、管理和优化虚拟环境&#xff0c;提供高可用性、负载平衡和简化资源分配等高级功能。vSphere 可以高效利…...

C++ 并发专题 - C++线程同步的几种方法

一&#xff1a;概述 线程同步是多线程编程中的一个重要概念&#xff0c;它用于控制多个线程之间对共享资源的访问&#xff0c;避免竞态条件&#xff08;race condition&#xff09;和数据不一致的问题。线程同步确保在多线程环境中&#xff0c;多个线程访问共享数据时能够按照某…...

[java]网络编程

java.net.*包下提供了网络编程的解决方案 通信架构 CS架构 客户端 客户端需要开发 用户需要安装 服务端 需要开发 BS架构 浏览器 不需要开发 需要安装浏览器 服务器 需要开发 网络通信三要素 IP地址 是设备在网络中的唯一标识, 全称 互联网协议地址 分类 公网IP 可…...

[C++]类的继承

一、什么是继承 1.定义&#xff1a; 在 C 中&#xff0c;继承是一种机制&#xff0c;允许一个类&#xff08;派生类&#xff09;继承另一个类&#xff08;基类&#xff09;的成员&#xff08;数据和函数&#xff09;。继承使得派生类能够直接访问基类的公有和保护成员&#xf…...