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

2024年 Web3开发学习路线全指南

Web3是一个包含了很多领域的概念,不讨论币圈和链圈的划分,Web3包括有Defi、NFT、Game等基于区块链的Dapp应用的开发;也有VR、AR等追求视觉沉浸感的XR相关领域的开发;还有基于区块链底层架构或者协议的开发。

这篇文章给出的学习路线图是第一种类型:针对Dapp应用的开发,也就是基于区块链网络开发的去中心化应用。我将从首先从国内的JD开始,分析国内的区块链企业需要哪些技术栈。再给出基于以太坊的学习路线图。

也许你会问为什么要学习以太坊?我学习用BNB Chain、Solana、Avalanche等区块链构建我的Dapp不行吗?答案当然可以!但是以太坊依然是目前最大的区块链应用开发生态,它的开发者工具最齐全、文档和社区也最丰富。你能找到更多的学习资料,在遇到问题时也能很快找到社区的解答。

毫无疑问,以太坊理应是Dapp的新手开发者第一个学习的区块链生态

这篇文章不会介绍过多Dapp的前后端开发上,我假设你了解HTML/CSS/JavaScript的相关基础知识,并熟悉一门后端语言(Python、Java、Rush、Go或者Node.js)。

好了,让我们开始吧~

企业需要什么样的Web3开发者?

如果了解现在的企业需要Web3开发者拥有什么样的技能组合,能够让我们更加针对性的去学习企业级的开发实践,少踩一些弯路。

需要掌握的区块链技术要点:

  • 区块链基础原理

  • 熟悉Ethereum技术,深入理解EVM

  • Solidity编程

  • 智能合约设计、开发、测试、上线和维护

  • 智能合约的跨链交易

  • Truffle开发框架

  • web3js、ethers.js、OpenZeppelin等库

即使你还从未接触过Web3的开发,但如果你是一位有过Web开发经验的程序员,Dapp的应用开发范式基本是一致的,我相信你大概能从这份JD里面能总结出这么几点:

  1. 区块链的基础原理和Ethereum技术是Web3开发的基础知识

  1. 智能合约是区块链开发一个很重要的环节

  1. Solidity是编写智能合约的一个重要语言

  1. Truflle是一个主流的区块链开发框架

  1. web3js、ethers.js、OpenZeppelin这几个是区块链开发中经常使用的库

没错,这几个技术点是我们Dapp开发和编写智能合约通常会使用到的。也许你依然对里面的概念和技术完全不了解,没关系,你只需要有个大概的印象。接下来我们在下文的「学习路线指南」中都会提及到这几个技术栈。

我相信你在阅读完全文后再回来看这个JD,应该会有不一样的理解。

区块链基础

在学习应用的开发前,了解一定的区块链基础知识是很有必要的。虽然从技术角度上来说,即使你不了解任何的区块链基础知识,也能开发出Dapp。但这样的开发者基本上就是工具和语言的熟练使用者,在遇见较为深入的问题和技术栈时,很快就会碰见天花板。

推荐资料

对于区块链基础知识的学习,我推荐以下的专栏/课程/书籍,你可以任选一个深入看即可:

  1. 《陈浩:深入浅出区块链-极客时间》(专栏)

国内开源公有区块链项目 Metaverse 元界 CTO陈浩开设的专栏,专栏共 36 期,围绕区块链知识从浅入深,分 5 个模块进行讲解:浅说区块链基础 / 深入区块链技术 / 数字货币与数字资产专题 / 区块链与当下互联网 /如何从业区块链。

  1. 《自游:说透区块链 - 极客时间》(专栏)

专栏作者是深耕一线的区块链专家,专栏从应用和技术两方面出发聊区块链。比起上一个专栏整体文章的设计更加容易理解,有很多丰富的案例和思考,看完这个基本能搭建起区块链知识体系的完整认知。

  1. 北京大学肖臻老师《区块链技术与应用》公开课-B站(视频)

北京大学公开课《区块链技术与应用》由肖臻老师讲授,主要讲解区块链的基本概念和实现原理,面向广大对区块链技术和应用感兴趣的同学。通过这门课的学习,能够掌握比特币、以太坊等区块链技术的设计思路并有效解决实际问题。

  1. 《区块链从数字货币到信用社会中信出版社图书》(书籍)

本书作者之一是巴比特创始人长铗,这本书较为系统的对区块链的历史和现状做了讲解,并有专门的章节来介绍智能合约和区块链的应用场景。是一本很好的了解区块链基础知识的数据。

基础学习到什么程度?

学习基础知识特别容易刨根问底,区块链同时又是涵盖密码学、计算机科学等领域的技术综合体,如果深入了解下去可能会让学习者失去学习的兴趣。那么作为一名区块链开发者,你需要学习到什么程度呢?我个人认为,在学习完基础知识部分后,你需要能够回到出以下的问题即可:

  1. 区块链到底是什么?它具有什么特点?

  1. 区块链在技术上大致是如何实现的?

  1. 区块链的共识机制是什么?共识机制解决了什么问题?有什么常见的共识机制?

  1. 区块链的存储规则和常见的数据库有什么不同?

  1. PoW、PoS、DPoS这几个共识机制的原理、特点是什么?

  1. 除了数字货币,常见的区块链的应用类型有哪些?

你可以带着这些问题,结合上面推荐的资料学习,这样效果会更好。

了解区块应用生态

基础知识的学习对于大多数人而言注定是枯燥乏味的,在学习区块链的同时不妨同时了解一下现在国内外有哪些具体的应用。你也许有听过几个应用了,例如:MetaMask(最知名的区块链钱包),Stepn(一个能购买跑鞋,跑步会赚取收益的Dapp)、Axie Infinity(一款神奇宝贝主题的区块链游戏)、NBA TopShot(NBA官方验证的NFT)、OpenSea(全球最大的NFT交易市场)等等。

了解这些基于区块链的Dapp,能够让我们更加直观的认识到区块链的应用场景。还有什么比直接使用到能够交互的应用程序更为直观的呢?在你了解的过程中,你还会发现如今区块链生态的繁荣,目前有很多的Dapp不是在以太坊这一条链上运行的了,还有BNB Chain、SOLONA、TRON等众多公链生态。

这里推荐每位开发者都通过dappradar.com探索一下Dapp生态,这个网站可以类比苹果生态中的Apple Store,DappRadar就是Web3世界Apple Store。而且这个网站的Blog质量极高,有很多优秀的博客文章和专业的区块链调研报告。

以太坊相关技术

了解完区块链的基础知识,这个时候就应该到了技术学习的环节。正如前文中提到的,对于新手开发者而言,学习区块链的最佳方式是从以太坊入手。下面我们就来看一下学习以太坊生态的相关技术栈。

以太坊开发者基础

在学习具体的技术前,以太坊的基础知识和概念是需要掌握的。学习这方面的知识,唯一推荐的资料就是以太坊官网。你基本可以在官网上找到太坊生态所有技术的学习资料!

以太坊开发者文档通俗的介绍了以太坊的相关概念:账户、区块、EVM、Gas、智能合约、共识机制等,同时以太坊的国际化做得也很优秀,文档支持46种语言,翻译由社区进行维护。

在官方文档的阅读过程中,EVM、Gas、智能合约等部分是需要重点掌握的

Metamask

在以太坊编写智能合约之前,如果你还没有下载一个区块链钱包并尝试完成一笔交易,你可能无法体会到区块链交易的便利性,也不能直观的感受到Gas费用的无处不在。在这之前你可以尝试下载安装MetaMask这个区块链钱包来完成一笔交易。

你可以直接在浏览器上安装MetaMask插件,并且切换到相应的测试网络。如果你在测试网络上没有任何的ETH,你可以从下面的Facuet网站获取以太币(都是基于rinkeby测试网络的):

●Sepolia Faucet - Get Testnet Tokens(Rinkeby测试网络)

https://www.rinkeby.io/#faucet(Rinkeby测试网络)

●https://faucet.metamask.io/ (Facuet测试网络)

Solidity语言 + 智能合约

智能合约是Dapp开发的最重要的环节,智能合约本质是开发者发布在 EVM 内存中的可重用代码片段(程序),它同时也是一个以太坊账户。任何人都可以通过“交易”来触发并执行智能合约。

能够编写智能合约的语言不止一种,包括:Solidity、Vyper、Yul等。但Solidity基本是绝大多数开发者和企业用来编写智能合约的唯一语言,所以Solidity是你成为区块链开发者必须学习的一门语言。

你可以从以下资料中学习Solidity:

Solidity官方文档

●Solidity中文文档-登链社区

●基于以太坊的智能合约开发教程【Solidity】 - 千峰教育

●Solidity-workshop - Github

●#1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies(一个在线游戏来学习语言和Dapp)

在学习Solidity和智能合约过程中,你需要一款IED去编写你的代码,这边我推荐Remix。

Remix是一款基于浏览器的IDE,使用Remix可以省去你安装Solidity运行环境的繁琐流程。Remix基本提供了你编写Solidity智能合约的所有功能:

●代码高亮

●代码调试

●代码编译

●日志输出

●钱包连接&发送交易

●合约部署

web3.js & ethers.js

web3.js和ethers.js这两个库都是用来和以太坊节点通信的两个JavaScript库。在Dapp的开发中,这两个库都是常会被使用到的。你可以通过这两个库来完成一系列的功能:

●连接钱包

●查询余额

●发送交易

●部署智能合约

●查询区块信息

●调用函数

在Dapp的开发中使用两个库的API功能大部分都是相同的,你可以选择其中的一个即可。相对而言,ethers.js对比使用 web3.js 代码量更少,接口也更简洁,个人推荐优先使用 ethers.js 。

相关文档地址如下:

●web3.js官方文档

●web3.js中文文档-登链社区

●ethers.js官方文档

●ethers.js中文文档-登链社区

Truffle框架

正如我们编写前端应用会使用到React、Vue这样的前端框架,编写后端Node.js应用会使用Nest.js或者Egg.js后端框架一样。社区里面编写Dapp框架最常使用的框架就Truffle。

Truffle具有以下功能:

●内置智能合约编译,链接,部署和二进制(文件)管理。

●可快速开发自动化智能合约测试框架。

●可脚本化、可扩展的部署和迁移框架。

●可管理多个不同的以太坊网络,可部署到任意数量的公共主网和私有网络。

●使用 ERC190 标准,使用EthPM 和 NPM 进行包装管理。

●支持通过命令控制台直接与智能合约进行交互。

●可配置的构建管道,支持紧密集成。

●支持在Truffle环境中使用外部脚本运行器执行脚本。

相关资料如下:

●Truffle官方文档

●Truffle中文文档(该文档已经比较久没有更新了,建议查看官网)

Truffle的套件中还提供了一个非常有用的应用:Ganache。通过这个应用你可以一键创建你的区块链网络,方便你在这个区块链网络中开发、部署和测试你的Dapp。

HardHat同样也是以太坊社区里面使用量比较大的框架,就像前端中文社区里面Vue和React之争一样,在以太坊社区HardHard也经常被用来和Truffle做对比。你可以把HardHat当做Truffle的一个替代框架去学习,并选择一个适合你的框架去编写Dapp。

如果你想了解更多的以太坊框架,可以查看:去中心化应用程序开发框架 | ethereum.org

ERC-20

如果你的Dapp有创建自己加密货币的需求,那么ERC-20标准就是你必须了解的,ERC-20 使用以太坊上最重要的智能合约标准之一。是用于实现可替换通证的智能合约技术标准。

ERC-20 提供的示例功能:

●将代币从一个账户转移到另一个账户

●获取账户的当前代币余额

●获取网络上可用代币的总供应量

●批准一个账户的一定数量的代币是否可以被第三方账户消费

ERC-20相关资料:

●ERC-20 代币标准

●以太坊官网-ERC-20 代币标准

●了解ERC-20通证智能合约

智能合约库

在编写较为复杂的智能合约时,你完全没有必要从0到1编写你的智能合约库,社区里面提供了许多的智能合约库供你使用。你完全可以复用这些库或者继承它们。

使用智能合约库不仅仅能节约的时间,社区里面头部的智能合约库的安全性是有保障的,引入它们能够确保你关键交易的安全性。

相关智能合约库资料:

●OpenZeppelin 合约:安全的智能合约开发库(最广泛使用的库,必学)

●DappSys:智能合约构建模块,能够解决常见的问题,例如:白名单、认证、Upgradable ERC20-token

●HQ20:一个带有合约、库和案例的Solidity 项目,帮助您为现实世界建立功能齐全的分布式应用

以太坊官网-智能合约库

智能合约安全

智能合约的安全性怎么强调都不为过。因为智能合约部署后不能修改的特性,这让智能合约中的漏斗变得极为危险。我相信你已经听过了以太坊分叉的故事,也听到过很多盗窃资产的事件发生。

所以,在你把智能合约部署到以太坊主网之前,确保的智能合约的安全性,对其进行测试和安全性分析是非常重要的。同时,了解一些常见的智能合约攻击手段也是必要的,就像你作为一名web开发者需要了解基本的XSS攻击、CSRF攻击等一样。

相关智能合约安全性资料:

●Slither:用Python 3 编写的 Solidity 静态分析框架

●MythX:以太坊智能合约的安全分析应用程序接口

●Mythril:以太坊虚拟机字节码安全分析工具

●Manticore:在智能合约和二进制文件上使用符号执行工具的命令行界面

●Verifier:于检查合约是否符合ERC20 标准的验证工具

●Slither和Mythril:智能合约分析工具

●智能合约安全清单

●安全性建议和最佳做法合集

总结

上面的所有内容学习完成,你就是一名合格的区块链Dapp开发者了。你能够编写安全、规范的智能合约,并且能够将智能合约部署在以太坊网络上,再通过web3.js或ethers.js调用的方式,进行智能合约和Dapp的交互,实现整个Dapp的开发打通。

如果你想在区块链开发上更进一步,此时你需要考虑的就会更多了,例如你可能发现链上交易的Gas费用越来越高,此时你需要考虑优化你的智能合约来降低每笔交易的Gas费用。你可能还需要使用到Layer2、多链或者侧链等扩展方案,学习Optimistic Rollups、ZKRollup等扩容工具。这部分内容就不在这篇文章里面介绍了。

相关文章:

2024年 Web3开发学习路线全指南

Web3是一个包含了很多领域的概念,不讨论币圈和链圈的划分,Web3包括有Defi、NFT、Game等基于区块链的Dapp应用的开发;也有VR、AR等追求视觉沉浸感的XR相关领域的开发;还有基于区块链底层架构或者协议的开发。 这篇文章给出的学习路…...

Ubuntu22.04LTS 部署前后端分离项目

一、安装mysql8.0 1. 安装mysql8.0 # 更新安装包管理工具 sudo apt-get update # 安装 mysql数据库,过程中的选项选择 y sudo apt-get install mysql-server # 启动mysql命令如下 (停止mysql的命令为:sudo service mysql stop&#xff0…...

「Mac玩转仓颉内测版23」基础篇3 - 深入理解整数类型

本篇将详细讲解Cangjie中的整数类型,探讨整数的定义、操作、表示范围、进制表示、类型转换及应用场景,帮助开发者在Cangjie中灵活运用整数类型构建程序逻辑。 关键词 有符号整数与无符号整数表示范围与溢出进制表示类型转换字面量与操作 一、整数类型概…...

渗透测试导学

渗透测试导学 渗透测试概念 渗透测试是干什么? 渗透测试的定义和目的:渗透测试是一种通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全性能的评估方法。它的目的是通过识别安全问题,帮助了解当前的安全状况,从而…...

Django实现智能问答助手-基础配置

设置 Django 项目、创建应用、定义模型和视图、实现问答逻辑,并设计用户界面。下面是一步一步的简要说明: 目录: QnAAssistant/ # 项目目录 │ ├── QnAAssistant/ # 项目文件夹 │ ├── init.py # 空文件 │ ├── settings.py # 项目配…...

亚马逊商品详情API接口解析,Json数据示例返回

亚马逊的商品详情API接口(如Amazon Product Advertising API)允许开发者获取商品的详细信息,包括价格、描述、图片URL等。以下是一个示例的JSON数据返回结构,以及相应的解析说明。请注意,实际返回的数据结构可能会根据…...

git根据远程分支创建本地新分支

比如我当前本地仓库有4个 remote 仓库&#xff0c;我希望根据其中的一个 <remote>/<branch> 创建本地分支&#xff1a; 先使用 github fetch <remote> 拉取 <remote> 的分支信息&#xff0c;然后在 git checkout -b 创建新分支时使用 -t <remote>…...

Android U 多任务启动分屏——SystemUI流程(更新中)

前文 Android U 多任务启动分屏——Launcher流程&#xff08;下分屏&#xff09; 前文说到通过ISplitScreen接口跨进程调用到了SystemUI进程&#xff0c;我们继续分析分屏在systemui中的实现。 wmshell实现分屏 实现ISplitScreen接口 代码路径&#xff1a;frameworks/base/…...

使用SaaS化的Aurora应用快速搭建私人ChatGPT助手

使用SaaS化的Aurora应用快速搭建私人ChatGPT助手 简介&#xff1a; Aurora是一个带UI且免费的GPT私人聊天助手&#xff0c;可切换GPT-3.5&#xff0c;4&#xff0c;4o等常用版本。用户可通过部署Aurora&#xff0c;快速打造自己专属的AI助手。阿里云计算巢已将Aurora打包为SaaS…...

.NET 9与C# 13革新:新数据类型与语法糖深度解析

记录&#xff08;Record&#xff09;类型 使用方式&#xff1a; public record Person(string FirstName, string LastName); 适用场景&#xff1a;当需要创建不可变的数据结构&#xff0c;且希望自动生成 GetHashCode 和 Equals 方法时。不适用场景&#xff1a;当数据结构需…...

2.fs文件系统模块

文章目录 [TOC](文章目录)2.5.练习-成绩管理2.5.1在files文件夹下新建成绩.txt文件2.5.2.新建对应的js文件 2.6.fs模块-路径动态拼接的问题 3.path路径模块3.1什么是path路径模块3.2.路径拼接3.3.获取路径中的文件名3.4.获取路径中的文件扩展名3.5.案例3.5.1.步骤13.5.2.调用fs…...

Ubuntu24.04LTS设置root用户可远程登录

Ubuntu24.04LTS设置root用户可远程登录 文章目录 Ubuntu24.04LTS设置root用户可远程登录1. 设置root密码2. 设置root用户可远程登录1. 查看ssh服务是否安装2. 安装ssh服务3. 再次查看ssh服务是否安装4. 配置ssh文件5. 重启ssh服务6. root远程登录 1. 设置root密码 Ubuntu安装后…...

ROS2指令总结(跟随古月居教程学习)

​ 博主跟随古月居博客进行ROS2学习&#xff0c;对ROS2相关指令进行了总结&#xff0c;方便学习和回顾。 古月居ROS2博文链接&#xff1a;https://book.guyuehome.com/ 本文会持续进行更新&#xff0c;觉得有帮助的朋友可以点赞收藏。 1. ROS2安装命令 $ sudo apt update &am…...

IPTV智慧云桌面,后台服务器搭建笔记

环境CentOs7.9 &#xff0c;安装宝塔yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 访问宝塔&#xff0c;修改服务器端口安全组端口 26029 注意&#xff01;&#xff01;&#xff01;&#xff01…...

徒手从零搭建一套ELK日志平台

徒手从零搭建一套ELK日志平台 日志分析的概述日志分析的作用主要收集工具集中式日志系统主要特点采集日志分类ELK概述初级版ELK终极版ELK高级版ELKELK收集日志的两种形式 搭建ELK平台Logstash工作原理Logstash核心概念环境准备安装部署docker添加镜像加速器安装部署Elasticsear…...

udp_socket

文章目录 UDP服务器封装系统调用socketbind系统调用bzero结构体清0sin_family端口号ip地址inet_addrrecvfromsendto 新指令 netstat -naup (-nlup)包装器 的两种类型重命名方式包装器使用统一可调用类型 关键字 typedef 类型重命名系统调用popen UDP服务器封装 系统调用socket …...

肝了半年,我整理出了这篇云计算学习路线(新手必备,从入门到精通)

大家好&#xff01;我是凯哥&#xff0c;今天给大家分享一下云计算学习路线图。这是我按照自己最开始学习云计算的时候的学习路线&#xff0c;并且结合自己从业多年所涉及的知识精心总结的云计算的思维导图。这是凯哥精心总结的&#xff0c;花费了不少精力哦&#xff0c;希望对…...

【Golang】手搓DES加密

代码非常长 有六百多行 参考一位博主的理论实现 通俗易懂&#xff0c;十分钟读懂DES 还有很多不足的地方 感觉只是个思路 S盒&#xff08;理论既定&#xff09; package src// 定义S - 盒的置换表 var SBoxes [8][4][16]int{{{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, …...

YouQu使用手册【元素定位】

元素定位 文章目录 前言一、气泡识别二、不依赖OpenCV的图像识别方案三、动态图像识别四、背景五、sniff(嗅探器)使用六、元素操作七、框架封装八、背景【OCR识别】九、实现原理十、使用说明十一、RPC服务端部署十二、负载均衡十三、链式调用十四、背景【相对坐标定位】十五、…...

Spark RDD sortBy算子什么情况会触发shuffle

在 Spark 的 RDD 中&#xff0c;sortBy 是一个排序算子&#xff0c;虽然它在某些场景下可能看起来是分区内排序&#xff0c;但实际上在需要全局排序时会触发 Shuffle。这里我们分析其底层逻辑&#xff0c;结合源码和原理来解释为什么会有 Shuffle 的发生。 1. 为什么 sortBy 会…...

机器视觉相机重要名词

机器视觉相机的重要名词包括&#xff1a; • 工业数字相机&#xff1a;又称工业相机&#xff0c;是机器视觉系统中的关键组件。 • 电荷偶合元件&#xff08;CCD&#xff09;&#xff1a;一种图像传感器&#xff0c;能将光学影像转换为数字信号。 • 互补金属氧化物半导体&…...

Django:从入门到精通

一、Django背景 Django是一个由Python编写的高级Web应用框架&#xff0c;以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发&#xff0c;旨在简化Web应用的开发过程。作为一个开放源代码项目&#xff0c;Django迅速吸引了大量的开发…...

android viewpager2 嵌套 recyclerview 手势冲突

老规矩直接上代码&#xff0c; 不分析&#xff1a; import android.content.Context import android.util.AttributeSet import android.view.MotionEvent import android.view.View import android.view.ViewConfiguration import android.view.ViewGroup import android.widg…...

依赖管理(go mod)

目录 各版本依赖管理的时间分布 一、GOPATH 1. GOROOT是什么 定义&#xff1a; 作用&#xff1a; 默认值&#xff1a; 是否需要手动设置&#xff1a; 查看当前的 GOROOT&#xff1a; 2. GOPATH&#xff1a;工作区目录 定义&#xff1a; 作用&#xff1a…...

Apple Vision Pro开发001-开发配置

一、Vision Pro开发硬件和软件要求 硬件要求软件要求 1、Apple Silicon Mac(M系列芯片的Mac电脑) 2、Apple vision pro-真机调试 XCode15.2及以上&#xff0c;调试开发和打包发布Unity开发者账号&&苹果开发者账号 二 、开启无线调试 1、Apple Vision Pro和Mac连接同…...

android 动画原理分析

一 android 动画分为app内的view动画和系统动画 基本原理都是监听Choreographer的doframe回调 二 app端的实现是主要通过AnimationUtils来实现具体属性的变化通过invilate来驱动 wms来进行更新。这个流程是在app进程完成 这里不是我分析的重点 直接来看下系统动画里面的本地动…...

Elasticsearch 6.8 分析器

在 Elasticsearch 中&#xff0c;分析器&#xff08;Analyzer&#xff09;是文本分析过程中的一个关键组件&#xff0c;它负责将原始文本转换为一组词汇单元&#xff08;tokens&#xff09;。 分析器由三个主要部分组成&#xff1a;分词器&#xff08;Tokenizer&#xff09;、…...

实验室资源调度系统:基于Spring Boot的创新

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

实验三:构建园区网(静态路由)

目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验任务及要求 1、任务 1&#xff1a;完成网络部署 2、任务 2&#xff1a;设计全网 IP 地址 3、任务 3&#xff1a;实现全网各主机之间的互访 六、实验步骤 1、在 eNSP 中部署网络 2、配置各主机 IP …...

3. SQL优化

SQL性能优化 在日常开发中&#xff0c;MySQL性能优化是一项必不可少的技能。本文以具体案例为主线&#xff0c;结合实际问题&#xff0c;探讨如何优化插入、排序、分组、分页、计数和更新等操作&#xff0c;帮助你实现数据库性能的飞跃。 一、索引设计原则 索引是MySQL优化的…...

网站排名快速见效的方法/口碑营销是什么意思

参考文档 :https://www.runoob.com/w3cnote/flex-grammar.html flex 弹性 order 子标签属性 多个盒子排放顺序 默认0 父元素设置 display:flex 子元素 flex : 1 order:10父元素设置 colum竖着 主轴的方向 row 横着 flex-direction:column; 父元素设置文本垂直上下居中 displa…...

网站建设管理工作总结报告/软文文案案例

1.Android 5.0 删除ActionBar下面的阴影 于Android 5.0假设你发现的ActionBar下面出现了阴影&#xff0c;例如&#xff0c;下面的设置&#xff0c;以消除阴影&#xff1a; getActionBar().setElevation(0); Android 5.0之前能够用以下代码消除阴影&#xff1a; <item name&q…...

网站如何做才容易被搜索到/100个关键词

为什么80%的码农都做不了架构师&#xff1f;>>> 上一篇文章:http://my.oschina.net/stu51/blog/168739 JFinal 整合 Shiro 补充Realm类和数据库 增加密码加密及修改shiro.principal输出值为用户名 public void checklogin() {String pwd new Sha256Hash(getPara…...

怎么做体育直播网站/前端性能优化

以下列出mysql函数的使用&#xff0c;并不完全&#xff0c;涉及到多少写多少。length(str)&#xff1a;返回字符串(str)的字符长度。一个汉字算三个字符&#xff0c;一个数字或字母算一个字符。select length(测试); --6select length(123abc); --6char_length(str)&#xff1a…...

做外贸网站价格/网站友情链接连接

16进制字符串与字节数组进行转换 package string;import java.util.Arrays;/*** byte[]与16进制字符串相互转换* * date&#xff1a;2017年4月10日 下午11:04:27 */ public class BytesHexStrTranslate {private static final char[] HEX_CHAR {0, 1, 2, 3, 4, 5, 6, 7, 8,…...

政府网站建设背景说明/网上卖货的平台有哪些

2019独角兽企业重金招聘Python工程师标准>>> 场景&#xff1a;在B/S结构的系统中&#xff0c;有时客户端需要实时的获得服务器反馈的消息&#xff0c;但是HTTP协议只支持请求响应模式&#xff0c;所以我们经常通过轮询(polling)、长轮询(Long polling)、长连接、Web…...