主机与 GNS3 中的虚拟网络设备通信
前言最近为了入门 NetDevOps,买了知乎上弈心大佬写的一本书,叫《网络工程师的 Python 之路》。写的还可以,从网络工程师的视角讲解了 Python 的基本用法。也让我补足了之前碎片化的 Python 语法。
不过,进入到第 4 章后,就需要完成一些虚拟或是真机实验,然而我从来没有成功地在 GNS3 上运行过一次虚拟实验,更别提真机实验了。因此,搭建实验环境成了一个挑战。毕竟,实验的内容是通过 Python 程序来自动化运维路由器和交换机,如果 Python 程序访问不到这些网络设备,何谈运维?
因此,这篇文章的写作目的在于整理一下环境配置的心得。
环境
主机:Windows11
虚拟机:VMWare Workstation
GNS3: v3.0.4
配置虚拟机的方法我就不赘述了,印象中我大概是根据浙大网站上的实验流程配置下来的,只不过 GNS3 的版本和它要求的似乎有些出入。总之,最后配置完成的效果是,虚拟机中运行 GNS3 的后端软件,Windows11 上的 GNS3 前端能够连接到后端服务。
需要导入 Cisco 的路由器和交换机镜像,下载地址在这个 Githu ...
未来的工作是-2?
需求在今年寒假的文章中提到了我未来感兴趣的 3 个方向:前端、后端和运维。现在看看,自己的想法变的很快。我们来看看现在夏凌有哪些想法。
拒绝运维第一个排除的是运维的岗位。说句实在话,当我在 JD 上看到运维岗招的是大专生起步的人才时,我是震惊的。诚然,我对连连网线、打打命令的事情比较感兴趣,但是确实不太愿意拉低自己的档次。好不容易考上一所不错的学校,去到这样的岗位上有点屈才了。而且,确实干的工作都是些脏活累活,甚至是夜班。我受不了这个。
FinTech很早就留意了知乎上的一个博主,叫弈心,是个挺厉害的网络工程师,说自己是布道者。他有的观点确实很正确,比如学习英语、以及提升认知等等。不过我对他一味劝润的思想并不是很苟同。他提到了一个职位,我很感兴趣,叫 FinTech。
国内有许多这样的投资企业,它们获利的方式就是信息差,低买高卖。就像微信或者 B 站上常见的那些 Python 广告一样,总是喜欢放一张股市曲线的大图,显示用 Python 可以实现自动化投资一样。不过和这种路边广告相比,量化公司考虑的更多,远不止于此。
既然想赚钱,首先要组建一支专业团队。当然要有许多经济学的人才,了解股 ...
重叠
高中的时候,第一名是永远固定的。总是我和你争第二名。那时候,眼睛里似乎只有排名的数字,完全没有关注别的东西。唉,想想自己真是太浅薄了。到了大学,一开始还是维持这个状态。大一就选了博弈论这种特别有挑战性的课程,同时提前选了未来要上的水课,形策呀、思政啊等等。
不过,学的那么快,有什么用呢?引用一句你很喜欢的话,哦不,或许你不太喜欢,可能是很害怕的一句话吧:高中是一群人的高中,大学是一个人的大学。好像,我确实过成了这个样子,不过我倒还挺享受的。难得有几分清闲呀。你呢,高考考出了学校历史上的最高分吧,到了厉害的学校参加辩论赛、参加各种社团,好不热闹。
为什么前几天突然给我发消息呢?转发了我们高三的时候发疯时哼唱的 rap?是大半夜 emo 了吗,回忆起了那段光辉闪耀的日子(我喜欢这个形容词,出自樱花庄)。但是回忆就是回忆,再也回不去了。学校还是那个样子,只不过校长和书记的职位正好翻转,但,我们毕竟已经是毕业生了呀。
你就算怀念我,可能也怀念的不是我这个人,而是你记忆中的那个人?变了,毕竟都变了。一年前的我和现在的我差别也很大,三观呀,各种事情的看法呀。一年前可能是受到了什么影响,有些偏激。也 ...
「数据库系统原理」读书笔记-第七章
第七章:§7 Relational Database Design
§7.1 Features of Good Relational Designs关系模式的设计如果直接根据 E-R 图来导出,那么,E-R 图的好坏就决定了关系模式的好坏。
假如一开始,我们设计了一个这样的关系模式:
$in_dep(ID, name, salary, dept_name, building, budget)$
这看上去很不错,因为它是 instructor 和 department 的自然连接,有许多查询可以用更少的 JOIN 来实现。但是仔细想想,这造成了冗余的问题。
一方面,部门的 building 和 budget 这些本来在 department 表中存在的内容需要被重复存储,可能会存在冗余的问题;另一方面,假如创建了一个新的部门,没有老师入职,那么在 in_dep 中表示不了这个部门。
§7.1.1 Decomposition对于有冗余的关系模式,就需要分解它们。当然,如果过于极端,每个关系模式都只有一个属性,那就表示不了任何关系。不过考虑下面这个没那么极端的例子:
$employee(ID ...
「计算机网络:自顶向下方法」读书笔记-第一章
第一章:§1 Computer Networks and the Internet
§1.1 What is the Internet可以从两个角度来认识:硬件软件和网络能提供的服务。
§1.1.1 A Nuts-and-Bolts Description在硬件软件上,终端系统通过交流链路和分组交换联系在一起。
不同链路的速率可能不一样,取决于介质。
分组交换需要用到路由器和交换机来转发包。一个合理的类比就像是一群大巴车运仓库的一个特大件货物一样。
终端系统通过 ISP 接入互联网,有提供各种各样服务的 ISP。
互联网中协议很重要,TCP 和 IP 是两个很重要的协议,这就是为什么互联网的系列协议栈的名称是 TCP/IP。
为了让大家对协议达成一致,有两个机构来制定互联网中用到的协议。偏硬件(物理层、数据链路层)的协议由 IEEE802 LAN/MAN 标准委员会来制定。一些涉及到以太网、无线网等的协议由他们制定。
而偏上层的协议,如 TCP、IP、HTTP、SMTP 等协议由 IETF(Internet Engineer Task Force) 来制定,它们制定 ...
数据库 | ER 图设计
设计流程总览设计步骤对于小的应用,数据库的设计者可以直接指明有哪些关系、哪些约束。但对于那些很复杂的现实应用,没人能一下找到实体和关系。因此,需要有清晰的设计步骤来设计一个数据库。
和数据库的使用者交流,明确所有的数据需求。
概念设计。E-R 图是表示概念设计的一个工具。这一步要求展示数据库的实体、属性、约束等。
一个概念模式同样应该满足函数需求。用户指定对数据的各种操作,数据库的设计者确保数据模式能够实现这些操作。
逻辑设计阶段。设计者把高阶的概念模式转换为数据库系统的数据模型实现。这一步涉及把概念模式转换为关系模式。
物理设计阶段。物理设计阶段涉及数据库的物理特征,如文件组织和索引结构。
这一设计流程也是数据库大作业要求的流程。只可惜我在完成了大作业后才阅读到这部分,不过幸好,我潜意识中的数据库设计流程和课本上的大差不差。
替代方案在设计数据库时,需要避免两个陷阱:
冗余。
不完全。
冗余的意思是指,一个信息在多个位置储存。
以学校的课程数据库为例,这里假设在实际问题中,同一课程的所有班级的课程名称应该一样。也就是说,100396 这个课号对应的课程名称是 ...
NotionNext 博客上锁文章的强制访问
太长不看
所有的前端加密都是不安全、可破解的;
NotionNext 这个框架采用的是基础的 md5 加密,送入加密器的内容是文章地址 + 密码,如 article/example-2 + 123456,这里的 + 表示字符串连接;
md5 加密不可能(高效)从密文获取到原文;
修改 js 需要指定一个保存修改后文件的本地文件夹。
序最近看到了一位学长的博客,许多花里胡哨的特效,连鼠标右键的菜单都不满意,要自己用一些 Live2D 之类的库生成一个。
我对这些特效不太感冒,我也尊重其他人的选择,毕竟是自己的博客,想怎样设计都好。不过,我的底线就是,不要影响鼠标右键的基本菜单。因为作为一个对前端比较熟悉的人,我喜欢对着页面上的一些元素点来点去,看看是怎样实现的。
我记得一个让我很郁闷的博客是,直接劫持了鼠标右键,不让复制。这种问题很好解决,改一下 event 就好了,没什么难度。有时候我就喜欢对着干,要是本来没什么限制,我也想不起来要用一些技术手段来突破。
话说回来,为什么要写这篇文章呢?是因为我这位学长有一篇保研记录的文章,居然加密了,无法直接观看。这我就有些赞叹,哇,居然在前端加密 ...
计组 | 半导体存储体系
存储器是计算机的一个组成部件。它的进化反应了平衡的思想。
有一个很直觉的问题是:为什么不直接采用一样的材料进行存储器的设计呢?毕竟,分出 Cache、内存、外存这些,好复杂!为什么不能简单点?
因为存储器需要达到平衡,没有一个在各个方面都非常能打的存储器。总的来说,在存储器方面有 3 个评判标准:
价格;
速度;
容量。
在市场经济中,价格是最终的判则,否则没人购买商品。因此,在价格的限制下,如果存储器的速度很快,容量就不会做的特别大。反之亦然。
在计算机的不同存储层次中,确实对不同层次的存储器有不同的要求。比如说,需要一些存储器像仓库一样,存储大容量的数据。也需要一些存储器需要像信使一样,快速地把数据传递给 CPU。
总而言之,我们的目标就是:让不同能力、各有优缺点的存储器结合在一起,使他们在价格、速度、容量上都发挥出最好的效果。
从快速到慢速,从靠近 CPU 到远离 CPU,有这样一些存储器:
CPU 内部的寄存器;
Cache;
内存;
外存。
这里主要讨论半导体存储器,可以大概分为两类:随机存储器(RAM) 和只读存储器(ROM)。还有一类是磁存储器,不太讨论。
RAM ...
配置 Python 环境复现 Github 项目
一篇论文公开了自己的代码和数据集。怎么在本地复现呢?
前期准备首先要获得代码的环境,如果提供了环境,那就比较简单了。比如,我现在就有如下的环境要求:
123456789101112131415161718networkx==3.1numba==0.58.1numpy==1.24.4pandas==2.0.3pillow==10.4.0prompt_toolkit==3.0.43tokenizers==0.20.3torch==1.10.0+cu113torch-cluster==1.6.0torch_geometric==2.2.0torch-scatter==2.0.9torch-sparse==0.6.12torch-spline-conv==1.2.1torchaudio==0.10.0+cu113torchvision==0.11.1+cu113tqdm==4.67.1traitlets==5.14.3transformers==4.46.3
12cuda 11.5python 3.8.20
前者是 requirements.txt 的内容,下面是对 CUDA 和 Pyth ...
CS50AI - 第 6 章 - 语言
转眼到了 CS50 AI 的最后一节课。
这节课讲的是当下热门中的热门——自然语言处理。
语言之前我们都是把问题和算法转换为某一种机器语言让机器来执行,这一次我们要让机器理解人类的语言。
语法和语义(Syntax and Semantics)涉及到自然语言,就不得不涉及一些语言学的知识——语法和语义。
语法是一门语言要遵循的基本原则。其实一些机器语言也是一样。比如,Python 在语法错误的时候会抛出 SyntaxError。
语义则表示这段话要表示的内容。符合语法的语句不一定有语义,比如说这句话:
Colorless green ideas sleep furiously.
不同的语法结构组成的句子可能会表示同一个意思。
上下文无关语法(Context-Free Grammar)正式语法(Formal Grammar)是一种对于某个语言来说,生成句子的规则。
我们可以用 parser 对每个单词进行分析,从而形成一个语法树。
语言,语言。自然语言和机器语言都是一种语言。所以我们在编译原理课程学习到的知识,也可以搬到自然语言中。
当然,有的时候,可能一句话有许多种语法树的可能。这时 ...