Tag: C#的

什么是一个很好的独特的PC标识符?

我一直在看本教程中的代码,并且发现它使用My.Computer.Name来保存不应该在计算机之间漫游的设置。 但是,对于用户来说,完全有可能具有两个相同名称的PC。 例如,如果他们想要在每台PC上使用相同的用户名,那么最终可能会有两台名为“用户名PC”的PC。 什么是识别不同PC的好方法? 电脑是否有与之相关的GUID,或者我应该考虑从某些硬件拉出序列号? 我不在乎是否通过重新安装Windows仍然存在。 (我链接的教程是在VB.Net,但我正在实施它在C#中)

如何find实际的可打印区域? (的PrintDocument)

为什么发现这个神奇的矩形如此困难? 在OnPrintPage事件中,我有PrintPageEventArgs,并试图在最大可打印区域的范围内使用graphics进行绘制。 我已经尝试过使用PageBounds,PrintableArea,Graphics.VisibleClipBounds等等。所有都无法一直得到绘图区域,特别是从横向切换到纵向布局时。 从横向切换到纵向时,PrintableArea似乎不会改变。 我也注意到,如何设置Graphics.VisibleClipBounds是有区别的,如果我正在做一个打印预览和一个实际的打印。 在预览中,它总是显示肖像的宽度/高度,所以我必须检查是否是预览,我必须手动交换宽度/高度时,它是一个景观。 我需要一个algorithm来计算与当前Graphics上下文相关的可打印区域,而不是在实际绘图中不使用的任意理论打印区域。 我关心的是处理graphicsmatrix偏移。 到目前为止,我已经注意到graphics上下文是如何根据如下因素使用硬边缘进行预翻译的严重不一致: 如果OriginAtMargins是真的或假的(不像我想象的那样) 如果我正在打印到打印机,或使用PrintPreviewControl(我必须检查这是预览打印还是打印到页面以正确处理翻译) 如果我在家中使用我的打印机,或者我的打印机在工作(两者行为不同) 有没有一个标准的方法来处理这个? 我应该重置matrix吗? 当我将OriginAtMargins设置为true时,graphics预先翻译为84,84,但我的边际是100,100。 硬边缘是16,16。 不应该把它翻译成100,100吗? 由于0,0应该在页面边界,而不是硬边缘。 基本上我的方法应该总是在获得最好的可打印的矩形。 我只需要一个一致的,独立于设备的方法来确保我的绘图原点(0,0)位于页面的左上angular,以便上面的Rectangle对我有任何用处。

使用AVX CPU指令:没有“/ arch:AVX”

我的C ++代码使用SSE,现在我想改进它以支持AVX。 所以我检测AVX何时可用,并调用一个使用AVX命令的函数。 我使用Win7 SP1 + VS2010 SP1和一个带有AVX的CPU。 要使用AVX,有必要包含这一点: #include "immintrin.h" 然后你可以使用像_mm256_mul_ps函数,如_mm256_mul_ps , _mm256_add_ps等。问题是,默认情况下,VS2010产生的代码工作非常缓慢,并显示警告: 警告C4752:find英特尔(R)高级vector扩展; 考虑使用/ arch:AVX 看来VS2010实际上并不使用AVX指令,而是模拟它们。 我添加/arch:AVX的编译器选项,并取得了良好的效果。 但是这个选项告诉编译器在可能的地方使用AVX命令。 所以我的代码可能会在不支持AVX的CPU上崩溃! 所以问题是如何使VS2010编译器生成AVX代码,但只有当我直接指定AVX内部函数。 对于SSE它可以工作,我只是使用SSE内在函数,它产生的SSE代码没有像/arch:SSE这样的编译器选项。 但是对于AVX来说,由于某种原因它不起作用。

Waitpid相当于超时?

想象一下,我有一个启动多个subprocess的进程。 家长需要知道孩子什么时候退出。 我可以使用waitpid ,但是如果/当父节点需要退出,我无法告诉在waitpid阻塞的线程正常退出并join它。 把事情清理干净真好,但这可能不是什么大事。 我可以在WNOHANG使用waitpid ,然后在一段时间内进入睡眠状态,以防止忙碌的等待。 然而,我只能知道,如果一个孩子经常退出。 就我而言,我可能并不是超级批判,因为我知道孩子什么时候能够立即退出,但是我希望尽快知道… 我可以使用SIGCHLD的信号处理程序,并在信号处理程序中执行小孩退出时的任何操作,或者发送消息到不同的线程来执行某些操作。 但是使用一个信号处理程序会混淆一点点代码的stream程。 我真正想要做的就是在暂停时使用waitpid ,比如5秒。 既然退出这个过程不是一个时间要求很高的操作,我可以懒惰地指示线程退出,而在其余的时间里仍然阻塞它,随时准备做出反应。 有没有这样的电话在Linux? 哪一个最好呢? 编辑: 另一种基于回复的方法是用pthread \ _sigmask()在所有线程中阻塞SIGCHLD 。 然后在一个线程中,一边查找SIGCHLD一边继续调用sigtimedwait() 。 这意味着我可以在该呼叫中超时,并检查线程是否应该退出,如果没有,则保持阻止等待该信号。 一旦一个SIGCHLD传递给这个线程,我们可以立即对它作出反应,并在等待线程的行中,而不使用信号处理程序。

在C ++ 11中编写通用记忆function

寻找一种方法来实现一个通用的通用memoization函数,将采取一个函数,并返回相同的memoized版本? 在Python中寻找像@memo(来自Norving的网站)的装饰器。 def memo(f): table = {} def fmemo(*args): if args not in table: table[args] = f(*args) return table[args] fmemo.memo = table return fmemo 更一般的是,有没有办法用C ++来expressiongenerics和可重用的装饰器,可能使用C ++ 11的新特性?

如何在C#中执行SHA1文件校验和?

如何在文件上使用SHA1CryptoServiceProvider()来创build文件的SHA1校验和?

有没有什么办法来以编程方式确定一个C ++数组的大小? 如果没有,为什么?

这个问题受到类似问题的启发: 如何删除[]“知道”操作数数组的大小? 我的问题是有点不同: 有没有什么办法来以编程方式确定一个C ++数组的大小? 如果没有,为什么? 我见过的每个函数都需要一个整数参数来给它一个数组。 但是正如链接问题所指出的那样, delete[]必须知道要释放的内存的大小。 考虑一下这个C ++代码: int* arr = new int[256]; printf("Size of arr: %d\n", sizeof(arr)); 这将打印“ Size of arr: 4 ”,这只是指针的大小。 有一些打印256的函数会很好,但是我不认为它存在于C ++中。 (同样,问题的一部分是为什么它不存在。) 澄清 :我知道,如果我在栈上而不是堆声明数组(即“ int arr[256]; ”), sizeof运算符将返回1024(数组长度* sizeof(int))。

在OpenCV中将RGB转换为黑白

我想知道如何将RGB图像转换成黑白(二进制)图像。 转换后,如何将修改的图像保存到磁盘?

为什么在C#中不允许const参数?

对C ++开发人员来说,这看起来很奇怪。 在C ++中,我们用一个参数标记为const ,以确保它的状态不会在方法中改变。 还有其他C ++特定的原因,比如传递const ref以便通过ref传递,并确保状态不会被改变。 但为什么我们不能在C#中标记为方法参数const? 为什么我不能像以下声明我的方法? …. static void TestMethod1(const MyClass val) {} …. static void TestMethod2(const int val) {} ….

iOS 7 – 无法实例化默认视图控制器

我在一个新创build的应用程序中使用Xcode 5,当我创build它时,我去运行buttone点击它,然后项目build成,但它不显示在iOS模拟器,我得到以下消息: Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' – perhaps the designated entry point is not set? 当然,我已经使用了Google,所有人都指出这是因为XCode还不知道哪个视图控制器是最初的视图控制器。 但奇怪的是,我创build了应用程序作为基于页面(也尝试单视图和标签应用程序选项)的应用程序和XCode已经定义了一个故事板为它。 另外,当我进入项目的主界面选项时,故事板(由Xcode本身命名为“Main”)被设置,并且在Storyboard中,我的视图控制器被设置为“初始视图控制器” 哪里不对?