不倒翁的原理(不倒翁不倒的原理20字)
- 时间:
- 浏览:74
- 来源:奥一装修网
真人不倒翁怎么做到的
中南大学今天,在青岛奥林匹克帆船中心,与我的团队一起,我拥有了完美的帆船体验。对于龙骨帆船的解释,每个人都饶有兴趣地倾听并被深深吸引。因为教练说龙骨帆船不会倾覆,这突然颠覆了我以前的看法。帆船的最大倾斜角度为°,通常在船侧与水面之间会相差一米。当°倾斜时,即船舷靠近海面。此时,当与海平面的角度为度时,帆船将不会继续倾斜。水手和船长将通过一系列操作返回帆船。调节帆,船长调节舵,最重要的一点是帆船的龙骨与不倒翁的原理相似。底部有一个配重,它使帆船产生反作用力,并再次将帆船压向角度°。帆船在海上的航行方式非常独特。这是左右晃动并来回点头的一种方式。青岛是帆船之都,青岛奥帆中心也是帆船之港。当您来到青岛奥林匹克帆船中心时,琳琅满目的帆船会让您充满激情。在风浪帆船俱乐部,您使用的所有帆船均使用世界一流的龙骨形帆船,使您的体验更加精彩。乘风破浪,这是一次值得的旅行!
上一篇文章中的详细说明随附于采访问题。总结了基本原理,主要进行了介绍。在本章中,我们将更深入地研究内部结构。在上述源代码的内部结构之后,您可以在此处找到,也就是说,这是一个可读可写的表结构。方法列表,属性列表和协议列表存储在其中。让我们看一些代码。在上面的源代码中,并且实际上是二维数组。例如,它本身就是一个数组。该数组包含该数组,最终存储为二维数组,该数组是可读可写的。它包含类的初始内容和分类的内容。以此处的示例说明结构。还有存储方法,属性和协议列表,以及成员变量列表。部分代码可以看作是只读的。内部直接存储是一堆类型和类型的数组。该数组存储该类的初始化信息。例如,数组中的直接存储是只读的,但不允许添加,删除和更改。以方法列表为例,二维数组中的结构可读可写,因此可以动态添加方法,添加分类方法更加方便。在函数中,这两种方法通过两种操作被合并到该类别的方法列表中。
首先,类的方法,属性,成员变量,属性协议等存储在中间。运行程序时,类别中的列表需要与类的初始列表合并。列表和类别中的列表被组合并存储在中间,这意味着某些列表是从内部获取的。最后与分类方法合并。这可以反映在源代码中。可以发现,该类的初始信息最初存储在并且最初指向,即它是在操作期间创建的,并且创建了指针,并且初始信息被分配给中间。最后,通过设置。因此,此时获得的结果是稍后检查是否存在分类,同时将分类方法,属性和协议列表集成并存储在方法,属性和协议列表中。以最后的示例为例,方法和函数的封装最终存储在其中,每个方法对象都是一个。结构中有一个成员变量。源代码中的以下内容代表方法函数的名称,通常称为选择器。底层结构相似。是的,可以将其视为方法名称字符串。它可以传递和获取,也可以转换为字符串。对于不同类中具有相同名称的方法,相应的方法选择器相同。它仅表示方法的名称,并且不同类中的相同方法名称是全局唯一的。包含函数返回值,参数编码字符串。通过字符串串联将返回值和参数拼接成一个字符串,以表示函数的返回值和参数。我们可以编写一个类来模拟内部实现,并通过强制转换来探索内部数据。可以在断点中找到的值就是可以在上图中看到的值。为了清楚地使用字符串表示方法及其返回值,Apple开发了一系列相应的规则。您可以通过下表看到一对一的对应关系。将关系的值与表中的一对一比较进行比较。该值代表什么。任何方法都有两个默认参数,分别是type和type,上面的分析也验证了此语句。为了更清楚地看到,我们将返回值和查看参数后的值相加。同样,通过上表找到一对一的对应值。 Apple提供的值表示的方法提供了可以将特定类型转换为字符串编码的指令。代表功能的特定实现,存储的内容是功能地址。换句话说,找到后,您可以找到函数实现,然后调用该函数。
但是当多次继承的子类想要调用基类方法时,需要通过指针逐层查找基类,然后从基类方法列表中找到对应的方法以进行调用。如果多次调用基类方法,则需要遍历每个父类的方法列表,这会浪费性能。苹果通过方法缓存的形式解决了这个问题。回到类对象结构,成员变量用于缓存方法。方法调用过程:调用方法时,需要浏览方法列表以进行搜索。如果该方法不再在列表中,它将找到父类对象,然后转到父类对象方法列表进行遍历和查找。如果需要多次调用该方法,则等效于为每个调用遍历多个方法列表。为了快速找到该方法,Apple设计了对该方法进行缓存。每当调用一个方法时,它都会先去查找是否有一个缓存的方法,如果没有缓存,然后转到类对象方法的列表,依此类推,直到找到该方法,该方法将被存储。下次直接调用。再次调用此方法时,您将在类对象中找到此方法并直接调用它。该方法如何缓存?首先,让我们看一下内部结构。方法列表存储在数组中。查看内部结构,从源代码中可以看到,求和和存储方法以该函数实现的内存地址的形式存储。使用图片显示结构。上面的列表称为哈希表哈希表(也称为哈希表),它是一种基于键码值()直接访问的数据结构。换句话说,它通过将键代码值映射到表中的某个位置来访问记录以加快搜索速度。该映射函数称为哈希函数,而存储记录的数组称为哈希表。那么,Apple如何快速,准确地在哈希表中找到相应的功能实现?这要求我们查看源代码,以了解Apple的哈希表功能是如何设计的。首先看存储的源代码,主要看一些功能。通过上面的源代码,您可以看到该函数负责分配哈希表空间,并且位于函数内部。传递到上述源代码中的第一个函数是枚举值,即。因此,哈希表创建的空间就是这样。当哈希表的空间用完时,哈希表将调用一个函数进行扩展。让我们看一下函数中的哈希表如何扩展。
最后,看看如何快速在哈希表中找到对应的?我们来到函数内部的函数,通过查找方法来查找存储在哈希表中的下标。谈到函数时,我们发现里面的函数只是按位与运算,下标存储在对应的位置。通过上面的分析,我们知道该值是哈希表的长度,那么在任意数目的按位AND运算之后获得的值将小于或等于,因此不会发生数组溢出。例如,假设哈希表的长度为,则该值为第一次使用该方法时,在消息机制找到该方法之后,该方法将以该方法认为的方式进行缓存,第一次存储,创建一个带空格的哈希表,并将其设置为哈希表的长度,然后计算该方法存储的下标值,并将该方法存储在哈希表中。例如,如果计算下标值,则该方法将直接存储在下标所在的空间中,并且前一个空格将保留为空白。当存储在哈希表中的方法所占用的长度超过哈希表的长度时,哈希表将被扩展,将创建一个新的哈希表,并将该空间扩展为原始空间的两倍,并重置该值,最后将释放旧的哈希表,如果此时尚有任何缓存方法,则需要再次计算下标值,然后根据下标进行存储。如果一个类中有许多方法,则可能有多个方法将获得相同的下标值,则将调用该函数来存储下标值位。如果下标值位空间中有一种存储方法,并且与要存储的存储方法不同,请转到上一位进行比较,直到找到没有相同存储方法的空间。作为要存储的那个,如果到达下标,则将转到下标标记的空间,即最大比较空间。当您要查找方法时,不需要遍历哈希表。您还可以计算下标值,然后直接转到下标值的空间。如上所述,如果下标中存储的值与您要查找的值不同,则转到上一个。尽管此方法占用的空间很小,但可以节省大量时间,也就是节省时间。