blog icon indicating copy to clipboard operation
blog copied to clipboard

Java 基础整理

Open Yuicon opened this issue 7 years ago • 3 comments

- 面向对象的三个基本特征

  1. 封装

面向对象的程序设计中,某个类把所需要的数据(也可以说是类的属性)和对数据的操作(也可以说是类的行为)全部都封装在类中,分别称为类的成员变量和方法(或成员函数)。这种把成员变量和成员函数封装在一起的编程特性称为封装。

  1. 继承

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

  1. 多态

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

- 抽象类和接口有什么区别

接口和抽象类都是继承树的上层,他们的共同点如下:

  1. 都是上层的抽象层。
  2. 都不能被实例化
  3. 都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,但是不比提供具体的实现。

他们的区别如下:

  1. 在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法。
  2. 一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口。

- session 与 cookie 区别

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中; Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

- session一致性的架构设计常见方法

session同步法:多台web-server相互同步数据 客户端存储法:一个用户只存储自己的数据 反向代理hash一致性:四层hash和七层hash都可以做,保证一个用户的请求落在一台web-server上 后端统一存储:web-server重启和扩容,session也不会丢失

- ArrayList和LinkedList的大致区别

  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 (LinkedList是双向链表,有next也有previous)
  2. 对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。
  3. 对于小数据量新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

- java中创建线程的三种方法

  1. 继承Thread类创建线程
  2. 实现Runnable接口创建线程
  3. 使用Callable和Future创建线程

-CountDownLatch

等待多线程完成的CountDownLatch

-CyclicBarrier

同步屏障CyclicBarrier

-Semaphore

控制并发线程数的Semaphore

-Exchanger

两个线程进行数据交换的Exchanger

-ThreadLocal

ThreadLocal实现方式&使用介绍—无锁化线程封闭

-Java垃圾回收机制

Java垃圾回收机制(GC)相关问题

- 类加载机制

JVM 类加载机制详解 深入探讨 Java 类加载器

Yuicon avatar Mar 09 '18 06:03 Yuicon

- Java内存模型

Java内存模型 Java内存模型FAQ(一)

Yuicon avatar Mar 20 '18 14:03 Yuicon

- Java NIO

Java NIO 系列教程

Yuicon avatar Mar 20 '18 14:03 Yuicon

- Java线程池

深入理解Java之线程池

Yuicon avatar Mar 23 '18 10:03 Yuicon