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

news2024/11/17 6:01:39

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. 把结果显示给用户.

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

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

相关文章

用户案例 | 珍岛集团基于 Apache DolphinScheduler 打造智能营销云平台

珍岛集团致力于打造全球领先的智能营销云平台,在国内率先推出的Marketingforce(营销力)平台,专注于人工智能、大数据、云计算在数字营销及企业数字化智能化领域的创新与实践,面向全球企业提供营销力软件及服务&#xf…

python轻量规则引擎rule-engine入门与应用实践

rule-engine是一种轻量级、可选类型的表达式语言,具有用于匹配任意 Python 对象的自定义语法,使用python语言开发。 规则引擎表达式用自己的语言编写,在 Python 中定义为字符串。其语法与 Python 最相似,但也受到 Ruby 的一些启发…

Centos8 降低gcc版本至gcc-7.3

1 首先卸载系统中的gcc sudo yum remove gcc 2 重新安装gcc-7.3 sudo dnf group install “Development Tools” 然后再次卸载gcc sudo yum remove gcc 然后发现centos-release-scl-rh已经安装了 sudo yum install centos-release-scl-rh yum -y install devtoolset-7-gcc dev…

SCAU 编译原理 实验1 词法分析实验

实验内容&#xff1a;参考附录C.1 设计一个简单语言的词法分析程序&#xff0c;要求能够正确处理关键字、运算符&#xff08;单个符号的和复合的运算符如>、>&#xff09;、分界符、标识符、常数等单词&#xff0c;以及不是单词的换行回车、注释。 #include<stdio.h&…

【自然语言处理】理解词向量、CBOW与Skip-Gram模型

文章目录 一、词向量基础知识1.1 One-hot表示1.2 Distributed表示 二、word2vec基础知识2.1 CBOW和Skip-gram 三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型3.1 CBOW 模型3.2 Skip-gram 模型 参考资料 由于计算机不能直接对各种字符进行运算&#xff0c;为此需要…

Java8实战-总结44

Java8实战-总结44 CompletableFuture&#xff1a;组合式异步编程Future 接口Future 接口的局限性使用 CompletableFuture 构建异步应用 CompletableFuture&#xff1a;组合式异步编程 最近这些年&#xff0c;两种趋势不断地推动我们反思我们设计软件的方式。第一种趋势和应用运…

让 CHAT 充分发挥优势

今天&#xff0c;小编带大家看下CHAT是如何写作的&#xff1f; 作为家长的你&#xff0c;是不是有为孩子的作业而烦恼&#xff1f;是不是也担心孩子的压力太大&#xff1f;产生逆反心理&#xff0c;今天我们将看下如何利用CHAT来帮助孩子提高学习的质量&#xff0c;帮家长减轻心…

基于hugging face的autogptq量化实践

1.量化并保存到本地的 #导入库&#xff1a; from transformers import AutoModelForCausalLM, AutoTokenizer, GPTQConfig model_id "facebook/opt-125m"quantization_config GPTQConfig(bits4,group_size128,dataset"c4",desc_actFalse, )tokenizer A…

Git的远程仓库

Git的远程仓库 添加远程仓库从远程库克隆 添加远程仓库 你在本地创建了一个Git仓库后&#xff0c;又想在GitHub创建一个Git仓库&#xff0c;并且让这两个仓库进行远程同步&#xff0c;这样&#xff0c;GitHub上的仓库既可以作为备份&#xff0c;又可以让其他人通过该仓库来协作…

让数据“动”起来:Python动态图表制作详解

在读技术博客的过程中&#xff0c;我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的&#xff1f;难度大吗&#xff1f;这篇文章就介绍了 Python 中一种简单的动态图表制作方法。 数据暴增的年代&#xff0c;数据科学家、分析师在被要求对数据有…

DAY33 1005. K次取反后最大化的数组和 + 134. 加油站 + 135. 分发糖果

1005. K次取反后最大化的数组和 题目要求&#xff1a;给定一个整数数组 A&#xff0c;我们只能用以下方法修改该数组&#xff1a;我们选择某个索引 i 并将 A[i] 替换为 -A[i]&#xff0c;然后总共重复这个过程 K 次。&#xff08;我们可以多次选择同一个索引 i。&#xff09; …

风力发电功率预测(CEEMDAN-LSTM-CNN-CBAM模型,Python代码)

1.前言 1.1.运行效果&#xff1a;风力发电功率预测&#xff08;CEEMDAN-LSTM-CNN-CBAM模型&#xff0c;Python代码&#xff09;_哔哩哔哩_bilibili 1.2.环境库&#xff1a; 如果库版本不一样&#xff0c; 一般也可以运行&#xff0c;这里展示我运行时候的库版本&#xff0c;是…

hadoop伪分布式安装部署

首先jdk安装完毕 jdk安装文档参考&#xff1a; Linux 环境下安装JDK1.8并配置环境变量_linux安装jdk1.8并配置环境变量_Xi-Yuan的博客-CSDN博客 准备好hadoop的安装包 我的下载地址如下&#xff1a; We Transfer Gratuit. Envoi scuris de gros fichiers. 将hadoop包上传到随…

Leetcode—2678.老人的数目【简单】

2023每日刷题&#xff08;八&#xff09; Leetcode—2678.老人的数目 int countSeniors(char ** details, int detailsSize){ int ans 0; int i; int tens 0; int ones 0; for(i 0; i < detailsSize; i) { tens ((details i) 11) - ‘0’; ones ((details i) 12)…

二十三、设计模式之组合模式![

目录 二十三、设计模式之组合模式能帮我们干什么&#xff1f;主要解决什么问题&#xff1f;优缺点优点缺点&#xff1a; 使用的场景理解实现角色组合模式 总结 魔战已经完结。成功登顶。占领敌军最高峰。 二十三、设计模式之组合模式 “组合模式”也被称为“部分整体模式”该…

报错:SSL routines:ssl3_get_record:wrong version number

一、问题描述 前后端联调的时候&#xff0c;连接后端本地服务器&#xff0c;接口一直pending调不通&#xff0c;控制台还报以下错误&#xff1a; 立马随手搜索了一下解决方案&#xff0c;但是emmm&#xff0c;不符合前端的实际情况&#xff1a; 二、解决方法&#xff1a; 实际…

WIN11+OPENCV4.8 编译及下载失败处理方法

1. 基础准备 1. 下载Opencv和Contrib库 Opencv&#xff1a;Releases opencv/opencv GitHub Contrib&#xff1a;Tags opencv/opencv_contrib GitHub 2. 安装Visual Studio 或 MinGW64 MinGW&#xff1a;Tags opencv/opencv_contrib GitHub 这里安装1.12.0 MinGW 。 以…

uniapp 自定义导航栏

自定义导航栏 修改 pages.json 在 pages.json 中将 navigateionStyle 设为 custom 新建 systemInfo.js systemInfo.js 用来获取当前设备的机型系统信息&#xff0c;放在 common 目录下 /*** 此 js 文件管理关于当前设备的机型系统信息*/ const systemInfo function() {/***…

Python深度学习实战-基于Sequential方法搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 第一步&#xff1a;导入模块&#xff1a;import tensorflow as tf 第二步&#xff1a;制定输入网络的训练集和测试集 第三步&#xff1a;搭建网络结构&#xff1a;tf.keras.models.Sequential() 第四步&#xff1a;配置训练方法&#xff1a;model.compile()&#x…

Lec09 Interrupts | 中断

中断与系统调用区别 asynchronous。当硬件生成中断时&#xff0c;Interrupt handler与当前运行的进程在CPU上没有任何关联。但如果是系统调用的话&#xff0c;系统调用发生在运行进程的context下。concurrency。我们这节课会稍微介绍并发&#xff0c;在下一节课&#xff0c;我…