小编eri*_*rip的帖子

为什么我们可以在C++中将解除引用的指针递增到常量数据?

我很惊讶c ++允许将解除引用的指针递增到一个常量数据,它不应该允许通过指向const数据的指针.考虑一下代码:

#include<iostream>
#include<climits>
using namespace std;

int main(){
    int x = 2;

    const int *xPtr2 = &x;
    *xPtr2++;
    cout << x << endl;

}
Run Code Online (Sandbox Code Playgroud)

但是x的值仍然是2.这意味着*xPtr2实际上没有增加.我也试过*xPtr2 = 3,但这次它显示了编译错误.为什么会这样?

c++ pointers

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

python args不工作,除非它有一个位置引用

def test_stats(team, *args):

    if not args:
          [do some stuff]
    else:

        team_fixtures = (Fixtures.objects.filter(home_team=team_details.id) | Fixtures.objects.filter(away_team=team_details.id))/
.filter(fixture_datetime__lt=datetime.now()).filter(fixture_datetime__year=args[0])
Run Code Online (Sandbox Code Playgroud)

为了参考起见 - args是:

date_year = datetime.now().year
Run Code Online (Sandbox Code Playgroud)

为了使这个查询工作,我需要引用args为

.filter(fixture_datetime__year=args[0])
Run Code Online (Sandbox Code Playgroud)

因为如果我使用

.filter(fixture_datetime__year=args)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

int()参数必须是字符串,类似字节的对象或数字,而不是'元组'

我知道它认为它是一个元组,即使它只是一个值,但是当我在终端中执行以下操作时

type(date_year)
Run Code Online (Sandbox Code Playgroud)

我上课了.

当它看起来只有一个值返回时,为什么我必须在这里引用位置?

python args

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

这些Python函数没有预期的运行时间

(我不确定这个问题是属于这里还是CS论坛.我把它保留在这里因为它有特定于Python的代码.如果需要请迁移!)我现在正在研究算法,使用Python作为我的首选工具.今天,我想绘制一个简单问题的三种变体的运行时间:计算给定序列(列表)的前缀平均值.

以下是三种变体:

import timeit

seq = [20, 45, 45, 40, 12, 48, 67, 90, 0, 56, 12, 45, 67, 45, 34, 32, 20]

# Quadratic running time
def quad (S):
    n = len(S)
    A = [0] * n

    for j in range(n):
        total = 0
        for i in range(j+1):
            total += S[i]
        A[j] = total / (j+1)

    return A

# Use prev result
def prev (S):
    n = len(S)
    A = [0] * n

    for j in range(n):
        if j …
Run Code Online (Sandbox Code Playgroud)

python algorithm

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

为什么套接字在列表理解中关闭但在for循环中没有?

我正在尝试在Python中创建可用端口列表.我正在学习本教程,但不是打印开放端口,而是将它们添加到列表中.

最初,我有类似以下内容:

available_ports = []

try:
    for port in range(1,8081):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result = sock.connect_ex((remoteServerIP, port))
        if result == 0:
            available_ports.append(port)
        sock.close()

# ...
Run Code Online (Sandbox Code Playgroud)

这显然工作正常,但众所周知,理解比循环更快,所以我现在有:

try:
    available_ports = [port for port in range(1, 8081) if not socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex((remoteServerIP, port))]

# ...
Run Code Online (Sandbox Code Playgroud)

我假设套接字不会关闭,但我测试了以下内容:

try:
    available_ports = [port for port in range(1, 8081) if not socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex((remoteServerIP, port))]

    for port in range(1,8081):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result = sock.connect_ex((remoteServerIP, port))
        if result == 0:
            print("Port {}: …
Run Code Online (Sandbox Code Playgroud)

python sockets list-comprehension

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

为什么我的current_user不通过flask-login进行身份验证?

我的目标是使主视图(/)成为登录页面。用户登录后,将根据其角色呈现另一个页面。登录(/auth)时,我看到正确输入了用户名和密码。然后它尝试渲染/,告诉我我的用户没有经过身份验证并渲染/login。以下是描述此内容的视图:

观看次数

@app.route("/login")
def login():
    return flask.render_template('login.html')

@app.route("/", methods=["GET"])
def home():
    if current_user.is_authenticated:
        if current_user.is_admin():
            return flask.render_template('admin_index.html')
        return flask.render_template('user_index.html')
    logger.info("Not authenticated. Going back to login.")
    return flask.render_template('login.html')


@app.route("/auth", methods=["POST"])
def auth():
    username = request.form['username']
    password = request.form['password']
    user = db.session.query(User).filter(User.username == username).first()
    logger.info(user)
    logger.info("{0}: {1}".format(username, password))
    print("user exists? {0}".format(str(user != None)))
    print("password is correct? " + str(user.check_password(password)))
    if user and user.check_password(password):
        user.is_authenticated = True
        login_user(user)
        return flask.redirect(url_for('home'))
    return flask.redirect(url_for('login'))
Run Code Online (Sandbox Code Playgroud)

问题是我尝试登录后,flask-login current_user.is_authenticated总是返回 …

authentication flask python-3.x flask-login

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

使用静态函数变量vs类变量来存储某些状态

可以说我有这样的功能:

void processElement() {
    doSomething(someArray[lastProcessedElement + 1]);
}
Run Code Online (Sandbox Code Playgroud)

问题是,每次调用此函数时,我都需要存储我调用doSomething的最后一个元素.所以在这里我有两个选择:

  • 我可以创建一个名为lastProcessedElement的私有类变量,并在每次调用该函数时递增它的值.这种方法似乎最常见.所以代码可以是这样的:

    class Foo {
        int lastProcessedElement = 0;     
    
        public:  
        void processElement() {
            doSomething(someArray[++lastProcessedElement]);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 作为第二个选项,我可以在函数中创建一个静态变量并每次递增它:

    // Class is not important here, so the function is:
    void processElement() {
        static int lastProcessedElement = 0;
        doSomething(someArray[++lastProcessedElement]);
    }
    
    Run Code Online (Sandbox Code Playgroud)

第一个解决方案增加了一些我不想要的复杂性.我喜欢把东西放在原地.

我知道第二个解决方案只有在该类只有一个实例时才有效.

那么使用静态变量法是一个很好的解决方案?是否有多实例类的在线解决方案?(可以有一个解决这个特定的数组元素索引的东西,但我刚刚做了,我说的是为函数的下一次调用存储一些值)

c++ static-variables class-variables

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

为什么NLTK库中有不同的Lemmatizers?

>> from nltk.stem import WordNetLemmatizer as lm1
>> from nltk import WordNetLemmatizer as lm2
>> from nltk.stem.wordnet import WordNetLemmatizer as lm3
Run Code Online (Sandbox Code Playgroud)

对我来说,这三个作品都是以同样的方式,但只是为了确认,它们是否提供了不同的东西?

python nlp nltk lemmatization

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

如何在Akka Cluster中测试订阅者的接收方法?

我有以下Subscriber抽象基类:

abstract class Subscriber(topics: Seq[String]) extends Actor with ActorLogging {
  import DistributedPubSubMediator.{ Subscribe, SubscribeAck }

  val mediator = DistributedPubSub(context.system).mediator

  // subscribe to each topic
  topics.foreach{mediator ! Subscribe(_, self)}

  def receive = {
    case SubscribeAck(Subscribe(name, None, `self`)) ?
      log.info(s"Subscribing to $name")
  }
}
Run Code Online (Sandbox Code Playgroud)

我想测试它是否接收发布到子类订阅的主题的消息.一些简单的伪代码表明如下:

val topic = "foo"

class FooSubscriber extends Subscriber(Seq(topic))

val fooSubActor = system.actorOf(Props[FooSubscriber])    
val mediator = DistributedPubSub(system).mediator
val msg = "This is a string"

// Publish the msg to the "foo" topic.
mediator ! Publish(topic, msg) …
Run Code Online (Sandbox Code Playgroud)

unit-testing scala akka akka-cluster distributedpubsub

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

如何使用play-json编写和读取空案例类?

我有一个与HTTP GET请求对应的空案例类:

case class GetFoo() extends MyQueryRequest {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

每个消息都有一个伴随对象,描述了它的隐式JSON编写器和阅读器:

object GetFoo extends MyImplicitJsonProvider[GetFoo] {
  implicit val write = Json.writes[GetFoo]
  implicit val read = Json.reads[GetFoo]
}
Run Code Online (Sandbox Code Playgroud)

但是,因为GetFoo没有参数,所以没有办法(de)序列化它:

Unapply of object GetFoo没有参数.你在使用空的案例类吗?

将伪布尔变量注入构造函数的解决方法GetFoo,但这是一个kludge.我想将GetFoo(de)serializable作为一个空的JSON对象.我怎样才能做到这一点?

由于GET请求不发送数据,因此如果读取器/写入器被使用则抛出异常会更好,因为请求不应该被写入或读取,但是扩展类需要.

我的设计依赖于GetX类扩展MyQueryRequest和扩展的GetX伴随对象MyImplicitJsonProvider[GetX].

serialization scala case-class play-json

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

为什么无法在 Windows 上清理临时目录中的文件处理程序文件?

我有一些代码可以在 UNIX 系统上正常运行,但不能在 Windows 上运行。我想让它跨平台,但我的头撞在墙上。最小重现如下:

文件一:foo.py

import os
import sys
import logging

logging.basicConfig(level=logging.INFO, stream=sys.stdout)
logger = logging.getLogger('foo')

def main(dir):
    logger.addHandler(logging.FileHandler(
        os.path.join(dir, 'temporary.log')
    ))

    logger.info("Hello, world!")
Run Code Online (Sandbox Code Playgroud)

文件2:main.py

from foo import main

import tempfile

if __name__ == "__main__":
    with tempfile.TemporaryDirectory("test") as tmp:
        main(tmp)
Run Code Online (Sandbox Code Playgroud)

我期望的是,将创建临时目录,在其中创建一个文件,向其发出日志,然后在tmp超出范围时将清除这两个文件。

相反,Windows 提供了一个错误:

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '...'
Run Code Online (Sandbox Code Playgroud)

我尝试过更改FileHandler远离追加模式的模式,我尝试过手动清理文件和目录,我尝试过延迟文件的创建,直到其记录并提高日志级别,并且我'我什至尝试在内部实例化记录器,foo.main希望不会保留对处理程序的引用 - 不管怎样,我仍然看到这个错误。

我怎样才能解决这个问题?

python windows logging file-permissions temporary-directory

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