Druid集群搭建 使用套件2.2.3

Druid学习笔记(3)Druid部署总结 介绍前面几个章节对Druid的整体架构做了简单的说明,本文主要描述如何部署Druid的环境Imply提供了一套完整的部署方式,包括依赖库,Druid,图形化的数据展示页面,SQL查询组件等。本文将基于Imply套件进行说明单机部署依赖 Java 8 or better Node.js 4.5.x or better Linux, Mac OS X, or other Unix-like OS (Wi 阅读详情

 

96 曹振华 关注

2017.07.17 22:02* 字数 304 阅读 2448评论 3喜欢 2

测试环境采用了三台虚拟机,每台4G内存
用到的软件有

mysql, hadoop-2.7.1, kafka_2.11-0.9.0.1, imply-2.2.3(druid的套件,集成了dsql像mysql一样去查询数据,pivot数据可视化组件)
Java 8 or better
Node.js 4.x or better

Master Server(master)

1527 (Derby; not needed if you are using a separate metadata store like MySQL or PostgreSQL)
2181 (ZooKeeper; not needed if you are using a separate ZooKeeper cluster)
8081 (Druid Coordinator)
8090 (Druid Overlord)

#启动master
bin/supervise -c conf/supervise/master-with-zk.conf

Query Server (slave1)

8082 (Druid Broker)
9095 (Pivot)
#启动query
bin/supervise -c conf/supervise/query.conf

Data Server(slave2)
8083 (Druid Historical)
8091 (Druid Middle Manager)
8100–8199 (Druid Task JVMs, spawned by Middle Managers)
8200 (Tranquility Server; optional)
#启动data
bin/supervise -c conf/supervise/data.conf

Download the distribution

tar -xzf imply-2.2.3.tar.gz
cd imply-2.2.3

[全局Common配置]

vim conf/druid/_common/common.runtime.properties
#
# Extensions
#

druid.extensions.directory=dist/druid/extensions
druid.extensions.hadoopDependenciesDir=dist/druid/hadoop-dependencies
druid.extensions.loadList=["druid-caffeine-cache","druid-lookups-cached-global","druid-histogram","druid-datasketches","mysql-metadata-storage","druid-hdfs-storage","druid-kafka-indexing-service"]

#
# Logging
#

# Log all runtime properties on startup. Disable to avoid logging properties on startup:
druid.startup.logging.logProperties=true

#
# Zookeeper
#
druid.zk.service.host=192.168.31.162
druid.zk.paths.base=/druid

# For MySQL:
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://192.168.31.162:3306/druid
druid.metadata.storage.connector.user=root
druid.metadata.storage.connector.password=root

#
# Deep storage 
#
# For local disk (only viable in a cluster if this is a network mount):
# For HDFS:
druid.storage.type=hdfs
druid.storage.storageDirectory=hdfs://master:9000/druid/segments

Configure Master server address
协调节点:
vim conf/druid/coordinator/jvm.config

-server
-Xms500m
-Xmx500m
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
-Dderby.stream.error.file=var/druid/derby.log

vim conf/druid/coordinator/runtime.properties

druid.service=druid/coordinator
druid.host=master
druid.port=8081

druid.coordinator.startDelay=PT30S
druid.coordinator.period=PT30S

统治节点:-server
vim conf/druid/overlord/jvm.config

-Xms500m
-Xmx500m
-XX:NewSize=256m
-XX:MaxNewSize=256m
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

vim conf/druid/overlord/runtime.properties

druid.service=druid/overlord
druid.host=192.168.31.162
druid.port=8090
druid.indexer.queue.startDelay=PT30S
druid.indexer.runner.type=remote
druid.indexer.storage.type=metadata

Configure query storage 
查询节点
vim conf/druid/broker/jvm.config

-server
-Xms1g
-Xmx1g
-XX:NewSize=256m
-XX:NewSize=256m
-XX:MaxDirectMemorySize=1g
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

vim conf/druid/broker/runtime.properties

druid.service=druid/broker
druid.host=master
druid.port=8082

# HTTP server threads
druid.broker.http.numConnections=5
druid.server.http.numThreads=40

# Processing threads and buffers
druid.processing.buffer.sizeBytes=536870912
druid.processing.numMergeBuffers=2
druid.processing.numThreads=7
druid.processing.tmpDir=var/druid/processing

# Query cache disabled -- push down caching and merging instead
druid.broker.cache.useCache=false
druid.broker.cache.populateCache=false
#druid.broker.cache.unCacheable=[]
#JVM堆内LUR缓存大小,单位Byte
#druid.cache.sizeInBytes=60000000 

# SQL
druid.sql.enable=true

# Query config
# 查询节点请求历史节点方式, 有random和connectionCount两种连接方式
druid.broker.balancer.type=connectionCount

pivot配置
vim conf/pivot/config.yaml

# The port on which the Pivot server will listen on.
port: 9095

# Pivot runtime directory
varDir: var/pivot

settingsLocation:
location: file
format: 'json-pretty'
initialSettings:
  clusters:
    - name: druid
      type: druid
      host: localhost:8082

Configure deep storage
历史节点
vim conf/druid/historical/jvm.config

-server
-Xms1g
-Xmx1g
-XX:NewSize=256m
-XX:MaxNewSize=256m
-XX:MaxDirectMemorySize=4096m
-XX:UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

vim conf/druid/historical/runtime.properties

druid.service=druid/historical
druid.host=master
druid.port=8083

# HTTP server threads
druid.server.http.numThreads=40

# Processing threads and buffers
druid.processing.buffer.sizeBytes=536870912
druid.processing.numMergeBuffers=2
druid.processing.numThreads=7
druid.processing.tmpDir=var/druid/processing

# Segment storage
# Segment 本地加载路径与最大存储空间大小,单位为Byte
druid.segmentCache.locations=[{"path":"var/druid/segment-cache","maxSize"\:130000000000}]
# 最大存储空间大小,该值只用作Coordinator调配
Segment加载的依据
druid.server.maxSize=130000000000

# Query cache
druid.historical.cache.useCache=true
druid.historical.cache.populateCache=true
druid.cache.type=caffeine
druid.cache.sizeInBytes=2000000000

#Tier
# 自定义数据层名称,默认为_default_tier, 不同的数据层的Segment数据无法相互复制
#druid.server.tier=hot
# 自定义数据层优化级, 默认值为0, 值越大优先级越高, 该功能用于冷热数据层的划分.
#druid.server.priority=10

MiddleManager配置
vim conf/druid/middleManager/jvm.config

-server
-Xms64m
-Xmx64m
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

vim conf/druid/middleManager/runtime.properties

druid.service=druid/middlemanager
druid.host=slave2
druid.port=8091

# Number of tasks per middleManager
druid.worker.capacity=3

# Task launch parameters
druid.indexer.runner.javaOpts=-server -Xmx1g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
druid.indexer.task.baseTaskDir=var/druid/task
druid.indexer.task.restoreTasksOnRestart=true

# HTTP server threads
druid.server.http.numThreads=40

# Processing threads and buffers
druid.processing.buffer.sizeBytes=100000000
druid.processing.numMergeBuffers=2
druid.processing.numThreads=2
druid.processing.tmpDir=var/druid/processing

# Hadoop indexing
druid.indexer.task.hadoopWorkingPath=var/druid/hadoop-tmp
druid.indexer.task.defaultHadoopCoordinates=["org.apache.hadoop:hadoop-client:2.7.1"]

启动三个节点相应服务

master:
    cd /opt/zookeeper-3.4.6
    bin/zkServer.sh start
    cd /opt/kafka_2.11-0.9.0.1/
    bin/kafka-server-start.sh config/server.properties &
    nohup bin/supervise -c conf/supervise/master-no-zk.conf > master.log &
slave1:
    nohup bin/supervise -c conf/supervise/query.conf > query.log &
slave2:
    nohup bin/supervise -c conf/supervise/data.conf > data.log &

Start Kafka

./bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic wikiticker

Enable Druid Kafka ingestion

curl -XPOST -H'Content-Type: application/json' -d @quickstart/wikiticker-kafka-supervisor.json http://master:8090/druid/indexer/v1/supervisor

Load historical data

export KAFKA_OPTS="-Dfile.encoding=UTF-8"
/opt/kafka_2.11-0.9.0.1/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic wikiticker < /opt/imply-2.2.3/quickstart/wikiticker-2016-06-27-sampled.json

Load real-time data

curl -O https://static.imply.io/quickstart/wikiticker-0.4.tar.gz
tar -xzf wikiticker-0.4.tar.gz
cd wikiticker-0.4
bin/wikiticker -J-Dfile.encoding=UTF-8 -out kafka -topic wikiticker

Query data

 bin/dsql
 dsql> SELECT FLOOR(__time TO DAY) AS "Day", SUM("count") AS Edits FROM "wikiticker-kafka" GROUP BY FLOOR(__time TO DAY);

┌──────────────────────────┬───────┐
│ Day │ Edits │
├──────────────────────────┼───────┤
│ 2016-06-27T00:00:00.000Z │ 24433 │
│ 2017-03-07T00:00:00.000Z │ 642 │
└──────────────────────────┴───────┘
Retrieved 2 rows in 0.04s.

注意事项:

1. Not enough direct memory.  Please adjust -XX:MaxDirectMemorySize, druid.processing.buffer.sizeBytes, druid.processing.numThreads, or druid.processing.numMergeBuffers: maxDirectMemory[268,435,456], memoryNeeded[1,342,177,280] = druid.processing.buffer.sizeBytes[268,435,456] * (druid.processing.numMergeBuffers[2] + druid.processing.numThreads[2] + 1)
堆外内存的设置需要根据设置的线程数和MergeBuffers的大小来确定.
2. 因为metadata保存在mysql,所以在初始化mysql数据库的时候一定要设置utf8的编码;
   CREATE DATABASE druid DEFAULT CHARACTER SET utf8;
druid-0.21.1 搭建及使用 基于CDH6.3.2 官网下载最新版包 官网说明:https://druid.apache.org/docs/latest/tutorials/cluster.html 准备3台服务器。master、data、query各一台 安装包目录结构: 修改common配置文件 vim conf/druid/cluster/_common/common.runtime.properties druid.extensions.loadList=["druid-hdfs-storage", "druid-kafka-indexing-s 阅读详情

相关推荐

大数据Apache Druid(三):Druid集群搭建

由于将Segment和索引数据存放在HDFS中,Druid需要连接HDFS,需要Hadoop中相关配置文件,在node3“/software/apache-druid-0.21.1/conf/druid/cluster/_common”目录下创建目录“hadoop-xml”,将Hadoop中core-site.xml、hdfs-site.xml复制到“hadoop-xml”目录中。进入“/software/apache-druid-0.21.1/conf/druid/cluster/_common”...

Lansonli(蓝深李)的博客 1774

Druid集群搭建手册

初始化mysql ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 这条命令执行后会产生一个初始密码: A temporary password is generated for root@localhost: tj+/Yssvc9Gb (要记下来)首先执行如下命令生成公钥和私钥对:ssh-keygen -t rsa,一直按回车键,直到命令执行完毕。

2867

大数据Apache Druid(四):使用Imply进行Druid集群搭建

Imply基于Druid进行了一些组件的开发,是Druid的集成包,提供开源版本和商业版本,类似CDH一样,使安装Druid简化了部署,Imply也是Druid团队开发。我们可以使用Imply安装Druid,在Imply的官网https://imply.io进行下载,经过测试这个版本在提交加载数据任务时有一些bug(加载数据任务总是失败)。node3node4node5将imply安装包上传到node3“/software”目录下,并解压。...

Lansonli(蓝深李)的博客 1413

durid连接mysql cluster_Apache Druid 的集群设计与工作流程

Apache Druid 的集群设计与工作流程导读:本文将描述 Apache Druid 的基本集群架构,说明架构中各进程的作用。并从数据写入和数据查询两个角度来说明 Druid 架构的工作流程。公号 MageByte,设置星标点「在看」是我们创造好文的动力。Druid 是多进程架构,每种进程类型都可以独立配置,独立扩展。这样可以为集群提供最大的灵活度。这种设计还提供了强失效容忍:一个失效的组件不...

weixin_39857480的博客 431

大数据druid集群析搭建

网络上很多部署文档会留很多坑,现重新整理大数据druid集群实时分析搭建,亲测可用

GEE AI: 利用 Satellite Embedding 语义搜索快速识别研究区目标斑块

摘要 本文介绍了一种基于Google Earth Engine的遥感语义搜索技术,利用Satellite Embedding数据集快速识别目标地物。该方法通过将光谱信息转化为高维向量,在武汉市的案例中展示了如何:1)定义研究区和样本点;2)加载预处理的Embedding数据;3)计算向量相似度;4)结合面积过滤优化结果。相比传统监督分类,该技术具有响应快速(无需模型训练)、抗季节干扰和精准界定等优势,特别适用于森林碳储量监测和土地利用检测等应用场景。文中提供了完整的GEE代码实现流程,包括样本定义、相似度计

此星光明博客 625

Apache Druid安装部署手册

一 Druid架构 1. Coordinator 监控Historical处理,负责分配segments到指定的服务,确保存在HIstorical中是自平衡的 2. Overlord 监控MiddleManager处理和控制数据加载进druid集群;对分配给MiddleManager的摄取任务和协调segments的发布负责 3. Broker 处理来自客户端的查询,解析将查询重定向到Historical和MiddleManager,Broker接收到数据从这个子查询中,合并这些结果然后返回给查询者 4.

qq_34746079的博客 1993

LIO-SAM运行报错‘process has died’?别慌,一个命令搞定libmetis.so库路径问题

本文详细解析了LIO-SAM运行中常见的‘process has died’报错问题,特别是由libmetis.so库路径错误导致的节点崩溃。通过一个简单的命令移动库文件到正确位置,即可快速解决这一问题,同时提供了多种替代方案和预防措施,帮助开发者更好地理解Linux动态库加载机制和ROS环境管理。

weixin_29231221的博客 206

关于druid连接池连接错误问题(解决方法合集) 严重: create connection SQLException, url: root, errorCode 0, state null

关于druid连接池连接错误问题(解决方法合集) 严重: create connection SQLException, url: root, errorCode 0, state null

qq_58408462的博客 9742

CAT24C16 EEPROM的I²C页写与页读底层实现

I²C是一种广泛应用于嵌入式系统的双线同步串行通信协议,其核心在于严格的时序控制、地址寻址机制与主从应答逻辑。理解I²C总线物理层(上拉电阻、SCL/SDA电气特性)、协议层(START/STOP、ACK/NACK、7位地址格式)及外设寄存器操作(如SR1状态标志、CCR时钟分频),是实现可靠通信的基础。在实际工程中,EEPROM类器件(如CAT24C16)因其非易失性、页缓冲区结构和写保护(WP)功能,成为数据持久化关键载体;其16字节页写约束、内部写周期(5–10ms)与地址指针自动递增等特性,直接决定

weixin_42591413的博客 389

【毕业设计参考】基于yolov8+pyqt5自适应界面设计的锂电池表面缺陷检测系统

基于YOLOv8+PyQt5的锂电池表面缺陷检测系统结合了先进的目标检测技术与友好的用户界面设计,为锂电池质量检测提供了一种高效、准确的解决方案。未来,随着深度学习技术的不断发展,我们可以进一步优化模型,提高检测精度和速度,同时拓展系统功能,如实现实时视频流检测、与生产系统的深度集成等,为锂电池产业的发展注入新的活力。希望本文对大家在相关领域的研究和实践有所帮助,欢迎大家在评论区交流讨论。

1182

Apache Druid 集群搭建及使用【超全面】

一、Druid 简介 1.1 大数据分析平台架构分类 数据分析的基础架构可以分为以下几类: 使用Hadoop/Spark 进行分析 将Hadoop/Spark 的结果导入 RDBMS 中提供数据分析;补充说明:RDBMS一般指关系数据库管理系统 将结果注入到容量更大的NoSQL中,解决数据分析的存储瓶颈,例如:HBase 将数据源进行流式处理,对接流式计算框架,例如:Flink、Spark Streaming,结果保存到RDBMS、NoSQL中 将数据源进行流式处理,对接分析数据库,例如:

认知 行动 坚持 4794

使用MATLAB实现PAC2002轮胎模型的TIR文件解析和模型计算详解

PAC2002轮胎模型是由荷兰TNO公司开发的一种半经验的轮胎模型,用于描述轮胎在不同工况下的力学特性。该模型基于一系列物理和经验参数,通过复杂的数学表达式来模拟轮胎的力学行为,包括纵向力、侧向力、回正力矩等。

qq_38334677的博客 2430

druid集群的搭建

1、 启动zookeeper      下载zookeeper安装包,解压、安装      bin/zkServer.sh start 2、 修改druid配置文件 (1)      conf/druid/_common/common.runtime.properties             a、修改zookeeper列表                           b

suphieLiang的博客 4003

BLDC&PMSM电机控制器硬件设计工程(一)概述&需求&规划

这里是一个专注于电机控制器硬件工程的开放社区与知识仓库。我们的核心使命是分享、交流与共创,致力于解开无刷直流电机(BLDC)和永磁同步电机(PMSM)中、大功率控制器硬件设计,包括驱动IC选型,电流传感器选型,控制IC,母线电容计算,功率模块(IGBT、MOS管)选型以及大功率功率模块驱动电源设计。功率等级: 重点关注中等功率(如500W-10kW) 并向大功率(10kW以上) 延伸,探讨对应的功率器件(如MOSFET, IGBT, SiC)选型与驱动。

小幽余生不加糖 639

手把手教你学simulink(57.2)--电励磁同步电动机场景示例:基于Simulink的矢量控制(Field-Oriented Control, FOC)电励磁同步电动机

在某电动汽车驱动系统中,采用了本项目开发的带有矢量控制功能的电励磁同步电动机驱动系统,结合三相逆变器实现了对电动机的高效控制。在某工业驱动系统中,采用了本项目开发的带有矢量控制功能的电励磁同步电动机驱动系统,结合三相逆变器实现了对电动机的精确控制。经过实际测试,该系统的应用使得生产效率提高了10%,并且在高负载条件下,电动机的温升得到了有效控制,延长了电动机的使用寿命。通过本项目的实施,我们成功配置了三相交流电源、三相逆变器和电励磁同步电动机的参数,并实现了对电动机的精确控制。

MHD0815的博客 945

Apache Druid集群搭建

一.服务器及规划 我的集群是三台服务器,每台安装的软件及服务如下: 我集群的每个软件的具体的版本是: apache-druid-0.17.0-bin.tar.gz hadoop-2.8.3.tar.gz jdk-8u171-linux-x64.tar.gz kafka_2.12-2.1.0.tgz mysql-5.7.11-linux-glibc...

hzspinga的博客 2475

不会C# Winform用户界面设计?是因为没有掌握这些控件(建议收藏)

文章目录6.1 常用控件6.1.1 单选按钮(RadioButton)6.1.2 复选框(CheckBox)6.1.3 框架1. 面板控件Panel2. 分组框GroupBox3. TabControl控件6.1.4 应用实例6. 2 列表框和组合框6.2.1 列表框(ListBox)6.2.2 组合框(ComboBox )6.2.3 应用实例6.3 用户交互界面6.3.1 滚动条和进度条6.3.2 定时器6.3.3 菜单设计菜单设计概述MenuStrip和ContextMenuSt

智慧空间实验室 2921

Apache Druid 集群搭建

Apache Druid 集群搭建部署说明搭建准备配置修改配置分发启动测试 Install Imply Private on Linux · 2021.09 集群部署 · ApacheDruid中文技术文档 (apache-druid.cn) 部署说明 Imply 基于 Apache Druid 开发了一整套大数据分析解决方案,提供开源社区版本和商业版,简化了 Apache Druid 的部署 搭建准备 ① 环境准备 3 台云服务器 + 1 台云数据库 Mysql ( 5.7 ) 节点 node

半吊子Kyle的博客 882

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

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Apache Druid (incubating) 安装及使用

主要对Druid进行了简要的介绍,包括概念和架构,以及常见的问题。接着以Single-service的方式自定义配置进行了部署和安装,以及对安装的后的Druid的简要使用

Yore - Home 8077

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Druid集群配置

一、默认端口 二、集群配置思想 (一)本集群有五个节点(master, slave1,slave2,slave3,slave4),节点安排情况如下: master节点:Mysql server, coordinator node, overlord node  slave1节点:   historical node, middleManager node slave2节点

thinkhui的专栏 9061

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Apache Druid单机环境搭建及基本使用

Apache Druid是一个实时分析型数据库,旨在对大型数据集进行快速的查询分析。Druid最常被当做数据库来用以支持实时摄取、高性能查询和高稳定运行的应用场景。

积跬步,至千里。 2523

Druid集群安装使用

Druid集群安装使用V0.1 1、版本及环境 Druid有开源版本,也有商业版本。 商业版本是Druid的主要创始人出来做的公司,旨在推动Druid社区的快速发展,目前来看Druid的社区非常活跃。 本文采用Druid的商业发行版本进行安装,即采用imply发布的包进行安装。 为了减少文章篇幅,我们假设您有三台物理机(虚拟机),且完成了以下准备工作: 安装CentOS7操作系统,配置网络、各节...

weixin_34380781的博客 1525

druid集群搭建

一、基础环境 cdh5.14.0 Hadoop 2.6.0+cdh5.14.0+2715 HDFS 2.6.0+cdh5.14.0+2715 ZooKeep...

507

实时数仓-Druid 集群搭建

集群规划 节点类型 主机名 数量 描述 主节点 hadoop01 1 包括一个 Coordinator 和一个 Overlord进程 数据节点 hadoop02,hadoop03 2 分别包括一个 Historical 和一个 MiddleManager进程 查询节点 hadoop04 1 包括一个 Broker 和一个 Router进程 一般为了防止单点,生产上需要部...

一只破碗 1137

Apache Druid集群安装

Druid集群版安装有以下几步: 安装jdk 安装zookeeper 安装Hadoop 安装Kafka 安装MySQL 安装Druid 下面详细介绍每一步的安装过程。安装Druid集群需要提前关闭防火墙。 1、安装jdk jdk的安装过程比较简单,但是需要在所有节点安装。 1、上传tar包到指定位置,解压 tar -zxvf jdk1.8.0_121.tar.gz 2、修改...

qq_35542970的博客 886
上一篇: druid的核心成员成立了一个叫imply.io的公司。我就直接下载了imply.io。
下一篇: openTSDB日志配置
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值