小编mor*_*avi的帖子

为什么hibernate为单向OneToMany创建连接表?

为什么hibernate为这些类使用连接表?

@Entity
public class CompanyImpl {
    @OneToMany
    private Set<Flight> flights;


@Entity
public class Flight {
Run Code Online (Sandbox Code Playgroud)

我既不想要连接表也不想要双向关联:(

hibernate hibernate-onetomany

12
推荐指数
2
解决办法
6114
查看次数

设置Array的Length属性

是否可以使用某种技术更改数组的Length属性?

我需要将数组的前x个成员传递给方法.项目要求阻止我分配任何堆分配,因此我不能使用任何Array.Resize()或创建新数组.

此外,我无法更改SetVertices代码,因为它属于另一个库.它需要V[].我无法传递IList<V>或传递V*给它.

public void BuildIt(V[] verts,int x){
    verts.Length = x; //Compile error
    mesh.SetVertices(verts);
}
Run Code Online (Sandbox Code Playgroud)

当然代码不会编译.我需要一些像反射或扩展方法这样的技术来将数组伪装成更小而不实际创建更小的数组.我希望SetVertices()方法认为数组有x个成员,即使它有更多.

编辑:

测试了以下方法,它们不起作用:

  • stackalloc不起作用,因为它不会创建(或者我无法获得)真正的数组.
  • 偷看单项目我发现数组的Length属性调用GetLenght()和GetRank()方法来确定长度.抛开一个不好的做法,我不能用扩展方法覆盖这个方法,因为实例方法优先于扩展方法(或者有没有办法强制使用?).

接下来会尝试代码注入.

EDIT2:

试图将代码发送到Array.GetLength()Array.Length.似乎没有简单,可靠,跨平台和干净的方法来在运行时更改现有的方法体.

c# arrays unity-game-engine

11
推荐指数
1
解决办法
279
查看次数

如何在网格布局中设置窗口小部件的行和列?

我在shell中使用网格布局.我想控制小部件的位置.正如您所看到的,底部按钮必须位于第4行.我正在使用windowbuilder插件,它可以将它们放置在所需的位置.

我的shell使用windowbuilder

问题是我无法在源代码中看到放置指令.我怎样才能以编程方式放置它们.这是源代码窗口构建器生成的.

package dgsj.Chapter04.examples.ch4;

import org.eclipse.swt.widgets.*;

public class GridLayout2x2 {
    private static GridData data_1;
    private static GridData data_2;

    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setMinimumSize(new Point(123, 30));
        shell.setSize(126, 123);
        GridLayout layout = new GridLayout();
        layout.numColumns = 3;
        shell.setLayout(layout);

        GridData data = new GridData(GridData.FILL_BOTH);
        data.grabExcessHorizontalSpace = false;
        data.widthHint = 200;
        data.grabExcessVerticalSpace = false;
        Button one = new Button(shell, SWT.PUSH);
        one.setText("one");
        one.setLayoutData(data);

        data = new GridData(GridData.FILL_BOTH);
        Button two = new Button(shell, SWT.PUSH); …
Run Code Online (Sandbox Code Playgroud)

swt

9
推荐指数
1
解决办法
8551
查看次数

visual studio watch:节点不受支持

我有VS2013手表的问题.例如,添加两个浮动的手表是可以的,但是添加一个double和一个float不是.为什么这样做,应该做些什么?这是一个使用Unity3d的游戏项目,.Net版本是3.5. 在此输入图像描述

c# unity-game-engine

8
推荐指数
1
解决办法
1205
查看次数

从堆列中获取数组而不分配堆

我有一个列表,我想将其数组分配给一个属性.

public void BuildMesh(List<Vector3> list){
    mesh.vertices=list.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

现在的问题:

  • 该项目是游戏,并且在垃圾收集方面非常困难,因此ToArray()的默认实现不是一个选项,因为它在列表的内部数组旁边创建了一个新数组.
  • 网格对象来自闭源API,顶点属性是Vector3 [],因此无法为其指定指针.

我有任何阻止堆分配的选项吗?

编辑:这不是重复

不能用IList<Vector3>.网格来自一个封闭的源API,需要Vector3 []所以我无法分配IList<Vector3>它.

c# heap pointers unity-game-engine data-structures

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

在春天自动扫描jpa实体的包

使用hibernate SessionFactory时可以很容易地做到这一点:

<bean id="sessionFactory"
...
p:packagesToScan="com.sahandrc.survey" 
Run Code Online (Sandbox Code Playgroud)

我怎么能用jpa EntityManagerFactory做到这一点?

spring hibernate jpa

2
推荐指数
1
解决办法
7708
查看次数

如何在SWT小部件旁边显示错误标记?

在基于eclipse RCP的项目中:

  1. 使用SWT和eclipse RCP我想显示与以下图片完全相同的错误或信息标记.当鼠标指针悬停错误标记时,弹出窗口会显示原因.我需要此功能来向用户显示错误或警告.

  2. 在问题视图中同时出现相同的错误会非常好.

java swt eclipse-rcp

2
推荐指数
1
解决办法
2819
查看次数

java instanceof和getClass()不能按预期工作

我有以下代码:

protected LogEvent toLogEvent(LogRecord element) {
    ......
    System.out.println("element.getClass():"+element.getClass());
    System.out.println("element.getClass() == org.jboss.logmanager.ExtLogRecord.class:" + (element.getClass() == org.jboss.logmanager.ExtLogRecord.class));
    System.out.println("element instanceof org.jboss.logmanager.ExtLogRecord:" + (element instanceof org.jboss.logmanager.ExtLogRecord));
    System.out.println("element instanceof java.util.logging.LogRecord:"+(element instanceof java.util.logging.LogRecord));
    System.out.println("element.toString():"+element.toString());
Run Code Online (Sandbox Code Playgroud)

输出是:

09:20:51,544 INFO  stdout element.getClass():class org.jboss.logmanager.ExtLogRecord
09:20:51,545 INFO  stdout element.getClass() ==org.jboss.logmanager.ExtLogRecord.class:false
09:20:51,547 INFO  stdout element instanceof org.jboss.logmanager.ExtLogRecord:false
09:20:51,548 INFO  stdout element instanceof java.util.logging.LogRecord:true
09:20:51,549 INFO  stdout element.toString():org.jboss.logmanager.ExtLogRecord@2657c0ad
Run Code Online (Sandbox Code Playgroud)

ExtLogRecord是.的子类LogRecord.

我的问题是:

  1. 在第二行为false什么输出?清楚元素是一个实例ExtLogRecord.

  2. 在第三行元素instanceof ExtLogRecord返回false并在第四行元素instanceof LogRecord返回true.所以元素是一个,LogRecord但它不是一个ExtLogRecord.这是怎么回事? …

java inheritance

2
推荐指数
1
解决办法
465
查看次数

阻塞线程是否会导致性能损失?

我有一个方法需要访问静态数组并进行一些繁重的计算。

public void DoIt(){
  lock(myStaticArray){
    // do crazy stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

该方法需要一两秒才能完成,因此获取锁定的几纳秒在这里并不重要。

现在假设有 10 个线程到达代码并有一个进入。现在,它是否会使线程内运行的代码比没有线程等待锁的情况慢?等待锁的阻塞线程在等待时是否会消耗 CPU 使用率?

c# multithreading

2
推荐指数
1
解决办法
924
查看次数

有没有办法防止ThreadPool制造垃圾?

执行多线程方法会产生垃圾.为什么会这样,我们可以阻止它吗?

ThreadPool.QueueUserWorkItem(callBack, state);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑: 垃圾我指的是创建的对象,然后超出范围.垃圾收集非常慢,因为它的旧版单声道.所以你从GC中保存的每一个kb都是一个胜利.如果您不熟悉统一引擎,请在屏幕截图中查看突出显示行上的GC列.它说0.6kb.因此它创建了600字节的垃圾.回调代码不会创建任何垃圾,因此它来自ThreadPool.QueueUserWorkItem

编辑2:这里进一步详细说明是一个更具体的例子:

public class TestThread : MonoBehaviour
{
    public void Update()
    {
        if (Time.frameCount%10 == 0)
            ThreadPool.QueueUserWorkItem(DummyMethod);
    }

    public void DummyMethod(object meaningless)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

这是结果.请查看突出显示的行.GC栏显示285Bytes.由于DummyMethod没有做任何事情,垃圾与ThreadPool有关.

在此输入图像描述

编辑3: 为了放松这种情况并找到替代方案,拥有一个从队列中执行作业的工作线程是可以接受的.

如果有多个CPU可用,它必须运行在除了统一使用的CPU之外的CPU上.Unity几乎可以在一个线程中执行任何操作,因此同一CPU上的后台工作人员将成为灾难.它也是一个跨平台项目,因此仅限Windows的解决方案将无法运行.所以基本上我需要一个工作线程解决方案,并知道是否可以实现线程的CPU是否与另一个线程相同.

c# unity-game-engine

2
推荐指数
1
解决办法
2034
查看次数

提取功能会影响性能吗?

我正在考虑将长函数解析为几个小函数,我关注性能.假设我们有很多代码行的长函数:

void f(){
....
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我们将工作提取到单独的功能:

void f(){
  f1();
  f2();
  f3();
} 
Run Code Online (Sandbox Code Playgroud)

它通常会影响性能吗?我正在寻找一种平衡性能和良好软件设计的一般 策略.拥有小功能总是一个好习惯吗?假设一个具有私有成员变量的类int something.是否可以通过致电get_something()而不是something公开来归还它?

假设函数为非虚拟和优化级别/O3.问题的重要性在于,如果第一个版本更快,我们将面临可维护性和性能之间的权衡.

c++

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