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

React篇——第一章 React的基础知识(上篇)

目录1. React简介1.1 什么是React1.2 React的核心优势组件化开发虚拟DOM丰富的生态系统跨平台支持1.3 React的市场地位2. 开发环境搭建2.1 使用create-react-app创建项目2.2 其他创建React项目的方式3. JSX基础3.1 什么是JSX3.2 JSX的优势3.3 JSX的本质3.4 JSX高频使用场景3.4.1 嵌入JavaScript表达式3.4.2 列表渲染3.4.3 条件渲染3.4.4 复杂条件渲染4. React事件处理4.1 基础事件绑定4.2 事件对象4.3 传递自定义参数4.4 同时传递事件对象和自定义参数5. React组件5.1 组件的概念5.2 函数组件5.3 组件的嵌套6. 状态管理useState6.1 什么是状态6.2 useState Hook6.3 状态更新的规则6.4 复杂状态的管理7. 样式处理7.1 行内样式7.2 类名样式7.3 CSS模块7.4 CSS-in-JS8. 实战案例评论列表8.1 功能需求8.2 实现思路8.3 完整代码9. 总结与展望9.1 核心知识点回顾9.2 进阶学习方向React是由Meta开发的JavaScript库用于构建Web和原生交互界面。其核心优势包括组件化开发、虚拟DOM技术提升性能、丰富的生态系统和跨平台支持。开发环境可通过create-react-app快速搭建JSX语法结合JavaScript表达式实现动态UI渲染。React提供useState管理组件状态支持多种样式处理方案并通过实战案例展示评论列表功能实现。学习路径涵盖路由管理、状态管理、性能优化等进阶内容为开发者提供强大的前端开发工具。1. React简介1.1 什么是ReactReact是由Meta原Facebook公司开发的一个用于构建Web和原生交互界面的JavaScript库。它通过组件化的方式让开发者能够高效地构建复杂的用户界面。1.2 React的核心优势组件化开发React采用组件化的开发方式将UI拆分为独立、可复用的组件每个组件都包含自己的逻辑和视图使得代码结构清晰易于维护。虚拟DOMReact通过虚拟DOM技术减少了直接操作真实DOM的次数从而提高了应用的性能。当组件状态发生变化时React会先在虚拟DOM中进行计算和比较然后只更新必要的部分而不是整个页面。丰富的生态系统React拥有庞大的生态系统包括各种第三方库和工具如React Router路由、Redux状态管理、Material-UIUI组件库等这些工具可以帮助开发者更高效地构建应用。跨平台支持React不仅可以用于Web开发还可以通过React Native开发移动应用通过React 360开发VR应用实现了一次编写多处运行的目标。1.3 React的市场地位React是目前全球最流行的前端框架之一被众多大型企业和互联网公司广泛采用如Meta、Netflix、Airbnb、Uber等。掌握React已经成为前端开发者的必备技能之一。2. 开发环境搭建2.1 使用create-react-app创建项目create-react-app是React官方推荐的快速创建React开发环境的工具它底层由Webpack构建封装了配置细节开箱即用。执行命令npx create-react-app react-basic(React项目名)npxNode.js工具命令查找并执行后续的包命令create-react-app核心包固定写法用于创建React项目react-basicReact项目的名称可以自定义2.2 其他创建React项目的方式除了create-react-app还有其他创建React项目的方式如Vite一个现代化的前端构建工具速度更快Next.js一个基于React的全栈框架支持服务器端渲染Remix一个基于React的全栈框架专注于Web标准和性能3. JSX基础3.1 什么是JSXJSX是JavaScript和XMLHTML的缩写表示在JS代码中编写HTML模板结构它是React中构建UI的方式。const message Hello, React! ​ function App(){ return ( div h1Welcome to React/h1 p{message}/p /div ) }3.2 JSX的优势声明式语法使用类似于HTML的语法使代码更直观、易读JavaScript的能力可以在JSX中使用JavaScript表达式实现动态内容类型安全结合TypeScript使用时可以获得类型检查的好处3.3 JSX的本质JSX并不是标准的JavaScript语法它是JavaScript的语法扩展浏览器本身不能识别需要通过Babel等工具编译成标准的JavaScript代码后才能在浏览器中运行。3.4 JSX高频使用场景3.4.1 嵌入JavaScript表达式在JSX中可以通过大括号语法{}嵌入JavaScript表达式如变量、函数调用、方法调用等。const name John const age 25 ​ function getGreeting(name) { return Hello, ${name}! } ​ function App() { return ( div h1{getGreeting(name)}/h1 pAge: {age}/p pDouble age: {age * 2}/p /div ) }3.4.2 列表渲染在JSX中可以使用JavaScript的map方法实现列表渲染。const fruits [ { id: 1, name: Apple }, { id: 2, name: Banana }, { id: 3, name: Orange } ] ​ function App() { return ( ul {fruits.map(fruit ( li key{fruit.id}{fruit.name}/li ))} /ul ) }注意使用map方法渲染列表时必须为每个元素提供一个唯一的key属性以便React能够高效地识别和更新元素。3.4.3 条件渲染在React中可以通过逻辑与运算符、三元表达式?:等实现条件渲染。const isLoggedIn true const loading false ​ function App() { return ( div {/* 使用逻辑与运算符 */} {isLoggedIn pWelcome back!/p} {/* 使用三元表达式 */} {loading ? pLoading.../p : pContent loaded successfully!/p} /div ) }3.4.4 复杂条件渲染对于复杂的条件渲染可以使用自定义函数或变量来组织逻辑。const userRole admin // admin, user, guest ​ function renderUserInterface(role) { switch (role) { case admin: return divAdmin Dashboard/div case user: return divUser Profile/div case guest: return divWelcome, Guest!/div default: return divUnknown Role/div } } ​ function App() { return ( div {renderUserInterface(userRole)} /div ) }4. React事件处理4.1 基础事件绑定React中的事件绑定采用驼峰命名法通过on 事件名称的方式绑定事件处理函数。function App() { const handleClick () { console.log(Button clicked!) } return ( button onClick{handleClick}Click me/button ) }4.2 事件对象在事件处理函数中可以通过参数获取事件对象。function App() { const handleClick (e) { e.preventDefault() // 阻止默认行为 console.log(Button clicked!, e) } return ( a href# onClick{handleClick}Click me/a ) }4.3 传递自定义参数如果需要向事件处理函数传递自定义参数可以使用箭头函数。function App() { const handleClick (name) { console.log(Hello, ${name}!) } return ( button onClick{() handleClick(John)}Click me/button ) }4.4 同时传递事件对象和自定义参数如果需要同时传递事件对象和自定义参数可以在箭头函数中显式传递事件对象。function App() { const handleClick (name, e) { e.preventDefault() console.log(Hello, ${name}!, e) } return ( a href# onClick{(e) handleClick(John, e)}Click me/a ) }5. React组件5.1 组件的概念组件是React应用的基本构建块它是一个独立、可复用的UI单元包含自己的逻辑和视图。5.2 函数组件在React中组件可以是一个函数接收props作为参数返回React元素。// 定义组件 function Greeting(props) { return h1Hello, {props.name}!/h1 } ​ // 使用组件 function App() { return ( div Greeting nameJohn / Greeting nameJane / /div ) }5.3 组件的嵌套组件可以相互嵌套形成组件树。function Header() { return headerh1My App/h1/header } ​ function Content() { return mainpWelcome to my app!/p/main } ​ function Footer() { return footerp© 2026 My App/p/footer } ​ function App() { return ( div Header / Content / Footer / /div ) }6. 状态管理useState6.1 什么是状态状态是组件内部的数据它可以随时间变化当状态变化时组件会重新渲染。6.2 useState HookuseState是React提供的一个Hook用于在函数组件中添加状态。import React, { useState } from react ​ function Counter() { // 声明一个状态变量count初始值为0 // setCount是更新count的函数 const [count, setCount] useState(0) return ( div pCount: {count}/p button onClick{() setCount(count 1)}Increment/button button onClick{() setCount(count - 1)}Decrement/button /div ) }6.3 状态更新的规则状态是只读的不要直接修改状态应该使用set函数更新状态更新是异步的React可能会批量处理状态更新状态更新会触发重新渲染当状态更新时组件会重新渲染6.4 复杂状态的管理对于对象和数组等复杂类型的状态应该创建新的对象或数组来更新状态而不是直接修改原有的对象或数组。import React, { useState } from react ​ function UserProfile() { const [user, setUser] useState({ name: John, age: 25, email: johnexample.com }) const updateAge () { // 正确的做法创建新对象 setUser({ ...user, age: user.age 1 }) } return ( div pName: {user.name}/p pAge: {user.age}/p pEmail: {user.email}/p button onClick{updateAge}Increment Age/button /div ) }7. 样式处理7.1 行内样式可以使用style属性直接在JSX中设置样式样式对象的属性采用驼峰命名法。function App() { return ( div style{{ color: red, fontSize: 20px }} This is a red text with 20px font size /div ) }7.2 类名样式可以使用className属性引用CSS类。import ./App.css ​ function App() { return ( div classNamecontainer h1 classNametitleHello, React!/h1 /div ) }7.3 CSS模块CSS模块是一种局部作用域的CSS方案可以避免类名冲突。import styles from ./App.module.css ​ function App() { return ( div className{styles.container} h1 className{styles.title}Hello, React!/h1 /div ) }7.4 CSS-in-JSCSS-in-JS是一种将CSS直接写在JavaScript中的方案如styled-components。import styled from styled-components ​ const Container styled.div padding: 20px; background-color: #f0f0f0; ​ const Title styled.h1 color: blue; font-size: 24px; ​ function App() { return ( Container TitleHello, React!/Title /Container ) }8. 实战案例评论列表8.1 功能需求渲染评论列表支持删除评论实现导航Tab和高亮支持评论排序按热度和时间8.2 实现思路使用useState管理评论列表数据和当前激活的Tab使用map方法渲染评论列表和导航Tab使用filter方法实现删除评论功能使用orderBy从lodash库实现评论排序功能8.3 完整代码import { useState } from react import ./App.scss import avatar from ./images/avatar.png import orderBy from lodash/orderBy ​ // 评论列表数据 const defaultList [ { rpid: 3, user: { uid: 13258165, avatar: , uname: 周杰伦, }, content: 哎哟不错哦, ctime: 10-18 08:15, like: 88, }, { rpid: 2, user: { uid: 36080105, avatar: , uname: 许嵩, }, content: 我寻你千百度 日出到迟暮, ctime: 11-13 11:29, like: 88, }, { rpid: 1, user: { uid: 30009257, avatar, uname: 前端爱好者, }, content: React真的很强大, ctime: 10-19 09:00, like: 66, }, ] ​ // 当前登录用户信息 const user { uid: 30009257, avatar, uname: 前端爱好者, } ​ // 导航 Tab 数组 const tabs [ { type: hot, text: 最热 }, { type: time, text: 最新 }, ] ​ const App () { // 导航 Tab 高亮的状态 const [activeTab, setActiveTab] useState(hot) const [list, setList] useState(defaultList) ​ // 删除评论 const onDelete rpid { // 如果要删除数组中的元素需要调用 filter 方法并且一定要调用 setList 才能更新状态 setList(list.filter(item item.rpid ! rpid)) } ​ // tab 高亮切换 const onToggle type { setActiveTab(type) let newList if (type time) { // 按照时间降序排序 newList orderBy(list, ctime, desc) } else { // 按照喜欢数量降序排序 newList orderBy(list, like, desc) } setList(newList) } ​ return ( div classNameapp {/* 导航 Tab */} div classNamereply-navigation ul classNamenav-bar li classNamenav-title span classNamenav-title-text评论/span {/* 评论数量 */} span classNametotal-reply{list.length}/span /li li classNamenav-sort {/* 高亮类名 active */} {tabs.map(item { return ( div key{item.type} className{ item.type activeTab ? nav-item active : nav-item } onClick{() onToggle(item.type)} {item.text} /div ) })} /li /ul /div ​ div classNamereply-wrap {/* 发表评论 */} div classNamebox-normal {/* 当前用户头像 */} div classNamereply-box-avatar div classNamebili-avatar img classNamebili-avatar-img src{avatar} alt用户头像 / /div /div div classNamereply-box-wrap {/* 评论框 */} textarea classNamereply-box-textarea placeholder发一条友善的评论 / {/* 发布按钮 */} div classNamereply-box-send div classNamesend-text发布/div /div /div /div {/* 评论列表 */} div classNamereply-list {/* 评论项 */} {list.map(item { return ( div key{item.rpid} classNamereply-item {/* 头像 */} div classNameroot-reply-avatar div classNamebili-avatar img classNamebili-avatar-img src{item.user.avatar || avatar} alt / /div /div ​ div classNamecontent-wrap {/* 用户名 */} div classNameuser-info div classNameuser-name{item.user.uname}/div /div {/* 评论内容 */} div classNameroot-reply span classNamereply-content{item.content}/span div classNamereply-info {/* 评论时间 */} span classNamereply-time{item.ctime}/span {/* 评论数量 */} span classNamereply-time点赞数:{item.like}/span {user.uid item.user.uid ( span classNamedelete-btn onClick{() onDelete(item.rpid)} 删除 /span )} /div /div /div /div ) })} /div /div /div ) } ​ export default App9. 总结与展望9.1 核心知识点回顾React简介React是一个用于构建用户界面的JavaScript库具有组件化、虚拟DOM、跨平台等优势。开发环境使用create-react-app快速创建React项目。JSX在JavaScript中编写HTML模板的语法支持嵌入JavaScript表达式。事件处理使用驼峰命名法绑定事件支持传递自定义参数。组件React应用的基本构建块分为函数组件和类组件。状态管理使用useState Hook管理组件状态遵循不可变原则。样式处理支持行内样式、类名样式、CSS模块和CSS-in-JS等方式。9.2 进阶学习方向React Router学习如何实现单页应用的路由管理。状态管理学习Redux、Context API等状态管理方案。React Hooks深入学习useEffect、useContext、useReducer等Hooks。性能优化学习React的性能优化技巧如memo、useMemo、useCallback等。服务端渲染学习Next.js等服务端渲染框架。React Native学习使用React Native开发移动应用。React是一个强大而灵活的前端库掌握它将为你的前端开发之路打开一扇新的大门。希望本指南能够帮助你快速入门React为后续的深入学习打下坚实的基础。加油

相关文章:

React篇——第一章 React的基础知识(上篇)

目录 1. React简介 1.1 什么是React 1.2 React的核心优势 组件化开发 虚拟DOM 丰富的生态系统 跨平台支持 1.3 React的市场地位 2. 开发环境搭建 2.1 使用create-react-app创建项目 2.2 其他创建React项目的方式 3. JSX基础 3.1 什么是JSX 3.2 JSX的优势 3.3 JS…...

黑苹果终极配置指南:使用Hackintool轻松搞定显卡驱动、音频和USB问题

黑苹果终极配置指南:使用Hackintool轻松搞定显卡驱动、音频和USB问题 【免费下载链接】Hackintool The Swiss army knife of vanilla Hackintoshing 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintool 还在为黑苹果配置头疼吗?显卡驱动不工…...

从PTA天梯赛L1真题看起:新手如何用C++快速搞定编程竞赛里的“送分题”?

从PTA天梯赛L1真题看起:新手如何用C快速搞定编程竞赛里的“送分题”? 第一次参加编程竞赛的新手,面对屏幕上密密麻麻的题目,往往会感到无从下手。但仔细观察历届PTA天梯赛L1级别的题目,你会发现一个有趣的现象——总有…...

LabVIEW与TCP远程实验监测

后疫情时代线上教学的普及,让理工类实验课的远程开展成为行业研究重点。传统线上教学工具仅适用于理论知识传播,针对需要动手实操的实验课程,存在实践操作不便、课堂监管弱化、成果验收困难等问题。国内现有远程实验系统多以虚拟仿真为主&…...

如何在Java中使用Thread创建线程

在Java中使用Thread类创建线程是一种常见而直接的方式。你可以继承Thread类并重写其run()定义线程执行的任务的方法。当调用线程对象时start()JVM将为该线程分配资源并自动执行该方法run()方法中的代码。继承Thread类,重写run方法创建线程的第一步是定义一个类继承T…...

Legacy iOS Kit终极指南:让旧款iPhone/iPad重获新生的完整方案

Legacy iOS Kit终极指南:让旧款iPhone/iPad重获新生的完整方案 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to downgrade/restore, save SHSH blobs, and jailbreak legacy iOS devices 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...

KindEditor富文本编辑器:轻量级网页内容创作解决方案

KindEditor富文本编辑器:轻量级网页内容创作解决方案 【免费下载链接】kindeditor WYSIWYG HTML editor 项目地址: https://gitcode.com/gh_mirrors/ki/kindeditor 在当今Web开发中,内容编辑功能是许多网站的核心需求,但开发者常常面临…...

Cursor Pro功能扩展工具:技术原理与开源解决方案

Cursor Pro功能扩展工具:技术原理与开源解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial re…...

从时频分析到信号净化:小波变换的降噪实战指南

1. 小波变换基础:从傅里叶到时频分析 第一次接触小波变换时,我和大多数工程师一样,脑子里全是傅里叶变换的影子。记得当时处理一组振动传感器数据,傅里叶变换告诉我信号里存在30Hz和50Hz的成分,但就是找不到这些频率具…...

嵌入式软件开发规范与最佳实践指南

嵌入式软件开发最佳实践指南1. 项目概述1.1 嵌入式开发核心挑战现代嵌入式系统开发面临代码复杂度增加、团队协作需求提升以及产品迭代周期缩短等多重挑战。高效的开发流程和规范的编码实践成为保证项目成功的关键因素。1.2 开发环境配置建议推荐采用以下硬件配置方案&#xff…...

从原理到调参:图解RoIAlign双线性插值在torchvision.ops中的实现细节

从原理到调参:图解RoIAlign双线性插值在torchvision.ops中的实现细节 当你在PyTorch中实现目标检测模型时,RoIAlign(Region of Interest Align)是一个绕不开的核心操作。与传统的RoIPooling相比,RoIAlign通过双线性插值…...

Audacity音频编辑终极指南:从零开始掌握免费专业工具

Audacity音频编辑终极指南:从零开始掌握免费专业工具 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity Audacity是一款功能强大的开源音频编辑软件,支持多轨录音、音频剪辑和效果处理&#x…...

SYSTEM表空间自动增长却报ORA-01658?Oracle19C表空间管理的那些坑

Oracle 19C SYSTEM表空间自动增长失效的深度解析与实战指南 引言 在Oracle数据库管理中,SYSTEM表空间扮演着核心角色,它存储着数据字典、系统存储过程等关键元数据。然而,许多DBA在实际工作中都遇到过这样的困惑:明明设置了AUTOEX…...

Golang面试避坑指南:这5个并发问题90%的人答不对

Golang面试避坑指南:这5个并发问题90%的人答不对 刚接触Go语言的开发者往往会被其简洁的语法和高效的并发模型所吸引,但真正深入使用后才会发现,并发编程中隐藏着许多意想不到的陷阱。特别是在技术面试中,面试官常常会通过精心设计…...

EasyAnimateV5-7b-zh-InP多GPU分布式训练指南

EasyAnimateV5-7b-zh-InP多GPU分布式训练指南 1. 引言 如果你正在训练EasyAnimateV5这样的大模型,可能会发现单块GPU的训练速度实在太慢了。一张图片可能需要几分钟,一个完整的训练周期可能要花上好几天。这时候,多GPU分布式训练就成了必备…...

别再死记硬背了!用华为eNSP图解OSPF、VRRP这些协议到底怎么用

用华为eNSP图解网络协议:从抽象概念到可视化实战 网络协议学习常常陷入"理论-记忆-遗忘"的循环,OSPF的邻居状态机、VRRP的主备切换机制、STP的根桥选举过程,这些在教材中冰冷的概念,如何转化为可感知的网络行为&#xf…...

LFM2.5-1.2B-Thinking-GGUF多轮对话效果展示:复杂任务规划与分解

LFM2.5-1.2B-Thinking-GGUF多轮对话效果展示:复杂任务规划与分解 1. 开场亮点 当被问到"帮我策划一次团队建设活动"时,LFM2.5-1.2B-Thinking-GGUF模型展现出了令人惊喜的"思考"能力。不同于简单的一问一答,这个模型能够…...

大多数开发者还以为2026年AI编码拼的是模型,其实竞争早已转向系统架构

最近刷到Qoder和几个大厂的分享,我瞬间意识到:AI编码的战场已经彻底变天了。 很多人还在卷模型参数、卷上下文长度,以为下一个SOTA模型出来就能让Agent“起飞”。但真实情况是——Stripe每周合并1300个完全由Agent写的PR,Ramp有30…...

Jupyter Notebook快速入门:从安装到高效编码

1. 为什么你需要Jupyter Notebook? 第一次听说Jupyter Notebook时,我也觉得这不过是个普通的代码编辑器。直到真正用起来才发现,它完全改变了我的编程工作流。想象一下,你正在写一个数据分析脚本,传统方式需要反复运行…...

别再死记硬背了!用Vivado工具链图解FPGA底层:CLB、SLICE与LUT到底怎么连的?

用Vivado工具链图解FPGA底层:从代码到硬件的可视化之旅 当你在Vivado中编写完一段Verilog代码,点击综合按钮后,那些抽象的硬件描述究竟是如何变成FPGA芯片上实实在在的电路连接的?对于初学者来说,CLB、SLICE、LUT这些概…...

s2-pro企业应用指南:如何用参考音频批量生成统一品牌语音素材

s2-pro企业应用指南:如何用参考音频批量生成统一品牌语音素材 1. 企业语音素材的痛点与解决方案 在当今数字化营销环境中,企业面临一个共同挑战:如何高效制作大量统一品牌调性的语音素材。传统方案通常面临: 成本高昂&#xff…...

Linux下用qemu-nbd挂载qcow2镜像的完整指南(含LVM/非LVM/ntfs场景)

Linux下用qemu-nbd挂载qcow2镜像的完整指南(含LVM/非LVM/ntfs场景) 当虚拟机突然崩溃或需要从镜像中提取关键数据时,直接挂载qcow2镜像往往是最直接的解决方案。不同于常规磁盘挂载,qcow2镜像可能包含复杂的存储结构——从简单的e…...

脑电分析避坑指南:为什么你的PLV锁相值总等于1?希尔伯特变换与窄带滤波详解

脑电分析避坑指南:为什么你的PLV锁相值总等于1?希尔伯特变换与窄带滤波详解 在脑电信号分析领域,相位锁定值(Phase Locking Value, PLV)是衡量不同脑区神经振荡同步性的重要指标。但许多研究者在实际计算中常遇到一个令…...

考研数学二必备:多元函数极值最值实战技巧(附拉格朗日乘数法详解)

考研数学二多元函数极值最值实战指南:从基础到高阶解题策略 多元函数极值与最值问题在考研数学二中占据重要地位,每年真题中至少出现1-2道大题。许多考生在面对这类问题时容易陷入"知道概念但不会解题"的困境。本文将打破传统教材的讲解顺序&a…...

5步解锁d2s-editor:暗黑2玩家的单机存档定制工具

5步解锁d2s-editor:暗黑2玩家的单机存档定制工具 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款基于Vue.js构建的暗黑破坏神2存档编辑工具,专为单机玩家设计,提供角色属性修…...

别再死磕公式了!用Ansoft Maxwell 2D给永磁无刷电机做仿真,保姆级操作流程(附避坑点)

永磁无刷电机仿真实战:从零掌握Ansoft Maxwell 2D的高效工作流 第一次打开Ansoft Maxwell 2D时,满屏的专业术语和复杂的参数设置界面确实容易让人望而生畏。作为从业十年的电机设计工程师,我完全理解这种面对专业仿真软件时的无力感——理论书…...

从3大维度突破OCR效率瓶颈:5类场景的实战解决方案

从3大维度突破OCR效率瓶颈:5类场景的实战解决方案 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins 在数字化办公与学习中,OCR(光学字符识别)技术已成为信息…...

如何快速学习Web安全:DVWA-Chinese完整教程指南

如何快速学习Web安全:DVWA-Chinese完整教程指南 【免费下载链接】DVWA-Chinese DVWA全汉化版本 项目地址: https://gitcode.com/gh_mirrors/dv/DVWA-Chinese 想要在安全领域快速成长?DVWA-Chinese就是你的最佳Web安全测试平台!作为全球…...

手把手教你用Python实现双足机器人ZMP预观控制(附开源代码)

用Python实现双足机器人ZMP预观控制的完整指南 1. ZMP理论基础与机器人动力学模型 零力矩点(ZMP)理论是现代双足机器人步态规划的核心概念,它定义了地面反作用力合力作用点的位置。当ZMP位于支撑多边形(由机器人足底接触点构成的凸多边形)内时,机器人能保…...

Qwen1.5-1.8B GPTQ生成技术博客大纲与初稿:以“操作系统内存管理”为例

Qwen1.5-1.8B GPTQ生成技术博客大纲与初稿:以“操作系统内存管理”为例 1. 引言:当AI成为技术写作的“副驾驶” 最近在折腾一些技术分享,想写一篇关于操作系统内存管理的文章。这话题吧,说深了容易劝退,说浅了又没意…...