当前位置: 首页 > article >正文

26届JAVA 学习日记——Day14

2024.11.21周四
今天仍然在补充基础知识,项目进度较慢,明天再回顾一下Java8的新特性。

八股

操作系统

什么是缓冲区溢出?

缓冲区溢出是一种常见的计算机安全漏洞,它发生在程序试图将过多的数据写入缓冲区(即一块用于临时存储数据的内存区域)时。缓冲区有固定的大小,如果写操作超出其边界,就会覆盖邻近内存区域的数据,这可能导致不可预测的行为,包括程序崩溃或更严重的安全漏洞。

计算机网络

计算机网络各层有哪些协议?

在这里插入图片描述

OSI七层模型:

国际标准化组织制定了开放式系统互联通信参考模型(Open System Interconnection Reference Model),也就是 OSI 网络模型,该模型主要有 7 层,分别是应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层。

  • 应用层,负责给应用程序提供统一的接口;(浏览器、电子邮箱客户端)
  • 表示层,负责将数据转换称兼容另一个系统能识别的格式;
  • 会话层,负责建立、管理和终止表示层实体之间的通信会话;
  • 传输层,负责端到端的数据传输;(TCP、UDP)
  • 网络层,负责数据的路由、转发、分片;(IP、路由器、三层交换机)
  • 数据链路层,负责数据的封帧和差错检测,以及MAC寻址;(网络交换机)
  • 物理层,负责在物理网络中传输数据帧;(电缆、光纤、无线电频率)

TCP/IP模型

事实上,我们比较常见,也比较实用的是四层模型,即TCP/IP 网络模型,Linux 系统正是按照这套网络模型来实现网络协议栈的。
TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。TCP/IP协议簇并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层
在这里插入图片描述

  • 应用层,支持HTTP、SMTP等最终用户进程
  • 传输层,处理主机到主机的通信(TCP、UDP)
  • 网络层,寻址和路由数据包(IP)
  • 网络接口层,通过网络的物理电线、电缆或无线信道移动比特
TCP和UDP协议的区别?
  • 连接:TCP是面向连接的传输层协议,传输数据前要先建立连接;UDP是不需要连接,即刻传输数据。
  • 服务对象:TCP是一对一的两点服务,即一条连接只有两个端点;UDP支持一对一、一对多、多对多的交互通信。
  • 可靠性:TCP是可靠交付数据的,数据可以无差错、不丢失、不重复,按序到达;UDP是尽最大努力交付,不保证可靠交付数据。但是我们可以基于UDP传输协议实现一个可靠的传输协议,比如QUIC协议。
  • 拥塞控制、流量控制:TCP有拥塞控制和流量控制机制,保证数据传输的安全性;UDP则没有,即使网络非常拥堵,也不会影响UDP的发送速率。
  • 首部开销:TCP首部长度较长,会有一定的开销,首部在没有使用「选项」字段是 20 个字节,如果使用「选项」字段则会变长。UDP首部只有8个字节,并且是固定不变的,开销较小。
  • 传输方式:TCP是流式传输,没有边界,但保证顺序和可靠;UDP是一个包一个包的发送,是有边界的,但可能会丢包和乱序。
TCP为什么需要三次握手和四次挥手?

TCP为什么需要三次握手建立连接

  • 三次握手才能 阻止重复历史连接的初始化(主要原因)
  • 三次握手才能 同步双方的初始序列号
  • 三次握手才能 避免资源浪费
    在这里插入图片描述

为什么 TCP 需要四次挥手关闭连接:

服务器收到客户端的 FIN 报文时,内核会马上回一个 ACK 应答报文,但是服务端应用程序可能还有数据要发送,所以并不能马上发送 FIN报文,而是将发送 FIN 报文的控制权交给服务端应用程序。
在这里插入图片描述

HTTP和HTTPS协议的区别?
  • HTTP是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS则解决HTTP不安全的缺陷,在TCP和HTTP网络层之间加入SSL/TLS安全协议,使得报文能够加密传输。
  • HTTP连接建立相对简单,TCP三次握手之后便可进行HTTP的报文传输。而HTTPS在TCP三次握手之后,还需进行SSL/TLS的握手过程,才可进入加密报文传输。
  • 两者的默认端口不一样,HTTP默认端口是80,HTTPS默认端口号是443。
  • HTTPS协议需要向CA(证书权威机构)申请数字整数,来保证服务器的身份是可信的。

算法

今日暂无该内容学习。

项目

苍穹外卖
在这里插入图片描述
项目过程中解决的一些问题:
BeanUtils.copyProperties()
BeanUtil是Spring框架中的实体相关工具类,其包位置是package org.springframework.beans,在开发过程中发现OrdersVO需要承载的许多成员变量都来自Orders,当时我以为这个方法只能将同名的方法传递到该类中,因此花了很多时间去和接口文档中的参数对比找新的实体类。

但是实际上该方法具有以下特性:

  • 如果OrderVO继承自 Orders,则 BeanUtils.copyProperties 也会复制父类 Orders 的属性。
  • 有一个ignore的参数,能选择性将某些变量的复制取消(如主键id)。

接口文档参数:
在这里插入图片描述
OrderVO:

package com.sky.vo;

import com.sky.entity.OrderDetail;
import com.sky.entity.Orders;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderVO extends Orders implements Serializable {

    //订单菜品信息
    private String orderDishes;

    //订单详情
    private List<OrderDetail> orderDetailList;

}

http://www.kler.cn/a/403973.html

相关文章:

  • 3-22 ElementPlus:表单
  • 如何在 PyCharm 中配置 HTTP 代理以确保网络连接的顺畅性
  • 爬虫开发(1)爬虫开发工具介绍与环境搭建
  • std::weak_ptr应用于观察者模式的示例
  • 视频修复技术和实时在线处理
  • 【AI编程实战】安装Cursor并3分钟实现Chrome插件(保姆级)
  • 【学习笔记】AD智能PDF导出(装配文件)
  • React的API✅
  • reactflow 中 useReactFlow 模块作用
  • IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题 四)
  • Ubuntu 18.04 安装 Docker
  • ubuntu中使用ffmpeg和nginx推流rtmp视频
  • 大数据新视界 -- Hive 数据仓库:架构深度剖析与核心组件详解(上)(1 / 30)
  • 电源模块自动化测试系统的优势体现在哪些方面?-纳米软件
  • 科技赋能健康:多商户Java版商城系统引领亚健康服务数字化变革
  • uniapp奇怪bug汇总
  • Java项目实战II基于Spring Boot的工作流程管理系统设计与实现(开发文档+数据库+源码)
  • 图像处理 - 色彩空间转换
  • Dockerfile复制目录进入镜像里
  • 主机管理工具 WGCLOUD v3.5.6 更新了哪些特性
  • 注意原函数平行,取log后就不平行了
  • 晶圆测试中自动化上下料的重要性与应用
  • bpmn.js显示流程图
  • 重载函数的应用
  • MySQL数据库运维及集群搭建
  • 【10分钟学习Vue自定义指令开发】元素变化指令