网页设计与网站建设全攻略华为十大外包公司排名

bicheng/2026/1/22 20:52:28/文章来源:
网页设计与网站建设全攻略,华为十大外包公司排名,cms智能云平台,用友erp软件Spring Data JPA 的最大特色是利用方法名定义查询方法#xff08;Defining Query Methods#xff09;来做 CRUD 操作#xff0c;这一课时我将围绕这个内容来详细讲解。 在工作中#xff0c;你是否经常为方法名的语义、命名规范而发愁#xff1f;是否要为不同的查询条件写…Spring Data JPA 的最大特色是利用方法名定义查询方法Defining Query Methods来做 CRUD 操作这一课时我将围绕这个内容来详细讲解。 在工作中你是否经常为方法名的语义、命名规范而发愁是否要为不同的查询条件写各种的 SQL 语句是否为同一个实体的查询写一个超级通用的查询方法或者 SQL如果其他开发同事不查看你写的 SQL 语句而直接看方法名的话却不知道你想查什么而郁闷 Spring Data JPA 的 Defining Query MethodsDQM通过方法名和参数可以很好地解决上面的问题也能让我们的方法名的语义更加清晰开发效率也会提升很多。DQM 语法共有 2 种可以实现上面的那些问题具体如下 一种是直接通过方法名就可以实现这也是本课时会详细介绍的重点内容另一种是 Query 手动在方法上定义这将在第 05 课时“Query 帮我们解决了什么问题什么时候应该选择 Query?”中详细介绍。 下面我将从 6 个方面来详细讲解 Defining Query Methods。先来分析一下“定义查询方法的配置和使用方法”这个是 Defining Query Methods 中必须要掌握的语法。 定义查询方法的配置和使用方法 若想要实现 CRUD 的操作常规做法是写一大堆 SQL 语句。但在 JPA 里面只需要继承 Spring Data Common 里面的任意 Repository 接口或者子接口然后直接通过方法名就可以实现神不神奇来看下面具体的使用步骤。 第 1 步User 实体的 UserRepository 继承 Spring Data Common 里面的 Repository 接口 复制代码 interface UserRepository extends CrudRepositoryUser, Long {User findByEmailAddress(String emailAddress); }第 2 步对于 Service 层就可以直接使用 UserRepository 接口 复制代码 Service public class UserServiceImpl{AutowiredUserRepository userRepository;public void testJpa() {userRepository.deleteAll();userRepository.findAll();userRepository.findByEmailAddress(zjk126.com);}这个时候就可以直接调用 CrudRepository 里面暴露的所有接口方法以及 UserRepository 里面定义的方法不需要写任何 SQL 语句也不需要写任何实现方法。通过上面的两步我们完成了 Defining Query MethodsDQM的基本使用下面来看另外一种情况选择性暴露方法。 然而有时如果不想暴露 CrudRepository 里面的所有方法那么可以直接继承我们认为需要暴露的那些方法的接口。假如 UserRepository 只想暴露 findOne 和 save除了这两个方法之外不允许任何的 User 操作其做法如下。 我们选择性地暴露 CRUD 方法直接继承Repository因为这里面没有任何方法把CrudRepository 里面的 save 和 findOne 方法复制到我们自己的 MyBaseRepository 接口即可代码如下 复制代码 NoRepositoryBean interface MyBaseRepositoryT, ID extends Serializable extends RepositoryT, ID {T findOne(ID id); T save(T entity); } interface UserRepository extends MyBaseRepositoryUser, Long {User findByEmailAddress(String emailAddress); }这样在 Service 层就只有 findOne、save、findByEmailAddress 这 3 个方法可以调用不会有更多方法了我们可以对 SimpleJpaRepository 里面任意已经实现的方法做选择性暴露。 综上所述得出以下 2 点结论 MyRepository Extends Repository 接口可以实现 Defining Query Methods 的功能继承其他 Repository 的子接口或者自定义子接口可以选择性地暴露 SimpleJpaRepository 里面已经实现的基础公用方法。 在平时的工作中你可以通过方法名或者定义方法名上面添加 Query 注解两种方式来实现 CRUD 的目的而 Spring 给我们提供了两种切换方式。接下来我们就讲讲“方法的查询策略设置”。 方法的查询策略设置 目前在实际生产中还没有遇到要修改默认策略的情况但我们必须要知道有这样的配置方法做到心中有数这样我们才能知道为什么方法名可以Query 也可以。通过 EnableJpaRepositories 注解来配置方法的查询策略详细配置方法如下 复制代码 EnableJpaRepositories(queryLookupStrategy QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND)其中QueryLookupStrategy.Key 的值共 3 个具体如下 Create直接根据方法名进行创建规则是根据方法名称的构造进行尝试一般的方法是从方法名中删除给定的一组已知前缀并解析该方法的其余部分。如果方法名不符合规则启动的时候会报异常这种情况可以理解为即使配置了 Query 也是没有用的。USE_DECLARED_QUERY声明方式创建启动的时候会尝试找到一个声明的查询如果没有找到将抛出一个异常可以理解为必须配置 Query。CREATE_IF_NOT_FOUND这个是默认的除非有特殊需求可以理解为这是以上 2 种方式的兼容版。先用声明方式Query进行查找如果没有找到与方法相匹配的查询那用 Create 的方法名创建规则创建一个查询这两者都不满足的情况下启动就会报错。 以 Spring Boot 项目为例更改其配置方法如下 复制代码 EnableJpaRepositories(queryLookupStrategy QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND) public class Example1Application {public static void main(String[] args) {SpringApplication.run(Example1Application.class, args);} }以上就是方法的查询策略设置很简单。接下来我们再讲讲“Defining Query MethodDQM语法”这是可以让方法生效的详细语法。 Defining Query MethodDQM语法 该语法是带查询功能的方法名由查询策略关键字 查询字段 一些限制性条件组成具有语义清晰、功能完整的特性我们实际工作中 80% 的 API 查询都可以简单实现。 我们来看一个复杂点的例子这是一个 and 条件更多、distinct or 排序、忽略大小写的例子。下面代码定义了 PersonRepository我们可以在 service 层直接使用如下所示 复制代码 interface PersonRepository extends RepositoryUser, Long {// and 的查询关系ListUser findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);// 包含 distinct 去重or 的 sql 语法ListUser findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);// 根据 lastname 字段查询忽略大小写ListUser findByLastnameIgnoreCase(String lastname);// 根据 lastname 和 firstname 查询 equal 并且忽略大小写ListUser findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname); // 对查询结果根据 lastname 排序正序ListUser findByLastnameOrderByFirstnameAsc(String lastname);// 对查询结果根据 lastname 排序倒序ListUser findByLastnameOrderByFirstnameDesc(String lastname); }下面表格是一个我们在上面 DQM 方法语法里常用的关键字列表方便你快速查阅并满足在实际代码中更加复杂的场景 综上总结 3 点经验 方法名的表达式通常是实体属性连接运算符的组合如 And、or、Between、LessThan、GreaterThan、Like 等属性连接运算表达式不同的数据库NoSQL、MySQL可能产生的效果不一样如果遇到问题我们可以打开 SQL 日志观察。IgnoreCase 可以针对单个属性如 findByLastnameIgnoreCase(…)也可以针对查询条件里面所有的实体属性忽略大小写所有属性必须在 String 情况下如 findByLastnameAndFirstnameAllIgnoreCase(…)。OrderBy 可以在某些属性的排序上提供方向Asc 或 Desc称为静态排序也可以通过一个方便的参数 Sort 实现指定字段的动态排序的查询方法如 repository.findAll(Sort.by(Sort.Direction.ASC, “myField”))。 我们看到上面的表格虽然大多是 find 开头的方法除此之外JPA 还支持read、get、query、stream、count、exists、delete、remove等前缀如字面意思一样。我们来看看 count、delete、remove 的例子其他前缀可以举一反三。实例代码如下 复制代码 interface UserRepository extends CrudRepositoryUser, Long {long countByLastname(String lastname);//查询总数long deleteByLastname(String lastname);//根据一个字段进行删除操作并返回删除行数ListUser removeByLastname(String lastname);//根据Lastname删除一堆User,并返回删除的User }有的时候随着版本的更新也会有更多的语法支持或者不同的版本语法可能也不一样我们通过源码来看一下上面说的几种语法。感兴趣的同学可以到类 org.springframework.data.repository.query.parser.PartTree 查看相关源码的逻辑和处理方法关键源码如下 根据源码我们也可以分析出来query method 包含其他的表达式比如 find、count、delete、exist 等关键字在 by 之前通过正则表达式匹配。 由此可知我们方法中的关键字不是乱填的是枚举帮我们定义好的。接下来打开枚举类 Type 源码看下比什么都清楚。 复制代码 public static enum Type {BETWEEN(2, new String[]{IsBetween, Between}),IS_NOT_NULL(0, new String[]{IsNotNull, NotNull}),IS_NULL(0, new String[]{IsNull, Null}),LESS_THAN(new String[]{IsLessThan, LessThan}),LESS_THAN_EQUAL(new String[]{IsLessThanEqual, LessThanEqual}),GREATER_THAN(new String[]{IsGreaterThan, GreaterThan}),GREATER_THAN_EQUAL(new String[]{IsGreaterThanEqual, GreaterThanEqual}),BEFORE(new String[]{IsBefore, Before}),AFTER(new String[]{IsAfter, After}),NOT_LIKE(new String[]{IsNotLike, NotLike}),LIKE(new String[]{IsLike, Like}),STARTING_WITH(new String[]{IsStartingWith, StartingWith, StartsWith}),ENDING_WITH(new String[]{IsEndingWith, EndingWith, EndsWith}),IS_NOT_EMPTY(0, new String[]{IsNotEmpty, NotEmpty}),IS_EMPTY(0, new String[]{IsEmpty, Empty}),NOT_CONTAINING(new String[]{IsNotContaining, NotContaining, NotContains}),CONTAINING(new String[]{IsContaining, Containing, Contains}),NOT_IN(new String[]{IsNotIn, NotIn}),IN(new String[]{IsIn, In}),NEAR(new String[]{IsNear, Near}),WITHIN(new String[]{IsWithin, Within}),REGEX(new String[]{MatchesRegex, Matches, Regex}),EXISTS(0, new String[]{Exists}),TRUE(0, new String[]{IsTrue, True}),FALSE(0, new String[]{IsFalse, False}),NEGATING_SIMPLE_PROPERTY(new String[]{IsNot, Not}),SIMPLE_PROPERTY(new String[]{Is, Equals}); ....}看源码就可以知道框架支持了哪些逻辑关键字比如 NotIn、Like、In、Exists 等有的时候比查文档和任何人写的博客都准确、还快。好了上面介绍了方面名的基本表达方式希望你可以在工作中灵活运用举一反三。接下来我们讲讲特定类型的参数Sort 排序和 Pageable 分页这是分页和排序必备技能。 特定类型的参数Sort 排序和 Pageable 分页 Spring Data JPA 为了方便我们排序和分页支持了两个特殊类型的参数Sort 和 Pageable。 Sort 在查询的时候可以实现动态排序我们看下其源码 复制代码 public Sort(Direction direction, String... properties) {this(direction, properties null ? new ArrayList() : Arrays.asList(properties)); }Sort 里面决定了我们哪些字段的排序方向ASC 正序、DESC 倒序。 Pageable 在查询的时候可以实现分页效果和动态排序双重效果我们看下 Pageable 的 Structure如下图所示 我们发现 Pageable 是一个接口里面有常见的分页方法排序、当前页、下一行、当前指针、一共多少页、页码、pageSize 等。 在查询方法中如何使用 Pageable 和 Sort 呢下面代码定义了根据 Lastname 查询 User 的分页和排序的实例此段代码是在 UserRepository 接口里面定义的方法 复制代码 PageUser findByLastname(String lastname, Pageable pageable);//根据分页参数查询User返回一个带分页结果的Page(下一课时详解)对象方法一 SliceUser findByLastname(String lastname, Pageable pageable);//我们根据分页参数返回一个Slice的user结果方法二 ListUser findByLastname(String lastname, Sort sort);//根据排序结果返回一个List方法三 ListUser findByLastname(String lastname, Pageable pageable);//根据分页参数返回一个List对象方法四方法一允许将 org.springframework.data.domain.Pageable 实例传递给查询方法将分页参数添加到静态定义的查询中通过 Page 返回的结果得知可用的元素和页面的总数。这种分页查询方法可能是昂贵的会默认执行一条 count 的 SQL 语句所以用的时候要考虑一下使用场景。 方法二返回结果是 Slice因为只知道是否有下一个 Slice 可用而不知道 count所以当查询较大的结果集时只知道数据是足够的也就是说用在业务场景中时不用关心一共有多少页。 方法三如果只需要排序需在 org.springframework.data.domain.Sort 参数中添加一个参数正如上面看到的只需返回一个 List 也是有可能的。 方法四排序选项也通过 Pageable 实例处理在这种情况下Page 将不会创建构建实际实例所需的附加元数据即不需要计算和查询分页相关数据而仅仅用来做限制查询给定范围的实体。 那么如何使用呢我们再来看一下源码也就是 Pageable 的实现类如下图所示 由此可知我们可以通过 PageRequest 里面提供的几个 of 静态方法多态分别构建页码、页面大小、排序等。我们来看下在使用中的写法如下所示 复制代码 //查询user里面的lastnamejk的第一页每页大小是20条并会返回一共有多少页的信息 PageUser users userRepository.findByLastname(jk,PageRequest.of(1, 20)); //查询user里面的lastnamejk的第一页的20条数据不知道一共多少条 SliceUser users userRepository.findByLastname(jk,PageRequest.of(1, 20)); //查询出来所有的user里面的lastnamejk的User数据并按照name正序返回List ListUser users userRepository.findByLastname(jk,new Sort(Sort.Direction.ASC, name)) //按照createdAt倒序查询前一百条User数据 ListUser users userRepository.findByLastname(jk,PageRequest.of(0, 100, Sort.Direction.DESC, createdAt));上面讲解了分页和排序的应用场景在实际工作中如果遇到不知道参数怎么传递的情况可以看一下源码因为 Java 是类型安全的。接下来讲解“限制查询结果 First 和 Top”这是分页的另一种表达方式。 限制查询结果 First 和 Top 有的时候我们想直接查询前几条数据也不需要动态排序那么就可以简单地在方法名字中使用 First 和 Top 关键字来限制返回条数。 我们来看看 userRepository 里面可以定义的一些限制返回结果的使用。在查询方法上加限制查询结果的关键字 First 和 Top。 复制代码 User findFirstByOrderByLastnameAsc(); User findTopByOrderByAgeDesc(); ListUser findDistinctUserTop3ByLastname(String lastname, Pageable pageable); ListUser findFirst10ByLastname(String lastname, Sort sort); ListUser findTop10ByLastname(String lastname, Pageable pageable);其中 查询方法在使用 First 或 Top 时数值可以追加到 First 或 Top 后面指定返回最大结果的大小如果数字被省略则假设结果大小为 1限制表达式也支持 Distinct 关键字支持将结果包装到 Optional 中下一课时详解。如果将 Pageable 作为参数以 Top 和 First 后面的数字为准即分页将在限制结果中应用。 First 和 Top 关键字的使用非常简单可以让我们的方法名语义更加清晰。接下来讲讲 NULL 的情况作了哪些支持。 NonNull、NonNullApi、Nullable 从 Spring Data 2.0 开始JPA 新增了NonNull NonNullApi Nullable是对 null 的参数和返回结果做的支持。 NonNullApi在包级别用于声明参数以及返回值的默认行为是不接受或产生空值的。NonNull用于不能为空的参数或返回值在 NonNullApi 适用的参数和返回值上不需要。Nullable用于可以为空的参数或返回值。 我在自己的 Repository 所在 package 的 package-info.java 类里面做如下声明 复制代码 org.springframework.lang.NonNullApi package com.myrespository;myrespository 下面的 UserRepository 实现如下 复制代码 package com.myrespository; import org.springframework.lang.Nullable; interface UserRepository extends RepositoryUser, Long {User getByEmailAddress(EmailAddress emailAddress); }这个时候当 emailAddress 参数为 null 的时候就会抛异常当返回结果为 null 的时候也会抛异常。因为我们在package 的 package-info.java里面指定了NonNullApi所有返回结果和参数不能为 Null。 复制代码 NullableUser findByEmailAddress(Nullable EmailAddress emailAdress);//当我们添加Nullable 注解之后参数和返回结果这个时候就都会允许为 null 了OptionalUser findOptionalByEmailAddress(EmailAddress emailAddress); //返回结果允许为 null,参数不允许为 null 的情况以上就是对 Defining Query Methods 的方法名和分页参数整体学习了。 给我们的一些思考 我们学习了 Defining Query Methods 的语法和其所表达的命名规范在实际工作中也可以将方法名非常语义化的 respository 里面所定义方法命名规范的强制约定规范运用到 controller 和 service 层这样全部统一后可以减少很多的沟通成本。 Spring Data Common 里面的 repository 基类我们是否可以应用推广到 service 层呢能否也建立一个自己的 baseService我们来看下面的实战例子 复制代码 public interface BaseServiceT, ID {ClassT getDomainClass();S extends T S save(S entity);S extends T ListS saveAll(IterableS entities);void delete(T entity);void deleteById(ID id);void deleteAll();void deleteAll(Iterable? extends T entities);void deleteInBatch(IterableT entities);void deleteAllInBatch();T getOne(ID id);S extends T OptionalS findOne(ExampleS example);OptionalT findById(ID id);ListT findAll();ListT findAll(Sort sort);PageT findAll(Pageable pageable);S extends T ListS findAll(ExampleS example);S extends T ListS findAll(ExampleS example, Sort sort);S extends T PageS findAll(ExampleS example, Pageable pageable);ListT findAllById(IterableID ids);long count();S extends T long count(ExampleS example);S extends T boolean exists(ExampleS example);boolean existsById(ID id);void flush();S extends T S saveAndFlush(S entity); }我们模仿JpaRepository接口也自定义了一个自己的BaseService声明了常用的CRUD操作上面的代码是生产代码可以作为参考。当然了我们也可以建立自己的 PagingAndSortingService、ComplexityService、SampleService 等来划分不同的 service接口供不同目的 Service 子类继承。 我们再来模仿一个 SimpleJpaRepository来实现自己的 BaseService 的实现类。 复制代码 public class BaseServiceImplT, ID, R extends JpaRepositoryT, ID implements BaseServiceT, ID {private static final MapClass, Class DOMAIN_CLASS_CACHE new ConcurrentHashMap();private final R repository;public BaseServiceImpl(R repository) {this.repository repository;}Overridepublic ClassT getDomainClass() {Class thisClass getClass();ClassT domainClass DOMAIN_CLASS_CACHE.get(thisClass);if (Objects.isNull(domainClass)) {domainClass GenericsUtils.getGenericClass(thisClass, 0);DOMAIN_CLASS_CACHE.putIfAbsent(thisClass, domainClass);}return domainClass;}protected R getRepository() {return repository;}Overridepublic S extends T S save(S entity) {return repository.save(entity);}Overridepublic S extends T ListS saveAll(IterableS entities) {return repository.saveAll(entities);}Overridepublic void delete(T entity) {repository.delete(entity);}Overridepublic void deleteById(ID id) {repository.deleteById(id);}Overridepublic void deleteAll() {repository.deleteAll();}Overridepublic void deleteAll(Iterable? extends T entities) {repository.deleteAll(entities);}Overridepublic void deleteInBatch(IterableT entities) {repository.deleteInBatch(entities);}Overridepublic void deleteAllInBatch() {repository.deleteAllInBatch();}Overridepublic T getOne(ID id) {return repository.getOne(id);}Overridepublic S extends T OptionalS findOne(ExampleS example) {return repository.findOne(example);}Overridepublic OptionalT findById(ID id) {return repository.findById(id);}Overridepublic ListT findAll() {return repository.findAll();}Overridepublic ListT findAll(Sort sort) {return repository.findAll(sort);}Overridepublic PageT findAll(Pageable pageable) {return repository.findAll(pageable);}Overridepublic S extends T ListS findAll(ExampleS example) {return repository.findAll(example);}Overridepublic S extends T ListS findAll(ExampleS example, Sort sort) {return repository.findAll(example, sort);}Overridepublic S extends T PageS findAll(ExampleS example, Pageable pageable) {return repository.findAll(example, pageable);}Overridepublic ListT findAllById(IterableID ids) {return repository.findAllById(ids);}Overridepublic long count() {return repository.count();}Overridepublic S extends T long count(ExampleS example) {return repository.count(example);}Overridepublic S extends T boolean exists(ExampleS example) {return repository.exists(example);}Overridepublic boolean existsById(ID id) {return repository.existsById(id);}Overridepublic void flush() {repository.flush();}Overridepublic S extends T S saveAndFlush(S entity) {return repository.saveAndFlush(entity);} }以上代码就是 BaseService 常用的 CURD 实现代码我们这里面大部分也是直接调用 Repository 提供的方法。需要注意的是当继承 BaseServiceImpl 的时候需要传递自己的 Repository如下面实例代码 复制代码 Service public class UserServiceImpl extends BaseServiceImplUser, Long, UserRepository implements UserService {public UserServiceImpl(UserRepository repository) {super(repository);}..... }实战思考只是提供一种常见的实现思路你也可以根据实际情况进行扩展和扩充。

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

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

相关文章

网站建设加关键词是什么意思网站大全下载软件安装

避开-转义字符 python文件路径导致的错误常常与“\”有关,因为在路径中的“\”常会被误认为转义字符。 所以在上述路径中,\table\name\rain中的\t,\n,\r都易被识别为转义字符。 解决的办法主要由以下三种: #1 前面加r表示不转义 pathr&quo…

长泰网站建设深圳营销网站建设模板

到了年底,今年不管经济如何,形势多么不好,这个月也要结束2023年了,在这个阶段最关键的是做好今年的总结以及明年的计划。 总结是为了更好地做明年的计划和形势的预判。 借用数据表作为工具,科学理性地对自身公司的经…

河南网站建设培训建一个网络商城的网站素材搜集预算是什么

C++ 标准库里的容器是线程不安全的,在多线程下使用容器时,需要实现线程安全的容器。本篇博客介绍C++实现线程安全的map。 在C++中实现一个线程安全的map通常涉及到使用互斥锁(例如std::mutex)来确保在多线程环境中对map的访问是串行化的,从而避免竞态条件和数据损坏。以下…

用wordpress搭建知名网站做网站必须要dreamever

学生霸凌不仅直接伤害到被霸凌者的身心健康,也对整个校园的和谐氛围构成了威胁。为了应对这一问题,校园防欺凌系统应运而生,成为维护校园安全、保护学生权益的重要工具。那么当校园防欺凌系统面对学生霸凌时,该如何有效应对呢&…

什么网站做玩具的外贸网站管理和维护的主要工作有哪些

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 线上有一个Goland的应用程序,goland语言和java不同,如果有任何异常就直接挂掉退出,异常处理要实现 try catch也比较麻烦…

金融 网站建设营销型网站报价

10月25日,Coremail邮件安全联合北京中睿天下信息技术有限公司发布《2023年第三季度企业邮箱安全性研究报告》。2023年第三季度企业邮箱安全呈现出何种态势?作为邮箱管理员,我们又该如何做好防护? 以下为精华版阅读,如需…

wordpress英文站群郑州网站建设的软件

适用背景&#xff1a; 用自己电脑修改代码&#xff0c;使用实验室/公司的服务器炼丹的朋友 优势&#xff1a; 本地 <--> 服务器&#xff0c;实时同步&#xff0c;省去文件传输的步骤 本地改 -> 自动同步到服务器 -> 服务器跑代码 -> 一键同步回本地&#xff…

手机商城网站建设设计方案东莞数据线厂家东莞网站建设

条款 49&#xff1a;了解 new-handler 的行为 当operator new无法满足某一内存分配需求时&#xff0c;会不断调用一个客户指定的错误处理函数&#xff0c;即所谓的 new-handler&#xff0c;直到找到足够内存为止 new-handler 是一个 typedef&#xff0c;指向一个无参数值无返回…

快速收录网站内页html网页制作成品

前言 BOP是6D位姿估计基准&#xff0c;汇总整理了多个数据集&#xff0c;还举行挑战赛&#xff0c;相关报告被CVPR2024接受和认可。 它提供3D物体模型和RGB-D图像&#xff0c;其中标注信息包括6D位姿、2D边界框和2D蒙版等。 包含数据集&#xff1a;LM 、LM-O 、T-LESS 、IT…

武义建设局网站长沙网站建设多少钱

在nextjs项目中&#xff0c;发现两个组件没啥关系&#xff0c;例如一个是一直存在的头部组件&#xff0c;另一个是页面中的组件&#xff0c;当我点击头部组件中的特定按钮时&#xff0c;把数据传递到页面组件中&#xff0c;页面组件接受到canshu数据后在做其他操作&#xff0c;…

添加网站关键词华为认证培训机构排行榜

在大数据时代&#xff0c;我们每天都在生成和处理海量数据。但数据本身&#xff0c;如果没有适当的上下文和描述&#xff0c;就像是一堆没有翻译的古老文字。这就是元数据发挥作用的地方——它是大数据世界的罗塞塔石碑&#xff0c;为我们提供了理解和利用数据的关键。 文章目录…

广东电商网站建设网站建设工作会议上的讲话

现代实时应用的复杂性和需求不断增加&#xff0c;需要强大而可靠的通信系统。正如本系列第一部分所述&#xff0c;这些应用涵盖从秒到毫秒的广泛响应时间要求&#xff0c;它们的成功通常取决于其响应的精确时间。因此&#xff0c;所选的通信系统必须能够满足这些严格的时序限制…

游戏门户网站模板建设银行网站查询密码

目录1、使用 Java 来控制 Windows 系统音量&#xff0c;使用 JNA 调用 windows 底层 API 因为有点麻烦&#xff0c;所以这里采用纯 Java API结合 VBS 脚本的方式进行控制。2、可以参考《VBS 控制 Windos 系统音量 及视频播放》&#xff0c;本文同样是利用 VBS 来控制&#xff0…

莱芜关于网站建设的公司北京制作网站的公司简介

path模块 path 模块提供了 操作路径 的功能&#xff0c;将介绍如下几个较为常用的几个 API&#xff1a; API说明path.resolve拼接规范的绝对路径 常用path.sep获取操作系统的路径分隔符path.parse解析路径并返回对象path.basename获取路径的基础名称path.dirname获取路径的目…

网站备案升级如何做网站后台管理

本章主要说一下模拟实现string类的部分功能&#xff0c;文章末附上所有代码。 目录 一、构造函数与析构函数 二、拷贝构造 三、c_str 四、【】和迭代器的遍历与访问 五、size 六、判断 七、reserve 八、push_back 九、resize 十、append 十一、 十二、insert 十…

高端企业网站建设服务商qq音乐的网站建设信息

你们知道在W7中怎么设置鼠标的滚轮吗?下面是小编带来的关于win7如何设置鼠标滚轮的内容&#xff0c;欢迎阅读!Win7设置滚轮方法一&#xff1a;首先要在电脑的左下角点击开始按钮点击开始按钮以后出现上拉菜单&#xff0c;在菜单上面点击控制面板点击控制面板以后进入到控制面板…

简述网站建设流程网站开发项目规划书

hdvp:外部函数文件&#xff0c;函数定义在hdvp中可以传输给任何hdev使用&#xff0c;即可以发给别人使用。同时允许对hdvp进行加密

东莞网站建设工作室我要用新浪云做网站

引言 记录一次线上redis占用过大的排查过程&#xff0c;供后续参考 问题背景 测试同事突然反馈测试环境的web系统无法登陆&#xff0c;同时发现其他子系统也存在各类使用问题 排查过程 1、因为首先反馈的是测试环境系统无法登陆&#xff0c;于是首先去查看了登陆功能的报错…

龙岗网站-建设深圳信科工程建设室内涂料招投标网站

引言 分布式系统中的多个节点经常需要对共享资源进行并发访问&#xff0c;若没有有效的协调机制&#xff0c;可能会导致数据竞争、资源冲突等问题。分布式锁应运而生&#xff0c;它是一种保证在分布式环境中多个节点可以安全地访问共享资源的机制。而在Redis中&#xff0c;使用…

免费下载软件的网站有哪些wordpress s3插件

最近要做一个应用要实现本地化&#xff0c;因为使用的是xcode4&#xff0c;应用程序本地化的问题跟以前的版本还是有些不同&#xff0c;在网上找了些资料对于xcode4以上的版本资料还是相对较少&#xff0c;有些最后要通过手动创建文件&#xff0c;这样操作实在是太麻烦&#xf…