怎么在linux查看创建的对象_linux查看创建时间 - CSDN
  • 在Linux内核中,采用对象机制组织和管理各种功能单元,包括CPU、内存、总线、外部设备、驱动程序等等。一方面有利于各种功能的的动态增减;也有利于系统快速定位各种设备,提高响应速度。在linux内核中,采样kset/...

    Linux内核中,采用对象机制组织和管理各种功能单元,包括CPU、内存、总线、外部设备、驱动程序等等。一方面有利于各种功能的的动态增减;也有利于系统快速定位各种设备,提高响应速度。在linux内核中,采样kset/kobject结构的组合来管理各种设备。

     

    kset/kobject结构

     

    每一个具体的对象用kobject结构来表示。一系列kobject构成的集合用kset来表示。相互关系如下图所示:




    kobject的定义如下:

     

    structkobject {

                const char                            *name; //kobject

                struct list_head  entry;  //kobject的链表头部,含前向指针和后向指针。

                struct kobject                     *parent; //kobject的父kobject,经常是包含该kobject

    //kset中的kobject.

                struct kset                           *kset;  //指向包含该kobjectkset.

                struct kobj_type *ktype; //kobject的类型描述

                struct kernfs_node            *sd;   //kobject对应的sysfs文件的目录入口

                struct kref                            kref;   //kobject的引用计数

    };

     

    为了快速查找,在各个kobject中保存了丰富的引用指针,包括:

    entry   在同一个ksetkobject构成双向链表,包括前向和后向指针;

    parent指向父节点的kobject指针。一般来说是管理该kobjectkset所包含的kobject,也可以指定为别的kobject

    kset      包含该kobjectkset的指针。

     

    同时为了动态管理相应的对象,记录了一个该对象的引用计数kref,在初始化时设为1,当计数降为0时,释放该对象。同时在kobject中定义了一个结构kobj_type,其中有一个release函数,在对象释放时调用。

     

    kset的定义如下所示:

    structkset {

                struct list_head list; //包含该kset所有kobject的链表的头指针

                spinlock_t list_lock; //用于对所有kobject迭代时的锁。

                struct kobject kobj; //内嵌的kobject,用于表示该kset。因此kset也是

    //一个kobject.

                const struct kset_uevent_ops*uevent_ops; //用于该kset中所有kobject的事件

    //处理函数集,如热插拔等,也包括

    //一个事件过滤函数。

    };

     

    kset用于管理具有某种共同特性的kobject对象的集合。结构list包含了该kobject对象集合的头指针。

     

    kset中内嵌一个kobject,一方面将kset也作为kobject对象管理,易于构成一个完整的层次结构;另一方面可以方便地利用kobject所定义的各种管理操作(如于sysfs的交互、引用管理等)。

     

    sysfs文件系统

     

    kset/kobject的组合还提供了将内核对象呈现给用户空间的统一手段,包括让用户查看内核对象(如设备)的属性和状态等。在linux系统中,设备的属性以sysfs文件系统的形式(/sys)呈现给用户。/sys下的目录和文件并不对应硬盘中的存储,而是反映内核对象的层次结构和其属性。

     

    sysfs中,ksetkobject还有属性组都对应为目录,属性则对应为文件,属性值对应为文件内容。属性由以下结构定义:

     

    structattribute {

                const char                            *name;  //属性名,对应sysfs中的文件名

                umode_t                                              mode;   //属性文件的访问模式

    };

     

    对一个内核对象而言,有一个structkobj_type类型的成员用于标识对象类型,由其属性、及对属性的操作等构成。详细如下:

     

    structkobj_type {

                void (*release)(struct kobject*kobj); //当对象释放时调用。用于完成对象特定

    //的释放操作。

                const struct sysfs_ops *sysfs_ops;   //sysfs文件的读写操作

                struct attribute **default_attrs;    //该对象类型的缺省属性

                const struct kobj_ns_type_operations*(*child_ns_type)(struct kobject *kobj);

                const void *(*namespace)(structkobject *kobj);

    };

     

    struct sysfs_ops定义属性文件的读写操作,其定义如下:

    structsysfs_ops {

      ssize_t   (*show)(structkobject *, struct attribute *, char *); //读操作

      ssize_t   (*store)(structkobject *, struct attribute *, const char *, size_t); //写操作

    };

     

    当用户对属性文件进行读写时,最后是执行上述函数。

     

    展开全文
  • 关于究竟是堆上还是栈上创建对象,可能很多初学者感到迷惑。我想可以把这部分内容拿出来详细介绍一下。现在,假设你已经清楚什么是堆,什么是栈。如果需要堆上创建对象,要么使用new运算符,要么使用malloc...

    这篇文章来自于一次讨论:http://www.devbean.net/2013/01/qt-study-road-2-model-view/#comment-17532。关于究竟是在堆上还是在栈上创建对象,可能很多初学者感到迷惑。我想可以把这部分内容拿出来详细介绍一下。现在,假设你已经清楚什么是堆,什么是栈。

    如果需要在堆上创建对象,要么使用new运算符,要么使用malloc系列函数。这点没有异议。

    真正有异议的是下面的代码:

    此时,obj是在栈上分配的吗?

    要回答这个问题,我们首先要理解这个语句是什么意思。这个语句就是代表着,在栈上创建对象吗?

    其实,这行语句的含义是,使对象obj具有“自动存储(automatic storage)”的性质。所谓“自动存储”,意思是这个对象的存储位置取决于其声明所在的上下文。

    如果这个语句出现在函数内部,那么它就在栈上创建对象。

    如果这个语句不是在函数内部,而是作为一个类的成员变量,则取决于这个类的对象是如何分配的。考虑下面的代码:

    指针pClass所指向的对象在堆上分配空间。因为Object obj;语句的含义是“自动存储”,所以,pClass->obj也是在堆上创建的。

    理解了这一点,再来看下面的语句:

    Object *pObj;代表,指针pObj是自动存储的,仅此而已,没有任何其它含义。而下面一行语句则指出,这个指针所指向的对象是在堆上面分配的。如果这两行语句出现在一个函数内部,意味着当函数结束时,pObj会被销毁,但是它指向的对象不会。因此,为了继续使用这个对象,通常我们会在函数最后添加一个return语句,或者使用一个传出参数。否则的话,这个在堆上创建的对象就没有指针指向它,也就是说,这个对象造成了内存泄露。

    并不是说指针指向的对象都是在堆上创建的。下面的代码则使用指针指向一个在栈上创建的对象:

    至此,我们解释了函数内部的变量和成员变量。还有两类变量:全局变量和static变量。它们即不在堆上创建,也不在栈上创建。它们有自己的内存空间,是除堆和栈以外的数据区。也就是说,当Object obj即不在函数内部,又不是类的成员变量时,这个对象会在全局数据段创建,同理适用于static变量。对于指针Object *pObj;,如果这个语句出现在函数内部或类的成员变量,正如我们前面所说的,这个指针是自动存储的。但是,如果这个语句是在类的外部,它就是在全局数据段创建的。虽然它指向的对象可能在堆上创建,也可能在栈上创建。

    堆和栈的区别在于两点:

    1. 生命周期
    2. 性能

    第一点才是我们需要着重考虑的。由于栈的特性,如果你需要一个具有比其所在的上下文更长的生命周期的变量,只能在堆上创建它。所以,我们的推荐是:只要能在栈上创建对象,就在栈上创建;否则的话,如果你不得不需要更长的生命周期,只能选择堆上创建。这是由于在栈上的对象不需要我们手动管理内存。有经验的开发人员都会对内存管理感到头疼,我们就是要避免这种情况的发生。总的来说,我们更多推荐选择在栈上创建对象。

    但是,有些情况,即便你在栈上创建了对象,它还是会占用堆的空间。考虑如下代码:

    对象v是在栈上创建的。但是,STL 的vector类其实是在堆上面存储数据的(这点可以查看源代码)。因此,只有对象v本身是在栈上的,它所管理的数据(这些数据大多数时候都会远大于其本身的大小)还是保存在堆上。

    关于第二点性能,有影响,不过一般可以忽略不计。确切的说,一般情况下你不需要考虑性能问题,除非它真的是一个问题。

    首先,在堆上创建对象需要追踪内存的可用区域。这个算法是由操作系统提供,通常不会是常量时间的。当内存出现大量碎片,或者几乎用到 100% 内存时,这个过程会变得更久。与此相比,栈分配是常量时间的。其次,栈的大小是固定的,并且远小于堆的大小。所以,如果你需要分配很大的对象,或者很多很多小对象,一般而言,堆是更好的选择。如果你分配的对象大小超出栈的大小,通常会抛出一个异常。尽管很罕见,但是有时候也的确会发生。有关性能方面的问题,更多出现在嵌入式开发中:频繁地分配、释放内存可能造成碎片问题。

    现代操作系统中,堆和栈都可以映射到虚拟内存中。在 32 位 Linux,我们可以把一个 2G 的数据放入堆中,而在 Mac OS 中,栈可能会限制为 65M。

    总的来说,关于究竟在堆上,还是在栈上创建对象,首要考虑你所需要的生命周期。当性能真正成为瓶颈的时候,才去考虑性能的问题。堆和栈是提供给开发者的两个不同的工具,不存在一个放之四海而皆准的规则告诉你,一个对象必须放在堆中还是在栈中。选择权在开发者手中,决定权在开发者的经验中。

    展开全文
  • 先理解几个概念 oracle跟mysql和mssql的不同,提出了实例和表空间等的概念 实例:即一个运行的服务,不含任何物理数据和内容 ...因此,想要创建一个新的数据库,必须先运行一个实例。 但是oracle有表

    先理解几个概念 oracle跟mysql和mssql的不同,提出了实例和表空间等的概念

    实例:即一个运行的服务,不含任何物理数据和内容

    数据库:依托于实例运行,数据库和实例可以使1对1的关系,也可以是一对多的管理,即可以有不同实例加载数据库,但是一个实例只能加载一个数据库

    一个操作系统可以运行多个数据库实例


    因此,想要创建一个新的数据库,必须先运行一个实例。

    但是oracle有表空间的概念,不同用户可以设置不同表空间的访问权,相当于把数据库划分出多个子模块,供不同用户使用

    所以,在一般的情况下,利用表空间和用户控制方式,即可以实现分开独立的数据表管理


    创建表空间和用户比较简单,利用plsql即可以实现


    创建数据库实例(非图形界面):

    //利用crt进入linux操作系统

    $su - oracle //进入oracle用户模式下

    $echo $ORACLE_HOME  //查看oracle的home目录位置 假如home目录/opt/11g/oracle/product/11.2.0/dbhome_1,那么执行cd $ORACLE_HOME等效于cd /opt/11g/oracle/product/11.2.0/dbhome_1

    $echo $ORACLE_BASE  //查看oracle的base目录

     

    //创建实例配置文件

    $cd $ORACLE_HOME

    $cd dbs

    $cp initorcl.ora  initvcenter.ora

    $vi  initvcenter.ora   

    db_name='vcenter'
    vcenter.__java_pool_size=402653184
    vcenter.__large_pool_size=134217728
    vcenter.__oracle_base='/opt/11g/oracle'
    vcenter.__pga_aggregate_target=11341398016
    vcenter.__sga_target=34024194048
    vcenter.__shared_io_pool_size=0
    vcenter.__shared_pool_size=7985954816
    vcenter.__streams_pool_size=67108864
    *.audit_file_dest='/opt/11g/oracle/admin/vcenter/adump'
    *.audit_trail='db'
    *.compatible='11.2.0.4.0'
    *.control_files = (ora_control3, ora_control4)
    *.db_block_size=8192
    *.db_domain=''
    *.db_name='vcenter'
    *.db_recovery_file_dest='/opt/11g/oracle/fast_recovery_area'
    *.db_recovery_file_dest_size=4385144832
    *.diagnostic_dest='/opt/11g/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=YFZD2XDB)'
    *.local_listener=''
    *.open_cursors=300
    *.pga_aggregate_target=11333009408
    *.processes=150
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sga_target=34001125376
    *.undo_tablespace='UNDOTBS1'


    //创建实例相关目录--作用未理解


    $cd $ORACLE_BASE

    $cd admin

    $mkdir vcenter

    $cd vcenter

    $mkdir adump  bdump  cdump  pfile  udump

    //创建vcenter数据文件

    cd /oradata

    mkdir vcenter     

    //启动实例

    $export ORACLE_SID=vcenter

    $sqlplus /nolog

    sql>conn /as sysdba;

    sql>startup nomount;

    sql>select instance_name from v$instance;   //正常启动后执行语句可以看到运行的实例


    //创建密码文件--作用还未理解

    $$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapwvcenter password=Aa123456* force=y  //文件生成在$ORACLE_HOME/dbs目录下


    //创建数据库脚本如下,进入到sql界面执行下面语句

    sql>

      CREATE DATABASE vcenter
       USER SYS IDENTIFIED BY sys
       USER SYSTEM IDENTIFIED BY manager
       LOGFILE GROUP 1 ('/oradata/vcenter/redo01.log') SIZE 20M,
               GROUP 2 ('/oradata/vcenter/redo02.log') SIZE 20M,
               GROUP 3 ('/oradata/vcenter/redo03.log') SIZE 20M
       MAXLOGFILES 5
       MAXLOGMEMBERS 5
       MAXLOGHISTORY 1
       MAXDATAFILES 100
       MAXINSTANCES 1
       CHARACTER SET US7ASCII
       NATIONAL CHARACTER SET UTF8
       DATAFILE '/oradata/vcenter/system01.dbf' SIZE 325M REUSE
       EXTENT MANAGEMENT LOCAL
       SYSAUX DATAFILE '/oradata/vcenter/sysaux01.dbf' SIZE 325M REUSE
       DEFAULT TABLESPACE tbs_1 datafile '/oradata/vcenter/tbs_1.dbf' size 50m
       DEFAULT TEMPORARY TABLESPACE temp
          TEMPFILE '/oradata/vcenter/temp01.dbf'
          SIZE 20M REUSE
       UNDO TABLESPACE undotbs1
          DATAFILE '/oradata/vcenter/undotbs1.dbf'
          SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

    //其中UNDO TABLESPACE undotbs1必须与实例配置文件中的名字完全一样

    sql>select status from v$instance;

    //status为open表示成功



    //运行后续脚本,创建数据字典及相关视图

    SQL>conn sys as sysdba

    SQL>@?/rdbms/admin/catalog.sql;

    //此过程可能需要10分钟左右

    SQL>@?/rdbms/admin/catproc.sql;

    /此过程可能需要15分钟左右

    SQL>@?/rdbms/admin/catblock.sql;

    SQL>@?/rdbms/admin/catoctk.sql;

    SQL>@?/rdbms/admin/owminst.plb;

    SQL>conn system/ manager

    SQL>@?/sqlplus/admin/pupbld.sql;

    SQL>@?/sqlplus/admin/help/hlpbld.sql helpus.sql

    //配置listener.ora和tnsnames.ora,这两个文件在$ORACLE_HOME/network/admin目录下

    listener.ora

    (SID_LIST=
          (SID_DESC=
             (GLOBAL_DBNAME = vcenter)         
             (ORACLE_HOME = /opt/11g/oracle/product/11.2.0/dbhome_1)
             (SID_NAME = vcenter)
           )
      )

    tnsnames.ora
    vcenter =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = vcenter)
        )
      )



    很多具体细节还不是很明白,以后弄通了再补充!

    参考资料:

    http://blog.csdn.net/sunchenglu7/article/details/39676659

    http://www.linuxidc.com/Linux/2014-08/105552.htm

    -------------------------------------------------------------------------------------------

    服务器重启后,如何启动oracle

    su - oracle

    $lsnrctl status

    $lsnrctl start  //启动监听

    $export ORACLE_SID=vcenter

    $sqlplus /nolog

    sql>conn /as sysdba;

    sql>startup

    sql>select status from v$instance;


    不过oracle启动模式有3种:

     Startup nomount  (nomount模式)启动实例不加载数据库。

    Startup mount (mount模式)启动实例加载数据库但不打开数据库

     Startup (open 模式)启动实例加载并打开数据库,就是我们上面所用的命令

     Nomount模式中oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库文件


    数据库的关闭(SHUTDOWN)

    对于数据库的关闭,有四种不同的关闭选项,下面对其进行一一介绍。

    1、SHUTDOWN NORMAL

    这是数据库关闭SHUTDOWN命令的确省选项。也就是说假如您发出SHUTDOWN这样的命令,也即是SHUTDOWN NORNAL的意思。

    发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待现在连接的任何用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时无需进行任何的实例恢复。但需要注意一点的是,采用这种方式,也许关闭一个数据库需要几天时间,也许更长。

    2、SHUTDOWN IMMEDIATE

    这是我们常用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。

    当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。假如系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的任何用户退出系统,强行回滚当前任何的活动事务,然后断开任何的连接用户。

    3、SHUTDOWN TRANSACTIONAL

    该选项仅在Oracle 8i后才能够使用。该命令常用来计划关闭数据库,他使当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。在任何活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。

    4、SHUTDOWN ABORT

    这是关闭数据库的最后一招,也是在没有任何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。假如下列情况出现时能够考虑采用这种方式关闭数据库。 数据库处于一种非正常工作状态,不能用shutdown normal或shutdown immediate这样的命令关闭数据库;



          所以说:

       1)  创建新数据库

       2)  重建控制文件

         这2种操作都必须在这个模式下进行。

          Mount模式中oracle只装载数据库但不打开数据库,所以说:

         1)     重命名数据文件

         2)     添加、删除和重命名重做日子文件

         3)     执行数据库完全恢复操作

         4)     改变数据库的归档模式

         这4种操作都必须在这个模式下进行

         Open模式(就是我们上面的startup不带任何参数的)正常启动。

        当然这3种模式之间可以转换:

        Alter database mount(nomount模式)—〉alter database open(mount 模式)—〉(open模式)


       当然还有其它一些情况,在我们open模式下可以将数据库设置为非受限状态和受限状态

      在受限状态下,只有DBA才能访问数据库,所以说:

    1)  执行数据导入导出

    2)  使用sql*loader提取外部数据

    3)  需要暂时拒绝普通用户访问数据库

    4)  进行数据库移植或者升级操作


    关闭服务器防火墙

    # serviceiptables stop   关闭防火墙,会话级起效,重启后失效

    # chkconfigiptables off   不随操作系统自动启动


    oracle数据库备份与还原

    表导出与还原

    imp admin/admin@实例名 file=/dbbackup/table_20180109.dmp tables=yfplss03   
    exp admin/admin@实例名 file=/dbbackup/table_20180109.dmp .dmp  log=$DIR/$DATE'/table_log_'$DATE'.log' TABLES=table

    完全导出

    exp yfplss03/yfplss03@YFZD2 file=$DIR/$DATE'/sbkfw_'$DATE'.dmp' log=$DIR/$DATE'/sbkfw_log_'$DATE'.log'

     


    有三种主要的方式(完全、用户、表)
          1、完全:
              EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
              如果要执行完全导出,必须具有特殊的权限
          2、用户模式:
              EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC
              这样用户SONIC的所有对象被输出到文件中。
          3、表模式:
              EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
              这样用户SONIC的表SONIC就被导出
        2、IMP:
          具有三种模式(完全、用户、表)
          1、完全:
              IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
          2、用户模式:
              IMP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC
              这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。
          3、表模式:
              EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
              这样用户SONIC的表SONIC就被导入。


    http://blog.csdn.net/lsyuan1989/article/details/50418665

    https://www.cnblogs.com/yugen/archive/2010/07/25/1784763.html



    --------------------------------补充笔记-----------------------------------------

    select * from v$session where status ='ACTIVE' 

    select * from v$locked_object

    select * from all_objects

    select * from dba_jobs_running

    select * from dba_jobs


    查看Oracle正在执行的任务

    select a.program, b.spid, c.sql_text,c.SQL_ID
    from v$session a, v$process b, v$sqlarea c
    where a.paddr = b.addr
    and a.sql_hash_value = c.hash_value
    and a.username is not null;

    由于sql_text列没有显示完整
    的sql语句.所以找到sql_id:686nqabc8sgs2再查询v$sql
    select a.* from v$sql a where a.SQL_ID='686nqabc8sgs2'
    可以查看完整的sql文本内容
     
     
     --查询Oracle正在执行的sql语句及执行该语句的用户

    SELECT b.sid oracleID,
    b.username 登录Oracle用户名,
    b.serial#,
    spid 操作系统ID,
    paddr,
    sql_text 正在执行的SQL,
    b.machine 计算机名
    FROM v$process a, v$session b, v$sqlarea c
    WHERE a.addr = b.paddr
    AND b.sql_hash_value = c.hash_value

     

    --查看正在执行sql的发起者的发放程序

    SELECT OSUSER 电脑登录身份,
    PROGRAM 发起请求的程序,
    USERNAME 登录系统的用户名,
    SCHEMANAME,
    B.Cpu_Time 花费cpu的时间,
    STATUS,
    B.SQL_TEXT 执行的sql
    FROM V$SESSION A
    LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS
    AND A.SQL_HASH_VALUE = B.HASH_VALUE
    ORDER BY b.cpu_time DESC

     

    --查出oracle当前的被锁对象

    SELECT l.session_id sid,
    s.serial#,
    l.locked_mode 锁模式,
    l.oracle_username 登录用户,
    l.os_user_name 登录机器用户名,
    s.machine 机器名,
    s.terminal 终端用户名,
    o.object_name 被锁对象名,
    s.logon_time 登录数据库时间
    FROM v$locked_object l, all_objects o, v$session s
    WHERE l.object_id = o.object_id
    AND l.session_id = s.sid
    ORDER BY sid, s.serial#;

    ------------------------数据库关闭不成功处理办法--------------------------------

    关闭数据库是shutdown 后面没有接关闭参数中的任何一个。

    nomal --->所有连接都断开时才能关闭;

    transactional --->等待事务结束后,主动断开连接;

    immediate --->主动断开事务和连接

    abort --->立刻关闭数据库,这个操作是危险的,不会同步数据,不触发检查点,回滚段直接清 空,相当于掉电,每次启动都要实例恢复。

    所以,数据库关闭很慢,这时我一心急,就直接退出了sqlplus,造成Oracle文件被lock,当我再次startup时,操作失败,因为文件依然被锁定状态。报错ORA-01012: not logged on.

    后来重启服务,就可以用了,看了oracle的报错解释,更让我费解。虽然问题解决了,但是生产环境是不能随便down机的,所以,这个问题待续…

    kill oracle 进程 或者关掉oracle

    ps -ef|grep ora_dbw0_$ORACLE_SID

    kill -9 pid

    重新启动oracle

    sqlplus sys as sysdba

    startup;


    展开全文
  • 统计对象创建次数

    2018-12-04 17:38:16
    创建对象个数很多的时候,我们需要知道这些对象个数. 做法是:类的构造方法里面,写一个静态变量的count++,后面每创建一个对象时,均会自加一次. public class Student{ int name; static count = 0; public ...

    在被创建的对象个数很多的时候,我们需要知道这些对象个数.
    做法是:在类的构造方法里面,写一个静态变量的count++,后面每创建一个对象时,均会自加一次.

    public class Student{
    	int name;
    	static count = 0;
    	public Student(){
    		count++;
    	}
    }
    public class Test{
    	public static void main(String[] args){
    		Student s1 = new Student;
    		Student s2 = new Student;
    		Student s3 = new Student;
    		System.out.println(s3.count);	//s1调用也可
    	}
    }
    展开全文
  • Linux创建设备文件

    2015-03-12 09:17:18
    依照unix的传统,在Linux系统中任何对象(包括设备 )都可以视为文件,在Linux系统中所有的设备文件都放在dev目录下面,建立设备文件通常有两种方法,一个是直接把宿主机上面的拷贝过来(拷贝的时候需要加上dpR参数...
  • linux 下oracle用户创建
  • linux 创建、删除临时文件系统步骤如下(redhat为例) dd命令的bs= 是设定块大小,可以为k、m等,count= 是块的数量 另外区别:/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件...
  • 在Linux创建目录、用户,并且限制不同用户的所属权限。直接来案例。案例描述如下: ——————————————————————————————————— 一. 目录/root中 创建如下4个目录: 1. ...
  • 利用dbms_metadata.get_ddl查看DDL语句(原创) 当我们想要查看某个表或者是表空间的DDL的时候,...GET_DDL函数返回创建对象的原数据的DDL语句,详细参数如下 -- object_type ---需要返回原数据的DDL语句的对
  • 具体创建的例子程序,ESRI所提供例子中都有所涵盖,具体如下: FeatureDatasets包括了创建FeatureDataset对象的例子 TableSchema包括了创建对象的例子 Domains包括了创建Domain的例子 等等,具体例子可以查
  • 1.su - oracle ...3.创建临时表空间: --查询临时表空间文件的绝对路径。如果需要的话,可以通过查询来写定绝对路径。一般用${ORACLE_HOME}就可以了  select name from v$tempfile;  create temporar
  • 2 、 查看磁盘空间是否够大df -h    -h更具目前磁盘空间和使用情况 以更易读的方式显示  [root@rac1 ~]# df -h  Filesystem Size Used Avail Use% Mounted on  /dev/sda1 2.9G 2.3G 521M 82% /  none ...
  • 1.1 使用命令创建用户,组 groupadd -g 505 rab useradd -u 504 -g rab -d /home/rds -m rab 设置密码: passwd rab 输入两次密码。 验证刚刚创建的用户 Id rab 1.2 授权文件夹/home/rab chown -R rab:rab /home/rab...
  • 功能需求是启动时初始化一定量的buffer,每建立一个连接都分配一个buffer作为读写缓冲,管理连接时将buffer放回pool中,而当pool的buffer不够用时则额外创建buffer并放到pool中。为了方便观察,首先只初始化包含1个...
  • 我们都知道C++中有三种创建对象的方法,如下: 复制代码代码如下: #include using namespace std; class A { private:  int n; public:  A(int m):n(m)  {  }  ~A(){} }; int main() {  A ...
  • (转)Linux查看用户及其权限管理 查看用户 请打开终端,输入命令: $ who am i 或者 $ who mom likes 输出的第一列表示打开当前伪终端的用户的用户名(要查看当前登录用户的用户名,去掉空格直接使用 ...
  • 转载:http://kingxss.iteye.com/blog/1741076创建用户和表空间: 1、登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户)2、以sysdba方式来打开sqlplus,命令如下: ...
  • 创建用户 useradd hanli centos7中,adduser也可以添加用户,它是useradd的软链接,二者功能完全相同。 为新用户设置密码 passwd hanli 创建用户组 groupadd op 添加用户到某一个用户组 usermod -G wheel ...
  • 1. 创建镜像:(1G) dd if=/dev/zero of=~/gb/xen_img/gpt_disk.img bs=512M count=2 挂载镜像 losetup /dev/loop0 gpt_disk.img (卸载镜像:losetup -d /dev/loop0 ) 2. 使用parted创建GPT分区,并格式...
1 2 3 4 5 ... 20
收藏数 151,189
精华内容 60,475
关键字:

怎么在linux查看创建的对象