学习目标

  • 网络编程
    • 网络编程三要素
    • TCP与UDP协议
    • 基于TCP协议案例
  • 设计模式

    • 单列模式
    • 多例模式
    • 工厂模式

      1. 网络编程

      1.1 软件结构

  • C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。

  • B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。

    1.2 网络编程三要素及特点 ?

  • IP地址:设备在网络中的地址,是唯一的标识

  • 端口:应用程序在设备中唯一的标识。(取值范围是0~65535)
  • 协议:数据在网络中传输的规则,常见的协议有UDP协议和TCP协议

    1.3 TCP与UDP协议之间区别 ?

    | | UDP协议(用户数据报协议) | TCP协议(传输控制协议) | | —- | —- | —- | | 面向 | UDP是面向无连接通信协议 | TCP协议是面向连接的通信协议 | | 特点 | 速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据 | 速度慢,没有大小限制,数据安全 |

1.4 TCP协议代码实现

image.png

  1. //客户端
  2. public class ClientDemo {
  3. public static void main(String[] args) throws IOException {
  4. //1 创建客户端Socket对象
  5. Socket socket = new Socket("127.0.0.1",10086);
  6. //2 获取网络中的字节输出流
  7. //把网络中的字节输出流封装成高效的字符输出流
  8. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
  9. //3 给服务端发送一行字符数据
  10. bw.write("你好");
  11. bw.newLine();
  12. bw.flush();
  13. //给服务端反馈数据
  14. //获取网络中的字节输入流,封装成高效的字符输入流
  15. BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  16. String line = br.readLine();
  17. System.out.println(line);
  18. //释放资源
  19. br.close();
  20. bw.close();
  21. socket.close();
  22. }
  23. }
  1. //服务端
  2. public class ServerDemo {
  3. public static void main(String[] args) throws IOException {
  4. //1 创建ServerSocket 对象
  5. ServerSocket serverSocket = new ServerSocket(10086);
  6. //2. 监听客户端的连接
  7. //Socket accept() : 该方法会一直阻塞直到建立连接
  8. Socket socket = serverSocket.accept();
  9. //3 获取网络中的字节输入流,封装成高效的字符输入流
  10. BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  11. //4 读取客户端发送的一行数据
  12. String line = br.readLine();
  13. System.out.println(line);
  14. //给客户端反馈数据
  15. //获取网络中的字节输出流,封装成高效的字符输出流
  16. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
  17. bw.write("你也好");
  18. bw.newLine();
  19. bw.flush();
  20. bw.close();
  21. br.close();
  22. socket.close();
  23. serverSocket.close();
  24. }
  25. }

2.设计模式

2.1 为什么要使用单例模式 ?

  • 单例模式,是一种常用的软件设计模式。通过单例模式可以保证项目中,应用该模式的这个类只有一个实例。
    即一个类只有一个对象实例。
  • 好处 :可以节省内存,共享数据

    2.2 单例中懒汉式和饿汉式的区别 ?

  • 饿汉单例设计模式就是使用类的时候已经将对象创建完毕

  • 懒汉单例设计模式就是调用getInstance()方法时对象才被创建

    2.3 为什么要使用工厂模式 ?

    工厂模式的存在可以改变创建对象的方式,降低类与类之间的耦合问题