惊艳,阿里人用480页讲清楚了44种微服务架构设计模式

Cadence OrCAD常见引脚错误排查指南:从原理图到封装的完整解决方案 本文详细解析Cadence OrCAD设计中常见的引脚错误问题,提供从原理图到封装的系统化解决方案。涵盖错误诊断、元件库修复、封装管理及自动化处理技巧,帮助工程师高效解决ORCAP-36022等典型错误,确保设计流程顺畅。 阅读详情

 微服务的概念虽然直观易懂,但“细节是魔鬼”,微服务在实操落地的环节中存在诸多挑战。微服务也是可以成为企业转型的强力催化剂!

随着网络基础设施的高速发展,以及越来越多的企业和组织需要通过互联网提供服务,在考虑构建可以支持海量请求以及多变业务的软件平台时,微服务架构成为多数人的首选。微服务模式就是这样一种总结和概括,是一种可以通用的共识,用于描述微服务领域中的问题及解决方案、方法和思路。

这份《微服务架构设计模式》涵盖了44个架构设计模式,系统地解决服务拆分、事务管理、查询和跨服务通信,本PDF一共有13章,从微服务是什么到功能及应用都讲明白了。

目录总览

内容概览

FTGO应用程序的架构

消除同步交互

在微服务中实现查询

API模式

Caffeine:为每个元素动态设置过期时间 Caffeine利用expireAfter方法实现为每个元素动态设置过期时间 阅读详情

相关推荐

IGBT单管并联方案全解析:从均流设计到热管理实战技巧

本文深入解析了IGBT单管并联技术在新能源车电驱系统中的应用,重点探讨了均流设计与热管理实战技巧。通过优化寄生电感控制、动态均流和驱动电路设计,提升系统稳定性和效率,为工程师提供了一套完整的解决方案。

weixin_28720573的博客 441

惊艳,阿里自爆用480页讲清楚了44种微服务架构设计模式

随着网络基础设施的高速发展,以及越来越多的企业和组织需要通过互联网提供服务,在考虑构建可以支持海量请求以及多变业务的软件平台时,微服务架构成为多数人的首选。微服务模式就是这样一种总结和概括,是一种可以通用的共识,用于描述微服务领域中的问题及解决方案、方法和思路。

Java_zhujia的博客 158

SpringCloud2025+SpringBoot3.5.0+gateway+webflux子服务路由报503

本来昨天就应该也记录下,免得忘记的,但是有点晚了,酒没写,真的是被坑惨了。当然这也是追求最新的代价,也是对新技术、老知识点的重温。依赖更粒度让架构的知识面更高,需要非常清楚另外说不定是有新的负载均衡要出现了,就想当初loadbalancer取代Ribbon一样好了,真是坑了半夜,昨晚都没有写,今天才复盘,希望能帮到大家,让更多在坑里的技术人爬出来。

zwrlj527的专栏 1998

惊艳!阿里自爆用480页讲清楚了44种微服务架构设计模式

微服务架构设计 微服务的概念虽然直观易懂,但“细节是魔鬼”,微服务在实操落地的环节中存在诸多挑战。微服务也是可以成为企业转型的强力催化剂! 随着网络基础设施的高速发展,以及越来越多的企业和组织需要通过互联网提供服务,在考虑构建可以支持海量请求以及多变业务的软件平台时,微服务架构成为多数人的首选。微服务模式就是这样一种总结和概括,是一种可以通用的共识,用于描述微服务领域中的问题及解决方案、方法和思路。 这份《微服务架构设计模式》涵盖了44个架构设计模式,系统地解决服务拆分、事务管理、查询和跨服务通信,本

ruanHbac的博客 115

U8采购入库单CO接口开发实战:加载、新增与删除操作详解

本文详细解析了用友U8采购入库单CO接口的开发实战,重点介绍了加载、新增与删除三大核心操作的实现方法。通过C#代码示例和实际项目经验,帮助开发者高效处理采购入库单,提升企业供应链管理效率。文章还涵盖了环境配置、异常处理、性能优化等关键技巧,适合U8二次开发人员参考。

weixin_33462927的博客 375

基于单片机控制的开关电源设计

采用开关电源技术和MCU模块,凭借可靠性高、易于调适的特点,可以更高效地发挥出二者的优势,从而实现更好的组合。stm32的起动模式是通过Boot0和Boot1两个管脚的高低电平来决定的,当stm32被供电之后,这两个管脚的电平。在 VCC上,键盘的一头(列线)被连接到 VCC上,而在“0”的编程输出中,则用来进。,在开关管打开的情况下,由输入电力供给电流,感应装置存储   Buck变换器是一种非隔离式的电压转换器[10]整流电路对输入电压进行整流,再经过滤波电路,即Dc电压是直流/直流变换器的直流输入。

QQ1694456187的博客 2308

惊艳!阿里架构师用480页讲清楚了44种微服务架构设计模式

用44个微服务设计模式让你理解服务拆分、事务管理、查询和跨服务通信等难题!如果你现在正在为微服务发愁,那么这不失为一份好的PDF!文中资料已整理打包存放网盘,有需要的朋友可以点击下方的名片自取!

m0_73311735的博客 114

从JTAG到AS模式:一文搞懂EP4CE10E22C8N所有配置引脚(MSEL, nCONFIG, DATA0)的用法

本文深入解析EP4CE10E22C8N FPGA的配置引脚(MSEL, nCONFIG, DATA0)在不同模式下的使用方法,特别关注从JTAG到AS模式的切换要点。通过详细的配置模式对比、状态机分析和PCB布局建议,帮助开发者避免常见陷阱,提升FPGA配置成功率。

weixin_33713350的博客 320

惊艳!阿里技术官只用480页就展现了这44种微服务架构设计模式

微服务架构设计 微服务的概念虽然直观易懂,但“细节是魔鬼”,微服务在实操落地的环节中存在诸多挑战。微服务也是可以成为企业转型的强力催化剂! 随着网络基础设施的高速发展,以及越来越多的企业和组织需要通过互联网提供服务,在考虑构建可以支持海量请求以及多变业务的软件平台时,微服务架构成为多数人的首选。微服务模式就是这样一种总结和概括,是一种可以通用的共识,用于描述微服务领域中的问题及解决方案、方法和思路。 这份《微服务架构设计模式》涵盖了44个架构设计模式,系统地解决服务拆分、事务管理、查询和跨服务通信,本

m0_50180963的博客 103

华为OD机试2025C卷真题题库目录|机考题库 + 算法考点详解

本文整理华为OD 2025C卷 机试(机考)题库,提供高频考点精析与详细题目内容,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 3987

R语言机器学习算法实战系列(十五)随机森林生存预后模型+SHAP值 (Random Survival Forest + SHAP)

本教程运用随机森林生存分析筛选与患者生存状态显著相关特征。该方法借随机森林这一强大机器学习算法,构建多棵决策树并集成结果,以提高生存分析准确性,识别关键生物标志物。接着,利用选定特征构建风险得分,将多个特征转化为单一数值,量化患者风险水平。之后,依据风险得分将患者分为高、低风险亚型,为临床治疗提供个性化指导。最后,通过分析时间依赖的 ROC 曲线评估模型长期预测能力。此曲线计算不同阈值下的真正例率与假正例率,在多个时间点评估,全面展现模型长期稳定性与准确性。。并且增加了SHAP值评估特征重要性

专注生信领域 2623

深入操作系统原理:从《操作系统导论》看微服务网关限流熔断机

在现代分布式系统中,微服务架构已经成为了主流,而微服务网关作为整个系统的第一道防线,承担着流量控制、路由转发、鉴权等核心功能。在实际开发中,我们常常会遇到“服务雪崩”“请求超时”“服务器资源耗尽”等异常情况。这些问题的根源往往与操作系统的调度机制、资源管理以及网络通信的底层实现息息相关。本文将结合经典技术书籍《操作系统导论》中的核心理论知识,从底层系统原理出发,深入探讨微服务网关中的限流与熔断机制,帮助读者建立起系统化的知识图谱。

wuchangjian的专栏 236

Freeswitch 如何检测链路是否有回铃音

Freeswitch回铃音检测解决方案 问题描述:呼叫手机时,虽然信令正常(183/180),但部分手机无回铃音,导致坐席无法判断是否接通,用户体验差。 解决方案: 先播放本地音频作为回铃音 实时检测用户侧是否有声音输入 检测到声音后自动切换为用户侧音频 技术实现: 使用Freeswitch APP实现功能 创建结构体保存实例数据(包括铃声文件、会话句柄、VAD检测器等) 通过media bug机制实现音频流的替换 利用VAD(语音活动检测)技术监控用户侧声音 当检测到用户说话时自动终止本地铃声播放 该方案

2301_81507069的博客 51

微服务与单体的取舍

微服务非技术升级,而是组织与运维能力的变现。收益(故障隔离、独立扩展、发布、边界清晰)随规模放大,成本却一次性支付。拆分需满足团队超十人、负载差异大、发布互阻、领域稳定四条件。否则应优先采用模块化单体——代码分层、接口约束,边界清晰,未来可平滑拆分。避免按技术层划分服务,坚持“一服务一数据所有权”。拆分前确保基础设施完备,且以具体痛点为信号,逐步推进,先拆最痛处,验证后再行扩展。

2401_89855466的博客 276

Devexpress16.2.6破解工具

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VortMall微服务商城系统v1.3.26 供应链后台菜单优化与供应商代发流程说明

在 VortMall 微服务商城系统中,供应商提供货源并维护库存,店铺选货铺货并向消费者销售。供应商代发时,供货方处理发货,消费者通过订单查看物流;发生退换货时,店铺、平台和供应商按业务规则协作。v1.3.26 调整了供应链后台“采购管理”“供应商管理”和“设置”三个分组的图标。本文结合这次界面调整,梳理系统已有的供销与履约流程。

VortMall的博客 392

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

微服务网关中的安全风险与限流熔断策略深度解析

在现代的微服务架构中,网关作为系统的第一道防线,承担了请求路由、鉴权、限流与熔断等核心功能。然而,随着业务复杂度的提升,安全风险也随之增加,尤其是在没有合理配置限流和熔断机制的情况下,网关可能成为攻击者渗透系统的入口。本文将从渗透测试的角度出发,深入剖析微服务网关在安全防护方面的常见问题,并结合限流与熔断的实际场景,提供可操作的安全加固方案。

后台模板 175

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

从微服务到 AI Agent 全栈实战笔记

基础框架:Spring Boot 3.3.x / 3.4.x微服务组件:Spring Cloud 2023.0.x / Spring Cloud Alibaba 2023.0.xAI 框架:Spring AI 1.0.x + Spring AI Alibaba (DashScope)核心中间件:Nacos (注册/配置中心)、MySQL、MyBatis-Plus服务注册与发现:所有服务启动时向 Nacos 报到,互相调用时通过服务名(如 )去 Nacos 查询真实 IP。配置中心:废弃 ,统一使用 中的

2503_93626619的博客 163

基于Spring Boot 2.x开发的微服务访问Redis的方案

回到最初的问题:Spring Boot 2.x 微服务该用哪个 Redis 客户端?默认选 Lettuce:Boot 2.x 官方默认,Netty 异步模型,线程安全,单连接高并发,是绝大多数场景的最优解。Jedis 不是不能用:历史项目、简单同步场景依然可靠,但要把连接池参数调好,并清楚它的阻塞模型限制。Redisson 是能力补充:分布式锁、限流、布隆过滤器等开箱即用,建议与 Lettuce 共存而非替换。客户端选型只是起点,真正决定线上稳定性的,是序列化统一、连接池合理、超时可控、监控到位。

流水账 712

C++ 微服务 IM 骨架开箱:目录规划、架构分层与全量接口清单

梳理 C++ 即时通讯微服务的开箱骨架:先回顾服务分层与调用链,再给出单仓目录规划、proto 契约与 CMake 装配,附全量接口表和冒烟排错清单。

2301_78967866的博客 177

带着小白学习-微服务-5 实战:配置中心-数据库连接

如前所述,服务治理主要包含注册中心,前面所有的微服务子工程均已注册到nacos,然后由相应的应用到nacos进行拉取。接下来,我们将使用nacos的配置中心,用于保存和分发应用运行所需的动态配置。比如数据库的各类信息等。

wdyan297的博客 212

Rust如何实现微服务网关的高并发与限流熔断机制

在现代互联网系统中,微服务架构已成为主流,而微服务网关则是整个系统的重要组成部分。当面对高并发、高可用性需求时,很多开发者对如何用 Rust 实现一个稳定可靠的网关存在疑惑,尤其是处理请求的幂等性、限流和熔断机制。本文将以 Rust 的实际案例为基础,结合生产环境中的具体经验,讲解如何设计和实现一个具备限流与熔断能力的微服务网关。

wuchangjian的专栏 77

单体与微服务取舍

微服务适合所有项目吗?什么时候应该用单体?

SCscHero的博客 167

# C++ 微服务即时通讯系统(六):Qt 客户端——分层、异步状态与未读提醒

本文以Qt客户端为基线,剖析消息与会话链路的完整管理机制。通过分层架构(页面、控制器、模型、API)解耦用户操作与网络交互,结合_generation、fetchRevision等版本号防止状态污染,实现异步请求的正确合并与去重。重点解决刷新丢失通知、发送后同步、未读数计算、草稿跨账号隔离等核心问题,强调状态归属与业务规则而非单纯依赖网络顺序。测试替身验证竞态场景,确保在无真实服务器下仍可可靠验证逻辑。最终构建可信、稳定、可维护的桌面端用户体验。

2502_93510665的博客 470

RPC与网络通信:如何让微服务之间“顺畅对话”?

本文从真实故障出发,剖析微服务间RPC通信的五大核心陷阱:超时配置缺失导致雪崩、重试策略放大请求压力、注册中心缓存引发发布期报错、序列化兼容性问题及异常类型混淆。通过可落地的配置示例(如gRPC默认超时拦截器、关闭LoadBalancer缓存)与实践原则(超时逐层递减、仅幂等接口重试),揭示如何构建稳定可靠的远程调用链路,适合正在被调用链稳定性困扰的后端开发者与SRE。

2302_80138126的博客 708

【C++ 基于微服务的即时通讯系统】项目骨架搭建:目录规划、架构回顾与全量接口设计总览

前面我们陆续把所有基建组件都过了一遍:参数解析、日志、注册中心、RPC框架、搜索引擎、网络库、第三方云服务、构建工具,整条工具链已经全部就绪。从这一篇开始,我们正式进入项目实战阶段。动手写业务代码之前,第一件事不是上来就撸函数,而是先把骨架搭好:规划清晰的目录结构、明确每个服务的职责边界、定义好全量接口协议。骨架搭稳了,后面填充业务才不会越写越乱。本文就从工程目录、架构梳理、接口设计三个维度,把整个项目的整体轮廓完整落地。

会当凌绝顶,一览众山小 2699
上一篇: 招行一面:Java的线程如何通信?
下一篇: 2024年互联网Java工程师高级面试八股文汇总(1260道题目附解析)
退休的汤姆
博客等级 码龄7年 1657粉丝 1051原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值