thrift0.12.0 golang.org 解决办法

Mac上进行thrift0.9.0升级到0.9.2的方法 工作需要,要进行thrift版本升级。 顺便吐槽一下,thrift项目中间两年是没维护么?13年是0.9.0,15年才到0.9.2。 而我从thrift 0.9.0升级到0.9.2 的过程就是个坑啊 0.9.0我是13年4月安装的,安装路径找不到了 按照官网的方式安装thrift 0.9.2 没有任何的提示 警告 一切顺利 但是没有替换掉/usr/local/bin路 阅读详情
  1. 首先是安装各种依赖,这一步有问题找其他教程
  2. make的时候,(make -j 就是多线程编译。)出现了golang.org/x/net
    一开始升级go为1.16 ,好使用go proxy,然后不行
  • 使用lantern不行,即使可以上那个网站,安装thrift还是会失败
  • 使用代理不行,
  • 设置http_proxy,
  • 设置host文件,那个ip就ping一直失败
  1. 然后发现是要下载gomock和golang/x/net这两个包
  2. 重点来了,放在你的$ GOPATH不管用,同时要放在你的$ GOROOT/src中,因为我的gopath和goroot不在同一文件夹下。一个安装包目录,一个工作目录。

欢迎大家一起交流

golang搭建thrift RPC服务实践 折腾了两天,终于调通了用golang搭建的thrift rpc服务,这个过程中遇到了很多问题,而且有些问题困扰了很久,欣喜之余,觉得一定要把这些过程记下来,对于自己来说是个备忘录,对于别人来说也是不错的参考。 环境的搭建 首先安装go,这个用yum安装,版本1.9.4。 我这里用的是thrift 0.10.0 , 不是最新的 0.11.0 , 这个两个非常的不兼容,一定要注意,thrif... 阅读详情

相关推荐

Thrift中Tserverclinet的异步调用问题

project.gradle.buildFinished { /*生成的SvcBaseOriginal.java 需要将TServerClient修改为自己的,不然多线程有问题/ def clientFile = new File(‘src/main/gen/kl/hsm/server/svc/base/SvcBaseOriginal.java’) def list = [] if(clientF...

KaffeeVenus 2274

thrift切换指定的版本

已经下载好了thrift,但是发现版本不对。 切换: 进入thrift目录。执行git checkout 0.10.0即可

Yu的博客 1989

Go服务集成Faiss向量检索:RPC服务化架构与性能优化实践

向量相似性搜索是处理高维数据、实现语义匹配和推荐系统的核心技术,其原理是通过计算向量间的距离(如欧氏距离或内积)来快速找到最相似的条目。Faiss作为Meta开源的高性能向量检索库,凭借其优化的索引算法和C++底层实现,在十亿级向量数据集上仍能保持毫秒级响应,为大规模AI应用提供了关键基础设施。在工程实践中,将Faiss与Go微服务结合,既能发挥Go在并发处理和云原生部署上的优势,又能利用Faiss的极致检索性能。本文聚焦于通过gRPC服务化架构解决Go与C++库的集成难题,详细探讨了协议设计、线程安全、批

weixin_34008933的博客 472

Thrift 新版(>0.10.0)补漏

Thrift新版(>0.10.0)补漏 自从gRPC出来,Thrift与gPRC竞争日益激烈,他们都有不同的适合的应用场景,就目前来看,我个人更喜欢Thrift一点,最近使用了新版0.11.0以及未正式发布的0.12.0,发现了很大的问题: golang版本生成的package无法编译通过 客户端调用接口改变,变化很大 服务端接口函数改变 下面来解决这些问题: 首先,需要注意的是,pac...

笨笨D幸福 - 后花园 1685

解决PADs VX2.7安装中的License失效与软件卡死问题

本文详细解析了PADs VX2.7安装过程中常见的License失效与软件卡死问题,提供了从破解工具选择、环境变量设置到输入法兼容性调整等实用解决方案。特别推荐使用Siemens EDA系列新版破解工具,并分享性能调优与定期维护技巧,帮助工程师高效解决安装难题。

weixin_29234239的博客 813

【各种轮子2】基于Icepak的PCB散热仿真比较

随着电子产品的集成度越来越高,PCB板的尺寸越来越小,板级芯片散热的问题越来越成为电子工程师的一个重要挑战。对于板级芯片散热,主要依靠工程师对PCB自身的设计进行优化,同时要兼顾系统的尺寸和成本。本文分别从芯片角度和PCB角度进行建模,芯片模型选用QFN封装,PCB模型采用走线导入模型,探讨了芯片结构,PCB铜厚,PCB叠层厚度对芯片散热的影响。

3668

Golang beego从零开始基于thrift-0.12.0创建一个RPC服务,提供源码参考

Thrift最初由Facebook研发,主要用于各个服务之间的RPC通信,支持跨语言,常用的语言比如C++, Java, golang,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml都支持。Thrift是一个典型的CS(客户端/服务端)结构,客户端和服务端...

chenthe1的专栏 1253

电磁兼容标准体系解析:从基础到认证的完整指南

本文系统解析了电磁兼容(EMC)标准体系,从基础概念到认证流程提供完整指南。文章阐述了EMC对于产品可靠性与市场准入的重要性,详细拆解了基础标准、通用标准、产品类标准及认证流程四层结构,并结合5G设备与工业控制等实战案例,为工程师提供了从设计初期到认证测试的高效应用策略。

weixin_29294975的博客 355

从0到1构建Thrift服务负载测试:Bender+Go实战案例与代码解析

Bender是一个简单易用的Go语言负载测试库,支持Thrift、HTTP等多种协议。本文将带你从零开始,使用Bender构建Thrift服务的负载测试方案,掌握从环境搭建到性能分析的完整流程。 ## 📋 准备工作:环境与依赖安装 ### 核心依赖清单 - **Go环境**:确保GOPATH配置正确(参考[Golang安装指南](https://golang.org/doc/install)

gitblog_00769的博客 939

[金仓数据库V8R6]更换授权

上传授权,使用mv license_xxx_0.dat /home/kingbase/KingbaseES/license.dat替换每个授权,并使用ls -l license.dat确保替换前后属主和权限不变。根据步骤1的数据目录位置,执行/home/kingbase/KingbaseES/Server/bin/sys_ctl -D /home/kingbase/KingbaseES/data reload使新的授权文件生效。该参数意义为授权剩余有效天数,查询结果为新授权中有效期间的天数即为替换成功。

l04050924的博客 3707

深度学习驱动材料科学:晶体生成与性质预测技术综述

深度学习作为人工智能的核心技术,通过模拟人脑神经网络处理复杂数据,在多个领域展现出强大的模式识别与生成能力。其原理在于构建多层非线性变换,从海量数据中自动学习特征表示与映射关系。这一技术价值在于能够高效处理高维、非结构化数据,解决传统方法计算成本高、探索空间有限的问题。在工程实践中,深度学习已广泛应用于计算机视觉、自然语言处理等领域,并正深刻变革材料科学的研究范式。具体到材料领域,它通过学习已知材料的构效关系,实现对新材料性能的快速预测与逆向设计。应用场景包括但不限于新能源材料、半导体、催化剂等领域的高通量

weixin_28695161的博客 414

Apache Thrift学习(2):Thrift使用入门

安装Thrift 在官网下载编译器:https://thrift.apache.org/download 我本机是windows,下载后的文件解压出 thrift-0.13.0.exe,重命名为:thrift.exe,随便放在一个路径下即可。 配置系统变量Path: 测试安装是否成功: .thrift 文件编写 《Apache Thrift学习(1):Thrift详细介绍》中介绍了 .thrift 文件的构成,这里不在赘述,详细的文档请大家查阅官网。 //java的包名 name

保暖透气大裤衩LeoLee的博客 729

HybridCLR热更新全流程实操:用Addressables实现资源+代码双热更(Unity 2021版)

本文详细介绍了在Unity 2021 LTS版本中,如何结合HybridCLR代码热更新与Addressables资源管理系统,实现资源与代码的双热更解决方案。通过环境配置、技术架构设计、实战案例和性能优化,帮助开发者解决中大型项目中的依赖管理和版本协同问题,提升游戏迭代效率。

cc789的博客 846

跨语言RPC框架Thrift实战

Apache Thrift 框架概述 Apache Thrift 是一款跨语言 RPC 框架,通过 IDL 定义服务接口并生成多语言代码,实现高效网络通信。核心优势包括: 跨语言支持:覆盖 25+ 编程语言,如 Java、Python、Go。 高性能:二进制序列化减少数据体积,解析速度快于 JSON。 灵活架构:支持多种传输协议(Socket/HTTP)和编码格式(Binary/JSON)。 契约优先:IDL 文件解耦接口与实现,便于团队协作。 关键组件: IDL 编译器:将 .thrift 文件转换为目标

hdk5855的博客 64

Vue3 - 详细实现微信公众号H5网页内置浏览器中预览下载word文档(doc)、excel表格(xls)、ppt文稿、pdf文档等文件,微信内部直接打开预览和下载到本地教程,安卓苹果手机无差异兼容

vue3,nuxt3,微信公众号,h5,移动端,网页,网站,vue微信内置浏览器下载文件,下载文件,在微信浏览器里面实现下载任意文件,H5需要在微信浏览器中下载excel文件,实现网页在微信内置浏览器中下载文件详细教程,安卓点击下载会提示打开浏览器,后端返回流文件,如何解决无法下载文件,跳转至浏览器下载文件,发送到电脑微信,安卓,苹果,手机系统,微信H5页面,vue3微信公众号H5网站,内置浏览器下载文档,如何在微信浏览器中预览office文件,word文档,excel文档,pdf文档,ppt文档,offi

🏆 前端领域优质创作者 1万+

AI 大模型接口太零散?自建私有模型管理平台统一整合,管理使用超方便!(支持飞牛nas、群晖nas等服务器快速部署)

面对多种 AI 大模型接口难统一、管理繁琐的问题🤯,本文分享一款超实用开源网关工具⚡,可聚合各大模型、自动转接口、支持可视化管理,Docker 一键部署,大幅降低开发与维护成本🚀

XiaoqiangClub的博客 266

thrift-transport

org.apache.thrift.transport.TTransport 传输组件抽象描述。​ public abstract class TTransport implements Closeable { public abstract boolean isOpen(); public boolean peek() { return isOpen(); } public ab...

晚晴小筑 1482

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

终极指南:如何用Go-Spring构建现代化企业级Go应用?

Go-Spring是一款基于IoC(控制反转)和IDLs-First设计理念的Go后端一站式开发框架,专为构建现代化、可维护的企业级应用而生。如果你厌倦了重复编写样板代码,渴望在Go生态中享受类似Spring Boot的"开箱即用"体验,那么Go-Spring正是你寻找的解决方案。 ## 🚀 Go-Spring的核心价值:为什么选择这个框架? Go-Spring不是另一个普通的Web框架,而

gitblog_00686的博客 502

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

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

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

我的netty之旅(3)(apache thrift)

前几天记录了一下protobuf,现在还有一种新的方案就叫thrift.是facebook最初做的项目,后来捐给apache作为开源项目在使用。使用方法如下 第一步,下载个thrift的软件包,可以直接去apache的官方( http://www.apache.org/ )按照系统要求下载,然后拖拽到本地,配置一下环境变量就可以了, 第二步是 创建thrift的idl文件,具体每字段代表什么属性建议详细查资料,因为太多了我就不做太多介绍 namespace java com.thrift typed

devotemyself的博客 231

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

java 发送数据到flume_通过Thrift source向Flume发送数据的Python实现

目前Flume支持Thrift source,即通过一个Thrift服务来收集数据(这一点和scribe是一样的),然后通过相应的channel发送到sink中去。以下是具体的实现过程:环境:Python 2.7.5/CDH4.3 Flume 1.3/Thrift 0.9/首先,我们需要一个Thrift协议的Python Flume客户端的模块,这个模块可以根据Thrift的定义自动生成。你应该先...

weixin_30166291的博客 466

java 语言 实现thrift_Apache Thrift 支持异构语言之间的调用

前言之前介绍了Apache Thrift的快速入门,我们使用java作为客户端,使用java作为服务器端Apache Thrift及其入门,我们知道RPC框架的一个基本特征就是支持异构语言之间的调用,本篇博客介绍异构语言之间的调用。Apache Thrift allows you to define data types and service interfaces in a simple def...

weixin_39881760的博客 197

服务端thrift 使用非阻塞式IO报异常Got an IOException in internalRead!

参考:https://blog.csdn.net/z13192905903/article/details/103181204 参考:https://www.iteye.com/problems/85698 报错 Got an IOException in internalRead! 全文 2020-04-26 11:54:31.934 WARN 21088 --- [ ...

fuck487的博客 1892

not enough arguments in call to oprot.Flush

最近打算把之前C++相关的thrift项目,改成go项目。把协议重新生成后,就开始撸一发看看。 结果第一个错误就来了:not enough arguments in call to oprot.Flush,这是因为本地生成协议的版本是0.9.3与 go get git.apache.org/thrift.git/lib/go/thrift下载下来的库版本是不同导致的。 解决方法:到git.a...

goodsirlee的博客 4626

Go语言map底层原理与并发安全实战指南

Go语言中的map是一种基于哈希表实现的键值对集合类型,其核心原理涉及hmap控制结构、bmap桶布局及渐进式扩容机制。作为非线程安全的数据结构,原生map在并发读写时会触发panic,需结合sync.RWMutex、分片锁或sync.Map等方案保障安全性。该类型广泛应用于缓存、配置管理、元数据存储等场景,但存在内存不释放、迭代不确定性、键类型隐性开销等工程陷阱。理解其内存模型与运行时行为,是编写高性能、低延迟Go服务的关键基础。

weixin_34384557的博客 379

thrift的安装centos下的安装

一.简单介绍 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。 ...

weixin_30617695的博客 329

解决Hive启动报错:org.apache.thrift.transport.TTransportException: Cannot write to null outputStream

在配置好hiveserver2和Metastore两个服务后使用脚本hive-server-manager.sh start启动服务。-- hiveserver2的高可用参数,开启此参数可以提高hiveserver2的启动速度 -->

2301_79362607的博客 5000
上一篇: boost pyconfig.h 修复方法
Coder_zyq
博客等级 码龄10年 3粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值