Mercurial有一种打印根目录(包含.hg)的方法
hg root
Run Code Online (Sandbox Code Playgroud)
在git中是否有类似的东西来获取包含.git目录的目录?
我试图追踪Windows Vista和Windows 7中堆内存功能的巨大减速(我没有在任何服务器版本上测试).它根本不会发生在Windows XP上,只发生在微软较新的操作系统上.
我最初使用Windows上的PHP编译遇到了这个问题.脚本本身似乎以预期的速度运行,但在脚本执行后,我在内部PHP关闭功能中遇到了1-2秒的延迟.在启动调试后,我发现它与PHP内存管理器使用HeapAlloc
/ HeapFree
/有关HeapReAlloc
.
我追溯到HEAP_NO_SERIALIZE
堆函数上使用标志:
#ifdef ZEND_WIN32
#define ZEND_DO_MALLOC(size) (AG(memory_heap) ? HeapAlloc(AG(memory_heap), HEAP_NO_SERIALIZE, size) : malloc(size))
#define ZEND_DO_FREE(ptr) (AG(memory_heap) ? HeapFree(AG(memory_heap), HEAP_NO_SERIALIZE, ptr) : free(ptr))
#define ZEND_DO_REALLOC(ptr, size) (AG(memory_heap) ? HeapReAlloc(AG(memory_heap), HEAP_NO_SERIALIZE, ptr, size) : realloc(ptr, size))
#else
#define ZEND_DO_MALLOC(size) malloc(size)
#define ZEND_DO_FREE(ptr) free(ptr)
#define ZEND_DO_REALLOC(ptr, size) realloc(ptr, size)
#endif
Run Code Online (Sandbox Code Playgroud)
和(这实际上是设置为默认HeapAlloc
/ HeapFree
/ HeapReAlloc
在函数)start_memory_manager
:
#ifdef ZEND_WIN32
AG(memory_heap) = HeapCreate(HEAP_NO_SERIALIZE, 256*1024, 0);
#endif
Run Code Online (Sandbox Code Playgroud)
我删除了HEAP_NO_SERIALIZE
参数(替换为0),它修复了问题.脚本现在可以在CLI和SAPI Apache …
我正在尝试使用FaultException和FaultException <T>来确定我们的应用程序中的最佳使用模式.我们需要支持WCF以及非WCF服务使用者/客户端,包括SOAP 1.1和SOAP 1.2客户端.
仅供参考:使用带有wsHttpBinding的FaultExceptions会导致SOAP 1.2语义,而使用带有basicHttpBinding的FaultExceptions会导致SOAP 1.1语义.
我使用以下代码抛出FaultException <FaultDetails>:
throw new FaultException<FaultDetails>(
new FaultDetails("Throwing FaultException<FaultDetails>."),
new FaultReason("Testing fault exceptions."),
FaultCode.CreateSenderFaultCode(new FaultCode("MySubFaultCode"))
);
Run Code Online (Sandbox Code Playgroud)
FaultDetails类只是一个简单的测试类,它包含一个字符串"Message"属性,如下所示.
使用wsHttpBinding时,响应是:
<?xml version="1.0" encoding="utf-16"?>
<Fault xmlns="http://www.w3.org/2003/05/soap-envelope">
<Code>
<Value>Sender</Value>
<Subcode>
<Value>MySubFaultCode</Value>
</Subcode>
</Code>
<Reason>
<Text xml:lang="en-US">Testing fault exceptions.</Text>
</Reason>
<Detail>
<FaultDetails xmlns="http://schemas.datacontract.org/2004/07/ClassLibrary" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Message>Throwing FaultException<FaultDetails>.</Message>
</FaultDetails>
</Detail>
Run Code Online (Sandbox Code Playgroud)
根据SOAP 1.2规范,这看起来是正确的.主/根"代码"是"发件人",其"子代码"为"MySubFaultCode".如果服务使用者/客户端正在使用WCF,则客户端上的FaultException也会模仿相同的结构,其中faultException.Code.Name为"Sender",faultException.Code.SubCode.Name为"MySubFaultCode".
使用basicHttpBinding时,响应是:
<?xml version="1.0" encoding="utf-16"?>
<s:Fault xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode>s:MySubFaultCode</faultcode>
<faultstring xml:lang="en-US">Testing fault exceptions.</faultstring>
<detail>
<FaultDetails xmlns="http://schemas.datacontract.org/2004/07/ClassLibrary" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Message>Throwing FaultException<FaultDetails>.</Message>
</FaultDetails>
</detail>
</s:Fault>
Run Code Online (Sandbox Code Playgroud)
这看起来不对.看一下SOAP 1.1规范,当我使用FaultCode.CreateSenderFaultCode(new FaultCode("MySubFaultCode"))时,我希望看到"faultcode"的值为"s:Client.MySubFaultCode".此外,WCF客户端的结构也不正确.faultException.Code.Name是"MySubFaultCode"而不是"Sender",而faultException.Code.SubCode是null而不是faultException.Code.SubCode.Name是"MySubFaultCode".此外,faultException.Code.IsSenderFault为false.
使用FaultCode.CreateReceiverFaultCode时出现类似问题(新的FaultCode("MySubFaultCode")):
这个项目也是由其他人在2006 …