编程导航学习路线话题讨论

学习路线

124 参与
分享

快来分享你的内容吧~

点击登录,快来和大家讨论吧~
表情
图片
话题
打卡
综合
交流
文章
问答

Java开发转AI大模型(集成LangChain+Spring AI)学习方案 一、大模型基础认知 1、Tokenizer、Embedding、上下文窗口、温度系数、Top-K/Top-P、基础提示词工程 大模型基础(通用) 能解释各概念作用,独立编写3-5步基础提示词,区分温度系数对结果的影响 2、大模型调用模式(API/本地/私有化部署) 大模型基础(通用) 能用Python/Java调用API,说明不同部署模式优缺点,了解本地轻量模型部署流程 二、LangChain核心能力 1、核心模块(Model I/O、Chains、Retrievers、Memory、Agents) 通用框架特性 能绘制模块关系图,明确各模块作用,对比Spring AI对应组件差异 2、Model I/O(LLM/ChatModel区别、PromptTemplate)、Memory(会话记忆类型) 通用框架特性 实现动态提示词生成、带记忆的对话机器人,区分LLM与ChatModel调用逻辑 3、LCEL(LangChain表达式语言)、Agent ReAct模式 LangChain特有 用LCEL自定义链,实现Agent调用自定义工具,理解ReAct思考流程 4、日志可观测性、护轨(Guardrail)、MCP协议 LangChain特有 5、集成日志监控,用护轨拦截违规内容,理解MCP上下文传递规范 6、多智能体(Multi-Agent)系统设计 LangChain特有 实现多Agent分工协作,完成复杂任务拆解与执行 三、RAG核心流程(跨框架通用) 7 文档加载与处理(Loaders、Text Splitters) 通用框架特性 标准:加载PDF/TXT文档,按语义拆分文本块,避免语义割裂 8 Embedding与向量数据库(FAISS/Chroma/Milvus) 通用框架特性 标准:完成“向量化→入库→相似检索”全流程,优化检索准确性 9 RAG链搭建(RetrievalQA、对话式RAG) 通用框架特性 标准:实现文档问答机器人,排查幻觉、检索失效等问题 四、Spring AI(Java侧) 10 核心概念与自动配置、ChatClient/PromptTemplate Spring AI特有 标准:搭建Spring Boot+Spring AI项目,实现基础模型调用与动态提示词 11 Spring AI RAG集成(向量库对接、检索增强) Spring AI特有 标准:完成Java侧RAG全流程,编写问答接口 12 Java-Python协同方案(REST/gRPC) Spring AI特有(跨语言) 标准:实现Java调用Python LangChain服务,处理跨语言异常 五、工程化落地 13 调用优化(限流、重试、缓存) 大模型基础(通用) 标准:添加限流重试机制,用Redis缓存Embedding结果,降低成本 14 私有化部署适配(本地模型对接) 大模型基础(通用) 标准:对接Ollama部署的Llama 3,切换LangChain/Spring AI的模型源 15 服务化部署(Docker、微服务封装) 大模型基础(通用) 标准:容器化打包应用,部署微服务并配置监控告警

Solidity 学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) Solidity 求职高频面试题:[开始刷题](https://www.mianshiya.com/bank/1991434686466883585) ## 开篇介绍 Solidity 是一门面向智能合约的编程语言,专为以太坊虚拟机(EVM)设计。 **为什么要学 Solidity?** 首先,Solidity 是智能合约开发的必备语言,也是目前最流行的智能合约语言。几乎所有以太坊上的 DApp、DeFi 协议、NFT 项目都使用 Solidity 编写智能合约。可以说 Solidity 是进入区块链开发领域的敲门砖。掌握 Solidity,不仅能让你开发智能合约、DApp,还能有机会从事智能合约审计、甚至是安全研究等高薪工作。 其次,Solidity 相对容易学习,语法类似于 JavaScript 和 C++,有编程基础的话,几周就能上手。而且 Solidity 的应用场景非常广泛:从去中心化金融(DeFi)到非同质化代币(NFT),从去中心化自治组织(DAO)到游戏(GameFi)。从 Uniswap 到 Aave,从 CryptoPunks 到 Bored Ape Yacht Club,这些知名项目的智能合约都是用 Solidity 编写的。 ![](https://pic.code-nav.cn/migrate_image/8f9a6e9bbca67d22adf7af684277e224.webp) **要注意,Solidity 智能合约的安全至关重要!** 智能合约一旦部署无法修改,漏洞会永久存在,可能导致重大资金损失。学习 Solidity 时,要特别注重安全最佳实践,了解常见漏洞(如重入攻击、整数溢出、权限控制不当等)和防御方法。 ### 学习前提 学习 Solidity 建议先掌握: 1. 编程基础:至少会一门编程语言(JavaScript、Python、C++ 等)【必学】。关于 JavaScript 的详细学习,可以查看 [JavaScript 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990753900055015426) 2. 区块链基础:理解区块链和以太坊的基本概念【建议】。关于区块链开发的详细学习,可以查看 [区块链开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756125376557057) ### 学习路线图 ![Solidity 学习路线思维导图](https://pic.code-nav.cn/migrate_image/f8552958306aa25f90c45e84b77b0475.webp) ### 就业方向 学完 Solidity 后,可以从事以下岗位: 1. 智能合约工程师:开发和优化智能合约 2. 区块链开发工程师:开发区块链应用 3. 智能合约审计工程师:审计智能合约安全 4. DeFi 开发工程师:开发去中心化金融协议 5. Web3 开发工程师:开发去中心化应用 ## 整体学习建议 1)Solidity 的语法类似 JavaScript,如果会 JavaScript,学习 Solidity 会很快。但 Solidity 有很多区块链特有的概念(如 Gas、address、mapping 等),要仔细学习。 2)智能合约的安全非常重要,要学习安全最佳实践,使用安全库(如 OpenZeppelin),避免常见漏洞。记住:**合约一旦部署无法修改,安全问题会永久存在!** 3)GitHub 上有很多优秀的 Solidity 项目(比如 Uniswap、Aave),建议多多阅读源码来学习最佳实践。看别人怎么写,比自己瞎琢磨效率高得多。 4)Solidity 的学习一定要结合实践。建议在 Remix IDE 中练习,编写各种智能合约,部署到测试网。Remix 是在线 IDE,无需安装,非常方便。 ## 阶段 1:Solidity 基础语法(10-20 天,仅供参考) ### 学习目标 掌握 Solidity 的基础语法,能够编写简单的智能合约。 ### 知识点 **基础语法【必学】:** - 数据类型(uint、int、address、bool、string、bytes) - 变量(状态变量、局部变量、全局变量) - 函数 - 控制流(if、for、while) - 运算符 **函数【必学】:** - 函数的定义 - 可见性(public、private、internal、external) - 状态可变性(pure、view、payable) - 修饰符(modifier) - 返回值 **特殊变量和函数【必学】:** - msg.sender、msg.value - block.timestamp、block.number - address.balance、address.transfer、address.call ### 学习重点 1)Solidity 的数据类型和其他语言类似,但有一些特殊类型。address 是以太坊地址类型,uint 是无符号整数(常用 uint256)。 2)函数的可见性非常重要,直接影响安全。public 可以被任何人调用,private 只能在合约内部调用,external 只能从外部调用,internal 可以在合约内部和子合约中调用。 3)状态可变性也很重要。view 函数不修改状态,pure 函数不读取也不修改状态,payable 函数可以接收以太币。 4)建议在 [Remix IDE](https://remix.ethereum.org/) 中练习基础语法,Remix 是在线 IDE,无需安装,非常方便。 ![](https://pic.code-nav.cn/migrate_image/1461674de9cebb6dfe657db26019fc35.webp) ### 学习资源 - ⭐ [Solidity 官方文档](https://docs.soliditylang.org/):最权威的学习资料 - [WTF Solidity](https://vampireachao.gitee.io/2025/09/08/WTF-Solidity/):Solidity 教程 - [Solidity 快速入门教程](https://www.bilibili.com/video/BV1S5pqeBEfp) - [Solidity 智能合约开发入门实战](https://www.bilibili.com/video/BV15fBJYUEZq) ## 阶段 2:面向对象和高级特性(12-25 天,仅供参考) ### 学习目标 掌握 Solidity 的面向对象特性和高级功能,这些是编写复杂智能合约的基础。 ### 知识点 **结构化数据【必学】:** - mapping(映射) - array(数组) - struct(结构体) - enum(枚举) **面向对象【必学】:** - 合约(contract) - 继承 - 抽象合约和接口 - 多重继承 **事件和错误【必学】:** - event(事件) - error(自定义错误,Solidity 0.8+) - require、assert、revert **库【建议学】:** - library(库) - using for ### 学习建议 1)mapping 是 Solidity 中最常用的数据结构,类似于哈希表。mapping 不能遍历,也不能获取长度,要注意这些限制。 2)继承是 Solidity 的重要特性,可以复用代码。Solidity 支持多重继承,要理解继承的顺序和规则。 3)事件可以让合约向外部发送通知,前端可以监听事件。事件的 Gas 消耗低,常用于记录重要操作。 4)Solidity 0.8+ 引入了自定义错误,相比字符串错误更省 Gas,更易于处理。建议使用自定义错误。 ### 学习资源 - [Solidity 官方文档 - 高级特性](https://docs.soliditylang.org/):官方文档 ## 阶段 3:安全最佳实践(12-25 天,仅供参考) ### 学习目标 掌握 Solidity 安全编程,能够编写安全的智能合约,避免资产损失。 ### 知识点 **常见漏洞【必学,核心重点】:** - 重入攻击:最危险的漏洞 - 整数溢出/下溢:Solidity 0.8+ 默认检查 - 权限控制不当:未正确验证调用者 - tx.origin 钓鱼:使用 tx.origin 而不是 msg.sender - 未检查的外部调用:call 的返回值未检查 **安全模式【必学】:** - Checks-Effects-Interactions 模式 - Pull Payment 模式 - Emergency Stop(Pausable) **OpenZeppelin 安全库【必学】:** - ReentrancyGuard(防重入) - Ownable(权限控制) - Pausable(暂停机制) - SafeERC20 ### 学习重点 1)重入攻击防御: - 使用 Checks-Effects-Interactions 模式:先检查条件,再更新状态,最后调用外部 - 使用 OpenZeppelin 的 ReentrancyGuard 修饰符 - 使用 transfer/send 而不是 call(但 transfer/send 已不推荐) 2)整数溢出防御:Solidity 0.8+ 默认检查溢出,无需 SafeMath。如果使用 0.7 或更早版本,必须使用 SafeMath。 3)权限控制:敏感函数要加上权限检查,使用 OpenZeppelin 的 Ownable 或 AccessControl。 4)安全是 Solidity 开发的重中之重,要深入学习。建议阅读 [智能合约安全学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756156976443394) 中的安全部分。 ### 学习资源 - [智能合约安全之重入攻击](https://learnblockchain.cn/article/8453):详细讲解 - [如何防止 Solidity 重入攻击](https://blog.usdtbi.com/ruhefangzhisolidityzhongrugongjidefikaifazhebikandeanquanzhinan.html):DeFi 安全指南 ## 阶段 4:项目实战(15-30 天,仅供参考) ### 学习目标 通过实际项目巩固所学知识,积累 Solidity 项目经验。 ### 学习建议 1)从标准合约开始:先实现 ERC-20、ERC-721 等标准合约,理解代币标准。 2)开发 DeFi 合约:尝试开发简单的 DeFi 合约(如 AMM、借贷等),理解 DeFi 的工作原理。 3)阅读优秀代码:阅读 Uniswap、Aave、OpenZeppelin 等项目的代码,学习最佳实践。 4)安全审计:为自己的合约进行安全审计,使用工具检测漏洞,手动审查代码。 ### 项目推荐 - ERC-20 代币 - ERC-721 NFT - 多签钱包 - 去中心化交易所(DEX) - 借贷协议 **优质开源项目:** - ⭐ [Full Blockchain Solidity Course](https://github.com/smartcontractkit/full-blockchain-solidity-course-js):32k+ stars,完整的 Solidity 课程和项目 - [Awesome Solidity Projects](https://github.com/0xisk/awesome-solidity-projects):智能合约优秀项目索引 - [Beginner Solidity Projects](https://github.com/zubairahm3d/Beginner-Level-Solidity-Projects):100 个初学者项目 - [OpenZeppelin Contracts](https://github.com/OpenZeppelin/openzeppelin-contracts):25k+ stars,安全的智能合约库 ### 学习资源 - [Solidity Foundry 框架教程](https://www.bilibili.com/video/BV1u8411k7Z7/):零基础教程 ## 求职备战 ### 学习建议 1)准备智能合约项目:简历上一定要有至少 1 个 Solidity 智能合约项目。面试时要能够讲解合约的设计、安全措施、Gas 优化等。最好能够提供已部署的合约地址和代码仓库。 2)准备简历:可以使用 [老鱼简历](https://www.laoyujianli.com/) 上现成的模板来快速制作简历;关于如何写好简历,推荐学习鱼皮的 [保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425)。 ![老鱼简历网站简历模板大全](https://pic.code-nav.cn/migrate_image/676fb3480c37a3e017b45c83d6c2b9fa.webp) 3)多刷面试题:Solidity 的面试题主要包括语法特性、安全漏洞、Gas 优化、标准合约等,可以直接用 [面试鸭](https://www.mianshiya.com/) 网站或者小程序来刷题。 ![面试鸭刷题神器热门八股文](https://pic.code-nav.cn/migrate_image/a07730d4409a37f3c6cc40d8f1681de5.webp) 4)安全是 Solidity 面试的核心考点,面试时尽量展现你的安全意识,能够说出常见的智能合约漏洞和防范措施,会给面试官留下 “你有经验” 的印象。 更多求职干货:[编程导航求职干货分享](https://www.codefather.cn/learn?category=76&type=2) ### 经典面试题 1. Solidity 有什么特点? 2. storage 和 memory 有什么区别? 3. 如何防止重入攻击? 4. ERC-20 和 ERC-721 有什么区别? 5. 如何优化 Gas 消耗? ### 求职资源 - ⭐ [鱼皮的保姆级求职指南](https://www.codefather.cn/course/job) - ⭐ [鱼皮的保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425) - [编程导航的求职干货分享](https://www.codefather.cn/learn?category=76&type=2) - [老鱼简历](https://www.laoyujianli.com/) - [真实面经大全](https://www.codefather.cn/job/experience) - [几百场真实面试视频](https://www.codefather.cn/mockInterview) - [1 对 1 模拟面试](https://ai.mianshiya.com/) - [面试题讲解视频](https://space.bilibili.com/3546383483144655) ## 更多资源 ### 知识总结 - ⭐ [编程导航](https://www.codefather.cn/):学习路线、项目教程、面试题、编程资源一站式平台 - [区块链开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756125376557057):完整的区块链路线 - [智能合约开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756156976443394):完整的智能合约路线 ### Solidity 资源 - [Solidity 官网](https://soliditylang.org/):官方网站 - [OpenZeppelin](https://openzeppelin.com/):安全合约库 - [登链社区](https://learnblockchain.cn/):中文区块链社区 ### 技术博客 - [Solidity 官方博客](https://blog.soliditylang.org/):Solidity 官方技术博客 - [Ethereum Foundation Blog](https://blog.ethereum.org/):以太坊官方博客 - [ConsenSys Blog](https://consensys.io/blog):智能合约开发最佳实践 - [OpenZeppelin Blog](https://blog.openzeppelin.com/):智能合约安全 ## 最后总结 Solidity 是智能合约开发的核心语言,而且 Solidity 的语法相对简单,但是智能合约的安全要求很高,要特别注重安全学习。 学习 Solidity 要先掌握基础语法,理解面向对象特性,深入学习安全最佳实践。一定要多做项目,在测试网络上部署合约,积累开发经验。 再次提醒!智能合约一旦部署无法修改,要充分测试和审计。使用安全库、遵循最佳实践、了解常见漏洞,是每个 Solidity 开发者的必修课。 最后希望这份学习路线能够帮助大家少走弯路,安全、高效地掌握 Solidity,拿到理想的薪资! ![](https://pic.code-nav.cn/migrate_image/71e93ea44aa79327dab58b6083b4ec4c.jpg) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

Web3 开发学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) Web3 开发求职高频面试题:[开始刷题](https://www.mianshiya.com/bank/1991434903517921282) ## 开篇介绍 Web3 是基于区块链技术构建的去中心化网络,核心理念是将数据和资产的所有权还给用户。从 DeFi 到 NFT、从 DAO 到 GameFi,Web3 正在重塑互联网格局。 **为什么要学 Web3 开发?** Web3 是当前最具创新性的技术方向之一。掌握 Web3 开发,不仅能让你参与 “区块链革命”,还能获得可观的薪资回报。一线城市的 Web3 工程师平均薪资在 30-60K。而且 Web3 开发工程师的需求量持续增长,职业发展空间广阔。 ![](https://pic.code-nav.cn/migrate_image/05bf254d2a46083737da309e95ff3168.webp) 不过鱼皮友情提示:Web3 领域存在钓鱼网站、私钥泄露等安全风险,开发者要特别注重安全,保护用户的私钥和资产。而且很多公司可能会通过高薪来钓鱼,甚至通过让你拉取个开源代码来盗取你的加密货币,谨防受骗! 本篇学习路线侧重于 Web3 前端开发,包括使用 ethers.js/web3.js 与区块链交互、集成钱包(MetaMask)、处理交易、连接 IPFS 等。关于智能合约开发的详细学习,可以查看 [智能合约开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756156976443394) ### 学习前提 学习 Web3 开发建议先掌握: 1. 前端开发基础:熟练使用 HTML、CSS、JavaScript【必学】 2. React 或 Vue:熟练使用现代前端框架【建议】 3. 区块链基础:理解区块链和以太坊的基本概念【建议】 关于区块链开发的详细学习,可以查看 [区块链开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756125376557057) ### 学习路线图 ![Web3 开发学习路线思维导图](https://pic.code-nav.cn/migrate_image/448246c2daf8014435356641babedead.webp) ### 就业方向 学完 Web3 开发后,可以从事以下岗位: 1. Web3 前端工程师:开发 DApp 前端 2. Web3 全栈工程师:开发 DApp 前后端 3. 区块链开发工程师:开发区块链应用 4. DApp 开发工程师:开发去中心化应用 ## 整体学习建议 1)Web3 前端开发是前端开发的延伸,**一定要先掌握前端基础**(HTML、CSS、JavaScript、React/Vue),再学习 Web3 特性。关于 前端开发的详细学习,可以查看 [前端开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190394078011393)。 2)ethers.js 是和以太坊交互的 JavaScript 库,是 Web3 前端开发的核心。**要熟练掌握 ethers.js 的使用。** 3)Web3 开发要理解区块链的基本概念,如账户、交易、Gas、智能合约等。不需要深入研究区块链原理,但要理解基本概念。 4)记住,永远不要在主网上测试!可以使用 Sepolia 等测试网络进行开发和测试,避免资产损失。测试网的 ETH 可以通过水龙头免费领取。 ## 阶段 1:Web3 基础(7-15 天,仅供参考) ### 学习目标 理解 Web3 的核心概念,掌握基本的区块链知识。 ### 知识点 **Web3 基础概念【必学】:** - Web3 的定义和特点 - Web3 和 Web2 的区别 - 去中心化应用(DApp) - 区块链、钱包、Gas **以太坊基础【必学】:** - 以太坊账户 - 交易和区块 - 智能合约【简单了解】 **开发工具【必学】:** - MetaMask 钱包 - Etherscan 区块链浏览器 - 测试网络(Sepolia) ### 学习建议 1)Web3 的核心是去中心化,用户拥有自己的数据和资产,理解 Web3 和 Web2 的本质区别非常重要。 ![](https://pic.code-nav.cn/migrate_image/fc3214e98f9418aeb66840249fe5a806.webp) 2)MetaMask 是最流行的以太坊钱包,是 DApp 的必备工具。要熟练使用 MetaMask,理解账户、私钥、交易等概念。 ![](https://pic.code-nav.cn/migrate_image/71644fc99268a91a2c09614f345b6afc.webp) 3)Etherscan 是以太坊的区块链浏览器,可以查看交易、区块、合约等信息。要学会使用 Etherscan 查询链上数据。 ### 学习资源 - ⭐ [2025 Web3 开发学习路线全指南](https://learnblockchain.cn/article/10152):登链社区 - [2025 Web3 揭秘](https://cloud.tencent.com/developer/article/2586327):新手入门 - [Web3 入门计划](https://polebug.github.io/2025/07/05/web3_2025/):2025 版 ## 阶段 2:ethers.js / web3.js(15-25 天,仅供参考) ethers.js 和 web3.js 是跟以太坊交互的 JavaScript 库,是开发 Web3 前端应用的核心工具。 ### 学习目标 掌握 ethers.js,能够使用 JavaScript 和区块链交互。 ### 知识点 **ethers.js 基础【必学,推荐】:** - Provider(连接以太坊网络) - Signer(签名交易) - Contract(合约交互) - 读取区块链数据 **web3.js【建议学】:** - web3.js 的使用 - ethers.js 和 web3.js 的对比 **合约交互【必学】:** - 调用合约的只读函数 - 调用合约的写函数(发送交易) - 监听合约事件 - ABI 和合约地址 ### 学习重点 1)ethers.js 和 web3.js 是两大以太坊 JavaScript 库。ethers.js 更轻量、更现代、API 更友好,建议优先学习 ethers.js。web3.js 是老牌库,功能更全面。 2)Provider 用于连接以太坊网络,Signer 用于签名交易。要理解 Provider 和 Signer 的区别和使用场景。 3)ABI(Application Binary Interface)是合约的接口定义,前端通过 ABI 和合约交互。要理解 ABI 的作用。 ![](https://pic.code-nav.cn/migrate_image/146825a02b867444ac6a089e4bbe3199.webp) ### 学习资源 - ⭐ [ethers.js 官方文档](https://docs.ethers.org/):最权威的学习资料 - [ethers.js 教程](https://github.com/xjh22222228/ethers-tutorial):快速入门 ## 阶段 3:钱包集成和 DApp 开发(15-25 天,仅供参考) ### 学习目标 钱包集成是 DApp 开发的第一步,要学会连接 MetaMask、获取账户、签名交易等。 本阶段的目标是掌握钱包集成,能够开发完整的 DApp 前端。 ### 知识点 **钱包集成【必学】:** - MetaMask 连接 - 账户授权 - 网络切换 - 交易签名 **DApp 前端开发【必学】:** - React / Vue + ethers.js - 合约状态展示 - 交易发送 - 事件监听 **IPFS【建议学】:** - 去中心化存储 - 上传和获取文件 - IPFS 网关 **Web3 UI 库【建议学】:** - RainbowKit(钱包连接) - wagmi(React Hooks) - web3-react ### 学习建议 1)DApp 的前端开发和传统 Web 开发类似,主要区别是需要和区块链交互。可以使用 React 或 Vue,结合 ethers.js 开发 DApp。 2)IPFS 是去中心化存储方案,可以用于存储 DApp 的前端文件、NFT 的元数据等。理解 IPFS 的基本原理和使用方法。 ![](https://pic.code-nav.cn/migrate_image/a14ced60949f482b5439caa742705aae.webp) 3)几个非常重要的安全提醒: - 永远不要在前端代码中暴露私钥 - 验证用户签名的交易参数,防止钓鱼攻击 - 提供清晰的交易确认界面,让用户知道在签什么 - 检测和警告用户钓鱼网站 - 使用 HTTPS 保护网站安全 ### 学习资源 - [如何使用 ethers.js 连接 MetaMask](https://learnblockchain.cn/article/11752):详细教程 ## 阶段 4:项目实战(20-40 天,仅供参考) ### 学习目标 通过实际项目巩固所学知识,积累 Web3 项目经验。 ### 学习建议 1)从简单 DApp 开始:如展示账户余额、发送交易等,熟悉 Web3 开发流程。 2)开发完整 DApp:开发一个完整的 DApp(如 NFT 市场、去中心化投票、简单的 DeFi 应用),体验前后端开发。 3)部署 DApp:将 DApp 部署到 IPFS 或 Vercel,让用户可以访问。 4)关注用户体验:Web3 DApp 的用户体验相比 Web2 应用较差(如需要连接钱包、确认交易、等待区块确认等),要尽可能优化用户体验。 ### 项目推荐 **入门级项目:** - 简单的代币转账 DApp - NFT 展示页面 - 去中心化投票 - 区块链浏览器(简化版) **进阶级项目:** - NFT 市场(Mint、交易) - 去中心化交易所前端 - DeFi 借贷协议前端 - DAO 治理界面 **优质开源项目:** - ⭐ [Full Blockchain Solidity Course](https://github.com/smartcontractkit/full-blockchain-solidity-course-js):32k+ stars,Web3 完整课程 - [Awesome Web3](https://github.com/ahmet/awesome-web3):Web3 开发资源大全 - [Web3 DApp Examples](https://github.com/topics/web3):Web3 DApp 项目专题 ### 学习资源 - [以太坊 DApp 开发视频教程](https://www.bilibili.com/video/BV14A411178x) - [Web3 开发者生态指南](https://zhuanlan.zhihu.com/p/1924997208173970696):新手脱颖而出 ## 求职备战 ### 学习建议 1)准备项目:简历上一定要有 Web3 DApp 项目,最好能提供可访问的链接(部署到 IPFS 或 Vercel)。面试时要能够演示你的 DApp,介绍技术实现、用户体验优化和安全措施。 2)准备简历:建议使用 [老鱼简历](https://www.laoyujianli.com/) 制作简历,有很多现成的模板直接拿来套~ ![](https://pic.code-nav.cn/migrate_image/676fb3480c37a3e017b45c83d6c2b9fa.webp) 关于如何写好简历,推荐学习鱼皮的 [保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425)。 3)多刷面试题:Web3 的面试题主要包括 Web3 概念、ethers.js 使用、钱包集成、安全注意事项等。建议使用 [面试鸭](https://www.mianshiya.com/) 刷题。 ![面试鸭刷题神器热门八股文](https://pic.code-nav.cn/migrate_image/a07730d4409a37f3c6cc40d8f1681de5.webp) 4)安全是 Web3 的要点,面试时一定要展现出你的安全意识,能够说出 Web3 开发中的常见安全问题和防范措施。 更多求职干货:[编程导航求职干货分享](https://www.codefather.cn/learn?category=76&type=2) ### 经典面试题 1. 什么是 Web3?和 Web2 有什么区别? 2. 什么是 DApp?有什么特点? 3. ethers.js 和 web3.js 有什么区别? 4. 如何连接 MetaMask? 5. 如何调用智能合约? 6. Web3 开发有哪些安全注意事项? ### 求职资源 - ⭐ [鱼皮的保姆级求职指南](https://www.codefather.cn/course/job) - ⭐ [鱼皮的保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425) - [编程导航的求职干货分享](https://www.codefather.cn/learn?category=76&type=2) - [老鱼简历](https://www.laoyujianli.com/) - [真实面经大全](https://www.codefather.cn/job/experience) - [几百场真实面试视频](https://www.codefather.cn/mockInterview) - [1 对 1 模拟面试](https://ai.mianshiya.com/) - [面试题讲解视频](https://space.bilibili.com/3546383483144655) ## 其他资源 ### 知识总结 - ⭐ [编程导航](https://www.codefather.cn/):学习路线、项目教程、面试题、编程资源一站式平台 - [区块链开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756125376557057):完整的区块链路线 - [智能合约开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756156976443394):完整的智能合约路线 ### Web3 资源 - [ethers.js 官网](https://ethers.org/):ethers.js 官方网站 - [web3.js 官网](https://web3js.readthedocs.io/):web3.js 官方文档 - [登链社区](https://learnblockchain.cn/):中文区块链社区 ### 技术博客 - [Ethereum Foundation Blog](https://blog.ethereum.org/):以太坊 Web3 技术 - [ConsenSys Blog](https://consensys.io/blog):Web3 开发实践 - [IPFS Blog](https://blog.ipfs.tech/):去中心化存储 - [Polygon Blog](https://polygon.technology/blog):Web3 基础设施 ## 尾声 Web3 是下一代互联网的愿景,代表了去中心化、用户主权的未来。Web3 开发让前端工程师也能参加区块链革命,开发去中心化应用。 学习 Web3 开发要先打好前端基础,然后学习 ethers.js、钱包集成、智能合约交互等 Web3 特性。多做实战项目,开发 DApp,积累 Web3 开发经验。 再次提醒,Web3 领域的安全风险不容忽视,要保护用户私钥、验证交易参数、防范钓鱼攻击。安全意识和用户保护是 Web3 开发者的重要责任。 **面向薪资编程的前提是保证合法合规哦!** ![](https://pic.code-nav.cn/migrate_image/37c674b13cd1953a8903a08c48496ade.jpeg) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

智能合约开发学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) 智能合约开发求职高频面试题:[开始刷题](https://www.mianshiya.com/bank/1991435247975137282) ## 开篇介绍 智能合约是运行在区块链上的可编程代码,可以自动执行、控制或记录相关事件和行为。智能合约的概念最早由计算机科学家 Nick Szabo 在 1994 年提出,但直到以太坊的出现,智能合约才真正得以实现。以太坊通过引入图灵完备的虚拟机(EVM),让开发者可以编写各种复杂的智能合约。 智能合约是区块链应用的核心,所有的去中心化应用(DApp)、DeFi 协议、NFT、DAO 等都基于智能合约实现。智能合约运行在区块链上,具有去中心化、不可篡改、自动执行等特性。一旦部署,智能合约就会按照代码逻辑自动执行,无需人工干预,也无法被单方面修改。 ![](https://pic.code-nav.cn/migrate_image/50779945de25e05d2d74ff50a0cb739d.webp) **为什么要学智能合约开发?** 智能合约是区块链开发的核心技能,几乎所有区块链应用都需要智能合约。掌握智能合约开发,不仅能让你开发 DApp、DeFi 协议,还能从事智能合约审计、安全研究等高薪工作。一线城市的智能合约工程师平均薪资在 30-60K,资深智能合约专家可以达到 60-150K+。 Solidity 是以太坊的智能合约语言,也是目前最流行的智能合约语言。Solidity 语法类似于 JavaScript,相对容易学习。关于 Solidity 的详细学习,可以查看 [Solidity 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756223825260546)。 除了 Solidity,还有 Vyper(Python-like)、Rust(Solana)等智能合约语言,但 Solidity 仍然是主流。 **需要特别强调的是,智能合约的安全至关重要!** 历史上发生过多次智能合约漏洞导致的资金损失事件,比如 2016 年的 The DAO 事件(黑客利用重入漏洞盗取了 6000 万美元)、各种 DeFi 协议被黑事件等。智能合约一旦部署无法修改,漏洞会永久存在。因此,智能合约开发要特别注重安全,学习安全最佳实践,进行充分测试和审计。 ### 学习前提 学习智能合约开发建议先掌握: 1. 编程基础:至少会一门编程语言(JavaScript、Python 等)【必学】 2. 区块链基础:理解区块链、以太坊的基本概念【建议】 关于区块链开发的详细学习,可以看我的 [区块链开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756125376557057) ### 学习路线图 ![智能合约开发学习路线思维导图](https://pic.code-nav.cn/migrate_image/2b42607ab779ed88e884f93d65a35cc8.png) ### 就业方向 学完智能合约开发后,可以从事下面这些相关岗位: 1. 智能合约工程师:开发和优化智能合约 2. 区块链开发工程师:开发区块链应用 3. 智能合约审计工程师:审计智能合约安全 4. Web3 开发工程师:开发去中心化应用 5. DeFi 开发工程师:开发去中心化金融协议 ## 整体学习建议 1)先学区块链基础:智能合约运行在区块链上,要先理解区块链和以太坊的基本概念,再学习智能合约开发。 2)Solidity 是以太坊智能合约的主流语言,要重点学习。Solidity 的语法类似 JavaScript,相对容易上手。 3)智能合约的安全非常重要,要学习安全最佳实践,了解常见漏洞和防御方法。建议使用 OpenZeppelin 等经过审计的安全库。 4)智能合约一旦部署无法修改,**要在部署前充分测试**。建议编写完整的单元测试,覆盖所有场景。 5)学习智能合约时可以用 AI 工具辅助编写代码、查找漏洞。但要注意,不要完全依赖 AI,要人工审查代码。 ## 阶段 1:Solidity 语法(10-20 天,仅供参考) Solidity 语法是智能合约开发的基础,掌握数据类型、函数、事件等基本语法是编写合约的前提。 ### 学习目标 掌握 Solidity 编程语言,能够编写基本的智能合约。 ### 知识点 **Solidity 基础语法【必学】:** - 数据类型(uint、address、bool、string 等) - 变量(状态变量、局部变量) - 函数(可见性、修饰符) - 控制流(if、for、while) **高级特性【必学】:** - mapping 和 array - struct 和 enum - 继承 - 接口 - 库(library) - 事件(event) - 错误处理(require、assert、revert) **特殊变量【必学】:** - msg.sender、msg.value - block.timestamp、block.number - address.balance、address.transfer ### 学习重点 1)Solidity 的语法类似 JavaScript,如果会 JavaScript,学习 Solidity 会很快。但 Solidity 有很多区块链特有的概念,要仔细学习。 2)函数的可见性(public、private、internal、external)非常重要,直接影响安全。要理解不同可见性的区别和使用场景。 3)事件是智能合约跟外部通信的重要方式,前端可以监听事件获取合约状态变化。 4)详细的 Solidity 学习路线可以参考:[Solidity 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756223825260546) ### 学习资源 - ⭐ [Solidity 官方文档](https://docs.soliditylang.org/):最权威的学习资料 - [Solidity 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756223825260546):完整路线 - [WTF Solidity](https://vampireachao.gitee.io/2025/09/08/WTF-Solidity/):Solidity 教程 - [Solidity 快速入门教程](https://www.bilibili.com/video/BV1S5pqeBEfp) - [Solidity 智能合约开发入门实战](https://www.bilibili.com/video/BV15fBJYUEZq) ## 阶段 2:智能合约开发(15-30 天,仅供参考) 智能合约开发包括合约设计、开发、测试、部署等完整流程,需要理解区块链的特性和限制。 ### 学习目标 掌握智能合约的开发流程,能够开发各种类型的智能合约。 ### 知识点 **开发环境【必学】:** - Remix IDE(在线 IDE) - Hardhat(本地开发框架)【推荐】 - Foundry(Rust-based 开发框架)【建议学】 **常见合约类型【必学】:** - ERC-20(同质化代币) - ERC-721(非同质化代币 NFT) - ERC-1155(多代币标准)【建议学】 **合约交互【必学】:** - 合约调用合约 - 合约接口 - 库的使用 **OpenZeppelin【必学】:** - OpenZeppelin 合约库 - 标准合约实现(ERC-20、ERC-721 等) - 安全工具 ### 学习建议 1)Remix 是在线 IDE,适合初学者快速上手。Hardhat 是本地开发框架,功能强大,适合专业开发。建议先用 Remix 学习基础,然后使用 Hardhat 进行项目开发。 ![](https://pic.code-nav.cn/migrate_image/99049ae7963229417d501c8362328225.webp) 2)ERC-20 和 ERC-721 是最重要的代币标准,要熟练掌握。ERC-20 用于同质化代币(如 USDT),ERC-721 用于 NFT(如 CryptoPunks)。 3)OpenZeppelin 提供了经过审计的合约库,包括各种标准合约的实现。建议使用 OpenZeppelin 的合约,而不是自己从头实现,这样更安全。 ### 学习资源 - [Hardhat 官方文档](https://hardhat.org/docs):开发框架 - [OpenZeppelin 文档](https://docs.openzeppelin.com/contracts/):合约库 ## 阶段 3:智能合约安全(10-25 天,仅供参考) 智能合约安全是开发中的重中之重,需要了解常见漏洞(如重入攻击、溢出等)和安全编码规范。 ### 学习目标 掌握智能合约安全,能够识别和防御常见漏洞。 ### 知识点 **常见漏洞【必学,核心重点】:** - 重入攻击(Reentrancy):最危险的漏洞之一 - 整数溢出/下溢:Solidity 0.8+ 默认检查 - 权限控制不当:未正确验证调用者 - 随机数不安全:使用可预测的随机数 - 时间戳依赖:依赖 block.timestamp - 拒绝服务(DoS):合约被锁定无法使用 - 前端运行(Front Running):交易被抢跑 **安全最佳实践【必学】:** - Checks-Effects-Interactions 模式 - 使用 ReentrancyGuard - 使用 SafeMath(Solidity 0.7-) - 权限控制(Ownable、AccessControl) - 紧急停止(Pausable) **安全工具【建议学】:** - Slither(静态分析) - Mythril(符号执行) - 安全审计流程 ### 学习重点 1)重入攻击是最危险的漏洞,The DAO 事件就是因为重入攻击损失了 6000 万美元。 一些典型的防御方法: - 使用 Checks-Effects-Interactions 模式(先检查、再修改状态、最后调用外部) - 使用 OpenZeppelin 的 ReentrancyGuard 修饰符 - 避免在状态更新前调用外部合约 2)整数溢出/下溢:Solidity 0.8 之前没有溢出检查,需要使用 SafeMath 库。Solidity 0.8+ 默认检查溢出,更安全。 3)权限控制:敏感函数(如提取资金、修改配置)要加上权限检查。使用 OpenZeppelin 的 Ownable 或 AccessControl。 4)智能合约安全是重中之重,一定要深入学习。建议阅读历史上的安全事件,了解攻击手法和防御方法。 5)安全开发原则: - 使用经过审计的库(如 OpenZeppelin) - 编写完整的测试(单元测试、集成测试) - 进行代码审计(自己审计 + 第三方审计) - 在测试网充分测试后再部署主网 - 考虑使用可升级合约模式(但要注意升级的中心化风险) ### 学习资源 - ⭐ [智能合约安全之重入攻击](https://learnblockchain.cn/article/8453):详细讲解 - [智能合约安全审计](https://www.bilibili.com/video/BV1B94y1M71V/):2024 课程 - [如何审计智能合约](https://blog.chain.link/how-to-audit-smart-contract-zh/):审计指南 ## 阶段 4:测试和部署(7-20 天,仅供参考) 测试和部署是将智能合约上线的关键步骤,包括单元测试、集成测试、主网部署等。 ### 学习目标 掌握智能合约的测试和部署方法。 ### 知识点 **单元测试【必学】:** - Hardhat 测试框架 - Chai 断言库 - 测试覆盖率 **部署【必学】:** - 部署到测试网(Sepolia、Goerli) - 部署到主网 - 部署脚本 **合约验证【必学】:** - Etherscan 合约验证 - 源码公开 **Gas 优化【建议学】:** - Gas 消耗优化技巧 - 存储优化 - 函数优化 ### 学习重点 1)测试是智能合约开发的重要环节,要编写完整的单元测试,覆盖所有场景(包括正常场景和异常场景)。 2)先在测试网部署和测试,充分验证后再部署到主网。测试网可以免费获取测试币,用于开发和测试。 3)合约验证可以让用户在 Etherscan 上查看源码,提高透明度和信任度。建议部署后进行合约验证。 4)Gas 优化可以降低交易费用。常见的优化技巧包括:使用 uint256(比小整数更省 Gas)、减少存储操作、使用事件代替存储等。 ### 学习资源 - [Hardhat 测试文档](https://hardhat.org/hardhat-runner/docs/guides/test-contracts):官方文档 - [重入漏洞分析 - Hardhat 环境](https://cloud.tencent.com/developer/article/2152773):实战案例 ## 阶段 5:项目实战(20-40 天,仅供参考) ### 学习目标 通过实际项目巩固所学知识,积累智能合约项目经验。 ### 学习建议 1)从简单合约开始:如 ERC-20 代币、简单的 NFT 合约等,熟悉完整的开发流程。 2)开发 DeFi 协议:尝试开发简单的 DeFi 协议(如去中心化交易所、借贷协议),理解 DeFi 的工作原理。 3)参考优秀项目:学习 Uniswap、Aave、Compound 等知名 DeFi 协议的合约代码,了解最佳实践。 4)进行安全审计:部署前一定要进行安全审计,可以使用自动化工具(如 Slither),也可以请专业审计机构审计。 5)几个重要的安全提醒: - 永远不要在代码中硬编码私钥 - 部署前在测试网充分测试 - 考虑使用多签钱包管理重要合约 - 为合约设置紧急停止机制 - 了解常见的攻击模式(重入、闪电贷攻击等) ### 项目推荐 **入门级项目:** - ERC-20 代币合约 - 简单的 NFT(ERC-721) - 投票系统 - 众筹合约 **进阶级项目:** - NFT 市场合约 - 去中心化交易所(DEX) - DeFi 借贷协议 - DAO 治理合约 **优质开源项目:** - ⭐ [Awesome Solidity Projects](https://github.com/0xisk/awesome-solidity-projects):智能合约优秀项目索引 - [Full Blockchain Solidity Course](https://github.com/smartcontractkit/full-blockchain-solidity-course-js):32k+ stars,Solidity 完整课程及项目 - [Beginner Solidity Projects](https://github.com/zubairahm3d/Beginner-Level-Solidity-Projects):100 个初学者智能合约项目 ### 学习资源 - [Solidity 快速入门教程](https://www.bilibili.com/video/BV1S5pqeBEfp) - [Solidity 智能合约开发入门实战](https://www.bilibili.com/video/BV15fBJYUEZq) ## 阶段 6:求职备战 ### 学习目标 熟练掌握智能合约开发常见面试题,准备好简历和项目经历,顺利通过面试。 ### 学习建议 1)准备项目:简历上一定要有智能合约项目,最好能在 Etherscan 上查到你部署的合约。 2)准备简历:建议使用 [老鱼简历](https://www.laoyujianli.com/) 制作简历,有很多现成的模板可以拿来用;关于如何写好简历,推荐学习鱼皮的 [保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425)。 ![老鱼简历网站简历模板大全](https://pic.code-nav.cn/migrate_image/676fb3480c37a3e017b45c83d6c2b9fa.webp) 3)准备安全案例:面试时可能会问你如何防御某种攻击,要能够说出防御方法和最佳实践。 更多求职干货:[编程导航求职干货分享](https://www.codefather.cn/learn?category=76&type=2) ### 经典面试题 **Solidity 基础:** 1. Solidity 有什么特点? 2. Solidity 的数据类型有哪些? 3. storage 和 memory 有什么区别? 4. external 和 public 函数有什么区别? **智能合约安全:** 1. 智能合约的常见漏洞有哪些? 2. 什么是重入攻击?如何防御? 3. 什么是整数溢出?如何防御? 4. 如何进行权限控制? **代币标准:** 1. ERC-20 和 ERC-721 有什么区别? 2. 如何实现 ERC-20 代币? 3. NFT 的元数据存储在哪里? **其他:** 1. 什么是 Gas?如何优化 Gas? 2. 如何测试智能合约? 3. 智能合约如何升级? ### 面试题库 - ⭐ [智能合约开发面试题 - 面试鸭](https://www.mianshiya.com/bank/1991435247975137282) - [区块链开发面试题 - 面试鸭](https://www.mianshiya.com/bank/1991435060468776961) ### 求职资源 - ⭐ [鱼皮的保姆级求职指南](https://www.codefather.cn/course/job):从简历到面试的完整指南 - ⭐ [鱼皮的保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425):如何写出高质量简历 - [编程导航的求职干货分享](https://www.codefather.cn/learn?category=76&type=2):求职经验和技巧 - [老鱼简历](https://www.laoyujianli.com/):写简历工具 + 简历模板大全 - [真实面经大全](https://www.codefather.cn/job/experience):了解真实的面试流程 - [几百场真实面试视频](https://www.codefather.cn/mockInterview):观看他人的面试过程 - [1 对 1 模拟面试](https://ai.mianshiya.com/):AI 模拟面试练习 - [面试题讲解视频](https://space.bilibili.com/3546383483144655):面试鸭官方题解 ## 持续学习资源 ### 知识总结 - ⭐ [编程导航](https://www.codefather.cn/):学习路线、项目教程、面试题、编程资源一站式平台 - [区块链开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756125376557057):完整的区块链路线 - [Solidity 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756223825260546):完整的 Solidity 路线 - [Web3 开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756186445623297):完整的 Web3 路线 ### 智能合约资源 - [Solidity 官网](https://soliditylang.org/):官方网站 - [OpenZeppelin](https://openzeppelin.com/):安全合约库 - [登链社区](https://learnblockchain.cn/):中文区块链社区 ### 技术博客 - [OpenZeppelin Blog](https://blog.openzeppelin.com/):智能合约安全和开发 - [ConsenSys Blog](https://consensys.io/blog):智能合约最佳实践 - [Ethereum Foundation Blog](https://blog.ethereum.org/):以太坊智能合约 - [Chainlink Blog](https://blog.chain.link/):预言机和智能合约 ## 写在最后 智能合约是区块链应用的核心,掌握智能合约开发是进入区块链领域的关键。 学习智能合约开发要先打好 Solidity 基础,理解智能合约的特性。重点学习智能合约安全,了解常见漏洞和防御方法。还要多做实战项目,在测试网络上练习,积累开发经验。 **最后再次强调安全的重要性!** 智能合约一旦部署无法修改,漏洞会永久存在。历史上多次发生因智能合约漏洞导致的重大资金损失事件。开发智能合约时,要使用安全库、编写完整测试、进行代码审计、在测试网充分验证。安全意识比编程能力更重要。 希望这份学习路线能够帮助大家少走弯路,安全、高效地掌握智能合约开发。加油鱼友们~ ![](https://pic.code-nav.cn/migrate_image/37c674b13cd1953a8903a08c48496ade.jpeg) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

区块链开发学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) 区块链开发求职高频面试题:[开始刷题](https://www.mianshiya.com/bank/1991435060468776961) ## 开篇介绍 区块链(Blockchain)是一种分布式账本技术,通过密码学和共识算法实现数据的安全存储和不可篡改。区块链最初是为比特币设计的底层技术,但随着以太坊智能合约的出现,区块链的应用场景扩展到了金融、供应链、医疗、政务等各个领域。如今,区块链技术正在深刻改变互联网的架构和商业模式。 区块链的发展可以分为三个阶段: - 区块链 1.0 以比特币为代表,实现了去中心化的数字货币 - 区块链 2.0 以以太坊为代表,通过智能合约实现了可编程的区块链 - 区块链 3.0 则包括各种新型区块链(如 Solana、Polkadot、Cosmos)和 Layer 2 扩容方案,追求更高的性能和可扩展性。 **为什么要学区块链开发?** 区块链是当前最具创新性的技术领域之一,从 DeFi(去中心化金融)到 NFT(非同质化代币),从 DAO(去中心化自治组织)到 GameFi(游戏金融),区块链应用层出不穷。而且区块链开发工程师的薪资非常高,一线城市的区块链工程师平均薪资在 20-50K,资深区块链专家可以达到 60-150K+。 ![](https://pic.code-nav.cn/migrate_image/11d6a2176c56f8e9ad81acba02c9270d.webp) 区块链开发包括底层开发(开发新的区块链)和应用开发(基于现有区块链开发应用)。本学习路线主要聚焦于应用开发,包括智能合约开发和 DApp(去中心化应用)开发。以太坊是目前最流行的智能合约平台,Solidity 是以太坊的智能合约语言,也是区块链开发的必学技术。 需要特别提醒的是,**区块链和 Web3 领域存在一定的安全风险和法律风险**。智能合约的安全问题(如重入攻击、整数溢出)可能导致资金损失,私钥泄露可能导致资产被盗。而且在某些国家和地区,加密货币和 ICO 等活动受到法律限制。学习区块链技术时,要注重安全意识和合规意识,**不要参加违法活动!** ### 学习前提 学习区块链开发建议先掌握: 1. 编程基础:至少会一门编程语言(JavaScript、Python、Go 等)【必学】。关于 JavaScript 的详细学习,可以查看 [JavaScript 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990753900055015426) 2. 密码学基础:理解哈希、加密、数字签名等概念【建议】。关于密码学的详细学习,可以查看 [密码学学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990755870409011202) 3. 网络基础:理解 P2P 网络、HTTP 等【建议】。关于计算机网络的详细学习,可以查看 [计算机网络学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789191030769164289) 4. 数据结构:理解链表、树等数据结构【建议】。关于数据结构和算法的详细学习,可以查看 [数据结构和算法学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789191067892948993) ### 学习路线图 ![区块链开发学习路线思维导图](https://pic.code-nav.cn/migrate_image/ba74de7e422163e66933153073987115.webp) ### 就业方向 学完区块链开发后,可以从事以下岗位: 1. 区块链开发工程师:开发区块链应用和智能合约 2. 智能合约工程师:专注于智能合约开发和审计。关于智能合约开发的详细学习,可以查看 [智能合约开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756156976443394) 3. Web3 开发工程师:开发去中心化应用(DApp)。关于 Web3 开发的详细学习,可以查看 [Web3 开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756186445623297) 4. 区块链架构师:设计区块链系统架构 5. 区块链安全工程师:负责智能合约审计和安全 ## 整体学习建议 1)先理解区块链原理:区块链的核心是分布式账本、密码学、共识算法。要先理解这些基础概念,再学习具体的区块链平台和开发技术。 2)以太坊是重点:以太坊是最流行的智能合约平台,Solidity 是最流行的智能合约语言。建议重点学习以太坊生态。 3)区块链领域的安全非常重要,智能合约的漏洞可能导致巨额资金损失。要学习智能合约安全,了解常见漏洞(如重入攻击、整数溢出等)。 4)区块链开发的学习一定要结合实践。建议在测试网络上部署智能合约,开发 DApp,积累实战经验。 5)善用 AI 工具:学习区块链时可以用 AI 工具辅助理解概念、编写智能合约。推荐没事儿多到鱼皮的 [AI 资源大全](https://ai.codefather.cn/) 中找找 AI 工具。 ![AI资源大全网站](https://pic.code-nav.cn/migrate_image/e9c72abafc0b976b0c1c69c56f1b74d9.webp) ## 阶段 1:区块链基础(10-25 天,仅供参考) ### 学习目标 理解区块链的核心概念和工作原理。 ![](https://pic.code-nav.cn/migrate_image/86b0bb5661b0d08619ebc6723d145ad0.webp) ### 知识点 **区块链基础概念【必学】:** - 区块链的定义和特点 - 分布式账本 - 去中心化 - 共识机制 - 区块链的应用场景 **区块链技术原理【必学】:** - 区块的结构 - 链式结构 - Merkle 树 - 工作量证明(PoW) - 权益证明(PoS)【建议学】 **比特币【必学】:** - 比特币的原理 - UTXO 模型 - 挖矿和奖励 ### 学习建议 1)区块链是分布式账本技术,通过密码学和共识算法实现数据的安全存储和不可篡改。要理解区块链的核心特性:去中心化、不可篡改、可追溯。 2)比特币是区块链的第一个成功应用,理解比特币的工作原理可以帮助你理解区块链的本质。 3)共识机制是区块链的核心,保证了分布式网络中数据的一致性。PoW 是比特币使用的共识机制,PoS 是以太坊 2.0 使用的共识机制。 ### 学习资源 - [区块链知识体系](https://github.com/Eternaldeath/BlockchainHome):GitHub 开源 - [北京大学《区块链技术与应用》公开课](https://www.bilibili.com/video/BV1Vt411X7JF) ## 阶段 2:密码学基础(5-15 天,仅供参考) ### 学习目标 理解区块链中使用的密码学技术。 ### 知识点 **哈希函数【必学】:** - 哈希的特性 - SHA-256 - 哈希在区块链中的应用 **非对称加密【必学】:** - 公钥和私钥 - 数字签名 - ECDSA(椭圆曲线数字签名算法) **Merkle 树【必学】:** - Merkle 树的结构 - Merkle 证明 ### 学习建议 1)密码学是区块链的基础,哈希函数保证数据不可篡改,非对称加密保证身份验证和数据安全。 2)私钥是区块链中最重要的概念,私钥控制了账户的所有权。私钥一旦泄露,资产就会被盗,而且无法找回。要牢记:私钥安全至关重要,不要泄露私钥。 3)理解这些密码学概念对学习区块链技术非常重要,但不需要深入研究密码学的数学原理。 ### 学习资源 - [Web3 教程:ERC20、NFT、Hardhat、CCIP 跨链](https://www.bilibili.com/video/BV1RFsfe5Ek5) ## 阶段 3:以太坊基础(10-20 天,仅供参考) ### 学习目标 理解以太坊的架构和核心概念。 ### 知识点 **以太坊基础【必学】:** - 以太坊的架构 - 账户模型(EOA 和合约账户) - Gas 和 Gas Price - 交易和区块 **以太坊虚拟机(EVM)【必学】:** - EVM 的工作原理 - 字节码 - 操作码【可不学】 **以太坊网络【必学】:** - 主网(Mainnet) - 测试网(Sepolia、Goerli) - 本地网络(Ganache、Hardhat Network) **钱包【必学】:** - MetaMask 钱包的使用 - 账户的创建和管理 - 交易的发送 ### 学习建议 1)以太坊是最流行的智能合约平台,要重点学习。以太坊引入了智能合约,让区块链可以运行可编程的代码。 2)Gas 是以太坊的交易费用,用于激励矿工处理交易。Gas 价格会波动,交易费可能很高。要理解 Gas 的计算和优化。 3)测试网络可以免费获取测试币,用于开发和测试。建议在测试网络上练习,不要在主网上浪费真实的 ETH。 4)[MetaMask](https://metamask.io/zh-CN) 是最流行的以太坊钱包,是 DApp 开发的必备工具。要熟练使用 MetaMask。 ![](https://pic.code-nav.cn/migrate_image/ea740b2a78b037089c6d31317be41b17.webp) ### 学习资源 - [以太坊官方文档](https://ethereum.org/zh/developers/docs/):官方文档 - [2025 Web3 入门教程](https://www.bilibili.com/video/BV1yHAneFEVc/):区块链+DApp+DeFi ## 阶段 4:智能合约开发(15-30 天,仅供参考) 智能合约开发是区块链应用的核心,通过 Solidity 编写运行在区块链上的自动化合约程序。 ### 学习目标 掌握智能合约开发,能够使用 Solidity 编写智能合约。 ### 知识点 **Solidity 基础【必学】:** - Solidity 语法 - 数据类型、函数、修饰符 - 继承和接口 - 事件和错误处理 **智能合约开发【必学】:** - 编写智能合约 - Remix IDE - Hardhat / Foundry 开发框架【建议学】 **智能合约安全【必学,重点】:** - 常见漏洞(重入攻击、整数溢出、权限控制) - 安全最佳实践 - OpenZeppelin 安全库 **智能合约测试和部署【必学】:** - 单元测试 - 部署到测试网 - 合约验证 ### 学习建议 1)Solidity 是以太坊的智能合约语言,语法类似于 JavaScript。Solidity 的学习曲线相对平缓,有编程基础的话很快就能上手。 2)智能合约安全非常重要!历史上发生过多次智能合约漏洞导致的资金损失事件,如 The DAO 事件、各种 DeFi 协议被黑等。一定要学习智能合约安全,使用 OpenZeppelin 等安全库,避免常见漏洞。 3)常见的智能合约漏洞包括: - 重入攻击:攻击者在函数执行完成前再次调用函数 - 整数溢出/下溢:Solidity 0.8+ 默认检查溢出 - 权限控制不当:任何人都能调用敏感函数 - 随机数不安全:使用可预测的随机数 ### 学习资源 - ⭐ [Solidity 官方文档](https://docs.soliditylang.org/):最权威的学习资料 - [智能合约开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756156976443394):完整路线 - [Solidity 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756223825260546):完整路线 - [WTF Solidity](https://github.com/AmazingAng/WTF-Solidity):Solidity 教程 ## 阶段 5:DApp 开发(10-25 天,仅供参考) DApp 开发是构建去中心化应用的过程,结合智能合约和前端技术实现完整的区块链应用。 ### 学习目标 掌握 DApp 开发,能够开发去中心化应用。 ### 知识点 **Web3.js / ethers.js【必学】:** - 连接以太坊网络 - 读取区块链数据 - 调用智能合约 - 发送交易 **DApp 前端开发【必学】:** - React / Vue + Web3 - 钱包连接(MetaMask) - 合约交互 - 交易签名 **IPFS【建议学】:** - 去中心化存储 - IPFS 的使用 ### 学习建议 1)DApp(去中心化应用)= 智能合约(后端)+ Web3 前端。智能合约运行在区块链上,前端通过 Web3.js 或 ethers.js 和智能合约交互。 2)ethers.js 和 web3.js 是两大主流的以太坊 JavaScript 库。ethers.js 更轻量、更现代,建议优先学习 ethers.js。 3)DApp 的前端开发和传统 Web 开发类似,主要区别是需要连接钱包、调用智能合约。要学习如何集成 MetaMask。 4)详细的 Web3 开发学习路线可以参考:[Web3 开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756186445623297) 5)安全提醒!DApp 开发要注意前端安全,如防止钓鱼网站、保护用户私钥、验证交易参数等。用户在 DApp 中签名交易时,要确保交易内容是预期的。 ### 学习资源 - ⭐ [2025 Web3 开发学习路线](https://learnblockchain.cn/article/10152):完整指南 - [Web3 开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756186445623297):完整路线 - [ethers.js 教程](https://github.com/xjh22222228/ethers-tutorial):快速入门 ## 阶段 6:项目实战(20-60 天,仅供参考) ### 学习目标 通过实际项目巩固所学知识,积累区块链项目经验。 ### 学习建议 1)从简单项目开始:如 ERC-20 代币、简单的 NFT 合约等,熟悉智能合约开发流程。 2)开发完整的 DApp:开发一个完整的 DApp(如去中心化投票、NFT 市场、简单的 DeFi 协议),体验前后端开发。 3)参加开源项目:GitHub 上有很多优秀的区块链开源项目,可以学习其代码和架构。 4)关注安全:开发智能合约时,一定要进行安全审计,使用测试覆盖所有场景,避免漏洞。 5)安全提醒! - 在主网部署前,一定要在测试网充分测试 - 考虑进行专业的智能合约安全审计 - 了解常见的攻击模式和防御方法 - 永远不要在代码中硬编码私钥 - 使用多签钱包管理重要资产 ### 项目推荐 **入门级项目:** - ERC-20 代币合约 - 简单的 NFT(ERC-721) - 简单的投票系统 - 众筹合约 **进阶级项目:** - NFT 市场(OpenSea 克隆) - 去中心化交易所(DEX) - DeFi 借贷协议 - DAO 治理系统 **优质开源项目:** - ⭐ [Awesome Solidity Projects](https://github.com/0xisk/awesome-solidity-projects):Solidity 智能合约优秀项目索引 - [Full Blockchain Solidity Course](https://github.com/smartcontractkit/full-blockchain-solidity-course-js):32k+ stars,从零到专家的区块链 Solidity 完整课程 - [Beginner Solidity Projects](https://github.com/zubairahm3d/Beginner-Level-Solidity-Projects):100 个适合初学者的以太坊智能合约项目 - [Web3 Blockchain App](https://gist.github.com/adrianhajdin/5f6cc61fa04de7b8fa250eb295db62fd):现代 Web 3.0 区块链应用开发实战 ### 学习资源 - [DApp 开发教程](https://blog.chain.link/how-to-build-a-dapp-zh/):三个步骤 - [区块链 DApp 学习路线](https://github.com/Eternaldeath/BlockchainHome):可执行路线 ## 阶段 7:求职备战(面试前 1 个月突击) ### 学习目标 熟练掌握区块链开发常见面试题,准备好简历和项目经历,顺利通过面试。 ### 学习建议 1)打磨简历和项目:简历上一定要有区块链项目经历,如开发过的智能合约、DApp 等。建议使用 [老鱼简历](https://www.laoyujianli.com/) 制作简历,关于如何写好简历,推荐学习鱼皮的 [保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425)。 ![老鱼简历网站简历模板大全](https://pic.code-nav.cn/migrate_image/676fb3480c37a3e017b45c83d6c2b9fa.webp) 2)准备项目经历:面试时一定会问区块链项目经历,要能够清楚地介绍项目的架构、使用的技术、合约的设计、安全措施等。 更多求职干货:[编程导航求职干货分享](https://www.codefather.cn/learn?category=76&type=2) ### 经典面试题 **区块链基础:** 1. 什么是区块链?有什么特点? 2. 区块链和数据库有什么区别? 3. 什么是共识机制?PoW 和 PoS 有什么区别? 4. 什么是分叉?硬分叉和软分叉有什么区别? **密码学:** 1. 什么是哈希函数?有什么特性? 2. 什么是非对称加密?公钥和私钥有什么作用? 3. 什么是数字签名?如何验证? 4. 什么是 Merkle 树? **以太坊:** 1. 以太坊和比特币有什么区别? 2. 什么是智能合约? 3. 什么是 Gas?为什么需要 Gas? 4. EOA 和合约账户有什么区别? **智能合约:** 1. Solidity 有什么特点? 2. 智能合约的常见漏洞有哪些? 3. 如何防止重入攻击? 4. 如何优化 Gas 消耗? ### 面试题库 - ⭐ [区块链开发面试题 - 面试鸭](https://www.mianshiya.com/bank/1991435060468776961) ### 求职资源 - ⭐ [鱼皮的保姆级求职指南](https://www.codefather.cn/course/job):从简历到面试的完整指南 - ⭐ [鱼皮的保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425):如何写出高质量简历 - [编程导航的求职干货分享](https://www.codefather.cn/learn?category=76&type=2):求职经验和技巧 - [老鱼简历](https://www.laoyujianli.com/):写简历工具 + 简历模板大全 - [真实面经大全](https://www.codefather.cn/job/experience):了解真实的面试流程 - [几百场真实面试视频](https://www.codefather.cn/mockInterview):观看他人的面试过程 - [1 对 1 模拟面试](https://ai.mianshiya.com/):AI 模拟面试练习 - [面试题讲解视频](https://space.bilibili.com/3546383483144655):面试鸭官方题解 ## 持续学习资源 ### 知识总结 - ⭐ [编程导航](https://www.codefather.cn/):学习路线、项目教程、面试题、编程资源一站式平台 - [智能合约开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756156976443394):完整的智能合约路线 - [Web3 开发学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756186445623297):完整的 Web3 路线 - [Solidity 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756223825260546):完整的 Solidity 路线 ### 区块链资源 - [以太坊官网](https://ethereum.org/zh/):官方网站 - [登链社区](https://learnblockchain.cn/):中文区块链社区 ### 技术博客 - [Ethereum Foundation Blog](https://blog.ethereum.org/):以太坊基金会官方博客 - [ConsenSys Blog](https://consensys.io/blog):区块链技术领先公司 - [Coinbase Blog](https://www.coinbase.com/blog):Coinbase 技术博客 - [Blockchain at Berkeley](https://blockchain.berkeley.edu/):伯克利区块链研究 ## 写在最后 区块链是一项革命性的技术,正在深刻改变互联网的架构和商业模式。区块链开发是一个充满机遇和挑战的领域,从 DeFi 到 NFT,从 DAO 到 GameFi,区块链应用层出不穷。 学习区块链开发要先理解区块链原理和密码学基础,然后学习以太坊和智能合约开发。重点学习 Solidity,掌握智能合约的编写和安全。多做实战项目,在测试网络上练习,积累区块链开发经验。 鱼皮再次提醒!区块链和加密货币领域存在较高的安全风险和法律风险。要注重安全意识,保护好私钥,**不要参加非法活动**。智能合约一旦部署无法修改,要充分测试和审计。同时要了解当地的法律法规,确保合规开发。 希望这份学习路线能够帮助大家少走弯路,更高效地掌握区块链开发。 加油小伙伴们 💪🏻! ![](https://pic.code-nav.cn/migrate_image/37c674b13cd1953a8903a08c48496ade.jpeg) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

Shell 脚本学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) Shell 脚本求职高频面试题:[开始刷题](https://www.mianshiya.com/bank/1812067519566053377) ## 开篇介绍 ### Shell 脚本是什么? Shell 是 Linux/Unix 系统的命令行解释器,Shell 脚本就是由 Shell 命令组成的可执行文件。通过编写 Shell 脚本,我们可以将一系列命令组合起来,实现自动化任务,大大提高工作效率。 Shell 脚本广泛应用于系统管理、自动化运维、数据处理、软件部署等场景。比如自动备份数据库、批量处理文件、定时执行任务、监控系统状态、自动化部署应用等,这些工作都可以通过 Shell 脚本来完成。 ### 为什么要学 Shell 脚本? 对于运维工程师来说,Shell 脚本是必备技能;对于后端开发工程师来说,Shell 脚本能够帮助你快速完成一些自动化任务,提高开发效率。而且 Shell 脚本的学习成本相对较低,语法简单,几天时间就能掌握基础用法。 在 AI 时代,虽然有了很多自动化工具和平台,但 Shell 脚本仍然是最灵活、最高效的自动化方案。而且现在可以使用 AI 工具(比如 ChatGPT、Gemini、DeepSeek)帮你生成 Shell 脚本,大大降低了学习门槛。 ### 学习前提 学习 Shell 脚本需要具备基本的 Linux 命令行知识。如果你还不熟悉 Linux 命令,可以查看 [Linux 服务器学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990755996393320449)。 ### 学习路线图 ![Shell 脚本学习路线思维导图](https://pic.code-nav.cn/migrate_image/dccaa1e671ddb310d4f1f0acb3838a6e.webp) ## 整体学习建议 1)边学边练:Shell 脚本的学习必须结合实践,要多写脚本、多调试。建议在 Linux 系统或 macOS(内置 Bash)上练习。 ![](https://pic.code-nav.cn/migrate_image/6debca3bc5f7e5ed9fb34003efc45a75.webp) 或者利用 [Shell playground 在线工具](https://codapi.org/shell/) 随时随地练习: ![](https://pic.code-nav.cn/migrate_image/27c1daa9d4c4bb4294ba1f5f471b582b.webp) 2)从简单到复杂:不要一开始就写复杂的脚本,先从简单的任务开始(如打印文本、创建文件),逐步增加复杂度。 3)善用 AI 工具:遇到不懂的命令或错误,可以让 AI 工具(如 ChatGPT)帮你解释和调试。可以到鱼皮的 [AI 资源大全](https://ai.codefather.cn/) 中看看有没有适合你的工具。 ![AI资源大全网站](https://pic.code-nav.cn/migrate_image/e9c72abafc0b976b0c1c69c56f1b74d9.webp) 4)学习 awk 和 sed:awk 和 sed 是 Shell 脚本中常用的文本处理工具,功能强大,建议重点学习。 5)注意 Shell 的选择:本路线以 Bash 为主,这是 Linux 系统最常用的 Shell。其他 Shell(如 Zsh、Fish)的语法略有不同。 ## 阶段 1:Shell 基础(1-5 天) ### 学习目标 理解 Shell 脚本的基本概念,掌握 Shell 脚本的编写和执行方法。 ### 知识点 **Shell 基础【必学】:** - 什么是 Shell - 常见的 Shell 类型(Bash、Zsh、Ksh、Csh) - Shebang(#!/bin/bash) - 脚本的执行方式(bash script.sh、./script.sh、source script.sh) - 脚本权限(chmod +x) **注释【必学】:** - 单行注释(#) - 多行注释(:<<'COMMENT' ... COMMENT) **输出【必学】:** - echo 命令 - printf 命令 **输入【必学】:** - read 命令 - 命令行参数($1、$2、$@、$#) ### 学习重点 1)Shebang(`#!/bin/bash`)必须放在脚本的第一行,告诉系统使用哪个解释器来执行脚本。 2)脚本执行方式的区别:`bash script.sh` 会创建新的子进程执行脚本,`source script.sh` 在当前进程执行脚本,变量会保留。 3)建议养成良好的编码习惯,每个脚本都要添加注释,说明脚本的功能、作者、日期等。 ### 学习资源 - [尚硅谷 Linux、Shell 教程](https://www.bilibili.com/video/BV1WY4y1H7d3) - [Shell 编程从入门到精通](https://cloud.tencent.com/developer/article/1763225):完整教程 ### 示例脚本 ```bash #!/bin/bash # 第一个 Shell 脚本 # 作者:鱼皮 # 日期:2025-11-15 echo "Hello, Shell!" echo "当前用户:$USER" echo "当前目录:$(pwd)" ``` ## 阶段 2:变量和参数(1-5 天) ### 学习目标 掌握 Shell 变量的定义和使用,理解特殊变量的含义。 ### 知识点 **变量定义【必学】:** - 变量定义(无空格:name="value") - 使用变量($name 或 ${name}) - 只读变量(readonly) - 删除变量(unset) **变量类型【必学】:** - 局部变量 - 环境变量(export) - Shell 变量 **特殊变量【必学】:** - $0:脚本名称 - $1、$2...:位置参数 - $#:参数个数 - $@:所有参数(列表形式) - $*:所有参数(字符串形式) - $?:上一条命令的退出状态 - $$:当前进程 ID **字符串操作【建议学】:** - 字符串拼接 - 获取字符串长度(${#string}) - 提取子字符串(${string:start:length}) - 字符串替换(${string/old/new}) **数组【建议学】:** - 定义数组(arr=(1 2 3)) - 访问数组元素(${arr[0]}) - 获取数组长度(${#arr[@]}) - 遍历数组 ### 学习重点 1)变量定义时等号两边不能有空格,这是 Shell 的语法规则。`name="value"` 是正确的,`name = "value"` 会报错。 2)使用变量时建议加花括号 `${name}`,这样可以避免歧义,特别是在字符串拼接时。 3)特殊变量非常重要,`$?` 可以用来判断命令是否执行成功(0 表示成功,非 0 表示失败)。 ### 示例脚本 ```bash #!/bin/bash # 变量和参数示例 # 定义变量 name="编程导航" age=5 # 使用变量 echo "网站名称:${name}" echo "运营年限:${age}年" # 命令行参数 echo "脚本名称:$0" echo "第一个参数:$1" echo "参数个数:$#" echo "所有参数:$@" # 字符串操作 url="https://www.codefather.cn" echo "URL 长度:${#url}" echo "域名:${url:8}" # 数组 sites=("编程导航" "面试鸭" "SQL自学网") echo "第一个网站:${sites[0]}" echo "网站数量:${#sites[@]}" ``` ## 阶段 3:流程控制(2-7 天) ### 学习目标 掌握 Shell 脚本的流程控制语句,能够编写包含条件判断和循环的脚本。 ### 知识点 **条件判断【必学】:** - test 命令 - `[ ]` 表达式 - `[[ ]]` 表达式(推荐) - 文件判断(-e、-f、-d、-r、-w、-x) - 数值比较(-eq、-ne、-gt、-lt、-ge、-le) - 字符串比较(=、!=、-z、-n) - 逻辑运算(-a、-o、!) **if 语句【必学】:** - if...then...fi - if...then...else...fi - if...then...elif...else...fi **case 语句【必学】:** - case...in...esac **循环语句【必学】:** - for 循环(for i in list; do...done) - while 循环(while condition; do...done) - until 循环(until condition; do...done) - break 和 continue ### 学习重点 1)推荐使用 `[[ ]]` 而不是 `[ ]`,`[[ ]]` 功能更强大,支持正则匹配,而且不需要对变量加引号。 2)文件判断非常常用,如 `-f file` 判断文件是否存在且为普通文件,`-d dir` 判断目录是否存在。 3)for 循环可以遍历命令输出、数组、文件列表等,非常灵活。 ### 示例脚本 ```bash #!/bin/bash # 流程控制示例 # if 语句 age=20 if [[ $age -ge 18 ]]; then echo "已成年" else echo "未成年" fi # case 语句 read -p "请输入你的选择(1-3):" choice case $choice in 1) echo "你选择了选项1" ;; 2) echo "你选择了选项2" ;; 3) echo "你选择了选项3" ;; *) echo "无效选择" ;; esac # for 循环 echo "打印1到5:" for i in {1..5}; do echo $i done # while 循环 echo "倒计时:" count=5 while [[ $count -gt 0 ]]; do echo $count ((count--)) sleep 1 done echo "时间到!" # 遍历文件 echo "当前目录的文件:" for file in *; do if [[ -f $file ]]; then echo "文件:$file" fi done ``` ## 阶段 4:函数和文件操作(2-7 天) ### 学习目标 掌握 Shell 函数的定义和使用,学习常用的文件操作和文本处理工具。 ### 知识点 **函数【必学】:** - 函数定义(function name() { }) - 函数调用 - 函数参数($1、$2...) - 函数返回值(return) **文件操作【必学】:** - 读取文件(cat、head、tail、less、more) - 写入文件(> 覆盖、>> 追加) - 重定向(标准输入、标准输出、标准错误) **文本处理三剑客【必学,重点】:** - **grep**:搜索文本 - 基本用法(grep pattern file) - 正则表达式匹配 - 常用选项(-i 忽略大小写、-v 反向匹配、-n 显示行号、-r 递归搜索) - **sed**:文本替换和编辑 - 替换(sed 's/old/new/' file) - 删除行(sed '/pattern/d' file) - 插入行(sed 'i\text' file) - **awk**:文本分析和处理 - 基本用法(awk '{print $1}' file) - 内置变量($0 整行、$1第一列、NR行号、NF列数) - 条件和循环 **其他常用命令【建议学】:** - find:查找文件 - xargs:构建命令行 - cut:提取列 - sort:排序 - uniq:去重 - wc:统计行数/单词数/字符数 ### 学习建议 1)grep、sed、awk 被称为 “文本处理三剑客”,是 Shell 脚本中最重要的工具,一定要重点学习。 ![](https://pic.code-nav.cn/migrate_image/fdc568a279e4b493465759b7652c38f4.webp) 2)awk 功能非常强大,可以当作一门编程语言来学习。awk 特别适合处理结构化文本(如日志文件、CSV 文件)。 3)sed 主要用于文本替换和编辑,比如批量替换文件内容、删除特定行等。 4)这些工具一般通过管道(|)组合使用,实现复杂的文本处理任务。 ### 学习资源 - [Shell 自动化运维实战](https://comate.baidu.com/zh/page/ak43wjt9jkp):完整教程 - [运维三剑客实战](https://cloud.tencent.com/developer/article/2381804):grep、awk、sed ### 示例脚本 ```bash #!/bin/bash # 函数和文本处理示例 # 函数定义 function greet() { echo "Hello, $1!" } # 调用函数 greet "鱼皮" # 读取文件并统计行数 if [[ -f "/etc/passwd" ]]; then line_count=$(wc -l < /etc/passwd) echo "/etc/passwd 有 $line_count 行" fi # grep 示例:搜索包含 "root" 的行 echo "搜索 /etc/passwd 中的 root:" grep "root" /etc/passwd # awk 示例:提取第一列 echo "提取 /etc/passwd 的第一列:" awk -F: '{print $1}' /etc/passwd | head -5 # sed 示例:替换文本 echo "hello world" | sed 's/world/Shell/' # 管道组合:统计当前目录的文件数 echo "当前目录的文件数:" ls -l | grep "^-" | wc -l ``` ## 阶段 5:实战应用(3-10 天) ### 学习目标 通过实际案例掌握 Shell 脚本的实战技巧,能够编写实用的自动化脚本,比如系统监控、日志分析、自动化部署等场景。 ### 实战案例 现在有 AI 了,其实只要能看懂下面的脚本问题就不大~ **案例 1:系统监控脚本** ```bash #!/bin/bash # 系统监控脚本 echo "========== 系统信息 ==========" echo "主机名:$(hostname)" echo "内核版本:$(uname -r)" echo "运行时间:$(uptime -p)" echo "========== CPU 使用率 ==========" top -bn1 | grep "Cpu(s)" | awk '{print "CPU使用率:" 100-$8 "%"}' echo "========== 内存使用情况 ==========" free -h | grep "Mem" | awk '{print "总内存:" $2 "\n已用内存:" $3 "\n可用内存:" $4}' echo "========== 磁盘使用情况 ==========" df -h | grep "^/dev" ``` **案例 2:自动备份脚本** ```bash #!/bin/bash # 数据库备份脚本 # 配置 DB_NAME="mydb" DB_USER="root" DB_PASS="password" BACKUP_DIR="/backup/mysql" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.sql" # 创建备份目录 mkdir -p $BACKUP_DIR # 备份数据库 echo "开始备份数据库 $DB_NAME..." mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE # 检查备份是否成功 if [[ $? -eq 0 ]]; then echo "备份成功:$BACKUP_FILE" # 压缩备份文件 gzip $BACKUP_FILE echo "压缩完成:${BACKUP_FILE}.gz" # 删除7天前的备份 find $BACKUP_DIR -name "*.gz" -mtime +7 -delete echo "清理完成" else echo "备份失败!" exit 1 fi ``` **案例 3:批量处理文件** ```bash #!/bin/bash # 批量重命名图片文件 # 检查参数 if [[ $# -lt 1 ]]; then echo "用法:$0 <目录>" exit 1 fi DIR=$1 if [[ ! -d $DIR ]]; then echo "错误:目录不存在" exit 1 fi # 批量重命名 count=1 for file in $DIR/*.jpg; do if [[ -f $file ]]; then new_name="$DIR/image_$(printf "%03d" $count).jpg" mv "$file" "$new_name" echo "重命名:$file -> $new_name" ((count++)) fi done echo "处理完成,共重命名 $((count-1)) 个文件" ``` **案例 4:日志分析脚本** ```bash #!/bin/bash # 分析 Nginx 访问日志 LOG_FILE="/var/log/nginx/access.log" if [[ ! -f $LOG_FILE ]]; then echo "错误:日志文件不存在" exit 1 fi echo "========== Nginx 日志分析 ==========" # 统计总访问量 total=$(wc -l < $LOG_FILE) echo "总访问量:$total" # 统计访问最多的 IP echo "访问最多的 IP Top 10:" awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -rn | head -10 # 统计访问最多的 URL echo "访问最多的 URL Top 10:" awk '{print $7}' $LOG_FILE | sort | uniq -c | sort -rn | head -10 # 统计状态码分布 echo "HTTP 状态码分布:" awk '{print $9}' $LOG_FILE | sort | uniq -c | sort -rn ``` ### 学习建议 1)实战案例要结合实际需求,不要为了写脚本而写脚本。思考工作中有哪些重复性的任务可以用脚本自动化。 2)脚本要考虑错误处理,如检查文件是否存在、命令是否执行成功、参数是否正确等。 3)复杂的脚本要添加注释,方便自己和他人理解。 4)定时执行脚本可以使用 cron 定时任务,如每天凌晨 2 点执行备份脚本。 ## 求职备战 ### 学习建议 Shell 脚本一般不是单独的面试科目,而是作为 Linux 运维或后端开发岗位的一部分来考察。面试时可能会要求现场编写简单的 Shell 脚本,或者询问 Shell 脚本的相关知识。 1)准备常用脚本:准备几个常用的 Shell 脚本案例(如系统监控、自动备份、日志分析),能够快速说出脚本的功能和实现思路。 2)掌握文本处理三剑客:grep、sed、awk 是面试的高频考点,要能够熟练使用。 3)理解脚本的执行流程:要理解 Shell 脚本的执行过程,如 Shebang 的作用、变量的作用域、管道的工作原理等。 ### 经典面试题 1. Shell 脚本的第一行 #!/bin/bash 有什么作用? 2. source、sh、bash、./ 执行脚本有什么区别? 3. $# 和 $@ 有什么区别? 4. 如何判断一个文件是否存在? 5. 如何在 Shell 脚本中捕获命令的输出? 6. grep、sed、awk 各有什么特点?如何选择? 7. 如何在 Shell 脚本中实现异常处理? ### 面试题库 - [Shell 面试题 - 面试鸭](https://www.mianshiya.com/bank/1812067519566053377) - [Linux 系统面试题 - 面试鸭](https://www.mianshiya.com/bank/1812067560819048449) ![面试鸭刷题神器热门八股文](https://pic.code-nav.cn/migrate_image/a07730d4409a37f3c6cc40d8f1681de5.webp) ### 求职资源 - [鱼皮的保姆级求职指南](https://www.codefather.cn/course/job):从简历到面试的完整指南 - [编程导航的求职干货分享](https://www.codefather.cn/learn?category=76&type=2):求职经验和技巧 ## 持续学习资源 ### 学习网站 - ⭐ [编程导航](https://www.codefather.cn/):学习路线、项目教程、面试题 - [Linux 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990755996393320449):完整的 Linux 学习路线 ### 技术博客 - [Linux Journal](https://www.linuxjournal.com/):Linux 和 Shell 技术 - [Red Hat Blog](https://www.redhat.com/en/blog):Red Hat 系统管理 - [Ubuntu Blog](https://ubuntu.com/blog):Ubuntu 官方博客 ### Shell 脚本库 - [awesome-shell](https://github.com/alebcay/awesome-shell):Shell 资源大全 - [pure-bash-bible](https://github.com/dylanaraps/pure-bash-bible):Bash 技巧集合 ## 总结 Shell 脚本是 Linux/Unix 系统管理和自动化运维的重要工具,虽然语法相对简单,但功能非常强大。通过编写 Shell 脚本,我们可以将重复性的工作自动化,大大提高工作效率。 学习 Shell 脚本不需要深入学习所有特性,掌握基础语法、流程控制、文本处理三剑客(grep、sed、awk)就足够应对大部分场景。重要的是要多写脚本、多实践,结合实际工作需求来学习。 在 AI 时代,虽然有了很多自动化工具,但 Shell 脚本仍然是最灵活、最高效的自动化方案。而且现在可以使用 AI 工具帮你生成和调试 Shell 脚本,学习起来更加轻松。 希望这份学习路线能够帮助大家快速掌握 Shell 脚本,提升工作效率。 加油小伙伴们 💪🏻! ![](https://pic.code-nav.cn/migrate_image/66a502034e18abab9a459c9b237957f4.jpeg) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

正则表达式学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) ## 开篇介绍 正则表达式(Regular Expression,简称 Regex 或 RE)是一种用于描述字符串匹配规则的强大工具,广泛应用于文本搜索、内容替换、格式验证、信息提取等场景。几乎所有编程语言都支持正则表达式,无论是 Python、JavaScript、Java、C++,还是命令行工具(grep、sed、awk),正则表达式都是不可或缺的技能。 ![](https://pic.code-nav.cn/migrate_image/e7275364269a4465b8585bb5cfa7c24c.webp) **为什么要学正则表达式?** 在实际开发中,我们经常需要处理文本数据,如验证用户输入的手机号、邮箱格式,从日志文件中提取关键信息,批量替换代码中的特定模式等。使用正则表达式,一行代码就能完成原本需要几十行代码才能实现的功能,大大提升开发效率。 正则表达式的学习曲线相对陡峭,语法看起来像乱码,但只要掌握了基本规则和常用模式,就能在各种场景下得心应手地使用。 虽然已经到了 AI 时代,但正则表达式仍然是文本处理的利器,即使有了 AI 辅助工具来生成代码,理解正则表达式的原理也能让你更好地利用这些工具。 正则表达式的使用稍有不当,就有可能造成大 Bug。鱼皮自己的团队就出现过,血泪经验啊! ## 学习路线图 ![正则表达式学习路线思维导图](https://pic.code-nav.cn/migrate_image/8b351549ab3f656bb308681ccf5ad318.webp) ## 学习建议 1)边学边练:正则表达式的学习必须结合实践,建议使用在线测试工具,如 [在线正则表达式测试](https://tool.oschina.net/regex/),边学边测试。 2)从简单到复杂:不要一开始就学习复杂的正则表达式,先从简单的匹配开始,逐步增加复杂度。 3)理解而不是死记:正则表达式的语法虽然多,但都有其逻辑。要理解每个元字符的含义,而不是死记硬背正则表达式。 4)掌握常用模式:很多场景下的正则表达式是固定的(如邮箱、手机号、URL),可以直接使用现成的正则表达式模板,不需要从零编写。 5)善用 AI 工具:遇到复杂的正则表达式,可以让 AI 工具(如 ChatGPT、豆包等)帮你生成和解释。你可以在鱼皮的 [AI 资源大全](https://ai.codefather.cn/) 中找到很多工具。 ![AI资源大全网站](https://pic.code-nav.cn/migrate_image/e9c72abafc0b976b0c1c69c56f1b74d9.webp) ## 阶段 1:基础语法(1-3 天) ### 知识点 **字符匹配【必学】:** - 普通字符:直接匹配,如 `abc` 匹配 "abc" - 特殊字符(元字符):需要转义,如 `\.` 匹配 "." **元字符【必学】:** - `.`:匹配任意单个字符(换行符除外) - `\d`:匹配数字,等价于 `[0-9]` - `\D`:匹配非数字 - `\w`:匹配字母、数字、下划线,等价于 `[A-Za-z0-9_]` - `\W`:匹配非字母数字下划线 - `\s`:匹配空白字符(空格、制表符、换行符等) - `\S`:匹配非空白字符 **数量限定符【必学】:** - `*`:匹配前面的字符 0 次或多次 - `+`:匹配前面的字符 1 次或多次 - `?`:匹配前面的字符 0 次或 1 次 - `{n}`:匹配前面的字符恰好 n 次 - `{n,}`:匹配前面的字符至少 n 次 - `{n,m}`:匹配前面的字符至少 n 次,至多 m 次 **位置匹配【必学】:** - `^`:匹配字符串开始位置 - `$`:匹配字符串结束位置 - `\b`:匹配单词边界 - `\B`:匹配非单词边界 ### 学习资源 - [廖雪峰 - 正则表达式](https://liaoxuefeng.com/books/python/reg-exp/index.html):简洁易懂 - [Regex Learn](https://regexlearn-com.vercel.app/zh):交互式学习 ### 在线工具 - ⭐ [在线正则表达式测试 - OSChina](https://tool.oschina.net/regex/) ## 阶段 2:常用模式(1-3 天) ### 知识点 **字符类【必学】:** - `[abc]`:匹配 a、b 或 c - `[^abc]`:匹配除 a、b、c 之外的字符 - `[a-z]`:匹配小写字母 - `[A-Z]`:匹配大写字母 - `[0-9]`:匹配数字 **分组和引用【必学】:** - `(pattern)`:捕获分组 - `(?:pattern)`:非捕获分组 - `\1`、`\2`:反向引用,引用第 1、2 个捕获分组 **逻辑运算【必学】:** - `|`:或运算,如 `cat|dog` 匹配 "cat" 或 "dog" **贪婪和非贪婪【建议学】:** - 贪婪模式(默认):尽可能多地匹配,如 `.*` 会匹配尽可能多的字符 - 非贪婪模式:尽可能少地匹配,在量词后加 `?`,如 `.*?` 会匹配尽可能少的字符 ### 常用正则表达式模板 不用记忆!简单过一遍就好了。 **数字验证:** - 整数:`^-?\d+$` - 正整数:`^\d+$` - 浮点数:`^-?\d+\.\d+$` **字符串验证:** - 手机号(11 位):`^1[3-9]\d{9}$` - 邮箱:`^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$` - URL:`^https?://[^\s]+$` - IPv4 地址:`^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$` - 身份证号(18 位):`^\d{17}[\dXx]$` **日期验证:** - 日期(YYYY-MM-DD):`^\d{4}-\d{2}-\d{2}$` - 时间(HH:MM:SS):`^\d{2}:\d{2}:\d{2}$` **中文字符:** - 中文字符:`[\u4e00-\u9fa5]` - 中文字符串:`^[\u4e00-\u9fa5]+$` ### 学习资源 - [常用正则表达式大全](https://tool.oschina.net/regex/):OSChina 整理 ## 阶段 3:高级特性(1-2 天,可选) ### 知识点 **前瞻和后顾【可不学】:** - `(?=pattern)`:正向前瞻,匹配后面是 pattern 的位置 - `(?!pattern)`:负向前瞻,匹配后面不是 pattern 的位置 - `(?<=pattern)`:正向后顾,匹配前面是 pattern 的位置 - `(?<!pattern)`:负向后顾,匹配前面不是 pattern 的位置 **修饰符【建议学】:** - `i`:忽略大小写 - `g`:全局匹配 - `m`:多行模式 - `s`:单行模式(. 匹配换行符) **命名分组【可不学】:** - `(?<name>pattern)`:命名捕获分组 - `\k<name>`:引用命名分组 ### 学习建议 高级特性在日常开发中使用较少,可以先了解概念,需要时再深入学习。前瞻和后顾主要用于复杂的匹配场景,如密码强度验证(必须包含大小写字母、数字、特殊字符)。 ## 阶段 4:实战应用(1-3 天) 这个阶段主要给大家分享几个例子,其实没必要专门学习,直接在自己的项目中实战就好了。 ### Python 中使用正则表达式 ```python import re # 匹配 text = "我的手机号是 13800138000" pattern = r"1[3-9]\d{9}" result = re.search(pattern, text) if result: print(result.group()) # 输出:13800138000 # 查找所有匹配 text = "手机号:13800138000,18912345678" results = re.findall(pattern, text) print(results) # 输出:['13800138000', '18912345678'] # 替换 text = "联系方式:13800138000" new_text = re.sub(r"1[3-9]\d{9}", "***", text) print(new_text) # 输出:联系方式:*** # 分割 text = "apple,banana;orange" result = re.split(r"[,;]", text) print(result) # 输出:['apple', 'banana', 'orange'] ``` ### JavaScript 中使用正则表达式 ```javascript // 匹配 const text = "我的手机号是 13800138000"; const pattern = /1[3-9]\d{9}/; const result = text.match(pattern); console.log(result[0]); // 输出:13800138000 // 查找所有匹配 const pattern2 = /1[3-9]\d{9}/g; const results = text.match(pattern2); console.log(results); // 输出:['13800138000'] // 替换 const newText = text.replace(/1[3-9]\d{9}/g, "***"); console.log(newText); // 输出:我的手机号是 *** // 测试 const isValid = /1[3-9]\d{9}/.test("13800138000"); console.log(isValid); // 输出:true ``` ### 实战案例 **案例 1:验证邮箱格式** ```python import re def validate_email(email): pattern = r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$' return re.match(pattern, email) is not None print(validate_email("test@example.com")) # True print(validate_email("test@")) # False ``` **案例 2:提取日志中的 IP 地址** ```python import re log = "2025-01-15 10:30:45 访问者IP: 192.168.1.100" pattern = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' ip = re.search(pattern, log) if ip: print(ip.group()) # 192.168.1.100 ``` **案例 3:脱敏手机号** ```python import re phone = "13800138000" masked = re.sub(r'(\d{3})\d{4}(\d{4})', r'\1****\2', phone) print(masked) # 138****8000 ``` ### 学习资源 - [Python 正则表达式详解](https://liaoxuefeng.com/books/python/reg-exp/index.html):完整教程 - [正则表达式实战案例](https://comate.baidu.com/zh/page/67i8erbq5tm):实际应用 ## 常见问题 **Q1:正则表达式为什么这么难?** A:正则表达式的语法比较抽象,看起来像乱码。但只要理解了每个元字符的含义,多练习几次就能掌握。建议从简单的正则开始,逐步增加复杂度。 **Q2:如何调试正则表达式?** A:使用在线测试工具(如 Regex101)可以实时查看匹配结果,并且能看到每个部分的匹配过程。这对调试正则表达式非常有帮助。 **Q3:正则表达式的性能如何优化?** A:1)避免使用过多的回溯(如嵌套的 `*` 和 `+`);2)使用非捕获分组 `(?:)` 代替捕获分组 `()`;3)将简单的字符串匹配放在前面;4)使用具体的字符类代替 `.`。 **Q4:需要记住所有正则表达式吗?** A:不需要。常用的正则表达式模式(如邮箱、手机号、URL)可以直接使用现成的模板。遇到复杂的正则,可以查阅文档或使用 AI 工具生成。 ## 持续学习资源 ### 在线工具 - ⭐ [Regex101](https://regex101.com/):强大的正则测试工具,支持多种语言 - [在线正则表达式测试 - OSChina](https://tool.oschina.net/regex/):提供常用正则模板 ### 学习网站 - ⭐ [Regex Learn](https://regexlearn-com.vercel.app/zh):交互式学习,适合新手 - [正则表达式 30 分钟入门](http://www.runoob.com/w3cnote/regular-expression-30-minutes-tutorial.html):经典教程 - [廖雪峰 - 正则表达式](https://liaoxuefeng.com/books/python/reg-exp/index.html):Python 正则教程 ### 正则表达式手册 - [Python re 模块文档](https://docs.python.org/zh-cn/3/library/re.html):官方文档 - [JavaScript 正则表达式](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions):MDN 文档 ## 最后 正则表达式是文本处理的利器,虽然语法看起来复杂,但只要掌握了基本规则和常用模式,就能在各种场景下游刃有余。正则表达式不需要深入学习所有特性,掌握基础语法和常用模式就足够应对大部分开发场景。 在 AI 时代,正则表达式仍然是不可替代的工具。即使有了 AI 辅助,理解正则表达式的原理也能让你更好地利用这些工具,提升开发效率。 建议大家多使用在线测试工具进行练习,遇到复杂的正则可以让 AI 工具帮忙生成和解释。希望这份学习路线能够帮助大家快速掌握正则表达式。 ![](https://pic.code-nav.cn/migrate_image/66a502034e18abab9a459c9b237957f4.jpeg) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

Linux 服务器学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) Linux 服务器求职高频面试题:[开始刷题](https://www.mianshiya.com/bank/1812067560819048449) ⭐️ 建议先观看鱼皮的视频入门:[https://www.bilibili.com/video/BV1ev411G7VE/](https://www.bilibili.com/video/BV1ev411G7VE/) ## 开篇介绍 相比于 Windows,Linux 免费、开源、安全、灵活、稳定、便于开发,所以更受企业青睐,甚至 **90% 以上** 的企业应用都是用 Linux 服务器部署的。 无论是前端、后端、算法、测试、运维等计算机相关岗位的同学,都建议学习 Linux,大有裨益。 ### 学习境界 首先,Linux 入门很简单,但想学的透彻难上加难! 因此,在学习之前要明确目标。 鱼皮把 Linux 的学习分为几种境界: 1. 明劲,就是了解 Linux 的基本概念,会敲常用命令来应对工作。对于大多数想从事开发和运维岗位的同学,学到这就足够找到工作了。 2. 暗劲,又分为两种境界,能理解 Linux 尤其是其内核的设计思想,为小圆满;能将其思想应用到系统的架构设计中,为大圆满。暗劲境界的高手,冲击大厂、做架构师、从事底层开发,都不成问题。 3. 化劲,可谓出神入化,不仅熟知 Linux 的使用、思想和细节,更能推陈出新,自主创造新的系统。 当然,一般情况下,会用就够了,想进大厂最好也学习一些内核的设计思想。找到工作后,是否要深入学习完全取决于你自己。 ### 学习路线图 ![Linux 服务器学习路线思维导图](https://pic.code-nav.cn/migrate_image/b4f7d3a7a45abb5cea607820641377f4.png) ## 整体学习建议 1)多动手实践:建议自己购买一台云服务器(学生机一年才几十块钱),或者在本地搭建 Linux 虚拟机环境。一定要自己从 0 开始手敲命令安装软件、部署服务,熟悉整个项目的上线流程。 2)每个命令至少敲一遍:了解常用命令的作用,通过自然的练习熟悉它们。记不住没关系,用文档查就行了。 3)先会用,再理解。不要一开始就去深入学习 Linux 内核,虽说学会了的确大有裨益,但性价比不高。先把常用命令学会,能在工作中使用就够了。 4)利用 AI 辅助学习:遇到不懂的 Linux 命令,可以问 AI 工具(如 ChatGPT、Kimi)让它解释;忘记命令参数,也可以让 AI 帮你生成完整的命令。更多 AI 工具推荐可以看 [AI 资源导航网站](https://ai.codefather.cn/)。 ![AI资源大全网站](https://pic.code-nav.cn/migrate_image/e9c72abafc0b976b0c1c69c56f1b74d9.webp) 5)时间不多可以看面试题:如果时间不多的话,可以通过面试题来了解一些 Linux 设计思想,而不是直接去深入学习内核。 ## 学习路线 ### Linux 基础知识 - 发展历史 - ⭐ 特点和优势 - 应用场景 - ⭐ 常见 Linux 系统版本(推荐 CentOS 7+) - ⭐ CentOS - ⭐ Ubuntu - Debian - Fedora - 何为开源? ### Linux 环境 - 搭建方式 - ⭐ 虚拟机 - ⭐ 云服务器 - 在线工具 - WSL - Docker 容器 - 远程连接 - ⭐ SSH - 连接工具 - ⭐ XShell - ⭐ MobaXterm - SecureCRT - Putty ### Linux 常用命令 此处只列举命令名称,命令的具体用法可直接在 [命令大全手册](https://www.linuxcool.com/) 中查询。 #### 系统信息 - uname 查看系统信息 - hostname 查看主机名 - cat /proc/cpuinfo 查看 CPU 信息 - lsmod 查看已加载的系统模块 - top 查看系统使用情况 - df 查看磁盘使用情况 - fdisk 查看磁盘分区 - du 查看目录使用情况 - iostat 查看 I / O 使用情况 - free 显示系统内存情况 - env 查看环境变量 - uptime 查看系统运行时间、用户数、负载 #### 系统操作 - shutdown 关机 - reboot 重启 - mount 挂载设备 - umount 卸载设备 #### 用户相关 - su 切换用户 - sudo 以管理员身份执行 - who 查看当前用户名 - ssh 远程连接 - logout 注销 - useradd 创建用户 - userdel 删除用户 - usermod 修改用户 - groupadd 创建用户组 - groupdel 删除用户组 - groupmod 修改用户组 - passwd 修改密码 - last 显示用户或终端的登录情况 #### 文件相关 - cd 切换目录 - ls 查看目录列表 - tree 打印目录树 - mkdir 创建目录 - rm 删除目录 - touch 新建文件 - cp 复制文件 - mv 移动文件 - ln 创建文件链接 - find 搜索文件 - locate 定位文件 - whereis 查看可执行文件路径 - which 在 PATH 指定的路径中,搜索某系统命令的位置 - chmod 设置目录权限 - cat / more / less 查看文件 - tac 倒序查看文件 - head / tail 查看文件开头 / 结尾 - paste 合并文件 - zip / tar / gzip 压缩文件 - unzip / tar / gunzip 解压文件 - grep / sed / awk 文本处理 - vim 文本编辑 #### 程序相关 - crontab 计划任务 - nohup 后台运行程序 - jobs 查看系统任务 - ps 查看进程 - kill 杀死进程 - rpm / yum / apt / apt-get / dpkg 软件包管理 - service / systemctl 服务管理 #### 网络相关 - ifconfig 查看网络属性 - netstat 查看网络状态 - iptables 查看 iptables 规则 #### 其他 - date 显示系统时间 - cal 显示日历 - history 显示和操作历史 - help 帮助 - alias 别名 ### 用户管理 - 用户 - 用户组 - ACL 权限管理 - 用户切换 - 管理员 ### 文件管理 - 文件操作 - 创建 - 修改 - 复制 - 移动 - 删除 - 文件浏览 - 文件搜索 - 文件权限 - 软硬链接 - 压缩 / 解压 ### 文本操作 - 正则表达式 - grep - sed - awk ### VIM 编辑器 - 基本操作 - 模式 - 快捷键 - VIM 定制 - 插件增强 送张 VIM 键盘图: ![](https://pic.code-nav.cn/migrate_image/29b24b4b48f0d97f6abcbc6f134064e3.webp) ### 磁盘管理 - 使用情况查询 - 磁盘分区 - 挂载 ### 驱动管理 - 驱动加载 - 驱动更新 - 网卡 - 显卡 ### 进程管理 - 启动进程 - 杀死进程 - 查看进程 - 前台 / 后台任务 - 进程监控 ### 计划任务 - crond 服务 - crontab 命令 ### 网络管理 - IP - 端口 - 主机名 - hosts - 网络配置 - 网络状态 - 网络监控 ### 系统管理 - 系统设置 - 日期时间 - 语言 - 字符集 - 系统服务 - 环境变量 - 日志 - 系统关机 / 重启 - 数据备份和恢复 ### 服务管理 - 服务查看 - 启动服务 - 禁用服务 - 删除服务 - 开机自启 ### 软件管理 - 软件包管理器 - ⭐ rpm - ⭐ yum - apt - apt-get - dpkg - 软件安装 - 软件更新 - 软件卸载 - 源码安装 ### 常用软件 / 服务搭建 - HTTP - Mail - NFS - DNS - FTP - mysql - LVS + Keepalived - Apache - Nginx - Redis - 日志服务 ### Shell 脚本编程 关于 Shell 脚本的详细学习,可以查看 [Shell 脚本学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990756051800076290) - 默认变量 - 运算符 - 条件 - 循环 - 执行 - 函数 - 系统函数 - 自定义函数 - 规范 - 调试方法 - 管道 - I/O 重定向 ### Linux 启动过程 - BIOS 启动引导 - 引导加载程序 - 内核加载 - 系统初始化(init) - 运行级别 - 启动内核 - 执行初始化脚本 - 用户登录 ### Linux 内核 - 内核的组成 - 目录结构 - 版本 - 模块 - 编译 - 裁剪 ![](https://pic.code-nav.cn/migrate_image/e0d8c2426d239ca289b735e77fd37f58.webp) ### 第三方工具 - Ansible - Webmin - 宝塔 Linux ### 相关岗位 - 后端开发(Java / Go / C++) - 底层开发(C / C++) - 运维开发 - 大数据 - 云计算 - 自动化运维 - 嵌入式开发 - 网络工程师 ## 学习资源 ### 视频教程 - ⭐ [2025 最新黑马程序员 AI+Linux 云计算运维全套教程](https://www.bilibili.com/video/BV1heK3znEeH/):小白必学 - ⭐ [2021 韩顺平一周学会 Linux](https://www.bilibili.com/video/BV1Sv411r7vd):基于 CentOS 7.6,视频长度刚刚好,也比较完整 - [千锋 Linux 云计算基础视频教程 650 集入门](https://www.bilibili.com/video/BV1pz4y1D73n):很全面,适合时间足够、想认真学的同学 - [玩转 Vim 从放弃到爱不释手](https://www.imooc.com/learn/1129):好评很多 - [阿里云 Linux 运维学习路线](https://edu.aliyun.com/roadmap/linux):在线学习路线 ### 书籍 - ⭐ [《鸟哥的 Linux 私房菜 —— 基础篇》](http://cn.linux.vbird.org/linux_basic/linux_basic.php):经典书籍,必读 - [《深入理解 LINUX 内核》](https://book.douban.com/subject/1767120/):深入学习内核 - [《深入 Linux 内核架构》](https://book.douban.com/subject/4843567/):内核架构 - [《Linux 内核完全剖析》](https://book.douban.com/subject/3229243/):内核剖析 - [《Linux 内核设计与实现》](https://book.douban.com/subject/6097773/):内核设计 ### 在线实战 - ⭐ [蓝桥云课 Linux 基础入门](https://www.lanqiao.cn/courses/1):在线实战,强烈推荐 - [腾讯云动手实验室](https://cloud.tencent.com/developer/labs):云端实验环境 - [阿里云体验实验室](https://developer.aliyun.com/adc/labs/):在线动手实验 - [阿里云知行实验室](https://start.aliyun.com/):实验平台 - [华为云沙箱实验室](https://lab.huaweicloud.com/):沙箱环境 ### 工具资源 - ⭐ [Linux 命令搜索](https://wangchujiang.com/linux-command):命令忘了就查 - [Linux 命令大全手册](https://www.linuxcool.com/):命令参考 - [宝塔 Linux 面板](https://www.bt.cn/):可视化管理工具 - [在线 Shell 脚本检查](https://www.shellcheck.net):脚本检查工具 ### 社区和资源 - [Linux 内核学习资料](https://github.com/0voice/linux_kernel_wiki):GitHub 资源合集 - [GitHub Linux 专区](https://github.com/topics/linux):很多好项目 - [开源中国](https://www.oschina.net/):综合的开源社区 ## 面试题 - ⭐ [Linux 系统面试题 - 面试鸭](https://www.mianshiya.com/bank/1812067560819048449) - [Shell 面试题 - 面试鸭](https://www.mianshiya.com/bank/1812067519566053377) - [IT 运维工程师面试题 - 面试鸭](https://www.mianshiya.com/bank/1811358325988474882) - [系统运维面试题 - 面试鸭](https://www.mianshiya.com/bank/1811358545672855553) - [DevOps 运维面试题 - 面试鸭](https://www.mianshiya.com/bank/1811358596541374466) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

游戏服务端开发学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) 游戏服务端开发求职高频面试题:[开始刷题](https://www.mianshiya.com/bank/1821850953296441346) ## 开篇介绍 游戏服务端开发是游戏开发中至关重要的一环,负责处理游戏的核心逻辑、玩家数据、网络通信等关键功能。从 MMO 大型多人在线游戏到 MOBA 多人在线战术竞技游戏,从卡牌游戏到 SLG 策略游戏,几乎所有的网络游戏都需要强大的服务端支撑。 **为什么要学游戏服务端开发?** 游戏行业发展迅速,游戏服务端开发人才需求旺盛。根据今年的市场调研,有经验的游戏服务端工程师年薪可达 30-80 万。 ![](https://pic.code-nav.cn/migrate_image/b742c4c859147e4df8dc760cec75b3d2.webp) 游戏服务端和普通 Web 服务端的最大区别在于:游戏服务端需要处理大量的实时交互,对性能和延迟要求极高,并且需要处理复杂的游戏状态同步。 而且游戏服务端开发技术具有很强的通用性,掌握了高并发、分布式、实时通信等技术,可以应用到其他领域(比如直播、IoT 等),再倒过来去做后端业务开发就很简单了。 ### 就业方向 学习游戏服务端开发可以从事多个方向的工作: 1. 游戏服务端工程师:负责游戏服务端的开发和维护,包括游戏逻辑实现、网络通信、数据库设计等工作。 2. 游戏架构师:负责游戏服务端的架构设计,制定技术方案,解决技术难题。 3. 游戏运维工程师:负责游戏服务器的部署、监控、优化和故障处理。 4. 游戏技术专家:深入研究游戏服务端的核心技术,如网络同步、AI、物理模拟等。 5. 服务端架构师:游戏服务端的技术经验可以应用到其他高并发系统,比如电商、直播等领域。 ### 学习路线图 ![游戏服务端开发学习路线思维导图](https://pic.code-nav.cn/migrate_image/c67c9f74950abe279931f815d9f98172.png) ## 阶段 1:后端开发基础(30-40 天,仅供参考) 如果你完全零基础,建议先系统地学习 Java 或 Go 语言,能够独立开发后端应用。如果你已经有后端开发经验,可以快速过一遍这个阶段,重点复习多线程和网络编程。 ### 学习目标 掌握后端开发的基础知识,包括编程语言、数据库、网络通信等,为游戏服务端开发打下基础。 ### 知识点 **编程语言基础【必学】:** - Java 语言基础(主流选择)。关于 Java 的详细学习,可以查看 [Java 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190431398928386) - 基础语法 - 面向对象 - 集合框架 - 多线程 - 网络编程 - 或 Go 语言基础(新兴选择)。关于 Go 的详细学习,可以查看 [Go 语言学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190243125010434) - 基础语法 - 并发编程(Goroutine、Channel) - 网络编程 **数据库基础【必学】:** - SQL 语法。关于 SQL 的详细学习,可以查看 [SQL 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990755217309741058) - MySQL 数据库。关于 MySQL 数据库的详细学习,可以查看 [MySQL 数据库学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190581420793858) - 表设计 - 索引 - 事务 - 查询优化 - Redis 缓存。关于 Redis 缓存的详细学习,可以查看 [Redis 缓存学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190541746872321) - 数据类型 - 常用命令 - 持久化 - 主从复制 **网络基础【必学】:** 关于计算机网络的详细学习,可以查看 [计算机网络学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789191030769164289) - TCP/IP 协议 - Socket 编程 - HTTP 协议 - WebSocket 协议 ### 学习建议 1)游戏服务端开发对编程语言的要求较高,需要掌握至少一门后端语言。Java 是游戏服务端开发的主流选择,应用最广泛,生态成熟,框架丰富。Go 语言是新兴的选择,并发性能优秀,开发效率高,在一些新项目中应用越来越多。根据市场情况,鱼皮建议优先学习 Java,有余力可以了解 Go。 2)数据库是游戏服务端的核心组件,用于存储玩家数据、游戏配置等。MySQL 是最常用的关系型数据库,必须熟练掌握。Redis 是内存数据库,常用于缓存、排行榜、Session 管理等场景,也是必学内容。 3)网络通信是游戏服务端的基础。要深入理解 TCP/IP 协议,掌握 Socket 编程。游戏服务端一般使用 TCP 协议进行通信,少数使用 UDP 协议(如 FPS 游戏)。要理解 TCP 的三次握手、四次挥手、流量控制、拥塞控制等机制。 ### 学习资源 - ⭐ [编程导航 - Java 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190431398928386):完整的 Java 学习路线 - ⭐ [编程导航 - Go 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190243125010434):完整的 Go 学习路线 - [编程导航 - MySQL 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190581420793858):完整的 MySQL 学习路线 - [编程导航 - Redis 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190541746872321):完整的 Redis 学习路线 ## 阶段 2:游戏服务端基础(30-50 天,仅供参考) ### 学习目标 掌握游戏服务端的基本概念和核心技术,理解游戏服务端与普通后端的区别。 ### 知识点 **游戏服务端概念【必学】:** - 游戏服务端架构 - 客户端-服务器模型 - 游戏服务端的特点 - 游戏服务端和 Web 服务端的区别 **网络框架【必学】:** - Netty(Java) - Netty 架构 - Channel 和 EventLoop - ByteBuf - 编解码器(Codec) - 心跳机制 - 或 Skynet(Lua + C) - Actor 模型 - 服务(Service) - 消息传递 **协议设计【必学】:** - 协议格式(二进制、文本) - Protobuf - 协议加密 - 协议压缩 **游戏逻辑【必学】:** - 帧同步 vs 状态同步 - 游戏循环(Game Loop) - 定时器系统 - 事件系统 **消息处理【必学】:** - 消息队列 - 请求-响应模式 - 推送模式 - 消息路由 ### 学习建议 1)游戏服务端和普通 Web 服务端有很大不同。Web 服务端一般是无状态的,处理 HTTP 请求,响应后连接关闭。游戏服务端是有状态的,需要维护长连接,处理大量实时消息。要理解这种差异,才能更好地设计游戏服务端。 2)Netty 是 Java 游戏服务端开发最常用的网络框架,几乎是行业标准。Netty 基于事件驱动和异步非阻塞模型,性能优秀。必须深入学习 Netty 的架构和使用方法,包括 Channel、EventLoop、Handler、Pipeline 等核心概念。 3)Skynet 是云风开发的轻量级游戏服务器框架,使用 Lua + C 实现,基于 Actor 模型。Skynet 在国内游戏行业有一定应用,特别是中小型公司。Skynet 的学习曲线较陡,但理解了 Actor 模型对理解分布式系统很有帮助。 4)协议设计是游戏服务端的重要环节。游戏协议一般使用二进制格式,比文本格式(如 JSON)更节省带宽,解析更快。Protobuf 是最常用的二进制协议框架,必须掌握。要理解协议的版本管理、向前兼容、向后兼容等问题。 5)帧同步和状态同步是游戏网络同步的两种主要方式。帧同步适合格斗、RTS 等对一致性要求高的游戏,状态同步适合 MMO、MOBA 等玩家较多的游戏。要理解两者的原理、优缺点和适用场景。 ### 学习资源 - ⭐ [编程导航 Netty 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990754668925464578):完整的 Netty 学习路线 ## 阶段 3:高并发和分布式(30-45 天,仅供参考) 高并发和分布式是游戏服务端的核心挑战,需要掌握负载均衡、分布式缓存、分布式锁等技术。 ### 学习目标 掌握高并发和分布式系统的设计和实现,能够设计可扩展的游戏服务端架构。 ### 知识点 **高并发技术【必学】:** - 多线程和线程池 - 异步编程 - 无锁编程 - 并发容器 - 性能调优 **分布式系统【必学】:** - 分布式架构 - 负载均衡 - 服务发现 - RPC 框架 - 分布式缓存 **消息队列【必学】:** - RabbitMQ - Kafka - 消息队列的应用场景 **数据一致性【建议学】:** - CAP 理论 - 分布式事务 - 最终一致性 - 分布式锁 **微服务架构【建议学】:** - 微服务概念 - 服务拆分 - API 网关 - 服务治理 ### 学习建议 1)高并发是游戏服务端的核心挑战。游戏服务器需要同时处理成千上万的玩家请求,如何高效地处理并发是关键。要掌握多线程编程、异步编程、无锁编程等技术。理解线程安全、死锁、竞态条件等问题。 2)分布式系统是大型游戏服务端的必然选择。单台服务器的性能有限,需要通过分布式架构实现水平扩展。要理解分布式系统的基本概念,包括负载均衡、服务发现、RPC 通信等。掌握一个 RPC 框架(如 Dubbo、gRPC)的使用。 3)消息队列在游戏服务端中有广泛应用。它可以用于异步处理、削峰填谷、服务解耦等场景。比如玩家充值后的道具发放、日志收集、数据统计等,都可以通过消息队列异步处理。要理解消息队列的原理和应用场景。 4)数据一致性是分布式系统的难题。在游戏服务端中,如何保证玩家数据的一致性非常重要。要理解 CAP 理论,知道在不同场景下如何权衡一致性和可用性。掌握分布式锁、分布式事务等技术。 5)微服务架构是现代游戏服务端的发展方向。通过将游戏功能拆分为多个独立的服务,可以提高系统的可维护性和可扩展性。但微服务也带来了复杂性,需要服务治理、监控、链路追踪等配套设施。 ### 学习资源 - ⭐ [编程导航 - Spring Cloud 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990754562939596801):微服务架构 - [编程导航 - Kafka 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990755332183339010):消息队列 - [开源的游戏服务器框架](https://cloud.tencent.com/developer/article/1828305):Skynet、Pomelo 等 ## 阶段 4:游戏系统设计(20-40 天,仅供参考) 游戏系统设计是游戏服务端开发的核心工作。不同类型的游戏有不同的系统,但有些系统是通用的,如账号系统、背包系统、社交系统等。要理解这些系统的设计思路和实现方法。 ### 学习目标 掌握游戏常见系统的设计和实现,理解游戏业务逻辑的特点。 ### 知识点 **账号系统【必学】:** - 注册登录 - 账号安全 - 多渠道登录 - Session 管理 **背包系统【必学】:** - 物品管理 - 背包容量 - 物品堆叠 - 物品使用 **战斗系统【必学】:** - 战斗流程 - 技能系统 - 伤害计算 - Buff 系统 - 战斗日志 **社交系统【建议学】:** - 好友系统 - 聊天系统 - 公会/战队系统 - 邮件系统 **匹配系统【建议学】:** - 匹配算法 - ELO 评分 - 房间管理 - 匹配队列 **排行榜系统【建议学】:** - 排行榜设计 - Redis Sorted Set - 定时刷新 - 奖励发放 ### 学习重点 1)背包系统看似简单,实际上有很多细节需要考虑。比如物品的堆叠规则、背包容量限制、物品使用的原子性等。背包系统是很好的学习案例,建议深入研究。 2)战斗系统是游戏的核心玩法,也是最复杂的系统之一。战斗系统需要处理技能释放、伤害计算、Buff 效果、战斗日志等。要理解战斗系统的设计原则,如状态机、技能队列、伤害公式等。 3)匹配系统在 MOBA、FPS 等对战游戏中非常重要。匹配算法需要考虑玩家的实力、等待时间、匹配质量等多个因素。ELO 评分是常用的实力评估方法,要理解其原理。 4)排行榜系统在游戏中非常常见。Redis 的 Sorted Set 是实现排行榜的理想数据结构,支持高效的排序和范围查询。要理解排行榜的刷新策略、奖励发放等问题。 ### 经典面试题 1. 如何设计一个背包系统?需要考虑哪些问题? 2. 如何实现一个战斗系统?如何设计技能系统? 3. 如何设计一个匹配系统?匹配算法有哪些? 4. 如何实现一个高性能的排行榜系统? 5. 如何防止游戏外挂和作弊? ### 学习资源 - [MMO 游戏服务器的思考](https://hlog.cc/archives/103/):架构设计 - [中文游戏服务器资源大全](https://github.com/hstcscolor/awesome-gameserver-cn):综合资源 ## 阶段 5:性能优化和运维(15-30 天,仅供参考) ### 学习目标 掌握游戏服务端的性能优化方法和运维技能,能够保证游戏服务器的稳定运行。 ### 知识点 **性能优化【必学】:** - 性能分析工具 - CPU 优化 - 内存优化 - 网络优化 - 数据库优化 - 热点数据处理 **服务器运维【必学】:** - Linux 服务器 - Docker 容器化 - 日志管理 - 监控告警 - 故障排查 **安全防护【必学】:** - DDoS 防护 - 数据加密 - 防外挂 - 防刷 **压力测试【建议学】:** - 压测工具 - 压测方案 - 性能基准 - 瓶颈分析 ### 学习建议 1)性能优化是游戏服务端开发的 **永恒主题**。 游戏服务器需要处理高并发、低延迟的请求,性能优化至关重要。要学会使用性能分析工具(如 JProfiler、pprof),定位性能瓶颈。常见的优化方法包括减少锁竞争、使用对象池、优化数据结构、减少网络传输等。 2)服务器运维是游戏服务端工程师的必备技能。要熟悉 Linux 服务器的操作,掌握常用命令。了解 Docker 容器化技术,能够使用 Docker 部署游戏服务器。建立监控告警体系,及时发现和处理故障。 3)安全防护在游戏服务端中非常重要。DDoS 攻击会导致服务器无法正常工作,外挂和刷会破坏游戏平衡。要学习常见的安全防护方法,比如限流、验证码、数据校验、反作弊算法等。 4)压力测试是验证服务器性能的重要手段。在游戏上线前,需要进行充分的压力测试,确保服务器能够承受预期的负载。要掌握压测工具(如 JMeter、Gatling)的使用,设计合理的压测方案。 ![](https://pic.code-nav.cn/migrate_image/2d9eb8956bcad7f757ba5580cc902c98.webp) ### 学习资源 - [编程导航 - Docker 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990754953097949186):容器化技术 - [编程导航 - Linux 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990755996393320449):Linux 服务器 ## 阶段 6:项目实战(40-60 天,仅供参考) ### 学习目标 通过完整的项目实践,综合运用所学知识,积累游戏服务端开发经验。 ### 学习建议 1)开发一个完整的游戏服务端项目。可以选择一个简单的游戏类型,如卡牌游戏、回合制游戏等。项目应该包含完整的功能,包括账号系统、战斗系统、背包系统、社交系统等。 2)选择合适的技术栈。如果使用 Java,建议使用 Spring Boot + Netty + MySQL + Redis 的组合。如果使用 Go,可以使用 Gin + MySQL + Redis。技术栈要根据项目需求和个人熟悉程度选择。 3)关注代码质量和架构设计。游戏服务端代码往往比较复杂,良好的架构设计和代码规范非常重要。建议使用分层架构,将网络层、逻辑层、数据层分离。使用设计模式(如工厂模式、策略模式)提高代码的可维护性。 4)进行性能测试和优化。使用压测工具测试服务器的并发能力,使用性能分析工具定位瓶颈,进行针对性优化。目标是支持至少 1000 个并发用户。 5)部署到云服务器。将项目部署到云服务器(如阿里云、腾讯云),配置域名和 HTTPS,搭建监控系统。这样可以积累运维经验,也能作为作品展示。 ### 项目推荐 - 卡牌游戏服务端 - 回合制战斗游戏服务端 - MOBA 游戏匹配服务器 - MMO 游戏服务端(简化版) - 小游戏服务端(如消消乐) **优质开源项目:** - ⭐ [Unity Multiplayer Samples](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop):Unity 官方多人游戏示例项目 - [Awesome Game Networking](https://github.com/rumaniel/Awesome-Game-Networking):游戏网络编程资源大全 - [Multiplayer Networking Resources](https://github.com/0xFA11/MultiplayerNetworkingResources):多人游戏网络编程资源集合 ### 学习资源 - [百万在线大型游戏服务端开发](https://www.scribd.com/document/900473741):Skynet 实战 - [游戏服务端开发经验](https://zhuanlan.zhihu.com/p/1946162872196507206):技术分享 ## 阶段 7:求职备战(面试前 1 个月突击) ### 学习目标 熟练掌握游戏服务端常见面试题,准备好简历和项目经历,顺利通过面试。 ### 学习建议 1)准备游戏项目:简历上一定要有游戏服务端项目经历,最好是完整的游戏服务端项目,能在线访问更好。 面试时可能会问系统设计题,比如 “怎么设计一个匹配系统?怎么实现帧同步?” 等等,建议提前准备几个常见系统的设计方案。 2)准备简历:推荐直接使用 [老鱼简历](https://www.laoyujianli.com/) 快速制作简历;想学习如何写出面试率较高的简历,可以阅读鱼皮的 [保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425)。 ![老鱼简历网站简历模板大全](https://pic.code-nav.cn/migrate_image/676fb3480c37a3e017b45c83d6c2b9fa.webp) 3)多刷面试题:游戏服务端的面试题主要包括网络编程、高并发、分布式系统、游戏逻辑设计等。建议使用 [面试鸭](https://www.mianshiya.com/) 刷题,重点关注游戏服务端、Netty、高并发等关键词。 ![面试鸭刷题神器热门八股文](https://pic.code-nav.cn/migrate_image/a07730d4409a37f3c6cc40d8f1681de5.webp) 4)不同公司开发的游戏类型不同,面试前要了解目标公司的游戏类型、使用的技术栈等。针对性准备会更有效。 更多求职干货:[编程导航求职干货分享](https://www.codefather.cn/learn?category=76&type=2) ### 经典面试题 **网络编程:** 1. TCP 和 UDP 有什么区别?游戏中如何选择? 2. 如何处理粘包和拆包问题? 3. Netty 的架构是怎样的?EventLoop 的工作原理是什么? 4. 如何实现心跳机制?为什么需要心跳? 5. 如何优化网络性能? **高并发:** 1. 如何设计一个高并发的游戏服务器? 2. 如何处理并发请求?如何保证线程安全? 3. 什么是无锁编程?如何实现? 4. 如何优化服务器性能?常见的性能瓶颈有哪些? 5. 如何进行压力测试? **分布式系统:** 1. 游戏服务端如何实现水平扩展? 2. 如何实现跨服通信? 3. 分布式锁有哪些实现方式?各有什么优缺点? 4. 如何保证分布式系统的数据一致性? 5. 如何设计一个分布式的匹配系统? **游戏逻辑:** 1. 帧同步和状态同步有什么区别?各适用于什么游戏? 2. 如何设计一个背包系统?需要考虑哪些问题? 3. 如何实现一个战斗系统?如何处理技能和Buff? 4. 如何设计一个排行榜系统? 5. 如何防止游戏外挂和作弊? **项目经验:** 1. 你做过哪些游戏服务端项目?详细说说。 2. 项目中遇到过什么技术难点?如何解决的? 3. 如何设计游戏服务端的架构? 4. 如何进行性能优化?优化效果如何? 5. 如何处理线上故障? ### 面试题库 - ⭐ [游戏服务端面试题 - 面试鸭](https://www.mianshiya.com/bank/1821850953296441346) - [Java 面试题 - 面试鸭](https://www.mianshiya.com/bank/1983888023644901377) - [Netty 面试题 - 面试鸭](https://www.mianshiya.com/bank/1804354610222800897) ### 求职资源 - ⭐ [鱼皮的保姆级求职指南](https://www.codefather.cn/course/job):从简历到面试的完整指南 - ⭐ [鱼皮的保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425):如何写出高质量简历 - [编程导航的求职干货分享](https://www.codefather.cn/learn?category=76&type=2):求职经验和技巧 - [老鱼简历](https://www.laoyujianli.com/):写简历工具 + 简历模板大全 - [真实面经大全](https://www.codefather.cn/job/experience):了解真实的面试流程 - [几百场真实面试视频](https://www.codefather.cn/mockInterview):观看他人的面试过程 - [1 对 1 模拟面试](https://ai.mianshiya.com/):AI 模拟面试练习 - [面试题讲解视频](https://space.bilibili.com/3546383483144655):面试鸭官方题解 ## 更多资源 ### 知识总结 - ⭐ [编程导航](https://www.codefather.cn/):学习路线、项目教程、面试题、编程资源一站式平台 - [Java 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190431398928386):完整的 Java 学习路线 - [Netty 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990754668925464578):完整的 Netty 学习路线 ### 游戏服务端资源 - [中文游戏服务器资源大全](https://github.com/hstcscolor/awesome-gameserver-cn):综合资源 - [Skynet GitHub](https://github.com/cloudwu/skynet):云风的 Skynet 框架 - [Netty 官方文档](https://netty.io/):Netty 官方网站 ### 技术博客 - [腾讯游戏学堂](https://gameinstitute.qq.com/):腾讯游戏技术分享 ## 总结 总之,游戏服务端开发是一个充满挑战和机遇的领域,从网络通信到高并发处理,从分布式架构到游戏逻辑设计,游戏服务端的技术体系完整且深入,鱼皮对做游戏后端的朋友们是有敬畏之心的。 学习游戏服务端开发要先打好后端开发基础,掌握编程语言、数据库、网络通信等技术。深入学习游戏服务端的核心技术,包括网络框架(Netty)、协议设计、消息处理等。掌握高并发和分布式系统的设计与实现,能够设计可扩展的架构。理解游戏系统的设计思路,掌握常见系统(如背包、战斗、匹配)的实现方法。通过完整的项目实践,积累开发经验。 建议根据个人基础和职业目标选择游戏服务端开发的技术栈。Java + Netty 是主流选择,应用最广泛,适合大型游戏项目,建议优先学习;Go + 原生网络库是新兴选择,开发效率高,适合中小型游戏项目;Skynet(Lua + C)在国内有一定应用,适合快速开发。 最后,希望鱼皮的这份学习路线能够帮助大家少走弯路,更快掌握游戏服务端开发技术。 加油各位未来的游戏开发大师们! ![](https://pic.code-nav.cn/migrate_image/66a502034e18abab9a459c9b237957f4.jpeg) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

Unreal Engine 学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

> 编程导航学习网站:[学编程、做项目、拿 Offer!](https://www.codefather.cn) > > 企业高频面试题库:[开始刷题,面试遇原题!](https://www.mianshiya.com) > > 精选简历模板大全:[1 分钟搞定简历!](https://www.laoyujianli.com) > > AI 资源导航网站:[获取最新 AI 黑科技!](https://ai.codefather.cn) > > 1 对 1 模拟面试:[随时随地提升面试能力](https://ai.mianshiya.com) ## 开篇介绍 虚幻引擎(Unreal Engine,简称 UE)是世界顶级的游戏引擎之一,以其强大的图形渲染能力、完善的工具链成为游戏开发者和创作者的首选工具之一。特别是虚幻引擎 5(UE5)带来了 Nanite、Lumen 等革命性的技术,将实时渲染推向了新的高度。 虚幻引擎采用源代码开放的策略,开发者可以免费下载和使用,并且能够访问完整的引擎源代码,这为深度定制和优化提供了可能。 **为什么要学虚幻引擎?** 虚幻引擎在高端游戏开发领域具有绝对优势。许多著名的 3A 游戏如《堡垒之夜》《绝地求生》《黑神话:悟空》都是使用虚幻引擎开发的。 而且如今虚幻引擎的应用范围越来越广,不仅限于游戏开发,还扩展到影视制作、建筑可视化、汽车设计、虚拟制作等领域。 掌握虚幻引擎能够显著提升你的职业竞争力,而且虚幻引擎开发者的薪资待遇普遍较高。 ![](https://pic.code-nav.cn/migrate_image/3e89a1e44c2517198d9dbcc6799cd685.webp) ### 就业方向 学习虚幻引擎可以从事多个方向的工作: 1. 虚幻引擎游戏开发工程师:负责使用虚幻引擎开发游戏,包括玩法实现、系统开发、性能优化等工作。 2. 虚幻引擎 TA(Technical Artist):连接美术和程序的桥梁,负责材质开发、特效制作、工具开发等工作。 3. 关卡设计师:使用虚幻引擎设计和搭建游戏关卡,负责场景布置、灯光设置、玩法设计等。 4. 虚幻引擎技术美术:负责美术资产的技术实现,包括模型优化、材质制作、动画系统等。 5. 虚拟制作工程师:使用虚幻引擎进行影视虚拟制作,负责实时渲染、虚拟摄影等工作。 ### 学习路线图 ![Unreal Engine 学习路线思维导图](https://pic.code-nav.cn/migrate_image/56765de359b9e6687438c6684d4a627c.webp) ## 阶段 1:C++ 编程基础(20-40 天,仅供参考) 关于 C++ 的详细学习,可以查看 [C++ 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190321168424961) ### 学习目标 掌握 C++ 编程基础知识,为后续的虚幻引擎 C++ 开发打下基础。 ### 知识点 **C++ 基础语法【必学】:** - 变量和数据类型 - 运算符和表达式 - 控制流程(if、switch、循环) - 函数 - 数组和指针 - 引用 **面向对象编程【必学】:** - 类和对象 - 构造函数和析构函数 - 继承和多态 - 虚函数 - 运算符重载 **C++ 标准库【建议学】:** - STL 容器(vector、map、set) - 迭代器 - 算法库 - 智能指针 ### 学习建议 1)C++ 是虚幻引擎的核心编程语言,虽然也可以用蓝图开发,但要深入掌握虚幻引擎,C++ 是必不可少的。如果你完全没有编程基础,建议先从 C++ 开始学习。如果你有其他语言的基础(如 Java、Python),可以快速过一遍 C++ 的特性。 2)虚幻引擎的 C++ 开发不需要掌握 C++ 的全部特性,重点掌握基础语法、面向对象编程、指针和引用即可。C++ 模板、多线程等高级特性可以在需要时再学习。 3)建议在学习 C++ 的同时,了解一些虚幻引擎的编码规范。虚幻引擎有自己的编码风格和命名规范,比如类名前缀 U、A、F 等,提前了解能够帮助你更快适应虚幻引擎的开发。 4)不要在 C++ 基础上花费太长时间。虚幻引擎封装了很多底层细节,实际开发中用到的 C++ 知识相对有限。建议掌握基础后就开始学习虚幻引擎,在实践中巩固 C++ 知识。 ### 学习资源 - ⭐ [C++ 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190321168424961):完整的 C++ 学习路线 - [黑马程序员 C++ 教程](https://www.bilibili.com/video/BV1et411b73Z):适合零基础入门 ## 阶段 2:虚幻引擎基础(30-45 天,仅供参考) ### 学习目标 熟悉虚幻引擎的界面和基本操作,掌握蓝图系统,能够制作简单的游戏原型。 ### 知识点 **UE5 入门【必学】:** - 虚幻引擎安装和配置 - 编辑器界面介绍 - 项目创建和管理 - 关卡和场景 - Actor 和组件 - 坐标系统 **蓝图系统【必学】:** - 蓝图概念 - 蓝图类型(关卡蓝图、类蓝图) - 节点和连线 - 变量和函数 - 事件和委托 - 蓝图接口 **基础游戏元素【必学】:** - 角色控制 - 输入系统(增强输入系统) - 摄像机系统 - 碰撞检测 - UI 系统(UMG) **资产管理【必学】:** - 导入资产(模型、贴图、音频) - 材质基础 - 静态网格体 - 骨骼网格体 - 动画基础 ### 学习建议 1)虚幻引擎的界面较为复杂,建议先看一些入门视频,了解编辑器的基本布局和常用操作。不要急于深入学习,先熟悉界面,能够创建项目、导入资产、搭建简单场景即可。 2)蓝图是虚幻引擎的特色功能,是一种可视化脚本系统。对于初学者来说,蓝图比 C++ 更易上手,也可以先从蓝图开始学习虚幻引擎的开发。蓝图的核心是节点和连线,要理解事件驱动的编程思想。 ![](https://pic.code-nav.cn/migrate_image/75f80831e37e8974a8415d0371d1baba.webp) 3)增强输入系统(Enhanced Input System)是 UE5 推荐的输入处理方式,取代了旧的输入系统。建议直接学习增强输入系统,包括输入动作(Input Action)、输入映射(Input Mapping Context)等概念。 4)建议做一个简单的游戏原型,比如一个第一人称射击游戏的基本框架或者一个简单的平台跳跃游戏。在实践中学习虚幻引擎的各个系统,比单纯看教程效果要好得多。 5)虚幻引擎的官方文档非常详细,遇到问题时可以查阅官方文档。虚幻引擎社区也很活跃,可以在官方论坛、B 站等平台找到大量的教程和解答。 ### 学习资源 - ⭐ [虚幻引擎 5 官方文档](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/unreal-engine-5-7-documentation):最权威的学习资源 - ⭐ [UE5 零基础入门教程](https://www.bilibili.com/video/BV1dx91YcESi/):2025 宇宙最简单系列 - ⭐ [UE5 蓝图入门案例](https://www.bilibili.com/video/BV15M4m1m7dA/):20 个新手案例 - [虚幻引擎官方免费课程](https://www.unrealengine.com/zh-CN/learning/mays-free-unreal-engine-courses-create-games-cinematics-and-digital-twins):官方学习资源 ## 阶段 3:虚幻引擎 C++ 开发(30-50 天,仅供参考) ### 学习目标 掌握虚幻引擎的 C++ 开发,能够用 C++ 实现游戏逻辑、更底层的控制和更高的性能,理解蓝图和 C++ 的交互。 ### 知识点 **UE C++ 基础【必学】:** - UE C++ 项目结构 - UObject 系统 - AActor 和 UActorComponent - 反射系统(UPROPERTY、UFUNCTION) - 垃圾回收机制 - 日志系统 **游戏框架【必学】:** - GameMode - GameState - PlayerController - PlayerState - Pawn 和 Character - HUD **常用类和接口【必学】:** - FVector、FRotator、FTransform - TArray、TMap、TSet - FString、FName、FText - 委托(Delegate) - 定时器(Timer) **蓝图和 C++ 交互【必学】:** - C++ 类蓝图化 - BlueprintCallable - BlueprintImplementableEvent - BlueprintNativeEvent - 从 C++ 调用蓝图 **网络同步【建议学】:** - 网络复制(Replication) - RPC(Remote Procedure Call) - 网络所有权 ### 学习重点 1)虚幻引擎的 C++ 和标准 C++ 有一些不同,主要体现在反射系统、内存管理、命名规范等方面。要理解 UObject 系统,这是虚幻引擎 C++ 的核心。所有需要反射、垃圾回收、网络同步的类都要继承自 UObject。 2)虚幻引擎的反射系统通过宏(如 UCLASS、UPROPERTY、UFUNCTION)实现。这些宏让 C++ 类能够被蓝图访问,也能够被引擎的序列化、网络同步等系统使用。要熟练掌握这些宏的使用。 3)游戏框架是虚幻引擎组织游戏逻辑的方式。GameMode 定义游戏规则,PlayerController 处理玩家输入,Character 代表玩家角色。理解这些类的职责和关系,对于组织代码非常重要。 4)蓝图和 C++ 的交互是虚幻引擎开发的重要技能。一般的做法是用 C++ 实现核心逻辑和性能敏感的部分,用蓝图实现易变的玩法逻辑和快速原型。要掌握如何让 C++ 函数在蓝图中调用,如何在 C++ 中调用蓝图实现的函数。 5)有时间的话,可以尝试把之前用蓝图实现的游戏原型用 C++ 重新实现一遍,体会蓝图和 C++ 的区别(现在用 AI 做这件事挺快的)。一定要在实践中学习 UE C++,而不是眼巴巴地干看教程。 ### 经典面试题 1. UObject 系统的作用是什么? 2. UPROPERTY 和 UFUNCTION 宏有什么作用? 3. 蓝图和 C++ 各有什么优缺点?如何选择? 4. 虚幻引擎的垃圾回收机制是怎样的? 5. 如何在 C++ 中调用蓝图实现的函数? ### 学习资源 - ⭐ [UE5 零基础 C++ 入门教程](https://www.bilibili.com/video/BV1RRG9ztEGb/):2025 最新版 - ⭐ [虚幻引擎 C++ 游戏开发全面指南](https://www.udemy.com/course/2025-5ue55/):Udemy 课程 - [虚幻引擎 C++ 编程文档](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/programming-with-cplusplus-in-unreal-engine):官方文档 ## 阶段 4:高级功能和优化(30-45 天,仅供参考) ### 学习目标 掌握虚幻引擎的高级功能,包括材质系统、粒子系统、动画系统等,能够进行性能优化。 ### 知识点 **材质系统【必学】:** - 材质编辑器 - 材质节点 - PBR 材质 - 材质实例 - 材质函数 - 后处理材质 **Niagara 粒子系统【必学】:** - Niagara 基础 - 发射器(Emitter) - 模块(Module) - 粒子参数 - GPU 粒子 **动画系统【必学】:** - 动画蓝图 - 状态机 - 混合空间(Blend Space) - 动画通知(Anim Notify) - IK(Inverse Kinematics) **Gameplay 能力系统(GAS)【建议学】:** - Ability 系统概念 - 技能(Ability) - 属性(Attribute) - 效果(Effect) - 标签(Tag) **性能优化【必学】:** - Profiling 工具 - LOD(细节层次) - 剔除(Culling) - 光照优化 - 打包和部署 ### 学习重点 1)材质系统是虚幻引擎的核心功能之一,决定了游戏的视觉效果。要理解基于物理的渲染(PBR)原理,掌握材质编辑器的使用。材质编辑器类似蓝图,通过节点连线的方式创建材质。 2)Niagara 是 UE4.20 之后推出的新粒子系统,取代了旧的 Cascade 系统。Niagara 更加强大和灵活,建议直接学习 Niagara。粒子系统用于制作特效,如火焰、烟雾、爆炸等。 ![](https://pic.code-nav.cn/migrate_image/b74b96e1e2a35a0ef851794da43a1c70.webp) 3)动画系统负责角色动画的播放和混合。动画蓝图是专门用于动画逻辑的蓝图,包含状态机、混合空间等功能。状态机用于管理不同的动画状态(如站立、跑步、跳跃),混合空间用于根据参数混合多个动画。 4)Gameplay 能力系统(GAS)是虚幻引擎提供的一套技能系统框架,适合制作复杂的技能和战斗系统。GAS 的学习曲线较陡,但功能强大,建议在有一定基础后再学习。 5)性能优化是游戏开发的重要环节。要学会使用虚幻引擎的 Profiling 工具,分析性能瓶颈。常见的优化方法包括使用 LOD、剔除不可见物体、优化光照、减少 DrawCall 等。 ### 学习资源 - ⭐ [UE5 全面基础教程](https://www.bilibili.com/video/BV1waQuYeEWy):保姆级零基础教程 - [虚幻引擎材质系统文档](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/materials-in-unreal-engine):官方文档 - [虚幻引擎动画系统文档](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/animation-in-unreal-engine):官方文档 ## 阶段 5:项目实战(45-60 天,仅供参考) ### 学习目标 通过完整的项目实践,综合运用所学知识,积累虚幻引擎开发经验。 ### 学习建议 1)制作一个完整的游戏 Demo。可以是一个小型的单机游戏,也可以是一个垂直切片(Vertical Slice)。项目应该包含完整的游戏流程,从主菜单、游戏玩法到结算界面。 2)选择一个你感兴趣的游戏类型。如果你喜欢射击游戏,可以做一个 FPS 或 TPS 游戏。如果你喜欢 RPG,可以做一个简单的角色扮演游戏。兴趣是最好的老师,选择你感兴趣的类型会让学习更有动力。 3)在项目中实践所学的知识。尝试使用 C++ 和蓝图的组合开发,使用材质系统制作漂亮的视觉效果,使用 Niagara 制作粒子特效,使用动画系统实现角色动画。 4)关注项目的完成度而不是复杂度。一个简单但完整的项目比一个复杂但半成品的项目更有价值。要有始有终,完成一个项目的全部流程。 5)参考优秀的开源项目和教程。虚幻引擎官方提供了很多示例项目,可以下载学习。也可以在 GitHub 上找一些开源的虚幻引擎项目,学习别人的代码和设计思路。 ### 项目推荐 - 第一人称射击游戏(FPS) - 第三人称动作游戏(TPS) - 平台跳跃游戏 - RPG 游戏原型 - 多人在线游戏(基于网络同步) **优质开源项目:** - [Awesome Unreal](https://github.com/insthync/awesome-ue4):虚幻引擎资源大全 ### 学习资源 - [Unreal Engine 5 学习路线图](https://zhuanlan.zhihu.com/p/1893207430206322269):2025 系统化学习 ## 阶段 6:求职备战 ### 学习目标 熟练掌握虚幻引擎常见面试题,准备好简历和项目经历,顺利通过面试。 ### 学习建议 1)准备项目作品:简历上一定要有虚幻引擎项目经历,最好是完整的游戏 Demo。建议提前准备好项目的演示视频和介绍文档,能够清楚地讲解项目的技术实现、遇到的问题和解决方案。 2)准备简历:可以使用 [老鱼简历](https://www.laoyujianli.com/) 的模板快速制作简历;关于如何写好简历,推荐学习鱼皮的 [保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425)。 ![老鱼简历网站简历模板大全](https://pic.code-nav.cn/migrate_image/676fb3480c37a3e017b45c83d6c2b9fa.webp) 3)多刷面试题:虚幻引擎的面试题主要包括引擎架构、蓝图和 C++ 开发、性能优化等。可以使用 [面试鸭](https://www.mianshiya.com/) 刷题和练习。 ![面试鸭刷题神器热门八股文](https://pic.code-nav.cn/migrate_image/a07730d4409a37f3c6cc40d8f1681de5.webp) 4)不同公司使用虚幻引擎开发的项目类型不同。面试前要了解目标公司的游戏类型、使用的虚幻引擎版本等,有针对性地准备。 5)面试时可能会问到 Unity 和 Unreal 的区别,要能够说出两者的优劣势:Unreal 在图形渲染、开源性方面有优势,适合高品质游戏开发;Unity 在移动平台、易用性方面有优势,适合中小型游戏和移动游戏开发。 更多求职干货:[编程导航求职干货分享](https://www.codefather.cn/learn?category=76&type=2) ### 经典面试题 **基础概念:** 1. 虚幻引擎和 Unity 有什么区别?各有什么优劣势? 2. 蓝图和 C++ 各有什么优缺点?如何选择? 3. 什么是 Actor?什么是 Component? 4. UObject 系统的作用是什么? 5. 虚幻引擎的游戏框架是怎样的? **开发技术:** 1. 如何实现蓝图和 C++ 的交互? 2. 虚幻引擎的网络同步是如何工作的? 3. 如何实现角色的移动和动画? 4. 材质系统的工作原理是什么? 5. Niagara 和 Cascade 有什么区别? **性能优化:** 1. 如何分析虚幻引擎项目的性能瓶颈? 2. 常见的性能优化方法有哪些? 3. 什么是 LOD?如何使用? 4. 如何优化光照性能? 5. 如何减少 DrawCall? **项目经验:** 1. 你做过哪些虚幻引擎项目?详细说说。 2. 项目中遇到过什么技术难点?如何解决的? 3. 你如何组织项目的代码结构? 4. 你使用过哪些虚幻引擎插件? 5. 如何进行多人协作开发? ### 面试题库 - ⭐ [游戏开发面试题 - 面试鸭](https://www.mianshiya.com/bank/1821850953296441346) - [C++ 面试题 - 面试鸭](https://www.mianshiya.com/bank/1983888665591517186) ### 求职资源 - ⭐ [鱼皮的保姆级求职指南](https://www.codefather.cn/course/job):从简历到面试的完整指南 - ⭐ [鱼皮的保姆级写简历指南](https://www.codefather.cn/course/1802644557818343425):如何写出高质量简历 - [编程导航的求职干货分享](https://www.codefather.cn/learn?category=76&type=2):求职经验和技巧 - [老鱼简历](https://www.laoyujianli.com/):写简历工具 + 简历模板大全 - [真实面经大全](https://www.codefather.cn/job/experience):了解真实的面试流程 - [几百场真实面试视频](https://www.codefather.cn/mockInterview):观看他人的面试过程 - [1 对 1 模拟面试](https://ai.mianshiya.com/):AI 模拟面试练习 - [面试题讲解视频](https://space.bilibili.com/3546383483144655):面试鸭官方题解 ## 其他资源 ### 知识总结 - ⭐ [编程导航](https://www.codefather.cn/):学习路线、项目教程、面试题、编程资源一站式平台 - [C++ 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1789190321168424961):完整的 C++ 学习路线 - [Unity 学习路线](https://www.codefather.cn/course/1789189862986850306/section/1990755898217246722):对比学习 ### 虚幻引擎资源 - [虚幻引擎官网](https://www.unrealengine.com/zh-CN):官方网站 - [虚幻引擎文档](https://dev.epicgames.com/documentation/zh-cn/unreal-engine):官方文档 - [虚幻引擎社区](https://forums.unrealengine.com/):官方论坛 ### 技术博客 - [Epic Games 技术博客](https://www.unrealengine.com/zh-CN/tech-blog):官方技术博客 - [虚幻引擎开发者社区](https://dev.epicgames.com/community/unreal-engine/getting-started?locale=zh-cn):开发者资源 ## 写在最后 学习虚幻引擎要先打好 C++ 基础,虽然也可以用蓝图开发,但 C++ 是深入掌握虚幻引擎的关键。从基础入门开始,熟悉编辑器界面和基本操作,掌握蓝图系统。然后学习 C++ 开发,理解 UObject 系统和游戏框架。深入学习高级功能,包括材质、粒子、动画等系统。最后通过完整的项目实践,积累开发经验。 对比 Unity 和 Unreal,两者各有优劣。Unreal 在图形渲染、源代码开放性方面有优势,适合高品质的 PC/主机游戏开发。Unity 在移动平台、易用性、生态系统方面有优势,适合中小型游戏和移动游戏开发。选择哪个引擎取决于你的项目需求和职业方向。 希望鱼皮的这份学习路线能够帮助大家更快地学会虚幻引擎技术,加油鱼友们!期待你们的 AAA 大作! ![](https://pic.code-nav.cn/migrate_image/37c674b13cd1953a8903a08c48496ade.jpeg) ## 程序员必备资源 1)程序员学习交流圈:[极客教程、实战项目、求职宝典](https://www.codefather.cn) 2)程序员面试八股文:[实习/校招/社招高频考点、企业真题解析](https://www.mianshiya.com) 3)程序员写简历神器:[专业模板、丰富例句、直通面试](https://www.laoyujianli.com) 4)AI 知识资源大全:[前沿技术、最新 AI 资讯、提示词大全](https://ai.codefather.cn) 5)1 对 1 模拟面试:[实习/校招/社招面试拿 Offer 必备](https://ai.mianshiya.com)

下载 APP