HBase笔记

1.晋升iOS11后引致的变更

1.选拔场景和特点

 1. 1晋级后,发现有些拥有tableView的界面错乱,组间距和contentInset错乱,因为iOS1第11中学UIViewController的automaticallyAdjustsScrollViewInsets属性被遗弃了,因而当tableView超出安全区域时,系统自动会调动SafeAreaInsets值,进而影响adjustedContentInset值


// 有些界面以下使用代理方法来设置,发现并不曾奏效

– (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;

– (CGFloat)tableView:(UITableView *)tableView
heightForFooterInSection:(NSInteger)section;

//
那样的原理是因为事先只是完成了惊人的代理方法,却从不兑现View的代办方法,iOS10及从前这么写是没难题的,iOS11敞开了行高预计机制引起的bug,因而有以下两种缓解措施:

// 解决措施一:添加落到实处View的代理方法,唯有实现上面四个艺术,方法
(CGFloat)tableView: heightForFooterInSection: 才会一蹴而就

– (UIView *)tableView:(UITableView *)tableView
viewForFooterInSection:(NSInteger)section {

return nil;

}

– (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)section {

return nil;

}

// 消除方式二:间接接纳tableView属性实行安装,修复该UI错乱

self.tableView.sectionHeaderHeight = 0;

self.tableView.sectionFooterHeight = 5;

[_optionTableView setContentInset:UIEdgeInsetsMake(-35, 0, 0, 0)];

// 化解情势三:添加以下代码关闭估计行高

self.tableView.estimatedRowHeight = 0;

self.tableView.estimatedSectionHeaderHeight = 0;

self.tableView.estimatedSectionFooterHeight = 0;

hbase => 当数据量不小的时候才会议及展览示出hbase的优势

1.2 假诺采用了Masonry 进行布局,就要适配safeArea

           if ([UIDevice currentDevice].systemVersion.floatValue >=
11.0) {

         make.edges.equalTo(self.view.safeAreaInsets);

          } else {

          make.edges.equalTo(self.view);

        }

特点:

1.3 对于IM的出殡和埋葬原图功效,iOS11开发银行全新的HEIC 格式的图纸,HTC7以上设备+iOS11排出的live照片是”.heic”格式图片,同一张live格式的图形,iOS10发送就没难题(转成了jpg),iOS11就13分

      微信的处理情势是一比一中间转播成jpg格式

     QQ和钉钉的处理方式是直接压缩,尽管是原图也收缩为非原图

     微信的逼格太高,没找到现成的主意,笔者使用的是QQ 的方案

海量数据存款和储蓄 =>
单表可有上百亿行。上百万的列。也正是对列没有限定。 =>
关系型数据库平常单表不超过五百万行,不超越三十列。

贰 、使用Xcode9 编写翻译后发觉的题材

   2.1
发现“fastSocket”第③方报错,具体原因是干涸C99的头文件,引入“#include ”即可

图片 1

 2.2 导航栏的新特色

    原生的搜索栏样式发生变更

图片 2

右边为iOS11体制,搜索区域中度变大,字体变大

翻看 API
后意识,iOS11后将searchController赋值给了NavigationItem,通过品质hidesSearchBarWhenScrolling能够决定搜索栏是还是不是在滑行的时候举行隐蔽和呈现

* *

// A view controller that will be shown inside of a navigation
controller can assign a UISearchController to this property to display
the search controller’s search bar in its containing navigation
controller’s navigation bar.

@property (nonatomic, retain, nullable) UISearchController
\
searchController API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);*

// If this property is true (the default), the searchController’s
search bar will hide as the user scrolls in the top view controller’s
scroll view. If false, the search bar will remain visible and pinned
underneath the navigation bar.

@property (nonatomic) BOOL hidesSearchBarWhenScrolling
API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);

别的,UINavigationBar新增属性
BOOL值prefersLargeTitles来实现下边包车型客车机能,并得以因此largeTitleTextAttributes来安装大标题标文件样式。设置大标题之后,导航栏的可观就会由事先的64pt变成
96pt,借使项目中有直接写死的万丈或许隐藏导航栏之类的操作,就须求适配一下

图片 3

有个界面使用到了导航栏按钮相关的frame,也发生了UI错乱,查看UI层级关系后发觉,iOS11在此以前是直接把按钮加到了UINavigationBar上边,而iOS11则是先将按钮加到了_UITAMICAdaptorView,再加到_UIButtonBarStackView、_UINavigationBarContentView,接着才是UINavigationBar。因而只要急需得到导航栏按钮
frame 大概 superView,那里需求特地做下适配

图片 4

图片 5

面向列 => 动态添加数据的时候生成列。单独对列实行各样操作。

 

多版本 

3.iPhone X的适配

   下载完Xcode9之后,第三件事当然是在 NokiaX(模拟器)上过把瘾,然后编写翻译后就意识报错了

   由于One plus X的状态栏是和任何版本手提式有线电话机差距比较大的,由此api
变化也正如大

   先后做了以下适配

  适配点一:项目中利用情况栏中图标判断当前网络的切切实真实景况形

图片 6

阴差阳错的代码

打印的 Log 报出以下错误: 特拉普ed uncaught exception
‘NSUnknownKeyException’, reason: ‘[ valueForUndefinedKey:]: this
class is not key value coding-compliant for the key foregroundView.’

 

图片 7

iPhone X

 

图片 8

别的手提式有线电话机

选用 runtime 打字与印刷其具有属性,发现以下差别

// 测试代码

#import

NSMutableString *resultStr = [NSMutableString string];

//获取钦命类的Ivar列表及Ivar个数

unsigned int count = 0;

Ivar *member = class_copyIvarList([[application
valueForKeyPath:@”_statusBar”] class], &count);

for(int i = 0; i < count; i++){

Ivar var = member[i];

//获取Ivar的名称

const char *memberAddress = ivar_getName(var);

//获取Ivar的类型

const char *memberType = ivar_getTypeEncoding(var);

NSString *str = [NSString stringWithFormat:@”key = %s           
type = %s

\n”,memberAddress,memberType];

[resultStr appendString:str];

}

NSLog(@”%@”, resultStr);

 

// 别的版本的无绳电话机

key = _inProcessProvider            type = @””

key = _backgroundView              type =
@”UIStatusBarBackgroundView”

key = _doubleHeightLabel            type = @”UILabel”

key = _doubleHeightLabelContainer  type = @”UIView”

key = _currentDoubleHeightText      type = @”NSString”

key = _currentRawData              type = {超长。。}

key = _interruptedAnimationCompositeViews  type = @”NSMutableArray”

key = _newStyleBackgroundView      type =
@”UIStatusBarBackgroundView”

key = _newStyleForegroundView      type =
@”UIStatusBarForegroundView”

key = _slidingStatusBar            type = @”UIStatusBar”

key = _styleAttributes              type =
@”UIStatusBarStyleAttributes”

key = _waitingOnCallbackAfterChangingStyleOverridesLocally  type = B

key = _suppressGlow                type = B

key = _translucentBackgroundAlpha  type = d

key = _showOnlyCenterItems          type = B

key = _foregroundViewShouldIgnoreStatusBarDataDuringAnimation  type =
B

key = _tintColor                    type = @”UIColor”

key = _lastUsedBackgroundColor      type = @”UIColor”

key = _nextTintTransition          type =
@”UIStatusBarStyleAnimationParameters”

key = _overrideHeight              type = @”NSNumber”

key = _disableRasterizationReasons  type = @”NSMutableSet”

key = _timeHidden                  type = B

key = _statusBarWindow              type = @”UIStatusBarWindow”

// iPhone X

key = _statusBar ; type = @”_UIStatusBar”

// 因而可知OPPOX的状态栏是多嵌套了一层,多取三次即可,最后适配代码为:

NSArray *children;

// 不能用 [[self deviceVersion] isEqualToString:@”iPhone X”]
来判断,因为Motorola X 的模拟器不会再次来到 索爱 X

if ([[application valueForKeyPath:@”_statusBar”]
isKindOfClass:NSClassFromString(@”UIStatusBar_Modern”)]) {

children = [[[[application valueForKeyPath:@”_statusBar”]
valueForKeyPath:@”_statusBar”] valueForKeyPath:@”foregroundView”]
subviews];

} else {

children = [[[application valueForKeyPath:@”_statusBar”]
valueForKeyPath:@”foregroundView”] subviews];

}

稀疏行 => 为空的列不占用磁盘空间。 =>
关系型数据库当列为空的时候值会为null。也会占用磁盘空间

3.2缓解那一个难点后项目跑起来发现,整个app界面上下各空出大致40pt的莫斯中国科学技术大学学

图片 9

会发现尾部 UITabBar
是高出一些高度,查看层级关系后发觉,同样是由于安全区的来由,UITabBar
中度由49pt变成了83pt,因而这里也要对华为 X 及其模拟器进行适配

扩张性 => 底层依赖于HDFS =>
数据内部存款和储蓄器不够的时候只须求动态增进机器就行。

3.3:酷派 X 唯有 faceID,没有touchID,就算in的应用有应用到 touchID 解锁的地方,那里要根据机型进行相应的适配

高可信性 => 

3.4:此前有偷懒的直白使用20代表状态栏中度,那么些坑都要经过重复拿到状态栏低度

       CGRectGetHeight([UIApplication
sharedApplication].statusBarFrame)

高品质 => 高写高读品质。

3.5:不过索爱 X更大的坑是荧屏的适配

首先看下荧屏尺寸

图片 10

那张图反映出众多新闻:

中兴 X的上升幅度就算和7是同样的,可是中度多出145pt

应用三倍图是珍视,而且貌似认为肉眼所能所能识别的最高的显示屏密度是300ppi,摩托罗拉X已达到规定的标准458ppi(查证发现三星galaxy连串的显示屏密度是522ppi)

在规划方面,苹果官方文书档案有明显供给,上边结合图例进行认证:

图片 11

来得出来的宏图布局须求填满整个显示屏

图片 12

填满的同时要留意控件不要被大圆角和传感器部分所遮挡

图片 13

图片 14

 

有惊无险区域以外的局部不允许有其余与用户交互的控件

上边那张图内含消息略多

尾部导航栏不予许实行用户交互的,意味着下边那三种景况 Apple
官方是不容许的

图片 15

图片 16

底层虚拟区是顶替了守旧home键,中度为34pt,通过上海滑稽剧团可呼起多职分管理,考虑到手势争持,那有个别也是不容许有此外可互相的控件,不过设计的背景图要遮盖到非安全区域

场馆栏在非安全区域,文书档案中也论及,除非能够因而隐藏状态栏给用户带来拾分的价值,不然最棒把状态栏还给用户

重复使用现有图片时,注意长度宽度比差别。诺基亚 X 与正规 一加的显示器长度宽度比差异,因而,全屏的 4.7 寸屏图像在 魅族 X
上会现身裁切或适配宽度展现。所以,那部分的视图必要根据设备做出适配。

图片 17

小心类似占位图的适配

准实时查询 => 百微秒实时查询上亿数据量

3.6:设备音讯

if ([deviceString isEqualToString:@”iPhone10,1″])  return @”iPhone
8″;

if ([deviceString isEqualToString:@”iPhone10,4″])  return @”iPhone
8″;

if ([deviceString isEqualToString:@”iPhone10,2″])  return @”iPhone 8
Plus”;

if ([deviceString isEqualToString:@”iPhone10,5″])  return @”iPhone 8
Plus”;

if ([deviceString isEqualToString:@”iPhone10,3″])  return @”iPhone
X”;

if ([deviceString isEqualToString:@”iPhone10,6″])  return @”iPhone
X”;

 

详尽见参考链接吧, 别的不多说了.

应用场景 :

适配iOS11&摩托罗拉X的一部分坑

http://www.cocoachina.com/ios/20170921/20623.html

http://www.jianshu.com/p/26fc39135c34

http://www.jianshu.com/p/efbc8619d56b

http://www.jianshu.com/p/efbc8619d56b

http://www.jianshu.com/p/efbc8619d56b

http://blog.csdn.net/keep_moving31038/article/details/77685591

http://blog.csdn.net/u013263917/article/details/72895728

https://mp.weixin.qq.com/s/mpjMa-ZfftuG5rR6OApC5A

http://www.jianshu.com/p/a6e5cc20a008

https://github.com/XuYang8026/UniversalProject

http://www.jianshu.com/p/e97581110a59

https://www.cnblogs.com/Hakim/p/7566922.html

https://useyourloaf.com/blog/supporting-iphone-x/

交通,金融,电商,移动…

 

概念与定点

概念:

怎么着抉择合适hbase的本子

官网版本 => https://archive.apache.org/dist/hbase/ => 较新

cdh版本 => http://archive.cloudera.com/cdh5/ => 较稳定,包容性优。

固定:认识hbase在hadoop2.x生态系统中的定位

图片 18

 

架构种类与布署模型

架构种类:

图片 19

宏观图分析:
hbase内部有多个至关心保养要的历程服务 => Master/RegionServer

hbase看重与多个外表服务 =>
HDFS(hbase的多少是依照HDFS存款和储蓄的,也等于说写入hbase的多寡最后落入到HDFS分布式文件系统中)/ZooKeeper(分布式的框架)

 regionserver管理集群上面包车型地铁数额。会立刻报告音信(状态和管理内容)给master服务。也会告知zookeeper。

 

设计模型:

关系型数据库:只须求规划数据库的列。并且要鲜明列的值,才能对数码进行操作。

hbase:面向列(列蔟)的数据库,不须要先制定列。只须求设定列蔟。

图片 20

诸如下图

图片 21

在hbase表设计的时候,只必要规定column family即可。column family
的子列不必要制定,子列的生成是数码的动态增添而自动生成的。

表结构数据模型表达:

图片 22

图片 23

 

列蔟的定义:

 图片 24

hbase数据库与关系型数据的对待:

图片 25

 

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注