IOS EMShop项目小结 (未完待续)

VLOOKUP_fixed.py 立即下载

SVN资源修改后删除所有 .svn 相关信息方法:

      find ./ -name ".svn" -exec rm -r {} \;


1:XMLParse 第三方库

 

    谷歌的GDataXMLNode.h 和 GDataXMLNode.m 文件; 网上有很多这方面的介绍,就无需多言了。

     但是我们的项目需要,需要对其进行简单的修改,就是交换两个节点数据以及忽略节点的大小写敏感,这

    是该类所不支持的,所以对代码做了一些小修改,不过对于属性名大小写不敏感还不知道怎么修改,有知

    道的朋友请赐教,谢谢先,下面是我对代码做的小修改:

 

在GDataXMLNode.h 文件中加入一个 replaceChild 函数:

 

@interfaceGDataXMLElement :GDataXMLNode

 

- (id)initWithXMLString:(NSString*)str error:(NSError **)error;

 

- (NSArray *)namespaces;

- (void)setNamespaces:(NSArray*)namespaces;

- (void)addNamespace:(GDataXMLNode*)aNamespace;

 

// addChild adds a copy of the child node to theelement

- (void)addChild:(GDataXMLNode*)child;

- (void)removeChild:(GDataXMLNode*)child;

- (void)replaceChild:(GDataXMLNode*)old cur:(GDataXMLNode*)cur;//add by me

 

在GDataXMLNode.m文件中加入其实现代码:

 

- (void)replaceChild:(GDataXMLNode*)old cur:(GDataXMLNode*)cur{

    assert([oldkind] !=GDataXMLAttributeKind&& [curkind] != GDataXMLAttributeKind);   

   

    if (xmlNode_!=NULL&& cur != NULL && old!=NULL) {

       

        [selfreleaseCachedValues];

            

        xmlNodePtroldNode = [oldXMLNode];

        xmlNodePtrcurNodeCopy = [curXMLNodeCopy];

        if(curNodeCopy) {

           

            xmlNodePtrresultNode =xmlReplaceNode(oldNode, curNodeCopy);

            if(resultNode ==NULL) {

                

               // failed to add

               xmlFreeNode(curNodeCopy);

               

           } else {

               // added this child subtree successfully; see if it has

               // previously-unresolved namespace prefixes that can now befixed up

               //[[self class] fixUpNamespacesForNode:curNodeCopy

                                  //graftingToTreeNode:xmlNode_];

           }

        }

    }

}

 

调用端结点位置交换代码实现:

 

    GDataXMLElement*pos1Ele = (GDataXMLElement*)[arrGroupobjectAtIndex:pos1];

       GDataXMLElement*pos2Ele = (GDataXMLElement*)[arrGroupobjectAtIndex:pos2];

      [rootElement replaceChild:pos1Ele cur:pos2Ele];

       [rootElement replaceChild:pos2Elecur:pos1Ele];

 

忽略结点大小写敏感的代码修改(结点属性名的大小写忽略不知道怎么改,有知道的朋友请赐教)

-    (NSArray*)elementsForName:(NSString *)name {

*   ****

       // if ([qName isEqual:name]){ //deleteit

                             if(NSOrderedSame==[qNamecompare:nameoptions:NSCaseInsensitiveSearch]){//add

 

 

中文出现乱码问题:

              就是在创建GDataXMLDocument之后马上调用其setCharacterEncoding这个函数,参数随便,库代码中没有对其处理,内部代码硬编码为UTF8String

staticxmlChar*GDataGetXMLString(NSString *str) {

    xmlChar*result = (xmlChar *)[strUTF8String];

    returnresult;

}

 

 

二:AFNetWorking 第三方网络库

0:为了方便;在工程的 –Prefix.pch文件中添加 #import"AFNetworking.h"

1:首先阅读下载的文档 readme.md文件。

2:  常用的使用方式在readme.md文件中都有描述,在这里提一下在使用该类库所遇到的一些问题。

*  :下载进度处理,需要将信息返回给UI,如何发送一个异步通知:

    dispatch_async(dispatch_get_main_queue(),^{

          /* handle */ //注意这段代码就是主线程来执行了(每个线程有其自己的数据栈)

       });

3: JSON数据返回问题:

    NSStringweatherUrl= @http://**”;

   

    NSURL*url = [NSURLURLWithString:weatherUrl];

    NSURLRequest*request = [NSURLRequestrequestWithURL:url];

   

    //[AFJSONRequestOperation addAcceptableContentTypes:[NSSetsetWithObject:@"text/html"]];

    AFJSONRequestOperation*operation =

    [AFJSONRequestOperationJSONRequestOperationWithRequest:request

        success:^(NSURLRequest*request,NSHTTPURLResponse *response,idJSON) {

NSLog(@"JSONRequestOperationWithRequestok, %@", [JSONdescription]);

        } failure:^(NSURLRequest*request,NSHTTPURLResponse *response,NSError*error,id JSON)  

                   {

          NSLog(@"failreason=%@", error.description);

        }];

     [operationstart];

在MRR 有 storyboard 的情况下将该上述代码放在 viewDidLoad中可以正常返回,

但是将上述代码放在MRR 但是没有 storyboard 的代码里面,在AFURLConnectionOperation里面下属代码就出现了错误。

+ (void)networkRequestThreadEntryPoint:(id)__unusedobject {

    do {

        @autoreleasepool {

           [[NSRunLoopcurrentRunLoop]run];//EXC_BAD_ACCESS (code=1, address=0xb06a9806)

        }

    } while (YES);

}

有时候还有返回 code 1061 错误:

Code=-1016 "Expected content type {(     "text/json",     "text/javascript",     "application/json")}, got text/html"

网上找了很多资料都是说:

[AFJSONRequestOperationaddAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];

加上这么一行代码,但是我发现并不可以。不知道是为什么,后来一同事帮我用下面的方法实现json数据返回:

NSString(资源网址)->NSURLàNSData(json数据的二进制格式)—》NSJSONSerializationà返回可读的json数据格式:

 

NSString* reqURlString= stringUrl;

[FeixinEmShopgetInstance]_baseUrl],[versionstringValue]];

    NSURL*url = [NSURLURLWithString:reqURlString];

    NSData*jsonData = [[NSDataalloc]initWithContentsOfURL:url];//最重要的就是这个

    if(nil ==jsonData)

    {

        NSLog(@"error-theexpect result can't be responsed causing for the error url or nonstandard jsonformat, the url is %@", reqURlString);

        return ;

    }

    NSDictionary*dic;

    dic=  [NSJSONSerializationJSONObjectWithData:jsonDataoptions:NSJSONReadingMutableLeaveserror:nil];

    NSLog(@"%@",dic);

 

三:ZipArchive库

解压代码:如果dstPath没有创建,该库会自动创建, dstPath文件如果已经存在,overWrite:YES执行文件夹覆盖操作,文件会被重命名为后缀为_bak的文件名。

 

+(BOOL) unzip:(NSString*)dstPath:(NSString*)srcPath

{

    //实现解压操作

    assert(srcPath!=nil&& dstPath!=nil);

    ZipArchive* zip = [[ZipArchivealloc]init];

    if( [zipUnzipOpenFile:srcPath] )

    {

        BOOL ret = [zipUnzipFileTo:dstPathoverWrite:YES];

        if(NO==ret )

        {

            returnNO;

        }

        [zip UnzipCloseFile];

    }

    [zip release];

    returnYES;

}

 

四:IOS 文件读写

*在ios里面有一个沙盒的概念。

*Bundle是什么?

              Bundle其实就是资源,但是他是只读的。也就是存放在 {工程名}.app/{资源}

*每个app对应一个自己的Documents, 这里面可以存放网络上下载的资源。

 

本地html文件访问:

              NSURLfileURLWithPath:@http://**”;

网络html文件访问:

              [NSURLalloc]initWithString:@http://**”;

 

*获取应用程序的Documents目录方法:

+(NSString*)getDocumentDirectory

{

    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];

}

 

*读取Bundle文件目录方法:

NSString* srcAppPath= [[NSBundlemainBundle]bundlePath];

 

*创建目录,创建文件

[[NSFileManagerdefaultManager]createDirectoryAtPath:newDir];

[[NSFileManagerdefaultManager]createFileAtPath:newFile]

*删除目录或文件

[[NSFileManagerdefaultManager]removeItemAtPath:filePath/dirPath];

 

 

五:NSString常用方法 (包含本地文件及网络文件路径解析部分)

 

六:UIWebView 与 Javascript之间通信

          

七:网络优化方案

           通过将本地资源打包+资源自升级完成不常用资源的自动更新,实现本地资源的快速更新显示,对于动态经常变化的资源使用网络请求,改善用户体验。

 

八:中间考虑的问题:

1:页面切换——客户端通过UIWebView与页面交互,数据状态的考虑。

2:页面加载阶段与客户端对应控制时机:

主要有两个,页面首次加载及加载完成后注入javascript。

对因的就是UIWebView的UIWebViewDelegate的

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

 

完成加载:

-    (void)webViewDidFinishLoad:(UIWebView*)webView

 

 3:进程间通信

             当一个进程进入后台后,是否还能有能力获取到通知;

             通过 URL Schema方式,进程间通信是否与数据量大小限制

 

   4: 文件的访问控制

   5: 版本发布是否能通过apple的审核,开发时需要注意什么?

   6:用户体验

*  多线程下载,断点续传,分页加载

*  网络加载改成本地资源加载

*  图标对于非透明图片将png改成jpg格式,png比jpg多了一份通道数据。

*  减少http连接请求,在网络状态不好的情况下,真机上需要占用4~5秒甚至更长的时间。

尽可能返回更多的数据。

*  对资源加密,下载后对资源解密,减少资源下载所需要的时间

*  用户对于非必要资源下载占用流量的考虑

             

   7:资源的md5加密。


YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip 附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载

相关推荐

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

iosem.us app install nds.html,夭寿啦!用NDS4iOS无需越狱即可在iOS玩NDS游戏

任天堂的NDS是不少人曾经的童年回忆,而通常我们想要在 iOS 设备上玩 NDS 的游戏可能就只有借助越狱插件了。不过有不少 NDS 的模拟器插件在 iOS 8 时代已经在 Cydia 下架,更别提在 iOS 9 上玩任天堂的游戏了。不过近日传来了一则好消息,一款著名的任天堂模拟器-NDS4iOS 目前已经支持 iOS 9.0-9.2,而且不需要设备进行越狱。1.打开 Safari,访问http:...

weixin_35897479的博客 2818

1、STVD和STVP的使用及串口烧写程序教程

文章目录一、前述二、STVD的使用三、STVP的使用1、STVP的作用:2、STVP的使用四、串口烧录程序 一、前述 STVD是意法半导体推出的,可以支持STM8和STM32 而IAR不尽如此,还支持51,MSP430等芯片 软件开发环境:编写程序,调试软件功能,下载固件到单片机中 硬件开发环境:连接外围电路,驱动功能外设,实现电气功能 最终构成一个以STM8系列单片机作为控制核心的应用系统。 MCS-51 一般的开发环境是 IAR 和 Keil STM8 一般的开发环境是 IAR 和 ST

Clichong 1万+

【iOSXML解析】之:GDataXMLNode方法解析案例

1.首先得包含该文件。 2.在build phases 中包含 libxml2.dylib库。 3.build settings 设置 header search paths:  ${SDK_DIR}/usr/include/libxml2 4.xml文件放在supporting files 文件下 "1.0" encoding="utf-8"?>     i

xuqiang918的专栏 4257

基于MySQL的京东用户行为分析

对京东用户行为的分析,利用AARRR模型进行分析。

SelenaSelena的博客 1909

STM32F103中GPIO_Remap1_CAN1与GPIO_Remap2_CAN1的配置差异与应用场景解析

本文深入解析了STM32F103中GPIO_Remap1_CAN1与GPIO_Remap2_CAN1的配置差异与应用场景。通过剖析AFIO_MAPR寄存器,明确了两者在引脚映射(PB8/PB9 vs PD0/PD1)和适用封装上的区别,并提供了详细的配置步骤、常见陷阱排查及基于项目需求的选型指南,帮助开发者高效完成CAN引脚重映射。

u6v7w8x的博客 394

数据解析(二)解析XML之GDataXMLNode

GDataXMLNode是Google提供的用于XML数据处理的类集。该类集对libxml2-DOM处理方式进行了封装,能对较小或中等的XML文档进行读写操作且支持XPath语法。 获得GDataXMLNode.h和GDataXMLNode.m文件,进行如下操作将文件导入到Xcode的工程中:     1. 将GDataXMLNode.h/m文件添加到工程中;     2. 向工

iOS界@迷糊小书童 3586

基于分数阶傅里叶变换的chirp信号检测与参数估计(原理附代码)

线性调频信号(chirp信号) 顾名思义,该信号的频率随着时间线性变换,其复数表达形式如下: s(t)=e2jπ(f0t+0.5μt2)s(t)=e^{2j\pi(f_0 t+ 0.5\mu t^2)}s(t)=e2jπ(f0​t+0.5μt2) 根据欧拉公式,其相位项为2π(f0t+0.5μt2))2\pi(f_0 t+ 0.5\mu t^2))2π(f0​t+0.5μt2))。信号的角频率是相位对时间的导数。对相位求导后有2π(f0+μt)2\pi(f_0+\mu t)2π(f0​+μt),显然,f0f

weixin_42845306的博客 1万+

GDataXML解析XML

GDXM下载地址http://download.youkuaiyun.com/detail/zjcxy3150/4660938 找到Search Paths段,在Header Search Paths设置值为:/usr/include/libxml2 找到Linking段,在Other Linker Flags设置中填上:-lxml2

geeklyc 501

(R,线性回归)R语言里的模型诊断图(Residuals vs Fitted,Normal QQ , Scale-Location ,Residuals Leverage)

线性回归,是概率统计学里最重要的统计方法,也是机器学习中一类非常重要的算法。线性模型简单理解非常容易,但是内涵是非常深奥的。尤其是线性回归模型中的Diagnostics plot的阅读与理解一直被认为是线性回归中的一个难点。 在任何线性模型中,能够直接“lm”(模型有意义),既要考虑各个参数的t-test所得出的p-value,也要考虑总体模型F-检验得出的p-value。在这之后,还要清楚一个...

qq_35837578的博客 7万+

centos7下安装gcc-10.3.0

生成多个系统版本的代码,如果你的操作系统是32位,默认就已经设置为 disable,这时gcc仅能生成32位的可执行程序;这里只开启了c,c++ 和fortran,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。启用posix标准的线程支持,这个设置取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。指定安装路径,这里没有指定,就直接放到文件夹里就好。

lxystar2003的博客 1189

iOS 技术面试问题小集(以后…

来到深圳准备面试,就在各个论坛和博客上收集了一些技术面的小问题,以后看到会续增补充滴~~~ 1.搞清楚touch事件的传递(事件的响应链) 事件的响应(responder chain) 只有继承了UIResponder的类才能响应touch事件,从上图的响应者链可以看出,优先是最上层的view响应事件,如果该view有视图控制器的话会是下一个响应者,否者就是该view的父视图,这样至上而

DreamHeaven 1613

Buck电源设计常见的一些问题(五)MOS管振荡抑制方法(三)

关于开关节点振荡的产生机制和抑制问题,总结了三种抑制方法。第一种方法是利用输入端的高频去耦电容;第二种方法是设计 RC 缓冲电路;第三种方法是优化自举电路的串联电阻。以上三种方法均通过实验加以验证,对开关节点振荡具有很好的抑制作用。应该综合同步 Buck 变换器的各项指标权衡设计。

小幽余生不加糖 1633

造成IOS程序崩溃的几种可能的原因

随着项目的开发进行,对于ios程序崩溃及解决方法有一定的认识,现总结如下: 1:@selector提供的选择器未定义,运行时造成程序崩溃。 2:程序中父类对象已销毁,但后续操作还在使用其子对象。 3:多次release,造成对象引用技术为负数, 然后后续还使用。 4:在程序的声明处指定使用assign属性,然而在dealloc的时候却对其进行release。 对于崩溃问题可以尝试

testing2007的专栏 7496

OpenClaw 在 Docker 容器中的部署实战——零配置启动

本文介绍了OpenClaw在Docker容器中的快速部署方法,对比了本地部署与容器化部署的优势。通过官方镜像和Docker Compose两种方式,5分钟即可完成部署,并详细讲解了配置管理方案(挂载配置文件和环境变量)。文章还提供了飞书集成配置方法,以及生产环境下的日志管理、资源限制、健康检查等优化建议。最后包含常见问题排查指南,帮助开发者快速实现OpenClaw的容器化部署。

刘一说的IT专栏 904

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

@synthesize & @dynamic 使用对比

@synthesize 在使用上 @dynamic 有一定的差别,其实也就是@synthesize默认做了一些@dynamic的一些工作。 具体默认做了什么工作,对比之后就会发现: 先看一段@synthesize的实现: ViewController.h 代码: #import #import "EMPlane.h" @interface ViewController :

testing2007的专栏 5229

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

XCode常用快捷键

最近几个月来开发了一个拼装间,就把自己XCode常用的快捷键总结一下: Ctrl+Command+Up/Down(方向键):实现.h/.m文件切换。 Command+:移到行头 / 行尾。 [Shift]+Command+z: 实现撤销/重做操作。 Shift+Command+F:在工程中查找/替换信息。 Command+C /  F /  V / G : 对本文档指定查找信息进行拷贝,

testing2007的专栏 2802

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ios 图像开发相关

2012-11-30 关于Cocoa   2012-12-12  星期三 图像编程相关: *iOS Drawing Concepts High-quality graphics are an important part ofyour app’s user interface. Providing high-quality graphics not only makes youra

testing2007的专栏 2458

IOS内存管理总结

IOS 内存管理模型   Objcective-C三种内存管理方式: 1:MRR (ManualRetain-Release): 手工持有-释放 方式 2  :  ARC(Automatic Reference Counting): 自动引用计数 3: GC (GarbageCollection) : 垃圾回收; 只适用于 MAC OS, 不能使用于 ios。   调试内存工具:

testing2007的专栏 2190

IOS常用控件及编译器设置

一:UIButton   1: 添加图片 setImage 2: 添加响应处理 addTarget 如: UIButton* btnClose = [[UIButton alloc]initWithFrame:CGRectMake(CLOSE_BTN_RELEATE_SVC_OFFEST_X,

testing2007的专栏 1432

ios移动开发需要考虑的问题

针对ios移动开发平台的限制及自身的一些特点,在开发过程中需要对其进行一些必要的考虑,现就需要考虑的问题汇总如下: 1:安装文件不要大于10M, 运行程序所占用内部不能超过20M, 内存占用30M就很危险。(iPhone不支持基于磁盘交换的虚拟内存。) 2:运行应用程序过程中可能出现的中断场景。       比如:游戏过程中的电话介入;                  同一帐号在不同平

testing2007的专栏 1368

IOS开发常见问题

1:setFrame引发点击不能响应问题。 具体是这样的,在一个控件上放置多个控件时,如果父控件setFrame没有将子控件包含进来,那么点击子控件就不会有反应。所以操作此函数一定要小心。 2:  消息传递。 消息会从子窗口传递给父窗口。如果子窗口将响应的信息截住了,就不会再往父窗口传递。 3:文件读取 如果要读取资源的话,如果读取的文件是非图片格式资源的时候,添加文件时,使用添加引用的

testing2007的专栏 1071

ios 开发随笔

一:如何取消一个添加到 NSOperationQueue 中的 NSOperation (或说 task ). 二:block? 三:如何通过http协议获取返回文件的总大小。 四:NSURLConnectionDelegate 几个总要的方法。 五:查询字符方法。 六:文件操作。 七: 断点续传时,返回的数据 content-range 有一个很大偏移量,本来

testing2007的专栏 907

Mac OS X知识总结

1:使用versions 出现 SVN Working Copy xxx locked  解决方案: 首先,先定位到工程目录下,然后使用如下命令查看是否有锁 find . | grep ".svn/lock"  然后再用: find . | grep ".svn/lock" | xargs rm (其实只要使用他就可以) 后面还将陆续更新

testing2007的专栏 826

IOS使用sqlite数据库操作

使用Sqlite3命令创建数据库及表过程,可以参见:http://www.cnblogs.com/frankliiu-java/archive/2010/05/18/1738144.html   sqlite3* db; NSString *documentsPaths=[[NSBundle mainBundle]bundlePath]; NSLog(@"%@", docum

testing2007的专栏 605
上一篇: IOS内存管理总结
下一篇: ios移动开发需要考虑的问题
testing2007
博客等级 码龄19年 46粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值