Linux 使用文件创建内存交换文件

Linux内核——页交换文件,强烈推荐 物理存储器和页交换文件 《Windows核心编程(第5版)》第13章Windows内存体系结构,本章将深入探讨Microsoft Windows所使用的内存体系结构。本节为大家介绍的是物理存储器和页交换文件。 AD: 13.5 物理存储器和页交换文件 在老式的操作系统中,物理存储器被认为是机器中内存的总量。换句话说,如果一台机器装有16 MB内存,那么应用程序最多可以使用16 MB内存。当今的操作系统能让磁盘空间看起来像内存一样。磁盘上的文件一般被称为页交换文件(paging file),其中包含虚 阅读详情

场景

  • 针对服务器或者工作站这些常年运行的系统来说,创建内存交换分区是很有必要的!
  • 例如:我的个人博客使用的是 阿里云CentOS7 1核1G带宽1M服务器,突然发现内存快消耗殆尽了
    在这里插入图片描述
  • 对于上面的问题,解决办法有:升级服务器配置,设置内存交换分区

使用文件创建内存交换文件

为什么说是内存交换文件,而不是交换分区。因为在物理分区无法支持的环境下,可以使用 dd去创建一个 大文件,作为内存交换文件。这样可以省去分区的操作,操作更加简单。多说无益,开始操作吧

  • 使用dd命令在 /tmp目录下新增一个 2048MB的文件
dd if=/dev/zero of=/tmp/swap bs=1M count=2048
  • 使用 mkswap 将 /tmp/swap 文件格式化为内存交换文件格式
mkswap /tmp/swap
  • 使用swapon 将 /tmp/swap启动,
swapon /tmp/swap

  • 可以使用 swapoff 将 /tmp/swap关闭
swapoff /tmp/swap
  • 设置自启动,使用vim在/etc/fstab 文件中添加如下内容
# 为何这里不要使用UUID?这是因为系统仅会查询区块设备(block device)不会查文件
# 所有,这里千万不用使用UUID
/tmp/swap       swap    swap    defaults        0       0

在这里插入图片描述

Linux编程:通过memfd_create创建一个匿名内存文件 lrwx------ 1 xxx xxx 64 7月 9 21:57 3 -> '/memfd:mem_file (deleted)'memfd_create提供了一个方法,可以在内存中创建一个匿名文件,但是这个文件在真实的文件系统中却不存在。3.文件的初始大小为0,但是可以通过write向文件中写入数据,或通过ftruncate设置文件的大小。4.函数返回的文件描述符与open返回的并无差异,因此可以通过mmap进行文件内存映射。2.函数返回的文件描述符默认已经设置了读写权限。name:文件的名字。 阅读详情

相关推荐

Linux中进程创建和内存空间申请

Linux中进程创建和内存空间申请: 除进程0外,所有进程都是由一个已有进程在用户态下完成创建的。 进程0创建进程1前,要将进程0由内核态转变为用户态,方法是调用move_to_user_mode函数 硬件对5个push压栈的数据分别出栈,给ss、esp、eflags、cs、eip 为了避免低特权级的的代码直接跳转执行高特权级的代码或访问高特权级的数据,需要转换特权级调用。转换的方法是中断和中断返回。

Linux 创建文件的12种方法总结

命令通常用于脚本、批处理文件。命令可以创建一个新的文件,该命令回车后不会立即结束,可以输入添加到新文件的内容后按 Ctrl+C 或者 Ctrl+D 来结束,也可以使用。通常用于将一个命令的输出重定向到一个新文件中,如果没有命令,则会创建一个 0KB 的空文件。of=文件名:输出文件名,缺省为标准输出。if=文件名:输入文件名,缺省为标准输入。ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

天天的博客 3万+

abaqus热力耦合模拟教程学习笔记

学习资源:BV1je4y1a7Ku软件:abaqus2016以m为单位制。

qq_41900477的博客 2万+

8.4 内存映射文件

8.4 内存映射文件

qq_36314864的博客 1459

计算机网络(国家电网)

1.局域网中NOS(网络操作系统)提供的通信服务有工作站与工作站之间的对等通信,工作站与服务器之间的通信2.ISP:Internet服务商应用层 APDU(应用层协议数据单元)表示层 PPDU(表示层协议数据单元)会话层 SPDU(会话层协议数据单元)传输层 segment(报文段)网络层 packet (数据包)数据链路层 frame(数据帧)物理层 bit (比特)4.

qq_31715647的博客 3185

JS自动化生成大疆WPML航线文件实战(附完整代码与云台控制解析)

本文详细介绍了如何利用JavaScript自动化生成大疆WPML航线文件,以解决手动规划航线效率低、易出错的问题。通过解析WPML文件结构,特别是云台控制等核心参数,并封装可复用的JS模板函数,开发者能够快速批量生成复杂航线,如倾斜摄影五向飞行,实现航测与巡检任务的标准化与高效执行。

weixin_29007243的博客 299

创建内存交换分区

创建内存交换分区

qq_45064687的博客 1460

ADG同步性能优化:如何正确配置standby redolog避免WAIT_FOR_LOG状态

本文深入剖析了Oracle ADG(Active Data Guard)同步中常见的WAIT_FOR_LOG状态,指出其根源在于Standby Redo Log(SRL)配置不当。文章提供了从诊断到优化的完整实践指南,重点阐述了SRL大小匹配、组数充足等黄金配置法则,帮助架构师从根本上避免同步延迟,实现稳定高效的实时数据同步。

weixin_29200485的博客 334

linux 匿名文件 memfd_create

本专栏主要分享linux下并发编程相关知识,包括多进程,多线程,进程/线程间通信,并发同步控制,以及高并发下性能提升,请大家多多留言。本专栏已经分享共享内存,文件映射,匿名/命名管道,消息队列等四种进程间通信的方式,本文来介绍第五种方式memfd_create,而且非常特别,且看本文分解。

一个追逐梦想的码农 7032

【Claude Code 源码解析教程】第25章:测试与调试

Claude Code 作为复杂的 AI 编程助手,测试与调试是保证质量的关键环节。项目建立了完善的测试体系,包括单元测试、集成测试、端到端测试等多个层次,同时提供了丰富的调试工具和技巧。

rengang66的博客 210

基于Cesium实现,动态水面+大坝排水动画

一、绘制面状水域,使用水波纹理,进行渲染,水体透明,可以看到底色。三、使用粒子系统,将喷泉改变方向,加上重力设置,实现排水动画。二、绘制线状三维体,用作模拟大坝拦截效果。四、最后,模拟水位上升,进行淹没分析,

一醉千秋的专栏 1420

内存交换分区(swap)的创建

目录1.内存交换分区(swap)的创建1.1 使用物理分区创建swap(1)先进行分区操作(2)开始创建swap格式(3)观察与加载1.2 使用文件创建内存交换文件(1)使用【dd】命令在 【/tmp】下新增一个 128MB的文件(2)使用【mkswap】将【/tmp/swap】这个文件格式化为内存交换文件的文件格式(3)使用【swapon】来将【/tmp/swap】启动(4)使用【swapoff】关闭swap file,并设置自动启用 1.内存交换分区(swap)的创建 建立swap的方式: 设置一个

一个搬运知识的笨小孩 1711

微信公众号 - 超详细 H5 网页接入微信支付功能,开发网站微信支付最详细的教程示例代码(微信公众号前端支付 JS-SDK / JSAPI 微信H5授权登录支付,唤起微信支付)最新超级详细教程

H5页面接入微信支付功能,前端网页端怎么做微信JSAPI支付,vue网站接入微信JSSDK支付,vueH5项目如何做使用微信支付,端h5调用微信支付jsapi方法,前端vue开发的H5网站怎么微信支付最详细的教程示例代码,vue怎么调取微信支付流程,将H5接入微信支付退款,vue网站怎么搞微信支付,H5前端开发网站在微信环境内H5调起微信支付,react项目h5如何调用微信支付的方法,nuxt.js项目vueH5集成微信JS支付,网站怎么做出H5微信公众号支付,请问vue.js这个框

🏆 前端领域优质创作者 8126

Linux创建交换分区

交换分区(SwapPartition)在Linux系统中是一种特殊的磁盘分区。它的主要功能是作为内存(RAM)的补充,当系统的物理内存(RandomAccessMemory)不够用的时候,操作系统会将一部分暂时不使用的内存数据移动到交换分区中,从而为当前正在运行的程序腾出物理内存空间。这就好比是一个备用的“仓库”,当主仓库(物理内存)装满时,可以把一些暂时不用的“货物”(数据)存放到备用仓库(交换分区)里。

weixin_40107423的博客 1929

【同等学力】01-逻辑符号表达

F(x): x是确诊者,G(x):x有症状F(x): x是老人,G(x):x是宠物,L(x,y): x喜欢y。

super_mochi1 1880

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

保姆级swap分区详解!手把手带你创建swap分区(两种方式,建议收藏)涉及fdisk、gdisk、df、parted、partprobe、mkswap、swapon、free、dd、od等命令

Swap分区的详解 && 创建什么是swap分区?方法一:使用物理分区创建Swap分区1. 利用fdisk / gdisk在磁盘上划出一个分区1.1 lsblk —— 查看本机的磁盘分区基本情况1.2 df 命令 —— 查看磁盘空间利用率1.3 parted命令 —— 列出磁盘的分区表类型与分区信息1.4 fdisk / gdisk命令 —— 磁盘管理1.5 partprobe —— 更新Linux内核分区表信息2. 创建swap格式2.1 mkswap命令 —— 格式化Swap分区2.2

weixin_47826078的博客 2万+

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

如何删除交换文件 swp_如何在 Linux 上创建和使用交换文件

本教程讨论了 Linux 中交换文件的概念,为什么使用它以及它相对于传统交换分区的优势。你将学习如何创建交换文件和调整其大小。-- Abhishek Prakash(作者)本教程讨论了 Linux 中交换文件的概念,为什么使用它以及它相对于传统交换分区的优势。你将学习如何创建交换文件和调整其大小。什么是 Linux 的交换文件?交换文件允许 Linux 将磁盘空间模拟为内存。当你的系统开始耗尽内存...

weixin_35642637的博客 2523

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

Linux| 在 Linux 上创建和使用交换文件(swapfile)

本教程讨论了 Linux 中交换文件的概念,为什么使用它以及它相对于传统交换分区的优势。你将学习如何创建交换文件和调整其大小。 什么是 Linux 的交换文件? 交换文件允许 Linux 将磁盘空间模拟为内存。当你的系统开始耗尽内存时,它会使用交换空间将内存的一些内容交换到磁盘空间上。这样释放了内存,为更重要的进程服务。当内存再次空闲时,它会从磁盘交换回数据。我建议阅读这篇文章,了解 Linux 上的交换空间的更多内容。 传统上,交换空间是磁盘上的一个独立分区。安装 Linux 时,只需创建一个单独的.

YvesHe的专栏 1万+

简单介绍在 Linux 上创建和使用交换文件的方法

本教程讨论了Linux中交换文件的概念,为什么使用它以及它相对于传统交换分区的优势。你将学习如何创建交换文件和调整其大小。 什么是 Linux 的交换文件? 交换文件允许 Linux 将磁盘空间模拟为内存。当你的系统开始耗尽内存时,它会使用交换空间将内存的一些内容交换到磁盘空间上。这样释放了内存,为更重要的进程服务。当内存再次空闲时,它会从磁盘交换回数据。我建议阅读这篇文章,了解 Lin...

永远在学习Linux之路上 859

linux 创建交换文件格式,简单介绍在 Linux 上创建和使用交换文件的方法

什么是 Linux 的交换文件?交换文件允许 Linux 将磁盘空间模拟为内存。当你的系统开始耗尽内存时,它会使用交换空间将内存的一些内容交换到磁盘空间上。这样释放了内存,为更重要的进程服务。当内存再次空闲时,它会从磁盘交换回数据。我建议阅读这篇文章,了解 Linux 上的交换空间的更多内容。传统上,交换空间是磁盘上的一个独立分区。安装 Linux 时,只需创建一个单独的分区进行交换。但是这种趋势...

weixin_32722209的博客 269

Linux文件系统(二)交换分区和交换文件

1.交换分区的概念 2.交换分区的管理

风高秋月白,雨霁晚霞红 2839

如何创建 Linux 交换文件

提高服务器性能和避免内存不足的推荐方法之一是创建交换空间或交换文件。交换是位于硬盘上的虚拟内存,当内存利用率很高时会扩展 RAM。 当您的系统用完主内存时,Linux 内核会从 RAM 中交换一部分内存并将其写入硬盘。这样,系统可以使用更多 RAM,并且进程可以顺利运行。 在本教程中,我们将学习如何在 Ubuntu 和 CentOS 等 Linux 发行版上创建交换文件。 检查交换配置 在查看了创建交换文件的优点之后,首先确认您的系统上是否配置了交换是很重要的。这将帮助您了解是否配置交换文件。 ..

太极淘的博客 2248

linux 创建交换文件格式,如何在 Linux 上创建和使用交换文件

本教程讨论了 Linux 中交换文件的概念,为什么使用它以及它相对于传统交换分区的优势。您将学习如何创建交换文件和调整其大小。什么是 Linux 的交换文件?交换文件允许 Linux 将磁盘空间模拟为内存。当您的系统开始耗尽内存时,它会使用交换空间将内存的一些内容交换到磁盘空间上。这样释放了内存,为更重要的进程服务。当内存再次空闲时,它会从磁盘交换回数据。我建议阅读这篇文章,了解更多关于交换在 L...

weixin_33914255的博客 293

linux交换文件,LINUX 添加交换文件

对于个人服务器内存都偏小,操作总是悲剧的卡卡卡,可以通过增加一点交换文件来缓解一下。快速添加交换文件step 1. 生成文件先填充一个大文件,等会儿当做交换文件用:ddif=/dev/zeroof=/var/swapbs=1024count=4096000这里会稍微卡上一会儿,是dd在填充文件。step 2. 格式化交换文件将文件格式化为交换文件:mkswap/var/swapstep ...

weixin_39702316的博客 2659

如何创建Linux交换文件?Linux交换文件最新创建方法

Swap是Linux上的分配空间,该处被保留为虚拟内存。当Linux服务器运行内存时,可以将非活动进程移动到虚拟内存中以便在工作存储器中为活动进程进行空间。此功能默认情况下未打开,但可以通过分配交换文件来打开。交换文件上的性能与交换分区的性能非常类似。但是,在不重新分区的情况下更容易控制交换大小。通过调整系统的SWAPPAPPINES值,还可以激励服务器依赖交换空间。

Kaede6的博客 494

Linux系统创建并自动启用交换文件

在Linux系统中,交换空间(Swap Space)被用作当物理内存(RAM)不足时的额外内存。尽管现代计算机通常配备有大量的RAM,但在某些情况下,如运行内存密集型应用或程序时,交换空间仍然非常有用。在本博文中,我们将详细介绍如何在Linux系统中创建一个8GB的交换文件,并确保它在系统启动时自动启用。

斯黄人民的博客 890
上一篇: 解决HTTPS Nginx反向代理出现CSS/JS/图片等静态资源无法加载或加载错误问题
下一篇: Nginx 安装 SSL证书
dadeity
博客等级 码龄10年 1172粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dadeity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值