当前JavaEE初阶的阶段知识总结

fly021311

当前JavaEE初阶的阶段知识总结

  1. 多线程

  2. 文件IO

    1. 文件系统操作 ~~ File类.

    2. 文件内容操作 ~~ 读文件,写文件.

    3. IO 流对象.

      • 流(Stream),形象的比喻,读取文件,就像水流一样,读写文件的时候,和水流类似,读100字节,可以一次读1个字节,100次完成;也可以一次读10个字节,10次完成……

      • 在Java标准库中,提供了一组类,负责完成IO流式操作.

        • 字节流: 以字节为基本单位

          • InputStream 输入流,把数据从硬盘,读取到内存中.
          • OutputStream 输出流,把数据从内存写入到硬盘里.
        • 字符流: 以字符为基本单位

          • Reader 输入流
          • Writer 输出流
        • 上述这四个类,实际上,标准库还提供了很多具体的类的实现,虽然这里涉及到的类非常多,但是实际上大家的使用方法,都是差不多的.

          四个核心操作:

          1. 打开文件 ~~ 构造流对象的时候,指定文件路径(绝对路径,相对路径)

          2. 读文件 ~~ read 参数是一个输出型参数

          3. 写文件 ~~ write

          4. 关闭文件 ~~ close

            每次打开一个文件,都需要在进程对应内核PCB数据结构中, 申请一个文件描述符的表项,文件描述符表是有上限的.如果光打开,不关闭,此时就可能导致文件描述符被占满了,导致无法继续打开文件,所以一定关闭close文件.

  3. 网络编程&网络原理

    1. 协议

      网络中的基本概念 ~~ 协议: 针对数据格式的约定.

      1. 协议分层
        1. 网络通信,是一个很复杂的工作,如果使用一个协议来完成所有的工作,这个协议就会很复杂. => 由此想到了,协议拆分,大的协议变成多个小点的协议,每个协议负责一部分工作.
        2. 由于拆分出来的协议太多了,按照协议的功能/作用,进行不同程度的分类 => 即协议分层,而为了让协议之间更好的配合,约定,上层协议调用下层协议,下层协议给上层协议提供服务.(协议之间不能跨层交互) => 就构成了一个**“协议栈**”
        3. “协议栈”: OSI 七层模型, TCP/IP 五层模型
          1. 应用层: 数据具体要怎么使用.
          2. 传输层: 只考虑起点和终点.
          3. 网络层: 负责任意两个节点之间的传输,路径传输.
          4. 数据链路层: 负责相邻节点之间的数据传输(通过网线/光纤/无线直接相连的两个路由器/交互机/主机….)
          5. 物理层: 信息传输的公路
      2. 网络数据传输的基本流程:
        1. 封装: 发送方,把数据从上到下层层加上协议报头(包装快递).
        2. 分用: 接受方,把数据从下层到上层进行解析(拆快递).
    2. 网络编程

      1. Socket (网络编程套接字) ~~ 注: UDP,TCP都是传输层协议.

        TCP,有连接,可靠传输,面向字节流,全双工.
        UDP,无连接,不可靠传输,面向数据报,全双工.

        1. UDP 的 socket

          1. DatagramSocket , 代表一个 socket 对象,本质上一个文件,相当于网卡的抽象.

            send 发送, receive 接受, close 关闭文件.

          2. DatagramPacket , 代表一个 UDP 数据报.

            构造对象,指定字节数组作为缓冲区.

        2. TCP 的 socket

          1. ServerSocket 专门给服务器用的.

            提供的最核心方法 accept 用来接收一个连接.

          2. Socket 服务器客户端都会用到.

            客户端使用 Socket 和服务器建立连接,并且进行后续传输.
            服务器使用 Socket 和客户端进行交互.
            Socket 提供了getInputStream,getOutputStream获取到输入输出流,并进一步通过这些流对象来完成数据传输.

          3. 编写TCP的客户端服务器程序的时候,涉及到“长连接”“短连接”的问题.

            短连接: 传输一次就断开连接,后续传输,重新连接.
            长连接: 一个连接中,多次数据传输.
            注: UDP是无连接的,不涉及长连接,短连接的问题.

          4. TCP服务器如果不使用多线程,可能会无法处理多个客户端.

            这个事情本质上是和代码结构有关系的,accept会阻塞,read也会阻塞…….这两个地方都可能阻塞,就导致一方阻塞之后,另一方即使数据传来了也无法处理(单线程),使用多线程就是为了规避多处阻塞的问题.
            注: 对UDP来说,只有receive一处阻塞,不涉及这个问题.

        3. 服务器程序典型流程

          1. 启动服务器(初始化),进行 Socket 的实例化.
          2. 进入主循环(while true)
            1. 读取请求并解析
            2. 根据请求计算响应
            3. 把响应写回到客户端
        4. 客户端典型流程

          1. 启动客户端,进行 socket 实例化.
          2. 进入主循环.
            1. 读取用户输入的内容.
            2. 构造请求并发送.
            3. 读取响应结果.
            4. 把结果显示给用户.
      2. 网络原理

        1. 应用层 ~~ 应用层描述了应用程序如何理解和使用网络中的通信数据.

          程序猿在应用层这里,最主要的工作就是自定义协议.
          下四层都是在系统内核/程序驱动/硬件中已经实现好的,我们只能去了解,不能修改,应用层协议,则是我们可以自定义的.

          1. 自定义协议主要做两件事:

            1. 明确协议数据要传递哪些信息(根据需求来的).

            2. 明确数据组织格式.

              比如可以按照纯文本的方式,也可以使用XML,json,protobuffer

          2. 最典型的HTTP协议 ~~ 应用层除了上述自定义的协议之外,也有一些大佬们已经设计好的,现成的协议.

        2. 传输层

          传输层虽然是操作系统内核已经实现好的,但是程序猿写代码,要调用系统提供的socket api完成网络编程.socket 就是属于传输层的部分.

          1. UDP协议

            学习一个协议,其中很大的工作就是理解报头解构
            一个UDP报文 = UDP 报头 + UDP 载荷
            UDP 报头: 8个字节,4个字段.
            (1).2字节的源端口 ~~ 发送方的端口
            (2).2字节的目的端口 ~~ 接受方的端口
            (3).2字节的UDP报文长度 ~~ 2字节表示的范围,就是0 -> 65535,即一个UDP数据报,最长也就是65535字节.
            (4).2字节的校验和 ~~ 发送方,把要发送的数据计算出检验和,得到checksum1.接收方,收到数据就把数据按照同样的方式再算一次校验和,得到checksum2.同时接收方也收到了checksum1.接收方对比checksum1和checksum2是否相同,如果相同,说明数据传输没出错.如果不同,说明数据传输变化了.

          2. TCP协议

            1. 特点
            1. 有连接
            2. 可靠传输 ~~ TCP最核心的特点
            3. 面向字节流
            4. 全双工
            1. 构成可靠传输的基石(主要机制)

              1. 确认应答
              2. 超时重传
            2. 连接(Connect)管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java的婚纱摄影网站系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

【数据结构】排序算法总结

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈数据结构 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 总结 1. 归并排序2. 排序算法复杂度…

飞利浦双串口51单片机485网关

主要功能将PC端的数据接收下来,分发到不同的设备,也是轮询设备数据读取回来,打包回传到PC端,数据包包头包尾识别,数据校验,接收超时处理,将协议结构化处理,协议的改动不需要改动程序…

Python 算法高级篇:图的表示与存储优化

Python 算法高级篇:图的表示与存储优化 引言 1. 什么是图?2. 图的基本概念3. 图的表示方法3.1. 临接矩阵表示临接矩阵的优点:临接矩阵的缺点: 3.2. 邻接表表示邻接表的优点:邻接表的缺点: 4. 优化的存储方法…

【开源】基于SpringBoot的计算机机房作业管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登录注册模块2.2 课程管理模块2.3 课时管理模块2.4 学生作业模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程表3.2.2 课时表3.2.3 学生作业表 四、系统展示五、核心代码5.1 查询课程数据5.2 新增课时5.3 提交作…

C++初阶--类与对象(2)

文章目录 类的6个默认成员函数构造函数默认构造函数的用处: 析构函数默认析构函数的用处 拷贝构造函数赋值运算符重载取地址及const取地址操作符重载 类的6个默认成员函数 对于一个没有成员的类来说,称之为空类; 但空类并非完全是空的&#…

rpc入门笔记 0x02 protobuf的杂七杂八

syntax "proto3"; // 这是个proto3的文件message HelloRequest{ // 创建数据对象string name 1; // name表示名称,编号是1 }生成python文件 安装grpcio和grpcio-tools库 pip install grpcio #安装grpc pip install grpcio-tools #安装grpc tools生成…

1024 云上见 · 上云挑战(ChatGPT搭建)

【玩转1024】使用函数计算X通义千问搭建AI助手,参与1024小说创作大赛 【使用函数计算X通义千问搭建AI助手,参与小说创作大赛】:本活动基于函数计算X 通义千问快速部署 AI 个人助手应用,用户可以根据需要选择不同角色的AI助手开启…

Maven配置阿里云中央仓库settings.xml

Maven配置阿里云settings.xml 前言一、阿里云settings.xml二、使用步骤1.任意目录创建settings.xml2.使用阿里云仓库 总结 前言 国内网络从maven中央仓库下载文件通常是比较慢的,所以建议配置阿里云代理镜像以提高jar包下载速度,IDEA中我们需要配置自己…

基础课13——数据异常处理

数据异常是指数据不符合预期或不符合常识的情况。数据异常可能会导致数据分析结果不准确,甚至是错误,因此在进行数据分析之前需要对数据进行清洗和验证。 常见的数据异常包括缺失值、重复值、异常值等。 缺失值是指数据中存在未知值或未定义的值&#…

k8s集群环境搭建

简介: 以工作项目的视角来讲解k8s相关环境搭建,提供k8s相关基础理论、测试案例,极大方便k8s的入门、进阶 k8s入门之前,集群环境的搭建是至关重要的,有了集群环境,才方便后续k8s的学习和实践。但集群的搭建…

JAVA:集合框架常见的面试题和答案

1、List接口的常见实现类有哪些? 答: 常见的List接口实现类包括: ArrayList: 基于动态数组实现的List,支持快速随机访问。LinkedList: 基于链表实现的List,支持快速的插入和删除操作。Vector: 一个线程安全的动态数组…

Kotlin基础——枚举、When、in、for

枚举 声明只有值的枚举 enum class Color {RED, GREEN, BLUE }此外还可以增加属性和方法,如果需要在枚举类中定义方法,要使用分号把枚举常量列表和方法定义分开,这也是Kotlin唯一必须使用分号的地方 enum class Color(val r: Int, val g: …

基于Java的流浪动物救助管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

ROS自学笔记十七:Arbotix

ArbotiX 是一个基于 ROS(Robot Operating System)的机器人控制系统,它旨在为小型机器人提供硬件控制和传感器接口,以便于机器人的运动和感知。以下是有关 ROS 中 ArbotiX 的简介和安装步骤: ArbotiX 简介 ArbotiX 主…

vue3使用ref和reactive

Vue 3引入了两个新的API,ref和reactive,用于创建响应式对象。这两个方法都位于Vue.prototype上,因此可以在组件实例中直接使用。 ref ref函数用于创建一个响应式引用对象。这个函数可以接受一个普通的变量或对象作为参数,并返回…

Qt中实现页面切换的两种方式

文章目录 方式一 :使用QStackedWidget讲解代码结构main.cpp完整代码运行结果: 方式二 :代码结构完整代码mainwindow.hnewmainwindow.hmain.cppmainwindow.cppnewmainwindow.cppmainwindow.uinewmainwindow.ui 效果 方式一 :使用QS…

docker 部署 若依 Ruoyi springboot+vue分离版 dockerCompose

本篇从已有虚拟机/服务器 安装好dokcer为基础开始讲解 1.部署mysql 创建conf data init三个文件夹 conf目录存放在mysql配置文件 init目录存放着若依数据库sql文件(从navicat导出的并非若依框架自带sql) 创建一个属于本次若依部署的网段(只…

探秘JVM虚拟机中的堆、栈和方法区:内存世界的三位重要角色

在Java编程中,我们经常听到关于JVM(Java虚拟机)的概念。JVM是Java程序运行的核心,负责将Java源代码翻译成机器语言并执行。而JVM中的堆、栈和方法区则是内存管理的重要组成部分。本文将带您深入了解JVM虚拟机中这三个角色的关系&a…

Redis快速上手篇七(集群-分布式锁)

分布式锁 随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效。 单纯的Java API并不能提供分布式锁的能力。为了解决这个问…