047*:方法签名有什么作用?事务?索引?多态?Images.xcassets?图片大小计算?影响因素?isEqual和hash方法?

一:方法签名

计算机程序包括许多使人工任务自动化的算法。这些程序被分成小的模块化组件,这些组件被称为方法和函数。每个方法都有一个特定的格式来描述它在程序中的作用。方法签名是方法的形式定义,它提供了对该功能的高级描述。计算机操作在软件开发中使用了许多计算机语言。

每种语言都有创建方法签名所需的特定格式。这通常包括输入和输出参数的描述,它定义了方法的工作方式。函数名是方法签名中最重要的部分之一。此名称应特定于所使用的函数类型。大多数编程语言使用标准来定义该程序的方法的正确命名。java编程语言需要相当详细的方法签名与其他语言相比。方法签名格式要求方法参数、返回值、方法名称,以及方法的安全限制。这些签名限制在正常操作期间由编程语言管理。方法签名是模块在软件程序中如何工作的定义。此签名被视为模块的使用者和生产者之间的正式合同。签名提供如何在编程语言中使用方法的定义。大多数编程语言都包含定义语言中可用函数的支持手册。这些方法帮助开发人员在程序中执行自动化任务。这些手册包括所使用的每个方法签名的详细说明在一个软件编程方法中,它定义了一个软件将如何操作的方法更改现有的签名可能会对客户的操作产生负面影响。这些方法通常通过一个称为“弃用”的正式过程进行更改,它会随着时间慢慢改变方法定义。方法的参数是必须传递给函数才能正常工作的必需数据值。这些参数包括值类型、序列顺序和默认设置。签名描述传递给函数的参数。方法的返回值签名是函数完成后将返回给使用者的内容。此值通常是一个直观的数据值。例如,名为“GetCurrentDate”的方法可能具有当前日期的返回值 

二:事务

1、事务是什么      

       事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。

2、事务的四大特性 

      数据库事务 transanction 正确执行的四个基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。

      (1)原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
      (2)一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
      (3)隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,  必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
      (4)持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

三:索引

索引的作用:创建索引能够大大的提高系统的性能

优点:

  ①通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性

  ②大大加快数据的检索速度,这也是创建索引的最主要原因

  ③加快表与表之间的连接,在实现数据的参考完整性方面特别有意义

  ④在使用分组和排序,子句进行数据检索时,同样可以显著减少查询中分组和排序的时间

  ⑤通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

缺点:

  ①创建索引和维护索引需要时间,这种时间随着数据量的增加而增加

  ②索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占物理空间,如果要建立聚簇索引,需要的空间更大

  ③当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这就降低了数据的维护速度。

索引是创建在数据库的表中的列上。因此,在创建索引的时候,要考虑哪些列上适合加索引,那些列上不适合加索引。

四:多态

多态在代码中的体现即父类指针指向子类对象。

#import <Foundation/Foundation>
//声明一个Animal类,该类继承自NSObject
@interface Animal : NSObject
//在Animal类中声明一个eat的对象方法
-(void) eat;
@end


#import "Animal.h"
/**eat方法的实现*/
@implementation Animal-(void) eat{
    NSLog(@"动物吃东西");
}
@end


#import "Animal.h"
/**Dog类继承自Animal类,拥有了Animal类的所有属性跟方法*/
@interface Dog : Animal
//在子类中声明了父类中已经有的eat方法,这称之为方法的重写
-(void) eat;
@end


#import "Dog.h"
@implementation Dog
/** 重写eat*/
-(void) eat{
    NSLog(@"狗吃东西");
}
@end


#import <Foundation/Foundation>
#import "Animal.h"
#import "Dog.h"

int main(){

    //Dog类型的指针指向Dog类型的对象
    Dog * dog=[[Dog alloc] init];
    
    .//Dog类对象调用对象方法
    [dog eat];
    
    //多态
    //父类指针指向子类对象
    Animal * a=[[Dog alloc] init];
    //这里调用的是Dog类中的eat方法
    [a eat];
    
    //Animal类型的指针指向Animal类型的对象
    Animal * a1=[[Animal alloc] init];
    [a1 eat];
    
    //下面都是多态的体现
    NSObject *n=[[Dog alloc] init];
    //[n eat] //不能这样调用
    NSObject * n1=[[Animal alloc] init];
    
return 0;
}

多态使用总结

(1)没有继承就没有多态

(2)代码的体现:父类类型的指针指向子类对象

(3)好处:如果函数方法参数中使用的是父类类型,则可以传入父类和子类对象,而不用再去定义多个函数来和相应的类进行匹配了。

(4)局限性:父类类型的变量不能直接调用子类特有的方法,如果必须要调用,则必须强制转换为子类特有的方法。

五:Images.xcassets?图片大小计算?影响因素?

1:将图片放入Images.xcassets

  • 在mainBundle里面Xcode会生成一个Assets.car文件,将我们放在Images.xcassets的图片打包在里面。(程序会变大(?))
  • 无论是通过imageNamed:来加载图片,还是直接在Storyboard的UIImageView里面设置图片,并且无论图片是jpg格式还是png格式,都不需要写后缀名。
  • 放在Images.xcassets的图片不能通过imagesWithContentsOfFile:来加载。(因为这个方法相当于是去mainBundle里面找图片,但是这些图片都被打包进了Assets.car文件)

2:直接拖入图片

  • 直接拖入图片相当于直接将图片放入了mainBundle里面。

  • 如果在Storyboard的UIImageView设置图片,那么需要明确地写上后缀名。(无论是.png还是.jpg都要写)

  • 在使用imageNamed:加载图片时,如果是.png格式,则不需要使用后缀名;如果是.jpg格式,则必须要写上后缀名。

3:图片大小计算:解码成位图,位图大小和什么有关?
首先图片自动缩放到2的n次方大小,例如200 * 300像素 会变成256 * 512大小。

图片内存大小的计算公式 宽度 * 高度 * bytesPerPixel/8。

bytesPerPixel : 每个像素所占的字节数。

RGB颜色空间下 每个颜色分量由8位组成

但是通常情况下颜色还有alpha通道也是8位 也就是传说中的RGBA

所以总共是32位

所以一般图片的计算公式是 w*h*4 

256 * 512 * 4/ 1024 / 1024 = 0.5M  

当然我没有实际测试过

4:图片的大小有这么几个参数

1:图象的位数 8/16/32位

2:每平方英寸的像素点 72为基础 大的还有300以上的

3:分辨率 即总像素率 1024*768等等

就这么三个大的因素

 

六:isEqual和hash方法

isEqual需要判断hash指针是否相等,相等需要判断对象是否相等(解决hash冲突)。

 

根据上面的描述,大概应该能知道两者的关系了,注意这两者的关系并不是因为两者内部方法实现调用了彼此,纯粹在当前应用场景下,为了达到判等的最佳实践:

hash值是对象判等的必要非充分条件

1:如果isEqual==YES,对象相等,hash值以定向等

2:如果两个对象hash返回相等,不一定相等,需要继续通过isEqual来判等(hash可能重复的,hash冲突)

 

posted on 2020-12-27 21:59  风zk  阅读(163)  评论(0编辑  收藏  举报

导航