cat tee ||

Android安全开发实战:TEE与SE架构解析与漏洞防范 在移动安全领域,硬件级安全机制是构建可信应用的基础。其核心原理是通过硬件隔离创建独立于主操作系统的安全执行环境,从而保护敏感代码与数据免受恶意软件攻击。这一技术为移动设备带来了金融级的安全保障,在支付、身份认证、数字版权保护等场景中发挥着关键作用。Android生态通过TEE与SE两大核心组件实现这一目标,其中TEE作为可信执行环境,提供了操作系统内的安全隔离,而SE作为安全元件,则提供了硬件级的安全堡垒。开发者常遇到的漏洞包括通信完整性校验缺失和逻辑漏洞,这些都需要通过严格的安全编码实践来防范。本文聚焦于 阅读详情
cat filename1 filename2 filename3 > filename

$cat >myfile
This is great!
This can create a file.
<ctrl-D>

tee命令作用可以用字母 T来形象地表示。它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了。
它的一般形式为:tee -a files
其中,- a表示追加到文件末尾。
当执行某些命令或脚本时,如果希望把输出保存下来, tee命令非常方便。
下面我们来看一个例子,我们使用 who命令,结果输出到屏幕上,同时保存在 who.out文件中:
$who |tee who.out

命令1 || 命令2
如果这个命令执行失败了||那么就执行这个命令
mv file1 file2 || echo "mv failed"

optee中支持的时间函数 optee支持以下3个获取时间的函数(也是GP规定的):这3个API函数都是通过系统调用,调用到底层的, 在该函数中会根据传来的参数走不同的分支。 其中: (1)、获取TEE系统时间戳 直接读取arch timer寄存器而获取的。 (2)、获取REE系统时间戳 通过RPC反向调用到Linux Kernel侧的driver后,通过调用获取的时间... 阅读详情

相关推荐

P+F--r2000激光雷达slam技术实现

P+F--r2000激光雷达slam技术实现

majingming123的博客 1670

c++学习笔记1.1 输入输出流cin cout cerr clog endl

c++学习笔记 1.1 输入输出流之cin cout cerr clog endl cin,cout标准输入输出 而 cerr 输出错误消息和警告 clog 输出运行时一般性信息 cout cerr clog区别在于 重定向 详情见例子。 cout通常是传到显示器输出,但可以被重定向输出到文件, cerr,clog流中的信息只能在显示器输出. 区别在于cerr不经过缓冲区,直接向显示器输出信息 而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出. 测试代码 #include <sta

weixin_42568744的博客 398

光伏发电预测(LSTM、CNN_LSTM和XGBoost回归模型,Python代码)

一旦结果与预测差距较大,可能存在光伏系统的问题,需要找出原因,然后采取适当措施来修复光伏系统并做出更好的决策。例如,根据准确的预测,光伏系统运营商可以平衡电力消耗,并将多余的电力储备用于紧急情况。然而,光伏系统的发电量估算是一个挑战,因为光伏系统的发电量受到天气条件的极大影响。整个项目文件夹(第一个文件夹为xgboost模型相关的包文件,xg.py是xgboost模型英文注释版本,xg_chinese.py是xgboost模型中文注释版本)表示空气的温度,通常以摄氏度(°C)或华氏度(°F)为单位。

2301_79699110的博客 3034

cattee翻译_钻机词汇中英翻译

1输出电动钻机词汇表钻井工程用料materialfordrillingengineering电焊条arcwelding管子台虎钳viceforpipetable会筒扳手pipewrench铸铁焊条castingironweldingrod电钻electricdigger喷漆枪paintinggun焊炬weldingtorch割炬scalpeltorch活动扳手movi...

weixin_32559261的博客 982

专题一:Labview表格控件 及 应用(三)在表格中插入一行数据

专题一:Labview表格控件 及 应用(三) 在表格中插入一行数据 最近一段时间,做试验台上位机编程,老是用到表格控件,这几天抽时间专门写一个表格控件的专题。有用到的朋友可以参考一下。 今天接着讲一下,表格控件的数据插入,和相关的操作 1.表格控件的数据插入原理: 表格控件是一个 2D 字符串数组。 在表格插入一行,就是在2D数组插入一行。 行、列插入类似** 以下以成绩录入为例说明 2.1 不要表头直接插入 知识点1:创建数组:把数学,语文,英语三个数值,连成一个一位数组(数值型)。 知

Labview十年工控_702老师的博客 1万+

LangChain与SkillLite集成:AI Agent安全沙箱实践

在AI与自动化技术领域,安全沙箱是实现可信计算的核心机制。其原理是通过资源隔离与权限控制,构建受限的执行环境。技术价值在于平衡功能开放性与系统安全性,尤其适用于处理用户提交的非受信代码或敏感数据。典型应用场景包括AI插件系统、在线代码评测平台等。本文以LangChain框架与SkillLite沙箱的深度集成为例,详解如何通过命名空间隔离、cgroups限制等机制,为AI Agent赋予安全执行动态技能的能力。其中涉及的关键技术点包括Python运行时隔离、动态资源配额管理,以及如何防范Shell注入等常见攻

weixin_34189116的博客 405

深入解析TEE调度模型:tee_worker内核线程原理与性能调优实践

可信执行环境(TEE)作为硬件级安全隔离技术,通过ARM TrustZone划分出独立的安全世界,为敏感数据与代码提供保护。其核心原理在于利用SMC指令实现世界切换,但频繁切换会带来巨大性能开销。为解决这一问题,Linux内核引入了tee_worker调度模型,该模型采用生产者-消费者架构,将用户空间请求异步化处理,有效避免了SMC调用风暴和并发冲突。在工程实践中,理解tee_worker的调度机制对于优化安全应用性能至关重要,特别是在移动支付、物联网设备等对实时性要求高的场景中。通过结合ftrace、pe

weixin_30603633的博客 421

从零开始:使用Mask2Former训练你的专属图像分割数据集

本文详细介绍了如何使用Mask2Former训练自定义图像分割数据集,从环境配置、数据集准备到模型训练与优化。通过实战技巧和问题排查指南,帮助开发者高效完成从零开始的图像分割任务,特别适合需要处理自定义数据集的AI研究人员和工程师。

weixin_30566063的博客 650

Linux tee命令与管道实战:高效管理命令行输出与Python pip安装

在命令行操作中,标准输入、标准输出和标准错误是数据流的核心概念,它们构成了进程间通信的基础。通过管道(|)机制,可以将一个命令的输出作为另一个命令的输入,实现数据的高效流转。然而,在实际工程实践中,经常需要同时查看输出并保存日志,这时tee命令便展现出其技术价值。它能够将数据流同时输出到屏幕和文件,解决了实时监控与持久化存储的矛盾。结合2>&1重定向技巧,可以完整捕获标准错误信息,这在调试复杂脚本或记录pip安装过程时尤为重要。特别是在Python开发中,pip作为包管理工具,常与tee结合使用,以保存详细

weixin_34008805的博客 364

TMS320F28377D双核开发例程 - DSP开发

首先,我们需要创建一个新的工程来进行开发。然后,选择适当的目标设备为TMS320F28377D,并设置工程的名称和存储位置。在上面的代码中,我们定义了一个128个元素的输入数组和输出数组。然后,我们使用一个简单的数字信号处理算法,将输入数组中的每个元素平方,并将结果存储到输出数组中。这个芯片的双核架构提供了更高的计算能力和灵活性,使得数字信号处理的开发更加高效和可靠。希望本文对您有所帮助!当应用程序在TMS320F28377D芯片上运行时,它将对输入数组中的每个元素进行平方运算,并将结果打印出来。

IfllUnity的博客 2517

配置适合Gurobi的机器硬件环境需要考虑的因素

介绍了在为gurobi选择合适的硬件环境时,需要考虑三个方面的因素;

Linshaodan520的博客 1066

Linux cp、mv、cat命令底层原理与生产避坑指南

Linux文件操作命令是系统交互的基础接口,其行为直接受VFS虚拟文件系统、inode机制和POSIX标准约束。理解cp的元数据复制逻辑、mv的原子重命名本质、cat的数据流管道角色,是区分脚本搬运工与可靠工程师的关键。这些命令看似简单,却在权限保留、时间戳控制、符号链接解析、跨文件系统行为、缓冲区管理等维度存在大量隐性技术权衡。尤其在嵌入式开发、汽车电子(如AUTOSAR CP)、日志归档、OTA升级等对原子性、时序和可靠性要求严苛的场景中,错误使用cp -f、忽略mv跨分区陷阱或滥用cat重定向,极易引

439

交换机初始化配置详解

MGMT或称MGT(Management Port,管理端口)是一个可以连接计算机的三层主机端口,如下图所示。只需使用一条双绞线跳线,就可以将计算机的以太网端口与交换机的MGMT端口连接在一起,实现对交换机的配置与管理。也就是说,可以使用MGMT端口代替Console端口实现对交换机或交换机堆叠的网络管理。MGMT端口既可用于交换机的初始化,也可以在交换机初始化完成后,以Telnet、Web浏览器或Cisco CNA方式进行管理。当将计算机连接到独立的交换机时,连接方式如下图所示。

悦分享 1999

Linux学习之|、>、||符号

连续组合命令:1.连续执行命令,命令之间不存在判断的符号;例如:sync;sync;shutdown -h now -----连续同步磁盘后再关机,这里不管前面命令是否执行成功2.连续执行相关性命令,前面的命令执行成功后才会继续执行下一条连接符&&例如:ls /tmp/abc && touch /tmp/abc/test.txt ---如果不...

weixin_34315485的博客 327

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Linux Shell连接符与控制操作符实战指南:从&到||的深度解析

在Linux系统管理与Shell脚本编程中,进程控制和命令流程管理是核心基础。其原理基于Shell对命令执行状态码的解析与进程信号的处理机制,通过文件描述符重定向实现输入输出流的精确控制。这一技术价值在于能够构建健壮、高效的自动化任务与运维脚本,极大提升系统管理效率。典型应用场景包括后台服务部署、批量数据处理、自动化监控告警以及持续集成流水线。本文聚焦于Shell连接符与控制操作符的实战运用,深入剖析了后台运行符&、逻辑操作符&&与||、命令分隔符;以及进程替换等关键符号,并结合进程管理与输出重定向等热词,

weixin_34026276的博客 389

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

猫抓cat-catch模块化:importScripts与ES6模块

在浏览器扩展开发领域,模块化一直是提升代码可维护性和开发效率的关键技术。猫抓(cat-catch)作为一款优秀的资源嗅探扩展,在其架构设计中巧妙地运用了两种不同的模块化方案:传统的 `importScripts` 和现代的 ES6 模块。这种混合模式不仅体现了技术演进的兼容性,更展示了在不同场景下选择最优解的设计智慧。 读完本文,你将获得: - 深入理解 `importScripts` 与 ES...

gitblog_00224的博客 667

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

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

shell命令基本知识点(下)

特殊符号 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # cat /etc/passwd | head //显示passwd的前十行(默认) ...

chuanlixian7372的博客 99

手撕ARM64启动栈(一):QEMU + TF-A → OP-TEE → U-Boot → Linux 全链路总览

ARM 官方提供的参考固件实现,本文用作 BL1/BL2/BL31:开源 TEE 实现,本仓库用作 BL32,运行在 S-EL1,通过 opteed(SPD)与 BL31 交互,提供 TA 运行环境U-Boot:本仓库用作 BL33/Normal World bootloader,通过 ARM semihosting(,非网络/非fw_cfg)从宿主机文件系统读取内核与 initrd,bootm跳转内核。

Fifty的博客 498

Linux Shell学习笔记 (一)

第一个Shell程序 echod.sh #!/bin/sh#echodecho "First Name : /c"read nameecho "Middle Name :/c"read middleecho "Last Name : /c"read surname 之后输入 $sh echod.sh 即可执行这一命令 新学的命令E

每天进步一点点 522

mysql管道技术_标准输入和管道技术

标准输入案例一:# 发邮件[root@localhost ~]# echo '我是曾老湿。'|mail -s 'biaoti' zls_mail[root@localhost ~]# mail -s '/etc/passwd' zls_mail 0< /etc/passwd[root@localhost ~]# mail -s '/etc/passwd' zls_mail < /e...

weixin_33341108的博客 342

cat用来查看文件内容、合并文件,或者将文件内容输出到终端

cat是 Unix 和 Linux 系统中的一个命令,它的名称来源于 “concatenate”(连接),主要用来,或者将文件内容输出到终端。

qq_45762996的博客 982

linux之shell命令之一

第一:cat使用cat -n filename | more :添加行号cat >filename 接着输入新的内容 :创建一个新的文件cat -b filename | more :与-n 一样,只不过对于空白行不编号(...

cuichangzhi5476的博客 106

Linux操作系统之输入输出流

linux操作系统中的管道和重定向的一些基础知识

weixin_43914022的博客 760

linux,shell学习(三)

[align=center][b]shell的输入与输出[/b][/align] [table] |1.echo|7.文件重定向| |2.read|8.标准输入,输出与错误| |3.cat|9.文件重定向| |4.管道|10.合并标准输出和标准错误 |5.tee|11.使用文件描述符| |6.exec| [/table] [b]1.echo[/b] echo命令的功能是...

畅游数据海洋 164

Link Cat Tree (连喵树) 学习笔记

Link Cat Tree 一、感性定义 所谓连喵树,即一种对森林支持修改,查询,连边,删边等操作的数据结构(姑且算她是吧)。她用一颗颗互相连接的辅助树维护原森林的信息,辅助树相互连接的边叫虚边,辅助树内相互连接的边叫实边 二、关于辅助树和原森林 1.辅助树的点代表的就是原森林的点,一般我们选取splay作为辅助树。 以原树中节点的深度作为二叉排序树的权值。也就是说,如果我们中序遍历splay,得...

weixin_30485291的博客 278

PRODUCT_STATE修改后Core ID读取失败:根因分析与修复实录

在Android系统定制与嵌入式Linux开发中,设备唯一标识(Core ID)和产品状态(PRODUCT_STATE)是产线测试、设备认证与云端绑定环节的关键字段。产品状态作为生命周期标志位,通常存储于misc分区、内核cmdline或安全存储中,其合法性直接决定系统组件的运行分支。当状态值被异常改写或超出合法枚举范围时,可能触发TEE安全侧拒绝读取硬件唯一ID、内核驱动跳过节点注册或存储分区校验失败,最终导致"Unable to Get Core ID"等连锁故障。本文从状态位与唯一ID的耦合原理出发,

weixin_34184561的博客 369
上一篇: sudo
下一篇: core文件
proing
博客等级 码龄19年 2092粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值