小编Ada*_*331的帖子

计算从前一行值增加/减少的百分比

我有一张看起来像这样的表:

|date_start  | date_end    |amount | 
+------------+-------------+-------+
|2015-02-23  | 2015-03-01  |50     |
|2015-03-02  | 2015-03-08  |50     |
|2015-03-09  | 2015-03-15  |100    |
|2015-03-16  | 2015-03-22  |800    |
|2015-03-23  | 2015-03-29  |50     |
Run Code Online (Sandbox Code Playgroud)

并且我想计算出amount从上一个日期开始的column 增加/减少的百分比。例如,结果将是这样的,

|date_start  | date_end    |amount | perc_change | 
+------------+-------------+-------+-------------+
|2015-02-23  | 2015-03-01  |50     | 
|2015-03-02  | 2015-03-08  |50     | 0
|2015-03-09  | 2015-03-15  |100    | 50
|2015-03-16  | 2015-03-22  |800    | 700
|2015-03-23  | 2015-03-29  |50     | -750
Run Code Online (Sandbox Code Playgroud)

我已经搜索并绞尽脑汁几天了。通常,我只是使用服务器端代码来执行此操作,但现在我需要将其全部包含在查询中。

mysql sql

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

将AMAZON.DURATION添加到当前时间

我正在编写一个Alexa技能,我希望将记录存储在未来时间的数据库中.例如,如果用户说"在两小时内",我想将时间存储在两小时后.

到目前为止,我发现我可以使用AMAZON.DURATION插槽类型将这样的单词转换为持续时间,但我还没想出如何将其添加到当前日期.

持续时间如下:PT2H.P表示持续时间,T表示时间单位,2H表示2小时.我自己可以解析这个问题,但是我希望有一些内置功能可以做到这一点?

node.js alexa-skills-kit

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

忽略 RuntimeTypeAdapterFactory 中未注册的子类型

我们有一个使用 GSON 作为转换器的 Retrofit API,它会调用要向用户显示的卡片列表。卡片遵循以下格式:

[
    {
        "cardType": "user",
        "data": {}
    },
    {
        "cardType": "content",
        "data": {}
    }
]
Run Code Online (Sandbox Code Playgroud)

卡之间的属性data有所不同,因此为了解决这个问题,我们使用 GSON 的RuntimeTypeAdapterFactory

final RuntimeTypeAdapterFactory<Card> factory = RuntimeTypeAdapterFactory
        .of(Card.class, "cardType")
        .registerSubtype(UserCard.class, "user")
        ...
        .registerSubtype(ContentCard.class, "content");
Run Code Online (Sandbox Code Playgroud)

但是,我们发现,如果 API 更新为包含我们不期望的新卡类型,则反序列化会默默失败。我所说的默默地,response.isSuccessful()仍然返回true,但response.body()为null。我们能够确定新卡类型的唯一方法是通过反复试验来解决问题。

有没有办法让 GSON 忽略我们尚未注册的任何卡类型?如果我们尝试添加这张新卡但应用程序不支持它,我想忽略它。

java android json gson retrofit

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

获取每行两列之间的最小值

这是我的数据表:

| uid |   date   | visit | transactionDate |
+-----+----------+-------+-----------------+
|  1  | 6/2/2014 |   1   |     6/9/2014    |
|  1  | 6/2/2014 |   1   |     8/4/2014    |
|  2  | 6/2/2014 |   1   |     8/2/2014    |
|  2  | 6/2/2014 |   1   |     10/17/2014  |
|  2  | 6/2/2014 |   1   |     10/20/2014  |
|  3  | 6/2/2014 |   1   |     6/9/2014    |
|  3  | 6/2/2014 |   1   |     6/10/2014   |
|  3  | 6/2/2014 |   1 …
Run Code Online (Sandbox Code Playgroud)

mysql sql select group-by min

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

当我们有访问器和mutator时,为什么要声明私有字段?

如果我用Java创建一个类,我总是被告知惯例是使一个类的所有字段都是私有的.如果我需要访问或更改它们,我可以创建一个accessor和mutator方法.我确实理解私有变量的重要性,因为它们有助于降低复杂性并允许封装.

我不明白的是,如果我创建一个公共访问者和mutator方法,那么那个变量是不是公共?为什么在任何人都可以访问私有变量的情况下仍然使用私有变量?

我还应该注意,我理解这些方法的重要性,但我想知道为什么我们懒得将变量设为私有,即使我们通过这些方法让任何人都可以访问它?

java oop access-modifiers

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

如何使用 RxJava 重复网络调用

我有一个 API,可以让我使用以下内容通过 id 检索项目:

http://myapi.com/api/v1/item/1
Run Code Online (Sandbox Code Playgroud)

其中最后一个值是项目的 id。这很好,很花哨,我可以编写一个 Retrofit 服务接口并像这样调用该项目:

MyService service = MyService.retrofit.create(MyService.class);

service.itemById(1)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Subscriber<Item>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.v(LOG_TAG, e.getMessage());
                    }

                    @Override
                    public void onNext(Item item) {
                        adapter.addItem(item);
                    }
                });
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我想一次检索 5 个项目,但我不知道如何做到这一点。例如,如果我想获取 ID 为 1、2、3、4、5 的项目,我该如何在一组中执行此操作?我已经调查过了,Observable.zip()但我不太清楚如何设置它。

java android rx-java retrofit rx-android

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

什么取代了 WearableListView.Adapter?

我刚刚构建了一个 AndroidStudio 项目,并被告知WearableListView.Adapter该类已被弃用。

但是,当我转到文档时,它没有说明被弃用。我一直无法弄清楚应该使用哪个类。

android listview wear-os

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

如何按日期条件过滤列表?

我试图通过查找结束日期小于或等于今天日期的所有项目来过滤我的列表.

我知道在Liquid中我可以过滤使用where:来查找符合条件的项目.例如,如果我想获得今天会议的清单,我可以做:

{% assign todays_conferences = (site.conferences | where: 'date_end', today) %}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试召开即将举行的会议时,我不能这样做:

{% assign upcoming_conferences = (site.conferences | where: 'date_end', ??? | sort: 'date_start') %}
Run Code Online (Sandbox Code Playgroud)

这是因为我不打算一对一匹配值,但我正在尝试根据日期比较查找项目.我搜遍了所有,无法找到方法.

如何以这种方式过滤列表?我希望我不必依次循环并在每一行上执行if语句.

liquid jekyll

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

覆盖默认构造函数中定义的变量的setter

所以我有一个看起来像这样的Kotlin类:

class MyClass {
    var myString: String = ""
        set(value) {
            field = value
            doSomethingINeed()
        }

    constructor(myString: String) {
        this.myString = myString
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,Android Studio警告我可以将其用作默认构造函数.当我选择它时,它会将其更改为:

class MyClass(var myString: String)
Run Code Online (Sandbox Code Playgroud)

现在我失去了覆盖setter的机会,因为如果我创建一个名为setMyString()I 的方法,我将收到编译器错误.

如果字段是默认构造函数的一部分,有没有办法覆盖setter,或者我是否必须使用选项1并忽略我得到的警告?

kotlin kotlin-interop

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

如何使用泛型获取枚举的值?

我想提供这个问题的背景.我见过独特的解决方案,人们创建将从SharedPreferences而不是支持字段读/写的委托.要对字符串执行此操作,例如:

class SharedPrefsString(private val sharedPrefs: SharedPreferences) {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
        return sharedPrefs.getString(property.name, "")
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
        sharedPrefs.edit().putString(property.name, value).apply()
    }
}

var myString: String by SharedPrefsString(myPrefs)
Run Code Online (Sandbox Code Playgroud)

但是,我希望我可以使用泛型枚举,因为所有枚举都有一个valueOf(string)方法,但下面的方法不起作用.我在评论中提出了一些我尝试过的东西:

class SharedPrefsEnum<T : Enum<T>>(private val sharedPrefs: SharedPreferences) {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): T {
        // Doesn't work, can't reference T, which makes sense. 
        // return T.valueOf(sharedPrefs.getString(property.name, ""))

        // Can't use reified type here, which makes sense.
        // return …
Run Code Online (Sandbox Code Playgroud)

generics kotlin

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