Alibaba内网Java性能调优实战(全彩小册开源)面面俱到,真的全

阿里巴巴Java性能调优实战(2021华山版) 立即下载

性能调优是什么?

性能调优就是对计算机硬件、操作系统和应用有相当深入的了解,调节三者之间的关系,实现整个系统(包括硬件、操作系统、应用)的性能最大化。性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。性能调优基本上按照以下步骤进行:明确优化目标、发现性能瓶颈、性能调优、通过监控及数据统计工具获得数据、确认是否达到目标。

为什么要做性能调优?

互联网时代,一个简单的系统就囊括了应用程序、数据库、容器、操作系统、网络等技术,线上一旦出现性能问题,就可能要你协调多方面组件去进行优化,这就是技术广度;而很多性能问题呢,又隐藏得很深,可能因为一个小小的代码,也可能因为线程池的类型选择错误…可归根结底考验的还是我们对这项技术的了解程度,这就是技术深度,显然,性能调优不是一件容易的事。

好的系统性能调优不仅仅可以提高系统的性能,还能为公司节省资源。这也是我们做性能调优的最直接的目的。

然而,很多小伙伴在入门性能优化或者说学习性能优化上总是缺乏系统地、方法级别的指引,导致自己缺乏思路!

因此在这里准备了这份Alibaba内网的Java性能调优实战(全彩小册)提供给大家学习

Alibaba内网Java性能调优实战(全彩小册)

Ps:由于篇幅限制,笔记无法全部为大家展示出来,就以截图主要内容的形式让大家参考啦

小册将从实战出发,精选高频性能问题,透过Java底层源码,提炼出优化思路和它背后的实现原理,最后形成一套“学完就能用的调优方法论”。这也是很多一线大厂对于高级工程师的要求,希望通过这笔记帮助你快速进阶。

笔记将内容分为七大模块,从上到下依次详解Java应用服务的每一层优化实战。

Java性能调优实战-概述篇

本篇内容:为你建立两个标准。一个是性能调优标准,告诉你可以通过哪些参数去衡量系统性能。另一个是调优过程标准,带你了解通过哪些严格的调优策略,我们可以排查性能问题,从而解决问题。

Java性能调优实战-Java编程调优篇

本篇内容:JDK是Java语言的基础库,熟悉JDK中各个包中的工具类,可以帮助你编写出高性能代码。这里我会从基础的数据类型讲起,涉及容器在实际应用场景中的调优,还有现在互联网系统架构中比较重要的网络通信调优。

Java性能调优实战-多线程调优篇

本篇内容:目前大部分服务器都是多核处理器,多线程编程的应用广泛。为了保证线程的安全性,通常会用到同步锁,这会为系统埋下很多隐患,除此之外,还有多线程高并发带来的性能问题,这些都会在这个模块重点讲解。

Java性能调优实战-JVM调优篇

本篇内容:JVM性能监测及调优。Java 应用程序是运行在JVM之上的,对JVM进行调优可以提升系统性能。这里重点讲解Java对象的创建和回收、内存分配等。

Java性能调优实战-设计模式调优篇

本篇内容:设计模式调优。在架构设计中,我们经常会用到一一些设计模式来优化架构设计。这里我将结合一些复杂的应用场景, 分享设计优化案例。

Java性能调优实战-数据库调优篇

本篇内容:数据库性能调优。数据库最容易成为整个系统的性能瓶颈,这里我会重点解析一些数据库的常用调优方法。

Java性能调优实战-实战篇

本篇内容:实战演练场。以上六个模块的内容,都是基于某个点的调优,现在是时候把你前面所学都调动起来了,这里我将带你进入综合性能问题高频出现的应用场景,学习整体调优方法。

内容精选

如何制定性能调优策略?

如何解决高井发下I/O瓶颈?

如何优化垃圾回收机制?

如何优化电商系统中复杂的商品价格策略?

高并发场景下的数据库事务调优

电商系统的分布式事务调优

Ps:由于篇幅限制,笔记无法全部为大家展示出来,就以截图主要内容的形式让大家参考啦

最后

正所谓"实践出真知"。这些年在生产环境中遇到的事故不少,很多坑一点点踩平,就走出了一条路,这个过程中我收获了很多实打实的经验,希望能分享给更多的人,我们一起学习交流和探讨。

阿里+Java+开发手册、阿里巴巴Java性能调优实战 阿里+Java+开发手册(嵩山版).pdf 阿里巴巴Java性能调优实战(2021华山版).pdf 立即下载

相关推荐

人形机器人硬件开发:骨架系统设计全攻略

本文以人形机器人骨架系统为核心研究对象,系统解析其从理论建模到工程实现的全流程设计方法。通过融合刚体力学、材料科学与机器人控制理论,构建"概念基础-理论框架-架构设计-实现机制-实际应用-高级考量-综合拓展"的七层分析体系。重点覆盖运动学/动力学建模、轻量化结构设计、关节模块集成、多物理场耦合优化等关键技术,结合波士顿动力Atlas、本田ASIMO等经典案例,提供从原型设计到量产验证的工程实践指南。

AI天才研究院 1878

抢先看!阿里发布2023最新版分布式核心小册,GitHub标星破已千万

一个分布式系统你可以看做是一组计算机系统一起工作,而在终端用户的视角看过去,就像一台计算机在工作一样。这组一起工作的计算机,拥有共享的状态 ,他们同时运行,独立机器的故障不会影响整个系统的正常运行从这个定义来看,数据并行、任务并行其实都可以算作是分布式的一种形态。从这些计算方式的演变中不难看出,产生分布式的最主要驱动力量,是我们对于性能、可用性及可扩展性的不懈追求。

m0_73311735的博客 990

JDK8升级JDK17过程中遇到的那些坑

JDK8虽然非常好,但是JDK版本已经发布到JDK20了,且JDK8后的版本升级了很多新的特性,如模块化、ZGC以及虚拟线程、结构性并发等,也是非常有吸引力的,所以决定将基于JDK8的项目升级到最近的LTS版本JDK17。

BASK2312的博客 6685

2024最新版阿里巴巴Java性能调优速成手册强烈推荐

JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

2401_83641533的博客 1075

【β-Boltzmann探索策略】

𝜀是一个介于0和1之间的参数,用于控制探索和利用的比例。当𝜀较大时,智能体更倾向于探索;当𝜀较小时,智能体更倾向于利用已知信息。

m0_59385870的博客 1085

手把手教您解决 AdGuard Home DNS重写功能失效的问题

AdGuard Home 设置了 DNS 重写,规则明明没问题,客户端却死活解析不到内网 IP?🤯 别急着重装!🚫 本文手把手教你如何解决软路由 DNS 解析“玄学”故障!🛠️🚀

XiaoqiangClub的博客 920

脱离CRUD苦海 !性能优化全栈小册来了!

不管你是普通程序员、软件设计师、架构师以及软件开发爱好者,如果你想要深入Java内核开发!这份文档一定能对您有所帮助。

老男孩的架构路 458

SAP_FI模块_固定资产期初导入全流程(含导入代码)

SAP 期初导入资产主数据以及金额相关的操作全流程记录,包含了批导程序的代码,以及错误记录

风沙的博客 1405

吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%

现实是大多数人甚至都不到从哪入手,更别说参与公司系统优化,在简历上添上一笔有过性能调优经验了;所以为了帮各位粉丝朋友更快的上手Java性能优化,小编今天就把前段时间阿里的一位老哥私授我的其内部最新2023版Java性能优化小册分享出来,供大家参考学习。其原因有两个:一是提高系统的性能,二是为公司节省资源。两者都能做到,那你就不可谓不是普通程序员眼中的“调优大神了”。由于小册近500页,头条篇幅限制就不能把所有内容一一展示出来了(下面我就展示主要内容)。大幅度减少服务器的数量,还能让系统性能较之前有所提升。

m0_63437643的博客 262

innovus:sroute 双层follow pin的做法

根据std cellpower pin的层次可以分成两种情况。

m0_61544122的博客 2731

【Java基础知识 1】Java入门级概述

优快云最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。

学Java,找哪吒 16万+

Alibaba内网Java性能调优实战(全彩小册开源)

本篇内容:为你建立两个标准。一个是性能调优标准,告诉你可以通过哪些参数去衡量系统性能。另一个是调优过程标准,带你了解通过哪些严格的调优策略,我们可以排查性能问题,从而解决问题。

m0_50180963的博客 909

什么是 SAP S/4HANA 的 Brown Field 迁移和 Green Field 迁移

Brown Field实施涉及升级现有的 SAP 环境并继续使用一些遗留组件。它类似于传统升级,因为它涉及软件更新、一些数据转换和一些业务流程的调整。它仍然具有破坏性,但比Green Field实施要少得多。如果你是风险厌恶者,倾向于逐步使用 S/4HANA 的功能,或担心 S/4HANA Green Field方法的成本,那么你可能更喜欢这种方法。混合方法结合了Brown Field和Green Field迁移的一些元素。它从公司的 SAP 系统的副本开始,包括配置设置和定制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1324

Alibaba内网Java性能调优实战(全彩版小册限时开源)

本篇内容:为你建立两个标准。一个是性能调优标准,告诉你可以通过哪些参数去衡量系统性能。另一个是调优过程标准,带你了解通过哪些严格的调优策略,我们可以排查性能问题,从而解决问题。

m0_50180963的博客 653

深度学习工具包 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 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Github 标星 41.6K!Alibaba 内网 Java 性能调优实战(全彩小册开源)

本篇内容:为你建立两个标准。一个是性能调优标准,告诉你可以通过哪些参数去衡量系统性能。另一个是调优过程标准,带你了解通过哪些严格的调优策略,我们可以排查性能问题,从而解决问题。正所谓"实践出真知这些年在生产环境中遇到的事故不少,很多坑一点点踩平,就走出了一条路,这个过程中我收获了很多实打实的经验,希望能分享给更多的人,我们一起学习交流和探讨。

m0_69804655的博客 232

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

太卷了,Alibaba内网Java性能调优实战笔记,全网震撼开源?

本篇内容:为你建立两个标准。一个是性能调优标准,告诉你可以通过哪些参数去衡量系统性能。另一个是调优过程标准,带你了解通过哪些严格的调优策略,我们可以排查性能问题,从而解决问题。正所谓"实践出真知这些年在生产环境中遇到的事故不少,很多坑一点点踩平,就走出了一条路,这个过程中我收获了很多实打实的经验,希望能分享给更多的人,我们一起学习交流和探讨。

wdj_yyds的博客 138

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Alibaba内网“亿级并发系统架构设计”全彩版小册,限时开源

现在 Java 面试,问的是越来越底层。作为一名合格的 Java 程序员不仅要能“上天”,还要能“入地”!上天是指高并发,缓存,大流量,大数据量,能在更高的层面解决问题。入地是指从 JVM,OS,算法,线程,IO 这块刨根究底,对底层知识都能知其然还要知其所以然。而本篇 LZ 要跟大家探讨的就是“上天”这块的内容。据有关数据表明,现在基本工作年限超过 5 年的 Java 开发岗以及各大厂招聘岗位,对于这块内容是必定会考察的。

m0_50180963的博客 399

阿里p8耗时3年总结出这份并发编程手册(全彩版)不看后悔

并发世界很有趣,不要错过 前言: Java有进阶,其名为并发,并发知识之大,一口吃不下。那好,请您多吃几口,又没说一顿吃完,细嚼慢咽才有味.所有 Java 书籍都将并发编程放在其高级/进阶篇章中,其重要性不言而喻,学好并发也是自身走入高级行列的必备素质之一 并发/并行,进程/线程这些概念总是显得过于抽象,因为这是与操作系统沟通用到的词汇,就像我们习惯了使用十进制算法,二进制和16进制就需要思维的切换;生活中,我们彼此总是不能互相理解,平静之后,我们知道要换位思考;程序的世界也一样,为了更好的理解问题,

m0_64354070的博客 2663

阿里Java性能优化秘籍:20万字实战经验,轻松晋级P7

要构建一个全面的性能优化知识体系,需要系统地学习和掌握这些相关知识,而不是通过碎片化的获取方式。基础理论在实际应用中非常实用,能够直接切入主题,让你在工作中能够有理可依、有据可循。实践同样重要。性能优化并不是针对固定、单一场景的优化方法,不同的场景需要采用不同的方法。例如,如果你的业务是串行的,并且耗时较长,那么简单地增加CPU资源可能无法提升性能;而如果你的业务是并行的,也不能过分追求每一行代码的优化,而需要关注各个资源的协调,着重针对短板进行优化,以达到最佳效果。

资料免费分享,点击名片 146

程序员金三银四必修课:Java性能优化手册(设计+代码+JVM)2021最新版!

性能优化 性能优化可以说是我们程序员的必修课,如果你想要跳出CRUD的苦海,成为一个更“高级”的程序员的话,性能优化这一关你是无论无何都要去面对的。为了提升系统性能,开发人员可以从系统的各个角度和层次对系统进行优化。除了最常见的代码优化外,在软件架构上、JVM虚拟机层、数据库以及操作系统层面都可以通过各种手段进行调优,从而在整体上提升系统的性能。 为了能让大家更好的入手性能优化,今天LZ为大家带来了一份阿里内部强推性能优化全栈小册,内容涵盖设计调优、代码调优、JVM调优。大家看了之后就知道,差.

bieber007的博客 630

Unity3D 性能优化

http://blog.youkuaiyun.com/onafioo/article/details/51218104

baidu_28955655的博客 343

我服了!腾讯技术专家手敲《Redis源码日志笔记》,字字如金

引言 本文分为六个部分,包括 Redis 源码日志,服务框架,基础数据结构,内功心法,应用,其他,从源码层面循序渐进的了解Redis。可以快速、有效地了解Redis 的内部构造以及运作机制,更好、更高效地使用Redis。 本文框架如下 第一部分,主要是在阅读代码过程中的日志和笔记; 第二部分,主要介绍了 Redis 的主要框架,以及 Redis 是如何提供服务的,从一个最简单的命令开始讲起; 第三部分,主要介绍 Redis 底层用作存储的数据结构,这一部分很有趣; 第四部分,主要讲解了 Re

文章中资料均可获取,有需要请添加yunduoa2019即可 242
上一篇: 2023金三银四1000道java面试必考题,包含所有大厂高频面试知识点,码住慢慢看
下一篇: 2023最新版SpringCloudAlibaba笔记,把微服务玩的出神入化
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值