- 【iOS】Masnory的简单学习
名字不要太长 像我这样就好
iosuiobjective-c学习
目录前言常用的布局方法Masnory什么是MasnoryMasnory的安装Masnory常用的方法基本约束方法约束创建方法尺寸和位置约束边距和间距尺寸和比例约束组合激活和更新约束示例代码使用时出现的问题总结前言 在暑假的项目编写过程中,大量使用到了视图布局,笔者用的较多的是FrameLayout(框架布局),该布局方法需要自己计算每个视图的位置,且稍有不注意就会出现视图重叠,导致实际和预期相差
- 在fragment中使用viewpager嵌套fragment
小康
步骤:1、在Activity布局文件中定义framelayout用于添加Fragment2、创建两个Fragment用于切换3、获取Fragment管理器,并开启事物FragmentTransaction4、通FragmentTransaction.add(resourceid,fragment)将fragment添加到布局上,提交事物commit5、通FragmentTransaction.re
- Android---Jetpack Compose学习002
别偷我的猪_09
#JetpackComposekotlinandroid
Compose布局。Compose布局的目标:1)实现高性能;2)让开发者能够轻松编写自定义布局;3)在Compose中,通过避免多次测量布局子级可实现高性能。如果需要进行多次测量,Compose具有一个特殊系统,即固有特性测量。标准布局组件使用Column可将多个像垂直地放置在屏幕上;使用Row可将多个项水平地放置在屏幕上;使用Box可将一个元素放在另一个元素上。类似于FrameLayout布局
- Android开发-UI布局的使用
IM不知
前言常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout(线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局)TableLayout(表格布局)。View和ViewGroup1.View在Andorid应用程序中,UI元素称为View,它们都继承了android.view.View类。View有众多的子类,包括ViewGr
- 学习Android的第四天
世俗ˊ
Android学习android
目录AndroidFrameLayout(帧布局)FrameLayoutsize大小FrameLayout属性AndroidGridLayout(网格布局)GridLayout属性计算器布局AndroidAbsoluteLayout绝对布局AbsoluteLayout四大控制属性AndroidFrameLayout(帧布局)FrameLayout是Android中的一个布局容器,用于在单个视图中显
- Android studio 六大基本布局详解
诗雅颂
androidapp安卓移动端安全
1.线性布局(LinearLayout)线性布局是一种按照水平或垂直方向排列子视图的布局,可以通过设置权重来调整子视图的大小比例。2.相对布局(RelativeLayout)相对布局是一种基于子视图之间相对位置关系进行定位的布局,可以根据其他子视图的位置来确定子视图的位置。3.帧布局(FrameLayout)帧布局是一种将子视图叠加在一起的布局,每个子视图都可以控制显示在最上面。4.表格布局(Ta
- view如何被添加到窗口
时间不可逆
直接通过源码来进行分析:涉及相关类:Activity,PhoneWindow(extendsWindow),DecorView(extendsFrameLayout);1.创建顶层布局容器DecorView;2.在顶层布局中加载基础布局viewGroup;3.将ContentView添加到基础布局中的FrameLayout中;先看流程:Activity:setContentView()->getW
- 安卓常用布局
老A94
Android中常用的5大布局方式有以下几种:线性布局(LinearLayout):按照垂直或者水平方向布局的组件帧布局(FrameLayout):组件从屏幕左上方布局组件表格布局(TableLayout):按照行列方式布局组件相对布局(RelativeLayout):相对其它组件的布局方式绝对布局(AbsoluteLayout):按照绝对坐标来布局组件1.线性布局(LinearLayout)线性
- FragmentTabHost + FragmentLayout布局框架,Fragment生命周期
Lost_Robot
使用FragmentTabHost作为底部,FrameLayout占位,搭建主页框架:关于子Fragment的生命周期:首次进入A页面:创建页面执行的生命周期切换到B页面:A切换到B页面A的生命周期变化B页面切换回A页面:从B页面切换回A页面时A页面的生命周期按锁屏键A页面的生命周期:按锁屏键A页面的生命周期重新打开屏幕A的生命周期:重新打开屏幕A的生命周期
- 7.帧布局FrameLayout
jerry9590
Androidandroid-studio
没啥特殊的属性。这个容器内的view就是一层盖一层的排列子view一般会使用layout_gravity实现排列在父容器的上下左右等位置
- APP
天竺鼠车车
页面布局框架布局FrameLayout——所有控件都被放置在最左上的区域;下一个子控件会重叠覆盖上一个控件线性布局LinearLayout——控件的排序方式:垂直/水平绝对布局AbsoluteLayout——采用坐标轴的方式定位控件;安卓坐标系统中,左上角为原点,往右x轴递增,往下y轴递增相对布局RelativeLayout——根据参照物(某控件)的位置,来确定控件的位置表格布局TableLayo
- Android_adb_基本常用命令
just Liu
androidadb
Android五大常用布局组件:FrameLayout:单帧布局帧里的控件叠加LinearLayout:线性布局以水平或垂直方向排列ConstraintLayout:约束布局通过相对定位排列,可视化的编写布局排列TableLayout:表格布局表格形式排列RelativeLayout:相对布局相对定位排列android:layout_below元素下方adb基本命令:adbstart-server
- 卡片布局控件 - CardView
魔女小姐的猫
依赖implementation'com.android.support:cardview-v7:29.0.0'//卡片布局cardview介绍CardView是Google官方发布MD风格卡片布局控件,开发者可以很方便的使用它将布局做成卡片效果,其继承自FrameLayout布局,并在其基础上添加了圆角和阴影等效果。属性属性作用CardView_cardBackgroundColor设置背景色C
- Android布局优化 之 标签使用详解
啸饮流云
androidmergeandroid
1.为什么要使用为了避免嵌套过多无用布局,嵌套的布局会让View树的高度变得越来越高,应该尽量减少布局的层级来优化布局。2.什么情况下使用1.如果本打算用FrameLayout作为界面的根布局时,要用标签作为根节点,因为View树的ContentView本身就是个FrameLayout,如图:2.如果打算用RelateLayout或Linearlayout作为界面根布局时,界面中某些可复用的或逻辑
- Android五大布局介绍&属性设置大全
穿越平行宇宙
前言在进行Android开发中,常常需要用到各种布局来进行UI的绘制,今天我们就来讲下Android开发中最常用的五大布局介绍和相关属性的设置。目录image一、布局介绍在Android中,共有五种布局方式,分别是:FrameLayout(框架布局)LinearLayout(线性布局)AbsoluteLayout(绝对布局)RelativeLayout(相对布局)TableLayout(表格布局)
- Android UI——Material Design ——FloatingActionButton 悬浮动按钮
So_ProbuING
FloatingActionButton悬浮按钮在App开发中,面对有悬浮按钮的需求,以前我的解决方式都是帧布局FrameLayout中覆盖一个按钮View,这样这个按钮就会一直在界面中,有一次遇到悬浮按钮类似卫星选项的需求,使用自定义的View写了好久,很麻烦。最近在学习Android的MaterialDesign的组件时,看到有FloatingActionButton悬浮按钮控件。真是觉得太方
- RecyclerView重新得到焦点返回上次失去焦点的位置
valiant_勇哥
原创焦点RecyclerView定位
RecyclerView焦点处理近期在做一个TV项目,焦点的问题处理比较麻烦。在网上搜索都找不到这类处理的方法。所以分享一个处理方法给大家。重写了一个RecyclerView和FrameLayout。详情请大家去细看,我这里就不赘述。代码如下:1、布局activity_mainitem_layout_nomal2、适配器publicclassRecyclerViewAdapterextendsRe
- 【android开发-10】android中四种布局详细介绍
孤舟簔笠翁
android应用开发android
在Android开发中,常见的四种布局分别是:线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和绝对布局(AbsoluteLayout)。注意:布局是一种可以放置许多控件的容器,除了放置控件外,也可以放置布局,实现布局的嵌套。1,线性布局(LinearLayout):Android中的LinearLayout是一种常用的布局方式,它可
- 日更挑战-Android Window、Activity、DecorView和ViewRoot
愿你我皆是黑马
什么是AndroidWindow、Activity、DecorView和ViewRootimage.pngAndroidWindow是上图的PhoneWindow层次,是视图的承载器视图承载器:内部持有一个DecorView(view的跟布局)DecorView(布局显示):是FrameLayout的子类,是Android的视图树的跟节点源码结构:包含一个竖直方向的LinearLayout,内容为
- CoordinatorLayout(一)—— 基本使用
tmacfrank
#UIAndroidandroid
一、CoordinatorLayoutCoordinatorLayout是一个功能强大的FrameLayout,它遵循MaterialDesign风格,可以用作一个或多个子View间交互的容器。通过为CoordinatorLayout的子View设置Behavior,可以实现不同的交互效果。通常会与AppbarLayout、CollapsingToolbarLayout结合使用。BehaviorB
- Android之高级UI
zhuhai0613
androidui
系统ViewGroup原理解析常见的布局容器:FrameLayout,LinearLayout,RelativeLayoout,GridLayout后起之秀:ConstraintLayout,CoordinateLayoutLinearlayout@OverrideprotectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){if
- android动态添加顶部tabbar,Android自定义底部导航栏-Tabbar
洪文律所
一、添加依赖//view,事件绑定implementation'com.jakewharton:butterknife:8.8.1'annotationProcessor'com.jakewharton:butterknife-compiler:8.8.1'二、开始写布局1、Tabbar布局页面2、fragment_test.xml布局页面这个页面就是FrameLayout中要显示的页面三、开始写
- android设置页面顶部沉浸式布局并透明显示
woaibianche
android
//设置沉浸式布局标志位if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.R){frameLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);}elseif(Build.VERSION.S
- android 多个图层,Android图层列表layer-list
小事儿Littlesth
android多个图层
概念layer-list是图层列表,原理是列表中的每个可绘制对象均按照列表顺序绘制,列表中的最后一个可绘制对象绘于顶部,图层一层层的叠加,有点类似FrameLayout。在layer-list中可以通过控制后添加图层距离最底部图层的左、上、右、下的四个边距等属性,来得到不同的显示效果。layer-list是用来创建LayerDrawable的,LayerDrawable是drawable的一种。基
- 第三章:软件也要拼脸蛋-UI 开发的点点滴滴
weixin_30505485
ui
常用控件常用控件有:按钮Button、文本显示框TextView、图片显示框ImageView、文本编辑框EditText、进度条ProgressBar、提示框AlertDialog、进度提示框ProgressDialog四种基本布局线性布局LinearLayout相对布局RelativeLayout帧布局FrameLayout百分比布局,例如:百分比相对布局PercentRelativeLayo
- 第3章 软件也要拼脸蛋-UI开发的点点滴滴
narkang
第一行代码第二版读书笔记
目录结构3.2常用的控件使用方法TextViewButtonEditTextImageViewProgressBarAlerDialogProgressDialog3.3详解4种基本布局线性布局LinearLayout将它包含的控件在线性方向上排列相对布局RelativeLayout通过相对定位的方式让控件出现在布局的任何位置帧布局FrameLayout没有方便的定位方式,所有的控件都会默认摆放在
- 视窗到android切换器,图片切换器(ImageSwitcher)使用
金立鸿
视窗到android切换器
image.pngImageSwitcherImageSwitcher是一个图片切换器,它间接继承自FrameLayout类,和ImageView相比,多了一个功能,那就是它说显示的图片切换时,可以设置动画效果,类似于淡进淡出效果,以及左进右出滑动等效果。既然ImageSwitcher是用来显示图片的控件,AndroidAPI为我们提供了三种不同方法来设定不同的图像来源,方法有:setImageD
- 图像切换器(ImageSwitcher)和画廊视图(Gallery)功能和用法(图片浏览器)
Android_Trot
Android基础android图片浏览器画廊视图Gallery
ImageSwitcher由FrameLayout派生而出,ImageSwitcher组件和ImageView很相似,他们都可以用于显示图片,但ImageSwitcher比普通的ImageView多一个功能,它所显示的图片切换可以设置动画效果。使用ImageSwitcher时往往需要为它设置一个ImageSwitcher.ViewFactory,实现ImageSwitcher.ViewFactor
- Android选项卡TabHost
在下嗷呜
androidjava
选项卡主要由TabHost(标签,主人),TabWidget(微件)和FrameLayout3个组件组成,用于实现一个多标签页的用户界面。1.TabHost在XML文件中添加:XML布局文件中添加选项卡时必须使用系统id来为各组件指定id属性。2.准备选项卡内XML布局资源://文件-res\layout\tab1.xml//文件-res\layout\tab2.xml3.TabHost在Java
- Android UI 开发·界面布局开发·案例分析
时光の尘
Androiduiandroidjavagitee
目录编辑1.线性布局(LinearLayout)2.相对布局(RelativeLayout)3.表格布局(TableLayout)4.帧布局(FrameLayout)5.网格布局(GridLayout)6.绝对布局(AbsoluteLayout)补充内容:关于selector状态选择器1.线性布局(LinearLayout)LinearLayout线性布局是一种最简单的布局方式,它有垂直和水平两种
- 算法 单链的创建与删除
换个号韩国红果果
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较早的版本都自带,