小编Asa*_*bal的帖子

通过将新类型指定为通用的实际类型来扩展泛型有什么好处

我在某处看到了这种模式:

class A extends B<A> {

}
Run Code Online (Sandbox Code Playgroud)

通过将新类型指定为泛型的实际类型,此结构对于扩展泛型有点不寻常.有什么用?这个模式有名字吗?有没有替代模式?

示例:https://code.google.com/p/selenium/wiki/LoadableComponent

跳到: public class EditIssue extends LoadableComponent<EditIssue> {

编辑:阅读完回复后,我似乎需要改变编译器对类型检查的理解.在我的脑海里,我的牛肉有这种模式,如果两个A需要相同,那么有没有办法不重复它们?但似乎没有更好的方法将派生类的类型传播给父类.

java generics

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

我应该如何对长函数进行单元测试?

如果我有一个很长的代码方法,它从 2 个或 3 个不同的源收集数据并返回结果。我如何重构它以使其更易于单元测试?该方法是一种网络服务,我想从客户端代码进行一次调用来收集所有数据。

我可以将一些部分重构为更小的方法,这将更易于测试。但当前方法仍将调用这 5 个方法,并且可测试性仍然较差。假设 Java 作为编程语言,是否有一种模式可以使此类代码可测试?

java unit-testing

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

Windows 7上的ssh问题(gitbash与windows cmd)

我可以通过GitBash使用ssh(例如,对于带有heroku或github等的'git'),但我不能在同一台机器上的Windows cmd提示符下执行相同操作.可能是什么问题?如果我没记错的话,它曾经从cmd提示符开始工作.

我得到的错误是:

Permission denied (publickey). fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我得到了两个日志:这是cmd的最后四行,与'git bash'不同:

debug1: Trying private key: /.ssh/identity
debug1: Trying private key: /.ssh/id_rsa
debug1: Trying private key: /.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

在Git bash的情况下:各自的行是:

debug1: Trying private key: /c/Users/user1/.ssh/identity
debug1: Offering public key: /c/Users/user1/.ssh/id_rsa
debug1: Remote: Forced command: gerve user1
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
Run Code Online (Sandbox Code Playgroud)

解决

正如@snemarch暗示的那样,设置以下env var解决了我的问题:

set HOME=C:\Users\user1
Run Code Online (Sandbox Code Playgroud)

windows git ssh cmd

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

OAuth2:为什么我们需要为用户代理重定向URI

我最近用webserver流程创建了一个小应用程序.现在我正在尝试用户代理示例.我想知道为什么我们需要在用户代理流程中定义redirect-uri.

我正在使用Saleforce.com api:

http://wiki.developerforce.com/page/Digging_Deeper_into_OAuth_2.0_on_Force.com

redirect_uri授权服务器将通过重定向到此URI进行响应.此参数必须与应用程序配置的回调URL匹配.

oauth salesforce

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

JavaScript如何提升变量?

我知道JavaScript将所有变量声明移动到函数的顶部.但是,我在下面的console.log()中期望得到相同的结果.但是,我在第一种情况下获得NaN,在第二种情况下获得4次.

有人可以解释一下吗?我知道在StackOverflow上已经有类似的问题已经问过并回答了,但是这个问题与函数定义有关.例如,JavaScript是否将函数变量移动到变量声明的末尾?

var doB = function() { return a+1};
var b = a+1;
var a = 3;
console.log(b); // NaN
console.log(doB()); // 4
Run Code Online (Sandbox Code Playgroud)

javascript scope

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

应用于具有完全相同用法的两组不同类的设计模式

我正在编写一些代码来使用一些api的两个不同版本.这些版本中的每一个都在版本化的包中声明,例如{v1.Connection,v1.query,v1.Result}和{v2.Connection,v2.query,v2.result}等.除了类之外,客户端代码将完全相同是不同的.我可以在这里申请什么设计模式?我无法控制api方面.

design-patterns

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

为什么非阻塞Web请求有效,因为我们在两种情况下都持有服务器线程

问题是关于Play框架,尽管概念是通用的.

引用自:

https://www.playframework.com/documentation/2.6.18/ScalaAsync

在等待响应时将阻止Web客户端,但服务器上不会阻止任何内容,并且可以使用服务器资源为其他客户端提供服务.

使用未来只是图片的一半!如果你正在调用一个阻塞的API,比如JDBC,那么你仍然需要让你的ExecutionStage运行一个不同的执行器,将它从Play的渲染线程poo移开

我理解原始Web应用程序线程将被释放的部分,但是仍然需要另一个线程来实际执行cpu密集型操作然后计算结果,该结果将传播到客户端(同时被阻止).

如何比在play的动作代码中同步执行执行更好?我们必须增加线程数(因为阻塞请求将使用线程),但服务器上活动线程的总数将保持不变.

有人还可以了解Play如何跟踪被阻止的客户端线程并在非阻塞操作场景中返回响应?

scala playframework

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

windows/cmd上的可执行类型是什么?他们的优先事项是什么?

例如,如果路径上有多个可执行文件,即a.exe,a.bat和用户输入'a'(输入),哪个文件将执行?

Windows支持哪些其他可执行格式?

windows executable command-line

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

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

使用ssh密文的Jenkins配置

我能够使用本地git存储库运行jenkins构建,但只能使用no-passphrase ssh密钥.当我有密码时,我开始在构建中获得权限问题.

如何配置jenkins使用密码?

- 我也是ssh的新手.这是我如何配置我的jenkins(在ubuntu上).

su jenkins
ssh-keygen ....
cat key.pub

su user_with_github_repo
cd ~/.ssh/
append jenkins key.pub to authorized_keys
Run Code Online (Sandbox Code Playgroud)

ssh jenkins

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

为什么 'irb' shell 在 docker 命令中立即退出

这是我的 Dockerfile。

FROM ruby:2.4.0-alpine
RUN mkdir /app
WORKDIR /app
COPY Gemfile ./Gemfile
COPY Gemfile.lock ./Gemfile.lock
RUN bundle install -j 20
COPY . .
Run Code Online (Sandbox Code Playgroud)

这是我的 docker-compose 文件:

version: '2'
services:
  web:
    build: .
    command: "irb"
    volumes:
      - .:/app
Run Code Online (Sandbox Code Playgroud)

我预计这docker-compose up会打开一个 irb shell,但是 shell 立即退出。为什么会退出?

我可以通过 docker 使用 irb shell 做什么?

ruby irb docker docker-compose

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

Haskell newtype定义

我在为作业提供的代码中读到了这句话: -

newtype STR a = STR (Store -> (Result a, Store))
Run Code Online (Sandbox Code Playgroud)

以上链接使它看起来像:

a === (Store -> (Result a, Store))
Run Code Online (Sandbox Code Playgroud)

这怎么可能是一个有效的陈述?这是否意味着这a是一个以Store为参数并返回的函数('the same function wrapped in Result', Store)

haskell newtype

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

如何从Go通道获取(并忽略)一个值

我在select声明中有以下代码.finish是类型的bool.实际上,只要我收到任何东西,我甚至都不关心它的价值.但是,Go给了我一个未使用的变量错误.我怎么能绕过它呢?

case finish := <- termSig:
Run Code Online (Sandbox Code Playgroud)

我目前的解决方法是Println(finish).

我试过了: -

case _ := <- termSig:
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.

channel go

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