Java - 高级点的东西

简介: Java - 高级点的东西

Java高级


类加载过程

加载(创建class对象) -> 连接(验证-准备-解析) -> 类初始化


类加载器类别

根类加载器:加载java核心类

扩展类加载器:加载JRE目录中的jar包

系统类加载器:加载用户自定义类和classpath下的jar包


Java反射机制基于什么原理

通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义


动态代理基于什么原理

方便运行时动态构建代理、动态处理代理方法调用的机制


动态代理和静态代理的区别

静态代理:事先写好代理类,缺点是每个业务类都要对应一个代理类,不灵活

动态代理:运行时自动生成代理对象,缺点是生产代理对象和调用代理方法需要额外时间


有哪些字节流?

InputStream,FileInputStream,BufferedInputStream

OutputStream,FileOutputStream,BufferedOutputStream

DataInputStream,DataOutputStream

ByteArrayInputStream,ByteArrayOutputStream

ObjectInputstream,ObjectOutputStream

PrintStream,SequenceInputStream


有哪些字符流?

Reader,InputStreamReader,FileReader,BufferedReader

Writer,OutputStreamWriter,FileWriter,BufferedWriter

CharArrayReader,CharArrayWriter,PrintWriter


还有哪些IO流?

StringReader,StringWriter,RandomAccessFile,Properties


常见网络小问题

问题 答案
TCP客户端socket是什么? Socket
TCP服务端socket是什么? ServerSocket 
UDP所用socket是什么? DatagramSocket
UDP所发和收数据报的packet是什么? DatagramPacket


GC主要算法

GC主要对象是堆和方法区,堆中把短命对象归为新生代,长命对象归为老年代      

  • 根搜索算法
  • 标记-清除算法
  • 复制算法(新生代GC)
  • 标记-整理算法(老年代GC)
  • 分代收集算法(新生代+老年代GC)


触发主GC(Garbage Collector)的条件

1、当应用程序空闲时,即没有应用线程在运行时,GC会被调用

2、Java堆内存不足时,GC会被调用。当应用线程在运行,并在运行过程中创建新对象,若这时内存空间不足,JVM就会强制地调用GC线程,以便回 收内存用于新的分配。


内存泄漏的原因

  1. 数据库连接,网络连接,iod连接,不调用close方法,则不被GC
  2. 单例模式,持有外部对象的引用,长生命周期的对象
  3. vector,对象放入vector中
  4. 集合,对象放入集合中,对象被修改属性后remove对象失败
相关文章
|
5月前
|
Java
Calendar类在Java中的高级应用与使用技巧
Calendar类在Java中的高级应用与使用技巧
|
6月前
|
Java 开发者
Java中的并发编程:从基础到高级
在Java的世界里,并发编程是一块既迷人又复杂的领域。它像是一场精心编排的交响乐,需要各种乐器和乐手的协同合作。本文将带领读者走进Java并发编程的殿堂,从简单的线程创建与管理开始,逐步深入到同步机制、锁的概念,最后探索Java内存模型和高级并发工具。我们将一起揭开并发编程神秘的面纱,理解其背后的原理,并掌握如何在实际开发中有效利用这些知识来编写高效、稳定的应用程序。
|
5月前
|
Java 程序员 API
Java中的异常处理:从基础到高级
【7月更文挑战第28天】在Java编程的世界中,异常处理是一块基石,它确保了程序的健壮性和可靠性。本文将带领读者深入理解Java的异常处理机制,从基本的try-catch语句开始,逐步探索更复杂的异常处理策略,如finally块、自定义异常以及异常链。我们还会讨论如何在设计良好的API时利用异常处理来提高用户体验。通过这篇文章,读者将能够更加自信地处理各种异常情况,编写出更加稳定和用户友好的Java应用程序。
|
5月前
|
Java 开发者
Java中的并发编程:从基础到高级
在Java世界中,并发编程是一项至关重要的技能。本文将深入探讨Java并发编程的核心概念、实用工具和高级技术。我们将从线程基础出发,逐步过渡到线程池的使用,最后探索Java并发包中的强大工具,如CyclicBarrier、Semaphore和CountDownLatch。无论你是Java新手还是资深开发者,这篇文章都将为你提供有价值的见解和技巧,帮助你在多线程环境中编写出更加高效、稳定的代码。 【7月更文挑战第30天】
40 7
|
5月前
|
Java 开发者
Java中的异常处理:从基础到高级
在Java的世界中,异常处理是一项不可或缺的技能。它不仅关乎程序的健壮性,更是开发者调试和解决问题的利器。本文将深入探讨Java异常处理的各个方面,从基本的try-catch语句到自定义异常类,再到异常链追踪和finally块的使用,我们将一一剖析。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和深度理解。
|
5月前
|
Java UED 开发者
Java中的异常处理:从基础到高级
【7月更文挑战第17天】Java的异常处理机制是其健壮性的关键所在,它允许程序在遇到错误时优雅地恢复或终止。本文将深入探讨Java的异常处理,从基本的try-catch-finally结构到更复杂的创建自定义异常类和异常链追踪。我们将通过具体代码示例来展示如何有效地处理异常,确保程序的稳定性和可靠性。
|
5月前
|
安全 Java 调度
Java中的并发编程:从基础到高级
【7月更文挑战第20天】在Java的世界中,并发编程是一块重要的领域,它允许多个操作同时执行,极大地提高了程序的效率和性能。本文将深入探讨Java并发编程的核心概念,从线程的基础使用到高级的并发工具类,再到实际案例分析,旨在为读者提供一个全面而深入的视角来理解和掌握Java并发编程的艺术。
|
5月前
|
Java 调度 开发者
Java中的并发编程:从基础到高级
【7月更文挑战第14天】在Java的世界中,并发编程是提升应用性能和响应能力的关键。本文将带领读者从线程的基础概念出发,深入探讨Java内存模型,逐步过渡到高级并发工具类如Executors框架和并发集合,最后通过案例分析展示如何在实际开发中运用这些知识解决并发问题。文章旨在为初学者提供清晰的学习路径,同时为有经验的开发者提供深度参考。
72 4
|
5月前
|
NoSQL Java 应用服务中间件
Java高级面试题
Java高级面试题
122 1
|
6月前
|
安全 Java 网络安全
Java网络编程:高级应用与安全性探讨
Java网络编程:高级应用与安全性探讨