- spring整合hibernate最基础的方式
木木ainiks
hibernatespringjava
1创建文件,可以创建web文件目录2导入jar包,需要导全,我就是jar没导全,后面怎么运行都不对3配置applicationContext.xml<beanid="sessionFactory"
- Hibernate Session在项目中的创建方式
jingde528
Hibernatejavahibernate前端java
创建一个单例模式工具类,再通过在Hibernate配置文件中开启Session的线程管理模式的方法单例模式工具类packagetest.hibernate.spring.dao;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.boot.MetadataSources;importo
- mysql jdbc批量更新_Hibernate+JDBC实现批量插入、更新及删除的方法详解
weixin_39524147
mysqljdbc批量更新
本文实例讲述了HibernateJDBC实现批量插入、更新及删除的方法。分享给大家供大家参考,具体如下:一、批量插入(两种方式)1.通过Hibernate缓存如果这样写代码进行批量插入(初始设想):packagecom.anlw.util;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hiberna
- 请解释Hibernate中的SessionFactory、Session和Transaction的作用。在Hibernate中,如何配置实体类与数据库表的映射关系?
AaronWang94
java数据库hibernateoracle
请解释Hibernate中的SessionFactory、Session和Transaction的作用。在Hibernate中,SessionFactory、Session和Transaction都是非常重要的组件,它们各自扮演着不同的角色,共同协作以完成数据库操作。SessionFactorySessionFactory是Hibernate框架的核心接口,它的主要作用包括:创建Session对象
- MySQL的原生API实现插入数据后在可视化工具上不显示的问题解决
LangForOne
经验分享数据库mysql数据库java
显示表中有两行数据,该表也设置了主键和唯一索引点进表里看却没有数据问题原因出现在这里,虽然很多常用的数据库连接池都会开启自动提交,但ibatis的SqlSession使用sessionFactory.openSession()创建时,默认的自动提交是false,点开源码就会发现:所以我们将代码改成SqlSessionsession=sessionFactory.openSession(true),
- SpringBoot使用druid+mybatis配置多数据源
约定喵
笔记mybatisspringbootjava
SpringBoot使用druid+mybatis配置多数据源配置文件数据源配置类数据源1数据源2Mapper使用额外:通俗易懂理清mybatis中SqlSession、SqlSessionTemplate、SessionFactory和SqlSessionFactoryBean之间的关系配置文件spring:datasource:#数据源1test1:url:jdbc:mysql://local
- hibernate4与3使用annotation在配置文件中的区别
千奇百怪的漫长旅行
java
让hibernate4与3在配置文件中的区别有几点:1、获取sessionfactory的方式:在hibernate3中获取sessionfactory的方式:在hibernate4中则是使用这种方式:2、事物的使用:hibernate3:hibernate4:3、使用缓存机制:hibernate3:threadhibernate4:org.springframework.orm.hibernat
- Hibernate 4 升级到 Hibernate 5 的时候 SessionFactory 不能使用
HoneyMoose
在Hibernate4升级到5的时候老的sessionFactory出现错误。publicstaticSessionFactoryinitSession(){Configurationconfiguration=newConfiguration();configuration.configure();serviceRegistry=newStandardServiceRegistryBuilder
- spring+mybatis整合的三种方式——方式二:采用org.mybatis.spring.SqlSessionTemplate
进击的蜗牛1212
后端Javaspringmybatis
2、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate。mybatis中,sessionFactory可由SqlSessionFactoryBuilder.来创建。MyBatis-Spring中,使用了SqlSessionFactoryBean来替代。SqlSessionFactoryB
- mybatis主要流程和高阶用法简介
一梦无痕bzy
mysbatismybatis
这里是引用一、主要流程1、通过解析两个xml文件,将他们共同变成一个configuration对象。不同的mapper.xml生成不同的configuration对象2、通过configuration创建sessionFactory对象3、再由sessionFactory生成sqlsession对象。它包含一组statement,可以理解为一个方法就是一个会话4、statement是核心,一次sq
- hibernate入门笔记
back2childhood
java杂文hibernate笔记java
如何使用导入依赖mysqlmysql-connector-java8.0.19org.hibernatehibernate-core5.4.10.Finalorg.projectlomboklombok1.18.10创建hibernate配置文件SessionFactory:针对单个数据库映射经过编译的内存镜像⽂件,将数据库转换为⼀个Java可以识别的镜像⽂件。构建SessionFactory⾮常
- 【设计模式】常见设计模式
王二牛放小
java设计模式设计模式
最近依然在应对面试,有人问到设计模式的题目,之前自己看过,但是都忘记了,现在整理一下。1.单例模式有时,允许自由创建某个类的实例没有意义,反而可能会导致系统性能下降。例如:数据库引擎访问点、Hibernate的SessionFactory都只需要一个实例即可,此时可以使用单例模式。如果一个类始终只能创建一个实例,则称这个类为单例类,这种模式为单例模式。Spring中框架中可以直接在配置时通过制定s
- Hibernate XML配置解析 - SessionFactory配置
程序员王也
hibernatexmljava
引言Hibernate是一个广泛使用的JavaORM(对象关系映射)框架,用于简化Java应用程序与数据库之间的交互。在使用Hibernate时,配置SessionFactory是必不可少的一步,它负责管理数据库连接和提供会话对象。本文将深入介绍HibernateXML配置中SessionFactory的配置,结合实际项目中的应用场景进行说明。HibernateXML配置概述Hibernate配置
- AbstractRoutingDataSource动态数据源切换
巧笑情兮_美目盼兮
这篇文章就直接引用AbstractRoutingDataSource动态数据源切换:https://blog.csdn.net/u012881904/article/details/77449710,望博主看到多包涵,我已经给了原文地址啦!操作数据一般都是在DAO层进行处理,可以选择直接使用JDBC进行编程或者是使用多个DataSource然后创建多个SessionFactory,在使用Dao层的
- ssh框架原理及流程
WeChat——E
ssh服务器运维开发语言
1.hibernate工作原理:读取并解析配置文件读取并解析映射信息,创建sessionFactory打开session创建事务transaction持久化操作提交事务关闭session关闭sessionFactory为什么使用:对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码是一个基于jdbc的主流持久性框架,一个优秀的ORM实现,很大程度上简化了DAO层的编码工作使用J
- 谈谈Hibernate的缓存
AlphaFinance
JAVA缓存hibernatejava
Hibernate支持两级缓存,一级缓存是Session级别的缓存,存储在Session对象中,可以减少数据库访问次数,提高性能。二级缓存是SessionFactory级别的缓存,存储在SessionFactory对象中,可以在多个Session之间共享数据,进一步减少数据库访问次数。一、缓存对象不同:Session级别的缓存只能缓存不可变对象,例如字符串、数字等。而SessionFactory级
- ssh框架原理及流程
WeChat——E
ssh运维
1.hibernate工作原理:读取并解析配置文件读取并解析映射信息,创建sessionFactory打开session创建事务transaction持久化操作提交事务关闭session关闭sessionFactory为什么使用:对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码是一个基于jdbc的主流持久性框架,一个优秀的ORM实现,很大程度上简化了DAO层的编码工作使用J
- ssh框架原理及流程
WeChat——E
开发语言服务器运维
1.hibernate工作原理:读取并解析配置文件读取并解析映射信息,创建sessionFactory打开session创建事务transaction持久化操作提交事务关闭session关闭sessionFactory为什么使用:对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码是一个基于jdbc的主流持久性框架,一个优秀的ORM实现,很大程度上简化了DAO层的编码工作使用J
- Java设计模式系列:单例设计模式
Code技术分享
java设计模式单例模式
Java设计模式系列:单例设计模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够
- 深入MyBatis 源码解析MyBatis如何解析配置?(二)
java高级架构F六
一般来说,我们使用MyBatis的时候,都会通过SqlSessionBuilder来获取SessionFactory,而通过源码我们可以发现,XML配置文件的解析便是在这里开始的。sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader);主要代码如下:publicSqlSessionFactorybuild(Readerreader
- Hibernate缓存
kanghui666
hibernate多数据源数据库框架缓存
一、Hibernate缓存概述Hibernate中提供两个级别的缓存,一级缓存和二级缓存。1.一级缓存是Session级别的缓存,它属于事物范围的缓存,一级缓存有hibernate进行管理。2.二级缓存是sessionFactory级别的缓存,它属于进程范围的缓存,二级缓存又可分为"内置缓存"和"外置缓存",内置缓存:是hibernate在创建sessionFactory时会加载.hbn.xml文
- 23种设计模式-单例模式
俺是农村的
设计模式设计模式单例模式java
概念:所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这是就会使用到单例模式。理解
- 一文详解单例模式以及原理分析
小熊学Java
日常单例模式java设计模式
1、单例模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这是就会使用到单例
- mysql用中文查询不到结果_Mysql 通过中文查询数据查不出结果问题
weixin_39972151
mysql用中文查询不到结果
与数据为字符编码有关。若编码设置得不当,就会出现查不出结果。如packageorg.hbyx.bean;importjava.util.ArrayList;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.SessionFactory;publicclassD
- Mybatis学习
grin : (0~.~0)
java开发语言
一、1.第一个mybatis程序层层递进,SqlSession用来执行sql语句,SqlSession是与数据库的一次会话。通过SqlSessionFactory获取SqlSession通过SqlSessionBuilder的build()方法获取SessionFactory2.第一个程序就找了30分钟的错(悲惨)核心配置文件配错了,把在写url时,把url多加了一个斜杠写一个斜杠就行,下方是正确
- javaEE面试重点
network_boy
Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭SesstionFactory为什么要用:*对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。*Hibernate是一个基于JDBC的主流持
- hibernate源码(1)--- schema创建
夜里慢慢行456
javahibernatejava后端
sessionFactory配置项:hibernate的核心是sessionFactory,那我们看看如何构建sessionFactory。参考官网:plugins{id("java")}group="com.atai.hibernatespy"version="1.0-SNAPSHOT"repositories{mavenCentral()}dependencies{//theGOATORMim
- Spring—Framework学习笔记之Spring整合Mybatis
隔壁三石哥
Java-Springmybatisspringjava
整合思路Spring和Mybatis都是框架,那么两者联合使用的话究竟是Mybatis接管Spring呢还是Spring接管Mybatis呢?Mybatis框架是一个持久层的ORM框架,而Spring是一个综合性的框架,所以两者的整合就是将Spring框架接管Mybatis中的SessionFactory工厂的创建,同时再通过读取mapper配置内容创建dao的代理实现类,并把它们都存入IOC容器
- 关于could not initialize proxy - no Session问题
风火连城
一、具体报错如下图:二、报错原因:Hibernate使用sessionFactory来管理session,每进行一次数据库操作时都会新建一个session对象,当操作完成后,hibernate就会在dao层立即关闭该session。所以操作类中另一个类的具体属性时,因为session已经关闭,就会报错。三、解决方案在web.xml中配置如下:
- 二级缓存&查询缓存
神豪VS勇士赢
属于SessionFactory级别的缓存,可以在多个session之间共享数据。image.png实用场合1.公开的数据,数据基本上不发生变化2.该数据保密性不是很强3.需要引入第三方的缓存工具,如EhCache等。生命周期二级缓存的生命周期和sessionFactory是一致的。开发流程1.1.第一步:开启二级缓存别忘记依赖image.png在核心配置hibernate.cfg.xml新增tr
- 算法 单链的创建与删除
换个号韩国红果果
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较早的版本都自带,