秒杀系统SpringCloud架构选型以及后台代码搭建(二)

【项目】SpringCloud+Nginx+Redis+RabbitMQ秒杀系统 文章目录秒杀系统前言系统架构图难题限流(一般都在接入层)三大接口限流算法计算器漏桶令牌桶其他限流策略分布式缓存可扩展超卖少卖(分布式锁)削峰遇到的问题前后端交互问题1.跨域问题2.前后端数据交换精度缺失问题JSON转换问题1.Redis中实体类和JSON互转问题消息中间件问题1.添加消息中间件的话,如何将秒杀系统处理的消息返回给用户?数据库问题1. 不能使用关键字做表名! 秒杀系统 前言 当时写这个项目也只是一时兴起,后面看着性能不断的提高,测的QPS和延迟都不断的变优,发现还挺有意思的,感觉找到了乐趣所在 阅读详情

eureka服务搭建

euerka简单介绍

1.什么是服务治理
Springcloud封装了Netflix公司开发的Eureka来实现服务治理。

服务治理管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务注册于发现。

2.什么是服务注册与发现
  Eureka采用CS架构。EurekaServer作为服务注册的服务器,它是注册中心。而系统中的其他服务,使用eureka的客户端连接到EurekaServer并维持心跳连接。这样系统的维护人员可以通过eurekaserver来监控系统各个服务的运行情况。

在服务注册发现中,有一个注册中心。当服务器启动时会把当前服务器自己的信息,比如服务地址、通讯地址等以别名方式注册到注册中心。另一方(消费者),以别名的方式到注册中心获取到实际的地址,然后再实现本地的服务调用。

3.Eureka的两个组件
  EurekaServer提供注册服务,各个微服务节点通过配置启动后,会在eureka服务中进行注册。这样EurekaServer服务注册表中将会存储所有可调用服务节点的信息,服务节点的信息可以在界面中直观的看到。

EurekaClient通过注册中心获取服务。是一个Java客户端,用于简化EurekaServer的交互;具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认30s)。如果EurekaServer在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从注册表中把这个服务节点移除(默认90s)。

代码搭建

项目架构如图
在这里插入图片描述

maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>kimwu_kill_mall</artifactId>
        <groupId>com.kimwu</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>kimwu_kill_eureka</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
</project>

配置文件

server:
  port: 17001


eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称
  client:
    register-with-eureka: false #不注册自己
    fetch-registry: false #表示自己就是注册中心,不需要去检索服务
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#      defaultZone: http://eureka7002.com:7002/eureka/

  server:
    #关闭自我保护机制,保证不可用服务被及时剔除
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000

spring:
  application:
    name: kimwu-kill-eureka

启动类

/**
 * @author KimWu
 * @date 2020/6/2 22:47
 * @Description :
 */
@SpringBootApplication
@EnableEurekaServer //服务注册中心
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

zuul服务搭建

zuul简单介绍

1. Zuul 简介

Zuul 微服务网关是为Spring Cloud Netflix提供动态路由,监控,弹性,安全等服务的框架。可以和Eureka、Ribbon、Hystrix等组件配合使用。

2. Zuul 主要功能

1、 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求。

2、审查与监控:在边缘位置追踪有意义的数据和统计结果,从而为我们带来精确的生产视图。

3、动态路由:动态地将请求路由到不同的后端集群;

4、压力测试:逐渐增加指向集群的流量,以了解性能;

5、为每一种负载类型分配对应容量,并弃用超出限定值的请求;

zuul服务搭建

项目架构如图
在这里插入图片描述
maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>kimwu_kill_mall</artifactId>
        <groupId>com.kimwu</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>kimwu_kill_zuul</artifactId>

    <dependencies>
        <!-- consul -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- zuul  -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>com.marcosbarbero.cloud</groupId>
            <artifactId>spring-cloud-zuul-ratelimit</artifactId>
            <version>1.3.4.RELEASE</version>
        </dependency>
        <!-- starter fail denpend -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>com.netflix.hystrix</groupId>
            <artifactId>hystrix-javanica</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
        </dependency>
        <!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
    </dependencies>
</project>

配置文件

server:
  port: 17002

spring:
  application:
    name: kimwu-kill-zuul
  redis:
    cluster:
      nodes: 集群模式
    host: 192.186.110.165
    port: 7000
    timeout: 2000
    password: 密码

eureka:
  client:
    register-with-eureka: true #表示注册到eureka
    fetch-registry: true #是否从eurekaServer抓取已有的注册信息,集群必须设置为true才能配合ribbon使用负载均衡
    service-url:
      defaultZone: http://localhost:17001/eureka
#      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
  instance:
    instance-id: ${spring.application.name}
    prefer-ip-address: true #访问路径可以显示ip
  server: #关闭自我保护机制,保证不可用服务被及时剔除
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000

zuul:
  host:
    connect-timeout-millis: 15000 #HTTP连接超时要比Hystrix的大
    socket-timeout-millis: 60000   #socket超时
  routes:
    kimwu-kill-order:
      path: /kimwu-kill-order/**
      service-id: kimwu-kill-order
      strip-prefix: true
      custom-sensitive-headers: true
  semaphore:
    max-semaphores: 5000


#负载配置
ribbon:
  ConnectTimeout: 10000
  ReadTimeout: 60000
  MaxConnectionsPerHost: 3000
  MaxTotalConnections: 3000

#熔断配置
hystrix:
  command:
    default:
      #断路器超时设置和请求的超时
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 60000
      #设置熔断器失败的个数
    circuitBreaker:
      requestVolumeThreshold: 1000
    #设置核心线程数
  threadpool:
    default:
      coreSize: 100
      maxQueueSize: 2000
      queueSizeRejectionThreshold: 2000



启动类


/**
 * @author KimWu
 * @date 2020/5/23 20:25
 * @Description :
 */
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableZuulProxy
@EnableDiscoveryClient
@EnableEurekaClient
//@EnableResourceServer
public class ZuulApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class,args);
    }
}

公共组件

redis公共组件

架构如图
在这里插入图片描述
具体可参考git仓库

https://gitee.com/kim_wu94/kim-redis.git

该仓库功能:
集成redis操作 ①实现注解实现redis分布式锁,包括续命续时操作(业务时间过长key过期自动续命) ②实现redis键过期通知,发布订阅,键值过期处理 ③使用注解实现接口限流,redis实现方式 ④mybatis-plus使用redis作为二级缓存,添加注解即可

秒杀系统_搬运自GitHub 搬运自Github秒杀系统,高并发大流量场景均适用,技术涉及有springboot、Redis、ZK等等。值得一学! 立即下载

相关推荐

管理后台springcloud

一个使用springcloud,spirngboot,mybatis 搭建的管理后台,前端使用layui

不服不行,Github即将爆火的「高并发秒杀顶级教程」,先睹为快

如何让系统面对百万级的请求流量不出故障?如何保证高并发情况下数据的一致性写?如何在不堆服务器的情况下应对是平时数百上千倍的并发访问?如何分别针对大流量的读写请求进行服务端的极致优化?你都将在这份笔记里找到答案。该笔记希望带你透彻理解秒杀系统的各个关键技术点,希望你在学完之后,能够快速搭建一套满足自己业务场景的高可用秒杀系统。而更多的是,我希望借助“秒杀”这个互联网高并发场景中的典型代表,带你了解如何打造一个超大流量并发读写、高性能,以及高可用的系统架构。

公众号:该用户快成仙了 401

clang-tidy 使用指南

clang-tidy 需要一个编译数据库来了解如何编译你的代码。编译数据库通常是一个名为 compile_commands.json 的文件。在这个示例中,clang-tidy 会对 test.cpp 文件进行分析,并报告任何潜在的问题。例如,它可能会警告 test 函数中的未使用变量 x。clang-tidy 是一个用于 C++ 代码的静态分析工具,可以帮助你发现代码中的潜在问题和改进点。这将在 build 目录中生成一个 compile_commands.json 文件。

weixin_42244181的博客 2359

秒杀系统SpringCloud架构选型以及后台代码搭建(一)

简介 “秒杀”,就是在同一个时刻有大量请求争抢购买同一个商品,并完成交易的过程,其间涉及大量的并发读和并发写,并要求高可靠和高性能的系统支持。 也因此,“秒杀”对于程序员来讲也意味着巨大的挑战。 秒杀的三个可用性 高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。本专栏将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。 一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库

JavaTeachers的博客 625

基于RFM模型的电商零售数据分析

E-Commerce Data 数据集介绍 E-Commerce Data Actual transactions from UK retailer 数据集地址(kaggle) https://www.kaggle.com/carrie1/ecommerce-data/kernels 该数据来源于kaggle,是一家注册在英国的电子商务网站的2010年12月份-2011年12月份之间的...

W_H_M_2018的博客 3093

快手极速版抓包实战:安卓/iOS双端获取client_salt全流程解析(避坑指南)

本文详细解析了在安卓和iOS平台上获取快手极速版关键参数`client_salt`的全流程,包括环境配置、抓包工具使用、参数识别与转换等实战技巧。特别针对双端差异和反抓包机制提供了避坑指南,帮助开发者高效安全地完成数据获取任务。

weixin_29021195的博客 712

秒杀(一)记录一个秒杀系统的开发过程

最近换了份工作,工作不是很忙,离家又比较近,所以晚上差不多六点半就可以到家了,除了亲子时光,八点半之后就是自由时间,闲着没事干,正好自己的大学时的笔记本没什么用处,就想把它利用起来,笔记本的配置比较差,i3 + 8G +2TB。逛知乎的时候,搜索“值得学习的Java项目”,找了一个比较感兴趣的项目:开发一个秒杀系统。参考的github地址:GitHub - qiurunze123/miaosha: ⭐⭐⭐⭐秒杀系统设计与实现.互联网工程师进阶与分析???????? 选择理由:秒杀系统涉及的内容比较多,可以将

只喝白开水 490

用 CDS View I_APARToleranceGroup 管理客户与供应商收付差异容差:配置语义、字段解读与 ABAP 落地实践

财务共享服务中心常面临小额差异处理的挑战,SAP通过"客户/供应商容差组"机制实现自动清账规则配置。CDS视图I_APARToleranceGroup将配置数据转化为可查询维度,包含宽限天数、固定现金折扣等关键业务参数。该视图支持按公司代码和容差组查询差异处理策略,可用于报表开发、主数据校验和接口合规检查,帮助财务团队高效管理海量小额交易差异,减少手工操作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 127

用Redis轻松实现秒杀系统

什么是秒杀 秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。 秒杀系统场景特点 秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。秒杀一般是访问请求数量远远大于库存数量,只

zxc456733的博客 2万+

Android蓝牙中的Rfcomm协议介绍

RFCOMM(Radio Frequency Communications)是一种基于蓝牙技术的串口仿真协议,以下是详细介绍:一、协议概述二、工作原理三、应用场景

手机-手表蓝牙开发工程师的博客 712

基于STM32设计的自动追光系统(项目资料ID:2)

基于STM32设计的自动追光系统主要由光敏采集电路、单片机核心板电路和步进电机控制电路构成。通过光敏电阻采集环境光强信息,经 STM32 单片机处理后,控制步进电机转动,实现对光源的自动追踪。该系统具有响应速度快、追踪精度较高等优点,可应用于太阳能发电、智能照明等领域,为相关场景提供高效的光资源利用方案。

以培养嵌入式工程师为己任 1万+

分布式springcloud+springboot+vue高并发网上商城购物秒杀系统

本次开发一套基于Springcloud的高并发秒杀系统,管理员功能有个人中心,用户管理,商品类型管理,商品信息管理,订单管理,系统管理。这样就让用户用着方便快捷,都通过同一个后台进行业务处理,而后台又可以根据并发量做好部署,用硬件和软件进行协作,满足于数据的交互式处理,让用户的数据存储更安全,得到数据更方便。该模块主要用于展示商品列表的布局效果,调用后台接口获取商品列表数据,如商品名称、商品图片、商品原价和秒杀价、商品库存量等,供用户查看所有秒杀商品的信息。用户在商品列表页点击某商品进入商品详情页。

qq_3166678367的博客 1158

使用 Simulink 进行电力电子系统的大信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。大信号模型仿真的目的是通过模拟系统在非线性条件下的真实行为,评估其瞬态响应、稳态性能以及对不同负载和输入电压变化的响应。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的大信号模型仿真。背景介绍。

xiaoheshang_123的博客 303

springcloud实现秒杀系统详细教程

这是一个基于Spring Cloud微服务架构的秒杀系统,采用分布式设计,能够应对高并发场景下的商品抢购需求。

qq_48446054的博客 816

手把手教你完成基于YOLOv8的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统

手把手教你完成基于YOLOv8的商店的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理员系统,可进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2456

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

基于Java微服务方案的商品秒杀系统

项目是基于Java微服务方案的商品秒杀系统。是前后端分离的项目,前端用React,后端为Java的微服务架构。项目本身用于学习,在一些地方还不够成熟,欢迎各位多多交流。项目采用了SpringBoot框架、SpringCloud微服务架构、SpringCloud Gateway网关技术栈、SpringCloud alibaba技术栈Nacos、SpringCloud Netflix技术栈容灾和均衡负载和Feign进行服务间的通信、持久层MybatisPlus框架、Flyway数据库版本管理工具和多数据源处理方

Java笔记 3987

SAP B1中文培訓教材_SDK

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

精讲SpringCloud+Nginx秒杀实战,秒杀系统的业务功能和技术难点

Spring Cloud+Nginx秒杀实战 在开发高并发系统时用三把利器——缓存、降级和限流来保护系统。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;降级是当服务出现问题或者影响到核心流程的性能时需要暂时屏蔽掉服务请求,待高峰或者问题解决后再打开; 有些场景并不能用缓存和降级来解决,比如稀缺资源(如秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(如评论的最后几页),因此需要有一种手段来限制这些场景的并发请求量,即限流。 本章将通过一个综合性实战——Spring

m0_63437643的博客 344

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

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

使用SpringCloud搭建“秒杀”架构(github源码)

点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!作者:coderliguoqinggithub.com/coderliguoqing/distributed-secki...

Java笔记虾 1422

秒杀系统讲义

秒杀系统 一、学习目标 了解秒杀的业务 掌握秒杀的设计思路及技术架构 掌握SpringCloud针对于秒杀业务的应用 掌握redis对于性能的提升作用 掌握RabbitMQ对于业务拆分异步的处理应用 二、了解秒杀的业务及使用的技术架构 2.1. 什么是秒杀 【秒杀】一词在网络的最早起源,应该要追溯到日本的综合格斗技团体Pancrase在1993年9月21日发行的WEEKLY PRO-WRESTLING(每周职业摔跤)杂志中出现的自创词,在2000年发行的一款回合制网络游戏【石器时代】传入中国并被发扬光大

destinyzxd的博客 592

Springcloud的电商网上商城秒杀系统vue

本文所设计的电商抢购限时秒杀系统系统的设计与实现拥有前端和后端,前端使用Vue.js框架和创建,后端使用Springboot框架创建,开发语言采用Java,使用Mysql数据库对后台数据进行存储。将IDEA作为主要的开发工具。接着进行系统的需求分析、功能设计、数据库设计,最后进行编码实现。/S架构,通过Vue.js框架、Springboot框架以及Mysql数据库可以构建一个完整电商抢购限时秒杀系统系统。最后,整个论文从系统分析、设计、实现以及最后的测试做了一个合理的安排。

QQ402205496的博客 873

秒杀(二)关于秒杀系统的思考与解决方案

1、思考 软件开发过程中的可行性分析就不分析了,别人都已经做出来来了,说明开发秒杀系统本身就是可行的。接下来我们要思考一下秒杀系统会遇到哪些问题?以下的内容有参考各种的资料整理出来的。 高并发 秒杀的特点就是这样时间极短、 瞬间⽤户量⼤。缓存雪崩,缓存击穿,缓存穿透这些都是有可能发⽣的,出现问题后请求全部到DB那就很难受了,活动失败⽤户体验差,后果很严重 超卖 本来准备秒杀10个MacBook pro,超卖多了20个,那就尴尬了,那最后只能杀个开发祭天了 恶意请求 对于懂技术的人,...

只喝白开水 704

商品秒杀系统

设计思路: 一、学习目标 了解秒杀的业务 掌握秒杀的设计思路及技术架构 掌握SpringCloud针对于秒杀业务的应用 掌握redis对于性能的提升作用 掌握RabbitMQ对于业务拆分异步的处理应用 二、了解秒杀的业务及使用的技术架构 2.1. 什么是秒杀 对于商家来说,按照商家的规模,秒杀分为三种形式: 1、平台要求准时准点做秒杀,类似于天猫双11,11月11日0点开始抢购,或者京东的整点抢购,都由平台发起。 2、商家对于自己的店铺做秒杀,一般是厂家的旗舰店,在平台...

weixin_49143405的博客 2521

秒杀系统后台实现详解

秒杀后台实现本文主要讲解项目实战中秒杀如何解决下面问题:1)实现秒杀异步下单,掌握如何保证生产者&消费者消息不丢失2)实现防止恶意刷单3)实现防止相同商品重复秒杀4)实现秒杀下单...

singwhatiwanna 515

推荐开源项目:SpringCloud-miaosha - 微服务时代的秒杀系统解决方案

推荐开源项目:SpringCloud-miaosha - 微服务时代的秒杀系统解决方案 项目简介 是一个基于 Spring Cloud 和 MyBatis 实现的微服务架构下的秒杀系统示例。该项目旨在帮助开发者理解如何在实际业务中利用微服务架构解决高并发场景下的秒杀问题。通过这个项目,你可以学习到如何设计和实现高性能、可扩展的秒杀系统。 技术栈分析 Spring Cloud:作为微服务治理框架...

gitblog_00063的博客 460

秒杀系统如何设计

秒杀系统设计的核心思想是:尽量将请求拦截在上游,减少对核心资源的竞争,通过异步化提高系统吞吐量,保证最终一致性而非强一致性。

qq_57756904的博客 731
上一篇: 秒杀系统SpringCloud架构选型以及后台代码搭建(一)
下一篇: Redis的五种数据类型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值