将 Spring Boot 应用程序与 Amazon DocumentDB 集成

news2025/1/21 6:27:27

a17affd60c5adb454a6f0720ef70d86c.gif

Amazon DocumentDB(与 MongoDB 兼容)是一种可扩展、高度持久和完全托管的数据库服务,用于操作任务关键型 MongoDB 工作负载。在 Amazon DocumentDB 上,您可以使用相同的 MongoDB 应用程序代码、驱动程序和工具来运行、管理和扩展工作负载,无需关心管理底层基础设施。 

Spring Boot 提供了简单快速的方法,可基于 Spring 框架来构建生产级的应用程序。为了做到这一点,Spring Boot 预先打包自动配置模块,用于通常与 Spring Framework 一起使用的大多数库。简而言之,开源 Spring Boot 遵循有关配置的惯例,在 Spring 框架之上添加了自动配置功能。

在这篇文章中,您将探索使用 Spring Data MongoDB API,将 Spring Boot 应用程序集成到 Amazon DocumentDB 的基础知识。您还可以创建示例数据模型和存储库类用于执行数据库操作。

解决方案概览

Spring Boot 和 Amazon DocumentDB 的配置相对简单,只涉及几个配置步骤。

Spring Boot 允许应用程序使用 MongoTemplate 类和 MongoRepository 接口,与 Amazon DocumentDB 交互。 MongoTemplate 遵循 Spring 中的标准模板模式,为底层持久性引擎提供了现成的基本 API。MongoTemplate 为聚合、流式处理、更新和自定义查询等操作提供了直接可用的 API。MongoRepository 遵循以 Spring Data 为中心的方法,基于所有 Spring Data 项目中广为人知的创建、读取、更新和删除(CRUD,Create, Read, Update, and Delete)访问模式,提供了更灵活、更简单的 API 操作。

对于这两个选项,您首先要在 pom.xml 中为 Maven 项目定义依赖项。

这篇文章重点介绍如何使用 MongoRepository 与 Amazon DocumentDB 交互。

先决条件

您需要满足以下先决条件:

  • Amazon DocumentDB 集群 – 这篇文章首先介绍现有的 Amazon DocumentDB 集群,您要将其与 Spring Boot 应用程序集成。如果您还没有 Amazon DocumentDB 集群,请参阅 Get Started with Amazon DocumentDB(Amazon DocumentDB 入门)以创建新集群(https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html)。

  • 集成式开发环境(IDE) – 例如,Eclipse 或 Amazon Cloud9。本文在演示中使用了 Amazon Cloud9,这是一款基于云的 IDE,让您只需使用浏览器即可编写、运行和调试代码。其包括代码编辑器、调试程序和终端。启用增强了对 Java 开发的支持(https://docs.aws.amazon.com/cloud9/latest/user-guide/enhanced-java.html),改善您在使用 Java 时的开发体验。

  • Java 17 – 有关在 Amazon Cloud9 中安装或升级 Java 的信息,请参阅 Amazon Corretto 17 Installation Instructions(Amazon Corretto 17 安装说明)(https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/amazon-linux-install.html)

  • Maven – 请参阅设置 Maven 以在 Amazon Cloud9 中安装 Maven(https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-java.html#sample-java-sdk-maven)

  • Spring Initializr

您的账户中可能会产生与 Amazon DocumentDB 和 Amazon Cloud9 资源相关的费用。您可以使用亚马逊云科技定价计算器来估计此费用(https://calculator.aws/)。

使用 Spring Initializr 

创建 Spring Boot 应用程序

使用以下步骤,创建一个支持 Spring Data MongoDB 的新 Spring Boot 应用程序项目。作为替代方法,您可以使用 GitHub 存储库中的 spring-boot-docdb-sample 应用程序。(https://github.com/aws-samples/amazon-documentdb-samples/tree/master/blogs/docdb-springboot)

1. 浏览到 https://start.spring.io/。

2. 指定以下选项:

  1. 选择 Maven project(Maven 项目),且 Language(语言)为 Java

  2. 选择 Spring Boot 的版本 3.0.0。

  3. 为应用程序指定组和构件名称。

  4. 指定 Java 版本 17。

  5. 选择 ADD DEPENDENCIES(添加依赖项),然后搜索并选择 Spring Data MongoDB。您可以使用 Spring Data MongoDB 依赖项,从此应用程序与 Amazon DocumentDB 集群进行交互。

3. 选择 GENERATE(生成)以生成一个 Spring Boot 项目,其中包含引导所需的全部文件。

4. 将 ZIP 文件下载到本地计算机上的路径并解压缩文件。

4a156081eecfd1641e40b31af9a4e673.png

如果您使用的是 Amazon Cloud9 IDE,请将 ZIP 文件上传到 Amazon Cloud9 环境并解压缩文件。

验证 Maven 依赖项

在应用程序的目录中找到 pom.xml 文件,然后验证是否已按如下方式添加 Spring Data MongoDB 依赖项:

 XML 

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

左滑查看更多

定义数据模型

要在 Amazon DocumentDB 数据库中存储和检索数据,我们先创建一个 POJO 模型或实体类。该实体代表 Amazon DocumentDB 中的集合,并使用注释来定义集合名称、属性、键和其他方面。

在此示例中,您创建一个产品集合和对应的模型对象,该对象将产品的详细信息存储在目录数据库中。您创建具有六个属性的产品模型: id 、 name 、 sku 、 description 、 inventory 和 category 。

Amazon DocumentDB 在集合中存储数据。默认情况下,Spring Data 将产品的类或模型映射到名为 product 的集合。如果要更改集合的名称,您可以在类上使用 Spring Data MongoDB 的 @Document 注释。在以下示例中,我们使用 @Document(collection = "products") 来将集合名称指定为 products 。

您可以使用 @Id 注释指定文档的主键 _id 。如果您未指定任何内容,Amazon DocumentDB 将在创建文档时生成 _id 字段。其他属性不添加注释。这会假设它们映射到与属性本身具有相同名称的字段。在项目的目录中,创建一个 Product.java 文件,其中具有以下内容:

 Java 

@Id
    private String id;    
    
    /** 
     * 设置对应于 products 集合中字段的数据成员
     */
     
    private String name;
    private String sku;
    private String description;
    private int inventory;
    private String category;
    


    /**
     * @param id
     * @param name
     * @param sku
     * @param description
     * @param inventory
     * @param category
     */
    public Product(String name, String sku, String description, int inventory, String category) {
        
        this.name = name;
        this.sku = sku;
        this.description = description;
        this.inventory = inventory;
        this.category = category;
    }
}

左滑查看更多

为每个属性添加 getter 和 setter 方法。您可以使用特定于 IDE 的快捷方式生成 getter 和 setter 方法。例如,右键单击代码编辑器窗格,选择 Refactoring(重构),然后选择 Generate Getter and Setter in Cloud9(在 Cloud9 中生成 Getter 和 Setter)。

此外,建议覆盖 toString 方法来输出对象,例如,右键单击代码编辑器窗格,选择 Refactoring(重构),然后选择 Generate toString() in Cloud9(在 Cloud9 中生成 toString())

8e1688f7075559ce624a803662123243.png

在启用 TLS 的情况下进行连接

要从基于 Java 的 Spring Boot 应用程序连接到启用了 TLS 的 Amazon DocumentDB 集群,您的程序必须使用亚马逊云科技提供的证书颁发机构(CA,Certificate Authority)文件来验证连接。要使用 Amazon RDS CA 证书,请执行以下操作:

1. 在 tmp 文件夹下创建一个临时 certs 文件夹。您可以根据组织的安全策略来创建用于存储证书的文件夹。本文中,在 tmp 下创建 certs 文件夹:

 Bash 

mkdir /tmp/certs/

2. 运行以下命令,使用包含在文件中的 CA 证书创建信任存储。请确保更新<truststorePassword>。以下 shell 脚本示例将证书捆绑包导入 Linux 操作系统上的信任存储。有关其他选项,请参阅启用了 TLS 的情况下的连接(https://docs.aws.amazon.com/documentdb/latest/developerguide/connect_programmatically.html#connect_programmatically-tls_enabled)。

 Bash 

mydir=/tmp/certs
truststore=${mydir}/rds-truststore.jks
storepassword=<truststorePassword>


curl -sS "https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem" > ${mydir}/rds-combined-ca-bundle.pem
awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n ".pem"}' < ${mydir}/rds-combined-ca-bundle.pem


for CERT in rds-ca-*; do
  alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
  echo "Importing $alias"
  keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
  rm $CERT
done


rm ${mydir}/rds-combined-ca-bundle.pem


echo "Trust store content is: "


keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias 
do
   expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
   echo " Certificate ${alias} expires in '$expiry'" 
done

左滑查看更多

数据库和连接配置

设置连接详细信息和 SSL 信任存储需要两个配置文件。首先,在 application.properties 中定义您的 Amazon DocumentDB 连接参数,例如数据库、URI 或主机、端口、用户名和密码。然后在配置类中设置密钥库。

配置 Spring Boot 应用程序属性文件

要将 Spring Boot 应用程序连接到 Amazon DocumentDB,我们需要在 application.properties 文件中定义数据库配置。您需要配置数据库 URI、数据库名称或主机名、用户名、密码等属性,以及其他与连接相关的属性。要连接到 Amazon DocumentDB 集群,您需要在位于 src/main/resources 文件夹的 application.properties 文件中指定连接 URI 字符串。

要检索您的 Amazon DocumentDB 集群端点并配置 application.properties ,请完成以下步骤:

1. 在 Amazon DocumentDB 控制台的导航窗格中,选择 Clusters(集群)。

2. 找到您的集群并选择区域集群标识符。

3. 在 Connectivity & security(连接和安全性)选项卡上,复制用于通过 application.

1515929d1cc694e51e90c631765ccf3a.png

连接到集群的命令。

4. 从复制的连接字符串中删除 &ssl_ca_certs=rds-combined-ca-bundle.pem ,因为您已经将亚马逊云科技提供的 CA 文件导入了信任存储。

5. 将连接 URI 添加到位于您的项目 src/main/resources 文件夹的 application.properties 文件中。连接 URI 的键为 spring.data.mongodb.uri 。确保复制的连接字符串格式如下:

spring.data.mongodb.uri=mongodb://<用户名>:<密码>@<集群端点>: 27017/?ssl=true&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false

左滑查看更多

或者,您可以单独提供连接详细信息,包括主机名、端口、用户名和密码以及对应的属性键,例如 spring.data.mongodb.host 或 spring.data.mongodb.port 。有关可用的 Spring Boot 参数配置选项的完整列表,请参阅 Common Application Properties(常用应用程序属性)下的 Data Properties(数据属性)(https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.data)。

6. 您也可以选择在 application.properties 文件中指定数据库名称:

spring.data.mongodb.database=catalog

创建配置类并设置密钥库

现在属性配置已经完成,您需要定义配置类来设置密钥库属性,以便建立安全连接。

要在应用程序中使用密钥库,请在配置类中设置以下系统属性:

javax.net.ssl.trustStore: <truststore>
javax.net.ssl.trustStorePassword: <truststorePassword>

左滑查看更多

请参阅以下示例配置类。使用 @Configuration 注释将该类标记为配置类。具有 @Configuration 注释的类由 Spring 容器用作 bean 定义的来源。

 Java 

@Bean
        public MongoClientSettings mongoClientSettings() { 
             setSslProperties();
       return MongoClientSettings.builder()
                    .applyToSslSettings(builder -> builder.enabled(true))
                    .build();
  }


        private static void setSslProperties() { 
            System.setProperty("javax.net.ssl.trustStore", KEY_STORE_TYPE);
            System.setProperty("javax.net.ssl.trustStorePassword",          
                    DEFAULT_KEY_STORE_PASSWORD);
        }
  @Bean
        public MongoPropertiesClientSettingsBuilderCustomizer mongoPropertiesCustomizer(final MongoProperties properties) {
      return new MongoPropertiesClientSettingsBuilderCustomizer(properties);
  }
}

左滑查看更多

以上是 Spring Boot 中 Amazon DocumentDB 配置的全部内容现在,您可以通过扩展 MongoRepository 开始定义基于接口的存储库类。

配置存储库接口

现在,您可以使用 MongoRepository 访问数据库中的数据。 MongoRepository 提供常用功能,例如创建、读取、更新和删除(CRUD,Create, Read, Update, and Delete)操作。它充当模型与数据库之间的链接。它获取域类(Product)进行管理,并获取域类的 ID 类型作为类型参数。您可以编写几种方法,由存储库为您生成查询。

创建查询 Product 文档的存储库接口,如下所示:

 Java 

public interface ProductRepository extends MongoRepository<Product, String> {


}

左滑查看更多

 ProductRepository 扩展 MongoRepository 接口。此接口包含许多操作,包括标准的 CRUD 操作。您将在下一节中定义其他自定义操作。

定义服务类

服务类利用了 Spring Data 存储库接口。我们通过引用您在上一步中创建的存储库来定义它:

 Java 

@Service
public class ProductService {
    
    @Autowired
    private ProductRepository productRepo;
}

左滑查看更多

在下一节中,您将在此类上通过添加其他方法进行构建,该节还介绍了 CRUD 示例。

使用 CrudRepository

使用扩展了 CrudRepository 的 MongoRepository 时,您的存储库可以从 CrudRepository 接口的实施类访问基本功能,包括 save 、 count 、 findAll 和 delete 方法。您的 ProductRepository 接口扩展了 MongoRepository ,并可以访问所有基本 CRUD 操作。

我们来逐个探索和测试这些操作。

保存或创建

首先,您使用 save 方法向集合中添加一些文档。 save 方法获取 Product 对象作为输入,并将产品文档保存到 Amazon DocumentDB 集合中。将以下代码片段添加到您的服务类中:

 Java 

public void saveProducts() {
 
  productRepo.save(new Product("RayBan Sunglass Pro", "1590234","RayBan Sunglasses for professional sports people", 100, "fashion"));
  productRepo.save(new Product("GUCCI Handbag", "3451290", "Fashion Hand bags for all ages", 75, "fashion"));
  productRepo.save(new Product("Round hat", "8976045", "", 200, "fashion"));
  productRepo.save(new Product("Polo shirt", "6497023", "Cool shirts for hot summer", 25, "cloth"));
  productRepo.save(new Product("Swim shorts", "8245352", "Designer swim shorts for athletes", 200, "cloth"));
  productRepo.save(new Product("Running shoes", "3243662", "Shoes for work out and trekking", 20, "footware"));
  
  System.out.println(" Save complete ");
        
}

左滑查看更多

计数

在下一个示例中,如果存储库中没有任何方法,则调用服务类中的 count() 方法,对集合中的文档进行计数。

 Java 

public long getCount() {
    long count = productRepo.count();
    System.out.println(" Total number of products : "+count);
    return count;
}

左滑查看更多

读取

在此示例中,您执行三种不同的读取操作。您可以按名称或 SKU 提取产品,然后根据类别查找产品列表。

您在存储库( ProductRepository )中添加了三种简单方法。第一种方法 findProductByName 根据 name 属性查询集合。查询筛选条件使用注释 @Query 定义,在本例中,注释为 @Query("{name:'?0'}") 。第二种方法 findProductBySKU 根据 sku 属性查询集合,并在查询响应中仅输出 name 和 inventory 属性。第三种方法 findAll 检索特定类别的所有文档。请参阅以下代码:

 Java 

public interface ProductRepository extends MongoRepository<Product, String> {
    
    @Query("{name:'?0'}")
    Product findProductByName(String name);
    
    @Query(value="{sku:'?0'}", fields="{'name' : 1, 'inventory' : 1}")
    Product findProductBySKU (String sku);   


    @Query("{category:'?0'}")
    List<Product> findAllByCategory(String category);
                                                        
}

左滑查看更多

您可以从存储库在服务类中调用这三种方法,按名称、SKU 和类别查找文档。

 Java 

public Product getProductByName(String name) {
  System.out.println(" Getting product by name : " + name);
  Product product = productRepo.findProductByName(name);
  System.out.println(product);
  return product; 
}


public Product getProductBySKU(String sku) {
  System.out.println(" Getting product by SKU : " + sku);
  Product product = productRepo.findProductBySKU(sku);
  System.out.println(product);
   return product; 
}


public List<Product> findAllProductsByCategory(String category) {
  List<Product> productList = productRepo.findAllByCategory(category);
  productList.forEach(product -> System.out.println(product));
  return productList;
}

左滑查看更多

更新

您可以通过传递更新后的实体对象,使用 save 方法来更新现有文档。在此示例中,您按 SKU 查询现有产品并将库存增加 10。将以下方法添加到您的服务中:

 Java 

public void updateInventory(String sku) {
  Product product =  getProductBySKU(sku);
  System.out.println(" Updating Inventory for product by sku: " + sku);  
  product.setInventory(product.getInventory()+10);
  Product updatedProd = productRepo.save(product);
}

左滑查看更多

删除

在本示例中,您将创建两个删除操作。首先,您按照 ID 删除一个产品;在第二种方法中,您将删除集合中的所有文档(products)。将以下方法添加到您的服务类中:

 Java 

public void deleteProduct(String id) {
   productRepo.deleteById(id);
  System.out.println("Product with id " + id + " deleted");
}


public void deleteAll() {
  productRepo.deleteAll();
  System.out.println("All Products deleted.");
}

左滑查看更多

构建 Spring Boot 应用程序

默认的 Spring Boot 应用程序已经由 Spring Initializr 在根程序包(例如 com.example.documentdb )中创建。在 IDE 中打开默认应用程序:

 Java 

@SpringBootApplication
public class DocumentdbApplication {


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

左滑查看更多

 CommandLineRunner 接口表明,当 bean 包含在 SpringApplication 中时应该运行,以便在控制台上查看输出。实施 CommandLineRunner 接口并为 run 方法提供植入方法。我们使用 @Autowired 注释定义对您服务的引用。Spring 使用 @SpringBootApplication 注释来初始化应用程序上下文:

 Java 

@Override
  public void run(String... args) throws Exception {
    
    System.out.printf("%n Insert few products : %n");
    prodService.saveProducts();
    
    System.out.printf("%n Count all products : %n");
    prodService.getCount();
    
    
    System.out.printf("%n Get product by name : %n");
    prodService.getProductByName("GUCCI Handbag");
    
    System.out.printf("%n Get product by sku : %n");
    prodService.getProductBySKU("8976045");
    
    System.out.printf("%n Get all products by category : %n");
    prodService.findAllProductsByCategory("fashion");
    
    System.out.printf("%n Update Inventory for Product by sku :  %n");
    prodService.updateInventory("3451290");
    
    System.out.printf("%n Delete product id  %n");
    prodService.deleteProduct("639a0046efe46b7343dd5004"); 
    
    System.out.printf("%n Deleting all products/documents  %n");
    prodService.deleteAll(); 
  }
}

左滑查看更多

运行并测试您的应用程序

使用以下 Maven 命令运行 Spring Boot 应用程序:

 Bash 

mvn spring-boot:run

以下屏幕截图是 Spring Boot 应用程序的示例输出。

f806137d9235fd82d57a41276a934c5c.png

您做到了! 您已成功从 Spring Boot 应用程序连接到 Amazon DocumentDB。

总结

在这篇文章中,您了解了如何通过简单的应用程序将 Amazon DocumentDB 与 Spring Boot 应用程序集成,该应用程序使用 Spring Data MongoDB 将对象保存到数据库以及从数据库中提取对象,所有这些过程都无需编写具体的存储库实施,而且配置简单。

这篇文章中使用的示例在 GitHub 上作为示例项目提供(https://github.com/aws-samples/amazon-documentdb-samples/tree/master/blogs/docdb-springboot)。

Original URL: 

https://aws.amazon.com/cn/blogs/database/integrate-your-spring-boot-application-with-amazon-documentdb/

本篇作者

807e227787a43bf8345bee117cb61e84.jpeg

Gururaj S Bayari 

亚马逊云科技的资深 DocumentDB 专家解决方案架构师。他非常乐于帮助客户采用 Amazon 的专用数据库。他针对采用 NoSQL 和/或关系数据库的互联网规模的高性能工作负载,帮助客户进行设计、评估和优化。

91b1dc1d71fa1242408a345a4ba55046.gif

3cd3e8cdf4007ccef52841ec81df8f48.gif

听说,点完下面4个按钮

就不会碰到bug了!

7ba2b75f617d9d90efd4f2679b47348d.gif

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

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

相关文章

bazel介绍以及其发展历史

简介 Bazel Google开源的&#xff0c;是一款与 Make、Maven 和 Gradle 类似的开源构建和测试工具。 它使用人类可读的高级构建语言。Bazel 支持多种语言的项目&#xff0c;可为多个平台构建输出。Bazel支持任意大小的构建目标&#xff0c;并支持跨多个代码库和大量用户的大型代…

JavaSE基础(1)

1 初识Java 知识导图 1.1 Java简介及发展史 1.1.1 Java是什么 Java是一种优秀的程序设计语言&#xff0c;它具有令人赏心悦目的语法和易于理解的语义。 不仅如此&#xff0c;Java还是一个有一系列计算机软件和规范形成的技术体系&#xff0c;这个技术体系提供了完整的用于软…

系统学习Linux-PXE无人值守装机(附改密)

目录 pxe实现系统自动安装pxe工作原理 大致的工作过程如下&#xff1a; PXE的组件&#xff1a; 一、配置vsftpd 二、配置tftp 三、准备pxelinx.0文件、引导文件、内核文件 四、配置dhcp 配置ip 配置dhcp 五、创建default文件 六、新建测试主机用来测试装机效果 七、…

github指南

记录一些Github上的宝贵功能 1、github trending/star 1.1查看github的热门趋势 可以选择点击上面热门趋势的链接&#xff0c;从主页点进去的方式如下 在这个页面中&#xff0c;你可以选择language/data range等来搜索到你想要的 1.2 查看github的star排行 比如&#xff1a…

出货量腰斩,不用中国芯片,美国PC巨头要凉了,苹果成为大赢家

市调机构Canalys公布的二季度数据显示美国PC巨头戴尔在中国市场的出货量同比暴跌52%&#xff0c;显示出它在公开宣布舍弃中国芯片之后&#xff0c;中国消费者正纷纷抛弃它&#xff0c;毕竟如今的PC品牌如此之多&#xff0c;完全有更多的替代选择。 Canalys公布的数据显示&#…

Python Opencv实践 - 拉普拉斯(Laplacian)算子边缘检测

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_GRAYSCALE) print(img.shape)#拉普拉斯边缘检测 #cv.Laplacian(src, ddepth, dst, ksize, scale, delta, borderType) #src:原图 …

正中优配:沪指震荡涨0.23%,保险、酿酒等板块走强,半导体板块下挫

1日早盘&#xff0c;沪指、深成指盘中强势震动上扬&#xff0c;创业板指回落翻绿&#xff0c;科创50指数跌超1%&#xff1b;两市半日成交缺乏5000亿元。 到午间收盘&#xff0c;沪指涨0.23%报3127.19点&#xff0c;深成指涨0.25%&#xff0c;创业板指跌0.23%&#xff0c;科创5…

Ubuntu22.04安装Mongodb7.0

Ubuntu安装Mongodb 1.平台支持2.安装MongoDB社区版2.1导入包管理系统使用的公钥2.2为MongoDB创建列表文件2.3重新加载本地包数据库2.4安装MongoDB包1.安装最新版MongoDB2.安装指定版MongoDB 3.运行MongoDB社区版1.目录2.配置文件3.初始化系统4.启动MongoDB5.验证MongoDB是否成功…

列表、字典的删除操作

1.列表的删除操作&#xff0c;可以使用del 列表[索引]、列表.pop(索引)、列表.remove(元素)、列表.clear() del(如果不指定列表索引&#xff0c;就是删除整个列表&#xff0c;再使用就会出现 name XX is not defined) a [10, 20, 30, 40] print(f"删除前为:{a}") de…

简易虚拟培训系统-UI控件的应用5

目录 Toggle控件简介 示例-使用Toggle组实现主轴速度选择 本篇介绍UI控件Toggle&#xff0c;尝试一个小示例-使用单选框实现速度的选择控制。 Toggle控件简介 1. Toggle的结构如下&#xff1a;最重要的Toggle组件挂在Toggle节点上&#xff0c;下面的Image组件用于显示单选框…

大数据Flink(七十一):SQL的时间属性

文章目录 SQL的时间属性 一、Flink三种时间属性简介

【jsthree.js】全景vr看房进阶版

three小结&#xff1a; Scene场景 指包含了所有要渲染和呈现的三维对象、光源、相机以及其他相关元素的环境&#xff1b;场景可以被渲染引擎或图形库加载和处理&#xff0c;以生成最终的图像或动画 常见属性&#xff1a; scene.background new THREE.Color(0x000000); // …

【01背包理论】01背包问题dp[j](滚动数组) <动态规划板子>

【01背包理论】01背包问题dp[j] 有 n 件物品和一个最多能背重量为 w 的背包。 第 i 件物品的重量是 weight[i]&#xff0c;得到的价值是 value[i] 。 每件物品只有一个&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 题解 动态规划 确定 dp 数组以及下标的含义 滚…

wxpython: 数字时钟秒表

wxpython 数字时钟秒表&#xff1b;定时器和线程>示例 编写 wx_clock.py 如下 # -*- coding: utf-8 -*- """ 定时器和线程>示例""" import wx import time import threadingclass MyFrame(wx.Frame): def __init__(self):""…

【Java核心知识】线程基础知识

文章目录 线程线程与进程的区别创建线程的方法方法一&#xff1a;继承Thread类方法二&#xff1a;实现Runnable接口方法三&#xff1a;使用Callable和FutureTask创建带返回值的线程方法四&#xff1a;通过线程池创建线程 线程的基本操作线程的状态守护线程 线程 线程与进程的区…

基于Java的学生宿舍管理系统,springboot+jsp,MySQL数据库,前后端分离,学生+宿舍管理员+系统管理员三种身份,完美运行,有一万字论文。

基于Java的学生宿舍管理系统&#xff0c;springbootjsp&#xff0c;MySQL数据库&#xff0c;前后端分离&#xff0c;学生宿舍管理员系统管理员三种身份&#xff0c;完美运行&#xff0c;有一万字论文。 学生&#xff1a;个人信息管理、保修、假期&#xff08;入校、离校&#x…

【网络】路由配置实践

网络实践-路由篇 本文使用vmware虚拟机进行路由表配置实践&#xff0c;通过配置路由表连接两个不同的网络 网络规划&#xff1a; 准备三台centos7虚拟机&#xff0c;其中一台作为路由设备router&#xff0c;其余两台分别代表处在不通网络中的pc1和pc2。因此router虚拟机需要分…

IntelliJ IDEA的远程开发(Remote Development)

DEA的远程开发功能&#xff0c;可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行&#xff0c;而本地仅运行客户端软件进行常规的开发操作即可&#xff0c;官方给出的逻辑图如下&#xff0c;可见通过本地的IDE和服务器上的IDE backend将本地电脑和服务器打通&am…

iOS设备管理软件iMazing2024

文件系统是一种用于在存储设备上组织文件和文件夹的系统。所有的存储设备&#xff08;如计算机、USB存储器、手机等&#xff09;都有着自己的文件系统。 iMazing文件系统功能将iOS设备中封闭而复杂的文件管理系统整合在一起&#xff0c;让您管理文件像在电脑中使用Windows文件…

肖sir __linux__面试题和考核05

面试题 1、查看linux中第11行到第20行的数据&#xff08;比如文档a 有30行&#xff09; 方法1&#xff1a;tail -n 11 mm |head -n10 n 表示从第10行开始&#xff0c;取前10行 方法2&#xff1a;head -n -10 mm| tail -n 10 表示从末尾第10行开始&#xff0c;最后10行 方法3&am…