- C++ 实现 类似 c# 扩展方法
YNStong
问题处理学习记录c++
辛苦找到的怕到时候帖子没了记录一下原贴https://blog.csdn.net/coconut9325/article/details/78979100这是关于C++扩展方法的思路:1.使用定义operator来连接一个struct并调用struct的构造,这个struct的构造即为扩展方法的实现。(个人感觉不利于扩展方法中多参数,重载的实现。这部分代码不贴出来了,大家根据提供的思路很快也能架构
- [C/C++] move示例
CodeWithMe
C/C++c语言c++
在C++中,执行std::move操作后的对象是否还可以使用,取决于该对象被移动后的状态。std::move并不真正移动对象,而是将其转换为右值引用(rvaluereference),从而允许调用移动构造函数(moveconstructor)或移动赋值运算符(moveassignmentoperator)。移动操作通常会将资源(如动态分配的内存、文件句柄、网络连接等)从一个对象“转移”到另一个新对
- pytorch-lightning使用笔记
真炎破天
深度学习基础知识nlppytorch深度学习
LightningDataModuleAPI定义5个方法:prepare_data(howtodownload(),tokenize,etc…)在这个方法中处理需要写入磁盘或者需要单进程完成的任务setup(howtosplit,etc…)一些dataoperations希望在每块GPU上运行。包括但不限于:(1)countnumberofclasses(2)buildvocabulary(3)p
- 《Operating System Concepts》阅读笔记:p700-p732
操作系统
《OperatingSystemConcepts》学习第60天,p700-p732总结,总计33页。一、技术总结1.Virtualmachinemanager(VMM)Thecomputerfunctionthatmanagesthevirtualmachine;alsocalledahypervisor.VMM也称为hypervisor。2.typesofVMstype0hypervisor、t
- 【面向对象设计C++--翁恺】33-异常的抛出和捕捉
理心炼丹
浙大翁凯面向对象设计C++c++
example:VectortemplateclassVector{private:T*m_elements;intm_size;public:Vector(intsize=0):m_size(size)...~Void(){delete[]m_elements;}voidlength(int);intlength(){returnm_size;}T&operator[](int);};probl
- 自问自答模式(Operation是什么)
小巫程序Demo日记
Swaggerswagger
自问自答问:@Operation注解来自哪里?答:@Operation是OpenAPI(Swagger)规范中,来自io.swagger.v3.oas.annotations包的一个注解,用于给REST接口增加文档元数据。问:summary参数是什么?答:含义:接口的一句话概览,用于简要说明该API的主要功能。作用:在生成的SwaggerUI或OpenAPI文档里,作为列表页或接口卡片的标题,帮助
- 《Operating System Concepts》阅读笔记:p733-p734
操作系统
《OperatingSystemConcepts》学习第61天,p733-p734总结,总计2页。一、技术总结1.distributedsystem(1)定义Acollectionoflooselycouplednodesinterconnectedbyacommunicationnetwork(一组通过通信网络相互连接的松散耦合节点)。二、英语总结(生词:1)1.relevant(1)relev
- VMware Fusion 虚拟机Mac版 安装CentOS 7 系统
勿忘我681
centoslinux运维
VMwareFusion虚拟机Mac版安装CentOS7系统文章目录VMwareFusion虚拟机Mac版安装CentOS7系统一、介绍二、效果三、下载一、介绍CentOS是CommunityEnterpriseOperatingSystem的缩写,也叫做社区企业操作系统。是企业Linux发行版领头羊RedHatEnterpriseLinux的再编译版本(是一个再发行版本),而且在RHEL的基础上
- wsl启用systemctl以及System has not been booted with systemd as init system (PID 1). Can‘t operate.解决方法
weixin_44913594
linux运维服务器
wsl.conf的配置设置wsl.conf文件根据每个分发配置设置。(有关WSL2分发版的全局配置,请参阅.wslconfig)。wsl.conf文件支持四个部分:automount、network、interop和user。(按照.ini文件约定建模,密钥在节下声明,如.gitconfigfiles.)有关wsl.conf文件的存储位置的信息,请参阅wsl.conf。systemd支持许多Lin
- Java 8 Stream 总结
Stream简介Stream是什么Classestosupportfunctional-styleoperationsonstreamsofelements,suchasmap-reducetransformationsoncollections.Stream是Java8新特性,可对Stream中元素进行函数式编程操作,例如map-reduce。先来看一段代码:intsum=widgets.str
- 利用Golang为Kubernetes打造强大应用
Golang编程笔记
CSDNgolangkubernetes开发语言ai
利用Golang为Kubernetes打造强大应用关键词:Golang、Kubernetes、容器编排、云原生、微服务、Operator模式、CRD摘要:本文深入探讨如何利用Golang为Kubernetes构建高效、可靠的应用。我们将从Kubernetes和Golang的基础概念出发,详细解析Golang在Kubernetes生态系统中的核心地位,介绍Operator模式和CustomResou
- 数据仓库分层存储设计:平衡存储成本与查询效率
大模型大数据攻城狮
数据仓库spark大数据大数据面试数仓分层热数据冷数据
数据仓库分层存储不仅是一个技术问题,更是一种艺术:如何在有限的资源下,让数据既能快速响应查询,又能以最低的成本存储?目录一、什么是数据仓库分层存储?二、分层存储的体系架构1.数据源层(ODS,OperationalDataStore)2.数据仓库层(DW,DataWarehouse)a.数据明细层(DWD,DataWarehouseDetail)b.数据中间层(DWM,DataWarehouseM
- 正确的重载operator+
黄汉
stringconcatenationoverloadinguserc++class
正确的重载operator+(OverloadingOperator+theRightWay)ByDannyKalev,C++Pro翻译:周尚延beejoy为了得到一串链表或者完成两个对象的累加或合并,经常要重载诸如string,date,complex或file等user-define类型的Operator+。然而,就设计而言,正确地重载operator+面临许多挑战。下面的段落中,我将介绍为用
- mybatis plus 分页查询出来数据后对他二次 修改数据 封装返回
Java&Develop
Java开发intellij-ideajavaide
mybatisplus分页查询出来数据后对他二次修改数据封装返回/***搜索问卷**@paramkeyword*@parampageNo*@parampageSize*@return*/@AutoLog(value="v_survey-搜索")@ApiOperation(value="v_survey-搜索",notes="v_survey-搜索")@GetMapping(value="/sear
- 【多线程-第四天-自己模拟SDWebImage的下载图片功能-看SDWebImage的Demo Objective-C语言】
清风清晨
Objective-Cobjective-c开发语言macos
一、我们打开之前我们写的异步下载网络图片的项目,把刚刚我们写好的分类拖进来1.我们这个分类包含哪些文件:1)HMDownloaderOperation类,2)HMDownloaderOperationManager类,3)NSString+Sandbox分类,4)UIImageView+WebCache分类,这四个文件吧,把它们拖过来,选择Copy,点Finish,好,都复制过来之后,下边我们要去
- c/c++类型转换
天上飞的粉红小猪
c++学习c++
目录1、c语言中的类型转换c++中的类型转换1、内置类型和自定义类型的隐式转换(借助构造)2、自定义类型和自定义类型的隐式转换(借助构造)3、内置类型转自定义类型的隐式转换(重载一个operator类型)新增的四种强制类型转换1、static_cast2、reinterpret_cast3、const_cast4、dynamic_cast总结:4、RTTI重点:1、c语言中的类型转换在c语言中,如
- MongoTemplate批量操作以及nosuchmethoderror BulkOperations.execute()
唐家麦兜
JAVA数据库MongoDBjava
java中操作MongoDB最常见的就是MongoTemplate。接下记录写常见的基本操作:Springboot添加包:org.springframework.bootspring-boot-starter-data-mongodb注入@AutowiredprivateMongoTemplatemongoTemplate;1.添加。保存会判断存在,存在就会修改。如果不写collectname。会
- DevOps 与持续集成(CI/CD)
风亦辰739
前后端开发全栈指南devopsci/cd运维
1.DevOps概述DevOps(Development+Operations)是一种软件开发方法,强调开发(Dev)与运维(Ops)协作,通过自动化工具提高软件交付效率。其目标是:✅提高部署速度——频繁发布新版本✅减少人为错误——通过自动化降低运维风险✅增强可观测性——监控和日志分析DevOps主要依赖**持续集成(CI)和持续部署(CD)**工具,如Jenkins、GitLabCI、Docke
- JVM 常用字节码指令有哪些?
冰糖心书房
JVM常见问题汇总jvmJVM常用字节码指令
JVM字节码指令集非常庞大,包含了大量的指令来完成各种操作。我们只需要掌握一些常用的字节码指令即可。以下是一些最常用、最核心的JVM字节码指令,按照功能类别进行划分:1.操作数栈(OperandStack)操作指令:nop(NoOperation):什么也不做,空指令,通常用于调试或占位。aconst_null(Pushnull):将null引用值推送到操作数栈顶。iconst_m1,iconst
- 解决:knife4j 4.3.0多文件上传 没有文件上传框
injgtjw
springbootwindows后端
失败@Operation(summary="文件上传")@PostMapping(value="/upload")publicResultupload(@RequestParam("files")Listfiles){ListurlList=newArrayList();files.forEach(file->{log.info("正在上传,文件名{}",file.getOriginalFilen
- Linux下的网络设备驱动
胡涂涂~
Linux驱动开发linux网络tcp/ip
文章目录前言网络协议层接口网络设备接口层设备驱动功能层网络设备驱动的注册与注销网络设备的初始化网络设备的打开与释放数据的发送数据的接受流程总结前言与字符设备和块设备不同(通过应用层和驱动层指向同一个文件,通过file_operation作为两者之间的桥梁),网络设备并不对应于/dev目录下的文件,应用程序最终使用套接字完成与网络设备的接口。因而在网络设备身上并不能体现出“一切都是文件”的思想。Li
- 3396. 使数组元素互不相同所需的最少操作次数
咔咔咔的
leetcodec++
3396.使数组元素互不相同所需的最少操作次数题目链接:3396.使数组元素互不相同所需的最少操作次数代码如下:classSolution{public:intminimumOperations(vector&nums){unordered_setus;for(inti=nums.size()-1;i>=0;i--){if(!us.insert(nums[i]).second>0){//nums[
- 《Operating System Concepts》阅读笔记:p626-p628
操作系统
《OperatingSystemConcepts》学习第56天,p626-p628总结,总计3页。一、技术总结1.codereviewAsoftwaredevelopmentmethodinwhichthedevelopersubmitscodetootherdevelopersforreviewandapproval.Asoftwaredevelopmentmethodologythatcanh
- C++面向对象高级编程
EINTR
c++开发语言后端
C++面向对象高级编程概览#ifndefCOMPLEX_H_#defineCOMPLEX_H_classcomplex{private:doublere,im;public:complex(doubler=0,doublei=0):re(r),im(i){}//构造函数complex&operator+=(constcomplex&);//函数声明doublereal()const{returnr
- C++基础7 运算符重载
努力成为程序源
C++基础c++开发语言
运算符重载使对象的运算表现变得和编译器内置类型一样a+b=>a.operator+(b)下面实现一下复数类的运算符重载#includeusingnamespacestd;classCComplex{public:CComplex(intr=0,inti=0):mreal(r),mimage(i){}CComplexoperator+(constCComplex&com){/*CComplexcom
- 苍穹外卖笔记08
Intro--
笔记java经验分享
Day08-05-11用户下单OrderController:/***用户下单*@return*/@PostMapping("/submit")@ApiOperation("用户下单")publicResultsubmit(@RequestBodyOrdersSubmitDTOordersSubmitDTO){log.info("用户下单参数为:{}",ordersSubmitDTO);Order
- 3dmax 管子动画_3DMAX中模拟液体在管道流动动画是如何做的?
ayetony 清风
3dmax管子动画
回答:3DMax制作水流动的效果步骤方法1、选择box,执行create>geometry>compoundobjects>Boolean,点击PickOperandB按钮,然后选择cylinder,做成一个水槽的形状。2、在bumpmap通道中选择noise,bumpamount为30%,如下图设置参数。在reflection通道中选择falloff贴图,保留默认设置,reflectionamo
- 苍穹外卖笔记07
Intro--
笔记服务器运维
Day08-02-04地址簿模块查询当前登录用户的所有地址信息AddressBookController:/***查询当前登录用户的所有地址信息**@return*/@GetMapping("/list")@ApiOperation("查询当前登录用户的所有地址信息")publicResult>list(){AddressBookaddressBook=newAddressBook();addre
- java基础 流(Stream)
骑牛小道士
java
StreamStream的核心概念核心特点Stream的操作分类中间操作(IntermediateOperations)终止操作(TerminalOperations)Stream的流分类顺序流(SequentialStream)并行流(ParallelStream)并行流的注意事项并行流的底层机制顺序流vs并行流的对比顺序流和并行流的示例代码顺序流并行流总结Stream的核心概念Java8引入的
- 【Python】sorted()函数作用
weixin_30564785
python
sorted()函数作用:sorted(需要排序的数组,依据数组的某一列为排序依据,是否逆序)sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)需要排序的数组:classCount.iteritems(),即为元组列表依据数组的某一列为排序依据:key=operator.itemgetter(1),即为根据第
- 算法 单链的创建与删除
换个号韩国红果果
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较早的版本都自带,