初识Redis · 主从复制(上)
目录
前言:
主从模式
模拟主从模式
连接信息
slaveof命令
nagle算法
Nagle算法的工作原理:
具体实现:
优点:
缺点:
使用场景:
拓扑结构
前言:
主从复制这里算得上是一个大头了,主要是因为主从复制它解决的问题,就是比较契合于我们当代网民的一个核心点,即人多了数据读写不过来怎么办?我们在Redis的第一篇中写到分布式系统架构的由来是从单机架构,然后引入多台机器,每台机器还可以细分工作内容,这样的一个流程引出了分布式系统,甚至到了微服务部分。
那么主从复制这里解决的问题就是:单点问题,如果只有一台机器,那么就意味着两个点,第一,某个服务的性能和并发量是较为有限的,因为不管是应用层服务还是数据库服务都要从这一台机器来完成,第二,这个服务的可用性不是很强,因为如果一旦机器挂了,服务也就中断了,没有其他机器来提供对应的服务了。
所以,为了解决以上的单点问题,往往在部署Redis服务的时候,希望部署多个Redis服务器,构成一个集群,如果某一个机器挂了,也是可以让其他机器提供相应的服务,这样对应服务的可用性就大大提高了。
那么在分布式系统中,一般会有三种部署Redis服务的方式,分别是:主从复制,主从复制+哨兵,集群模式。
那么我们将通过三篇文章,分别介绍三种不同的模式是如何解决单点问题的。
主从模式
所谓主从模式,我们从字面意思上来看,就是分为了主节点和从节点,假设我们分别有三个Redis服务器,为A,B,C。其中A节点为主节点,B和C为从节点。
既然是主从关系,那么也就意味着A是老大,BC是小弟,小弟得听老大的吧?所以在数据方面,BC的数据都是从A上面同步过来的。既然是同步过来的,同步我们也是有不同的机制的,这里后文介绍。
那么问题来了,作为从节点,是否具有权限修改对应的数据?
显然是不可以的,因为对于从节点来说,数据都是从主节点来的,私自篡改了可就一点不像从节点了,对于主从模式来说,数据要保持一致性,既然是一致性,从节点单独修改了数据之后同步给主节点看起来好像也可以,但是如果在主从模式中我们规定:只有主节点能同步数据给从节点,从节点不能同步数据给主节点。
当我们有了三个节点之后,对于上面的单点问题我们就有了一定多个解决能力,并且,单点问题的核心就是怕服务器挂了,现在我们有三个服务器,即便挂了一个,也不会影响其他两个节点正常工作。
那么什么是正常工作呢?对于Redis来说,操作我们就分为读写好了,通过前面文章的理解,我们就知道了对于数据库服务来说,一般都是读的压力远远大于写的压力的,所以从节点一般会多分担一点读的压力,对于主节点来说,它不仅要分担读的工作量,写的操作都是它全权来完成的。
正常工作的时候多和谐,可是一旦挂了节点,比如B节点挂了,影响也不是那么大,毕竟还有两个服务器顶着呢,而多台服务器同时挂的可能性也是非常非常小的,这点我们不用担心。那么问题来了,假设我们有机器挂了,如果是从节点还好,如果是主节点呢?
主节点一挂,就完了,也不是能真完了,只是主节点一挂,那么读方面的请求还是能够处理的,不过写方面的请求就没有办法了,有人说咱们再引入一个主节点,这可是万万不行的,一山可容不得二虎,所以如果主节点一挂,咱们要么就人工干预另起一个主节点,要么就引入哨兵机制。这个点我们在第二篇文章会讲的。对于人工干预的话,操作相当繁琐,所以这里并不打算展开来讲。
那么从上面的介绍,我们能得出来两个简短的结论:主从模式能有效的分配读写请求,最大的安全隐患是主节点是否能正常运行。
模拟主从模式
这里针对的是使用云服务器的同学,咱们只有一台服务器,那么如何启动多个Redis-server进程呢?一般来说,分布式系统代表的是多个redis-server进程启动在不同的主机上。这里我们是有办法启动多个server进程的。
首先,配置文件肯定要来多份,因为redis-server服务器启动的时候会自动加载配置文件,其次,我们需要修改对应的端口号,因为redis服务器默认启动的6379端口号,所以我们需要修改一下,比如6380,6381等。
当然了,其实模仿主从模式有多种方式,上面的这种方式是修改的配置文件,使得主从模式永久生效,我们也可以通过命令行的方式使主从模式生效,比如redis-cli --slaveof{masterhost}{masterport},但是这种方式都不是永久性的,我们为了方便学习,还是推荐使用修改配置文件的方式。
分别复制配置文件之后,然后修改端口号为6380和6381,并且我们可以关注一下daemonize是否开启,这个的作用使让Redis以守护进程的方式在后台运行的。
另一个同理:
然后我们通过指定配置文件的方式,使得新启动的两个服务器的端口号正确,并且指定了我们希望的主节点的主机名和端口号,这样我们的连接就算完成了。
这里127.0.0.1:6379 127.0.0.1:39155/38147代表的意思就是进行tcp连接的时候,OS会为redis分配一个临时端口用于网络连接,而现在已经连接成功了。
我们发现它使用的是tcp连接,也就意味着主节点和从节点之间的通信是通过tcp进行的,换句话说,这个时候我们可以把主节点认为是服务器,从节点认为是客户端。
此时我们的连接就成功了,在正式验证主从复制之前,我们先来简单理解一下对服务器使用kill的现象,其实在我们刚才kill掉6379的服务器的时候,我们发现它自己重启了,并且也为自己分配了一个全新的pid。这是因为服务器要的是稳定性和高可用性,但是不免有挂的时候,这个时候就要求服务器立即重启,这样就能避免产生严重的后果。所以,我们看到的现象是kill掉之后立即重启了。
连接信息
目前我们已经是连接成功了,那么我们可以先启动一下redis-cli 6379的服务器,并且使用命令info replication查看相关的信息:
从上到下,我们依次阅读,可以发现role:master,代表这个节点它是主节点,connected_slaves代表的是连接的从节点有两个,slave0和slave1后面的字符串蕴含的信息有从节点的ip地址,port,state在线状态,以及offset偏移量和lag延迟,然后是master_replid,有两个,后面介绍。对于master_repl_offset和second_repl_offset代表的是主节点复制偏移量和第二复制偏移量,后面的四个字段代表的都是积压缓冲区的值。
我们发现相关的连接信息还是比较多的,那么我们可以根据连接信息,展开一系列的学习。
slaveof命令
首先就是既然我们能够让节点跟随某个节点,如何取消呢?
使用命令slaveof no one,我们就能够取消主从关系了,同时我们在主节点那里使用info replication,我们发现对应的连接信息也发生了修改。
当然了,我们也可以通过slaveof重新连接。
有了这个命令,我们是否可以完成以上的结构呢?当然是可以的~
此时结构发生更改,然后我们可以通过Info replication查看一下6380的信息。
我们可以看到它仍然是一个slave节点,不过看起来它好像是6381的主主节点,实际上它没有实权,还是只能完成读的操作,写的操作仍然不被允许。
nagle算法
我们刚才通过netstat命令发现主节点和从节点之间是通过tcp连接的,既然是通过tcp连接,那么我们可能就得好好思考即时性的问题了。一般在游戏开发中,对于即时性的要求非常高,比如fps游戏等。
而nagle算法一旦开启,就会增加tcp的传输延迟,但是好处是能够节省网络带宽,这对于资源节省来说还是不错的,那么反过来,关闭了nagle算法,就能提高传输效率,但是对于网络带宽的消耗就大了,至于如何平衡,我们就要看实际的应用场景了。
以下工作原理来源于AI:
Nagle算法的工作原理:
Nagle算法的核心思想是:如果当前没有足够的数据来填充一个完整的TCP包,那么就等一等,把多个小的数据合并成一个较大的包进行发送。这样做的目的是减少网络中小数据包的数量,从而降低协议头的开销,提升整体吞吐量。
具体实现:
如果有数据要发送,但当前发送的数据量不足以填满一个TCP包(即小于MSS,最大分段大小),那么发送的数据将被缓存。
这时,发送方会等到缓存中的数据量足够填满一个完整的包,或者等到先前发送的数据被确认(收到确认报文,ACK)后,再发送新的数据。
这样,发送的数据会合并成更大的数据包来提高传输效率。
优点:
减少小数据包的数量:通过合并多个小的数据包,减少了每个数据包的头部开销,从而提高了网络带宽的利用率。
提高吞吐量:尤其是在网络延迟较高的情况下,减少了发送的小包数量,能有效提高吞吐量。
缺点:
延迟增大:由于发送方可能会等待缓存中数据的积累或者等待确认,这可能会导致某些小数据包的延迟增大,尤其是对于需要实时交互的应用(例如在线游戏、视频流)来说,这可能不利。
实时性差:在对实时性要求较高的应用中,Nagle算法可能引入不必要的延迟,导致响应时间变慢。
使用场景:
适合数据传输量较大,且不太关心实时性要求的场合,如文件传输、邮件发送等。
不适合实时性要求高的应用,如在线游戏、即时通讯等,因为 Nagle算法会引入延迟。
拓扑结构
我们刚才更改了三个节点之间的结构:
这种结构我们称之为拓扑结构,即不同的排列结构,而不同的排列结构会导致效率的高低,比如
这种结构来讲的话,主节点收到修改的命令之后,那么就要通过tcp网络服务把其他四个机器上的数据进行更改,随着节点个数的增多,每个节点都连接了主节点的话,那么主节点对于一条数据就是重复传输多次,这势必会减少效率。
所以我们引入了扁平化结构:
即从节点带着从节点,这样主节点就不用一条数据进行多次传输,而是将这个任务给到了自己的从节点。
那么如何从节点如何从主节点那里get到数据的呢?
首先是保存主节点的信息,比如ip port等,然后通过tcp建议连接,这个过程会有tcp的三次握手,在网络层面上判断tcp连接是否成功,成功了之后,再使用ping命令,判断主节点和从节点是否都能正常工作,然后是权限验证,不可能让你啥也不验证就连接了是吧。
最后就是同步数据了,同步数据分为了全量复制和增量复制以及实时复制,复制的这个话题我们就单开一篇文章介绍了,毕竟这是主从复制的核心机制了。
我们也可以简单验证一下主从复制了:
关于主从复制的同步数据机制请移步下一篇文章~
感谢阅读!
相关文章:
初识Redis · 主从复制(上)
目录 前言: 主从模式 模拟主从模式 连接信息 slaveof命令 nagle算法 Nagle算法的工作原理: 具体实现: 优点: 缺点: 使用场景: 拓扑结构 前言: 主从复制这里算得上是一个大头了&…...
欧拉计划 Project Euler55(利克瑞尔数)题解
欧拉计划 Project Euler 55 题解 题干思路code 题干 思路 直接暴力找即可,若使用其他语言要注意溢出的问题,这里我使用的手写大数加法 code // 249 #include <bits/stdc.h>using namespace std;using ll long long;string add(const string&am…...
关于nginx,负载均衡是什么?它能给我们的业务带来什么?怎么去配置它?
User 关于nginx,我还想知道,负载均衡是什么?它能为我的业务带来什么?怎么去配置它? Assistant 负载均衡是 Nginx 另一个非常强大的功能,也是构建高可用、高性能应用的关键技术之一。我们来详细了解一下。 …...
【项目管理】进度网络图 笔记
项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应&…...
【C++QT】Buttons 按钮控件详解
文章目录 一、QPushButton 基础按钮控件二、QToolButton 轻量工具按钮控件三、QRadioButton 互斥选择控件四、QCheckBox 状态选择控件五、QCommandLinkButton 引导式按钮控件六、QDialogButtonBox 对话框按钮布局控件七、实践与选型建议八、总结如果这篇文章对你有所帮助&#…...
威雅利电子|业界领先的高隔离度用于5G基站的吸收式SPDT开关“NT1819“
业界领先的高隔离度 用于5G基站的吸收式SPDT开关"NT1819" 为了实现智能社会,已经启动了5G服务。这样,高速、低延迟、大容量的数据通信成为可能,也给我们的生活和工业发展带来了巨大的变化。 在5G基站有很多天线,每个天…...
【DNS】BIND 9的配置
该文档围绕BIND 9的配置与区域文件展开,介绍了BIND 9配置文件及区域文件的相关知识,以及权威名称服务器、解析器的相关内容,还阐述了负载均衡和区域文件的详细知识,具体如下: 基础配置文件: named.conf&am…...
高可靠性厚铜板制造的关键设备与工艺投入
随着科技的不断发展,电子设备越来越普及,对电路板的需求也越来越大。厚铜板电路板作为一种高性能、高可靠性的电路板,受到了广泛的关注和应用。那么,作为一家厚铜板电路板供应商,如何投入线路板生产呢?本文…...
m365是什么,和o365的区别
M365(Microsoft 365)是微软推出的基于云的办公套件,包含多种生产力工具,旨在帮助个人和企业提高工作效率。它包括经典的办公软件,如Word、Excel、PowerPoint、Outlook等,还提供协作和云存储服务,…...
【Pandas】pandas DataFrame dot
Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...
技术服务业-首套运营商网络路由5G SA测试专网在深光搭建完成并对外提供服务
深光为了更好的服务蜂窝无线技术及运营商测试认证相关业务,搭建了技术服务业少有的5G测试专网,可独立灵活配置、完整端到端5G(含RedCap、LAN)的网络架构。 通过走真正运营商网络路由的方式,使终端设备的测试和运营商网…...
GrassRouter 小草MULE多5G多链路聚合通信路由设备在应急场景的聚合效率测试报告及解决方案
在应急通信场景中,快速、稳定、高效的通信链路是保障救援工作顺利开展的关键。MULE(Multi-Link Unified Link Enhancement)多链路聚合路由通信设备作为一种新型的通信技术解决方案,通过聚合多条通信链路(如4G/5G、卫星…...
解释器模式:自定义语言解析与执行的设计模式
解释器模式:自定义语言解析与执行的设计模式 一、模式核心:定义语言文法并实现解释器处理句子 在软件开发中,当需要处理特定领域的语言(如数学表达式、正则表达式、自定义配置语言)时,可以通过解释器模式…...
第十二章 Python语言-大数据分析PySpark(终)
目录 一. PySpark前言介绍 二.基础准备 三.数据输入 四.数据计算 1.数据计算-map方法 2.数据计算-flatMap算子 3.数据计算-reduceByKey方法 4.数据计算-filter方法 5.数据计算-distinct方法 6.数据计算-sortBy方法 五.数据输出 1.输出Python对象 (1&am…...
Oracle数据库巡检脚本
1.查询实例信息 SELECT INST_ID, INSTANCE_NAME, TO_CHAR(STARTUP_TIME, YYYY-MM-DD HH24:MI:SS) AS STARTUP_TIME FROM GV$INSTANCE ORDER BY INST_ID; 2.查看是否归档 archive log list 3.查看数据库参数 SELECT NAME , TYPE , VALUE FROM V$PARAMETER ORDER BY NAME; 4.…...
示例:Spring JDBC编程式事务
以下是一个完整的 Spring JDBC 编程式事务示例,包含批量插入、事务管理、XML 配置和单元测试: 1. 项目依赖(pom.xml) <dependencies><!-- Spring JDBC --><dependency><groupId>org.springframework<…...
Happens-Before 原则
Happens-Before 规则 Happens-Before是JMM的核心概念之一,是一种可见性模型,保障多线程环境下前一个操作的结果相对于后续操作是可见的。 程序顺序性,同一线程中前面代码的操作happens-before后续的任意操作。volatile变量规则,…...
怎样通过互联网访问内网 SVN (版本管理工具)提交代码更新?
你有没有遇到过这种情况:在公司或者家里搭了个 SVN 服务器(用来存代码的),但出门在外想提交代码时,发现连不上? 这是因为 SVN 通常跑在内网,外网直接访问不了。 这时候就需要 “内网穿透” ——…...
Verilog 语法 (一)
Verilog 是硬件描述语言,在编译下载到 FPGA 之后, FPGA 会生成电路,所以 Verilog 全部是并行处理与运行的;C 语言是软件语言,编译下载到单片机 /CPU 之后,还是软件指令,而不会根据你的代…...
针对 Spring Boot 应用中常见的查询场景 (例如:分页查询、关联查询、聚合查询) 如何进行 SQL 优化?
通用优化原则(适用于所有场景): 索引是基础: 确保 WHERE、JOIN、ORDER BY、GROUP BY 涉及的关键列都有合适的索引(单列或联合索引)。避免 SELECT *: 只查询业务需要的列,减少数据传输量和内存消耗。覆盖索…...
shadcn/radix-ui的tooltip高度定制arrow位置
尝试了半天,后来发现,不支持。。。。。就是不支持 那箭头只能居中 改side和align都没用,下面有在线实例 https://codesandbox.io/p/sandbox/radix-ui-slider-forked-zgn7hj?file%2Fsrc%2FApp.tsx%3A69%2C21 但是呢, 第一如果…...
ROS-真机向虚拟机器人映射
问题描述 ROS里的虚拟机械臂可以实现和真实机械臂的位置同步,真实机械臂如何动,ROS里的虚拟机械臂就如何动 效果 步骤 确保库卡机械臂端安装有EthernetKRL辅助软件和KUKAVARPROXY 6.1.101(它是一个 TCP/IP 服务器 ,可通过网络实…...
ap无法上线问题定位(交换机发包没有剥掉pvid tag)
一中学,新开的40台appoe交换机核心交换机旁挂ac出口路由的组网,反馈ap无法上线,让协助解决。 组网如下: 排查过程: 检查ac的配置,没有发现问题 发现配置没有问题,vlan1000配置子接口ÿ…...
Linux基础
03.Linux基础 了解VMware备份的两种方式 了解Linux系统文件系统 掌握Linux基础命令 备份操作系统 为什么要备份系统? 数据安全:防止因硬件故障、软件错误等原因导致的数据丢失。 系统恢复:快速恢复系统至正常状态,减少停机时…...
python函数与模块
目录 一:函数 1.无参函数 2.带参数函数 2.函数中变量中的作用域 4.内建函数 二:模块与包 1.模块 (1)模块定义 (2)模块导入 2.包 (1)包的使用 (2)_…...
线上助农产品商城小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的线上助农产品商城小程序源码,旨在为农产品销售搭建一个高效、便捷的线上平台,助力乡村振兴。 一、技术架构 该小程序源码采用了ThinkPHP作为后端框架,FastAdmin作为快速开发框架,UniApp作为跨…...
个人博客后台管理开发日志
技术栈:Vue3 Ts node.js mySQL pinia axios 3月14日 一、数据表梳理 用户(user) ID名字邮箱密码 头像 地址 创建 时间 总览有本地文件、博客文章、摄影图库、随笔随记,这些板块也有对应的分类,我们要把这些分类…...
[论文阅读]REPLUG: Retrieval-Augmented Black-Box Language Models
REPLUG: Retrieval-Augmented Black-Box Language Models REPLUG: Retrieval-Augmented Black-Box Language Models - ACL Anthology NAACL-HLT 2024 在这项工作中,我们介绍了RePlug(Retrieve and Plug),这是一个新的检索增强型…...
Matlab 基于共面螺旋管或共面亥姆霍兹谐振器的超薄低频吸声板
经典吸声材料的吸声性能严格依赖于材料的厚度,要达到完全吸声,至少需要四分之一波长。在本文中,我们报道了一种厚度约为波长百分之一的超薄吸声板,可以完全吸收声能。其策略是将四分之一波长的减声管弯曲并缠绕成二维共面减声管&a…...
济南国网数字化培训班学习笔记-第二组-4节-输电线路工程安全管理
输电线路工程安全管理 安全标识 颜色 禁止红、警示黄、指令蓝、提示绿 安全器具 定义 安全工器具通常专指“电力安全工器具”,是防止触电、灼伤、坠落、摔跌、腐蚀、窒息等事故,保障工作人员人身安全的各种专用工具和器具 分类 个体防护设备 防…...
【C语言】数据在内存中的存储:从整数到浮点数的奥秘
前言 在计算机的世界里,数据的存储和表示是编程的基础。今天,我们就来深入探讨一下数据在内存中的存储方式,包括整数和浮点数的存储细节,以及大小端字节序的奥秘。这些内容不仅对理解计算机系统至关重要,还能帮助我们…...
白鲸开源WhaleStudio与崖山数据库管理系统YashanDB完成产品兼容互认证
近日,北京白鲸开源科技有限公司与深圳计算科学研究院联合宣布,双方已完成产品兼容互认证。此次认证涉及深圳计算科学研究院自主研发的崖山数据库管理系统YashanDB V23和北京白鲸开源科技有限公司的核心产品WhaleStudio V2.6。经过严格的测试与验证&#…...
图论---朴素Prim(稠密图)
O( n ^2 ) 题目通常会提示数据范围: 若 V ≤ 500,两种方法均可(朴素Prim更稳)。 若 V ≤ 1e5,必须用优先队列Prim vector 存图。 // 最小生成树 —朴素Prim #include<cstring> #include<iostream> #i…...
借助deepseek和vba编程实现一张表格数据转移到多张工作簿的表格中
核心目标 将工作表中的内容按村社名称分类放入对应位置的目标工作簿的第一个工作表的对应位置 deepseek提问方式 你是一个擅长vba编程的专家,核心目标是奖工作表中的部分内容按下列要求写入对应工作簿的第一个工作表中。第一,在工作表A列中筛选出相…...
springboot整合redis实现缓存
一、redis 二、spring boot 整合redis 三、基于注解的Redis缓存实现 使用Cacheable、CachePut、CacheEvict注解定制缓存管理 对CommentService类中的方法进行修改使用Cacheable、CachePut、CacheEvict三个注解定制缓存管理,修改后的方法如下 Cacheable(cacheNam…...
git tag使用场景和实践
背景 每次上线一个迭代,为了区分本次代码的分支是哪个迭代,可以给分支打上tag,这样利于追踪分支所属迭代,如果devops没有自动给分支打tag,需要自己来打 操作 1.查看当前tag git tag2.给分支打tag git tag <tag…...
十分钟恢复服务器攻击——群联AI云防护系统实战
场景描述 服务器遭遇大规模DDoS攻击,导致服务不可用。通过群联AI云防护系统的分布式节点和智能调度功能,快速切换流量至安全节点,清洗恶意流量,10分钟内恢复业务。 技术实现步骤 1. 启用智能调度API触发节点切换 群联系统提供RE…...
国产紫光同创FPGA视频采集转SDI编码输出,基于HSSTHP高速接口,提供2套工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目紫光同创FPGA相关方案推荐本博已有的 SDI 编解码方案本方案在Xilinx--Artix7系列FPGA上的应用本方案在Xilinx--Kintex系列FPGA上的应用本方案在Xilinx--Zynq系列FPGA上…...
最小生成树-prim、kruskal算法
目录 prim算法 kruskal算法 题目练习 (1)AcWing 858. Prim算法求最小生成树 - AcWing (2)859. Kruskal算法求最小生成树 - AcWing题库编辑 学习之前建议温习一下迪杰斯特拉算法和并查集~ 先简单认识下最小生成树:…...
【硬核干货】JetBrains AI Assistant 干货笔记
快进来抄作业,小编呕心沥血整理的 JetBrains AI Assistant 超干货笔记! 原文链接:【硬核干货】JetBrains AI Assistant 干货笔记 关于晓数神州 晓数神州坚持以“客户为中心”的宗旨,为客户提供专业的解决方案和技术服务ÿ…...
强化学习核心原理及数学框架
1. 定义与核心思想 强化学习(Reinforcement Learning, RL)是一种通过智能体(Agent)与环境(Environment)的持续交互来学习最优决策策略的机器学习范式。其核心特征为: 试错学习&#x…...
C# 综合示例 库存管理系统4 classMod类
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 在《库存管理系统》中使用classMod类来保存全局变量。 变量定义和含义,请详见下面的源代码: public class classMod { //数据库路径...
[C] 第6章 C51函数
文章目录 C51函数函数概述从函数定义角度分类从函数有无返回值分类从函数有无参数 函数定义的一般形式C51无参函数的一般形式C51有参函数的一般形式 函数的形式参数和实际参数形式参数实际参数函数的返回值一般形式为: 函数的形参和实参的特点 函数的调用函数的调用…...
docker 配置代理
docker 配置代理有 2 中方法 1.Daemon configuration 直接在 /etc/docker/daemon.json 文件中配置 {"proxies": {"http-proxy": "http://proxy.example.com:3128","https-proxy": "https://proxy.example.com:3129",&quo…...
Redis 深度解析:从核心原理到生产实践
Redis 深度解析:从核心原理到生产实践 一、Redis 核心定位与数据结构 1. 核心能力矩阵深度解析 Redis 作为高性能内存数据库,核心能力覆盖缓存、数据存储、消息中间件等场景,其设计哲学围绕速度优先、内存高效、功能丰富展开: …...
从零搭建高可用分布式限流组件:设计模式与Redis令牌桶实践
一、需求背景与设计目标 在分布式系统中,面对突发流量时需要一种精准可控的流量控制手段。我们的组件需要具备: 多维度限流(用户/IP/服务节点/自定义表达式)分布式环境下精准控制开箱即用的Spring Boot Starter集成高扩展性的架…...
基于霍尔效应传感器的 BLDC 电机梯形控制方案详解
基于霍尔效应传感器的 BLDC 电机梯形控制方案解读 使用霍尔效应传感器的无刷直流(BLDC)电机梯形控制 一、系统核心架构与技术优势 (一)BLDC 电机与霍尔传感器控制原理 BLDC 电机作为永磁同步电机的一种,其核心特征是转子反电动势为梯形波,定子电流为 120 电角度宽度的矩…...
Pikachu靶场-File Inclusion
文件包含漏洞(File Inclusion Vulnerability)是Web应用程序中的一种常见安全漏洞,通常由于开发者未对用户输入进行严格过滤,导致攻击者能够包含并执行恶意文件。这种漏洞主要分为两种类型: 1. 漏洞类型 本地文件包含&a…...
如何模拟黑客攻击(Red Teaming)以测试服务器安全性
模拟黑客攻击(Red Teaming)是评估服务器安全性的有效方法,但需严格遵循**合法授权**和**道德准则**。以下是专业且安全的操作流程: --- ### **1. 前期准备** - **法律授权** - 获得目标系统的**书面授权**,明确测…...
分页查询优惠券
文章目录 概要整体架构流程技术细节小结 概要 接口分析 一个典型的带过滤条件的分页查询,非常简单。按照Restful风格设计即可,我们关注的点有两个: 请求参数 返回值格式 请求参数包含两部分,一个是分页参数,另一…...