Redis 哨兵 (sentinel)
是什么
官网理论:https://redis.io/docs/management/sentinel/
吹哨人巡查监控后台 master 主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务。
作用:无人值守运维
哨兵的作用:
1、监控redis运行状态,包括master和slave
2、当master down机,能自动将slave切换成新master
能干嘛
主从监控:监控主从 redis 库运行是否正常
消息通知:哨兵可以将故障转移的结果发送给客户端
故障转移:如果Master异常,则会进行主从切换,将其中一个Slave作为新Master
配置中心:客户端通过连接哨兵来获得当前Redis服务的主节点地址
案例演示及步骤
前提说明
案例需要实现的 Redis Sentinel 架构
3个哨兵:自动监控和维护集群,不存放数据,只是吹哨人
1主2从:用于数据读取和存放
配置文件参数说明
先看看目录下默认的sentinel.conf文件的内容
重点参数项说明
bind:服务监听地址,用于客户端连接,默认本机地址
daemonize:是否以后台daemon方式运行
protected-mode:安全保护模式
port:端口
logfile:日志文件路径
pidfile:pid文件路径
dir:工作目录
下面两个标红的表示重要
sentinel monitor <master-name> <ip> <redis-port> <quorum>
设置要监控的master服务器,quorum表示最少有几个哨兵认可客观下线,同意故障迁移的法定票数。
行尾最后的quorum代表什么意思呢?quorum:确认客观下线的最少的哨兵数量。
我们知道,网络是不可靠的,有时候一个sentinel会因为网络堵塞而误以为一个master redis已经死掉了,在sentinel集群环境下需要多个sentinel互相沟通来确认某个master是否真的死了,quorum这个参数是进行客观下线的一个依据,意思是至少有quorum个sentinel认为这个master有故障,才会对这个master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因,导致无法连接master,而此时master并没有出现故障,所以,这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。
sentinel auth-pass <master-name> <password>
master设置了密码,连接master服务的密码
其它
sentinel down-after-milliseconds <master-name> <milliseconds>:
指定多少毫秒之后,主节点没有应答哨兵,此时哨兵主观上认为主节点下线
sentinel parallel-syncs <master-name> <nums>:
表示允许并行同步的slave个数,当Master挂了后,哨兵会选出新的Master,此时,剩余的slave会向新的master发起同步数据
sentinel failover-timeout <master-name> <milliseconds>:
故障转移的超时时间,进行故障转移时,如果超过设置的毫秒,表示故障转移失败
sentinel notification-script <master-name> <script-path> :
配置当某一事件发生时所需要执行的脚本
sentinel client-reconfig-script <master-name> <script-path>:
客户端重新配置主节点参数脚本
案例步骤
在目录下新建或者拷贝sentinel.conf文件,名字绝不能错,配置三个哨兵。
配置sentinel文件
sentinel26379.conf
bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
logfile "/myredis/sentinel26379.log"
pidfile /var/run/redis-sentinel26379.pid
dir /myredis
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111
sentinel26380.conf
bind 0.0.0.0
daemonize yes
protected-mode no
port 26380
logfile "/myredis/sentinel26380.log"
pidfile /var/run/redis-sentinel26380.pid
dir "/myredis"
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111
sentinel26381.conf
bind 0.0.0.0
daemonize yes
protected-mode no
port 26381
logfile "/myredis/sentinel26381.log"
pidfile /var/run/redis-sentinel26381.pid
dir "/myredis"
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111
看一眼sentinel26379.conf、sentinel26380.conf、sentinel26381.conf我们填写的内容
配置Redis
具体配置查看:Redis复制 (replica)_Please Sit Down的博客-CSDN博客
一主二从3个redis实例,测试正常的主从复制。
- 169机器上新建redis6379.conf配置文件,由于要配合本次案例,请设置masterauth项访问密码为111111,不然后续可能报错master_link_status:down
- 172机器上新建redis6380.conf配置文件,设置好replicaof <masterip> <masterport>
- 173机器上新建redis6381.conf配置文件,设置好replicaof <masterip> <masterport>
启动Redis并连接:
启动:redis-server redis6379.conf
连接:redis-cli -a 111111 -p 6379
启动:redis-server redis6380.conf
连接:redis-cli -a 111111 -p 6380
启动:redis-server redis6381.conf
连接:redis-cli -a 111111 -p 6381
启动sentinel
redis-server sentinel26379.conf --sentinel
redis-server sentinel26380.conf --sentinel
redis-server sentinel26381.conf --sentinel
或
redis-sentinel sentinel26379.conf --sentinel
redis-sentinel sentinel26380.conf --sentinel
redis-sentinel sentinel26381.conf --sentinel
启动后查看启动实例信息:
测试sentinel
我们自己手动关闭6379服务器,模拟master挂了
三个问题:
- 两台从机数据是否OK?
结果:数据OK
主节点下线后从节点获取数据会出现两个小问题
两种问题都一样,都是broken pipe造成的;pipe是管道的意思,管道里面是数据流,通常是从文件或网络套接字读取的数据。当该管道从另一端突然关闭时,会发生数据突然中断,即是broken,对于socket来说,可能是网络被拔出或另一端的进程崩溃。
解决问题:其实当该异常产生的时候,对于服务端来说,并没有多少影响。因为可能是某个客户端突然中止了进程导致了该错误。
总结 Broken Pipe:这个异常是客户端读取超时关闭了连接,这时候服务器端再向客户端已经断开的连接写数据时就发生了broken pipe异常!
- 是否会从剩下的2台机器上选出新的master
结果:投票新选
查看日志文件:
sentinel26379.log
sentinel26380.log
sentinel26381.log
- 之前down机的master机器重启回来,谁将会是新老大?会不会双master冲突?
本次案例6381选为新的master,查看信息
以前的6379从master降级变成了slave
结果:6380还是slave,只不过换了个新老大6381(6379变6381),6380还是slave
配置文件变化
文件的内容,在运行期间会被sentinel动态进行更改。
Master--Slave 切换后,master redis.conf、slave redis.conf 和 sentinel..conf 的内容都会发生改变,即 master中redis.conf中会多一行slave of的配置,sentinel.conf的监控目标会随之调换。
redis6379.conf
哨兵运行流程和选举原理
当一个主从配置中的 master 失效之后,sentinel 可以选举出一个新的 master 用于自动接替原 master 的工作,主从配置中的其他 redis 服务器自动指向新的 master 同步数据。
一般建议 sentinel 采取奇数台,防止某一台 sentinel 无法连接到 master 导致误切换。
运行流程
首先三个哨兵监控一主二从,正常运行;结构如下:
1、SDown主观下线(Subjectively Down)
SDOWN(主观不可用)是单个sentinel自己主观上检测到的关于master的状态,从sentinel的角度来看,如果发送了PING心跳后,在一定时间内没有收到合法的回复,就达到了SDOWN的条件。
sentinel配置文件中的down-after-milliseconds设置了判断主观下线的时间长度。
说明:所谓主观下线(Subjectively Down, 简称 SDOWN)指的是单个Sentinel实例对服务器做出的下线判断,即单个sentinel认为某个服务下线(有可能是接收不到订阅,之间的网络不通等等原因)。主观下线就是说如果服务器在[sentinel down-after-milliseconds]给定的毫秒数之内没有回应PING命令或者返回一个错误消息, 那么这个Sentinel会主观的(单方面的)认为这个master不可以用了,o(╥﹏╥)o
sentinel down-after-milliseconds <masterName> <timeout>
表示master被当前sentinel实例认定为失效的间隔时间,这个配置其实就是进行主观下线的一个依据;master在多长时间内一直没有给Sentine返回有效信息,则认定该master主观下线。也就是说如果多久没联系上redis-servevr,认为这个redis-server进入到失效(SDOWN)状态。
2、ODown客观下线(Objectively Down)
ODOWN需要一定数量的sentinel,多个哨兵达成一致意见才能认为一个master客观上已经宕掉
说明:
四个参数含义:
masterName 是对某个 master+slave 组合的一个区分标识(一套 sentinel 可以监听多组master+slave这样的组合)
quorum这个参数是进行客观下线的一个依据,法定人数/法定票数(重要参数)
意思是至少有quorum个sentinel认为这个master有故障才会对这个master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因导致无法连接master,而此时master并没有出现故障,所以这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。
3、选举出领导者哨兵(哨兵中选出兵王)
当主节点被判断客观下线以后,各个哨兵节点会进行协商,先选举出一个领导者哨兵节点(兵王)并由该领导者节点,也即被选举出的兵王进行failover(故障迁移)
3哨兵日志文件分析:
sentinel26379.log
sentinel26380.log
注:本次是选举出26380位leader进行推选。
sentinel26381.log
哨兵领导者,兵王如何选出来的?
答案:Raft算法
原理是监视该主节点的所有哨兵都有可能被选为领导者,选举使用的算法是Raft算法;Raft算法的基本思路是先到先得:即在一轮选举中,哨兵A向B发送成为领导者的申请,如果B没有同意过其他哨兵,则会同意A成为领导者
4、由兵王开始推动故障切换流程并选出一个新master
步骤一:新主登基
某个Slave被选中成为新Master
选出新master的规则,剩余slave节点健康前提下进行选举:
a、redis.conf文件中,优先级slave-priority或者replica-priority最高的从节点(数字越小优先级越高)
b、复制偏移位置 offset 最大的从节点
c、最小Run ID的从节点:字典顺序,ASCII码
步骤二:群臣俯首
朝天子一朝臣,换个码头重新拜
- 执行slaveof no one命令让选出来的从节点成为新的主节点,并通过slaveof命令让其他节点成为其从节点
- Sentinel leader会对选举出的新master执行slaveof no one操作,将其提升为master节点
- Sentinel leader向其它slave发送命令,让剩余的slave成为新的master节点的slave
步骤三:旧主拜服
老master回来也认怂
- 将之前已下线的老master设置为新选出的新master的从节点,当老master重新上线后,它会成为新naster的从节点
- Sentinel leader会让原来的naster降级为slave并恢复正常工作
小总结:上述的failover操作均由sentinel自己独自完成,完全无需人工干预。
哨兵使用建议
- 哨兵节点的数量应为多个,哨兵本身应该集群,保证高可用
- 哨兵节点的数量应该是奇数
- 各个哨兵节点的配置应一致
- 如果哨兵节点部署在Docker等容器里面,尤其要注意端口的正确映射
- 哨兵集群+主从复制,并不能保证数据零丢失
相关文章:
![](https://img-blog.csdnimg.cn/c1e8497344504413a2e9e4ca520e451f.png)
Redis 哨兵 (sentinel)
是什么 官网理论:https://redis.io/docs/management/sentinel/ 吹哨人巡查监控后台 master 主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务。 作用:无人值守运维 哨兵的作用: 1…...
![](https://www.ngui.cc/images/no-images.jpg)
统计2021年10月每个退货率不大于0.5的商品各项指标
统计2021年10月每个退货率不大于0.5的商品各项指标_牛客题霸_牛客网s mysql(ifnull): select product_id, format(ifnull(sum(if_click)/nullif(count(*),0),0),3) as ctr, format(ifnull(sum(if_cart)/nullif(sum(if_click),0),0),3) as c…...
![](https://img-blog.csdnimg.cn/5d575cb7485a4b4982cac4f937c51e8b.png)
【小波尺度谱】从分段离散小波变换计算小波尺度谱研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
![](https://img-blog.csdnimg.cn/b13138e30de74eb5b9164375953f7c14.png)
UE5、CesiumForUnreal加载无高度地形
文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 在UE5中,CesiumForUnreal插件默认的地形都是带高度的,这里加载没有高度的地形,即大地高程为0,GIF动图如下: 2.实现过程 参考官方的教程,下载无高度的DEM,再切片加载到UE中。 (1)下载无高度地形DEM0。 在官方帖子…...
![](https://www.ngui.cc/images/no-images.jpg)
关于Spring中的@Configuration中的proxyBeanMethods属性
Configuration的proxyBeanMethods属性 在Configuration注解中,有两个属性: value配置Bean名称proxyBeanMethos,默认是true 这个proxyBeanMethods的默认属性是true。 直接说:当Configuration注解的proxyBeanMeathods属性是true…...
![](https://www.ngui.cc/images/no-images.jpg)
dp1,ACM暑期培训
D - 摆花 P1077 [NOIP2012 普及组] 摆花 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Description 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花&…...
![](https://img-blog.csdnimg.cn/img_convert/33eca9fda70e3e6243b4e0c380dcd8bd.png)
大厂程序员的水平比非大厂高很多嘛?
最近一个月,筛选了一百多份简历,前前后后面试了二三十人,基本上都是有大厂经历的人。同时,也录用了几个有大厂经历的。但整体而言,打破了对大厂出来的都是优质人才的幻觉。看到的实际情况与想象中的落差还是比较大的。…...
![](https://img-blog.csdnimg.cn/img_convert/ca51fe1ccdd344a9d6714721500e47fc.png)
Java开发工具MyEclipse发布v2023.1.2,今年第二个修复版!
MyEclipse一次性提供了巨量的Eclipse插件库,无需学习任何新的开发语言和工具,便可在一体化的IDE下进行Java EE、Web和PhoneGap移动应用的开发;强大的智能代码补齐功能,让企业开发化繁为简。 MyEclipse v2023.1.2官方正式版下载 …...
![](https://img-blog.csdnimg.cn/9b6f46d4ced14b5d94cb18f81fdc55ce.jpeg)
基于正交滤波器组的语音DPCM编解码算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........................................................g0zeros(1,lenH); g1zeros(1,l…...
![](https://img-blog.csdnimg.cn/0d7f0587db0e46cda8d65f4f7d2306c6.bmp)
VS2022和QT混合编程打包发布程序
1.在开始菜单输入 CMD 找到 Qt5.15.2(MSVC 64-bit) 2.输入windeployqt exe所在路径 3.运行完毕后,双击打开exe文件,可能会报错,缺少相关的dll,找到缺少的dll拷贝到运行文件夹下即可。...
![](https://img-blog.csdnimg.cn/d40ba3019e2544fb9f7e4c4a696018a9.png#pic_center)
Filebeat学习笔记
Filebeat基本概念 简介 Filebeat是一种轻量级日志采集器,内置有多种模块(auditd、Apache、Nginx、System、MySQL等),针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点&#…...
![](https://www.ngui.cc/images/no-images.jpg)
【实战】 九、深入React 状态管理与Redux机制(一) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十六)
文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...
![](https://www.ngui.cc/images/no-images.jpg)
第九十五回 如何使用dio的转换器
文章目录 概念介绍使用方法使用默认的转换器自定义转换器 示例代码经验分享 我们在上一章回中介绍了"如何打造一个网络框架"相关的内容,本章回中将介绍 如何使用dio的转换器.闲话休提,让我们一起Talk Flutter吧。 概念介绍 转换器主要用来转…...
![](https://img-blog.csdnimg.cn/img_convert/c728ee90f79001251241436617f7c74d.jpeg)
Python深度学习“四大名著”之一【赠书活动|第二期《Python机器学习:基于PyTorch和Scikit-Learn》】
近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从AlexNet模型在2012年ImageNet大赛被提出以来,机器学习和深度学习迅猛发展,取…...
![](https://img-blog.csdnimg.cn/81eba3a0aef14fd6989c344e29725d25.png)
RAID相关知识
简介 RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑磁盘,从而提高硬盘的读写性能和数据安全性。 数据组织形式 分块&#x…...
![](https://img-blog.csdnimg.cn/62f40dd573af4afd9d1eb8180686f4bd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHRNYW1iYQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
DataStructure--Basic
程序设计数据结构算法 只谈数据结构不谈算法就跟去话剧院看梁山伯与祝英台结果只有梁山伯在演,祝英台生病了没来一样。 本文的所有内容都出自《大话数据结构》这本书中的代码实现部分,建议看书,书中比我本文写的全。 数据结构,直…...
![](https://img-blog.csdnimg.cn/70a4c515de544114b5767ae9e737e924.png)
Intellij IDEA 双击启动报错ClassNotFoundException: com.licel.b.z@
项目场景: 新从官网下载了ideaIU-2023.2.win.zip ,安装后双击启动报错, 无法运行idea, 提示信息如下 问题描述 Internal error. Please refer to https://jb.gg/ide/critical-startup-errorsjava.lang.ExceptionInInitializerErrorat java…...
![](https://img-blog.csdnimg.cn/1894be3719c047a1a08f4571dd05dd71.png)
使用 Logstash 及 enrich processor 实现数据丰富自动化
在我之前的文章: Elasticsearch:enrich processor (7.5发行版新功能) Elasticsearch:使用 Elasticsearch ingest pipeline 丰富数据 通过上面的两篇文章的介绍,我们应该充分掌握了如何使用 enrich proce…...
![](https://img-blog.csdnimg.cn/6069c7d6e03143ef88bb37995b5bf0f1.png)
Django模板语法和请求
1、在django关于模板文件加载顺序 创建的django项目下会有一个seeetings.py的文件 如果在seeetings.py 中加了 os.path.join(BASE_DIR,‘templates’),如果是pycharm创建的django项目会加上,就会默认先去根目录找templates目录下的html文件,…...
![](https://img-blog.csdnimg.cn/img_convert/bc189a239d539b36699b78c4ea177cbf.webp?x-oss-process=image/format,png)
Android跨进程传大图思考及实现——附上原理分析
1.抛一个问题 这一天,法海想锻炼小青的定力,由于Bitmap也是一个Parcelable类型的数据,法海想通过Intent给小青传个特别大的图片 intent.putExtra("myBitmap",fhBitmap)如果“法海”(Activity)使用Intent去传递一个大的Bitmap给“…...
![](https://img-blog.csdnimg.cn/a902d61049294760891e7bfdb7c3e9ad.png)
【动态规划part13】| 300.最长递增子序列、674.最长连续递增序列、718.最长重复数组
目录 🎈LeetCode 300.最长递增子序列 🎈LeetCode 674. 最长连续递增序列 🎈LeetCode 718. 最长重复子数组 🎈LeetCode 300.最长递增子序列 链接:300.最长递增子序列 给你一个整数数组 nums ,找到其…...
![](https://img-blog.csdnimg.cn/7539da8879554dd5a56170dc34443512.png#pic_center)
QMainWindow
文章目录 QMainWindow基本元素QMainWindow函数介绍简单的示例效果图 QMainWindow QMainWindow是一个为用户提供主窗口程序 的类,包含一个菜单栏(menu bar)、多个工具栏 (tool bars)、多个锚接部件(dock widgets)、―个 状态栏(status bar )及一个中心部件(central …...
![](https://img-blog.csdnimg.cn/5c484a35c536427ea558f9f5b7002a38.png)
PV操作解决经典进程同步问题
一.经典同步问题 在学习《操作系统》时,会接触到进程的概念,其中不可避免的接触到进程同步问题,今天我们用熟悉的PV操作解决一些经典的进程同步问题。 二.生产者-消费者问题 1.问题描述 问题描述:一组生产者进程和一组消费者进…...
![](https://img-blog.csdnimg.cn/5d2c62993bf248479efa38374cc92d54.jpeg)
一文3000字从0到1使用Selenium进行自动化测试
对于很多刚入门的测试新手来说,大家都将自动化测试作为自己职业发展的一个主要阶段。可是,在成为一名合格的自动化测试工程师之前,我们不仅要掌握相应的理论知识,还要进行大量的实践,积累足够的经验,以便快…...
![](https://img-blog.csdnimg.cn/img_convert/7a9f4c72702309c55218ad3278b6dcbe.jpeg)
基于开源IM即时通讯框架MobileIMSDK:RainbowChat v9.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。 工程开源地址是&am…...
![](https://img-blog.csdnimg.cn/5b73091b18fc46d78dc885f7d1d70551.png)
交叉编译----宿主机x86 ubuntu 64位-目标机ARMv8 aarch64
1.交叉编译是什么,为什么要交叉编译 编译:在一个平台上生成在该平台上的可执行代码交叉编译:在一个平台上生成在另一个平台上的可执行代码交叉编译的例子:如51单片机的可执行代码(hex文件)是在集成环境kei…...
![](https://img-blog.csdnimg.cn/994162f875ce41dfb970b0db28e920de.jpeg)
安防监控视频汇聚平台EasyCVR修改录像计划等待时间较长是什么原因?
安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…...
![](https://www.ngui.cc/images/no-images.jpg)
深度学习调参指南
1. 选择合适的模型架构 模型的结构(层数和宽度),参数配置,尽量用已经有效的模型 2. 选择优化器 针对具体的问题,从选择常用的优化器开始,进行比较 3. 选择BatchSize 1). Batch Size决定训练速度,但是不影响验证集…...
![](https://www.ngui.cc/images/no-images.jpg)
MYSQL 优化常用方法
1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可…...
![](https://img-blog.csdnimg.cn/img_convert/2c302f6137865f75a2ec306f5d620806.png)
isp调试工具环境搭建及其介绍!
一、isp调试环境搭建: 后期调试isp,是在rv1126提供的RKISP2.x Tuner工具上进行调试,所以我们大前提必须要把这个环境和一些操作先搞熟悉来,后面有一些专用术语,我们遇到了再去看,现在专门看一些专用术语&am…...
网站建设目的确定/谷歌官方网站首页
Gogs使用介绍 Gogs是一款类似Github(国内有码市)的开源文件/代码管理系统(基于Git) 目前功能基本介绍远程代码仓库管理代码仓库权限分配、管理团队管理代码审查 (1)注册(2)基本功能介绍 主面板说明图中1表示自己个人账户下的仓库&…...
![](/images/no-images.jpg)
翻硬币网站怎么做/软文发布公司
# 继承 继承 # 1、类、超类&子类 Java中使用extends关键字表示继承 关键字extends表明正在构造的新类派生于一个已存在的类。这个已存在的类称为超类(super class)、基类(base class)、或父类(parent class);新类称为子类(subclass)、派生类(derived class)或…...
![](/images/no-images.jpg)
广州网站制作怎样/国内重大新闻十条
sqoop是一个能把数据在关系型数据库和HDFS之间互相传输的工具。在这里,我写一下用java程序来实现sqoop把数据从HDFS写入到MYSQL。在接触sqoop之前,我自己写了一个传输类来实现数据从HDFS到MYSQL。这里简单说一下时间的思想:1、在MYSQL中创建一个参数表A&…...
![](https://img-blog.csdnimg.cn/20191206172520911.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNjQ3NDgwOQ==,size_16,color_FFFFFF,t_70)
怎样做淘宝网站/google框架三件套
论文地址: https://arxiv.org/abs/1906.04358 项目及代码地址: https://weightagnostic.github.io/ 目录 一、概览 1.1 贡献点 1.2 背景 二、方法 2.1 本文做法 2.2 相关工作 2.3 方法 网络结构搜寻 结构搜索 Topology search 2.4 性能与复…...
![](/images/no-images.jpg)
我的世界怎么做神器官方网站/超级外链推广
读书笔记 -- Hystrix 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本) 点击进入 熔断器作用:防止“雪崩”效应。 雪崩效应:服务与服务之间的依赖性,故障会传播,会对整个微服务系统造…...
![](/images/no-images.jpg)
wordpress多站点功能/免费收录软文网站
步骤:1.创建一个Java项目; 2.右击该项目->Myeclipse->Add Spring Capabilites 3.打开一个对话框,Spring版本可以随意选最好选一个不太新,也不太旧; 4.假如选了Spring 3.1版本,然后在下面选择spring3.1Core Libraries和Spring 3.1Persistence Li…...