笔记2019-02-15

1、java事件机制包括三部分:事件、事件监听器、事件源。
       事件:继承自java.util.EventObject类,封装了事件源对象及跟事件相关的信息。
       事件监听器:继承自java.util.EventListener接口,注册在事件源上,当事件源的属性或状态改变时,取得相应的监听器调用其内部的监听方法。
       事件源:事件发生的地方,由于事件源的某项属性或状态发生改变,导致某项事件发生。

2、为什么要使用线程池,线程池有什么作用?
       为了减少创建和销毁线程的次数,让每个线程可以多次使用,可根据系统情况调整执行的线程数量,防止消耗过多内存。
        线程池主要用来解决线程生命周期开销问题和资源不足问题,通过对多个任务重复使用线程,线程创建的开销就被分摊到多个任务上了,而且由于在请求到达时线程已经存在,所有消除了线程创建所带来的延迟,这样就可以立即为请求服务,使用程序响应更快。另外,通过适当调整线程池中的线程数目可以防止出现资源不足的情况。

3、线程的种类和使用场景
new CachedThreadPool  (SynchronousQueue 同步队列 )
当有新任务到来,则插入到SynchronousQueue中,由于SynchronousQueue是同步队列,因此会在池中寻找可用线程来执行,若有可用线程则执行,若没有可用线程则创建一个线程来执行该任务,若池中线程空闲时间超过指定大小,则该线程会被销毁。
适用:执行很多短期异步的小程序或负载较轻的服务器。

new FixedThreadPool(LinkedBlockingQueue 阻塞队列)
创建可容纳固定线程数量的池子,每个线程的存活时间是无限的,当池子满了就不在添加线程了,如果池中的所有线程都在繁忙状态,对于新任务会进入阻塞队列中(无界的阻塞队列)。
适用:执行长期的任务,性能好很多。

new SingleThreadExecutor(LinkedBlockingQueue 阻塞队列)
创建只有一个线程的线程池,且线程的存活时间是无限的,当该线程繁忙时,对于新任务会进入阻塞队列中(无界的阻塞队列)。
适用:一个任务一个任务的执行场景。

new ScheduledThreadPool (DelayedWorkQueue延迟队列)
创建一个固定大小的线程池,线程池内线程存活时间无限制,线程池可以支持定时或周期性的任务执行,如果所有线程均处于繁忙状态,新任务会进入DelayedWorkQueue队列中,这是一种按照超时时间排序的队列结构。
适用:周期性执行任务的场景。

4、http 请求中GET和POST区别
     1.get是从服务器上获取数据,post是向服务器传送数据。
     2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
     3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
     4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
     5.get安全性非常低,post安全性较高。

5、什么事java虚拟机?
     Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。
     Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

6、java中对象的引用类型
     StrongReference(强引用)
     强引用是使用最普遍的引用,如果一个对象具有强引用,那么垃圾回收器绝不会回收它。当内存空间不足,jvm宁愿抛出OutOfMemoryError错误,使程序异常中止,也不会回收具有强引用的对象来解决内存不足的问题,A a = new A();
      SoftReference(软引用)
      如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。软引用可以用来实现内存敏感的高速缓存。
     WeakReference(弱引用)
     弱引用与软引用的区别,只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过垃圾回收器是一个优先级很低的线程,因此不一定很快发现那些只具有弱引用的对象。
     PhantomReference(虚引用)
     “虚引用”顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。

7、OSI七层协议
      应用层
      表示层
      会话层
      传输层
      网络层
      数据链路层
      物理层

8、TCP/IP四层模型
      应用层
      传输层
      网络层
      数据链路层

9、排序算法
     冒泡排序
     比较相邻的元素。如果第一个比第二个大,就交换他们两个。
     public static void bubbleSort(int[] numbers){
        int  temp = 0;
        int size = numbers.length;
        for(in ti = 0 ; i < size-1; i ++){
            for(intj = 0 ;j < size-1-i ; j++){
                  if(numbers[j] > numbers[j+1])//交换两数位置   {
                     temp = numbers[j];
                     numbers[j] = numbers[j+1];
                    numbers[j+1] = temp;
                  }
             }
         }
      }

你可能感兴趣的:(笔记2019-02-15)