iOS程序猿之CAShapeLayer类(动画)

iOS程序猿之chart图表(PNChart) Chart图表 在开发中,特别是销售企业内部使用的APP,可能会用到数据汇总,使用到chart图表的功能! 在github上找到一个比较全,界面很漂亮的图表第三方:PNChart,它包含LineChart(折线图),BarChar(柱状图),CircleChart(圆圈进度图),PieChart(饼图),ScatterChart(点状分布图),Radar Chart(无线电图) 阅读详情

CAShapeLayer

指定形状路径

@property CGPathRef path; // 动画路径,默认为NULL
/**
 *  不像大多数动画的性能,path(与所有CGPathRef动画属性)不支持隐动画。
 *  路径对象可以使用任何的具体子类的动画CAPropertyAnimation
 *  如果此属性的值是不为NULL,则path使用指定的路径,而不是创建该层的合成后的alpha通道。它使用的是非零缠绕规则和当前颜色,不透明度和模糊半径填充。
 */

访问形状样式属性

@property CGColorRef fillColor; // 填充颜色,默认是不透明的黑色,若值为nil,则没有填充效果
@property (copy) NSString *fillRule; // 填充规则,默认是kCAFillRuleNonZero
// kCAFillRuleNonZero: 指定非零缠绕规则。计算每个左到右的路径+1和-1为每个从右到左的道路。如果所有交叉的总和为0,则点是路径之外。如果该和为非零,该点是在路径内与包含它的区域被填充。
// kCAFillRuleEvenOdd: 指定奇偶缠绕规则。算路径交叉的总数。如果横跨的数目是偶数,该点的路径之外。如果横跨的数目是奇数,所述点是在路径内与包含它的区域应被填充。
@property (copy) NSString *lineCap; // 线端点样式,默认值是kCALineCapButt,还有kCALineCapRound, kCALineCapSquare
@property(copy) NSArray<NSNumber*> *lineDashPattern; // 一组NSNumber分别表示涂颜色的区段长度和未涂色的区段长度,默认值是nil

@property CGFloat lineDashPhase; // 冲刺阶段应用到的形状的路径,默认是0
@property (copy) NSString *lineJoin; // 拐角样式, 默认值是kCALineJoinMiter (尖角), kCALineJoinRound(圆角),kCALineJoinBevel(平角);
@property CGFloat lineWidth; // 线宽
@property CGFloat miterLimit; // 斜接样式,默认是10.0
@property CGColorRef strokeColor; // 画笔颜色
@property CGFloat strokeStart; // 和strokeEnd组合使用,默认值为1.0.取值范围为0.0到1.0;
@propertyCGFloat strokeEnd; // 和strokeStart组合使用,默认值为1.0.取值范围为0.0到1.0;













iOS程序猿之OC项目引入Swift方法 OC项目引入Swift方法 在OC项目中,有可能会遇到需要引入Swift写的第三方库,下面整理下OC项目如何使用Swift库 1.在已有的OC工程中新建一个Swift文件,命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名-Bridging-Header.h” 阅读详情

相关推荐

吉林大学软件工程章节测验 第九章 答案+解析

4.【判断题】估算软件规模有代码行技术和功能点技术两种方法,其中代码行方法估计实现一个功能所需要的源程序行数,其不依赖项目所使用的开发语言,并且具有较好的直观性。3.【单选题】软件项目估算时,若计划人员对每个功能分别按最佳的、可能的、悲观的三种情况给出功能点估计值,记作a, m, b,则估算的期望值E的公式为( )。8.【判断题】在工程网络图中,如果在由起始事件至终止事件所构成的一条路径上,所有事件的最早时刻都和最迟时刻都相同,那么这条路径就是关键路径。4.【单选题】配置管理贯穿软件开发的整个过程。

m0_51459931的博客 1430

Claude Code v2.1.241 终端AI编程助手:部署、批量任务与排查指南

命令行AI编程工具正在改变开发者的工作方式,它通过云端模型能力实现仓库级理解与多文件编辑,无需本地高端显卡,仅依赖网络和API额度。这类工具擅长代码问答、跨文件重构、测试执行和Git操作辅助,并能以headless模式集成到CI流水线,实现自动化批量处理。在实际工程中,合理配置Node.js环境、npm包管理及登录鉴权是落地基础,而权限边界、日志设计和失败重试则是稳定运行的关键。Claude Code v2.1.241作为典型终端AI Agent,提供了从交互式会话到脚本化调用的完整链路,适合个人开发者、D

weixin_34226182的博客 603

手把手教你获取全国街道级GeoJSON数据:前端地图开发必备技巧

本文详细介绍了获取全国街道级GeoJSON数据的多种方法,从前端地图开发的实际需求出发,涵盖了免费获取省市县级数据的工具如阿里云DataV.GeoAtlas和HashTang,以及进阶的街道级数据获取方案,包括使用Bigemap GIS Office和专业数据采购。文章还提供了数据处理与优化技巧,帮助开发者高效使用GeoJSON数据进行地图可视化。

weixin_29053383的博客 289

IOS图层Layer学习笔记(四)—— CAShapeLayer

CAShapeLayer主要用于根据贝塞尔曲线绘制图形。 路径是CGPath对象。并允许填充和描边操作。绘制的图形是在图层和子图层之面,也就是必定会被子图层覆盖。 大部分操作和画图差不多。

谢攀琪的博客 1317

RustFS vs MinIO:深入对比分布式存储的性能、功能与选型指南

RustFS与MinIO是两款热门分布式存储系统,分别针对高性能与通用场景设计。RustFS基于Rust语言,在吞吐量(最高提升46%)、延迟(降低37%)和资源效率(内存占用减少67%)上显著优于MinIO,适合AI训练、金融级应用等高性能需求。MinIO凭借成熟的S3兼容性、云原生集成和企业级功能,更适用于混合云及现有S3生态。许可方面,RustFS采用Apache 2.0,MinIO为AGPLv3。选型建议:优先RustFS应对性能敏感场景,选择MinIO注重生态兼容性,也可考虑混合架构策略。

分布式存储与RustFS的博客 2023

prplOS介绍

介绍prplOS是什么,特性、框架、编译等。

四儿家的小祖宗的博客 2120

iOS:关于UIView切角的两种实现方式

转载自:http://www.jianshu.com/p/451b7fa94e2a 第一种: 我想你一见到代码,就瞬间有吐的冲动,最常用的一种方式。。。 UIButton *button = [[UIButton alloc]init]; button.frame = CGRectMake(100, 100, 100, 40); button....

weixin_33695082的博客 173

WPF高级 | WPF 与数据库交互:连接、查询与数据更新

WPF高级 | WPF 与数据库交互:连接、查询与数据更新,在现代应用程序开发中,数据的存储和管理至关重要。Windows Presentation Foundation(WPF)作为一款强大的图形界面开发框架,常常需要与数据库进行交互,以实现数据的持久化存储、读取和更新。本文将深入探讨 WPF 与数据库交互的各个方面,包括数据库连接的建立、数据查询的执行以及数据更新的操作,并通过丰富的代码示例和详细的概念解释,帮助读者掌握这一关键技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

iOS数据统计(柱状图、折线图、扇形图)

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换而言之,如果把大数据比作一种产业,那么这种产业实现盈利的关键,在于提高对数据的“加工能力”,通过“加工”实现数

fuzheng的博客 5839

2026最新华为OD机试新系统机考真题- 真题题库目录|全覆盖题库 + 逐点算法考点详解

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸!

算法大师! 2588

iOS后续开发 数据统计表

前言 今年大数据行业火爆异常,大数据的实用点之一在于数据的统计和加工实现数据的“增值”,方便人们从大量的数据统计中得出结论。 对于一个iOS开发程序猿来说不是专门搞大数据开发的,似乎没有多大关系,但后续iOS开发中,各类APP中必然会加入统计表格的形式展示数据,相对于传统的列表形式+各类查询显示,表格形式直观、简洁、通俗易懂,分析更透彻,必然会成为抢手货。 本文介绍一下简易的柱状

iOS学习的博客 408

编译zlib库给IOS平台用

在弹出的下面对话框中选择Unix Makefiles ,然后点击(Done)完成。使用 lipo与otool查看库类型为arm64,现在可在ios平台使用该库了。zlib自带CMakeLists.txt 所以用CMake-GUI来生成。修改为与系统当前安装的cmake版本 (如:3.22.1)选择zlib源码目录及输出目录,输入下图的CMAKE参数。点击Configure,在弹出的对话框中选择Yes。cmake --install . 进行安装。cmake --build . 进行编译。

994

一篇厚道的Autolayout及VFL经验分享

原文:http://blog.youkuaiyun.com/mozixiong/article/details/14165391 这篇不是什么教程。 Cocoa autolayout出来蛮久了。以前多次想去深入研究一下,每次都很蛋疼无序。这东西是在有些搞。尤其习惯了code写布局的。看到Visual format language,简直要掀桌子。 搜教程,满世界都是,没有一个讲得透彻的。例子空洞。你

yongyinmg的专栏 3377

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

小小数据统计(柱状图、折线图、扇形图)

代码地址如下:http://www.demodashi.com/demo/12012.html 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换而言之,如果...

weixin_34351321的博客 432

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

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

iOS程序猿之AFNetworking 3.0 版本使用

AFNetworking 3.0 版本使用 在Xcode7.0之后,苹果废弃了NSURLConnection方法,数据请求使用NSURLSession,作为网络请求类第三方库使用量最大的AFN也及时的更新的新的版本——AFN 3.0版本。新的版本的里废弃了基于NSURLConnection封装的AFHTTPRequestOperationManager,转而使用基于NSURLSession封装的

iOS_wq的博客 1万+

深度学习工具包 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")

iOS程序猿之读取手机通讯录

读取手机通讯录 如今很多app都有读取手机联系人的需要,最近项目也遇到了类似的需求,这里整理下 从iOS开始,苹果废弃了以前复杂的AddressBookFramework,使用非常简单易用的Contacts Framework! 这里贴上两篇关于AddressBookFramework的博客,有兴趣的可以看看: http://my.oschina.net/u/2340880/blog/

iOS_wq的博客 6030

iOS程序猿之UIBezierPath类属性和方法(画图路径)

UIBezierPath UIBezierPath类可以定义一个由直线和曲线线段的路径,呈现在自定义视图上.可以定义简单的形状,如矩形,椭圆形,圆弧或者复杂多边形等.定义形状后,就可以使用这个类的其他方法来呈现当前当前绘制上下文的路径. 创建UIBezierPath对象 + bezierPath创建并返回一个新的UIBezierPath对象。 + bezie

iOS_wq的博客 5791

iOS程序猿之JSONKit的使用

JSONKit的使用 在项目经常会遇到解析json或者给后台传json格式的数据;而苹果自带的方法转换json时,每个字典的字段后面会有换行符,那么JSONKit可以是个不错的选择 JSONKit在git上的地址是:https://github.com/johnezang/JSONKit 1.准备工作 该项目已经很久没有更新了,目前还使用MRC,因此需要做几处修改: 在arc下使用,

iOS_wq的博客 5182

iOS程序猿之富文本(NSMuttableAttstring)

富文本(NSMuttableAttstring) 在iOS开发中,有时会需要将一段文字显示成不同大小,不同颜色的需求,我们可以借助NSAttstring和NSMuttaleAttstring来实现 NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:gradeString];

iOS_wq的博客 1692

iOS程序猿之iOS绘图基础(draw)

iOS绘图基础(draw) 先说几个基本概念: context:上下文,ios绘图的方法都需要传一个上下文context,这个context在重写uiview的drawRect的方法里调用UIGraphicsGetCurrentContext()获取 path:路径,ios绘图可以想象为你拿着一支笔去画图,画几条线或几个点从而形成一个路径,之后可以利用理解去填色或者描边 stroke,

iOS_wq的博客 1565

iOS程序猿之linux的cp/scp命令+scp命令详解

linux之cp/scp命令+scp命令详解  1.cp命令 名称:cp 使用权限:所有使用者 使用方式:       cp [options] source dest       cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。 -a 尽可能将档案状态、权限等资料都照原状予以复制。 -r 若

iOS_wq的博客 1038

iOS程序猿之NSdate那些事

NSdate的那些事 这段时间的开发和NSDate打上交道了,在这里记录下.... 1.创建 NSDate *date = [NSDate date]; // 获取的是当前时间说说坑爹的事情: 这个日期信息在控制台打印是格林尼治时间,也就是比我大中华的北京时间晚8小时,但是在模拟器和真机上时是没有影响的!切记切记,不要再加8小时了!!! 2.控制台打印当前时区的时间信息(date

iOS_wq的博客 888

iOS程序猿之keyChain保存登录名和密码

iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。

iOS_wq的博客 883

iOS程序猿之本地通知那些事

本地通知 先判断用户是否允许该软件接受通知 //如果已经获得发送通知的授权则创建本地通知,否则请求授权(注意:如果不请求授权在设置中是没有对应的通知设置项的,也就是说如果从来没有发送过请求,即使通过设置也打不开消息允许设置 if ([[UIApplication sharedApplication] currentUserNotificationSettings].types !=

iOS_wq的博客 800
上一篇: iOS程序猿之UIBezierPath类属性和方法(画图路径)
下一篇: iOS程序猿之OC项目引入Swift方法
iOS_wq
博客等级 码龄11年 10粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值