React 学习之 Hello World
React 学习之 Hello World React 简介 React是一个用于构建用户界面的JavaScript库,由Facebook开发并维护。React通过声明式的方式来构建UI,使得代码更易于理解和测试。React的核心概念包括组件(Component)和虚拟DOM(Virtual DOM)。 组件:在React中,UI被构建为组件的集合。组件是封装了HTML、CSS和JavaScript代码的可重用单元。它们可以是函数或类,接受输入(称为“props”)并返回React元素树,这些元素树描述了用户界面在某一时刻的外观。 虚拟DOM:React使用虚拟DOM来提高性能。当组件的状态或属性发生变化时,React会创建一个新的虚拟DOM树,并将其与之前的树进行比较。然后,React计算出差异并仅将这些差异应用到实际的DOM中,从而实现高效的UI更新。 React的生态系统非常丰富,包括React Native(用于构建原生移动应用的框架)、Redux(用于管理应用状态的库)以及许多其他工具和库。这使得React成为构建复杂Web和移动应用的强大工具。 React的优点包括: 组件化:通过将UI拆分为独立的、可重用的组件,可以提高代码的可维护性和可测试性。 声明式:React使用声明式语法来描述UI,这使得代码更易于阅读和理解。 高效性能:虚拟DOM和React的更新策略使得应用能够高效地响应状态变化。 灵活性:React可以与多种其他库和工具配合使用,以满足不同项目的需求。 然而,React也有其局限性,例如学习曲线较陡峭,需要一定的JavaScript基础才能有效使用。此外,对于大型项目,可能需要额外的工具和库来管理状态和路由等复杂问题。 总之,React是一个强大的JavaScript库,适用于构建各种规模和复杂度的Web和移动应用。通过掌握React的核心概念和生态系统中的工具,开发者可以创建出高效、可维护且用户友好的界面。 React的核心概念是什么 React的核心概念主要包括以下几个方面: 组件(Components): React中构建用户界面的基本单位是组件。组件可以看作是一个独立的、可复用的代码块,它接受输入(通常是以“props”形式传递的数据)并返回React元素树,这些元素树描述了用户界面的一部分。 组件可以是函数组件或类组件。函数组件接受props并返回JSX元素;类组件则继承自React.Component类,具有更多的生命周期方法和状态管理功能。 JSX(JavaScript XML): JSX是React中用于描述用户界面的一种语法扩展。它允许我们在JavaScript代码中编写类似HTML的结构,并在编译时转换成React元素。JSX使得组件的代码更加直观和易于理解。 虚拟DOM(Virtual DOM): React使用虚拟DOM来提高应用的性能。当组件的状态或属性发生变化时,React会创建一个新的虚拟DOM树,并与之前的虚拟DOM树进行比较。通过比较这两个树,React能够计算出最小的DOM操作来更新实际的DOM,从而实现高效的UI更新。 状态(State)和属性(Props): 状态是组件内部的数据,它决定了组件的渲染输出。状态是私有的,并且只能通过组件内部的方法(如setState)来更新。 属性是父组件传递给子组件的数据。子组件通过props接收这些数据,并使用它们来渲染输出。属性是只读的,子组件不能修改它们。 生命周期方法(Lifecycle Methods): 类组件具有一系列的生命周期方法,这些方法在组件的不同阶段(如挂载、更新、卸载)被调用。生命周期方法允许开发者在组件的不同阶段执行特定的逻辑,如数据获取、副作用处理等。 钩子(Hooks): Hooks是React 16.8版本中引入的新特性,它们允许开发者在不编写类的情况下使用state以及其他的React特性。通过使用钩子,函数组件可以拥有与类组件相同的功能,同时保持代码的简洁和可维护性。 这些核心概念共同构成了React的基础,使得开发者能够高效地构建出复杂且响应式的用户界面。通过掌握这些概念,开发者可以充分利用React的优势来创建出高质量的Web应用。 React 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Hello World</title> <!-- 引入React 的核心库 --> <script src="script/react.development.js"></script> <!-- 引入React 的DOM库 --> <script src="script/react-dom.development.js"></script> </head> <body> <div id="root"></div> <script> /* https://unpkg.com/react@18.2.0/umd/react.development.js https://unpkg.com/react-dom@18.2.0/umd/react-dom.development.js */ // React 就是用来代替DOM的 // // 通过DOM向页面中添加一个div // // 创建一个div // const div = document....
Substrate 区块链开发之本地网络启动
Substrate 区块链开发之本地网络启动 What is Substrate? Substrate 是一个软件开发工具包 (SDK),它使用基于 Rust 的库和工具,使您能够从模块化和可扩展的组件构建特定于应用程序的区块链。使用 Substrate 构建的特定于应用程序的区块链可以作为独立服务运行,也可以与其他链并行运行,以利用 Polkadot 生态系统提供的共享安全性。Substrate 包含区块链基础设施核心组件的默认实现,让您能够专注于应用程序逻辑。 安装 https://docs.substrate.io/install/macos/ 本地网络启动实操 https://docs.substrate.io/tutorials/build-a-blockchain/build-local-blockchain/ https://github.com/substrate-developer-hub/substrate-node-template 克隆仓库 1 git clone git@github.com:substrate-developer-hub/substrate-node-template.git 切换目录 1 cd substrate-node-template 创建一个新分支 1 git switch -c my-learning-branch-2024-03-16 编译 1 cargo build --release 启动本地 Substrate 节点 1 ./target/release/node-template --dev --tmp 启动第一个区块链节点 alice 1 ./target/release/node-template --chain local --alice --tmp 启动第二个区块链节点 bob 1 ./target/release/node-template --chain local --bob --tmp 将链规范转换为原始格式 Convert the chain specification to raw format https://docs.substrate.io/tutorials/build-a-blockchain/add-trusted-nodes/ 1 ./target/release/node-template build-spec --chain=local --raw > spec.json 读取spec.json文件的内容,搜索包含“boot”的行,并显示这些行以及它们前后各两行的内容 1 cat spec.json | grep boot -C 2 启动第二个区块链节点,此命令包含--bootnodes选项并指定单个引导节点,即由 启动的节点alice 1 ./target/release/node-template --chain local --bob --tmp --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWBGJ3YcEgqt2BjFmWDv2fkqWPkKrDreWiGyreA7z72UnW polkadot.js. 查看 https://polkadot.js.org/apps/#/explorer polkadot.js 查看出块信息 交易之前查询 交易 提交交易 交易之后 查询交易后的值
Solana 开发学习之与Solana合约交互
Solana 开发学习之与Solana合约交互 Solana的Web3.js 相关链接 https://github.com/web3/web3.js https://github.com/solana-labs/solana-web3.js https://solana-labs.github.io/solana-web3.js/ 安装 solana-web3.js 1 $ npm install --save @solana/web3.js 通过 WalletAdatper 与钱包交互 https://github.com/anza-xyz/wallet-adapter https://bobbyhadz.com/blog/module-not-found-cant-resolve-crypto
Solana 开发学习之通过RPC与Solana交互
Solana 开发学习之通过RPC与Solana交互 相关链接 https://solana.com/docs/rpc/http https://www.jsonrpc.org/specification https://www.json.org/json-en.html JSON-RPC 2.0 规范 JSON-RPC 是一种无状态、轻量级远程过程调用 (RPC) 协议。该规范主要定义了几种数据结构及其处理规则。它与传输无关,因为这些概念可以在同一进程中、通过套接字、通过 http 或在许多不同的消息传递环境中使用。它使用JSON ( RFC 4627 ) 作为数据格式。 接口RPC 节点相关接口 获取集群节点信息 通过getClusterNodes方法可以获得当前网络内,集群节点的相关信息,比如验证者的key,节点IP,节点版本等。 1 2 3 4 5 6 7 8 9 10 11 curl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "id": 1, "method": "getClusterNodes" } ' {"jsonrpc":"2.0","result":[{"featureSet":3580551090,"gossip":"67.209.54.90:8001","pubkey":"7pbH563fFai2Gm8aXGi27Toj1i7x55rGp7QQ8ZQt6C7i","pubsub":null,"rpc":null,"shredVersion":503,"tpu":"67.209.54.90:8004","tpuQuic":"67.209.54.90:8010","version":"1.17.21"},{"featureSet":3580551090,"gossip":"37.27.61.250:8000","pubkey":"HPpYXZ944SXpJB3Tb7Zzy2K7YD45zGREsGqPtEP43xBx","pubsub":null,"rpc":null,"shredVersion":503,"tpu":"37.27.61.250:8003","tpuQuic":"37.27.61.250:8009","version":"1.17.22"}, ...... {"featureSet":3011420684,"gossip":"69.197.5.60:8001","pubkey":"FKizb2faoz57ym1bTWcZhei3aUZu7eU5AiY1EYoZsok6","pubsub":null,"rpc":null,"shredVersion":503,"tpu":null,"tpuQuic":null,"version":"1.17.5"}],"id":1} 区块相关接口 获取当前区块高度 通过getBlockHeight可以获取当前的区块高度 https://solana.com/docs/rpc/http/getblockheight 1 2 3 4 5 6 7 curl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d ' { "jsonrpc":"2.0","id":1, "method":"getBlockHeight" } ' {"jsonrpc":"2.0","result":268621259,"id":1} 获取最近的Block Hash https://solana.com/docs/rpc/http/getlatestblockhash 1 2 3 4 5 6 7 8 9 10 11 12 13 curl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d ' { "id":1, "jsonrpc":"2.0", "method":"getLatestBlockhash", "params":[ { "commitment":"processed" } ] } ' {"jsonrpc":"2.0","result":{"context":{"apiVersion":"1.17.21","slot":280325472},"value":{"blockhash":"9ebRPaCY2pcKAPhWzjDtmLArbSzAH1Mb5n8PZzXKbW8X","lastValidBlockHeight":268622097}},"id":1} 获取指定高度block的信息 https://solana.com/docs/rpc/http/getblock 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 curl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2....
Solana 开发学习之Solana 基础知识
Solana 开发学习之Solana 基础知识 Install the Solana CLI 相关链接 https://docs.solanalabs.com/cli/install https://solanacookbook.com/zh/getting-started/installation.html#%E5%AE%89%E8%A3%85%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7 https://www.solanazh.com/course/1-4 https://solana.com/zh/developers/guides/getstarted/setup-local-development 实操 安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sh -c "$(curl -sSfL https://release.solana.com/v1.18.2/install)" downloading v1.18.2 installer ✨ 1.18.2 initialized Adding export PATH="/Users/qiaopengjun/.local/share/solana/install/active_release/bin:$PATH" to /Users/qiaopengjun/.profile Adding export PATH="/Users/qiaopengjun/.local/share/solana/install/active_release/bin:$PATH" to /Users/qiaopengjun/.zprofile Adding export PATH="/Users/qiaopengjun/.local/share/solana/install/active_release/bin:$PATH" to /Users/qiaopengjun/.bash_profile Close and reopen your terminal to apply the PATH changes or run the following in your existing shell: export PATH="/Users/qiaopengjun/.local/share/solana/install/active_release/bin:$PATH" 配置环境变量 1 2 3 4 vim .zshrc # 复制并粘贴下面命令以更新 PATH export PATH="/Users/qiaopengjun/.local/share/solana/install/active_release/bin:$PATH" 通过运行以下命令确认您已安装了所需的 Solana 版本: 1 2 3 4 5 solana --version # 实操 solana --version solana-cli 1.18.2 (src:13656e30; feat:3352961542, client:SolanaLabs) 切换版本 1 solana-install init 1.16.4 设置网络环境 官方RPC地址分别是: DevNet: https://api.devnet.solana.com TestNet: https://api.testnet.solana.com MainNet: https://api.mainnet-beta.solana.com 相关链接 https://solana.com/zh/rpc 实操 1 2 3 4 5 6 7 solana config set --url https://api.devnet.solana.com Config File: /Users/qiaopengjun/.config/solana/cli/config.yml RPC URL: https://api.devnet.solana.com WebSocket URL: wss://api....
Rust学习之Diesel setup报错解决
Diesel setup报错解决 Diesel 是一个安全、可扩展的Rust ORM 和查询生成器。 Diesel 是 Rust 中与数据库交互最高效的方式,因为它对查询进行了安全且可组合的抽象。 1. 报错信息 1 2 3 4 5 6 diesel_demo on master [?] via 🦀 1.75.0 via 🅒 base ➜ diesel setup Creating migrations directory at: /Users/qiaopengjun/Code/rust/diesel_demo/migrations Creating database: postgres could not translate host name "db" to address: nodename nor servname provided, or not known 2. 解决方案 检查数据库是否正常运行 检查数据库连接配置是否正确 检查数据库用户名和密码是否正确 1 2 sudo vim /etc/hosts 127.0.0.1 db 3. 参考文档 https://diesel.rs/ https://github.com/diesel-rs/diesel
Rust 所有权和 Move 语义
Rust 所有权和 Move 语义 所有权和生命周期是 Rust 和其它编程语言的主要区别,也是 Rust 其它知识点的基础。 动态数组因为大小在编译期无法确定,所以放在堆上,并且在栈上有一个包含了长度和容量的胖指针指向堆上的内存。 恰到好处的限制,反而会释放无穷的创意和生产力。 Rust 所有权规则 一个值只能被一个变量所拥有,这个变量被称为所有者。 一个值同一时刻只能有一个所有者,也就是说不能有两个变量拥有相同的值。所以对应变量赋值、参数传递、函数返回等行为,旧的所有者会把值的所有权转移给新的所有者,以便保证单一所有者的约束。 当所有者离开作用域,其拥有的值被丢弃,内存得到释放。 这三条规则很好理解,核心就是保证单一所有权。其中第二条规则讲的所有权转移是 Move 语义,Rust 从 C++ 那里学习和借鉴了这个概念。 第三条规则中的作用域(scope)指一个代码块(block),在 Rust 中,一对花括号括起来的代码区就是一个作用域。举个例子,如果一个变量被定义在 if {} 内,那么 if 语句结束,这个变量的作用域就结束了,其值会被丢弃;同样的,函数里定义的变量,在离开函数时会被丢弃。 所有权规则,解决了谁真正拥有数据的生杀大权问题,让堆上数据的多重引用不复存在,这是它最大的优势。 但是,它也有一个缺点,就是每次赋值、参数传递、函数返回等行为,都会导致旧的所有者把值的所有权转移给新的所有者,这会导致一些性能上的问题。 Rust 提供了两种解决方案: 如果你不希望值的所有权被转移,在 Move 语义外,Rust 提供了 Copy 语义。如果一个数据结构实现了 Copy trait,那么它就会使用 Copy 语义。这样,在你赋值或者传参时,值会自动按位拷贝(浅拷贝)。 如果你不希望值的所有权被转移,又无法使用 Copy 语义,那你可以“借用”数据。 Rust 生命周期 生命周期(lifetime)是 Rust 中的一个概念,它描述了一个引用(reference)的生命周期。 在 Rust 中,生命周期可以用来解决引用(reference)的悬垂(dangling)问题。 Rust 中的引用 在 Rust 中,引用(reference)是一个特殊的指针,它指向一个特定的数据,并且可以被用来访问该数据。 Rust 中的引用(reference)分为两种: 不可变引用(immutable reference):不可变引用是指指向不可变数据的引用,即不能修改被引用的数据。 可变引用(mutable reference):可变引用是指指向可变数据的引用,即可以修改被引用的数据。 Rust 中的引用(reference)是借用(borrow)的语法糖,它使得 Rust 中的数据更加安全。 Rust 中的生命周期 在 Rust 中,生命周期(lifetime)是引用(reference)的一个属性,它描述了一个引用(reference)的生命周期。 Rust 中的生命周期(lifetime)分为两种: 静态生命周期(‘static):静态生命周期是指引用(reference)的生命周期直到程序结束。 动态生命周期(‘a):动态生命周期是指引用(reference)的生命周期由其作用域(scope)决定。 Rust 中的借用检查器 在 Rust 中,借用检查器(borrow checker)是一个工具,它用于检查引用(reference)的合法性。 在 Rust 中,借用检查器会检查引用的生命周期,以确保引用的有效性。如果引用的生命周期不合法,那么编译器会给出错误提示。 Rust 中的所有权和借用规则 在 Rust 中,所有权和借用规则是 borrow checker 的基础。 Rust 的所有权规则规定,每个值都有一个所有者(owner),并且每个值只能有一个所有者。当所有者离开作用域时,该值将被丢弃。 Rust 的借用规则规定,当一个值被借出时,不能被再次借出。 Rust 中的生命周期规则 在 Rust 中,生命周期规则规定,当一个值被借出时,其生命周期必须大于等于所有者的生命周期。 如果一个值的生命周期小于所有者的生命周期,那么编译器会给出错误提示。 Rust 中的生命周期省略规则 在 Rust 中,生命周期省略规则规定,当一个值被借出时,其生命周期可以被省略。 如果编译器能够根据上下文推断出该值的生命周期,那么编译器会自动将其生命周期省略。 Rust 中的生命周期标注规则 在 Rust 中,生命周期标注规则规定,当一个值被借出时,其生命周期必须被标注。 如果编译器无法推断出该值的生命周期,那么编译器会给出错误提示。
Dojoup 安装问题解决
Dojoup 安装问题解决 Install Dojoup https://book.dojoengine.org/getting-started/quick-start.html 1 curl -L https://install.dojoengine.org | bash 安装失败 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 dojoup ═════════════════════════════════════════════════════════════════════════ ██████╗ ██████╗ ██╗ ██████╗ ██╔══██╗██╔═══██╗ ██║██╔═══██╗ ██║ ██║██║ ██║ ██║██║ ██║ ██║ ██║██║ ██║██ ██║██║ ██║ ██████╔╝╚██████╔╝╚█████╔╝╚██████╔╝ ╚═════╝ ╚═════╝ ╚════╝ ╚═════╝ Repo : https://github.com/dojoengine/dojo Book : https://book.dojoengine.org/ Chat : https://discord.gg/dojoengine https://t.me/dojoengine ═════════════════════════════════════════════════════════════════════════ dojoup: installing dojo (version , tag ) https://github.com/dojoengine/dojo/releases/download//dojo__darwin_arm64.tar.gz dojoup: downloading latest dojo ########################################################################################################################################################## 100.0% tar: Error opening archive: Unrecognized archive format dojoup: command failed: tar -xzC /Users/qiaopengjun/....
Starknet开发实战
Starknet开发实战 以太坊网络架构 以太坊有共识、数据可用性、结算、执行四个模块。 共识层 共识层指的是节点就区块链上哪些数据可以被验证为真实和准确达成协议的机制。 共识协议决定了交易如何排序,以及新区块如何被添加到链上。 执行层 执行层是区块链上的节点如何处理交易,以在不同状态之间过渡区块链。 参与共识的节点必须使用他们的区块链副本执行交易,以便在验证区块之前进行证明。 数据可用性 区块提议者发布区块的所有交易数据并且交易数据可供其他网络参与者使用的保证。 简单来讲,数据可用性是一个通信标准,以保证某个节点的数据可被另一个节点所接收并验证为正确,从而保证安全。 区块链执行的规则要求交易数据的可用性。这意味着区块生产者必须为每个区块发布数据,供网络对等者下载和存储;这些数据必须应要求提供。 结算层 区块链提供了 “最终性”–保证已经提交到链的历史的交易是不可逆的(或 “不可改变的”)。 要做到这一点,区块链必须确信交易的有效性。因此,结算功能需要链来验证交易,验证证明,并仲裁争端。 安装 https://foundry-rs.github.io/starknet-foundry/getting-started/installation.html https://book.cairo-lang.org/ch01-01-installation.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 curl -L https://raw.githubusercontent.com/foundry-rs/starknet-foundry/master/scripts/install.sh | sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1616 100 1616 0 0 691 0 0:00:02 0:00:02 --:--:-- 691 Installing snfoundryup... ######################################################################## 100.0% Detected your preferred shell is zsh and added snfoundryup to PATH. Run 'source /Users/qiaopengjun/.zshenv' or start a new terminal session to use snfoundryup. Then, simply run 'snfoundryup' to install Starknet-Foundry. ~ via 🅒 base took 3.3s ➜ snfoundryup starknet-foundry-install: retrieving latest version from https://github.com/foundry-rs/starknet-foundry... starknet-foundry-install: downloading starknet-foundry-v0....
计算机网络原理之计算机网络概述
计算机网络原理之计算机网络概述 一、计算机网络基本概念 计算机网络的定义 计算机网络(Computer Network)是若干结点(Host)通过通信设备连接起来的计算机系统,这些计算机通过通信设备进行信息交换。 从技术范畴来看,计算机网络是计算机技术与通信技术相互融合的产物。 计算机网络是互连的、自治的计算机的集合,这些计算机通过通信设备进行信息交换。 ISP 网络由许多有线或无线通信链路互连分组交换设置构成。 分组交换设备可以实现数据分组的接收与转发,是构成 Internet 的重要基础,存在多种形式,最典型的是路由器和交换机。 协议的定义 协议(Protocol)是计算机网络中,计算机之间通信必须遵守的规则,这些规则将数据划分为具有特定含义的组件,并通过这些组件在计算机之间传递数据。 协议是计算机网络中,计算机之间进行通信时所必须遵守的规则的集合。 协议三要素 语法:语法是用来规定语言的规则,计算机网络协议的语法就是对数据包中数据的组织格式进行定义。 语义:语义是用来规定语言的含意,计算机网络协议的语义是对数据包中数据的含意进行定义。 同步:同步就是对发送和接收双方的数据发送和接收速率进行协调。 计算机网络的功能 硬件资源共享 软件资源共享 信息资源共享 计算机网络的分类 按覆盖范围分类 广域网 WAN(Wide Area Network):覆盖范围很广的计算机网络,通常跨接很大的地理距离,所覆盖的范围从几十公里到几千公里,甚至全球。 城域网 MAN(Metropolitan Area Network):覆盖范围较小的计算机网络,通常覆盖一个城市,也可以覆盖一个城市里的几个区 局域网 LAN(Local Area Network):覆盖范围较小的计算机网络,通常覆盖一个校园,一个公司,或者一个单位。 个人区域网 PAN(Personal Area Network):覆盖范围极小的计算机网络,通常覆盖一个家庭,一个宿舍或一个办公室。 按拓扑结构分类 总线型拓扑结构 环型拓扑结构 星型拓扑结构 网状拓扑结构 树形拓扑结构 混合拓扑结构 按交换方式分类 电路交换(Circuit Switching):在通信开始前,通信双方需要先建立一个通信电路,然后通信双方通过这个电路进行通信。通信的结束也通过释放这个通信电路来结束。 报文交换(Message Switching):报文交换的交换节点即交换机,交换机中存储着大量报文,报文交换机根据报文中的地址信息将报文转发到下一个交换机。报文交换的交换节点即交换机,交换机中存储着大量报文,报文交换机根据报文中的地址信息将报文转发到下一个交换机。 分组交换(Packet Switching):分组交换的交换节点即交换机,交换机中存储着大量分组,分组交换机根据分组中的地址信息将分组转发到下一个交换机。 按传输介质分类 无线传输介质 有线传输介质 按网络模型分类 OSI 七层模型 TCP/IP 四层模型 客户-服务器模型 按网络用户属性分类 公用网 私有网 二、计算机网络结构 网络边缘 终端系统(End System):终端系统也称为用户终端(User Equipment),直接连到网络的计算机,是网络边缘设备,是计算机用户访问网络的入口。 边缘路由器(Edge Router):边缘路由器也称为网络接入设备(Network Access Device),是网络边缘设备,是终端系统接入互联网的网关,是网络边缘的入口。 接入网络 常见的接入网络包括以下几类: 电话拨号接入 非对称数字用户线路 ADSL 混合光纤同轴电缆 HFC 接入网络 局域网 移动接入网络 网络核心 三、数据交换技术 数据交换的概念 电路交换 建立电路 传输数据 拆除电路 报文交换 报文交换机 报文 存储转发 分组交换 分组交换的基本原理 分组交换的优点 交换设备存储容量要求低 交换速度快 可靠传输效率高 更加公平 分组长度的确定 分组长度与延迟时间 分组长度与误码率 四、计算机网络性能 速率与带宽 时延 结点处理时延 排队时延 传输时延 传播时延 时延带宽积 丢包率 吞吐量 五、计算机网络体系结构 计算机网络分层体系结构 OSI 参考模型 TCP/IP 参考模型 五层参考模型 计算机网络与因特网发展简史