分页的实现方法索引知识

目录

一. SpringBoot项目如何实现分页功能?

二、java中常用的分页插件有哪些

三、pageHelper分页原理及具体实现示例代码?

四、在MyBatis-Plus中如何实现自定义分页查询?

五、自定义排序在MyBatis-Plus中应该如何实现?

六、分页查询是否会影响查询性能?

 七、如何优化分页查询以提高性能?

八、对于数据库优化,除了分页查询外,还有哪些常见的策略?

九、什么是覆盖索引?

十、数据库设计范式

十一、为什么在某些情况下,会牺牲更高的范式以优化性能

十二、数据库表索引的分类?

十三、聚簇索引和非聚簇索引的区别?

十四、主键默认是聚簇索引吗?有没有例外?

十五、如何创建聚簇索引?


一. SpringBoot项目如何实现分页功能?

在Spring Boot项目中实现分页功能通常涉及到Spring Data JPA或者MyBatis Plus等库。这里以Spring Data JPA为例,展示一个简单的步骤:

  1. 添加Spring Data JPA和Web依赖: 在pom.xml文件中添加以下依赖:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
  2. 创建实体类(Entity)和Repository接口: 假设有一个名为Book的实体类,我们可以创建一个继承自JpaRepository的接口BookRepository,Spring Data JPA会自动生成CRUD方法,包括分页方法。

    @Entity
    public class Book {// 实体属性...
    }public interface BookRepository extends JpaRepository<Book, Long> {// 默认提供了分页查询方法,例如:Page<Book> findAll(Pageable pageable);
    }
    
  3. 创建Controller: 在Controller中,我们处理HTTP请求并调用Repository的方法来获取分页数据。

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;@RestController
    public class BookController {@Autowiredprivate BookRepository bookRepository;@GetMapping("/books")public Page<Book> getBooks(@RequestParam(defaultValue = "0") int page,@RequestParam(defaultValue = "10") int size) {Pageable pageable = PageRequest.of(page, size);return bookRepository.findAll(pageable);}
    }
    
  4. 配置数据源: 在application.propertiesapplication.yml配置文件中设置数据源的相关信息。

  5. 运行并测试: 启动应用,访问 /books?page=0&size=10 来查看第一页的10条数据。更改参数值可查看不同页面和大小的数据。

二、java中常用的分页插件有哪些

在Java中,有几个常用的分页插件,可以方便地集成到各种框架中实现分页功能。以下是其中几个主流的分页插件:

  1. PageHelper:这是一个针对MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为MyBatis提供简单便捷的分页方式。它可以在不修改任何MyBatis代码的情况下直接使用。

  2. MyBatis-Plus (MP):MyBatis-Plus是一个MyBatis的扩展插件,简化开发,它提供了动态SQL、自动填充公共字段、分页等功能。它的分页功能是通过内置的AbstractMapper提供的,使用起来很简单。

  3. Spring Data JPA:Spring Data JPA 是 Spring 对 JPA 的支持,它为 CRUD 提供了一种统一的访问方式。Spring Data JPA 自带了对分页的支持,只需要通过 Pageable 接口就可以轻松实现分页。

  4. Hibernate:Hibernate 本身并没有内置分页功能,但可以通过 Criteria API 或者 HQL 中的 firstResult 和 maxResults 方法进行分页。

  5. Querydsl:Querydsl 是一个 Java 查询对象的框架,它可以用于构建静态类型安全的 SQL, JPQL, JDO 和 Criteria 查询。虽然它不是专门为分页设计的,但你可以利用它构建复杂的查询并结合分页API进行分页。

示例代码(使用 MyBatis-Plus 分页):

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
import com.example.entity.User;
import com.example.mapper.UserMapper;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public Page<User> getUserByPage(int currentPage, int pageSize) {Page<User> page = new Page<>(currentPage, pageSize);return userMapper.selectPage(page, null);}
}

三、pageHelper分页原理及具体实现示例代码?

PageHelper是MyBatis的一个插件,它实现了数据库的分页查询。其主要原理是在MyBatis的SqlSession执行查询之前,通过拦截器动态地添加分页的SQL语句和参数,使得返回的结果自动进行分页。

下面是一个使用PageHelper进行分页查询的具体实现示例:

(1)添加依赖: 在项目的pom.xml文件中添加PageHelper的依赖:

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>最新版本号</version>
</dependency>

请替换最新版本号为实际可用的PageHelper版本。

(2)配置PageHelper: 在Spring配置文件(例如:applicationContext.xml)中配置PageHelper插件:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- ... --><property name="plugins"><array><bean class="com.github.pagehelper.PageInterceptor"><property name="properties"><value>helperDialect=mysqlreasonable=truesupportMethodsArguments=trueparams=count=countSql</value></property></bean></array></property>
</bean>

或者在Spring Boot中,在application.properties中添加以下配置:

mybatis-plus-helper.pagehelper.helper-dialect=mysql
mybatis-plus-helper.pagehelper.reasonable=true
mybatis-plus-helper.pagehelper.support-methods-arguments=true
mybatis-plus-helper.pagehelper.params=count=countSql

(3)页面参数: 在前端页面传递页码(pageNum)和每页大小(pageSize)作为HTTP请求参数。

(4)Service和Mapper方法: 在Service层注入Mapper,并编写分页查询的方法:

@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public PageInfo<User> getUserList(int pageNum, int pageSize) {PageHelper.startPage(pageNum, pageSize); // 开始分页List<User> users = userMapper.selectAll(); // 查询所有用户PageInfo<User> pageInfo = new PageInfo<>(users); // 封装分页信息return pageInfo;}
}

(5)Controller处理请求: 在Controller中接收参数并调用Service方法:

@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/list")public Result<PageInfo<User>> getUserList(@RequestParam int pageNum, @RequestParam int pageSize) {PageInfo<User> pageInfo = userService.getUserList(pageNum, pageSize);return Result.ok(pageInfo);}
}

至此,分页功能已完成。当用户访问 /users/list? pageNum=1&pageSize=10 时,会获取第一页,每页10条记录的用户列表。

四、在MyBatis-Plus中如何实现自定义分页查询?

在MyBatis-Plus中实现自定义分页查询可以遵循以下步骤:

1. 引入依赖:
确保你的项目已经引入了MyBatis-Plus的依赖,通常在pom.xml文件中添加如下代码:<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>版本号</version></dependency>2. 创建实体类(Entity):
创建代表数据库表的实体类,并使用@TableId注解标记主键字段。3. 创建Mapper接口:
定义一个继承自BaseMapper<T>的Mapper接口,T是你的实体类类型。例如:public interface UserMapper extends BaseMapper<User> {}4. 创建Service类:
创建服务类,注入对应Mapper接口,并编写自定义分页查询的方法。通常会使用LambdaQueryWrapper来构建查询条件。例如:@Autowiredprivate UserMapper userMapper;public IPage<User> getUserByCustomPage(Page<User> page) {LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();// 添加自定义查询条件wrapper.eq(User::getName, "John");return userMapper.selectPage(page, wrapper);}5. 页面请求处理:
在Controller层,接收用户的分页参数并调用Service中的方法。例如:@GetMapping("/users")public Result<Page<User>> getUsers(@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "10") Integer pageSize) {Page<User> page = new Page<>(pageNum, pageSize);IPage<User> resultPage = userService.getUserByCustomPage(page);return Result.ok(resultPage);}

在这个例子中,Page对象包含了当前页数和每页大小,selectPage方法会执行分页查询并将结果返回给前端。

五、自定义排序在MyBatis-Plus中应该如何实现?

在MyBatis-Plus中实现自定义排序可以通过以下步骤:

  1. 在实体类(Entity)上使用@TableField注解指定排序字段:

    public class User {// ...@TableField(order = 1)private String name;@TableField(order = 2)private Integer age;// ...
    }
    

    order属性用于设置字段的排序优先级。

  2. 在Mapper接口中编写查询方法,使用@OrderBy注解指定排序方式:

    public interface UserMapper {List<User> selectUsersByOrder(@OrderBy("name asc, age desc") String condition);
    }
    

    @OrderBy注解指定了排序方式,如示例中的name asc, age desc表示先按名字升序排序,然后按年龄降序排序。

  3. 在Service类中调用Mapper接口:

    @Service
    public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> getUsersByCustomOrder() {return userMapper.selectUsersByOrder(null); // 这里可以根据需要传入查询条件}
    }
    
  4. Controller层处理请求:

    @RestController
    public class UserController {@Autowiredprivate UserService userService;@GetMapping("/users/custom-order")public Result<List<User>> getUsersByCustomOrder() {List<User> users = userService.getUsersByCustomOrder();return Result.ok(users);}
    }
    

现在,当调用getUsersByCustomOrder方法时,查询的结果将按照自定义的排序方式进行排序。

六、分页查询是否会影响查询性能?

分页查询确实可能影响查询性能,尤其是在数据量非常大的情况下。以下是几个关键点:

  1. 全表扫描:如果不使用索引,数据库可能需要遍历整个表来找到指定页的数据,这会导致全表扫描,效率低下。

  2. 索引利用:如果查询条件可以利用到索引,性能通常会更好。但分页查询可能导致索引部分覆盖,从而降低索引的利用率。

  3. 额外计算:分页查询时,数据库需要额外计算总行数(除非使用估算),这可能涉及多次查询或复杂计算。

  4. 内存消耗:对于大数据集,即使只是处理一部分数据,也可能占用大量内存,尤其是当结果被缓存或加载到内存中时。

  5. 数据库支持:不同的数据库系统对分页有不同的优化策略,比如MySQL的LIMIT/OFFSET语法可能会导致性能下降,而一些数据库支持更高效的窗口函数来实现分页。

综上所述,合理的分页策略(如限制最大返回行数、使用合适的索引等)有助于减少性能影响。但过度的大规模分页操作可能会导致显著的性能损耗。

 七、如何优化分页查询以提高性能?

优化分页查询的方法主要包括以下几个方面:

  1. 限制查询结果数量:避免一次性加载大量数据,通过设置合理的每页条数限制数据量。

  2. 利用索引:确保查询条件能利用到索引,避免全表扫描。特别是对于主键或唯一索引,分页效果最佳。

  3. 避免OFFSETOFFSET 会在MySQL等数据库中造成性能问题,因为它需要跳过很多行。考虑使用 ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...) 窗口函数(PostgreSQL, SQL Server等支持)或者 LIMIT 与 ID 范围查询(例如,获取第n页数据时先找出前一页最后一个元素的ID)。

  4. 预估总数:如果不需要精确的总记录数,可以用估算方法代替实际计数,例如,查询一定比例的数据以近似估计。

  5. 缓存:对查询结果进行缓存,减轻数据库压力,但需注意数据一致性问题。

  6. 批量更新/删除:分批执行更新或删除操作,而不是一次性处理所有数据。

  7. 数据库特定优化:根据所使用的数据库系统,了解并利用其提供的特定优化手段。

八、对于数据库优化,除了分页查询外,还有哪些常见的策略?

数据库优化有多种策略,以下是其中一些常见的方式:

  1. 索引优化

    • 选择合适的索引类型(如B-Tree、Hash、全文索引)
    • 为常用查询字段创建索引
    • 避免在索引列上使用不等运算符和NULL值
    • 使用覆盖索引(Covering Indexes)
  2. 查询优化

    • 减少嵌套查询
    • 避免子查询,转为连接查询
    • 使用EXPLAIN分析SQL执行计划
    • 尽可能减少SELECT列的数量
  3. 存储优化

    • 数据归档和清理不再需要的数据
    • 合理设计表结构和数据类型
    • 利用分区表和分片提高大数据处理速度
  4. 配置优化

    • 根据服务器资源调整数据库参数
    • 内存分配合理化(如缓冲池大小)
    • 设置适当的并发连接数
  5. 数据库设计和规范化

    • 遵循数据库设计范式
    • 适当反规范化以提升性能
  6. 读写分离

    • 主从复制实现读写分离,降低主库压力
  7. 缓存策略

    • 使用Redis、Memcached等缓存系统
    • 在应用程序层面实现缓存
  8. 数据库维护

    • 定期做分析和重建索引
    • 保持数据库备份和恢复策略

九、什么是覆盖索引?

覆盖索引(Covering Index)是一种特殊的索引使用方式,它允许数据库引擎仅通过索引来完成查询,而无需回表到数据行获取信息。当索引包含了满足查询需求的所有列时,就称为覆盖索引。

覆盖索引的工作原理:

  1. 创建一个包含查询所需所有列的索引。
  2. 当查询执行时,数据库可以通过扫描该索引找到所需的数据,而不需要访问原始数据行。
  3. 这样可以显著减少I/O操作,提高查询效率。

示例: 假设有一个表employees,包含以下列:id(主键)、namesalarydepartment_id。如果经常有如下查询:

SELECT id, name FROM employees WHERE department_id = some_value;

在此情况下,我们可以创建一个包含department_idid, 和 name的复合索引。这样,查询就可以直接从这个索引中得到结果,而不需要访问主表。

十、数据库设计范式

数据库设计范式是数据库设计中的一系列规范,用于确保数据的逻辑结构合理、无冗余且易于维护。主要的数据库范式有以下几种:

  1. 第一范式(1NF,First Normal Form):

    • 数据表中的每一列都不可再分,即列值为原子性。
    • 确保每列都是单一属性,避免组合属性。
  2. 第二范式(2NF,Second Normal Form):

    • 已满足1NF。
    • 表格消除非关键列对部分关键列的依赖,即不存在部分函数依赖
    • 如果一个非主键字段完全依赖于整个主键,则符合2NF。
  3. 第三范式(3NF,Third Normal Form):

    • 已满足2NF。
    • 消除非关键列之间的传递函数依赖。
    • 即如果A依赖于B,B又依赖于C,那么A间接依赖于C,需要将A与C的关系独立出来。
  4. BCNF(Boyce-Codd Normal Form):

    • 基于第三范式,解决了3NF中可能出现的关键字选择不当导致的问题。
    • 任何非平凡的函数依赖X → Y,其中X和Y都不包含超键,X必须是超键。
  5. 第四范式(4NF,Fourth Normal Form):

    • 已满足BCNF。
    • 避免多值依赖,即消除多对多关系引起的冗余。
  6. 第五范式(5NF,Project-Join Normal Form 或 Prime Attribute Normal Form):

    • 最高级别的范式,更专业,较少提及,在实际应用中并不常见。

数据库设计范式举例说明

数据库设计范式是规范数据库结构的一种方法,目的是消除冗余数据和依赖关系,以提高数据的一致性、减少更新异常和插入异常。以下是几个常见的数据库设计范式,以及简单的例子来解释它们:

  1. 第一范式(1NF):确保每个字段都原子化,不可再分。这意味着表格的每一列都只能包含单一的值,而不能是一个列表或其他复合数据类型。

    例子:一个“员工”表原本有一个“联系方式”列,包含电话和邮箱,不符合1NF。改设计后,分为两个单独的列:“联系电话”和“电子邮箱”。

  2. 第二范式(2NF):满足1NF,并且没有部分函数依赖。即所有非主键列完全依赖于整个主键,而不是主键的一部分。

    例子:假设有一个“订单详情”表,主键是“订单ID”,还有一个“产品ID”。如果还有“产品类别”列,它实际上依赖于“产品ID”,而非整个主键,应将其移至另一个关联的“产品”表。

  3. 第三范式(3NF):满足2NF,并且没有传递函数依赖。这意味着除了主键以外,其他任何列都不能基于其他非主键列的值来决定。

    例子:继续“订单详情”表的例子,如果有“供应商ID”列,但它可以通过“产品ID”推断出来,那么应该将“供应商ID”移动到“产品”表,使得“订单详情”表只包含与订单直接相关的数据。

  4. 第四范式(4NF):满足3NF,并消除了多值依赖。它针对的是那些包含多重键值对的表。

    这个范式在实践中相对少见,因为达到3NF通常已经足够处理大部分关系数据库设计。

  5. 第五范式(5NF,也称为投影-连接范式,PJ/NF):数据仅依赖于原始数据,不存在任何依赖于派生数据的情况。涉及更复杂的关系理论,通常用于非常特定的情况。

    这个范式不是所有的数据库设计都需要达到的,因为它可能会导致过度正常化的表格,增加了查询的复杂性。

十一、为什么在某些情况下,会牺牲更高的范式以优化性能

在数据库设计中,更高的范式通常意味着更低的数据冗余和更高的数据一致性。然而,在某些情况下,我们可能会牺牲更高的范式来优化性能,原因包括:

  1. 减少联接操作:更高范式的表格可能导致更多的联接操作来获取完整信息。这会增加查询复杂性和时间,尤其是在大数据量时。

  2. 提高查询速度:通过适当的数据冗余,可以避免复杂的联接,从而加快查询速度。例如,创建汇总表存储计算好的统计数据,以提高报告查询效率。

  3. 简化更新过程:在一些场景下,为了保证数据一致性,需要复杂的触发器和业务逻辑。适当的数据冗余可能使更新操作更为简单直接。

  4. 空间和磁盘I/O优化:虽然更高的范式减少了冗余,但有时存储优化比减少冗余更重要,特别是在存储成本较低或者I/O性能瓶颈的情况下。

  5. 读写比例:对于读取密集型的应用,优化读取性能可能优先于防止数据不一致。在这些情况下,牺牲一定的规范化可能是合理的。

十二、数据库表索引的分类?

数据库表索引的主要分类包括以下几种:

  1. 唯一索引(Unique Index):保证索引项的唯一性,不允许有重复的值。一个表可以有多个唯一索引,但主键索引必须是唯一的。

  2. 主键索引(Primary Key Index):是一种特殊的唯一索引,用于标识表中的每一条记录。一张表只有一个主键,主键索引不允许有NULL值。

  3. 聚簇索引(Clustered Index):决定了数据行在磁盘上的物理存储顺序。一个表只能有一个聚簇索引,因为数据本身已经按照这个索引的顺序排列。

  4. 非聚簇索引(Non-clustered Index):索引项独立于数据行的物理存储顺序,非聚簇索引的叶子节点保存了指向实际数据行的指针。

  5. 复合索引(Composite Index):由多个列组成,索引的排序基于这些列的组合。

  6. 覆盖索引(Covering Index):索引包含了SQL查询所需要的所有列,这样查询可以直接从索引中获取数据,而不需要回表查找。

  7. 全文索引(Full-text Index):用于全文搜索,支持对文本数据进行模糊匹配和关键词检索。

  8. 空间索引(Spatial Index):用于地理空间数据,加速对地理位置的查询。

  9. 位图索引(Bitmap Index):在数据稀疏时使用,用位图表示索引项的值,适合用于多值列或者低选择性的场景。

十三、聚簇索引和非聚簇索引的区别?

以下是聚簇索引和非聚簇索引的关键区别:

数据存储方式:

  • 聚簇索引:数据行的物理存储顺序与索引顺序相同。这意味着一个表只能有一个聚簇索引,因为它定义了数据的实际布局。
  • 非聚簇索引:索引结构独立于数据行的物理存储顺序。非聚簇索引的叶子节点通常包含指向数据行的指针。

存储效率:

  • 聚簇索引:由于数据按索引顺序存储,对于范围查询可能更快,但插入速度可能会慢,尤其是当新数据需要被移到已有数据之后时。
  • 非聚簇索引:插入速度快,因为无需移动已有的数据行,但查询效率取决于是否能直接使用索引还是需要回表查找。

索引结构:

  • 聚簇索引:索引的叶子节点就是数据行。
  • 非聚簇索引:索引的叶子节点通常包含键值和对应的行位置指示器。

索引类型限制:

  • 聚簇索引:一张表只能有一个聚簇索引,因为数据行的物理存储顺序不能有两个版本。
  • 非聚簇索引:同一张表上可以有多个非聚簇索引。

表行为影响:

  • 聚簇索引:更新索引字段时可能导致整行移动,影响性能。
  • 非聚簇索引:更新索引字段通常只影响索引,不会移动数据行。

十四、主键默认是聚簇索引吗?有没有例外?

在关系型数据库中,主键通常会创建一个唯一且非空的索引,但这并不意味着主键默认就是聚簇索引。是否为主键建立聚簇索引取决于数据库管理系统(DBMS)的具体设计和配置。例如:

  • 在MySQL的InnoDB引擎中,主键默认是聚簇索引,数据行按照主键的值存储。
  • 而在Oracle中,没有明确的"聚簇索引"概念,但是有一个类似于主键聚簇的功能,可以通过创建CLUSTERED INDEX来实现。
  • SQL Server也允许选择是否将主键作为聚簇索引,如果不指定,系统可能会选择一个非聚簇索。

十五、如何创建聚簇索引?

创建聚簇索引的过程通常涉及数据库管理系统(DBMS)和SQL语句。以下是创建聚簇索引的基本步骤,以MySQL为例:

1)选择要索引的表:首先,你需要确定要在哪个表上创建聚簇索引。假设我们有一个名为Employees的表。

CREATE TABLE Employees (ID INT PRIMARY KEY,Name VARCHAR(50),Department VARCHAR(50),Salary DECIMAL(10,2)
);

在这个例子中,ID是默认的主键,但还没有定义为聚簇索引。

2)创建聚簇索引:使用ALTER TABLE命令并指定CLUSTERED关键字来创建聚簇索引。请注意,一个表只能有一个聚簇索引。

ALTER TABLE Employees 
MODIFY COLUMN ID INT PRIMARY KEY CLUSTERED;

在这个例子中,我们改变了ID列的定义,使其成为聚簇索引。现在,表中的数据将按照ID列的值排序和存储。

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

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

相关文章

碳视野 | 今后五年国家重点支持三类双碳项目!

一、政策背景 4月8日&#xff0c;国家发展改革委印发《节能降碳中央预算内投资专项管理办法》&#xff08;以下简称《办法》&#xff09;,明确了专项资金重点支持范围和标准&#xff0c;重点支持重点行业和重点领域节能降碳、循环经济助力降碳等方向&#xff0c;重点支持内容包…

vue开发过程中,修改了数据,但是页面不渲染,没变化!怎么办?

在做项目中遇到一个问题 对某个参数赋值成功后页面中没有改变 经过多方查阅终于解决这个问题 跟大家分享一下 希望可以帮到你 方法1&#xff08;推荐&#xff09;&#xff1a;用JSON.parse(JSON.stringify(objectOrArray)) 通常是某个渲染的数组改变了层级较深的数据导致页面…

学习ddd(一)-- 领域驱动设计相关概念

我之前一直对领域驱动设计(DDD)相关的知识有零散的认识,没有系统性地学习过。最近抽空系统地学习了一下,发现这块知识比较抽象,很难读懂。加上我自己的理解,我整理了一些知识,希望能够分享给大家 第一期先讲些了DDD的一些基础概念 充血模型 在我们以往的开发模式中,…

Seata框架实现分布式事务(一)CAP理论

1、什么是事务 事务是指一系列数据库操作&#xff0c;它们被看作是一个逻辑单元&#xff0c;并且要么全部成功地执行&#xff0c;要么全部失败地回滚到初始状态&#xff0c;以确保数据的一致性和完整性。事务具有以下四个特性&#xff0c;通常被称为 ACID 特性&#xff1a; 所…

VMware安装kylin系统

安装成功画面 1.点击如下链接&#xff0c;下载iso镜像 openKylin开源操作系统 选择图片中的镜像进行下载 此处一定要选择稍后安装系统

基于springboot+vue框架实现的环保网站+文档+免费远程调试

项目介绍&#xff1b; 基于java(springboot)框架实现的环保网站 系统包含两种角色:管理员、用户,系统分为前台和后台两大模块&#xff0c;主要功能如下。 前台功能: 1.首页:展示环保网站的最新动态、重要公告等信息。 2.濒危生物:提供濒危生物的相关信息以及保护措施。 3.…

unity获取所有子物体位置,再把获取到的位置重新随机分配给子物体(不含父物体)

unity获取所有子物体位置&#xff0c;再把获取到的位置重新随机分配给子物体&#xff08;不含父物体&#xff09; /// <summary> /// 给所有子物体随机分配位置 /// </summary> void RandomLocation() {// 获取当前物体下的所有子物体Transform[] childTransforms…

学习笔记——一些数据转换脚本(Python)

目录 文章目录 目录学习笔记——一些数据转换脚本&#xff08;Python&#xff09;json2YOLO&#xff08;txt&#xff09;VOC&#xff08;xml&#xff09;2YOLO&#xff08;txt&#xff09;image2h5json2npz 学习笔记——一些数据转换脚本&#xff08;Python&#xff09; 注&…

洛谷【入门1】顺序结构

洛谷【入门1】顺序结构 Hello,World!题目描述样例 #1样例输入 #1样例输出 #1 输出字符菱形题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 超级玛丽游戏题目背景题目描述输入格式输出格式 AB Problem题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 字…

C语言经典例题(23) --- 2的n次方计算、按照格式输入并交换输出、字符转ASCII码、计算机表达式的值、计算带余除法

文章目录 1.2的n次方计算2.按照格式输入并交换输出3.字符转ASCII码4.计算机表达式的值5.计算带余除法 1.2的n次方计算 题目描述&#xff1a; 不用累计乘法的基础上&#xff0c;通过移位运算&#xff08;<<&#xff09;实现2的n次方的计算。 输入描述: 多组输入&#x…

常用特征分箱算法

特征分箱是构建信用评分过程中最重要的一个环节。特征分箱是对连续变量离散化的一种简称&#xff0c;对于连续型变量&#xff0c;需要对其连续值进行拆分&#xff0c;并进行后续的分箱调整工作&#xff1b; 对于离散型变量&#xff0c;通常要根据每个离散值计算其坏样本占比或…

创新实训2024.04.11日志:self-instruct生成指令

1. 参考文献 代码&#xff1a;https://github.com/yizhongw/self-instruct论文&#xff1a;https://arxiv.org/abs/2212.10560 2. 前沿论文阅读 2.1. self-instruct技术的优势 作者在文章中提到&#xff1a; The recent NLP literature has witnessed a tremendous amount …

flex吃干抹净

Flex 布局是什么&#xff1f; Flex 是 Flexible Box 的缩写&#xff0c;意为"弹性布局"&#xff0c;用来为盒状模型提供最大的灵活性。 .box{display: flex;//行内元素也可以使用flex布局//display: inline-flex; }display: flex; 使元素呈现为块级元素&#xff0c;…

nvm设置淘宝镜像

前端安装完 node 后&#xff0c;最好设置下淘宝的镜像源&#xff0c;不建议使用 cnpm&#xff08;可能会出现奇怪的问题&#xff09; npm config set registry https://registry.npmmirror.com 旧版不能用&#xff1a;npm config set registry https://registry.npm.taobao.org…

CentOS版本不同大小的各个版本区别

Everything版&#xff1a;这个版本包含了CentOS的所有软件组件&#xff0c;因此其体积相对较大&#xff0c;高达7G&#xff0c;甚至10G。它为用户提供了全面的软件包选择&#xff0c;无需再额外下载其他组件。DVD版&#xff1a;这个版本是CentOS的常用版本&#xff0c;也被称为…

时光清浅,百事从欢

裙身主图案采用寓意丰富的石榴印花石榴花开红火&#xff0c;枝叶茂盛恰好契合“时来运转”的主题希望宝贝们都能如石榴般坚韧生长&#xff0c;好运连连裙型设计深蕴国风美学&#xff0c;融合现代剪裁工艺将古典韵味与时尚元素完美交融领口处巧妙运用中式立领设计既保留了传统服…

SketchBook2014 下载地址及安装教程

SketchBook是一款专业级别的绘图与绘画软件。它提供了丰富的绘画工具和创意功能&#xff0c;适用于艺术家、插画师、设计师和数字艺术爱好者。SketchBook具有直观的用户界面&#xff0c;简单而强大的绘制工具&#xff0c;能够帮助用户在数字平台上创造出精美的艺术作品。 Sket…

【软件测试之因果图法】

【软件测试之判断表法】(蓝桥课学习笔记) 1、因果图法的概念 因果图法是一种利用图解法分析输入的各种组合情况&#xff0c;从而设计测试用例的方法&#xff0c;它适合于检查程序输入条件的各种情况的组合。因果图&#xff08;Cause-Effect-Graphing&#xff09;提供了把规则转…

水电智能远程抄表系统

水电智能远程抄表系统是一种应用先进技术实现水电抄表的智能化管理系统&#xff0c;通过远程抄表、数据传输和智能分析&#xff0c;实现了对水电使用情况的实时监测和管理。本文将从系统特点、构成以及带来的效益三个方面展开介绍。 系统特点 1.远程抄表&#xff1a;系统能够…

详解Qt元对象系统

Qt库作为一款流行的跨平台C应用程序开发框架&#xff0c;其中的元对象系统是其核心特性之一。Qt元对象系统不仅提供了诸如信号槽&#xff08;Signals & Slots&#xff09;、属性系统&#xff08;Property System&#xff09;等功能&#xff0c;还实现了对C对象的运行时类型…