今天是2018年7月29号,这是我在软帝学习的第三周了,前两个星期感觉学习的还不错,进步很大,但是还需要努力,换了座位身边的人都比较优秀,还要跟着他们一起共同进步,好好学习天天向上,争取在这四个月的学习里,从一个学渣变成一个高级程序员,柴老师讲的还不错,比较容易听懂,以后会继续努力,我的目标就是变得像柴佬一样牛逼,成为高富帅,梦想虽然很难,但是说不定万一实现了呢,还三个多月,加油吧!
Collection
Collection是集合框架的顶层接口,大多数的集合类,接口都是直接或者间接从Collection继承或者实现
List接口
List接口直接从Collection接口继承而来,List集合是一个有序集合(元素在集合中的存储顺序是有序的,获取的时候根据存储的位置获取),List允许重复元素,List接口包含三个比较常用的实现类:ArrayList、LinkedList、Vector(jdk1.0)
Set集合
Set集合也是从Collection接口继承而来,set集合是一个无序集合(存储顺序与元素的添加顺序无关),set集合不允许出现重复元素(重复元素会覆盖第一次出现的元素),不允许存在e1.equals(e2)的情况(针对HashSet的实现),set集合中的元素无法通过索引获取;Set集合有两个常用的实现类:HashSet、TreeSet
Map集合
Map集合是一种键值对结构,不同与List与Set;Map集合中的元素通常由key-value构成,一个键可以指向一个值,但是键不允许重复,但是值可以,Map集合的出现是为了取代老式的Dictionary类,Map集合常用的两个实现类:HashMap,TreeMap
Collections类
jdk1.2引入集合框架后,同时也新增了一些类用于方便的对集合进行处理(排序,查找等),这些功能主要包含在java.util.Collections类中,Collections类中的所有方法都是静态方法,所以调用起来比较简单
JDK8流式处理集合
JDK8引进了新的用于对集合处理的解决方案-流式处理,可以通过链式编程,函数式接口,lambda表达式简单便捷的对集合完成,过滤,排序,截取等操作。
流的分类
jdk中提供了各种不同的流用于处理不同的输入输出源,根据流性质划分分为以下类型:
-
按流向分(站在程序角度考虑)
-
输入流(input)
-
输出流(output)
-
-
按类型分:
-
字节流(InputStream/OutputStream)
-
字符流(Reader/Writer)
-
-
按功能分:
-
节点流(低级流:直接跟输入输出源对接)
-
FileInputStream/FileOutputStream/FileReader/FileWriter/PrintStream/PrintWriter...
-
-
处理流(高级流:建立在低级流的基础上)
-
转换流
-
缓冲流
-
-
缓冲流
由于节点流操作输入输出源的效率相对较低,因此jdk提供了一些用于提高输入输出效率的流(缓冲流),这些流通过装饰器模式(java常用23种设计模式之一),提供对节点流的包装,同时这些高级流也支持mark和reset操作,并且缓冲流中也提供了节点流中没有的方法,比如,BufferedWriter提供newLine()方法用于输出一个换行标记;BufferedReader提供readLine()方法用于读取一行文本内容(以换行标记为结束)。
对象序列化
对象序列化是一种用于在文件或者各种其他输入输出设备中存储java对象的机制,通过将实现过序列化结构的对象存储到指定的输出源,可以完整的保存对象数据;对象序列化机制一般常用于大型项目中的缓存技术,以缓存经常需要使用到的对象数据;java中实现对象序列化通常包含两种方式:
-
实现Serializable接口
-
实现Externalizable接口
完成对象序列化的过程必须包含以下步骤:
-
需要完成序列化的对象对应的类必须实现Serializable接口
-
通过对象输出流将对象存储到指定的输出源(文件,网络)中(通过ObjectOutputStream)
若需要将文件或者其他输入输出设备中的java对象读取出来,可以通过ObjectInputStream完成对象反序列化
端口(Port)
端口号是应用程序在主机中的唯一标识,是当前应用与外部应用通信的通道,其中包含一些数据结构和IO缓冲区,端口的取值范围为0~65535之间;通常端口分为三类
公认端口(Well Known Ports):从0到1023,它们紧密绑定(Binding)一些服务
注册端口(Registered Ports):从1024到49151。它们松散地绑定一些服务
动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上不应为服务分配这些端口
Socket通信
Socket通信包含TCP/IP和UDP协议的通信机制,其中TCP/IP协议为安全可靠协议,需要保证服务器和客户端正常建立连接之后方可通信,java中为TCP/IP协议提供的Socket通信工具主要由java.net.ServerSocket和java.net.Socket完成,常用构造器如下:
-
ServerSocket(int port):提供服务端套接字
-
Socket(String ip,int port):提供客户端套接字