Hanganalyze 的用法

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 Hanganalyze 的用法

顾名思义,hanganalyze 是用来在 oracle hang 的时候分析的。对于 oracle 来说,hang 的表现 基本上是 由于 internal deadlock,对于这种 deadlock ,oracle 是没办法自动判断并清除的,而对于 TM 级别的 deadlock,oracle 能自动判断并且能主动停止其中一个。

这里,我简单说下 hanganalyze 的用法,并举一个例子:

1、 介绍下 hanganalyze 级别的定义

    10     Dump all processes (IGN state)

5     Level 4 + Dump all processes involved in wait chains (NLEAF state)

4   Level 3 + Dump leaf nodes (blockers) in wait chains (LEAF,LEAF_NW,IGN_DMP state)

3          Level 2 + Dump only processes thought to be in a hang (IN_HANG state)

1-2        Only HANGANALYZE output, no process dump at all

一般情况下,我们都定义到 级别 3,metalink 上说,级别 3 以上,需要 oracle support 的人告知后,才能用。

2、 hanganalyze 一些术语的解释

Examples of session “headers”:

Oracle 8.x chain header: 

Oracle9i chain header:  :

Where:

 sid        = Session ID

 sess_srno  = Serial#

 proc_ptr   = Process Pointer

 ospid      = OS Process Id

 wait_event = Waitevent

 cnode      = Node Id (Only available since Oracle9i) 节点代号,如果为rac,其值就存在,单节点的值为0

 

Examples of STATE OF THE NODES DESCRIPTION[番茄花园1] 

Oracle 8.x : [nodenum]/sid/sess_srno/session/state/start/finish/[adjlist]/predecessor

Oracle9i: [nodenum]/cnode/sid/sess_srno/session/ospid/state/start/finish/[adjlist]/predecessor

 

Where:

 Nodenum[番茄花园2]  = This is sequential number used by HANGANALYZE to identify each session

 sid      = Session ID

 sess_srno = Serial#

 ospid    = OS Process Id

 state     = State of the node

 adjlist    = adjacent node   (Usually represents a  blocker node)

 predecessor = predecessor node (Usually represents a waiter node)

 cnode     = Node number (Only available since Oracle9i)

 

3、 hanganalyze 的用法

单节点下,可以:

HANGANALYZE may be executed using the following syntax:

ALTER SESSION SET EVENTS 'immediate trace name HANGANALYZE level ';

Or when logged in with the “SYSDBA” role,

ORADEBUG hanganalyze

Rac 下可以:

To perform. cluster wide HANGANALYZE use the following syntax:

 ORADEBUG setmypid

 ORADEBUG setinst all

 ORADEBUG -g def hanganalyze

 

4、 hanganalyze 的解释

hanganalyze 由几个主要部分组成

CYCLES: This section reports the process dependencies between sessions that are in a deadlock condition. Cycles are considered   “true” hangs.  –出现 cycle 表明,系统hang住了

Cycle 1 : :

    <980/3887/0xe4214964/24065/latch free>

 -- <2518/352/0xe4216560/24574/latch free>

  -- <55/10/0xe41236a8/13751/latch free>

 

OPEN CHAINS: This section reports sessions involved on a wait chain. A wait chains means that one session is blocking one or more other sessions.  –出现 open chains 系统不一定会 hang,只是表明系统有可能变慢,也就是 某些session 阻塞了 另外一些 session

Open chains found:

Chain 1 : :

    <2/1/0xe411b0f4/12280/db file parallel write>

Chain 2 : :

    <3/1/0xe411b410/12282/No Wait>

Chain 6 : :

    <18/1631/0xe4243cf8/25457/db file scattered read>

 -- <229/1568/0xe422b84c/8460/buffer busy waits>

Chain 17 : :

    <56/11/0xe4123ce0/13755/latch free>

 -- <2384/599/0xe41890dc/22488/latch free> --这个表明 56的sid 阻塞了 下面两个sid[番茄花园3] 

 -- <32/2703/0xe41fa284/25693/latch free>

 

OTHER CHAINS: It refers to chains of blockers and waiters related to other sessions identified under “open chains”, but not blocked directly by the process reported on the "open chain".

Other chains found:

Chain 676 : :

    <20/93/0xe411d644/13597/latch free>

Chain 677 : :

    <27/1201/0xe41d3188/15809/latch free>

Chain 678 : :

    <36/1532/0xe428be8c/4232/latch free>

 -- <706/1216/0xe4121aac/23317/latch free>

Chain 679 : :

    <43/12/0xe4122d54/13745/latch free>

Chain 680 : :

    <80/2/0xe41290d4/13811/library cache pin>

 -- <1919/1134/0xe421fdbc/3343/enqueue>

 

State of nodes:  --这部分内容比较重要,列出了具体的 session 信息,和阻塞信息

The following describes the important states to be considered:

 

 

IN_HANG: This might be considered as the most critical STATE. Basically a node in this state is involved in a deadlock, or is hung. Usually there will be another “adjacent node” in the same status. For example:

 

 [nodenum]/cnode/sid/sess_srno/session/ospid/state/start/finish/[adjlist]/predecessor

 [16]/0/17/154/0x24617be0/26800/IN_HANG/29/32/[185]/19

 [185]/1/16/4966/0x24617270//IN_HANG/30/31/[16]/16

 

In this example the node [16] is waiting for node [185], and the other way around; this is  a cyclical condition (deadlock).

 

 

LEAF and LEAF_NW: Leaf nodes are considered on top of the wait chain (usually blockers). They are considered “Blockers” when there is another session waiting. This can be easily identified using the “predecesor” field. If there is a node referenced in the ‘prdecessor’ field, the node is considered as “blocker”, otherwise it is considered as a “slow” session waiting for some resource.

The difference between LEAF and LEAF_NW is that LEAF nodes are not waiting for something, while LEAF_NW are not waiting or may be using the CPU. A typical representation of these nodes when they are considered blockers is:

 

 [ nodenum]/cnode/sid/sess_srno/session/ospid/state/start/finish/[adjlist]/predecessor

 [16]/0/17/154/0x24617be0/26800/LEAF/29/30//19

 [19]/0/20/13/0x24619830/26791/NLEAF/33/34/[16]/186

 

In this example, node [16] is blocking node [19]. Notice that node [16] has node [19] in the predecessor field.

Also notice that node [19] has node [16] in the adjacent list.

 

 

NLEAF : These sessions are usually considered as “stuck” sessions. It means that there is another session holding a resource needed by the session in this state. By using the adjlist, you can determine which node is the blocker of this process. When many sessions are found in this state, it is likely the database is experiencing a performance problem rather than a hang problem.

 

 

 

IGN and IGN_DMP : Sessions in this state are usually considered as IDLE sessions, unless they reference a node in the “ adjlist” field. In this case, the node is waiting for another node, so it will be considered as a ‘stuck’ session as well.

Extending the previous example,

 

 [nodenum]/cnode/sid/sess_srno/session/ospid/state/start/finish/[adjlist]/predecessor

 [16]/0/17/154/0x24617be0/26800/LEAF/29/30//19

 [19]/0/20/13/0x24619830/26791/NLEAF/33/34/[16]/186

 [189]/1/20/36/0x24619830//IGN/95/96/[19]/none

 [176]/1/7/1/0x24611d80//IGN/75/76//none

 

You may notice that node [189] is waiting for node [19] which in turn is waiting for node [16], while node [176] is an IDLE session . This maybe the case when a session has a DML lock but never finished the transaction.

 

In Oracle9i, two new states were introduced to differentiate between LEAF nodes that have other nodes waiting behind them (i.e., LEAF nodes that are blockers) vs. LEAF nodes that are not affecting other nodes.

 

 

SINGLE_NODE and SINGLE_NODE_NW:

This can be described the same as LEAF and LEAF_NW, except that they don't have processes depending on them.

 

5、 hanganalyze 的例子

以下是一个例子,先主要说明下这个例子:

Session 1(sid 71):执行 update 语句,跟新表中的一行,但是不提交

UPDATE Test_c c SET c.ch1='bb' WHERE c.ch1='b'

Session 2-14:分别都执行上面的语句,由于 sid 71 未提交,导致这几个 session 出现等待,这时候,执行 hanganalyze,可看到如下内容:

==============

HANG ANALYSIS:

==============

Found 13 objects waiting for

    <0/71/2410/0x20d85bc4/3568/SQL*Net message from client>  --当一个 session 导致了超过 10 个的session 去等待的时候,就会出现上面的内容

Open chains found:

Chain 1 : :

    <0/71/2410/0x20d85bc4/3568/SQL*Net message from client>

 -- <0/42/2/0x20d8cd2c/6112/enq: TX - row lock contention>  --这里 只记录了一个 session 去等待 sid 71 这个session

Other chains found:

Chain 2 : :

    <0/52/6959/0x20d855cc/5024/jobq slave wait>

Chain 3 : :

    <0/58/2141/0x20d88b84/4300/No Wait>

Chain 4 : :

    <0/59/1/0x20d8799c/2608/Streams AQ: waiting for time man>

Chain 5 : :

    <0/60/1/0x20d873a4/2604/Streams AQ: qmn slave idle wait>

Chain 6 : :

    <0/62/1/0x20d86dac/2452/Streams AQ: qmn coordinator idle>

Extra information that will be dumped at higher levels:

[level  4] :   1 node dumps -- [REMOTE_WT] [LEAF] [LEAF_NW]

[level  5] :   6 node dumps -- [SINGLE_NODE] [SINGLE_NODE_NW] [IGN_DMP]

[level 10] :  26 node dumps -- [IGN]

 

State of nodes

([nodenum]/cnode/sid/sess_srno/session/ospid/state/start/finish/[adjlist]/predecessor):

[41]/0/42/2/0x20dd427c/6112/IGN_DMP/1/4/[70]/none

[42]/0/43/2/0x20dd5664/4288/IGN/5/6/[70]/none

[43]/0/44/2/0x20dd6a4c/4688/IGN/7/8/[70]/none

[44]/0/45/2/0x20dd7e34/1448/IGN/9/10/[70]/none

[45]/0/46/2/0x20dd921c/2596/IGN/11/12/[70]/none

[46]/0/47/938/0x20dda604/4256/IGN/13/14/[70]/none

[47]/0/48/229/0x20ddb9ec/6028/IGN/15/16/[70]/none

[48]/0/49/3/0x20ddcdd4/5296/IGN/17/18/[70]/none

[49]/0/50/11/0x20dde1bc/2984/IGN/19/20/[70]/none

[50]/0/51/548/0x20ddf5a4/3156/IGN/21/22/[70]/none

[51]/0/52/6959/0x20de098c/5024/SINGLE_NODE/23/24//none

[52]/0/53/1426/0x20de1d74/1100/IGN/25/26//none

[53]/0/54/8445/0x20de315c/3536/IGN/27/28/[70]/none

[57]/0/58/2141/0x20de80fc/4300/SINGLE_NODE_NW/29/30//none

[58]/0/59/1/0x20de94e4/2608/SINGLE_NODE/31/32//none

[59]/0/60/1/0x20dea8cc/2604/SINGLE_NODE/33/34//none

[61]/0/62/1/0x20ded09c/2452/SINGLE_NODE/35/36//none

[63]/0/64/116/0x20def86c/5080/IGN/37/38/[70]/none

[66]/0/67/3/0x20df3424/3188/IGN/39/40//none

[67]/0/68/3/0x20df480c/3764/IGN/41/42//none

[69]/0/70/1227/0x20df6fdc/4500/IGN/43/44/[70]/none

[70]/0/71/2410/0x20df83c4/3568/LEAF/2/3//41

[71]/0/72/1/0x20df97ac/3572/IGN/45/46//none

[72]/0/73/1/0x20dfab94/3564/IGN/47/48//none

[73]/0/74/1/0x20dfbf7c/3556/IGN/49/50//none

[74]/0/75/1/0x20dfd364/3548/IGN/51/52//none

[75]/0/76/1/0x20dfe74c/3540/IGN/53/54//none

[76]/0/77/1/0x20dffb34/3532/IGN/55/56//none

[77]/0/78/1/0x20e00f1c/3528/IGN/57/58//none

[78]/0/79/1/0x20e02304/3524/IGN/59/60//none

[79]/0/80/1/0x20e036ec/3496/IGN/61/62//none

[80]/0/81/1/0x20e04ad4/3492/IGN/63/64//none

[81]/0/82/1/0x20e05ebc/3488/IGN/65/66//none

====================

END OF HANG ANALYSIS

====================

如果出现的事态紧急,这时,我们可以 观察下 出现 blocker 的那个 sid 的语句,如果有必要,就kill 掉

 

参考文档:

Metalink:ID 215858.1

 


 [番茄花园1]STATE OF THE NODES DESCRIPTION [番茄花园1] 是 hanganalyze 的主要部分,我们看也需重点观察这个部分,因为这里详细地描述了每个 的情况

 [番茄花园2]这个值是 hanganalyze 为 每个 sid 提供的序列号,用来区别不同的session,注意跟 sid 的区别。

 [番茄花园3]这是我个人的看法

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14730395/viewspace-683845/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14730395/viewspace-683845/

三极管开关电路在脉冲应用中的性能瓶颈分析 深入探讨三极管开关电路在高频脉冲场景下的响应延迟与功耗问题,揭示其性能限制的关键因素。结合实际应用,分析开关速度与信号完整性之间的矛盾,为优化三极管开关电路设计提供实用参考。 阅读详情

相关推荐

ADRV9026初始化避坑指南:手把手调试PostMcsInit常见故障

本文详细解析了ADRV9026多片同步初始化过程中的PostMcsInit常见故障,包括时钟校准失败、JESD链路建立问题和ARM核通信异常等。通过实际项目经验,提供了硬件检查清单、软件配置要点和分层诊断方法,帮助工程师快速定位和解决问题,提升系统稳定性。

hadoop5ranger的博客 620

HANGANALYZE 的简单使用与介绍

这意味着它将为集群中的所有会话生成信息,而不管发出该命令的实例是什么。注意:如果Level过大的话会产生大量的跟踪文件并影响系统的I/O性能,Oracle建议不要采用3级以上的跟踪。(3)NLEAF:这些Session通常被认为是“stuck”会话,意味着这些Session在等待某些Session的资源。(2)LEAF/LEAF_NW:这些Session通常是“blocker”或者是等待某些资源的“slow” node,通过字段“predecessor” 可以很容易标识出这些node。

zhuhuan248的专栏 429

ROS2实战:手把手教你用walking机器人仿真实现医院多楼层自动配送(含实时地图切换)

本文详细介绍了如何利用ROS2和walking机器人仿真平台实现医院多楼层自动配送系统,重点讲解了动态地图切换技术和多楼层导航的实现方法。通过实时加载地图和优化电梯过渡策略,解决了医院复杂环境下的自主配送难题,为医疗物流自动化提供了实用解决方案。

weixin_29090917的博客 364

oracle hang analyze,一次hanganalyze分析实例

一次hanganalyze分析实例问题在某项目组遇到一次xtclusteruser表被无数个会话占住,尝试把所有会话全部kill session后问题仍没有解决,锁仍然还在,而且kill session时执行时间异常的长(约10s左右)。由于应用中对该表的操作特别多,类似这样的操作会继续增多,如果不能找到最根源的占住资源的会话并把它kill的话,结果将是整个系统将无法正常使用。而且查资源堵塞情况也...

weixin_42422648的博客 333

ZYNQ平台AXI DMA传输避坑指南:如何快速定位‘errors:200‘等中断故障

本文详细解析了ZYNQ平台AXI DMA传输中常见的'errors:200'等中断故障,提供了从寄存器解析到压力测试的完整解决方案。通过深入分析XILINX_DMA中断机制、错误分类及五步排查法,帮助开发者快速定位并解决DMA传输问题,提升系统稳定性与性能。

weixin_29159613的博客 441

玩转Zabbix智能告警:降噪、排班、认领、升级、IM协同

集成Zabbix告警到FlashDuty,获得告警降噪、智能排班、IM协同等能力

n9ecommunity的博客 1041

hanganalyze理解

1. 数据库hang的几种可能性 oracle死锁或者系统负载非常高比如cpu使用或其他一些锁等待很高都可能导致系统hang住,比如大量的DX锁。 通常来说,我们所指的系统hang住,是指应用无响应,普通的sqlplus几乎无法操作等等。 2. 如何进行hang分析?hang分析有哪些level?如何选择level? 我们知道当一个数据库hang住时,最头痛的问题是无法登陆数据,也就无

wll的专栏 3103

DBeaver配置本地mysql-connector驱动文件

本文摘要:介绍了数据库驱动管理的基本操作步骤:1)新建驱动管理器,填写MySQL驱动名称、类名和类型;2)添加本地MySQL驱动文件;3)创建数据库连接并测试。适用于MySQL5.x和8.x版本,帮助用户快速配置数据库连接。

litlit023的专栏 1693

oracle数据库hang住分析工具Hanganalyze使用总结

数据库hang了?先别怨人品,快找原因吧,慢一点就要挨领导骂了。快用hang库分析神器吧: Hanganalyze可以用于查找数据库hang的原因,也可以用于其他一些等待事件的查找例如...

cuiai8257的博客 364

MediaPipe 从入门到精通:安装、配置与多场景应用实战手册

人体姿态检测是 MediaPipe 的核心功能之一,它能够从图像或视频中识别人体姿态,并输出关键点的坐标。这些关键点覆盖了身体的主要部位,例如肩膀、肘部、髋部、膝盖等,总计 33 个点。每个关键点包含 x、y、z 坐标(归一化到 0-1 范围)以及可见性评分,可用于分析动作、姿势或开发健身、游戏等应用。手部关键点检测是 MediaPipe 的另一大亮点,它可以识别图像或视频中的手部,并输出 21 个关键点的坐标。这些关键点覆盖手掌和手指的各个部位,适用于手势识别、虚拟现实或交互式应用。

m0_71589036的博客 389

Android Framework WMS面试题及参考答案

什么是 WindowManagerService(WMS)?它的作用是什么? WindowManagerService(WMS)是 Android 系统中非常重要的一个系统服务。它运行在系统进程(system_server 进程)中。 从本质上来说,WMS 是 Android 窗口管理系统的核心。它负责管理系统中的所有窗口,包括应用程序窗口、系统窗口(如状态栏、导航栏)等。 它的主要作用有很多。首先是窗口的创建和销毁。当一个应用请求创建一个窗口时,WMS 会协调各个模块完成窗口的创建工

大模型大数据攻城狮的专栏 2164

什么是HANGANALYZE,如何使用HANGANALYZE

数据库HANG住是计较头痛的事情,如何找到HANG住的原因,是DBA必须面临的课题。当数据库HANG住的时候,大多数DBA往往是通过V$SESSION_WAIT视图来进行分析。实际上Oracle有一个十分有效的工具----hanganalyze。HANGANALYZE可以十分清晰的将HANG住的信息告诉DBA,便于DBA进行进一步分析。Hanganalyze是从Oracle ...

weixin_34025151的博客 456

机器人中的数值优化(二十一)—— 伴随灵敏度分析、线性方程组求解器的分类和特点、优化软件

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 4206

Hanganalyze的用法

Hanganalyze的用法顾名思义,hanganalyze是用来在oracle hang的时候分析的。对于oracle来说,hang的表现基本上是由于internal deadlock,对于这种deadlock,oracle是...

190

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

oracle hanganalyze的用法以及trace文件分析(通过library cache pin和lock)

概述: 1.详细讲解了library cache pin和library cache lock的形成原因 2.介绍了hanganalyze的用法 3.详解了hanganalyze产生的trace文件的解读方法 han...

conghe6716的博客 453

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

oracle analyze lock,oracle hanganalyze的用法以及trace文件分析(通过library cache pin和lock)...

概述:1.详细讲解了library cache pin和library cache lock的形成原因2.介绍了hanganalyze的用法3.详解了hanganalyze产生的trace文件的解读方法hanganalyze有两种使用方法:a.alter session set events 'immediate trace name hanganalyze level ';会话级别,单实例和ra...

weixin_39754411的博客 229

温度PID控制PLC程序

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

oracle hanganalyze工具的使用

hanganalyze是ORACLE的一款性能诊断工具,这个款工具是从oracle 8.0.6开始可用,在oracle数据库出现严重的性能问题的时候它可以帮助你定位问题所在。   1.首先说说hanganalyze工具的用法 对于单实例数据库语法如下 alter session set events 'immediate trace name hanganalyze level '; 或

食肉动物的专栏 488

oradebug

oradebug 是诊断性能和挂起问题的有效工具。主要用于: 使得sql能够追踪你自己的服务进程以及外部服务进程 转储内部的oracle结构来诊断数据库挂起以及内存损坏情况。 转储数据文件头部信息或撤销分割头部 确定db...

cszt85637的博客 139

转 -- hanganalyze 使用总结

原址如下: http://www.itpub.net/thread-1575393-1-1.html   Hanganalyze工具使用内核调用检测会话在等待什么资源,报告出占有者和等待者的相互关系。另外,它还会将一些比较”interesting”的进程状态dump出来,这个取决于我们使用hanganalyze的分析级别。 hanganalyze可以用于查找数据库hang的原因,也可以用于

edwzhang的专栏 707

用Oracle跟踪诊断挂起的会话

1.简介本文通过例子简要介绍了如何利用Oracle的跟踪以及内部数据字典表诊断某些挂起的会话。--测试脚本conn test/testcreate orreplace procedure sp_test...

389

oracle hang analyze,什么是HANGANALYZE,如何使用HANGANALYZE

数据库HANG住是计较头痛的事情,如何找到HANG住的原因,是DBA必须面临的课题。当数据库HANG住的时候,大多数DBA往往是通过V$SESSION_WAIT视图来进行分析。实际上Oracle有一个十分有效的工具----hanganalyze。HANGANALYZE可以十分清晰的将HANG住的信息告诉DBA,便于DBA进行进一步分析。Hanganalyze是从Oracle 8i r2(8.1.6...

weixin_29439509的博客 528

Hanganalyze 使用

It is a important to find the that the reason hangs the database. How can we do, is a headache thing. And we can use oracle internal tool to find the cause, which is hanganalyze. Level of hanganalyz

DBA的天空 1562

Oracle HANGANALYZE 功能诊断 DB hanging

<br /> <br />       Oracle 数据库可能因为hang住而产生严重的性能问题,而通过HANGANALYZE  功能产生的日志可以帮助我们快速的定位是否是2个或者多个进程死锁了,有多少进程收到影响。从而帮助我们诊断出数据库的问题。<br /> <br /> <br />一.  HANGANALYZE 的2种使用方式:<br />(1)The “HANGANALYZE” command is available since Oracle Release 8.1.6. In Oracle9i

David Dai -- Focus on Oracle 1万+

oracle oradebug hanganalyze简单使用

先做一个简单事务锁等待: 窗口1: 窗口2:修改同样的数据 这时候我们会发现窗口2 的语句被卡住了。下面做个oradebug: 窗口3: 根据提示,打开所生成的trace文件,寻找有用的信息。 Chain 1: ----------------------------------------------------------------------------

killvoon的专栏 1190

Oracle HANGANALYZE

环境: OS:Oracle Linux As 5.5 DB:11.2.0.1 RAC 如下我们通过使用hangalyze获取到两个会话更新同一行数据的等待事件情况. 1.session1更新行数据 SQL> create table tb_test (id number,name varchar2(10)) tablespace users; Table creat

u014429186的博客 766

oradebug hanganalyze test

基本用法hanganalyze有两种使用方法:会话级别,单实例和rac都可以使用。

233
上一篇: Linux 上 安装oracle 的注意点
下一篇: Health check 用法小结
cuichenkai7892
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值