Vue 设计与实现一、平衡的艺术1、命令式与声明式命令式与声明式的定义
命令式编程:关注过程,开发者手动控制每一步操作。
声明式编程:关注结果,开发者只需声明期望的结果,框架(如 Vue)负责过程。
命令式和声明式的对比示例:如何实现以下需求?
获取 id 为 app 的 div 标签
将文本内容设为 hello world
绑定点击事件,点击时弹出提示框
命令式实现:
123const div = document.querySelector('#app');div.innerText = 'hello world';div.addEventListener('click', () => alert('ok') );
声明式实现:
1<div id="app" @click="() => alert('ok')">hello world</div>
在声明式编程中,我们只关心结果,如何实现由 Vue 来处理。
2、性能与可维护性的权衡性能对比命令式和声明式各有优缺点,尤其在性能方面,声明式代码通常会稍微比命令式差,原因如下:
示例:更 ...
meting-api修改
meting-js可以用于播放音乐, 但是由于很多歌曲都需要vip, 所以很多歌曲都无法播放。
修改后的源代码(只修改了qq音乐)
一、获取meting-apimeting-js可以添加自己的api, 所以可以通过修改meting-api来添加获取歌曲的其他方式。
1git clone https://github.com/xizeyoupan/Meting-API
二、metting-api添加获取歌曲的方法在src\providers\tencent\song.js是获取QQ音乐 歌曲信息、下载链接的方法。
添加下面的方法, 我这里使用的是gequbao.com来获取歌曲的url。
12345678910111213141516171819202122232425262728293031323334353637const find_download_url = async (id) => { const url = 'https://www.gequbao.com/api/play-url'; let result = await f ...
现代游览器一、游览器架构1、早期游览器早期游览器使用的单进程单线程
缺点
不安全所有模块共享进程权限(如文件读写),恶意插件或脚本可直接利用高权限攻击系统。
不流畅核心任务(如渲染、JS 执行)运行在同一线程,长时间任务(复杂 JS 计算)会阻塞线程,导致页面卡顿或无响应。
不稳定单进程内模块耦合紧密,任一组件(如插件)崩溃会直接导致整个浏览器崩溃,多标签页同时受影响。
2、现代游览器现代游览器使用多进程, 谷歌游览器会为每一个标签页启动一个进程运行(渲染进程)
现代游览器的进程
进程
负责
browser
浏览器基本功能,包括导航栏、导航按钮、书签、网络请求、文件读写等。
renderer * n
tab 内和网页展示相关的所有工作,主要是将 HTML,CSS,以及 JavaScript 转变为我们可以进程交互的网页内容。 Chrome 为每一个 tab 甚至是页面里面的每一个 iframe 都分配一个单独的进程
Extension * n
每个扩展程序可运行在独立的进程中,确保安全隔离。
GPU
处理来自不同 tab 的渲染请求并把它在同一个界面上画出来 ...
ospf 协议一、分类
ospf 属于动态路由协议、IGP(内部网关协议)使用 ls 算法
ospf 根据链路开销选择最优路径
二、为什么要使用 ospfrip 的缺点
收敛速度慢: 网络改变后收敛速度慢, 需要经过刷新计时器后才会删除
可扩展性不高: rip 跳数限制为 16, 最大中间路由数量 15 个
带宽消耗大: rip 每隔 30 秒发送更新报文, 带宽消耗高
度量值不科学: 使用距离作为度量值
三、ospf 原理
实验拓扑图
1、收敛过程
步骤
过程描述
相关机制
1. 初始化路由表
路由器启动后,基于直连接口生成初始类型 1 LSA(Router LSA),并加入 LSDB。同时自动通过 Hello 报文发现邻居。
路由器开机后自动触发 Hello 报文检测邻居并更新初始路由表。
2. 邻居发现
使用 Hello 报文检测相邻路由器。邻居关系从 Down -> Init -> 2-Way 状态。
- Down:未收到对方 Hello- Init:收到 Hello,但未建立双向通信- 2-Way:双向通信已建立。Hello 间隔 ...
二层和三层转发一、二层
行为
条件
举例
转发
- 已知目的MAC地址:MAC地址表中有该帧的目的MAC地址记录,指向某个端口。
- 单播帧:目的MAC地址为00:1A:2B:3C:4D:5E,对应端口为Port 2,交换机将帧转发到Port 2。
丢弃
- 无效或损坏的帧:例如FCS校验失败。
- 损坏的帧:FCS校验失败,交换机丢弃该帧。
- MAC地址学习限制:MAC地址表已满,无法记录新的源MAC地址。
- 网络安全策略:访问控制列表(ACL)或其他安全策略限制帧通过。
- 源MAC地址与目的MAC地址相同。
泛洪
- 未知目的MAC地址:MAC地址表中没有找到目的MAC地址记录,交换机会将帧泛洪到除源端口外的所有端口。
- 未知目的MAC地址:目的MAC地址为00:1B:2C:3D:4E:5F,MAC地址表无记录,交换机泛洪该帧。
- 广播帧:目的MAC地址为FF:FF:FF:FF:FF。
- 广播帧:ARP请求帧,交换机将该帧泛洪到所有端口。
- 组播帧:默认泛洪,除非配置了组播优化协议(如IGMP Snooping)。 ...
BGP协议
BGP的设计目的:正是为了在不同的自治系统之间进行路由信息的交换。互联网是由无数个自治系统相互连接组成的全球网络,每个自治系统可能运行自己的内部路由协议(如OSPF、RIP等),但在自治系统之间,需要使用BGP来交换路由信息,以实现全球范围的网络连通。
自治系统(AS):是指在单一技术管理下的一组IP网络或路由器,通常由一个互联网服务提供商(ISP)、大型企业网络或其他大型组织构成。每个自治系统都有一个唯一的自治系统编号(ASN),由互联网号码分配机构(如IANA或RIR)分配。
一、IGP 和 EGP 的区别
特性
IGP(内部网关协议)
EGP(外部网关协议)
全称
Interior Gateway Protocol
Exterior Gateway Protocol
适用范围
自治系统(AS)内部
自治系统(AS)之间
目的
管理和优化 AS 内部的路由
交换和管理 AS 之间的路由
协议示例
OSPF、EIGRP、RIP、IS-IS
BGP(Border Gateway Protocol)
复杂性
相对简单,主要关注内部网络连接优化
相 ...
vlan通信原理一、vlan的作用
vlan(Virtual Local Area Network)是将一个物理的局域网在逻辑上划分成多个广播域的技术, 实现同一个个vlan的用户可以进行二层互访, 而不同vlan间的用户被二层隔离, 这样既可以隔离广播域, 又能提高网络的安全性。
作用
说明
应用场景
网络隔离
将一个物理网络划分为多个逻辑网络,VLAN之间的流量相互隔离,增强网络的逻辑划分能力。
不同部门(如财务部、研发部、市场部)划分为不同VLAN,保证数据隔离。
减少广播风暴
限制广播域范围,减少广播流量在整个网络中的传播,提升网络性能。
在大型企业网络中,避免广播流量占用过多带宽,造成网络拥塞。
提高网络安全性
VLAN之间通信需要路由器或三层交换机,便于对跨VLAN通信实施访问控制,防止未经授权的访问。
将访客网络和公司内网分配到不同VLAN,限制访客访问公司内部敏感数据。
简化网络管理
根据功能、位置或用户组划分网络,无需物理更改网络拓扑即可实现逻辑隔离和重新配置。
动态调整不同VLAN的配置,例如新增设备时,只需划分到相应的VLAN。
支持 ...
rip协议一、分类
rip属于动态路由协议、IGP(内部网关协议)使用dv算法
rip只关心距离和矢量, 当rip包经过一个路由器后距离+1
二、rip协议的原理1、ripV1
实验拓扑图
特点
功能
描述
支持
- 支持 IPv4-不支持 VLSM(可变长子网掩码)和 CIDR
自动汇总
- 无法关闭自动汇总
发送数据包
- 目标地址:255.255.255.255- 端口:520- 数据包不包含子网掩码
工作过程
失效计时器, 刷新计时器在同一时刻生成 失效计时器过60秒后刷新计时器执行
状态
描述
启动状态
路由器启动 RIP 协议后,会在配置的接口上发送请求报文,请求邻居路由器发送其路由信息,同时收集直连网络的路由信息,初始化路由表。
路由发现
路由器通过接收到的 RIP 更新报文学习到其他路由器的路由信息,根据跳数和其他度量值来选择最佳路径,构建或更新路由表。
路由更新
每隔 30 秒,路由器会发送包含其路由表的更新报文给邻居路由器,同时也接收来自邻居的更新报文,以保持路由表的同步。
路由老化(失效计时器)
对于每个动态路由 ...
vrrp
https://info.support.huawei.com/info-finder/encyclopedia/zh/VRRP.html
配置接口信息
如果虚拟IP和接口IP相同直接成为master
1234567[AR1]vlan batch 10 20[AR1]int GigabitEthernet 0/0/0.10[AR1-GigabitEthernet0/0/0.10]dot1q termination vid 10[AR1-GigabitEthernet0/0/0.10]ip address 192.168.1.1 24[AR1]int GigabitEthernet 0/0/1.20[AR1-GigabitEthernet0/0/1.20]dot1q termination vid 20[AR1-GigabitEthernet0/0/1.20]ip address 192.168.2.254 24
1234567[AR2]vlan batch 10 20[AR2]int GigabitEthernet 0/0/0.10[AR2-GigabitEthern ...
linux
未读Ubuntu引导内核失败前言换bbrplus内核的时候开机直接启动不了一、进入救援系统二、修改内核1、挂载根文件系统查看哪个分区用于根文件系统
1fdisk -l
挂载根文件系统
1mount /dev/vdb1 /mnt
切换环境为挂载的目录
1chroot /mnt
2、卸载掉安装的内核查看所有内核
1dpkg --get-selections |grep linux-image
把状态为install的多余内核删除, 留下一个正常的内核
1apt remove linux-image-x-x-x
3、重新生成grub挂载sysfs和proc和dev
123mount -t devtmpfs devtmpfs /mnt/dev mount -t sysfs sysfs /mnt/sysmount -t proc proc /mnt/proc
重新生成grub
1grub2-mkconfig -o /boot/grub2/grub.cfg
三、问题启动提示FAT-fs (vdb15): IO charset iso8859-1 not found
系统尝试使用 i ...