- 摄像头 opencv报错 error: (-215) size.width>0 && size.height>0 in function cv::imshow
Vanilla TY
opencv计算机视觉visualstudio
第一次用opencv打开摄像头,发现报错。原因应该是网络摄像头打开时要顿2秒左右进行自检造成。解决方法如下图,给imshow加个if判断。
- `cargo build`报错:`failed to run custom build command for libgit2-sys v0.13.2+1.4.2`
yann_qu
rustcargocargo-cachelinuxconda
cargobuild报错:failedtoruncustombuildcommandforlibgit2-sysv0.13.2+1.4.21问题背景在使用cargo编译cargo-cache时出现报错:Thefollowingwarningswereemittedduringcompilation:warning:
[email protected]+1.4.2:Infileincludedfro
- Xcode 15(iOS17)编译适配报错
孟宪磊mxl
xcodemacoside
报错:Notemplatenamed'unary_function'innamespace'std';didyoumean'__unary_function'?解决:Xcode点击Pods点击BuildSettings点击Basic找到AppleClang-Preprocessing下的PreprocessorMacros添加:_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_
- get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused
LBL1220
监控linuxzabbix
部署zabbix服务端时,查看主机配置。zabbix服务端主机虽然显示已启用,但ZBX字体是红色的。且报错如下:zabbix-Getvaluefromagentfailed:cannotconnectto[[127.0.0.1]:10050]:[111]Connectionrefused意思是agent连接失败1)查看防火墙[root@m01~]#getenforceDisabled[root@m
- pycharm 导入anaconda环境报错:conda executable is not found,error code:1
萧云安
pycharmcondapython
打开pycahrm,点击左上角File->settings点击Projectxxx——>pythoninterpreter——>Addinterpreter点击condaEnviroment,显示condaexecutableisnotfound点击condaexecutable文件夹打开,…所在位置\Anaconda\Library\bin\conda.bat点击loadEnvironment选
- BCrypt.checkpw()报错java.lang.IllegalArgumentException: Invalid salt
玩物丧志汪某人
Java异常参数传递前端开发后端交互明文密文数据库操作
先看一下方法参数,放两个String第一个参数是明文(一般是前端传过来的值),第二个是密文(从数据库取出来的值),各位大聪明们是不是把参数放反了
- vue3项目导入ansi_up报错
夏与冰
常用插件前端javascriptes6
前言也是最近在研究项目里滚动输出log的功能时了解到这个插件的。简介ansi_up是一个轻量级JavaScript库,专为将含有ANSI颜色转义码的文本转换成HTML而设计。无论在浏览器还是Node.js环境中,它都能无缝运行。这个模块以单个ES6JavaScript文件的形式提供,无任何依赖,并且自2011年起已在生产环境稳定使用。安装npmiansi_up在页面中导入import{AnsiUp
- 前端监控之白屏异常
github_35780652
前端监控JavaScript前端javascript监控类
一、意义: 这里和测速的白屏不同,测速的白屏是指:导航页面开始到TTFB之间的时间称之为白屏时间。白屏异常是指:用户看到的一直是白屏,页面没有任何内容。比如渲染函数报错、Vue或React路由页面没有内容、网页加载很慢很慢以至规定的时间范围内一直没内容。 监控白屏异常能发现一些遗漏的bug并及时修复。二、捕获方法: 页面加载后2秒或进入页面后12秒(兼容一些特殊页面不会触发load事件)检查
- MySql插入语句时报错,错误代码1062
SheldonChang
数据库mysqlsqlmybatis数据库
MySql插入语句时报错,错误代码1062mysql工具操作报错程序运行报错Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Duplicateentry‘123456’forkey‘order_number’;Duplicateentry‘123456’forkey‘order_num
- vue3+ts报错:找不到模块“./App.vue”或其相应的类型声明
前端小顾
前端vue.js前端typescript
原因是typescript只能理解.ts文件,不能理解.vue文件第一步在src下新建文件env.d.tsdeclaremodule'*.vue'{importtype{DefineComponent}from'vue'//eslint-disable-next-line@typescript-eslint/no-explicit-any,@typescript-eslint/ban-typesc
- Android基础之-Fragment生命周期详细讲解
DW0113
Fragment生命周期onAttach()这个是回调函数这个时候activity已经传进来了,获得activity的传递的值就可以进行与activity的通信里当然也可以使用getActivity(),前提是这个fragment已经和宿主的activity关联,并且没有脱离他只调用一次。onCreate()系统创建fragment的时候回调他,在他里面实例化一些变量这些个变量主要是:当你暂停停止
- tar命令解压报错“Error is not recoverable: exiting now”
Yana.com
Linux系统运维问题解决服务器
tar命令解压报错:gzip:stdin:invalidcompresseddata--formatviolatedtar:UnexpectedEOFinarchivetar:UnexpectedEOFinarchivetar:Errorisnotrecoverable:exitingnow当使用tarxf命令解压文件时,如果出现"Errorisnotrecoverable:exitingnow"
- npm报错network request to https://registry.npmjs.org/fuse.js failed的解决方法
奔跑吧邓邓子
常见问题解答(FAQ)npm前端node.js
目录一、问题描述二、解决方法一、问题描述执行npminstall报错:npmERR!codeETIMEDOUTnpmERR!errnoETIMEDOUTnpmERR!networkrequesttohttps://registry.npmjs.org/fuse.jsfailed,reason:connectETIMEDOUT104.16.31.34:443npmERR!networkThisisa
- Android 4.4 以下,OkHttp访问Https报错,设置了sslSocketFactory仍无效的解决方法
LuckyTHP
androidokhttphttps
背景Android4.4及以下,使用OkHttp发送Https请求,报以下错误:javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSLhandshakeaborted:ssl=0x6b712c90:FailureinSSLlibrary,usuallyaprotocolerrorerror:1407741
- k8s dial tcp 10.97.0.1:443: i/o timeout
时空无限
Kuberneteskubernetestcp/ip容器
问题使用kubeadm部署完k8s,使用projectcalico/tigera-operator这个chart部署calico,卡在了tigera-operator这个namespace下的podtigera-operator-54b47459dd-n4x72,该pod一直重启,查看该pod日志发现如下报错kubectllogs-ftigera-operator-54b47459dd-4jbwt
- element-ui 日期选择器用value-format 带上“HH:mm:ss”的时候报错
niceLiuSir
ui
1.想用element-ui日期选择器取出“yyyy-MM-ddHH:mm:ss”格式的日期时间数据。2.用value-format带上“HH:mm:ss”的时候报错。3.解决办法:用name属性,取值name即可得到“yyyy-MM-ddHH:mm:ss”格式的日期时间数据。constapp=newVue({el:'#app',data(){return{settleDO}},methods:{
- Docker启动Redis容器时报错WARNING: The TCP backlog setting of 511 cannot be enforced
板凳的爸爸
dockerredistcp/ip
正常使用命令dockerpullredis之后启动dockerrun--namem-redis-p8379:6379-v/data/redis/redis.conf:/usr/local/etc/redis/redis.conf-dredis发现容器并没有启动,于是查看了一下logs[root@localhostredis]#dockerlogsm-redis1:C25Sep202304:03:4
- WARNING Memory overcommit must be enabled! Without it..问题处理
Bestest~
redismemory
文章目录一、问题出现二、解决方式三、补充其它一、问题出现redis容器方式启动报错WARNINGMemoryovercommitmustbeenabled!Withoutit,abackgroundsaveorreplicationmayfailunderlowmemorycondition.Beingdisabled,itcancanalsocausefailureswithoutlowmemo
- iOS克隆代码常规报错修复
数字d
背景:又到了每年一度的工作交接日子,这两天又要送走一位iOS开发同事了,心里唏嘘完毕,乖乖拉取代码,接手工作。1.git常规操作打开命令行打开文件目录cdDesktop克隆代码到本地gitclone'他的代码地址'命令行输入ls,查看当前所在目录的所有文件夹cd'代码在本地的目录'第三方库文件安装podinstall2.command+shift+k直接选真机运行err1.png常规解决方案Tar
- Error: could not open `D:\java8\jre\lib\amd64\jvm.cfg‘
angen2018
javaideajavaintellij-idea
如果报这个错误把系统环境变量里面的path里面的这两个值移到最前面即可D:\java8\jdk\bin;D:\java8\jdk\jre\bin;如果是在idea里面报错,外面的cmd没有报错,那么就在idea里面单独设置一下即可
- Linux中Git推送报错Permissions 0644 for ‘/root/.ssh/id_rsa‘ are too open
秦时明月之君临天下
LinuxGitGitHublinuxgitssh
准备在Linux上配置秘钥,方便Git上传代码到GitHub。但是秘钥(id_rsa文件)是从本地Windows环境上传到Linux服务器上面的,在执行推送时报错了,如下:#gitpush-uoriginmainTheauthenticityofhost'github.com(20.205.243.166)'can'tbeestablished.ECDSAkeyfingerprintisSHA25
- Vue3+Vite 导航与内容div都填了背景,打包的时候,发现直接报错(Rollup failed to resolve import “resource/img/xx.jpg“)的解决
花花鱼
Vue3vue.js
1、先上个打包时报错的图:2、上个一开始的代码:-->上面的代码,在测试的时候,一切都正常的,但是在打包的时候,直接通不过。3、我们来通过定义import解决这个问题:constwordImg=ref('resource/img/word.jpg');说明:也就是我们用ref来包裹一下就可以了,当然这个里的src记住前面加一个:冒号。4、然后我们发现style中的图片打包时,没有报错,但是上传完成
- redis能正常访问,但是springboot编译报错
思想永无止境
JavaEEredisspringboot数据库
redis能正常访问,配置也确定无误,但是springboot编译报错:Failedtobindpropertiesunder‘spring.redis.host’tojava.lang.String原因:我新加了一个类导致:@ConfigurationpublicclassMyConf{@BeanpublicLogAspectlogAspect(){returnnewLogAspect();}}
- UE4 编译Editor的大坑
justmeifen
UE4
1.遇到了UE的坑在编译UE项目的时候是不能用平台宏的,例如#ifdefined(PLATFORM_ANDROID)之类的,虽然是在Mac上编译,他还是会走到这些平台宏里面去。而且报错非常奇葩,根本想不到是平台宏的问题。目前是先把移动平台相关代码注释掉,等编译通过了,再打开注释。。2.使用命令行编译出包的时候,需要先构建UEEditor才可以导出移动平台的包。而构建UEEditor时,要先cd到U
- Win10 Ubuntu子系统(内嵌ubuntu18.04)运行32bit Linux原生程序 解决Exec format error错误
讓丄帝愛伱
linuxubuntudockershell小程序
Win10Ubuntu子系统(内嵌ubuntu18.04)运行32bitLinux原生程序报错:442:./install.sfx.4064:Execformaterror通过readelf-aj2sdk-1_4_2_19-linux-ia64.bin检查程序导出表发现问题readelf命令报错:NotanELFfile-ithasthewrongmagicbytesatthestart初步确定问
- There is no getter for property named 'sn' in 'class java.lang.String'
在下小保
结果selectidfromtableandsn=#{sn}报错的情况只有一个String参数用了<where<iftest标签,没用_parameter没用<iftest,也没用wheresn=#{value}
- No CMAKE_CXX_COMPILER could be found. Tell CMake where to find the compiler by setting either t
%d%d2
linux运维服务器
报错:CMakeErroratCMakeLists.txt:14(project):NoCMAKE_CXX_COMPILERcouldbefound.TellCMakewheretofindthecompilerbysettingeithertheenvironmentvariable"CXX"ortheCMakecacheentryCMAKE_CXX_COMPILERtothefullpatht
- 服务启动不了,显示 config 异常的问题排查
Bryant5051
javadockerspringcloud
文章目录问题详情排查过程1.1查看配置文件是否可以正常加载1.2进入config服务正在运行的容器,查看文件是否存在1.3查看容器运行日志:最后发现是配置文件中多了一个TAB符,唉,说多了都是泪!问题详情出现异常报错:CouldnotlocatePropertySourceandthefailfastpropertyisset,failing排查过程1.1查看配置文件是否可以正常加载查看配置文件是
- pat 自测-5 Shuffling Machine
取名太难保护头发
解题思路:取一个空数组,将我们原先牌的顺序按照给定的顺序放入新的数组中;因为存在多次循环,为了节省空间,所以将str1赋值给str0,这样两个数组就可以完成多次循环。关于scanf报错的问题:忽略scanf的返回值的问题:第一种:可能是确实是输出不符合规定,在做洗牌的题目中就遇到了格式不正确的问题;//第二:怎么解决scanf的问题:if(scanf("%d",&a)){};#include#in
- 使用npm配置vue项目历程
hzw0510
前端开发npmvue.js前端
1、使用npm配置vue项目历程1.1、npm安装项目环境很慢配置国内淘宝镜像npmconfigsetregistryhttps://registry.npm.taobao.org指定国内镜像仓下载软件npminstall-gcnpm--registry=https://registry.npm.taobao.org2.2、报错证书过期清理缓存npmcacheclean--force禁用SSLnp
- 算法 单链的创建与删除
换个号韩国红果果
c算法
先创建结构体
struct student {
int data;
//int tag;//标记这是第几个
struct student *next;
};
// addone 用于将一个数插入已从小到大排好序的链中
struct student *addone(struct student *h,int x){
if(h==NULL) //??????
- 《大型网站系统与Java中间件实践》第2章读后感
白糖_
java中间件
断断续续花了两天时间试读了《大型网站系统与Java中间件实践》的第2章,这章总述了从一个小型单机构建的网站发展到大型网站的演化过程---整个过程会遇到很多困难,但每一个屏障都会有解决方案,最终就是依靠这些个解决方案汇聚到一起组成了一个健壮稳定高效的大型系统。
看完整章内容,
- zeus持久层spring事务单元测试
deng520159
javaDAOspringjdbc
今天把zeus事务单元测试放出来,让大家指出他的毛病,
1.ZeusTransactionTest.java 单元测试
package com.dengliang.zeus.webdemo.test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import
- Rss 订阅 开发
周凡杨
htmlxml订阅rss规范
RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Site Summary的缩写,1.0与2.0走的是两个体系)。
RSS
- 分页查询实现
g21121
分页查询
在查询列表时我们常常会用到分页,分页的好处就是减少数据交换,每次查询一定数量减少数据库压力等等。
按实现形式分前台分页和服务器分页:
前台分页就是一次查询出所有记录,在页面中用js进行虚拟分页,这种形式在数据量较小时优势比较明显,一次加载就不必再访问服务器了,但当数据量较大时会对页面造成压力,传输速度也会大幅下降。
服务器分页就是每次请求相同数量记录,按一定规则排序,每次取一定序号直接的数据
- spring jms异步消息处理
510888780
jms
spring JMS对于异步消息处理基本上只需配置下就能进行高效的处理。其核心就是消息侦听器容器,常用的类就是DefaultMessageListenerContainer。该容器可配置侦听器的并发数量,以及配合MessageListenerAdapter使用消息驱动POJO进行消息处理。且消息驱动POJO是放入TaskExecutor中进行处理,进一步提高性能,减少侦听器的阻塞。具体配置如下:
- highCharts柱状图
布衣凌宇
hightCharts柱图
第一步:导入 exporting.js,grid.js,highcharts.js;第二步:写controller
@Controller@RequestMapping(value="${adminPath}/statistick")public class StatistickController { private UserServi
- 我的spring学习笔记2-IoC(反向控制 依赖注入)
aijuans
springmvcSpring 教程spring3 教程Spring 入门
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
- TLS java简单实现
antlove
javasslkeystoretlssecure
1. SSLServer.java
package ssl;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.KeyStore;
import
- Zip解压压缩文件
百合不是茶
Zip格式解压Zip流的使用文件解压
ZIP文件的解压缩实质上就是从输入流中读取数据。Java.util.zip包提供了类ZipInputStream来读取ZIP文件,下面的代码段创建了一个输入流来读取ZIP格式的文件;
ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
&n
- underscore.js 学习(一)
bijian1013
JavaScriptunderscore
工作中需要用到underscore.js,发现这是一个包括了很多基本功能函数的js库,里面有很多实用的函数。而且它没有扩展 javascript的原生对象。主要涉及对Collection、Object、Array、Function的操作。 学
- java jvm常用命令工具——jstatd命令(Java Statistics Monitoring Daemon)
bijian1013
javajvmjstatd
1.介绍
jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
jstatd是基于RMI的,所以在运行jstatd的服务
- 【Spring框架三】Spring常用注解之Transactional
bit1129
transactional
Spring可以通过注解@Transactional来为业务逻辑层的方法(调用DAO完成持久化动作)添加事务能力,如下是@Transactional注解的定义:
/*
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version
- 我(程序员)的前进方向
bitray
程序员
作为一个普通的程序员,我一直游走在java语言中,java也确实让我有了很多的体会.不过随着学习的深入,java语言的新技术产生的越来越多,从最初期的javase,我逐渐开始转变到ssh,ssi,这种主流的码农,.过了几天为了解决新问题,webservice的大旗也被我祭出来了,又过了些日子jms架构的activemq也开始必须学习了.再后来开始了一系列技术学习,osgi,restful.....
- nginx lua开发经验总结
ronin47
使用nginx lua已经两三个月了,项目接开发完毕了,这几天准备上线并且跟高德地图对接。回顾下来lua在项目中占得必中还是比较大的,跟PHP的占比差不多持平了,因此在开发中遇到一些问题备忘一下 1:content_by_lua中代码容量有限制,一般不要写太多代码,正常编写代码一般在100行左右(具体容量没有细心测哈哈,在4kb左右),如果超出了则重启nginx的时候会报 too long pa
- java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶
bylijinnan
java
import java.util.Stack;
public class ReverseStackRecursive {
/**
* Q 66.颠倒栈。
* 题目:用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。
* 颠倒之后的栈为{5,4,3,2,1},5处在栈顶。
*1. Pop the top element
*2. Revers
- 正确理解Linux内存占用过高的问题
cfyme
linux
Linux开机后,使用top命令查看,4G物理内存发现已使用的多大3.2G,占用率高达80%以上:
Mem: 3889836k total, 3341868k used, 547968k free, 286044k buffers
Swap: 6127608k total,&nb
- [JWFD开源工作流]当前流程引擎设计的一个急需解决的问题
comsci
工作流
当我们的流程引擎进入IRC阶段的时候,当循环反馈模型出现之后,每次循环都会导致一大堆节点内存数据残留在系统内存中,循环的次数越多,这些残留数据将导致系统内存溢出,并使得引擎崩溃。。。。。。
而解决办法就是利用汇编语言或者其它系统编程语言,在引擎运行时,把这些残留数据清除掉。
- 自定义类的equals函数
dai_lm
equals
仅作笔记使用
public class VectorQueue {
private final Vector<VectorItem> queue;
private class VectorItem {
private final Object item;
private final int quantity;
public VectorI
- Linux下安装R语言
datageek
R语言 linux
命令如下:sudo gedit /etc/apt/sources.list1、deb http://mirrors.ustc.edu.cn/CRAN/bin/linux/ubuntu/ precise/ 2、deb http://dk.archive.ubuntu.com/ubuntu hardy universesudo apt-key adv --keyserver ke
- 如何修改mysql 并发数(连接数)最大值
dcj3sjt126com
mysql
MySQL的连接数最大值跟MySQL没关系,主要看系统和业务逻辑了
方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可
方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppass
- 单一功能原则
dcj3sjt126com
面向对象的程序设计软件设计编程原则
单一功能原则[
编辑]
SOLID 原则
单一功能原则
开闭原则
Liskov代换原则
接口隔离原则
依赖反转原则
查
论
编
在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个类都应该有
- POJO、VO和JavaBean区别和联系
fanmingxing
VOPOJOjavabean
POJO和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Plain Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比POJO复杂很多,JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被
- SpringSecurity3.X--LDAP:AD配置
hanqunfeng
SpringSecurity
前面介绍过基于本地数据库验证的方式,参考http://hanqunfeng.iteye.com/blog/1155226,这里说一下如何修改为使用AD进行身份验证【只对用户名和密码进行验证,权限依旧存储在本地数据库中】。
将配置文件中的如下部分删除:
<!-- 认证管理器,使用自定义的UserDetailsService,并对密码采用md5加密-->
- mac mysql 修改密码
IXHONG
mysql
$ sudo /usr/local/mysql/bin/mysqld_safe –user=root & //启动MySQL(也可以通过偏好设置面板来启动)$ sudo /usr/local/mysql/bin/mysqladmin -uroot password yourpassword //设置MySQL密码(注意,这是第一次MySQL密码为空的时候的设置命令,如果是修改密码,还需在-
- 设计模式--抽象工厂模式
kerryg
设计模式
抽象工厂模式:
工厂模式有一个问题就是,类的创建依赖于工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。我们采用抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
总结:这个模式的好处就是,如果想增加一个功能,就需要做一个实现类,
- 评"高中女生军训期跳楼”
nannan408
首先,先抛出我的观点,各位看官少点砖头。那就是,中国的差异化教育必须做起来。
孔圣人有云:有教无类。不同类型的人,都应该有对应的教育方法。目前中国的一体化教育,不知道已经扼杀了多少创造性人才。我们出不了爱迪生,出不了爱因斯坦,很大原因,是我们的培养思路错了,我们是第一要“顺从”。如果不顺从,我们的学校,就会用各种方法,罚站,罚写作业,各种罚。军
- scala如何读取和写入文件内容?
qindongliang1922
javajvmscala
直接看如下代码:
package file
import java.io.RandomAccessFile
import java.nio.charset.Charset
import scala.io.Source
import scala.reflect.io.{File, Path}
/**
* Created by qindongliang on 2015/
- C语言算法之百元买百鸡
qiufeihu
c算法
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁,母,雏各几何?
代码如下:
#include <stdio.h>
int main()
{
int cock,hen,chick; /*定义变量为基本整型*/
for(coc
- Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详细介绍AvatarNode
wyz2009107220
NameNode
正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋。本文讨论一下为了解决这个问题而存在的几个solution。
1. Secondary NameNode
原理:Secondary NN会定期的从NN中读取editlog,与自己存储的Image进行合并形成新的metadata image
优点:Hadoop较早的版本都自带,