在软帝学习的第三周总结

    今天是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中实现对象序列化通常包含两种方式:

  1. 实现Serializable接口

  2. 实现Externalizable接口

完成对象序列化的过程必须包含以下步骤:

  1. 需要完成序列化的对象对应的类必须实现Serializable接口

  2. 通过对象输出流将对象存储到指定的输出源(文件,网络)中(通过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):提供客户端套接字

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值