当前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个默认成员函数 对于一个没有成员的类来说,称之为空类; 但空类并非完全是空的&#…

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——数据异常处理

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

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

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

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

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

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) 创建一个属于本次若依部署的网段(只…

sql-50练习题6-10

sql练习题6-10题 前言数据库表结构介绍学生表课程表成绩表教师表 0-6 查询"李"姓老师的数量0-7 查询学过"李四"老师授课的同学的信息0-8 查询没学过"李四"老师授课的同学的信息0-9 查询学过编号为"01"并且也学过编号为"02"的…

Redis(09)| Reactor模式

我们在使用Redis的时候,通常是多个客户端连接Redis服务器,然后各自发送命令请求(例如Get、Set)到Redis服务器,最后Redis处理这些请求返回结果。 从上一篇博文《Redis(08)| 线程模型》中知道Redis是单线程。Redis除了处…

数据结构——栈与队列

目录 1. 中缀表达式转换为后缀表达式 2. 括号匹配问题 3. 栈实现队列 4. 约瑟夫环 1. 中缀表达式转换为后缀表达式 【问题描述】 输入一个中缀表达式,表达式中有、-、*、/四种运算以及(、),表达式中的其他符号为大写的字母。实…

QT webengine显示HTML简单示例

文章目录 参考示例1TestWebenqine.promainwindow.hmainwindow.cppmain.cpp效果 示例2 (使用setDevToolsPage函数)main.cpp效果 参考 QT webengine显示HTML简单示例 示例1 编译器 : Desktop Qt 5.15.2 MSVC2019 64bit编辑器: QtCreator代码: TestWebenqine.pro # TestWeben…

pycharm运行R语言脚本(win10环境下安装)

文章目录 简介1. pycharm安装插件2. 安装R语言解释器2.1下载安装包2.2具体安装过程 3.编辑环境变量4 检验是否安装成功:5.安装需要的library6.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件&am…

震惊!原来BUG是这么理解的!什么是BUG?软件错误(BUG)的概念

较为官方的概念: 当且仅当规格说明是存在的并且正确,程序与规格说明之间的 不匹配才是错误。 当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的 功能要求时,就是软…

【Python 零基础入门】常用内置函数 初探

【Python 零基础入门】内容补充 1 常用内置函数 Python 简介为什么要学习内置函数数据类型和转换int(): 转为整数float(): 转为浮点数list(): 转为列表tuple(): 转换为元组set():转换为集合dict(): 创建字典: 数学运算abs(): 绝对值pow(): 幂运算round(): 四舍五入min(): 最小值…