- [转载]ubuntu16.04安装python3.7
廷裕同学
1.安装依赖包sudoapt-getupdatesudoapt-getinstallbuild-essentialpython-devpython-setuptoolspython-pippython-smbussudoapt-getinstallbuild-essentiallibncursesw5-devlibgdbm-devlibc6-devsudoapt-getinstallzlib1g-
- k8s之DashBoard
蓝桉 释槐
kubernetes容器云原生
一,详述:基于web的用户界面二,部署:1),下载yaml并运行wgethttps://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml2),修改kubernetes-dashboard的Service类型apiVersion:v1kind:Namespacemetadata:name
- MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系
匆匆那年过客
本篇博客讲解(子查询)非相关子查询/相关子查询,一对一,一对多,多对一,多对的的关系!准备:首先我们创建一列sex。再为部分行设置好值0(女)或者1(男);deletefromstudwhereage=26;删除年龄为26的行。1.updatestudsetsex='1'wheresaddresslike'湖南%';将地址中湖南开头的人的的sex修改为1。1.updatestudsetsex='0
- 配置项目的git
一见
gitgitMakefile
只需要编辑项目根目录下的.git/config文件,其中.git为根目录下的子目录。当需要操作多个来源不同仓库的项目时,需要做这个设置,比如一个来自github.com,一个来自私有仓库的。%cat.git/config[core]repositoryformatversion=0filemode=truebare=falselogallrefupdates=trueignorecase=true
- 这款完全自定义配置的浏览器起始页插件值得你收藏!
大家好,我是Java陈序员。浏览器是我们上网冲浪的必备工具,每次打开浏览器默认都是先看到起始页。有的浏览器起始页十分简洁美观,而有的则是充满了各种网址导航和广告。今天,給大家介绍一个浏览器起始页配置插件,支持自定义配置。关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍HowdzDashboard——一个基于Vue3、Typescript、
- ubuntu18安装cmake27的方法
在Ubuntu18.04系统中安装CMake2.7版本,可以按照以下步骤进行操作。首先,我们需要确保系统中已经安装了必要的开发工具和库。在Ubuntu中,我们可以使用apt包管理器来完成这个任务。打开终端窗口,输入以下命令:sudoaptupdatesudoaptinstallbuild-essentiallibssl-dev这些命令会更新你的包列表,并安装构建工具和SSL开发库,这些都是编译CM
- frp应用实例
liuyuan185442111
Linux工具
frp是一个用于内网穿透的反向代理应用,这是一个非常优秀的开源项目,开发者是fatedier。server端配置#frps.ini[common]bind_port=7000token=passwd#可选通过浏览器查看frp的状态以及代理统计信息展示dashboard_port=7500dashboard_user=admindashboard_pwd=passwd#可选点对点内网穿透使用bind
- 华纳云:ubuntu如何用nginx绑定域名
华纳云IDC服务商
ubuntunginx数据库
要在Ubuntu服务器上使用Nginx绑定域名,你需要完成以下步骤:安装Nginx:如果你还没有安装Nginx,可以使用apt包管理器进行安装。在终端中执行以下命令:sudoaptupdatesudoaptinstallnginx配置Nginx站点:创建一个新的Nginx配置文件,以绑定你的域名。在/etc/nginx/sites-available/目录下创建一个新的配置文件,例如your_do
- Spring Cloud Alibaba-04-Sentinel规则持久化Nacos方式-推荐
苍云烟
#SpringCloudAlibabajava架构sentinel
Lison,v1.0.0,2023.10.03SpringCloudAlibaba-04-Sentinel规则持久化全面Nacos方式文章目录SpringCloudAlibaba-04-Sentinel规则持久化全面Nacos方式Sentinel-Dashboard添加规则Nacos双向绑定实现注释掉test增加NacosConfig配置加入Repository配置注入Repository最后替换
- mybatis update操作返回值
yyyyyuanxian
JDBCmybatis
MySQL返回的消息:10:50:14UPDATEPMT_CN.TMPLTSETSHOW_RANK=‘0’WHERE(TMPLT_ID=‘123456’)0row(s)affectedRowsmatched:1Changed:0Warnings:00.000sec代码中拿到的结果:intresult=cardTemplateDAO.updateShowRank(showRankVO);//1这个返
- Ubuntu22.04.1 C/C++环境搭建
R·熊猫
linuxc语言c++
新装ubuntu22.04.1,发现系统不带相关的开发环境,百度后简单记一下。1、更新源updatesudoapt-getupdate2、C/C++开发环境搭建sudoaptinstallbuild-essentialgdb3、查看版本号,检验是否安装成功。gcc--versiong++--versiongdb--version
- 区块链游戏解说:什么是 Nine Chronicles
区块链
作者:
[email protected]编译:
[email protected]数据源:NineChroniclesDashboard什么是NineChroniclesNineChronicles是一款去中心化的在线角色扮演游戏,标志着在线游戏和区块链技术的发展。NineChronicles与传统的在线RPG不同,NineChronicles无需服务器即可运行,采用类似于B
- 如何做代币分析:以 BNB 币为例
区块链
作者:
[email protected]数据源:BNBCoinDashboard(仅包括以太坊数据)在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关的数据和市场行为的过程。这是一个详细的过程,涉及到对与这些资产相关的价格和流动性进行彻底的检查。通过代币分析,我们可以获得对市场趋势、风险因素、交易活动和资金流向的投资决策。BNB或称BinanceC
- JMeter使用记录整理(十)非GUI模式
雲等風來
JMeter测试工具
目录命令参数执行示例生成测试报告利用已有.jtl文件生成报告无.jtl文件生成测试报告报告内容解析DashboardCharts所遇问题JMeter可以运行模式有两种,一种是GUI图形,另一种是命令模式运行也就是非GUI模式。GUI:由于是图形界面,所以在运行时会消耗很多资源,而且图形界面运行时结果是保存在Jmeter运行的内存中,如果是做长时的性能测试,内存就会占用的很高,首先就是影响性能结果的
- The Captainz NFT 概览与数据分析
Footprint_Analytics
区块链行业动向NFT游戏加密货币
作者:
[email protected]编译:
[email protected]数据源:TheCaptainzNFTCollectionDashboardTheCaptainz是Memeland的旗舰系列,由9,999个实用性极强的PFP组成。持有者在Memeland宇宙中展开了一场神话般的探索,并通过MemelandDAO参与治理。这个NFT项目会在2024年崛起吗?关于
- The Sandbox NFT 概览与数据分析
Footprint_Analytics
行业动向区块链区块链NFT加密货币代币
作者:
[email protected]编译:
[email protected]数据源:TheSandboxNFTCollectionDashboardSandboxNFT系列包括独特的体素资产和LAND地块,使所有者能够在TheSandbox元宇宙中构建、玩虚拟体验并从中获利。这个NFT项目会在2024年崛起吗?关于TheSandboxTheSandbox是一个动态的、由
- 区块链游戏解说: DeFi Kingdoms
Footprint_Analytics
区块链行业动向区块链游戏加密货币NFT
数据源:DeFiKingdomsDashboard作者:
[email protected]编译:
[email protected]什么是DeFiKingdomsDeFiKingdoms是一个跨链奇幻RPG游戏,拥有精美的像素艺术,将资源加密并与DeFi协议集成,还有HeroNFT。DeFiKingdomsDeFiKingdoms是一个跨链的游戏,通过强大的DeFi协议实现边
- [OPEN SQL] 更新数据
山茶花开时。
SAP#OPENSQLSAPABAP开发语言
UPDATE语句用于更新数据库表中的数据本次操作使用的数据库表为SCUSTOM,其字段内容如下所示航班用户(SCUSTOM)需要操作更新以下数据1.更新单条数据语法格式UPDATEFROM.UPDATEFROMTABLE.UPDATESETf1...fnWHERE.参数说明dbtab:数据库表wa:存放待更新数据的结构体变量(工作区)itab:存放待更新数据的内表f1...fn:更新指定字段的具体
- vim编辑器
哇咔哇卡
Vi有三种基本工作模式:+命令模式+文本输入模式+末行模式安装:sudoapt-getupdatesudoapt-getinstallvim命令行模式:任何时候,不管用户处于何种模式,只要按一下ESC键,即可使Vi进入命令模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何
- linux系统监控prometheus关联Grafana展示数据
丨析木丨
linuxprometheusgrafanalinux
prometheus关联Grafana前提寻找插件创建数据源输入id,点击右边load选择数据源查看页面前提安装Prometheus,以及需要被监控的插件安装Grafana寻找插件创建数据源输入id,点击右边loadid查看网站:https://grafana.com/grafana/dashboards/选择数据源查看页面
- rocketMQ-Dashboard安装与部署
修心光
linux服务器java
1、下载最新版本rocketMQ-Dashboard下载地址:https://github.com/apache/rocketmq-dashboard2、下载后解压,并用idea打开3、修改配置①、修改端口及rocketmq服务的ip:port②、修改访问账号、密码3、然后启动访问:4、maven打包,然后在target下找到打成的jar,在需要的服务器上jar启动部署即可;NOT_ONLINE代
- useState和useReducer区别
_处女座程序员的日常
Reactjs前端前端javascript开发语言
useState本质上是简易版的useReducer在mount阶段,两者的区别为:useState的lastRender就是basicStateReduceruseReducer的lastRender就传入的reducer所以useState可以视为reducer参数是basicStateReducer的useReducer在update阶段:updateState内部调用的就是updateRe
- Ubuntu安装 docker
沃心
ubuntudockereureka
安装Docker在Ubuntu上通常有几个步骤。以下是安装Docker的基本步骤:更新系统软件包:sudoaptupdatesudoaptupgrade安装所需的软件包以允许使用HTTPS连接:sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-common添加Docker的官方GPG密钥:curl-fsS
- Codeforces Round 925 (Div. 3)
ros275229
算法学习CF算法codeforces
比赛地址Dashboard-CodeforcesRound925(Div.3)-CodeforcesA.RecoveringaSmallString直接模拟#include#defineIOSios::sync_with_stdio(0);cin.tie(0);cout.tie(0);#defineendl'\n'#definelowbit(x)(x&(-x))#definesz(a)(int)a
- Ubuntu 上安装 GitLab
沃心
ubuntugitlablinux
在Ubuntu上安装GitLab非常简单,并且GitLab提供了一个方便的安装脚本。以下是在Ubuntu上安装GitLab的基本步骤:更新系统软件包:sudoaptupdatesudoaptupgrade安装Curl和OpenSSH:sudoaptinstall-ycurlopenssh-server下载并运行GitLab安装脚本:curl-sShttps://packages.gitlab.co
- 如何下载 visual studio code 旧版本
左手金猪右手元宝
vscode
visualstudiocode工具从1.36版本开始,不再支持Linuxx86,因此1.35作为最后一个支持Linuxx86的版本,如何从官网下载呢?可以从网址下载VisualStudioCodeMay2019SeewhatisnewintheVisualStudioCodeMay2019Release(1.35)https://code.visualstudio.com/updates/v1_
- centos7 yum 安装golang
Perfect珈蓝
golanglinuxcentos
直接安装sudoyuminstall-ygo提示报错[root@k8s-node5java]#sudoyuminstall-ygo已加载插件:fastestmirrorLoadingmirrorspeedsfromcachedhostfile*base:mirrors.huaweicloud.com*extras:mirrors.huaweicloud.com*updates:mirrors.hu
- Unity笔记:第三人称Starter Asset代码学习
Binarydog_Lee
Unity学习unity
前言什么是ThirdPersonStarterAsset自己看了几篇文章和视频,写了个人物移动脚本,有很多瑕疵。这个时候研究一下优秀的代码总是好的,Unity官方有ThirdPersonStarterAsset可供研究,其官方商店页面是:StarterAssets-ThirdPerson|UpdatesinnewCharacterControllerpackage官方B站介绍视频是:Bilibil
- 【C语言】Debian安装并编译内核源码
尘中928
编程#linux内核#linuxdebianlinux
在Debian10中安装并编译内核源码的过程如下:1.安装依赖包首先需要确保有足够的权限来安装包。为了编译内核,需要有一些基础的工具和库。sudoaptupdatesudoaptupgradesudoaptinstallbuild-essentiallibncurses-devbisonflexlibssl-devlibelf-dev2.下载内核源码可以从官方网站(https://www.kern
- Docker系列 深度使用nextcloud(二)
Bensz
转自我的个人博客https://blognas.hwb0307.com。欢迎关注!前言通过Docker系列深度使用nextcloud(一),我们对nextcloud有了相对深入的了解。这一节我们来看一下它的后台吧!后台登陆的地址是https://example.com/apps/dashboard/顶栏我们先探索它左边的4个小图标:仪表盘这里我们可以做一些没什么用的设置,主要是可以让nextclo
- 算法 单链的创建与删除
换个号韩国红果果
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较早的版本都自带,