很抱歉这么简单的问题,但我发现很难相信我在使用JavaFX Scenebuilder开发用户界面时实际上无法查看fxml.
我希望我能够使用控件编写用户界面,并且能够直接编写fxml.
如何在不执行以下操作的情况下在SceneBuilder中查看/编辑我的用户界面的fxml: -
即http://www.webhostingplanguide.com/wp-content/uploads/2013/12/CoffeeCup-HTML-Editor.jpg
如上所述,我希望能够使用FXML或WYSIWYG前端.
如果我有以下内容: -
struct foo
{
int a;
int *b;
} bar;
void baz(struct foo qux)
{
}
Run Code Online (Sandbox Code Playgroud)
我是否正确地认为传递bar
到baz()
本地副本bar
被推入堆栈?如果是这样,这是什么类型的副本?在C++中,我假设它会调用复制构造函数或默认的复制构造函数,但我真的不知道这在C中是如何工作的.
C是否有任何默认的复制构造函数的概念,并且它有一个名称吗?可以做些什么来执行深层复制吗?(假设).我能想到的唯一方法是实际执行深层复制,然后将其传递给函数.
通常,我会将指针传递给a,foo
但我只是好奇它是如何工作的.此外,我的印象是传递指针更快,节省内存,是执行此类操作时建议的操作过程.我猜它是一个浅拷贝; 可以改变吗?
注意:我很清楚初始化它可以解决问题; 我只是假设编译器会遵循执行路径,并且看到foo实际上会在它建议'可能'不是的时候进行初始化.
我最初的假设是,如果长度从未超过3,我将永远不需要为它使用分配内存.
这永远不会用于生产,我只是好奇
请参阅以下示例: -
List<String> foo;
int length = 5;
if (length > 3)
{
foo = new ArrayList<String>();
}
if (length > 4)
{
foo.add("bar");
}
Run Code Online (Sandbox Code Playgroud)
为什么会导致显示以下内容?
局部变量foo可能尚未初始化
当然,在分支之后,永远不会出现foo未初始化的情况.我知道如果我这样做: -
List<String> foo = null;
Run Code Online (Sandbox Code Playgroud)
没有编译问题,但为什么我需要这样做呢?
是否可以在java.library.path上放置两个版本(64位和32位)的本机DLL?
我担心的是,如果我将64位和32位版本放在本机库路径上,那么在运行不同的架构时会出现一个不满意的链接异常.如果是这样,首选解决方案是什么?在我的gradle/maven构建脚本中有一个标记链接正确的库?
我目前正在做以下事情: -
-Djava.library.path=/out/lib/win64jdk;/out/lib/winx86jdk
Run Code Online (Sandbox Code Playgroud)
两者都包含架构的相关DLL.我目前不确定JVM是否可以确定符号.
我相信我误解了如何选择和渴望工作; 我的目标是在遇到N + 1问题时提高性能
编辑我想知道我是否会更快地使用create SQL查询方法并自己创建对象,尽管我希望hibernate与性能相提并论.我可以在单个查询中拉回下面示例中所需的所有数据,那么为什么hibernate会为每个查询执行单独的查询?
我创建了以下测试用例来突出我的问题,请原谅这个模型的粗糙.
@Entity
@Table(name = "Area")
public class Area implements Serializable
{
@Id
@GeneratedValue(generator = "areaId" )
@GenericGenerator(name = "areaId", strategy = "uuid2")
public String areaId;
@OneToMany(mappedBy = "area", fetch=FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
public Set<EmployeeArea> employeeAreas = new HashSet<EmployeeArea>();
}
@Entity
@Table(name = "Employee")
public class Employee implements Serializable
{
@Id
@GeneratedValue(generator = "employeeId" )
@GenericGenerator(name = "employeeId", strategy = "uuid2")
public String employeeId;
@OneToMany(mappedBy = "employee", fetch=FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
public Set<EmployeeArea> employeeAreas = new HashSet<EmployeeArea>();
} …
Run Code Online (Sandbox Code Playgroud) 我试图将一个字符串拆分成一个字符串数组,但是当它拆分字符串时,只有第一部分,在拆分之前,在[0]插槽中的数组中,但是[1]或更晚的内容中没有任何内容.这也会在尝试输出拼接时返回java异常错误[1]
import java.util.Scanner;
public class splittingString
{
static String s;
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter the length and units with a space between them");
s = input.next();
String[] spliced = s.split("\\s+");
System.out.println("You have entered " + spliced[0] + " in the units of" + spliced[1]);
}
}
Run Code Online (Sandbox Code Playgroud) 如在C 3.5中发现的那样,由于类型擦除,以下是不可能的: -
int foo<T>(T bar)
{
return bar.Length; // will not compile unless I do something like where T : string
}
foo("baz");
Run Code Online (Sandbox Code Playgroud)
我认为这不起作用的原因是在C#和java中,由于一个叫做类型擦除的概念,请参见http://en.wikipedia.org/wiki/Type_erasure.
阅读完关于动态关键字后,我写了以下内容: -
int foo<T>(T bar)
{
dynamic test = bar;
return test.Length;
}
foo("baz"); // will compile and return 3
Run Code Online (Sandbox Code Playgroud)
所以,据我所知,动态将绕过编译时间检查,但如果类型已被删除,它肯定仍然无法解析符号,除非它更深入并使用某种反射?
以这种方式使用动态关键字是不好的做法,这是否使得泛型更强大?