程序员职场:3 大原则让你的编程之路越走越顺,新手来了解一下

CISP 考试教材《第 10 章 知识域:软件开发安全》知识整理 第 10 章 知识域:软件开发安全 CISP 考试教材《第 1 章 知识域:信息安全保障》知识整理 CISP 考试教材《第 2 章 知识域:网络安全监管》知识整理 CISP 考试教材《第 3 章 知识域:信息安全管理》知识整理 CISP 考试教材《第 4 章 知识域:业务连续性》知识整理 CISP 考试教材《第 5 章 知识域:安全工程与运营》知识整理 CISP 考试教材《第 6 章 知识域:信息安全评估》知识整理 CISP 考试教材《第 7 章 知识域:信息安全支撑技术》知识整理 CI 阅读详情

本文为大家带来几个非常实用的编程原则并附案例,让你一次学会应对编程中的问题,在你的晋升路上越走越顺。

一、编程的世界里十面埋伏

编程,是一件容易的事,也是一件不容易的事。说它容易,是因为掌握一些基本的数据类型和条件语句,就可以实现复杂的逻辑;说它不容易,是因为高性能高可用的代码,需要了解的知识有很多很多;编程的世界,也跟扫雷游戏的世界一样,充满雷区,十面埋伏,一不小心,随时都可能踩雷,随时都可能Game Over。

而玩过扫雷的人都知道,避免踩雷的最好方法,就是提前识别雷区并做标记(设防)避免踩踏。

鉴于此,编程的世界里,从输入到输出同样需要处处设防,步步为营。

1、对输入的不信任

(1)对空指针的检查

不只是输入,只有是使用到指针的地方,都应该先判断指针是否为NULL,而内存释放后,应当将指针设置为NULL。

【真实案例】:注册系统某段逻辑,正常使用情况下,都有对指针做检查,在某个错误分支,打印日志时,没检查就使用了该字符串;结果可正常运行,但当访问某个依赖模块超时走到改分支,触发bug,导致coredump。

(2)对数据长度的检查

使用字符串或某段buf,特别是memcpy/strcpy时,需要尽量对数据长度做下检查和截断。

【真实案例】:接手oauth系统后运行数月表现良好,突然有一天,发生了coredump,经查,是某个业务不按规定请求包中填写了超长长度,导致memcpy时发生段错误,根本原因,还是没有做好长度检查。

(3)对数据内容的检查

某些场景下,没有对数据内容做检查就直接使用,可能导致意想不到的结果。

【案例】:sql注入和xss攻击都是利用了服务端没有对数据内容做检查的漏洞。

2、对输出(变更)的不信任

变更的影响一般体现在输出,有时候输出的结果并不能简单的判断是否正常,如输出是加密信息,或者输出的内容过于复杂。

所以,对于每次变更

(1)修改代码时,采用不信任编码,正确的不一定是“对”的,再小的修改也应确认其对后续逻辑的影响,有些修正可能改变原来错误时的输出,而输出的改变,就会影响到依赖该改变字段的业务。

(2)发布前,应该对涉及到的场景进行测试和验证,测试可以有效的发现潜在的问题,这是众所周知的。

(3)发布过程,应该采用灰度发布策略,因为测试并非总是能发现问题,灰度发布,可以减少事故影响的范围。常见灰度发布的策略有机器灰度、IP灰度、用户灰度、按比例灰度等,各有优缺点,需要根据具体场景选择,甚至可以同时采用多种的组合。

(4)发布后,全面监控是有效发现问题的一种方法。因为测试环境和正式环境可能存在不一致的地方,也可能测试不够完整,导致上线后有问题,所以需采取措施补救。

A:如使用Monitor监控请求量、成功量、失败量、关键节点等

B:使用DLP告警监控成功率

C:发布完,在正式环境测试一遍

【案例】oauth系统某次修改后编译时,发现有个修改不相关的局部变量未初始化的告警,出于习惯对变量进行了初始化(初始化值和编译器默认赋值不一样),而包头某个字段采用了该未初始化的变量,但在测试用例中未能体现,监控也没细化到每个字段的值,导致测试正常,监控正常;但前端业务齐齐互动使用了该包头字段,导致发布后影响该业务。

二、服务程序的世界里防不胜防

一般的系统,都会有上下游的存在,正如下图所示

而上下游的整个链路中,每个点都是不能保证绝对可靠的,任何一个点都可能随时发生故障,让你措手不及。

因此,不能信任整个链路中的任何一个点,需进行设防。

1、对服务本身的不信任

主要措施如下:

(1)服务监控

前面所述的请求量、成功量、失败量、关键节点、成功率的监控,都是对服务环节的单点监控。

在此基础上,可以加上自动化测试,自动化测试可以模拟应用场景,实现对于流程的监控。

(2)进程秒起

人可能在程序世界里是不可靠的因素(大牛除外),前面的措施,多是依赖人来保证的;所以,coredump还是有可能发生的,这时,进程秒起的实现,就可以有效减少coredump的影响,继续对外提供服务。

2、对依赖系统的不信任

可采用柔性可用策略,对于根据模块的不可或缺性,区分关键路径和非关键路径,并采取不同的策略。

(1)对于非关键路径,采用柔性放过策略

当访问非关键路径超时时,简单的可采取有限制(一定数量、一定比重)的重试,结果超时则跳过该逻辑,进行下一步;复杂一点的统计一下超时的比例,当比例过高时,则跳过该逻辑,进行下一步。

(2)对于关键路径,提供弱化服务的柔性策略

关键路径是不可或缺的服务,不能跳过;某些场景,可以根据目的,在关键路径严重不可用时,提供弱化版的服务。举例如派票系统访问票据存储信息严重不可用时,可提供不依赖于存储的纯算法票据,为弥补安全性的确实,可采取缩短票据有效期等措施。

3、对请求的不信任

(1)对请求来源的不信任

有利可图的地方,就会有黑产时刻盯着,伪造各种请求,对此,可采取如下措施:

A:权限控制

如ip鉴权、模块鉴权、白名单、用户登录态校验等

B:安全审计

权限控制仅能打击一下非正常流程的请求,但坏人经常能够成功模拟用户正常使用的场景;所以,对于一些重要场景,需要加入安全策略,打击如IP、号码等信息聚集,频率过快等机器行为,请求重放、劫持等请求)

(2)对请求量的不信任

前端的请求,不总是平稳的;有活动时,会暴涨;前端业务故障恢复后,也可能暴涨;前端遭到恶意攻击时,也可能暴涨;一旦请求量超过系统负载,将会发生雪崩,最终导致整个服务不可用,对此种种突发情况,后端服务需要有应对措施。

A:频率限制,控制各个业务的最大请求量(业务根据正常请求峰值的2-3倍申请,该值可修改),避免因一个业务暴涨影响所有业务的情况发生。

B:过载保护,虽然有频率限制,但业务过多时,依然有可能某个时间点,所有的请求超过了系统负载,或者到某个IDC,某台机器的请求超过负载,为避免这种情况下发生雪崩,将超过一定时间的请求丢弃,仅处理部分有效的请求,使得系统对外表现为部分可用,而非完全不可用。

三、运营的世界里不可预测

1、对机器的不信任

机器故障时有发生,如果服务存在单点问题,故障时,则服务将完全不可用,而依赖人工的恢复是不可预期的,对此,可通过以下措施解决。

(1)容灾部署

即至少有两台以上的机器可以随时对外提供服务。

(2)心跳探测

用于监控机器是否可用,当机器不可用时,若涉及到主备机器的,应做好主备机器的自动切换;若不涉及到主备的,禁用故障机器对外提供服务即可。

2、对机房的不信任

现实生活中,整个机房不可用也是有发生过的,如2015年的天津滨海新区爆炸事故,导致腾讯在天津的多个机房不能对外提供正常服务,对此采取的措施有:

(1)异地部署

不同IDC、不同城市、不同国家等部署,可用避免整个机房不可用时,有其他机房的机器可以对外提供服务。

(2)容量冗余

对于类似QQ登陆这种入口型的系统,必须保持两倍以上的冗余;如此,可以保证当有一个机房故障时,所有请求迁移到其他机房不会引发系统过载。

3、对电力的不信任

虽然我们越来越离不开电力,但电力却不能保证一直在为我们提供服务。断电时,其影响和机器故障、机房故障类似,机器会关机,数据会丢失,所以,需要对数据进行备份。

(1)磁盘备份

来电后,机器重启,可以从磁盘中恢复数据,但可能会有部分数据丢失。

(2)远程备份

机器磁盘坏了,磁盘的数据会丢失,使用对于重要系统,相关数据应当考虑采用远程备份。

4、对网络的不信任

(1)不同地方,网络时延不一样

一般来说,本地就近的机器,时延要好于异地的机器, 所以,比较简单的做法就是近寻址,如CMLB。

也有部分情况,是异地服务的时延要好于本地服务的时延,所以,如果要做到较好的最优路径寻址,就需要先做网络探测,如Q调。

(2)常有网络有波动或不可用情况

和机器故障一样处理,应当做到自动禁用;但网络故障和机器故障又不一样,经常存在某台机器不可用,但别的机器可以访问的情况,这时就不能在服务端禁用机器了,而应当采用本地回包统计策略,自动禁用服务差机器;同时需配合定时探测禁用机器策略,自动恢复可正常提供服务机器。

5、对人的不信任

人的因素在运营的世界里其实是不稳定的因素(大牛除外),所以,不能对人的操作有过多的信任。

(1)操作备份

每一步操作都有记录,便于发生问题时的回溯,重要的操作需要review,避免个人考虑不周导致事故。

(2)效果确认

实际环境往往和测试环境是存在一些差异,所有在正式环境做变更后,应通过视图review和验证来确认是否符合预期。

(3)变更可回滚

操作前需对旧程序、旧配置等做好备份,以便发生故障时,及时恢复服务。

(4)自动化部署

机器的部署,可能有一堆复杂的流程,如各种权限申请,各种客户端安装等,仅靠文档流程操作加上测试验证时不够的,可能某次部署漏了某个步骤而测试又没测到,上线后就可能发生事故若能所有流程实现自动化,则可有效避免这类问题。

(5)一致性检查

现网的发布可能因某个节点没同步导致漏发,也就是不同的机器服务不一样;对此,有版本号的,可通过版本号监控发现;没版本号的,则需借助进程、配置等的一致性检查来发现问题。

备注:以上提到的不信任策略,有的不能简单的单条使用,需要结合其他的措施一起使用的。

学习C/C++编程知识,提升自己的C/C++编程能力,欢迎关注博主的微信公众号:C语言编程学习基地,一起来学习吧!

来自:java那些事

程序员大咖整理发布,版权归原作者所有,转载请联系作者获得授权

【软件开发】我不相信我的代码 常有人说,写代码比读代码容易,但这并不一定非得如此。当编写较长的代码段时,我发现偶尔停下来回顾一下自己的代码,就像是第一次看到它一样,帮助我发现潜在问题。我会问自己一些基本问题:我的函数是否足够简短?它们的命名是否具有描述性?复杂的逻辑是否封装在独立的函数中?我传递的参数是否过多?等等。 阅读详情

相关推荐

Unity适配Nintendo Switch平台开发

查看文档、下载SDK,都需要账号登录。

凝遥的笔记本 2098

程序世界里的不信任原则

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~作者:林喜东 导语人与人之间最重要的是信任,但程序的世界里,可能信任越少越好;我越发觉得越是高性能高可用的系统里,不信任原则会体现得更加淋漓尽致。 为了少走弯路,写下这篇文章留给自己参考,其中一些是自己踩过的一些坑;一些是接手他人系统时触过的雷;还有一些是从别人分享的经验学习得来;能力有限,先记下自己的一些体会,错误的地方再慢慢改正。一、...

weixin_34259159的博客 283

计算机组成原理实验二 运算器组成实验

事实上,ALU的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。为了实现多种功能的运算,An、Bn数据是不能直接与全加器相连接的,它们受到功能变量F3—F1的制约,因此,可由An、Bn数据和功能变量F3-F1组合成新的函数Xn 、Yn,然后,再将Xn 、Yn和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。AC寄存器可用来存储ALU的输入以实现两个操作数的运算操作,也可以用来存储来自ALU的结果,以将这些结果反馈给ALU以进行更多的处理。

qq_63574533的博客 1449

软件开发中的互不信任原则

**摘要:**互不信任原则强调系统各环节不可盲目信任其他部分,必须独立防护。案例显示:前端未校验用户输入导致XSS攻击、服务间无容错引发雪崩、忽略磁盘异常致数据丢失、配置文件未校验造成崩溃。实践方法包括输入校验、异常处理、超时重试、监控报警和最小权限原则。该原则的核心是“处处设防”,通过各层自主校验提升系统健壮性与安全性。(149字)

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 524

VS2022命令行编译C++报错?一招解决‘fatal error C1034: iostream: 不包括路径集‘

本文针对VS2022命令行编译C++时常见的'fatal error C1034: iostream: 不包括路径集'错误,深入剖析了其根源在于环境变量缺失。文章提供了永久配置用户环境变量(PATH、INCLUDE、LIB)的一劳永逸解决方案,确保在任何终端中都能直接使用cl命令进行编译,并给出了进阶配置与常见错误排查指南。

weixin_29011667的博客 304

八大核心深度学习算法详解:从CNN到Transformer的完整指南

深度学习作为人工智能的核心技术,通过多层神经网络模拟人脑学习机制。其基本原理是利用反向传播算法优化网络参数,从数据中自动提取特征表示。这一技术价值在于能够处理高维复杂数据,在图像识别、自然语言处理等领域实现突破性进展。卷积神经网络(CNN)通过局部连接和权值共享有效处理图像数据,而Transformer架构基于自注意力机制革新了序列建模方式。在实际工程实践中,CNN广泛应用于计算机视觉任务,如图像分类和目标检测;Transformer则成为自然语言处理的主流架构,支撑着BERT、GPT等预训练模型。本文系统

aoe41606的博客 430

让系统坚不可摧:基于不信任原则的防御性编程艺术

面对复杂多变的运行环境、不可预测的用户输入以及潜在的编程错误,如何确保软件在遭遇异常情况时依然能够稳定运行,是每位开发者必须面对的挑战。防御性编程(Defensive Programming)正是为解决这一问题而生的一种编程范式,它强调在编程过程中预见并防范潜在的错误和异常情况,从而增强软件的健壮性和稳定性。防御性编程是一种积极主动的编程策略,它要求开发者在编写代码时,不仅要关注功能的实现,更要关注代码的健壮性和稳定性。

桑凯旋的博客 2265

GNSS/RTK定位失效时的替代方案:视觉惯性里程计(VIO)

GNSS/RTK定位失效时的替代方案:视觉惯性里程计(VIO)​ ,人工智能,计算机视觉,大模型,AI,本文详细介绍了视觉惯性里程计(VIO)作为GNSS/RTK定位失效时的替代方案。阐述了VIO的定义、优势及与其他定位技术的区别,讲解了视觉传感器和IMU的工作原理及数据融合原理,分析了时间同步、标定等关键技术,介绍了VINS-Mono等常用框架、简单代码示例、应用场景,还探讨了VIO面临的挑战与未来发展趋势,展现了其在多个领域的重要性与应用潜力。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 16万+

软件安全性测试设计的基本原则

2015年3月2日 百度了下网上已有的同类话题,讲的有些笼统。这里将我日常工作中涉及到的细化一下,以备忘。 博客里的表格太难用了...直接上图: 下面这张图可以帮忙加深上面表格的理解: 1. 最小授权 只授予每个用户/程序在执行操作时所必须的最小特权。这样可以限制事故、错误、攻击带来的危害,减小特权程序之间潜在的相互影响。 2. 发生故障优先保证安全: 当系统发生故障时,...

Hanson的博客 711

【DRAM存储器四十六】LPDDR5介绍--基本操作之行操作、读、写

简述LPDDR5的行操作和读写时序

highman110的博客 759

Unreal 从入门到精通之VR常用操作

本文总结了使用Unreal5开发VR项目时遇到的常见问题及其解决方案。首先,介绍了如何通过VRPawn的TryTeleport函数设置玩家视角位置,确保头显移动时安全区域的正确传送。其次,详细说明了如何在Unreal中播放视频,包括导入视频文件、创建媒体播放器和媒体纹理,并将其应用到3D物体上。接着,讲解了如何播放VR全景视频,建议使用MediaPlate媒体板并调整几何体为球体。最后,讨论了如何手动打开和关闭VR模式,以便在PC模式和头显模式之间切换。这些方法为VR开发提供了实用的技术指导。

TxNet 951

充满浮躁与抱怨的程序员

我们是一群和平年代充满浮躁与抱怨的程序员 和很多IT人沟通,发现表现出来更多的是浮躁与抱怨,所以有了本文,其实我们不论是coder,还是架构师或项目经理,都存在同样的心理,只是比较的对像及发展的路线不一样罢了。   现在是一个和平与发展的社会,大部份人不会为了吃饱而发愁,更多的是为了生活更好,为了工资、房子、车子,为了得到周围人的褒奖,受到周围人的影响,以至于不知道自己想做什么,常感觉前

andyhuabing的专栏 1689

HTML粉色爱心(完整代码)

HTML语言实现粉色爱心的完整代码。

AIGC 1105

我们是一群和平年代充满浮躁与抱怨的程序员

和很多IT人沟通,发现表现出来更多的是浮躁与抱怨,所以有了本文,其实我们不论是coder,还是架构师或项目经理,都存在同样的心理,只是比较的对像及发展的路线不一样罢了。   现在是一个和平与发展的社会,大部份人不会为了吃饱而发愁,更多的是为了生活更好,为了工资、房子、车子,为了得到周围人的褒奖,受到周围人的影响,以至于不知道自己想做什么,常感觉前途不知在哪里。IT人是这样,国企的人也一样,我们

追求上进的码农 507

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

中国人的“不相信”原则

中国人的“不相信”原则   FT中文网特约撰稿人:俞悦 2006年11月10日 星期五     可以毫不夸张地说,时下一个标准的中国人的生活,必然充满着问号。不信任正全面充斥着生活比如,一个中国妻子的周末。清晨,她用狐疑的目光打量餐桌上的牛奶。她很担心牛奶公司,是不是已经往里面兑了水?当然了,兑水还算是好的,听说为了提高牛奶产量,他们会让那些可怜的奶牛吃药,而那些能让奶牛乳汁喷

YAN DAI 964

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

cisco网络安全技术第一章测验以及考试

15、思科 Network Foundation Protection 框架的哪个功能领域负责网络运营所需的、设备生成的数据包,例如 ARP 消息交换和路由通告?21、一名心怀不满的员工正在使用 Wireshark 挖掘具有管理权限的 Telnet 用户名和密码。该攻击属于哪一类型?2、哪种思科网络安全工具是基于云的服务,可以向网络专业人员提供有关当前网络攻击的警报?24、与激进黑客或国家资助的黑客相比,网络犯罪分子进行网络攻击的动机通常是什么?13、缓解蠕虫攻击的哪个阶段涉及对受感染的系统进行主动杀毒?

2301_76907962的博客 1458

OV9734 DATASHEET,完整规格书

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

编程三原则和代码执行的完整过程

今天和大家分享一下编程的三大原则和解读,然后内视程序执行过程的奇幻之旅! 一、编程的三大原则: 第一:编写程序前应该深思熟虑 第二:程序应该是具有可读性的短文,它将在计算机上执行,从而解决问题。 第三:实践是提高编程能力和解决问题能力最好的办法 from : Richard enbody 1、解读: 第一:开始编程意味着要从细节上开始设计,要考虑如何解决问题。如果一开始就编写程序,那么程序的结构...

qq_36615469的博客 986

面向对象编程的原则

1、开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。 2、里氏代换原则(Liskov Substitution Principle) 里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石

qq_65249767的博客 866

程序员遵守三大法则

第一法则 程序员不得损害产品质量,或袖手旁观产品质量受到损害。 第二法则 程序员必须服从产品经理的命令,除非违背第一法则。 第三法则 程序员必须保护自己,除非违背第一和第二法则。 繁殖定律 程序员不得参与程序员的孕育和培养,除非新程序员的行动符合以上三大法则。 引用自机器人三大大定律(著名的伯斯塔尔法则),三大法则确实在开发中值得思考。...

deng131的专栏 415

第8章 安全模型、设计和能力的原则

为某些类型的应用购买信息系统的用户——例如持有极具价值(或落入坏人之手会非常危险)的敏感信息的国家安全机构,或者持有一些价值数十亿美元的数据的中央银行或证券交易商——在达成交易之前往往要先了解信息系统的安全优势和弱点。例如,想要获得一个客体的权限时,不必从已拥有这一权限的用户账户把权限复制出来,而只需要用一个具有创建或分配权限的账户创建——这个账户可以是一个对象的拥有者,也可以是对对象有完全控制权或管理权的主体。因此,这个概念本身也适用于保护保密性。在许多情况下,主体和客体之间存在一个中间程序。

HeLLo_a119的博客 1395

零信任安全架构--最小权限原则

原则是零信任架构的一个重要组成部分,能够有效减少内部威胁和外部攻击带来的风险。通过RBAC、动态权限分配、ABAC等技术手段,企业能够确保每个用户和设备仅能访问其任务所需的资源和功能。尽管实施这一原则可能存在一定的复杂性,但其对于提升整体安全性、降低风险具有不可忽视的作用。

分享关于Java编程、数据库管理和信息安全方面的最佳实践 3703

“互不信任原则”:安全、自由与可扩展系统的基石 ——万字详解、透彻比喻与工程实践

互不信任原则,又称“最小信任原则”或“零信任原则”,即系统中每个参与方之间不应默认信任,无论过去是同一团队、同一子系统还是同一网络。在分布式、互联网、现代安全架构中,所有交互都要假定对方可能受到攻击、失控或恶意操作,每一次的数据、接口、动作都要经过验证与隔离。不信任并不是怀疑,而是一种理性和成熟的自我保护。技术社会越复杂,越需要坚固而灵活的“边界”来保证互助的自由、创新的空间和系统的持久安全。互不信任原则,是每个技术人、管理者、工程师乃至企业家的必修课。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 439

【网络安全】2.3 安全的网络设计

网络设计是网络安全的基础,一个好的网络设计可以有效的防止攻击者的入侵。在本篇文章中,我们将详细介绍如何设计一个安全的网络,包括网络架构,网络设备,网络策略,以及如何处理网络安全事件。

Andy0214的专栏 6675
上一篇: 程序员常用编程工具: VS Code,那些你不得不知道的小知识!
下一篇: C/C++基础语法复习(一):C++与C语言的区别,主要有这些!
CodingPs
博客等级 码龄7年 182粉丝 253原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值