我们通过XCOM接收二进制格式的 EBCDIC 大型机文件。目前,有一个基于 C 的遗留应用程序正在将其转换为可读的 ASCII 格式。该文件现在如下所示:
作为迁移的一部分,我们必须迁移 Java 上的遗留应用程序。您能否建议或分享一些如何将该二进制文件转换为 Java 可读格式的链接?
public static ArrayList<Integer> duplicates(int[] arr) {
ArrayList<Integer> doubles = new ArrayList<Integer>();
boolean isEmpty = true;
for(int i = 0; i<arr.length; i++) {
for (int j = i+1; j< arr.length; j++) {
if( arr[i] == arr[j] && !doubles.contains(arr[i]) ){
doubles.add(arr[i]);
isEmpty = false;
break;
}
}
}
if(isEmpty) doubles.add(-1);
Collections.sort(doubles);
return doubles;
}
public static void main(String[] args) {
System.out.println( ( duplicates( new int[]{1,2,3,4,4,4} ) ) ); // Return: [4]
}
Run Code Online (Sandbox Code Playgroud)
我用 Java 创建了这个函数,它返回输入 int 数组的倍数,如果输入数组为空或没有倍数,则返回 -1。
它有效,但可能有一种方法可以让它更快。是否有任何好的做法可以使函数总体上更高效、更快?
我有一个包含许多大文件(psd、exe、pdf 等)的存储库,每次我提交这些文件的更新时,git .pack 文件都会急剧增长以保留历史记录。如何从历史记录中删除所有大于 1mb 的文件,但将它们保留在存储库中。
另外,是否可以设置特定文件从不存储在历史记录中?
我正在使用 Eclipse,当我导航 List.class 的反汇编时,我看到了这个:
<T> T[] toArray(T[] a);
Run Code Online (Sandbox Code Playgroud)
这里的领先<T>实际上意味着什么?它是返回类型的一部分吗?我猜返回值是T[].
在什么情况下函数需要声明 like<T> T[]作为函数签名?
我正在测试java的lambda是否与接口函数匹配,我在下面编写了代码,它可以工作。我有界面MyHandler,及其myFunction。在构造时,Java lambda 被转换为我的接口的实现者。
package mygroup;
interface MyHandler{
void myFunction(int i);
}
class Worker{
private final MyHandler handler;
public Worker(MyHandler h){
handler = h;
}
public void work(int i){handler.myFunction(i);};
}
public class TestLambda {
public static void main(String[] args) {
Worker worker = new Worker(i -> System.out.println(i));
worker.work(3);
}
}
Run Code Online (Sandbox Code Playgroud)
程序将打印3. 到目前为止一切顺利,但如果我添加一些其他函数声明,MyHandler如下所示:
interface MyHandler{
void myFunction(int i);
void f(int i, int j);
}
Run Code Online (Sandbox Code Playgroud)
Thread 构造函数中的 lambda 将无法编译,表示
The constructor Worker((<no type> i) -> …Run Code Online (Sandbox Code Playgroud) 我想我发现了一个错误:
MathContext mathContext = new MathContext(5, RoundingMode.HALF_UP);
result = BigDecimal.valueOf(0.004798).round(mathContext); // fails
// result is 0.004798!!! (same value)
Run Code Online (Sandbox Code Playgroud)
我不得不使用以下替代方案:
BigDecimal bigDecimal = BigDecimal.valueOf(0.004798);
BigDecimal new_divisor = BigDecimal.valueOf(1, 5);
bigDecimal_array = bigDecimal.divideAndRemainder(new_divisor);
MathContext mathContext = new MathContext(5, RoundingMode.HALF_UP);
result = bigDecimal.subtract(bigDecimal_array[1], mathContext);
result = result.stripTrailingZeros();
Run Code Online (Sandbox Code Playgroud)
在我看来,这个错误(如果是这样的话)非常危险。
我知道,为了良好的实践,StringBuilder应该使用预期内容的容量值进行初始化。否则,编译后增加大小将是一个昂贵的操作。
我的问题是,如果我们不知道预期的大小,应该如何处理?是否有一个标准值/方法来避免幕后昂贵的操作?
如果没有,如果容量大于初始化时给定的值,是否有可能在代码中发出警报/记录?
I'm not finding a way to do edit GMT Date
I receive "params.date" one string in this format "yyyyMMdd", so this is my flow:
Date date = new SimpleDateFormat('yyyyMMdd').parse(params.data)
System.out.println(sdf.parse(params.data))
Run Code Online (Sandbox Code Playgroud)
output:
Thu Nov 17 21:00:00 GMT-03:00 2022
Run Code Online (Sandbox Code Playgroud)
And I need it:
Thu Nov 17 21:00:00 GMT-00:00 2022
Run Code Online (Sandbox Code Playgroud)
Can someone help me?
我正在尝试为我的大学项目制作一部交互式视觉小说,但我不知道如何仅用一个按钮将标签的文本更新为下一行对话。
\npublic void NicoleDialogue() {\n String[] NDialogue = {"My name is Tala Nicole Dimaapi Valdez / Joshua Manuel Garcia Reyes, I know a long ass name but I\xe2\x80\x99m filipino what can I say?",\n "I\xe2\x80\x99m a student of DLSU, one of the most prestigious universities in the country and today I will join GreenGiant FM, an organization for people who want to become radio hosts or who are just interested in radio hosting in general.",\n "It is my first time …Run Code Online (Sandbox Code Playgroud) 我想覆盖 Lombok 默认构建器方法。我尝试了这段代码,但它不起作用。
甚至可以做这样的事情吗?
@Data
@Builder
static class A {
private int a;
static class Builder {
A.ABuilder a(int x) {
this.a = 2 * x;
return this;
}
}
}
private static void fun() {
var a = A.builder()
.a(1)
.build();
}
Run Code Online (Sandbox Code Playgroud)