[maven] 创建 spring boot 项目及使用 Jenkins 运行 maven

news2025/1/13 13:49:30

[maven] 创建 spring boot 项目及使用 Jenkins 运行 maven

本篇笔记走一下用 maven 创建 spring boot 项目和利用 Jenkins 管理 maven 流程

使用 maven 创建 spring boot 项目

根据官方文档说,现在使用 boot 需要 java 17+,Gradle 7.5+/Maven 3.5+

spring boot 和传统 spring mvc 比起来的优势很多,我觉得最显著的就是自动配置和依赖管理,前者可以不需要编写大量的 xml 去进行关系映射,后者不需要手动管理海量的 dependency (包括内置 tomcat 服务器,解决配置问题)。

准备工作 & 创建新项目

主要就是一些下载配置,然后新建项目

使用 initializer

如果不想做其他的修改,只是想下载一个 spring boot 的项目,可以到 https://start.spring.io/ 下载一个初始化好的包,随后导入到 IDE 即可:

在这里插入图片描述

下载 Spring Tool Suite

下载地址在:https://spring.io/tools,直接点点点安装就好了

指定 workspace:

在这里插入图片描述

布局:

在这里插入图片描述

它这个布局和 eclipse 好像是一样的……我猜估计用了 eclipse 的源码封装的吧……

eclipse 中下载 marketplace plugin

如果不想再下一个 ide,也可以直接从 eclipse 的 marketplace 中选择插件进行下载:

在这里插入图片描述

不会改变 eclipse 的布局,没有 spring 的 logo,但是实现功能是一样的

新建 spring boot 项目

不管使用 STS 还是插件,安装完成后可以在新建项目中寻找 spring boot:

在这里插入图片描述

然后提供必要数据:

在这里插入图片描述

在这里插入图片描述

到这一步其实就和网页上修改名称以及修改需要的组件是一样的,点完之后一个新的项目就完成了。

刚新建完的项目会有报错:

在这里插入图片描述

说找不到 parent 项目,这个解决方法可以通过 mvn clean install 去获取必须的依赖,让其能够成功 map 到 parent 里的项目即可:

在这里插入图片描述

解析 parent

spring boot 自动管理依赖的方式是通过 BOM 实现的:

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.1.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

这个 BOM 中提供了已经预设好版本的 dependency,这也可以通过 effective POM 中查看:

在这里插入图片描述

想要将这些依赖包拉到项目中去使用,还需要定义下面这个 dependency:

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

定义完了后,这些 dependency 就可以直接在 boot 项目中使用了。

执行点

执行点在 main java 里:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

在这里插入图片描述

这里 @SpringBootApplication 是一个最高层的注解,内部执行了挺多事情的,它内部又实现了不少的注解:

在这里插入图片描述

最主要的几个实现为:

  • @SpringBootConfiguration 也是集成实现了 @Configuration,这个主要管理 Bean 相关的内容

  • @EnableAutoConfiguration 就如其名一样,实现了一些自动配置

  • @ComponentScan 会扫描整个 spring boot 项目去寻找 @component, @service, @repository, @controller 这些注解,并且进行注册

测试

其注解为 @SpringBootTest,它也 bootstrap 了整个 spring boot 的 context,它会寻找 @@SpringBootApplication 的注解去运行测试类的 contxt

案例代码:

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DemoApplicationTests {

	@Test
	void contextLoads() {
	}

}

简单的案例

这里主要就是体会一下 spring boot 的便利性,目前的项目结构如下:

❯ tree
.
├── HELP.md
├── error.png
├── mvnw
├── mvnw.cmd
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── demo
│   │   │               ├── DemoApplication.java
│   │   │               ├── dao
│   │   │               │   ├── PaymentDAO.java
│   │   │               │   └── PaymentDAOImpl.java
│   │   │               └── services
│   │   │                   ├── PaymentService.java
│   │   │                   └── PaymentServiceImpl.java
│   │   └── resources
│   │       └── application.properties
│   └── test
│       └── java
│           └── com
│               └── example
│                   └── demo
│                       └── DemoApplicationTests.java
└── target
    ├── classes
    │   ├── META-INF
    │   │   ├── MANIFEST.MF
    │   │   └── maven
    │   │       └── com.example
    │   │           └── demo
    │   │               ├── pom.properties
    │   │               └── pom.xml
    │   ├── application.properties
    │   └── com
    │       └── example
    │           └── demo
    │               ├── DemoApplication.class
    │               ├── dao
    │               │   ├── PaymentDAO.class
    │               │   └── PaymentDAOImpl.class
    │               └── services
    │                   ├── PaymentService.class
    │                   └── PaymentServiceImpl.class
    ├── demo-0.0.1-SNAPSHOT.jar
    ├── demo-0.0.1-SNAPSHOT.jar.original
    ├── generated-sources
    │   └── annotations
    ├── generated-test-sources


42 directories, 31 files

几个 java 文件的内容分别为:

  • PaymentDAO.java

    package com.example.demo.dao;
    
    public interface PaymentDAO {
    
    }
    
  • PaymentDAOImpl.java

    这里可以使用 @Component@Repository,这里假设该实现会与 DB 交互,因此使用 repo

    package com.example.demo.dao;
    
    import org.springframework.stereotype.Repository;
    
    //@Component tells spring this is a spring bean, object should be created whenever it's required
    
    // repo is used to handle db calls
    @Repository
    public class PaymentDAOImpl implements PaymentDAO {
    
    }
    
  • PaymentService.java

    package com.example.demo.services;
    
    public interface PaymentService {
    
    }
    
  • PaymentServiceImpl.java

    这里有一个 @Service@Autowired 的注解

    package com.example.demo.services;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.example.demo.dao.PaymentDAO;
    
    @Service
    public class PaymentServiceImpl implements PaymentService {
        @Autowired
        private PaymentDAO dao;
    
        public PaymentDAO getDao() {
            return dao;
        }
    
        public void setDao(PaymentDAO dao) {
            this.dao = dao;
        }
    }
    
  • DemoApplicationTests.java

    注意这里 @Autowired 的注释

    package com.example.demo;
    
    import static org.junit.jupiter.api.Assertions.assertNotNull;
    
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import com.example.demo.services.PaymentService;
    
    @SpringBootTest
    class DemoApplicationTests {
    
        @Autowired
        PaymentService service;
    
        @Test
        void testDependenyInjection() {
            assertNotNull(service);
        }
    
    }
    

最后在并没有使用 xml mapping,也没有手动写类,如 PaymentService service = new PaymentServiceImpl(),spring boot 就完成了自动注册、自动配置、自动寻找实现,并且成功的运行了测试:

在这里插入图片描述

jenkins

这里会在 AWS 上的 EC2 运行 Jenkins,然后通过 Jenkins 执行 maven 命令。

jenkins 最后一步运行 maven 项目的时候有点问题,Jenkins build Error: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile 上说配置 java 路径可以解决问题……

嗯,不过没继续折腾,知道可以通过 jenkins 跑 maven 就行了

创建 ec2 instance

直接搜索 EC2:

在这里插入图片描述

然后选择登录一个新的 instance 即可:

在这里插入图片描述

AWS 的 UI 变得还算多吧,主要搜索就好。配置的话也比较简单……免费的也没什么特别多可选的:

选择 Amazon Linux

在这里插入图片描述

注意要选择有 Free Tier 选项的:

在这里插入图片描述

在这里插入图片描述

summary 看起来是这样的:

在这里插入图片描述

随后选择 launch

等到状态变成 running 就代表创建成功了:

在这里插入图片描述

过程中应该还会提醒,说要新建一个 SSH cred 或者用已有的,这里忘截图了

通过 ssh 链接 ec2

在这里插入图片描述

cv 一下提供的指令就行,不过跑之前需要给 awskeys.pem 权限:

chmod 400 awskeys.pem
❯ ssh -i "awskeys.pem" ec2-user@ec2-3-93-69-160.compute-1.amazonaws.com
The authenticity of host 'ec2-3-93-69-160.compute-1.amazonaws.com (3.93.69.160)' can't be established.
ED25519 key fingerprint is SHA256:vxumAy6QBJSv4xiAL9UmxVbjAoVrn9RszOGiHeoFJ5M.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added 'ec2-3-93-69-160.compute-1.amazonaws.com' (ED25519) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
5 package(s) needed for security, out of 36 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-172-31-45-71 ~]$

# become psuedo user
[ec2-user@ip-172-31-45-71 ~]$ sudo -i
[root@ip-172-31-45-71 ~]#/

安装 & 运行 maven 项目

我个人建议是安装 package 的时候用 root,新建项目的时候退出 root,用普通用户的权限。跟着教程一直用 root,发现用 root 创建的项目,尽管用了 chmod,公网还是无法访问。

安装 java 和 maven

[root@ip-172-31-45-71 ~]# java -version
-bash: java: command not found
[root@ip-172-31-45-71 ~]# yum install java
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd

[root@ip-172-31-45-71 ~]# java -version
openjdk version "17.0.8.1" 2023-08-22 LTS
OpenJDK Runtime Environment Corretto-17.0.8.8.1 (build 17.0.8.1+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.8.8.1 (build 17.0.8.1+8-LTS, mixed mode, sharing)

[root@ip-172-31-45-71 ~]# yum install maven
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Resolving Dependencies
--> Running transaction check

[root@ip-172-31-45-71 ~]# mvn -version
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 17.0.8.1, vendor: Amazon.com Inc.
Java home: /usr/lib/jvm/java-17-amazon-corretto.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.10.192-182.736.amzn2.x86_64", arch: "amd64", family: "unix"

创建新的 maven 项目:

[root@ip-172-31-45-71 ~]# mvn archetype:generate -DgroupId=com.goldenaarcher -DartifactId=hellomaven -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /root
[INFO] Parameter: package, Value: com.goldenaarcher
[INFO] Parameter: groupId, Value: com.goldenaarcher
[INFO] Parameter: artifactId, Value: hellomaven
[INFO] Parameter: packageName, Value: com.goldenaarcher
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /root/hellomaven
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.944s
[INFO] Finished at: Sat Sep 16 15:09:32 UTC 2023
[INFO] Final Memory: 16M/78M
[INFO] ------------------------------------------------------------------------

[root@ip-172-31-45-71 ~]# ls
hellomaven

[root@ip-172-31-45-71 ~]# mvn archetype:generate -DgroupId=com.goldenaarcher -DartifactId=hellomaven-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-webapp:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /root
[INFO] Parameter: package, Value: com.goldenaarcher
[INFO] Parameter: groupId, Value: com.goldenaarcher
[INFO] Parameter: artifactId, Value: hellomaven-web
[INFO] Parameter: packageName, Value: com.goldenaarcher
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /root/hellomaven-web
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.892s
[INFO] Finished at: Sat Sep 16 16:10:52 UTC 2023
[INFO] Final Memory: 17M/52M
[INFO] ------------------------------------------------------------------------

[root@ip-172-31-45-71 ~]# ls
hellomaven  hellomaven-web

安装 jenkins

首先需要跑两条指令,将 jenkins 指向最新的版本,根据 I’m getting error “Public key for jenkins-2.232-1.1.noarch.rpm is not installed” while installing Jenkins on AWS EC2 [closed] 上说,jenkins 是改过网址的,所以做 rpm 的时候要确认一下网址

# below are 2 commands will let jenkins pointing to the latest version
[root@ip-172-31-45-71 ~]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
--2023-09-16 16:14:09--  http://pkg.jenkins-ci.org/redhat/jenkins.repo
Resolving pkg.jenkins-ci.org (pkg.jenkins-ci.org)... 52.202.51.185
Connecting to pkg.jenkins-ci.org (pkg.jenkins-ci.org)|52.202.51.185|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://pkg.jenkins.io/redhat/jenkins.repo [following]
--2023-09-16 16:14:09--  https://pkg.jenkins.io/redhat/jenkins.repo
Resolving pkg.jenkins.io (pkg.jenkins.io)... 146.75.38.133, 2a04:4e42:78::645
Connecting to pkg.jenkins.io (pkg.jenkins.io)|146.75.38.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 71
Saving to: ‘/etc/yum.repos.d/jenkins.repo’

100%[=======================================================================================>] 71          --.-K/s   in 0s

2023-09-16 16:14:09 (2.83 MB/s) - ‘/etc/yum.repos.d/jenkins.repo’ saved [71/71]

[root@ip-172-31-45-71 ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key

然后通过 yum 安装,如果 rpm 只想的网址不对,就会出现 Public key for jenkins-2.423-1.1.noarch.rpm is not installed 的提示。

# install jenkins
[root@ip-172-31-45-71 ~]# yum install jenkins
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                | 3.7 kB  00:00:00
jenkins                                                                                                   | 2.9 kB  00:00:00
jenkins/primary_db                                                                                        | 205 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package jenkins.noarch 0:2.423-1.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================
 Package                       Arch                         Version                          Repository                     Size
=================================================================================================================================
Installing:
 jenkins                       noarch                       2.423-1.1                        jenkins                        85 M

Transaction Summary
=================================================================================================================================
Install  1 Package

Total download size: 85 M
Installed size: 85 M
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/2/jenkins/packages/jenkins-2.423-1.1.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID ef5975ca: NOKEY
Public key for jenkins-2.423-1.1.noarch.rpm is not installed
jenkins-2.423-1.1.noarch.rpm                                                                              |  85 MB  00:00:04


Public key for jenkins-2.423-1.1.noarch.rpm is not installed

# download it again due to public key issue
[root@ip-172-31-45-71 ~]# yum install jenkins
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Resolving Dependencies
--> Running transaction check
---> Package jenkins.noarch 0:2.423-1.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================
 Package                       Arch                         Version                          Repository                     Size
=================================================================================================================================
Installing:
 jenkins                       noarch                       2.423-1.1                        jenkins                        85 M

Transaction Summary
=================================================================================================================================
Install  1 Package

Total size: 85 M
Installed size: 85 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : jenkins-2.423-1.1.noarch                                                                                      1/1
  Verifying  : jenkins-2.423-1.1.noarch                                                                                      1/1

Installed:
  jenkins.noarch 0:2.423-1.1

Complete!

开启 jenkins 服务:

# start the service
[root@ip-172-31-45-71 ~]# service jenkins start
Redirecting to /bin/systemctl start jenkins.service

最后可以开启 ec2 的 TCP 到公网去测试一下:

在这里插入图片描述

看到这个页面就能确认 Jenkins 配置好,并且在 aws 上运行了

配置 jenkins

首先就是安装建议安装的包:

在这里插入图片描述

安装列表为:

在这里插入图片描述

这些也可以手动去装,不过稍微有点麻烦。安装完毕后根据提示创建新用户:

在这里插入图片描述

到这一步 dashboard 就可以访问了。

接下来到 tool 的管理:

在这里插入图片描述

这里需要配的是 aws 上的 maven 和 jdk,免费的 ec2 git 也没有安装,我这里安装完 jenkins 就可以自动找到 git 的路径,还蛮方便的:

在这里插入图片描述

在这里插入图片描述

jdk 和 maven 的路径可以通过 mvn -verion 上看到,路径上面也会显示,cv 这个路径就好了

创建第一个 job

这里简单跑一个 sh 脚本,内容就是 echo 一句话,准备脚本的过程如下:

[ec2-user@ip-172-31-45-71 ~]$ vi hello.sh
[ec2-user@ip-172-31-45-71 ~]$ cat hello.sh
echo "Hello Jenkins!"
[ec2-user@ip-172-31-45-71 ~]$ pwd
/home/ec2-user
# 不用 chmod 好像也可以
[ec2-user@ip-172-31-45-71 ~]$ chmod 777 /home/ec2-user
[ec2-user@ip-172-31-45-71 ~]$ chmod 777 hello.sh

jenkins 的 dashboard 上选择创建一个新的 item,并且提供名称,类型选择 freestyle:

在这里插入图片描述

build steps 这里把脚本的路径放进去,jenkins 就会自动执行:

在这里插入图片描述

最后运行结果:

在这里插入图片描述

在这里插入图片描述

运行 maven

新建第二个项目,修改配置如下:

在这里插入图片描述

最后跑一下就行了

这里出现两个报错,一个是:

在这里插入图片描述

另一个是无法执行,前者是 jre 版本问题,后者似乎是 jenkins 里需要添加 java 的路径。不过我的目的就是走一下流程,这也不是关于 jenkins 的学习,一时半会儿不想花太久到 config 上(这个可以提供 config 文件),所以暂时跳过。

左右通过 Jenkins 确实执行了 mvn clean install 就行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1016793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea无法通过vpn 连接到数据库或者kafka

本地navicate 等sql客户端 &#xff0c;通过vpn&#xff0c;可以连接到数据库&#xff0c;&#xff0c;xshell也可以通过vpn连接到远程机器&#xff0c;但是&#xff0c;idea开发时&#xff0c;报连接超时错误&#xff0c;解决方法&#xff1a; 项目中 VM这一栏加上-Djava.net…

区块链:去中心化革命下的创新与发展!

区块链作为一项重要的技术实验&#xff0c;确实具有重大的影响力。它代表了一场去中心化的运动&#xff0c;吸引了许多研究人员、工程师、建设者和用户的参与&#xff0c;创造了我们目前所见到的一些最有趣的技术。 区块链的透明特性赋予了用户对于数据和交易的控制权&#xff…

来看看Python __all__变量的用法

​ 事实上&#xff0c;当我们向文件导入某个模块时&#xff0c;导入的是该模块中那些名称不以下划线&#xff08;单下划线“_”或者双下划线“__”&#xff09;开头的变量、函数和类。因此&#xff0c;如果我们不想模块文件中的某个成员被引入到其它文件中使用&#xff0c;可以…

展示日志log4.properties

log4.properties 1.log4.properties 此时文件主要用于展示日志的输出的级别的信息。 # Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategoryINFO, CONSOLE debug info warn error fatal log4j.rootCategoryinfo, CONSO…

本地事务与分布式事务

目录 一、本地事务 1、事务的基本性质 2、事务的隔离级别 3、事务的传播行为 4、SpringBoot 事务关键点 二、分布式事务 1、为什么有分布式事务 2、CAP 定理与 BASE 理论 3、分布式事务几种方案 一、本地事务 1、事务的基本性质 数据库事务的几个特性&#xff1a;原…

PhpStorm 2023年下载、安装教程和好用插件,保姆级教程

PhpStorm 2023年下载、安装教程和好用插件&#xff0c;保姆级教程 文章目录 PhpStorm 2023年下载、安装教程和好用插件&#xff0c;保姆级教程前言一、安装PhpStorm二、好用的插件简体中文包Chinese(Simplified)Language Pack 三、卸载插件CTRLN 查找类CTRLSHIFTN 全局搜索文件…

Scala编程语言

Scala编程语言 一、Scala引入1、学习Scala的目的2、Scala的基本概念 二、Scala环境搭建1、安装步骤2、配置环境变量3、测试Scala4、Scala与idea的集成5、关联源码6、 class 和 object 说明 三、常用语法、变量和数据类型1、 注释2、变量和常量3 、标识符的命名规范4、字符串输出…

一阶低通滤波器滞后补偿算法

一阶低通滤波器的推导过程和双线性变换算法请查看下面文章链接: PLC算法系列之数字低通滤波器(离散化方法:双线性变换)_双线性离散化_RXXW_Dor的博客-CSDN博客PLC信号处理系列之一阶低通(RC)滤波器算法_RXXW_Dor的博客-CSDN博客_rc滤波电路的优缺点1、先看看RC滤波的优缺点…

matlab EL image绘制

利用光谱仪测试的结果可以得到image&#xff0c;输出为csv文件&#xff0c;包括640X512的矩阵&#xff0c;这个矩阵将会反映器件发光的位置和强度&#xff0c;算是一个灰度图。 在matlab中&#xff0c;可以用imagesc函数来进行绘图。 imagesc函数的用法 clear; clc; close a…

Linux从root账号切换到普通账号并执行shell脚本

背景&#xff1a;最近自己在用的中间件只能运行在 普通账号下&#xff0c;现在每次重启之后都要切换到 普通账号 然后去执行启动脚本。一次两次还能接受……反正现在接受不了了…… 写一个脚本让它帮我起吧 先贴目录 新建文件 start_es.sh, 用于root账号下调用 #!/bin/bash e…

计算机组成原理——基础入门总结(一)

本帖更新一些关于计算机组成原理的重点内容。由于博主考研时并不会考这门课&#xff0c;但是考虑到操作系统中又很多重要晦涩的概念涉及很多诸如内存、存储器、磁盘、cpu乃至各种寄存器的知识&#xff0c;此处挑选一些核心的内容总结复盘一遍——实现声明&#xff1a;本帖的内容…

【CCF】第30次csp认证——202305-1重复局面

202305-1重复局面&#xff1a; 问题描述 国际象棋每一个局面可以用大小为 88 的字符数组来表示&#xff0c;其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母 k、q、r、b、n、p 表示&#xff0c;其中大写字母对应白方、小写字母对应黑方。棋盘上无…

[ESP32 IDF+Vscode]蓝牙配网后采用上传温湿度数据至阿里云(MQTT协议)

阿里云平台的设置 参考文章&#xff1a; http://t.csdn.cn/RzLGqhttp://t.csdn.cn/RzLGq Blufi配网 1.简介 BluFi 是一款基于蓝牙通道的 Wi-Fi 网络配置功能&#xff0c;适用于 ESP32。它通过安全协议将 Wi-Fi 配置和证书传输到 ESP32&#xff0c;然后 ESP32 可基于这些信…

OpenGL超级宝典(第五版)疑难点汇总解析

《OpenGL超级宝典(第五版&#xff09;》如下&#xff1a; 1. 在该书的第1章的Block例子中用到了平面阴影投射矩阵&#xff0c;关于该矩阵的推导&#xff0c;参见&#xff1a; OpenGL: 平面阴影投射矩阵的推导 2. 在该书的第8章的pix_buffs例子中用到了正交投影矩阵的推导过程…

腾讯mini项目-【指标监控服务重构】2023-08-23

今日已办 进度和问题汇总 请求合并 feature/venus tracefeature/venus metricfeature/profile-otel-baserunner-stylebugfix/profile-logger-Syncfeature/profile_otelclient_enable_config 完成otel 开关 trace-采样metrice-reader 已经都在各自服务器运行&#xff0c;并接入…

Datagrip 下载、安装教程,详细图文,亲测有效

文章目录 前言1. 下载2. 安装3 DataGrip 常用操作4 推荐阅读 前言 DataGrip 是 JetBrains 发布的多引擎数据库环境&#xff0c;支持 MySQL 和 PostgreSQL&#xff0c;Microsoft SQL Server 和 Oracle&#xff0c;Sybase&#xff0c;DB2&#xff0c;SQLite&#xff0c;还有 Hyp…

RocketMQ快速实战以及集群架构详解

文章目录 1、MQ简介1.1 、定义1.2 、作用 2、RocketMQ产品特点2.1、RocketMQ介绍2.2 、RocketMQ特点 1、MQ简介 1.1 、定义 ​ MQ&#xff1a;MessageQueue&#xff0c;消息队列。是在互联网中使用非常广泛的一系列服务中间件。 这个词可以分两个部分来看 一是Message&#…

SmartApi使用说明

缘起&#xff1a; 搞移动开发十多年了&#xff0c;接口、数据、数据模型、以及数据边界值的处理是需要团队协作解决&#xff0c;而这方面恰恰是总容易导致bug难修复的地方。而一款好用的api调试工具对于后端、前端、测试都是必须必的掌握熟练使用&#xff0c;Api就像人体的血管…

开发、测试、生产环境

开发环境&#xff08;Development Environment&#xff09;&#xff1a; 开发环境是用于开发新功能、修改和调试代码的环境。 在开发环境中&#xff0c;开发人员可以针对特定需求编写和测试代码。 通常&#xff0c;开发环境会模拟完整的系统环境&#xff0c;并提供开发人员所需…

SQL 性能优化总结

文章目录 一、性能优化策略二、索引创建规则三、查询优化总结 一、性能优化策略 1. SQL 语句中 IN 包含的值不应过多 MySQL 将 IN中的常量全部存储在一个排好序的数组里面&#xff0c;但是如果数值较多&#xff0c;产生的消耗也是比较大的。所以对于连续的数值&#xff0c;能用…