集合进阶与网络编程初窥

前言

虽然现阶段的学习是以清楚知识点,知道编程语法为主要任务,但是不应该把所有重心放在上面,否则就会导致出现“纸上谈兵”的尴尬境地。知道底层代码逻辑,并不代表你掌握了实在的编程技巧。JAV学习就像学车,不达到一定公里数,车技是不会有提升的的——这是经过第二次阶段检测后我的想法。

Set系列集合

特点

无需:存取序列不一致
不重复:可以去除重复
无索引:没有带索引的方法,不能使用普通for循环遍历,也不能通过索引来获取元素

set实现类的集合特点

HashSet

无序、不重复、无索引

LinkedHashSet

有序、不重复、无索引

TreeSet

可排序、不重复、无索引

HashSet底层原理

HashSet底层采用哈希表存储数据。
哈希表组成:数组+列表+红黑树;
哈希值:对象的整数实现形式
在这里插入图片描述
哈希值:
根据HashCode方法计算出来的int证整数
该方法在Object类当中,所有对象都可以调用,默认使用地址值进行计算
一般情况下会重写HashCode方法,使用对象内部属性值进行计算。
对象哈希值的特点
1 如果没有重写HashCode方法,不同对象计算出的哈希值是不同的
2 如果重写方法,不同的对象只要属性相同计算出的哈希值是一样的
3 小概率情况下会出现哈希碰撞

LinkedHashSet

特点
使用双链表记录添加顺序
如果要求数据去重,默认使用HashSet,只有排序时使用LinkedHashSet

TreeSet

默认规则:
对于Intger、Double,默认按从小到大排序;
对于字符,字符串按照ASCII码表排序

数据结构

在这里插入图片描述

基本内容

**度:**每个节点子节点的数量
**二叉树:**任意节点的度<=;
**高度:**总层数;
**根节点:**最顶层的节点
根节点左/右子树

二叉查找树

特点:左子数小于结点,右子数大于结点

前序遍历

从根节点开始,按照当前结点,左子结点,右结节点的顺序进行遍历

中序遍历

从最左边的子节点开始,按照左子结点,当前结点,右子结点的顺序进行遍历

后序遍历

从最左边子节点开始,然后按照左子结点,右子结点,当前节点的顺序进行遍历

层序遍历

从根节点开始一层一层的遍历

二叉平衡树

注意点:任意节点左右子树高度差不超过一

平衡机制

旋转

情景一

在这里插入图片描述

**步骤:**1.以不平衡的点为支点
2.支点左旋降级,变为左子支点
3.晋升原来的右子支点

情景二

在这里插入图片描述

步骤
以不平衡的点为支点
将根节点右侧往左拉
原先的右子节点变成新的父节点,并把多余的左子节点让出,给已降级的根节点当右子节点
在这里插入图片描述
右旋同理

红黑树(二叉查找b树)

在这里插入图片描述

红黑规则

1 每个节点必须是红或者黑的
2 根节点必须是黑色
3 如果一个节点没有子节点或父节点,该节点相应的指针属性值为nil,这些Nil视为叶节点
4 如果某一个节点是红色,那么他的子节点必须是黑色
5 对每个结点而言,从该节点到其所有后代节点的叶节点的简单路径上,均包含相同数目的黑色节点
在这里插入图片描述

添加节点规则

在这里插入图片描述

网络编程

基本通讯架构

cs架构(C客户端/S服务端)
bs架构(B浏览器/S服务端)

网络通讯三要素

IP地址

分配给上网设备的唯一标志

IPV4

在这里插入图片描述

IPV6

在这里插入图片描述
在这里插入图片描述

InetAdress

待变IP地址
在这里插入图片描述

端口

应用程序在设备中的唯一标识

端口号

范围:0~65535
分类
周知端口 0-1023
注册端口: 1024~49151
动态端口: 49152~65535

协议

连接和数据在网络中传输的规则
**通信协议:**网络上的通讯设备,事先规定的链接规则,以及传输数据的规则被称为通讯网络协议。
在这里插入图片描述

UDP(用户数据报协议)

**特点:**无连接,不可靠协议
不事先建立链接,数据按包发,一般数据包包含:自己IP、程序端口,目的地IP 程序端口 和数据(64kb)。
发送方不管对方是否在线,数据在中间丢失也不管,接收方接收数据也不确认

TCP通信协议

**特点:**面向连接,可靠通信
三个步骤实现可靠传输:三次握手建立连接,传输数据确认,四次挥手断开连接。
可靠连接:确定通讯双方,收发消息正常无问题。

小结

第二次考核从预估来看是个灾难,学过的东西在应试上表现出了不成熟,至少说明本人复习不是很到位;嗲马蹄上也因为上周的“先看再敲”方法导致对API的运用不是很熟悉。总之,第二阶段学习成果不理想,而不理想的代价就是需要使用提前空余时间去弥补。
下周规划:查缺补漏,完成阶段性项目“拼图游戏”;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值