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…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...
大数据驱动企业决策智能化的路径与实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:数据驱动的企业竞争力重构 在这个瞬息万变的商业时代,“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...
