小编Che*_*eng的帖子

在下列情况下是否可能发生短路评估

public class JavaApplication11 {

    static boolean fun() {
        System.out.println("fun");
        return true;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        boolean status = false;
        status = status & fun();
        status = fun() & status;
    }
}
Run Code Online (Sandbox Code Playgroud)

Java会想,既然status已经是假的,它会不会执行fun方法?在这两种情况下,我都会进行测试fun.但是,它是否符合Java规范?

java

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

我们需要"双"等待,以便GUI不会冻结?

在阅读使用Async和Await的异步编程(C#和Visual Basic)后,我希望我的GUI不会挂起

    public async Task<string> DoBusyJob()
    {
        // Busy Job
        Thread.Sleep(10000);
        i++;
        return "Finished " + i;
    }

    int i = 0;

    private async void button1_Click(object sender, EventArgs e)
    {
        // Hang!
        string result = await DoBusyJob();

        this.label1.Text = result;
    }
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.它仍然挂起.我意识到我需要添加额外await的内容DoBusyJob

    public async Task<string> DoBusyJob()
    {
        // Busy Job
        await Thread.Sleep(10000);
        i++;
        return "Finished " + i;
    }

    int i = 0;

    private async void button1_Click(object sender, EventArgs e)
    {
        // OK!
        string …
Run Code Online (Sandbox Code Playgroud)

c# user-interface task-parallel-library async-await responsive-design

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

如果正在使用https,攻击者是否能够嗅探GET请求字符串

目前,我们计划使用GET方法向服务器发送短消息和敏感消息.我们将在GET请求字符串中附加信息.

我们将使用https.

我想知道,我们是否需要对数据执行AES加密(在接收服务器端不需要解密.因此,在我们将其附加到GET请求字符串之前,不要求通过服务器传输加密密钥)?

如果正在使用https,攻击者是否能够嗅探GET请求字符串?

security ssl https

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

让==运算符在对象比较期间忽略选定的类成员

PHP为对象比较提供了一种非常好的方法.

class People {
    public $name;
}

$p0 = new People();
$p1 = new People();

$p0->name = 'ali';
$p1->name = 'ali';

// equal
if ($p0 == $p1) {
    echo 'equal' . "\n";
} else {
    echo 'diff' . "\n";
}
Run Code Online (Sandbox Code Playgroud)

但是,有时候,我想在比较期间忽略一些班级成员.

class People {
    public $id;
    public $name;
}

$p0 = new People();
$p1 = new People();

$p0->id = 0;    // Can we ignore this id during == comparison?
$p1->id = 1;    // Can we ignore this id during == …
Run Code Online (Sandbox Code Playgroud)

php

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

标头重定向会在不同的浏览器中产生不同的行为

目前,我有一个可通过以下域访问的脚本

http://me.domain.com/path/index.php
Run Code Online (Sandbox Code Playgroud)

如果满足某些条件,我将通过使用重定向回到自身

header('Location: index.php');
Run Code Online (Sandbox Code Playgroud)

重定向后,大多数主流浏览器最终会以

http://me.domain.com/path/index.php
Run Code Online (Sandbox Code Playgroud)

仍然.但是,对于某些第三方供应商的浏览器(用于SIM卡模拟目的),它们最终会在(注意丢失的路径)

http://me.domain.com/index.php
Run Code Online (Sandbox Code Playgroud)

我想知道,这是因为第三方供应商没有正确实现他们的浏览器?或者,在处理重定向时,不同的浏览器可以产生不同的行为吗?

我意识到如果我使用以下代码,

// $_SERVER['PHP_SELF'] is /path/index.php
header('Location: '.$_SERVER['PHP_SELF']);
Run Code Online (Sandbox Code Playgroud)

它适用于所有浏览器,不会丢失路径.

php

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

为什么空间使用为0虽然我已插入> 40k行

目前,我有三个Cassandra节点.

我创建了一个名为的表 events

插入> 40k行后,我在每个节点中执行以下命令.

nodetool -h localhost cfstats
Run Code Online (Sandbox Code Playgroud)

这是其中一个节点的输出

Table: events
    SSTable count: 0
    Space used (live): 0
    Space used (total): 0
    Space used by snapshots (total): 43516
    Off heap memory used (total): 0
    SSTable Compression Ratio: 0.0
    Number of keys (estimate): 1
    Memtable cell count: 102675
    Memtable data size: 4224801
    Memtable off heap memory used: 0
    Memtable switch count: 1
    Local read count: 0
    Local read latency: NaN ms
    Local write count: 4223
    Local write latency: 0.085 ms …
Run Code Online (Sandbox Code Playgroud)

cassandra

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

如何防止深层链接导致同一应用程序的多个实例?

抱歉,如果这似乎是一个重复的问题,因为深层链接导致应用程序的多个实例打开。但是,我认为从评论和答案中,如果没有适当的屏幕截图,我们大多数人都很难理解这个问题。

在您决定将其标记为重复之前,请允许我进一步详细说明这个问题。

有两种方法可以启动我的应用程序

  1. 通过点击应用程序图标
  2. 通过点击深层链接

我想要实现的是,无论我如何启动应用程序,无论是通过深层链接还是单击应用程序图标,我都希望任务列表中只显示 1 个应用程序实例。

但事实并非如此。请在下面查看我如何重现该问题。


第 1 步:点击应用程序图标

在此处输入图片说明

第 2 步:检查任务列表

在此处输入图片说明

第 3 步:启动 GMail 应用程序并查看任务列表

在此处输入图片说明

第 4 步:点击邮件中的深层链接,然后再次查看任务列表

在此处输入图片说明


正如您在任务列表中看到的那样。有 2 个 app 实例。最前面是使用深层链接调用的,最后是通过单击应用程序图标来调用的。

我尝试将以下技术结合使用,以确保任务列表中只有 1 个应用程序实例。

单顶

    <activity
        android:name=".JStockFragmentActivity"
        android:launchMode="singleTop"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter android:autoVerify="true">
            <!-- Sets the intent action to view the activity -->
            <action android:name="android.intent.action.VIEW" />
            <!-- Allows the link to be opened from a web browser -->
            <category android:name="android.intent.category.BROWSABLE" />
            <!-- Allows the …
Run Code Online (Sandbox Code Playgroud)

android

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

我应该让AsyncTask成为LiveData还是Repository类的成员-作为Loader的替换

LiveData/ ViewModel是复杂的很好的替代品Loader

基于https://medium.com/google-developers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4

AsyncTask是的成员LiveData

public class JsonLiveData extends LiveData<List<String>> {

  public JsonLiveData(Context context) {

    loadData();
  }


  private void loadData() {
    new AsyncTask<Void,Void,List<String>>() {

    }.execute();
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,根据Lyla Fujiwara演讲

在此处输入图片说明

我应该成为班级AsyncTask成员Repository吗?

android android-livedata android-architecture-components android-jetpack

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

在 FingerprintManager.authenticate 期间,以下用例是否需要 CryptoObject 对象或 null

当我们打电话

mFingerprintManager
            .authenticate(cryptoObject, 0 /* flags */, mCancellationSignal, this, null);
Run Code Online (Sandbox Code Playgroud)

我注意到通过nullfor是完全没问题的cryptoObject。根据FingerprintManager 文档

FingerprintManager.CryptoObject:与调用关联的对象,如果不需要,则为 null。


根据https://github.com/googlesamples/android-FingerprintDialog,它显示了创建CryptoObject.


所以,我不确定我是否应该使用CryptoObject, 或null用于我的用例。我读过为什么 Android 指纹认证需要加密对象?但仍然无法完全理解和决定我的情况。

我的用例如下。

我有一个笔记应用程序的启动锁定屏幕。通常,当用户启用启动锁屏时,他需要设置图案绘制。如果他忘记了他的图案绘制,他可以使用他的指纹作为替代。该应用程序如下所示

在此处输入图片说明


这是源代码。目前,我正在使用CryptoObject. 但是,根据我的用户反馈,他们中的少数人正面临此新功能的一些应用程序问题。尽管我们在 Google Play Console 中没有看到任何崩溃报告,但我们怀疑CryptoObject生成过程中出现了问题。

所以,如果CryptoObject可以用 null 替换,我们很乐意这样做来简化我们的代码。

在 FingerprintManager.authenticate 期间,以下用例是否需要 CryptoObject 对象或 null


/**
 * Small helper class to manage text/icon around fingerprint authentication UI.
 */
public class FingerprintUiHelper extends FingerprintManagerCompat.AuthenticationCallback {
    private static final String …
Run Code Online (Sandbox Code Playgroud)

security android fingerprint android-fingerprint-api

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

可选闭包总是会逃逸吗?我们应该使用[weak self]还是[unowned self]呢?

在 中给出以下函数签名UICollectionView

open func performBatchUpdates(_ updates: (() -> Void)?, completion: ((Bool) -> Void)? = nil)
Run Code Online (Sandbox Code Playgroud)

互联网上有一些选项,可选关闭总是会逃脱。但是,我真的不确定这是真的,或者这仍然值得商榷。

  1. https://forums.swift.org/t/allowing-escaping-for-optional-closures-in-method-signature/27556
  2. https://gist.github.com/gringoireDM/1f18f3bb4e74e2d914a748d89486db56

对于上述情况,我们是否需要在第一个块中使用[weak self], 或,以及第二个黑色?[unowned self]

func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
    collectionView!.performBatchUpdates({ () -> Void in
        for operation: BlockOperation in self.blockOperations {
            operation.start()
        }
    }, completion: { (finished) -> Void in
        self.blockOperations.removeAll(keepingCapacity: false)

        self.collectionView.reloadData()
    })
}
Run Code Online (Sandbox Code Playgroud)

ios swift

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