小编ip6*_*696的帖子

LiveData的Android测试

我有这个模拟课:

class MockCategoriesRepository implements CategoriesRepository {
        @Override
        public LiveData<List<Category>> getAllCategories() {
            List<Category> categories = new ArrayList<>();
            categories.add(new Category());
            categories.add(new Category());
            categories.add(new Category());
            MutableLiveData<List<Category>> liveData = new MutableLiveData<>();
            liveData.setValue(categories);
            return liveData;
        }
    }
Run Code Online (Sandbox Code Playgroud)

和测试:

@Test
public void getAllCategories() {
    CategoriesRepository categoriesRepository = new MockCategoriesRepository();
    LiveData<List<Category>> allCategories = categoriesRepository.getAllCategories();
}
Run Code Online (Sandbox Code Playgroud)

我想测试List<Category>空.

我该怎么做?我可以使用Mockito吗?

android android-testing android-livedata

7
推荐指数
1
解决办法
4404
查看次数

获取Spring存储库中的Pageable自定义查询的总计数行数

我实现这样的分页:

List<Products> products = productRepository.findAllProducts(productsRequest.getInitiatorType(), "ACTIVE",
      new PageRequest(page, 100, Sort.Direction.DESC, "insertDate"));
Run Code Online (Sandbox Code Playgroud)

但是如何获得此查询的总大小?只复制这样的查询?

  @Query("SELECT t FROM Products t WHERE t.isApproved = true AND t.partnerId = ?1 AND t.categories.status = ?2")
  List<OpcClProducts> findAllOpcClProducts(String senderId, String status, Pageable pageable);


  @Query("SELECT COUNT(t) FROM Products t WHERE t.isApproved = true AND t.partnerId = ?1 AND t.categories.status = ?2")
  long getTotalCount(String senderId, String status);
Run Code Online (Sandbox Code Playgroud)

并调用2个查询:for totalCount和数据?

java pagination spring-data-jpa spring-repositories

7
推荐指数
1
解决办法
5997
查看次数

如何使用dagger 2创建ViewModel并将存储库注入其中?

我尝试了解ViewModel.我创建了ViewModel:

public class UsersViewModel extends ViewModel {

    private final UsersRepository usersRepository;

    public UsersViewModel(UsersRepository usersRepository) {
        this.usersRepository = usersRepository;
    }

    public LiveData<List<User>> loadAll() {
        return usersRepository.getAll();
    }

}
Run Code Online (Sandbox Code Playgroud)

但我不明白两件事:

  1. 我怎么能注入UsersRepository 这个VievModel?当我使用演示者时,我可以用匕首2创建它,如下所示:
@Module
public class PresentersModule {

    @Singleton
    @Provides
    UsersPresenter provideUsersPresenter(UsersRepository usersRepository) {
        return new UsersPresenter(usersRepository);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我怎么能这样做呢ViewModel?像这样?

@Module
public class ViewModelsModule {

    @Singleton
    @Provides
    UsersViewModel provideUsersViewModel(UsersRepository usersRepository) {
        return new UsersViewModel(usersRepository);
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 如何在片段中获取此ViewModel?有了演示者,我可以这样:

    presenter = MyApplication.get().getAppComponent().getUsersPresenter();

android viewmodel dagger-2

7
推荐指数
1
解决办法
3254
查看次数

如何使用 spring boot + .yaml 创建配置文件?

我有带有 2 个属性文件的 Spring Boot 服务器:application-local.propertiesapplication-test.properties

在每个文件中,我都有用于开发机器和测试的配置。像这样开始:

-Dspring.profiles.active=local
Run Code Online (Sandbox Code Playgroud)

但是在新的 Spring Boot 项目中,我使用了.yaml配置文件。而且我不明白如何使用profileswith .yaml. 我尝试阅读文档,但什么也不懂。你能一步一步解释该怎么做吗?

我需要两个文件?

application-local.yamlapplication-test.yaml

或者我需要在一个application.yaml文件中写入所有内容?如果在一个文件中,我如何分离配置?这是我的配置:

server:
  path: ***
  port: ***

cxf:
  path: ***

spring.datasource:
  type: com.zaxxer.hikari.HikariDataSource
  driver-class-name: oracle.jdbc.OracleDriver
  url: ***
  username: ***
  password: ***
  hikari:
    minimumIdle: 5
    maximumPoolSize: 20
    idleTimeout: 30000
    poolName: SpringBootJPAHikariCP
    maxLifetime: 2000000
    connectionTimeout: 30000
    connection-test-query: SELECT 1 FROM DUAL

spring.jpa:
  show-sql: false
  database-platform: org.hibernate.dialect.Oracle10gDialect
  properties.hibernate.jdbc.batch_size: 30
  properties.hibernate.cache.use_second_level_cache: false
  hibernate:
    ddl-auto: validate


spring.cache:
  ehcache: …
Run Code Online (Sandbox Code Playgroud)

java yaml spring-boot

7
推荐指数
2
解决办法
1万
查看次数

如何清除ActiveAndroid中的所有表?

我的ActiveAndroid数据库中有大约20-30个表.当我按下logoutButton我要清除所有表格.我怎么能这样做ActiveAndroid

 public void logOut() {
     //clear all tables
 }
Run Code Online (Sandbox Code Playgroud)

android activeandroid

6
推荐指数
2
解决办法
3505
查看次数

Spring Boot 中@Async、@Scheduled 和线程池的正确使用

我写了很长时间的问题,很长。但我试图尽可能多地展示我做了什么,什么是不清楚的。请完成阅读并感谢您的耐心等待!

我尝试了很多实验,写了 spring doc spring doc,(在本站写问题)但还是没看懂全貌。

我有一项任务是在一个 spring-boot 服务器中实现一些调度程序。

  1. First Scheduler 将每 1 秒检查一次 DB 中的数据并运行一些逻辑。
  2. Second Scheduler 将每 10 毫秒向第三方服务发送一次请求。

South 调度程序必须与线程池一起使用并具有不同的设置。例如第一个 - 5 个线程,第二个 - 10 个线程。虽然我明白了,但我尝试了几个选项,最后还是糊涂了,我应该选择什么以及如何更正确地使用它:

为了测试,我创建了 2 个带有逻辑的 bean,并且每次都会从这个 bean 调用方法:

@Slf4j
@Component
public class TestBean {

    public void test(){
        try {
            Thread.sleep(9000L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        log.info("First bean print");
    }
}
Run Code Online (Sandbox Code Playgroud)

@Slf4j
@Component
public class TestBean2 {

    public void test(){
        try {
            Thread.sleep(9000L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } …
Run Code Online (Sandbox Code Playgroud)

java spring asynchronous scheduled-tasks threadpool

6
推荐指数
1
解决办法
3393
查看次数

如何使 BLOB 在 Oracle 和 PostgreSQL 上工作?

我有一个带有BLOB列的实体:

@Lob
@Column(name = "SRC")
private byte[] src;
Run Code Online (Sandbox Code Playgroud)

我的应用程序使用两个数据库:Oracle 和 PostgreSQL。当我按照上面所写的那样使用 Oracle 启动应用程序时,一切正常,但是当我使用 PostgreSQL 启动时,出现错误:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [src] in table [catalogs]; found [bytea (Types#BINARY)], but expecting [oid (Types#BLOB)]
Run Code Online (Sandbox Code Playgroud)

之后我在谷歌上阅读了文章和建议并修复了它:

@Lob
@Type(type="org.hibernate.type.BinaryType")
@Column(name = "SRC")
private byte[] src;
Run Code Online (Sandbox Code Playgroud)

现在它在 PostgreSQL 上工作得很好,但在 Oracle 上我遇到了异常:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [src] in table [catalogs]; found [blob (Types#BLOB)], but expecting [raw(255) (Types#VARBINARY)]
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能使其在两个数据库上都工作?

PS我对CLOB也有类似的问题

java oracle postgresql hibernate jpa

6
推荐指数
1
解决办法
1383
查看次数

从特定版本开始 Flyway 迁移

我尝试使用flyway进行迁移。我找到这个选项

spring.flyway.target = # 应考虑迁移的目标版本。

但我需要设置版本来开始迁移。例如,我需要从V3_foo.sql

我可以做吗?

简要说明为什么我需要它。我有一个包含数据的数据库。之前没有使用过迁移工具。一切都是手动完成的。现在我已经创建了一个init.sql并将整个基础结构的创建放入其中。现在,当添加更改时,我将从版本 2 开始迁移。如果您需要在新的空数据库上运行 - 从版本 1

spring flyway spring-boot

6
推荐指数
1
解决办法
3362
查看次数

Logstash以错误开头:管道YAML文件为空

当我尝试在计算机上启动Logstash服务器时,出现以下错误:

Sending Logstash's logs to D:/kibana/logstash-6.3.2/logs which is now configured
     via log4j2.properties
    ERROR: Pipelines YAML file is empty. Location: D:/kibana/logstash-6.3.2/config/p
    ipelines.yml
    usage:
      bin/logstash -f CONFIG_PATH [-t] [-r] [] [-w COUNT] [-l LOG]
      bin/logstash --modules MODULE_NAME [-M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAM
    E.VARIABLE_NAME=VALUE"] [-t] [-w COUNT] [-l LOG]
      bin/logstash -e CONFIG_STR [-t] [--log.level fatal|error|warn|info|debug|trace
    ] [-w COUNT] [-l LOG]
      bin/logstash -i SHELL [--log.level fatal|error|warn|info|debug|trace]
      bin/logstash -V [--log.level fatal|error|warn|info|debug|trace]
      bin/logstash --help
    [2018-12-14T16:16:10,809][ERROR][org.logstash.Logstash    ] java.lang.IllegalSta
    teException: Logstash stopped processing because of an error: (SystemExit) exit
Run Code Online (Sandbox Code Playgroud)

我全力以赴并吸引新代码(默认配置),无论如何都会出现此错误。

logstash logstash-configuration

6
推荐指数
1
解决办法
3202
查看次数

java从Stream <Integer>创建2D数组

我有Stream Stream<Integer> stream// 1,2,3,4,5,6,7,8,9

我需要int[3][3]从中创造stream

我该怎么做?

我试过了

int[][] ints = stream
            .map(i -> new int[]{i})
            .toArray(int[][]::new);
Run Code Online (Sandbox Code Playgroud)

但我得到: [[1], [2], [3], [4], [5], [6], [7], [8], [9]]

但是我需要: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

编辑:我认为这不是dublicate 是因为我需要int [3] [3]数组而不是String [] []

我试过这个例子

int[][] array =
            IntStream.range(0, 3)
                .mapToObj(x -> IntStream.range(0, 3).boxed()
                    .toArray(Integer[]::new))
                .toArray(int[][]::new);
Run Code Online (Sandbox Code Playgroud)

我得到错误

Exception in thread "main" java.lang.ArrayStoreException: [Ljava.lang.Integer;
    at java.util.stream.Nodes$FixedNodeBuilder.accept(Nodes.java:1222)
    at java.util.stream.IntPipeline$4$1.accept(IntPipeline.java:250)
    at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:110)
    at java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:693)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:545) …
Run Code Online (Sandbox Code Playgroud)

java arrays java-stream

5
推荐指数
1
解决办法
298
查看次数