k8s 集群 使用yaml部署Tomcat方法

【Kubernetes】部署Tomcat服务 准备 已有Kubernetes集群 熟悉Kubernetes的基本命令 tomcat镜像已保存到Harbor(如果没有配置私有仓库,也可以通过公网从 docker hub 拉取) Deployment   k8s支持多种资源创建方式,这里我们使用YAML文件来完成Tomcat应用的配置。apiVersion: extensions/v1beta1 kind: Deployment met 阅读详情

使用ymal部署Tomcat6

命令中,通过–dry-run选项,并不会真正的执⾏这条命令。
–dry-run=‘none’: Must be “none”, “server”, or “client”. If client strategy, only print the object thatwould be sent, without sending it. If server strategy, submit server-side request without persistingthe resource.
值必须为none,server或client。如果是客户端策略,则只打印该发送对象,但不发送它。如果服务器策略,提交服务器端请求⽽不持久化资源。

kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8 --dry-run
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8 --dry-run -o yaml

在这里插入图片描述
实际上我们也可以将这个yaml输出到⽂件,然后使⽤kubectl apply -f来应⽤它
在这里插入图片描述
#修改副本数为3
在这里插入图片描述
#应⽤tomcat6.yaml

kubectl apply -f tomcat6.yaml

可以看到已经部署好了,三个Tomcat
在这里插入图片描述
查看某个pod的具体信息:

kubectl get pods tomcat6-7b84fb5fdc-5jh6t -o yaml

在这里插入图片描述
前⾯我们通过命令⾏的⽅式,部署和暴露了tomcat,实际上也可以通过yaml的⽅式来完成这些操作。
#这些操作实际上是为了获取Deployment的yaml模板

kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8 --dry-run -o yaml >tomcat6-deployment.yaml

在这里插入图片描述
修改“tomcat6-deployment.yaml”内容如下:
在这里插入图片描述
#部署
在这里插入图片描述

暴露服务用yaml来展示

kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml

在这里插入图片描述
将这段输出和“tomcat6-deployment.yaml”进⾏拼接,表示部署完毕并进⾏暴露服务:
在这里插入图片描述
先把原来的deployment删除掉
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
部署并暴露服务 ,一个ymal命令就可以帮助部署并暴露服务

kubectl apply -f tomcat6-deployment.yaml

在这里插入图片描述
查看服务和部署信息:
在这里插入图片描述
在这里插入图片描述
可以看到已经访问成功了。
部署情况
在这里插入图片描述

kubernetes入门到精通(二):k8s部署Tomcat集群,基于NTFS协议的文件集群共享,Service提供负载均衡,端口转发工具Rinetd配置外部访问 配置 Docker 阿里云镜像加速服务 登录阿里云账号,进入控制台 -> 容器镜像服务 (不需要有阿里云的服务器,只要注册账号即可) 在两台 node 节点上配置好阿里云的镜像加速。 重启一下 docker sudo systemctl restart docker 重启一下 k8s systemctl start kubelet 部署Tomcat集群 方法1:使用可视化界面部署 tomcat 集群 dashboard -> 工作负载 -> 创建 -> 创建应用 稍等几分钟之后, 阅读详情

相关推荐

k8s创建tomcat容器deployment的yaml

【代码】k8s创建tomcat容器deployment的uaml。

SHELLCODE_8BIT的博客 580

kubernetes部署并映射tomcat8(k8s)

文章目录2种创建部署的方式一、查找镜像二、部署tomcat(2种)1.1、命令行方式创建部署1.1.1、遇到这种请检查网络和docker1.1.2、模拟宕机tomcat效果,关闭node21.2.3 、暴漏tomcat访问1.2、yaml方式创建部署1.2.1、删除命令行创建的1.2.2、查看部署tomcat的yaml内容1.2.3、生成yaml文件1.2.4、部署,应用文件1.2.5、暴露(映射)端口出来1.2.5.1、查看yaml内容1.2.5.2、信息合并到tomcat8.deployment.yam

suqinyi的博客 3846

【云原生之kubernetes实战】在k8s集群环境下部署Tomcat应用

【云原生之kubernetes实战】在k8s集群环境下部署Tomcat应用

jks212454的博客 1910

SpringBoot内置Tomcat 配置和切换

本文详细介绍了SpringBoot内置Tomcat的配置与切换方法。主要内容包括:1)通过application.yml配置Tomcat核心参数(线程数、连接数等);2)使用WebServerFactoryCustomizer接口进行Java类配置;3)切换Web服务器的具体步骤(以Undertow为例);4)性能优化建议(线程数设置、连接数调整等)。文章强调SpringBoot支持多种Web服务器,默认使用Tomcat,开发者可根据性能需求灵活配置和切换。通过合理参数设置,可显著提升应用性能,同时保持业务

业精于勤,荒于嬉 4061

直线型一阶倒立摆1---从理论到实践的桥梁

本文深入探讨了直线型一阶倒立摆在控制理论中的核心地位,从非线性控制、鲁棒性到实时反馈等关键问题。通过实际案例和硬件搭建指南,帮助读者理解从理论到实践的过渡,特别适合控制工程初学者和研究人员。文章还提供了算法选型建议和硬件避坑手册,是掌握倒立摆控制的实用指南。

weixin_29047545的博客 317

Visual Studio 2015 插件开发 从入门到放弃(一)

必需知识:C#和Visual Studio (1)安装 Visual Studio 2015 的时候选择 Visual Studio 扩展性工具(Visual Studio Extensibility Tools)。对于已经安装好 Visual Studio 2015 的小伙伴,可以找VS2015的安装包,或者在程序与功能中找VS2015双击,在VS2015界面中选择 修改,再选择

AncientPeople的博客 2万+

K8S如何部署Tomcat项目

本章节讲述Tomcat服务上云过程中的遇到的一些问题以及相关解决方案。

muguazhi的博客 2351

深入解析Android Thermal框架:从应用层到驱动层的温度管理机制

本文深入解析Android Thermal框架的温度管理机制,从应用层到驱动层详细介绍了温度监测、热状态评估和降温策略执行的全过程。通过分层架构解析和关键组件交互,帮助开发者理解Android设备如何实现高效的温度控制,确保硬件安全并优化性能。

weixin_29303701的博客 256

K8s中yaml文件详解

YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。

qq_36864672的博客 5242

【模型实战】MiMo-VL-7B讲解与实战

维度成绩MMMU70.6(图像理解最难测试之一)VideoMME70.8(视频理解标杆)59.4(超越78B参数模型)56.1(超过专用GUI模型)Elo评分开源VLM排名第一(7B~72B)社区热度过去一个月下载超1,600次(RL+SFT)📌一句话概括MiMo-VL 是目前性能最强、推理最稳、体验最佳、生态最全的7B级开源视觉语言模型。

m0_47867638的博客 1195

java毕设:基于springboot的服装搭配推荐系统(springboot+layui+jq+html)1011

项目描述 基于springboot的服装搭配推荐系统: 基于天气服装搭配推荐系统为用户提供未来一周的天气预报情况,并根据预报天气和用户现有的服装进行着装搭配,以及显示未来6小时精确温度数据为用户提供更精确的天气信息便于用户在出行前对自己的着装进行调整,每日用户可以根据自己当日对系统推荐的着装搭配舒适度进行反馈,系统将根据用户的反馈对用户着装的保暖系数进行相应调整,通过多次的反馈和调整形成对用户着装的个体化和精确化的推荐。 本系统可以为用户提供以下服务: 1.未来五天的天气信息显示; 2.未来六小时内天气温度

qq_2537071370的博客 3646

k8s笔记之应用创建

k8s下应用创建

sinat_34806137的博客 517

对偶分解算法详解及其Python实现

对偶分解算法是一种广泛应用于求解凸优化问题的有效方法,尤其在大规模数据处理和分布式计算中展现出强大的实用性。在许多实际应用中,直接求解原始问题可能由于计算复杂度过高、资源受限或问题规模过大而变得不可行。这时,对偶分解方法为我们提供了一种高效的替代方案。对偶分解算法的核心思想是将复杂的原问题转化为其对应的拉格朗日对偶问题。通过引入拉格朗日乘子并构造对偶函数,该方法在一定程度上简化了问题的求解过程。特别是,对于包含多个约束条件的大规模优化问题,对偶分解可以将原问题分解为若干个小规模、相互独立的子问题。

闲人编程的博客 1750

在kubernetes中创建tomcat与mysql集群

背景相信大家应该都在自己的电脑中部署过tomcat与mysql集群,我们可以通过访问tomcat来访问后台数据库。kubernetes是一个可自动部署、扩缩、管理容器化应用的工具。本篇博客主要讲解如何在kubernetes中部署tomcat与mysql集群。当然,这涉及到kubernetes的自动化部署功能。至于扩缩、管理功能,我这里就不详述了,以后有机会再讲解。基础在kubernetes中部署to

hty46565的博客 1万+

蓝牙调试抓包工具--nRF Connect移动端 使用详细总结

摘要: nRF Connect移动端是一款功能全面的蓝牙低功耗(BLE)调试工具,支持设备扫描、多设备连接、服务/特征值查看及数据读写操作。核心功能包括实时数据通信(读取/写入/通知)、设备固件更新(DFU)以及高级工具如自动化测试和信号分析。兼容Android 4.3+和iOS设备,适用于开发调试(如ESP32/nRF52)、设备管理和数据分析。需注意设备兼容性问题(如旧安卓设备可能需关闭连续扫描),并确保数据类型匹配。配套工具链包括nRF Toolbox和nRF Connect SDK,是BLE开发的必

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2375

【MATLAB代码】UKF组合导航例程,15维状态量、3维观测量。附完整的代码,有中文注释、误差输出图像

摘要 本文提出了一种基于15维误差状态模型的UKF组合导航算法,实现了三维位置、速度和姿态的高精度估计。算法采用严格的误差状态模型,包含位置(3)、速度(3)、姿态(3)、陀螺偏差(3)和加速度计偏差(3)共15个状态量,通过3维GNSS位置观测进行校正。仿真结果表明,相比纯IMU积分,UKF算法能有效抑制误差积累,显著提高导航精度。文中提供了完整的MATLAB源代码,可直接运行并复现三维轨迹对比、位置/速度曲线及误差分析结果。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 310

K8s Deployment脚本部署tomcat集群,Service外部访问Tomcat集群(Service NodePort方式)

部署是指Kubernetes向Node节点发送指令,创建容器的过程 Kubernetes支持yml格式的部署脚本 kubectl create -f 部署yml文件 #创建部署

Raymond的博客 964

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

Kubernetes(k8s)学习笔记(四)--入门基本操作

本文通过kubernetes部署tomcat集群,来学习和掌握kubernetes的一些入门基本操作。

shenxiaomo1688的博客 1383

pscad IEEE标准系统搭建说明

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

老版QQ原生表情gif动态

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

kubernetes中 demo: tomcat + mysql

  目录(?)[+] 背景 相信大家应该都在自己的电脑中部署过tomcat与mysql集群,我们可以通过访问tomcat来访问后台数据库。kubernetes是一个可自动部署、扩缩、管理容器化应用的工具。本篇博客主要讲解如何在kubernetes中部署tomcat与mysql集群。当然,这涉及到kubernetes的自动化部署功能。至于扩缩、管理功能,我这里就不详述了,以后有机会再讲解。 ...

大树叶 技术专栏 5396

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...

k8s部署服务——内部服务关联

背景相信大家应该都在自己的电脑中部署过tomcat与mysql集群,我们可以通过访问tomcat来访问后台数据库。kubernetes是一个可自动部署、扩缩、管理容器化应用的工具。本篇博客主要讲解如何在kubernetes中部署tomcat与mysql集群。当然,这涉及到kubernetes的自动化部署功能。至于扩缩、管理功能,我这里就不详述了,以后有机会再讲解。基础在kubernetes中部署t...

u010955999的博客 1万+

K8S:Yaml文件详解

详解k8s中的port:●portport 是 k8s 集群内部访问service的端口,即通过 clusterIP: port 可以从 Pod 所在的 Node 上访问到 service●nodePortnodePort 是外部访问 k8s 集群中 service 的端口,通过 nodeIP: nodePort 可以从外部访问到某个 service。

m0_71493671的博客 6359

kubeadm部署k8s集群

kubeadm部署k8s集群 服务器环境:(2GB或更多RAM,2个CPU或更多CPU) Kubernetes Master1节点:172.20.26.34 Kubernetes Master2节点:172.20.26.36 Kubernetes Node1节点: 172.20.26.37 Kubernetes Node2节点: 172.20.26.38 操作系统:CentOS7.9 每台服务器部署前将日常工具安装完成 yum install vim net-tools lrzsz ep

lqcbj的博客 1749

K8S:Yaml文件详解及编写示例

本文主要针对K8S中的yaml文件格式、yaml的语法格式以及编写的注意事项和deployment编写nginx服务、deployment编写redis服务进行示例安装部署并对相关的文件中的内容进行了详细的介绍

Katie_ff的博客 4975

k8s安装及部署步骤

国内安装k8s的四种途径: 1. 使用kubeadmin通过离线镜像安装 2. 使用阿里公有云平台k8s,钞能力 3. 通过yum官方仓库安装,上古版本 4. 二进制包的形式进行安装,kubeasz (github) 安装步骤: 一、 环境配置: 1. 设置主机名与时区 timedatectl set-timezone Asia/Shang...

骐骏的专栏 4万+

Kubernetes中安装部署Nacos集群

官方下载的nacos-server-1.2.1.zip包需要经过处理下:修改配置、加入docker-startup.sh启动脚本。

weixin_39941298的博客 2254

k8s部署tomcat及web应用_在k8s部署tomcat

小试牛刀准备编排文件tomcat.yaml:(包含两部分,副本rc和service配置可为两个文件,不过我们此处合并为一个)#rc副本相关apiVersion:extensions/v1beta1#表示Deployment调度配置kind:Deploymentmetadata:#调度对象的全称,全局唯一name:mywebspec:#pod副本数量replicas:2#根据此模版创建pod...

weixin_39891317的博客 2153
上一篇: k8s集群安装——(二)部署Tomcat运行,扩容,删除
下一篇: k8s集群安装Ingress,KubeSphere可视化界面安装K8s
凌晨里的无聊人
博客等级 码龄8年 2320粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

凌晨里的无聊人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值