我有一个使用的脚本Parallel::ForkManager
.但是,即使在所有子进程完成后,wait_all_children()进程也需要非常长的时间.我知道的方法是打印一些时间戳(见下文).有谁知道可能导致这种情况的原因(我的机器上有16个CPU内核)?
my $pm = Parallel::ForkManager->new(16);
for my $i (1..16) {
$pm->start($i) and next;
... do something within the child-process ...
print (scalar localtime), " Process $i completed.\n";
$pm->finish();
}
print (scalar localtime), " Waiting for some child process to finish.\n";
$pm->wait_all_children();
print (scalar localtime), " All processes finished.\n";
Run Code Online (Sandbox Code Playgroud)
很明显,我会先得到Waiting for some child process to finish
消息,比如说时间戳7:08:35
.然后我会得到一个Process i completed
消息列表,最后一个消息7:10:30
.但是,All Processes finished
直到7:16:33
(!)我才收到消息.为什么在7:10:30到7:16:33之间有6分钟的延迟?谢谢!
我有一个DAO,我曾经使用JPA加载和保存我的域对象.我终于设法使交易工作正常,现在我又遇到了另一个问题.
在我的测试用例中,我调用我的DAO来加载具有给定id的域对象,检查它是否已加载,然后调用相同的DAO来删除刚刚加载的对象.当我这样做时,我得到以下内容:
java.lang.IllegalArgumentException: Removing a detached instance mil.navy.ndms.conops.common.model.impl.jpa.Group#10
at org.hibernate.ejb.event.EJB3DeleteEventListener.performDetachedEntityDeletionCheck(EJB3DeleteEventListener.java:45)
at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:108)
at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74)
at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:794)
at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:772)
at org.hibernate.ejb.AbstractEntityManagerImpl.remove(AbstractEntityManagerImpl.java:253)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:180)
at $Proxy27.remove(Unknown Source)
at mil.navy.ndms.conops.common.dao.impl.jpa.GroupDao.delete(GroupDao.java:499)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy28.delete(Unknown Source)
at mil.navy.ndms.conops.common.dao.impl.jpa.GroupDaoTest.testGroupDaoSave(GroupDaoTest.java:89)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at …
Run Code Online (Sandbox Code Playgroud) 我们有一个网络应用程序,我们几乎每天更新和发布.我们使用git作为我们的VCS,我们当前的分支策略非常简单和破坏:我们有一个主分支,我们检查我们感觉良好的变化.这是有效的,但直到我们检查一个突破性的变化.
有没有人对小型团队有最喜欢的git分支策略,满足以下要求:
理想情况下,我很乐意看到一个开发人员处理新bug的分步过程
这是我在处理更复杂系统时经常遇到的问题,而且我从来没有想过要解决的好方法.它通常涉及共享对象主题的变体,其构造和初始化必然是两个不同的步骤.这通常是因为体系结构要求,类似于applet,因此建议我合并构造和初始化的答案是没有用的.系统最迟必须以Java 4为目标,因此建议仅在以后的JVM中提供支持的答案也没有用.
举个例子,假设我有一个类,它被构造成适合应用程序框架,如下所示:
public class MyClass
{
private /*ideally-final*/ SomeObject someObject;
MyClass() {
someObject=null;
}
public void startup() {
someObject=new SomeObject(...arguments from environment which are not available until startup is called...);
}
public void shutdown() {
someObject=null; // this is not necessary, I am just expressing the intended scope of someObject explicitly
}
}
Run Code Online (Sandbox Code Playgroud)
我无法使someObject成为final,因为在调用startup()之前无法设置它.但我真的希望它反映它的一次写入语义,并能够从多个线程直接访问它,最好避免同步.
我的想法是表达和执行一定程度的最终性,我猜想我可以创建一个通用的容器,就像这样(UPDATE - 更正此类的线程化代码):
public class WormRef<T>
{
private volatile T reference; // wrapped reference
public WormRef() {
reference=null;
}
public WormRef<T> init(T val) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试运行一个相当大的查询,该查询应该每晚运行以填充表格.我收到一个错误,Incorrect key file for table '/var/tmp/#sql_201e_0.MYI'; try to repair it
但我正在使用的存储引擎(无论默认是什么,我猜?)不支持修复表.
我该如何解决这个问题,以便运行查询?
我想在命令行上将datetime值传递给我的python脚本.我的第一个想法是使用optparse并将值作为字符串传递,然后使用datetime.strptime将其转换为日期时间.这在我的机器上工作正常(python 2.6),但是我还需要在运行python 2.4的机器上运行这个脚本,它没有datetime.strptime.
如何将日期时间值传递给python 2.4中的脚本?
这是我在2.6中使用的代码:
parser = optparse.OptionParser()
parser.add_option("-m", "--max_timestamp", dest="max_timestamp",
help="only aggregate items older than MAX_TIMESTAMP",
metavar="MAX_TIMESTAMP(YYYY-MM-DD HH24:MM)")
options,args = parser.parse_args()
if options.max_timestamp:
# Try parsing the date argument
try:
max_timestamp = datetime.datetime.strptime(options.max_timestamp, "%Y-%m-%d %H:%M")
except:
print "Error parsing date input:",sys.exc_info()
sys.exit(1)
Run Code Online (Sandbox Code Playgroud) 在UNIX环境中阅读高级编程中的管道时,我注意到在fork之后,父级可以close()
读取管道的末尾,并且它不会关闭子级的读取端.当一个进程分叉时,它的文件描述符会被保留吗?
我的意思是,在fork之前,管道读取文件描述符的保留计数为1,并且在fork 2之后.当父级关闭其读取侧时,fd变为1并且为子级保持打开状态.这基本上是发生了什么?常规文件描述符是否也会出现这种情况?
我听说最好在应用启动时打开一个连接,并在应用关闭时关闭它.
多个连接会出现什么问题?
有任何文章,最好的做法是有一个连接?
你对sql ce有什么经验?
在Xcode中编辑plist文件时,它可以检测plist的类型并显示人类可读的字符串,以便更容易编辑文件.例如,Info.plist.
感谢这个问题,我找到了(或者)存储结构定义的地方,如InfoPlistStructDefs.xcodeplugin.但是,如果我把自己的文件放在那里,没有什么有趣的事情发生.也就是说,它不会显示在可能的属性列表类型列表中.
那么有谁知道如何使Xcode或外部属性列表编辑器应用程序识别自定义plist结构定义?