- 【吊打面试官系列】Java虚拟机JVM篇 - 关于双亲委派模型
java1234_小锋
javajavajvmjvm面试题java面试题jvm虚拟机双亲委派模型
大家好,我是锋哥。今天分享关于JVM双亲委派模型的JVM面试题,希望对大家有帮助;什么是双亲委派模型?双亲委派模型针对的是Java虚拟机中三个类加载器的,这三个类加载器分别是:启动类加载器(BootstrapClassLoader)扩展类加载器(ExtensionClassLoader)应用程序类加载器(ApplicationClassLoader)如下图所示:上面这几类类加载器构成了不同的层次结
- JAVA后端开发面试基础知识(一)——JVM
达分柒
后端面试基础java面试jvm
1.JVM的主要组成部分及其作用Classloader(类装载)根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtimedataarea中的methodarea。Executionengine(执行引擎)执行classes中的指令。NativeInterface(本地接口)与nativelibraries交互,是其它编程语言交互的接口。Runtimedat
- 不通过修改代码可以调用不同方法的三种方式
山间清泉1111
Stringpath=JsoupDemo1.class.getClassLoader().getResource("com/mujiachao/xml/dtd/student.xml").getPath();Documentdocument=Jsoup.parse(newFile(path),"utf-8");Elementsname=document.getElementsByTag("name
- SpringBoot项目打成jar包后resource下文件的读取
千星流
springbootjava
SpringBoot项目打成jar包后resource下文件的读取前言原因分析ResourceUtilsClassPathResourceClassLoader前言前几天在开发中遇到一个问题,有个cert文件需要读取,但是搞了好久才解决。所以做个标记防止自己忘记。文件放置的位置如图原因分析我们开发的时候文件一般是可以读取的,但是在打成jar包之后,文件就获取不到,出现FileNotFoundExc
- 关于Jar包无法读取dll或os文件的问题
睡不醒的牛牛
Springbootjarspringbootdllosjava
关于Jar包无法读取dll或os文件的问题最近有个项目需要加载第三方dlloros的文件库Springboot项目打包成jar包:如果需要读取resouces文件夹下的资源文件一般是通过:xxx.class.getClassLoader().getResourceAsStream("Stringpath")来读取成inputSteam流后,对文件进行操作但是jna中的Native.loadLibr
- 爱上JVM——常见问题(一):JVM组成
落雨既然
JVMjvm
1JVM组成1.1JVM由那些部分组成,运行流程是什么?难易程度:☆☆☆出现频率:☆☆☆☆JVM是什么JavaVirtualMachineJava程序的运行环境(java二进制字节码的运行环境)好处:一次编写,到处运行自动内存管理,垃圾回收机制JVM由哪些部分组成,运行流程是什么?从图中可以看出JVM的主要组成部分ClassLoader(类加载器)RuntimeDataArea(运行时数据区,内存
- 【JVM】打破双亲委派机制
五敷有你
JVMjvmjava开发语言
个人主页:五敷有你系列专栏:JVM⛺️稳中求进,晒太阳打破双亲委派机制打破双亲委派机制三种方法自定义类加载器ClassLoader包含了四个核心方法//由类加载器子类实现,获取二进制数据调用defineClass,比如URLClassLoader会根据文件路径去获取类文件中的二进制文件(不想打破就重写它)publicClassfindClass(Stringname)//类加载的入口,提供了双亲委
- Java类的加载器
怕什么真理无穷
Java基础java
packagechapter03;//Java种的类主要分为3种//1.Java核心类库种的类:String,0bject//2.JVM软件平台开发商//3.自己写的类,User,Child//类加载器也有3种//1.BootclassLoader:启动类加载器//2.PlatformclassLoader:平台类加m载器//3.AppCLassLoader:publicclassTest05{p
- 【Jvm】类加载机制(Class Loading Mechanism)原理及应用场景
墩墩分墩
JVM类加载器双亲委派模型双亲委派机制热部署线程上下文类加载器
文章目录Jvm基本组成一.什么是JVM类的加载二.类的生命周期阶段1:加载阶段2:验证阶段3:准备阶段4:解析阶段5:初始化三.类初始化时机四.类加载器1.引导类加载器(BootstrapClassLoader)2.拓展类加载器(ExtensionClassLoader)3.应用程序类加载器(SystemClassLoader)4.自定义类加载器(CustomClassLoader)5.类加载器的
- 坑-but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread
Java般若生
tomcat
在测试环境中遇到启动tomcat8.x时报错,解决思路:07-Sep-202019:09:11.196WARNING[localhost-startStop-1]org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreadsThewebapplication[system]appearstohavestartedath
- 关于今天遇到的两个bug
꧁L10꧂
Bugbugjava
Bug1:Causedby:java.lang.reflect.InaccessibleObjectException:Unabletomakeprotectedfinaljava.lang.Classjava.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)th
- Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,b
醉梦依依惜(互粉互赞)
异常系列java开发语言异常异常系列seata错误
异常信息提示:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'globalTransactionScanner'definedinclasspathresource[io/seata/spring/boot/autoconfigure/SeataAutoConfiguration.c
- Class.forName和classloader的区别
星期三不上班
JVM类加载如图所示,这是javaJVM类装载过程,Java是如何加载到jvm里面然后被识别的呢,其实分为三步:装载:(loading)找到class对应的字节码文件。连接:(linking)将对应的字节码文件读入到JVM中。初始化:(initializing)对class做相应的初始化动作。Java中两种加载class到JVM中的方式Class.forName("className");其实这种
- 类加载机制(2)类加载器源码解析
飞奔的口罩
目录一、类加载器1、BootstrapClassLoader启动类加载器2、ExtensionClassLoader扩展类加载器3、ApplicationClassLoader应用类加载器4、CustomClassLoader自定义类加载器5、线程上下文类加载器二、java虚拟机入口应用:sun.misc.Launcher1、sun.misc.Launcher主入口2、内部类ExtClassLoa
- ClassLoader 理解
that_is_this
1.老祖宗Android中类加载器有BootClassLoader,URLClassLoader,PathClassLoader,DexClassLoader,BaseDexClassLoader,等都最终继承自java.lang.ClassLoader。所以ClassLoader类就是老祖宗。这个老祖宗开始是无参数构造180publicabstractclassClassLoader{18118
- 安卓面试总结——提升
Alex_ecb1
1.热修复的几种方式1.通过更改dex加载顺序实现热修复热修复是基于dex分包方案,和Android虚拟机的类加载器(ClassLoader)实现的在打包apk的时候,会把java文件通过类加载器编译成class文件,然后把class文件组合成class.dex文件,dex文件会把每一个类的id检索起来,存在一个链表里面。将编译好的class文件,拆分成多个dex文件,将应用启动时必须用到的类和这
- JVM的主要组成部分,以及它们的作用。JVM中的内存区域有哪些,它们各自的作用是什么?什么是Java的堆内存,它如何影响程序的性能?
AaronWang94
javajvmjava
JVM的主要组成部分,以及它们的作用JVM(Java虚拟机)的主要组成部分包括类加载器(ClassLoader)、运行时数据区(RuntimeDataArea)、执行引擎(ExecutionEngine)、本地库接口(NativeInterface)以及本地方法库。这些组件协同工作,使得Java程序能够在不同的平台上运行。类加载器(ClassLoader):负责加载Java类到JVM中。它根据全限
- Flink Maven项目兼容多版本Kafka
weixin_30855099
大数据javascala
主要有两种方法可以解决:修改jar包内部的包名或者使用自定义classloaderFlink需要导入kafka-clients来支持对kafka的生产和消费。kafka-clients0.11提供的api仅在kafka0.11、kafka0.10版本可用,如果要对kafka0.8、kafka0.9进行生产和消费,则需要使用版本相匹配的kafka-clients的jar包。但如果直接使用这些jar包
- AbstractApplicationContext源码解析(2)
嘘寒问暖
prepareBeanFactory方法大概理解一下prepareBeanFactory方法的作用,源码如下:/***配置工厂的标准上下文特征,例如上下文的ClassLoader和后处理器。*@parambeanFactory要配置的BeanFactory*Configurethefactory'sstandardcontextcharacteristics,*suchasthecontext's
- 插件化后加重无法类型转换的问题探讨
吉凶以情迁
通过打印class的hash发现是不匹配的,虽然包名一样,甚至任何内容都一样,决定是否可以转换的关键是是否同一个classloader,或者父类继承,也就是new的时候是宿主的classloader那么就可以进行类型转换。和插件是否打包进入插件apk无关,不管打包进去或者不打包进去实际上都是可以正常执行强转接口。
- 类加载器的三种+双亲委派机制大概了解
it优质男
面试面试
类加载器有哪几种分别是加载哪些类的类加载一共可以分为三种:分别为:启动类加载器(BootstrapClassLoader):负责加载Java的核心类库,如java.lang包中的类。扩展类加载器(ExtensionClassLoader):负责加载Java的扩展类库,位于\lib\ext目录下的JAR文件。应用程序类加载器(ApplicationClassLoader):负责加载应用程序类路径(c
- JVM相关问题
五星颠勺大厨
java
1JVM组成1.1JVM由那些部分组成,运行流程是什么?难易程度:☆☆☆出现频率:☆☆☆☆JVM是什么JavaVirtualMachineJava程序的运行环境(java二进制字节码的运行环境)好处:一次编写,到处运行自动内存管理,垃圾回收机制JVM由哪些部分组成,运行流程是什么?从图中可以看出JVM的主要组成部分ClassLoader(类加载器)RuntimeDataArea(运行时数据区,内存
- 【开发问题&问题解决&开发小技巧】通用资源管理01
王小小鸭
PL/SQLoracleapexoracle数据库sqloracle
【问题】新增应该输出提示但是出现乱码查看会话发现是会话已结束,好家伙重新登录会话依旧新增失败,原来是提交的项没添加ORZ【问题】会话保护将会话保护改为“无限制”执行修改提交但是一直在加载中,回滚后执行直接跳出来“未找到驱动程序类'com.intellij.database.run.ReservedCellValue(nosecuritymanager:RMIclassloaderdisabled)
- 什么是Java中的类加载器(ClassLoader),并举例说明不同类型的类加载器?
顶碗冷笑话
javajavapythonphp面试改行学it开发语言
什么是Java中的类加载器(ClassLoader),并举例说明不同类型的类加载器?在Java中,类加载器(ClassLoader)是负责加载Java类文件的重要组件之一。ClassLoader将字节码数据加载到JVM中,并将其转换为Java类的运行时对象。类加载器的主要任务是在运行时查找和加载类文件,并将其转换为Class对象。类加载器的特点:动态加载:类加载器能够在程序运行时动态加载类文件,而
- Java使用ClassLoader读取外部json文件
Yungang_Young
Javajavajson开发语言springspringboot
我们有时候会遇到这样一种业务场景:某个对象是变化的,在不同项目的部署中,可能需要更改对象中的某个属性,这时如果我们将该对象写在代码里,这样不仅寻找不便,部署后也不能随便修改(修改后又要重新打包),这就需要将该对象解耦,单独抽离出来,做成一个json文件,放在resource中,这样即使项目上线后,我们也能随时改变,只需要重启即可。读取逻辑如下图所示:我们将该对象写成json格式,放在resourc
- JVM相关-JVM模型、垃圾回收、JVM调优
热心邻居老王
JavaSEJavajvmjava
一、JVM模型JVM内部体型划分JVM的内部体系结构分为三部分,分别是:类加载器(ClassLoader)子系统、运行时数据区(内存)和执行引擎1、类加载器概念每个JVM都有一个类加载器子系统(classloadersubsystem),JVM的类加载器包括:用户自定义类加载器、应用类加载器、拓展类加载器、启动类加载器启动类加载器(BootstrapClassLoader)非java语言实现作用:
- 深入理解和探究Java类加载机制----
小班悟空
1.java.lang.ClassLoader类介绍java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个Java类,即java.lang.Class类的一个实例。ClassLoader提供了一系列的方法,比较重要的方法如:2.JVM中类加载器的树状层次结构Java中的类加载器大致可以分成两类,一类是系统提供的
- JVM 全面了解
Upaaui
#jvmjvmjava开发语言
JVM包含两个子系统和两个组件,两个子系统为Classloader(类装载器)、Executionengine(执行引擎);两个组件为Runtimedataarea(运行时数据区)、NativeInterface(本地接口)。方法区:存储已被虚拟机加载的类元数据信息(元空间)堆:存放对象实例,几乎所有对象实例都在这里分配内存Java栈(虚拟机栈):虚拟机栈描述的是Java方法执行的内存模型:每个方
- classLoader类加载器如何加载class
爱编程的大白
ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多j
- 2021年Android开发者跳槽指南,终局之战
m0_56037919
程序员android
热修复技术是Android开发中比较高级的知识点,是中级开发人员通向高级开发中必须掌握的技能。本篇重点讲解热修复热修复的原理,各大热修复框架的比较,以及自身产品中热修复功能的实践。一、什么是热修复?正常开发流程热修复开发流程热修复优势饿了么Android岗一面1:双亲委托机制?2:插件化原理?3:垃圾回收机制及其优缺点?4:PathClassLoader和DexClassLoader区别?5:说下
- 关于旗正规则引擎下载页面需要弹窗保存到本地目录的问题
何必如此
jsp超链接文件下载窗口
生成下载页面是需要选择“录入提交页面”,生成之后默认的下载页面<a>标签超链接为:<a href="<%=root_stimage%>stimage/image.jsp?filename=<%=strfile234%>&attachname=<%=java.net.URLEncoder.encode(file234filesourc
- 【Spark九十八】Standalone Cluster Mode下的资源调度源代码分析
bit1129
cluster
在分析源代码之前,首先对Standalone Cluster Mode的资源调度有一个基本的认识:
首先,运行一个Application需要Driver进程和一组Executor进程。在Standalone Cluster Mode下,Driver和Executor都是在Master的监护下给Worker发消息创建(Driver进程和Executor进程都需要分配内存和CPU,这就需要Maste
- linux上独立安装部署spark
daizj
linux安装spark1.4部署
下面讲一下linux上安装spark,以 Standalone Mode 安装
1)首先安装JDK
下载JDK:jdk-7u79-linux-x64.tar.gz ,版本是1.7以上都行,解压 tar -zxvf jdk-7u79-linux-x64.tar.gz
然后配置 ~/.bashrc&nb
- Java 字节码之解析一
周凡杨
java字节码javap
一: Java 字节代码的组织形式
类文件 {
OxCAFEBABE ,小版本号,大版本号,常量池大小,常量池数组,访问控制标记,当前类信息,父类信息,实现的接口个数,实现的接口信息数组,域个数,域信息数组,方法个数,方法信息数组,属性个数,属性信息数组
}
&nbs
- java各种小工具代码
g21121
java
1.数组转换成List
import java.util.Arrays;
Arrays.asList(Object[] obj); 2.判断一个String型是否有值
import org.springframework.util.StringUtils;
if (StringUtils.hasText(str)) 3.判断一个List是否有值
import org.spring
- 加快FineReport报表设计的几个心得体会
老A不折腾
finereport
一、从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度。否则每次设计时模板均要从远程读取数据,速度相当慢!!
二、找一个富文本编辑软件(如NOTEPAD+)编辑SQL语句,这样会很好地检查语法。有时候带参数较多检查语法复杂时,结合FineReport中生成的日志,再找一个第三方数据库访问软件(如PL/SQL)进行数据检索,可以很快定位语法错误。
- mysql linux启动与停止
墙头上一根草
如何启动/停止/重启MySQL一、启动方式1、使用 service 启动:service mysqld start2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start3、使用 safe_mysqld 启动:safe_mysqld&二、停止1、使用 service 启动:service mysqld stop2、使用 mysqld 脚本启动:/etc/inin
- Spring中事务管理浅谈
aijuans
spring事务管理
Spring中事务管理浅谈
By Tony Jiang@2012-1-20 Spring中对事务的声明式管理
拿一个XML举例
[html]
view plain
copy
print
?
<?xml version="1.0" encoding="UTF-8"?>&nb
- php中隐形字符65279(utf-8的BOM头)问题
alxw4616
php中隐形字符65279(utf-8的BOM头)问题
今天遇到一个问题. php输出JSON 前端在解析时发生问题:parsererror.
调试:
1.仔细对比字符串发现字符串拼写正确.怀疑是 非打印字符的问题.
2.逐一将字符串还原为unicode编码. 发现在字符串头的位置出现了一个 65279的非打印字符.
 
- 调用对象是否需要传递对象(初学者一定要注意这个问题)
百合不是茶
对象的传递与调用技巧
类和对象的简单的复习,在做项目的过程中有时候不知道怎样来调用类创建的对象,简单的几个类可以看清楚,一般在项目中创建十几个类往往就不知道怎么来看
为了以后能够看清楚,现在来回顾一下类和对象的创建,对象的调用和传递(前面写过一篇)
类和对象的基础概念:
JAVA中万事万物都是类 类有字段(属性),方法,嵌套类和嵌套接
- JDK1.5 AtomicLong实例
bijian1013
javathreadjava多线程AtomicLong
JDK1.5 AtomicLong实例
类 AtomicLong
可以用原子方式更新的 long 值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范。AtomicLong 可用在应用程序中(如以原子方式增加的序列号),并且不能用于替换 Long。但是,此类确实扩展了 Number,允许那些处理基于数字类的工具和实用工具进行统一访问。
 
- 自定义的RPC的Java实现
bijian1013
javarpc
网上看到纯java实现的RPC,很不错。
RPC的全名Remote Process Call,即远程过程调用。使用RPC,可以像使用本地的程序一样使用远程服务器上的程序。下面是一个简单的RPC 调用实例,从中可以看到RPC如何
- 【RPC框架Hessian一】Hessian RPC Hello World
bit1129
Hello world
什么是Hessian
The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary p
- 【Spark九十五】Spark Shell操作Spark SQL
bit1129
shell
在Spark Shell上,通过创建HiveContext可以直接进行Hive操作
1. 操作Hive中已存在的表
[hadoop@hadoop bin]$ ./spark-shell
Spark assembly has been built with Hive, including Datanucleus jars on classpath
Welcom
- F5 往header加入客户端的ip
ronin47
when HTTP_RESPONSE {if {[HTTP::is_redirect]}{ HTTP::header replace Location [string map {:port/ /} [HTTP::header value Location]]HTTP::header replace Lo
- java-61-在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差. 求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5,
bylijinnan
java
思路来自:
http://zhedahht.blog.163.com/blog/static/2541117420116135376632/
写了个java版的
public class GreatestLeftRightDiff {
/**
* Q61.在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差。
* 求所有数对之差的最大值。例如在数组
- mongoDB 索引
开窍的石头
mongoDB索引
在这一节中我们讲讲在mongo中如何创建索引
得到当前查询的索引信息
db.user.find(_id:12).explain();
cursor: basicCoursor 指的是没有索引
&
- [硬件和系统]迎峰度夏
comsci
系统
从这几天的气温来看,今年夏天的高温天气可能会维持在一个比较长的时间内
所以,从现在开始准备渡过炎热的夏天。。。。
每间房屋要有一个落地电风扇,一个空调(空调的功率和房间的面积有密切的关系)
坐的,躺的地方要有凉垫,床上要有凉席
电脑的机箱
- 基于ThinkPHP开发的公司官网
cuiyadll
行业系统
后端基于ThinkPHP,前端基于jQuery和BootstrapCo.MZ 企业系统
轻量级企业网站管理系统
运行环境:PHP5.3+, MySQL5.0
系统预览
系统下载:http://www.tecmz.com
预览地址:http://co.tecmz.com
各种设备自适应
响应式的网站设计能够对用户产生友好度,并且对于
- Transaction and redelivery in JMS (JMS的事务和失败消息重发机制)
darrenzhu
jms事务承认MQacknowledge
JMS Message Delivery Reliability and Acknowledgement Patterns
http://wso2.com/library/articles/2013/01/jms-message-delivery-reliability-acknowledgement-patterns/
Transaction and redelivery in
- Centos添加硬盘完全教程
dcj3sjt126com
linuxcentoshardware
Linux的硬盘识别:
sda 表示第1块SCSI硬盘
hda 表示第1块IDE硬盘
scd0 表示第1个USB光驱
一般使用“fdisk -l”命
- yii2 restful web服务路由
dcj3sjt126com
PHPyii2
路由
随着资源和控制器类准备,您可以使用URL如 http://localhost/index.php?r=user/create访问资源,类似于你可以用正常的Web应用程序做法。
在实践中,你通常要用美观的URL并采取有优势的HTTP动词。 例如,请求POST /users意味着访问user/create动作。 这可以很容易地通过配置urlManager应用程序组件来完成 如下所示
- MongoDB查询(4)——游标和分页[八]
eksliang
mongodbMongoDB游标MongoDB深分页
转载请出自出处:http://eksliang.iteye.com/blog/2177567 一、游标
数据库使用游标返回find的执行结果。客户端对游标的实现通常能够对最终结果进行有效控制,从shell中定义一个游标非常简单,就是将查询结果分配给一个变量(用var声明的变量就是局部变量),便创建了一个游标,如下所示:
> var
- Activity的四种启动模式和onNewIntent()
gundumw100
android
Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
Android总Activity的启动模式分为四种:
Activity启动模式设置:
<acti
- 攻城狮送女友的CSS3生日蛋糕
ini
htmlWebhtml5csscss3
在线预览:http://keleyi.com/keleyi/phtml/html5/29.htm
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>攻城狮送女友的CSS3生日蛋糕-柯乐义<
- 读源码学Servlet(1)GenericServlet 源码分析
jzinfo
tomcatWebservlet网络应用网络协议
Servlet API的核心就是javax.servlet.Servlet接口,所有的Servlet 类(抽象的或者自己写的)都必须实现这个接口。在Servlet接口中定义了5个方法,其中有3个方法是由Servlet 容器在Servlet的生命周期的不同阶段来调用的特定方法。
先看javax.servlet.servlet接口源码:
package
- JAVA进阶:VO(DTO)与PO(DAO)之间的转换
snoopy7713
javaVOHibernatepo
PO即 Persistence Object VO即 Value Object
VO和PO的主要区别在于: VO是独立的Java Object。 PO是由Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。
实际上,这个VO被用作Data Transfer
- mongodb group by date 聚合查询日期 统计每天数据(信息量)
qiaolevip
每天进步一点点学习永无止境mongodb纵观千象
/* 1 */
{
"_id" : ObjectId("557ac1e2153c43c320393d9d"),
"msgType" : "text",
"sendTime" : ISODate("2015-06-12T11:26:26.000Z")
- java之18天 常用的类(一)
Luob.
MathDateSystemRuntimeRundom
System类
import java.util.Properties;
/**
* System:
* out:标准输出,默认是控制台
* in:标准输入,默认是键盘
*
* 描述系统的一些信息
* 获取系统的属性信息:Properties getProperties();
*
*
*
*/
public class Sy
- maven
wuai
maven
1、安装maven:解压缩、添加M2_HOME、添加环境变量path
2、创建maven_home文件夹,创建项目mvn_ch01,在其下面建立src、pom.xml,在src下面简历main、test、main下面建立java文件夹
3、编写类,在java文件夹下面依照类的包逐层创建文件夹,将此类放入最后一级文件夹
4、进入mvn_ch01
4.1、mvn compile ,执行后会在