小编tou*_*ody的帖子

Firestore 安全规则:获取字符串形式的路径

使用 Firestore 安全规则(版本 2),如何将 Path 对象转换为字符串?整个路径作为一个字符串,而不是各个片段。

我正在尝试编写一个通用函数以在各种 Match 语句中使用。像这样的东西:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    // "pathobj" is a rules.firestore.Path object
    function getPathAsString(pathobj) {
      // Does not work:
      return pathobj.toString();
    }

    // I would expect the following to evaluate to True:
    match /foo/{fooid} {
      allow read: if getPathAsString(path('one')) == 'one'
                  && getPathAsString(path('one/!two')) == 'one/!two';
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道这是否可能?我阅读了Path 上的文档,并在Firestore Rules Simulator中尝试了各种方法,但都没有成功。

firebase firebase-security google-cloud-firestore

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

我可以强制显式使用 @Override 吗?

有没有办法强制使用@Override 注释?

只是为了澄清,我不是在问“我如何强制子类实现一个方法”(像这样):

public abstract class BaseClass {
    public abstract void foo();
}
Run Code Online (Sandbox Code Playgroud)

我专门询问这种情况:

public class AnnotatedSubclass extends BaseClass {
    @Override
    public void foo() {
        System.out.println("I have @Override.");
    }
}

public class NonAnnotatedSubclass extends BaseClass {
    public void foo() {
        System.out.println("I do not have @Override.");
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,即使NonAnnotatedSubclass没有明确的@Override注释,两者都可以编译。有没有办法让编译器在这种情况下抛出错误/警告NonAnnotatedSubclass

我问,因为有时当我扩展类时,我不小心覆盖了父方法,因为它们的名称与我要创建的名称相似(如.paint()在 Swing 中)。

java swing overriding

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

内存:编译器如何选择存储变量的位置?

给定两个函数func1和f2,具有以下签名:

void func1(){
    int baba = 12345;
    // printf the value of baba here
}

void f2(){
    int loo;
    //printf the value of loo here
}
Run Code Online (Sandbox Code Playgroud)

...如果我运行我的int main,它只有func1然后f2:

int main(){
      func1();
      f2();
}
Run Code Online (Sandbox Code Playgroud)

...那么baba和loo的印刷价值将是12345.所以我的问题如下:

  1. 这是定义的行为,还是我的机器所做的错误?

  2. 如果这不是我的计算机做的一些错误的事情,你能解释为什么编译器选择存储loo在同一地址baba?

编辑: 我想我应该问,如果我有这两个EXACT两个函数,baba和loo在任何机器上都有相同的值吗?

我知道厕所的价值是巴巴剩余比特的结果,我明白(至少在我的机器上)两者的堆叠正在布置,以便厕所重叠到巴巴的旧​​领土上. 是不是每台机器都会以baba和loo重叠的方式放置这两个功能堆栈?完全按照书面使用这两个功能,即......

c c++ memory compiler-construction runtime

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

如何从相对路径在C#中运行PowerShell脚本?

我正在尝试从C#应用程序运行PowerShell脚本。我知道如何使用绝对路径:

    using (PowerShell pshell = PowerShell.Create())
    {
        pshell.AddScript( @"C:\Path\To\Webapp\psScript.ps1" );
        pshell.Invoke();
    }
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做是使用相对路径。我psScript.ps1的目录与Visual Studio项目位于同一目录中,并且我想使用相对路径(例如./psScript.ps1),这样当我将项目发布/导出到不同的计算机时,脚本的路径就不会变成无效

那么,如何在PowerShell.AddScript()方法中使用相对路径?任何帮助,将不胜感激!

我在这里看了一下,但这没有回答我的问题: PowerShell:从脚本目录运行命令

c# powershell

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

如何在ASP.NET中的多个会话中存储(缓存?)数据

我正在编写一个C#ASP.NET Web Form Application.为了简明起见,此应用程序从服务器检索数据并将其显示给用户.

要访问此服务器,我的应用程序需要生成登录信息.生成登录信息需要几分钟.此登录信息每天都会更改,但对于使用我的应用程序的所有人(在特定日期)都是如此.

我的应用程序将每天被数百人使用.让每个用户等几分钟来检索登录信息对我来说很愚蠢.

理想情况下,我想每天收集一次登录信息,并将结果存储在我的服务器上.

有小费吗?我知道.NET有CacheSession,但对于一个个人用户的唯一的存储数据.您是否有任何存储此登录信息的技术,以便我可以从我的代码隐藏中获取它?

c# asp.net session caching

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

何时使用泛型和类型检查?

假定A通过Z将26类我所定义.在以下示例中:

  private List<A> _listA;
  private List<B> _listB;
  // private List<C>, and so on, through...
  private List<Z> _listZ;

  private void setLabelA()
  {
      LabelA.Text = _listA.Count;
  }

  // private void setLabelB() exists
  // and so does setLabelC()
  // and so on, all the way through to...

  private void setLabelZ()
  {
      LabelA.Text = _listZ.Count;
  }
Run Code Online (Sandbox Code Playgroud)

在我看来除了以下之外没有办法缩短这个:

  private void setLabel<genericType>(List<genericType> list)
  {
      if(list is List<A>)      LabelA.Text = _listA.Count;
      else if(list is List<B>) LabelB.Text = _listB.Count;
      else if(list is List<C>) LabelC.Text …
Run Code Online (Sandbox Code Playgroud)

c# generics reflection

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

Java foreach是否会创建副本?

我有一个关于这个foreach的问题:

    for(Element e : nullProof(setOfElements)){
            // do stuff
    }
Run Code Online (Sandbox Code Playgroud)

让我们假设我定义了函数nullProof来返回一个非null的Set(因为我听说你不应该将null传递给一个增强的for循环.这是真的吗?):

    private Set<Element> nullProof(Set<Element> s){
          return s == null ? Collections.<Element> emptySet() : s;
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是...... 在foreach中调用nullProof函数是否安全?具体来说,以下标题相当于:

    for(Element e : setOfElements){    //assuming setOfElements != null
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人可以指出一些Java标准,它说这是定义的行为.

此外,有人可以解释这个foreach被称为"幕后"实际发生的事情吗?

假设setOfElements的大小为6.对于通过setOfElements的每次迭代,JVM是否会查找setOfElements 6次,还是创建该组的副本并引用该副本?我试图理解这种行为.谢谢您的帮助!

java foreach jvm

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

是否有可能提前退出构造函数?

我想知道是否可以提前退出函数,绕过正文中的其余代码.例如:

  public class SOMECLASS {

      public SOMECLASS( int i ) {
          gotoSwitchCase(i);
          additionalTask();    // method body is irrelevant
      }

      private void gotoSwitchCase(int i) {
          switch (i) {
          case 0:
              /* exit ctor prematurely  */
              break;
          default:
              /* set some instance variables, return to ctor */
          }
      }
  }
Run Code Online (Sandbox Code Playgroud)

我知道我可以if(i==0){return;}在开始时插入additionalTask()以跳过该部分.但是,我更感兴趣的是,是否有一种方法可以优雅地退出构造函数(或任何函数)而无需访问其余部分.类似于例外,但不是致命的.

java

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