还在curd,写简单的代码?物竞天择,Java程序员必须突破的知识点

就现在的Java开发程序员来说,我们的操作都一样。现在越来越流行的框架,封装越来越完善,各种框架都可以做到一切,几乎不必注意底层的实现,初级程序员只要熟悉比较基础的使用方法就可以了。这样也可以快速开发上线;但是对于高级程序员来说,“内功”的实践越来越重要,如算法、设计模式、底层基本原理等。只有掌握了这些基本技能之后,才能在发展过程中了解它,并能在问题出现时迅速找到问题的实质。

你工作了多少年了,你还在传统公司写简单的代码吗?如果是的话!那恭喜你,真的会被社会淘汰的。这样的你又和初级工程师有多少不同?那么作为一个高级Java攻城狮需要突破哪些知识点呢?

还在curd,写简单的代码?物竞天择,Java程序员必须突破的知识点


类的生命周期

1.加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类的对象

2.连接,连接又包含三块内容:验证、准备、初始化。

1)验证,文件格式、元数据、字节码、符号引用验证;

2)准备,为类的静态变量分配内存,并将其初始化为默认值;

3)解析,把类中的符号引用转换为直接引用

3.初始化,为类的静态变量赋予正确的初始值

4.使用,new出对象程序中使用

5.卸载,执行垃圾回收

集合常用方法:

List:

add(Object obj)、remove(Object obj)、remove(int index)、size()、get(int index)、iterator()、clear()

Set:

add(Object obj)、remove(Object obj)、size()、iterator()、clear()、没有get方法

Map:

put(Object key, Object value)、get(Object key)、keySet()、values()、size()、remove(Object key) 、clear()

流的分类

根据方向分类:

输入:InputStream、Reader

输出:OutputStream、Writer

根据流操作的数据单位分类:

字节流:InputStream、OutputStream

字符流:Reader、Writer

还在curd,写简单的代码?物竞天择,Java程序员必须突破的知识点

进程和线程的区别

计算机中一个正在运行的可执行程序的实例就是进程。一个进程可以包含多个线程。单个线程用于完成一个任务,而同时创建多个线程来完成多项任务,便是多线程。

二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。

用一个比喻来说,如果一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。

调优工具

常用调优工具分为两类,jdk自带监控工具:jconsole和jvisualvm,第三方有:MAT(Memory Analyzer Tool)、GChisto。

1.jconsole,Java Monitoring and Management Console是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控

2.jvisualvm,jdk自带全能工具,可以分析内存快照、线程快照;监控内存变化、GC变化等。

3.MAT,Memory Analyzer Tool,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的Java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗

4.GChisto,一款专业分析gc日志的工具

还在curd,写简单的代码?物竞天择,Java程序员必须突破的知识点

猜你喜欢

转载自blog.csdn.net/qq_40196321/article/details/80829073