小编Hei*_*bug的帖子

如何使用Eclipse检查调试符号状态?

在讨论我问的另一个问题时,@ Aaron Digulla指出了以下问题:

如果安装了Java SDK,则Java安装的根目录中应该有一个"src.zip"文件.如果它丢失了,请再次下载Java.当您打开JTable类型时(或者当您单击堆栈跟踪中的行时),Eclipse应该自动找到源并显示给您.

该文件src.zip存在给我,但我仍然无法访问JTable类似@Aaron 的来源说.可能是什么问题呢?我怎样才能用Eclipse解决这个问题?

不过,"未知来源"让我很担心.这意味着您的Java版本没有调试符号.确保你a)在开发时使用SDK,b)你的SDK包含调试符号,c)不要告诉命令java在加载类时剥离调试符号.

a)我正在使用Eclipse,为什么我不应该使用SDK?

b)我如何知道我的SDK是否包含调试符号?如果没有,我该如何添加它们?

c)如何检查Eclipse是否告诉java剥离调试符号?

抱歉这些平庸的问题,但我觉得我不完全理解Java开发过程.

java eclipse sdk debug-symbols

7
推荐指数
1
解决办法
3845
查看次数

C++中的Tail Recursion,带有多个递归函数调用

我正在阅读关于尾递归的这篇文章.

我将复制发布的解决方案:

unsigned int f( unsigned int a ) {
   if ( a == 0 ) {
      return a;
   }
   return f( a - 1 );   // tail recursion
}
Run Code Online (Sandbox Code Playgroud)

我想知道,如果结果取决于几个递归函数调用呢?例如:

unsigned int f( unsigned int a ) {
    if ( a == 0 ) {
          return a;
       }
    return f(a -1) + f( a - 1 );   
}
Run Code Online (Sandbox Code Playgroud)

上面的代码会被编译器优化吗?

c++ tail-recursion compiler-optimization

7
推荐指数
1
解决办法
1765
查看次数

修改堆栈上的返回地址

我查看了缓冲区溢出漏洞的基础知识,并尝试了解堆栈的工作原理.为此,我想编写一个简单的程序,将返回地址的地址更改为某个值.任何人都可以帮我弄清楚基本指针的大小以获得第一个参数的偏移量吗?

void foo(void)
{
    char ret;
    char *ptr;

    ptr = &ret; //add some offset value here 
    *ptr = 0x00;
}

int main(int argc, char **argv)
{
    foo();

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

生成的汇编程序代码如下所示:

    .file   "test.c"
    .text
    .globl  foo 
    .type   foo, @function
foo:
.LFB0:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    .cfi_offset 6, -16 
    movq    %rsp, %rbp
    .cfi_def_cfa_register 6
    leaq    -9(%rbp), %rax
    movq    %rax, -8(%rbp)
    movq    -8(%rbp), %rax
    movb    $0, (%rax)
    popq    %rbp
    .cfi_def_cfa 7, 8
    ret 
    .cfi_endproc
.LFE0:
    .size   foo, .-foo
    .globl  main
    .type …
Run Code Online (Sandbox Code Playgroud)

c assembly stack buffer-overflow

7
推荐指数
1
解决办法
4905
查看次数

数据包丢失和数据包重复

我试图找出丢包和数据包重复问题之间的区别.有谁知道'数据包重复'到底是什么?当在TCP中检测到丢失时,它是否与重新发送数据包相同?

udp tcp duplication network-protocols packet-loss

7
推荐指数
2
解决办法
2万
查看次数

如何将一个鼠标监听器添加到JTable的单元格中,该单元格保存一个呈现为复选框的布尔值

我有一个JTable,其中实现了一个扩展AbstractTableModel的自定义模型.

public abstract class AbstractTable extends AbstractTableModel{

     public Class<? extends Object> getColumnClass(int c) {}
}
Run Code Online (Sandbox Code Playgroud)

因为我已经实现了getColumnClass方法,所以布尔值会像复选框一样呈现在表中.我想截取复选框的状态更改但不幸的是我不能直接添加鼠标监听器,因为我没有对复选框本身的引用,它不是由我创建的.

如何设置鼠标侦听器来拦截复选框状态更改事件?

编辑:

@jzd的答案是对的.我可以在setValue方法中捕获更改.但我想知道如何实现基于鼠标监听器的方法.

java swing jtable jcheckbox mouselistener

6
推荐指数
2
解决办法
8931
查看次数

使用Eclipse和版权向导插件时,为新文件添加许可证

我刚安装了这个版权向导插件,用于管理Eclipse项目中的版权免责声明.我发现它归功于这篇文章.

我把它设置好,一切正常:

  1. 我创建了自己的版权标题
  2. 我使用向导将其应用于现有项目的所有文件

现在我有以下问题:

当我在项目中创建新文件时,默认情况下不会添加版权.我怎么解决这个问题?

eclipse plugins copyright-display

6
推荐指数
1
解决办法
3285
查看次数

从C#代码中访问F#列表

我写了一个F#模块,里面有一个列表:

module MyModule
type X = 
    {
        valuex : float32
    }
let l = [ for i in 1 .. 10 -> {valuex =  3.3f}]
Run Code Online (Sandbox Code Playgroud)

现在从C#类我试图访问以前定义的列表,但我不知道如何转换它:

... list = MyModule.l ; //here's my problem
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西:

IList<X> list = MyModule.l;
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c# f# types list

6
推荐指数
2
解决办法
408
查看次数

通过模板的无符号int的C++限制

我正在使用模板将整数类型转换为二进制值的字符串表示形式.我使用了以下内容:

template<typename T>
std::string ToBinary(const T& value)
{
    const std::bitset<std::numeric_limits<T>::digits + 1> bs(value);
    const std::string s(bs.to_string());

    return s;
}
Run Code Online (Sandbox Code Playgroud)

它适用于int但不使用unsigned int编译:

unsigned int buffer_u[10];
int buffer_i[10];
...
ToBinary(buffer_i[1]); //compile and works
ToBinary(buffer_u[1]); //doesn't compile -- ambiguous overload
Run Code Online (Sandbox Code Playgroud)

你能解释一下原因吗?

编辑:

是的,我正在使用VS2010

c++ binary templates limits stl

6
推荐指数
1
解决办法
598
查看次数

如何通知o组件或子GameObject已添加到GameObject中

无论如何,当a Component添加到GameObject(甚至是子GameObject)时,我可以得到通知(可能通过某些方法/事件引发)?

我希望在编辑器中发生某些事件时收到通知(可能在某些编辑器脚本中),例如:

  • A Component附加GameObject实例
  • A Component已被附加Prefab
  • 一个GameObject已经成为孩子另一个GameObjectistance

这可能吗?如果是的话怎么样?


编辑

我找到了一个代表父母关注的问题:EditorApplication.hierarchyWindowChanged

因此,它被称为doc:

每当场景层次结构发生变化时调用.

这是transform.parent已更改,gameObject.name,创建新游戏对象等.

我仍然不明白是否有一种方便的方法可以理解层次结构中哪些对象已被更改.

c# notifications unity-game-engine

6
推荐指数
1
解决办法
3471
查看次数

Shader的功能参数性能

我试图了解如何在着色器语言中实现传递参数.

我已经阅读了几篇文章和文档,但我仍然有些疑惑.特别是我试图理解C++函数调用的差异,特别强调性能.

HSLS,Cg和之间略有差异,GLSL但我想下划线的实现非常相似.

到目前为止我所理解的:

  • 除非另有说明,否则函数参数总是按值传递(即使矩阵也是如此?)
  • 在这种情况下,通过价值传递与其具有不同的含义C++.不支持递归,因此不使用堆栈,并且大多数函数都是内联的,并且参数直接放入寄存器中.
  • 函数通常由default(HLSL)内联,或者至少内联关键字始终受编译器(Cg)的尊重

上面的考虑是对的吗?

现在2具体问题:

1)传递矩阵作为函数参数

inline float4 DoSomething(in Mat4x4 mat, in float3 vec)
{
  ...
} 
Run Code Online (Sandbox Code Playgroud)

考虑到上面的功能,C++这将是令人讨厌的,并且肯定会更好地使用引用:const Mat4x4&.

着色器怎么样?这是一个糟糕的方法吗?我读过,例如,inout限定符可用于通过引用传递矩阵,但实际上它暗示了被调用函数修改的矩阵.

2)数量(和参数类型)是否有任何含义?例如,更好地使用具有有限参数集的函数?或者避免传递矩阵?是inout修改在这里提高性能的有效方法是什么?如果是这样,任何人都知道典型的编译器如何实现它?

3)是否有任何区别HLSLGLSL说明吗?有人有这方面的提示吗?

opengl directx shader glsl hlsl

6
推荐指数
1
解决办法
4152
查看次数