wrapper.check.deadlock 配置

TRAE教材生成引擎:用Skill+Task+Environment实现可执行教学 教材即代码(Code-as-Textbook)是一种新兴的教育技术范式,强调将教学内容转化为可执行、可验证、可复现的程序化单元。其核心原理在于将知识解耦为原子化技能(Skill)、编排为渐进式任务链(Task)、并运行于隔离可控的学习环境(Environment),从而解决传统教材存在的环境不可知、验证不可靠、版本易漂移等根本性痛点。该范式具备强工程适配性,天然支持CLI驱动、Git协作与CI/CD集成,已在Java/Spring Boot、Linux命令教学、金融监管培训等多场景落地验证。TRAE正是这一 阅读详情

Index

Deadlock?:

Deadlocks can occur when two or more threads are locking resources in an order which results in all threads waiting indefinitely.

The simplest example is where Thread A locks Object A and then attempts to lock Object B, while another Thread B has Object B locked and is waiting to lock Object A. In this case, Thread A will never release Object A because it is waiting for Object B. This will never happen because Thread B will keep Object B locked indefinitely as it waits for Object A to become available.

wrapper.check.deadlock

Compatibility : 3.5.0
Editions : Professional EditionStandard EditionCommunity Edition (Not Supported)
Platforms : WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

This wrapper.check.deadlock property, in combination with the other properties,

are used to configure how the Wrapper monitors a JVM for deadlocked threads. This can be very useful to detect and then work around potentially fatal problems which would otherwise be difficult if not impossible to work around.

Thread deadlock checks require that at least Java version 1.5 is used. Older JVMs will ignore the checks. It is possible to detect deadlocks involving "monitor" based thread locks (using synchronized)starting with Java 1.5. Deadlocks infolving "owned" or "reentrant" thread locks (using ReentrantLock) can also be detected starting with Java 1.6.

Checking for Deadlocks is fairly quick, but it does involve briefly locking and taking a snapshot of all threads so this property is FALSE by default.

Example: (Deadlock Check: Off)
wrapper.check.deadlock=FALSE

Simple Example:

Please read over the property details below, but the following simple example will configure the Wrapper to log the location of a deadlock and then immediately restart the JVM.

Example:
wrapper.check.deadlock=TRUE
wrapper.check.deadlock.interval=60
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL

wrapper.check.deadlock.interval

Compatibility : 3.5.0
Editions : Professional EditionStandard EditionCommunity Edition (Not Supported)
Platforms : WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

The wrapper.check.deadlock.interval property makes it possible to control the interval at which the Wrapper looks for deadlocks in an application. It can be set to any interval starting with once per second, but The default value is "60" seconds (once per minute). In general, for applications which are known to be stable, it may be fine to greatly decrease the frequency of these deadlock checks.

Example: (once every 60 seconds)
wrapper.check.deadlock.interval=60

wrapper.check.deadlock.action

Compatibility : 3.5.0
Editions : Professional EditionStandard EditionCommunity Edition (Not Supported)
Platforms : WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

The wrapper.check.deadlock.action property makes it possible to control what the Wrapper does when a deadlock is detected. The default action is to RESTART.

Example:
wrapper.check.deadlock.action=RESTART

Possible actions are:

  • DEBUG :

    will cause a debug message to be logged. This is only really useful in helping to understand when the action is fired.

  • DUMP :

    will invoke a thread dump.

  • GC (Since ver. 3.5.7) :

    will invoke a full garbage collection sweep in the JVM. Be aware that doing this frequently can affect performance of the JVM as a full sweep will often cause all threads to freeze for the duration of the GC.

  • RESTART :

    will stop the current JVM and then restart a new invocation.

  • SHUTDOWN :

    will stop the JVM as well as the Wrapper.

  • USER_<n> (Professional Edition) :

    will cause a user defined event to be fired. This can be either the sending of an email, or the execution of an external system command. The command could be anything from performing clean up operations to raising an SNMP trap.

  • PAUSE :

    will pause the Java application if pausing is enabled and the JVM is running. See the wrapper.pausable property for details.

  • RESUME :

    will resume the Java application if it is in a paused state. This could be used if the JVM is not stopped when paused. See the wrapper.pausable property for details.

  • SUCCESS (Since ver. 3.5.5) :

    will tell the Wrapper to reset its internal failed invocation count and count the current JVM invocation as "successful". This is probably not useful in this context, but here for consistency with other properties.

  • NONE :

    will tell the Wrapper to log the fact that a deadlock was detected, but it will not actually do anything.

Note that actions, like "NONE", which do not restart the JVM will repeatedly be fired each time the deadlock check is made.

Chaining Multiple Actions:

It is also possible to list multiple actions so they each happen in the order specified.

Example:
wrapper.check.deadlock.action=DUMP,RESTART

wrapper.check.deadlock.output

Compatibility : 3.5.0
Editions : Professional EditionStandard EditionCommunity Edition (Not Supported)
Platforms : WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

The wrapper.check.deadlock.output property makes it possible to control what information the Wrapper causes to be logged when a deadlock is detected. The default output level is FULL.

Example:
wrapper.check.deadlock.output=FULL

Possible output levels are:

  • FULL :

    will cause the WrapperManager class within the JVM to output a report which includes full stack traces for the threads involved in the deadlock.

    Output Example of "FULL":
    INFO   | jvm 1    | WrapperManager Error: Found 2 deadlocked threads!
    INFO   | jvm 1    | WrapperManager Error: =============================
    INFO   | jvm 1    | WrapperManager Error: "Locker-2" tid=18
    INFO   | jvm 1    | WrapperManager Error:   java.lang.Thread.State: BLOCKED
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.lockSecond(DeadLock.java:64)
    INFO   | jvm 1    | WrapperManager Error:       - waiting on <0x000000002fcac6db> (a java.lang.Object) owned by "Locker-1" tid=17
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.lockFirst(DeadLock.java:83)
    INFO   | jvm 1    | WrapperManager Error:       - locked <0x0000000029c56c60> (a java.lang.Object)
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.access$100(DeadLock.java:22)
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock$1.run(DeadLock.java:42)
    INFO   | jvm 1    | WrapperManager Error:
    INFO   | jvm 1    | WrapperManager Error: "Locker-1" tid=17
    INFO   | jvm 1    | WrapperManager Error:   java.lang.Thread.State: BLOCKED
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.lockSecond(DeadLock.java:64)
    INFO   | jvm 1    | WrapperManager Error:       - waiting on <0x0000000029c56c60> (a java.lang.Object) owned by "Locker-2" tid=18
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.lockFirst(DeadLock.java:83)
    INFO   | jvm 1    | WrapperManager Error:       - locked <0x000000002fcac6db> (a java.lang.Object)
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.access$100(DeadLock.java:22)
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock$1.run(DeadLock.java:42)
    INFO   | jvm 1    | WrapperManager Error:
    INFO   | jvm 1    | WrapperManager Error: =============================
    STATUS | wrapper  | A Thread Deadlock was detected in the JVM.  Restarting JVM.
  • SIMPLE :

    will cause the WrapperManager class within the JVM to output a report which includes only a brief summary naming the threads and objects involved in the deadlock. In many cases, this is enough especially for known problems.

    Output Example of "SIMPLE":
    INFO   | jvm 1    | WrapperManager Error: Found 2 deadlocked threads!
    INFO   | jvm 1    | WrapperManager Error: =============================
    INFO   | jvm 1    | WrapperManager Error: "Locker-2" BLOCKED waiting on a java.lang.Object owned by "Locker-1"
    INFO   | jvm 1    | WrapperManager Error: "Locker-1" BLOCKED waiting on a java.lang.Object owned by "Locker-2"
    INFO   | jvm 1    | WrapperManager Error: =============================
    STATUS | wrapper  | A Thread Deadlock was detected in the JVM.  Restarting JVM.
  • NONE (Since ver. 3.5.16) :

    will cause the WrapperManager class within the JVM to suppress all output. This may be desired for production systems when a problem is known but you don't want or need to maintain too much information in the logs. The Wrapper process, as in the other options, will always log a single entry to provide a reason why the triggeredaction takes place.

    Output Example of "NONE":
    STATUS | wrapper  | A Thread Deadlock was detected in the JVM.  Restarting JVM.
Claude Opus 4.6与GPT-5.3-Codex深度实测:长上下文与智能体架构真相 大语言模型的长上下文能力并非简单扩大token容量,而是涉及位置编码优化、KV缓存压缩、自一致性机制等底层架构演进;智能体协作也远非多模型堆叠,其本质是职责隔离、内存受控、共识可审计的分布式推理范式。本文基于A100实测147个真实case,揭示Claude Opus 4.6的adaptive RoPE与分层KV cache如何将80万token内推理衰减压至<3%,以及GPT-5.3-Codex中Workflow Orchestrator与Reflection Agent构成的‘工作流操作系统’如何实现可 阅读详情

相关推荐

Claude 3.7 Sonnet:面向软件开发的可追溯AI编程范式

大型语言模型(LLM)正从通用对话能力转向垂直工程落地,其中‘可追溯的思考过程’与‘可量化的工程价值’成为新一代编程AI的核心技术特征。其原理在于将抽象推理显式建模为token级可控的中间步骤,使模型决策链具备可观测性、可审计性与可干预性;技术价值体现在降低开发者认知负荷、加速调试闭环、提升代码生产可信度;典型应用场景覆盖Bug修复、架构设计、测试生成及CLI端到端工作流集成——Claude 3.7 Sonnet正是这一范式的代表性实践,它通过Extended Thinking、Artefacts和thin

dezhen7015的博客 407

【wrapper】weapper 配置详解消化

将一个简单的程度如HelloWorld 的应用包装秤Wrapper 服务并不复杂,甚至可以认为非常简单。但是实际项目应用过程中我们的程序一般较庞大,运行环境也较复杂。 通过Wrapper 配置文件的分析与配置进一步了解构建Wrapper 服务需要注意的关键点及重要部分。 首先,打开conf 文件夹下的wrapper.co...

小鱼菜鸟的博客 413

NERO 双臂05:《RLinf + Isaac Lab + π0.5 双 NERO 仿真训练【纯仿真|SFT + PPO + Reward + Checkpoint + Evaluation】》

步骤属性:不需要操作的步骤(核心 Contract)。

u013250861的博客 199

Wrapper配置详解及高级应用

        将一个简单的程度如HelloWorld 的应用包装秤Wrapper 服务并不复杂,甚至可以认为非常简单。但是实际项目应用过程中我们的程序一般较庞大,运行环境也较复杂。         通过Wrapper 配置文件的分析与配置进一步了解构建Wrapper 服务需要注意的关键点及重要部分。 首先,打开conf 文件夹下的wrapper.conf配置文件,此配置文件时Wrappe...

286 2168

Dromara MaxKey单点登录认证系统是业界领先的IAM-IDaas身份管理和认证产品,寓意它能够像一把万能钥匙(最大钥匙)一样,解锁复杂的企业安全需求,提供简洁而高效的解决方案

单点登录认证系统是业界领先的IAM-IDaas身份管理和认证产品,遵循Apache-2.0开源免费,支持OAuth2.x、OpenID Connect、SAML2.0、CAS、JWT、SCIM等SSO标准协议,基于RBAC统一权限控制,实现用户生命周期管理,开源、安全、合规、自主可控

两相交错并联BuckBoost变换器仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了两相交错并联Buck-Boost变换器的Simulink仿真模型设计与实现过程,系统阐述了该拓扑结构的工作原理及其在升降压模式下的运行特性。通过引入交错并联技术,有效降低了输入输出电流纹波,提升了系统效率与功率密度。文中构建了完整的电压电流双闭环PI控制系统,确保输出电压稳定并具备良好的动态响应能力,同时深入分析了占空比分配与相位交错对系统性能的影响。仿真模型全面验证了变换器在不同负载条件及输入电压波动下的静态与动态性能,充分体现了控制策略的有效性与系统的鲁棒性。; 适合人群:具备电力电子技术基础和Simulink仿真经验,从事开关电源、新能源变换系统研发的工程技术人员或高等院校电力电子与电力传动方向的研究生。; 使用场景及目标:①掌握两相交错并联Buck-Boost变换器的建模方法与工作机理;②学习双闭环PI控制器的设计流程与参数整定技巧;③深入理解多相变换器的均流控制、纹波抑制机制与动态响应特性;④为高效率、高功率密度DC-DC变换器的实际工程设计提供理论依据与仿真验证平台。; 阅读建议:建议读者结合所提供的Simulink模型文件进行同步操作,亲手搭建与调试电路,重点关注控制器参数调整对系统稳定性、响应速度及抗扰能力的影响,后续可进一步拓展至数字控制实现、硬件在环测试及实际样机开发。

wrapper容器

wrapper 启动程序说明启动模式启动wrapper时,会同时启动两个进程。 一个主进程:不“干实事”,只做为守护进程; 一个子进程:“干实事”的,生死由主进程掌握,主进程会定时检测子进程的状态,包括:死锁、内存溢出、响应(类似心跳),一旦发现异常,主进程会重启子进程(可以配置)。启动命令 Dubbo服务 bin/service.sh start Web服务 (tomcat与wrapper

一个CD包的博客 6219

国产SR8201F以太网PHY芯片调试避坑指南:从机贴失败到杜邦线救场的实战记录

本文详细介绍了国产SR8201F以太网PHY芯片的调试避坑指南,涵盖硬件设计、PCB布局、SMT贴片及软件驱动等关键环节。通过实战案例解析,帮助工程师解决MII/RMII接口配置、电源设计、信号完整性等典型问题,提升以太网通信稳定性与EMC性能。

c6d7e8f9g的博客 1218

wrapper配置文件详解

参考资料 http://www.tuicool.com/articles/jqMv2q 文件编码,每个配置文件起始位置必须指定该文件的编码格式 encoding=UTF-8 如果包含配置文件出现问题可以使用debug调试模式,去掉一个"#",格式为#include.debug include.debug 包含子配置文件,可以是配置信息也可以是许可信息 include ../conf/wrapper...

weixin_30627341的博客 2355

配电网可靠性评估(一)—最小路法和非序贯蒙特卡洛模拟法的matlab实现

电力系统的可靠性研究是相关领域的热点问题。根据研究对象的不同,又可分为发电系统的可靠性,输电系统的可靠性和配电系统的可靠性。配电网在电力系统中处于最末端的位置,直接和用户相连,一旦出现故障情况,就会在用户侧表现为停电事故。因此对配电网的可靠性评估有着重大意义。......

配电网和matlab的博客 1万+

GPS定位不准?可能是GDOP在作怪!手把手教你优化卫星几何分布

本文深入解析了GPS定位精度不佳的常见原因——几何精度因子GDOP。通过剖析卫星几何分布对定位误差的放大效应,文章提供了从理解GDOP、PDOP、HDOP等关键指标,到使用专业APP实时诊断卫星天空图,再到利用在线工具提前规划最佳定位时机的完整实战指南。旨在帮助户外爱好者、无人机飞手及专业用户主动优化卫星几何条件,从而显著提升定位可靠性。

weixin_29062823的博客 306

代码智能体失败分析:从执行轨迹到可操作洞见的XAI实践

在人工智能与软件工程交叉领域,可解释人工智能(XAI)致力于让AI决策过程透明化,其核心原理是通过解析模型内部状态与决策路径,将黑盒转化为白盒。这一技术对于提升AI系统的可信度与调试效率具有重要价值,尤其在自动化代码生成与执行场景中。当代码智能体执行失败时,传统的报错信息往往晦涩难懂,形成调试黑盒。通过引入XAI理念,对智能体产生的原始执行轨迹进行深度解析与结构化处理,可以系统性地识别语法错误、运行时异常、逻辑缺陷、资源泄漏等常见失败模式。结合规则引擎与上下文分析,能够将这些模式转化为包含根本原因定位与具体

weixin_30352191的博客 387

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文深入剖析了RTL8306MB交换芯片驱动开发中RMII接口的典型调试陷阱。通过一个工业网关项目的实战案例,揭示了因硬件原理图设计疏忽导致TX_EN与CRS_DV信号线错接,从而引发网络“哑火”的根本原因。文章详细展示了使用示波器从时钟、数据到控制信号的系统性排查方法,并总结了关键的设计警示与自查清单,为嵌入式网络开发中的软硬件协同调试提供了宝贵经验。

qqq44的博客 1029

验证学习问题记录

查机制:Monitor 是否通过 Interface 的进行采样?查参数:Clocking block 的input skew是否是#1step?(确保在Pre-step采样稳定值)。查代码:Monitor 里有没有误用vif.data替代?衡量验证完成度,本质上是这五个维度的交集验证完成,可以投片(Tape-out)。在实际项目中,SVA 不仅用于Simulation(动态仿真)报错,它还可以直接喂给Formal Verification(形式验证)

qq_43543105的博客 325

基于立创开源ESP32步进电机驱动板硬件设计与优化实践

本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。

7z8x2c4v6b9的博客 648

第229篇 轨迹时间参数化——TOPP-RA和速度约束处理

本文介绍了时间最优路径参数化(TOPP)问题及其解法。TOPP研究如何在给定空间路径上分配时间,使机器人运动时间最短且不超速,需满足速度、加速度和力矩约束。经典解法采用相平面法,通过前向和后向扫描确定最优速度曲线。TOPP-RA改进了数值稳定性,支持多约束处理。文章对比了TOPP与轨迹优化的区别,列举了开源工具,并解答了面试常见问题,指出TOPP广泛应用于机械臂、AGV等领域。TOPP不改变路径形状,仅优化速度分配,其最优解具有bang-bang特性。

郑伟强dev的专栏 324

智能体驱动的模型检测:从被动检查到主动探索的范式革新

模型检测作为形式化验证的核心技术,旨在通过穷尽系统状态空间来验证其是否满足特定性质。其基本原理是将系统抽象为状态转移模型,并使用逻辑公式描述待验证性质,通过算法自动遍历状态空间进行验证。这项技术的核心价值在于为软件和硬件系统提供数学上的严格正确性保证,在安全关键领域如芯片设计、通信协议和嵌入式系统中至关重要。然而,面对状态空间爆炸和复杂动态系统时,传统方法常面临算力瓶颈。近年来,强化学习和智能体技术在序列决策与环境探索上取得突破,为解决上述挑战提供了新思路。通过将模型检测任务重构为马尔可夫决策过程,让具备感

weixin_30326515的博客 468

openbmc mctp i3c适配步骤

本文介绍了在Intel OKS平台下,BMC作为I3C从设备如何适配MCTP over I3C的实现方法。主要内容包括:1)关键术语解释,如MDB(Mandatory Data Byte)值为0xAE,DCR(Device Characteristics Register)和BCR(Bus Characteristics Register)的设置;2)适配流程说明,包括BMC作为控制器主节点分配地址后成为MCTP端点,CPU作为总线所有者的角色转换;3)测试验证步骤,展示通过mctp-client工具发送指

wit_yuan的专栏 132

【vllm】(v1 Executor)vLLM V1 Executor 深度分析 — Part3: Ray执行器与工具函数

vLLM V1 Executor 深度分析 — Part3: Ray执行器与工具函数

zhonglinzhang 456

化工热力学软件:Aspen Plus二次开发_(9).过程控制与动态模拟v1

Aspen Plus 提供了丰富的过程控制工具和方法,可以用于静态和动态过程的模拟和控制策略的开发。通过控制回路设计、动态模拟、优化工具和数据交换接口,用户可以设计和优化各种复杂的控制策略,提高化工生产的稳定性和效率。此外,结合外部软件(如MATLAB、Simulink、LabVIEW等),可以实现更高级的控制策略,如自适应控制和模型预测控制,进一步提升过程控制的精度和灵活性。希望本文的内容能帮助用户更好地理解和应用Aspen Plus中的过程控制功能。

kkchenjj的博客 408

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python3 核心笔记

本文主要是针对python3的一些核心要点做一些记录,感兴趣的可以关注和订阅。会持续更新,这个玩意学习一下,可以为数据分析和AI打下一定的基础。

yanghuashuiyue的专栏 624

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

Java Service Wrapper 将Java工程打包成Windows服务

有时候我们有这样的需求,

2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SpringBoot jar包作为Wrapper服务启动-Linux

此教程为Linux上将springboot jar作为服务启动。 该web程序的context-path、port都会以springboot中配置的为准。 下载Java Service Wrapper。目前最新版本为:3.5.37。选择自己对应的操作系统和位数,一般是Linux+x86 cpu。 修改conf/wrapper.conf文件,最好先备份 #encoding=UTF-8 ##不知...

松林羊的博客 2817

Java Service Wrapper工具把Java程序转换为Windows服务

下载地址:http://sourceforge.net/projects/wrapper/files/ 使用的是wrapper-windows-x86-32-3.5.4.zip版本 附件是一个配置好的目录,下载直接可用(请确保jdk路径一样).是一个监视F:\TDDownload目录下文件变化的程序 配置步骤: 1、解压缩java service wrapper包,假设目录为:...

xbgordon的专栏 279

wrapper serive 做java play应用程序的一些坑

wrapper下载地址:https://wrapper.tanukisoftware.com/doc/english/download.jsp#downloadNote1 出现一些坑,都是wrapper.conf配置出现的问题,把wrapper贴出来 #encoding=UTF-8 # Configuration files must begin with a line speci...

weixin_30629653的博客 263
上一篇: JVM appears hung: Timed out waiting for signal from JVM.
下一篇: jsonp与ajax
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值