netty - DefaultAttributeMap用法测试

超越音频!STM32 SAI接口在AD7768高速ADC采集中的妙用(含PCB布局指南) 本文深入探讨了如何将STM32的SAI接口应用于AD7768高速ADC的数据采集系统,超越了其传统的音频应用范畴。文章详细解析了SAI协议与ADC时序的匹配方法,提供了从CubeMX配置、DMA数据搬运到关键PCB布局指南的完整实战方案,旨在帮助工程师实现稳定、高精度的工业级高速数据采集。 阅读详情

本测试类是为了演示netty 4.1.9 版本中的DefaultAttributeMap的用法,至于DefaultAttributeMap内部数据结构解析改天再完善,主要现在有急事,粘贴完我就走人。


package com.lihong.DDPush;

import io.netty.util.Attribute;
import io.netty.util.AttributeKey;
import io.netty.util.DefaultAttributeMap;
import org.junit.Test;

/**
 * Created by lihong10 on 2017/5/27.
 */
public class AttributeTest {

    @Test
    public void testAttributeKey() {


        System.out.println(Integer.toBinaryString(-1));

        AttributeKey<String> key1 = AttributeKey.newInstance("aa");
        AttributeKey<String> key2 = AttributeKey.newInstance("bb");
        AttributeKey<String> key3 = AttributeKey.newInstance("cc");
        AttributeKey<String> key4 = AttributeKey.newInstance("dd");
        AttributeKey<String> key5 = AttributeKey.newInstance("ee");
        AttributeKey<String> key6 = AttributeKey.newInstance("ff");
        AttributeKey<String> key7 = AttributeKey.newInstance("gg");

        DefaultAttributeMap map = new DefaultAttributeMap();

        Attribute<String> attr1 = map.attr(key1);
        Attribute<String> attr2 = map.attr(key2);
        Attribute<String> attr3 = map.attr(key3);
        Attribute<String> attr4 = map.attr(key4);
        Attribute<String> attr5 = map.attr(key5);
        Attribute<String> attr6 = map.attr(key6);
        Attribute<String> attr7 = map.attr(key7);

        System.out.println(attr1.getClass());

        attr1.set("aa-value");
        attr2.set("bb-value");
        attr3.set("cc-value");

        attr1.remove();
        Attribute<String> attr1_1 = map.attr(key1);
        attr1_1.set("aa-new-value");

        System.out.println(map.hasAttr(key1));

        System.out.println(1&3);
        System.out.println(2&3);
        System.out.println(3&3);
        System.out.println(4&3);
        System.out.println(5&3);
        System.out.println(6&3);
        System.out.println(7&3);

        System.out.println(map.hasAttr(key1));
        System.out.println(map.hasAttr(key2));
        System.out.println(map.hasAttr(key3));
        System.out.println(map.hasAttr(key4));
        System.out.println(map.hasAttr(key5));
        System.out.println(map.hasAttr(key6));
        System.out.println(map.hasAttr(key7));
   }

}
【CTFSHOW】web入门 黑盒测试 文章目录写在前面web380web381web382web383web384web385web386web387web388web389web390web391web392web393web394web395参考资料 写在前面 一直没搞过渗透,先学学黑盒测试吧 web380 进入题目发现是一个关于灯泡的悲伤故事,点进去,看到跳转到page_1.php页面。 我们访问page.php试试: 发现报错:$id.php,可以猜想需要传名称为id的参数,来访问id.php。我们访问page.php?id=1试试 阅读详情

相关推荐

Claude Code与Codex深度对比:终端AI编程助手选型指南

大语言模型驱动的AI编程助手已成为开发者提效的重要工具,它们基于自然语言交互,自动完成代码生成、重构和调试。这类工具依赖上下文理解与工程实践,不同产品在交互模式、模型接入和任务执行上差异显著。从终端CLI编程场景出发,梳理AI编程助手的设计原理与技术价值,重点对比Anthropic Claude Code与OpenAI Codex在安装配置、上下文管理、第三方模型接入(如DeepSeek)以及高频报错处理上的实际表现。无论你是新手还是资深工程师,理解这些差异有助于根据自身工作流选择合适工具,或在两者间灵活切

weixin_33755649的博客 3305

Netty中的AttributeMap属性(AttributeKey、AttributeMap、Attribute)

文章目录0.AttributeKey、AttributeMap、Attribute0.1 Attribute接口0.2 AttributeKey类0.3 AttributeMap1.前言2. 使用3.例子2.实例2 参考文章,点击这里 原文章,点击这里 0.AttributeKey、AttributeMap、Attribute AttributeMap可以看成是一个key为AttributeKey类型,value为Attribute类型的Map,而Attribute内存储的是一个值引用,它可以原子的更新内容

weixin_42030357的博客 7368

BH1750光强度传感器Stm32f103驱动(已测试ok)

1. 实验:Stm32f103 驱动 bh1750采集光照强度,串口打印采集到的数据。 2. 实验准备器材 开发版:stm32f103c8t6 器件:bh1750 GY-302 开发环境:win10,KILE4 下载程序的软件:FlyMcu.exe 串口调试助手:ComAssistant.exe 3. BH1750 的接线 VCC:5V或3.3V ...

weixin_53329977的博客 8932

Netty之DefaultAttributeMap与AttributeKey的机制和原理

Netty 的 DefaultAttributeMap 源码分析

黄裳博客 1099

告别手动拖拽!PyQt5/PyQt6 QTableView列宽自适应窗口的三种实战方案(附性能对比)

本文详细介绍了PyQt5/PyQt6中QTableView列宽自适应窗口的三种实战方案,包括Stretch模式、resizeEvent手动计算和ResizeToContents模式,并附有性能对比。帮助开发者解决窗口大小变化时列宽不变的常见问题,提升用户体验和开发效率。

weixin_42538752的博客 235

父子Agent架构:解决AI系统上下文污染的技术方案

在AI系统设计中,上下文管理是核心挑战之一。传统单Agent架构在处理复杂任务时,常面临上下文无限膨胀导致的信息淹没和性能下降问题。父子Agent架构通过职责分离和上下文隔离机制,采用分而治之的思想,将大任务拆解为多个子任务由专门子Agent处理。该架构中父Agent负责任务规划和结果汇总,子Agent执行具体任务后立即销毁中间状态,通过精炼摘要进行通信。这种设计不仅能有效控制上下文长度,还能提升系统稳定性和执行效率,特别适用于编程辅助、自动化测试等需要多步骤处理的场景。父子Agent架构体现了计算机科学中

weixin_42531710的博客 353

Netty 之 AttributeMap属性

本来没打算研究这个东西的,一开始觉得没啥用,甚至觉得这个东西有点鸡肋,不过慢慢接触之后,发现了这个AttributeMap的重要性 初学这个东西,我们还是先理解AttributeMap的用法吧 1)AttributeMap这是是绑定在Channel或者ChannelHandlerContext上的一个附件,相当于依附在这两个对象上的寄生虫一样,相当于附件一样,如图所示:

z69183787的专栏 6974

自然语言处理之机器翻译:Transformer:Transformer在低资源语言翻译中的应用

Transformer模型是自然语言处理领域的一个重要突破,由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)的序列依赖性,采用自注意力机制(Self-Attention)处理输入序列,极大地提高了训练效率和模型性能。

zhubeibei168的博客 1015

spring boot netty 即时通讯系统之utils工具类(三)

Attributes.java import io.netty.util.AttributeKey; /** * 通道中的自定义属性 */ public interface Attributes { /** * 用户控制用户是否登录 newInstance创建一个给定名称为login的key,如果已存在则会报错 */ AttributeK...

qq_36760953的博客 1264

8.26华为OD机试真题 新系统【仓库查询】

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

qq_45776114的博客 549

超级全的PCB LAYOUT高速信号走线指南——简化应用版

在PCB Layout中,几乎涵盖了所有的高速信号走线指南。包括了TF/SD、HDMI、LVDS、DVP、eDP、MIPI、USB2.0、USB3.0、MAC、BT.1120、PCIE高速信号等等。此版本为简化版。

bhxc809751502的博客 8552

一起学Netty(十五)之 AttributeMap属性

本来没打算研究这个东西的,一开始觉得没啥用,甚至觉得这个东西有点鸡肋,不过慢慢接触之后,发现了这个AttributeMap的重要性 初学这个东西,我们还是先理解AttributeMap的用法吧 AttributeMap这个是

BazingaLyncc 2万+

MinerU PDF解析工具:从安装配置到本地部署与API调用的全流程指南

MinerU是由上海人工智能实验室开源的高质量PDF解析工具,可将包含图片、公式、表格的复杂PDF转换为Markdown和JSON格式。安装前需准备Python 3.10-3.13环境,推荐使用8核CPU和32GB内存。支持通过HuggingFace或ModelScope下载模型,国内用户建议使用ModelScope源加速下载。配置文件中可设置本地模型路径,支持多种语言识别和两种解析后端(Pipeline和VLM)。输出包含可视化文件、内容文件和中间结果文件,并提供了完整的Python API调用示例。

算法工程师 2031

Netty的AttributeMap

Netty的AttributeMap AttributeMap接口 public interface AttributeMap { Attribute attr(AttributeKey key); } AttributeMap接口只有一个attr()方法,接收一个AttributeKey类型的key,返回一个Attribute类型的value。按照Javadoc,

Coder_py的博客 1571

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【Netty】【源码】AttributeMap相关

JAVA本身有map接口及各种实现,Netty又根据自身的需要,进行了重新实现。个人感觉更多是针对使用习惯上及特定场景上的不同,进行重新的封装实现。(当然更多引用该接口的地方还没来的及看,有更多设计上的考虑也是有可能的)。整个看下来,技巧性的东西很值得学习。比如Attribute封装map的操作,用id来排序(用于二分查找),以及用map存储来使同名key唯一,以使用==来判断是否同一个key来代替equals判断。。。所有这些都是为了读多写少,key复用(每个channel都需要存储对应的key)的场景。

凉水的博客 526

深度学习工具包 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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

netty(八):AttributeKey和AttributeMap实现不同channelContext中传递数据

1.AttributeMap 在netty4中将数据保存在channel中使用的是AttributeMap,如图,因为AbstractChannelHandlerContext实现了ChannelHandlerContext,而ChannelHandlerContext继承了AttributeMap。 故ChannelInboundHandlerAdapter实现了AttributeMap,可以把...

流的博客 2849

Netty4学习笔记(7)-- AttributeMap

Netty4 AttributeMap接口介绍

zxh的专栏 2万+

netty 学习笔记(一)

事件循环组【实际是一个死循环】 bossGroup:负责处理连接 workerGroup:负责具体工作 ServerBootstrap:服务引导启动器,NIO的辅助工具 handler方法是为bossGroup提供的处理方式 childHandler方法是为workGroup提供的处理方式 ChannelFuture 异步操作执行完,没有等待执行完成再返回,直接返回的Future。 public class TestServer { public static void .

偶阵雨的博客 292

Netty笔记(七)之AttributeMap

文章目录netty版本BootstrapBootstrapServerBootstrap netty版本 netty版本:io.netty:netty-all:4.1.29.Final Bootstrap 引导(Bootstrap)一个应用程序是对它进行配置,并使它运行起来的过程。Netty处理引导的方式使你的应用程序和网络层相隔离,无论它是客户端还是服务器。 Boostrap类层次结...

jannal专栏 627

【Netty 】Netty Channel 概述(三)

前两篇文章我们已经对Netty进行了简单的了解和架构设计原理的剖析。Netty 概述(一)Netty 架构设计(二)本篇文章我们就来开始对Netty源码的分析,首先我们来讲解 Netty 中Channel相关的功能和接口。Channel 顾名思义就是 管道,代表网络 Socket 或能够进行 I/O 操作的组件的关系。这些 I/O 操作包括读、写、连接和绑定。简单的说,Channel 就是代表连接,实体之间的连接,程序之间的连接,文件之间的连接,设备之间的连接。同时它也是数据入站和出站的载体。

DreamSun的博客 7914

Java报错-java.lang.NoSuchMethodError: io.netty.util.AttributeKey.newInstance(Ljava/lang/String;)

Issue java.lang.NoSuchMethodError: io.netty.util.AttributeKey.newInstance(Ljava/lang/String;)Lio/netty/util/AttributeKey; at org.elasticsearch.http.netty4.Netty4HttpServerTransport.<clinit>(Ne...

Destiny的博客 4495

java attribute属性_AttributeMap属性

本来没打算研究这个东西的,一开始觉得没啥用,甚至觉得这个东西有点鸡肋,不过慢慢接触之后,发现了这个AttributeMap的重要性初学这个东西,我们还是先理解AttributeMap的用法吧1)AttributeMap这是是绑定在Channel或者ChannelHandlerContext上的一个附件,相当于依附在这两个对象上的寄生虫一样,相当于附件一样,如图所示:这个图还算比较形象地描述了Att...

weixin_29577659的博客 586

IDEA填坑 | ES_io.netty.util.AttributeKey.newInstance(Ljava/lang/String;)Lio/netty/util/AttributeKey

往下看之前,先排查您遇到的问题是否与本人一致。 看lib 下的依赖包,是不是netty 有4.0.23 和4.1.13 两个版本。我这边是在4.1.13 上面,还有一个netty-all:4.0.23.Final 的版本 如果有,把那个4.0.23 版本的右键remove 掉即可。 为了以防万一,可以先把程序做一个备份,再移除。 ...

whisky_12的博客 1041

Netty源码分析-DefaultAttributeMap

package io.netty.util; import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReferenceArray; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater...

大新博客 693
上一篇: java项目中设置 System.getProperty(“XXX”)自定义变量
下一篇: netty-对象池实现Recycler用法测试
lhever_
博客等级 码龄14年 213粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值