zoukankan      html  css  js  c++  java
  • J2EE技术整理大纲

    一、Java基础

    1.Java集合类

    HashMap:

    数组+链表+红黑树

    2.Java异常

    Throwable:error、exception(编译异常和运行时异常)

    error:系统中的错误。

    exception:程序可以处理的异常。
    throw是语句抛出一个异常;
    throws是声明一个方法可能抛出的异常信息。

    未检查的异常(RuntimeException或Error)会触发回滚,已检查的异常(CheckedException)不会触发回滚。

    下图红框为未检查的异常(UncheckedException)。

    参考:JAVA基础之异常详解

    3.Java I/O流

    4.Java反射机制

    二、Java高级

    参考:面试整理-Java综合高级篇

     1.JVM

     JDK > JRE > JVM

     JVM = 类加载器子系统(classloader) + 运行时数据区域+ 执行引擎(即时编译器+垃圾收集器)

     JVM执行Java程序的过程:1) 加载.class文件(字节码解释器) 2) 管理并分配内存 3) 执行垃圾收集。

     JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就是虚拟计算机。

     1.1类加载器子系统(classloader)

     参照:java中类的加载顺序介绍

     jvm中类的生命周期:加载、连接(验证、准备、解析)、初始化、使用和卸载

     类加载机制:双亲委派机制

     1)加载过程中会先检查类是否被已加载,检查顺序是自底向上,从Custom ClassLoader到BootStrap ClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有ClassLoader加载一次。而加载的顺序是自顶向下,也就是由上层来逐层尝试加载此类

     2)在加载类时,每个类加载器会将加载任务上交给其父,如果其父找不到,再由自己去加载。 

     3)Bootstrap Loader(启动类加载器)是最顶级的类加载器了,其父加载器为null。

     类加载器:

     1)BootstrapClassLoader(启动类加载器)

     2)ExtensionClassLoader(标准扩展类加载器)

     3)AppClassLoader(系统类加载器) 

     4)CustomClassLoader(自定义加载器) 

     Java类的初始化顺序:先父类后子类,先静态后普通,最后构造器。成员和初始化块按类中的顺序初始化。

     1)父类静态成员和静态初始化块

     2)子类静态成员和静态初始化块

     3)父类普通成员和普通初始化块

     4) 父类构造方法 

     5)子类普通成员和普通初始化块

     6)子类构造方法

     1.2运行时数据区域

     1)程序计数器:线程私有的,是一块很小的内存空间,可以认作为当前线程的行号指示器

     2)Java栈:线程私有的,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。它主要用于存放Java对象的引用

     3)本地方法栈:线程私有的,为执行本地方法(Native Method)服务的。

     4)堆:所有线程共享的,在JVM中只有一个堆。Java中的堆是用来存储Java对象以及数组(数组引用是存放在Java栈中的)。

     5)方法区:所有线程共享的,存储了Java类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

     堆中存的是对象。栈中存的是基本数据类型堆中对象的引用栈代表了处理逻辑,而堆代表了数据

     非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同

     参考:JVM内存模型详解

     参考:深入理解JVM之JVM内存区域与内存分配

     1.3GC垃圾收集器(收集的场所线程共享区域-堆和方法区)

     GC检测算法:

     1)引用计数法

      对象引用类型分为强引用、软引用、弱引用和虚引用

      只用收集计数为0的对象。缺点:无法处理循环(相互)引用的问题。

     2)可达性分析算法

     GC回收算法:

     1)标记/清除算法【最基础】缺点:产生内存碎片

     2)复制算法 缺点:需要两倍内存空间

     3)标记/整理算法

     4)分代算法:新生代、老年代、元空间(扩容)。担保机制

     参照:深入理解JVM-内存模型(jmm)和GC

     参照:JVM结构、GC工作机制详解

     1.4JVM调优

     参考:JVM调优总结

      jvm调优工具:Jconsole(JDK自带),jProfile,VisualVM(JDK自带)

    2.Java多线程和高并发 

    3.数据结构

     3.1队列,栈,堆栈,数组,链表特点与区别:

     1) 队列可以看成是有2个口的集合一个口叫队头一个叫队尾,只能在对头进行删除操作,在队尾做插入。根据这样的操作。队列特点是先进先出。

     2)堆栈可以看成是有1个口的集合,这个口叫栈顶。插入和删除操作只能在栈顶操作。根据这样的操作。堆栈的特点是是后进先出。

     3)链表是一种存储方式,它可以在非连续的内存空间里面存储一个集合的元素。

     4)和它对应的是数组,数组要在连续的空间里存储集合的元素。

     队列、栈是线性数据结构的典型代表,而数组、链表是常用的两种数据存储结构;队列和栈均可以用数组或链表的存储方式实现它的功能

     3.2树(二叉树、B树、红黑树)

     3.3图

     3.算法(时间和空间复杂度)

      程序=数据结构+算法

     4.加密算法

     6.数据库(Oracle)

     

     Oracle体系机构:逻辑结构、物理结构和实例。

     sql执行顺序  

     sql性能调优

       存储结构

       执行计划

       索引

       锁

       事务

    7.设计模式

    三、互联网流行框架

      SpringMVC Spring MyBatis

      Ngnix Redis(缓存)

      Docker  Zookeeper + Dubbo SpringBoot + SpringCloud 

      消息队列(message queue):(RabbitMQ、Kafka)

      异步:批量数据的异步处理

      解耦:串行任务的并行化

      削峰:高负载任务的负载均衡

      Elasticsearch

    四、集群和分布式部署

     session共享

     线程池

     锁

  • 相关阅读:
    Data Structure(2)
    CoreAnimation —— CALayer
    [置顶] android AIDL 进程间通信
    UVA 10057 A mid-summer night's dream. 仲夏夜之梦 求中位数
    基于mini2440的IIC读写(裸机)
    外媒关注:中国法庭用新浪微薄直播薄熙来审判
    [置顶] 吃论扯谈---吃货和Office 365订阅的关系
    小智慧42
    机器学习如何选择模型 & 机器学习与数据挖掘区别 & 深度学习科普
    【Todo】【转载】Spark学习 & 机器学习(实战部分)-监督学习、分类与回归
  • 原文地址:https://www.cnblogs.com/wenxiangchen/p/10830723.html
Copyright © 2011-2022 走看看