设计模式—— 五:迪米特原则

OPNET卫星节点仿真避坑指南:为什么你的STK轨道文件导入后位置不对? 本文深入解析OPNET卫星节点仿真中STK轨道文件导入后位置异常的常见问题,揭示坐标系差异(ECI与ECF)、时间基准不匹配等关键因素。通过修改.SA文件头标识、统一时间基准等解决方案,帮助工程师避免仿真失真,提升卫星通信系统仿真的准确性。特别适用于STK与OPNET协同工作的卫星网络仿真场景。 阅读详情

什么是迪米特原则?


迪米特法则来自于1987年美国东北大学(Northeastern University)一个名为“Demeter”的研究项目。迪米特法则又称为最少知识原则(LeastKnowledge Principle, LKP),其定义如下:

迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。

如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时,就会尽量少地影响其他模块,扩展会相对容易,这是对软件实体之间通信的限制,迪米特法则要求限制软件实体之间通信的宽度和深度。迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。

迪米特法则的含义

迪米特法则对类的低耦合提出了明确的要求,其包含以下4层含义:

1. 只和朋友交流

迪米特法则还有一个英文解释是:Only talk to your immediate friends(只与直接的朋友通信。)什么叫做直接的朋友呢?每个对象都必然会与其他对象有耦合关系,两个对象之间的 耦合就成为朋友关系,这种关系的类型有很多,例如组合、聚合、依赖等。

以老师要求体育委员清点全班女生为例:

不遵循迪米特法则的定义

5-1:老师要求清点女生类图


在这里插入图片描述
 

老师类:

复制代码
public class Teacher { 
  //老师对学生发布命令,清一下女生 
  public void commond(GroupLeader groupLeader){ 
    List listGirls = new ArrayList(); //初始化女生 
    for(int i=0;i<20;i++){ 
       listGirls.add(new Girl());
    }  
  //告诉体育委员开始执行清查任务
   groupLeader.countGirls(listGirls); 
   } 
}

体育委员类:

复制代码
public class GroupLeader { 
  //清查女生数量 
  public void countGirls(List<Girl> listGirls){ 
    System.out.println("女生数量是:"+listGirls.size()); 
  } 

}

女生类:

复制代码
public class Girl { 
}

场景类:

复制代码
public class Client { 
   public static void main(String[] args) { 
     Teacher teacher= new Teacher(); 
     //老师发布命令 
     teacher.commond(new GroupLeader()); 
   } 
}

运行结果:

复制代码
女生数量是:20

体育委员按照老师的要求对女生进行了清点,并得出了数量。这个程序有什么问题,首先确定Teacher类有几个朋友类,它仅有一个朋友类—— GroupLeader。为什么Girl不是朋友类呢?Teacher也对它产生了依赖关系呀!朋友类的定义是 这样的:出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类,而Girl这个类就是出现在commond方法体内,因此不属于Teacher类的 朋友类。迪米特法则告诉我们一个类只和朋友类交流,但是刚刚定义的commond方法却 与Girl类有了交流,声明了一个List动态数组,也就是与一个陌生的类Girl有了交流, 这样就破坏了Teacher的健壮性。方法是类的一个行为,类竟然不知道自己的行为与其他类 产生依赖关系,这是不允许的,严重违反了迪米特法则。

遵循迪米特法则的定义

现在根据迪米特法则进行改造,去掉Teacher对Girl类的依赖关系。

5-2:修改后的老师要求清点女生类图

在这里插入图片描述

修改后的老师类:

复制代码
public class Teacher { 
  //老师对学生发布命令,清一下女生 
  public void commond(GroupLeader groupLeader){ 
  //告诉体育委员开始执行清查任务 
  groupLeader.countGirls(); 
  } 
}

修改后的体育委员类:

复制代码
public class GroupLeader { 
  private List<Girl> listGirls; //传递全班的女生进来 
  public GroupLeader(List<Girl> _listGirls){ 
    this.listGirls = _listGirls; 
  }
  //清查女生数量 
  public void countGirls(){ 
    System.out.println("女生数量是:"+this.listGirls.size()); 
  } 

}

修改后的场景类:

复制代码
public class Client { 
  public static void main(String[] args) { 
    //产生一个女生群体 
    List<Girl> listGirls = new ArrayList<Girl>(); 
    //初始化女生 
    for(int i=0;i<20;i++){ 
      listGirls.add(new Girl()); 
    }
    Teacher teacher= new Teacher(); 
    //老师发布命令 
    teacher.commond(new GroupLeader(listGirls)); 
  } 
}

把Teacher中对List的初始化移动到了场景类中,同时在GroupLeader中增加了对Girl的注入,避开了Teacher类对陌生类Girl的访问,降低了系统间的耦合,提高了系统的健壮性。

2. 朋友间也是有距离的

朋友类之间可以交流,但也不能无话不谈。

以安装软件为例:第一步是确认是否安装,第二步确认 License,再然后选择安装目录……这是一个典型的顺序执行动作,具体到程序中就是:调用 一个或多个类,先执行第一个方法,然后是第二个方法,根据返回结果再来看是否可以调用 第三个方法,或者第四个方法。

不遵循迪米特原则的设计

5-3:软件安装过程类图

在这里插入图片描述
 

导向类:
定义步骤方法。

复制代码
public class Wizard {
  private Random rand = new Random(System.currentTimeMillis()); 
  //第一步 
  public int first(){ 
    System.out.println("执行第一个方法..."); 
    return rand.nextInt(100); 
  }
 
  //第二步 
  public int second(){ 
    System.out.println("执行第二个方法..."); 
    return rand.nextInt(100); 
  }

  //第三个方法 
  public int third(){ 
    System.out.println("执行第三个方法..."); 
    return rand.nextInt(100); 
  } 

}

软件安装InstallSoftware类:

复制代码
public class InstallSoftware { 
  public void installWizard(Wizard wizard){ 
    int first = wizard.first(); 
    //根据first返回的结果,看是否需要执行second 
    if(first>50){ 
      int second = wizard.second(); 
      if(second>50){ 
        int third = wizard.third(); 
        if(third >50){ 
          wizard.first(); 
        } 
      } 
     } 
    
    } 
}

场景类:

复制代码
public class Client { 
  public static void main(String[] args) { 
   InstallSoftware invoker = new InstallSoftware();
   invoker.installWizard(new Wizard()); 
  } 

}

这个程序有什么问题呢?

Wizard类把太多的方法暴露给InstallSoftware类,两者的朋友关系太亲密了,耦合关系变得异 常牢固。如果要将Wizard类中的first方法返回值的类型由int改为boolean,就需要修改 InstallSoftware类,从而把修改变更的风险扩散开了。因此,这样的耦合是极度不合适的。

遵循迪米特原则的设计

5-4:重构后的软件安装过程类图

在这里插入图片描述


修改后的导向类:
在Wizard类中增加一个installWizard方法,对安装过程进行封装,同时把原有的三个 public方法修改为private方法。将三个步骤的访问权限修改为private,同时把InstallSoftware中的方法installWizad移动到 Wizard方法中。通过这样的重构后,Wizard类就只对外公布了一个public方法,即使要修改 first方法的返回值,影响的也仅仅只是Wizard本身,其他类不受影响,这显示了类的高内聚特性。

复制代码
public class Wizard {
  private Random rand = new Random(System.currentTimeMillis()); 
  //第一步 
  private int first(){ 
    System.out.println("执行第一个方法..."); 
    return rand.nextInt(100); 
  }

 //第二步 
 private int second(){ 
   System.out.println("执行第二个方法..."); 
   return rand.nextInt(100); 
  }
  
   //第三个方法
  private int third(){ 
    System.out.println("执行第三个方法...");
    return rand.nextInt(100); 
  }

  //软件安装过程 
  public void installWizard(){ 
    int first = this.first(); //根据first返回的结果,看是否需要执行second
    if(first>50){ 
      int second = this.second(); 
      if(second>50){ 
        int third = this.third(); 
        if(third >50){ 
          this.first(); 
        } 
      } 
    } 
  } 

}

修改后的InstallSoftware类:

复制代码
public class InstallSoftware { 
  public void installWizard(Wizard wizard){ 
    //直接调用 
    wizard.installWizard(); 
  } 
}

一个类公开的public属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散 也就越大。因此,为了保持朋友类间的距离,在设计时需要反复衡量:是否还可以再减少 public方法和属性,是否可以修改为private、package-private(包类型,在类、方法、变量前 不加访问权限,则默认为包类型)、protected等访问权限,是否可以加上final关键字等。

3. 是自己的就是自己的

在实际应用中经常会出现这样一个方法:放在本类中也可以,放在其他类中也没有错, 那么就应该坚持这样一个原则:如果一个方法放在本类中,既不增加类间关 系,也对本类不产生负面影响,那就放置在本类中。

4. 谨慎使用Serializable

YOLOv13优化Faster_Block:卷积(Partial Convolution)、多层感知机(MLP)结构和残差连接 Faster_Block 代表了现代深度学习中效率与性能平衡的一个典型案例。它通过部分卷积技术巧妙地减少了计算开销,同时通过精心设计的架构保持了强大的特征学习能力。这种设计思想对于移动端部署、实时应用和大规模模型训练都具有重要意义。 未来的发展方向可能包括更智能的动态分割策略、与新兴硬件的深度适配,以及与其他先进技术(如自注意力机制、神经架构搜索等)的结合。Faster_Block 的成功展示了在深度学习领域,创新往往来自于对问题本质的深刻理解和巧妙的工程实现。 阅读详情

相关推荐

UE5实战技巧:TextRender高效集成中文字体与材质优化

本文针对UE5中TextRender组件显示中文的常见问题,提供了一套完整的实战解决方案。详细讲解了如何通过手动创建字体资产、精准控制字符集来优化性能,并重点介绍了通过调整材质中的Lerp节点参数(如设为-85, 92)来解决中文字体显示残缺和边缘模糊等核心难题,帮助开发者实现高效且美观的中文文本渲染。

weixin_28040125的博客 383

六大设计模式原则-迪米特法则

一、迪米特法则定义 迪米特法则又最少知识原则,其定义如下: 迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少的与其他实体发生相互作用。 二、迪米特法则描述 如果一个系统满足迪米特法则,那么当其中一个软件实体发生变化时,就会尽量少的影响其他软件实体,扩展会相对容易,这是对软件实体之间通信的限制,迪米特法则要求限制软件实体之间通信的宽度和深度。迪米特法则可以降低系统的耦合度,使类与类之间保持松耦合状态。 迪米特法则还有几种定义形式,包括:不要和"陌生人"说话、只与你的直接朋友通信等

qq_34222160的博客 1万+

中科蓝讯Downloader配置实战:从软硬开关机到ANC降噪的完整指南

本文提供了中科蓝讯Downloader工具的详细配置实战指南。内容涵盖从基础的软硬开关机选择与配置,到核心的EQ音效调试、触摸按键与入耳检测优化,以及高阶的ANC降噪与电源管理设置。旨在帮助开发者快速掌握关键配置项,高效完成蓝牙耳机产品的功能调试与优化。

s4t5u6v7的博客 509

设计原则之【迪米特法则】,非礼勿近

迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合。迪米特原则主要强调只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称之为成员朋友类,而出现在方法体内部的类不属于朋友类。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

秃了也弱了 3289

学术类PPT制作总结

本文分享了科技类PPT的制作技巧,希望相关的信息能帮助到读者。

奇妙水果的技术博客,欢迎交流技术~ 2885

基于潜在空间分数匹配的混合型表格数据合成方法

然而,在我们的模型中,β 预计会更小,因为我们不需要嵌入的分布精确地遵循标准高斯分布,因为我们还有一个额外的扩散模型。受 Transformer 在表格数据分类/回归任务中取得成功的启发,我们首先为每一列学习一个独特的标记器,然后将标记(列)级表示输入到 Transformer 中,以捕捉列之间错综复杂的关系。在第 4 节中,我们证明了通过这种设计,TABSYN 可以在不到 20 次函数评估(NFE)的情况下生成高质量的合成表格数据,这比其他基于扩散的表格数据合成方法要少得多。是标记器的可学习参数。

步子哥的博客 855

设计模式七大原则——迪米特原则

设计模式七大原则——迪米特原则

贝尔摩德苦艾酒 9622

IGBT栅极电阻怎么选?

IGBT驱动电路中栅极电阻的选择至关重要,直接影响开关速度、损耗、EMI和寄生导通等问题。本文详细介绍了两种栅极电阻计算方法:根据目标开通时间和目标dv/dt计算,并分析

硬核科技 28

迪米特法则 (Law of Demeter)

迪米特法则 (Law of Demeter) 定义:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。 迪米特法则(Law of Demeter)又叫作最少知识原则(The Least Knowledge Principle),通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。 迪

weixin_43771403的博客 5529

国科大学习资料--现代数字信号处理I(张颢)--2020年期末考试试卷

国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 =========================================================================================================================================================

无名何许人的博客 3577

EtherCAT总线运动控制学习笔记(RXXW_Dor)

说到总线控制,就要说到报文、对象字典、PN通信我们大部分会说报文,EtherCAT通信我们常说对象字典,叫法不一样,但是原理基本一致,下面我们简单认识下上面是对象字典。

RXXW_Dor的博客 5435

设计模式六大原则之:迪米特法则

迪米特法则(Law of Demeter,简称LoD)‌,也称为最少知识原则,即只和朋友通信,不和陌生人说话。是面向对象设计的一个基本原则。一个对象应当尽可能少地了解其他对象,即对象之间的通信应该通过抽象层进行,以减少对象之间的直接依赖。迪米特法则的历史可以追溯到面向对象设计的早期实践,它是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中的。这个原则被视为一种重要的设计原则,用于指导如何设计和构建可维护和可扩展的软件系统。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 2348

YOLO11-Seg优化:卷积变体系列篇 | 动态蛇形卷积(Dynamic Snake Convolution) | ICCV2023

动态蛇形卷积(Dynamic Snake Convolution),增强微小特征提取能力,引入到YOLO11-Seg,与C3k2结合实现二次创新

会AI的学姐 373

【专题系列】设计模式—— 五:迪米特原则

点击上方“java大数据修炼之道”,选择“设为星标”优质文章, 第一时间送达来源 |https://www.cnblogs.com/three-fighter/p/12353205.h...

hello world! 388

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

设计模式六大原则之五:迪米特法则

遵守迪米特法则编程可使程序类间耦合度降低,程序结构清晰。 带来的负面影响是程序变得复杂, 维护难度增加。 详见下图:参考文章:http://blog.youkuaiyun.com/zhengzhb/article/details/7296930 参考书籍:《设计模式之禅》

人生有梦不怕迟 585

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

设计模式学习之——六大设计原则之五:迪米特法则

迪米特法则又称最少知识原则(Least Knowledge Principle, LKP) 解释1:一个对象应对其他对象有最少的了解 解释2:Only talk to your immedate friends(只与直接的朋友通信) 对类的低耦合提出明确要求:(4点) 1.只和朋友交流 eg:     老师教班长去清点班中女生人数(在老师类中初始化女生) 老师类:

Mr.傅的专栏 1899

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

[设计模式之禅读书笔记]005_设计模式六大原则(五):迪米特原则

序言 记得一年前看设计模式的时候,走马观花,囫囵吞枣。每一个概念都没有去仔细想,只是知道某某设计模式能干什么事。今天看到【迪米特原则】倍感莫名其妙,你说你叫接口隔离原则吧,我可以一个词一个词的去解析;你说你叫单一职责吧,看名字我就能知道什么用。你非得叫个什么迪米特原则,让人莫名其妙,跟里氏替换原则差不多,不过里氏替换至少还有个替换二字。今天我们就来看看这个迪米特原则到底是个什么原则吧. ...

weixin_34221073的博客 151

【Java 设计模式】设计原则之迪米特法则

迪米特法则是由荷兰计算机科学家伊恩·荷尔姆·迪米特(Ian Holland Demeter)于1987年提出的。它规定一个对象应该对其他对象有最少的了解,即一个类不应该知道太多关于其他类的内部细节。迪米特法则有一个简洁的表述:“只与你的直接朋友通信,不跟陌生人说话”,其中“直接朋友”指的是当前对象的成员、方法参数、方法返回值中的对象。迪米特法则是一项有助于降低类之间耦合性的基本原则。通过遵循这一原则,我们可以创建更加灵活、可维护和可扩展的面向对象系统。

好久不见的流星 1835

设计模式原则之迪米特法则

定义 一个对象应该对其他对象保持最少的了解。 问题由来 类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 解决方案 尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米特...

星空下的程序猿 2696

设计模式六大原则之接口隔离原则、迪米特法则详解

设计模式之六大原则之——接口隔离原则详解 1、接口隔离原则(Interface Segregation Principle,ISP) 概念 在将接口隔离原则之前,首先要明确“接口”的概念,接口分为两种: 实力接口 在Java中通过new关键子来产生一个对象,是对某一类事物所具有的的方法特征的描述,是逻辑上的抽象 类接口 在Java中通过Interface关键字严格定义的接口,例如java.lang.Runtime就是一个线程接口 接口隔离原则有两种定义: 客户端不应该依赖他不需要的接口 类

生命中有太多不确定 1261

设计模式之迪米特原则

六大设计模式原则 之迪米特原则迪米特原则又称为最少知识原则<br />一、定义<br /> 迪米特原则:指一个对象应该对于其他对象有最少的了解。<br />        理解:简单来说一个类对自己所调用或者耦合的类有最少的了解,被调用的类内部实现与该类无关。<br />二、好处<br />可以有效的降低类之间的耦合度。<br />三、代码示例<br /> <br />我想大家都很熟悉,高三的时候因为课程紧张,尤其是一些所谓“学习狂人”(多为女生),经常以各种理由不上体育课,老师也不好说什么,只好每节课都认

saoba的专栏 1470

设计模式六大原则5—迪米特原则

迪米特原则(Least Knowledge Principle) 定义:迪米特原则,又叫“最少知识原则”。其含义是:一个对象对其他对象有最少的了解,即一个类应该对自己需要耦合或调用的类知道得最少,只需知道它所提供的接口就行。 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 解决方案:尽量降低类与类之间的耦合。       迪米特法则还有一

maritimesun的专栏 2032

DesignPattern系列__06迪米特原则

迪米特原则定义 迪米特原则,也叫最少知道原则,即一个类应该对自己依赖的类知道的越少越好,而你被依赖的类多么复杂,对我都没有关系。也就是说,对于别依赖的类来说,不管业务逻辑多么复杂,都应该尽量封装在类的内部;对外除了必备的public方法,不再泄露任何信息。 1.问题由来 我们知道,类和类是有耦合关系的,关系越密切的两个类之间,其耦合关系越大。 2.对应措施 迪米特原则要求:一个类应该只和...

157

设计模式:六大原则之迪米特原则

迪米特原则 基本介绍 定义:迪米特法则也称为最少知识原则,即一个对象应该对其他对象有最少的了解。通俗地说,一个类应该对自己需要耦合或调用的类知道的最少,被调用或耦合的类的内部是如何复杂都和我没有关系。 一个类只需要知道人家提供多少public方法,我就调用多少,其他的一概不关心。 迪米特法则对类的低耦合提出了明确的要求,包含以下4层含义: ①只和朋友交流: 迪米特法则的另一个解释是:是与直接的朋友通信 朋友关系是什么:每个对象必然会与其他对象有耦合关系,两个对象之间的耦合关系就成为朋友关系,这种关系的类型有

THE FUTURE's blog 415
上一篇: 设计模式—— 四:接口隔离原则
下一篇: 设计模式—— 六:开闭原则
加班不秃顶
博客等级 码龄7年 1822粉丝 599原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值