我收到了之前工作过的人的代码,它包含很多行
while(false==find && false == err && k<kmax)
if(true==refract(ep1,ep2,n1,RI_blood, RI_collagen))
Run Code Online (Sandbox Code Playgroud)
我最喜欢的是
if(false == (ret_s<0))
Run Code Online (Sandbox Code Playgroud)
其他代码做得非常好,记录得很好,但是这些奇怪条件的这些线条让我失望了,我想知道为什么他们这样做了.
特别是那false==(ret_s<0)
是完全令人困惑的,你需要读三次这样的线来理解他们想要的东西.
这是一种常见的编程风格,难道我不理解其中的推理,还是仅仅是糟糕的风格?
编辑:我觉得这与if(object == NULL)vs if(NULL == object)类似,因为这不是关于意外分配而是关于asfuscated if子句......
My entry point should catch any exception not being handled at a lower level:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
namespace EyeScanner
{
static class Program
{
[FlagsAttribute]
public enum EXECUTION_STATE : uint
{
ES_AWAYMODE_REQUIRED = 0x00000040,
ES_CONTINUOUS = 0x80000000,
ES_DISPLAY_REQUIRED = 0x00000002,
ES_SYSTEM_REQUIRED = 0x00000001
// Legacy flag, should not be used.
// ES_USER_PRESENT = 0x00000004
}
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
/// <summary>
/// The …
Run Code Online (Sandbox Code Playgroud) 我有一个关于C#的问题.
我目前正在研究医疗软件产品,其中一个重要的事情是确保患者的数据是加密的.我有两个问题:
1.)System.Security.Cryptography中的.NET(Rijndael)的Microsoft .NET实现有多安全?它是否有任何已知的安全漏洞,或者我只是使用MS实现?(注意,我知道这些算法如何工作的基本背景,但我并不是那么深入了解它是如何工作的).
2.)由于数据与应用程序存储在同一台PC上,从C#应用程序获取信息有多难?假设我在代码中的某个地方
string encrypPassword = "ThisIsMyPassword";
string encryptedString = EncryptString(ClearString, encrypPassword);
// save encryptedString to harddrive
Run Code Online (Sandbox Code Playgroud)
我知道攻击者可以直接进入汇编代码,此时我无法对此做任何事情(系统必须能够加密/解密数据),但有一个快捷方式C#获取encrypPassword,因为它是托管的,或者做这样的事情还需要你去编译汇编代码?
我有很多代码
int myNumber = (int)(floatNumber);
Run Code Online (Sandbox Code Playgroud)
总共约占我CPU时间的10%(根据分析器).虽然我可以把它留在那里,但我想知道是否有更快的选择,所以我试着四处寻找,偶然发现
http://devmaster.net/forums/topic/7804-fast-int-float-conversion-routines/ http://stereopsis.com/FPU.html
我尝试实现那里给出的Real2Int()函数,但它给我错误的结果,并且运行速度较慢.现在我想知道,是否有更快的实现将double/float值置于整数,或SSE2版本的速度是否达到最快?我找到的页面可以追溯到一点,所以它可能只是过时了,更新的STL更快.
目前的实施方式:
013B1030 call _ftol2_sse (13B19A0h)
013B19A0 cmp dword ptr [___sse2_available (13B3378h)],0
013B19A7 je _ftol2 (13B19D6h)
013B19A9 push ebp
013B19AA mov ebp,esp
013B19AC sub esp,8
013B19AF and esp,0FFFFFFF8h
013B19B2 fstp qword ptr [esp]
013B19B5 cvttsd2si eax,mmword ptr [esp]
013B19BA leave
013B19BB ret
Run Code Online (Sandbox Code Playgroud)
相关问题我发现:
由于两者都是旧的,或者基于ARM,我想知道目前是否有这样的方法.请注意,它说最好的转换是不会发生的转换,但我需要它,所以这是不可能的.
我的项目使用Visual Studio 2012,我使用的是libfftw-3.3.lib来自他们的页面.当我在调试中构建我的项目时,它链接和编译就好了,我得到了一个有效的应用程序.当我将其设置为释放模式时,链接器会给我以下错误:
2>LINK : fatal error C1047: The object or library file '../IncludeLibs/libfftw-3.3-x86.lib' was created with an older compiler than other objects; rebuild old objects and libraries
2>LINK : fatal error LNK1257: code generation failed
Run Code Online (Sandbox Code Playgroud)
当我设置我的项目以输出.lib时,即使在发布模式下,它也可以,但不是.dll或.exe
有什么想法,或者我能做些什么来解决这个问题?
编辑:我的链接器设置,调试:
/OUT:"G:\GlukoseScanner\GlucoseScanner\Debug\MachineLearning.exe" /MANIFEST /NXCOMPAT /PDB:"G:\GlukoseScanner\GlucoseScanner\Debug\MachineLearning.pdb" /DYNAMICBASE "../debug/GlucoseDLL.lib" "shlwapi.lib" "../PicoScope/ps5000a.lib" "../C/cbw32.lib" "../DSO2250_SDK/Lib/SDK2250DLL.lib" "../IncludeLibs/libfftw-3.3-x86.lib" "../IncludeLibs/libfftwf-3.3-x86.lib" "mlpack.lib" "winmm.lib" "opengl32.lib" "glu32.lib" "..\..\armadillo-4.400.1\build\Release\armadillo.lib" "..\..\armadillo-4.400.1\examples\lib_win32\libblas.lib" "..\..\armadillo-4.400.1\examples\lib_win32\liblapack.lib" "..\libxml2\libxml2-2.7.8.win32\lib\libxml2.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /INCREMENTAL /PGD:"G:\GlukoseScanner\GlucoseScanner\Debug\MachineLearning.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\MachineLearning.exe.intermediate.manifest" /ERRORREPORT:PROMPT …
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试调试我的一个应用程序中的内存泄漏(是的,那个废话再次......),并试图设置gflags
设置,但对话框将无法打开.我安装了Windows 10 SDK(我在Windows 7 x64上),但它说它在Win7上也适用于描述,那为什么我根本不能使用它?
如果我gflags
从命令行开始,什么都没发生,没有错误,没有反馈,没有.
有人知道我的系统可能会发生什么吗?
我目前正在查看Boost的进程间库的文档,并试图弄清楚它们之间的区别.
从我可以说,唯一的区别是持久性(当最后一个进程退出时释放Windows共享内存,只有在被告知时才释放managed_shm),是否存在其他差异,如速度或我错过了?
我有一个问题,我的代码在将调试与发布进行比较时会返回不同的结果.我检查了两种模式都使用/ fp:exact,所以这不应该是问题.我对此的主要问题是完整的图像分析(它是一个图像理解项目)完全是确定性的,其中绝对没有任何随机性.
另一个问题是我的发布版本实际上总是返回相同的结果(图像为23.014),而debug返回22到23之间的一些随机值,这不应该是.我已经检查过它是否与线程相关,但算法中唯一的多线程部分会为调试和发布返回完全相同的结果.
还有什么可能发生在这里?
Update1:我现在发现的代码负责此行为:
float PatternMatcher::GetSADFloatRel(float* sample, float* compared, int sampleX, int compX, int offX)
{
if (sampleX != compX)
{
return 50000.0f;
}
float result = 0;
float* pTemp1 = sample;
float* pTemp2 = compared + offX;
float w1 = 0.0f;
float w2 = 0.0f;
float w3 = 0.0f;
for(int j = 0; j < sampleX; j ++)
{
w1 += pTemp1[j] * pTemp1[j];
w2 += pTemp1[j] * pTemp2[j];
w3 += pTemp2[j] * pTemp2[j];
} …
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
private const FlyCapture2Managed.PixelFormat f7PF = FlyCapture2Managed.PixelFormat.PixelFormatMono16;
public PGRCamera(ExamForm input, bool red, int flags, int drawWidth, int drawHeight) {
if (f7PF == FlyCapture2Managed.PixelFormat.PixelFormatMono8) {
bpp = 8; // unreachable warning
}
else if (f7PF == FlyCapture2Managed.PixelFormat.PixelFormatMono16){
bpp = 16;
}
else {
MessageBox.Show("Camera misconfigured"); // unreachable warning
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这段代码是无法访问的,但是我不希望这条消息出现,因为它是编译时的配置,只需要更改常量来测试不同的设置,每像素位数(bpp)会根据像素格式.是否有一个很好的方法让一个变量保持不变,从中导出另一个变量,但不会导致无法访问的代码警告?请注意,我需要两个值,在相机启动时需要将其配置为正确的像素格式,并且我的图像理解代码需要知道图像的位数.
那么,有一个很好的解决方法,还是我只是忍受这个警告?
我有以下代码:
std::vector<std::string> GetSameID(std::vector<string>& allFiles, int id) {
std::vector<std::string> returnVector;
for(std::vector<string>::iterator it = allFiles.begin(); it != allFiles.end(); ++it) {
if(GetID(*it) == id) {
int index = (*it).find("_CH2.raw");
if(index > 0) {
continue; //this works
}
if(0 < ((*it).find("_CH2.raw"))) {
continue; //this doesn't
}
string ext = PathFindExtension((*it).c_str());
if(ext == ".raw") {
returnVector.push_back(*it);
}
}
}
return returnVector;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么if(0 < ((*it).find("_CH2.raw")))
不这样做?我的文件名为ID_0_X_0_Y_128_CH1.raw ID_0_X_0_Y_128_CH2.raw(示波器上的通道1和通道2的ID,X和Y不同).
如果我做了很长的路(分配索引,然后检查索引),它的工作原理,我不明白为什么短版本,更易读的imo,不起作用.
c++ ×6
c# ×3
debug-mode ×1
fftw ×1
gflags ×1
linker ×1
openmp ×1
release-mode ×1
security ×1
windows ×1