当前位置: 首页 > news >正文

React 之 Redux 第三十二节 Redux 常用API及HOOKS,以及Redux Toolkit核心API使用详解

一、4.X版本中核心 API 和用途

1. createStore(reducer, [preloadedState], [enhancer])

用途: 创建 Redux Store(数据仓库)
参数:
reducer: 状态更新函数
preloadedState: 初始状态(可选)
enhancer: 中间件增强器(如 applyMiddleware)

注意:
现代 Redux 推荐使用 @reduxjs/toolkit 的 configureStore 替代

import { createStore } from 'redux';// 定义 reducer
const counterReducer = (state = 0, action) => {switch (action.type) {case 'INCREMENT': return state + 1;case 'DECREMENT': return state - 1;default: return state;}
};// 创建 store
const store = createStore(counterReducer);

2. combineReducers(reducers)

用途: 合并多个 reducer

import { combineReducers } from 'redux';const userReducer = (state = {}, action) => { /* ... */ };
const postReducer = (state = [], action) => { /* ... */ };
const rootReducer = combineReducers({user: userReducer,posts: postsReducer
});

3. applyMiddleware(…middlewares)

用途: 应用中间件(如 redux-thunk, redux-saga)

import { applyMiddleware, createStore } from 'redux';
import thunk from 'redux-thunk';const store = createStore(rootReducer,applyMiddleware(thunk, logger)
);

4. compose(…functions)

用途: 组合多个 Store 增强器

const enhancer = compose(applyMiddleware(thunk), devToolsExtension());

二、React-Redux 中常用 Hooks

1. useSelector(selector)

用途: Store 中提取状态

import { useSelector } from 'react-redux';function Counter() {// ✅ 正确:直接返回原始值const count = useSelector(state => state.counter);// ❌ 错误:每次返回新对象会导致重复渲染const badSelector = useSelector(state => ({ count: state.counter }));return <div>{count}</div>;
}

注意事项:
避免返回新对象导致不必要的渲染(使用浅比较)
复杂选择器建议使用 reselect 库做缓存

2. useDispatch()

用途: 获取 dispatch 函数

import { useDispatch } from 'react-redux';function Button() {const dispatch = useDispatch();// ✅ 正确:在事件处理中调用const handleClick = () => dispatch({ type: 'INCREMENT' });// ❌ 错误:避免在渲染中直接调用// dispatch({ type: 'BAD' }); return <button onClick={handleClick}>+</button>;
}

注意事项:
避免在渲染中直接调用 dispatch(应在事件回调或 useEffect 中)

3. useStore()

用途: 直接访问 Store 对象(极少使用)

const store = useStore();

三、Redux Toolkit (RTK) 核心 API

1. configureStore(options)

用途: 简化 Store 创建(自动整合中间件和开发工具)

import { configureStore } from '@reduxjs/toolkit';
const store = configureStore({reducer: {counter: counterReducer,},middleware: (getDefaultMiddleware) => [...getDefaultMiddleware(),customMiddleware],devTools: process.env.NODE_ENV !== 'production'
});

2. createSlice(options)

用途: 自动生成 action creators 和 reducer

import { createSlice } from '@reduxjs/toolkit';const counterSlice = createSlice({name: 'counter',initialState: 0,reducers: {increment: (state) => state + 1,decrement: (state) => state - 1,// ✅ 使用 Immer 允许"突变"写法addBy: (state, action) => {state.value += action.payload; }},// 异步处理 extraReducersextraReducers: (builder) => {builder.addCase(fetchUser.fulfilled, (state, action) => {state.user = action.payload;})}
});// 自动生成 action creators
export const { increment, decrement } = counterSlice.actions;
export default counterSlice.reducer;
// 自动生成: counterSlice.actions.increment()
// 自动生成: counterSlice.reducer

3. createAsyncThunk(typePrefix, payloadCreator)

用途: 处理异步操作

import { createAsyncThunk } from '@reduxjs/toolkit';export const fetchUser = createAsyncThunk('user/fetch',async (userId, thunkAPI) => {try {const response = await fetch(`/api/users/${userId}`);return await response.json();} catch (error) {return thunkAPI.rejectWithValue(error.message);}}
);// 在组件中使用
dispatch(fetchUser(123));
// 自动生成: fetchUser.pending/fulfilled/rejected 状态

4. createEntityAdapter()

用途: 标准化实体数据管理(如 CRUD 操作)

const usersAdapter = createEntityAdapter();
usersAdapter.addOne(state, user); // 自动处理标准化状态

四、注意事项

1. 不可变性 (Immutability)

必须: Reducer 中禁止直接修改原状态

正确做法:

// 错误: state.value = newValue
// 正确:
return { ...state, value: newValue };
// 或使用 RTK 的 Immer(自动处理不可变):
createSlice({reducers: {updateValue: (state, action) => {state.value = action.payload; // 允许直接修改(Immer 内部处理)}}
})

2. 性能优化

避免重复渲染: 使用 useSelector 时选择最小化状态

// 低效写法:每次返回新对象
const badSelect = useSelector(state => ({items: state.todos.items,filter: state.todos.filter
}));// 高效写法:拆分选择器
const items = useSelector(state => state.todos.items);
const filter = useSelector(state => state.todos.filter);// 或使用 reselect 记忆化
import { createSelector } from 'reselect';
const selectTodos = state => state.todos;
const selectTodoDetails = createSelector([selectTodos],(todos) => ({items: todos.items,filter: todos.filter})
);

批量更新: 合并多个 dispatch 操作(如使用 redux-batched-actions)

3. 异步操作

中间件选择:
简单场景用 redux-thunk
复杂异步流用 redux-sagaredux-observable
错误处理: 在 createAsyncThunk 中捕获异常

// 在 extraReducers 中处理错误
const userSlice = createSlice({name: 'user',extraReducers: (builder) => {builder.addCase(fetchUser.pending, (state) => {state.status = 'loading';}).addCase(fetchUser.fulfilled, (state, action) => {state.data = action.payload;state.status = 'succeeded';}).addCase(fetchUser.rejected, (state, action) => {state.error = action.payload;state.status = 'failed';});}
});

4. 项目结构

推荐模式:
按功能模块组织代码(Ducks 模式)
使用 RTK Query 管理 API 请求
分离 UI 状态和业务状态

五、总结建议

优先使用 Redux Toolkit 替代传统 Redux(减少样板代码)
严格遵循不可变性原则:永远不直接修改 state(除非在 RTK 的 createSlice 中)
合理拆分 :reducer 避免单个文件过大
异步操作规范化: 使用 createAsyncThunk 或中间件
性能敏感场景 使用记忆化选择器(reselect
通过结合 React Hooks 和 Redux Toolkit,可以显著简化 Redux 的使用复杂度,同时保持代码的可维护性和性能。

相关文章:

React 之 Redux 第三十二节 Redux 常用API及HOOKS,以及Redux Toolkit核心API使用详解

一、4.X版本中核心 API 和用途 1. createStore(reducer, [preloadedState], [enhancer]) 用途: 创建 Redux Store&#xff08;数据仓库&#xff09; 参数: reducer: 状态更新函数 preloadedState: 初始状态&#xff08;可选&#xff09; enhancer: 中间件增强器&#xff08;如…...

react tailwindcss最简单的开始

参考教程&#xff1a; Install Tailwind CSS with Vite - TailwindCSS中文文档 | TailwindCSS中文网https://www.tailwindcss.cn/docs/guides/vite操作过程&#xff1a; Microsoft Windows [版本 10.0.26100.3476] (c) Microsoft Corporation。保留所有权利。D:\gitee\tailwi…...

波束形成(BF)从算法仿真到工程源码实现-第九节-延迟相减波束形成(delay sub)

一、概述 本节对delay sub算法进行仿真。更多资料和代码可以进入https://t.zsxq.com/qgmoN &#xff0c;同时欢迎大家提出宝贵的建议&#xff0c;以共同探讨学习。 二、代码仿真 import numpy as np import soundfile as sf import scipy import matplotlib.pyplot as pltfft…...

系统假死问题排查

系统假死定义 应用进程存在&#xff0c;但是无法正常提供服务&#xff08;请求没有响应&#xff0c;或者响应超时&#xff09;。 系统假死原因 主要分为两大类&#xff1a;连接无法建立、请求无法处理&#xff0c;如下图所示&#xff1a; 系统假死的原因还是比较多的&…...

图像处理有哪些核心技术?技术发展现状如何?

在数字化信息爆炸的时代&#xff0c;文档图像预处理技术正悄然改变着我们处理文字信息的方式。无论是手持拍摄的收据、扫描仪中的身份证&#xff0c;还是工业机器人采集的复杂文档&#xff0c;预处理技术都在背后默默提升着OCR&#xff08;光学字符识别&#xff09;系统的性能。…...

解决在linux下运行rust/tauri项目出现窗口有内容,但是渲染出来成纯黑问题

起因 最近折腾了一下rust/tauri程序开发&#xff0c;据说这玩意性能非常牛皮就玩了一下&#xff0c;但是我运行打包一直出现一个奇怪问题&#xff0c;窗口能正常打开&#xff0c;但是是纯黑的什么内容都没有&#xff0c;鼠标移上去又发现指针会变换&#xff08;看起来是内容又…...

计算机网络:流量控制与可靠传输机制

目录 基本概念 流量控制&#xff1a;别噎着啦&#xff01; 可靠传输&#xff1a;快递必达服务 传输差错&#xff1a;现实中的意外 滑动窗口 基本概念 换句话说&#xff1a;批量发货排队验收 停止-等待协议 SW&#xff08;发1份等1份&#xff09; 超时重传&#xff1a;…...

vue2改变el-message字体、图标尺寸样式(vue2,element-ui)

前言 最近接手一个项目&#xff0c;vue2elementui的,产品觉得message的字体太小了&#xff0c;展示起来看不清&#xff0c;所以需求就是把message的字体和图标变大&#xff0c;实现路径如下&#xff1a; 找到自己的main.scss文件&#xff0c;并且加上对应内容&#xff1a; .e…...

【笔记ing】AI大模型-05单层感知机与多层感知机

单层感知机&#xff0c;是一种最简单的人工神经网络 输入层input layer&#xff0c;输入的样本特征 输出层output layer&#xff0c;输出的预测结果 权值W(w0,w1,w2,...,wn)^T&#xff0c;感知机的权值参数&#xff0c;其中的w0叫做偏置&#xff0c;也称截距&#xff0c;类似…...

分布式热点网络

核心设计理念&#xff1a; 在自然灾害&#xff08;地震、洪水、台风&#xff09;、极端环境&#xff08;无人区&#xff09;及网络管制&#xff08;欠费停机&#xff09;等场景下&#xff0c;传统中心化网络易因核心节点失效导致全局瘫痪。本方案提出构建去中心化设备网络&…...

为 docker 拉取镜像配置代理

为 Docker 配置代理&#xff0c;有 两个层面 的操作&#xff1a;(1) Docker 守护进程&#xff08;用于拉取镜像等操作&#xff09;&#xff0c;(2) Docker 容器内部&#xff08;容器内应用的网络流量&#xff09;。 我们这篇文章着重于前者&#xff0c;以下是详细步骤&#xff…...

人工智能与云计算:技术融合与实践

1. 引言 人工智能(AI)和云计算是当今科技领域最具变革性的两项技术。AI通过模拟人类智能解决问题,而云计算则提供了弹性可扩展的计算资源。两者的结合创造了前所未有的可能性,使企业能够以更低的成本部署复杂的AI解决方案。 本文将探讨AI与云计算的技术融合,包括核心概念、…...

GIT的一些操作

git仓库迁移&#xff0c;包括所有分支和标签 git clone --mirror http://git./test-frontend.git test-frontend 克隆项目到 test-frontend文件夹下&#xff0c;--mirror 表示所有分支和标签 cd test-frontend 切到目录下 git remote add bd http://git./new-frontend.git …...

大模型——Crawl4AI入门指南

大模型——Crawl4AI入门指南 本快速入门指南介绍了Crawl4AI,涵盖了基本用法、先进功能(例如分块和提取策略)以及异步编程。用户将学习如何实现各种爬虫技术,包括截图、JSON提取和动态内容爬取。 1. 什么是Crawl4AI? Crawl4AI 是一个强大的异步网络爬虫库,旨在简化信息…...

48、Spring Boot 详细讲义(五)

3、集成MyBatis 3.1 MyBatis 概述 3.1.1 核心功能和优势 MyBatis 是一个 Java 持久层框架,它通过 XML 或注解配置 SQL 语句,将 Java 方法与 SQL 语句映射起来,消除了大量的 JDBC 代码,简化了数据库操作。MyBatis 的核心功能和优势包括: ORM(对象关系映射):通过 XML …...

设计模式-桥接模式

例如形状和颜色&#xff0c;如果这么设计&#xff1f; 将两个具有紧耦合的设计&#xff0c;使用组合&#xff0c;为桥接模式 客户端的代码&#xff1a; 抽象&#xff1a;形状是抽象&#xff1b; 实现&#xff1a;实现颜色的代码...

3.vtkProp 和vtkProp3D

文章目录 vtkProp 和vtkProp3D使用vtkProp3D使用vtkPro vtkProp 和vtkProp3D vtkProp 和 vtkProp3D 都是VTK&#xff08;Visualization Toolkit&#xff09;库中的类&#xff0c;它们用于在渲染场景中表示可视化元素。理解这两个类的区别和用途对于有效地使用VTK进行三维数据可…...

大模型之Transformers , PyTorch和Keras

Transformers、PyTorch 和 Keras 的对比 特性TransformersPyTorchKeras主要应用自然语言处理(NLP)任务计算机视觉、NLP、强化学习等快速原型设计和深度学习模型构建架构基于 Transformer 模型,强大的自注意力机制动态计算图,灵活的模型构建和调试高层次 API,简化模型开发,…...

云原生(Cloud Native)的详解、开发流程及同类软件对比

以下是云原生&#xff08;Cloud Native&#xff09;的详解、开发流程及同类软件对比&#xff1a; 一、云原生核心概念 定义&#xff1a; 云原生&#xff08;Cloud Native&#xff09;是基于云环境设计和运行应用程序的方法论&#xff0c;强调利用云平台的弹性、分布式和自动化…...

从文本到视频:基于扩散模型的AI生成系统全解析(附PyTorch实现)

当语言遇见动态视觉 "用文字生成电影场景"曾是科幻作品中的幻想&#xff0c;如今借助扩散模型&#xff08;Diffusion Models&#xff09;正逐步成为现实。本文将手把手带你实现一个创新的文本到视频生成系统&#xff0c;通过深度解析扩散模型原理&#xff0c;结合独…...

ES6学习04-数组扩展:扩展运算符、新增方法

一、扩展运算符 1. 2. eg: 3. 二、新增方法 1. arguments 元素组合 类似数组对象 2....

TiDB 部署指南(单机模式) CentOS 7 安装 MariaDB 教程

文章目录 TiDB 部署指南&#xff08;单机模式&#xff09;& CentOS 7 安装 MariaDB 教程简介TiDB 关键特性TiDB 单机部署步骤下载 TiDB 安装包校验文件完整性解压并进入目录启动 PD 服务启动 TiKV 服务启动 TiDB 服务使用 MySQL 客户端连接 TiDB CentOS 7 安装 MariaDB&…...

C++23 新特性:auto(x) 和 auto{x} 的衰变复制

文章目录 一、什么是衰变复制二、为什么引入衰变复制三、auto(x) 和 auto{x} 的区别四、使用场景1. 模板编程中的副本创建2. 避免引用失效3. 并发编程中的线程构造 五、性能考虑六、总结 在 C23 中&#xff0c; auto(x) 和 auto{x} 的引入为语言带来了新的便利性和灵活性。这…...

人工智能驱动的科研新范式及学科应用研究

人工智能&#xff08;AI&#xff09;驱动的科研新范式通过数据、算力、算法的深度耦合深度嵌入科学研究的全过程&#xff0c;引发科研流程、思考逻辑和组织模式的深刻变革。文章系统总结了AI驱动科研新范式的主要特征与形式&#xff0c;提出AI驱动科研新范式的演化方向由“科研…...

2025.04.14【Animation】| 动画式生信数据可视化

Cheatsheet base R A cheatsheet to remember a few chart parameters. 文章目录 Cheatsheet base R 动画式生信数据可视化&#xff1a;R语言中的动态图表详解1. R语言和数据可视化基础2. R中的ggplot2包3. R中的dplyr包4. R中的颜色和形状5. R中的动画包gganimate6. 生物信息…...

Kotlin作用域函数

在 Kotlin 中&#xff0c;.apply 是一个 作用域函数&#xff08;Scope Function&#xff09;&#xff0c;它允许你在一个对象的上下文中执行代码块&#xff0c;并返回该对象本身。它的设计目的是为了 对象初始化 或 链式调用 时保持代码的简洁性和可读性。 // 不使用 apply va…...

SCP-Firmware安全通告:CVE-2024-11863和CVE-2024-11864

安全之安全(security)博客目录导读 目录 一、概述 二、CVE详情 三、受影响产品 四、修复建议 五、致谢 六、版本历史 一、概述 在SCP固件(SCP-Firmware)中发现两处安全漏洞&#xff0c;可能允许普通世界特权软件&#xff08;normal world privileged software&#xff…...

报错:Nlopt

报错&#xff1a;Nlopt CMake Error at TGH-Planner/fast_planner/bspline_opt/CMakeLists.txt:20 (find_package):By not providing "FindNLopt.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "…...

软考高级系统架构设计师-第12章 系统质量属性与架构评估

【本章学习建议】 根据考试大纲&#xff0c;本章不仅考查系统架构设计师单选题&#xff0c;预计考11分左右&#xff0c;而且案例分析和论文写作也是必考&#xff0c;对应第二版教材第8章&#xff0c;属于重点学习的章节。 12.1 软件系统质量属性 12.1.1 质量属性概念 软件系…...

RockyLinux9 部署 Zabbix7 完整步骤

一、Zabbix介绍 Zabbix 是企业级开源监控解决方案&#xff0c;支持实时监控数台服务器&#xff0c;虚拟机和网络设备&#xff0c;开源免费&#xff0c;官方手册 https://www.zabbix.com/documentation/7.0/zh/manual 二、RockyLinux9部署Zabbix 1、进入到相对的系统下&#…...

「小推桌面官方下载」小推桌面TV版-安卓电视版官方免费下载新版

下面小编将给大家详细介绍小推桌面免费下载新版 1. 查找官网&#xff1a;通过搜索引擎查找小推桌面的官方网站。注意要确保进入的是官方正规网站&#xff0c;避免从不可信的来源下载应用&#xff0c;以防安全风险。 2. 下载安装包&#xff1a;在官网中找到适合安卓电视版的小…...

Java多线程学习指南

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Java多线程学习指南**一、入门基础**1. **线…...

HTTPS实现安全的关键方法及技术细节

HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;通过多种技术手段实现数据传输的安全性&#xff0c;其核心机制基于SSL/TLS协议&#xff0c;并结合数字证书、加密算法等技术。 SSL&#xff1a;Secure Sockets Layer&#xff0c;安全套接字层 TLS&#xff1a;…...

记录:安装 Docker Desktop 时直接设置安装路径及容器存储路径

近期学用 deepseek 本地知识库的构建&#xff0c;准备尝试几个不同的 RAG 工具&#xff0c;结果基本都需要 Docker 支持&#xff0c;故又重新拾起 Docker 来安装&#xff0c;刚好看到个不用目录链接就可以直接设置安装路径的方法&#xff0c;就记录一下&#xff0c;以免以后忘…...

日志分析-mysql应急响应

日志分析-mysql应急响应 任务&#xff1a; 1.黑客第一次写入的shell flag{关键字符串} 2.黑客反弹shell的ip flag{ip} 3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx 4.黑客获取的权限 flag{whoami后的值} 黑客第一次写入的shell flag{关键字符串} …...

【C++ 】智能指针:内存管理的 “自动导航仪”

目录 一、引入 二、智能指针的两大特性&#xff1a; 1、RAII 特点&#xff1a; 好处&#xff1a; 2、行为像指针 三、智能指针起初的缺陷&#xff1a;拷贝问题 四、几种智能指针的介绍。 1、C98出现的智能指针——auto_ptr auto_ptr解决上述拷贝构造的问题&#xff1a…...

macOS 上使用 Homebrew 安装和配置 frp 客户端

macOS 上使用 Homebrew 安装和配置 frp 客户端 (frpc) 指南 frp (Fast Reverse Proxy) 是一款高性能的反向代理应用&#xff0c;常用于内网穿透。本文将介绍在 macOS 上使用 Homebrew 安装 frpc&#xff0c;并进行配置和管理。 一、安装 frpc 使用 Homebrew 安装&#xff08;…...

OSI参考模型

1.1 OSI参考模型 OSI&#xff08;Open System Interconnection&#xff0c;开放式系统互联&#xff09;&#xff0c;由ISO&#xff08;International Organization for Standardization&#xff0c;国际标准化组织&#xff09;收录在ISO 7489标准中并于1984年发布。OSI参考模…...

《探秘鸿蒙分布式软总线:开启无感发现与零等待传输新时代》

在数字化浪潮中&#xff0c;设备之间的互联互通成为构建智能生态的关键。鸿蒙系统中的分布式软总线技术&#xff0c;宛如一座桥梁&#xff0c;让各种智能设备紧密相连。尤其是其实现的设备间无感发现和零等待传输功能&#xff0c;更是为用户带来了前所未有的便捷体验&#xff0…...

QML ListView:列表视图的数据交互与样式定制

目录 引言相关阅读项目结构示例一&#xff1a;ListView样式定制代码解析运行效果 示例二&#xff1a;ListView数据交互代码解析运行效果 总结 引言 在现代应用程序开发中&#xff0c;列表视图是最常见且实用的UI组件之一。Qt Quick&#xff08;QML&#xff09;提供了强大的Lis…...

C#集合List<T>与HashSet<T>的区别

在C#中&#xff0c;List和HashSet都是用于存储元素的集合&#xff0c;但它们在内部实现、用途、性能特性以及使用场景上存在一些关键区别。 内部实现 List&#xff1a;基于数组实现的&#xff0c;可以包含重复的元素&#xff0c;并且元素是按照添加的顺序存储的。 HashSet&…...

【C++进阶六】list模拟实现

【C进阶六】list模拟实现 1.list的大致框架结构2.节点类3. 迭代器4.list内各种功能的实现1.push_back(正常实现)2.insert3.begin()和end()4.push_back和push_front(复用insert)5.erase6. pop_back与pop_front (复用erase)7.clear 清空数据8.swap9.无参构造10.析构函数11.含参构…...

Spring 事件机制与观察者模式的深度解析

一、引言 在软件设计中&#xff0c;观察者模式&#xff08;Observer Pattern&#xff09;是一种非常经典且实用的设计模式。它允许一个对象&#xff08;Subject&#xff09;在状态发生改变时通知所有依赖它的对象&#xff08;Observers&#xff09;&#xff0c;从而实现对象之…...

危险作业自动化如何重构工业安全新生态

在化工车间的反应器旁&#xff0c;巡检员正戴着防毒面具靠近高温罐体&#xff1b;在矿山深处&#xff0c;凿岩工人在粉尘弥漫中操控机械臂&#xff1b;在高架桥梁上&#xff0c;检修人员正攀爬至数十米高空排查隐患…… 这些场景中&#xff0c;每一个动作都伴随着不可预估的安全…...

Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)

目录 背景0. Trae 环境准备1. 从VSCode市场获取插件安装包2. 直接安装插件至Trae会失败3. 解压 vsix 文件4. 直接移动安装参考文献&#xff1a; 背景 基于 VSCode 改版但使用 Open VSX 的编辑器&#xff08;如 trae、Cursor&#xff09;会遇到以下限制1&#xff1a; 微软官方…...

多模态大语言模型arxiv论文略读(十八)

Large Model Based Referring Camouflaged Object Detection ➡️ 论文标题&#xff1a;Large Model Based Referring Camouflaged Object Detection ➡️ 论文作者&#xff1a;Shupeng Cheng, Ge-Peng Ji, Pengda Qin, Deng-Ping Fan, Bowen Zhou, Peng Xu ➡️ 研究机构: Ts…...

oracle查询锁表和解锁

oracle查询锁表和解锁 1.数据库表被锁后------解锁第一步第二步 2.查锁语句 1.数据库表被锁后------解锁 第一步 select t2.username, t2.sid, serial#, t2.logon_time from v l o c k e d o b j e c t t 1 , v locked_object t1, v lockedo​bjectt1,vsession t2 where t1.S…...

mysql 数据库localhost密码忘记

使用此查询语句&#xff1a; SELECT user, authentication_string FROM mysql.user WHERE user root; 复制对应的密码&#xff1a; 密码是通过md5加密后的 md5在线解密破解,md5解密加密 将密码输入进来 就可以直接破解了...

如何把pdf的内容转化成结构化数据进行存储到mysql数据库

一、PDF解析与数据提取 ‌文本提取工具选择‌ 使用Python的pdfplumber或PyPDF2库进行基础文本提取‌。 pythonCopy Code import pdfplumber def extract_text(pdf_path): with pdfplumber.open(pdf_path) as pdf: return [page.extract_text() for page in pdf.pages if page.e…...

豪越消防一体化安全管控平台:构建消防“一张图”新生态

在城市化进程加速、建筑规模与功能日益复杂的当下&#xff0c;消防救援工作面临着诸多严峻挑战。火灾隐患如同隐藏在暗处的“定时炸弹”&#xff0c;广泛分布于城市的各个角落&#xff0c;想要快速、精准定位绝非易事。信息传递的不顺畅更是雪上加霜&#xff0c;导致救援效率大…...