Holder DFSClient_NONMAPREDUCE_-799791669_57 does not have any open files.

flink程序报错:

2019-06-24 09:22:42,033 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph        - Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (20/30) (e694b41b8f6489910f9ec15aee672e5d) switched from RUNNING to FAILED.
AsynchronousException{java.lang.Exception: Could not materialize checkpoint 3 for operator Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (20/30).}
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointExceptionHandler.tryHandleCheckpointException(StreamTask.java:1153)
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointRunnable.handleExecutionException(StreamTask.java:947)
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointRunnable.run(StreamTask.java:884)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Exception: Could not materialize checkpoint 3 for operator Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (20/30).
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointRunnable.handleExecutionException(StreamTask.java:942)
	... 6 more
Caused by: java.util.concurrent.ExecutionException: java.io.IOException: Could not flush and close the file system output stream to hdfs://nameservice1/data/flink-checkpoints/27b928fe71fcd7e5abc33218faef989e/chk-3/fa3800e9-c56e-4193-a7e8-8548e89d6646 in order to obtain the stream state handle
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at org.apache.flink.util.FutureUtil.runIfNotDoneAndGet(FutureUtil.java:53)
	at org.apache.flink.streaming.api.operators.OperatorSnapshotFinalizer.<init>(OperatorSnapshotFinalizer.java:53)
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointRunnable.run(StreamTask.java:853)
	... 5 more
Caused by: java.io.IOException: Could not flush and close the file system output stream to hdfs://nameservice1/data/flink-checkpoints/27b928fe71fcd7e5abc33218faef989e/chk-3/fa3800e9-c56e-4193-a7e8-8548e89d6646 in order to obtain the stream state handle
	at org.apache.flink.runtime.state.filesystem.FsCheckpointStreamFactory$FsCheckpointStateOutputStream.closeAndGetHandle(FsCheckpointStreamFactory.java:325)
	at org.apache.flink.runtime.state.DefaultOperatorStateBackend$1.performOperation(DefaultOperatorStateBackend.java:454)
	at org.apache.flink.runtime.state.DefaultOperatorStateBackend$1.performOperation(DefaultOperatorStateBackend.java:359)
	at org.apache.flink.runtime.io.async.AbstractAsyncCallableWithResources.call(AbstractAsyncCallableWithResources.java:75)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.flink.util.FutureUtil.runIfNotDoneAndGet(FutureUtil.java:50)
	... 7 more
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): No lease on /data/flink-checkpoints/27b928fe71fcd7e5abc33218faef989e/chk-3/fa3800e9-c56e-4193-a7e8-8548e89d6646 (inode 1357682982): File does not exist. Holder DFSClient_NONMAPREDUCE_-799791669_57 does not have any open files.
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkLease(FSNamesystem.java:3761)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.analyzeFileState(FSNamesystem.java:3562)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:3418)
	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:692)
	at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.addBlock(AuthorizationProviderProxyClientProtocol.java:217)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:506)
	at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2281)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2277)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2275)

	at org.apache.hadoop.ipc.Client.call(Client.java:1470)
	at org.apache.hadoop.ipc.Client.call(Client.java:1401)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
	at com.sun.proxy.$Proxy16.addBlock(Unknown Source)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.java:399)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
	at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
	at com.sun.proxy.$Proxy17.addBlock(Unknown Source)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1528)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1345)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:587)
2019-06-24 09:22:42,034 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph        - Job log-bc-bapi (27b928fe71fcd7e5abc33218faef989e) switched from state RUNNING to FAILING.
AsynchronousException{java.lang.Exception: Could not materialize checkpoint 3 for operator Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (20/30).}
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointExceptionHandler.tryHandleCheckpointException(StreamTask.java:1153)
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointRunnable.handleExecutionException(StreamTask.java:947)
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointRunnable.run(StreamTask.java:884)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Exception: Could not materialize checkpoint 3 for operator Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (20/30).
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointRunnable.handleExecutionException(StreamTask.java:942)
	... 6 more
Caused by: java.util.concurrent.ExecutionException: java.io.IOException: Could not flush and close the file system output stream to hdfs://nameservice1/data/flink-checkpoints/27b928fe71fcd7e5abc33218faef989e/chk-3/fa3800e9-c56e-4193-a7e8-8548e89d6646 in order to obtain the stream state handle
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at org.apache.flink.util.FutureUtil.runIfNotDoneAndGet(FutureUtil.java:53)
	at org.apache.flink.streaming.api.operators.OperatorSnapshotFinalizer.<init>(OperatorSnapshotFinalizer.java:53)
	at org.apache.flink.streaming.runtime.tasks.StreamTask$AsyncCheckpointRunnable.run(StreamTask.java:853)
	... 5 more
Caused by: java.io.IOException: Could not flush and close the file system output stream to hdfs://nameservice1/data/flink-checkpoints/27b928fe71fcd7e5abc33218faef989e/chk-3/fa3800e9-c56e-4193-a7e8-8548e89d6646 in order to obtain the stream state handle
	at org.apache.flink.runtime.state.filesystem.FsCheckpointStreamFactory$FsCheckpointStateOutputStream.closeAndGetHandle(FsCheckpointStreamFactory.java:325)
	at org.apache.flink.runtime.state.DefaultOperatorStateBackend$1.performOperation(DefaultOperatorStateBackend.java:454)
	at org.apache.flink.runtime.state.DefaultOperatorStateBackend$1.performOperation(DefaultOperatorStateBackend.java:359)
	at org.apache.flink.runtime.io.async.AbstractAsyncCallableWithResources.call(AbstractAsyncCallableWithResources.java:75)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.flink.util.FutureUtil.runIfNotDoneAndGet(FutureUtil.java:50)
	... 7 more
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): No lease on /data/flink-checkpoints/27b928fe71fcd7e5abc33218faef989e/chk-3/fa3800e9-c56e-4193-a7e8-8548e89d6646 (inode 1357682982): File does not exist. Holder DFSClient_NONMAPREDUCE_-799791669_57 does not have any open files.
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkLease(FSNamesystem.java:3761)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.analyzeFileState(FSNamesystem.java:3562)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:3418)
	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:692)
	at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.addBlock(AuthorizationProviderProxyClientProtocol.java:217)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:506)
	at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2281)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2277)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2275)

	at org.apache.hadoop.ipc.Client.call(Client.java:1470)
	at org.apache.hadoop.ipc.Client.call(Client.java:1401)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
	at com.sun.proxy.$Proxy16.addBlock(Unknown Source)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.java:399)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
	at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
	at com.sun.proxy.$Proxy17.addBlock(Unknown Source)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1528)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1345)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:587)
2019-06-24 09:22:42,036 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph        - Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (1/30) (a76276ec3644b968b681837638fe357d) switched from RUNNING to CANCELING.
2019-06-24 09:22:42,036 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph        - Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (2/30) (d1dcf525d5ddd1535ea5c9c0c944cdd9) switched from RUNNING to CANCELING.
2019-06-24 09:22:42,036 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph        - Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (3/30) (dd767e24c3c32805e90d1ba0dbfd8dc3) switched from RUNNING to CANCELING.
2019-06-24 09:22:42,036 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph        - Source: Custom Source -> Map -> Filter -> Map -> Filter -> Process -> Filter -> (Map -> Filter -> (Map, Map -> Sink: Cassandra Sink), Sink: logBapiSink, Sink: logBapiErrorSink, Map -> Filter -> Sink: hdfs) (4/30) (be2c4c03a3ac98a2afa0ec96121234c0) switched from RUNNING to CANCELING.
2019-06-24 09:22:42,036 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph 

 

执行MapReduce遇到的问题:文件租约超期异常.
org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException
 


这个问题实际上就是data stream操作过程中文件被删掉了。之前也遇到过,通常是因为Mapred多个task操作同一个文件,一个task完成后删掉文件导致,将可能造成这种情况的代码进行修改即可

我遇到这种问题的另一种情形 就是: 因为mapReduce之前的一些错误,job一直报错... 到后面导致的这个问题,这种情况下,不要理会这个报错,只需要解决前面的问题这个问题就迎刃而解
--------------------- 
作者:new个对象先 
来源:CSDN 
原文:https://blog.csdn.net/weixin_40861707/article/details/80019150 
版权声明:本文为博主原创文章,转载请附上博文链接!

好的,下面我来为您讲解如何在Android Studio中实现备忘录应用的开发。 首先,我们需要创建一个新的Android Studio项目。在创建项目时,您可以选择空白活动或使用模板(例如带有导航抽屉的活动)。在这里,我们将使用空白活动来创建我们的备忘录应用。 接下来,我们需要设计应用的用户界面。我们将使用RecyclerView来显示备忘录列表,并且使用一个FloatingActionButton来添加新的备忘录。使用Android Studio的布局编辑器,您可以轻松地设计出这个用户界面。 在我们开始编写代码之前,我们需要添加RecyclerView和FloatingActionButton的依赖库。在app/build.gradle文件中,添加以下依赖项: ``` dependencies { implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.android.support:design:28.0.0' } ``` 接下来,我们需要创建一个备忘录数据模型类Memo,该类将具有备忘录的标题和内容属性。例如: ``` public class Memo { private String title; private String content; public Memo(String title, String content) { this.title = title; this.content = content; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } } ``` 接下来,我们需要创建一个备忘录列表适配器MemoAdapter,该适配器将显示备忘录列表。例如: ``` public class MemoAdapter extends RecyclerView.Adapter<MemoAdapter.ViewHolder> { private List<Memo> memos; public MemoAdapter(List<Memo> memos) { this.memos = memos; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_memo, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Memo memo = memos.get(position); holder.titleTextView.setText(memo.getTitle()); holder.contentTextView.setText(memo.getContent()); } @Override public int getItemCount() { return memos.size(); } public class ViewHolder extends RecyclerView.ViewHolder { private TextView titleTextView; private TextView contentTextView; public ViewHolder(View itemView) { super(itemView); titleTextView = itemView.findViewById(R.id.titleTextView); contentTextView = itemView.findViewById(R.id.contentTextView); } } } ``` 接下来,我们需要创建一个活动MainActivity,该活动将显示备忘录列表。在MainActivity中,我们需要将RecyclerView与MemoAdapter进行绑定,并在FloatingActionButton的单击事件中添加新的备忘录。例如: ``` public class MainActivity extends AppCompatActivity { private List<Memo> memos = new ArrayList<>(); private MemoAdapter memoAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recyclerView = findViewById(R.id.recyclerView); memoAdapter = new MemoAdapter(memos); recyclerView.setAdapter(memoAdapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showAddMemoDialog(); } }); } private void showAddMemoDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_add_memo, null); final EditText titleEditText = view.findViewById(R.id.titleEditText); final EditText contentEditText = view.findViewById(R.id.contentEditText); builder.setView(view) .setTitle("Add Memo") .setPositiveButton("Add", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String title = titleEditText.getText().toString(); String content = contentEditText.getText().toString(); Memo memo = new Memo(title, content); memos.add(memo); memoAdapter.notifyDataSetChanged(); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); AlertDialog dialog = builder.create(); dialog.show(); } } ``` 最后,在这个应用程序中,我们需要添加一些布局文件。例如: activity_main.xml ``` <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="4dp" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:src="@drawable/ic_add" /> </android.support.design.widget.CoordinatorLayout> ``` item_memo.xml ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="8dp"> <TextView android:id="@+id/titleTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="24sp" android:textStyle="bold" /> <TextView android:id="@+id/contentTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" /> </LinearLayout> ``` dialog_add_memo.xml ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="8dp"> <EditText android:id="@+id/titleEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Title" /> <EditText android:id="@+id/contentEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Content" /> </LinearLayout> ``` 现在您已经完成了备忘录应用的开发。您可以在模拟器或实际设备上运行该应用程序,并开始添加和查看备忘录了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值