网络拓扑
互联网是一个广义上的概念,它泛指的是一切通过网络连接在一起的计算机集合。所以,如果只是观察局部,比如某一家公司的网络的话,那么就不能再说这家公司的网络就是“互联网”了。那么,对于每家公司来说,网络具体又是如何构成的呢?这就是网络拓扑结构要解决的问题。如同数据结构是按照某种形式组织数据一样,网络拓扑结构指的也是按照某种形式将不同的物理计算机连接在一起。
星型结构
指各计算机以星型方式连接成网。
网络有中央节点,其他结点(工作站、服务器)都与中央节点直接相连,这种结构以中央结点为中心,因此又称为集中式网络。它具有结构简单、便于管理、控制简单、网络延迟时间小、传输误差低等特点。但缺点也是明显的:可靠性较低、资源共享能力较差、线路利用率低。
总线型结构
是指各工作站和服务器均挂在一条总线上,各工作站地位平等,无中心节点控制,它结构简单、可扩充性好、安装容易,但维护困难。
环型结构
由网络中若干结点通过通信链路首尾相连形成一个闭合的环,这种结构使公共传输电缆组成环状,数据在环路中沿着一个方向在各个节点间传输,信息从一个节点传到另一个节点。它实时性强、传输控制容易,但维护困难,可靠性不高。
网状结构
它是指每台设备之间均有点到点的链路连接,这种连接不经济,只有每个站点都要频繁发送信息时才使用这种方法。它的安装也比较复杂,但系统可靠性高,容错能力强。有时也称为分布式结构。
树型结构
这是一种分级的集中控制式网络,与星型相比,它的通信线路总长度短,成本较低、节点易于扩充、寻找路径方便,但除了叶节点及其相连的线路外,任一节点或其相连的线路故障都会使系统受到影响。
域名解析
在互联网上有成千上万台计算机,为了能准确地访问其中某台计算机上的服务,在OSI七层模型的网络层中,通过IP地址来唯一标记每台主机在网络里的位置,比如:39.106.226.142。但是这些纯数字的IP地址太难记了,因而就出现了域名(比如csdn.net)这样便于人类记忆的地址符号。这相当于现实世界中城市的名称,如武汉市,IP地址则相当于邮局内部的编码,如420000,而域名解析就是将域名转换为IP地址的过程。
1、域名规则
英文域名只能由26个英文字母、0~9十个数字以及“-”连字符号混合而成(除了“-”不能是第一个字符),不支持使用空格及一些特殊字符,比如!?/;:@#$%^~_=+,*<>等。
英文域名不区分大小写,也可以是纯英文和数字域名,对于中文域名而言,则必须含有中文字符。
域名级数是从右至左按照“.”分隔的部分确定的,有几个“.”就是几级,一般情况下,域名最好不超过五级,例如a.com是一级域名,而a.b.com则是二级域名。
每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
常见的通用顶级域名为:.biz .com .edu .gov .info .int .mil .name .net .org。
国家顶级域名参照ISO 3166-1中的双字母代码生成,例如中国大陆为.cn,中国香港为.hk,中国台湾为.tw,美国为.us。
通用域名可以组合国家域名,标明所在地区(只要域名管理机构允许),例如.gov.cn。
2、域名解析类型
A记录解析
A记录就是Address记录,是用来指定域名对应的IP地址,通常是将网站服务指向服务器地址,例如将域名www.csdn.net指向39.106.226.142这个IP地址,就是一个典型的A记录解析。
CNAME记录解析
如果服务器的地址发生变动,光靠A记录就不行了。这时候就需要用到CNAME,它又叫别名解析,例如域名www.csdn.net,真实的IP地址为39.106.226.142,对应的CNAME可能是abc.csdnweb.com,也就是允许多个域名对应服务器的主机名,这样即使服务器的IP地址发生变更,也不用更改解析记录,域名解析会自动依据主机名更新IP地址。如果A记录解析和CNAME记录解析并存,那么A记录解析将优先生效。
MX记录解析
即邮件交换记录,这种记录解析用于将以域名为结尾的电子邮件指向对应的邮件服务器,例如用户所用的邮件以csdn.net为结尾,那么就需要在域名管理中添加该域名的MX记录来处理所有以@csdn.net为结尾的邮件。
3、泛域名解析
是指将某一类域名解析到同一个IP地址,以通配符的方式实现,例如将*.csdn.net的泛域名指向IP地址39.106.226.142时,那么a.csdn.net、b.csdn.net等所有以csdn.net结尾的域名都会指向39.106.226.142这个IP。
常用网络命令和端口
工程师天天使用计算机做软件开发,有时候出了问题需要确定到底是自己的问题,还是网络的问题。所以学习并了
解一些常见的计算机命令和开发中常用的端口,对开发工作会有很多实际的帮助。
1、常用网络命令
ping命令
这是在开发中使用频率极高的一个命令,主要用于确定网络的连通性,例如很多刚刚安装操作系统的计算机,第一件事就是先看看是否能联网,所以往往执行的第一条命令就是ping命令。它的格式是:ping 主机名/域名/IP地址。
ipconfig/ifconfig命令
当使用不带任何参数选项ipconfig/ifconfig命令时,显示每个已经配置了的接口的IP地址、子网掩码和缺省网关值。其中在Windows中使用的是ipconfig,而在Mac或Linux系统中,使用的是ifconfig。
netstat命令
能够显示活动的TCP连接、计算机侦听的端口、以太网统计信息、IP路由表、IPv4以及IPv6统计信息,通过它可以了解网络当前的状态。
2、常用网络端口
TCP与UDP段结构中端口范围在0~65535之间。
端口号小于256的是常用端口,服务器一般都是通过常用端口号来识别的。
任何TCP/IP实现所提供的服务都用0~1023之间的端口号。
1024~49151端口号是被注册的端口号,可以由用户自由使用,也是被IANA指定为特殊服务使用,从49152~65535是动态或私有端口号(以上并不是强制的)。
数据结构常识
更多内容: 我对八种常见数据结构的理解
数据结构是计算机存储、组织数据的方式,它研究的是如何构造复杂软件系统的根基,它的核心内涵是分解与抽象,并得到软件开发过程中需要用到的逻辑结构。用简单直白的话来说,就是同样的数据,在某些场景下,用数组会比用链表好,而在另一些场景下,可能用栈(一种可以实现「后进先出」的线性表)就是最合理的了。
数组(Array)
它是将具有相同类型的若干数据组织在一起的集合,这是一种最基本而且也是一种最经常使用的数据结构。
栈(Stack)
一种特殊的线性表,只能在一个表的固定端进行数据节点的插入和删除操作,栈正是一种按照后进先出(LIFO)的原则来存储数据的数据结构。
队列(Queue)
队列和栈类似,但不同的是,它是在一端执行入队操作,另一端进行出队操作。
链表(Linked List)
它和数组一样,也是一组数据的集合,但和数组不一样的是,它并不是一组连续的数据集合,而是通过指针连接在一起的。
树(Tree)
这是一种典型的非线性结构,之所以叫做“树”,是因为它的结构看起来就像一颗倒过来的树,它只有一个根结点,但可以有多个后继节点。
堆(Heap)
它是一种特殊的树型结构,它的特点是根结点的值是所有节点中最大或者最小的,而且根结点的子节点也是一个堆结构。
最小堆
最大堆
图(Graph)
也是一种非线性数据结构,在图结构中,数据节点称为顶点,顶点之间的连线称为边。
有向图
无向图
散列表(Hash)
这种数据结构来源于散列函数,它的思想是如果存在x,那么就必然有一个唯一的存储位置f(x)可以找到x,这样通过数学函数就直接计算出x的存储位置而不用在进行比较、查找以后才知道。
算法常识
算法(Algorithm)是对方案的一种描述,对于计算机来说,它是一系列解决问题的计算步骤。算法的意义在于,在各种不同的解决方法之中,找到那个效率最高的
1、查找算法
顺序查找
它的基本思想就是从第一个元素开始,按顺序遍历待查找序列,直到找出给定目标或者查找失败,其过程如下图所示。
顺序查找初始状态
指针逐步向右移动,逐一比较每个元素
逐一查找,直到完成匹配
二分查找
又叫折半查找,它要求列表必须是有序的。它的原理是每次都把待比较元素A和列表中间的元素B进行比较,如果A小于B,那么A再和位于B前半部分的元素进行比较,并且再次选择中间元素进行比较,直到比较完所有元素为止。
二分查找初次比较:中间元素为7
第二次比较:目标元素小于7,7的后半部分抛弃,直接从前半部分开始
第三次比较:目标元素大于3,3的前半部分抛弃,直接从后半部分开始,直接得到最后一个元素6,就是要查找的目标元素
2、排序算法
更多内容: 十大经典排序算法的总结
冒泡排序
它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小(大)的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序初始阶段
按倒序排列,那么交换i和j的位置,并且两者的位置继续前移
实现1和6的交换,直到完成第一遍排序
完成第一遍排序之后,再次回到起始位置,再将刚才的过程执行一遍,直到所有元素都按要求实现排序
选择排序
是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
先将i放在第一个,然后在后续元素中找是否还有比它更小的
发现没有比1更小的元素,再从第二个开始往后寻找最小的元素
发现2比3小,交换2和3的位置,然后继续比较后面的元素,依次执行,直到完成所有元素的比较与排序