C++ 网络编程项目fastDFS分布式文件系统(九)总结
1. Location语法
1. 语法规则
location [= |~|~ * |^~ ] /uri/{…}正则表达式中的特殊字符 :- . () {} [] * + ?
客户端 : http ://localhost/helloworld/test/a. html客户端 : http ://localhost/helloworld/test//helloworld/test/a. html/helloworld/test/location /{}location /helloworld/{}location /helloworld/test/{}location =/helloworld/test/{root xxx;}http ://localhost/helloworld/test/a. htmllocation ^~ /helloworld/test/{}location ^~ /login/{}http ://localhost/helloworld/test/a. JPGlocation ~ * \ .[ jpg|png ]{}http ://192.168.1.100/login/hello/world/login. html/login/hello/world/login. htmllocation /{}location /login/{}location /login/hello/{}location /login/hello/world/{}location ~ /group[ 1-9 ]/M0[ 0-9 ]{}
练习:

匹配示例 :/ -> configuration/index.html -> configuration/documents/document.html -> configuration C/documents///images/1.gif -> configuration D/images///documents/1.jpg -> configuration E
2. 项目总结
3. 项目提炼
4. 存储节点反向代理
上图的反向代理服务器代理的是每个存储节点上部署的 Nginx- 每个存储节点上的 Nginx 的职责 : 解析用户的 http 请求 , 帮助用户快速下载文件客户端上传了一个文件 , 被存储到了 fastDFS 上 , 得到一个文件 ID/group1/M00/00/00/ wKgfbViy2Z2AJ-FTAaM3Asg3Z0782 . mp4"因为存储节点有若干个 , 所有下载的时候不知道对应的存储节点的访问地址给存储节点上的 nginx web 服务器添加反向代理服务器之后 , 下载的访问地址 :- 只需要知道 nginx 反向代理服务器的地址就可以了 : 192.168.31. 109- 访问的 url :http ://192.168.31.109/group1/M00/00/00/ wKgfbViy2Z2AJ-FTAaM3Asg3Z0782 . mp4客户端的请求发送给了 nginx 反向代理服务器- 反向代理服务器不处理请求 , 只转发 , 转发给存储节点上的 nginx 服务器反向代理服务器的配置 - nginx. conf- 找出处理指令 : 去掉协议 , iP/ 域名 , 末尾文件名 , ? 和后边的字符串- /group1/M00/00/00/ - 完整的处理指令- 添加 locationserver {location /group1/ M00{# 数据转发 , 设置转发地址proxy_pass http ://test.com;}location /group2/ M00{# 数据转发 , 设置转发地址proxy_pass http ://test1.com;}}upstream test. com{# fastDFS 存储节点的地址 , 因为存储节点上安装了 nginx, 安装的 nginx 作为 web 服务器的角色server 192.168.31.100;server 192.168.31.101;server 192.168.31.102;}upstream test1. com{# fastDFS 存储节点的地址 , 因为存储节点上安装了 nginx, 安装的 nginx 作为 web 服务器的角色server 192.168.32.100;server 192.168.33.101;server 192.168.34.102;}# ===================================存储节点上的 web 服务器的配置存储节点 1location /group1/ M00{# 请求处理root 请求的资源的根目录 ; // 存储节点的 store_path0 对应的路径 + datangx_fastdfs_module;}location /group1/ M01{# 请求处理root 请求的资源的根目录 ;ngx_fastdfs_module;}存储节点 2location /group2/ M00{# 请求处理root 请求的资源的根目录 ;ngx_fastdfs_module;}location /group2/ M01{# 请求处理root 请求的资源的根目录 ;ngx_fastdfs_module;}存储节点 3location /group3/ M00{# 请求处理root 请求的资源的根目录 ;ngx_fastdfs_module;}location /group3/ M01{# 请求处理root 请求的资源的根目录 ;ngx_fastdfs_module;}
5. https
1. 对称加密加解密秘钥是同一个2. 非对称加密公钥 , 私钥rsa -> 公钥私钥都是两个数字ecc -> 椭圆曲线 , 两个点公钥加密 , 私钥解密数据传输的时候使用私钥加密 , 公钥解密数字签名3. 哈希函数md5/ sha1/sha2得到散列值 , 散列值是定长的4. 消息认证码生成消息认证码 : ( 将原始数据 + 共享秘钥 ) * 进行哈希运算 = 散列值验证消息认证码 :( 接收的原始数据 + 共享秘钥 ) * 哈希运算 = 新的散列值新散列值和旧散列值进行比较 , 看是不是相同作用 :验证数据的一致性型弊端 :两端共享秘钥必须相同 , 共享秘钥分发困难5. 数字签名 -> 目的告诉所有人这个数据的所有者是 xxx, xxx 就是拿私钥的人生成一个非对称加密的密钥对公钥私钥生成签名 :对原始数据进行哈希运算 -> 散列值使用非对称加密的私钥 , 对散列值进行签名 ( 私钥加密 ) -> 密文得到的密文就是数字签名签名的校验 :校验这会收到签名者发送的数据原始数据数字签名对接收的数据进行哈希运算 -> 散列值使用非对称加密的公钥 , 对数字签名进行解密 -> 明文 == 签名者生成的散列值校验者的散列值 和 签名者的散列值进行比较相同 -> 校验成功了 , 数据属于签名的人失败 -> 数据不属于签名的人弊端 :接收公钥的人没有办法校验公钥的所有者。
6. 证书由一个受信赖的机构 (CA) 对某人的公钥进行数字签名CA 有一个密钥对使用 ca 的私钥对某个人的公钥进行加密 -> 证书这个人 的公钥这个人的个人信息
相关文章:
C++ 网络编程项目fastDFS分布式文件系统(九)总结
1. Location语法 1. 语法规则 location [ |~|~ * |^~ ] /uri/ { … } 正则表达式中的特殊字符 : - . () {} [] * ? 2. Location 优先级说明 在 nginx 的 location 和配置中 location 的顺序没有太大关系。 与 location 表达式的类型有关。 相同类型的表达式&a…...
第五章 树与二叉树 一、树的定义与考点
一、定义 1.树是由n (n > 0) 个节点组成的有限集合。 2.当n0时,称为空树。 3.在非空树中,有且仅有一个节点没有前驱,其他节点都有且仅有一个前驱,称为根节点。 4.每个节点有零个或多个子节点,而每个子节点又有零…...
C语言基础之——指针(下)
前言:本篇文章将继续讲解有关指针的剩余基础知识。 学无止境,一起加油叭!! 目录 一.指针运算 1.指针 - 整数 2.指针的关系运算 3.指针 - 指针 二.指针与数组 三.二级指针 四.指针数组 总结 一.指针运算 指针运算包括以下三…...
小研究 - JVM 的类装载机制
本文通过对一个类装载实例的分析,阐明了 Java虚拟机的类装载的代理机制和由此定义的命名空间,指出了类装载机制在容器/组件/抽象框架结构中的作用。 目录 1 引言 2 实例 3 分析 3.1 类装载的代理机制 3.2 Java的命名空间 3.3 解决问题 4 应…...
项目---日志系统
目录 项目系统开发环境核心技术日志系统介绍为什么需要日志系统? 日志系统框架设计日志系统模块划分代码实现通用工具实现日志等级模块实现日志消息模块实现格式化模块实现落地模块实现日志器模块同步日志器异步日志器缓冲区实现异步工作器实现 回归异步日志器模块建造者模式日…...
设计模式--建造者模式(Builder Pattern)
一、什么是建造者模式 建造者模式(Builder Pattern)是一种创建型设计模式,它关注如何按照一定的步骤和规则创建复杂对象。建造者模式的主要目的是将一个复杂对象的构建过程与其表示分离,从而使同样的构建过程可以创建不同的表示。…...
若依vue打印的简单方法
像我们后端程序员做前端的话,有时候真不需要知道什么原理,直接塞就好了 我们选用基于hiprint 的vue-plugin-hiprint来打印 目的是为了实现点击某些行的数据,然后点击某个按钮直接弹出下面的打印 此链接 大佬是原创,我拿来总结梳理一下 插件进阶功能请移步: 链接 插件模板制作页…...
Rust 基础语法学习
Rust 基础语法学习 文章目录 Rust 基础语法学习hello world变量数据类型整数类型进制表示方法浮点数类型布尔类型字符类型字符串复合类型元组结构体元组结构体 切片类型字符串切片数组切片 不可变变量与可变变量常量注释函数语句与表达式 流程控制语句if else条件判断while循环…...
iOS开发Swift-函数
1.函数的定义和调用 func greet(person: String) -> String { // 函数名 传入值 传入值类型 返回值类型let greeting "Hello" personreturn greeting } print( greet(person: "Anna") ) //调用2.函数的参数与返回值 (1)无参函数 func sayHe…...
序列化协议:JSON和XML
作者:CARROT 链接:https://www.zhihu.com/question/604811576/answer/3100483698 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 json和xml都是数据传输的格式。比如我们开发过程中需要和网…...
江西萍乡能源石油化工阀门三维扫描3d测量抄数建模-CASAIM中科广电
长期以来,石油天然气、石油石化、发电和管道输送行业在环保、健康和安全保障方面一直承受着巨大的压力,他们必须确保相关规程在各项作业中得到全面贯彻。 阀门作为流体管道运输中的组成部分,其装配密封度是保证流体运输安全的重要一环&#…...
Go【gin和gorm框架】实现紧急事件登记的接口
简单来说,就是接受前端微信小程序发来的数据保存到数据库,这是我写的第二个接口,相比前一个要稍微简单一些,而且因为前端页面也是我写的,参数类型自然是无缝对接_ 前端页面大概长这个样子 先用apifox模拟发送请求测试…...
第一个VUE程序?
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title></head> <body><div id"app">{{message}} </div><!-- 1.导入Vue.js --> <script s…...
电阻器件的分类
电阻器的种类碳膜电阻膜式电阻器中的一种。气态碳氢化合物在高温和真空中分解,碳沉积在瓷棒或者瓷管上,形成一层结晶碳膜。改变碳膜厚度和用刻槽的方式变更碳膜的长度可以得到不同的阻值。碳膜电阻成本较低,电性能和稳定性较差,一…...
QT基础教程之二 第一个Qt小程序
QT基础教程之二 第一个Qt小程序 按钮的创建 在Qt程序中,最常用的控件之一就是按钮了,首先我们来看下如何创建一个按钮 QPushButton * btn new QPushButton; 头文件 #include <QPushButton>//设置父亲btn->setParent(this);//设置文字btn-&g…...
Edge用户数据目录查找
创建 Microsoft Edge 用户数据目录变量...
最新外卖霸王餐小程序、H5、微信公众号版外卖系统源码|霸王餐美团/饿了么系统/外卖红包cps粉丝裂变玩法源码下载
最新外卖霸王餐小程序、H5、微信公众号版外卖系统源码、霸王餐美团、饿了么系统,粉丝裂变玩源码下载,外卖cps小程序项目,外卖红包cps带好友返利佣金分销系统程序、饿了么美团联盟源码,外卖cps带分销返利后端源码,基于L…...
数据库事务四大特性
事务的4大特性(ACID): 原子性(Atomicity): 事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。 一致性(Consistemcy): 事务前后,数据库的状态都满足所有的完…...
浅谈Router和Route
router 和 route 是在前端框架中用于管理和处理路由的两个关键概念。这两者之间的关系可以通过具体的代码来解释。在本示例中,我将使用 React 和 React Router 来说明它们之间的关系。 Router(路由器):Router 是一个库或框架&…...
Linux环境安装jdk
1.安装jdk 上传jdk.tar.gz;安装包在下载内容里可以直接下载tar -zxvf jdk.tar.gz;配置环境变量:vi /etc/profile;填入以下内容;退出编辑模式,保存;然后source /etc/profile使配置生效; export JAVA_HOME/d…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
