小编Sar*_*oev的帖子

Yii2数据提供程序默认排序

在Yii 1.1中,此代码适用于默认排序:

$dataProvider = new CActiveDataProvider('article',array(
    'sort'=>array(
        'defaultOrder'=>'id DESC',
    ),
));
Run Code Online (Sandbox Code Playgroud)

如何在Yii2中设置默认排序?

尝试下面的代码,但没有结果:

$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'sort' => ['defaultOrder'=>'topic_order asc']
]);
Run Code Online (Sandbox Code Playgroud)

php gridview-sorting yii yii2

87
推荐指数
4
解决办法
9万
查看次数

yii2 gridview中的URL

在yii2 gridview中,我有这个代码:

<?php echo GridView::widget([
  'dataProvider' => $dataProvider,
  'filterModel' => $searchModel,
  'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    [
       'label' => 'bla',
       'format' => 'url',
       'value' => function ($data) {
            return Html::url('site/index');
       },
    ],
    ['class' => 'yii\grid\ActionColumn'],
  ],
]); ?>
Run Code Online (Sandbox Code Playgroud)

在网格视图中,使用url地址生成文本.

/学术界 - 新/高级/管理/网站/指数

网址工作正常,但如何为链接设置文字?

php gridview yii yii2

47
推荐指数
4
解决办法
5万
查看次数

yii2活动记录查找列不相等

我有这个代码从db中找到一个用户状态为活动且role为user的用户

public static function findByUsername($username)
{
 return static::find(['username' => $username, 'status' => static::STATUS_ACTIVE, 'role'=>'user']);
}
Run Code Online (Sandbox Code Playgroud)

我需要找到一个角色不等于"user"的用户.我怎样才能做到这一点?

PS:我正在使用YII2

php yii2

22
推荐指数
2
解决办法
4万
查看次数

Laravel通过迁移制作模型

我用这个命令在Laravel 5上创建了一个模型:

php artisan make:model Settings
Run Code Online (Sandbox Code Playgroud)

正如在视频课程中所示,一旦创建模型,还必须创建新的迁移文件.但是,在我的观念中,并没有创建迁移.如何在创建模型时生成迁移?

composer.json:

...
    "require": {
            "php": ">=5.5.9",
            "laravel/framework": "5.1.*"
        },
...
Run Code Online (Sandbox Code Playgroud)

database-migration laravel laravel-5

15
推荐指数
6
解决办法
4万
查看次数

如何将ElasticSearch 7.0版本与Spring Boot集成?

我正在尝试使用最新版本的Elastic Search库,该库已在Maven仓库中提供。

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但不确定如何在导入了6.5的Spring Boot中使用第七版。我的Maven依赖项:

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

spring elasticsearch spring-boot

11
推荐指数
1
解决办法
3693
查看次数

Java8流过滤器由多个参数组成

我有以下课程:

public class Transfer {
    private String fromAccountID;
    private String toAccountID;
    private double amount;
}
Run Code Online (Sandbox Code Playgroud)

ListTransferS:

....
private List<Transfer> transfers = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

我知道如何获得一个转移历史记录:

transfers.stream().filter(transfer -> 
    transfer.getFromAccountID().equals(id)).findFirst().get();
Run Code Online (Sandbox Code Playgroud)

但我想通过fromAccountIDtoAccountID,因此结果将是一个ListTransfer秒.如何使用Java8 Stream过滤器功能?

java java-8 java-stream

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

WebClient 块抛出 nullPointerException

我有以下代码从另一个服务获取用户详细信息。

ParameterizedTypeReference<SuccessResponse<<User>> userTypeReference = new ParameterizedTypeReference<>() {}

User user = webClient.get()
                .uri("url")
                .retrieve()
                .onStatus(HttpStatus::is4xxClientError, response -> Mono.empty())
                .bodyToMono(userTypeReference)
                .onErrorResume(e -> Mono.empty())
                .doOnError(e -> logger.error("Error on fetching user details {}", e))
                .map(response -> response.getData())
                .block();
Run Code Online (Sandbox Code Playgroud)

该服务的响应如下所示:

{
  "status": "success",
  "data": {
      "name": "John",
      ...
  }
}
Run Code Online (Sandbox Code Playgroud)

如果data元素不可用,映射将返回 null 并抛出block()错误java.lang.NullPointerException: The mapper returned a null value

我知道我们可以nullPointerException在映射期间处理并返回new User对象(如果数据对象为空)。但我不想得到一个空的对象。有什么方法可以使用 来获取空值吗block()

spring spring-boot spring-webflux

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

Spring Webclient重试并在所有重试都用尽时执行代码

我有一个 webhook 服务,可以将事件发送到不同的源 (URL)。按照设计,请求超时时间为10s,如果失败,则重试发送3次。如果所有重试都失败,则必须执行代码以禁用数据库中的该 URL。

到目前为止,我已成功重试并延迟了 5 秒。但是,我不确定失败后如何执行代码。

    try{

          String body = objectMapper.writeValueAsString(webhookDTO);

                webClient.post()
                        .uri(webhook.getUrl())
                        .contentType(MediaType.APPLICATION_JSON)
                        .bodyValue(body)
                        .exchange()
                        .timeout(Duration.ofSeconds(5))
                        .retryWhen(Retry.backoff(3, Duration.ofSeconds(5))
                                .jitter(0d)
                                .doAfterRetry(retrySignal -> {
                                    logger.info("Retried " + retrySignal.totalRetries());
                                })
                                .onRetryExhaustedThrow((retryBackoffSpec, retrySignal) 
                                                    -> new WebhookTimeoutException()))
                        .doOnSuccess(clientResponse -> {
                            logger.info("Event is received by " + client);
                        })
                        .subscribe();
            } catch (Exception e) {
                logger.error("Error on webhook dispatcher: ", e);
            }
Run Code Online (Sandbox Code Playgroud)

谁能举一些例子来说明如何做到这一点?

spring-boot project-reactor spring-webflux

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

为什么 PostgreSQL 中的 xmin 和 xmax 值相同?

我一直在学习 PostgreSQL 中的 MVCC。据我了解,当更新行时,将添加一个新行,旧行中的值将具有新添加行xmax的值。xmin当我在 Postgres 数据库中的表中检查它时,xminxmax值是相同的。这是什么意思?

   xmin   |   xmax   |    id    |     serial     | paid 
----------+----------+----------+----------------+------
 54569114 | 54569114 | 11099324 | 76605297311437 | t
 54569111 | 54569111 | 11099323 | 38131108141783 | t
 54569101 | 54569101 | 11099322 | 49399633274146 | t
 54569092 |        0 | 11099321 | 44672543705101 | f
 54569090 | 54569090 | 11099320 | 21324499293647 | t
 54569083 |        0 | 11099319 | 82878160317074 | f
 54569079 | …
Run Code Online (Sandbox Code Playgroud)

postgresql mvcc

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

Java Stream 与 Flux fromIterable

我有一个用户名列表,想要从远程服务获取用户详细信息而不阻塞主线程。我正在使用 Spring 的反应式客户端 WebClient。对于响应,我获取 Mono,然后订阅它并打印结果。

private Mono<User> getUser(String username) {
    return webClient
            .get()
            .uri(uri + "/users/" + username)
            .retrieve()
            .bodyToMono(User.class)
            .doOnError(e -> 
                logger.error("Error on retrieveing a user details {}", username));
}
Run Code Online (Sandbox Code Playgroud)

我通过两种方式实现了这个任务:

使用Java stream

usernameList.stream()
          .map(this::getUser)
          .forEach(mono ->
                mono.subscribe(System.out::println));
Run Code Online (Sandbox Code Playgroud)

使用Flux.fromIterable

Flux.fromIterable(usernameList)
        .map(this::getUser)
        .subscribe(mono ->
                mono.subscribe(System.out::println));

Run Code Online (Sandbox Code Playgroud)

看来主线程并没有以两种方式被阻塞。Java Stream在这种情况下和有什么区别Flux.fromIterable?如果两者都在做同样的事情,建议使用哪一个?

java spring java-stream spring-webflux spring-webclient

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

从包含周名和时间的字符串中解析时间

我正在尝试仅解析时间,忽略字符串中的工作日,格式如下:“星期一早上 5 点”

这是我的代码:

String dateTxt = "Monday 5AM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ha");
LocalTime lt = LocalTime.parse(dateTxt, formatter);
Run Code Online (Sandbox Code Playgroud)

它抛出一个异常: java.time.format.DateTimeParseException: Text 'Saturday 1AM' could not be parsed

如何仅从该字符串解析时间?

java java-time

3
推荐指数
2
解决办法
98
查看次数

Android HttpURLConnection设置GET Request方法

我想用GET方法发送HTTP请求,但我无法设置GET方法.这是我的代码:

try {
                URL url = new URL(path);
                conn = (HttpURLConnection) url.openConnection();

                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("GET");
                conn.setDoInput(true);
                conn.setDoOutput(true);
Uri.Builder builder = new Uri.Builder()
                        .appendQueryParameter("p1", "123")
                        .appendQueryParameter("p2", "123");
                String query = builder.build().getEncodedQuery();
                OutputStream os = conn.getOutputStream();
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os, "UTF-8"));
                writer.write(query);
                writer.flush();
                writer.close();
                os.close();

                conn.connect();
                Log.e("ERROR", conn.getResponseMessage());
                Log.e("ERROR", conn.getRequestMethod());
                Log.e("ERROR", String.valueOf(conn.getResponseCode()));

            } catch (Exception e) {
                Log.e("ERROR", e.getMessage());
            }
Run Code Online (Sandbox Code Playgroud)

在代码中,我设置了GET方法,但是在日志中,请求方法是POST:

02-01 16:48:54.766  23799-23831/? E/ERROR? Method Not Allowed
02-01 16:48:54.766  23799-23831/? E/ERROR? POST
02-01 16:48:54.766  23799-23831/? E/ERROR? 405
Run Code Online (Sandbox Code Playgroud)

有什么问题?

android httprequest httpurlconnection

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

在 YML 中使用具有默认值的环境变量

我有以下代码从 yml 读取配置文件,其中也包含 ENV 变量:

confContent, err := ioutil.ReadFile("config.yml")
    if err != nil {
        panic(err)
    }
    // expand environment variables
    confContent = []byte(os.ExpandEnv(string(confContent)))
    conf := &SysConfig{}
    if err := yaml.Unmarshal(confContent, conf); err != nil {
        panic(err)
    }
Run Code Online (Sandbox Code Playgroud)

config.yml

db:
  name: ${DB_NAME:qm}
  host: localhost

Run Code Online (Sandbox Code Playgroud)

DB_NAME它正在工作,但是如果没有给出 env ,我怎样才能让它读取默认值?

go

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