【Nginx】核心概念与安装配置解释
文章目录
- 1. 概述
- 2. 核心概念
- 2.1.Http服务器
- 2.2.反向代理
- 2.3. 负载均衡
- 3. 安装与配置
- 3.1.安装
- 3.2.配置文件解释
- 3.2.1.全局配置块
- 3.2.2.HTTP 配置块
- 3.2.3.Server 块
- 3.2.4.Location 块
- 3.2.5.upstream
- 3.2.6. mine.type文件
- 3.3.多虚拟主机配置
- 4. 总结
1. 概述
Nginx是我们常用的一款Http和反向代理服务器,同时可以作为负载均衡器、邮件代理、HTTP缓存服务。它以其轻量级、高并发的特点广泛应用于各种场景。作为一名研发人员,掌握Nginx的应用和实践非常重要。
本节主要解释一下Nginx中的几个常用核心概念,并聊一聊如何进行安装和配置。
2. 核心概念
下面先对核心概念做一下解释
2.1.Http服务器
最常见的就是作为前端服务的Http服务器,我们的前端项目在发布的时候往往会打包成一组静态文件,而Nginx 可以直接作为一个静态资源(如 HTML 文件、图片、CSS 样式表、JavaScript 脚本等)的 Web 服务器来使用。它能高效地处理对这些静态资源的请求,快速响应客户端,减轻后端应用服务器的负担,提升网站整体的访问速度。
例如vue3+vite项目的打包和配置过程,可以参考我这篇博客:【Vue3实践】(六)Vue3使用vite处理环境变量、打包部署、nginx配置
2.2.反向代理
所谓的代理,就是客户端与服务端不直接交互,而是在中间加入了一层代理层,由代理层对服务请求和相应做转发。我们常说的代理包含两种,正向代理与反向代理。
- 正向代理:代理层代理的是客户端,由代理层与服务端做交互,并将信息转发给客户端。
- 反向代理:代理层代理的是服务端,客户端与代理层交互,而不知道服务端的具体情况。
下面有一幅图来表示正向代理和反向代理的区别:
简单的说,正向代理就是服务端不知道发起请求的客户端是谁,反向代理就是客户端不知道提供服务的服务端是谁。
2.3. 负载均衡
负载均衡往往是和反向代理共同使用的,当后端有多个服务器在提供相同的服务,Nginx可以按照一定的负载均衡策略,将客户端的请求合理的分配到不同的服务端处理,避免单个服务器负载过高而其他的服务器又非常空闲,从而提高架构整体性能和可用性。
Nginx中常用的负载均衡策略有3种:轮询、加权轮询、IP Hash。
- 轮询:适用于各个服务器性能相近的场景,就是按服务器的顺序,将请求依次转发到不同的服务器处理,假如有ABC三台服务,请求就会按照A,B,C,A,B,C…的顺序依次执行。。
- 加权轮询:适用于各个服务器性能不同的场景,在轮询的基础上给按性能给服务器分配权重。后续的请求就会趋近于这个权重来进行访问,比如服务器 A 权重为 3,服务器 B 权重为 2,服务器 C 权重为 1,那么在分配请求时,每 6 个请求中,A 会分配到 3 个,B 会分配到 2 个,C 会分配到 1 个,以此体现不同服务器的处理能力差异,将更多请求分配给性能更强的服务器。
- IP Hash:常用于有状态服务(如需要保持会话状态的应用)的场景,根据客户端的 IP 地址通过哈希算法计算出一个值,然后根据这个值来决定将请求分配到哪台后端服务器上,这样能保证来自同一个 IP 的请求始终被分配到同一台后端服务器。
3. 安装与配置
3.1.安装
Nginx的安装很简单,ubantu可以通过apt
,CentOS可以使用yum
来进行安装,当然也可以使用Docker安装。Docker的安装方式参考《【Docker】(五)使用bind mounts修改Docker容器中的Nginx配置文件》,里面讲了如何通过Docker安装Nginx并将配置文件挂载出来。
接下来看一下CentOS的安装方式,运行以下脚本:
sudo yum install nginx
执行完成后nginx,就安装好了,可以通过nginx -V
(V是大写的)来查看Nginx的信息。
注:图中高亮显示的部分,就是Nginx的配置文件所在的位置,接下来可以通过nginx
指令来启动Nginx。
nginx
# 查看进程
ps -ef | grep nginx
查看进程后可以看到,有1个master节点和4个worker节点,worker节点数和当前服务器的CPU核心数有关在下面的配置文件解释中会讲到。
3.2.配置文件解释
解释一下nginx.conf
这个配置文件中的常用配置项的含义:
3.2.1.全局配置块
全局配置块位于文件的顶部,定义 Nginx 的全局设置,影响整个服务。
- user:用户名,自己随便写
- worker_processes:工作线程数,设置为auto之后,会按照CPU核心数来设置工作线程
- error_log:保存错误日志的路径
- pid:记录主进程 PID 的文件路径
- incluede:引入其他.conf配置文件的位置
事件配置块中:
- worker_connections:每个工作进程允许的最大连接数
3.2.2.HTTP 配置块
HTTP 块是 Nginx 配置的核心,定义了 Web 服务的行为,包括服务器、路由、缓存等
- include:加载其他配置文件,实现配置分离。
- log_format:日志打印的格式
- access_log:访问日志的路径
- sendfile:启用高效文件传输模式,用于减少 CPU 和内存占用
- tcp_nopush:优化 TCP 包的传输,减少网络延迟
- default_type:未匹配文件类型时的默认 MIME 类型
3.2.3.Server 块
Server 块用于定义虚拟主机,每个 Server 块对应一个站点。
- listen:监听的端口号
- server_name:绑定的域名,可用通配符
- location:定义 URL 路径规则及对应处理方式
- root:文件根目录,在直接访问Nginx的虚拟主机端口时,会默认的访问根目录下的index.html
- index:修改默认访问html文件,一般是
index index.html index.htm;
- error_page:定义错误码及重定向的文件名。
我们打开根目录可以看到,里面就有默认的index.html
,404.html
,50x.html
等文件
3.2.4.Location 块
Location 是 Server 块的子配置,匹配 URL 路径并定义处理规则。
下面是一个拓展的location块:
location /api/ {proxy_pass http://backend_server; # 转发到后端服务器。proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;
}location ~* \.(jpg|jpeg|png|gif|ico)$ {root /usr/share/nginx/images; # 图片文件存放目录。expires 30d; # 缓存时间。
}
- proxy_pass:设置反向代理目标地址,大多数时候是配合
upstream
一起使用,upstream
可以配置负载均衡策略。 - proxy_set_header:传递自定义请求头给后端。
- ~*:正则表达式匹配,不区分大小写。
- expires:设置客户端缓存过期时间。
location中的各种通配符按优先级,如下所示:
- 精确匹配 (=)。
- 前缀匹配加通配符 (^~)。
- 正则表达式匹配 (~ 和 ~*),多个正则时,按照配置文件中先后顺序匹配。
- 普通前缀匹配(默认,无符号),按路径长度优先。
3.2.5.upstream
upstream 是定义后端服务器组的模块,用于负载均衡和请求分发。它允许您在多个后端服务之间分配请求流量。
- 轮询配置:
upstream backend_servers {server 192.168.1.101:8080; # 后端服务器1server 192.168.1.102:8080; # 后端服务器2server 192.168.1.103:8080; # 后端服务器3 }
- 加权轮询配置:
upstream backend_servers {server 192.168.1.101:8080 weight=3;server 192.168.1.102:8080; }
- IP HASH 配置:
upstream backend_servers {ip_hash;server 192.168.1.101:8080;server 192.168.1.102:8080; }
upstream一般是写在http块中的,例如:
http {upstream backend_servers {server 192.168.1.101:8080;server 192.168.1.102:8080;}server {location /api/ {proxy_pass http://backend_servers;proxy_cache cache_zone; # 启用缓存proxy_cache_valid 200 302 10m; # 缓存 10 分钟proxy_cache_valid 404 1m; # 404 错误缓存 1 分钟}}
}
3.2.6. mine.type文件
mime.types 文件用于定义 MIME 类型(Multipurpose Internet Mail Extensions),即文件的内容类型。
Nginx 会根据请求的文件扩展名匹配 mime.types 中定义的 MIME 类型,然后在 HTTP 响应头中包含 Content-Type 字段,告知客户端正确的文件类型。
3.3.多虚拟主机配置
上面我们提到了每个server
就是一个虚拟主机,在实际的工作中,我们往往会给不同的业务配置不同的虚拟主机,也就是在Nginx.conf中配置多个server,但是在实践中我们还有一个更优雅的方式。
上面的http块中有这么一行配置include /etc/nginx/conf.d/*.conf;
,也就是在conf.d
文件夹下导入所有以.conf
结尾文件。所以我们就可以针对不同的业务在conf.d
目录下新建不同.conf
文件就可以了。
4. 总结
本篇讲述了Nginx的核心概念、安装,以及如何修改Nginx的配置文件,涵盖了Nginx入门相关的内容。
相关文章:
【Nginx】核心概念与安装配置解释
文章目录 1. 概述2. 核心概念2.1.Http服务器2.2.反向代理2.3. 负载均衡 3. 安装与配置3.1.安装3.2.配置文件解释3.2.1.全局配置块3.2.2.HTTP 配置块3.2.3.Server 块3.2.4.Location 块3.2.5.upstream3.2.6. mine.type文件 3.3.多虚拟主机配置 4. 总结 1. 概述 Nginx是我们常用的…...
数据库-MySQL-MybatisPlus实战
文章目录 前言一、整合mybatis-plus二、CRUD操作1、insert操作2、update操作3、delete操作 三、条件构造器(Wrapper)QueryWrapperUpdateWrapperLambdaQueryWrapperLambdaUpdateWrapper 四、分页查询五、自定义主键生成器六、总结 前言 mybatis相信都不陌生,目前互联…...
Vue2学习记录
前言 这篇笔记,是根据B站尚硅谷的Vue2网课学习整理的,用来学习的 如果有错误,还请大佬指正 Vue核心 Vue简介 Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。 它基于标准 HTML、CSS 和 JavaScr…...
thinkphp中对请求封装
请求的封装 //调用 $res Http::post($this->baseUrl . $url,$params,[CURLOPT_HTTPHEADER > [Content-Type: application/json,Content-Length: . strlen($params),],]);<?php namespace fast; /*** 字符串类*/ class Http {/*** 发送一个POST请求*/public static …...
网络安全中的数据科学如何重新定义安全实践?
组织每天处理大量数据,这些数据由各个团队和部门管理。这使得全面了解潜在威胁变得非常困难,常常导致疏忽。以前,公司依靠 FUD 方法(恐惧、不确定性和怀疑)来识别潜在攻击。然而,将数据科学集成到网络安全中…...
通过指令导入/导出vscode扩展插件
导出扩展: 打开VSCode终端: 在VSCode中,你可以通过菜单栏的“终端”选项打开终端,或者使用快捷键Ctrl (反引号,通常在键盘左上角)。运行导出命令: 在终端中,输入以下命…...
vscode添加环境变量(mujoco)
文章目录 前言一、创建.env文件二、编写setting.jason 前言 之前一直用pycharm,最近改用cursor了,在pycharm中设置环境变量修改运行配置就行了,vscode要麻烦一些,记录一下。 一、创建.env文件 以mujoco环境变量为例,…...
0-1背包问题(1):贪心算法
问题: 有 n 个物品和背包的容量,每个物品的重量为 w[i],价值为 v[i],背包的容量为 W。选若干个物品放入购物车,物品不可分割,使价值最大。 问题分析: 首先考虑贪心策略: 每次挑选…...
Qt界面篇:QMessageBox高级用法
1、演示效果 2、用法注意 2.1 设置图标 用于显示实际图标的pixmap取决于当前的GUI样式。也可以通过设置icon pixmap属性为图标设置自定义pixmap。 QMessageBox::Icon icon(...
计算机操作系统——进程控制(Linux)
进程控制 进程创建fork()函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出(Exit)由于信号终止非…...
游戏引擎学习第23天
实时代码编辑功能的回顾 当前实现的实时代码编辑功能已经取得了显著的成功,表现出强大的性能和即时反馈能力。该功能允许开发者在修改代码后几乎立即看到变化在运行中的程序中体现出来,极大提升了开发效率。尽管目前的演示内容较为简单,呈现…...
0基础学java之Day25
Vector /** 知识点:Vector独有的方法 理解: * Vector在JDK1.0开始就已经存在 -- 元老级别的集合类, * 集合框架的概念是JDK1.2开始才有的, * 开发人员为了将Vector保留下来…...
android集成FFmpeg步骤以及常用命令,踩坑经历
1、入坑第一步:首先集成的库必须正确。最好是有ndk的,FFmpeg有许多个版本,我才开始接触的时候随便选了一个,一般的 方法没有问题。但是涉及到需要使用libx264等条件进行编码时,老是报错,网上搜索资料也没有人说需要ndk的支持才行。这个问题困扰了好几天,怎么试不行,最后…...
Mac——鼠标增强插件Mos
功能说明: 能够解决鼠标断续、不灵敏等鼠标问题。 下载地址: Mac——鼠标增强插件Mos...
【c++篇】:解读Set和Map的封装原理--编程中的数据结构优化秘籍
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:c篇–CSDN博客 文章目录 前言一.set和map的初步封装1.树的节点封装修改2.Find()查找函数3.红…...
华为鸿蒙内核成为HarmonyOS NEXT流畅安全新基座
HDC2024华为重磅发布全自研操作系统内核—鸿蒙内核,鸿蒙内核替换Linux内核成为HarmonyOS NEXT稳定流畅新基座。鸿蒙内核具备更弹性、更流畅、更安全三大特征,性能超越Linux内核10.7%。 鸿蒙内核更弹性:元OS架构,性能安全双收益 万…...
ArcGIS API for Javascript学习
一、ArcGIS API for Javascript 介绍 ArcGIS API for Javascript 是由美国 Esri 公司推出,跟随ArcGIS 9.3 同时发布的,是Esri 基于dojo 框架和 REST 风格实现的一套编程接口。通过 ArcGIS API for Javascript可以对ArcGIS for Server 进行访问ÿ…...
LeetCode 3206.交替组 I:遍历
【LetMeFly】3206.交替组 I:遍历 力扣题目链接:https://leetcode.cn/problems/alternating-groups-i/ 给你一个整数数组 colors ,它表示一个由红色和蓝色瓷砖组成的环,第 i 块瓷砖的颜色为 colors[i] : colors[i] …...
环形缓冲区
什么是环形缓冲区 环形缓冲区,也称为循环缓冲区或环形队列,是一种特殊的FIFO(先进先出)数据结构。它使用一块固定大小的内存空间来缓存数据,并通过两个指针(读指针和写指针)来管理数据的读写。当任意一个指针到达缓冲区末尾时,会自动回绕到缓冲区开头,形成一个"环"。…...
Maven 仓库
Maven 仓库对于管理构建 Java 项目所需的依赖和插件至关重要。 Maven 仓库主要有三种类型:本地仓库、中央仓库和远程仓库。 本文将探讨每种仓库的用途以及如何有效使用它们。 Maven 仓库类型 本地仓库 本地仓库是位于您本地机器上的一个目录,Maven 在…...
29.UE5蓝图的网络通讯,多人自定义事件,变量同步
3-9 蓝图的网络通讯、多人自定义事件、变量同步_哔哩哔哩_bilibili 目录 1.网络通讯 1.1玩家Pawn之间的同步 1.2事件同步 1.3UI同步 1.4组播 1.5变量同步 1.网络通讯 1.1玩家Pawn之间的同步 创建一个第三人称项目 将网络模式更改为监听服务器,即将房主作为…...
计算机网络习题解答--个人笔记(未完)
本篇文章为关于《计算机网络-自顶向下方法第七版》的阅读总结和课后习题解答(未完待续) 第二章: cookie:(这里是比较老版本的HTTP,具体HTTPs是怎么实现的不是很清楚)cookie的原理其实很简单。就是在HTTP消息头上又多…...
Unity图形学之雾Fog
1.设置雾化: 2.雾化变化曲线:FogMode (1)线性: (2)一次指数: (3)二次指数: Shader "Custom/FogTest" {Properties{_Color ("Color…...
ML 系列:第 36 节 — 统计学中的抽样类型
ML 系列:第 36 天 — 统计学中的抽样类型 文章目录 一、说明二、抽样方法三、简单随机抽样四、 Stratified Sampling分层抽样五、 Cluster Sampling 整群抽样六、Systematic Sampling系统抽样七、Convenience Sampling便利抽样八、结论 一、说明 统计学中的抽样类型…...
docker-compose部署java服务
文章目录 一、下载安装docker-compose二、编写Dockerfile文件三、编写docker-compose.yml文件配置说明 四、服务启动五、测试与验证 一、下载安装docker-compose 在安装docker时,并不会同时把docker-compose安装好,需要额外安装一下 下载docker-compos…...
ubuntu22开机自动登陆和开机自动运行google浏览器自动打开网页
一、开机自动登陆 1、打开settings->点击Users 重启系统即可自动登陆桌面 二、开机自动运行google浏览器自动打开网页 1、安装google浏览器 sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i ./google-chrome-stable…...
java接口对接标准
概述 最近在跟许多外部平台对接,遇到了很多问题,在此记录一下接口的对接标准。 接口对接标准 确认环境,分别获取di和prd环境的接口信息,比如域名。确认不同环境的防火墙是否连通。接口校验,接口携带的token信息如何…...
训练的decoder模型文本长度不一致,一般设置为多大合适,需要覆盖最长的文本长度么
在训练解码器模型时,文本长度不一致是常见的情况,需要根据任务的特性和数据集的长度分布来设置合理的最大长度 (max_length)。以下是一些指导原则,帮助你设置合适的最大长度: 1. 是否需要覆盖最长文本长度 覆盖最长文本长度: 如果任务对完整性要求很高(例如生成数学公式、…...
安装MySQL服务
安装版本MySQL8的安装包 安装界面 在这里选择MySQL中的Server only 只安装服务器端 如果选择custom需要如下图 进入配置导向,点击ready to configure,点击next即可 采用默认形式 执行成功后,会出现自动选择项 点击next然后再点击Finish 启动…...
十二、正则表达式、元字符、替换修饰符、手势和对话框插件
1. 正则表达式 1.1 基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&g…...
Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线
文章目录 前言实现方式MenuLaser实现步骤1.Laser和Cursor2.移植函数3.启动逻辑4.检测射线和UI的碰撞5.激活手柄射线6.更新手柄射线位置7.隐藏手柄射线8.添加手柄的Trigger监听完整节点如下:效果图前言 之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲…...
如何提升编程能力第二篇
如何提升编程能力2 1. 引言2. 掌握理论基础2.1 理解编程语言的核心2.2 数据结构与算法2.3 计算机基础与系统设计3.1 多写代码3.2 参与开源项目3.3 开发自己的项目 4. 提高代码质量4.1 代码风格与可读性4.2 测试驱动开发 1. 引言 编程是推动现代科技发展的核心技能,…...
【AI日记】24.11.26 聚焦 kaggle 比赛
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 核心工作 1 内容:研究 kaggle 比赛时间:3 小时 核心工作 2 内容:学习 kaggle 比赛 Titanic - Machine Learning from Disaster时间:4 小时备注:这…...
计算机网络八股整理(一)
计算机网络八股文整理 一:网络模型 1:网络osi模型和tcp/ip模型分别介绍一下 osi模型是国际标准的网络模型,它由七层组成,从上到下分别是:应用层,表示层,会话层,传输层,…...
删除链表中的重复元素
删除链表中的重复元素 单链表的创建和使用删除链表中的重复元素 I题目描述解题思路代码实现 删除链表中的重复元素 II题目描述解题思路代码实现 单链表的创建和使用 使用vector结合单链表数据结构创建一个通用单链表。 #include <iostream> #include <vector>str…...
序列求和 牛客网
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 定义S(n) 12 22 … n2,输出S(n) % 1000000007。 注意:1 < n < 1e18。 输入描述: 多组输入,输入直到遇到EOF为止;第一行输…...
【Oracle11g SQL详解】 SELECT 语句的基础用法与示例
SELECT 语句的基础用法与示例 在 Oracle 11g 中,SELECT 语句是最常用的 SQL 语句,用于从数据库表中查询数据。本文将从语法结构、使用方法和常见示例出发,系统讲解 SELECT 语句的基础用法。 一、SELECT 语句的基本语法 SELECT 列名1, 列名2…...
编译以前项目更改在x64下面时报错:函数“PVOID GetCurrentFiber(void)”已有主体
win32下面编译成功,但是x64报错 1>GetWord.c 1>md5.c 这两个文件无法编译 1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winnt.h(24125,1): error C2084: 函数“PVOID GetCurrentFiber(void)”已有主体 1>C:\Program Files (x…...
【小白学机器学习36】关于独立概率,联合概率,交叉概率,交叉概率和,总概率等 概念辨析的例子
目录 1 先说结论 2 联合概率 3 边缘概率 4 (行/列)边缘概率的和 总概率1 5 条件概率 5.1 条件概率的除法公式 5.2 条件概率和联合概率区别 1 先说结论 关于独立概率,联合概率,交叉概率,交叉概率和,总概率 类型含义 …...
如何使用 Tailwind CSS 构建响应式网站:详细指南
文章目录 前言一、安装 Tailwind CSS二、配置 Tailwind CSS三、使用 Tailwind CSS 构建响应式网站四、优化和部署结语 前言 在当今的数字时代,网站不仅需要在桌面浏览器上看起来出色,还需要在移动设备和平板电脑上提供一致的用户体验。响应式设计成为了…...
LabVIEW发动机热磨合试验台
在汽车发动机的研发和质量控制中,发动机热磨合试验是关键环节。它能够检验发动机在实际运行条件下的性能,及时发现异响、振动、漏油等潜在问题。通过搭建基于LabVIEW的高效测试平台,可以显著提高发动机的可靠性和使用寿命。下面介绍LabVIEW开…...
【GPT】力量训练是什么,必要吗,有可以替代的方式吗
什么是力量训练? 力量训练是一种通过抵抗力(如重量、阻力带、自身体重等)来刺激肌肉收缩,从而提高肌肉力量、耐力和体积的运动形式。它包括以下常见形式: 自由重量训练:使用哑铃、杠铃、壶铃等。固定器械…...
pikachu文件上传漏洞通关详解
声明:文章只是起演示作用,所有涉及的网站和内容,仅供大家学习交流,如有任何违法行为,均和本人无关,切勿触碰法律底线 目录 概念:什么是文件上传漏洞一、客户端check二、MIME type三、getimagesi…...
java hashCode() 详解
hashCode() 是 Java 中 Object 类 提供的一个重要方法,它在 Java 集合框架中扮演着关键角色,特别是在使用哈希表相关的集合(如 HashMap、HashSet 和 Hashtable)时。以下是对 hashCode() 方法的详解,包括概念、用法、规…...
鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)
文章目录 价值与架构定义1、价值2、架构定义 随着个人设备数量越来越多,跨多个设备间的交互将成为常态。基于传统 OS 开发跨设备交互的应用程序时,需要解决设备发现、设备认证、设备连接、数据同步等技术难题,不但开发成本高,还存…...
JavaWeb
JavaWeb 一、JavaWeb 是什么?二、JavaWeb 发展阶段三、JavaWeb 常用架构Servlet JSP 架构SSH 架构SSM 架构SpringBoot架构SpringCloud架构 四、JavaWeb 项目结构(带web.xml的)五、如何打包六、war包部署1. Tomcat 介绍2. Tomcat目录结构3. 开…...
加快发展社会保障事业的必要性
题目 【2011年浙江公务员考试】(二)某市将召开一次加快发展社会保障事业的形势分析会。会上,某领导要就加快发展社会保障事业的必要性做主题发言。请结合给定资料7~8,为领导拟一份发言要点。(25分) 要求&a…...
责任链模式在spring security过滤器链中的应用
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象按照顺序处理请求,并且每个对象可以选择自己是否处理该请求或将其传递给下一个对象。 在Spring Security中,责任链模式得到了广泛应…...
Netty基本原理
目录 前言 原生NIO VS Netty 原生NIO存在的问题 Netty的优点 线程模型 传统阻塞 I/O (Blocking I/O) 2. 非阻塞 I/O (Non-blocking I/O) 3. 多路复用 I/O (Multiplexed I/O) 4. Reactor 模式 常见的 Reactor 模式的变体: Netty线程模型 工作原理 前言 N…...
图论入门编程
卡码网刷题链接:98. 所有可达路径 一、题目简述 二、编程demo 方法①邻接矩阵 from collections import defaultdict #简历邻接矩阵 def build_graph(): n, m map(int,input().split()) graph [[0 for _ in range(n1)] for _ in range(n1)]for _ in range(m): …...