Atitit 延迟绑定架构法attilax总结

配置文件的延迟绑定1

Api属性与方法的回调延迟绑定1

后期绑定和前期绑定2

延迟调用2

用 Java 语言延迟绑定2

什么是推迟绑定 C++3

配置文件的延迟绑定

通过把配置文件延迟绑定在启动bat文件上,可以及时灵活的切换配置文件。

Api属性与方法的回调延迟绑定

何为延迟绑定呢。这个也比较好理解。libc库中有很多的函数,但是我们编写程序的时候,并不一定会调用libc库中的每个函数,更多的情况下,我们只调用了极少数函数,如果我们将每个函数的地址都解析出来,其实是一种浪费。所以采用的方法是用到函数时再进行对函数的位置进行定位。 这种技术就叫做延迟定位。

动态链接技术,严格的说分成两类,一种是 Load-Time Relocation,这种技术容易理解,但是缺点也比较致命,不能共享,起不到节省内存的目的,目前X86_64已经不提供这种方式;另外一种属于主流的位置无关(PIC)动态库

Position Independent Code (PIC) in shared libraries

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

后期绑定和前期绑定

编程语言能够将对函数(或在面向对象语言中的方法)的声明从其调用中分离出来。可以声明一个方法并使用单独的语法调用这个方法,但最终系统需要将这两者绑到一起。将调用和实现绑到一起的过程叫做绑定。前期先绑定到类型再绑定到实现,还是后期先绑定到类型再绑定到实现,这对一门给定语言的编程体验来说有着显著的影响。大多数面向对象的语言都在后期绑定到实现,从而允许多态性 ,该功能让您能够将许多不同的子类型表示为一种类型。Java 代码和 C 主要在前期的一个编译的步骤里绑定到一种类型。使用此策略,编译器就有足够的信息可以捕获许多不同类型的 bug,比如说方法参数或返回值之间类型的不兼容。

延迟调用

在静态语言中,编译器在编译时直接将调用绑定到实现。动态语言则有些不同。Ruby、Smalltalk 和 Self 依赖于消息传送来延迟绑定。客户机使用消息传送来指定目标对象、消息和参数集。这完全是一个运行机制。所以动态语言有效地添加了一级间接寻址。它们将消息名绑定到一个对象上,

用 Java 语言延迟绑定

Java 社区对静态类型检查的迷恋程度令人惊讶,Java 程序员们正在不遗余力地寻找延迟绑定的方式。有些方法是成功的。诸如 Spring 等框架的存在主要是为了延迟绑定,它有助于减缓客户机和服务之间的耦合。面向方面的编程通过提供能够扩展类的功能(甚至可以超出其当前的功能)的服务来实现延迟绑定。像 Hibernate 这样的框架也可以延迟绑定,

什么是推迟绑定 C++

九公主的悲哀 | 浏览 339 次  2013-01-14 22:05

2015-08-09 16:39最佳答案

1、为每个含有虚函数的类(基类以及派生类)都创建一张虚函数表(VTable,存储于常量区),依次存放虚函数的地址。对于派生类来说,如果没有重写其基类的虚函数,那么,将会在VTable中存放基类的虚函数地址。
2、为每个含有虚函数的类的对象,创建一个指针(VPtr),指向这个类的虚函数表(所以说,同类对象的
VPtr的值是一样的,也就是说,虚函数,在这一点上,类似于类的static函数,是所有对象共有的。)
3、通过强制转换将派生类对象的地址/引用 赋给基类指针/变量(也就是向上类型转换UpCasting)
4、然后,通过基类指针/引用对象 来调用虚函数(即:polymorphic call),就会通过此时基类对象的VPtr指针在所指向虚函数表中寻址(一般是从表头地址开始,加上一定的偏移量)找到相应的函数地址,也就是之前派生类VPtr指针指向的虚函数表的函数地址

晚捆绑(出自《C++编程思想》)或者动态类型。 意思是:一个表达式或者对象的类型直到运行的时候才确定。 与之对应的是晚捆绑(静态类型),意思是一个表达式的类型或者对象的类型在编译的时候就应经确定了。 C++实现玩捆绑使用的是:virtual关键字。virtual 关键字告诉编译器对某个类的某个函数采用晚捆绑机制

对应java里的泛型概念,不管推迟、晚、迟、动态,重点都是在于抽象和“编译器运行时”的对象绑定、理解成实例化也可以。

参考资料

跨越边界_ 延迟绑定.html

Atitit 延迟绑定架构法attilax总结的更多相关文章

  1. Atitit数据库层次架构表与知识点 attilax 总结

    Atitit数据库层次架构表与知识点 attilax 总结 第一阶段,大概理论(三五天 数据库的类型,网状,层次,树形数据库,kv数据库.Oodb Er模型   sql 并发控制与lock  Acid ...

  2. Atitit.jquery 版本号新特性attilax总结

    Atitit.jquery 版本号新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升.尤其是在ie7下: ...

  3. Atitit.jquery 版本新特性attilax总结

    Atitit.jquery 版本新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升,尤其是在ie7下: ...

  4. Atitit osi tcp ip 对应attilax总结

    Atitit osi tcp ip 对应attilax总结 Atitit 网络摄像机又叫IP CAMERA(简称IPC)常见的协议组合 网络摄像机又叫IP CAMERA(简称IPC)由网络编码模块和模 ...

  5. Atitit 编程语言原理与概论attilax总结 三大书籍总结

    Atitit 编程语言原理与概论attilax总结 三大书籍总结 编程语言原理(第10版) 目录: 第1章 预备知识第2章 主要程序设计语言的发展第3章 描述语法和语义第4章 词法分析和语法分析第5章 ...

  6. Atitit 编程语言原理与概论attilax总结

    Atitit 编程语言原理与概论attilax总结 1. 语言的分类1 2. 语言评价标准1 3. 编程语言原理(第10版) 目录: 2 4. 代码之髓:编程语言核心概念2 5. <编程语言实现 ...

  7. Atitit php vs node.js attilax总结

    Atitit php vs node.js attilax总结 1.1. 上手度  还是php 1 1.2. Node.js最大的缺点  异步回调导致可读性差..特别嵌套的时候.. 1 1.1. 上手 ...

  8. Atitit 手机图片备份解决方案attilax总结

    Atitit 手机图片备份解决方案attilax总结 1.1. 图片分类 相机图片与app图片1 1.2. 增量备份,只能使用按照时间法备份..1 1.3. 备份工具选型1 1.4. App图片,只好 ...

  9. atitit.高性能遍历 文本文件行 attilax总结

    atitit.高性能遍历 文本文件行 attilax总结 文件读写有以下几种常用的方法 1 通常io读取2.5s 1 nio读取或许越高的.. 2 NIO通常采用Reactor模式,AIO通常采用Pr ...

随机推荐

  1. android手机登录时遇到“QQ安全登录发现病毒”解决

    android手机作为开源系统非常容易感染病毒,有时候我们会经常遇到手机QQ登录时检测到app被感染,一般情况是由手机感染病毒所引起的,安装腾讯管家后只能检测病毒和卸载感染病毒的软件,不能清除病毒.解 ...

  2. ASP.NET 5 Beta 7 版本

    在 VS2015 发布的同时,微软也发布了 ASP.NET 5 的路线图(详见ASP.NET 5 Schedule and Roadmap : https://github.com/aspnet/ho ...

  3. 【转】ofbiz数据库表结构设计

    真心不错的文章,可以加深对企业信息化的设计理解:) http://blog.sina.com.cn/s/blog_a2ca5d8c01017fa0.html http://blog.sina.com. ...

  4. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  5. APUE fig 1.10示例代码的完善--对提示符及输入回车的优化

    APUE 第3版第15页的shell2.c示例程序,运行效果如下: gcc ol.shell.c -o origin_shell ./origin_shell % date 2015年12月13日 星 ...

  6. .net(c#)版RSA加密算法,拿走不谢

    今天有同学对接一个支付平台,涉及到RSA的签名和验签.由于对方是java的sdk,翻成c#语言时,搞了半天也没搞定.网上搜的东西都是各种copy还不解决问题. 碰巧,我之前对接过连连银通的网银支付和代 ...

  7. 【MSP是什么】MSP认证之项目集与项目群的关系和区别

    项目群和项目集都是一个意思,翻译时没有统一口径造成的.只要能与项目组合区别开就可以了. 项目集与项目群的区别,不在于那些项目自身,而在于管理者的思想,管理者对待项目的态度.项目集与项目群,首先都是多个 ...

  8. Chrome浏览器Cookie解密

    做过 web 开发的都知道:浏览器会把重要的认证登录认证信息存放到 cookie 中,在 cookie 有效期内,再次访问这个网站的时候就可以直接从 cookie 中获取到登录信息,这样就可以实现自动 ...

  9. 构建高可用ZooKeeper集群

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...

  10. 浅析MySQL复制

    MySQL的复制是基于binlog来实现的. 流程如下 涉及到三个线程,主库的DUMP线程,从库的IO线程和SQL线程. 1. 主库将所有操作都记录到binlog中.当复制开启时,主库的DUMP线程根 ...