与GNU/Linux中的Java相比,Mono是否有任何性能基准测试?
你有没有测试过Mono的性能?
是否有任何内置或第三方库允许您在运行时简单地将所有变量转储到内存中?我想要的是能够查看变量和当前值,类似于通过点击断点并将鼠标悬停在变量上来查看变量和当前值,但实际上不必停止程序执行(即只是获取快照).如果它可以将它们转储到一个文件然后可以在程序中打开以获得一个很好的GUI界面来查看它们会很好,但是简单的文本文件转储就足够了.
我有一个程序Test.java:
import java.io.*;
public class Test {
public static void main(String[] args) throws Exception {
System.setOut(new PrintStream(new FileOutputStream("test.txt")));
System.out.println("HelloWorld1");
Runtime.getRuntime().exec("echo HelloWorld2");
}
}
Run Code Online (Sandbox Code Playgroud)
这应该将HelloWorld1和HelloWorld2打印到文件text.txt.但是,当我查看文件时,我只看到HelloWorld1.
HelloWorld2去了哪里?它消失在空气中吗?
假设我想将HelloWorld2重定向到test.txt.我不能在命令中添加">> test.txt",因为我将得到一个文件已经打开错误.那我该怎么做?
在Java 6中,想象一下我有以下方法签名:
public void makeSandwich(Bread slice1, Bread slice2, List<Filling> fillings, boolean mustard)
Run Code Online (Sandbox Code Playgroud)
我想知道,在运行时,传递给slice2或任何其他参数的值,这里重要的一点是我想通过参数名称获取值.
我知道如何用getParameterTypes或获取参数类型列表getGenericParameterTypes.
理想情况下,我想获得一个参数名称列表而不是类型.有办法吗?
我在尝试创建一个严重依赖于泛型的类的新实例时遇到以下异常:
new TestServer(8888);
System.TypeLoadException
GenericArguments[0], 'TOutPacket', on
'Library.Net.Relay`4[TInPacket,TOutPacket,TCryptograph,TEndian]'
violates the constraint of type parameter 'TInPacket'.
at System.RuntimeTypeHandle.Instantiate(RuntimeTypeHandle handle, IntPtr* pInst, Int32 numGenericArgs, ObjectHandleOnStack type)
at System.RuntimeTypeHandle.Instantiate(Type[] inst)
at System.RuntimeType.MakeGenericType(Type[] instantiation)
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么会这样.编译时是否检查了通用约束?
我的谷歌搜索让我得出结论,这与这些原因中的任何一个有关,或者(有时?)两者:
where在类中定义泛型约束()的顺序;我不准备牺牲的一件事是自我参照模式.我绝对需要它用于特定目的.
但是,我想帮助指出这个问题出现的地点和原因.由于库是庞大的并且产生了巨大的通用模式,我认为最好根据请求逐步提供代码位.
根据要求,再次声明.但我想强调的是,我宁愿一般都知道为什么会发生这样的异常,然后在我的特定代码中自行修复它,而不是为后代找到特定的修复.此外,这将是更长的人分析代码来回答,而不是给一般的解释,为什么泛型类型的限制可以在运行时被侵犯.
执行声明:
class TestServer : Server<TestServer, TestClient, ServerPacket.In, ServerPacket.Out, BlankCryptograph, LittleEndianBitConverter>
class TestClient : AwareClient<TestOperationCode, TestServer, TestClient, ServerPacket.In, ServerPacket.Out, BlankCryptograph, LittleEndianBitConverter>
class ServerPacket
{
public abstract class In : AwarePacket<TestOperationCode, TestServer, TestClient, ServerPacket.In, ServerPacket.Out, BlankCryptograph, LittleEndianBitConverter>.In
public class Out : …Run Code Online (Sandbox Code Playgroud) 我试图在客户端机器上安装java Windows应用程序.我想检查是否在机器上安装了需要的JRE.我想通过java程序而不是cmd命令来检查它
int[] a = new int[5];
string[] b = new string[1];
Run Code Online (Sandbox Code Playgroud)
两者的类型a和b继承自抽象System.Array,但内置库中没有真正的类(似乎有一些运行时类型,你找不到类型定义类的一个int[]).你能告诉我编译时会发生什么吗?为什么他们(c#团队)制作这个设计(我的意思是为什么它不是这样的Array<T>,而是他们使用带编译器魔法的抽象类)?
当我们从其基类调用常规函数成员时,在C++中使用虚拟继承是否会在编译代码中产生运行时损失?示例代码:
class A {
public:
void foo(void) {}
};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {};
// ...
D bar;
bar.foo ();
Run Code Online (Sandbox Code Playgroud) 我想在运行时替换一些方法的内容.
我知道我可以使用javassist但它不起作用,因为我想要增强的类已经被系统classLoader加载.
我该怎么做,在运行时替换方法的内容?我应该尝试卸载课程吗?我怎样才能做到这一点 ?我看到它是可能的,但我无法弄清楚如何做到这一点.
如果可能的话,我想避免使用外部库,我想自己编写代码.
更多信息: - 我想要增强的类包含在一个框架中(在一个jar文件中) - 我的代码实际上是这个框架的一个插件 - 我的插件运行的框架有自己的classLoader,但是这个classLoader没有加载自己的类(它将它们委托给系统类加载器) - 我正在使用的框架是Play.
谢谢您的帮助 !
有谁知道如何获得变量的内存大小(int,string,[]struct等),并打印出来?可能吗?
var i int = 1
//I want to get something like this:
fmt.Println("Size of i is: %?", i)
//Also, it would be nice if I could store the value into a string
Run Code Online (Sandbox Code Playgroud)