小编Sas*_*ota的帖子

Presto检查是否为NULL并返回默认值(NVL模拟)

在presto中是否有任何类似的NVL?

我需要检查字段是否为NULL并返回默认值.

我这样解决这个问题:

SELECT
  CASE 
    WHEN my_field is null THEN 0 
    ELSE my_field 
  END
FROM my_table
Run Code Online (Sandbox Code Playgroud)

但我很好奇是否有可以简化此代码的东西.

我的驱动程序版本是 __CODE__

sql presto

18
推荐指数
1
解决办法
3万
查看次数

避免 Next.js 中重复的元描述和关键字

我正在使用Next.js开发我的网站为了升级我网站的 SEO 性能,我试图避免重复的元标记。

我的问题

在下一个官方文档中,他们说我可以通过在元标记中插入关键属性来避免重叠的元标记。但这是行不通的。

<meta name="description" content="~~" key="titleDescription"/>
<meta name="keywords" content="~~" key="titleKeywords"/>
Run Code Online (Sandbox Code Playgroud)

这些是默认的 rootDocument 元标记,并且,

<meta name="description" content={item.product_description} key="titleDescription"></meta>
<meta name="keywords" content={item.brand_name} key="titleKeywords"></meta>
Run Code Online (Sandbox Code Playgroud)

这些是项目页面中动态生成的元标记。

在已部署的浏览器中,网站中仍然有两个描述和关键字元标记。我想避免重复的元标记。感谢您的帮助!

html javascript meta-tags reactjs next.js

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

ExoPlayer:将控制器置于视频下方而不会重叠视频

我有一个PlayerView以纵向方式占据活动的上半部分,屏幕的下半部分显示一些文字.

我需要在视频下放置控制器而不重叠视频内容(它将始终显示).默认情况下,当用户触摸视频时,控制器会出现在视频底部,覆盖视频的底部.我的情况我需要控制器粘在视频下面而不与视频内容交叉.

我经历了SimpleExoPlayerPlayerViewAPI,但我还没有找到任何办法做下去.

问题:如何使用ExoPlayer将控制器置于视频下?

这是布局的样子:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.exoplayer2.ui.PlayerView
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@id/video_view"
        android:scrollbars="vertical" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

java android exoplayer exoplayer2.x

13
推荐指数
2
解决办法
3113
查看次数

检查耳机是否在不同的API级别上连接

我有一个针对API Level 19+的应用程序.我需要检查耳机是否已连接(有线或蓝牙).

我看到AudioManager.isWiredHeadsetOn()从API级别16开始不推荐使用,并且文档提供使用AudioManager.getDevices()仅从API级别23开始引入.

问题:检查耳机是否已连接到API级别16 - 22的正确方法是什么?

注意:我知道我仍然可以使用已弃用的方法,但我不想这样做.如果他们弃用它,他们应该引入替代API(我找不到).

java android android-audiomanager

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

带@Sql的@SpringBootTest:脚本执行和上下文初始化的顺序

我有在内存数据库上执行的集成测试.每个测试的签名看起来或多或少都像这样:

@RunWith(SpringRunner.class)
@SpringBootTest
@Sql("/clean-data-in-all-tables.sql")
public class SomeTest { 
    @Test
    public void shouldDoSomehting() {}
}
Run Code Online (Sandbox Code Playgroud)

在测试上下文初始化期间,Hibernate会重新创建数据库模式:

spring:
  jpa:
    hibernate:
      ddl-auto: create-drop
Run Code Online (Sandbox Code Playgroud)

我希望在初始化上下文之后和生成数据库模式之后执行sql脚本.但是在某些情况下clean-data-in-all-tables.sql,在生成模式之前执行它会失败,因为它需要尚未创建的表.

我按照我解释的方式编写了500多个测试,并且它们都运行良好,直到我添加了更多类似的测试.

当我通过Gradle或IntelliJ一起执行测试时,测试失败.请注意,失败的测试不是最近添加的测试.这是与我添加的测试完全无关的旧测试.同样奇怪的是,如果我通过IntelliJ 一个接一个地运行它们,那么失败的测试工作得很好.

它看起来像一个弹簧启动的错误,但我仍然试图找到一种方法来解决它.与此同时,我尝试了许多方法来解决这个问题,但是没有一个是有用的.

请分享您对可能有用的内容以及我的代码可能出现的问题的想法.

更新: 找到了解决方法:改变spring.jpa.hibernate.ddl-autocreate-dropcreate解决问题.

但问题仍然是开放这种奇怪行为的原因是什么?

java junit spring-boot spring-boot-test

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

Presto性能调整,并行执行时查询要慢得多

我有一个presto集群配置了12个工作程序,Java应用程序正在查询它们.群集能够执行30个并发请求(如果有更多,则它们排队).

应用程序可能会发送大约80-100个不同的查询,我希望这些查询由集群处理.

问题:当按顺序执行查询时,它们的完成速度明显快于并行执行查询时的速度.

例如,如果我按顺序运行100个查询,则每个查询需要1-12秒才能完成,并且它们都会在大约2分钟内完成.但如果我并行启动所有这些,则需要大约8-12分钟才能完成所有这些操作.在拐角处,最多需要30分钟.

如果我查看presto控制台,我发现大多数查询被阻止,只有1-3个实际上处于Running状态.

不幸的是我无法发布任何查询.它们通常访问不同的模式(一个查询中最多6个),它们充满了连接和嵌套查询.同时,大多数都是按照最佳实践编写的.

问题:如何提高性能?至少我应该调查哪些方面来找出根本原因?

以下是一个最慢查询的指标(可能是数字会对您说些什么).

Resource Utilization Summary

CPU Time            8.42m
Scheduled Time      26.04m
Blocked Time        4.77d
Input Rows          298M
Input Data          9.94GB
Raw Input Rows      323M
Raw Input Data      4.34GB
Peak Memory         10.18GB
Memory Pool         reserved
Cumulative Memory   181G seconds

Timeline

Parallelism         477
Scheduled Time/s    1.47K
Input Rows/s        281K
Input Bytes/s       9.60MB
Memory Utilization  0B
Run Code Online (Sandbox Code Playgroud)

sql performance sqlperformance presto

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

Redis:为@Cacheable注释的方法设置不同的生存时间

我有一组看起来像这样的缓存方法:

@Cacheable(value = "myCacheName", keyGenerator = "myKeyGenerator")
public Product getProduct(ProductRequest request) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我需要为这些方法返回的对象设置不同的生存时间(有效期)。

问题:根据文档,提供的方法是在方法的返回类型上使用@RedisHash(timeToLive=…?)@TimeToLive批注。但是,我不想使用与缓存相关的逻辑来污染我的域类。另外,我的某些方法返回的字符串或无法修改的类的对象。我希望以更可配置的方式实现它。还有一个名为的配置属性spring.cache.redis.time-to-live,但是它在所有地方都应用相同的生存时间。

问题:是否可以在方法级别指定生存/失效时间间隔?或一般来说,如何以更优雅的方式实现它?

java spring redis spring-data-redis spring-boot

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

如何在 Kubernetes 中启用 default-http-backend 以使 Ingress 正常工作?

我有一个来自microk8s 的单节点 Kubernetes 实例。它安装在运行 Raspberry Pi 4 的 Ubuntu Server 20.20 上。

我正在尝试设置一个无法工作的入口资源。

当我运行时kubectl describe ingress my-ingress我得到这个输出

Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Run Code Online (Sandbox Code Playgroud)

从我在互联网上找到的内容来看,default-http-backend默认情况下应该有一些东西,但是当我运行时kubectl get pods -n kube-system我看不到它。

问:如何default-http-backend在 mikrok8s 中启用?或者更一般地说,我如何使 Ingress 工作?

注意:Ingress 和 DNS 插件已启用。

networking kubernetes kubernetes-ingress microk8s

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

升级到Vue 3后图像高度重置为0

我有以下图像定义。

模板:

<img :src="logoSVG" height="150px" alt="logo" />
Run Code Online (Sandbox Code Playgroud)

JS:

data() {
  return {
    logoSVG: require('./assets/logo.svg')
  }
}
Run Code Online (Sandbox Code Playgroud)

此代码适用于 Vue 2。请注意,图像的高度是直接在图像中设置的。

问题:升级到 Vue 3 后,渲染组件中的图像高度设置为 0。

这是它生成的内容:

<img src="/img/logo.136099f1.svg" height="0" alt="logo">
Run Code Online (Sandbox Code Playgroud)

问题:如何让 Vue 3 正确渲染 SVG 图像的高度?

javascript css vue.js vue-component vuejs3

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

应用程序暂停后,Scrollable TextView不允许选择文本

我有一个可滚动TextView的用户可以选择文本.我通过设置移动方法来添加滚动条ScrollingMovementMethod.

问题:除非应用程序暂停(例如,切换应用程序后),否则选择效果很好.一旦应用程序处于活动状态,选择将停止工作,并在日志中收到以下消息:

W/TextView:TextView不支持文本选择.选择取消.

我的设置:

我有一个Activity CoordinatorLayout和一个TextView包含在RelativeLayout其中的片段,如下所示:

<TextView
    android:id="@+id/text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:scrollbars="vertical" />
Run Code Online (Sandbox Code Playgroud)

在Java代码中,我必须这样做:

textView.setMovementMethod(new ScrollingMovementMethod());
textView.setTextIsSelectable(true);
textView.setFocusable(true);
textView.setFocusableInTouchMode(true);
Run Code Online (Sandbox Code Playgroud)

因为根据这个,这是唯一的工作方式,这个问题.

编辑:

问题出在以下调用中

textView.setMovementMethod(new ScrollingMovementMethod());
Run Code Online (Sandbox Code Playgroud)

如果我删除它有效,但我无法理解.

重现问题的最小步骤:

1)TextView使用以下布局创建一个空的Activity .

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text_view"
        android:text="Some very very very long text..."
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:scrollbars="vertical" />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

2)设置TextViewin onStart()方法的可见性参数.

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) …
Run Code Online (Sandbox Code Playgroud)

android textview android-layout

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