Java学习:
本周学习了file文件,io流,对象序列化以及线程和网络。
File对象:
java.io.File类用于表示文件(目录)
File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件的读写
// 得到文件名
System.out.println(file.getName());
// 得到文件的路径
// 得到绝对路径
System.out.println(file.getAbsolutePath());
// 得到创建文件时传入的路径
System.out.println(file.getPath());
// 判断文件类型
System.out.println(file.isFile());
System.out.println(file.isDirectory());
// 得到文件大小
System.out.println(file.length());
IO流
流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。
•流的分类:
处理的数据单位不同,可分为:字符流,字节流
数据流方向不同,可分为:输入流,输出流
功能不同,可分为:节点流,处理流
•节点流:
节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如FileInputStream和FileOutputStream,他们直接从文件中读取或往文件中写入字节流。
•处理流
“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。过滤流是使用一个已经存在的输入流或输出流连接创建的,过滤流就是对节点流进行一系列的包装。例如BufferedInputStream和BufferedOutputStream,使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率,以及DataInputStream和DataOutputStream,使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。他们都属于过滤流。
字节流:
继承自InputStream/OutputStream的流都是用于向程序中输入/输出数据,且数据的单位都是字节(1byte=8bit)
字符流:
继承自Reader/Writer的流都是用于向程序中输入/输出数据,且数据的单位都是字符(2byte=16bit)
操作文本文件
对象序列化:
•概念
将Object转换为byte序列,反之叫对象的反序列化
例如将对象保存到文件中,或者在网上传输,都需要进行对象序列化操作
序列化流(ObjectOutputStream) ---- writeObject
反序列化流(ObjectInputStream) ---- readObject
进程:
概念
进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。
线程:
线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。
“同时”执行是人的感觉,在线程之间实际上轮换执行。
线程实现
定义线程:
定义线程有两种方式:
扩展java.lang.Thread类。
实现java.lang.Runnable接口。
实例化线程:
如果是扩展java.lang.Thread类的线程,则直接new即可。
如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法
启动线程:
在线程的Thread对象上调用start()方法,而不是run()或者别的方法。
线程同步:
概念:
线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。
锁的原理:
Java中每个对象都有一个内置锁
当程序运行到非静态的synchronized同步方法上时,自动获得与正在执行代码类的当前实例(this实例)有关的锁。获得一个对象的锁也称为获取锁、锁定对象、在对象上锁定或在对象上同步。
当程序运行到synchronized同步方法或代码块时才该对象锁才起作用。
线程的互斥与死锁:
wait()和notify()
程序执行wait()时,线程进入等待状态
程序执行notify()时,唤醒处于wait状态的线程。
网络:
•什么是计算机网络?
两台电脑连在一起就组成了一个计算机网络。我们通过光纤连接到电信的网关,中国电信通过海底光缆和美国电信网关连接,你就是和全世界的在线用户连着。
•网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据
•什么是网络通信协议?
网络通信协议就像我们的中文一样,她就是我们之间的共同语言,他规定了我们之间怎么说话,我先说什么你再说什么,你怎么说,而我应该怎么听。而网络通信得先规定约定一些俗成的网络通信协议,先说好,两台计算机之间什么收发信息,信息格式是什么,信息怎么发,怎么接收,而万一出错怎么办怎么处理。
•什么是计算机网络?
两台电脑连在一起就组成了一个计算机网络。我们通过光纤连接到电信的网关,中国电信通过海底光缆和美国电信网关连接,你就是和全世界的在线用户连着。
•网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据
•什么是网络通信协议?
网络通信协议就像我们的中文一样,她就是我们之间的共同语言,他规定了我们之间怎么说话,我先说什么你再说什么,你怎么说,而我应该怎么听。而网络通信得先规定约定一些俗成的网络通信协议,先说好,两台计算机之间什么收发信息,信息格式是什么,信息怎么发,怎么接收,而万一出错怎么办怎么处理。
•什么是计算机网络?
两台电脑连在一起就组成了一个计算机网络。我们通过光纤连接到电信的网关,中国电信通过海底光缆和美国电信网关连接,你就是和全世界的在线用户连着。
•网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据
•什么是网络通信协议?
网络通信协议就像我们的中文一样,她就是我们之间的共同语言,他规定了我们之间怎么说话,我先说什么你再说什么,你怎么说,而我应该怎么听。而网络通信得先规定约定一些俗成的网络通信协议,先说好,两台计算机之间什么收发信息,信息格式是什么,信息怎么发,怎么接收,而万一出错怎么办怎么处理。
- tcp协议:
传输控制协议,提供的是面向连接、可靠的字节流服务。
当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
三次握手,四次挥手。
•UDP协议特点 :
UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。
由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。