在Python中,我不时会看到块:
try:
try_this(whatever)
except SomeException as exception:
#Handle exception
else:
return something
Run Code Online (Sandbox Code Playgroud)
try-except-else存在的原因是什么?
我不喜欢那种编程,因为它使用异常来执行流控制.但是,如果它包含在语言中,那么必须有充分的理由,不是吗?
我的理解是,异常不是错误,它们只应用于特殊情况(例如我尝试将文件写入磁盘,没有更多空间,或者我没有权限),而不是流程控制.
通常我将异常处理为:
something = some_default_value
try:
something = try_this(whatever)
except SomeException as exception:
#Handle exception
finally:
return something
Run Code Online (Sandbox Code Playgroud)
或者如果我真的不想在发生异常时返回任何内容,那么:
try:
something = try_this(whatever)
return something
except SomeException as exception:
#Handle exception
Run Code Online (Sandbox Code Playgroud) 我们一直在使用Mock for python.
现在,我们有一种情况,我们想要模拟一个函数
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Run Code Online (Sandbox Code Playgroud)
通常,模拟这个的方法是(假设foo是对象的一部分)
self.foo = MagicMock(return_value="mocked!")
Run Code Online (Sandbox Code Playgroud)
甚至,如果我打电话给foo()几次我可以使用
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Run Code Online (Sandbox Code Playgroud)
现在,我面临的情况是,当输入参数具有特定值时,我想返回固定值.所以如果让我们说"my_param"等于"某事"那么我想要返回"my_cool_mock"
这似乎可以在mock上用于python
when(dummy).foo("something").thenReturn("my_cool_mock")
Run Code Online (Sandbox Code Playgroud)
我一直在寻找如何与Mock达成同样的目标并没有成功?
有任何想法吗?
我读的越多,我就越困惑.
请注意,所有问题都与服务和外观如何适应MVC模式有关.
我的理解是Facade不是一个超级智能对象,它只是一种暴露简单接口/ api来执行复杂操作的方式(例如:执行10 $付款,这是一个复杂的操作,涉及一些操作,但这样的复杂性可以通过一个外观来处理,它只会按特定的顺序调用相应的对象......等等...)
现在,服务是一种执行对几个DAO的调用以获得复杂数据结构的方法(我对此不太确定,但这是我目前所理解的).
那么问题是,外观和服务之间有什么区别?在一天结束时,外观可以完美地访问几个DAO,以便通过提供简单的界面来执行复杂的操作,并且服务似乎类似于某些东西.
交易也是如此,我知道服务是开始交易的地方,但我同样觉得它们也可以放在外墙上,毕竟外立面也可以调用几个DAO.
那么哪个堆栈会更有意义
controller-facade-dao controller-service-dao
或者可能
controller-facadade-dao有时候是controller-facade-service-dao ??
我想在两个2D numpy数组中获得相交(公共)行.例如,如果以下数组作为输入传递:
array([[1, 4],
[2, 5],
[3, 6]])
array([[1, 4],
[3, 6],
[7, 8]])
Run Code Online (Sandbox Code Playgroud)
输出应该是:
array([[1, 4],
[3, 6])
Run Code Online (Sandbox Code Playgroud)
我知道如何用循环来做这件事.我正在寻找一种Pythonic/Numpy方式来做到这一点.
我正在使用spring-mvc开发一个Web应用程序.
现在可以使用@ Controller,@ Service和@Repository构造型.
我发现@Controller特别有用,特别是因为我正在使用
<context:component-scan base-package="my.cool.controller"/>
Run Code Online (Sandbox Code Playgroud)
现在,关于@Service和@Repository,到目前为止看起来像
那么,除了更好的例外,还有其他任何优势吗?注释类是否会影响性能?
我必须处理足够大的xml文档(高达1GB)并使用python解析它们.我正在使用iterparse()函数(SAX样式解析).
我关注的是,假设你有一个这样的xml
<?xml version="1.0" encoding="UTF-8" ?>
<families>
<family>
<name>Simpson</name>
<members>
<name>Homer</name>
<name>Marge</name>
<name>Bart</name>
</members>
</family>
<family>
<name>Griffin</name>
<members>
<name>Peter</name>
<name>Brian</name>
<name>Meg</name>
</members>
</family>
</families>
Run Code Online (Sandbox Code Playgroud)
问题是,当然知道我什么时候得到一个姓氏(如辛普森一家),当我得到一个家庭成员的名字时(例如荷马)
到目前为止我一直在做的是使用"开关",告诉我是否在"成员"标签内,代码看起来像这样
import xml.etree.cElementTree as ET
__author__ = 'moriano'
file_path = "test.xml"
context = ET.iterparse(file_path, events=("start", "end"))
# turn it into an iterator
context = iter(context)
on_members_tag = False
for event, elem in context:
tag = elem.tag
value = elem.text
if value :
value = value.encode('utf-8').strip()
if event == 'start' :
if tag == …
Run Code Online (Sandbox Code Playgroud) 我正面临一种情况,我想确保如果一个方法被修改,它运行不需要超过X毫秒(基本上如果该功能较慢,它将减慢我们网页上的搜索结果,并且对销售产生不良影响).
我们有单元测试(特别是代码是在python下完成的,我们使用py.test),第一个想法是断言如果函数没有在小于X ms内执行,那么将测试标记为失败(或者提升一个警告).
然而,这感觉很危险(例如,并非所有计算机都具有相同的速度),而且我也不确定这是单元测试的工作.
有人遇到过类似的情况吗?对我而言,速度是一项功能,我希望确保随着代码的发展,此功能在将来不会丢失.
如果单元测试不是答案,您会推荐哪些其他替代方案?
谢谢
我正在写一个网络服务.
通常,输入将是XML文档和输出XML或JSON.
该应用程序使用具有不同层的MVC模式
我的理解是应该在Controller层上尽快完成基本验证(即:针对XSD的XML).
之后,我仍然需要执行额外的验证,例如,一些此类验证是基本的
据我所知,在将XML解组为Java对象时,应该进行这样的基本验证.这也会发生在控制器层中(尽管验证本身将由解组XML的Java对象完成)
最后,我面对更复杂的验证示例
这种"复杂"的值似乎是javax.validation.Validator接口的完美候选者.并且感觉它们应该在Controller层中完成.
问题是
在该项目中,我此刻的表单元素(如工作<input>
,<select>
,<textarea>
等)必须有非标"看正感觉".
您可以为此推荐哪个库或插件(jQuery)?
我搜索了一些可用的库,但没有找到适合我需求的库.所有人都有'真实' - '假'元素的想法,他们.该项目有很多表单元素即时创建并注入DOM.
主要要求是:
我正在努力使用一个库,几乎"适应"它的要求,但它缺乏文档,许可证不清楚我是否可以修改它.
非常感谢你的帮助!
亲切的问候.
我对Java应用程序有一个非常奇怪的问题.
基本上它是一个使用玉兰(一个cms系统)的网页,在生产环境中有4个实例可用.有时CPU在java进程中达到100%.
所以,第一种方法是进行线程转储,并检查有问题的线程,我发现的是奇怪的:
"GC task thread#0 (ParallelGC)" prio=10 tid=0x000000000ce37800 nid=0x7dcb runnable
"GC task thread#1 (ParallelGC)" prio=10 tid=0x000000000ce39000 nid=0x7dcc runnable
Run Code Online (Sandbox Code Playgroud)
好吧,这很奇怪,我从来没有像这样的垃圾收集器,所以接下来我们做的是激活JMX并使用jvisualvm检查机器:堆内存使用率非常高(95%).
天真的方法:增加内存,所以问题需要更多的时间才能在重新启动的服务器上出现,结果,内存增加(6 GB!)问题出现在重新启动后20小时,而其他服务器上的内存较少(4GB!)运行了10天,这个问题还需要几天才能重新出现.此外,我尝试使用服务器失败的apache访问日志,并使用JMeter将请求重播到本地服务器,以尝试重现错误...它也不起作用.
然后我更多地调查了日志以找到这个错误
info.magnolia.module.data.importer.ImportException: Error while importing with handler [brightcoveplaylist]:GC overhead limit exceeded
at info.magnolia.module.data.importer.ImportHandler.execute(ImportHandler.java:464)
at info.magnolia.module.data.commands.ImportCommand.execute(ImportCommand.java:83)
at info.magnolia.commands.MgnlCommand.executePooledOrSynchronized(MgnlCommand.java:174)
at info.magnolia.commands.MgnlCommand.execute(MgnlCommand.java:161)
at info.magnolia.module.scheduler.CommandJob.execute(CommandJob.java:91)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
Run Code Online (Sandbox Code Playgroud)
另一个例子
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOf(Arrays.java:2894)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:117)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:407)
at java.lang.StringBuilder.append(StringBuilder.java:136)
at java.lang.StackTraceElement.toString(StackTraceElement.java:175)
at java.lang.String.valueOf(String.java:2838)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at java.lang.Throwable.printStackTrace(Throwable.java:529)
at org.apache.log4j.DefaultThrowableRenderer.render(DefaultThrowableRenderer.java:60) …
Run Code Online (Sandbox Code Playgroud) python ×5
java ×4
spring ×2
unit-testing ×2
annotations ×1
css ×1
elementtree ×1
exception ×1
facade ×1
forms ×1
iterparse ×1
javascript ×1
jquery ×1
magnolia ×1
memory ×1
mocking ×1
mockito ×1
numpy ×1
pytest ×1
sax ×1
spring-mvc ×1
styles ×1
try-catch ×1
validation ×1
web-services ×1
xml ×1