有没有人有一些工具或一些推荐的练习如何找到一段与其他代码类似的代码?
我经常写一个函数或一个代码片段,我记得我之前已经编写了类似的东西,我想重用以前的实现,但是使用纯文本搜索并没有透露任何东西,因为我没有使用变量名称完全一样.
具有相似的代码片段会导致不必要的代码重复,但是如果代码库很大,则无法将所有代码保留在内存中.是否有任何工具可以对代码进行某些分析,并在功能方面标记片段或功能"相似"?
考虑以下示例:
float xDistance = 0, zDistance = 0;
if (camPos.X()<xgMin) xDistance = xgMin-camPos.X();
if (camPos.X()>xgMax) xDistance = camPos.X()-xgMax;
if (camPos.Z()<zgMin) zDistance = zgMin-camPos.Z();
if (camPos.Z()>zgMax) zDistance = camPos.Z()-zgMax;
float dist = sqrt(xDistance*xDistance+zDistance*zDistance);
Run Code Online (Sandbox Code Playgroud)
和
float distX = 0, distZ = 0;
if (cPos.X()<xgMin) distX = xgMin-cPos.X();
if (cPos.X()>xgMax) distX = cPos.X()-xgMax;
if (cPos.Z()<zgMin) distZ = zgMin-cPos.Z();
if (cPos.Z()>zgMax) distZ = cPos.Z()-zgMax;
float dist = sqrt(distX*distX +distZ*distZ);
Run Code Online (Sandbox Code Playgroud)
在我看来,这已经被多次询问和回答:
我建议在这里关闭重复.
实际上我认为这是一个更普遍的搜索问题,如:如何在StackOverflow上询问问题?
我正在使用Visual Studio,开发本机应用程序,我在使用__asm int 3或__debugbreak放置的代码中有一个程序断点(断言).有时当我点击它时,我想禁用它,以便在同一个调试会话中的连续命中不再进入调试器.我怎样才能做到这一点?
我想知道是否有任何方法可以使Dropzone.js(http://dropzonejs.com)使用标准浏览器POST而不是AJAX.
在提交之前可能会在DOM中注入输入type = file的某种方法吗?
Scala identity在Predef中有一个通用函数:
def identity[A](x: A): A
Run Code Online (Sandbox Code Playgroud)
Kotlin在标准库中有类似的功能吗?当然我可以简单地使用{ it },但我觉得identity更容易阅读,并且实例化所有这些lambdas有点浪费.
对于任何类型,我必须能够在需要identity函数的地方使用此函数.在Kotlin的类型系统中,这样的功能是否可行?(在Scala的情况下,有一个隐式转换,它将方法包装在一个函数对象中.)(Foo) -> FooFoo
我们假设我有一些最后有16位校验和的数据包.我想猜猜使用了哪种校验和算法.
首先,根据转储数据,我可以看到数据包有效载荷中的一个字节更改完全改变了校验和,因此我可以假设它不是某种简单的XOR或总和.
然后我尝试了CRC16的几种变体,但没有太多运气.
这个问题可能更倾向于加密,但我真的对任何易于理解的统计工具感兴趣,以找出这可能是哪个CRC.如果其他一切都失败了,我甚至可能会转向绘制不同的CRC算法.
Backgroud故事:我有串行RFID协议,带有某种校验和.我可以毫无问题地重播消息,并解释结果(没有校验和检查),但我无法发送修改后的数据包,因为设备将它们丢弃在地板上.
使用现有的软件,我可以改变RFID芯片的有效载荷.但是,唯一的序列号是不可变的,因此我无法检查每个可能的组合.虽然我可以生成递增1的值的转储,但不足以使详尽的搜索适用于此问题.
如果问题本身不够,可以使用包含数据的转储文件 :-)
需要参考文献? CRC错误检测算法的无意义指南是我在这里提问之后找到的很好的参考.
最后,在接受了答案的非常有用的提示之后,我 使用了这个CRC计算器,并使用已知校验和的xored生成校验和得到0xffff,这使我得出结论,最终xor是CCITT的0x0000的0xffff instread.
将存储库从VSS导入SVN后,有些文件我认为可能是VSS特定的 - 解决方案的.vsssc和.vssscc文件以及项目的.vspscc.它们似乎与VSS项目绑定有关.它们是否也需要(或有用)SVN?
我目前正在制作我们的应用程序大地址识别.经验表明,这样做有一些意想不到的陷阱.我创建这篇文章来制作一个需要采取的完整步骤列表.
AMD大地址识别指南中列出的开发注意事项提供了一个很好的起点,但绝不是完整的:
以下注意事项将有助于确保代码可以处理大于2GB的地址:
- 避免使用带符号的指针算法(即比较和添加)
- 指针使用所有32位.不要将Bit31用于其他方面.
- 一些dll将在2GB边界下加载.在这种情况下,VirtualAlloc()不能分配连续的内存.
- 尽可能使用GlobalMemoryStatusEx()(首选)或GlobalMemoryStatus()来检索内存大小.
因此,问题是:在制作C++ Win32本机应用程序大地址感知时需要完成哪些事情的完整列表?
要在JVM中调试类加载,我们可以使用param -verbose:class,但是......任何人都知道如何调试资源加载(例如属性文件)?
标题有点用词不当,我的意思是"C with classes".
让我解释一下,最近我买了一本书ShaderX7,它带有一个关于阴影映射技术的文章的Unigine引擎的精简版(和旧版).
当我意识到,虽然作者使用的是C++和继承以及所有C++的优点,但是我正在探讨代码,大多数方法内容基本上都是C风格的代码; 例如:
int Shader::get_param(const char *name,char *src,String &dest) const {
char *s = src;
int size = (int)strlen(name);
while(*s) {
if(!strncmp(s,name,size)) {
if((s == src || strchr("\n\r",*(s - 1))) && strchr(" \t",*(s + size))) {
src = s;
s += size;
dest.clear();
while(*s && strchr(" \t",*s)) s++;
while(*s && strchr(" \t\n\r",*s) == NULL) dest += *s++;
if(dest.isEmpty()) {
Log::error("Shader::get_param(): can't get \"%s\" \n",name);
return 0;
}
memmove(src,s,strlen(s) + 1);
return 1;
}
}
s++;
}
return …Run Code Online (Sandbox Code Playgroud) 我有一个用netbeans开发的应用程序,我想在jTextField显示一个面板时将焦点设置为某个.我已经阅读了一些帖子,并尝试了各种方法,但没有工作.其中一个主要问题是放置所需代码的位置,我相信在我的情况下this.txtMessage.requestFocusInWindow();
有一些帖子表明使用Window Listener,但是由于netbeans已经生成了GUI,我无法看到如何实现接口,因为我无法编辑创建jPANEL等的代码.整件事非常令人沮丧,我真的不相信这应该是那么困难.
就像测试一样,我将其添加requestFocusInWindow();到面板上的按钮,它确实将焦点设置为所需的输入.
c++ ×2
debugging ×2
java ×2
assert ×1
c ×1
checksum ×1
classloader ×1
crc ×1
debugbreak ×1
dropzone.js ×1
focus ×1
game-engine ×1
html ×1
javascript ×1
jvm ×1
kotlin ×1
maintenance ×1
netbeans ×1
post ×1
profiling ×1
search ×1
svn ×1
swing ×1
winapi ×1
x86 ×1