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

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

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 是什么”而是你能独立完成一个可维护的页面 一套可复用组件 一次清晰的数据流设计 一个能解释给面试官听的项目

相关文章:

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

React 快速入门到精通教程:从零基础到能写项目 React 官方把它定义为:用 JavaScript 构建用户界面的库,核心思想是把页面拆成一个个组件,再用数据驱动页面变化。React 官方快速入门也强调,日常开发中最常用的能力包括…...

QFT终极指南:如何用Rust构建真正的点对点UDP文件传输工具

QFT终极指南:如何用Rust构建真正的点对点UDP文件传输工具 【免费下载链接】qft Quick Peer-To-Peer UDP file transfer 项目地址: https://gitcode.com/gh_mirrors/qf/qft 在当今数字化时代,文件传输已成为日常工作和协作的基础需求。无论是开发者…...

小白必看!零技术、零代码,用Open Claw 1688接口搞定选品监控

作为一个电商小白,刚开始做无货源、小铺的时候,我真的被选品逼疯过——完全不懂代码,看到别人说“爬虫选品”“接口对接”就头大,生怕自己学不会;手动在1688翻款,每天翻一下午,眼睛都看花了&…...

2026年植物精粹科技活酿人参酒深度解析及权威榜单发布

行业痛点分析当前天然药用植物行业面临诸多难题,严重制约了植物精粹科技的发展。资源稀缺、种植周期长是首要问题,像人参等珍稀药材生长周期长达数年甚至数十年,难以满足市场需求。数据表明,传统人参种植需15年才能达到一定品质&a…...

个人第一篇博客

我叫赵志东,来自东莞 我学编程的目的是不想浪费这两个月的时间 每天花费3小时来学习编程。...

(GGGGS) n 连接子截短现象的发现与机制--文献精读223

Discovery and investigation of the truncation of the (GGGGS)n linker and its effect on the productivity of bispecific antibodies expressed in mammalian cells(GGGGS) n 连接子截短现象的发现与机制探究及其对哺乳动物细胞表达双特异性抗体产量的影响摘要蛋白质工程是…...

Flux2-Klein-9B-True-V2文生图教程:电影级打光提示词(伦勃朗/蝴蝶光)

Flux2-Klein-9B-True-V2文生图教程:电影级打光提示词(伦勃朗/蝴蝶光) 1. 项目简介与快速入门 Flux2-Klein-9B-True-V2是基于FLUX.2-Klein-9B微调的图片生成模型,专为高质量图像生成和编辑而设计。这个模型特别适合需要专业级光影…...

MedGemma-X在教学查房中的应用:AI实时生成鉴别诊断思维导图

MedGemma-X在教学查房中的应用:AI实时生成鉴别诊断思维导图 1. 教学查房的痛点与AI解决方案 教学查房是医学教育中至关重要的环节,但传统方式存在几个明显痛点: 时间压力大:在有限的时间内,带教老师需要完成患者诊疗…...

小白也能轻松上手:DDColor黑白修复ComfyUI指南

小白也能轻松上手:DDColor黑白修复ComfyUI指南 1. 为什么选择DDColor修复老照片? 老照片承载着珍贵的记忆,但随着时间的推移,这些黑白影像逐渐褪色、模糊。传统的手工修复方法不仅耗时费力,还需要专业的美术功底。现…...

智能导游中的路线规划与讲解服务

智能导游中的路线规划与讲解服务 随着人工智能技术的快速发展,智能导游已成为旅游行业的新宠。它不仅能为游客提供个性化的路线规划,还能通过语音讲解、互动问答等方式,让旅行体验更加丰富。无论是自由行游客还是团队游客,智能导…...

PyCharm专业版用户看过来:不用Anaconda,如何用内置工具创建和管理Python虚拟环境?

PyCharm专业版虚拟环境管理全指南:告别Anaconda的轻量化方案 每次启动Anaconda Navigator时那个缓慢的加载进度条,是否让你怀念PyCharm流畅的启动体验?作为PyCharm专业版用户,你可能还没意识到自己手中已经握有一把环境管理的瑞士…...

NSGA-II vs. 传统遗传算法:多目标优化场景下,你该选哪个?(附对比实验)

NSGA-II与传统遗传算法深度对比:多目标优化实战指南 当面对需要同时优化多个相互冲突目标的工程问题时,算法选型往往成为项目成败的关键分水岭。传统遗传算法(GA)作为进化计算的经典代表,与专为多目标优化设计的NSGA-I…...

一人管50个TK号,每天只花10分钟?全靠指纹浏览器AI Agent

刚狠心辞了档口那两个做代运营的小妹,这高昂的人力开支实在扛不住了。在青岛卖假发去海外,以前我纯靠人工死磕10个TK号,每天起码耗费4个小时挨个去点赞、发评论,手都麻了。后来用过一阵子RPA程序,结果写脚本麻烦得要死…...

VSCode日志实时过滤与智能告警(Log Monitor Pro 2.4新特性首发):支持正则分组提取+阈值触发Shell脚本

更多请点击: https://intelliparadigm.com 第一章:VSCode日志插件教程 安装与启用日志查看插件 在 VSCode 中高效分析应用日志,推荐使用官方认证的 Log File Highlighter 或轻量级的 Log Viewer。打开扩展视图(CtrlShiftX&…...

为什么孩子要先学盲打再提速?科学打字训练方法应该是怎样的?

不少家长都有同款困惑:孩子写作文、整理课堂笔记、线上交作业,思路想得清清楚楚,实操打字却拖后腿。打两行就低头找键盘,频繁回删改错字,写作思路反复中断,半小时敲不出一小段内容。 很多人盲目把问题归为孩…...

如何安全备份安卓短信和通话记录:SMS Backup+ 的完整指南

如何安全备份安卓短信和通话记录:SMS Backup 的完整指南 【免费下载链接】sms-backup-plus Backup Android SMS, MMS and call log to Gmail / Gcal / IMAP 项目地址: https://gitcode.com/gh_mirrors/sms/sms-backup-plus 您是否曾担心手机丢失或损坏时&…...

LiquidAI LFM2-2.6B多平台部署:Ollama CLI调用+LM Studio图形界面双教程

LiquidAI LFM2-2.6B多平台部署:Ollama CLI调用LM Studio图形界面双教程 1. 模型简介 LFM2-2.6B-GGUF是由Liquid AI公司开发的轻量级大语言模型,经过量化处理后特别适合在资源有限的设备上运行。这个2.6B参数的模型在保持良好性能的同时,大幅…...

【超详细】四阶龙格-库塔法(RK4)深度解析|一文吃透微分方程求解+MATLAB完整可视化代码

文章目录🌧️ 序章:雨滴下落的轨迹,藏着数值计算的诗意🔍 直观理解:为什么我们需要RK4?微分方程无法直接求解的现实困境常见数值方法的缺陷🧭 RK4 核心思想:用四次试探,走…...

XPack-MCP-Marketplace:AI时代的“应用商店”,一键部署与管理MCP服务

1. 项目概述:一个AI时代的“应用商店”雏形最近在折腾AI应用开发的朋友,估计都绕不开一个词:MCP(Model Context Protocol)。简单来说,它就像给AI大模型(比如ChatGPT、Claude)装上了一…...

终极指南:如何使用League Akari免费提升英雄联盟游戏体验

终极指南:如何使用League Akari免费提升英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基于英…...

毕设项目 stm32 RFID智能仓库管理系统(源码+硬件+论文)

文章目录 0 前言1 主要功能3 核心软件设计4 实现效果5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系…...

拉格朗日乘数法与KKT条件在优化问题中的应用

1. 拉格朗日乘数法基础回顾在深入探讨不等式约束之前,让我们先回顾一下拉格朗日乘数法的基本概念。这个方法由18世纪数学家约瑟夫路易斯拉格朗日提出,用于求解带有等式约束的优化问题。想象你是一位登山者,想要找到山脉的最高点,但…...

从Nessus到OpenVAS:一个开源漏洞扫描器的‘前世今生’与实战入门指南

从Nessus到OpenVAS:开源漏洞扫描器的技术演进与实战解析 在网络安全领域,漏洞扫描工具如同数字世界的"体检仪器",而OpenVAS作为当前最活跃的开源漏洞评估系统,其技术基因可追溯至商业产品Nessus。这种独特的"血缘关…...

其实没有事

我就试试能不能发出去...

0基础开始VLA复现

1.首先先写直觉的东西(随学习进度更新) Github:外国代码创意工坊百度网盘 大部分代码、学习路线东西上面都有 免费下载 Hugging Face:Github大模型版 里面有你可以调用的大模型和数据集 但是有些数据集你得登录才能有权限下载 这…...

用STM32和GY-30(BH1750)做个智能台灯:自动调光与光照数据记录实践

用STM32和GY-30打造智能调光台灯:从硬件搭建到算法优化 在创客圈里,把技术转化为实用产品总能带来双倍成就感。想象一下:当夜幕降临,书桌上的台灯自动亮起适宜亮度的暖光;清晨阳光透过窗帘,灯光又能智能调节…...

从Modbus到CANopen:给PLC工程师的对象字典与PDO映射入门指南

从Modbus到CANopen:工业通信协议迁移实战指南 当你在Modbus的世界里游刃有余时,突然面对CANopen协议文档中密密麻麻的"对象字典"、"PDO映射"、"SDO服务"等术语,是否感到一阵眩晕?别担心&#xff0c…...

成都有做多智能体开发的公司吗?大厂平台和本地服务商怎么选

如果你最近在看多智能体(Multi-Agent)项目,会发现市场上讲这件事的公司很多,放到现在的市场里,大致可以分成两类。一类是全国性的大厂平台。 比如阿里云百炼、百度智能云千帆、华为云 AgentArts、腾讯云 ADP&#xff0…...

不止于教程:用Realsense D435i + ROS Noetic玩转3D视觉,从点云生成到简易SLAM应用

从点云到SLAM:Realsense D435i与ROS Noetic的进阶实战指南 当你的Realsense D435i摄像头已经在Ubuntu 20.04上成功运行,ROS Noetic环境也配置妥当后,真正的探索才刚刚开始。这篇文章将带你超越基础安装,深入3D视觉的应用实践领域。…...

【重磅喜报】社区项目硬件AI开发工具aily blockly获数百万种子投资

在这个AI与硬件创新交汇的时代,我们怀着无比激动的心情向大家宣布一个重磅好消息:由 Arduino中文社区 发起并主导孵化的开源项目 aily blockly,近日正式获得 宜宾科才集团 和 清智资本 的战略投资!这不仅是对 aily blockly 团队研…...