在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) 在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地址生成文本.
/学术界 - 新/高级/管理/网站/指数
网址工作正常,但如何为链接设置文字?
我有这个代码从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
我用这个命令在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) 我正在尝试使用最新版本的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) 我有以下课程:
public class Transfer {
private String fromAccountID;
private String toAccountID;
private double amount;
}
Run Code Online (Sandbox Code Playgroud)
和List的TransferS:
....
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)
但我想通过fromAccountID和toAccountID,因此结果将是一个List的Transfer秒.如何使用Java8 Stream过滤器功能?
我有以下代码从另一个服务获取用户详细信息。
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()?
我有一个 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)
谁能举一些例子来说明如何做到这一点?
我一直在学习 PostgreSQL 中的 MVCC。据我了解,当更新行时,将添加一个新行,旧行中的值将具有新添加行xmax的值。xmin当我在 Postgres 数据库中的表中检查它时,xmin和xmax值是相同的。这是什么意思?
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) 我有一个用户名列表,想要从远程服务获取用户详细信息而不阻塞主线程。我正在使用 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?如果两者都在做同样的事情,建议使用哪一个?
我正在尝试仅解析时间,忽略字符串中的工作日,格式如下:“星期一早上 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
如何仅从该字符串解析时间?
我想用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)
有什么问题?
我有以下代码从 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 ,我怎样才能让它读取默认值?
java ×3
php ×3
spring ×3
spring-boot ×3
yii2 ×3
java-stream ×2
yii ×2
android ×1
go ×1
gridview ×1
httprequest ×1
java-8 ×1
java-time ×1
laravel ×1
laravel-5 ×1
mvcc ×1
postgresql ×1