我是Java的新手,正在阅读非常大的文件,需要一些帮助来理解问题并解决它.我们有一些遗留代码必须进行优化才能使其正常运行.文件大小只能从10mb到10gb不等.只有文件启动超过800mb大小时才会启动麻烦.
InputStream inFileReader = channelSFtp.get(path); // file reading from ssh.
byte[] localbuffer = new byte[2048];
ByteArrayOutputStream bArrStream = new ByteArrayOutputStream();
int i = 0;
while (-1 != (i = inFileReader.read(buffer))) {
bArrStream.write(localbuffer, 0, i);
}
byte[] data = bArrStream.toByteArray();
inFileReader.close();
bos.close();
Run Code Online (Sandbox Code Playgroud)
我们收到了错误
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2271)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激?
我已经为Contains方法扩展了字符串类.我试着把它调用Expression.Call,但是如何正确地传递参数?
代码:String包含方法:
public static class StringExts
{
public static bool NewContains(this string source, string ValToCheck, StringComparison StrComp)
{
return source.IndexOf(ValToCheck, StrComp) >= 0;
}
}
Run Code Online (Sandbox Code Playgroud)
在表达式中调用为:
public class Person { public string Name {get; set;} }
public class Persons {
public List<Person> lstPersons {get; set;}
public Persons() {
lstPersons = new List<Person>();
}
}
public class Filter
{
public string Id { get; set; }
public Operator Operator { get; set; }
public string value { …Run Code Online (Sandbox Code Playgroud) 我有这样的表数据
(int) (time) [mySQL datatype]
Id Duration
------------------
1 00:10:00
2 10:10:00
3 03:00:00
4 04:13:00
Run Code Online (Sandbox Code Playgroud)
我想从这张表中计算总持续时间,我们该怎么做.喜欢17:33:00 有人可以提供mysql查询来计算这个.
我们如何隐藏使用JSON.NET库进行序列化的C#属性.假设我们有班级客户
public class Customer
{
public int CustId {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public bool isLocked {get; set;}
public Customer() {}
}
public class Test
{
Customer cust = new Customer();
cust.CustId = 101;
cust.FirstName = "John"
cust.LastName = "Murphy"
string Json = JsonConvert.SerializeObject(cust);
}
Run Code Online (Sandbox Code Playgroud)
JSON
{
"CustId":101,
"FirstName":"John",
"LastName":"Murphy",
"isLocked":false}
此对象转换为json,但我没有指定isLocked属性.由于库将序列化整个类,有没有办法在json序列化过程中忽略属性或者我们可以在属性上添加任何属性.
编辑:另外,如果我们在数组中创建两个Customer类实例.如果我们没有指定第二个实例上的锁定属性,我们可以将属性隐藏为第二个对象.
JSON
{"Customer":[{"CustId":101,"FirstName":"John","LastName":"Murphy","isLocked":false},{"CustId":102,"FirstName":"Sara" ,"LastName":"connie"}]}
谢谢
我想将大量数据分发到不同的C#应用程序.例如,我的表包含数百万条记录.我想指定App1处理前3百万条记录,另外C#应用程序App2处理300万条,依此类推.表行将根据要求删除并添加.现在我想写一个SQL查询,它将处理前300万条记录.现在,如果从app1中删除了5条记录,则app1必须从app3获取接下来的5条记录,从app3获取app2.因此,每个应用程序中的数据始终保持不变.
我在SQL查询中使用了限制,但是我没有得到所需的输出.如何为此编写SQL查询以及如何设计C#应用程序.
我有一个简单的类,它有一个静态构造函数和一个实例构造函数.现在,当我初始化类时,调用静态和实例构造函数.在应用程序域中只引用一次静态.我可以再次调用相同的类初始化和静态构造函数再次初始化吗?我试过但它没有发生?有没有什么办法可以在类上使用垃圾收集后在main()方法中再次调用静态构造函数.
这是代码:
public class Employee
{
public Employee()
{
Console.WriteLine("Instance constructor called");
}
static Employee()
{
Console.WriteLine("Static constructor called");
}
~Employee()
{
//Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
现在在main方法调用中:
static void Main(string[] args)
{
Employee emp = new Employee();
Employee emp = new Employee();
}
Run Code Online (Sandbox Code Playgroud)
输出:
名为Instance构造函数的静态构造函数称为Instance构造函数
现在静态没有再次调用.因为它在应用程序域中被调用一次.但他们是否可以在不卸载应用程序域的情况下再次调用它.我们可以在这里使用GC类吗?
谢谢.朋友
我们可以隐藏派生类的公共方法,以便在C#中的Main()函数中无法访问它.我们无法更改派生类方法的访问器.
public class A
{
public void Add()
{
}
}
public class B : A
{
public void Multiply()
{
}
}
Run Code Online (Sandbox Code Playgroud)
在C#的main()方法中
B b = new B();
b.mulitply(); // should give compile time error... Like method not founded.
Run Code Online (Sandbox Code Playgroud)
我们有什么方法可以做到.
c# ×5
.net ×3
mysql ×2
sql ×2
arrays ×1
bytearray ×1
constructor ×1
css3 ×1
delegates ×1
file-io ×1
html5 ×1
inheritance ×1
java ×1
javascript ×1
json.net ×1
lambda ×1
php ×1
properties ×1