827 leetcode +网络

01背包问题的衍生题目:

对于01背包问题,只需要明白四件事,1重量是啥,2value是啥,3优化目标是啥,4约束目标是啥。

这个题目里面重量是:0,1,4,9,16。。。。

value:1,1,1,1

优化目标:最小化value

其实就是一个遍历,需要从背包容量为0,没有物品开始遍历,然后想想怎么初始化:

当选择物品0的时候,此时重量是0,需要无限的物品才能填满。所以初始化为dp(n,INT_MAX);

但是当背包为0容量则dp[0] = 0。

初始化完毕,然后考虑如何更新:

dp[j] = min{dp[j - w[i]] + v[i] , dp[j] };

cpp 复制代码
class Solution {
public:
    int numSquares(int n) {
        vector<int> dp(n+1,INT_MAX);

        //初始化
       dp[0] = 0;

        for(int i = 1; i*i <= n ; i ++)
        {
            for(int j = i*i; j <= n ; j ++)
            {
                dp[j] = min(dp[j-i*i]+1,dp[j]);
            }
        }
        
        return dp[n];
    }
};

  1. 网络七层模型都是什么?每一层的作用是什么?

答:

总体:网络七层模型是OSI提出来的一种网络模型标准,其将整个网络分为了7层

  • 应用层:这一层是直接面向使用者的比如常见的浏览器,邮件系统等等。
  • 表示层:这一层主要是明确网络的数据如何组织,比如我们常见的网页其遵循HTTP,超文本传输协议,SMTP/POP3/IMTP邮件协议,使用服务器最常用的两种FTP和SSH协议等等。
  • 会话层:会话层主要负责用户的信息验证,比如我们远程登陆一个电脑的时候就需要对方进行确认。
  • 传输层:大名鼎鼎的TCP/UDP协议,其中TCP是一种有链接的,可靠的协议。而UDP是一种无连接的,不可靠协议,控制包的发送和收取。
  • 网络层:主要是负责网路包的定位,比如IP协议,负责在互联网中定位门牌,ARP协议,将IP地址转换为MAC地址,NAT 协议将局域网的IP转换为广域网IP,比如家里面的宽带就有一个LAN口和WAN口,就是这个作用。
  • 数据链路层:这一层主要就是MAC协议,定位我们的物理网卡。
  • 物理层:光纤,等网络传输的物理设施。

1.1 为什么要网络分层?

我觉得分层这个事情是一个比较常见的解决复杂问题的手段,比如对于我们一个常见的web项目,一般来说我们分为三层:

  • Reposity:数据库
  • Service:业务
  • Controller:前后端交互

分层之后每一层都专注于做自己的事情,实现代码项目的高内聚,低耦合。

回到我们这样一个网络分层的问题来说我觉得主要有以下有点:

1.各层之间独立:每一层只需要完成自己的逻辑,并且负责实现好上下两层的接口即可。

2.提高了灵活性和可替换性:每一层都能够不断地进行优化,使用更加合理的方案,当修改某一层的功能只要实现好接口,则对于其他层来说是不可见的。

3.复杂问题简单化:将一个庞大的问题,细分为很多易于解决的小问题。

最后,我觉得这也符合计算机科学的特征即整个系统都是从上到下按照严格的层次结构设计的。

1.2 四层模型中常见的网络中,每一层都有什么样的协议

应用层: HTTP,SMTP,POP3/IMTP,FTP,Telenet,SSH,DNS

传输层:TCP,UDP

网络层:IP,ARP,NAT

  1. 从输入URL到网页返回发生了什么?

  2. 输入URL

  3. DNS解析:先查找浏览器,本地,DNS服务器缓存,没有再解析。

  4. 获得IP地址之后,形成一个连接的报文,经过TCP协议包装。

  5. 由网络层进行路由和转发找到服务器位置。

5.服务器从网络分层模型以次解包,根据HTTP报文的生产一个HTML返回

6.服务器渲染HTML

2.1 状态码有什么?

1xx"信息码,比如请求正在处理等等

2xx:成功

3xx:重定向

4xx: 客户端错误

5xx:服务器错误

  1. HTTP和HTTPS有什么区别:

  2. 浅显的来说:首先是协议不一样HTTP和HTTPS,端口不一样80 443

  3. 安全性:http,明文传播,https密文传播,现在的https采用了混合加密的方式进行通信。即先使用非对称加密传输密钥,然后通过对称加密实现了密文传输。另外,HTTPS还实现了数字签名和身份认证。

数字签名:有一份文件,先签名再用摘要算法生成摘要,然后使用私钥加密,拿到的人就可以用公钥解密这个摘要,并用摘要算法计算明文的文件,如果两个摘要一样就说明了文件被签名了。

文件被篡改:数字摘要--->私钥加密--->如果篡改就不一样了

身份认证也是一样的,不过需要CA给与发布公钥的单位可靠性保证。

相关推荐
网络安全-杰克9 分钟前
网络安全概论
网络·web安全·php
怀澈12213 分钟前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
耗同学一米八43 分钟前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题二
运维·网络·mariadb
skywalk81631 小时前
树莓派2 安装raspberry os 并修改成固定ip
linux·服务器·网络·debian·树莓派·raspberry
C++忠实粉丝1 小时前
计算机网络socket编程(3)_UDP网络编程实现简单聊天室
linux·网络·c++·网络协议·计算机网络·udp
黑客Ela1 小时前
网络安全中常用浏览器插件、拓展
网络·安全·web安全·网络安全·php
qdprobot2 小时前
ESP32桌面天气摆件加文心一言AI大模型对话Mixly图形化编程STEAM创客教育
网络·人工智能·百度·文心一言·arduino
hakesashou3 小时前
Python中常用的函数介绍
java·网络·python
C++忠实粉丝3 小时前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
九州ip动态3 小时前
做网络推广及游戏注册为什么要换IP
网络·tcp/ip·游戏