精华内容
下载资源
问答
  • python 对象是什么概念

    千次阅读 2019-07-05 17:26:17
    在python里,对象就是变量,对象其实一个指针,指向一个数据结构,数据结构里有属性,有方法。 def now(): print('2015-3-25') f = now print(f.__name__) print(f.c) 变量后面跟一个小数点,小数点后面就是它...

    在python里,对象就是变量,对象其实是一个指针,指向一个数据结构,数据结构里有属性,有方法。

    def now():
        print('2015-3-25')
    f = now
    print(f.__name__)
    print(f.c)

    变量后面跟一个小数点,小数点后面就是它的属性或方法,带括号的是方法,不带的就是属性。

    python中,函数也是一个对象,而且函数对象可以被赋值给变量。

    现在来看下python的@语法,或称为装饰器(decorator)

    def log(func):#再定义一个函数,只是这个函数的返回值是一个函数,或者可以认为这个函数返回了一个指针,这个指针指向函数wrapper
        def wrapper(*args, **kw):
            print('call %s():' % func.__name__)
            return func(*args, **kw)
        return wrapper
    @log
    def now():
        print('2015-3-25')
    f = now()#call now():
            #2015-3-25
    
    
    

    把@log放到now()函数的定义处,相当于执行了语句,log(now),那这个是怎么执行的呢?

    1. 把对象now当成入参传入函数log()

    2. 执行return wrapper语句

    3. 执行函数 wrapper(),根据函数 wrapper定义可看出此函数接受任意类型入参,

        3.1 执行print('call %s():' % func.__name__)语句,此时func代表的是主函数log(now)的入参对象now, 所以此处会打印对象

    now的属性name= now

        3.2 执行func(*args,**kw)=now(*args,**kw),y因为现在没有传参数进来,就是执行now(),

        3.3 执行函数now(),print('2015-3-25')

     

     

     

    展开全文
  • 基本概念:  有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。 无状态就是一次操作,不能保存数据。无状态...

    基本概念: 

    有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。

    无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象 .不能保存数据,是不变类,是线程安全的。

    代码更好理解:

    Java代码
    1.   
    2. public   class  StatefulBean {   
    3.   
    4.      public   int  state;   
    5.      // 由于多线程环境下,user是引用对象,是非线程安全的   
    6.      public  User user;   
    7.   
    8.      public   int  getState() {   
    9.          return  state;   
    10.     }   
    11.   
    12.      public   void  setState( int  state) {   
    13.          this .state = state;   
    14.     }   
    15.   
    16.      public  User getUser() {   
    17.          return  user;   
    18.     }   
    19.   
    20.      public   void  setUser(User user) {   
    21.          this .user = user;   
    22.     }   
    23. }   
    24.   
    25.   
    26. public   class  StatelessBeanService {   
    27.   
    28.      // 虽然有billDao属性,但billDao是没有状态信息的,是Stateless Bean.   
    29.     BillDao billDao;   
    30.   
    31.      public  BillDao getBillDao() {   
    32.          return  billDao;   
    33.     }   
    34.   
    35.      public   void  setBillDao(BillDao billDao) {   
    36.          this .billDao = billDao;   
    37.     }   
    38.   
    39.      public  List<User> findUser(String Id) {   
    40. return   null ;   
    41.     }   
    42. }  


    单例模式中的有状态和无状态: 
    单例类可以是有状态的(stateful),一个有状态的单例对象一般也是可变(mutable)单例对象 。 有状态的可变的单例对象常常当做状态库(repositary)使用。比如一个单例对象TaskCache(Spring中配为singleton)可以 持有一个AtomicLong类型的属性,用来给一个系统提供一个数值惟一的序列号码,作为任务通迅管理的ID生成器。同时,一个单例类也可以持有一个聚 集,从而允许存储多个状态,如示例中的ExpiringMap缓存任务列表。
    代码示例:

    Java代码
    1. import  java.util.concurrent.atomic.AtomicLong;   
    2.   
    3. import  org.apache.mina.util.ExpiringMap;   
    4.   
    5.   
    6. public   class  TaskCache {   
    7.   
    8.      // 请求超时   
    9.      private   short  requestTimeout;   
    10.   
    11.      // 这个缓存Map是线程安全,并且有定时超时功能   
    12.      private  ExpiringMap<String, Object> tasksMap =  new  ExpiringMap<String, Object>();   
    13.   
    14.      // 线程安全的原子类,示例有状态的单例类   
    15.      private   static  AtomicLong seqNo =  new  AtomicLong( 1 );   
    16.   
    17.      // 示例有状态的单例类   
    18.      public  Long nextSeqNo() {   
    19.          return  seqNo.getAndIncrement();   
    20.     }   
    21.   
    22.      public   void  setRequestTimeout( short  requestTimeout) {   
    23.          this .requestTimeout = requestTimeout;   
    24.     }   
    25.   
    26.      // 启动过期检测   
    27.      public   void  startExpiring() {   
    28.         tasksMap.getExpirer().setTimeToLive(requestTimeout);   
    29.         tasksMap.getExpirer().startExpiringIfNotStarted();   
    30.     }   
    31.   
    32.      // 停止过期检测   
    33.      public   void  stopExpiring() {   
    34.         tasksMap.getExpirer().stopExpiring();   
    35.     }   
    36.   
    37.      // 取任务列表.   
    38.      public  Object getTasks(String key) {   
    39.          return  tasksMap.get(key);   
    40.     }   
    41.   
    42.      // 去除任务列表.   
    43.      public  Object removeTasks(String key) {   
    44.          return  tasksMap.remove(key);   
    45.     }   
    46.   
    47.      // 添加任务列表.   
    48.      public   void  addTasks(String key, Object value) {   
    49.         tasksMap.put(key, value);   
    50.     }   
    51. }  



    单例类也可以是没有状态的(stateless) ,仅用做提供工具性函数的对象。既然是为了提供工具性函数,也就没有必要创建多个实例,因此使用单例模式很合适。平常的单例类都是没有状态的,这里就不示例了。一个没有状态的单例类也就是不变(Immutable)单例类。关于不变模式,请参考 http://www.javaeye.com/topic/959751 

    EJB中的有状态与无状态: 

    1.Stateful session bean的每个用户都有自己的一个实例,所以两者对stateful session bean的操作不会影响对方。另外注意:如果后面需要操作某个用户的实例,你必须在客户端缓存Bean的Stub对象(JSP通常的做法是用Session缓存),这样在后面每次调用中,容器才知道要提供相同的bean实例。

    2.Stateless Session Bean不负责记录使用者状态,Stateless Session Bean一旦实例化就被加进会话池中,各个用户都可以共用。如果它有自己的属性(变量),那么这些变量就会受到所有调用它的用户的影响。

    3.从内存方面来看,Stateful Session Bean与Stateless Session Bean比较,Stateful Session Bean会消耗J2EE Server 较多的内存,然而Stateful Session Bean的优势却在于他可以维持使用者的状态。

    Spring中的有状态(Stateful)和无状态(Stateless) 

    1.通过上面的分析,相信大家已经对有状态和无状态有了一定的理解。无状态的Bean适合用不变模式,技术就是单例模式,这样可以共享实例,提高性能。有状态的Bean,多线程环境下不安全,那么适合用Prototype原型模式。Prototype: 每次对bean的请求都会创建一个新的bean实例。

    2.默认情况下,从Spring bean工厂所取得的实例为singleton(scope属性为singleton),容器只存在一个共享的bean实例。

    3.理解了两者的关系,那么scope选择的原则就很容易了:有状态的bean都使用prototype作用域,而对无状态的bean则应该使用singleton作用域。

    4.如Service层、Dao层用默认singleton就行,虽然Service类也有dao这样的属性,但dao这些类都是没有状态信息的,也就是 相当于不变(immutable)类,所以不影响。Struts2中的Action因为会有User、BizEntity这样的实例对象,是有状态信息 的,在多线程环境下是不安全的,所以Struts2默认的实现是Prototype模式。在Spring中,Struts2的Action中,scope 要配成prototype作用域。

    Servlet、Struts中的有状态和无状态: 

    1.Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web 容器负责的。一个Servlet类在Application中只有一个实例存在,也就是有多个线程在使用这个实例。这是单例模式的应用。无状态的单例是线 程安全的,但我们如果在Servlet里用了实例变量,那么就变成有状态了,是非线程安全的。如下面的用法就是不安全的,因为user,out都是有状态 信息的。

    Java代码
    1.   
    2. public   class  UnSafeServlet HttpServlet{   
    3.        
    4.     User user;   
    5.     PrintWriter out;   
    6.        
    7.      public   void  doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{   
    8.          //do something...   
    9.     }   
    10. }  


    Out,Request,Response,Session,Config,Page,PageContext是线程安全的,Application在整个系统内被使用,所以不是线程安全的.

    2.Struts1也是基于单例模式实现,也就是只有一个Action实例供多线程使用。默认的模式是前台页面数据通过actionForm传入,在 action中的excute方法接收,这样action是无状态的,所以一般情况下Strunts1是线程安全的。如果Action中用了实例变量,那 么就变成有状态了,同样是非线程安全的。像下面这样就是线程不安全的。

    Java代码
    1.   
    2. public   class  UnSafeAction1  extends  Action {   
    3.   
    4.      // 因为Struts1是单例实现,有状态情况下,对象引用是非线程安全的   
    5.     User user;   
    6.   
    7.      public   void  execute() {   
    8.          // do something...   
    9.     }   
    10.   
    11.      public  User getUser() {   
    12.          return  user;   
    13.     }   
    14.   
    15.      public   void  setUser(User user) {   
    16.          this .user = user;   
    17.     }   
    18. }    



    3.Struts2默认的实现是Prototype模式。也就是每个请求都新生成一个Action实例,所以不存在线程安全问题。需要注意的是,如果由Spring管理action的生命周期, scope要配成prototype作用域。

    4.如何解决Servlet和Struts1的线程安全问题,当我们能比较好的理解有状态和无状态的原理,自然很容易得出结论:不要使用有状态的bean,也就是不要用实例变量 。如果用,就要用prototype模式。Struts1 user guide里有: Only Use Local Variables - The most important principle that aids in thread-safe coding is to use only local variables, not instance variables , in your Action class.

    总结: 
    Stateless无状态用单例Singleton模式,Stateful有状态就用原型Prototype模式。 
    Stateful 有状态是多线程编码的天敌,所以在开发中尽量用Stateless无状态,无状态是不变(immutable)模式的应用,有很多优点:不用管线程和同步的问题 ,如果值是不可变的,程序不用担心多个线程改变共享状态,所以可以避免线程竞争的bugs. 因为没有竞争,就不用用locks等机制,所以无状态的不变机制,也可以避免产生死锁现象。

    国外一些哥们的观点: 
    Immutable objects may not be altered after their creation. So: Yes, they are some kind of stateless.As immutable objects can not be changed, there is no need for locking - reading access to objects is always threadsafe (when not modifying variables). Therefore, real immutable objects are always threadsafe.

    Rod Johnson大叔的观点: 
    Stateless or Stateful?
    Service objects will usually be stateless. Stateless service layers are highly scalable: They pose no replication issues and there is no need to allocate additional resources for every client. (Remember that one of
    the key motivations of a middle tier is to share resources between multiple clients.) It is also much easier for stateless service layers to support remote clients, if necessary. A stateless service layer is one concession of object orientation that I find not too painful.
    此处省去N个字。
    If possible, design applications to use a stateless service layer. Hold state in the web tier, rather than in the business logic tier, if possible.

    展开全文
  • python可迭代对象怎么理解什么是可迭代对象?简单的理解可以用for循环的对象,就是可迭代对象。比如:list,字符串,dict,元组,生成器等。具有可迭代的特征。(推荐学习:Python视频教程)自定义可迭代对象(本质)...

    python可迭代对象怎么理解

    什么是可迭代对象?

    简单的理解是可以用for循环的对象,就是可迭代对象。比如:list,字符串,dict,元组,生成器等。

    具有可迭代的特征。(推荐学习:Python视频教程)

    自定义可迭代对象(本质)

    语法层面,如果一个对象实现了__iter__方法,那么这个对象就是可迭代对象

    判断是否是可迭代对象(Iterable)

    通过调用Python内置的isinstance来判断是否是Iterable的实例

    In [9]: isinstance([],Iterable)

    Out[9]: True

    In [10]: isinstance('',Iterable)

    Out[10]: True

    In [11]: isinstance({},Iterable)

    Out[11]: True

    In [12]: class MyList(object):

    ....: def __init__(self):

    ....: self.list = []

    ....: def add(self,item):

    ....: self.list.append(item)

    ....:

    In [13]: mylist = MyList()

    In [14]: isinstance(mylist,Iterable)

    Out[14]: False

    通过上面例子可以看出,Python中的内置类型dict,list,str的对象都是可迭代的,我们自定义了一个类MyList,由于这个类没有实现iter方法,所以这个类的实例不是可迭代对象。

    更多Python相关技术文章,请访问Python教程栏目进行学习!

    展开全文
  • 什么是⾯向对象编程,特点 什么是⾯向过程编程? 捕捉⽼⿏ 买⽼⿏笼 放诱饵 等⽼⿏进⼊笼⼦ 把笼⼦关起来 什么是⾯向对象编程 捕捉老鼠 我买只猫,猫有抓⽼⿏的⽅法,对象本身具有的⽅法 放进房⼦⾥⾯就⾏了...

    什么是⾯向对象编程,特点

    什么是⾯向过程编程?

    捕捉⽼⿏
    	买⽼⿏笼
    	放诱饵
    	等⽼⿏进⼊笼⼦
    	把笼⼦关起来
    

    什么是⾯向对象编程

    捕捉老鼠	
    	我买只猫,猫有抓⽼⿏的⽅法,对象本身具有的⽅法
    	放进房⼦⾥⾯就⾏了
    	复⽤(放到别的房⼦⾥⾯)
    

    Java语⾔概念特点(也叫⾯向的基本概念)

    维基百科:
    ⾯向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程典范,同时也是⼀种程序开发的抽象⽅针。它可能包含数据、属性、代码与⽅法。
    对象则指的是类的实例!!!
    它将对象作为程序的基本单元,将程序和数据封装其中,以提⾼软件的重⽤性、灵活性和扩展性,对象⾥的程序可以访问及经常修改对象相关连的数据。在⾯向对象程序编程⾥,计算机程序会被设计成彼此相关的对象。

    • :就是模板,⽤来定义⼀类对象的⽅法和属性,⽐如⼈、学⽣、猫,万物都是有模板,都是可以定义为类。 (类名⾸字⺟⼤写)
    class Student{
    
    }
    class Person{
    
    }
    class Cat{
    
    }
    
    • 对象:类的实例化,⽐如 学⽣这个类实例化,就是 XX同学
    Student student = new Student();
    Cat cat1 = new Cat();
    new Persion();
    
    • ⽅法:类的⾏为属性,⽐学⽣这个类,有吃饭,学习,睡觉;猫这个类,可以抓⽼⿏
    class Student{
     	//定义⼀个吃饭的⽅法
     	public void eat(){
    
     	}
    
     	//定义⼀个睡觉的⽅法
     	public void sleep(){
    
     	}
    
    }
    
    • 属性:⽐如学⽣都有年龄,姓名等属性(⾯向过程的时候,⼀般叫变量;⾯向对象编程,⼀般就叫属性)
    class Student{
     	//定义⼀个年龄的属性
     	private int age;
     	//定义⼀个名称的属性
     	private String name;
     	public void set(int age){
     	this.age = age;
    
     	}
     	//定义⼀个吃饭的⽅法
     	public void eat(){
    
     	}	
    
     	//定义⼀个睡觉的⽅法
     	public void sleep(){
    
     	}
    
    }
    
    • 参数:外部传递过来的叫参数
    • 变量:除开属性之外的,和除开参数之外,就叫变量。
    展开全文
  • 面向对象的概念是什么?和面向过程有什么区别?   面向对象是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。 面向过程,也就是结构化程序设计是一种自顶向...
  • 对象概念做题,要求判断出是什么类型的三角形。题目细节要求如下图,求大神救,本人小白一枚。![图片说明](https://img-ask.csdn.net/upload/201607/06/1467769973_525157.png)![图片说明]...
  • 1、什么是类? (1)类是一种抽象的概念。 (2)类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也...(1)对象是一种具体的概念。 (2)对象:对象是...
  • JavaScript对象是这样,Java类也是这样,任何面向对象的编程语言都是这样。面向对象的变成思想,其实就是这个意思。 看一个编程语言是不是面向对象的,就看他的数据类型里,有没有一种类型,是拥有属性值得,即有...
  • 所谓对象关系映射(Object Relational Mapping,简称ORM)通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 ...
  • 对象是什么

    2018-12-09 20:37:20
    事物的发展总是遵循“量变引起质变”的哲学原则,划分为以下三个时代: ...对象和企业项目制时代 就是以项目为单位,一个完整的项目组,相当于大公司分成多个小公司,且小公司之间都互不影响的。能独立完成生产。...
  • 面向对象(Object Oriented,OO)。 面向对象(Object Oriented,OO)是软件开发...面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1]发展到一定阶段后的产物。核心特性包括:类,对象,方法,封装,继承...
  • java中什么是什么是对象

    千次阅读 2019-04-04 10:40:14
    Java一种面向对象的程序设计语言(Object Oriented Programming:OOP),面向对象的程序设计语言中有类和对象概念,那么它们在概念上到底有什么区别呢? 下面以java语言为例解释下什么是类,什么是对象? 类...
  • 面相对象基本概念

    2018-10-15 22:18:51
    是对象的集合,是对象抽象化的概念创建对象的模版、蓝图。 什么是对象? 具体的实物。也称实例(实际存在的例子?)。 什么是属性? 即特征 什么是方法? 即行为 什么是变量? 一个数据存储空间的表示。声明...
  • 举个例子来说,我们需要一种格式的数据:正常不用面向对象的思维,存储这段数据一般用的格式:List&lt;Map&lt;String, List&lt;Map&lt;String, String&gt;&gt;&gt;&gt;那么我们用...
  • 什么是类 类的概念:类是具有相同属性和服务的一组对象的集合... 对象的概念对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽
  • 对象是什么?

    2007-09-02 11:50:00
    如果你以前从未使用过面向对象的编程语言,那么在...对象是什么?对象是理解面向对象(object-oriented)技术的关键。现在环顾四周,你能发现很多现实世界对象的例子:你的狗、你的桌子、你的电视机和你的自行车等。现
  • 什么是面向对象

    2017-03-14 17:02:33
    对象是一个具有实体意义以及抽象概念的总称。它既可以指实际存在的东西,比如飞机,桌子,又可以指代主观上的抽象概念,比如算术上的加减乘除。在Java里,对象一般是由数据和对数据进行相关操作的方法组成。 二...
  • JAVA(类和对象)一 对象概念以及使用什么是对象?类的概念&使用(对象的创建&使用) 什么是对象? 面向对象程序设计(OOP):对象这个概念其实在生活中随处可见我们经常以事物为对象进行探讨,而在程序当中例如...
  • 面向对象的基本概念什么是对象对象的基本组成对象的特点什么是面向对象什么使用面向对象面向对象的基本思路面向对象的基本原则 什么是面向对象 面向对象(Object Oriented) • 对象(Object) • 面向(Oriented)
  • 面向对象概念

    千次阅读 2018-09-17 21:24:29
    前言   最近学自考状态很不佳,没有开始的那种拼劲,总觉得考试时间尚早,...对象是系统中描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。 例如:职工、...
  • 什么是面向对象程序设计

    万次阅读 多人点赞 2019-08-22 11:10:04
    什么是对象→3.什么是消息→4.什么是封装→5.什么是多态→6.面向对象的优点: 本文介绍 C++基础概念和知识。如果您想看其他语言(如 java)的语法,本文不涉及。 1.面向对象和面向过程区别 面向过程程序设计:...
  • 继上次的文章, 面向对象 — 为什么要引入面向对象概念?这里我们来说说抽象?为什么要引入抽象 ?? ?从一个故事开始讲起:最近在做后端开发的时候前端长腿妹子给我抛了一个前端数据返回的数据格式:如下:这尼玛...
  • 面向对象的基本概念

    2012-09-15 21:47:51
    面试例题1:对象与实例有什么区别? 解析:在Java的内存分配中...答案:对象和实例从宏观的角度看,区别是:对象是同类事物的一种抽象表现形式,而实例是对象的具体化,一个对象可以实例化很多实例,对象就是一个模
  • 什么是类?什么是对象

    千次阅读 2015-03-20 19:48:00
    什么是对象 ? 你是否完全明白他们所代表的含义? 在真实世界中做对比的例子:人类=类,张三=对象 ;狗=类;我们家前几年死的大黄=对象 ;中国人=类;刘德华=对象 ......... 很多很多例子,类的概念可以很大,也可以...
  • 本文章向大家介绍C++类和对象到底是什么意思?,主要包括C++类和对象到底是什么意思?使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 C++是一门面向对象的...
  • 对象:对象就是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个实体都是一个对象,所以对象是一个具体的概念。类:类是具有相同属性和服务的一组对象的集合。为属于该类的所有对象提供...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,974
精华内容 10,789
关键字:

对象是什么概念