首页 > 其他分享 >Maven实战 3 -- Maven项目构建2

Maven实战 3 -- Maven项目构建2

时间:2022-12-14 20:34:28浏览次数:52  
标签:实战 maven 项目 -- 如下 Maven 所示 archetype mvn


  maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程。

Jave项目

Jave Project

  1、使用mvn archetype:generate命令,如下所示:



mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false



  2、使用mvn archetype:create命令,如下所示:



mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false



  使用"mvn archetype:generate"命令和"mvn archetype:create"都可以创建项目,目前没有发现这两者的区别,唯一区别的地方就是发现使用"mvn archetype:generate"命令创建项目时要特别长的时间才能够将项目创建好,而使用"mvn archetype:create"命令则可以很快将项目创建出来。

  使用"mvn archetype:create"命令创建一个java项目的过程如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web

  BUILD SUCCESS就表示项目构建成功,当在前用户目录下(即C:\Documents and Settings\Administrator)下构建了一个Java Project叫做myapp。

  构建好的Java项目的目录结构如下:

  

Maven实战 3 -- Maven项目构建2_java_02

  可以看到,Maven帮我们创建的项目是一个标准的Maven项目,不过目前Maven只是帮我们生成了src/main/java(存放项目的源代码)和src/test/java(存放测试源代码)这两个目录,但实际项目开发中我们一般都会有配置文件,例如log4j.properties,所以我们还需要手动创建src/main/resources(存放项目开发中用到的配置文件,如存放log4j.properties等)和src/test/resources(存放测试时用到的配置文件),如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_03

  然后我们就可以将创建好的myapp项目导入到Eclipse中进行开发了,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_04

1.2、JavaProject的pom.xml文件说明

  通过Maven构建的JavaProject,在项目的根目录下都会存在一个pom.xml文件,进入myapp目录,可以看到有一个pom.xml文件,这个文件是Maven的核心。如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_05

    1、pom意思就是project object model。

    2、pom.xml包含了项目构建的信息,包括项目的信息、项目的依赖等。

    3、pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xml

  pom.xml文件的内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.app</groupId>
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>myapp</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>


  pom.xml文件的节点元素说明:


    <project>       pom文件的顶级节点
    <modelVersion>     object model版本,对Maven2和Maven3来说,只能是4.0.0 
    <groupId>       项目创建组织的标识符,一般是域名的倒写
    <artifactId>      定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
    <version>        当前项目的版本,SNAPSHOT,表示是快照版本,在开发中

    <packaging>      打包的方式,有jar、war、ear等
    <name>        项目的名称
    <url>          项目的地址

    <properties>    属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <dependencies>     构建项目依赖的jar

  其中由groupId、artifactId和version唯一的确定了一个项目坐标

1.3、使用Maven编译-测试-打包-安装项目

1.3.1、编译

  编译源程序,进入命令行,切换到myapp目录,执行命令:mvn clean compile,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_06

  编译成功,在myapp目录下多出一个target目录,target\classes里面存放的就是编译后的class文件,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_07

1.3.2、测试

  进入命令行,切换到myapp目录,执行命令:mvn clean test,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_08

  测试成功,在myapp\target目录下会有一个test-classes目录,存放的就是测试代码的class文件,如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_09

1.3.3、打包

  进入命令行,切换到myapp目录,执行命令:mvn clean package,执行打包命令前,会先执行编译和测试命令,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_10

  

Maven实战 3 -- Maven项目构建2_java_11

  构建成功后,会在target目录下生成myapp-1.0-SNAPSHOT.jar包,如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_12

1.3.4、安装

  进入命令行,切换到my-app目录,执行命令:mvn clean install ,执行安装命令前,会先执行编译、测试、打包命令,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_13

  

Maven实战 3 -- Maven项目构建2_Web_14

  构建成功,就会将项目的jar包安装到本地仓库,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_15

1.3.5、运行jar包

  进入命令行,切换到myapp目录,执行命令:java -cp target\myapp-1.0-SNAPSHOT.jar com.mycompany.app.App,如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_16

二、构建JavaWeb项目

2.1、创建JavaWeb项目

  1、使用mvn archetype:generate命令,如下所示:


mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false


  使用"mvn archetype:generate"命令创建一个javaWeb项目的过程如下图所示:  

  

Maven实战 3 -- Maven项目构建2_maven_17

  使用"mvn archetype:generate"命令创建一个javaWeb项目的时间非常长,要了40多秒,有时甚至会更久,不知道为啥。

  2、使用mvn archetype:create命令,如下所示:


mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false


  使用"mvn archetype:create"命令创建一个javaWeb项目的过程如下图所示:  

  

Maven实战 3 -- Maven项目构建2_Web_18

  使用"mvn archetype:create"命令创建一个javaWeb项目的时间非常快,几秒钟就可以了。

  创建好的JavaWeb项目的目录结构如下:

  

Maven实战 3 -- Maven项目构建2_Web_19

  创建好的JavaWeb项目中目前只有src/main/resources目录,因此还需要手动添加src/main/java、src/test/java、src/test/resources

  如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_20

  接着我们就可以将创建好的JavaWeb导入Eclipse中进行开发了,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_21

2.2、使用Maven打包发布Web项目

  Maven帮我们创建的JavaWeb项目是一个空的项目,只有一个index.jsp页面,我们使用Maven将Web项目打包发布运行。

  在命令行切换到myWebApp目录,执行:mvn package,构建成功后,myWebApp目录目录下多了一个target目录,在这个目录下会打包成myWebApp目录.war,把这个war包拷贝到Tomcat的发布目录下就可以运行了。如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_22


Maven实战 3 -- Maven项目构建2_java_23

  

  打包成功,在myWebApp\target目录下生成了一个myWebApp.war文件,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_24

  将myWebApp.war放到tomcat服务器中运行,如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_25

  运行效果如下:

  

Maven实战 3 -- Maven项目构建2_Web_26

  除了使用Tomcat服务器运行Web项目之外,我们还可以在Web项目中集成Jetty发布运行,首先在pom.xml文件中配置Jetty插件,如下:


1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3   <modelVersion>4.0.0</modelVersion> 4   <groupId>com.mycompany.app</groupId> 5   <artifactId>myWebApp</artifactId> 6   <packaging>war</packaging> 7   <version>1.0-SNAPSHOT</version> 8   <name>myWebApp Maven Webapp</name> 9   <url>http://maven.apache.org</url>10   <dependencies>11     <dependency>12       <groupId>junit</groupId>13       <artifactId>junit</artifactId>14       <version>3.8.1</version>15       <scope>test</scope>16     </dependency>17   </dependencies>18   <build>19     <finalName>myWebApp</finalName>20      <pluginManagement>21         <!--配置Jetty-->22           <plugins>
23 <plugin>
24 <groupId>org.mortbay.jetty</groupId>
25 <artifactId>maven-jetty-plugin</artifactId>
26 </plugin>
27 </plugins>
28 </pluginManagement>
29 </build>
30 </project>


  打开命令行窗口,切换到myWebApp目录,然后执行:mvn jetty:run启动Jetty服务器,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_27

  

Maven实战 3 -- Maven项目构建2_java_28

  接着就可以在8080端口上访问应用了。如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_29

三、Maven创建项目的命令说明

  mvn archetype:create或者mvn archetype:generate  固定写法

  -DgroupId                       组织标识(包名)

  -DartifactId                      项目名称

  -DarchetypeArtifactId                  指定ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project

  -DinteractiveMode                    是否使用交互模式

  archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:

  • maven-archetype-archetype
  • maven-archetype-j2ee-simple
  • maven-archetype-mojo
  • maven-archetype-portlet
  • maven-archetype-profiles (currently under development)
  • maven-archetype-quickstart
  • maven-archetype-simple (currently under development)
  • maven-archetype-site
  • maven-archetype-site-simple
  • maven-archetype-webapp

  每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstartmaven-archetype-webapp骨架。maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project。

  不得不说,Maven的确是一个很好的项目构建工具。掌握好Maven对于项目开发是非常有帮助的。


  maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程。

Jave项目

Jave Project

  1、使用mvn archetype:generate命令,如下所示:


mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


  2、使用mvn archetype:create命令,如下所示:


mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


  使用"mvn archetype:generate"命令和"mvn archetype:create"都可以创建项目,目前没有发现这两者的区别,唯一区别的地方就是发现使用"mvn archetype:generate"命令创建项目时要特别长的时间才能够将项目创建好,而使用"mvn archetype:create"命令则可以很快将项目创建出来。

  使用"mvn archetype:create"命令创建一个java项目的过程如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web

  BUILD SUCCESS就表示项目构建成功,当在前用户目录下(即C:\Documents and Settings\Administrator)下构建了一个Java Project叫做myapp。

  构建好的Java项目的目录结构如下:

  

Maven实战 3 -- Maven项目构建2_java_02

  可以看到,Maven帮我们创建的项目是一个标准的Maven项目,不过目前Maven只是帮我们生成了src/main/java(存放项目的源代码)和src/test/java(存放测试源代码)这两个目录,但实际项目开发中我们一般都会有配置文件,例如log4j.properties,所以我们还需要手动创建src/main/resources(存放项目开发中用到的配置文件,如存放log4j.properties等)和src/test/resources(存放测试时用到的配置文件),如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_03

  然后我们就可以将创建好的myapp项目导入到Eclipse中进行开发了,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_04

1.2、JavaProject的pom.xml文件说明

  通过Maven构建的JavaProject,在项目的根目录下都会存在一个pom.xml文件,进入myapp目录,可以看到有一个pom.xml文件,这个文件是Maven的核心。如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_05

    1、pom意思就是project object model。

    2、pom.xml包含了项目构建的信息,包括项目的信息、项目的依赖等。

    3、pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xml

  pom.xml文件的内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.app</groupId>
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>myapp</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>


  pom.xml文件的节点元素说明:


    <project>       pom文件的顶级节点
    <modelVersion>     object model版本,对Maven2和Maven3来说,只能是4.0.0 
    <groupId>       项目创建组织的标识符,一般是域名的倒写
    <artifactId>      定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
    <version>        当前项目的版本,SNAPSHOT,表示是快照版本,在开发中

    <packaging>      打包的方式,有jar、war、ear等
    <name>        项目的名称
    <url>          项目的地址

    <properties>    属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <dependencies>     构建项目依赖的jar

  其中由groupId、artifactId和version唯一的确定了一个项目坐标

1.3、使用Maven编译-测试-打包-安装项目

1.3.1、编译

  编译源程序,进入命令行,切换到myapp目录,执行命令:mvn clean compile,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_06

  编译成功,在myapp目录下多出一个target目录,target\classes里面存放的就是编译后的class文件,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_07

1.3.2、测试

  进入命令行,切换到myapp目录,执行命令:mvn clean test,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_08

  测试成功,在myapp\target目录下会有一个test-classes目录,存放的就是测试代码的class文件,如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_09

1.3.3、打包

  进入命令行,切换到myapp目录,执行命令:mvn clean package,执行打包命令前,会先执行编译和测试命令,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_10

  

Maven实战 3 -- Maven项目构建2_java_11

  构建成功后,会在target目录下生成myapp-1.0-SNAPSHOT.jar包,如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_12

1.3.4、安装

  进入命令行,切换到my-app目录,执行命令:mvn clean install ,执行安装命令前,会先执行编译、测试、打包命令,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_13

  

Maven实战 3 -- Maven项目构建2_Web_14

  构建成功,就会将项目的jar包安装到本地仓库,如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_15

1.3.5、运行jar包

  进入命令行,切换到myapp目录,执行命令:java -cp target\myapp-1.0-SNAPSHOT.jar com.mycompany.app.App,如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_16

二、构建JavaWeb项目

2.1、创建JavaWeb项目

  1、使用mvn archetype:generate命令,如下所示:


mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false


  使用"mvn archetype:generate"命令创建一个javaWeb项目的过程如下图所示:  

  

Maven实战 3 -- Maven项目构建2_maven_17

  使用"mvn archetype:generate"命令创建一个javaWeb项目的时间非常长,要了40多秒,有时甚至会更久,不知道为啥。

  2、使用mvn archetype:create命令,如下所示:


mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false


  使用"mvn archetype:create"命令创建一个javaWeb项目的过程如下图所示:  

  

Maven实战 3 -- Maven项目构建2_Web_18

  使用"mvn archetype:create"命令创建一个javaWeb项目的时间非常快,几秒钟就可以了。

  创建好的JavaWeb项目的目录结构如下:

  

Maven实战 3 -- Maven项目构建2_Web_19

  创建好的JavaWeb项目中目前只有src/main/resources目录,因此还需要手动添加src/main/java、src/test/java、src/test/resources

  如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_20

  接着我们就可以将创建好的JavaWeb导入Eclipse中进行开发了,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_21

2.2、使用Maven打包发布Web项目

  Maven帮我们创建的JavaWeb项目是一个空的项目,只有一个index.jsp页面,我们使用Maven将Web项目打包发布运行。

  在命令行切换到myWebApp目录,执行:mvn package,构建成功后,myWebApp目录目录下多了一个target目录,在这个目录下会打包成myWebApp目录.war,把这个war包拷贝到Tomcat的发布目录下就可以运行了。如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_22


Maven实战 3 -- Maven项目构建2_java_23

  

  打包成功,在myWebApp\target目录下生成了一个myWebApp.war文件,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_24

  将myWebApp.war放到tomcat服务器中运行,如下图所示:

  

Maven实战 3 -- Maven项目构建2_java_25

  运行效果如下:

  

Maven实战 3 -- Maven项目构建2_Web_26

  除了使用Tomcat服务器运行Web项目之外,我们还可以在Web项目中集成Jetty发布运行,首先在pom.xml文件中配置Jetty插件,如下:


1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3   <modelVersion>4.0.0</modelVersion> 4   <groupId>com.mycompany.app</groupId> 5   <artifactId>myWebApp</artifactId> 6   <packaging>war</packaging> 7   <version>1.0-SNAPSHOT</version> 8   <name>myWebApp Maven Webapp</name> 9   <url>http://maven.apache.org</url>10   <dependencies>11     <dependency>12       <groupId>junit</groupId>13       <artifactId>junit</artifactId>14       <version>3.8.1</version>15       <scope>test</scope>16     </dependency>17   </dependencies>18   <build>19     <finalName>myWebApp</finalName>20      <pluginManagement>21         <!--配置Jetty-->22           <plugins>23             <plugin>24              <groupId>org.mortbay.jetty</groupId>   25              <artifactId>maven-jetty-plugin</artifactId>26             </plugin>27           </plugins>28     </pluginManagement>29   </build>30 </project>


  打开命令行窗口,切换到myWebApp目录,然后执行:mvn jetty:run启动Jetty服务器,如下图所示:

  

Maven实战 3 -- Maven项目构建2_maven_27

  

Maven实战 3 -- Maven项目构建2_java_28

  接着就可以在8080端口上访问应用了。如下图所示:

  

Maven实战 3 -- Maven项目构建2_Web_29

三、Maven创建项目的命令说明

  mvn archetype:create或者mvn archetype:generate  固定写法

  -DgroupId                       组织标识(包名)

  -DartifactId                      项目名称

  -DarchetypeArtifactId                  指定ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project

  -DinteractiveMode                    是否使用交互模式

  archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:

  • maven-archetype-archetype
  • maven-archetype-j2ee-simple
  • maven-archetype-mojo
  • maven-archetype-portlet
  • maven-archetype-profiles (currently under development)
  • maven-archetype-quickstart
  • maven-archetype-simple (currently under development)
  • maven-archetype-site
  • maven-archetype-site-simple
  • maven-archetype-webapp

  每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstartmaven-archetype-webapp骨架。maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project。

  不得不说,Maven的确是一个很好的项目构建工具。掌握好Maven对于项目开发是非常有帮助的。

标签:实战,maven,项目,--,如下,Maven,所示,archetype,mvn
From: https://blog.51cto.com/u_15912341/5938363

相关文章

  • 会话机制详解(Cookie和Session)
    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记......
  • 2022 ICPC 杭州站 K - Master of Both // Trie
    K-MasterofBoth题目来源:The2022ICPCAsiaHangzhouRegionalProgrammingContestK题目链接:https://codeforces.com/gym/104090/problem/K题意给定\(n\)个仅......
  • 评价模型 - 层次分析法
    应用场景:决策模型(通过赋权,然后利用加权值来进行决策)、给指标赋权准则层:先给这5个部分进行\(5\times5\)的赋权(比如,景色相比费用略微重要,赋成3),然后对这个矩阵进行求解,得......
  • idea 集成Squaretest
    今天来介绍一款工具Squaretest,它是一款自动生成单元测试的插件,会用到它也是因为最近公司上了代码质量管控的指标,会考评各个项目的单元测试覆盖率,以及sonar扫描出来的各种问......
  • 地图上的三国(一口气看完15幅地图)
    191年(初平二年),董卓挟天子从洛阳到长安;袁绍割据冀州;刘焉割据益州;汉朝廷失去对地方的控制。196年(建安元年),曹操挟汉献帝到许昌,割据豫州、兖州;袁绍割据冀州、并州、青州......
  • [CTFSHOW1024]Web篇
    文章目录​​1024_WEB签到​​​​1024_图片代理​​​​1024_fastapi​​​​姿势一​​​​姿势二​​​​姿势很多,随便测试两个​​​​1024_柏拉图​​​​1024_hello_w......
  • 行为型:设计模式之解释器模式(二十二)
     虽然目前计算机编程语言有好几百种,但有时候我们还是希望能用一些简单的语言来实现一些特定的操作,我们只要向计算机输入一个句子或文件,它就能够按照预先定义的文法规则来对......
  • [JAVA反序列化]Javacc链1分析
    文章目录​​写在前面​​​​动态代理​​​​简单介绍​​​​动态代理的实现​​​​JavaCC链1分析​​​​参考文章​​写在前面这几天算是好好一边审计PHP的一些CMS一......
  • 行为型:设计模式之迭代器模式(二十一)
     20世纪80年代,那时我家有一台“古老的”电视机,牌子我忘了,只记得是台黑白电视机,没有遥控器,每次开关机或者换台都需要通过电视机上面的那些按钮来完成,我印象最深的是那个用来......
  • 【Linux】ps -ef|grep -v grep|awk '{print $2}' 命令详解
    前言在Linux服务器中使用脚本时,经常见到ps-ef|grepxxx|grep-vgrep|awk'{print$2}'这一句命令前半部分的ps-ef|grep命令,相信经常接触Linux的人肯定明白,但是后半......