iOS开发中设置键盘样式风格的编程方法

编程 专栏收录该内容
¥29.90 ¥99.00
384篇文章

在iOS应用开发中,定制键盘样式风格是一种常见的需求。通过编程,我们可以更改键盘的外观和行为,以提供更好的用户体验。下面将介绍如何在iOS开发中实现定制键盘样式风格的方法,并提供相应的源代码示例。

  1. 首先,我们需要创建一个遵循UIKeyInput协议的自定义视图或视图控制器。这将允许我们处理键盘输入。
import UIKit

class CustomViewController: UIViewController, UIKeyInput {
   
   
    var inputText = ""
从零到一:用Cursor AI助手开发React Native待办事项应用 AI辅助编程正成为提升开发效率的重要趋势,其核心原理是通过自然语言交互生成、解释和优化代码。这项技术能显著降低开发门槛,加速原型验证,尤其适用于移动应用开发等场景。以React Native跨平台开发为例,开发者常面临UI构建、状态管理和功能迭代等挑战。借助Cursor这类智能编辑器,可以快速实现从环境搭建到功能实现的完整流程。本教程以“死了么”待办事项应用为案例,演示如何利用Cursor的代码生成和排错能力,高效完成包含任务管理、状态筛选和持久化存储等核心功能的项目开发,为探索AI编程工具提供实践参考。 阅读详情

相关推荐

远程Vibe Coding神器:UU远程多会话AI编程工作流实战

随着大模型推理能力的飞跃,AI辅助编程已经从概念验证走向工程落地,代码生成质量与多会话协作能力成为衡量AI编程工具的关键指标。然而在实际开发中,本地算力不足、网络延迟高、多设备接入困难等环境瓶颈,正在制约开发者对AI编程效能的充分释放。Vibe Coding作为一种高频人机交互的编程范式,尤其依赖远程环境的稳定连接与低延迟响应。通过在远端主机运行IDE与AI编程插件,并借助UU远程实现键盘鼠标操作的无感透传,开发者可以在笔记本、平板等任意设备上同时管理多个AI会话,实现“一人+AI团队”的协作模式。其中涉及

weixin_33860528的博客 363

Qt开发实战指南:从环境搭建到项目部署的完整路径

在C++桌面应用开发领域,跨平台图形界面框架是构建现代化软件的重要工具。其核心原理在于通过抽象层封装不同操作系统的原生API,为开发者提供统一的编程接口,从而实现“一次编写,到处编译”的技术价值。这种架构设计广泛应用于需要同时支持Windows、macOS和Linux系统的桌面软件、嵌入式设备界面及工业控制等领域。信号与槽机制作为此类框架的核心通信方式,实现了对象间的松耦合交互;而元对象系统则提供了运行时类型信息和动态属性支持。在实际工程实践中,环境配置、多线程处理和部署打包是开发者常遇到的关键挑战。本文聚

weixin_34375251的博客 383

Objective-C入门指南:从环境搭建到实战项目开发

面向对象编程是现代软件开发的核心范式之一,它通过封装、继承和多态等机制组织代码,提升可维护性和复用性。在iOS/macOS生态中,Objective-C作为基于C语言的面向对象语言,其独特的消息传递机制和动态运行时特性,为理解Cocoa Touch框架的底层原理提供了关键视角。掌握Objective-C不仅能帮助开发者深入理解iOS系统框架的设计哲学,还能有效维护和迭代大量存量项目代码,尤其是在处理内存管理、与C/C++库桥接以及调试经典崩溃场景时具有不可替代的价值。对于希望夯实iOS开发基础、进入中大型团

weixin_30580341的博客 317

Unity 3D益智游戏开发实战:从推箱子变种到完整项目构建

游戏开发的核心在于将抽象的游戏规则转化为清晰、可维护的代码逻辑系统。在Unity引擎中,这通常通过C#脚本实现面向对象的设计,构建如状态管理、输入处理和实体交互等核心模块。其技术价值在于创建出可扩展、高性能的游戏架构,能够流畅运行于多平台。这种架构尤其适用于需要精确逻辑与状态同步的应用场景,例如解谜、策略或模拟类游戏。本文以经典的推箱子玩法为基础,通过引入3D网格化移动、颜色匹配与连锁反应检测等机制,深入剖析了如何构建一个完整的Unity 3D益智游戏项目,涵盖了从设计思路、核心C#代码实现到性能优化与打包

weixin_30325971的博客 341

微信小程序自定义导航栏全攻略:精准计算高度与安全区域适配

在微信小程序开发中,原生导航栏的样式限制和高度不透明性,常常成为实现沉浸式体验和个性化UI的障碍。其核心原理在于,开发者需要通过全局配置启用自定义模式,从而获得页面顶部的完全控制权。这项技术的核心价值在于,它允许开发者突破原生限制,实现与品牌深度结合、高度灵活的顶部导航设计,广泛应用于电商、视频、社交等对UI有高要求的场景。要精准实现自定义导航栏,关键在于利用 `wx.getSystemInfoSync()` API 获取动态的 **状态栏高度**,并结合固定的导航栏本体高度进行计算。同时,必须考虑不同设备

weixin_30482383的博客 870

Jules:面向工程落地的异步Repo-Aware编程AI搭档

在AI编程工具泛滥的今天,'代码补全'和'对话式编程'已成基础能力,真正决定生产力跃迁的是能否实现端到端、可审计、可协作的自动化任务闭环。这背后涉及三大核心技术支柱:异步执行机制(解耦人机时间节奏)、Repo-Aware代码理解(构建依赖/测试/UI/基础设施多维拓扑图),以及Plan & Self-Critique双脑决策范式(用代码库自身约束替代主观判断)。Jules正是这一范式的首个工业级实践——它不替代开发者写代码,而是将重复性调试、验证、PR交付等‘夜间值守型任务’压缩至15分钟内完成,让人类专注

weixin_30565199的博客 364

Godot引擎与AI助手深度整合:基于MCP协议的上下文感知开发实践

在软件工程领域,上下文感知计算旨在让系统理解用户的操作环境并提供精准辅助。其核心原理是通过标准化协议,将应用内部状态、数据结构和运行时信息暴露给外部智能体,实现深度集成。这一技术价值在于打破工具间的信息孤岛,将AI从通用代码补全升级为理解项目专属逻辑的智能副驾驶。在游戏开发这一复杂工程场景中,开发者常面临需频繁查阅API文档、手动管理海量资源、以及实时调试运行时状态等痛点。通过引入MCP(Model Context Protocol)协议,Godot引擎得以将项目结构、编辑器状态乃至实时游戏数据标准化输出,

weixin_30376083的博客 459

UltraEdit语法高亮库实战:获取、整合与定制百种编程语言高亮方案

语法高亮是现代代码编辑器和集成开发环境(IDE)的核心功能之一,它通过色彩区分代码中的不同元素(如关键字、注释、字符串),从而提升代码的可读性和编写效率。其工作原理是基于预定义的规则文件(如UltraEdit的Wordfiles),对源代码进行词法分析并应用样式。这项技术对于提升开发者的编码舒适度、减少视觉疲劳和调试错误具有重要价值,尤其适用于多语言项目开发、嵌入式系统编程以及处理各种配置文件的场景。本文聚焦于UltraEdit编辑器,深入解析如何利用其强大的语法高亮库,该库覆盖了从主流编程语言到垂直领域的

weixin_30509393的博客 456

AI辅助开发实战:从PPT到App的Codex全流程解析

在软件开发领域,AI代码生成技术正逐步改变传统的编程模式。其核心原理是基于大规模代码库训练的语言模型,能够根据自然语言描述生成可执行的代码片段。这项技术的价值在于显著提升原型开发与功能实现的效率,尤其适用于快速验证产品想法和构建MVP(最小可行产品)。在实际应用场景中,开发者可以将模糊的产品需求转化为结构化的开发指令,通过“对话式编程”引导AI完成从项目骨架搭建、功能模块实现到调试优化的全流程。本文以构建一个“个人知识库闪念捕捉器”移动应用为例,详细复盘了如何利用OpenAI Codex模型,将一份简单的P

weixin_30655569的博客 466

Python GUI开发库深度对比:从Tkinter到PyQt的实战选型指南

图形用户界面(GUI)是连接用户与软件功能的桥梁,其核心原理在于事件驱动编程模型,通过响应用户输入来更新界面状态。掌握GUI开发技术能极大提升工具的易用性与专业度,在数据分析、自动化工具、教学演示等场景中具有广泛价值。本文聚焦Python生态,针对Tkinter、PyQt/PySide、wxPython、Kivy、PySimpleGUI及Pygame六大主流库进行深度剖析,通过【文本编辑器】这一共同实战案例,直观对比其代码风格与实现效果。文中特别探讨了【事件循环】与【线程安全】等关键概念,为不同应用场景(如

weixin_34242331的博客 509

Qt与MFC深度对比:现代C++桌面开发框架选型指南

在C++桌面应用开发领域,GUI框架的选择直接影响项目的开发效率和长期可维护性。信号与槽机制作为现代框架的核心通信原理,实现了对象间的松耦合交互,显著提升了代码的可读性和可扩展性。这种设计模式的技术价值在于简化了复杂UI组件间的协作,使得事件驱动编程更加直观高效。在实际应用场景中,跨平台支持已成为现代桌面应用的刚性需求,开发者需要框架能够无缝适配Windows、macOS和Linux等不同操作系统环境。本文聚焦于Qt和MFC这两个经典框架的深度对比,通过分析信号与槽机制、跨平台能力等关键特性,为开发者提供全

weixin_30745553的博客 702

LibreOffice 2024深度指南:开源办公套件的核心优势与实战技巧

开源办公软件是当前企业降本增效和实现技术自主可控的重要选项。其核心原理在于基于开放标准(如ODF)构建,避免了私有格式的锁定风险,保障了数据的长期可访问性。从技术价值看,开源特性不仅意味着零成本,更提供了深度定制和集成的可能,尤其适合需要自动化文档处理的开发场景。在实际应用中,这类软件能有效满足个人、教育机构及中小企业的日常文档、表格和演示文稿处理需求。本文聚焦于开源办公套件的成熟代表LibreOffice,通过解析其核心组件Writer、Calc、Impress的**格式兼容性**实战与**高级功能**差

weixin_33922672的博客 409

初识QT,你了解吗?

一、什么是QTQt 是一个跨平台的C++应用程序开发框架。它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。Qt使用标准的C++和特殊的代码生成扩展(称为元对象编译器Meta Object Compiler, moc)以及一些宏。基本上,Qt 同 X11上的GTK、Motif、Openwin和Win...

silence2330的博客 1388

iOS移动开发:自定义键盘的实现

在iOS移动开发中,系统自带的键盘虽然功能较为丰富,但在某些特定的应用场景下,可能无法满足开发者的个性化需求。例如,在一些金融类应用中,用户输入金额时可能需要专门的数字键盘,并且对数字的输入格式有特殊要求;在一些游戏应用中,可能需要设计具有特定风格和功能的键盘。自定义键盘的目的就是为开发者提供一种方式,能够根据应用的具体需求,设计出独特的键盘界面和功能。本文的范围将涵盖自定义键盘从概念到实现的整个过程,包括核心概念的介绍、算法原理的讲解、实际项目的开发以及相关资源的推荐等。

移动开发前沿的博客 883

MPU6050数据融合避坑指南:当欧拉角遇到万向节死锁,我们该如何处理?

本文深入探讨了MPU6050在姿态解算中遇到的欧拉角万向节死锁问题,提供了四元数解决方案及工程实践策略。通过分析死锁现象的本质,介绍四元数的优势与实现方法,并给出必须使用欧拉角时的三种应对方案,帮助开发者有效规避数据跳变和解算失效问题。

weixin_30415113的博客 541

分布式光纤传感(DFOS)DTS/DAS/DSS 三合一:10公里管线监测实战与数据解读

本文详细介绍了分布式光纤传感(DFOS)技术在10公里管线监测中的实战应用,通过DTS(温度)、DAS(振动)、DSS(应变)三合一系统,实现对管线健康状态的立体感知。文章涵盖工程部署、数据采集、多物理量数据融合及噪声抑制等关键技术,展示了如何通过一根光纤完成复杂监测任务,显著提升管线安全性和维护效率。

weixin_29168153的博客 315

A股历史数据免费下载终极指南:4000+个股数据一键打包获取

本文提供了获取A股历史数据的完整免费方案,重点介绍了Tushare Pro、AkShare等开源金融数据API的使用方法。通过详细的Python脚本示例,指导读者如何自动化批量抓取、清洗、存储4000多只个股的历史行情数据,并分享数据质量校验与性能优化技巧,助力量化研究与市场分析。

ooo22的博客 2222

QMT Python API 实战指南:从安装到策略开发的完整流程

本文提供了一份详尽的QMT Python API实战指南,涵盖从环境配置到策略开发的完整流程。文章深入解析了xtdata行情模块与xttrader交易模块的核心架构与协作方式,并通过一个双均线策略实例,手把手教你如何获取数据、计算信号并执行交易,是量化交易开发者快速上手QMT Python接口文档的实用教程。

butter的博客 1414

手把手教你学simulink(16.8)--基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目

基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目的详细实例介绍。这个项目将重点放在小波变换滤波器的设计、实现和仿真上,帮助你理解和应用小波变换滤波器在信号处理中的作用。

MHD0815的博客 534

GNN(图神经网络)的 MATLAB 仿真

图神经网络(Graph Neural Network, GNN)是一种用于处理图结构数据的深度学习模型。GNN 通过聚合节点及其邻居的信息,能够有效捕捉图结构中的复杂关系,广泛应用于社交网络分析、推荐系统、化学分子分析等领域。GNN 通过消息传递机制聚合节点及其邻居的信息,能够有效处理图结构数据。MATLAB 仿真展示了 GNN 的基本流程和节点分类性能,适用于社交网络分析、推荐系统、化学分子分析和知识图谱等多种应用场景。

走向CTO的路上... 837

详解AUTOSAR:专栏总述

本专栏系统介绍AUTOSAR规范及车用控制器软件开发,内容覆盖基础架构、SWC/RTE、通信栈、诊断、存储、安全、看门狗、工具链、环境配置与项目实战,并持续更新各模块的集成机制与工程要点。

不脱发的程序猿 3920

Cadence OrCAD Capture 软件自带元件原理图符号库目录与介绍图文视频教程

硬件工程师在开始原理图设计时,应该首先拥有自己的元件原理图符号库。基于Capture进行原理图设计的一个很大的优点就是,软件自带的元件库比较全。本文简单介绍Capture软件自带元件库。

fydar的博客 5579

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 使用编程技术将视频中的人物独立提取出来
下一篇: 使用jQuery删除元素的属性
普通网友
博客等级 码龄3年 255粉丝 667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值