小编Ere*_*evi的帖子

Java:阻止覆盖成员变量

Java中一个有用的功能是将成员方法声明为final的选项,以便它不能在后代类中重写.成员变量有类似的东西吗?

class Parent {
  public final void thisMethodMustRemainAsItIs() { /* ... */ }
  public String thisVariableMustNotBeHidden;
}

class Child extends Parent {
  public final void thisMethodMustRemainAsItIs() { /* ... */ }  // Causes an error
  public String thisVariableMustNotBeHidden;  // Causes no error!
}
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,我应该详细说明这个场景:我在父类中有一个变量,应该由子类更新(因此它不能是私有的).但是,如果子类创建具有相同名称的变量,则会认为它已更新父变量,即使它更新了自己的副本:

class Parent {
    protected String myDatabase = null; // Should be updated by children
    public void doSomethingWithMyDatabase() { /* ... */ }
}

class GoodChild extends Parent {
    public GoodChild() {  
      myDatabase = "123"; 
      doSomethingWithMyDatabase();
    } …
Run Code Online (Sandbox Code Playgroud)

java oop

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

Bumping亚马逊机械土耳其人HIT

我们为两名玩家提供基于网络的游戏,我们通过亚马逊机械土耳其人提供.对于每场比赛,我们需要两个同时进入的球员,或者最多相距1分钟.我们注意到,在我们发布HIT后的最初几分钟,我们得到了很多工作人员,因为HIT位于搜索结果的第一页,但随后随着游戏移动到上一页,速率会下降.因此,为了获得足够的同时工作人员,我们必须删除HIT,并打开一个新的HIT.

有可能,而不是删除一个HIT,并打开一个新的HIT,以某种方式"撞"/"戳"旧的HIT,使它看起来像新的?

在许多广告网站中都可以这样做,在发布广告后,您可以将其添加到广告列表的头部.

mechanicalturk

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

创建一个类的异常安全包装器

我有一个遗留类C1,实现接口I,可能会抛出一些异常.

我想创建一个类C2,也实现接口I,它基于C1的实例,但是捕获所有异常并对它们做一些有用的事情.

目前我的实现看起来像这样:

class C2 implements I {
    C1 base;

    @Override void func1() {
      try {
         base.func1();
      } catch (Exception e) {
         doSomething(e);
      }
    }

    @Override void func2() {
      try {
         base.func2();
      } catch (Exception e) {
         doSomething(e);
      }
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

(注意:我也可以使C2扩展C1.这对当前的问题无关紧要).

该接口包含许多函数,因此我必须一次又一次地编写相同的try ... catch块.

有没有办法减少代码重复量?

java exception

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

无法git克隆OpenShift应用程序

我刚刚开了一个OpenShift帐户,并完成了本教程:

https://www.openshift.com/blogs/any-version-of-nodejs-you-want-in-the-cloud-openshift-does-it-paas-style

当我创建应用程序时,我收到以下错误:

erelsgl@erelsgl-H61MLC:~/mynode$ sudo rhc create-app mynode nodejs-0.6
Application Options
-------------------
  Namespace:  erel
  Cartridges: nodejs-0.6
  Gear Size:  default
  Scaling:    no

Creating application 'mynode' ... done


Waiting for your DNS name to be available ... done

Cloning into 'mynode'...
Warning: Permanently added the RSA host key for IP address '23.22.156.99' to the list of known hosts.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: The remote end hung up unexpectedly
Unable to clone your repository. Called Git with: git clone
ssh://522c....@mynode-erel.rhcloud.com/~/git/mynode.git/ "mynode"

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WARNING: …
Run Code Online (Sandbox Code Playgroud)

openshift openshift-client-tools

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

为整个项目设置环境变量

在Eclipse中,可以使用"运行配置"设置环境变量,但这仅适用于特定的主程序.

我在同一个项目中有许多不同的主程序,我想在所有项目中设置相同的环境变量.最简单的方法是什么?

eclipse environment-variables

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

我的 google-signin-client_id 是什么

我的网站曾经有一个链接,允许用户在 Open ID 2.0 中使用他们的 Google 帐户登录。自 2015 年 4 月 20 日起,这不再有效,因此我正在尝试迁移到 Google 登录。

此页面:https : //developers.google.com/identity/sign-in/web/sign-in#specify_your_apps_client_id

说:

使用 google-signin-client_id 元元素指定您在 Google Developers Console 中为您的应用程序创建的客户端 ID。

我不知道我的客户 ID 是什么。在我的 Google Developers Console 中:https : //console.developers.google.com/project

我只用 GoogleApp 创建了一个非常古老的应用程序,它与我所说的网站完全没有关系。无论如何,我尝试使用其项目 ID,但在单击登录按钮后出现以下错误:

401. That’s an error.

Error: invalid_client

The OAuth client was not found.
Request Details

    fetch_basic_profile=true
    scope=email profile openid
    response_type=permission
    redirect_uri=storagerelay://http/localhost?id=auth684995
    ss_domain=http://localhost
    client_id=imitatorgwt.apps.googleusercontent.com
    openid.realm=

That’s all we know.
Run Code Online (Sandbox Code Playgroud)

我到底应该在 google-signin-client_id 元标记中写什么?

migration google-openid

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

如何避免“ValueError:未找到分隔符,并且块超出限制”

我有一个按以下方式使用 asyncio 的服务器:

proc = await asyncio.subprocess.create_subprocess_exec(
    command,
    stdout=asyncio.subprocess.PIPE, 
    stderr=asyncio.subprocess.STDOUT)

async for line in proc.stdout:
    line = line.decode('utf-8').strip()
    print(line)
Run Code Online (Sandbox Code Playgroud)

问题是,如果proc.stdout包含太长的行,我会在for语句行中收到错误:

ValueError: Separator is not found, and chunk exceed the limit
Run Code Online (Sandbox Code Playgroud)

如何检测如此长的线路以提前避免此错误?

python-3.x python-asyncio

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

如何在程序结束时关闭数据库连接?

在 Java 程序中,我有一个单例类,用于保存整个程序使用的数据库连接。

当程序结束时,如何告诉 Java 关闭连接?

我可以在 main 的末尾放置一个 connection.close() 语句,但是如果程序意外结束,例如,由于未捕获的异常或程序中某处的“退出”调用,则不会执行该语句。无论程序如何结束,我如何告诉 Java 关闭连接?

java resources jdbc

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

在python断言中,如何在断言失败时打印条件?

在Python中,我可以这样做:

assert result==100, "result should be 100"
Run Code Online (Sandbox Code Playgroud)

但这是多余的,因为我必须输入两次条件.

有没有办法让Python在断言失败时自动显示条件?

python assert python-3.x

5
推荐指数
2
解决办法
1756
查看次数

有效地过滤字典

我们有一本字典d1和一个条件cond.我们希望d1只包含满足条件的值cond.一种方法是:

d1 = {k:v for k,v in d1.items() if cond(v)}
Run Code Online (Sandbox Code Playgroud)

但是,这会创建一个新的字典,如果d1很大,可能会非常低效.

另一种选择是:

for k,v in d1.items():
    if not cond(v):
       d1.pop(k)
Run Code Online (Sandbox Code Playgroud)

但是,这会在迭代时修改字典,并生成错误:"RuntimeError:字典在迭代期间改变了大小".

Python 3中就地过滤字典的正确方法是什么?

python dictionary python-3.x

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