你知道任何一个积极开发的C / C ++库,它可以把一堆(最好是大量的)4D顶点,投射到三维空间,相对于一些任意的“四维摄像机”投影matrix,并输出规则的三维顶点我可以提供给OpenGL硬件加速可视化? 我还需要能够在4D空间执行标准转换(平移,沿着所有4个轴的旋转和均匀缩放)。
我得到一个“内部编译器错误”与此使用GCC 4.9.2: #include <type_traits> template <typename T, typename, int, template <typename U, U, U> class> struct Sort; template <typename T, template <T…> class Z, TN, T… Is, template <typename U, U, U> class Comparator> struct Sort<T, Z<N, Is…>, 0, Comparator> { template <T I> struct less_than : std::integral_constant<bool, Comparator<T, I, N>::value> { }; }; int […]
我注意到,在浏览器之间有一些cookie的真正的不一致之处。 这对我来说将是相当长的。 注意:我在我的主机文件“testdomain.com”中设置了一个域,这个bug在使用“localhost”的时候工作。 注2:我很好奇,知道如果这个工作在Apache / PHP上时,如果它返回一个cookie的集合,如果你通过名字检索一个cookie。 维基百科 维基百科指出: http : //en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path 域和path Cookie域和path定义了Cookie的范围 – 它们告诉浏览器,cookies应该只发送给给定域和path的服务器。 如果未指定,则默认为请求的对象的域和path。 所以如果我们按下: Response.Cookies.Add(new HttpCookie("Banana", "2") { }); 我们应该从所请求的对象中获得一个域作为域的cookie,在这种情况下,它应该是“testdomain.com”。 W3 W3在cookies的规范中声明: http : //www.w3.org/Protocols/rfc2109/rfc2109 域=域名 可选的。 “域”属性指定cookie有效的域。 明确指定的域必须始终以点开头。 所以如果我们按下: Response.Cookies.Add(new HttpCookie("Banana", "1") { Domain = Request.Url.Host }); 我们明确地推下了主机名,我们应该在cookie上设置一个域名,这个域名会以“.testdomain.com”作为前缀。 它还说明了维基百科上的内容: 域默认为请求主机。 (请注意,请求主机的开头没有点。) 跟我到目前为止? 如果我使用第一种方法,定义一个域: Response.Cookies.Add(new HttpCookie("Banana", "1") { Domain = Request.Url.Host }); […]
在从mscorlib浏览PinnableObjectCache的代码时,遇到以下代码: for (int i = 0; i < m_restockSize; i++) { // Make a new buffer. object newBuffer = m_factory(); // Create space between the objects. We do this because otherwise it forms // a single plug (group of objects) and the GC pins the entire plug making // them NOT move to Gen1 and […]
根据MSDN文档和Stephen Toub的回答 ,我的C#应用程序应该使用每个处理器组中的每个逻辑处理器,因为它是根据需要configuration的(请参阅下面的App.config)。 我使用NUMA体系结构在Windows Server 2012上运行我的应用程序:2 x [cpu Xeon E5-2697 v3,每个处理器有14个核心,每个都有超线程激活] => 2 x 14 x 2 = 56个逻辑处理器。 我的应用程序从“线程类”或“Parallel.For”启动80个线程,在这两种情况下,只需要28个逻辑处理器,全部来自同一个处理器组。 为什么任务调度程序只在一个处理器组上分配我的线程? 我的代码在GitHub上可用,或者可执行文件可以在我的主页上下载 我已经在social.msdn.microsoft.com上提出了这个问题,没有任何答案。 更新2015-01-26:我在connect.microsoft.com上报告了一个错误 更新2015-01-30:我添加了CoreInfo转储作为额外的参考。 更新2015-01-30:问题也发生在prime95 ,它只提供select28个线程(不是C#相关) 更新2015-01-30:现在,我的工具可以显示更多信息,如每个节点的处理器掩码。 这听起来像我没有访问其他节点(节点我不跑) 更新2015-02-02,我们没有在这个特定的服务器上安装思杰(对不起,我错了) 更新2015-02-02,我们联系了HP … 更新2015-02-03,添加更多信息到我的程序显示processorGroup每个线程和更less的小工具。 更新2015-02-17,在与惠普开发团队交谈之后,我更新了自己的答案,以反映我学到的东西。 (只是想提一下,我收到了来自HP的优秀支持) 惠普在2015-05-13更新中,在“客户咨询”笔记中确认了这个问题。 看到这个链接的文件ID: c04650594 我将.Net 4.5(或4.5.1)App.Config设置为: <?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <Thread_UseAllCpuGroups enabled="true"></Thread_UseAllCpuGroups> <GCCpuGroup enabled="true"></GCCpuGroup> <gcServer enabled="true"></gcServer> </runtime> <startup> <supportedRuntime version="v4.0" […]
在Cython中使用复数的正确方法是什么? 我想写一个纯粹的C循环使用dtype np.complex128的numpy.ndarray。 在Cython中,关联的Ctypes是在Cython/Includes/numpy/__init__.pxd as ctypedef double complex complex128_t 所以这似乎只是一个简单的C双复杂。 但是,很容易获得奇怪的行为。 特别是有了这些定义 cimport numpy as np import numpy as np np.import_array() cdef extern from "complex.h": pass cdef: np.complex128_t varc128 = 1j np.float64_t varf64 = 1. double complex vardc = 1j double vard = 1. 线 varc128 = varc128 * varf64 可以由Cython编译,但是gcc不能编译生成的C代码(错误是“testcplx.c:663:25:error:两个或多个数据types在声明说明符中”,似乎是由于typedef npy_float64 _Complex __pyx_t_npy_float64_complex; )。 […]
我有一个代码块,需要打开并使用UNCpath从NAS服务器读取很多小文本文件。 此代码是最初用C ++编写的模块的一部分,但现在正在转换为C#。 C#版本明显较慢。 我确定打开文件的电话几乎占了所有的性能差异。 使用WireShark我发现这是因为System.IO.File.Open调用比类似的C ++代码更多的SMBnetworking请求。 C ++代码进行这个调用: FILE *f = _wfsopen(fileName, L"r", _SH_DENYWR); 这会导致以下一系列SMB请求: NT Create AndX Request, FID: 0x0004, Path: \\a\\i\\a\\q\\~141106162638847.nmd NT Create AndX Response, FID: 0x0004 Trans2 Request, QUERY_FILE_INFO, FID: 0x0004, Query File Basic Info Trans2 Response, FID: 0x0004, QUERY_FILE_INFO Read AndX Request, FID: 0x0004, 1327 bytes at offset 0 Read […]
我创build了一个完美的应用程序,直到用户select125%或150%。 这会打破我的申请。 后来我发现了一种通过检测DPI来查找字体大小的方法。 这个工作很好,直到用中文版本的Windows 7开始使用我的应用程序。 整个应用程序在中文窗口7中断。从我所知道的(我不能真正testing它,因为我只有英文版本和安装语言包不会导致问题)中国字符造成了一个奇怪的DPI,打破了我的申请。 我现在的代码是这样的: if (dpi.DpiX == 120) //For 125% fonts { //Resize form and set default font to correct problems } else if (dpi.DpiX == 96) //For 100 and 150% fonts { //Resize form and set default font to correct problems } 在英文版本的Windows 7上,这个版本很好用,但不知何故,中文版本正好跳过了这个版本,而且表格本身也被破坏了,控件甚至没有显示出来,字体也非常大,推动了这个问题,图片框被移动了。 那么,在没有检测API的情况下,检测窗口字体比例(100%,125%和150%)的好方法是什么? 我需要一些可以在所有的Windows 7操作系统和语言上运行的东西。
我正在尝试在.net(c#)中添加一个未处理的exception处理程序,该程序应该尽可能为“用户”提供帮助。 最终用户大多是程序员,所以他们只需要提示他们操作错误的对象。 我正在开发一个窗口类似于Windows XP的错误报告,当一个应用程序崩溃,但给出尽可能多的imediate信息imediatly关于抛出的exception。 虽然堆栈跟踪使我(因为我有源代码)查明问题的根源,用户没有它,所以他们丢失没有进一步的信息。 不用说,我不得不花费大量的时间来支持这个工具。 有几个系统exception,如Dictionary集合引发的KeyNotFoundExceptionexception,因为它们没有在消息中包含没有find的关键字,所以这真是令我烦恼。 我可以使用大量的try catch块来填充代码,但是它相当具有侵略性,并且有更多的代码需要维护,更不用说更多的string了,而这些string必须被本地化。 最后问题:有没有什么办法来获得(在运行时)调用堆栈跟踪中的每个函数的参数的值? 只有这一点可以解决90%的支持电话。
以前的标题:“我必须更换全球运营商的新增和删除来更改第三方代码中的内存分配策略吗? 小故事:我们需要更换第三方库中的内存分配技术,而不更改其源代码。 很长的故事: 考虑一下内存限制的应用程序,它可以实现巨大的dynamic分配(也许几乎所有可用的系统内存)。 我们使用专门的分配器,并在任何地方使用它们( shared_ptr ,容器等)。 我们对应用程序中分配的每个单字节内存都有完全的控制权。 另外,我们需要链接到第三方的帮助程序库 。 这个讨厌的人以某种标准的方式进行分配,使用默认的运算符new , new[] , delete delete[]或malloc或其他非标准的东西(让我们概括并说我们不知道这个库如何pipe理它的堆分配)。 如果这个帮助程序库进行足够大的分配,我们可以得到HDD抖动,内存碎片和alignment问题,内存不足bad_alloc以及各种问题。 我们不能(或不想)更改库源代码。 第一次尝试: 我们从来没有在发布版本中有过这样的邪恶“黑客”。 首先testing覆盖运营商的new作品罚款,除了: 我们不知道将来会有什么等待我们(这太糟糕了) 我们的用户(甚至是我们的分配者)现在必须以与我们相同的方式分配 问题: 有没有办法钩住这些分配而不会使全局运算符重载? (本地lib只钩子?) …如果我们不知道它到底用了什么: malloc或new ? 这个签名清单是否完整? (而且没有其他的东西我们必须执行): void* operator new (std::size_t size) throw (std::bad_alloc); void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) throw(); void* operator new (std::size_t size, void* ptr) throw(); […]