对象性能模式:面向对象很好地解决了抽象地问题,但是必不可免地要付出一定地代价。对于通常情况来讲,面向对象地成本大都可以忽略不计,但某些情况,面向对象所带来地成本必须谨慎处理。 典型模式:单件模式(Singleton)、共享模式(Flyweight)。 一、单件模式 1.动机 在软件系统中,经常有这样 ...
分类:
编程语言 时间:
2019-11-24 15:56:29
阅读次数:
66
python垃圾回收方法 (1)垃圾回收 -- 引用计数减少,python内存会主动做垃圾回收 -- 由于引用计数不断创建和删除, 就采用标记-清除 设两个对象为A、B,我们从A出发,因为它有一个对B的引用,则将B的引用计数减1;然后顺着引用达到B,因为B有一个对A的引用,同样将A的引用减1, 顺着 ...
分类:
编程语言 时间:
2019-11-21 13:37:37
阅读次数:
90
id(object)是python的一个函数用于返回object的内存地址。但值得注意的是,python 为了提高内存利用效率会对一些简单的对象(如数值较小的int型对象,字符串等)采用重用对象内存的办法。python对于小的整型数据和简单的字符串数据会建立数据池,调用这些数据时会直接从数据池中选择 ...
分类:
编程语言 时间:
2019-11-05 17:05:15
阅读次数:
85
类就像是菜谱,对象就像是菜。对象是类的实例。 对象=属性+方法。 对象是变量是类的具体实现。 类是规范定义是存在在纸面上的东西,从万千对象中抽象出来的共性。 op:oriented procedure 面向过程 oo:oriented object 面向对象,对象是主体,方法从属于对象 结构体vs类 ...
分类:
其他好文 时间:
2019-10-31 21:59:12
阅读次数:
109
一、单层拷贝 不管深拷贝还是浅拷贝对不可变数据类型都是引用内存地址 不管深拷贝还是浅拷贝对可变数据类型都是会重新创建新的内存空间 赋值是指向同一个对象,内存地址不变 例子: 1、单层浅拷贝: 不可变类型:int、字符串、元组 a = 1 # 不可变类型 copy_a = copy.copy(a) # ...
分类:
其他好文 时间:
2019-10-30 14:02:33
阅读次数:
108
对象模型 ? 当一个类本身定义了虚函数,或其父类有虚函数时,为了支持多态机制,编译器将为该类添加一个虚函数指针(vptr)。虚函数指针一般都放在对象内存布局的第一个位置上,这是为了保证在多层继承或多重继承的情况下能以最高效率取到虚函数表。当vprt位于对象内存最前面时,对象的地址即为虚函数指针地址。 ...
分类:
其他好文 时间:
2019-10-26 21:13:16
阅读次数:
97
列表字符串元组字典 一、列表 1、li.append() #添加元素到末尾,返回none 2、li.clear() #一个比较危险的方法(QAQ) 3、li.copy() #复制 不是同一个对象(内存地址不一样) 4、li.count() #计算列表里的元素出现的次数 5、li.extend([]) ...
分类:
其他好文 时间:
2019-10-25 16:22:43
阅读次数:
92
Java内存空间分两种,一种是栈内存,有多个,一种是堆内存,只有一个,在堆内存中又有一块方法区。 方法区中存储的是:类的信息(类名,类的直接父类,类的访问修饰符),类变量,类方法代码,实例方法代码,常量池。注意没有实例变量。 当使用new创建一个对象的时候,JVM实际上做了三件事:加载类,创建该类的 ...
分类:
编程语言 时间:
2019-10-24 13:14:16
阅读次数:
69
当一个类本身定义了虚函数,或其父类有虚函数时,为了支持多态机制,编译器将为该类添加一个虚函数指针(vptr)。虚函数指针一般都放在对象内存布局的第一个位置上,这是为了保证在多层继承或多重继承的情况下能以最高效率取到虚函数表。当vprt位于对象内存最前面时,对象的地址即为虚函数指针地址。 发生动态绑定 ...
分类:
其他好文 时间:
2019-10-19 13:10:30
阅读次数:
82
一.简介 二.对象内存 1.创建和销毁对象 对象可以存放在栈中或者静态存储区中 也可以在堆(heap)上动态创建对象 2.对象的生命周期 在栈上或在静态存储区上创建一个对象,编译器决定了对象持续的声明周期并自动销毁它 在堆上创建对象,编译器不知道它的生命周期,由程序员编程决定何时销毁对象 垃圾收集器 ...
分类:
编程语言 时间:
2019-10-17 16:06:49
阅读次数:
85