Java
Lin_Dong_Tian
不积跬步,无以至千里!
展开
-
进程与线程
进程和线程的由来 (1)、操作系统中为什么会出现进程? 在最初的时候,计算机只能接受一些特定的指令,用户输入一个指令,计算机就做一个操作。当用户在思考或者输入数据时,计算机就在等待。显然,这样效率会很低下,因为很多时候,计算机处于等待用户输入的状态。 那么,能不能把一系列需要操作的指令预先写下来,形成一个清单,然后一次性交给计算机,计算机不断地去读取指令来进行相应的操...转载 2019-05-24 15:18:29 · 105 阅读 · 0 评论 -
Java三大特性封装继承多态总结
一、封装封装的定义:首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系。为什么需要封装:封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现。二、继承Java的类可以分为三类:类...转载 2019-07-22 23:06:56 · 187 阅读 · 0 评论 -
图解Tomcat类加载机制
类加载 在JVM中并不是一次性把所有的文件都加载到,而是一步一步的,按照需要来加载。 比如JVM启动时,会通过不同的类加载器加载不同的类。当用户在自己的代码中,需要某些额外的类时,再通过加载机制加载到JVM中,并且存放一段时间,便于频繁使用。 因此使用哪种类加载器、在什么位置加载类都是JVM中重要的知识。类加载器 虚拟机设计团队把类加载阶段中的“通过一个类...转载 2019-08-03 15:29:14 · 248 阅读 · 0 评论 -
Java内存溢出和内存泄露
原文来自:https://blog.csdn.net/shimiso/article/details/21830871一、为什么要了解内存泄露和内存溢出?1、内存泄露一般是代码设计存在缺陷导致的,通过了解内存泄露的场景,可以避免不必要的内存溢出和提高自己的代码编写水平;2、通过了解内存溢出的几种常见情况,可以在出现内存溢出的时候快速的定位问题的位置,缩短解决故障的时间。二、基本概...转载 2019-08-03 14:54:17 · 322 阅读 · 0 评论 -
重写hashCode()方法和equals()方法
一、前言本篇文章主要探讨的问题有三个:1、首先我们为什么需要重写hashCode()方法和equals()方法?2、在什么情况下需要重写hashCode()方法和equals()方法?3、如何重写这两个方法?二、为什么需要重写hashCode()方法和equals()方法首先,为什么要重写equals()方法。我们在定义类时,我们经常会希望两个不同对象的某些属性值相同时就认...转载 2019-08-03 10:48:52 · 1854 阅读 · 2 评论 -
动态代理和拦截器
一、概述1、代理模式是常用的java设计模式,生成一个代理对象,来代替真正的对象,从而控制真实对象的访问。 客户(调用者)----------商务(代理对象)-----------软件工程师(真正对象)2、我们需要在调用者调用对象之前就生成一个代理对象,而这个代理对象需要和真正对象建立代理关系。所以有两个步骤: (1)代理对象和真正对象建立关系 (2)实现代理对...原创 2019-06-03 21:36:20 · 847 阅读 · 0 评论 -
Java内存模型(一)
一、Java内存模型概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。 内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象,不同架构下的物理机拥有不一样的内存模型,Ja...转载 2019-05-23 15:57:59 · 167 阅读 · 0 评论 -
创建对象的5中方法
1、new :最常见的方法 Employee emp1 = new Employee();2、使用newInstance()需要在有一个无参的构造方法,这个newInstance方法调用无参的构造函数创建对象。类名.calss.newInstance( ) Employee emp2 = Employee.class.newInstance();3、java.lan...转载 2019-05-23 11:10:03 · 129 阅读 · 0 评论 -
虚拟机的字节码执行引擎
一、什么是执行引擎 在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能会有解释执行和编译执行,但从外观来看,所有的Java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。本节将主要从概念模型的角度来讲解虚拟机的方法调用和字节码执行。二、每当一个java方法被调用时都会在虚拟机中新创建一个栈帧,那什么是栈帧呢?1、栈帧(S...原创 2019-05-23 10:57:12 · 137 阅读 · 0 评论 -
虚拟机类加载机制
一、虚拟机的类加载机制 虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。二、类的生命周期三、我们首先从加载说起,什么情况才需要加载类?其实并没有约束,但是初始化有约束,而加载又必须在初始化之前执行。可以理解为变向约束了加载。(1)、虚拟机规范严格规定了有且只有五种情...原创 2019-05-22 20:27:52 · 128 阅读 · 0 评论 -
字节码文件(Class文件)
一、Java的平台无关性实现 我们知道Java是“与平台无关”的,实现语言无关性的基础就是虚拟机和字节码存储格式:依靠class文件这种统一程序存储格式的字节码文件实现了语言无关性。保证了就算是不同语言,只要通过对应语言的编译器按虚拟机规范编译成class文件,这个class文件就能够被jvm加载。而不同的操作系统通过运行对应版本jvm来载入这个class文件运行,则实现了平台无关...原创 2019-05-22 17:52:05 · 3885 阅读 · 0 评论 -
Java程序的运行过程
运行一个Java程序的步骤:1、编辑源代码xxx.java2、编译xxx.java文件生成字节码文件xxx.class3、JVM中的类加载器加载字节码文件4、JVM中的执行引擎找到入口方法main(),执行其中的方法一、从源码到字节码:从我们写的java文件到通过编译器编译成java字节码文件(也就是.class文件),这个过程是java编译过程;字节码文件:真正实现了java语言...原创 2019-05-22 16:37:10 · 18367 阅读 · 0 评论 -
认识JAVA
@认识java一、Java技术体系Sun官方所定义的Java技术包括以下几个组成部分1、Java程序设计语言2、各种硬件平台上的Java虚拟机3、Java API类库4、Class文件格式5、来自商业机构和开源社区的第三方Java类库我们经常把Java程序设计语言、各种硬件平台上的Java虚拟机、Java API类库称为JDK,JDK是用于支持Java程序开发的最小环境。另外,可...原创 2019-05-22 12:30:17 · 131 阅读 · 0 评论 -
抽象类与接口
一.抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun(); 1、抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。如果一...转载 2019-07-22 23:23:34 · 72 阅读 · 0 评论