设计模式与网络编程

Java学习第11周

1.设计模式(设计模式的概述和分类)
设计模式概述
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性以及代码的结构更加清晰.
设计模式分类
创建型模式(创建对象的): 单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
行为型模式(对象的功能): 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
结构型模式(对象的组成): 模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

2.单例模式

饿汉式
	// 单例类(饿汉式)
class Teacher {
	//构造方法私有: 防止其他人 创建本类对象
	private Teacher(){}
	//本身提供一个对象
	private static Teacher teacher = new Teacher();
	//通过公共的方法让外界访问
	public static Teacher getTeacher(){
		return teacher;
	}
}
public class SingleTest {
	public static void main(String[] args) {
		Teacher t1 = Teacher.getTeacher();
		Teacher t2 = Teacher.getTeacher();
		System.out.println( t1);
		System.out.println( t2);
		System.out.println(t1 == t2);
	}
}
懒汉式(线程安全版本)
//单例类(懒汉式)
class Student{
	//构造方法私有
	private Student(){}
	//在本类中,创建本类对象的引用,不直接创建对象
	private static Student s = null;
	//提供一个公共方法, 让外界访问
	//如果第一次访问该方法,就创建对象
	//如果不是第一次访问该方法, 返回已经创建好的对象
	public synchronized static Student getStudent(){
		if (s == null) {
			s = new Student();
		}
		return s;
	}
}
public class SingleTest {
	public static void main(String[] args) {
		//在多线程的情况下
		for (int i = 0; i < 5; i++) {
			new Thread(){
				public void run() {
					Student s = Student.getStudent();
					System.out.println(s);
				};
			}.start();
		}
	}
}

3.网络编程中的方法
InetAddress
public static InetAddress getByName(String host) 获得给定主机的IP地址对象
public String getHostAddress() 获得ip的字符串形式
public String getHostName() 获得主机名

DatagramSocket
public void close() 关闭此数据报套接字
public InetAddress getInetAddress() 返回此套接字连接的地址
public void receive(DatagramPacket p) 从此套接字接收数据报包。
public void send(DatagramPacket p) 从此套接字发送数据报包。

DatagramPacket
public InetAddress getAddress()返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。
public byte[] getData()返回数据缓冲区。
public int getLength()返回将要发送或接收到的数据的长度。

ServerSocket
public Socket accept() 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
public InetAddress getInetAddress() 返回此服务器套接字的本地地址

Socket
public void close() 关闭此套接字。
public InetAddress getInetAddress() 返回套接字连接的地址。
public InputStream getInputStream() 返回此套接字的输入流。
public OutputStream getOutputStream() 返回此套接字的输出流
public void shutdownOutput() 禁用此套接字的输出流

4.UDP与TCP套接字通讯的主要区别
UDP:
将数据源和目的地封装成数据报包中,不需要建立连接;
每个数据报包的大小限制在64kb;
因无连接,是不可靠协议;
不需要建立连接,速度快
TCP:
建立连接,形成传输数据的通道;
在连接中进行大数据量传输;
通过三次握手完成连接,是可靠协议;
必须建立连接,效率会稍低

5.什么是Socket?及Socket的原理机制
Socket套接字: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
Socket原理机制:
通信的两端都有Socket;
网络通信其实就是Socket间的通信;
数据在两个Socket间通过IO传输。

UDP与TCP具体实现见文章面试题(2)
https://blog.csdn.net/qq_33639213/article/details/85619396

你可能感兴趣的:(java,网络编程)