学习mysql4.1的空间数据库特性(1)

MYSQL-创建数据库 CREATE DATABASE (十一) MYSQL创建数据库语法 CREATE DATABASE 阅读详情

06年10月16日

需求:公司现在gis系统有大量的经纬度坐标,都是车辆行驶几个月采集过来的坐标。现在在做区域搜索功能(就是在上个月某个时间内车辆在哪里行驶)。因为现在数据库单个车辆的经纬度坐标太多,所以搜索起来非常慢(让人忍受不了的速度),随着时间的推移,可能搜索起来会越来越慢,所以公司决定考虑使用mysql的空间数据库特性。把经纬度坐标都转移到成空间数据库坐标. 

公司使用mysql4.1.2,

 

参考资料:

官方中文资料: http://dev.mysql.com/doc/refman/5.1/zh/spatial-extensions-in-mysql.html#gis-class-polygon

 

说明:这是本人学习mysql的空间数据库特性时候解决的一些问题和和对一些问题的看法,肯定有错误的地方,希望看到这篇文章的朋友能够多多指教,给我留言。

 

大致需要解决的问题如下:

1 空间数据库怎么样存储经纬度坐标?

2 现有的经纬度坐标如何转换成空间数据库的经纬度坐标?

3 如何查询空间数据库里面的数据?

 

 

 

先来解决第一个问题!

This section describes the standard spatial data formats that are used to represent geometry objects in queries. They are:

  • Well-Known Text (WKT) format
  • Well-Known Binary (WKB) format

Internally, MySQL stores geometry values in a format that is not identical to either WKT or WKB format.

(通常用来表示几何物体的空间数据格式有2种一种是WTK格式,一种是WKB格式。)

 

WTK格式存储几何物体的一些例子

Examples of WKT representations of geometry objects:

  • A Point:

·         POINT(15 20)

Note that point coordinates are specified with no separating comma.

  • A LineString with four points:

·         LINESTRING(0 0, 10 10, 20 25, 50 60)

Note that point coordinate pairs are separated by commas.

  • A Polygon with one exterior ring and one interior ring:

·         POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))

  • A MultiPoint with three Point values:

·         MULTIPOINT(0 0, 20 20, 60 60)

  • A MultiLineString with two LineString values:

·         MULTILINESTRING((10 10, 20 20), (15 15, 30 15))

  • A MultiPolygon with two Polygon values:

·         MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))

  • A GeometryCollection consisting of two Point values and one LineString:

·         GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

 

 

WKB格式存储的一些例子

The Well-Known Binary (WKB) representation for geometric values is defined by the OpenGIS specification. It is also defined in the ISO SQL/MM Part 3: Spatial standard.

WKB is used to exchange geometry data as binary streams represented by BLOB values containing geometric WKB information.

WKB uses one-byte unsigned integers, four-byte unsigned integers, and eight-byte double-precision numbers (IEEE 754 format). A byte is eight bits.

For example, a WKB value that corresponds to POINT(1 1) consists of this sequence of 21 bytes (each represented here by two hex digits):

0101000000000000000000F03F000000000000F03F

The sequence may be broken down into these components:

Byte order : 01

WKB type   : 01000000

X          : 000000000000F03F

Y          : 000000000000F03F

Component representation is as follows:

  • The byte order may be either 0 or 1 to indicate little-endian or big-endian storage. The little-endian and big-endian byte orders are also known as Network Data Representation (NDR) and External Data Representation (XDR), respectively.
  • The WKB type is a code that indicates the geometry type. Values from 1 through 7 indicate Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, and GeometryCollection.
  • A Point value has X and Y coordinates, each represented as a double-precision value.

WKB values for more complex geometry values are represented by more complex data structures, as detailed in the OpenGIS specification.

 

MySQL Spatial Data Types (mysql的空间数据格式)

MySQL has data types that correspond to OpenGIS classes. Some of these types hold single geometry values:

  • GEOMETRY
  • POINT
  • LINESTRING
  • POLYGON

GEOMETRY can store geometry values of any type. The other single-value types (POINT, LINESTRING, and POLYGON) restrict their values to a particular geometry type.

The other data types hold collections of values:

  • MULTIPOINT
  • MULTILINESTRING
  • MULTIPOLYGON
  • GEOMETRYCOLLECTION

GEOMETRYCOLLECTION can store a collection of objects of any type. The other collection types (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, and GEOMETRYCOLLECTION) restrict collection members to those having a particular geometry type.

 

 

现在两种空间数据的存储格式大致已经知道了,mysql的空间数据类型也清楚了。

 

现在猜想第二个问题解决的大致过程是!

 

15,20  转换成  标准空间格式(wtk) poing(15,20)    然后再用mysql函数转换到  mysql的空间数据列中。

 

现在实现看看

 

1 先在test数据库里添加一个支持空间数据列的表geom.

CREATE TABLE geom (g GEOMETRY);

但这里出现一个问题:The storage engine for the table doesn’t support GEOMETRY

大致意思:就是这个表的存储引擎不支持GEOMETRY列,查了下文档,‘spatial columns are supported only for MyISAM tables.’看到如上一句话。但是mysql默认表存储引擎应该是MyISAM,照理说应该直接支持。先不管它,直接指明表的engine = MYISAM.这样就创建成功了

 

 

2 在geom表里添加可以存储point类型数据

ALTER TABLE geom ADD pt POINT;

 

3 向point列添加标准的空间数据

 

4 数据已经存进去了,只要把它去出来,第三个问题也就解决啦!

 

这是从mysql的空间数据列中取出标准的wtk格式空间数据的函数AsText().

 

存储读取三个问题解决了!接下来自由发挥了!

 

 

06年10月18日

4 如何判断已有的经纬度点在某一区域内?

 

在mysal4.1官方的文档找到下列函数,应该就是解决问题4的

Relations on Geometry Minimal Bounding Rectangles (MBRs)

MySQL provides several functions that test relations between minimal bounding rectangles of two geometries g1 and g2. The return values 1 and 0 indicate true and false, respectively.

  • MBRContains(g1,g2)

Returns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1 contains the Minimum Bounding Rectangle of g2.

mysql> SET @g1 = GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');

mysql> SET @g2 = GeomFromText('Point(1 1)');

mysql> SELECT MBRContains(@g1,@g2), MBRContains(@g2,@g1);

----------------------+----------------------+

| MBRContains(@g1,@g2) | MBRContains(@g2,@g1) |

+----------------------+----------------------+

|     1 |                    0 |

+----------------------+----------------------+

  • MBRDisjoint(g1,g2)

Returns 1 or 0 to indicate whether the Minimum Bounding Rectangles of the two geometries g1 and g2 are disjoint (do not intersect).

  • MBREqual(g1,g2)

Returns 1 or 0 to indicate whether the Minimum Bounding Rectangles of the two geometries g1 and g2 are the same.

  • MBRIntersects(g1,g2)

Returns 1 or 0 to indicate whether the Minimum Bounding Rectangles of the two geometries g1 and g2 intersect.

  • MBROverlaps(g1,g2)

Returns 1 or 0 to indicate whether the Minimum Bounding Rectangles of the two geometries g1 and g2 overlap.

  • MBRTouches(g1,g2)

Returns 1 or 0 to indicate whether the Minimum Bounding Rectangles of the two geometries g1 and g2 touch.

  • MBRWithin(g1,g2)

Returns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1 is within the Minimum Bounding Rectangle of g2.

mysql> SET @g1 = GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');

mysql> SET @g2 = GeomFromText('Polygon((0 0,0 5,5 5,5 0,0 0))');

mysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);

+--------------------+--------------------+

| MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) |

+--------------------+--------------------+

|    1 |                  0 |

+--------------------+--------------------+

 

现在我需要的功能是查找一辆车在某一段时间内是否在一段区域内经过,用点来说明的话,就是一个空间坐标点在一个特定时间段内是否包含在一个特定的矩形区域内。下面这个函数应该能达到这个功能:

  • MBRWithin(g1,g2)

Returns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1 is within the Minimum Bounding Rectangle of g2.

 

 

晕,突然发现官方有中文的文档,不用看洋文了!!!

http://dev.mysql.com/doc/refman/5.1/zh/spatial-extensions-in-mysql.html#gis-class-polygon

 

 

下面是文档中解决问题4的方法。

 

在geom有6个点,现在构造一个Polygon((2.1 2.1,2.1 3.1,2.1 3.1,3.1 3.1)),判断是否有点包含在Polygon里,下面是实现过程。

按照判断应该有Point(3 3)应该包含在Polygon内。但是实际情况确实空集。出什么问题了呢?见下图。

 

 

查看Polygon的定义,查找原因。

 

YES!Polygon的外部边界(即第一参数)应该是封闭的。而我在上面构造的矩形只是我莫须有想出来的,不符合Polygon的规范

下面再实验下。

06年10月18日(晚)

我需要解决的问题中只需要矩形这个几何体,而在OpenGIS的Geometry Model的二维矩形表示用不带孔的Polygon就行了。Polygon是二维对象Surface的子类。

上图中的Polygon含有一个孔.

如果要构造一个矩形,只要构造一个没有孔的封闭四边形的Polygon。

带一个孔的Polygon的表示

 

看到上面的Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))’;(Polygon第一个参数是外部边界,第二个或者[第三个,第四个]都是Polygon里面的孔)

0 0,0 3,3 0,0 0围成的图形是是一个三角形,中间有一个孔(相当于被挖空的一块),也是三角形(1 1,1 2,2 1,1 1))(在纸上画下就知道了)

通过面积也可以知道孔是被挖掉的(3*3/2-1*1/2=4);

我现在要构造一个不带孔的矩形

 

那现在要构造一个矩形就简单的多了

呵呵算一下面积正好是矩形的面积。那跟预想的一样。

 

现在矩形也有了,点也有了,我们用mysql提供的函数来实际解决下问题4吧。

(具体的函数见mysql4.1文档的空间数据库特性那节,现在mysql4.1只提供MySQL提供了一些可测试两个几何对象g1和g2最小边界矩形之间关系的函数。

OpenGIS规范定义了下述函数。目前在MySQL尚未按照规范实施它们。对于那些已实施的函数,它们返回的结果与对应的基于MBR的函数返回的相同。包括下面列出的函数,但Distance()和Related()除外。

在未来的版本中,可能会实施这些函数,为空间分析提供全部支持,而不仅仅是基于MBR的支持。)

 

我们用到的函数有2个:

  • MBRContains(g1,g2)

返回1或0以指明g1的最小边界矩形是否包含g2的最小边界矩形。

  • MBRWithin(g1,g2)

返回1或0以指明g1的最小边界矩形是否位于g2的最小边界矩形内。

 

 

 

现在表中有6个点

我们来构造一个矩形。

现在来用MBRContains(g1,g2)测试下这个矩形包含了哪些点

返回了,和预想的一样:P

再来测试下MBRWithin(g1,g2)函数

呵呵,OK!

看上面的两张图也可以看出MBRContains和MBRWithin的区别了

两个函数的区别在于参数, 只要把 (第一个参数 + 函数名 + 第二个参数) 读出来读的通就行了,很好记忆。这不也正是SQL的优点吗~~~

至此,第四个问题也解决了!

 

 

 

MYSQL-修改数据库 ALTER DATABASE (一) MYSQL修改数据库 ALTER DATABASE 阅读详情

相关推荐

别再套用星形公式了!三角形接法PMSM的FOC控制,扇区判断与作用时间推导全解析

本文深入解析三角形接法永磁同步电机(PMSM)的FOC控制技术,重点探讨30度相位差对SVPWM扇区判断与电压矢量作用时间的影响。通过数学推导与实验验证,详细讲解修正后的扇区划分规则、作用时间计算公式优化方法,并提供可直接移植到STM32的代码实现,帮助工程师解决三角形接法特有的相电流重构与同步采样难题。

weixin_30689307的博客 468

Python绘制数据地图-GeoPandas使用要点

本文主要介绍GeoPandas的使用要点。GeoPandas是一个Python开源项目,旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型,并使用matplotlib进行绘图。GeoPandas官方仓库地址为:GeoPandas[1]。GeoPandas的官方文档地址为:GeoPandas-doc[2]。本文主要参考GeoPandas Examples Gal...

Python数据之道 8238

ECC密码的加密和解密(附带代码实现)

ECC,全称Elliptic Curve Cryptography,是椭圆曲线密码学。这是一种公钥加密技术,其安全性基于椭圆曲线离散对数问题,被广泛应用于信息安全领域。ECC的主要优势在于,相较于RSA和DSA等其他传统的公钥密码体系,它能够在提供相同安全级别的情况下,使用更短的密钥,从而减少计算量和存储空间的需求。例如,一个256位的ECC密钥提供的安全性可以与3072位的RSA密钥或DSA密钥相媲美。ECC的主要应用领域包括SSL安全证书、安全电子邮件、移动设备安全、物联网设备安全等。

xixixi7777的博客 8269

mysql mbr contains_当mbrcontains()等于true时,mysql空间索引不起作用?

我有一个SQL查询,它似乎产生了正确的结果,但是根据EXPLAIN没有使用空间索引,因此返回所有行所需的时间要长得多。SELECT * FROM listings2WHERE MBRContains( GeomFromText('POLYGON((32.653132834095 -117.40548330929, 32.653132834095 -117.06151669071, 32.94...

weixin_29917533的博客 1328

OpenHarmony 4.1/5.0 Beta上手:如何用ArkUI在非华为设备上开发你的第一个“鸿蒙”应用

本文详细介绍了如何在非华为设备上使用ArkUI开发OpenHarmony应用,涵盖从设备选型、环境搭建到应用部署的全流程。通过实战案例展示ArkTS语言在开源鸿蒙生态中的应用,帮助开发者突破设备限制,构建跨平台鸿蒙应用。

weixin_33704234的博客 365

在Proteus中用80C51模拟4线SPI点亮OLED屏幕

在Proteus里用80C51模拟4线SPI控制OLED屏幕使其显示图案(汇编实现)。

Connor3093的博客 5002

.postgresql读取geom字段为geojson或者wtk

1.postgresql中geometry格式字段怎么转换成geojson格式-Java https://blog.csdn.net/xue_tiger/article/details/1065600102.SQL:postgresql中,将geometry转换为geojson数据 https://blog.csdn.net/KaiSarH/article/details/1126287073.PostgreSQL创建空间数据库并创建含有geometry类型的表 https://blog.csdn.net/

江河键行的博客 1198

【03】海康MVS V4.3.0 ——安装教程、查看示例、库、头文件、开发指南

海康威视MVS机器视觉软件安装与使用指南:首先从官网下载MVS 4.3.0安装包,默认设置完成安装。安装后可在Development目录查看示例代码、开发文档及头文件,支持C++/C#/Python等多语言开发。软件内置虚拟相机功能,通过工具菜单添加虚拟设备后即可模拟真实相机操作,支持中英文界面切换、参数调节(曝光/增益等)及图像采集功能。虚拟相机虽仅能显示预设图像,但完整保留了参数调节功能,适合开发者进行功能测试。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 3305

基于JTS实现对空间绘图的WTK语言标记

在项目中用到在地图上绘图进行区域标记,为了便于存储这些区域的绘图信息,以及方便其他GIS工具识别,于是采用WTK标记语言作为空间图形存储,可以方便地将点、圆、多边形的经纬度转成可识别的字符串存储到数据库中,以及从数据库中读取这些数据,转换成经纬度上图。 需要用到的jar包 gt-api-19.1.jar gt-main-19.1.jar gt-metadata-19.1.jar gt-re...

Coding Road 891

DISM错误87详解:RestoreHealth选项无法识别的修复方法

DISM(部署映像服务和管理工具)是Windows系统维护与修复的核心命令行工具,常与SFC(系统文件检查器)配合使用,用于扫描和修复组件存储损坏、系统文件缺失等问题。在执行系统健康检查时,用户常会遭遇错误87,提示“未在此上下文中识别出restorehealth选项”。该错误的本质并非工具损坏,而是命令参数结构不符合DISM的语法解析规则,或当前系统环境(如Windows 7、WinRE/PE、32位环境)不支持该参数。理解DISM的命令层级、参数挂载关系以及运行上下文,是精准排除故障的前提。通过核对标准

weixin_34116482的博客 468

STM32CubeMX | 38-使用硬件SPI驱动以太网模块(W5500)

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与以W5500通信,驱动以太网模块。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): W5500以太网模块 这里我使用常见的以太网模块W5500: W5500官网 http://www.w5500.cn/ W5500中文手册 iEthernet W5500 Datasheet 软件准备 需要安装好Keil - MDK及芯片对应的包,以

Mculover666的博客(嵌入式) 7387

mysql 空间查询_MYSQL空间查询函数

数据写入插入时使用ST_GeomFromText,也可使用GeomFromTextINSERT INTOt_customers ( lon_lat_point )VALUES( GeomFromText ('POINT(123 123)' ) )查询数据查询空间数据SELECTastext ( lon_lat_point )FROM`t_customers`空间查询函数包含相关MBRContain...

weixin_39887183的博客 420

在Centos上从零开始部署并运行TinyWebServer服务器,过程记录(非常详细)

TinyWebServer是个什么项目?它是Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器。使用线程池+非阻塞socket+epoll(ET和LT均实现) +事件处理(Reactor和模拟Proactor均实现) 的并发模型使用状态机解析HTTP请求报文,支持解析GET和POST请求访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件实现同步/异步日志系统,记录服务器运行状态。......

AnChenliang_1002的博客 3021

学习mysql4.1的空间数据库特性(2)

学习mysql4.1的空间数据库特性(2) PS:由于一边上班一边记录测试数据,所以可能乱糟糟的,如果有朋友看了,看见错误留个言给我,谢了。在mysql4.1的空间数据库特性(1)里已经把几个基本的问题解决了:如何存储空间数据。如何读取空间数据。需要用到哪些的mysql的空间数据特性和函数。(要到到1 用于在各种格式间转换几何值的函数。3 描述两种几何值

飞羽飞の猪の博客 1905

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

5、MySQL修改数据库:ALTER DATABASE用法简介

在 MySQL 数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。下面我们来介绍一下修改数据库的基本操作。 在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ DEFAULT ] COLLATE <校对规则名>} 语法说明如下: A

you can you up up up的博客 2710

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MySQL之修改数据库(ALTER DATABASE用法简介)

语法 数据库建立以后我们也是可以进行修改的,我们可以使用ALTER DATABASE或 ALTER SCHEMA 语句来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ DEFAULT ] COLLATE <校对规则名>} ALTE...

qq_38523616的博客 3226

SAP B1中文培訓教材_SDK

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

mysql alter database_MySQL修改数据库:ALTER DATABASE用法简介

在MySQL数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。下面我们来介绍一下修改数据库的基本操作。在 MySQL 中,可以使用ALTER DATABASE来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:ALTER DATABASE [数据库名] {[ DEFAULT ] CHARACTER SET |[ DEFAULT ]...

weixin_35084134的博客 2393

MySQL修改数据库:ALTER DATABASE用法简介

数据库创建好后也是可以修改的,下面我们来介绍一下修改数据库的基本操作 基本语法 在 MySQL 中,可以使用 ALTER DATABASE 或 ALTER SCHEMA 语句来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ D...

MYSQL安装教程 2077

数据仓库和数据库的区别

本文主要介绍数据仓库和数据库的区别,首先描述下数据仓库是什么: 数据仓库的本质还是一个数据库,它将各个异构的数据源数据库的数据给统一管理起来,并且完成了质量较差的数据的剔除、格式转换,最终按照一种合理的建模方式来完成源数据组织形式的转变,以更好的支持到前端的可视化分析。 数据仓库中主要存储的是结构化的数据,但是它的来源可以是多种类型的数据来源(结构化、半结构化、非结构化),中间需要一个ETL过程。 一、用途 数据库:主要用于事务处理,即OLTP(Transaction),也就是我们常用的面向业务的增删改查操

啥也不是 2万+

MySQL数据库操作-修改数据库 (ALTER DATABASE)

在 MySQL数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。下面来介绍一下修改数据库的基本操作。 修改数据库 在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> |[ DEFAULT ] COLLATE <校对规则名>} 语法说明如下:

Johnny's Lab 6970

MySQL9.1.0 新特性

--- 以下信息转自 微信公众号“MySQL数据库联盟”MySQL 创新版9.1.0 于2024年10月15日正式发布。详细的信息请查看 https://dev.mysql.com/doc/refman/9.1/en/atomic-ddl.html审计日志将名称不以字母数字字符(如“$foo”)开头的用户视为无效用户,尽管 MySQL 服务器允许创建此类用户。当同时使用 DISTINCT 时,在某些情况下,对于相同的值,SUM() 会产生不同的结果。

bayaim的博客 2万+

java 读取db3 数据库_db4o(db3文件是什么数据库)

您好,db4o 几乎无法对应于现有的 Oracle、SQLServer 或 DB2!完全正确。相比之下,db4o 更适合于 MySQL 或 HSQL,这使其对于大量项目来说已经足够。更为重要的.一、Access 数据类型有些另类,而且密码太容易被攻破,性能不高,只能用在. 八、DB4O 面向对象的数据库,使用DB4O无需ORM工具就可以直接进行对象存储。支持.以下是代码片段:Book book =...

weixin_33393017的博客 1367
上一篇: 小故事
下一篇: 孤猪的AJAX学习日记(持续更新)
飞羽飞之猪
博客等级 码龄21年 127粉丝 85原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值