React 快速入门到精通教程:从零基础到能写项目

news2026/5/7 8:58:17
React 快速入门到精通教程从零基础到能写项目React 官方把它定义为用 JavaScript 构建用户界面的库核心思想是把页面拆成一个个组件再用数据驱动页面变化。React 官方快速入门也强调日常开发中最常用的能力包括组件、JSX、条件渲染、列表渲染、事件、状态和组件间数据共享。(React)文章目录React 快速入门到精通教程从零基础到能写项目一、React 是什么1. 专业解释2. 大白话理解3. 生活案例类比4. React 适合解决什么问题二、React 核心基础1. JSX概念解释大白话代码示例逐行解释常见错误面试追问2. 组件概念解释大白话代码示例逐行解释常见错误面试追问3. Props概念解释大白话代码示例逐行解释常见错误面试追问4. State概念解释大白话代码示例逐行解释常见错误面试追问5. 事件处理代码示例解释常见错误面试追问6. 条件渲染常见场景常见错误7. 列表渲染重点常见错误面试追问8. 表单处理大白话面试追问三、Hooks 重点讲解1. useState场景常见错误面试追问2. useEffect概念解释逐行解释常见错误面试追问3. useRef场景常见错误面试追问4. useMemo大白话场景常见错误5. useCallback大白话面试追问6. 自定义 Hook场景面试追问四、实战项目 1TodoList完整代码核心讲解面试追问五、实战项目 2搜索过滤列表业务场景常见错误六、实战项目 3可复用 Modal 组件组件设计重点面试追问七、组件封装教学1. 如何拆分组件2. 通用 Button 组件使用3. 通用 Card 组件使用八、进阶内容1. 组件通信2. 状态提升大白话3. Context场景4. React 性能优化5. React Router6. 常见项目目录结构九、React 高频面试题1. React 为什么需要虚拟 DOM2. key 的作用是什么3. useEffect 执行时机4. useMemo 和 useCallback 区别5. 受控组件和非受控组件6. React 组件通信方式7. React 性能优化方案十、React 学习路线图最后总结一、React 是什么1. 专业解释React 是一个用于构建用户界面的 JavaScript 库。它通过组件化、声明式渲染、状态驱动 UI的方式让开发者可以更高效地构建复杂前端应用。2. 大白话理解React 就像“搭积木”。一个页面不是一次性写成一大坨 HTML而是拆成页面 Header Sidebar Content Footer每一块都是组件组件可以复用、组合、传数据。3. 生活案例类比做一套乐高房子门 一个组件 窗户 一个组件 屋顶 一个组件 房间 多个组件组合 整栋房子 整个 React 应用以后你想换窗户不需要推倒整栋房子只改窗户组件。4. React 适合解决什么问题React 适合中后台管理系统电商网站社交应用数据可视化平台单页应用 SPA组件复用很多的业务系统React 官方“Thinking in React”也推荐先把 UI 拆成组件层级再确定每个组件的状态与数据流。(React)二、React 核心基础1. JSX概念解释JSX 是 JavaScript 的语法扩展看起来像 HTML但本质上会被编译成 JavaScript。大白话JSX 就是“在 JS 里写页面结构”。代码示例function App() { const name 小明; return ( div h1Hello, {name}/h1 p欢迎学习 React/p /div ); } export default App;逐行解释function App() {定义一个 React 函数组件。const name 小明;定义普通 JavaScript 变量。return (组件返回 JSX。h1Hello, {name}/h1用{}在 JSX 中插入 JS 表达式。export default App;导出组件。常见错误return ( h1标题/h1 p内容/p );错误JSX 必须有一个根节点。正确return ( h1标题/h1 p内容/p / );面试追问问JSX 是 HTML 吗答不是。JSX 是 JavaScript 的语法扩展最终会被编译成 React 元素。2. 组件概念解释组件是 React 应用的基本单位。React 应用就是由组件组成的树。大白话组件就是“页面零件”。代码示例function UserCard() { return ( div h2张三/h2 p前端工程师/p /div ); } function App() { return ( div UserCard / UserCard / /div ); } export default App;逐行解释function UserCard() {定义用户卡片组件。UserCard /在 App 组件中使用 UserCard。常见错误组件名小写function userCard() {}React 会把小写标签当成原生 HTML 标签。正确function UserCard() {}面试追问问React 为什么推荐组件化答为了复用、拆分复杂度、降低维护成本。3. Props概念解释Props 是父组件传给子组件的数据。大白话Props 就像“外卖订单备注”父组件告诉子组件该显示什么。代码示例function UserCard(props) { return ( div h2{props.name}/h2 p{props.job}/p /div ); } function App() { return ( div UserCard name张三 job前端工程师 / UserCard name李四 job后端工程师 / /div ); } export default App;逐行解释function UserCard(props)子组件接收 props。props.name读取父组件传入的 name。UserCard name张三 job前端工程师 /父组件传值。常见错误直接修改 propsprops.name 王五;错误。Props 是只读的。面试追问问Props 和 State 有什么区别答Props 是外部传入的State 是组件自己管理的。4. State概念解释State 是组件内部状态。状态变化后React 会重新渲染页面。React 官方文档说明State 可以让组件“记住”用户输入、选择等信息。(react.nodejs.cn)大白话State 就是组件自己的“小记事本”。代码示例import { useState } from react; function Counter() { const [count, setCount] useState(0); return ( div p当前数量{count}/p button onClick{() setCount(count 1)}加 1/button /div ); } export default Counter;逐行解释import { useState } from react;引入 useState。const [count, setCount] useState(0);定义状态 count初始值是 0。setCount(count 1)更新状态。常见错误直接改 statecount;错误。页面不会可靠更新。正确setCount(count 1);面试追问问setState 是同步还是异步答React 会批量处理状态更新不应该依赖修改后的 state 立即同步可读。需要基于旧值更新时用函数写法setCount(prev prev 1);5. 事件处理代码示例function App() { function handleClick() { alert(按钮被点击了); } return button onClick{handleClick}点击我/button; } export default App;解释onClick{handleClick}React 中事件名使用驼峰命名。常见错误button onClick{handleClick()}点击/button这样会在页面渲染时立即执行。正确button onClick{handleClick}点击/button面试追问问React 事件和原生 DOM 事件有什么区别答React 使用合成事件提供跨浏览器一致的事件行为。6. 条件渲染function App() { const isLogin true; return ( div {isLogin ? h1欢迎回来/h1 : h1请先登录/h1} /div ); } export default App;常见场景登录 / 未登录有数据 / 无数据加载中 / 加载完成常见错误if (isLogin) { return h1欢迎/h1; }这可以用但不能直接在 JSX 里面写 if 语句。7. 列表渲染function App() { const users [ { id: 1, name: 张三 }, { id: 2, name: 李四 }, ]; return ( ul {users.map(user ( li key{user.id}{user.name}/li ))} /ul ); } export default App;重点key必须稳定、唯一。常见错误li key{index}{user.name}/li如果列表会增删改尽量不要用 index。面试追问问key 的作用是什么答帮助 React 判断哪些元素新增、删除、移动从而提高更新效率并避免状态错乱。8. 表单处理import { useState } from react; function LoginForm() { const [username, setUsername] useState(); function handleSubmit(e) { e.preventDefault(); alert(提交用户名${username}); } return ( form onSubmit{handleSubmit} input value{username} onChange{e setUsername(e.target.value)} placeholder请输入用户名 / button typesubmit提交/button /form ); } export default LoginForm;大白话输入框的值交给 React 管这叫受控组件。面试追问问受控组件和非受控组件区别答受控组件由 state 控制表单值非受控组件通过 DOM 或 ref 获取值。三、Hooks 重点讲解Hooks 是 React 函数组件中使用状态、副作用、引用、缓存等能力的方式。React 官方文档也强调Hooks 可以组合使用并可以封装成自定义 Hook。(react.nodejs.cn)1. useStateimport { useState } from react; function LikeButton() { const [liked, setLiked] useState(false); return ( button onClick{() setLiked(!liked)} {liked ? 已点赞 : 点赞} /button ); } export default LikeButton;场景弹窗开关表单输入Tab 切换计数器常见错误setCount(count 1); setCount(count 1);可能只加一次。正确setCount(prev prev 1); setCount(prev prev 1);面试追问问为什么 useState 返回数组答方便开发者自定义变量名。2. useEffect概念解释useEffect 用来处理副作用比如请求接口、设置定时器、监听事件。import { useEffect, useState } from react; function UserList() { const [users, setUsers] useState([]); useEffect(() { fetch(https://jsonplaceholder.typicode.com/users) .then(res res.json()) .then(data setUsers(data)); }, []); return ( ul {users.map(user ( li key{user.id}{user.name}/li ))} /ul ); } export default UserList;逐行解释useEffect(() {组件渲染后执行副作用。fetch(...)请求接口。}, []);空依赖数组表示组件首次挂载后执行一次。常见错误忘记依赖项useEffect(() { console.log(keyword); }, []);如果 effect 依赖 keyword应写useEffect(() { console.log(keyword); }, [keyword]);面试追问问useEffect 执行时机答无依赖每次渲染后执行 空数组首次挂载后执行一次 有依赖依赖变化后执行 return 函数组件卸载或下次 effect 执行前清理3. useRefimport { useRef } from react; function FocusInput() { const inputRef useRef(null); function handleFocus() { inputRef.current.focus(); } return ( div input ref{inputRef} placeholder请输入内容 / button onClick{handleFocus}聚焦输入框/button /div ); } export default FocusInput;场景获取 DOM保存不会触发渲染的数据定时器 ID常见错误以为 ref 改变会触发页面更新。不会。面试追问问useRef 和 useState 区别答useState 更新会触发渲染useRef 更新不会触发渲染。4. useMemoimport { useMemo, useState } from react; function ProductList() { const [keyword, setKeyword] useState(); const products [苹果, 香蕉, 橙子, 西瓜]; const filteredProducts useMemo(() { return products.filter(item item.includes(keyword)); }, [keyword]); return ( div input value{keyword} onChange{e setKeyword(e.target.value)} / ul {filteredProducts.map(item ( li key{item}{item}/li ))} /ul /div ); } export default ProductList;大白话useMemo 是“缓存计算结果”。场景大列表过滤复杂计算避免重复计算常见错误滥用 useMemo。简单计算不需要缓存。5. useCallbackimport { useCallback, useState } from react; function Child({ onClick }) { return button onClick{onClick}子组件按钮/button; } function App() { const [count, setCount] useState(0); const handleClick useCallback(() { console.log(点击子组件); }, []); return ( div p{count}/p button onClick{() setCount(count 1)}加 1/button Child onClick{handleClick} / /div ); } export default App;大白话useCallback 是“缓存函数”。面试追问问useMemo 和 useCallback 区别答useMemo 缓存计算结果 useCallback 缓存函数本身6. 自定义 Hookimport { useEffect, useState } from react; function useWindowWidth() { const [width, setWidth] useState(window.innerWidth); useEffect(() { function handleResize() { setWidth(window.innerWidth); } window.addEventListener(resize, handleResize); return () { window.removeEventListener(resize, handleResize); }; }, []); return width; } function App() { const width useWindowWidth(); return h1当前窗口宽度{width}/h1; } export default App;场景封装请求逻辑封装权限逻辑封装窗口监听封装表单逻辑面试追问问自定义 Hook 为什么必须以 use 开头答方便 React 识别 Hook 调用规则也方便 ESLint 检查。四、实战项目 1TodoList完整代码import { useState } from react; function TodoList() { const [text, setText] useState(); const [todos, setTodos] useState([]); function addTodo() { if (!text.trim()) return; const newTodo { id: Date.now(), title: text, done: false, }; setTodos([...todos, newTodo]); setText(); } function toggleTodo(id) { setTodos( todos.map(todo todo.id id ? { ...todo, done: !todo.done } : todo ) ); } function deleteTodo(id) { setTodos(todos.filter(todo todo.id ! id)); } return ( div h1TodoList/h1 input value{text} onChange{e setText(e.target.value)} placeholder请输入任务 / button onClick{addTodo}添加/button ul {todos.map(todo ( li key{todo.id} span onClick{() toggleTodo(todo.id)} style{{ textDecoration: todo.done ? line-through : none, cursor: pointer, }} {todo.title} /span button onClick{() deleteTodo(todo.id)}删除/button /li ))} /ul /div ); } export default TodoList;核心讲解const [text, setText] useState();保存输入框内容。const [todos, setTodos] useState([]);保存任务列表。setTodos([...todos, newTodo]);不能直接 push要创建新数组。todos.map(...)用于更新某一项。todos.filter(...)用于删除某一项。面试追问问为什么不能直接 todos.push答React 状态更新依赖引用变化。直接 push 会修改原数组可能导致 React 无法正确感知变化。五、实战项目 2搜索过滤列表import { useMemo, useState } from react; function SearchList() { const [keyword, setKeyword] useState(); const users [ { id: 1, name: 张三, role: 前端 }, { id: 2, name: 李四, role: 后端 }, { id: 3, name: 王五, role: 测试 }, ]; const filteredUsers useMemo(() { return users.filter(user user.name.includes(keyword) || user.role.includes(keyword) ); }, [keyword]); return ( div h1用户搜索/h1 input value{keyword} onChange{e setKeyword(e.target.value)} placeholder请输入姓名或岗位 / ul {filteredUsers.map(user ( li key{user.id} {user.name} - {user.role} /li ))} /ul /div ); } export default SearchList;业务场景后台用户管理商品搜索订单筛选城市列表过滤常见错误users.filter(...)如果数据量很大每次渲染都计算可能影响性能。可以用 useMemo 缓存。六、实战项目 3可复用 Modal 组件import { useState } from react; function Modal({ open, title, children, onClose }) { if (!open) return null; return ( div style{styles.mask} div style{styles.modal} h2{title}/h2 div{children}/div button onClick{onClose}关闭/button /div /div ); } const styles { mask: { position: fixed, inset: 0, background: rgba(0,0,0,0.4), display: flex, alignItems: center, justifyContent: center, }, modal: { width: 400, padding: 24, background: #fff, borderRadius: 8, }, }; function App() { const [open, setOpen] useState(false); return ( div button onClick{() setOpen(true)}打开弹窗/button Modal open{open} title提示 onClose{() setOpen(false)} p这是一个可复用 Modal 组件。/p /Modal /div ); } export default App;组件设计重点open控制弹窗显示隐藏。title弹窗标题。children弹窗内容插槽。onClose关闭回调。面试追问问children 是什么答children 是 React 中特殊的 prop用于接收组件标签内部的内容。七、组件封装教学1. 如何拆分组件拆分原则一个组件只做一件事 重复出现的 UI 抽成组件 复杂页面按业务模块拆分React 官方也建议构建 UI 时先把界面拆成组件层级再连接数据流。(React)2. 通用 Button 组件function Button({ type primary, children, onClick, disabled false }) { const style { padding: 8px 16px, border: none, borderRadius: 4, cursor: disabled ? not-allowed : pointer, background: type primary ? #1677ff : #ddd, color: type primary ? #fff : #333, }; return ( button style{style} onClick{onClick} disabled{disabled} {children} /button ); } export default Button;使用Button typeprimary onClick{() alert(提交)} 提交 /Button3. 通用 Card 组件function Card({ title, children }) { return ( div style{{ border: 1px solid #eee, borderRadius: 8, padding: 16, marginBottom: 16, }} h3{title}/h3 div{children}/div /div ); } export default Card;使用Card title用户信息 p姓名张三/p p岗位前端工程师/p /Card八、进阶内容1. 组件通信常见方式父传子props 子传父回调函数 兄弟通信状态提升 跨层级通信Context 复杂状态状态管理库2. 状态提升import { useState } from react; function InputBox({ value, onChange }) { return ( input value{value} onChange{e onChange(e.target.value)} / ); } function Preview({ value }) { return p预览{value}/p; } function App() { const [text, setText] useState(); return ( div InputBox value{text} onChange{setText} / Preview value{text} / /div ); } export default App;大白话两个组件都需要同一份数据就把数据放到它们共同的父组件。3. Contextimport { createContext, useContext } from react; const ThemeContext createContext(light); function Toolbar() { const theme useContext(ThemeContext); return div当前主题{theme}/div; } function App() { return ( ThemeContext.Provider valuedark Toolbar / /ThemeContext.Provider ); } export default App;场景主题登录用户信息多语言权限信息4. React 性能优化常见方案React.memo缓存组件 useMemo缓存计算结果 useCallback缓存函数 合理使用 key 列表虚拟滚动 避免不必要的状态提升 组件拆分 按需加载5. React RouterReact Router 是 React 生态中常用的路由库。官方文档介绍 React Router v7 是非破坏性升级并支持逐步衔接 React 19 相关能力。(reactrouter.com)import { createBrowserRouter, RouterProvider, Link, } from react-router-dom; function Home() { return h1首页/h1; } function About() { return h1关于我们/h1; } function Layout() { return ( div Link to/首页/Link Link to/about关于/Link /div ); } const router createBrowserRouter([ { path: /, element: Home / }, { path: /about, element: About / }, ]); function App() { return RouterProvider router{router} /; } export default App;6. 常见项目目录结构src ├── assets 静态资源 ├── components 通用组件 ├── pages 页面组件 ├── hooks 自定义 Hook ├── utils 工具函数 ├── services 接口请求 ├── router 路由配置 ├── store 状态管理 ├── App.jsx └── main.jsx九、React 高频面试题1. React 为什么需要虚拟 DOM虚拟 DOM 是 JS 对象形式的 UI 描述。React 通过比较前后虚拟 DOM尽量减少真实 DOM 操作。大白话真实 DOM 很贵虚拟 DOM 像“草稿纸”先在草稿纸上算清楚哪里变了再去改真实页面。2. key 的作用是什么key 帮助 React 识别列表中每一项的身份。错误list.map((item, index) li key{index}{item.name}/li)更推荐list.map(item li key{item.id}{item.name}/li)3. useEffect 执行时机useEffect(() { console.log(每次渲染后执行); }); useEffect(() { console.log(只在挂载后执行一次); }, []); useEffect(() { console.log(keyword 变化时执行); }, [keyword]);4. useMemo 和 useCallback 区别useMemo缓存值 useCallback缓存函数等价理解useCallback(fn, deps)约等于useMemo(() fn, deps)5. 受控组件和非受控组件受控组件input value{value} onChange{e setValue(e.target.value)} /非受控组件input ref{inputRef} /6. React 组件通信方式父传子props 子传父回调函数 兄弟通信状态提升 跨层级通信Context 复杂全局状态Redux / Zustand / Jotai 等7. React 性能优化方案1. 使用 React.memo 减少组件重复渲染 2. 使用 useMemo 缓存复杂计算 3. 使用 useCallback 缓存函数 4. 避免无意义的 state 5. 大列表使用虚拟滚动 6. 路由懒加载 7. 合理拆分组件 8. 使用稳定 key十、React 学习路线图第一阶段JavaScript 基础 变量、函数、数组、对象、ES6、模块化、异步 第二阶段React 基础 JSX、组件、Props、State、事件、列表、表单 第三阶段Hooks useState、useEffect、useRef、useMemo、useCallback、自定义 Hook 第四阶段项目实战 TodoList、搜索列表、Modal、后台管理系统 第五阶段工程化 Vite、ESLint、Prettier、Git、接口请求、环境变量 第六阶段进阶能力 Context、路由、权限、性能优化、组件封装 第七阶段面试准备 虚拟 DOM、key、Hooks 原理、组件通信、性能优化最后总结React 学习不要只背概念。正确路线是先学组件 再学状态 再学 Hooks 再做项目 最后补面试原理真正掌握 React 的标志不是“知道 useState 是什么”而是你能独立完成一个可维护的页面 一套可复用组件 一次清晰的数据流设计 一个能解释给面试官听的项目

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…