对象 -- 7




200x200


引言上一篇文章中,我们介绍了 Python 的对象创建和初始化的两个方法python 魔术方法(二) 对象的创建与单例模式的实现 但有另外两个常用的魔术方法也一样困扰着很

#技术帖    #python    #string    #面向对象   
概述上一篇日志中,我们讲解了 python 的垃圾回收机制我们也提到了 python 对象的一些源码构成python 的内存管理与垃圾收集 Python 对象所有的 python 对象都有三个特性组成:id -- 使用内建函数 id() 可以获取,被认为是该对象的内存地址,通常并不被程序使用类型 -- 型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么规则,通过用内建函数 type() 可以查看对象的类型信息值 -- 对象表示的数据项id 和类型信息是只读的,对象的值是否可变称为对象的可改变性 对象标准类型python 对象拥有以下标准类型:整型布尔型浮点型复数型字符串列表 -- []元组 -- ()字典 -- {} 其他内建类型typeclassnonefile集合/固定集合函数/方法模块 内部类型内部类型是在一般情况下程序员不需要关心的类型代码帧跟踪记录切片省略Xrange 代码对象代码对象是编译过的 Python 源代码片段,它是可执行对象通
#技术帖    #龙潭书斋    #python    #对象   
概述作为 java 开发者,创建对象是一件最常见的事,那么,除了使用 new 来创建对象,你知道还有哪些创建对象的方式吗?怎样通过一个 Class 对象获得他的实例呢?本节我们就来介绍一下 java 对象创建的五种方式 使用 new 关键字MyObject myObj = new MyObject();  这是最简单也是最常见的对象创建方式,他是通过调用调用指定构造方法进行对象的创建的,可以调用任何构造方法 使用 Class 类的 newInstance 方法很多情况下,我们需要通过已有的 Class 对象创建对应的实例,这在代理、反射等情况下非常常见Class 对象拥有 newInstance 方法,他等同于调用对应类的无参构造方法创建对象,因此这种方式最大的局限也在于被实例化的类必须具有无参构造方法,当然这样做的一个好处是,我们可以调用类的无参 private 构造方法创建对象,这是用 new 关键字无法做到的 使用 java.lang.reflect.Constructor 类的&
#技术帖    #技术分享    #class    #java   
开头讲一个故事很久以前,公司的老一代程序员(现在都已经离职)在古老的 restlet 框架的基础上创造了一个 Java MVC 框架,一段框架在程序员的手中代代相传,一个传说流传在程序员之间“所有的 controller 都必须打上 scope=prototype 的烙印”,当这个项目流转到我的手上,当时尚不知道 prototype 意味着什么的我在这个项目上种下了一个小小的 bean,打开了上线系统这个魔盒,等待着项目中的这个种子生根发芽,项目早已是饱经线下测试,我自然是胸有成竹,然而,说时迟那时快,客服电话已是纷至沓来,魔盒中的种子释放出的是混乱与灾难,虽是急急回滚,依然造成了一个多小时的线上故障 -- 所有的用户打开我的订单列表,看到的都是别人的订单记一次重大事故 -- 非线程安全框架引发的意外数据共享 如上面的博文中所述,这个真实的案例发生在 2015 年秋季,日志中也介绍了什么是 prototype,虽然项目饱经测试,但是问题依然没能避免,这就是一场线程安全所引发的灾难,也足见并发环境中的问题难以测试和复现那么,难道真的所有的 Controller 都必须加上 sc
#技术帖    #龙潭书斋    #线程    #thread   

200x200


概述HotSpot 是在 JIT 之后的一款 java 虚拟机的开源实现,sun 从 JDK 1.3.1 开始

#读书笔记    #技术帖    #堆    #龙潭书斋   
概述final 是 java 的重要关键字之一,可以用来修饰类、方法和变量,主要用来表示“不可改变” final 类final 类不能被继承,同时,一旦用 final 修饰了类,也就意味着 final 类中的所有方法都被隐式地指定为 final 方法 final 方法在类继承的过程中,对于父类中的 final 方法,子类不能修改和覆盖private 方法都被隐式指定为 final 方法 有两个原因使用 final 方法:锁定方法,防止被子类修改其含义在早期的 java 实现版本中,final 方法被实现为内嵌调用,可以提升性能 final 变量final 关键字用来修饰变量是最常用的用法,如果修饰成员变量,则必须在定义时或者构造方法中初始化,且一经初始化此后不能再进行任何赋值针对基本类型和类对象有着不同的含义:对于基本类型,final 变量一经初始化,此后不能再改变该变量的值对于类对象,已经初始化后,不能让这个变量再指向另一个对象,但他指向的对象的内容是可以改变的 static 
#技术帖    #龙潭书斋    #类    #class   
概述面向对象编程中,对象被赋予了自省的能力,也就是通过类对象找到类对象的来源,这个自省的过程就被称为“反射”作为面向对象语言的后起之秀,PHP 拥有更加强大的反射机制 PHP 反射功能对于一个类,我们怎么获取其方法和属性列表呢?以下函数可以完成此功能: 获取 PHP 类对象属性和方法的函数函数功能get_class(obj)获取对象 obj 所对应的类名get_object_vars(obj)获取对象 obj 具有的类属性(返回关联数组)get_class_vars(cls)获取类名 cls 的类属性(返回关联数组)get_class_methods(cls)获取类名 cls 具有的类方法(返回关联数组) 然而,反射 API 功能显然更加强大 PHP 反射类 -- ReflectionObject <?php class ReflectionClass implements Reflector { /* 常量 */ const integer IS_IMPLICIT_ABSTRACT = 16 ; const integer IS_EXPLICIT_ABSTRACT = 32 ; const integer IS_FINAL = 64 ; /* 属
#技术帖    #php    #mvc    #框架   



京ICP备15018585号