学习日志 Day 6

学习日志 Day 6

//2020年3月24日22:28:04 磊子

计算机网络技术

  • 分类的IP地址
    每一类地址都由两个固定长度的字段组成,其中一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机host-id,它标志该主机或路由器。
    什么是IP地址?
    我们把整个因特网看成一个单一的、抽象的网络。IP地址就是给每一个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的32位的标识符。

两级IP地址可以记为:
IP地址::={<网络号>,<主机号>}

  • 常用的三种类别的IP地址
    在这里插入图片描述

  • IP地址的特点
    IP地址是一种分等级的地址结构
    IP地址是标志一个主机(或路由器)和一条链路的接口
    用转发器或网桥连接起来的若干个局域网仍是一个网络,因此这些局域网都具有相同的网络号net-id
    所有分配带网络号net-id的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的

  • IP层转发分组的流程

  • 根据目的网络地址确定下一跳路由器,知道到达目的网络上的路由器,到达最后一个路由器时,才试图向目的主机进行直接交付
    路由器还有特定主机路由器、默认路由

  • IP地址和硬件地址
    (IP地址为逻辑地址,硬件地址看成物理地址)
    IP地址是放在IP数据报的首部,应用在网络层及以上使用IP地址,硬件地址则放在MAC帧的首部,应用在链路层及以下使用硬件地址

  • 地址解析协议ARP

  • 作用:从网络层使用的IP地址,解析出数据链路层使用的硬件地址。

  • IP数据报的格式

  • 划分子网
    IP地址变为三级的IP地址
    网络号+子网号+主机号
    特点:
    纯属一个单位内部的问题,单位对外仍然表现为没有划分子网的网络
    划分子网只是把IP地址的主机号不部分进行再划分,从主机号借用若干位作为子网,而不改变IP地址原来的net-id
    划分子网后IP地址就变成了三级结构

  • 已知IP地址和子网掩码,如何得到网络地址
    计算公式:
    (IP地址)AND(子网掩码)=网络地址
    只看子网号转化为二进制,逐位与运算上下对应,上下有0,1则相与后时0上下只有1,相与后是1;上下只有0,相与后仍是0;

  • 路由信息协议RIP

  • 数字传输系统

  • 宽带接入系统
    ADSL技术(非对称数字用户ADSL)
    就是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务
    ADSL特点:
    上行和下行带宽做成不对称的(上行指送用户到ISP,而下行指从ISP到用户)
    ADSL在用户线(铜线)的两端各安装一个ADSL调制解调器

ADSL不能保证固定的数据率,对于质量很差的用户线甚至无法开通ADSL

DMTI技术
DMT调制技术采用频分复用的方法把40kHz以上一直到1.01MHz的高端频谱划分为许多的子信道,在分不同个数的子信道用于上行和下行

光纤同轴混合网(HFC网)
HFC网是在有线电视网CATV的基础上开发的一种居民宽带接入网。
电缆调制解调器是为HFC网而使用的调制解调器
电缆调制解调器最大的特点就是传输速率高

FTTx技术

汇编程序设计

  • PUSH 进栈指令
    指令格式: PUSH SRC
    执行操作:SP←SP-2,(SP+1,SP)←(SRC)
    不影响标志位,执行进栈指令时,首先SP减2,然后将操作数送至SP指示的连续两字节单元中。

  • POP 出栈指令
    指令格式:POP DST
    执行操作:(DST)←(SP+1,SP),SP←SP+2
    不影响标志位,执行出栈指令时,先将SP只是的连续两个字节单元内容送至目的地址,然后SP加2

  • XCHG 交换指令
    指令格式:XCHG OPR1,OPR2
    执行操作:(OPR1)↔(OPR2)

Java Day 5

  • 随机数(Random)
import java.util.Random;

/*
	Random 是用来产生随机数的
	
	使用步骤:
		A:导包
			import java.util.Random;
		B:创建对象
			Random r = new Random();
		C:获取随机数:
			int unmber = r.nextInt(10);
			获取数据的范围:[0,10) 包括0,不包括10
*/
public class RandomDemo {
	public static void main(String[] args) {
		Random r = new Random();
		
		for(int x=1;x<=10;x++) {
			int number = r.nextInt(10);
			System.out.println("number:"+number);
		}
		System.out.println("------------");
		//如何获取1-100之间的随机数?
		//int i = r.nextInt(100); //[0,99] [0.100)
		int i = r.nextInt(100)+1;
		System.out.println("i:"+i);
	}
}
  • 数组
    动态初始化
package com.itheima;
/*
 	数组:存储同一种数据类型的多个元素的容量
 	
 	定义格式:
 		A:数据类型[] 数组名;
 		B:数据类型名 数组名[];
 		
 		举例:
 			int[] arr; 定义了一个int类型的数组,数组名为arr
 			int arr[];定义了一个int类型的变量,变量名是arr数组
 			
 	 数组初始化:类似于C语言,为数组开辟内存空间,并为数据中的每个元素赋予初值
 	 	A:动态初始化  只给出长度,由系统给初始化值
 	 	B:静态初始化  给出初始化值,由系统决定长度
 	 	
 	 动态初始化:
 	 		数据类型[] 数组名 = new 数据类型 [数组长度];
 */

public class ArrayDemo {
	public static void main(String[] args) {
		int [] arr = new int[3];
		/*
		 * 左边:
		 * 		int:说明数组中的元素类型是int类型
		 * 		[]:说明这是一个数组
		 * 		arr:这是数组的名称
		 * 
		 * 右边:
		 * 		new:为数组申请内存分配,开辟空间
		 * 		int:说明数组中的元素类型是int类型
		 * 		[]:说明这是一个数组
		 * 		3:数组的长度,其实就是数组中的元素个数
		 * 		
		 */
		
		//输出数组名
		System.out.println("arr:"+arr);//[I@1d1e730  地址名
		//数组的每个元素都有编号,和C语言一样从0开始到数组长度-1
		//编号叫法:索引
		//访问格式:数组名[索引]
		System.out.println(arr[0]);//0
	}
}

静态初始化

package com.itheima;
/*
 * 静态初始化的格式:
 * 			数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
 * 		
 * 			举例:
 * 				int[] arr = new int[]{1,2,3...};
 * 
 * 			简化格式:
 * 				数据类型[] 数组名 = {元素1,元素2,...};
 * 				int[] arr = {1,2,3};//int arr[] = {1,2,3};
 */
public class ArrayDemo2 {
	public static void main(String[] args) {
		int [] arr = {1,2,3};
		System.out.println(arr);
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
	}
}

  • Java中的内存分配
    栈(存储的是局部变量)、堆(存储的是new出来的东西)、方法区(面向对象)、本地方法区(和系统相关)、存储器(给CPU使用)
    栈、堆
    栈存储的是局部变量,局部变量就是定义在方法中的变量
    使用完毕立即回收
    理解举例
    int [ ] arr = new int[3];
    栈中存储的是 int[ ] arr
    堆中存储的是 new int[3]
    堆存储的是new出来的东西,实体,对象
    A:每一个对象都有地址值
    B:每一个对象的数据都有默认值
    byte,short,int,long 0
    float,double 0.0
    char ‘\u0000’
    boolean false
    引用类型 null
    C:使用完毕后会再垃圾回收器空闲的时候被回收

在这里插入图片描述

  • 数组操作的两个常见小问题
    A:ArrayIndexOutOfBoundsExcept ion :数组索引越界异常
    原因:我们访问了不存在的索引
    B:NullPointerException: 空指针异常
    原因:数组已经不再指向堆内存的数据了,你还使用数组名去访问元素

  • 数组遍历
    和C语言一样利用for循环
    为了解决我们去数组中数元素的个数,数组提供了一个属性:length,用于获取数组元素的个数
    格式:数组名.length

  • 二维数组

package com.itheima;
/*
 *  	其实就是元素为一维数组的数组,和C语言类似
 *  
	定义格式:
		A:数据类型[] []  数组名;
		B:数据类型 数组名[] [];
		C:数据类型[] 数组名 [];
	初始化:
		A:动态初始化
			数据类型 [][] 数组名  = new 数据类型[m][n]//数据类型 数组名[][] = new 数据类型[m][n];
			m表示的是二维数组中一维数组的个数
			n表示的是一维数组的元素个数
		B:静态初始化
			数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},...};
			简化格式:
			数据类型[][] 数组名 = {{元素...},{元素...},...};

 */
public class ArrayArrayDemo {
	public static void main(String[] args) {
/*		int m =2;
		int n= 1;
		int arr[][] = new int[m][n];*/
		
		int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
		
		System.out.println(arr);//[[I@105bd58
		System.out.println(arr[0]);//[I@1d1e730
		//二维数组名配合索引可以获取到每一个一维数组,每一个一维数组配合索引名可以获取到数组中的元素
		//arr[索引][索引]
		System.out.println(arr[0][0]);//1
	}
}
  • 二维数组遍历
    for中嵌入for即可,类似C语言
    在二位数组中,int arr [ ] [ ],arr.length获取的其实就是二维数组中有几个一维数组,arr [ ].length一维数组里的元素个数

  • 输出换行

		System.out.println("Hello");
		System.out.println("World");
		/*两行输出结果:
			Hello
			World
		*/
		System.out.print("Hello");
		System.out.print("World");
		/*两行输出结果:
			HelloWorld
		*/

**
System.out.println(); 输出内容并换行
System.out.print(); 只输出内容
print带ln就会有换行的效果类似于C语言中的\n,不带ln就没有换行的效果
**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值