十三、模板模式——具体工艺我不管,但流程必须一样。

【信息科学与工程学】计算机科学与自动化——第十六篇 GPU 05 工艺(3) 序号工艺工序名称工艺步骤核心参数其他参数关键部件及原材料控制指标加工设备类型加工工艺/技巧1衬底准备​1.1 硅晶圆清洗 1.2 热氧化生长薄SiO₂层(1-5nm) 1.3 衬底温度稳定温度: 600-800°C 厚度: 1-5nm 表面粗糙度: <0.2nm晶向: (100) 晶圆尺寸: 300mm 掺杂浓度: 1-10 Ω·cm p型Si晶圆、O₂气体、清洗液(SC1/SC2)氧化层厚度均匀性(±0.1nm) 界面态密度(Dit)<1e10 cm⁻²eV⁻¹清 阅读详情


设计模式是面向问题、场景而总结产生的设计思路。是解决问题的套路。23 种经典的设计模式。它们又可以分为三大类:创建型、结构型、行为型。

行为型 包含了 观察者模式、模板模式、策略模式、职责链模式、状态模式、迭代器模式、 访问者模式、备忘录模式、命令模式、解释器模式、中介模式 总共11种模式。

模板模式

模板模式(Template Design Pattern) 定义了算法骨架,具体的功能步骤的实现由子类完成。

1. Java库中模板模式的应用:

  • Servlet
    子类在继承HttpServlet时,只需要重写doGet()和doPost()方法,由父类的service方法来调用。
protected void service(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {

  String method = req.getMethod();

  if (method.equals(METHOD_GET)) {
    long lastModified = getLastModified(req);
    if (lastModified == -1) {
      // servlet doesn't support if-modified-since, no reason
      // to go through further expensive logic
      doGet(req, resp);
    } else {
      long ifModifiedSince;
      try {
        ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
      } catch (IllegalArgumentException iae) {
        // Invalid date header - proceed as if none was set
        ifModifiedSince = -1;
      }
      if (ifModifiedSince < (lastModified / 1000 * 1000)) {
        // If the servlet mod time is later, call doGet()
        // Round down to the nearest second for a proper compare
        // A ifModifiedSince of -1 will always be less
        maybeSetLastModified(resp, lastModified);
        doGet(req, resp);
      } else {
        resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
      }
    }

  } else if (method.equals(METHOD_HEAD)) {
    long lastModified = getLastModified(req);
    maybeSetLastModified(resp, lastModified);
    doHead(req, resp);

  } else if (method.equals(METHOD_POST)) {
    doPost(req, resp);

  } else if (method.equals(METHOD_PUT)) {
    doPut(req, resp);

  } else if (method.equals(METHOD_DELETE)) {
    doDelete(req, resp);

  } else if (method.equals(METHOD_OPTIONS)) {
    doOptions(req,resp);

  } else if (method.equals(METHOD_TRACE)) {
    doTrace(req,resp);

  } else {

    String errMsg = lStrings.getString("http.method_not_implemented");
    Object[] errArgs = new Object[1];
    errArgs[0] = method;
    errMsg = MessageFormat.format(errMsg, errArgs);

    resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
  }
}
  • Junit
    子类只需要实现runTest();方法即可,由父类的模板方法确定整体的流程,先进行setUp();再运行runTest();最后tearDown();。
public void runBare()throws Throwable {
     Throwable exception = null;
     setUp();

     try {
          runTest();
    } catch (Throwable running) {
          exception = running;
    } finally {
         try {
              tearDown();
         } catch (Throwable tearingDown) {
             if (exception == null)

          exception = tearingDown;
         }
     }
    if (exception == null) return;

   throw exception;
}
  • InputStream
    InputStream的read方法,交由子类去实现。
    public abstract int read() throws IOException;

在模板方法里,进行调用。

 public int read(byte b[], int off, int len) throws IOException {
        if (b == null) {
            throw new NullPointerException();
        } else if (off < 0 || len < 0 || len > b.length - off) {
            throw new IndexOutOfBoundsException();
        } else if (len == 0) {
            return 0;
        }
		//看这里
        int c = read();
        if (c == -1) {
            return -1;
        }
        b[off] = (byte)c;

        int i = 1;
        try {
            for (; i < len ; i++) {
                c = read();
                if (c == -1) {
                    break;
                }
                b[off + i] = (byte)c;
            }
        } catch (IOException ee) {
        }
        return i;
    }
  • AbstractList
    在AbstractList方法里,提供了add方法,必须由子类完成,否则报错。子类完成重写后,由模板方法调用。
    public void add(int index, E element) {
        throw new UnsupportedOperationException();
    }
    
    public boolean add(E e) {
        add(size(), e);
        return true;
    }

2.自己实现的模板模式

2.1 TemplateClass定义抽象方法和模板方法

public abstract class TemplateClass {

    public abstract void open();
    public abstract void put();
    public abstract void close();

    public final void execute(){
        open();
        put();
        close();
    }
}

2.2 子类重写抽象方法

public class ConcreteClass1 extends TemplateClass{
    @Override
    public void open() {
        System.out.println("打开冰箱门");
    }

    @Override
    public void put() {
        System.out.println("把大象放进去");
    }

    @Override
    public void close() {
        System.out.println("关上冰箱门");
    }
}

public class ConcreteClass2 extends TemplateClass{
    @Override
    public void open() {
        System.out.println("打开柜子门");
    }

    @Override
    public void put() {
        System.out.println("把大象放进去");
    }

    @Override
    public void close() {
        System.out.println("关上柜子门");
    }

}

2.3 Main调用

public class Main {
    public static void main(String[] args) {
        TemplateClass tpc = new ConcreteClass1();
        tpc.execute();
    }
}

执行结果:

打开冰箱门
把大象放进去
关上冰箱门

总结

模板模式(Template Design Pattern) 定义了算法骨架,具体的功能步骤的实现由子类完成。
注意模板方法需要定义为final类型,防止子类覆写。如果不设置为final类型,则需要像AbstractList类一样,抛出异常。
模板方法实现了流程复用、功能扩展。通过提供一个小型的框架实现了较大的灵活性。

设计模式系列在github上有一个开源项目,主要是本系列博客的demo代码。https://github.com/forestnlp/designpattern
如果您对软件开发、机器学习、深度学习有兴趣请关注本博客,将持续推出Java、软件架构、深度学习相关专栏。
您的支持是对我最大的鼓励。

【信息科学与工程学】【通信工程】第一百二十三篇 网络NaaS函数 01 将NaaS服务中的软件、函数与底层硬件加速器高效映射是一个系统工程,其核心思路是​​通过抽象层解耦软件与硬件,利用专用硬件处理性能瓶颈任务,并运用数学模型进行全局优化和决策​​。​​异构资源统一管理​​:如何用统一的框架和API来管理CPU、NP、FPGA、ASIC等截然不同的计算资源。​​动态编排与调度​​:如何根据实时网络状态和业务需求,动态地将网络功能或函数实例迁移或映射到最合适的硬件单元上。​​性能建模精度​​:准确建模任务在不同硬件上的执行时延和资源消耗,是做出最优映射决策的前提。 阅读详情

相关推荐

【信息科学与工程学】【产品体系】第十一篇 ICT制造业服务器生产

编号设备类别设备子类具体设备型号加工能力精度等级适用范围控制方式1钣金加工设备激光切割机TRUMPF Trulaser 5030切割厚度0.5-20mm±0.05mm机箱面板、支架CNC数控2钣金加工设备数控冲床AMADA EMK 3610 NT冲孔、成型±0.1mm通风孔、安装孔CNC数控3钣金加工设备折弯机AMADA HDS 1303 NT折弯角度精度±0.5°机箱结构件CNC数控4注塑成型设备注塑机ARBURG Allrounder 570 S注射重量5-200g±0.02mm塑料部件、连接器伺服电机

weixin_49199313的博客 1078

项目中的流程及类似业务的设计模式总结

说到业务流程,可能是我做过的项目中涉及业务最多的一个方面了。除了在流程设计之外,在一些考核系统、产业审批、还有很多地方,都用到相似的设计思路,在此一并总结一下。再说到模式,并不是因为流行才用这个词,而是因为这里总结的东西确实只能是个参考,是我解决问题的处理方式与思路,当然几乎相同的项目中,有时我用到很多相同的代码,所以又可以看到是一个原型系统。 为什么我一般不用工作流产品?因为它包括一部分定义的东西还不全,又包含了一部分业务的东西,也不全,调度算法也不全,一些特殊的统计要求也不好弄,相反一些画图,启动啊,

herriman的博客 8483

OpenCV+LLM融合:FPC缺陷检测效率提升300%的奥秘——基于工业产线的多模态AI质检方案

摘要:本文针对柔性电路板(FPC)人工质检效率低、误检率高的行业痛点,提出基于OpenCV与大语言模型(LLM)融合的智能缺陷检测方案。通过构建多模态提示词工程模板实现图像特征与自然语言的跨模态映射,设计Halcon+LLM决策链完成从图像采集到缺陷分类的全流程自动化。结合某上市电子企业FPC产线实测数据,验证方案可将单工位检测效率从12片/分钟提升至48片/分钟,误检率从8%降至0.9%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1486

【设计模式 03】模板方法:老爷子留下的流程图

摘要: 本文通过家具厂生产标准不统一的案例,阐述了模板方法模式的核心思想。三家工厂虽遵循相同生产步骤(下料、开榫等),但具体参数各异导致产品质量差异。老周提供的解决方案是:固定流程骨架(步骤顺序和关键标准),允许各厂根据实际情况调整细节参数。这种"骨架固定,细节留白"的方式,正是编程中模板方法模式的体现——父类定义算法框架,子类实现具体步骤,既保证统一性又保留灵活性。

qq_34733864的博客 368

Code Ocean 上传代码 手把手教程

对于一些学术期刊,录用前会让把代码上传到Code Ocean上,但上传过程可能会遇到一些问题,小编分享一下自己的上传经验。他们会进行验证,验证通过,将自动发布。点此运行即可,但是运行比较慢。

u014071947的博客 1万+

树莓派5新手必看:保姆级ibus中文输入法安装与配置全流程(含.bashrc设置避坑)

本文详细介绍了在树莓派5上安装和配置ibus中文输入法的完整流程,包括系统环境准备、ibus框架安装、图形界面配置及常见问题解决方案。通过清晰的步骤说明和避坑指南,帮助新手快速实现中文输入功能,提升开发效率。

weixin_29159441的博客 524

AI 写代码越来越强,工控工程师还剩什么?——工控上位机 AI 编程实战第十三弹(阶段收官)

AI能写整个上位机了,工控工程师还剩什么?十三弹系列收官之作:工程师三层价值模型——写代码AI替代80%、判断替代30%、负责替代0%,人机协作五动作(拆喂验守存),附全系列分工总表与新人成长路径。

csdngouwei的博客 81

CRPR的三种关键影响:从SI、OCV到Min Pulse Width的时序优化实践

本文深入探讨了CRPR(时钟重汇聚悲观度消除)在芯片时序优化中的三种关键影响:信号完整性(SI)、片上变异(OCV)和最小脉宽检查。通过实际案例分析和技术细节,展示了CRPR如何有效修正时序分析中的过度保守估计,提升设计精度。文章特别强调了SI-aware CRPR的调试技巧和OCV补偿的最佳实践,为芯片设计工程师提供了宝贵的时序优化指导。

weixin_30920853的博客 378

风筝制作基于HarmonyOS ArkTS API 24全栈解析,TAB_LIST 常量是一个包含六个 TabMeta 对象的数组,按照风筝制作的工艺流程顺序排列

健身管理类应用与之前分析的外卖、招聘等应用有本质差异——它的核心数据不是"交易"或"任务",而是"时间序列的身体状态数据":每次训练有时长、卡路里、组数、重量;每次饮食有热量、蛋白质、碳水、脂肪;每周有运动时长趋势图。这些数据的共同特征是"随时间积累,用户需要横向对比和趋势分析"。这导致健身App的数据层设计必须从第一天就考虑"历史数据查询"和"多维度聚合"的需求,而非仅关注当前单条记录的增删改查。健身应用的用户行为模式也有独特之处:用户使用健身App的目标是"坚持",而不是"一次性完成任务"。这意味着激励

jin421352的博客 181

ACS驱动器直线电机回零程序与误差补偿Buffer实战解析

本文深入解析了ACS驱动器控制直线电机时,实现高精度回零与误差补偿的完整实战流程。核心在于利用驱动器的D-Buffer功能,将激光干涉仪测量的误差数据导入补偿数组,通过ERRORMAP1D指令进行映射,从而实时修正定位误差,显著提升设备重复定位精度。文章详细拆解了回零程序逻辑、补偿参数设置及关键调试避坑指南。

646

以ATT&CK为例构建网络安全知识图

随着攻击工具、方法的逐渐升级和复杂化,安全数据的大规模融合,攻防对抗愈加激烈。安全团队如何在浩瀚数据中有效发现高级威胁的蛛丝马迹,如何把网络安全专家的经验、知识有效转化为可复制可扩展的数据分析能力,如何将对抗高级威胁的“炼金术”逐步升级为科学淘金指南,如何将安全从业者从繁重的体力劳动中解放出来,愈发成为安全能力亟需突破的难点和重点,也是我们正在探索的方向。正如医疗行业中治疗疑难杂症依赖医疗专家,网络空间高级威胁的防护和处置也依赖安全专家的经验与知识。

2401_88752684的博客 1090

模板驱动型文档自动化:零代码实现业务人员自助生成

文档自动化是企业提效的关键环节,其核心在于解耦内容与格式——模板驱动正是实现这一目标的基础范式。它通过预定义结构化模板与动态数据绑定,规避AI生成的合规风险和代码定制的维护成本,以确定性保障法律效力与版本可控性。技术价值体现在降低变更成本、明确跨部门职责边界,并将文档从成本中心转化为可度量的效率杠杆。典型应用场景覆盖合同生成、投标书编撰、财务对账单输出及HR入职材料制作等高频、高合规要求的业务流程。本文聚焦Sqribble平台实践,深入解析模板设计逻辑、字段治理方法与排版稳定性控制等落地要点。

baichuan9723的博客 358

非华为电脑与MatePad Pro多屏协同实战:从安装管家到攻克连接难题

本文详细介绍了在非华为电脑上安装华为电脑管家并实现与MatePad Pro多屏协同的完整指南。从安装步骤、常见连接失败解决方案到华为账号绑定技巧,提供了实用的操作方法和硬件优化建议,帮助用户攻克连接难题,提升多屏协同的稳定性和流畅度。

weixin_30263073的博客 232

大模型呼叫中心场景分享之四十三:环保领域的应用场景

1. 数字孪生环境:虚拟与现实环境监管协同 2. 预测性执法:基于大数据的违法风险预警 3. 元宇宙科普:沉浸式环保教育体验 4. 区块链溯源:环境数据可信存证 5. 全民环保助手:个性化绿色生活指导 大模型呼叫中心正在重构环保服务体系,通过: - 智能化的环境监管 - 精准化的公众服务 - 科学化的决策支持 - 高效化的应急响应 - 多元化的社会参与 随着美丽中国建设推进,大模型系统将成为环境治理现代化的"智慧大脑",推动生态环境保护向智能化、精准化、协同化方向发展。

开源呼叫中心系统FreeIPCC的博客 1095

从GWAS到单细胞:利用seismic包精准定位疾病相关的关键细胞亚群与驱动基因

本文详细介绍了如何利用seismic包将GWAS与单细胞测序数据结合,精准定位疾病相关的核心细胞亚群与驱动基因。通过创新的统计算法和实战案例,帮助研究者从遗传汇总数据中挖掘关键生物学机制,提升疾病研究的精准度和效率。

weixin_29215815的博客 441

使用阿里天池平台训练YOLO目标检测模型

YOLO算法是一种单阶段目标检测算法,由Joseph Redmon等人于2015年提出。与传统的两阶段检测算法相比,YOLO将目标检测问题转化为回归问题,直接预测边界框的位置和类别概率,大大提高了检测速度。YOLOv1: 首次提出YOLO的核心思想,将图像分割成网格,每个网格预测边界框和类别概率。YOLOv2: 引入了批量归一化、锚框等改进,提高了检测精度。YOLOv3: 采用多尺度预测,增强了对小目标的检测能力。

步子哥的博客 1087

模板驱动型文档自动化:零代码构建可计算、可审计的专业文档

文档自动化是企业提升交付效率与合规一致性的关键技术,其核心在于将非结构化写作转化为结构化、可复用的文档工程。模板驱动型文档自动化(Template-Driven Document Automation)通过可视化容器、数据绑定字段与逻辑引擎三层架构,实现内容生成的确定性与可控性——区别于AI生成的不可预测性与邮件合并的无逻辑性,它以业务规则为纲、数据源为目,确保每份输出都精准匹配规范要求。该技术广泛应用于投标文件、合同管理、审计报告、SOP手册等强格式、高频次、高合规场景,尤其适合市场、法务、HR及咨询等需

aoe41606的博客 418

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

蜡染工艺:HarmonyOS ArkTS API 24 深度技术解析,需要提供一个可迭代的集合作为数据源,同时提供一个键生成函数(key generator)用于 Diff 算法的元素追踪

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

qq_17776737的博客 191

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

d2l-en 深度解析:word2vec 词嵌入原理、Skip-Gram 与 CBOW 模型及负采样训练实战

本文以《Dive into Deep Learning》(d2l-en)仓库中 [word2vec 章节](https://link.gitcode.com/i/3feb0d96e30218a3034cc3c8fb40bf13) 为核心,系统讲解词向量的本质、为何 one-hot 编码不是好选择,以及 word2vec 工具中包含的两大自监督模型——Skip-Gram(跳字模型)与 CBOW(连续

gitblog_00975的博客 436

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

企业绩效与薪酬体系设计的实战指南

绩效管理和薪酬设计是现代企业人力资源管理的核心环节,其原理是通过科学的指标体系和激励机制,将员工行为与企业战略目标对齐。在技术实现上,常见的KPI考核、OKR管理等工具通过量化评估和动态调整,帮助企业提升运营效率。特别是在数字化转型背景下,结合eHR系统和数据分析工具,可以实现从战略解码到薪酬计算的闭环管理。本方案提出的'三线评估法'和'九宫格人才盘点矩阵'等创新方法,已在制造业、科技公司等多个行业验证,能有效提升员工满意度和人才保留率。对于HR从业者而言,掌握这些工具不仅能优化年末绩效考核流程,还能通过阶

weixin_27256197的博客 99

(7/99)汽车电子--Xpedtion

西门子mentor graphics。

m0_68422892的博客 117

impeccable 设计技能(SKILL)完全指南:让 AI 前端协作达到生产级设计水准

本指南以 [impeccable](https://link.gitcode.com/i/545d23b31cf3543ab52591388cae8cb8) 仓库内置的设计技能核心文档 [.hermes/skills/impeccable/SKILL.md](https://link.gitcode.com/i/c03e4ad1e1388836bdbaa237b8037a61) 为骨架,系统讲解这

gitblog_01197的博客 531

基于HarmonyOS ArkTS API 24景泰蓝工艺的每个卡片包含一个数字(由 stripCount 方法计算)和一个标签名称(从 STRIP_NAMES 数组获取)

健身管理类应用与之前分析的外卖、招聘等应用有本质差异——它的核心数据不是"交易"或"任务",而是"时间序列的身体状态数据":每次训练有时长、卡路里、组数、重量;每次饮食有热量、蛋白质、碳水、脂肪;每周有运动时长趋势图。这些数据的共同特征是"随时间积累,用户需要横向对比和趋势分析"。这导致健身App的数据层设计必须从第一天就考虑"历史数据查询"和"多维度聚合"的需求,而非仅关注当前单条记录的增删改查。健身应用的用户行为模式也有独特之处:用户使用健身App的目标是"坚持",而不是"一次性完成任务"。这意味着激励

jin421352的博客 1080

HarmonyOS 6效果实现:内容布局从单一列表变为了“双列瀑布流网格“和“横向滑动+纵向列表“的混合模式

引言:当糖画遇上电商糖画,这门以热糖为墨、以铜勺为笔、以石板为纸的民间绝技,在街头巷尾陪伴了几代中国人的童年记忆。一勺热糖在艺人手中翻转飞舞,须臾间便在石板上凝固成腾龙飞凤、花鸟鱼虫——这种"以糖作画"的即兴艺术,承载着浓浓的市井烟火气与民俗文化温度。然而,当糖画这门传统街头技艺需要以现代电商模式进行推广与管理时,如何在界面设计中兼顾"非遗文化传承"与"电商商业转化"的双重需求,成为了开发者面临的核心挑战。本文将深入解析一个基于 ArkTS 声明式 UI 框架构建的糖画工艺电商化管理系统。与前序系统纯粹的传

2501_93027051的博客 303

布虎工艺基于HarmonyOS ArkTS API 24深度技术解析,@Observed 装饰器的深层意义在于,它使得 ClothTigerItem 实例的属性修改能够被 ArkTS 的响应式系统捕获

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

qq_17776737的博客 175

springboot+vue珠宝饰品官网的设计与开发【开题+程序+论文】

珠宝饰品展示系统的设计与实现,提供详细的珠宝产品信息,包括图片、价格、材质、工艺等,以满足用户的购买需求;一个优秀的珠宝饰品官网不仅能提供丰富的产品信息,还能通过个性化推荐、便捷的购物流程等功能,增强用户体验,促进交易达成。同时,官网的智能化功能,如用户行为分析、精准营销等,能够为企业提供有价值的市场数据,助力企业精准定位目标客户,优化产品结构和营销策略。[5] 朱珍珠, 段华斌, 邓永清, 杜丹蕾. 基于Java的增值平台的设计与实现[J]. 办公自动化, 2022, 27 (05): 55-58。

皓宇学长-毕设 1054
上一篇: 十二、观察者模式——你如果关心我就注册吧,我会把你放进名单中
下一篇: 十四、策略模式——你要黄焖鸡、手撕鸡、大盘鸡、叫花鸡都可以,指定一个吧
悟空学编程
博客等级 码龄12年 32粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值