JAVA理论概念大神之概念汇总

Java基础

浏览数:63

2019-6-8

  我个人觉得,JAVA之所以能够经久不衰,有一个很重要的原因就是:JAVA的理论总是给人一种,虽然不知道是什么,但是感觉很厉害的样子。就单是这一点,他就已经超越许多其他语言了,至少吹牛的时候谈资总是很多。

  废话不多说(其实一整篇都是废话),今天就来汇总一下,一些个人见识的概念(都是从项目中挑选出来的,能力有限数量也有限),请多多指教!

  

1. 面向对象编程

  这个虽然不是什么特别的东西,但是却是JAVA的立身之本。万事万物皆对象。那面向对象,基本功能好处就是,封装、继承、多态等。

2. 面向切面编程

  AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。

3. 设计模式

  总体来说设计模式分为三大类:
    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

4. 反射机制

  反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

5. 包机制

  为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间(其他语言可能叫做命名空间)。  
  1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
  3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
  Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

6. 组件技术

  组件是能够完成某种功能并且向外提供若干个使用这个功能的接口的可重用的代码集,说白了就是一些普通的类文件集合。

7. 名词缩写及解释

  .iml是 intellij idea的工程配置文件,里面是当前projec的一些配置信息,如指定编译目录,配置目录等。
  .project是项目文件,项目的结构都在其中定义,比如lib的位置,src的位置,classes的位置。
  .classpath的位置定义了你这个项目在编译时所使用的$CLASSPATH。
  pom.xml, maven的核心配置文件。
  web.xml, web项目的核心配置文件。

  filter: 过滤器,用于在请求进入之前或者之后,进行相应的处理,如写日志、处理参数等。
  Inteceptor一般用于权限验证,以及一些处理风格本地化等公共代码。
  servlet: java web的核心处理类,第三方框架就是通过接管这个类的方式,实现强大而方便的功能的。

  xmlns: XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间。
  xmlns:xsi: 这个命名空间里面的元素或者属性就必须要以xsi:这种方式来写,比如schemaLocation就是他的一个属性,所以写成xsi:schemaLocation,而默认命名空间不带类似xsi这种,其实xml标签名称有个专业叫法叫做QName,而如果没有前面的xsi:这种一般叫做NCName。所以你看mvn里面的<dependency>这种就是默认命名空间下面的元素,最后那一行就表示把定义这个命名空间的schema文件给引用进来,好让eclipse这类型工具能够解析和验证你的xml文件是否符合语法规范。等同于<import namespace=”xxx” schemaLocation=”xxx.xsd”/>。
  XSD: 指XML结构定义 ( XML Schemas Definition )
  DTD: Document Type Definition,中文意思为“文档类定义”。DTD肩负着两重任务:一方面它帮助你编写合法的代码,另一方面它让浏览器正确地显示器代码。  

  XSL: XSL 指扩展样式表语言(EXtensible Stylesheet Language)。

8. java bean

  JavaBean是符合某种规范的Java组件,也就是Java类。 它必须满足如下规范: 
  1)必须有一个零参数的默认构造函数
  2)必须有get和set方法,类的字段必须通过get和set方法来访问.(get方法无参,set方法有参) 

9. 加载路径

  classpath*:的出现是为了从多个jar文件中加载相同的文件.
  classpath:只能加载找到的第一个文件.

10. 队列

  队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。

11. 多线程

  进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。
  线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。
  线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。
  多进程是指操作系统能同时运行多个任务(程序),多线程是指在同一程序中有多个顺序流在执行。

12. 堆栈

  堆区:
    1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
    2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
  栈区:
    1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
    2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
    3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
  方法区:
    1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
    2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
13. JVM原理

  JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
  JAVA的运行环境核心就是JVM,说来就话长了,了解其他工作原理是很有必要的。

JVM执行程序的过程 :
  1. 加载.class文件
  2. 管理并分配内存
  3. 执行垃圾收集
  JRE(java运行时环境)包含JVM的java程序的运行环境
  JVM是Java程序运行的容器,但是他同时也是操作系统的一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间。
  JVM在整个jdk中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就虚拟计算机.操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境。
    1. 创建JVM装载环境和配置
    2. 装载JVM.dll
    3. 初始化JVM.dll并挂接到JNIENV(JNI调用接口)实例
    4. 调用JNIEnv实例装载并处理class类。

 14. JDBC

  JDBC是允许用户在不同数据库之间做选择的一个抽象层。JDBC允许开发者用JAVA写数据库应用程序,而不需要关心底层特定数据库的细节。

数据库连接池 
  像打开关闭数据库连接这种和数据库的交互可能是很费时的,尤其是当客户端数量增加的时候,会消耗大量的资源,成本是非常高的。可以在应用服务器启动的时候建立很多个数据库连接并维护在一个池中。连接请求由池中的连接提供。在连接使用完毕以后,把连接归还到池中,以用于满足将来更多的请求。

RMI、RPC
  Java远程方法调用(Java RMI)是Java API对远程过程调用(RPC)提供的面向对象的等价形式,支持直接传输序列化的Java对象和分布式垃圾回收。远程方法调用可以看做是激活远程正在运行的对象上的方法的步骤。RMI对调用者是位置透明的,因为调用者感觉方法是执行在本地运行的对象上的。

  加载中…

作者:等你归去来