没长正的技术专栏 勤动手、多思考

Java基础

2013-08-01

阅读:

2013-08-01

Java 基础

1. 常见概念梳理

概念 分析
Java 是单继承多实现 若是多继承,多个父类中出现了重复方法,不知道调用那个;
而多实现类,都会到具体实现类中实现调用的抽象方法。
接口可以多继承 来源
动态代理 JDK基于接口(Proxy.newInstnce 实现 new InvocationHandler)、
CGLIB基于继承
参考
同步与异步 针对于被调用方,执行时间长短没变;
异步即被调用方重开线程处理。
阻塞与非阻塞 针对于调用方是否阻塞
如果未阻塞(提交到线程池中,执行下个操作)
并行与并发 并行利用的是多核CPU,
并发利用的是CPU时间片

2.基本原理

2.1 类创建过程

对象创建过程:new对象/反射创建 a、检查类是否加载,没有则先加载类。(懒加载,会在堆区有class对象,方法区会有类的相关元数据信息)

b、分配内存。jvm根据大小分配内存空间;空闲列表(空间不规整,容易形成碎片空间)和指针碰撞方式(空间比较规整,默认使用)。并发问题,用CAS+重试机制或本地线程分配缓冲(每个线程预先分配一块堆内存)。

c、初始化。实例赋零值或null等操作。

d、设置对象头。hashcode、分代年龄、锁状态等信息。

e、执行初始化方法。对实例设置程序指定的初始值,并执行构造方法。 原文链接:https://blog.csdn.net/nalanmingdian/article/details/119607562

3.Java常见用法

4.1 Java 获取路径


//测试用例中
String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();

//  C:/Git/project/report-generation/target/test-classes/

// 具体 业务类中
this.classLoader.getResource("").getPath()

String pubPath = Thread.currentThread().getContextClassLoader().getResource("/").getPath();
        System.out.println("pubPath = " + pubPath);

4.2 环境变量

//wins : JAvA_HOME 
//linux: JAVA_HOME  基于/etc/profile 或者 .bash_profile ,修改完成之后,使用source profile或 source .bash_profile 使文件生效。

欢迎拍砖,多多交流,转载请注明出处:[没长正的技术专栏](http://blog.meizhangzheng.com) 如涉及侵权问题,请发送邮件到xsj34567@163.com,如情况属实本人将会尽快删除。


上一篇 正则表达式

下一篇 Java运算

Comments

Content