React状态管理常见面试题目(一)

news2024/12/21 20:37:51

1. Redux 如何实现多个组件之间的通信?多个组件使用相同状态时如何进行管理?

Redux 实现组件通信

Redux 是一个集中式的状态管理工具,通过共享一个全局 store 来实现多个组件之间的通信。

  • 通信机制
    1. 所有状态保存在 Redux 的全局 store 中。
    2. 使用 mapStateToPropsuseSelector 获取状态。
    3. 通过 dispatch 分发动作更新状态。
    4. 状态变化后,所有订阅该状态的组件自动重新渲染。
示例
import React from 'react';
import { createStore } from 'redux';
import { Provider, useSelector, useDispatch } from 'react-redux';

const initialState = { count: 0 };

// Reducer
const counterReducer = (state = initialState, action) => {
  switch (action.type) {
    case 'INCREMENT':
      return { count: state.count + 1 };
    case 'DECREMENT':
      return { count: state.count - 1 };
    default:
      return state;
  }
};

// Store
const store = createStore(counterReducer);

// Component A (Increment)
function Increment() {
  const dispatch = useDispatch();
  return <button onClick={() => dispatch({ type: 'INCREMENT' })}>Increment</button>;
}

// Component B (Display)
function Display() {
  const count = useSelector((state) => state.count);
  return <div>Count: {count}</div>;
}

// App
function App() {
  return (
    <Provider store={store}>
      <Increment />
      <Display />
    </Provider>
  );
}
  • 多个组件共享状态
    • 所有组件从 store 中读取状态。
    • 当状态更新时,订阅了该状态的组件会自动重新渲染。

2. Redux 中间件的实现原理是什么?

中间件原理

Redux 中间件通过对 dispatch 方法进行拦截和增强,允许在动作分发(dispatch)和到达 Reducer 之间执行自定义逻辑。

  • Middleware 核心代码
    const loggerMiddleware = (store) => (next) => (action) => {
      console.log('Action:', action);
      let result = next(action); // 执行下一个中间件或 Reducer
      console.log('New State:', store.getState());
      return result;
    };
    
使用中间件的流程
  1. 创建中间件(如日志、异步操作)。
  2. 使用 applyMiddleware 将中间件添加到 store
  3. 中间件在每次 dispatch 时被调用。
示例
import { createStore, applyMiddleware } from 'redux';

const logger = (store) => (next) => (action) => {
  console.log('Dispatching:', action);
  let result = next(action);
  console.log('State after dispatch:', store.getState());
  return result;
};

const store = createStore(counterReducer, applyMiddleware(logger));

3. 什么是 React 的状态提升?使用场景有哪些?

状态提升

状态提升是指将多个子组件需要共享的状态提升到它们的共同父组件中,父组件负责管理状态并通过 props 将状态和更新函数传递给子组件。

使用场景
  • 多个组件需要共享同一个状态。
  • 一个组件的状态变化会影响另一个组件。
  • 示例:表单输入同步、计数器共享。
示例代码
function Parent() {
  const [count, setCount] = React.useState(0);

  return (
    <div>
      <ChildA count={count} />
      <ChildB increment={() => setCount(count + 1)} />
    </div>
  );
}

function ChildA({ count }) {
  return <div>Count: {count}</div>;
}

function ChildB({ increment }) {
  return <button onClick={increment}>Increment</button>;
}

4. Redux 中如何设置初始状态?

设置初始状态的两种方式
  1. 在 Reducer 中定义

    const initialState = { count: 0 };
    
    const reducer = (state = initialState, action) => {
      switch (action.type) {
        case 'INCREMENT':
          return { count: state.count + 1 };
        default:
          return state;
      }
    };
    
  2. 创建 Store 时传入

    const preloadedState = { count: 5 };
    const store = createStore(reducer, preloadedState);
    

5. React 组件间共享数据的方法有哪些?

  1. 通过 props 传递

    • 适用于父子组件之间的数据共享。
  2. 通过 Context API

    • 用于避免多层级的 props 传递。
    const MyContext = React.createContext();
    <MyContext.Provider value={sharedValue}>
      <Child />
    </MyContext.Provider>;
    
  3. 通过 Redux

    • 适合全局状态管理。
  4. 自定义 Hook

    • 用于共享逻辑和状态。
    function useSharedState() {
      const [state, setState] = React.useState(initialValue);
      return [state, setState];
    }
    

6. 请描述点击按钮触发到状态更改的数据流向

  1. 用户点击按钮。
  2. 触发事件处理函数,调用 dispatch
  3. dispatchaction 传递给 Reducer。
  4. Reducer 根据 action 更新状态。
  5. Redux store 通知订阅的组件,重新渲染。

7. 什么是 Flux?它的设计思想是什么?有哪些应用场景?

Flux

Flux 是 Facebook 提出的单向数据流架构,解决复杂组件间的状态管理问题。

核心设计思想
  1. 单向数据流
    • 数据流动方向为:Action -> Dispatcher -> Store -> View
  2. 集中式状态管理
    • 状态集中存储在 Store 中。
  3. 事件驱动
    • Action 是状态变化的唯一来源。
应用场景
  • 单页面应用(SPA)。
  • 需要共享状态的复杂组件结构。
  • 比如,购物车、社交网络应用等。

8. React 状态管理器的核心精髓是什么?

  • 状态集中管理

    • 使用全局 store 保存共享状态,组件从 store 获取状态。
  • 不可变性

    • 状态是不可变的,任何更新都返回一个新状态。
  • 单向数据流

    • 数据从 store 流向组件,组件通过 action 修改状态。

9. redux-saga 的实现原理是怎样的?

实现原理

redux-saga 是一个基于 Generator 函数的 Redux 中间件,用于处理复杂的异步逻辑。它通过 take, call, 和 put 等 Effect 来控制异步操作。

核心流程
  1. Saga 监听特定的 actiontake)。
  2. 使用 call 执行异步任务。
  3. 使用 put 触发新的 action
示例
import { call, put, takeEvery } from 'redux-saga/effects';
import axios from 'axios';

function* fetchData(action) {
  try {
    const data = yield call(axios.get, '/api/data');
    yield put({ type: 'FETCH_SUCCESS', payload: data });
  } catch (e) {
    yield put({ type: 'FETCH_ERROR', message: e.message });
  }
}

function* mySaga() {
  yield takeEvery('FETCH_REQUEST', fetchData);
}

10. React 状态管理 MobX 的设计思想是什么?

MobX 的设计思想
  1. 响应式编程

    • 状态变化时,视图自动更新,无需手动监听。
  2. 基于观察者模式

    • 数据(observable)被观察,组件(observer)监听其变化。
  3. 面向对象

    • 状态可以封装在类中,符合传统的 OOP 编程习惯。

11. Redux 中如何处理异步请求?

Redux 不能直接处理异步请求,需要通过中间件(如 redux-thunkredux-saga)。

使用 redux-thunk

redux-thunk 允许在 dispatch 函数中返回异步函数:

const fetchData = () => async (dispatch) => {
  dispatch({ type: 'FETCH_REQUEST' });
  try {
    const response = await fetch('/api/data');
    const data = await response.json();
    dispatch({ type: 'FETCH_SUCCESS', payload: data });
  } catch (error) {
    dispatch({ type: 'FETCH_ERROR', payload: error });
  }
};

以上是详细的回答和示例代码,希望对你理解这些概念有所帮助!

1. 当 React 的多个组件有自己的 state,同时需要维护一些公共状态时,该如何设计和管理这些状态?

当多个组件有自己的局部状态,同时需要共享公共状态,可以采用以下方法进行设计和管理:

1.1 Context API
  • 使用 React 的 Context API 维护公共状态,避免繁琐的 props 传递。
  • 局部状态仍然使用 useStateuseReducer

示例

const CounterContext = React.createContext();

function Parent() {
  const [count, setCount] = React.useState(0);

  return (
    <CounterContext.Provider value={{ count, setCount }}>
      <ChildA />
      <ChildB />
    </CounterContext.Provider>
  );
}

function ChildA() {
  const { count } = React.useContext(CounterContext);
  return <div>Count: {count}</div>;
}

function ChildB() {
  const { setCount } = React.useContext(CounterContext);
  return <button onClick={() => setCount((prev) => prev + 1)}>Increment</button>;
}
1.2 使用 Redux
  • 适合管理复杂的共享状态。
  • 将公共状态存储在 Redux store 中,局部状态仍然独立管理。

示例

const initialState = { count: 0 };
const reducer = (state = initialState, action) => {
  switch (action.type) {
    case 'INCREMENT':
      return { count: state.count + 1 };
    default:
      return state;
  }
};

const store = createStore(reducer);
1.3 结合 Context 和局部状态
  • Context 提供共享状态,局部状态通过组件内的 useState 单独管理,避免全局状态过于复杂。

2. Redux 和 Flux 的区别是什么?

特性FluxRedux
数据流多个 Store,可多向通信单一 Store,单向数据流
状态管理状态分散在多个 Store 中状态集中管理在全局 Store 中
更新机制Dispatcher 广播 ActionReducer 根据 Action 返回新状态
设计复杂度需要自己实现 Dispatcher 和 StoreRedux 提供完整解决方案
易用性灵活但需手动管理API 简单,约束明确

3. MobX 和 Redux 状态管理有什么区别?

特性MobXRedux
核心理念响应式编程,基于观察者模式强制单向数据流
状态管理状态分布式管理状态集中式管理
学习曲线简单易学,语法自然需要理解 Redux 的核心概念
性能小范围状态更新整体状态更新(需要优化)
异步处理内置支持,直接写普通异步代码需通过中间件(如 Thunk/Saga)实现
复杂性灵活但容易失控明确但可能显得冗长

4. Redux 有哪些优缺点?

优点
  1. 单向数据流:状态管理清晰,易于调试。
  2. 集中式管理:全局 Store 提供了统一的数据源,易于跟踪状态。
  3. 社区支持:丰富的生态系统和中间件支持。
  4. 可预测性:状态更新逻辑纯粹且可预测。
缺点
  1. 样板代码多:需要编写 Action、Reducer 等,复杂场景下代码较多。
  2. 学习成本高:需掌握 Redux 的核心概念和中间件。
  3. 性能问题:不优化时可能导致性能瓶颈。

5. Redux 的中间件是什么?有哪些常用的 Redux 中间件?

中间件定义

Redux 中间件是对 dispatch 方法的增强,用于在 action 到达 Reducer 前执行额外的逻辑。

常用中间件
  1. redux-thunk

    • 支持异步 action,允许 action 返回函数而不是对象。
    const fetchData = () => async (dispatch) => {
      const data = await fetch('/api').then((res) => res.json());
      dispatch({ type: 'DATA_LOADED', payload: data });
    };
    
  2. redux-saga

    • 使用 Generator 函数管理异步操作。
    function* fetchDataSaga() {
      const data = yield call(fetch, '/api');
      yield put({ type: 'DATA_LOADED', payload: data });
    }
    
  3. redux-logger

    • 打印 action 和状态变化的日志,便于调试。

6. Redux 的 store 是什么?

  • Redux Store 是整个应用的状态容器,用于存储和管理全局状态。
  • 它通过以下方法与应用交互:
    1. getState:获取当前状态。
    2. dispatch:分发 action
    3. subscribe:订阅状态变化。

创建 Store

import { createStore } from 'redux';
const store = createStore(reducer);

7. Redux 中如何重置状态?

方法 1:定义一个 RESET Action
const initialState = { count: 0 };

const reducer = (state = initialState, action) => {
  switch (action.type) {
    case 'RESET':
      return initialState;
    default:
      return state;
  }
};

// Dispatch 重置
store.dispatch({ type: 'RESET' });
方法 2:创建新 Reducer
const rootReducer = (state, action) => {
  if (action.type === 'RESET') {
    return undefined; // 清空状态
  }
  return appReducer(state, action);
};

8. Redux 状态管理器与将变量挂载到 window 对象中有什么区别?

特性Redux 状态管理器挂载到 window 对象
作用域控制状态在组件内访问,作用域明确全局变量容易污染命名空间
调试能力支持调试工具查看状态变化无法直接追踪变量变化
状态更新通过 Reducer 保持状态不可变全局变量可随意修改,易出错
组件通信统一数据流,方便跨组件共享需要手动管理数据流
扩展性支持中间件、插件扩展缺乏扩展能力

9. 什么是 React 的 contextType?它的作用是什么?

contextType
  • contextType 是 React 提供的一个类组件属性,用于订阅 Context 对象。
  • 在类组件中,可以直接通过 this.context 访问 Context 的值。
作用
  1. 提供跨组件共享数据的能力。
  2. 替代多层级的 props 传递。
示例
const MyContext = React.createContext('default value');

class MyComponent extends React.Component {
  static contextType = MyContext; // 订阅 Context

  render() {
    return <div>Value: {this.context}</div>;
  }
}

// 使用
<MyContext.Provider value="provided value">
  <MyComponent />
</MyContext.Provider>

输出Value: provided value

限制
  • 仅适用于类组件;函数组件可以使用 useContext 替代。

通过这些详细回答,希望能更清晰地理解 React 和 Redux 状态管理相关概念及其应用。

1. 在 Redux 中如何发起网络请求?

Redux 本身不支持直接发起网络请求,但可以通过中间件(如 redux-thunkredux-saga)来实现。

使用 redux-thunk
// Action creator
const fetchData = () => async (dispatch) => {
  dispatch({ type: 'FETCH_DATA_START' });

  try {
    const response = await fetch('/api/data');
    const data = await response.json();
    dispatch({ type: 'FETCH_DATA_SUCCESS', payload: data });
  } catch (error) {
    dispatch({ type: 'FETCH_DATA_FAILURE', error });
  }
};
使用 redux-saga
import { call, put, takeEvery } from 'redux-saga/effects';

function* fetchDataSaga() {
  try {
    const response = yield call(fetch, '/api/data');
    const data = yield response.json();
    yield put({ type: 'FETCH_DATA_SUCCESS', payload: data });
  } catch (error) {
    yield put({ type: 'FETCH_DATA_FAILURE', error });
  }
}

// Watcher Saga
function* watchFetchData() {
  yield takeEvery('FETCH_DATA_START', fetchDataSaga);
}

2. Redux 中间件如何获取 store 和 action?它们是如何处理的?

中间件获取 Store 和 Action

Redux 中间件通过函数链的形式接入 Redux 流程。中间件接收以下三个参数:

  1. store:通过 store.getState() 获取当前状态。
  2. next:调用以继续分发到下一个中间件或 Reducer。
  3. action:当前分发的动作。
中间件实现机制

中间件通过增强 dispatch 方法实现其功能:

const loggerMiddleware = (store) => (next) => (action) => {
  console.log('Dispatching:', action);
  const result = next(action); // 调用下一个中间件或 reducer
  console.log('Next State:', store.getState());
  return result;
};

3. 什么是 React 的 childContextTypes?它的作用是什么?

定义
  • childContextTypes 是 React 中的一个旧 API,用于声明子组件可以访问的上下文数据类型(在 Context API 之前)。
  • 它通过 getChildContext() 方法提供上下文。
作用

允许父组件向深层嵌套的子组件传递数据,而不需要通过 props 层层传递。

示例
import PropTypes from 'prop-types';

class Parent extends React.Component {
  getChildContext() {
    return { theme: 'dark' };
  }

  render() {
    return <Child />;
  }
}

Parent.childContextTypes = {
  theme: PropTypes.string,
};

class Child extends React.Component {
  render() {
    return <div>{this.context.theme}</div>;
  }
}

Child.contextTypes = {
  theme: PropTypes.string,
};

4. 在 React 中,如何使用 Context API?

使用 Context API 的步骤
  1. 创建 Context

    const MyContext = React.createContext(defaultValue);
    
  2. 提供 Context

    <MyContext.Provider value={value}>
      {children}
    </MyContext.Provider>
    
  3. 消费 Context

    • 类组件:使用 static contextType
    • 函数组件:使用 useContext 钩子。
示例
const ThemeContext = React.createContext('light');

function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Toolbar />
    </ThemeContext.Provider>
  );
}

function Toolbar() {
  const theme = React.useContext(ThemeContext); // 消费 Context
  return <div>Theme: {theme}</div>;
}

5. 请解释 Redux 的核心概念、设计思想、工作流程和工作原理

核心概念
  1. Store:存储应用状态。
  2. Action:描述状态变化的事件对象。
  3. Reducer:定义如何根据 action 更新状态。
  4. Middleware:扩展 dispatch 功能的插件。
  5. 单向数据流:状态流转的方向是固定的,易于维护。
设计思想
  • 状态管理的核心是单向数据流不可变状态
  • 状态只通过 dispatch(action) 和 Reducer 更新。
工作流程
  1. 用户触发 action
  2. dispatch 传递 action 到中间件。
  3. 中间件处理后,传递给 Reducer。
  4. Reducer 返回新状态并更新 Store。
工作原理

Redux 的内部通过以下机制保持状态流转:

  • 中间件拦截 dispatch,执行异步逻辑或扩展功能。
  • 状态更新由 Reducer 的纯函数返回新对象,保证不可变性。

6. Redux 是否建议在 Reducer 中触发 Action?为什么?

结论

Redux 不建议在 Reducer 中触发 action

原因
  1. Reducer 必须是纯函数
    • Reducer 不应有副作用(如触发异步操作或调度 action)。
  2. 破坏单向数据流
    • 在 Reducer 中触发 action 会导致状态更新流程复杂化。

7. Redux 的数据存储和本地存储有什么区别?

特性Redux 数据存储本地存储(LocalStorage)
作用范围当前运行的应用跨页面持久化
数据更新状态不可变,通过 action 更新可随意直接修改
生命周期随应用生命周期存在持久化,需手动清理
同步性即时更新组件手动检测变化

8. 什么是 redux-saga 中间件?它有什么作用?

定义

redux-saga 是 Redux 的异步中间件,用于管理复杂的异步流程。

作用
  1. 处理副作用:如 API 请求、定时器等。
  2. 流控制:优雅地处理并发任务、队列任务。
  3. 易测试:基于 Generator 函数,易于测试异步逻辑。
示例
function* fetchDataSaga() {
  const data = yield call(fetch, '/api/data');
  yield put({ type: 'DATA_SUCCESS', payload: data });
}

9. Redux 如何添加新的中间件?

步骤
  1. 引入中间件

    import { applyMiddleware, createStore } from 'redux';
    import thunk from 'redux-thunk';
    const store = createStore(reducer, applyMiddleware(thunk));
    
  2. 组合多个中间件

    const middlewares = [thunk, logger];
    const store = createStore(reducer, applyMiddleware(...middlewares));
    

10. Redux 请求中间件如何处理并发请求?

通过唯一标识管理并发请求

在 Action 中添加唯一标识,标记请求的起始和结束。

const fetchData = (id) => async (dispatch) => {
  dispatch({ type: 'REQUEST_START', id });
  const data = await fetch(`/api/data/${id}`).then((res) => res.json());
  dispatch({ type: 'REQUEST_SUCCESS', id, data });
};
通过 redux-saga 实现取消任务

使用 takeLatest 确保只保留最近的一次请求。

import { takeLatest, call, put } from 'redux-saga/effects';

function* fetchData(action) {
  const data = yield call(fetch, `/api/data/${action.id}`);
  yield put({ type: 'DATA_SUCCESS', payload: data });
}

function* watchFetchData() {
  yield takeLatest('FETCH_REQUEST', fetchData);
}

通过以上回答,全面覆盖了 Redux 中如何处理网络请求、状态管理和中间件扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台V7000存储上共12块SAS机械硬盘&#xff08;其中1块是热备盘&#xff09;&#xff0c;组建了2组Mdisk&#xff0c;创建了一个pool。挂载在小型机上作为逻辑盘使用&#xff0c;小型机上安装的AIXSybase。 服务器存储故障&#xff1a; V7…

LabVIEW中的“Synchronize with Other Application Instances“

在LabVIEW中&#xff0c;“Synchronize with Other Application Instances”是一个常见的提示或错误&#xff0c;通常出现在尝试并行运行多个LabVIEW实例时&#xff0c;特别是当你打开多个VI或项目时。这个问题可能影响程序的执行流程&#xff0c;导致不同实例之间的数据同步或…

简单配置,全面保护:HZERO审计服务让安全触手可及

HZERO技术平台&#xff0c;凭借多年企业资源管理实施经验&#xff0c;深入理解企业痛点&#xff0c;为您提供了一套高效易用的审计解决方案。这套方案旨在帮助您轻松应对企业开发中的审计挑战&#xff0c;确保业务流程的合规性和透明度。 接下来&#xff0c;我将为大家详细介绍…

【论文研读】U-DiTs:在U型扩散Transformer中引入下采样Token,以更低计算成本超越DiT-XL/2

推荐理由 这篇论文提出了一种新的U型扩散Transformer模型&#xff08;U-DiT&#xff09;&#xff0c;该模型通过对自注意力机制中的查询、键和值进行下采样&#xff0c;有效减少了计算冗余&#xff0c;同时提高了性能。论文中的研究不仅包含理论分析和实验验证&#xff0c;还展…

深入理解 Linux wc 命令

文章目录 深入理解 Linux wc 命令1. 基本功能2. 常用选项3. 示例3.1 统计文件的行、单词和字符数3.2 仅统计行数3.3 统计多个文件的总和3.4 使用管道统计命令输出的行数 4. 实用案例4.1 日志分析4.2 快速统计代码行数4.3 统计单词频率 5. 注意事项6. 总结 深入理解 Linux wc 命…

SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、黑翅鸢算法BKA 黑翅鸢算法&#xff08;Black-winged kite algorithm&#xff0c;BKA&#xff09;由Wang Jun等人于2024年提出&#xff0c;该算法受黑翅鸢的迁徙和掠食行为启发而得。BKA集成了柯西突变策略和领导者策略&#xff0c;增强了算法的全局搜索能力&#xff0c;提…

[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words

python有哪些关键字_keyword_list_列表_reserved_words 回忆上次内容 hello world 不是 从来就有的 来自于 c语言 print、小括号 和 双引号 也来自于 c语言 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; python 标识符 的 命名规则 依然 完全 学习…

OpenCV 学习记录:首篇

最近在学习机器视觉&#xff0c;希望能通过记录博客的形式来鞭策自己坚持学完&#xff0c;同时也把重要的知识点记录下来供参考学习。 1. OpenCV 介绍与模块组成 什么是 OpenCV&#xff1f; OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软…

GTID详解

概念和组成 1&#xff0c;全局事务表示&#xff1a;global transaction identifiers 2, GTID和事务一一对应&#xff0c;并且全局唯一 3&#xff0c;一个GTID在一个服务器上只执行一次 4&#xff0c;mysql 5.6.5开始支持 组成 GTID server_uuid:transaction_id 如&#xf…

[Unity]【图形渲染】【游戏开发】Shader数学基础4-更多矢量运算

在计算机图形学和着色器编程中,矢量运算是核心的数学工具之一。矢量用于描述空间中的位置、方向、速度等各种物理量,并在图形变换、光照计算、纹理映射等方面起着至关重要的作用。本篇文章将详细讲解矢量和标量之间的乘法与除法、矢量的加法与减法、矢量的模与单位矢量、点积…

项目管理工具Maven(一)

Maven的概念 什么是Maven 翻译为“专家”&#xff0c;“内行”Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。什么是理想的项目构建&#xff1f; 高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准…

中间件 redis安装

redis官网地址&#xff1a;Redis - The Real-time Data Platform 环境 CentOS Linux release 7.9.2009 (Core) java version "17.0.12" 2024-07-16 LTS 1、通过压缩包安装redis 1&#xff0c;远程下载redis压缩包&#xff0c;或去官网下载&#xff1a;Downloads …

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>找出所有子集的异或总和再求和

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private int ret;//返回周结果private int path;//枚举一个元素就异或进去public int subsetXORSum(int[] nums) {dfs(nums, 0);return ret;} private void dfs(int[] nums, int pos){ret path;for(int i pos; i <…

C# 从控制台应用程序入门

总目录 前言 从创建并运行第一个控制台应用程序&#xff0c;快速入门C#。 一、新建一个控制台应用程序 控制台应用程序是C# 入门时&#xff0c;学习基础语法的最佳应用程序。 打开VS2022&#xff0c;选择【创建新项目】 搜索【控制台】&#xff0c;选择控制台应用(.NET Framew…

创新实训——前端:配置问题及解决

在配置前端环境中&#xff0c;出现了一些问题&#xff1a; Error: The following dependencies are imported but could not be resolved: element-plus (imported by C:/Users/30753/Desktop/cxsx/Coarse-grained-information-processing-front/src/request.js) element-plus…

【解决方案】三方云仓与各电商平台的电子面单对接

为实现三方云仓与各电商平台的电子面单对接&#xff0c;您需要确保您的WMS&#xff08;仓库管理系统&#xff09;能够通过奇门接口&#xff08;假设这是一个特定的API或中间件服务用于连接不同的系统&#xff09;与各个电商平台进行数据交换。下面是一个简化的解决方案框架&…

属性描述符

什么是属性描述符 1 数据描述符 2 存取描述符 3 获取属性描述符 4 设置属性描述符 4.1 配置writable 4.2 配置configurable 4.3 configurable的特殊性 4.4 配置enumerable 5.同时设置多个属性的属性描述符 6.get和set的用法具体看访问器属性getter和setter帖子。 什…

PostgreSQL技术内幕21:SysLogger日志收集器的工作原理

0.简介 在前面文章中介绍了事务模块用到的事务日志结构和其工作原理&#xff0c;本文将介绍日志的另一个部分&#xff0c;操作日志&#xff0c;主要去描述SysLogger日志的工作原理&#xff0c;流程以及其中关键的实现&#xff1a;日志轮转&#xff0c;刷盘性能问题等&#xff…

Unity3D仿星露谷物语开发6之角色添加动画

1、目的 给角色添加素材中的动画&#xff0c;最终让角色动起来。 2、准备工作 当前的预设体中的Player对象还不够完善&#xff0c;需要删除掉再优化下。此时应当&#xff1a;Hierarchy中的Player对象切断和预设体的关联&#xff0c;同时删除Prefabs中的Player对象。 首先&a…

Go框架比较:goframe、beego、iris和gin

由于工作需要&#xff0c;这些年来也接触了不少的开发框架&#xff0c;Golang的开发框架比较多&#xff0c;不过基本都是Web"框架"为主。这里稍微打了个引号&#xff0c;因为大部分"框架"从设计和功能定位上来讲&#xff0c;充其量都只能算是一个组件&…