07-异常

5.2 异常

异常:在程序运行期间发生的问题。 
异常的体系:

  • Throwable
    • Error:通常出现重大问题如:运行的类不存在或者内存溢出等。不编写针对代码对其处理 
      特点:由jvm抛出的严重问题,一般不针对性处理,而是直接修改程序解决。
    • Exception:在运行时运行出现的一起情况,可以通过try catch finally 捕获并进行针对性处理。

Exception和Error的子类名都是以父类名作为后缀。

5.2.1 Throwable中的方法

getMessage() 
• 获取异常信息, 
 返回字符串。 
toString() 
• 获取异常类名和异常信息, 
 返回字符串。 
printStackTrace() 
• 获取异常类名和异常信息,以及异常出现在程序中的位置。 
 返回值void。 
printStackTrace(PrintStream s) 
• 通常用该方法将异常内容保存在日志文件中,以便查阅。

5.2.2 异常类分类

如果让一个类称为异常类,必须要继承异常体系,因为只有称为异常体系的子类才有资格具备可抛性。 
才可以被两个关键字所操作,throws throw

异常的分类: 
1,编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系。 
这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式。 
这样的问题都可以针对性的处理。

2,编译时不检测异常(运行时异常):就是Exception中的RuntimeException和其子类。 
这种问题的发生,无法让功能继续,运算无法进行,更多是因为调用者的原因导致的而或者引发了内部状态的改变导致的。 
那么这种问题一般不处理,直接编译通过,在运行时,让调用者调用时的程序强制停止,让调用者对代码进行修正。

所以自定义异常时,要么继承Exception。要么继承RuntimeException。

5.2.3 throw和 throws的区别

throw用于抛出异常对象。 
throws用于标识函数暴露出的异常。

区别: 
1.throw使用在函数内。 
 throws使用在函数上。 
2.throw抛出的是异常对象。 
 throws抛出的是异常类,可以抛出多个,用逗号隔开。

5.2.4 异常处理

格式:

try 

  //需要被检测异常的代码。 

catch(异常类 变量)//该变量用于接收发生的异常对象 

  //处理异常的代码。 

finally 

  //一定会被执行的代码。 
} 

Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。

5.2.5 自定义异常

自定义类继承Exception或者其子类。 
通过构造函数定义异常信息。 
例: 

Class DemoException extends Exception
{
  DemoException(String message)
  {
    super(message);
  }
}

通过throw将自定义异常抛出。

5.2.6 异常细节

1,RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。 
2,一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。 
3,如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常。

5.2.7 异常处理的原则:

1,函数内容如果抛出需要检测的异常,那么函数上必须要声明。 
否则必须在函数内用trycatch捕捉,否则编译失败。

2,如果调用到了声明异常的函数,要么trycatch要么throws,否则编译失败。

3,什么时候catch,什么时候throws 呢? 
功能内容可以解决,用catch。 
解决不了,用throws告诉调用者,由调用者解决 。

4,一个功能如果抛出了多个异常,那么调用时,必须有对应多个catch进行针对性的处理。 

内部又几个需要检测的异常,就抛几个异常,抛出几个,就catch几个。


自定义异常演示:

  1. class BlowZeroException extends Exception{//自定义异常类,处理数组角标为负数的
  2. BlowZeroException(String message){
  3. super(message);//调用父类带String参数的方法
  4. }
  5. }
  6. class Demo3{
  7. public int method(int[] arr,int index) throws BlowZeroException {
  8. if(index<0){
  9. //未报告的异常错误BlowZeroException; 必须对其进行捕获或声明以便抛出,
  10. //此时必须在函数上进行声明通过throws
  11. throw new BlowZeroException("数组角标不能为负数"+index);
  12. }
  13. return index;
  14. }
  15. }
  16. public class ExceptionDemo3{
  17. public static void main(String[] args) throws BlowZeroException{
  18. int[] arr = new int[5];
  19. Demo3 d3 = new Demo3();
  20. // d3.method(arr,-1);
  21. }
  22. }



# ComfyUI Error Report ## Error Details - **Node ID:** 107 - **Node Type:** InitFluxLoRATraining - **Exception Type:** ValueError - **Exception Message:** max() arg is an empty sequence ## Stack Trace ``` File "D:\ComfyUI-aki-v1.6\ComfyUI\execution.py", line 361, in execute output_data, output_ui, has_subgraph = get_output_data(obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\ComfyUI-aki-v1.6\ComfyUI\execution.py", line 236, in get_output_data return_values = _map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\ComfyUI-aki-v1.6\ComfyUI\execution.py", line 208, in _map_node_over_list process_inputs(input_dict, i) File "D:\ComfyUI-aki-v1.6\ComfyUI\execution.py", line 197, in process_inputs results.append(getattr(obj, func)(**inputs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\ComfyUI-aki-v1.6\ComfyUI\custom_nodes\comfyui-fluxtrainer\nodes.py", line 631, in init_training training_loop = network_trainer.init_train(args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\ComfyUI-aki-v1.6\ComfyUI\custom_nodes\comfyui-fluxtrainer\train_network.py", line 328, in init_train tokenize_strategy = self.get_tokenize_strategy(args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\ComfyUI-aki-v1.6\ComfyUI\custom_nodes\comfyui-fluxtrainer\flux_train_network_comfy.py", line 101, in get_tokenize_strategy _, is_schnell, _, _ = flux_utils.analyze_checkpoint_state(args.pretrained_model_name_or_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\ComfyUI-aki-v1.6\ComfyUI\custom_nodes\comfyui-fluxtrainer\library\flux_utils.py", line 76, in analyze_checkpoint_state max_single_block_index = max( ^^^^ ``` ## System Information - **ComfyUI Version:** 0.3.43 - **Arguments:** D:\ComfyUI-aki-v1.6\ComfyUI\main.py --auto-launch --preview-method none --disable-cuda-malloc --fast - **OS:** nt - **Python Version:** 3.11.9 (tags/v3.11.9:de54cf5, Apr 2 2024, 10:12:12) [MSC v.1938 64 bit (AMD64)] - **Embedded Python:** false - **PyTorch Version:** 2.7.0+cu128 ## Devices - **Name:** cuda:0 NVIDIA GeForce RTX 5060 Ti : cudaMallocAsync - **Type:** cuda - **VRAM Total:** 17102733312 - **VRAM Free:** 15803088896 - **Torch VRAM Total:** 0 - **Torch VRAM Free:** 0 ## Logs ``` 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - func2025-07-07T12:01:01.204855 - )2025-07-07T12:01:01.204855 - (2025-07-07T12:01:01.204855 - **inputs2025-07-07T12:01:01.204855 - )2025-07-07T12:01:01.204855 - )2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - ^^^^^^^^^^^^^^2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - ^^^^^^^^^^^^^^ 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - File 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - "D:\ComfyUI-aki-v1.6\ComfyUI\cust2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - om_nodes\comfyui-fluxtrainer\node2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - s.py"2025-07-07T12:01:01.204855 - , line 2025-07-07T12:01:01.204855 - 6312025-07-07T12:01:01.204855 - , in init_training2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.204855 - 2025-07-07T12:01:01.205856 - training_loop = 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - network_trainer.init_train2025-07-07T12:01:01.205856 - (2025-07-07T12:01:01.205856 - args2025-07-07T12:01:01.205856 - )2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - ^^^^^^^^^^^^^2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - ^^^^^^^^^^^^^^^^^^^ 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - File 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - "D:\ComfyUI-aki-v1.6\ComfyUI\cust2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - om_nodes\comfyui-fluxtrainer\trai2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - n_network.py"2025-07-07T12:01:01.205856 - , line 2025-07-07T12:01:01.205856 - 3282025-07-07T12:01:01.205856 - , in 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - init_train 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - tokenize_strategy = 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - self.get_tokenize_strategy2025-07-07T12:01:01.205856 - (2025-07-07T12:01:01.205856 - args2025-07-07T12:01:01.205856 - )2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - ^^^^^^^^^2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - ^^^^^^^^^^^^^^^^^^^^^^^ 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - File 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - "D:\ComfyUI-aki-v1.6\ComfyUI\cust2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.205856 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - om_nodes\comfyui-fluxtrainer\flux2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - _train_network_comfy.py"2025-07-07T12:01:01.207344 - , line 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 1012025-07-07T12:01:01.207344 - , in get_tokenize_strategy 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - _, is_schnell, _, _ = 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - flux_utils.analyze_checkpoint_sta2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - te2025-07-07T12:01:01.207344 - (2025-07-07T12:01:01.207344 - args.pretrained_model_name_or_2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - path2025-07-07T12:01:01.207344 - )2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - ^^^^^^^2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - File 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - "D:\ComfyUI-aki-v1.6\ComfyUI\cust2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - om_nodes\comfyui-fluxtrainer\libr2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - ary\flux_utils.py"2025-07-07T12:01:01.207344 - , line 2025-07-07T12:01:01.207344 - 762025-07-07T12:01:01.207344 - , in 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - analyze_checkpoint_state 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - max_single_block_index = 2025-07-07T12:01:01.207344 - max2025-07-07T12:01:01.207344 - (2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.207344 - 2025-07-07T12:01:01.208840 - ^^^^2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - ValueError: 2025-07-07T12:01:01.208840 - max2025-07-07T12:01:01.208840 - (2025-07-07T12:01:01.208840 - )2025-07-07T12:01:01.208840 - arg is an empty2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - sequence 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.208840 - 2025-07-07T12:01:01.210844 - 2025-07-07T12:01:01.210844 - 2025-07-07T12:01:01.210844 - INFO 2025-07-07T12:01:01.210844 - 2025-07-07T12:01:01.210844 - Prompt executed in 2025-07-07T12:01:01.210844 - 0.062025-07-07T12:01:01.210844 - seconds 2025-07-07T12:01:01.210844 - 2025-07-07T12:01:01.210844 - main.py2025-07-07T12:01:01.210844 - :2025-07-07T12:01:01.210844 - 1942025-07-07T12:01:01.210844 - ``` ## Attached Workflow Please make sure that workflow does not contain any sensitive information such as API keys or passwords. ``` Workflow too large. Please manually upload the workflow from local file system. ``` ## Additional Context (Please add any additional context or steps to reproduce the error here)
07-08
错误信息 `max() arg is an empty sequence` 表明程序在调用 Python 的内置函数 `max()` 时,传入了一个空的序列(如列表、元组等),而 `max()` 函数无法处理空输入。 ### 分析堆栈跟踪 根据提供的堆栈跟踪信息: 1. 错误发生在文件 `flux_utils.py` 第 76 行的 `analyze_checkpoint_state` 方法中。 2. 具体代码为:`max_single_block_index = max(...)` 3. 这表明 `max(...)` 中的参数是一个空列表或其他空序列。 ### 可能的原因 - **模型路径问题**:`args.pretrained_model_name_or_path` 指向的模型路径可能无效或缺少某些必要的文件。 - **模型结构解析失败**:代码试图从模型检查点中提取信息时,未能找到预期的数据结构,导致生成了一个空的列表。 - **数据处理逻辑错误**:可能是代码中的某个步骤未能正确解析模型文件内容,从而导致后续逻辑依赖的列表为空。 ### 解决方案 1. **检查模型路径**: - 确保 `args.pretrained_model_name_or_path` 指向一个有效的预训练模型目录,并且该目录包含所有必需的文件。 - 验证模型是否完整,尝试重新下载或重新解压模型文件。 2. **调试代码**: - 在 `flux_utils.py` 文件的第 76 行之前添加打印语句,检查传递给 `max()` 的参数是什么: ```python print("Input to max():", your_list) ``` - 如果列表为空,进一步向上查找为何没有数据被填充。 3. **异常处理**: - 在调用 `max()` 前,可以先检查列表是否为空: ```python if your_list: max_single_block_index = max(your_list) else: raise ValueError("The list passed to max() is empty. Check the model structure.") ``` 4. **更新插件**: - 检查是否有最新版本的 `comfyui-fluxtrainer` 插件可用,可能存在已修复的 bug 或改进的错误处理逻辑。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值