zoukankan      html  css  js  c++  java
  • 随堂总结

    1:构造方法的特点;
    方法名,类名相同,无返回值,参数列表不同,不能手动调用;自动默认无参构造
    作用:创建对象

    2:抽象类和抽象方法的特点:
    抽象方法在抽象类中,抽象方法无方法体,(方法名,修饰类型,返回值类型,)

    3:方法重载和方法重写的区别
    重写在子类中 ,方法名相同,参数列表相同,返回值相同或者是其子类,访问修饰符不能比父类更严格
    (子父类中,继承中)
    重载在同类中,方法名相同,参数列表不同,与返回值和访问修饰符无关(在一个类中,本类中)

    4:使用继承有什么特点,继承的优点;
    特点:继承(继承前不属于自己,继承后属于自己,继承后自己可以随意使用,
    不能继承:private成员 ,构造方法,子类与父类不在同包,使用默认访问权限的成员)
    优点:方便修改代码,减少代码量

    5:多态的特点,优点;
    特点:(多态成员特点)成员变量 编译时看的是左边,运行时看的左边
    成员方法 编译时看的是左边,运行时看右边
    静态方法 编译时看的是左边,运行时看的也是左边
    优点:减少代码量,提高代码的可扩展性和可维护性
    多态的成员特点:
    6:多态的实现方式;
    使用父类作为方法形参实现多态
    使用父类作为方法返回值实现多态

    7:如何编写接口;(接口是特殊的抽象类,接口只有返回值,方法名,参数)

    8:接口的作用;
    方便查看实现的实例代码
    9:接口和抽象类的区别;


    接口的特性
    接口不可以被实例化
    实现类必须实现接口的所有方法
    实现类可以实现多个接口
    接口中的变量都是静态常量

    10:什么是异常,你如何理解;
    异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

    11:如何处理异常,异常的关键字;
    try,catch、 finally、throw、throws
    多个异常时,从小到大进行处理

    12:常见的异常种类;
    null,Exception,空指针异常,数据异常
    13:如何使用log4j记录日志;
    作用:记录何时何地犯得什么错进行记录下来。

    14:常见的集合有哪些,常用的方法;
    ArrayList,LinkedList,List,
    15:list,set,map 各有什么异同;
    List 接口存储一组不唯一,有序(插入顺序)的对象
    【ArrayList(数组,经常进行存取),LinkedList(链表式,操作头和尾)因为有序值可以重复,
    A速度比L慢,A再取值时更方便。】
    Set 接口存储一组唯一,无序的对象 (方便存储)
    (数据不可重复,无序,存最快取最慢,)
    Map接口存储一组键值对象,提供key到value的映射
    (键值对)键不可以重复,值可以重复。

    16:和数组类型采用相同结构的是那个集合;

    17:什么是foreach循环;
    便利数组,展示数据,map集合

    18:线程与进程的区别;
    进程:应用程序的执行实例有独立的内存空间和系统资源(大路到终点)
    线程:进程中执行运算的最小单位,可完成一个独立的顺序控制流程,CPU调度和分派的基本单位
    (同时进行的数量)(小路到终点)

    19:实现线程有哪几种方法;
    (1)继承Thresd类
    (2)实现Runnable接口
    (3)实现Callable接口
    (4)创建线程池

    20:线程的生命周期是什么;
    创建,就绪(不会消耗资源),运行(消耗资源),阻塞(由于外界原因停止,消耗资源),死亡(不会消耗资源)
    就绪和堵塞都是在等待数据运行,不同点是一个消耗资源,一个不消耗资源

    线程的调度:线程优先级,线程的休眠,线程的强制运行,线程的礼让

    21:简单解释一下线程休眠,线程强制执行,线程礼让,以及他们的实现方式


    22:什么情况下需要线程同步
    (1)线程休眠: Thread.sleep(long millis) 进入阻塞状态,睡眠时间过后,会在进入可运行状态
    (2)线程强制执行: thread.join() 进入阻塞状态,等待其他线程结束后再执行本线程
    (3)线程礼让: Thread.yield() 进入就绪状态,不转为阻塞状态; 暂停当前线程,
    允许其他线程(具有相同优先级的线程),获得运行机会,只是提供一种可能,但是不能保证一定会实现礼让;

    23:什么是流,流常见的种类有哪些,使用流的过程中需要注意哪些问题
    加载条,通过流来处理文件
    流:是指一连串流动的字符,是以先进先出方式发送信息的通道,(通过流来读写文件)
    字符流,字节流,输入流,输出流,
    开和关的问题,用完之后关流 finaly

    24:脏读,幻读,不可重复读
    脏读:当事务1修改了一条记录,没有提交时,事务2读取了该记录;
    当事务1回滚了,那么事务2的记录就是一条不存在的记录;
    不可重复读:当事务1读取了一条记录,未提交事务,事务(2修改了该条记录并且提交事务;
    事务1又读取了该条记录,发现两条记录不一样;

    幻读:事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条
    或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。
    不可重复读和幻读比较:两者有些相似,但是前者针对的是update或delete,后者针对的insert。

    25:hashmap,hashtable
    1、继承的父类不同
    Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。
    2、线程安全性不同
          javadoc中关于hashmap的一段描述如下:此实现不是同步的。如果多个线程同时访问一个哈希映射,
    而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。

    26:string ,stringbufffer

    27:处理线程同步的方法:
    1:临界区(CCriticalSection)
      当多个线程访问一个e799bee5baa6e997aee7ad94e78988e69d8331333335336532独占性共享资源时,可以使用临界区对象。拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的线程放弃临界区为止。具体应用方式:
      1、 定义临界区对象CcriticalSection g_CriticalSection;
      2、 在访问共享资源(代码或变量)之前,先获得临界区对象,g_CriticalSection.Lock();
      3、 访问共享资源后,则放弃临界区对象,g_CriticalSection.Unlock();
    2: 事件(CEvent)
      事件机制,则允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务。
    比如在某些网络应用程序中,一个线程如A负责侦听通信端口,另外一个线程B负责更新用户数据,
    利用事件机制,则线程A可以通知线程B何时更新用户数据。每个Cevent对象可以有两种状态:
    有信号状态和无信号状态。Cevent类对象有两种类型:人工事件和自动事件。
      自动事件对象,在被至少一个线程释放后自动返回到无信号状态;
      人工事件对象,获得信号后,释放可利用线程,但直到调用成员函数ReSet()才将其设置为无信号状态。
    在创建Cevent对象时,默认创建的是自动事件。
      1、1234CEvent(BOOL bInitiallyOwn=FALSE, BOOL bManualReset=FALSE,
    LPCTSTR lpszName=NULL, LPSECURITY_ATTRIBUTES lpsaAttribute=NULL);
      bInitiallyOwn:指定事件对象初始化状态,TRUE为有信号,FALSE为无信号;
    bManualReset:指定要创建的事件是属于人工事件还是自动事件。TRUE为人工事件,FALSE为自动事件;
      后两个参数一般设为NULL,在此不作过多说明。
      2、BOOL CEvent::SetEvent();
      将Cevent类对象的状态设置为有信号状态。如果事件是人工事件,则Cevent类对象保持为有信号状态,
    直到调用成员函数ResetEvent()将其重新设为无信号状态时为止。如果为自动事件,则在SetEvent()后
    将事件设置为有信号状态,由系统自动重置为无信号状态。
    3、BOOL CEvent::ResetEvent();
      将事件的状态设置为无信号状态,并保持该状态直至SetEvent()被调用为止。
    由于自动事件是由系统自动重置,故自动事件不需要调用该函数。
      一般通过调用WaitForSingleObject()函数来监视事件状态。
    3:互斥量(CMutex)
      互斥对象和临界区对象非常相似,只是其允许在进程间使用,而临界区只限制与同一进程的各个线程之间使用,
      但是更节省资源,更有效率。
    4、 信号量(CSemphore)
      当需要一个计数器来限制可以使用某共享资源的线程数目时,可以使用“信号量”对象。CSemaphore类对象
    保存了对当前访问某一个指定资源的线程的计数值,该计数值是当前还可以使用该资源的线程数目。
    如果这个计数达到了零,则所有对这个CSemaphore类对象所控制的资源的访问尝试都被放入到一个队列中等待,
    直到超时或计数值不为零为止。 

    28.1、synchronized关键字的作用域有二种:
    (1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问
    这个对象的synchronized方法(如果一个对象有多个synchronized方法,
    只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中
    任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是不相干扰的。
    也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法; 
    (2)是某个类的范围,synchronized static aStaticMethod{}防止多个线程同时访问这个类中的
    synchronized static 方法。它可以对类的所有对象实例起作用。 
    2、除了方法前用synchronized关键字,synchronized关键字还可以用于方法中的某个区块中,
    表示只对这个区块的资源实行互斥访问。用法是: synchronized(this){/*区块*/},它的作用域是当前对象; 

    3、synchronized关键字是不能继承的,也就是说,基类的方法synchronized f(){} 在继承类中并不自动是
    synchronized f(){},而是变成了f(){}。继承类需要你显式的指定它的某个方法为synchronized方法; 

  • 相关阅读:
    ubuntu下7z文件的解压
    Ubuntu16 编译源码出错 unsupported reloc 43
    两个超级大整数的相加,相乘
    c++ abcd....等等字符所有不同的非重复组合排布
    C# Java 通用MD5加密
    artDialog-学习课程(三) 参数配置表
    artDialog-学习课程(二)-常用弹出框
    MySQL 查看数据库数据表空间大小
    MySQL Date 函数
    artDialog-学习课程(一)-下载与引用
  • 原文地址:https://www.cnblogs.com/zjx-959/p/13035615.html
Copyright © 2011-2022 走看看