Java_Maven:3. 分模块构建工程

news2024/11/17 4:46:35

目录

1 需求

2 案例实现

2.1 maven-parent 父模块

2.1.1 创建父工程

2.1.2 定义 pom.xml

2.1.3 将父工程发布至仓库

2.2 ssm_dao 子模块

2.2.1 创建 dao 子模块 

2.2.2 定义 pom.xml

2.2.3 dao 代码

2.2.4 配置文件

2.2.5 单元测试

2.2.6 把 dao 模块 install 到本地仓库

2.3 ssm_service 子模块

2.3.1 创建 service 子模块

2.3.2 定义 pom.xml

2.3.3 service 接口

2.3.4 配置文件

2.3.5 依赖范围对传递依赖的影响(了解)

2.3.6 单元测试

2.3.7 Install 到本地仓库

2.4 ssm_web 子模块

2.4.1 创建 web 子模块

2.4.2 定义 pom.xml

2.4.3 controller

2.4.4 配置文件

2.5 运行调试

3 分模块构建工程-依赖整合


  • 1 需求

    • 基于上边的三个工程分析
    • 聚合:聚合多个模块运行。
    • 继承:创建一个 parent 工程将所需的依赖都配置在 pom 中
    • 需求描述
      • 将 SSM 工程拆分为多个模块开发:
        • ssm_dao
        • ssm_service
        • ssm_web
    • 理解继承和聚合
      • 通常继承和聚合同时使用。
      • 何为继承?
        • 继承是为了消除重复,如果将 dao、service、web 分开创建独立的工程则每个工程的 pom.xml。
        • 文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等,可以将这些重复的配置提取出来在父工程的 pom.xml 中定义。
      • 何为聚合?
        • 项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web 三个工程最终会打一个独立的 war 运行。
  • 2 案例实现

    • 2.1 maven-parent 父模块

      • 2.1.1 创建父工程

        • 1、选择骨架创建父工程
        • 2、填写坐标
        • 3、确认使用的是本地仓库
        • 4、注意代码所在的路径(默认)
        • 5、设置项目的打包方式
      • 2.1.2 定义 pom.xml

        • 在父工程的 pom.xml 中抽取一些重复的配置的,比如:锁定 jar 包的版本、设置编译版本等。
        • <properties>
              <spring.version>5.0.2.RELEASE</spring.version>
              <springmvc.version>5.0.4.RELEASE</springmvc.version>
              <mybatis.version>3.4.5</mybatis.version>
          </properties>
          
          <dependencyManagement>
              <dependencies>
                  <!-- Mybatis -->
                  <dependency>
                      <groupId>org.mybatis</groupId>
                      <artifactId>mybatis</artifactId>
                      <version>${mybatis.version}</version>
                  </dependency>
              
                  <!-- springMVC -->
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-webmvc</artifactId>
                      <version>${springmvc.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-context</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <!-- spring -->
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-core</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-aop</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-web</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-expression</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-beans</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-aspects</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-context-support</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-test</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-jdbc</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
                  
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-tx</artifactId>
                      <version>${spring.version}</version>
                  </dependency>
              
              </dependencies>
          
          </dependencyManagement>
          
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <version>3.1</version>
                      <configuration>
                          <target>1.8</target>
                          <source>1.8</source>
                          </configuration>
                  </plugin>
              </plugins>
          </build>
      • 2.1.3 将父工程发布至仓库

        • 父工程创建完成执行 install 将父工程发布到仓库方便子工程继承:
    • 2.2 ssm_dao 子模块

      • 2.2.1 创建 dao 子模块 

        • 1、在父工程上右击创建 maven 模块:

        • 2、选择“跳过骨架选择”:
        • 3、填写模块名称
        • 4、下一步,确定项目的目录
        • 5、打包方式是 jar
      • 2.2.2 定义 pom.xml

        • 只添加dao层的 pom,mybatis 和 spring 的整合相关依赖
        • <dependencies>
              <!-- Mybatis 和 mybatis 与 spring 的整合 -->
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis</artifactId>
              </dependency>
           
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis-spring</artifactId>
                  <version>1.3.1</version>
              </dependency>
              
              <!-- MySql 驱动 -->
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.32</version>
              </dependency>
          
              <!-- druid 数据库连接池 -->
              <dependency>
                  <groupId>com.alibaba</groupId>
                  <artifactId>druid</artifactId>
                  <version>1.0.9</version>
              </dependency>
          
              <!-- spring 相关 -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context</artifactId>
                  </dependency>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-core</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-aop</artifactId>
              </dependency>
              
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-web</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-expression</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-beans</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-aspects</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context-support</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-test</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-jdbc</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-tx</artifactId>
              </dependency>
          
          </dependencies>
      • 2.2.3 dao 代码

        • 把文件夹转成 sources root
        • 将 ssm_maven 工程中的 dao 接口、映射文件及 pojo 类拷贝到 src/main/java 中:
      • 2.2.4 配置文件

        • 将 applicationContext.xml 拆分出一个 applicationContext-dao.xml,此文件中只配置 dao 相关
        • <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
              xmlns:context="http://www.springframework.org/schema/context"             
              xmlns:p="http://www.springframework.org/schema/p"
              xmlns:aop="http://www.springframework.org/schema/aop" 
              xmlns:tx="http://www.springframework.org/schema/tx"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://www.springframework.org/schema/beans 
                  http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                  http://www.springframework.org/schema/context 
                  http://www.springframework.org/schema/context/spring-context-4.0.xsd
                  http://www.springframework.org/schema/aop 
                  http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
                  http://www.springframework.org/schema/tx 
                  http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
                  http://www.springframework.org/schema/util 
                  http://www.springframework.org/schema/util/spring-util-4.0.xsd">
               
              <!-- 数据库连接池 -->
              <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
                  <!-- 驱动 -->
                  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
                  <!-- url -->
                  <property name="url" value="jdbc:mysql://localhost:3306/maven" />
                  <!-- 用户名 -->
                  <property name="username" value="root" />
                  <!-- 密码 -->
                  <property name="password" value="root" />
              </bean>
           
              <!-- mapper 配置 -->
              <!-- 让 spring 管理 sqlsessionfactory 使用 mybatis 和 spring 整合包中的 -->
              <bean id="sqlSessionFactory" 
                  class="org.mybatis.spring.SqlSessionFactoryBean">
                  <!-- 数据库连接池 -->
                  <property name="dataSource" ref="dataSource" />
                  <property name="typeAliasesPackage" value="cn.itcast.ssm.pojo">        
                  </property>
              </bean>
           
              <!-- mapper 扫描器 :用来产生代理对象-->
              <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                  <property name="basePackage" value="cn.itcast.ssm.dao"></property>
              </bean>
          
          </beans>
      • 2.2.5 单元测试

        • 1、首先在 dao 模块的 pom.xml添加 junit 的依赖,添加时 Scope 选择 test
        • 2、编写 junit 测试代码
        • public class ItemsMapperTest {
              @Test
              public void testFindItemsById() {
                  //获取 spring 容器
                  ApplicationContext applicationContext = new 
                  ClassPathXmlApplicationContext("classpath:applicationContext-dao.xml");
                  //获取 Mapper
                  ItemsMapper itemsMapper = applicationContext.getBean(ItemsMapper.class);
                  //调用 Mapper 方法
                  Items items = itemsMapper.findById(1);
                  System.out.println(items);
              }
          }
      • 2.2.6 把 dao 模块 install 到本地仓库

        • 调过测试,install 到本地仓库
    • 2.3 ssm_service 子模块

      • 2.3.1 创建 service 子模块

        • 方法同 ssm_dao 模块创建方法,模块名称为 ssm_service。
      • 2.3.2 定义 pom.xml

        • ssm_service 模块的 pom.xml 文件中需要继承父模块,ssm_service 依赖 ssm_dao 模块,添加spring 相关的依赖:
        • <dependencies>
              <!-- spring 相关 -->
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-jdbc</artifactId>
              </dependency>
          
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-tx</artifactId>
              </dependency>
           
              <!-- dao 层的依赖 -->
              <dependency>
                  <groupId>cn.itcast.ssm</groupId>
                  <artifactId>ssm_dao</artifactId>
                  <version>1.0-SNAPSHOT</version>
              </dependency>
          
          </dependencies>
      • 2.3.3 service 接口

        • 将 ssm_maven 工程中的 service 接口拷贝到 src/main/java 中:
      • 2.3.4 配置文件

        • 创建 applicationContext-service.xml,此文件中定义的 service。
        • <context:component-scan base-package="cn.itcast.ssm"/>
      • 2.3.5 依赖范围对传递依赖的影响(了解)

        • 2.3.5.1 问题描述
          • 是因为没有 junit.jar 引起的!为什么会这样呢?我们 ssm_dao 模块中有 junit 依赖而ssm_service 模块依赖了 ssm_dao,难道 junit 不应该传递过来吗?
          • 当在写 junit 测试时发现,代码报出没有找不到类的错误信息:
        • 2.3.5.3 依赖范围对传递依赖的影响
          • 是因为依赖会有依赖范围,依赖范围对传递依赖也有影响,例如有 A、B、C,
          • A 依赖 B、
          • B 依赖 C,
          • C 可能是 A 的传递依赖,如下图:
          • 最左边一列为直接依赖,理解为 A 依赖 B 的范围,最顶层一行为传递依赖,理解为 B依赖 C 的范围,行与列的交叉即为 A 传递依赖 C 的范围。
          • 举例 1:
            • 比如 A 对 B 有 compile 依赖,B 对 C 有 runtime 依赖,那么根据表格所示 A 对 C 有runtime 依赖。
            • ssm_dao 依赖 junit,scop 为 test
            • ssm_service 依赖 ssm_dao.
            • 查看下图红色框内所示传递依赖范围:
            • 所以 ssm_dao 工程所依赖的 junit 的 jar 没有加入到 ssm_service 工程。
          • 举例 2:如果修改 ssm_dao 工程依赖 junit 的 scop 为 compile,ssm_dao 工程所依赖的 junit的 jar 包会加入到 ssm_service 工程中,符合上边表格所示,查看下图红色框内所示:
      • 2.3.6 单元测试

        • 遇到依赖没有传递过来的问题我们通常的解决方案是在本工程中直接添加依赖:
        • 把如下依赖添加到 ssm_service 的工程中:
        • 再看测试代码也不报错了
      • 2.3.7 Install 到本地仓库

    • 2.4 ssm_web 子模块

      • 2.4.1 创建 web 子模块

        • 1、选择骨架创建 web 子模块
        • 2、确认使用自己的本地仓库
        • 3、填写模块名称
        • ​​​​​​​
        • 使用骨架创建 web 项目会花费些时间,请耐心等待

        • 4、创建 java 和 resources 文件夹,转成 source root
        • 5、添加打包方式 war
      • 2.4.2 定义 pom.xml

        • ssm_web 模块的 pom.xml 文件中需要继承父模块,ssm_web 依赖 ssm_service 模块和springmvc 的依赖
        • <?xml version="1.0" encoding="UTF-8"?>
          <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">
          
              <parent>
                  <artifactId>ssm_parent</artifactId>
                  <groupId>cn.itcast.ssm</groupId>
                  <version>1.0-SNAPSHOT</version>
              </parent>
              <modelVersion>4.0.0</modelVersion>
          
              <artifactId>ssm_web</artifactId>
              <packaging>war</packaging>
              <dependencies>
                  <!-- 依赖 service -->
                  <dependency>
                      <groupId>cn.itcast.ssm</groupId>
                      <artifactId>ssm_service</artifactId>
                      <version>1.0-SNAPSHOT</version>
                  </dependency>
           
                  <!-- springMVC -->
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-webmvc</artifactId>
                      <version>${springmvc.version}</version>
                  </dependency>
              
              </dependencies>
          
          </project>
      • 2.4.3 controller

        • 将 ssm_web 工程中的 controller 代码拷贝到 src/main/java 中:
        • ​​​​​​​
      • 2.4.4 配置文件

        • 拷贝 ssm_web 工程中如下配置文件:
        • ​​​​​​​
    • 2.5 运行调试

      • 方法 1:
        • 在 ssm_web 工程的 pom.xml 中配置 tomcat 插件运行
        • 运行 ssm_web 工程它会从本地仓库下载依赖的 jar 包,所以当 ssm_web 依赖的 jar 包内容修改了必须及时发布到本地仓库,比如:ssm_web 依赖的 ssm_service 修改了,需要及时将ssm_service 发布到本地仓库。
      • 方法 2:
        • 在父工程的 pom.xml 中配置 tomcat 插件运行,自动聚合并执行
      • 推荐方法 2,如果子工程都在本地,采用方法 2则不需要子工程修改就立即发布到本地仓库,父工程会自动聚合并使用最新代码执行。
      • 注意:如果子工程和父工程中都配置了 tomcat 插件,运行的端口和路径以子工程为准。
  • 3 分模块构建工程-依赖整合

    • 每个模块都需要 spring 或者 junit 的 jar,况且最终 package 打完包最后生成的项目中的jar 就是各个模块依赖的整合,所以我们可以把项目中所需的依赖都可以放到父工程中,模块中只留模块和模块之间的依赖,那父工程的 pom.xml 可以如下配置:
    • <properties>
          <spring.version>5.0.2.RELEASE</spring.version>
          <springmvc.version>5.0.2.RELEASE</springmvc.version>
          <mybatis.version>3.4.5</mybatis.version>
      </properties>
      
      <dependencyManagement>
          <dependencies>
              <!-- Mybatis -->
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis</artifactId>
                  <version>${mybatis.version}</version>
              </dependency>
      
              <!-- springMVC -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-webmvc</artifactId>
                  <version>${springmvc.version}</version>
              </dependency>
       
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
              <!-- spring -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-core</artifactId>
                  <version>${spring.version}</version>
              </dependency>
              
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-aop</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-web</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-expression</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-beans</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-aspects</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context-support</artifactId>
                  <version>${spring.version}</version>
              </dependency>
              
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-test</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-jdbc</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-tx</artifactId>
                  <version>${spring.version}</version>
              </dependency>
      
          </dependencies>
      
      </dependencyManagement>
      
      <dependencies>
          <!-- Mybatis 和 mybatis 与 spring 的整合 -->
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis-spring</artifactId>
              <version>1.3.1</version>
          </dependency>
      
          <!-- MySql 驱动 -->
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.32</version>
          </dependency>
      
          <!-- druid 数据库连接池 -->
          <dependency>
              <groupId>com.alibaba</groupId>
              <artifactId>druid</artifactId>
              <version>1.0.9</version>
          </dependency>
      
          <!-- springMVC -->
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-webmvc</artifactId>
              <version>${springmvc.version}</version>
          </dependency>
      
          <!-- spring 相关 -->
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-core</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-aop</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-web</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-expression</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-beans</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-aspects</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context-support</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-test</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-jdbc</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-tx</artifactId>
          </dependency>
      
          <!-- spring 相关 事务相关 -->
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-jdbc</artifactId>
          </dependency>
      
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-tx</artifactId>
          </dependency>
      
          <!-- junit 测试 -->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
              <scope>test</scope>
          </dependency>
      
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>servlet-api</artifactId>
              <version>2.5</version>
              <scope>provided</scope>
          </dependency>
          
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>jsp-api</artifactId>
              <version>2.0</version>
              <scope>provided</scope>
          </dependency>
      
          <!-- jstl -->
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>jstl</artifactId>
              <version>1.2</version>
          </dependency>
      
      </dependencies>
      
      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.1</version>
                  <configuration>
                      <target>1.8</target>
                      <source>1.8</source>
                  </configuration>
              </plugin>
              
              <plugin>
                  <groupId>org.apache.tomcat.maven</groupId>
                  <artifactId>tomcat7-maven-plugin</artifactId>
                  <version>2.2</version>
              </plugin>
      
          </plugins>
      
      </build>

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

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

相关文章

MySQL的索引视图练习题

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score)…

FDX-B|EMID格式低频RFID 读卡模块LD6900技术选型与说明

FDX-B|EMID格式低频RFID 读卡模块LD6900是华翔天诚推出一款基于 RFID 无线射频识别技术的低频&#xff08;LF&#xff09;读卡模块&#xff0c;工作频率支持 134.2KHZ、125KHZ&#xff0c;符合 ISO 11784/5 国际标准&#xff0c;支持对 FDX-B、EMID 两种协议格式电子标签的读取…

C++ ---智能指针详解

文章目录前言一、 为什么需要智能指针&#xff1f;二、内存泄漏2.1 什么是内存泄露?危害是什么?2.2 内存泄露的分类2.3 如何避免内存泄露三、智能指针的使用及原理3.1 RAII3.2 智能指针的原理3.3 std::autoptr3.4 std::unique_ptr3.5 std::shared_ptrstd::shared_ptr的循环引…

Beefxss使用教程图文教程(超详细)

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 Beefxss一、首次使用二、修改账号密码三、自带练习页面四、简单使用五、工具界面介绍六、功能演示1、网页重定向2、社工弹窗3、功能颜色标识…

2022黑马Redis跟学笔记.实战篇(四)

2022黑马Redis跟学笔记.实战篇 四4.3.秒杀优惠券功能4.3.1.秒杀优惠券的基本实现一、优惠卷秒杀1.1 全局唯一ID1.2 Redis实现全局唯一Id1.3 添加优惠卷1.4 实现秒杀下单4.3.2.超卖问题4.3.3.基于乐观锁解决超卖问题1. 悲观锁2. 乐观锁3. 乐观锁解决超卖问题4.4 秒杀的一人一单限…

蓝桥杯stm32 USART 串口接收数据

文章代码使用 HAL 库。 文章目录 前言一、创建 CubeMX 工程:二、 中断接收数据 函数:三、串口接收回调函数实验效果四、接收固定长度的数据。五、串口接收 不定长数据。总结前言 上篇文章是 串口的发送数据,这篇文章接着上次的 讲 串口的接受数据。 一、创建 CubeMX 工程:…

信息安全(一)

思维导图 一、AES加解密 1.概述 1.1 概念 AES&#xff1a; 高级加密标准&#xff08;Advanced Encryption Standard&#xff09;是一种对称加密的区块加密标准。 &#xff08;1&#xff09;替代DES的新一代分组加密算法 &#xff08;2&#xff09;支持三种长度密钥&#x…

网络知识点梳理与总结

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.知识点梳理 前言 本章将会对高级网络应用一些知识点进行梳理。 一.知识点梳理 1.单臂的缺陷有哪些?

大学生博主-14天学习挑战赛活动-CSDN

还在为写文没有流量发愁吗&#xff1f;还沉浸在假期中无法恢复状态吗&#xff1f;赶快来参与面向CSDN的大学生博主而举办的活动吧&#xff01;本次活动为了避免刷量行为&#xff0c;也为了保持公平性&#xff0c;能够选出最优秀的文章&#xff0c;特意邀请了五位在C站具有一定影…

文华财经期货指标公式量化策略分析软件,多空共振信号准确率高的公式源码

期货指标公式信号本身就有滞后性&#xff0c;周期越大&#xff0c;滞后性越久。指标公式不是100%稳赚的工具&#xff0c;只是在合适的时候让我们理性看待行情&#xff0c;减少逆势操作。 多空量化三维系统是一款通过数学分析、挖掘价格运动规律&#xff0c;对历史价格走势、趋势…

SQLSERVER 临时表和表变量到底有什么区别?

一&#xff1a;背景 1. 讲故事 今天和大家聊一套面试中经常被问到的高频题&#xff0c;对&#xff0c;就是 临时表 和 表变量 这俩玩意&#xff0c;如果有朋友在面试中回答的不好&#xff0c;可以尝试看下这篇能不能帮你成功迈过。 二&#xff1a;到底有什么区别 1. 前置思…

了解僵尸网络攻击:什么是僵尸网络,它如何传播恶意软件以及如何保护自己?

进行系统安全安排的专业人员非常了解“僵尸网络”一词。通常用于被劫持的计算机/系统链&#xff0c;如果指示恢复性和健壮的系统&#xff0c;则应很好地理解“僵尸网络”一词&#xff0c;因为它们的错误使用会导致巨大的混乱。 文章目录前言一、僵尸网络定义僵尸网络如何工作&a…

HTTP API自动化测试从手工到平台的演变

不管是 Web 系统&#xff0c;还是移动 APP&#xff0c;前后端逻辑的分离设计已经是常态化&#xff0c;相互之间通过 API 调用进行数据交互。在基于 API 约定的开发模式下&#xff0c;如何加速请求 / 响应的 API 测试&#xff0c;让研发人员及早参与到调试中来呢&#xff1f;既然…

数据结构与算法-数组

前言&#xff1a;几乎所有的编程语言都原生支持数组类型。因为数组是最简单的内存数据结构。创建一个数组&#xff1a;let arr new Array()或let arr new Array(5) // 指定长度或let arr new Array(1,2,3,4,5) // 将数组元素作为参数传给构造函数或let arr [1,2,3,4,5] // …

字节6面,成功唬住面试官拿了27K,软件测试面试也没有传说中那么难吧....

字节的面试挺独特&#xff0c;每轮面试都没有 HR 约时间&#xff0c;一般是晚上 8 点左右面试官来一个电话&#xff0c;问是否能面试&#xff0c;能的话开始面&#xff0c;不能就约一个其它时间。全程 6 面&#xff0c;前五面技术面&#xff0c;电话面试&#xff0c;最后一面是…

Windows中的CMD不需要死记硬背

日期&#xff1a;2023年2月16日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

【React】setState修改状态

React(三) 修改状态 【数据驱动视图思想】 通过setState修改状态 作用&#xff1a; 修改state更新ui 语法&#xff1a;this.setState({要修改的部分数据}) &#x1f4a1; 注意&#xff1a;不能直接修改state中的数据&#xff0c;而是要设置新值去覆盖。 // 1. 导包 impor…

AFLNET lightftp项目报错解决方法

在学习AFLNET的时候&#xff0c;本人尝试对示例项目中的lightftp进行fuzz,而后出现如下报错&#xff1a; AFLNet - the states hashtable should always contain an entry of the initial state 在github项目issue里看到了有人的问题和我一摸一样&#xff0c;Stack Overflow里…

JavaScript随手笔记---轮播图(点击切换)

&#x1f48c; 所属专栏&#xff1a;【JavaScript随手笔记】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#…

【服务器数据恢复】Vsan逻辑架构出现故障的数据恢复案例

服务器数据恢复环境&#xff1a; VMWARE VSAN包含三台服务器节点&#xff1b; 每个服务器节点上配置2块SSD硬盘和4块机械硬盘&#xff1b; 每个服务器节点上创建两个磁盘组&#xff1b; 每个磁盘组采用1个SSD硬盘作为缓存盘&#xff0c;2个机械硬盘作为容量盘&#xff0c;三个服…