2019年一次java知识点总结

java基础

安全性

java不支持指针,不能访问程序以外的资源

面向对象

  • 封装:代码和数据结合起来,封装单元是类。
  • 多态:允许一个接口访问一类动作,接口有多个实现。
  • 继承:一个对象获取另一个对象属性,方法。

数据类型

类型 占用2进制位数 范围
byte 8 -27~2-1 (128)
short 16 -215~215-1 (32768)
int 32 -231~231-1 (214...)
long 64 -263~263-1 (922...)
float 32 -
double 64 -
char 8 -

关键字

标志符

开头:字母,美元符,下划线
后面:数字,字母,美元符,下划线

切记不能以数字开头

集合与数据结构

IO和网络

多线程(并发与锁,死锁)

异常

简单算法,复杂度

JVM

类文件结构

类加载

字节码执行引擎

  • MethodHandle 模拟 invokevirtual 实现动态方法调用
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;

/**
 * @author :Created By huan
 * @date :Created in 11/13/19 12:16 PM
 */
public class MethodHandleTest {

    static class ClassA {
        public void println(String s) {
            System.out.println("ClassA:" + s);
        }
    }

    public static void main(String[] args) throws Throwable {
        Object obj = System.currentTimeMillis() % 2 == 0 ? System.out : new ClassA();
        getPrintlnMH(obj).invokeExact("hello");

    }

    public static MethodHandle getPrintlnMH(Object reveiver) throws NoSuchMethodException, IllegalAccessException {

        MethodType methodType = MethodType.methodType(void.class, String.class);
        return MethodHandles.lookup().findVirtual(reveiver.getClass(), "println", methodType).bindTo(reveiver);
    }
}

java内存模型

对象监听器字节码

垃圾回收

内存分析命令

常用框架,结合设计模式

spring,springMVC 和 struts(设计和漏洞)

mybaits,habirnate 和 JPA

dubbo

spring boot

spring cloud

中间件

redis

zookeeper

kafka

官网

mq

JMX

mycat

分布式

工程的设计和拓扑图

UML和数据库设计

服务拆分和集群

分库分表

事务

备份

网络,安全

TCP,UDP

HTTP、HTTP2

其他协议(RTMP ,STMP,WEBRTC)

渗透测试和防护

linux

常用命令

脚本编程

原文地址:https://www.cnblogs.com/lanqie/p/10440974.html