这个问题看起来非常简单,但奇怪的是我没有找到解决方案。
我的问题是关于在 a 中添加/声明一个 bean SpringBootTest
,而不是覆盖一个 bean,也不使用mockito 来模拟一个 bean。
这是我在尝试最简单的实现我的实际需求时得到的结果(但它不起作用):
一些服务、bean 和配置:
@Value // lombok
public class MyService {
private String name;
}
Run Code Online (Sandbox Code Playgroud)
@Value // lombok
public class MyClass {
private MyService monitoring;
}
Run Code Online (Sandbox Code Playgroud)
@Configuration
public class SomeSpringConfig {
@Bean
public MyClass makeMyClass(MyService monitoring){
return new MyClass(monitoring);
}
}
Run Code Online (Sandbox Code Playgroud)
考试:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = { SomeSpringConfig.class })
public class SomeSpringConfigTest {
private String testValue = "testServiceName";
// this bean is not used
@Bean
public MyService monitoringService(){ return new MyService(testValue); } …
Run Code Online (Sandbox Code Playgroud) 我可以跑:
run
run...
run/debug configuration
> +>的junit> test kind = all in package
>search for tests = in whole project
但是,如果我使用scala测试(+> scala测试>测试种类......)执行相同的(2),第一次测试失败非常奇怪(似乎object
没有实例化),而相同的测试通过,如果我使用它运行它(1)或(3)
配置:
奖金问题:如何运行所有测试(junit和scalatest)?
默认情况下,即使阵列基础被腌制,对numpy视图数组进行pickle也会丢失视图关系.我的情况是我有一些复杂的容器对象被腌制.在某些情况下,某些包含的数据是其他一些数据.保存每个视图的独立数组不仅会丢失空间,而且重新加载的数据也会丢失视图关系.
一个简单的例子是(但在我的例子中,容器比字典更复杂):
import numpy as np
import cPickle
tmp = np.zeros(2)
d1 = dict(a=tmp,b=tmp[:]) # d1 to be saved: b is a view on a
pickled = cPickle.dumps(d1)
d2 = cPickle.loads(pickled) # d2 reloaded copy of d1 container
print 'd1 before:', d1
d1['b'][:] = 1
print 'd1 after: ', d1
print 'd2 before:', d2
d2['b'][:] = 1
print 'd2 after: ', d2
Run Code Online (Sandbox Code Playgroud)
哪个会打印:
d1 before: {'a': array([ 0., 0.]), 'b': array([ 0., 0.])}
d1 after: {'a': array([ 1., 1.]), 'b': …
Run Code Online (Sandbox Code Playgroud) 在边缘节点上运行的Java应用程序中,我需要删除hdfs文件夹(如果存在).我需要在运行在文件夹中输出的mapreduce作业(带有spark)之前执行此操作.
我发现我可以使用这种方法
org.apache.hadoop.fs.FileUtil.fullyDelete(new File(url))
Run Code Online (Sandbox Code Playgroud)
但是,我只能使用本地文件夹(即正在运行的计算机上的文件URL).我尝试使用类似的东西:
url = "hdfs://hdfshost:port/the/folder/to/delete";
Run Code Online (Sandbox Code Playgroud)
与hdfs://hdfshost:port
hdfs namenode IPC.我用它来mapreduce,所以它是正确的.但它没有做任何事情.
那么,我应该使用什么网址,还是有其他方法?
注意:这是一个简单的项目.
我想动态设置实例方法的默认键参数。例如,与
class Module(object):
def __init__(self, **kargs):
set-default-key-args-of-method(self.run, kargs) # change run arguments
def run(self, **kargs):
print kargs
Run Code Online (Sandbox Code Playgroud)
我们会有:
m = Module(ans=42)
m.run.im_func.func_code.co_argcount # => 2
m.run.im_func.func_code.co_varnames # => ('self','ans','kargs')
m.run.im_func.func_defaults # => (42,)
m.run() # print {'ans':42}
Run Code Online (Sandbox Code Playgroud)
我尝试了一些带有 types.CodeType(我不太了解)的函数(不是方法)并让它工作(很好不会失败),但是添加的键参数没有显示在 kargs 中函数字典(它只打印 {})
必须仅对当前实例进行更改。实际上,我现在正在使用一个类(我认为我是 OO)所以我想用一个类方法来做它,但一个函数可能更好。就像是:
def wrapped_run(**kargs):
def run(**key_args):
print key_args
return wrap-the-run-function(run, kargs)
run = wrapped_run(ans=42)
run.func_code.co_argcount # => 1
run.func_code.co_varnames # => ('ans','key_args') ## keep the 'key_args' or not
run.func_defaults # => (42,)
run() # print {'ans':42} …
Run Code Online (Sandbox Code Playgroud) 我有Iterator[(A1,B1)]
两个功能
fA: (Iterator[A1]) => Iterator[A2]
和 fB: (Iterator[B1]) => Iterator[B2]
. 是否有可能在fAB: (Iterator[(A1,B1)]) => Iterator[(A2,B2)]
没有将迭代器转换为Seq 的情况下进行转换?
以下两个答案都很好.我选择了@ Aivean的答案,因为代码更简单,它使用专门的scala数据结构(Stream).
唯一的缺点是stackoverfow限制,但对于大多数用例来说它应该不是问题.如果你的迭代器非常(非常)长,那么@ Alexey的解决方案应该是首选的.
我正在尝试修复/调试使用嵌入式 tomcat 的 spring-boot web 应用程序中关闭连接过多的问题。问题出现是因为它关闭了应该保持活动的连接。
现在,我发现,Tomcat有配置限制保持活动连接数(见maxKeepAliveRequests
在https://tomcat.apache.org/tomcat-8.5-doc/config/http.html),并有可能是其它的配置,可以与问题有关。但我的问题是我没有看到这些参数在哪里给出,或者如果使用默认值我可以如何更改它们。
我的问题:我在哪里可以找到解释如何配置 spring-boot/embedded-tomcat keep-alive 参数的文档,这些参数是哪些?
当我重命名一个重命名文件的类时,在 intellij 中它会自动在 git 中暂存重命名的文件。
我希望 Intellij 停止这样做。有谁知道是否以及如何改变这种自动行为?
笔记:
我有 intellij 配置,这样当我创建一个新文件时,它会询问它是否应该将它添加到 git。如此处所述:Intellij Idea 能否自动阶段性更改
但是在重命名类/文件时,它不会询问任何内容
在我工作的项目中,部署参数——例如存储路径或数据库登录——通常通过参数文件给出,该文件存储在 war 文件中。
我发现这不合适,因为每次为不同的部署(开发与生产,更改执行计算机)打包 webapp 时都需要更改这些值。源代码被版本化,这让它更加麻烦。
有没有更好的选择来传递上面列出的参数?
更好,我的意思是:
编辑
我选择了@aksappy的答案来奖励答案中所做的工作,因为它提供了几种使用标准工具的方法。但是,根据上下文,我可以采用任何其他解决方案:
我想在 sbt 交互模式下运行几个 sbt 命令,即不离开 sbt “shell”?
(注意: 有些问题回答了如何在标准 shell 中使用 sbt 将参数传递给 sbt-commands。不是我在这里想要的)
示例:我在 sbt 交互式 shell 中,我想运行“test:compile”,然后运行“test”
我知道 test 会调用 required 编译,但在这个例子中,我想在任何测试开始之前运行所有子项目的编译。