iPhone屏幕尺寸、分辨率及适配


目录(?)[-]

  1. iPhone尺寸规格
  2. 单位inch英吋
  3. iPhone手机宽高
  4. 屏幕尺寸
  5. 像素密度PPI
  6. 缩放因子scale factor between logic point and device pixel
    1.     1Scale起源
    2.     2UIScreenscale
    3.     3UIScreennativeScale
    4.     4机型判别
  7. Resolutions Rendering
  8. 2x3x以及高倍图适配
    1.     12x
    2.     23x
    3.     3高倍图文件命名
  9. Screen Bounds  Application Frame
    1.     1UIScreenbounds
    2.      2UIScreennativeBounds
    3.     3UIScreenapplicationFrame
    4.     4bounds和frame的区别
  10. 机型尺寸适配Screen Scale Adaption
    1.     1按宽度适配
    2.     2按高度适配
    3.     3按字体适配
  11. UI相对布局
  12. DEPRECATED API适配

1.iPhone尺寸规格

设备

iPhone

Width

Height

对角线

Diagonal

逻辑分辨率(point)

Scale Factor

设备分辨率(pixel)

PPI

3GS

2.4 inches (62.1 mm)

4.5 inches (115.5 mm)

3.5-inch

 

320x480

@1x

320x480

163

4(s)

2.31 inches (58.6 mm)

4.5 inches (115.2 mm)

3.5-inch

320x480

@2x

640x960

326

5c

2.33 inches (59.2 mm)

4.90 inches (124.4 mm)

4-inch

320x568

@2x

640x1136

326

5(s)

2.31 inches (58.6 mm)

4.87 inches (123.8 mm)

4-inch

320x568

@2x

640x1136

326

6

2.64 inches (67.0 mm)

5.44 inches (138.1 mm)

4.7-inch

375x667

@2x

750x1334

326

6+

3.06 inches (77.8 mm)

6.22 inches (158.1 mm)

5.5-inch

414x736

@3x

(1242x2208->)

1080x1920

401 

2.单位inch(英吋

    1 inch = 2.54cm = 25.4mm

3.iPhone手机宽高

    上表中的宽高(width/height)为手机的物理尺寸,包括显示屏和边框。

    以下为iPhone4s的宽高示意图:

4.屏幕尺寸

    我们通常所说的iPhone5屏幕尺寸为4英寸、iPhone6屏幕尺寸为4.7英寸,指的是显示屏对角线的长度(diagonal)。

    以下为iPhone5~6+的屏幕尺寸规格示意图:

5.像素密度PPI

    PPI(Pixel Per Inch by diagonal):表示沿着对角线,每英寸所拥有的像素(Pixel)数目。

    PPI数值越高,代表显示屏能够以越高的密度显示图像,即通常所说的分辨率越高、颗粒感越弱。

 

    根据勾股定理,可以得知iPhone4(s)的PPI计算公式为:

    计算结果稍有出入,这是因为像素的离散采样有锯齿效应。

6.缩放因子scale factor between logic point and device pixel)

    (1)Scale起源

    早期的iPhone3GS的屏幕分辨率是320*480(PPI=163),iOS绘制图形(CGPoint/CGSize/CGRect)均以point为单位(measured in points):

    1 point = 1 pixel(Point Per Inch=Pixel Per Inch=PPI)

    后来在iPhone4中,同样大小(3.5 inch)的屏幕采用了Retina显示技术,横、纵向方向像素密度都被放大到2倍,像素分辨率提高到(320x2)x(480x2)= 960x640(PPI=326), 显像分辨率提升至iPhone3GS的4倍(1个Point被渲染成1个2x2的像素矩阵)。

    但是对于开发者来说,iOS绘制图形的API依然沿袭point(pt,注意区分印刷行业的“磅”)为单位。在同样的逻辑坐标系下(320x480):

    1 point = scale*pixel(在iPhone4~6中,缩放因子scale=2;在iPhone6+中,缩放因子scale=3)。

    可以理解为:

    scale=绝对长度比point/pixel)=单位长度内的数量比pixel/point)

 

    (2)UIScreen.scale

    UIScreen.h中定义了该属性:

    // The natural scale factor associated with the screen.(read-only)

    @property(nonatomic,readonly) CGFloat scale  NS_AVAILABLE_IOS(4_0);

    --------------------------------------------------------------------------------

    This value reflects the scale factor needed to convert from the default logical coordinate space into the device coordinate space of this screen.

    The default logical coordinate space is measured using points. For standard-resolution displays, the scale factor is 1.0 and one point equals one pixel. For Retina displays, the scale factor is 2.0 and one point is represented by four pixels.

    --------------------------------------------------------------------------------

    为了自动适应分辨率,系统会根据设备实际分辨率,自动给UIScreen.scale赋值,该属性对开发者只读。

    (3)UIScreen.nativeScale

    iOS8新增了nativeScale属性:

    // Native scale factor of the physical screen

    @property(nonatomic,readonly) CGFloat nativeScale NS_AVAILABLE_IOS(8_0);

    以下是iPhone6+下的输出,初步看来nativeScale与scale没有太大区别:

    --------------------------------------------------------------------------------

        (lldb)p (CGFloat)[[UIScreen mainScreen] scale]
        (CGFloat) $1 = 3
        (lldb) p(CGFloat)[[UIScreen mainScreen] nativeScale]
        (CGFloat) $2 = 3

    --------------------------------------------------------------------------------

    (4)机型判别

    在同样的逻辑分辨率下,可以通过scale参数识别是iPhone3GS还是iPhone4(s)。以下基于nativeScale参数,定义了探测机型是否为iPhone6+的宏:

    --------------------------------------------------------------------------------

    // not UIUserInterfaceIdiomPad
    #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    // detect iPhone6 Plus based on its native scale
    #define IS_IPHONE_6PLUS (IS_IPHONE && [[UIScreenmainScreen] nativeScale] == 3.0f)

    --------------------------------------------------------------------------------

    那么,同样的分辨率和scale,如何区分机型iPhone4与4s、iPhone5与5s呢?通过[[UIDevice currentDevice] model]只能判别iPhone、iPad、iPod大类,要判断iPhone具体机型型号,则需要通过sysctlbyname("hw.machine")获取详细的设备参数信息予以甄别。

7.Resolutions &Rendering

8.@2x/@3x以及高倍图适配

    (1)@2x

    @2x means the same “double”retina resolution that we’veseen on all iOS devices with retina displays to date, where each virtual pointin the user interface is represented by two physical pixels on thedisplay in each dimension, horizontal and vertical.

    iPhone3GS时代,我们为一个应用提供图标(或按钮提供贴图),只需要icon.png。针对现在的iPhone4~6 Retina显示屏,需要制作额外的@2x高分辨率版本。

    例如在iPhone3GS中,scale=1,用的图标是50x50pixel(logicalimage.size=50x50point);在iPhone4~6中,scale=2,则需要100×100pixel(logical image.size=50x50point,乘以image.scale=dimensions in pixels),并且命名为icon@2x.png。

    如果APP要同时兼容iPhone3GS~iPhone6,则需要提供icon.png/icon@2x.png两种分辨率的图片。

    (2)@3x

    @3x means a new “triple” retina resolution, where eachuser interface point is represented by three display pixels. A single @2x pointis a 2 × 2 square of 4 pixels; an @3x point is a 3 × 3 square of 9 pixels.”

    iPhone6+在实际渲染时,downsampling/1.15(1242x2208->1080x1920),准确的讲,应该是@2.46x。苹果为方便开发者用的是@3x的素材,然后再缩放到@2.46x上。

    参考:《为什么iPhone 6 Plus要将3x渲染的2208x1242分辨率缩小到1080p屏幕上?》《详解 iPhone 6 Plus 的奇葩分辨率》《iPhone 6 Plus屏幕分辨率》

    如果APP要同时兼容iPhone3GS~iPhone6+,则需要提供icon.png/icon@2x.png/icon@3x.png三种分辨率的图片。

    需要注意的是,iOS APP图标的尺寸和命名都需要遵守相关规范。

    (3)高倍图文件命名

    对于iPhone3、4/5/6、6+三类机型,需要按分辨率提供相应的高倍图并且文件名添加相应后缀,否则会拉伸(stretchable/resizable)失真(模糊或边角出现锯齿)。
    以下基于UIImage的两类初始化API简介高倍图的适配:
    <1>+imageNamed:该方法使用系统缓存,适合表视图重复加载图像的情形。同时该API根据UIScreen的scale,自动查找包含对应高倍图后缀名(@2x)的文件,如果没找到设置默认image.scale=1.0。因此,使用该方法,无需特意指定高倍图后缀。在实际运行时,系统如果发现当前设备是Retina屏(scale=2),会自动寻找"*@2x.png"命名格式的图片,加载针对Retina屏的图片素材,否则会失真。
    <2>+imageWithContentsOfFile/+imageWithData:(scale:)/-initWithContentsOfFile:/-initWithData:(scale:)
    这组方法创建的UIImage对象没有使用系统缓存,并且指定文件名必须包含明确的高倍图后缀。如果文件名包含@2x后缀,则image.scale=2.0;否则默认image.scale=1.0,同样对于Retina屏将会失真。
    <3>目前,适配iPhone6+时,除了一些铺满全屏的大图(LogoIcon、LaunchImage)需提供三倍图,其他的小图仍可沿用原有的二倍图自适应拉伸。

9.Screen Bounds Application Frame

    (1)UIScreen.bounds

    // Bounds of entire screen in points(本地坐标系,起点为[0,0])

    @property(nonatomic,readonly) CGRect bounds

    --------------------------------------------------------------------------------

    //考虑转屏的影响,按照实际屏幕方向(UIDeviceOrientation)的宽高

    #define SCREEN_WIDTH ([UIScreenmainScreen].bounds.size.width)

    #define SCREEN_HEIGHT ([UIScreenmainScreen].bounds.size.height)

    #define STATUSBAR_HEIGHT ([UIApplicationsharedApplication].statusBarFrame.size.height)

    //不考虑转屏的影响,只取竖屏(UIDeviceOrientationPortrait)的宽高

    #define SCREEN_WIDTH MIN([UIScreenmainScreen].bounds.size.width, [UIScreenmainScreen].bounds.size.height)

    #define SCREEN_HEIGHT MAX([UIScreenmainScreen].bounds.size.height, [UIScreenmainScreen].bounds.size.width)

    #define STATUSBAR_HEIGHT MIN([UIApplicationsharedApplication].statusBarFrame.size.width, [UIApplicationsharedApplication].statusBarFrame.size.height)

    --------------------------------------------------------------------------------

     (2)UIScreen.nativeBounds

    iOS8新增了nativeBounds属性,输出竖屏像素级分辨率:

    // The bounding rectangle of the physical screen,measured in pixels. (read-only)
    // This rectangle is based on the device in a portrait-up orientation. This value does not change as the device rotates.

    @property(nonatomic,readonly) CGRect nativeBounds NS_AVAILABLE_IOS(8_0);

    以下是iPhone6+下的输出:

    --------------------------------------------------------------------------------

       (lldb) poNSStringFromCGRect([(UIScreen*)[UIScreen mainScreen] bounds])
        {{0, 0}, {414, 736}}
        (lldb) poNSStringFromCGRect([(UIScreen*)[UIScreen mainScreen] nativeBounds])
        {{0, 0}, {1242, 2208}}

    --------------------------------------------------------------------------------

    (3)UIScreen.applicationFrame

    // Frame of application screen area in points (i.e.entire screen minus status bar if visible)

    // bounds除去系统状态栏

    @property(nonatomic,readonly) CGRect applicationFrame

    --------------------------------------------------------------------------------

    // APPFRAME_WIDTH=SCREEN_WIDTH

    #define APPFRAME_WIDTH ([UIScreen mainScreen].applicationFrame.size.width)

    // APPFRAME_HEIGHT=SCREEN_HEIGHT-STATUSBAR_HEIGHT

    //注意:横屏(UIDeviceOrientationLandscape)时,iOS8默认隐藏状态栏,此时APPFRAME_HEIGHT=SCREEN_HEIGHT

    #define APPFRAME_HEIGHT ([UIScreen mainScreen].applicationFrame.size.height)

    -------------------------------------------------------------------------------- 

    (4)bounds和frame的区别

    下图展示了bounds和frame的区别:

 

10.机型尺寸适配Screen Scale Adaption

    从iPhone3GS/iPhone4(s)过渡到iPhone5(s)时,在逻辑上宽度不变高度稍高,之前旧的素材和布局通过AutoresizingFlexible简单适配即可运行得很好,但由于高宽比增大,上下两端出现黑粗边(典型如LaunchImage)。从分辨率的角度来看,除了需要提供LaunchImage这种满屏图,其他基本沿用二倍图(@2x);从屏幕尺寸角度来看,需要对纵向排版略加调整。

 

    从iPhone5(s)发展到iPhone6(+),由于高宽比保持不变,iOS对图标、图片、字体进行等比放大自适应,清晰度会有所降低。同时,绝对坐标布局会导致在大屏下出现偏左偏上的问题。从分辨率的角度来看,iPhone6沿用二倍图(@2x),但需为iPhone6+提供更高的三倍图(@3x);从屏幕尺寸角度来看,需要重新对UI元素尺寸和布局进行适配,以期视觉协调。

    (1)按宽度适配

    我们先来看一下iPhone4~6(+)的屏幕高宽比:

       iPhone4(s):分辨率960*640,高宽比1.5
       iPhone5(s):分辨率1136*640,高宽比1.775
       iPhone6:分辨率1334*750,高宽比1.779
       iPhone6+:分辨率1920*1080,高宽比1.778
    可粗略认为iPhone5(s)、6(+)的高宽比是一致的(16:9),即可以等比例缩放。因此可以按宽度适配
        fitScreenWidth= width*(SCREEN_WIDTH/320)
    这样,共有iPhone3/4/5、6、6+三组宽度,在iPhone6、6+下将按比例横向放大。

    (2)按高度适配

    在同样的宽度下,iPhone4(s)的屏高比iPhone5(s)低,若纵向排版紧张,可以iPhone5(s)为基准,按高度适配
        fitScreenHeight= height*(SCREEN_HEIGHT/568)
    共有iPhone3/4、5、6、6+四组高度,在iPhone3/4下将按比例纵向缩小,在iPhone6、6+下将按比例纵向放大。

    这里需要注意iPhone/iOS双环上网的热点栏对纵向布局的影响:iPhone作为个人热点且有连接时,系统状态栏下面会多一行热点连接提示栏"Personal Hotspot: * Connection",纵向会下压20pt,[UIApplication sharedApplication].statusBarFrame高度变为40pt;当所有连接都断开时,热点栏消失,纵向高度恢复正常为20pt。详情可参考《iPhone/iOS开启个人热点的纵向适配小结》。

    (3)按字体适配

    另外,iPhone的【设置】【通用】【辅助功能】中可以设置调节【更大字体】,APP也可以按字号适配
    例如适配表视图(UITableView:UIScrollView),无法左右滑动,因此无论字号缩放比例多大,横向都不应超过SCREEN_WIDTH。注意限定控件元素内容区域宽度以及间距,并设置适当的LineBreakMode。表视图支持上下滑动,因此纵向上的表格行高和内容区域高度可按字号缩放。

    对于纵向也不支持滑动的视图,在屏幕可见视区内排版时,最好不要随字号缩放,否则可能超出既定宽高。

11.UI相对布局

    考虑到iPhone机型的多样性,不可能针对iPhone4(s)、5(s)、6、6+四种屏幕尺寸出四套视觉交互稿,也不要基于某一机型从上往下、从左往右给绝对标注,而应该关注subView在superView中的相对位置(EdgeInsets/Frame/Center)以及siblingView之间的偏移(Offset),尽量给出适合Autolayout的相对布局比例(理想情况是只给百分比)。假如交互按照iPhone5(s)下绝对标注,则在iPhone4(s)上可能挤出屏幕底部,而在iPhone6(+)上则可能横向偏左或纵向偏上。

 

    开发人员基于与屏幕边缘的间距(Margin/EdgeInsets),定位边缘处的控件(钉钉子)作为参照,然后基于控件尺寸和间隙进行相对计算排版。这样,若钉子移动,相邻控件将顺向偏移,不会因为局部调整而出现凌乱

    苹果在WWDC2012 iOS6中就已提出了Auto Layout的概念,即使用约束条件来定义视图的位置和尺寸,以适应不同尺寸和分辨率的屏幕。

12.DEPRECATED API适配

    最后,除了对屏幕尺寸和分辨率进行适配之外,还需对iOS SDK中相关的DEPRECATED API进行适配。典型的如:

    (1)UILineBreakMode->NSLineBreakMode
    (2)UITextAlignment->NSTextAlignment
    (3)sizeWithFont:->boundingRectWithSize:
    (4)stretchableImageWithLeftCapWidth:topCapHeight:->resizableImageWithCapInsets:

    (5)...

 

参考:

《iOS设备的屏幕尺寸、分辨率及其屏幕边长比例》
《iOS判断设备屏幕尺寸、分辨率》
《iOS8中的UIScreen》
《Detecting iPhone 6/6+ screen sizes in point values》
《iOS8已出,@3x图让我们何去何从?》
《在Xcode 6中用矢量化PDF(vectorized PDF)来支持各种尺寸的iPhone》
《iOS8适配须知》
《适配iOS8备忘录》
《iOS界面适配(一)(二)(三)》
《iPhone 6/6+适配心得》
《iOS8/Xcode6/iPhone6(+)适配》
《APP适配iOS8,iPhone6(+)截图简要说明》
《按比例快速兼容适配iPhone6/6 Plus》
《iOS的APP如何适应iPhone 5s/6/6+三种屏幕的尺寸?》

 

转载于:https://www.cnblogs.com/Sucri/p/4825408.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle中的and用法,Oracle bitand( )函数简介

Oracle bitand( )函数在Oracle数据库中是很常见的&#xff0c;下面就为您详细介绍Oracle bitand( )函数的用法&#xff0c;如果您感兴趣的话&#xff0c;不妨一看。Oracle bitand( )函数&#xff1a;返回两个数值型数值在按位进行AND 运算后的结果。语法BITAND(nExpression1, n…

Nagios显示器mysql定从库: libmysqlclient.so.18: cannot open shared object file: No such

做mysql的slave时间监控&#xff0c;必须check_mysql文字&#xff0c;check当误差&#xff1a;error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory1&#xff0c;错误信息例如以下&#xff1a;[rootslave…

oracle包如何进入编辑,修改 Oracle 的process和Session

1.process 和session的概念:process:这个参数限制了能够连接到SGA的操作系统进程数(或者是Windows 系统中的线程数),这个总数必须足够大,从而能够适用于后台进程与所有的专用服务器进程,此外,共享服务器进程与调度进程的数目也被计算在内.此外,共享 服务器进程与调度进程的数目…

Head First Python学习笔记4——处理数据

有这么几组数据需要你处理&#xff1a; James  2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22 Julia   2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21 Mikey  2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38 Sarah  2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55 这…

oracle ora 00910,NVARCHAR2字段超长问题:ORA-00910: specified length too long for its datatype

NVARCHAR2字段超长问题&#xff1a;ORA-00910: specified length too long for its datatype前几天在IMP的时候遇到了个问题&#xff1a;IMP-00017: following statement failed with ORACLE error 910:"CREATE TABLE "T_CSL_DYNAITEMDATAENTRY" ("FID&quo…

Swift - 触摸事件(点击,移动,抬起等)说明及用例

在iOS开发中&#xff0c;UIGestureRecognizer可以方便的响应处理手势事件。 而如果要想更精细的处理&#xff0c;我们还需要借助touchesBegan&#xff0c;touchesMoved&#xff0c;touchesEnded等触摸方法。这些方法 都是UIResponder中的方法。视图控制器和视图类&#xff0c;都…

鼠标移动响应php程序,jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】...

本文实例讲述了jQuery实现的响应鼠标移动方向插件用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;HTML代码如下&#xff1a;www.jb51.net jQuery响应鼠标移动*{margin:0;padding:0;}ul,li{list-style:none;}div{font-family:"Microsoft YaHei";}html,bo…

读《大道至简—是懒人造就了方法 》有感

读了大道至简第一章编程的精义之后&#xff0c;我觉得感触颇深&#xff0c;于是乎我又读了第二章是懒人造就了方法 &#xff0c;之后果然没有让我失望&#xff0c;第二章写的也是非常的好&#xff0c;非常的吸引我。 第二章的开头便引用了李冰凿山的故事&#xff0c;在战国时代…

《大道至简》第二篇读后感

今天把周爱民大道至简的第二章关于是懒人造就了方法读了几遍&#xff0c;作者通过战国时李冰凿山与愚公移山的比较来阐述懒人早就方法主题&#xff0c;以前听历史老师讲课的时候正是因为懒人才会有那么多可以节省人们力气和时间的发明&#xff0c;但懒人并不是真的懒&#xff0…

oracle备份磁盘头,ASM 磁盘头信息备份

ASM磁盘头信息保存在每个磁盘的前4K里面&#xff0c;这个信息的备份对于ASM的恢复非常重要&#xff0c;有下面的几种方法1.直接做dd来备份磁盘的前4K&#xff0c;磁盘头信息丢失时&#xff0c;dd回来 备份&#xff1a;dd if/dev/raw/raw1 of/gyj/asmheader.dd bs4096 coun…

var s=+newDate();的用法,表示对应的时间截

var snewDate(); var snewDate(); 解释如下:是不存在的; new Date()是一个东西; 相当于.valueOf(); 看到回复补充一下.getTime()这个也是得到毫秒数 //4个结果一样返回当前时间的毫秒数alert(new Date());alert(new Date);var snew Date();alert(s.valueOf()); alert(s.getTime…

asp控制oracle,asp下用OracleInProcServer完成对Oracle的连接和操作

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼tblnamerequest("tb")Dim objOraSession,objOraDbDim strDbUser,strDbPwd,strDbConnCall ConnectDB()Sub ConnectDB() 连接数据库On Error Resume NextstrDbUser "liujincai" 连接用户名strDbPwd "ljc1…

jitpack让使用第三方依赖库更简单

在开发过程中&#xff0c;使用第三方优秀依赖库是个很常见的问题&#xff0c;有的时候是maven&#xff0c;或者gradle, 或者sbt,大部分库工程&#xff0c;都会有对应的gradle,maven依赖代码&#xff0c;但是有的没有&#xff0c;尤其是使用的snapshot的依赖的时候&#xff0c;虽…

linux用户命令快捷链接,linux简单命令

linux系统命令是最基础也是最重要的部分&#xff0c;下面由学习啦小编为大家整理了linux简单命令的相关知识&#xff0c;希望对大家有帮助!linux简单命令一、文件和目录家目录为 /home/user 或者 &#xff5e;目录分为两种&#xff1a;绝对目录&#xff0c;从根目录开始写相对目…

Swift - 发送消息(文本,图片,文件等)给微信好友或分享到朋友圈

通过调用微信提供的API接口&#xff0c;我们可以很方便的在应用中发送消息给微信好友&#xff0c;或者分享到朋友圈。在微信开发平台&#xff08;https://open.weixin.qq.com&#xff09;里&#xff0c;提供了详细的说明文档和样例。但由于提供的样例是使用Objective-C写的&…

linux怎么改程序图标,如何在Ubuntu Unity上修改应用程序图标

这篇文章将教大家在Ubuntu Unity上修改应用程序图标&#xff0c;这个教程适合于Ubuntu 14.04, Ubuntu 13.10, Ubuntu 12.04 等使用Unity作为默认桌面环境的发行版。在Unity桌面环境&#xff0c;程序启动器实际上以.desktop为后缀的文件的形式存储在电脑上&#xff0c;所以我们可…

php 大流量网站访问

1&#xff1a;确认服务器硬件能否支持当前流量 2&#xff1a;数据库优化&#xff0c;用到什么字段查什么字段&#xff0c;减轻查询负担。 3&#xff1a;静态化&#xff0c;缓存&#xff0c;减少连库操作。 4&#xff1a;禁止外部盗链&#xff0c;减轻负载压力。 5&#xff1a;控…

linux内核 默认路由表,Linux 默认路由表 0.0.0.0

netstat -nr命令会显示路由表的内容。网关为0.0.0.0的网络通常是直连到网络设备上的。因为到自己的直连设备上是不需要网关的&#xff0c;所以0.0.0.0的网关地址是正常的。目的地址是0.0.0.0的路由是你的缺省网关。在这个例子里,有两个网关&#xff0c;缺省的并且是到255.255.2…

htop linux命令详解,htop使用详解

在管理进程时通常要借助一些工具&#xff0c;比较常用的就是ps和top了&#xff1b;不过CentOS还为我们提供了一个更加强大的工具htop&#xff0c;下面就来了解一下此工具的使用方法。一、安装htophtop工具在epel源中提供&#xff0c;请自行配置epel源&#xff0c;也可以直接下载…

iOS 中的 xml 解析

在ios 中解析xml 的方法有很多种 1.苹果原生 NSXMLParser:SAX方式解析&#xff0c;使用简单 2.第三方框架 libxml2:纯c语言&#xff0c;默认包含在ios sdk中&#xff0c;同时支持DOM 和 SAX 方式解析 GDataXML &#xff1a; DOM方式解析&#xff0c;由谷歌开发&#xff0c;基于…