【Java面试系列】Nginx

在这里插入图片描述

目录

  • 为什么要用Nginx?
  • 为什么Nginx性能这么高?
    • Nginx 是如何实现高并发的?
  • Nginx怎么处理请求的?
    • Nginx的工作流程
  • 给 favicon.ico 和 robots.txt 设置过期时间; 这里为 favicon.ico 为 99 天,robots.txt 为 7 天并不记录 404 错误日志
  • 如何限制特定IP地址或IP地址段的访问?
  • Nginx可以缓存静态文件吗?如何配置缓存?
  • Nginx可以进行内容压缩吗?如何配置?
  • 设定某个文件的浏览器缓存过期时间;这里为 600 秒,并不记录访问日志
  • 只充许固定 ip 访问网站,并加上密码,设定账号是 admin,密码是 123456
  • 如果访问服务器的 ip 地址是 223.40.97.124 的话,给他展现的主页是/home.html,其他人就展现 index.html。
  • 什么是正向代理和反向代理?
    • 反向代理的用途
    • 正向代理和反向代理的区别
  • Nginx负载均衡的算法怎么实现的?策略有哪些?
  • 在Nginx中,如何使用未定义的服务器名称来阻止处理请求?
  • 如何防止DDoS攻击
  • 如何查看Nginx的日志文件?
  • 如何限制同时连接到Nginx的客户端数量?
  • 如何限制某个URL的访问速率?
  • 如何实现HTTP重定向?
  • Nginx如何通过IP获取所在国家及地理位置?
  • 系列文章
  • 版本记录

在这里插入图片描述


为什么要用Nginx?

因为跨平台,配置简单,支持高并发,耗费内存少。

为什么Nginx性能这么高?

因为nginx是异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决

Nginx 是如何实现高并发的?

nginx启动

service nginx start 

然后输入

#ps -ef|grep nginx

在这里插入图片描述

会发现 Nginx 有一个 master 进程和若干个 worker 进程,
Master进程:读取及评估配置和维持
Worker进程:处理请求

这些 worker 进程是平等的,都是被 master fork 过来的。
在 master 里面,先建立需要 listen 的 socket(listenfd),然后再 fork 出多个 worker 进程。
当用户进入 nginx 服务的时候,每个 worker 的 listenfd 变的可读,并且这些 worker 会抢一个叫 accept_mutex 的东西,accept_mutex 是互斥的,一个 worker 得到了,其他的worker 就歇菜了。而抢到这个 accept_mutex 的 worker 就开始“读取请求–解析请求–处理请求”,数据彻底返回客户端之后(目标网页出现在电脑屏幕上),这个事件就算彻底结束。
nginx 用这个方法是底下的 worker 进程抢注用户的要求,同时搭配“异步非阻塞”的方式,实现高并发量。

【评析】在 nginx.conf 里第二行就是 work_process,有默认是 4 的,也可以更改成 auto,这个值不是越大越好,要可实际服务器 CPU 的情况而定,一般是 CPU 有几个,工作进程就有几个。

Nginx怎么处理请求的?

nginx接受一个请求后,首先由listen和server_name 匹配server模块,
在匹配的server模块里location,location就是实际地址

Nginx的工作流程

  1. Nginx通过 listen 监听指定的端口来接收客户端请求。

  2. 当接收到请求后,Nginx使用配置文件中定义的server_name 虚拟主机来确定请求应该被转发到哪个后端服务器。

  3. Nginx使用内部的事件驱动模型来处理请求,而不是为每个连接创建一个新的线程或进程。这使得Nginx能够处理大量并发连接而不耗费过多的系统资源。

  4. Nginx根据配置文件中定义的规则将请求转发给后端服务器。这可以是静态文件的直接传输,也可以是动态请求的转发到后端应用程序服务器。

  5. Nginx还提供了一些额外的功能,如负载均衡、缓存、SSL/TLS协议支持等,以提高性能和安全性。

给 favicon.ico 和 robots.txt 设置过期时间; 这里为 favicon.ico 为 99 天,robots.txt 为 7 天并不记录 404 错误日志

location ~(favicon.ico) { 
	log_not_found off; expires 99d;
	break;
}
location ~(robots.txt) { 
	log_not_found off; expires 7d;
	break;
}

如何限制特定IP地址或IP地址段的访问?

要限制特定IP地址或IP地址段的访问,可以使用Nginx的ngx_http_access_module模块提供的allow和deny指令。下面是一个具体配置的示例:

location / {
    # 允许特定IP地址范围的访问
    allow 192.168.1.0/24;
    allow 10.0.0.0/16;

    # 拒绝其他IP地址的访问
    deny all;
}

在上述配置中,allow指令用于允许特定的IP地址或IP地址段的访问,而deny指令用于拒绝其他IP地址的访问。

192.168.1.0/24表示允许以192.168.1.开头并且子网掩码为255.255.255.0的IP地址范围的访问。

10.0.0.0/16表示允许以10.0.开头并且子网掩码为255.255.0.0的IP地址范围的访问。

deny all;表示拒绝所有其他IP地址的访问。

注意:配置的顺序很重要。allow和deny指令按顺序进行匹配,所以必须将allow指令放在deny指令之前,以确保规则正确应用。

【评析】防火墙是层层深入的,可以从硬件上用 acl(访问控制列表)实现,如果没有钱买一个防火墙,那么还可以在 linux 上设置 iptables,如果 iptables 不设置,还可以在 nginx 上设置。

Nginx可以缓存静态文件吗?如何配置缓存?

  1. 打开Nginx配置文件,一般位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。
  2. 在http块中添加以下配置:
http {
    # ... 其他配置 ...

    # 定义缓存路径和缓存时间
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
    proxy_temp_path /path/to/temp;

    server {
        # ... 其他配置 ...

        location / {
            # 检查缓存,如有则直接返回
            proxy_cache my_cache;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            proxy_cache_key $uri$is_args$args;

            # 如果没有缓存,则从后端服务器获取文件并缓存
            proxy_pass http://backend_server;
            proxy_cache_bypass $http_cache_control;
            proxy_no_cache $http_pragma $http_authorization;
        }
    }
}

在上述示例中,

/path/to/cache是指定缓存存储路径,
levels=1:2表示使用两级目录结构进行存储,
keys_zone=my_cache:10m定义了缓存区域的名称和大小,
inactive=60m表示在60分钟内未被访问的缓存将被清理。
proxy_cache_valid指令定义了特定HTTP状态码的缓存有效时间。
在上面的示例中,
对于200和302的响应,缓存将保持10分钟有效,
对于404的响应,缓存将在1分钟后失效。
proxy_cache_key用于定义缓存的键名,这里使用了URI、请求参数和请求参数。
proxy_cache_bypassproxy_no_cache指令用于控制是否绕过或禁用缓存。
最后,proxy_pass指令用于将请求转发到后端服务器。

Nginx可以进行内容压缩吗?如何配置?

Nginx可以进行内容压缩。
主要通过gzip实现,要配置Nginx以启用内容压缩,需要进行以下步骤:
1. 修改Nginx配置文件nginx.conf或虚拟主机配置文件。
2. 找到http块,并添加以下配置项:

http {
  gzip on;
  gzip_types text/plain text/css application/json application/javascript text/javascript;
  gzip_min_length 1000;
  gzip_comp_level 2;
  gzip_proxied any;
  gzip_vary on;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_static on;
}

上述配置项的含义:

  • gzip on:启用gzip压缩
  • gzip_types:指定要压缩的文件类型
  • gzip_min_length:指定压缩文件的最小长度
  • gzip_comp_level:指定压缩级别,范围从1到9(1表示压缩比较低,但速度快,9表示压缩比较高,但速度慢)
  • gzip_proxied:指定在代理服务器上启用压缩
  • gzip_vary:启用Vary头部,用于根据Accept-Encoding请求头选择正确的压缩版本
  • gzip_disable:禁用压缩的用户代理列表
  • gzip_buffers:指定压缩缓冲区的数量和大小
  • gzip_http_version:指定支持gzip的HTTP版本
  • gzip_static:启用预压缩文件的发送
  1. 保存配置文件并重新启动Nginx服务器。

设定某个文件的浏览器缓存过期时间;这里为 600 秒,并不记录访问日志

location ^~ /html/scripts/loadhead_1.js {
   access_log off; 
   expires 600; 
   break;
}

只充许固定 ip 访问网站,并加上密码,设定账号是 admin,密码是 123456

printf "admin:$(openssl passwd -crypt 123456)\n" >>/usr/local/nginx/conf/passwd 
location \ {
    allow 22.27.164.25; #允许的 ipd 
    deny all;
    auth_basic “KEY”; #登陆该网页的时候,会有这个“KEY”的提示,提示只能是英文,中文不识别。
    auth_basic_user_file /conf/htpasswd;
}

如果访问服务器的 ip 地址是 223.40.97.124 的话,给他展现的主页是/home.html,其他人就展现 index.html。

location / {
         if ($remote_addr = 223.40.97.124 ) { rewrite ^.*$ /home.html;
}
         root /usr/local/nginx/html;
         index index.html;
}

什么是正向代理和反向代理?

正向代理:客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端(访问国外网站)

反向代理:代理服务器来接受请求,然后将请求转发给内网服务器,再将获得的内容返回给客户端。

反向代理的用途

隐藏服务器真实IP
负载均衡

正向代理和反向代理的区别

正向代理代理的是客户端,反向代理代理的是服务器

正向代理解决访问限制问题,反向代理解决了高并发问题

Nginx负载均衡的算法怎么实现的?策略有哪些?

轮询:如果有服务器宕机,能够自动剔除

权重:将服务器性能高的权值设置大点。

ip绑定:使同一ip的访客固定访问一台服务器

在Nginx中,如何使用未定义的服务器名称来阻止处理请求?

只需将请求删除的服务器就可以定义为:

Server {
	listen 80;
	server_name “ “ ;
	return 444;

}

如何防止DDoS攻击

要防止DDoS(分布式拒绝服务)攻击,Nginx可以采取以下措施。

配置反向代理服务器:使用Nginx作为反向代理服务器,将请求转发给后端真实服务器进行处理。这样可以隐藏真实服务器的IP地址,使其难以被攻击者直接攻击。

配置HTTP限制:使用Nginx的模块,如limit_req和limit_conn,对每个客户端的请求数量和连接数进行限制,防止攻击者通过发送大量请求来耗尽服务器资源。

配置访问限制:使用Nginx的模块,如GeoIP和IP黑名单等,对恶意IP进行拦截或限制访问。可以基于地理位置、IP地址段、用户代理字符串等进行限制。

加载均衡和泛洪限制:通过Nginx的负载均衡功能,将请求分散到多个后端服务器上,从而分摊DDoS攻击的压力。同时,配置Nginx的模块,如 ngx_http_limit_req_module和ngx_http_limit_conn_module,限制每个请求的速率,防止泛洪攻击。

使用Nginx的缓存功能:将动态页面转换为静态页面,并使用Nginx的缓存功能,将结果缓存在内存中,减轻后端服务器的负载。

配置防火墙:结合Nginx与防火墙工具(如iptables),对网络流量进行过滤和限制。可以设置特定规则,只允许合法的请求通过,阻止恶意流量。

监控和日志分析:通过监控Nginx的访问日志和网络流量,及时发现异常流量和攻击行为,并采取相应的应对措施。

以上是一些基本的防止DDoS攻击的方法,但需要根据实际情况进行调整和优化。同时,还可以考虑使用专业的DDoS防护设备或服务来提高安全性。

如何查看Nginx的日志文件?

要查看Nginx的日志文件,可以按照以下步骤操作:

  1. 打开终端或命令提示符,登录到服务器上,确保具有足够的权限。
  1. Nginx的日志文件通常位于/var/log/nginx目录下。使用cd /var/log/nginx命令进入该目录。

3.查看日志文件可以使用cat、less或tail等命令。例如,使用less access.log命令查看access.log文件内容。

4.如果想实时查看日志文件的变化,可以使用tail -f access.log命令。这将持续显示新的日志内容。

要定义Nginx的日志格式,可以按照以下步骤操作:

1.打开Nginx配置文件。通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。

2.在http块中找到log_format指令。这条指令用于定义日志的格式。它通常位于http块内的其他指令之前。

3.使用以下语法定义日志格式:

log_format format_name '$variable1 $variable2 ...';

其中,format_name是你给日志格式起的名称,$variable1$variable2是可用的变量。变量的选择根据你希望包含的信息而定。

4.示例:定义一个名为mylog的日志格式,包含时间、客户端IP、请求方法和URL。

log_format mylog ‘$time_local $remote_addr $request_method $request_uri’;

5.定义好日志格式后,可以在access_log指令中使用该格式。例如,在server块中的access_log指令中添加以下内容:

access_log /var/log/nginx/access.log mylog;
  1. 保存配置文件并重新加载Nginx:sudo nginx -s reload。

现在,Nginx将按照你定义的日志格式记录访问日志。

如何限制同时连接到Nginx的客户端数量?

在Nginx配置文件中设置limit_conn指令来限制同时连接到Nginx的客户端数量。

以下是设置的步骤:

  1. 打开Nginx的配置文件。默认位置是/etc/nginx/nginx.conf。
  1. 在http块中添加以下代码:
http {
    # ...
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m; # 定义IP地址的连接限制区域
    # ...
}

这里的10m表示分配给连接限制区域的内存大小,可以根据需要进行调整。

  1. 在需要限制连接数量的http、server或location块中使用limit_conn指令来设置限制。例如:
http {
    # ...
    server {
        # ...
        limit_conn conn_limit_per_ip 10; # 设置每个IP地址最大连接数为10
        # ...
    }
}

这里的conn_limit_per_ip是刚刚定义的连接限制区域名字,10表示每个IP地址允许的最大连接数。

4.保存配置文件并重新加载Nginx。

sudo nginx -t # 检查配置文件语法是否正确
sudo systemctl reload nginx # 重新加载Nginx配置

现在,您已经成功限制了同时连接到Nginx的客户端数量。超过设定的连接数时,Nginx会返回503 Service Unavailable错误给客户端。

如何限制某个URL的访问速率?

可以使用Nginx的ngx_http_limit_req_module模块。该模块提供了一种基于令牌桶算法的限速机制。

以下是如何在Nginx中配置限制某个URL的访问速率的步骤:

1.在Nginx的配置文件中找到对应的Server块,例如/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。

2.在Server块中添加一个location指令,用于匹配特定的URL。例如,要限制/api/slow的访问速率,可以添加如下的location指令:

location /api/slow {
    limit_req zone=api_rate_limit burst=5 nodelay;
    proxy_pass http://backend;
}

3.在location指令内部使用limit_req指令来定义限速规则。limit_req指令有以下常用参数:

  • zone: 定义限速区域名称,多个限速指令可以共享相同的限速区域。
  • burst: 定义允许的最大并发请求数。
  • nodelay: 指定是否立即处理超过限速阈值的请求,默认为等待处理。
    保存配置文件并重新加载Nginx配置。

以上配置将会限制/api/slow的访问速率。你可以根据需要自定义burst和nodelay参数的值,以满足你的需求。

如何实现HTTP重定向?

使用rewrite指令来实现HTTP重定向。
rewrite指令用于修改URL或执行重定向操作。

下面是一个示例配置,演示了如何实现HTTP重定向:

server {
    listen 80;
    server_name demoxxx.com;

    # 重定向到指定URL
    location /old-url {
        rewrite ^/old-url$ http://demoxxx.com/new-url permanent;
    }

    # 重定向到HTTPS
    location /secure {
        rewrite ^ https://demoxxx.com$request_uri? permanent;
    }

    # 正则表达式匹配并重定向
    location ~ ^/redirect/(.*)$ {
        return 301 http://demoxxx.com/new-location/$1;
    }
}

上述示例中,通过rewrite指令实现了以下几种重定向操作:

将http://demoxxx.com/old-url重定向到http://demoxxx.com/new-url,采用永久重定向。
将http://demoxxx.com/secure重定向到https://demoxxx.com/secure,采用永久重定向。
使用正则表达式匹配http://demoxxx.com/redirect/{任意内容},将其重定向到http://demoxxx.com/new-location/{匹配内容},采用永久重定向。
需要注意的是,rewrite指令支持正则表达式匹配和重定向,并且支持使用变量来进行动态重定向。

Nginx如何通过IP获取所在国家及地理位置?

这个面试题主要查考对Nginx的应用经验,有很多种方法,我下面这一篇文章详细讲解了用GeoLite2-Country实现这个功能

系列文章


内容地址 链接
JAVA介绍Linux (实战)常用命令
nginx记录自己使用nginx 的所用知识点(包含 安装、查看地址、配置文件、卸载、重启、各种类型配置文件(更新中)、文件大小限制、session共享等)
Mysql【电商】mysql 建表的一些规则 和注意事项
=========================================================================
👊如果你对该系列文章有兴趣的话,欢迎持续关注博主动态,博主会持续输出优质内容👊

👊 博主很需要大家的支持,你的支持是我创作的不竭动力👊

👊 ~ 点赞收藏+关注 ~👊
=========================================================================

版本记录


  • 2023-10-18 第一版

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前沿科技速递——YOLOv9

随着YOLO系列的不断迭代更新,前几天,YOLO系列也迎来了第九个大型号的更新!YOLOv9正式推出了!附上原论文链接。 arxiv.org/pdf/2402.13616.pdf 同样是使用MS COCO数据集进行对比比较,通过折线图可看出AP曲线在全方面都…

2024比较赚钱的项目是什么?亲身经历,月入过万!

我是电商珠珠 年后找项目这件事,成为了部分人所焦虑的一点,有的想要兼职,有的在考虑全职。至于做什么还没有一丝头绪。大家都知道短视频很火,于是有直播能力的人就吃上了流量红利,开始做达人带货,拍视频接…

Linux下“一切皆文件”

“Linux下一切皆文件” Linux 下一切皆文件这个说法是指 Linux 系统中的一种设计理念,即将所有设备、资源和进程等抽象为文件或文件夹的形式。这种设计理念的好处在于统一了对待不同类型资源的方式,提供了统一的接口和工具来进行管理和操作。 Linux 下…

Flutter Slider自定义滑块样式 Slider的label标签框常显示

1、自定义Slider滑块样式 Flutter Slider控件的滑块系统样式是一个圆点,thumbShape默认样式是RoundSliderThumbShape,如果想要使用其它的样式就需要自定义一下thumbShape; 例如需要一个上图样式的(圆点半透明圆形边框&#xff09…

freeswitch 权威指南 --- 高级篇

官网文档:https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/ 关于 freeswitch 的公开教程:https://zhuanlan.zhihu.com/p/451981734 内容来自 《FreeSWITCH 权威指南》:目录:https://juejin.cn/post/702058079…

2024全国水科技大会暨流域水环境治理与水生态修复论坛(六)

论坛召集人 冯慧娟 中国环境科学研究院流域中心研究员 刘 春 河北科技大学环境与工程学院院长、教授 一、会议背景 为深入贯彻“山水林田湖是一个生命共同体”的重要指示精神,大力实施生态优先绿色发展战略,积极践行人、水、自然和谐共生理念&…

软件游戏报错d3dcompiler_43.dll缺失,提供多个方法修复d3dcompiler_43.dll

当电脑系统缺失 d3dcompiler_43.dll 文件时,尝试打开依赖于该文件的软件时,通常会遇到以下几种情况: 启动失败: 软件在启动过程中可能会立即停止响应或弹出错误消息,指出“找不到 d3dcompiler_43.dll”、“无法启动此…

LabVIEW开发FPGA的高速并行视觉检测系统

LabVIEW开发FPGA的高速并行视觉检测系统 随着智能制造的发展,视觉检测在生产线中扮演着越来越重要的角色,尤其是在质量控制方面。传统的基于PLC的视觉检测系统受限于处理速度和准确性,难以满足当前生产需求的高速和高精度要求。为此&#xf…

Windows 远程控制 Mac 电脑怎么操作

要从 Windows 远程控制 Mac 电脑,您可以使用内置 macOS 功能或第三方软件解决方案。以下是一些方法: 一、使用内置 macOS 功能(屏幕共享) 1、在 macOS 上启用屏幕共享 转至系统偏好设置 > 共享;选中“屏幕共享”…

2024-02-20(DataX,Spark)

1.Oracle利用DataX工具导出数据到Mysql。Oracle利用DataX工具导出数据到HDFS。 只是根据导入导出的目的地不同,DataX的Json文件书写内容有所不同。万变不离其宗。 书写的Json格式的导入导出规则文件存放再Job目录下的。 2.Spark概念 Apache Spark是用于大规模数…

使用向量数据库pinecone构建应用06:日志系统异常检测 Anomaly Detection

Building Applications with Vector Databases 下面是这门课的学习笔记:https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement them using Pinecon…

【算法与数据结构】1971、LeetCode寻找图中是否存在路径

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题应用并查集的理论直接就可以解决:【算法与数据结构】回溯算法、贪心算法、动态规划、图…

Golin 弱口令/漏洞/扫描/等保/基线核查的快速安全检查小工具

下载地址: 链接:https://pan.quark.cn/s/db6afba6de1f 主要功能 主机存活探测、漏洞扫描、子域名扫描、端口扫描、各类服务数据库爆破、poc扫描、xss扫描、webtitle探测、web指纹识别、web敏感信息泄露、web目录浏览、web文件下载、等保安全风险问题风险…

QPaint绘制自定义仪表盘组件02

网上视频抄的&#xff0c;用来自己看一下&#xff0c;看完就删掉 最终效果 ui&#xff0c;创建一个空的widget widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QTimer>QT_BEGIN_NAMESPACE namespace Ui { c…

HCIA(11)OSPF 数据包构成(Hello、DBD、LSR、LSU、LSAck包)、状态机、工作流程(建立邻居关系、主从关系协商、LSDB同步)

OSPF&#xff08;Open Shortest Path First&#xff09;是IETF组织开发的一个基于链路状态的内部网关协议&#xff08;Interior Gateway Protocol&#xff09;。 目前针对IPv4协议使用OSPF Version 2&#xff0c;针对IPv6协议使用OSPF Version 3。 在OSPF出现前&#xff0c;网络…

TensorRT及CUDA自学笔记003 CUDA编程模型、CUDA线程模型及其管理、CUDA内存模型及其管理

TensorRT及CUDA自学笔记003 CUDA编程模型、CUDA线程模型及其管理、CUDA内存模型及其管理 各位大佬&#xff0c;这是我的自学笔记&#xff0c;如有错误请指正&#xff0c;也欢迎在评论区学习交流&#xff0c;谢谢&#xff01; CUDA编程模型 我们使用CUDA_C语言进行CUDA编程&am…

软考-中级-系统集成2023年综合知识(三)

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 软考中级专栏回顾 专栏…

协议的概念+本质+作用+最终表现形式,网络问题(技术+应用+解决的协议+存在原因),主机的对称性

目录 协议 概念 示例 -- 摩斯密码 本质 作用 网络问题 引入 技术问题 应用问题 主机的对称性 问题对应的协议 问题出现的原因 理解协议(代码层面) 举例 -- 快递单 协议的最终表现形式 协议被双方主机认知的基础 协议 概念 协议是在计算机通信和数据传输中规定通…

CSAPP-计算机系统漫游

文章目录 概念扫盲思想理解经典好图 概念扫盲 1.主存由DRAM&#xff08;动态随机存储器&#xff09;组成 2.处理器的核心为PC&#xff08;程序计数器&#xff09;&#xff0c;大小为一个字 3.总线被设计为传送定长的字节块&#xff08;字&#xff09; 4.堆在运行时由malloc类型…

arcgisPro制图输出

1、设置地图底图 2、导入数据 3、 设置图形颜色&#xff0c;如下&#xff1a;右键“浙江省”数据层&#xff0c;选择符号系统 4、在右侧可看到打开的符号系统栏&#xff0c;进行如下设置: 5、移除“其他所有值”项&#xff0c;如下&#xff1a; 6、设置图形轮廓&#xff0c;如下…