Redux-thunk的作用是什么

使用redux-thunk实现异步redux(基础文章) 使用redux-thunk实现异步redux Redux存在一个问题,就是无法实现异步的action,这也就是为什么我们要引入redux-thunk的原因。 在哪里引入redux-thunk? 在redux的核心组件store中引入。我们引入的这个thunk,相当于一个中间件。所以我们同时需要从redux中引入applyMiddleware,放入createStore的第二个参数中。 import {createStore,applyMiddleware} from 'redux'; import 阅读详情

redux-thunk是一个用于处理Redux中异步操作的中间件。在Redux中,reducers应该是纯函数,只负责处理同步的状态变更。然而,现实中我们常常需要处理异步操作,比如发起网络请求,获取数据等。这就是redux-thunk的作用所在。

redux-thunk允许你在Redux中派发(dispatch)一个函数而不仅仅是一个普通的action对象。这个函数可以在内部执行异步操作,并在合适的时候再派发实际的action来更新状态。

具体来说,redux-thunk的作用在于:

  1. 处理异步操作: 你可以派发一个返回函数的action,这个函数可以执行异步操作,比如发起API请求。在这个异步操作完成之后,再派发一个真正的action来更新Redux中的状态。

  2. 控制流: 通过使用redux-thunk,你可以在派发action的时候进行条件判断、流程控制等操作。这让你能够更灵活地处理不同情况下的异步行为。

  3. 副作用管理: 异步操作通常伴随着副作用,如网络请求、定时器等。redux-thunk可以帮助你在Redux中更好地管理这些副作用,以保持应用的可预测性。

// 异步操作的action creator
const fetchData = () => {
  return async (dispatch) => {
    dispatch({ type: 'FETCH_START' });

    try {
      const response = await fetch('https://api.example.com/data');
      const data = await response.json();
      dispatch({ type: 'FETCH_SUCCESS', payload: data });
    } catch (error) {
      dispatch({ type: 'FETCH_ERROR', payload: error.message });
    }
  };
};

// 在组件中使用
import { useDispatch } from 'react-redux';
import { fetchData } from './actions';

const MyComponent = () => {
  const dispatch = useDispatch();

  const handleFetchData = () => {
    dispatch(fetchData());
  };

  // ...
};

Redux Thunk 原理与实战:理解副作用调度机制 Redux 是一个强调可预测状态管理的 JavaScript 应用架构模式,其核心要求 reducer 必须是纯函数、无副作用且同步执行。然而真实应用中不可避免地需要处理网络请求、定时器等异步副作用,这就引出了中间件机制的设计必要性。Thunk 作为最基础的 Redux 中间件,本质是提供一种受控的副作用出口——它不改变 Redux 的纯函数约束,而是通过拦截函数型 action,在闭包中注入 dispatch 和 getState,实现异步逻辑与状态更新的解耦。这种机制支撑了 loading 状态管理、错 阅读详情

相关推荐

Redux Thunk 原理与实战:副作用管理而非异步封装

Redux 是一个纯同步状态管理框架,其核心设计拒绝在 reducer 中处理网络请求、定时器或本地存储等副作用。Redux Thunk 并非为‘支持异步’而生,而是提供一种受控的函数型 action 机制,将副作用逻辑统一收口到 dispatch 流程中,实现可预测、可测试、可组合的状态更新。它通过中间件扩展 dispatch 能力,允许传入函数(thunk),并在其中安全访问 getState 和 dispatch,从而支撑条件判断、流程编排与错误收敛。现代开发中,虽有 RTK Query 等更专注数据

weixin_33585822的博客 246

关于 redux-thunk 的作用,认识,理解

关于 redux-thunk 的作用,认识,理解 看这篇文章之前,如果你已经看到一些 redux-thunk 的教程,是不是觉得一头雾水,redux-thunk 到底有什么作用,用在哪里,代码不仅没有简化,反而还增加?基于我初学的一些疑惑和后来疯狂的百度,总结了一下 首先来一段代码示例 如果我们有一个异步请求,获取数据展示在页面上。假设 redux 都是已经写好了。我们只模拟请求阶段 //...

Jioho的博客 3281

Redux Thunk 原理与实战:从异步 Action 到可测试状态流

在 React 应用中,处理异步数据流是核心工程挑战。Redux 作为纯函数式状态容器,本身不支持副作用(如 API 调用),因此必须通过中间件机制将异步逻辑安全接入 dispatch 流程。Redux Thunk 正是这一问题的标准解法——它重新定义 action 形态,允许 dispatch 函数而非对象,从而在保持 reducer 纯净的前提下,实现 loading/error 状态管理、请求取消、竞态控制与上下文感知。其技术价值在于解耦副作用与状态更新,提升可测试性与复用性;典型应用场景包括用户登录

402

Redux中间件redux-thunk使用详解

redux-thunk主要用于处理reducer无法处理的异步1.什么是异步?同步:就是指前一个任务完成之后在继续执行下一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。异步:每一个任务有一个或多个回调函数(callback),前一个任务结束后,不执行下一个任务,而是执行回调函数,后一个任务不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。2.异步通常会发生在比较复杂的功能使用中axios请求接口数据接口数据返回则为异步。

qq_38980678的博客 3319

Redux Thunk 原理与实战:理解异步动作的本质

Redux 是一个基于纯函数和不可变状态的状态管理库,其核心要求所有 action 必须是普通对象,以保障状态变更的可预测性与可调试性。当涉及网络请求、定时器等副作用时,原生 Redux 无法直接处理,此时需借助中间件机制扩展 dispatch 能力。Redux Thunk 作为官方推荐方案,利用 JavaScript 函数是一等公民的特性,将异步逻辑封装为可被拦截执行的函数型 action,实现副作用的可控注入与分阶段状态更新。它不破坏纯函数范式,而是通过 middleware 在 dispatch 流程

weixin_33736048的博客 341

redux-thunk的作用

同步文章 redux,单向数据流是同操作的,驱动Redux流程的是action对象,每一个action对象被派发到store上以后,同步被派发到reducer函数。 reducer函数是纯函数,没有任何的副作用,完成数据操作后又同步更新到Store上去。 更新状态数据的操作立刻被同步给监听Store变化的函数,从而引发react组件的更新。 如果在redux中访问服务器,就需要做异步处理了。其中一个方法就是引入redux-thunk,在Redux的单向数据流中,在action对象被reducer函数处理之前

读心悦 1158

简单说明redux-thunk的作用

是什么 redux-thunk是react的一个applyMiddleware(中间件),你肯定经常在入口js文件中看到如下代码 const store = createStore(todoApp,applyMiddleware(thunk) 有什么用 一个action中进行多次的dispatch 一个action中做其他任何函数能做的事情(reducer因为必须是 pure function所以不能做很多事情) import {SHOWALL,SHOWNOTHING,ADDTODO} from '.

qq_42339350的博客 865

同物种,不同版本之间的坐标转化

是最常用的工具,如果有可用的链文件,这通常是最便捷的方法。CrossMap是一个功能强大的替代工具,支持多种文件格式和物种。自定义生成链文件适用于没有现成资源的情况,虽然复杂一些,但可以满足特定需求。Ensembl 和 Gramene提供的工具适用于支持的物种,尤其在植物基因组领域可能更具优势。选择合适的方法取决于你正在处理的物种、基因组版本以及现有的资源。

qq_40256654的博客 1851

redux副作用处理——redux-thunk

一、安装 yarn add redux-thunk // 或 npm install --save redux-thunk 二、使用 import { createStore, applyMiddleware } from "redux"; import * as loginActions from "./action/login"; import reducer from "./reducer"; import logger from "redux-logger"; import thunk from

qq_43660897的博客 755

小白的MatSWMM使用心路(二)——用matlab修改INP文件参数/使用matlab查找txt内容并修改多行内容

说是修改inp,但是里面的内容大部分还是讲怎么修改txt的……(?)。包含如何找到需要的参数(关键字)位置,以及修改那个位置的txt这样的内容。希望能帮助大家吧……Matlab你要多出好用的功能啊!

weixin_44276743的博客 4530

多孔材料吸附性质模拟程序RASPA的离线和在线安装方法

RASPA-2.0是今年美国西北大学教授Randall Q. Snurr等人开发的针对于MC,MD,分子力学优化等用途的程序,相比于之前开发的MUSIC软件,RASPA的功能更加齐全,操作更加简便,可以在MC的吸附过程中考虑骨架的柔性,也可以想MUSIC一样先制作积分格点(music中的map)。 A、离线安装(centos为例): (1)、安装之前要检查一下是否装了automake,

youyno的博客 1万+

redux-thunk、redux-promise、redux-saga(利用中间件进行副作用处理)

利用中间件进行副作用处理redux-thunk、redux-promiseredux-saga redux-thunk、redux-promise redux-thunk thunk允许action是一个带有副作用的函数,当action是一个函数被分发时,thunk会阻止action继续向后移交。 thunk会向函数中传递三个参数: dispatch:来自于store.dispatch getState:来自于store.getState extra:来自于用户设置的额外参数 // disp

一只勤劳的二哈的博客 544

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 491

[Redux/Mobx] redux的thunk作用是什么?

[Redux/Mobx] redux的thunk作用是什么? 作用:通过redux-thunk这个中间件,改变了redux中原本dispatch函数的作用,使它可以接受一个function作为dispatch的对象;在使用上,可以在这个function上进行异步操作,这样就实现了异步操作redux的目的. 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题 ...

歌谣的博客 499

【车载以太网】ATU(Address Translation Unit / Address Table Unit)

【车载以太网】ATU(Address Translation Unit / Address Table Unit)

天赐好车的博客 150

【LLC快速上手系列】如何在LLC谐振里优雅地调死区时间?

用示波器死盯Vds波形,找到ZVS临界点;别听“经验值”,亲自调才准;死区时间并非越短越好,也不是越长越稳,而是要“刚刚好”;用热成像看MOSFET温升变化,ZVS调好了,温度马上掉2~5℃;轻载难ZVS?适当提升频率 or 降低Lr可破!

weixin_43199439的博客 493

redux中间件redux-thunk的作用

redux的dispatch默认只能传一个对象参数: dispatch({ type: 'CHANGE_COLOR', themeColor: color }) redux-thunk的作用就是使dispatch支持传函数参数: dispatch(changeColorAsyn(color)) 给redux配置thunk也很简单: import { createStore, a...

徐同保的专栏 5137

【基于CKF的IMM】CV和CT两个模型下的IMM,二维,滤波使用CKF(容积卡尔曼滤波),附完整的matlab代码

该文章摘要: 本文提出了一种基于交互多模型(IMM)和容积卡尔曼滤波(CKF)的融合定位算法,用于解决目标在直线运动和转弯机动之间的模型切换问题。通过MATLAB仿真实现了IMM-CKF算法,并与单一的CV-CKF(匀速模型)和CT-CKF(匀角速转弯模型)方法进行对比。实验结果表明,在包含直线段和转弯段的复合轨迹跟踪中,IMM-CKF方法能够自适应调整模型权重,显著提高了定位精度。轨迹跟踪图、位置/速度误差对比图以及模型概率曲线直观展示了IMM算法的优势。文章提供了完整的MATLAB实现代码,可用于目标跟

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 614

Redux 异步副作用逻辑怎么写:thunk 和 saga 怎么选?

在 Redux 应用里写异步逻辑(发请求、按结果再 dispatch action、需要读取 store state 做多步判断)时,最常见的两个选择是 thunk 和 saga。这篇文章基于 Redux 官方文档给出一条可执行的路径:先按使用场景判断该用哪个,然后分别展示两种写法的完整代码,并说明如何在 Redux DevTools 中验证 action 确实被派发。适用前提是:你已经有 Red

gitblog_01028的博客 1100

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

粒子群算法(PSO)的基本思想是模拟鸟群觅食机制,将鸟类的觅食方向分为自我认知部分和社会部分,个体自主探索群体周围空间的同时,也随着群体的主流方向前进,不断逼近最优目标。本文详解PSO算法基本概念,并给出ROS C++实现加深理解

FRIGIDWINTER的博客 2614

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

Redux Toolkit createListenerMiddleware详解:如何优雅替代Redux Thunk,灵活编排副作用

Redux Toolkit(RTK)内置的 `createListenerMiddleware`(监听中间件)是处理 Redux 副作用的强大工具:它让你监听任何 action 或状态变化,在触发时执行异步逻辑,并支持取消、暂停、派生子任务等复杂流程控制。相比 Redux Thunk,它提供了 `take`、`condition`、`fork` 等原语,可以用更轻量的方式实现 Redux-Saga

gitblog_00003的博客 449

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Redux 中间件作用(redux-thunk/redux-saga)

Redux 中间件(Middleware)本质上是:reducer它主要解决:异步请求日志打印权限校验接口调用延迟 dispatch副作用管理。

qq_25416827的博客 387

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

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

Flutter for OpenHarmony 状态管理:用 redux_thunk 解决异步副作用

在跨端应用开发中,状态管理一直是工程化落地的重要环节,尤其是涉及异步逻辑时,如何保证数据流的可预测性和可维护性,直接决定应用能否规模化演进。Flutter 作为多端统一 UI 框架,在 OpenHarmony 生态中同样面临异步副作用复杂、状态分散、竞态频发等挑战。Redux 通过全局唯一 Store 和单向数据流,为状态变更提供了确定性的收敛路径;而 redux_thunk 中间件则在此基础上将 Action 扩展为函数,使得登录、Token 刷新、多接口并发等异步编排逻辑可以统一收口到 Action 层

weixin_32050773的博客 54

[前端] redux-thunk

redux-thunk

weixin_43872912的博客 460

Redux-实现redux-thunk

最近在读Redux相关源码,现将自己实现的代码和理解贴上,后期再补充详细~ redux-thunk用于副作用处理。 thunk允许action是一个带有副作用的函数,当action是一个函数被分发时,thunk会阻止action继续向后移交。 thunk会向函数中传递三个参数: dispatch:来自于store.dispatch getState:来自于store.getState extra:来自于用户设置的额外参数 redux-thunk的原理很简单,接收的action参数类型是函数就执行

Neekky的博客 347

redux中间件: devtools, thunk, saga

redux中间件一、redux-devtools二、redux-thunk三、redux-saga1. ES6: generator 函数2. 正文 一、redux-devtools // store.js import { createStore } from "redux"; import reducer from './reducer.js'; const store = createS...

nidaye666666的博客 235
上一篇: 在vue中,如何实现状态共享
下一篇: 华为OD机试 Java 【IPv4地址转换成整数】
AlgorithmHero
博客等级 码龄4年 606粉丝 1067原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlgorithmHero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值