Maven 项目模板学习

2023-11-17

目录

Maven 项目模板

什么是 archetype?

使用项目模板

 Maven 将询问原型的版本

创建的项目

创建 pom.xml

Maven 项目文档

Maven 快照(SNAPSHOT)

什么是快照?

项目快照 vs 版本

app-ui 项目的 pom.xml 文件

Maven 快照(SNAPSHOT)的出现是因为为了如果pom有更新,每次一拉取就可以同步不同团队之间的进度对吗

data-service 项目的 pom.xml 文件

Maven 自动化构建

使用 Maven

使用持续集成服务器(CI)

你如何理解服务器?

但是你没有发现只要是个电脑的话,基本就可以当做是服务器,那么也就是说服务器其实是一个角色的概念,对吗?

介绍一下Hudson


Maven 项目模板

Maven 使用 archetype(原型) 来创建自定义的项目结构,形成 Maven 项目模板。

在前面章节我们学到 Maven 使用下面的命令来快速创建 java 项目:

mvn archetype:generate

什么是 archetype?

archetype 也就是原型,是一个 Maven 插件,准确说是一个项目模板,它的任务是根据模板创建一个项目结构。我们将使用 quickstart 原型插件创建一个简单的 java 应用程序。

使用项目模板

让我们打开命令控制台,跳转到 C:\> MVN 目录并执行以下 mvn 命令:

C:\MVN> mvn archetype:generate 

Maven 将开始处理,并要求选择所需的原型:

 [WARNING]No archetype found in remote catalog.Defaulting to internal catalog

但是他这里说自己没有发现远程目录,默认访问本地目录

 按下 Enter 选择默认选项 (203:maven-archetype-quickstart)。

 Maven 将询问原型的版本

按下 Enter 选择默认选项 (6:maven-archetype-quickstart:1.1)

按下 Enter 选择默认选项 (6:maven-archetype-quickstart:1.1)

Maven 将询问项目细节。按要求输入项目细节。如果要使用默认值则直接按 Enter 键。你也可以输入自己的值。

Define value for property 'groupId': : com.companyname.insurance
Define value for property 'artifactId': : health
Define value for property 'version': 1.0-SNAPSHOT
Define value for property 'package': com.companyname.insurance

Maven 将要求确认项目细节,按 Enter 或按 Y

Confirm properties configuration:
groupId: com.companyname.insurance
artifactId: health
version: 1.0-SNAPSHOT
package: com.companyname.insurance
Y:

 现在 Maven 将开始创建项目结构,显示如下:

 

 

创建的项目

现在转到 C:\ > MVN 目录。你会看到一个名为 health 的 java 应用程序项目,就像在项目创建的时候建立的 artifactId 名称一样。 Maven 将创建一个有标准目录布局的项目,如下所示:

 

创建 pom.xml

Maven 为项目自动生成一个 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.companyname.insurance</groupId>
  <artifactId>health</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>health</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>

 

Maven 项目文档

本章节我们主要学习如何创建 Maven 项目文档。

比如我们在 C:/MVN 目录下,创建了 consumerBanking 项目,Maven 使用下面的命令来快速创建 java 项目:

mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

不然运行 mvn site 命令时出现 java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent 的问题, 这是由于 maven-site-plugin 版本过低,升级到 3.3+ 即可。

 打开 C:\MVN\consumerBanking\target\site 文件夹。点击 index.html 就可以看到文档了。

 

Maven 使用一个名为 Doxia的文档处理引擎来创建文档,它能将多种格式的源码读取成一种通用的文档模型。要为你的项目撰写文档,你可以将内容写成下面几种常用的,可被 Doxia 转化的格式。

格式名 描述 参考
Apt 纯文本文档格式 http://maven.apache.org/doxia/references/apt-format.html
Xdoc Maven 1.x 的一种文档格式 http://jakarta.apache.org/site/jakarta-site2.html
FML FAQ 文档适用 http://maven.apache.org/doxia/references/fml-format.html
XHTML 可扩展的 HTML 文档 http://en.wikipedia.org/wiki/XHTML

Maven 快照(SNAPSHOT)

一个大型的软件应用通常包含多个模块,并且通常的场景是多个团队开发同一应用的不同模块。举个例子,设想一个团队开发应用的前端,项目为 app-ui(app-ui.jar:1.0),而另一个团队开发应用的后台,使用的项目是 data-service(data-service.jar:1.0)。

现在可能出现的情况是开发 data-service 的团队正在进行快节奏的 bug 修复或者项目改进,并且他们几乎每隔一天就要发布库到远程仓库。 现在如果 data-service 团队每隔一天上传一个新版本,那么将会出现下面的问题:

  • data-service 团队每次发布更新的代码时都要告知 app-ui 团队。
  • app-ui 团队需要经常地更新他们 pom.xml 文件到最新版本。

为了解决这种情况,快照的概念派上了用场。

什么是快照?

快照是一种特殊的版本,指定了某个当前的开发进度的副本。不同于常规的版本,Maven 每次构建都会在远程仓库中检查新的快照。 现在 data-service 团队会每次发布更新代码的快照到仓库中,比如说 data-service:1.0-SNAPSHOT 来替代旧的快照 jar 包。

项目快照 vs 版本

对于版本,如果 Maven 以前下载过指定的版本文件,比如说 data-service:1.0,Maven 将不会再从仓库下载新的可用的 1.0 文件。若要下载更新的代码,data-service 的版本需要升到1.1。

快照的情况下,每次 app-ui 团队构建他们的项目时,Maven 将自动获取最新的快照(data-service:1.0-SNAPSHOT)。

app-ui 项目的 pom.xml 文件

app-ui 项目使用的是 data-service 项目的 1.0 快照。


<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>app-ui</groupId>
   <artifactId>app-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <dependencies>
      <dependency>
      <groupId>data-service</groupId>
         <artifactId>data-service</artifactId>
         <version>1.0-SNAPSHOT</version>
         <scope>test</scope>
      </dependency>
   </dependencies>
</project>

Maven 快照(SNAPSHOT)的出现是因为为了如果pom有更新,每次一拉取就可以同步不同团队之间的进度对吗

是的,Maven的快照版本是为了方便开发人员在项目开发过程中及时获取最新的代码更新而设计的。在开发过程中,项目的依赖关系和版本信息可能会不断变化,每次变化后都需要手动更新依赖关系和版本信息是非常麻烦的。通过使用Maven快照版本,开发人员可以快速获取最新的代码更新,同时也可以方便地管理依赖关系和版本信息。此外,Maven还提供了版本控制机制,使得不同团队之间可以方便地共享代码和依赖信息。

data-service 项目的 pom.xml 文件

data-service 项目为每次小的改动发布 1.0 快照。


<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>data-service</groupId>
   <artifactId>data-service</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
</project>

虽然,快照的情况下,Maven 在日常工作中会自动获取最新的快照, 你也可以在任何 maven 命令中使用 -U 参数强制 maven 下载最新的快照构建。

mvn clean package -U

让我们打开命令控制台,去到 C:\ > MVN > app-ui 目录,然后执行下面的 mvn 命令。

C:\MVN\app-ui>mvn clean package -U

Maven 将在下载 data-service 最新的快照之后,开始构建项目。

[INFO] Scanning for projects...
[INFO] -------------------------------------------------------------------
[INFO] Building consumerBanking
[INFO]    task-segment: [clean, package]
[INFO] -------------------------------------------------------------------
[INFO] Downloading data-service:1.0-SNAPSHOT
[INFO] 290K downloaded.
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory C:\MVN\app-ui\target
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\main\
resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 1 source file to C:\MVN\app-ui\target\classes
[INFO] [resources:testResources {execution: default-testResources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\test\
resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 1 source file to C:\MVN\app-ui\target\test-classes
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\MVN\app-ui\target\
surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.companyname.bank.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-ui\target\
app-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Jul 10 16:52:18 IST 2012
[INFO] Final Memory: 16M/89M
[INFO] ------------------------------------------------------------------------

Maven 自动化构建

自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建,这样可以保证其依赖项目的稳定。

比如一个团队正在开发一个项目 bus-core-api, 并且有其他两个项目 app-web-ui 和 app-desktop-ui 依赖于这个项目。

app-web-ui 项目使用的是 bus-core-api 项目的 1.0 快照:


<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>app-web-ui</groupId>
   <artifactId>app-web-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <dependencies>
      <dependency>
      <groupId>bus-core-api</groupId>
         <artifactId>bus-core-api</artifactId>
         <version>1.0-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

app-desktop-ui 项目使用的是 bus-core-api 项目的 1.0 快照:


<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>app-desktop-ui</groupId>
   <artifactId>app-desktop-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <dependencies>
      <dependency>
      <groupId>bus-core-api</groupId>
         <artifactId>bus-core-api</artifactId>
         <version>1.0-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

现在 app-web-ui 和 app-desktop-ui 项目的团队要求不管 bus-core-api 项目何时变化,他们的构建过程都应当可以启动。

使用快照可以确保最新的 bus-core-api 项目被使用,但要达到上面的要求,我们还需要做一些额外的工作。

可以使用两种方式:

  • 在 bus-core-api 项目的 pom 文件中添加一个 post-build 目标操作来启动 app-web-ui 和 app-desktop-ui 项目的构建。
  • 使用持续集成(CI) 服务器,比如 Hudson,来自行管理构建自动化。

使用 Maven

修改 bus-core-api 项目的 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>bus-core-api</groupId>
   <artifactId>bus-core-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <build>
   <plugins>
   <plugin>
      <artifactId>maven-invoker-plugin</artifactId>
      <version>1.6</version>
      <configuration>
         <debug>true</debug>
         <pomIncludes>
            <pomInclude>app-web-ui/pom.xml</pomInclude>
            <pomInclude>app-desktop-ui/pom.xml</pomInclude> 
         </pomIncludes>
      </configuration>
      <executions>
         <execution>
            <id>build</id>
            <goals>
               <goal>run</goal>
            </goals>
         </execution>
      </executions>
   </plugin>
   </plugins>
   </build>
</project>

打开命令控制台,切换到 C:\ > MVN > bus-core-api 目录下,然后执行以下命令。

C:\MVN\bus-core-api>mvn clean package -U

执行完命令后,Maven 将开始构建项目 bus-core-api。

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building bus-core-api
[INFO]    task-segment: [clean, package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\bus-core-ui\target\
bus-core-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

bus-core-api 构建成功后,Maven 将开始构建 app-web-ui 项目。

[INFO] ------------------------------------------------------------------
[INFO] Building app-web-ui 
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-web-ui\target\
app-web-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

app-web-ui 构建成功后,Maven 将开始构建 app-desktop-ui 项目。

[INFO] ------------------------------------------------------------------
[INFO] Building app-desktop-ui 
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-desktop-ui\target\
app-desktop-ui-1.0-SNAPSHOT.jar
[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------

使用持续集成服务器(CI)

如果使用 CI 服务器更,我们每次的一个新项目,比如说实例中的 app-mobile-ui,添加为依赖 bus-core-api 项目时,开发者就不需要更新 bus-core-api 项目的 pom。Hudson 将会借助 Maven 的依赖管理功能实现工程的自动化创建。

你如何理解服务器?

服务器(Server)指的是一种可以提供服务的计算机系统,它可以处理来自网络或其他计算机系统的请求,并向客户端提供服务。服务器通常具有高性能的硬件和软件,以支持同时处理多个请求,并提供稳定、可靠的服务。

服务器可以提供不同种类的服务,例如:

  • Web服务器:用于提供Web应用程序、网站和文件的服务。
  • 数据库服务器:用于存储和管理数据的服务。
  • 文件服务器:用于存储和共享文件的服务。
  • 邮件服务器:用于发送和接收电子邮件的服务。
  • 游戏服务器:用于提供多人在线游戏(MMO)等游戏的服务。

在企业中,服务器通常被用来存储和处理业务数据、运行应用程序和提供网络服务。服务器的重要性在于它们提供了可靠、安全和高性能的服务,保证了业务的正常运行。

但是你没有发现只要是个电脑的话,基本就可以当做是服务器,那么也就是说服务器其实是一个角色的概念,对吗?

你说得没错。在计算机网络中,服务器是指为客户端提供服务的计算机程序或设备,它可以是一台专门用于提供服务的高性能计算机,也可以是一台普通的个人电脑或移动设备。服务器的角色是提供服务,而不同的服务器程序和设备可以提供不同的服务。例如,Web服务器可以提供网页服务,邮件服务器可以提供电子邮件服务,数据库服务器可以提供数据存储和检索服务,游戏服务器可以提供在线游戏服务等。因此,服务器的角色是提供服务,而不同的服务器程序和设备可以扮演不同的角色来提供不同的服务。

Hudson 把每个项目构建当成一次任务。在一个项目的代码提交到 SVN (或者任何映射到 Hudson 的代码管理工具)后,Hudson 将开始项目的构建任务,并且一旦此构建任务完成,Hudson 将自动启动其他依赖的构建任务(其他依赖项目的构建)。

在上面的例子中,当 bus-core-ui 源代码在 SVN 更新后,Hudson 开始项目构建。一旦构建成功,Hudson 自动地查找依赖的项目,然后开始构建 app-web-ui 和 app-desktop-ui 项目。

介绍一下Hudson

Hudson是一款开源的持续集成工具,它可以帮助团队更快、更可靠地构建、测试和部署软件。Hudson具有良好的可扩展性,支持丰富的插件,可以与众多其他软件工具集成,例如JUnit、Maven、Git、SVN等。

Hudson主要特点包括:

  1. 易于安装和配置:Hudson采用Java编写,可以在各种操作系统上运行,包括Windows、Linux和Mac OS X等。它提供了一个简单易用的Web界面,可以帮助用户快速进行安装和配置。

  2. 自动构建:Hudson可以监控代码库,并在检测到新代码提交时自动进行构建。它可以支持各种构建工具,例如Ant、Maven等。

  3. 测试支持:Hudson可以与JUnit等测试框架集成,可以自动运行各种测试用例,并生成详细的测试报告。

  4. 插件扩展:Hudson拥有丰富的插件生态系统,用户可以通过安装插件来扩展其功能,例如集成到其他开发工具、添加新的构建工具支持、扩展测试框架等。

  5. 可视化界面:Hudson提供了丰富的可视化界面,可以帮助用户快速查看构建结果、测试报告、代码覆盖率等关键信息。

总之,Hudson是一款强大的持续集成工具,它可以帮助团队更快、更可靠地构建、测试和部署软件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 项目模板学习 的相关文章

  • Android:如何暂停和恢复可运行线程?

    我正在使用 postDelayed 可运行线程 当我按下按钮时 我需要暂停并恢复该线程 请任何人帮助我 这是我的主题 protected void animation music6 music4 postDelayed new Runnab
  • “源兼容性”和“目标兼容性”有什么区别?

    之间有什么关系 区别sourceCompatibility and targetCompatibility 当它们设置为不同的值时会发生什么 根据工具链和兼容性 https docs gradle org current userguide
  • 连接外部 Accumulo 实例和 java

    我正在尝试使用 Accumulo 连接到虚拟机 问题是 我无法将其连接到 Java 中 我可以看到 Apache 抛出的网页 但我无法让它与代码一起工作 我认为这是缺乏知识的问题而不是真正的问题 但我找不到这方面的文档 所有示例都使用 lo
  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • Java LostFocus 和 InputVerifier,按反向制表符顺序移动

    我有一个 GUI 应用程序 它使用 InputVerifier 在产生焦点之前检查文本字段的内容 这都是很正常的 然而 昨天发现了一个问题 这似乎是一个错误 但我在任何地方都找不到任何提及它的地方 在我将其报告为错误之前 我想我应该问 我在
  • 查看Java Agent修改的Java类的源代码

    我需要了解 Java 代理如何修改我的初始类 以便我能够理解代码的作用 build gradle configurations jar archiveName agent2 jar jar manifest attributes Prema
  • 使用 OkHttp 下载损坏的文件

    我编写的下载文件的方法总是会产生损坏的文件 public static String okDownloadToFileSync final String link final String fileName final boolean te
  • 2^31 次方的 Java 指数错误 [重复]

    这个问题在这里已经有答案了 我正在编写一个java程序来输出2的指数幂 顺便说一句 我不能使用Math pow 但是在 2 31 和 2 32 处我得到了其他东西 另外 我不打算接受负整数 My code class PrintPowers
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • IntelliJ Idea:将简单的 Java servlet(无 JSP)部署到 Tomcat 7

    我尝试按照教程进行操作here http wiki jetbrains net intellij Creating a simple Web application and deploying it to Tomcat部署 servlet
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • 类更改(例如字段添加或删除)是否保持 Serialized 的向后兼容性?

    我有一个关于 Java 序列化的问题 在这种情况下 您可能需要修改可序列化类并保持向后兼容性 我有丰富的 C 经验 所以请允许我将 Java 与 NET 进行比较 在我的Java场景中 我需要使用Java的运行时序列化机制序列化一个对象 并
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何让 Firebase 与 Java 后端配合使用

    首先 如果这个问题过于抽象或不适合本网站 我想表示歉意 我真的不知道还能去哪里问 目前我已经在 iOS 和 Android 上开发了应用程序 他们将所有状态保存在 Firebase 中 因此所有内容都会立即保存到 Firebase 实时数据
  • Java 的“&&”与“&”运算符

    我使用的示例来自 Java Herbert Schildt 的完整参考文献 第 12 版 Java 是 14 他给出了以下 2 个示例 如果阻止 第一个是好的 第二个是错误的 因此发表评论 public class PatternMatch
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • 大数据量JSONObject.fromObject性能问题(大数据传给前台)

    最近项目中我负责了一个jms打印log信息的功能模块 大体需求是 用jms接受log信息 然后前台请求的时候 发给前台最新的log信息 前台会不断的刷新获取数据 个人思路是写一个静态的固定长度的list保存log信息 如果list满了清空
  • 通信端口感叹号_PCI简易通讯控制器有黄色感叹号怎么办?

    近日有网友新安装了Win7系统 安装完成后感觉电脑都顺畅了很多 不过在打开设备管理器的时候发现 在其他设备下的PCI简易通讯控制器有个黄色感叹号 出现这个感叹号也意味着这个控制器的驱动未安装 对此我们该如何解决呢 解决方法 1 打开设备管理
  • android 功能模块之通讯模块三

    Android通讯录开发之解决快速搜索联系人线程同步问题 2013年1月13日 上一篇博客介绍的是如何实现搜索 在PhoneUtil中已经定义好了search方法 开发者直接拿来用就ok了 但用的时候肯定会遇到线程同步问题 如何解决搜索的时
  • 区块链节点和网络的实现

    文章目录 1 介绍 1 1 区块链的基本概念回顾 1 2 区块链节点的作用和重要性 1 3 区块链网络的组成和结构 2 实现区块链节点 2 1 节点的角色和功能 2 2 使用Python创建区块链节点 2 3 定义区块和区块链数据结构 2
  • linux 内核笔记之watchdog

    watchdog 简而言之 watchdog是为了保证系统正常运行 或者从死循环 死锁等一场状态退出的一种机制 看门狗分硬件看门狗和软件看门狗 硬件看门狗是利用一个定时器电路 其定时输出连接到电路的复位端 程序在一定时间范围内对定时器清零
  • Vscode中JS输出乱码问题的解决

    一直很好用vscode突然不好用了 原来输出正常的JS代码在输出中都是乱码 于是上网查答案 试了很多奇奇怪怪的答案 然而没有一款能够解决我这个问题 仔细琢磨 既然以前好用 现在不好用 应该是某个电脑操作 误伤 友军 VScode执行代码原理
  • 五、Linux系统中的用户管理

    五 Linux系统中的用户管理 5 1 用户及用户组存在的意义 5 1 1 用户存在的意义 系统资源是有限的 如何合理分配系统资源 在这个问题解决时必须要有连个资源配合 1 身份 account 2 授权author 3 认证auth 3A
  • JS算法--整数反转

    1 需求介绍 给出一个 32 位的有符号整数 需要将这个整数中每位上的数字进行反转 注意 假设我们的环境只能存储得下 32 位的有符号整数 则其数值范围为 231 231 1 请根据这个假设 如果反转后整数溢出那么就返回 0 反转什么鬼 举
  • matlab 生成不重复的随机整数 打乱数据排列 生成深度学习数据集

    Matlab自带函数randperm n 可以产生1到n的整数的无重复的随机排列 利用它就可以得到无重复的随机数 例如 randperm n 产生一个1到n的随机顺序 gt gt randperm 10 ans 6 4 8 9 3 5 7
  • 人脸识别正则化系列之normface

    今天介绍一下NormFace L2 Hypersphere Embedding for Face Verification Motivation 希望利用正则化解决两个问题 1 人脸识别任务里面的loss有softmax contrasti
  • 【四】3D Object Model之创建Creation——read_object_model_3d()算子

    欢迎来到本博客 Halcon算子太多 学习查找都没有系统的学习查找路径 本专栏主要分享Halcon各类算子含义及用法 有时间会更新具体案例 具体食用方式 可以点击本专栏 Halcon算子快速查找 gt 搜索你要查询的算子名称 或者点击Hal
  • 9 款值得您花钱的最佳 PDF 编辑器

    PDF 格式在 90 年代初一推出就开始流行 PDF 文件便于携带 易于共享 阅读有趣 但难以编辑 有什么不喜欢的呢 与其他格式相比 无论大小的企业都更喜欢 PDF 因为他们不喜欢其他人篡改他们的文档 无论是指南 职业道德还是展示新产品功能
  • MySQL数据库基础操作—DML

    文章目录 DML的基本介绍 1 1数据插入 1 2数据修改 1 3 数据删除 注意 DML的基本介绍 DML是指数据库操作语言 全称是Data Manipulate Language 作用是对数据库中表的数据记录进行更新 关键字 插入ins
  • 区块链技术的主要特征有哪些

    区块链技术的主要特征有 1 去中心化 2 开放性 3 独立性 4 安全性 5 匿名性 从本质上讲 区块链是一个共享数据库 存储于其中的数据或信息 具有不可伪造 全程留痕 公开透明和集体维护等特征 区块链技术的特征 去中心化 区块链技术不依赖
  • Element ui中menu组件(el-menu/el-menu-item/el-submenu/template) 层级结构和用法

    此篇文章写下的时间是2020年 所以如今Element UI都更新了不知道多少版了 肯定会有些许变化 请勿完全照搬照抄 虽然可能这部分代码没什么大的变动 但还是要以官方文档为准 此文仅仅是借鉴 理解具体思路 然后再按照官方的例子来应用到自己
  • 软件工程——第7章实现知识点整理

    本专栏是博主个人笔记 主要目的是利用碎片化的时间来记忆软工知识点 特此声明 文章目录 1 实现由哪两个部分组成
  • C语言:动态内存(一篇拿捏动态内存!)

    目录 学习目标 为什么存在动态内存分配 动态内存函数 1 malloc 和 free 2 calloc 3 realloc 常见的动态内存错误 1 对NULL指针的解引用操作 2 对动态开辟空间的越界访问 3 对非动态开辟内存使用free释
  • 【ELK】kibana的Saved Objects导入脚本

    快速导入命令 curl XPOST http 192 168 1 1 5601 api kibana dashboards import H Content Type application json H kbn xsrf reportin
  • pip安装软件包报错: error subprocess-exited-with-error问题记录

    问题修复 执行pip install dlib 在执行pip3 install virtualenvwrapper也会报同样的错误 问题修复 我们需要执行如下命令 pip install upgrade setuptools pip ins
  • Maven 项目模板学习

    目录 Maven 项目模板 什么是 archetype 使用项目模板 Maven 将询问原型的版本 创建的项目 创建 pom xml Maven 项目文档 Maven 快照 SNAPSHOT 什么是快照 项目快照 vs 版本 app ui