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

C# 迭代,递归,回调--13

目录

一.迭代

迭代器示例:

关键点:

优势:

二.递归

递归示例:

关键点:

优势:

注意:

三.回调

回调示例:

关键点:

优势:

应用场景:

4.三种模式的特点对比:

迭代:

递归:

回调:


一.迭代

在C#中迭代通常指重复执行一系列指令

在C#中,迭代器是一种特殊的结构,允许我们自定义遍历集合的方式,主要使用yield return关键字

yield return关键字的主要优点包括:

  • 简化了迭代器的实现:不需要手动维护状态或创建临时集合
  • 提高了代码的可读性和可维护性:使用 yield return 的方法显得更加直观
  • 延迟执行:元素在需要时才生成,适合处理大量数据或计算密集型操作

除了 yield return,还有一个相关的关键字 yield break,用于终止迭代器并退出迭代

迭代器示例:

class Program
{static void Main(string[] args){Console.WriteLine("迭代器示例:\n");// 1. 使用迭代器方法Console.WriteLine("1. 斐波那契数列(前10个数):");foreach (var num in Fibonacci(10)){Console.Write($"{num} ");}Console.WriteLine("\n");// 2. 自定义集合迭代var customCollection = new CustomCollection(5);Console.WriteLine("2. 自定义集合迭代:");foreach (var item in customCollection){Console.Write($"{item} ");}Console.WriteLine("\n");// 3. yield return 示例Console.WriteLine("3. 生成偶数序列(0-10):");foreach (var even in GetEvenNumbers(10)){Console.Write($"{even} ");}Console.WriteLine("\n");// 4. 带条件的迭代器Console.WriteLine("4. 按条件过滤的数字(1-20中能被3整除的数):");foreach (var num in GetNumbersDivisibleBy3(20)){Console.Write($"{num} ");}Console.WriteLine("\n");Console.ReadKey();}// 斐波那契数列迭代器static IEnumerable<int> Fibonacci(int count){int current = 0, next = 1;for (int i = 0; i < count; i++){yield return current;int temp = current + next;current = next;next = temp;}}// 生成偶数的迭代器static IEnumerable<int> GetEvenNumbers(int max){for (int i = 0; i <= max; i++){if (i % 2 == 0)yield return i;}}// 能被3整除的数的迭代器static IEnumerable<int> GetNumbersDivisibleBy3(int max){for (int i = 1; i <= max; i++){if (i % 3 == 0)yield return i;}}
}// 自定义可迭代集合
class CustomCollection : IEnumerable<int>
{private int[] array;public CustomCollection(int size){array = new int[size];for (int i = 0; i < size; i++){array[i] = i * i; // 存储数字的平方}}public IEnumerator<int> GetEnumerator(){for (int i = 0; i < array.Length; i++){yield return array[i];}}System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator(){return GetEnumerator();}
}

关键点:

  • 循环结构: 在C#中,迭代通常通过forwhiledo...whileforeach等循环结构实现

  • 用途: 用于在数量已知或者条件可判定的情况下重复执行某段代码,例如遍历数组、执行固定次数的计算等

  • 控制条件: 迭代需要有明确的开始条件、结束条件,以及每次迭代时的状态更新,避免出现无限循环

优势:

  • 可控性强: 通过明确的控制条件,可以精确地控制迭代次数
  • 效率高: 迭代通常比递归占用更少的内存,因为不涉及函数调用的堆栈开销

二.递归

递归是指函数在其定义中直接或间接调用自身的编程技巧

递归通常用于解决可以分解为相同子问题的问题,如阶乘,斐波那契数列等

递归示例:

class Program
{static void Main(string[] args){Console.WriteLine("递归示例演示:\n");// 1. 阶乘计算int n = 5;Console.WriteLine($"1. {n}的阶乘是: {CalculateFactorial(n)}");// 2. 斐波那契数列int position = 8;Console.WriteLine($"\n2. 斐波那契数列第{position}个数是: {Fibonacci(position)}");// 3. 数组求和int[] numbers = { 1, 2, 3, 4, 5 };Console.WriteLine($"\n3. 数组求和结果: {ArraySum(numbers, numbers.Length - 1)}");// 4. 字符串反转string text = "Hello, World!";Console.WriteLine($"\n4. 字符串 \"{text}\" 反转后: {ReverseString(text)}");// 5. 最大公约数int a = 48, b = 36;Console.WriteLine($"\n5. {a}和{b}的最大公约数是: {GCD(a, b)}");// 6. 汉诺塔问题Console.WriteLine("\n6. 汉诺塔移动步骤(3个盘子):");HanoiTower(3, 'A', 'B', 'C');// 7. 目录结构显示Console.WriteLine("\n7. 显示目录结构:");string path = @"C:\Example"; // 替换为实际路径try{ShowDirectoryStructure(path, 0);}catch (Exception ex){Console.WriteLine($"读取目录时出错: {ex.Message}");}Console.ReadKey();}// 1. 计算阶乘static int CalculateFactorial(int n){if (n <= 1) return 1;return n * CalculateFactorial(n - 1);}// 2. 斐波那契数列static int Fibonacci(int n){if (n <= 1) return n;return Fibonacci(n - 1) + Fibonacci(n - 2);}// 3. 数组求和static int ArraySum(int[] array, int index){if (index < 0) return 0;return array[index] + ArraySum(array, index - 1);}// 4. 字符串反转static string ReverseString(string str){if (string.IsNullOrEmpty(str) || str.Length <= 1)return str;return ReverseString(str.Substring(1)) + str[0];}// 5. 最大公约数(欧几里得算法)static int GCD(int a, int b){if (b == 0) return a;return GCD(b, a % b);}// 6. 汉诺塔问题static void HanoiTower(int n, char from, char auxiliary, char to){if (n == 1){Console.WriteLine($"将盘子 1 从 {from} 移动到 {to}");return;}HanoiTower(n - 1, from, to, auxiliary);Console.WriteLine($"将盘子 {n} 从 {from} 移动到 {to}");HanoiTower(n - 1, auxiliary, from, to);}// 7. 显示目录结构static void ShowDirectoryStructure(string path, int level){// 添加缩进string indent = new string(' ', level * 2);try{// 显示当前目录DirectoryInfo dir = new DirectoryInfo(path);Console.WriteLine($"{indent}[{dir.Name}]");// 显示文件foreach (FileInfo file in dir.GetFiles()){Console.WriteLine($"{indent}  {file.Name}");}// 递归显示子目录foreach (DirectoryInfo subDir in dir.GetDirectories()){ShowDirectoryStructure(subDir.FullName, level + 1);}}catch (UnauthorizedAccessException){Console.WriteLine($"{indent}访问被拒绝");}}
}

关键点:

  • 基例(终止条件): 递归必须要有一个明确的终止条件,即基例,否则会导致无限递归

  • 递归关系: 问题的解可以表示为其子问题的解的组合

  • 堆栈开销: 每一次递归调用都会在调用栈中存储当前函数的状态,深入太深可能导致栈溢出

优势:

  • 代码简洁: 对于某些问题,递归能使代码更易读、更简洁
  • 自然适应某些算法: 如树的遍历、分治算法等,递归实现更符合逻辑

注意:

  • 效率问题: 递归可能导致大量的函数调用,增加开销。
  • 栈溢出风险: 如果递归深度太大,可能导致栈溢出错误。

三.回调

回调是指将一个函数作为参数传递给另一个函数,当特定事件发生或条件满足时调用该函数

在C#中,回调通常通过委托事件来实现

回调示例:

class Program
{// 定义委托类型public delegate void ProcessCompleted(string result);public delegate int CalculateDelegate(int x, int y);static void Main(string[] args){Console.WriteLine("回调示例:\n");// 1. 使用委托回调Console.WriteLine("1. 委托回调示例:");ProcessCompleted callback = ShowResult;ProcessWithCallback("任务1", callback);// 2. 使用Action/FuncConsole.WriteLine("\n2. Action/Func回调示例:");ProcessWithAction("任务2", (result) => {Console.WriteLine($"Lambda回调结果: {result}");});// 3. 事件回调var processor = new TaskProcessor();processor.OnCompleted += (sender, result) => {Console.WriteLine($"事件回调结果: {result}");};processor.StartProcess("任务3");// 4. 异步回调Console.WriteLine("\n4. 异步回调示例:");AsyncProcessDemo().Wait();// 5. 计算器回调示例Console.WriteLine("\n5. 计算器回调示例:");CalculateWithCallback(10, 5, Add);CalculateWithCallback(10, 5, Subtract);Console.ReadKey();}// 基本回调方法static void ShowResult(string result){Console.WriteLine($"普通回调结果: {result}");}// 使用委托的处理方法static void ProcessWithCallback(string input, ProcessCompleted callback){// 模拟处理过程Thread.Sleep(100);string result = $"处理完成: {input}";callback(result);}// 使用Action的处理方法static void ProcessWithAction(string input, Action<string> callback){Thread.Sleep(100);string result = $"处理完成: {input}";callback(result);}// 异步回调示例static async Task AsyncProcessDemo(){await ProcessAsync("异步任务", (result) =>{Console.WriteLine($"异步回调结果: {result}");});}static Task ProcessAsync(string input, Action<string> callback){return Task.Run(() =>{Thread.Sleep(100);string result = $"处理完成: {input}";callback(result);});}// 计算器回调方法static int Add(int x, int y) => x + y;static int Subtract(int x, int y) => x - y;static void CalculateWithCallback(int x, int y, CalculateDelegate callback){int result = callback(x, y);Console.WriteLine($"计算结果: {result}");}
}// 使用事件的处理器类
class TaskProcessor
{public event EventHandler<string> OnCompleted;public void StartProcess(string input){// 模拟处理过程Thread.Sleep(100);string result = $"处理完成: {input}";// 触发事件OnCompleted?.Invoke(this, result);}
}

关键点:

  • 委托(Delegate): 在C#中,回调通常通过委托实现,委托是对函数的引用,可以作为参数传递

  • 事件(Event): 事件是委托的特殊形式,用于发布和订阅机制,常用于GUI编程、异步操作等

  • 异步编程: 回调在异步编程中非常重要,可以在异步操作完成后执行后续处理

优势:

  • 解耦: 回调机制使得调用者和被调用者之间的依赖减少,代码更加灵活
  • 灵活性: 可以在运行时决定调用哪个函数,增强了代码的可扩展性

应用场景:

  • 事件处理: 例如按钮点击事件,网络请求完成事件等
  • 异步操作: 在异步编程中,回调函数用于在任务完成后继续执行后续逻辑

4.三种模式的特点对比:

迭代:

        特点:

  • 逐个处理元素
  • 内存效率高
  • 代码直观

        适用场景:

  • 集合遍历
  • 简单重复操作
  • 需要延迟计算

递归:

        特点:

  • 自调用
  • 代码简洁
  • 需要注意栈溢出

        适用场景:

  • 树形结构处理
  • 分治算法
  • 自然递归问题

回调:

        特点:

  • 灵活可配置
  • 解耦操作
  • 支持异步

        适用场景:

  • 事件处理
  • 异步操作
  • 策略模式

策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互相替换。策略模式使得算法可以在不影响客户端的情况下发生变化。它通过定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换,从而让算法的变化不会影响到使用算法的客户。

相关文章:

C# 迭代,递归,回调--13

目录 一.迭代 迭代器示例: 关键点: 优势: 二.递归 递归示例: 关键点: 优势: 注意: 三.回调 回调示例: 关键点: 优势: 应用场景: 4.三种模式的特点对比: 迭代: 递归: 回调: 一.迭代 在C#中迭代通常指重复执行一系列指令 在C#中,迭代器是一种特殊的结构,允许…...

MOS管为什么会有夹断,夹断后为什么会有电流?该电流为什么是恒定的?

以下是对MOS管MOS管为什么会有夹断&#xff0c;夹断后为什么还会有电流&#xff1f;该电流为什么是恒定的&#xff1f;的一些心得体会。 1. MOS管为什么会有夹断&#xff1f; 可以认为D极加压使得D极的耗尽层增大(原因是N极接正极&#xff0c;P极接负极&#xff0c;电子被吸引…...

3D可视化产品定制,应用于哪些行业领域?

3D可视化定制服务已广泛渗透至众多行业领域&#xff0c;包括汽车、家居、时尚鞋服、珠宝配饰以及数码电器等&#xff1a; 汽车行业&#xff1a; 借助Web全景技术与3D模型&#xff0c;我们高保真地再现了汽车外观&#xff0c;为用户带来沉浸式的车型浏览体验。用户可在展示界面自…...

Golang 简要概述

文章目录 1. Golang 的学习方向2. Golang 的应用领域2.1 区块链的应用开发2.2 后台的服务应用2.3 云计算/云服务后台应用 1. Golang 的学习方向 Go 语言&#xff0c;我们可以简单的写成 Golang 2. Golang 的应用领域 2.1 区块链的应用开发 2.2 后台的服务应用 2.3 云计算/云服…...

PL/SQL语言的文件操作

PL/SQL语言的文件操作 PL/SQL&#xff08;Procedural Language/SQL&#xff09;是Oracle公司开发的一种过程化扩展SQL的语言&#xff0c;广泛应用于Oracle数据库的开发和管理。PL/SQL不仅支持SQL指令&#xff0c;还支持过程化编程&#xff0c;例如条件控制、循环控制、异常处理…...

python判断当前时间是否是每月10号上午

以下是一个 Python 脚本&#xff0c;用于判断当前时间是否是每月 10 号的上午&#xff1a; from datetime import datetime# 获取当前时间 now datetime.now()# 检查是否是每月 10 号的上午 if now.day 10 and now.hour < 12:print("当前时间是每月10号上午。"…...

【MT32F006】MT32F006之max17048电量计(IIC通信)

本文最后修改时间&#xff1a;2025年01月09日 一、本节简介 本文介绍如何使用MT32F006通过IIC与电量计max17048通信。 二、实验平台 库版本&#xff1a;V1.0.0 编译软件&#xff1a;MDK5.37 硬件平台&#xff1a;MT32F006开发板&#xff08;主芯片MT32F006&#xff09; 仿…...

使用python生成gif图

使用PyCharm软件&#xff0c;然后pip install imageio 之后代码如下 import imageio.v2 as imageio# 合成 gif 方法 def compose_gif():img_path ["D:\\picture\\R-CA.jpg", "D:\\picture\\R-C.jpg","D:\\picture\\R-C.jpg", "D:\\pict…...

pytorch小记(一):pytorch矩阵乘法:torch.matmul(x, y)

pytorch小记&#xff08;一&#xff09;&#xff1a;pytorch矩阵乘法&#xff1a;torch.matmul&#xff08;x, y&#xff09;/ x y 代码代码 1&#xff1a;torch.matmul(x, y)输入张量&#xff1a;计算逻辑&#xff1a;输出结果&#xff1a; 代码 2&#xff1a;y y.view(4,1)…...

CF 368A.Sereja and Coat Rack(Java实现)

问题分析 简而言之&#xff0c;小明要邀请m个绅士到家&#xff0c;家里有n个挂衣钩&#xff0c;一个挂衣钩要支付i元&#xff0c;如果挂衣钩不够了就要给每个绅士赔d元 思路分析 所以思路就很清楚了&#xff0c;获取n&#xff0c;d&#xff0c;m的值&#xff0c;并用数组存放每…...

HBuilderX打包ios保姆式教程

1、登录苹果开发者后台并登录已认证开发者账号ID Sign In - Apple 2、创建标识符&#xff08;App ID&#xff09;、证书&#xff0c;描述文件 3、首先创建标识符&#xff0c;用于新建App应用 3-1、App的话直接选择第一个App IDs&#xff0c;点击右上角继续 3-2、选择App&#x…...

【SOC 芯片设计 DFT 学习专栏 -- DFT 接管 clock 和 reset】

文章目录 OverviewDFT 接管 Clock 和 Reset 的方法Clock 接管方法Reset 接管方法 什么场景下需要 DFT 来接管 Clock 和 Reset&#xff1f;制造测试&#xff08;Manufacturing Test&#xff09;静态路径扫描测试&#xff08;Scan Testing&#xff09;调试与故障定位&#xff08;…...

浅谈云计算07 | 云安全机制

浅谈云计算安全机制&#xff1a;全方位守护云端世界 一、引言二、加密技术&#xff1a;数据的隐形护盾三、散列机制&#xff1a;数据完整性的忠诚卫士四、数字签名&#xff1a;数据来源与真伪的鉴定专家五、公钥基础设施&#xff08;PKI&#xff09;&#xff1a;信任的基石六、…...

PyTorch 深度学习框架快速入门 (小土堆)

PyTorch 深度学习框架快速入门 深度学习框架常用模块数据集存取图片数据处理库 —— PILOS 模块实例 Tensorboard 记录机器学习的过程Transform 进行图像变换数据集的下载DataLoaderModule 自定义网络前向传播卷积层卷积简单应用 最大池化非线性层线性层 简单的整合基于现有网络…...

React Native Hooks开发指南

一、什么是Hooks Hooks 是 React 16.8 的新增特性。在不编写 class 的情况下使用 state 以及其他的 React 特性。Hooks 是一种在函数式组件中使用有状态函数的方法。 二、类组件 componentDidMount、componentDidUpdate 和 componentWillUnmount 这三个函数的组合。 三、常用…...

Java内存与缓存

Java内存管理和缓存机制是构建高性能应用程序的关键要素。它们之间既有联系又有区别&#xff0c;理解这两者对于优化Java应用至关重要。 Java 内存模型 Java内存模型&#xff08;JMM&#xff09;定义了线程如何以及何时可以看到其他线程修改过的共享变量的值&#xff0c;并且规…...

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库

目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的&#xff0c;所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意&#xff1a;直接git pu…...

React中ElementFiber对象、WorkInProgress双缓存、ReconcileRenderCommit、第一次挂载过程详解

基础概念 Element对象与Fiber对象 Element对象与Fiber对象 Element 对象 定义 React 的 Element 对象是一个描述用户界面&#xff08;UI&#xff09;的普通 JavaScript 对象&#xff0c;通常由 React.createElement 或 JSX 语法生成。 作用 它是 React 应用中的一种描述 …...

【论文阅读】Workload Dependent Performance Evaluation of the Linux 2.6 I/O Schedulers

文章目录 某些背景知识的科普&#xff08;依赖GPT&#xff09;GPT简短总结摘要-Abstract引言-Introduction1 I/O Scheduling and the BIO LayerThe 2.6 Deadline I/O Scheduler2.1 The 2.6 Anticipatory I/O scheduler2.2 The 2.6 CFQ Scheduler2.3 The 2.6 noop I/O scheduler…...

macOS 版本对应 Xcode 版本,以及 Xcode 历史版本下载

注&#xff1a;当前页面的所有Xcode下载链接均为苹果官方下载链接 &#xff0c;点击将直接转至苹果官网下载。❤️❤️❤️ Xcode官网&#xff1a;Xcode Releases | xcodereleases.com Xcode版本Xcode发布时间对应macOS版本macOS SDKsiOS SDKswatchOS SDKstvOS SDKs下载Xcode发…...

量子计算:从薛定谔的猫到你的生活

文章背景 说到量子计算&#xff0c;不少人觉得它神秘又遥不可及。其实&#xff0c;它只是量子物理学的一个“应用小分支”。它的核心在于量子比特的“叠加”和“纠缠”&#xff0c;这些听上去像科幻小说的概念&#xff0c;却为计算世界开辟了一片全新的天地。如果经典计算是“…...

R4-LSTM学习笔记

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 LSTM-火灾温度预测 导入数据数据可视化设置X、y构建模型调用模型个人总结LSTM 的基本结构细胞状态&#xff08;Cell State&#xff09;LSTM 的优点 导入数据 i…...

Facebook 隐私变革之路:回顾与展望

在数字时代&#xff0c;个人隐私的保护一直是社交平台面临的重大挑战之一。作为全球最大的社交网络平台&#xff0c;Facebook&#xff08;现为Meta&#xff09;在处理用户隐私方面的变革&#xff0c;历经了多次调整与完善。本文将回顾Facebook在隐私保护方面的历程&#xff0c;…...

计算机网络 (40)域名系统DNS

前言 计算机网络域名系统DNS&#xff08;Domain Name System&#xff09;是互联网的基础技术之一&#xff0c;它负责将人类可读的域名转换为计算机用来通信的数字IP地址。 一、基本概念 DNS的主要目的是将域名解析或翻译为IP地址&#xff0c;使得用户可以通过简单易记的域名来访…...

LabVIEW驱动电机实现样品自动搜索

利用LabVIEW控制电机驱动相机在XY平面上进行扫描&#xff0c;以检测样品位置。样品最初可能位于相机视野范围之外&#xff0c;需要实现自动搜索样品位置并完成精确定位扫描的功能。该系统需具有以下特点&#xff1a; 高效搜索&#xff1a;能够快速确定样品位置&#xff0c;缩短…...

程序员独立开发竞品分析:确定网站使用什么建站系统

要确定一个网站使用的建站系统&#xff0c;可以通过以下几种方法尝试分析&#xff1a; 查看页面源代码&#xff1a; 打开网站&#xff0c;右键点击页面并选择“查看页面源代码”。在代码中查找一些常见的建站系统标志&#xff0c;例如&#xff1a; WordPress 的迹象&#xff1a…...

计算机网络 笔记 网络层1

网络层功能概述 主要的任务是把分组从源端传输到目的端&#xff0c;为分组交换网上的不同主句提供通信服务&#xff0c;网络层的传输单位是数据报。 主要的功能&#xff1b; 1&#xff0c;路由选择&#xff1a;路由选择指网络层根据特定算法&#xff0c;为数据包从源节点到目…...

推理规则库的构建与应用

目录 前言1. 推理规则库概述1.1 推理规则的基本构成1.2 推理规则库的作用与意义 2. 推理规则库的构建2.1 知识获取与表示2.2 推理规则的提取2.3 规则的优化与整合 3. 推理规则库的推理机制3.1 前向推理3.2 后向推理3.3 混合推理 4. 推理规则库的应用4.1 医学领域4.2 金融领域4.…...

深度学习|表示学习|一个神经元可以干什么|02

如是我闻&#xff1a; 如果我们只有一个神经元&#xff08;即一个单一的线性或非线性函数&#xff09;&#xff0c;仍然可以完成一些简单的任务。以下是一个神经元可以实现的功能和应用&#xff1a; 1. 实现简单的线性分类 输入&#xff1a;一组特征向量 x x x 输出&#xff…...

2 XDMA IP中断

三种中断 1. Legacy 定义&#xff1a;Legacy 中断是传统的中断处理方式&#xff0c;使用物理中断线&#xff08;例如 IRQ&#xff09;来传递中断信号。缺点&#xff1a; 中断线数量有限&#xff0c;通常为 16 条&#xff0c;限制了可连接设备的数量。中断处理可能会导致中断风…...

什么是负载均衡?NGINX是如何实现负载均衡的?

大家好&#xff0c;我是锋哥。今天分享关于【什么是负载均衡&#xff1f;NGINX是如何实现负载均衡的&#xff1f;】面试题。希望对大家有帮助&#xff1b; 什么是负载均衡&#xff1f;NGINX是如何实现负载均衡的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源…...

AWS简介

AWS 一&#xff0c;AWS是什么&#xff1f; AWS的全称是 Amazon Web Services 的缩写&#xff0c;是亚马逊公司提供的一套广泛且应用广泛的云端服务。 AWS提供了超过200项全功能的服务&#xff0c;来自数据中心数据中心遍布全球多个地理位置&#xff0c;这些服务包括计算能力&…...

旅游网站设计与实现

文末附有完整项目代码 在当今数字化时代&#xff0c;旅游网站成为人们获取旅游信息的重要途径。本文将详细介绍旅游网站的设计与实现&#xff0c;让你轻松了解其中的技术奥秘&#xff01; 一、项目背景 随着社会经济的发展&#xff0c;人们对精神消费愈发重视&#xff0c;旅游…...

vscode 扩展Cline、Continue的差别?

Cline和Continue都是VSCode的AI编程插件&#xff0c;它们在功能、用户体验、性能、适用场景以及配置和使用步骤等方面存在一些差别&#xff1a; 一、功能差异 编辑功能 Cline&#xff1a;能够分析项目的文件结构和源代码抽象语法树&#xff08;AST&#xff09;&#xff0c;通…...

用 HTML5 Canvas 和 JavaScript 实现雪花飘落特效

这篇文章将带您深入解析使用 HTML5 Canvas 和 JavaScript 实现动态雪花特效的代码原理。 1,效果展示 该效果模拟了雪花从天而降的动态场景,具有以下特点: 雪花数量、大小、透明度和下落速度随机。雪花会在屏幕底部重置到顶部,形成循环效果。随窗口大小动态调整,始终覆盖…...

电梯系统的UML文档01

Lu Luo 著&#xff0c;王君 译 1 简介 这是一份Carnegie Mellon 大学博士课程&#xff08;分布式嵌入系统&#xff09;项目报告。整个课程完成了一个分布式实时系统的设计、搭建和模拟。设计时用到了OOA 和OOD&#xff0c;特别是UML。 系统的大多数类省略了很多细节。现在看…...

浅谈云计算04 | 云基础设施机制

探秘云基础设施机制&#xff1a;云计算的基石 一、云基础设施 —— 云计算的根基![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1fb7ff493d3c4a1a87f539742a4f57a5.png)二、核心机制之网络&#xff1a;连接云的桥梁&#xff08;一&#xff09;虚拟网络边界&#xff…...

数据库知识

存储引擎层面 数据存储格式 不同的存储引擎有不同的数据存储格式。以 InnoDB 和 MyISAM 为例&#xff0c;InnoDB 是面向行的存储引擎&#xff0c;它将数据行存储在聚集索引&#xff08;如果没有显式定义主键&#xff0c;会自动生成一个隐藏的主键&#xff09;中。数据行和索引…...

2025宝塔API一键建站系统PHP源码

源码介绍 2025宝塔API一键建站系统PHP源码&#xff0c;对接自己的支付&#xff0c;虚拟主机也能搭建&#xff0c;小白式建站系统&#xff0c;基于宝塔面板搭建的建站系统&#xff0c;功能丰富&#xff0c;多款模板&#xff0c;每日更新 上传源码到服务器&#xff0c;浏览器访问…...

第三十八章 Spring之假如让你来写MVC——适配器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...

客户端渲染和服务端渲染

二者本质的区别&#xff1a;是在哪完成了 HTML 的拼接&#xff0c;服务端渲染是在服务端拼接&#xff0c;客户端渲染是在客户端拼接。 服务端渲染的优缺点 优点 SEO 友好&#xff0c;服务端渲染更有利于爬虫爬取信息。 更快的首屏渲染&#xff0c;因为 HTML 已经在服务端生…...

《盘古大模型——鸿蒙NEXT的智慧引擎》

在当今科技飞速发展的时代&#xff0c;华为HarmonyOS NEXT的发布无疑是操作系统领域的一颗重磅炸弹&#xff0c;其将人工智能与操作系统深度融合&#xff0c;开启了智能新时代。而盘古大模型在其中发挥着至关重要的核心作用。 赋予小艺智能助手超强能力 在鸿蒙NEXT中&#xf…...

软件架构考试基础知识 004:死锁问题

死锁的定义 死锁&#xff08;Deadlock&#xff09;是指在多进程系统中&#xff0c;一组进程相互等待对方持有的资源&#xff0c;导致所有相关进程都无法继续执行的状态。这种状态是僵持的&#xff0c;无法自动解除&#xff0c;必须通过外部干预&#xff08;如重启系统&#xf…...

AI学习路线图-邱锡鹏-神经网络与深度学习

1 需求 神经网络与深度学习 2 接口 3 示例 4 参考资料...

Pytorch通信算子组合测试

Pytorch通信算子组合测试 一.背景二.相关链接三.遇到的问题四.操作步骤1.登录服务器2.查看拓扑3.准备测试用例A.准备目录B.用例代码 4.创建docker容器5.查看当前pytorch版本6.运行测试程序 一.背景 测试pytorch通信算子不同配置下的功能及性能测试不同的group组合测试不同的te…...

Android Dex VMP 动态加载加密指令流

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 上一篇【详解如何自定义 Android Dex VMP 保护壳】实现了 VMP 保护壳。 为了进一步加强对 dex 指令的保护&#xff0c;实现指令流加密和动态加载&#xff0c;…...

深度学习blog-剪枝和知识蒸馏

深度学习网络模型从卷积层到全连接层存在着大量冗余的参数&#xff0c;大量神经元激活值趋近于0&#xff0c;将这些神经元去除后可以表现出同样的模型表达能力&#xff0c;这种情况被称为过参数化。因此需要一些技术手段减少模型的复杂性&#xff0c;去除一些不重要的参数和连接…...

13:00面试,13:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到9月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

机器学习笔记合集

大家好&#xff0c;这里是好评笔记&#xff0c;公主 号&#xff1a;Goodnote。本笔记的任务是解读机器学习实践/面试过程中可能会用到的知识点&#xff0c;内容通俗易懂&#xff0c;入门、实习和校招轻松搞定。 笔记介绍 本笔记的任务是解读机器学习实践/面试过程中可能会用到…...

七 rk3568 android 11 ec20 4G驱动移植

一 内核驱动集成 参考:Quectel_LTE&5G_Linux_USB_Driver_V1.0.zip EC20 内核驱动有两个版本 ,一个是 qmi_wwan, 一个是 GOBNet , 这里用的是 qmi_wwan版本 1.1 添加 USBNET 驱动文件 将驱动包里的 qmi_wwan_q.c 拷到 kernel/driver/net/usb/ 下 修改 kernel/dr…...