标签: static-variables

asp.net页面中的静态变量

我对Asp.net页面中静态变量的使用存在疑问.

我有一页说UserDetails.aspx.在这个页面中,我有一个静态变量来存储特定于用户的一些数据.那么,这个变量是否会在多个用户之间共享,或者为每个用户创建一个单独的变量?

  public partial class UserDetails : System.Web.UI.Page
    {
       static int numberOfReviews=0;
       protected void Page_Load(object sender, EventArgs e)
         {
            numberOfReviews= GetReviews();
         }
    }
Run Code Online (Sandbox Code Playgroud)

在这里,numberOfReviews是特定于每个用户还是将被共享?

numberOfReviews

asp.net static-variables

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

Python中的高效memoization

我有一些任务需要解决,目前最重要的部分是使脚本尽可能节省时间.我试图优化的一个要素是其中一个函数中的memoization.

所以我的问题是:以下3-4种方法中哪一种是在Python中实现memoization的最有效/最快的方法?

我只提供了代码作为示例 - 如果其中一种方法更有效,但在我提到的情况下,请分享您所知道的内容.

解决方案1 ​​ - 使用外部范围的可变变量

此解决方案通常显示为示例memoization,但我不确定它的效率如何.我听说使用全局变量(在这种情况下,它是从外部变量而不是全局变量)效率较低.

def main():
    memo = {}
    def power_div(n):
        try:
            return memo[n]
        except (KeyError):
            memo[n] = (n ** 2) % 4  # example expression, should not matter
            return memo[n]
    # extensive usage of power_div() here
Run Code Online (Sandbox Code Playgroud)

解决方案2 - 使用默认的可变参数

我发现在过去使用默认的可变参数从外部作用域传递变量,当Python首先在本地作用域中搜索变量,然后在全局作用域中,跳过非局部作用域(在本例中为范围内)功能main()).因为默认参数仅在定义函数时初始化,并且只能在内部函数内部访问,因此它可能更有效吗?

def main():
    def power_div(n, memo={}):
        try:
            return memo[n]
        except (KeyError):
            memo[n] = (n ** 2) % 4  # example expression, should not matter
            return memo[n]
    # extensive usage of power_div() …
Run Code Online (Sandbox Code Playgroud)

python performance memoization static-variables argument-passing

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

在单元测试期间重置类静态变量

我正在尝试为遗留代码编写单元测试.我正在测试的类有几个静态变量.我的测试用例类有几个@Test方法.因此,他们都拥有相同的状态.

有没有办法在测试之间重置所有静态变量?

我提出的一个解决方案是明确重置每个字段,例如:

field(MyUnit.class, "staticString").set(null, null);
((Map) field(MyUnit.class, "staticFinalHashMap").get(null)).clear();
Run Code Online (Sandbox Code Playgroud)

如您所见,每个变量都需要自定义重新初始化.这种方法不容易扩展,遗留代码库中有很多这样的类.有没有办法一次性重置所有内容?也许每次重新上课?

作为一个可能的好解决方案,我认为是使用类似powermock的东西,并为每个测试创建一个单独的类加载器.但我看不到简单的方法.

java unit-testing legacy-code static-variables

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

local()与R中的其他闭包方法有何不同?

昨天我从Bill Venables那里了解到local()如何帮助创建静态函数和变量,例如,

example <- local({
  hidden.x <- "You can't see me!"
  hidden.fn <- function(){
    cat("\"hidden.fn()\"")
  }
  function(){
    cat("You can see and call example()\n")
    cat("but you can't see hidden.x\n")
    cat("and you can't call ")
    hidden.fn()
    cat("\n")
  }
})
Run Code Online (Sandbox Code Playgroud)

从命令提示符的行为如下:

> ls()
[1] "example"
> example()
You can see and call example()
but you can't see hidden.x
and you can't call "hidden.fn()"
> hidden.x                 
Error: object 'hidden.x' not found
> hidden.fn()
Error: could not find function "hidden.fn"
Run Code Online (Sandbox Code Playgroud)

我已经在R中的静态变量中讨论过这种事情 …

closures r local static-variables

16
推荐指数
2
解决办法
486
查看次数

为什么由返回另一个静态变量的方法调用初始化的静态变量保持为空?

我根本不理解以下代码的执行流程:

class Test {
    static String s1 = getVal();
    static String s2 = "S2";

    private static String getVal() {
        return s2;
    }

    public static void main(String args[]) {
        System.out.println(s2); // prints S2
        System.out.println(s1); // prints null
    }
}
Run Code Online (Sandbox Code Playgroud)

它应该S2在第二个println声明打印.我更感兴趣的是理解为什么会发生这种情况而不是解决方案.

java static-variables

16
推荐指数
2
解决办法
467
查看次数

C#中的静态变量

在C#中,有没有办法将静态变量放在像VB.Net这样的方法中?

Static myCollection As Collection
Run Code Online (Sandbox Code Playgroud)

c# variables static-variables

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

为什么GCC没有警告无法访问的代码?

我想知道为什么gcc(4.6.3)没有给我这个例子中无法访问的代码的警告:

#include <stdio.h>

int status(void)
{
    static int first_time = 1;

    if (first_time) {
        return 1;   
        first_time = 0; /* never reached */
    } else {
        return 0;   
    }     
}

int main(int argc, const char *argv[])
{
    printf("first call %d\n", status());
    printf("second call %d\n", status());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

注意,故障status()功能的目的是保持状态.我曾期望得到一个警告-Wall.我也试过了-Wunreachable-code,-Wextra(-pedantic这里-ansi讨论的那样).然而,这些都没有给我一个警告.

看来gcc会默默地删除静态变量赋值.

在我看来,gcc选项-Wall -Werror应该抛出一个错误.

c gcc static-variables gcc-warning

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

我可以在C++中更改静态变量初始化顺序吗?

我在Visual Studio 2015 sp3中使用C++.通过

#pragma init_seg(compiler)
Run Code Online (Sandbox Code Playgroud)

,我首先初始化一些静态变量(到内存管理). https://msdn.microsoft.com/en-us/library/7977wcck.aspx

但是还有

#pragma init_seg(compiler)
Run Code Online (Sandbox Code Playgroud)

在wcerr.cpp(Microsoft Visual Studio 14.0\VC\crt\src\stl\wcerr.cpp)中,所以这些对象在我的对象之前初始化.

我可以wcerr.cpp通过任何编译/链接选项强制我的对象在对象之前被初始化吗?

c++ pragma static-variables visual-studio visual-studio-2015

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

java静态变量存储在内存中的位置?

class A{
 static int i = 10;
 static int j = 20;

 static void getname(){

   }

}
Run Code Online (Sandbox Code Playgroud)

这些变量将存储在内存中的哪个位置?

java static-variables

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

为什么此静态const int成员变量似乎可以在数组定义中公开访问?

我作以下声明:

class Servo {

protected:

    static const int maxServos = 16;    
    static Servo servos[maxServos]; //Array declaration
};

Servo Servo::servos[Servo::maxServos]; //Array definition
Run Code Online (Sandbox Code Playgroud)

...它可以编译,很棒!但是我不明白为什么要编译它,因为在我看来maxServos受保护了,并且在定义数组时在全局范围内使用它。我尝试在另一个全局上下文中使用它,的确确实得到了编译错误:

int main() {
    std::cout << Servo::maxServos;  //This will not compile.
}
Run Code Online (Sandbox Code Playgroud)

那么发生了什么 ?数组的整个定义是否受命名空间限定的范围的影响?是编译器故障吗?

我正在使用Lubuntu 16.04 O / S在Raspberry PI上使用g ++ -std :: c ++ 11。

c++ access-control static-variables language-lawyer c++11

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