Dcoker安装nginx,完成反向代理和负载均衡
1. 简介
官网:nginx
Nginx是一个高性能的 HTTP 和反向代理 Web 服务器。它的主要功能包括反向代理、负载均衡和动静分离等。正因为 Nginx的这些功能能够为系统带来性能和安全方面的诸多优势,我们在项目部署时需要引入 Nginx组件。接下来我们会逐一向大家介绍nginx的核心功能。
2. 功能介绍
2.1. 反向代理
要想搞清楚什么是反向代理,就必须先来了解一下什么是正向代理。
正向代理
正向代理通常是指客户端(如浏览器)通过代理服务器来访问互联网上的其他服务器。在这种情况下,客户端 配置了代理设置(注意这个代理是在客户端配置的),所有对外的请求都会先发送到代理服务器上,再由代理服务器转发到真正的目标服务器。这样做的好处包括但不限于:
- 隐私保护:客户端的真实IP地址不会直接暴露给外部服务器。
- 缓存:如果代理服务器具有缓存功能,那么对于频繁请求的数据,可以直接从缓存中返回结果,提高响应速度。
- 内容过滤:组织或企业可以使用正向代理对员工的上网行为进行监控或者过滤不合适的网站内容。
正向代理的特点:
- 代理配置的相关设置实在客户端完成的,也就是客户端需要明确配置使用的代理服务器,由代理服务器充当客户端和目标服务器之间的桥梁;
- 正向代理无法隐藏目标服务器的信息,客户端仍能知道访问的目标地址;
- 如果代理服务器被禁用,访问可能无法完成。
反向代理
反向代理则是指客户端直接访问的服务器实际上是一个代理服务器(注意代理服务器在服务器端配置),这个代理服务器接收客户端的请求后,会将请求转发给真正的后端服务器。客户端本身是不知道这个代理服务器存在的。反向代理的应用场景包括:
- 负载均衡:通过反向代理可以在多个后端服务器之间分配请求,以分散单个服务器的压力。
- 安全性:隐藏真实的后端服务器地址,增加了一层安全防护。
- 缓存与加速:类似于正向代理,反向代理也可以实现缓存功能,减少后端服务器的负载并加快响应速度。
2.2. 负载均衡
前面提到了nginx的反向代理,这个反向代理和负载均衡是相辅相成的。Server端的代理收到client的请求后,在client无感知的情况下即可根据设定的负载均衡算法,将client的请求分发到不同的server上。
那么,为什么需要负载均衡?这是为了避免单点故障或者现有的请求使服务器压力太大无法承受。所以我们需要搭建一个服务器集群(如上图所示服务端有多个服务器),将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将“负载”均衡的分发到不同的服务器,也就是我们所说的负载均衡。
那假如我们增加了A、B、C、D等等多台服务器,我们需要把请求分给这些服务器,但是每个服务器也有自己的不同,性能也可能不均,所以怎么分?如何分配更好?又是一个问题。nginx提供了几种算法来解决这个问题:
1. 轮询(Round Robin)
- 工作原理:按照顺序将请求分发到每一台服务器,依次循环。
- 特点:简单易用,适用于服务器性能相近的场景。
2. 加权轮询(Weighted Round Robin)
- 工作原理:为每一台服务器设置一个权重(weight),权重越高,分配的请求就越多。
- 特点:适用于服务器性能不均的情况(能者多劳)。
3. 最少连接(Least Connections)
- 工作原理:nginx 会统计每个后端服务器当前的活动连接数,当有新的请求到来时,将请求分配给当前活动连接数最少的服务器。
- 特点:能够根据服务器的实际负载情况动态地分配请求,适用于请求处理时间较长、服务器负载不均的场景。
4. IP哈希(IP Hash)
- 工作原理:根据客户端IP计算哈希值,将请求分配到固定的服务器(每一个访客固定访问一个后端服务器)。
- 特点:适用于需要会话保持的场景,比如用户登录。
2.3. 动静分离
Nginx 的动静分离功能是一种高效的 Web 服务架构,它通过将动态请求和静态请求分离到不同的服务器上处理,提高了服务器性能和资源利用率。
何为动、何为静
- 静态资源(如
.html
,.css
,.js
,.jpg
等)由 Nginx 直接处理或转发到专门的静态资源服务器。 - 动态请求(如
.php
,.asp
,.jsp
等)通过反向代理转发到应用服务器处理,是通过请求服务器获取到的资源。
这些静态资源既然无需服务器处理,则可以由nginx直接来处理无需后端服务器介入。这样可以减轻后端服务器的负载,使其专注于处理动态内容,从而提高整体性能。并且们还可以根据 静态资源 的特点将其做缓存操作,以提高资源的响应速度。如下图所示:动态资源和静态资源的处理是分开的。
动静分离的优点
- 性能提升:Nginx 处理静态资源速度快,减少应用服务器压力。
- 扩展灵活:静态资源和动态请求可独立部署和优化。
- 缓存效率高:为静态资源配置浏览器缓存,提高访问速度。
3. 小总结
在本地开发时,我们通常无需使用nginx。因为本地开发的时候我们专注于业务功能的实现。然而,一旦项目开发完成,并准备部署到服务器上,我们就需要考虑性能、安全等一系列的问题这个时候我们就需要部署nginx,以构建一个完整且稳定的运行环境。
4. Docker安装
这里因为80端口太容易冲突了,所以我对外暴露的端口号修改成了5413
#拉取nginx镜像
docker pull nginx:1.21
#启动nginx容器
docker run --name oj-nginx -d -p 5413:80 nginx:1.21
启动成功后访问nginx首页:http://localhost:5413/,注:向外暴漏的端口号是5413。出现下面的欢迎页说明安装成功了。
5. 配置nginx实现反向代理和负载均衡
5.1. 配置文件介绍
这里我就是用一个简单的Demo服务,来测试一下反向代理和负载均衡的配置。至于不同的不在均衡算法,也只是使用不同的配置。这是的关键问题就是对nginx进行配置,修改nginx的配置文件。
5.1.1. nginx的配置文件在哪里?
- 主配置文件:/etc/nginx/nginx.conf
- 附加配置文件:在 /etc/nginx/conf.d/目录下,已经默认给我们提供了一个附加配置文件:/etc/nginx/conf.d/default.conf,在主配置文件中会引入附加配置文件,如下。
我们可以打开主配置文件来看一下,如下图。在主配置文件中,可以看到这里引入了附加配置文件,这样也就意味着nginx的完整的配置应该是主配置文件+附加配置文件。这样也方便我们对配置进行管理,保持主配置文件的清晰和整洁。
5.1.2. 如何修改nginx的配置文件
- 推荐(不是必须): 应该尽可能使用 /etc/nginx/conf.d/default.conf 或其他在/etc/nginx/conf.d/目录下的附加配置文件来添加或修改你的 Nginx配置,而不是直接编辑 /etc/nginx/nginx.conf 文件。这样做可以保持主配置文件的清晰和整洁,并使得配置更易于管理和维护。
- 注意:修改配置之后,还需要通过重载 Nginx 来应用更改
nginx -s reload
这里我是通过docekr安装的nginx:
docker restart [容器名称或ID]命令
5.2. 配置步骤
- 这里我使用一个简单的测试接口,他自己单独作为一个服务,用于测试nginx的配置。
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test/nginx")
@Slf4j
public class NginxTestController {@GetMapping("/info")public String info() {log.info("负载均衡测试");return "测试通过...";}
}
- 然后启动两个不同的test服务
这里我已经启动了一个服务,如何不修改代码,直接启动两个不同端口的服务呢?
复制服务后,修改该服务的启动配置即可
然后启动服务,就可以得到两个test服务了
- 修改nginx配置
upstream testServers {# 轮询(默认方式)server 192.168.5.1:8123; # 后端服务1server 192.168.5.1:8124; # 后端服务2# 加权轮询(如果后端服务性能不同,可以设置权重)# server 127.0.0.1:8123 weight=3; # 更高权重# server 127.0.0.1:8124 weight=1; # 更低权重
}
server {listen 80;listen [::]:80;server_name localhost;#access_log /var/log/nginx/host.access.log main;location /testprefix/ {proxy_pass http://testServers/;}
这个配置就会将所有的请求,代理到我们upstream中配置的test_service服务组中。修改完后,重启nginx。
注意这里我的ip环境是,因为我的docekr是在win上启动的可视化。使用的是win的ip。根据自己情况改变。
5.3. 访问接口进行测试
访问:http://localhost:5413/test/nginx/info 进行测试
为什么访问地址是这个?原因是我们测试需要通过nginx调用这个接口而不是直接调用,这样才能测试处负载均衡反向代理的效果。加上我们在nginx配置文件中进行了配置以/testPrefix/开头的请求都代理到我们 upstream 中配置的服务器组当中。实际上请求的地址会变成 http://localhost:8123/test/nginx/info 或者 http://localhost:8124/test/nginx/info。
观察结果,如下图。两个端口的服务轮询收到了请求。
相关文章:
Dcoker安装nginx,完成反向代理和负载均衡
1. 简介 官网:nginx Nginx是一个高性能的 HTTP 和反向代理 Web 服务器。它的主要功能包括反向代理、负载均衡和动静分离等。正因为 Nginx的这些功能能够为系统带来性能和安全方面的诸多优势,我们在项目部署时需要引入 Nginx组件。接下来我们会逐一向大…...
Java转C之C/C++ 的宏定义和预处理
C/C 宏定义和预处理总结 C/C 的宏定义和预处理器是在编译前执行的一系列文本处理操作,用于包含文件、定义常量、条件编译和控制编译器行为。以下是全面总结,涵盖各种知识点、注意事项以及示例。 表1:C/C 预处理指令和功能 预处理指令功能描…...
【老白学 Java】数字格式化
数字格式化 文章来源:《Head First Java》修炼感悟。 很多时候需要对数字或日期进行格式化操作,来达到某些输出效果。Java 的 Formatter 类提供了很多扩展性功能用于字符串的格式化,只要调用 String 静态方法 format() ,传入参数…...
elementUI修改table样式
在Vue项目中,如果使用的是单文件组件(.vue),并且样式是通过<style>标签定义的,vue2可以使用/deep/,vue3可以使用::v-deep选择器来修改ElementUI组件的样式。 1.修改表头背景色 /deep/.el-table__head…...
Invalid bound statement (not found) 错误解决
出现这个错误提示:Invalid bound statement (not found): com.xxx.small_reservior.dao.WaterRainMapper.getWaterRainByRegion,通常表示 MyBatis 框架无法找到与给定的 getWaterRainByRegion 方法匹配的 SQL 映射语句。这种问题通常发生在以下几种情况中…...
AWD学习(二)
学习参考: AWD攻防学习总结(草稿状态,待陆续补充)_awd攻防赛入门-CSDN博客国赛分区赛awd赛后总结-安心做awd混子-安全客 - 安全资讯平台 记第一次 AWD 赛前准备与赛后小结-腾讯云开发者社区-腾讯云 AWD学习笔记 - DiaosSamas Blog…...
VUE常见问题汇总
目录 1、80端口占用问题 2、sass版本安装问题 3、Missing binding node_modules/node-sass/vendor/darwin-x64-72/binding.node 4、Downloading binary from https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.node Cannot download &qu…...
H.323音视频协议
概述 H.323是国际电信联盟(ITU)的一个标准协议栈,该协议栈是一个有机的整体,根据功能可以将其分为四类协议,也就是说该协议从系统的总体框架(H.323)、视频编解码(H.263)、…...
第六届地博会开幕,世界酒中国菜美食文化节同期启幕推动地标发展
第六届知交会暨地博会开幕,辽黔欧三地馆亮点纷呈,世界酒中国菜助力地理标志产品发展 第六届知交会暨地博会盛大开幕,多地展馆亮点频出,美食文化节同期启幕推动地标产业发展 12月9日,第六届粤港澳大湾区知识产权交易博…...
如何在安卓系统里面用C++写一个获取摄像头原始数据并保存成.yuv文件
在 Android 系统中使用 C 编写一个获取摄像头原始数据并保存为 .yuv 文件的程序,并且通过 Android.bp 编译,你需要结合 V4L2 和 Android NDK 的特性来实现。以下是详细的步骤和代码示例。 步骤 1: 设置权限 确保你的应用程序有访问摄像头的权限。在 An…...
算法分析与设计之分治算法
文章目录 前言一、分治算法divide and conquer1.1 分治定义1.2 分治法的复杂性分析:递归方程1.2.1 主定理1.2.2 递归树法1.2.3 迭代法 二、典型例题2.1 Mergesort2.2 Counting Inversions2.3 棋盘覆盖2.4 最大和数组2.5 Closest Pair of Points2.6 Karatsuba算法&am…...
AI大模型学习笔记|多目标算法梳理、举例
多目标算法学习内容推荐: 1.通俗易懂讲算法-多目标优化-NSGA-II(附代码讲解)_哔哩哔哩_bilibili 2.多目标优化 (python pyomo pareto 最优)_哔哩哔哩_bilibili 学习笔记: 通过网盘分享的文件:多目标算法学习笔记 链接: https://pan.baidu.com…...
【竞技宝】LOL:JDG官宣yagao离队
北京时间2024年12月13日,在英雄联盟S14全球总决赛结束之后,各大赛区都已经进入了休赛期,目前休赛期也快进入尾声,LPL大部分队伍都开始陆续官宣转会期的动向,其中JDG就在近期正式官宣中单选手yagao离队,而后者大概率将直接选择退役。 近日,JDG战队在官方微博上连续发布阵容变动消…...
iOS runtime总结数据结构,消息传递、转发和应用场景
runtime篇 首先看一下runtiem底层的数据结构 首先从objc_class这么一个结构体(数据结构)开始,objc_class继承于objc_object。 objc_object当中有一个成员变量叫isa_t,那么这个isa_t指针就指向一个objc_class类型的类对象ÿ…...
An error happened while trying to locate the file on the Hub and we cannot f
An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on. 关于上述comfy ui使用control net预处理器的报错问…...
力扣刷题TOP101: 32.BM39 序列化二叉树
目录: 目的 思路 复杂度 记忆秘诀 python代码 目的: 请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 思路…...
modern-screenshot: 一个比html2canvas 性能更好的网页截屏工具
在低代码平台等设计工具中,生成缩略图是非常基础的功能,最开始我们使用的是 html2canvas 工具,但是带来的问题是这个工具非常吃性能,生成缩略图时间动辄6s以上,后来发现 modern-screenshot 这个工具性能会好一些&#…...
使用 GD32F470ZGT6,手写 I2C 的实现
我的代码:https://gitee.com/a1422749310/gd32_-official_-code I2C 具体代码位置:https://gitee.com/a1422749310/gd32_-official_-code/blob/master/Hardware/i2c/i2c.c 黑马 - I2C原理 官方 - IIC 协议介绍 个人学习过程中的理解,有错误&…...
力扣 53. 最大子数组和 (动态规划)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出:…...
【牛客小白月赛107 题解】
比赛链接 A. Cidoai的吃饭 题目大意 给定一个正整数 n n n,再给定三个正整数 a , b , c a, \ b, \ c a, b, c。初始时 a n s 0 ans 0 ans0。现在开始循环,每次循环按照从上到下的顺序选择第一条符合的执行(即执行完就再从 1. 1. 1. …...
Web day11 SpringBoot原理
目录 1.配置优先级: 2.Bean的管理: bean的作用域: 第三方bean: 方案一: 方案二: SpringBoot原理: 扫描第三方包: 方案1:ComponentScan 组件扫描 方案2࿱…...
JAVA实战:借助阿里云实现短信发送功能
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
【C语言】库函数常见的陷阱与缺陷(3):内存分配函数
目录 一、malloc 函数 1.1. 功能与常见用法 1.2. 陷阱与缺陷 1.3. 安全使用建议 1.4. 安全替代和代码示例 二、calloc 函数 2.1. 功能与常见用法 2.2. 陷阱与缺陷 2.3. 安全使用建议 2.4. 安全替代和代码示例 三、realloc 函数 3.1. 功能与常见用法 3.2. 陷阱与缺…...
探索 Python 编程调试案例:程序平均值的修复过程
💝💝💝Python 作为一门广泛应用的编程语言,其编程过程并非总是一帆风顺。即使是经验丰富的程序员,也会在代码中遇到各种错误。而调试Python代码过程,也是学习中不可避免的步骤。 今天来看一个简单的案例。…...
奇奇怪怪的错误-Tag和space不兼容
报错信息如下: TabError: inconsistent use of tabs and spaces in indentation make: *** [Makefile:24: train] Error 1不能按Tab,要老老实实按space 不过可以在编辑器里面改,把它们调整成一致的;...
linux网络编程 | c | epoll实现IO多路转接服务器
epoll实现IO多路转接服务器 可通过以下视频学习 06-opell函数实现的多路IO转接_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 文章目录 epoll实现IO多路转接服务器1.思路&功能核心思路 2.代码实现multi_epoll_sever.c运行图 1.思路&功能 **功能:**客…...
16-2.Java 反射之 setAccessible 方法详解(Java 访问检查、反射的访问检查、setAccessible())
一、Java 访问检查 1、基本介绍 访问检查就是查看成员使用是否符合访问权限(public、protected、default、private) 2、演示 Person.java package com.my.entity;public class People {private int privateVar 1;int defaultVar 2;protected int …...
颜色的基本处理
数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。 此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢? 1.R…...
提升音频转录准确性:VAD技术的应用与挑战
引言 在音频转录技术飞速发展的今天,我们面临着一个普遍问题:在嘈杂环境中,转录系统常常将非人声误识别为人声,导致转录结果出现错误。例如,在whisper模式下,系统可能会错误地转录出“谢谢大家”。本文将探…...
3D一览通在线协同设计,助力汽车钣金件设计与制造数字化升级
汽车行业已迎来智能化的汹涌浪潮,在此背景下,零部件制造商唯有积极应对,以智能制造为核心驱动力,方能跟上行业发展步调,在激烈的市场竞争中抢占先机。作为整车制造不可或缺的核心组件之一,汽车钣金件亦需紧…...
C 进阶 — 字符函数和字符串函数 ( 二 )
C 进阶 — 字符函数和字符串函数 ( 二 ) 书接上回 C 进阶 — 字符函数和字符串函数 ( 一 ) 1.9 strtok 参考资料 strtok 函数用法详解 char * strtok ( char * str, const char * sep );strtok 是 [C 标准库](https://so.csdn.net/so/search?qC 标准库&spm1001.2101.3…...
【Qualcomm】IPQ5018查看连接终端RSSI、SNR、NF方法
IPQ5018 简介 IPQ5018 是高通(Qualcomm)公司推出的一款面向网络设备的系统级芯片(SoC)。它通常用于路由器、接入点和其他网络设备中,提供高性能的无线网络连接。以下是关于 IPQ5018 的一些关键特性和功能: 关键特性 高性能处理器 IPQ5018 集成了多核 CPU,通常是 ARM …...
Windows下编译安装FreeCAD 1.0.0
本文记录在Windows下编译安装FreeCAD 1.0.0的流程。 零、环境 操作系统Windows 11VS Code1.92.1Git2.34.1Visual StudioVisual Studio Community 2022CMake3.22.1 一、编译安装 1.1 安装依赖 从FreeCAD GitHub下载LibPack-1.0.0-v3.0.0-Release.7z,并解压。 1.2…...
Hadoop其一,介绍本地模式,伪分布模式和全分布搭建
目录 一、Hadoop介绍 二、HDFS的本地模式 三、伪分布模式 四、Hdfs中的shell命令 五、全分布搭建 六、使用Java代码操作HDFS 1、环境准备 2、单元测试(Junit)编辑 一、Hadoop介绍 Hadoop 分为三部分 : Common、HDFS 、Yarn、MapRe…...
蓝桥杯刷题——day3
蓝桥杯刷题——day3 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 每张票据有唯一的 ID 号,全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造…...
【Leecode】Leecode刷题之路第79天之单词搜索
题目出处 79-单词搜索-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 79-单词搜索-官方解法 方法1:回溯 思路: 代码示例:(Javaÿ…...
海康威视监控web实时预览解决方案
海康威视摄像头都试rtsp流,web页面无法加载播放,所以就得转换成web页面可以播放的hls、rtmp等数据流来播放。 一:萤石云 使用萤石云平台,把rtsp转化成ezopen协议,然后使用组件UIKit 最佳实践 萤石开放平台API文档 …...
virtualbox 搭建ubuntu
环境:VirtualBox-6.1.32 1、下载安装virtualbox 略 2、新建ubuntu 3、配置ubuntu 选择虚拟盘 4、安装ubuntu 5、安装ssh sudo apt install openssh-server openssh-client 查看ip 6、安装samba sudo apt install samba 查看ssh启动状态 sudo systemctl stat…...
RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10
目录 前言 一、Qt5WebEngine简介 二、Qt5WebEngine编译 总结 前言 Rockchip RK3588是一款强大的多核处理器,广泛应用于边缘计算、人工智能、嵌入式系统等领域。为了在RK3588上运行自定义的Linux系统,并使用Qt5WebEngine进行Web内容渲染,Buildroot是一个非常合适的工具。本…...
FedAdam算法:供给方信用,数据质量;更新一致性
FedAdam算法:供给方信用,数据质量;更新一致性 FedAdam算法概述 FedAdam是一种联邦学习(Federated Learning)算法。联邦学习是一种机器学习技术,它允许在多个设备或数据中心(称为客户端)上训练模型,而无需将数据集中到一个中央服务器,从而保护数据隐私。FedAdam主要用于…...
webrtc音频模块(三) windows Core Audio API及声音的播放
在前面介绍了ADM(Audio Device Module),它用于抽象音频设备管理和音频数据采集/播放接口。windows的实现是AudioDeviceWinowCode,它封装了Core Audio APIs实现了对音频设备的操作。 Core Audio APIs windows提供了多种音频操作API,比如最常…...
使用ERA5数据绘制风向玫瑰图的简易流程
使用ERA5数据绘制风向玫瑰图的简易流程 今天需要做一个2017年-2023年的平均风向的统计,做一个风向玫瑰图,想到的还是高分辨率的ERA5land的数据(0.1分辨率,逐小时分辨率,1950年至今)。 风向,我分为了16个&…...
深度优先遍历(DFS)
深度优先遍历(DFS) 1. 计算布尔二叉树的值2. 求根节点到叶节点数字之和3.二叉树剪枝4.验证二叉搜索树5. 二叉搜索树中第 K 小的元素6. 二叉树的所有路径 深度优先遍历(DFS,全称为Depth First Traversal),是…...
国科大网络协议安全期末
完整资料仓库地址:https://gitee.com/etsuyou/UCAS-Network-Protocol-Security 部分题目: 六 论述题10*220 试讨论IPv6解决了IPv4的哪些“痛点”,以及IPv6存在的安全问题试比较IPsec与SSL的安全性 五 简答题5*315 简述MAC欺骗和ARP欺骗的…...
开源密码管理器 Bitwarden 一站式管理所有密码以及 2FA
本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 随着注册的平台越来越多,管理密码的难度也越来越高了。要是把密码都设置成一样的,担心哪天某个平台泄露被一锅端,而每个平台单独一个密码又不太好记,这时候就…...
Python爬虫之Selenium的应用
【1】Selenium基础介绍 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种driv…...
华为无线AC、AP模式与上线解析(Huawei Wireless AC, AP Mode and Online Analysis)
华为无线AC、AP模式与上线解析 为了实现fit 瘦AP的集中式管理,我们需要统一把局域网内的所有AP上线到AC,由AC做集中式管理部署。这里我们需要理解CAPWAP协议,该协议分为两种报文:1、管理报文 2、数据报文。管理报文实际在抓包过程…...
k8s中用filebeat文件如何收集不同service的日志
以下是一个详细的从在 Kubernetes 集群中部署 Filebeat,到实现按web-oper、web-api微服务分离日志并存储到不同索引的完整方案: 理解需求:按服务分离日志索引 在 Kubernetes 集群中,有web-oper和web-api两种微服务,希…...
linux常用命令(cd、ls)
命令cd cd 是 Linux 系统中用于改变当前工作目录的命令。它是 "change directory" 的缩写。以下是关于 cd 命令的详细解释和使用方法: 基本用法 cd [目录路径]:将当前工作目录切换到指定的目录路径。 常用选项与示例 1、切换到指定目录 …...
Java实现一个带头节点的单链表
什么是单链表? 单链表是一种基础的数据结构,其中每个节点都包含两部分: 数据域:存储节点数据。指针域:存储指向下一个节点的引用。 为什么使用头节点? 头节点的存在简化了操作逻辑: 统一操作…...