小编say*_*han的帖子

烧瓶中的全局变量是否安全?如何在请求之间共享数据?

在我的应用程序中,通过发出请求来更改公共对象的状态,响应取决于状态.

class SomeObj():
    def __init__(self, param):
        self.param = param
    def query(self):
        self.param += 1
        return self.param

global_obj = SomeObj(0)

@app.route('/')
def home():
    flash(global_obj.query())
    render_template('index.html')
Run Code Online (Sandbox Code Playgroud)

如果我在我的开发服务器上运行它,我希望得到1,2,3等等.如果同时向100个不同的客户提出请求,可能出现问题吗?预期的结果是100个不同的客户端每个都看到1到100之间的唯一数字.或者会发生这样的事情:

  1. 客户端1查询.self.param增加1.
  2. 在可以执行return语句之前,线程切换到客户端2. self.param再次递增.
  3. 线程切换回客户端1,然后客户端返回数字2,比如说.
  4. 现在线程移动到客户端2并返回他/她的数字3.

由于只有两个客户端,预期结果为1和2,而不是2和3.跳过了一个数字.

当我扩展我的应用程序时,这会发生吗?我应该看一下全局变量的替代方案?

python thread-safety flask

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

如何找到另一个字符串的字符串切片的起始偏移量?

给定一个字符串和一个引用某个子字符串的切片,是否可以找到切片的开始和结束索引?

我有一个ParseString函数,它接受一个字符串的引用,并尝试根据某种语法解析它:

ParseString(inp_string: &str) -> Result<(), &str>
Run Code Online (Sandbox Code Playgroud)

如果解析没问题,结果就是Ok(()),但如果有错误,它通常在某个子字符串中,错误实例是Err(e),其中e是该子字符串的一个切片。

当给出发生错误的子字符串时,我想说类似“从字符 x 到 y 的错误”之类的内容,其中 x 和 y 是错误子字符串的开始和结束索引。

我不想直接在 中编码错误的位置Err,因为我嵌套了这些调用,并且嵌套切片中的偏移量可能与顶级字符串中的某个切片不对应。

string rust

7
推荐指数
2
解决办法
1708
查看次数

当一个字符串值在c ++中为整数变量赋值时会发生什么?

我刚开始学习c ++(原谅我的noobish查询).这是我作为练习编写的一些代码:

#include<iostream>

int main()
{
    using namespace std;

    int foo;
    cin >> foo;

    int bar;

    cin >> bar;
    cout << "foo plus bar is " << foo+bar<< endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,当输入都是数字时,此代码完全正常.但是当我为第一个输入输入一个字符串时(只是为了看看会发生什么),程序不会向我询问第二个输入,cout结果是foo plus bar is 0.我想知道的是,cin当我将字符串分配给整数变量时,为什么程序会跳过我的第二个.感谢您的帮助.

c++ variables

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

列表上的布尔运算意味着什么?

我正在pyftpdlib寻找源头,我发现了这个:

if self.rejected_users and self.allowed_users: raise AuthorizerError("rejected_users and allowed_users options are mutually exclusive")

rejected_users并且allowed_users是列表.令我困惑的是and操作员如何操作两个列表.如果有人帮助我,我会很感激的.

python boolean

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

为什么在Scala List前面添加一个常量时间操作,但是附加一个线性时间操作?

我现在正在从Odersky的"Scala编程"中学习Scala,我刚读完这篇文章

...附加到列表所花费的时间随着列表的大小线性增长,而前缀为::需要恒定时间...

为什么在线性时间附加到附加到列表但是只有不变的时间来预先添加到列表中.我目前的猜测是它以某种方式在内部实现为链接列表,这将解释两个操作之间的差异.在这种情况下,如何实现具有恒定时间附加的ListBuffers?

scala

4
推荐指数
2
解决办法
1103
查看次数

无符号整数数组如何包含负整数?

我编写这段代码只是为了看看如果我将一个负整数放入无符号整数数组中会发生什么.

#include <iostream>

int main()
{
    using namespace std;

    unsigned int array[4];
    array[0]=4;
    array[1]=4;
    array[2]=2;
    array[3]=-2;

    cout << array[0] + array[1] + array[2] + array[3] << endl;

    unsigned int b;
    b=-2;
    cout << b <<endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望在这两种情况下都会发生整数溢出.但是,仅在实际发生的第二种情况下.在第一种情况下,一切都表现得好像它是一个oridinary整数数组,而不是一个无符号整数数组.那么究竟发生了什么导致了这种异常行为.在任何重要的情况下,我的编译器都是gcc 4.8.谢谢您的帮助.编辑:这是我电脑上的输出

8
4294967294
Run Code Online (Sandbox Code Playgroud)

c++ arrays unsigned

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

标签 统计

c++ ×2

python ×2

arrays ×1

boolean ×1

flask ×1

rust ×1

scala ×1

string ×1

thread-safety ×1

unsigned ×1

variables ×1