JAVASE-API-12--单例模式、网络编程(套接字)、断言、断点调试(Debug模式) ---D21

复习:
1、 线程
a) 是进程中在执行的任务或者是逻辑
b) 每一个核在同一时刻内只能执行一个进程中的一个线程
c) 引入多线程的意义:提高CPU的利用率
d) 定义线程的方法:继承Thread,实现Runnable,实现Callable
e) 多线程的并发安全问题:多个线程同时执行,多个线程之间是相互前瞻资源导致出现了不合理的数据
f) 同步机制:synchronized – 同步代码块,同步方法
i. 同步代码块在使用的时候需要指定锁对象,锁对象要求被所有的线程都认识:共享资源、方法区中的数据、this
ii. 同步方法的锁对象:如果是非静态方法,那么锁对象是this;如果是静态方法,锁对象是当前类
iii. 死锁:多个线程之间的锁产生了嵌套
g) 等待唤醒机制:wait,notify ,notifyAll
h) 线程的状态:初始、就绪、运行、阻塞、消亡
i) 线程出现或者销毁的方法
j) 守护线程:被守护的线程结束,守护线程就随之结束。一个线程要么是守护线程要么是被守护线程。
k) 线程的优先级:1-10。理论上数字越大,优先级就越高,那么抢占到资源的概率就越大,但实际上,

24中常见的模式

单例模式

在全局过程中只存在唯一的一个实例。
定义的时候就进行初始化的方式 - - - 饿汉式
把实际初始化的过程给推后的方式 - - - 懒汉式
由于懒汉式把初始化过程给推后,所以能相对提高类的加载效率,但是存在线程安全问题
饿汉式在类加载的时候就把对象进行了初始化,所以不存在线程安全问题。如果没有用到这个对象,但是这个对象依然要初始化,会增长加载时间。
扩展:了解单例模式的七种方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


网络编程(套接字)

是利用网络进行数据传输的机制- - - 本质上就是一套基于网络的流

网络基本概念

ISO七层模式
物理层、数据链路层、网络层、传输层(UDP/TCP)、会话层、表示层、应用层- -http、ftp、POP3、 SMATP
IP地址:在网络中对主机进行地址标记IPv4:用四个数据来表示一个IP地址,每一个数字的取值范围是0~255 10.5.20.86;IPv6。
端口:主机和外界进行信息交互的媒介。端口号:065536。其中有一部分端口是被系统默认占用的,大部分分布在了(01024)。
域名:为了方便记忆而产生的名称- - - baidu.com, news.baidu.com - - - 一级域名往往是用于标记网站类型,二级域名往往是公司名称,三级域名往往是应用类型
DNS解析服务器:将域名和IP地址进行对应


UDP:

基于流的。不建立连接,不可靠,传输速度相对较快。在传输数据的时候要对数据进行封包,每一个包不超过64K大小。适用于对速度依赖性比较高对可靠性要求比较低的场景 - -视频聊天、直播
在这里插入图片描述

发送端:

  1. 创建套接字对象
  2. 准备数据包,将数据以及发送地址写到数据包中
  3. 发送数据
  4. 关流
    在这里插入图片描述

接收端

  1. 创建套接字对象,绑定要监听的端口号
  2. 准备数据包用于存储数据
  3. 接收数据
  4. 关流
  5. 解析数据
    在这里插入图片描述

练习:一个线程表示发送端,一个线程表示接收端,实现单人聊天
255.255.255.255广播地址
在这里插入图片描述
在这里插入图片描述

TCP:

基于流的。建立连接,经过三次握手,可靠。传输速度相对较慢。理论上不限制数据的大小。适用于对可靠性要求较高而对速度要求较低的场景 - - - 文件传输
在这里插入图片描述

客户端:

  1. 创建一个客户端套接字对象-Socket
  2. 发起连接,绑定连接地址
  3. 获取自带的输出流
  4. 写出数据
  5. 通知服务器端数据已经写完
  6. 关流
    在这里插入图片描述

服务器端:

  1. 创建一个服务器套接字对象 – ServerSocket,绑定要监听的端口号
  2. 接受连接,获取到一个Socket对象
  3. 从连接中获取到输入流
  4. 利用输入流来读取数据
  5. 通知客户端数据已经读完
  6. 关流

注意:receiver/connect/accept/read/write 产生阻塞

在这里插入图片描述

扩展:

BIO – Blocking IO – 同步式阻塞式IO - 最早的流
NIO – New IO – NonBlocking IO – 同步式非阻塞式IO – JDK1.4
AIO – Asynchronous IO – 异步式非阻塞式IO – JDK1.8


练习:将文件从客户端上传到服务器端
在这里插入图片描述
在这里插入图片描述
文件名:
在这里插入图片描述

用两个字节来表示文件名:
在这里插入图片描述

扩展:利用TCP实现单人聊天
在这里插入图片描述


断言

根据已知条件来预测和确定结果
在Java中,断言不是默认开启,需要在运行的时候添加参数 -ea
在这里插入图片描述

给所有工程设置断言:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

断点调试-Debug模式

F5 – 钻入方法
F6 – 执行到下一行
F7 – 回退一步
F8 – 执行到下一个断点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值