小编Pet*_*ete的帖子

将 ArrayList 转换为 JavaFX 程序的可观察列表?

我是一名半初学者 Java 程序员,从各种来源学习 Java FX。在我的程序中,我想创建一个 ComboBox,并使用 ArrayList 中一系列对象的 toString() 输出填充选项。在这里,披萨配料被定义为一个对象。它们被创建并存储在一个 PizzaMgr 对象中,基本上是一个 ArrayList 的美化包装器:

public class Topping{

  private String name;

  public Topping(String a){
    this.name=a;
  }
  public String toString(){
    return this.name;
  }
}

//=================================================

import java.util.ArrayList;

public class PizzaMgr{

  private ArrayList<Topping> OrderedToppings;

  public PizzaMgr(){
      OrderedToppings = new ArrayList<Topping>();
      OrderedToppings.add(new Topping("Pepperoni"));
      OrderedToppings.add(new Topping("Mushrooms"));
      OrderedToppings.add(new Topping("Onions"));
  }

  public ArrayList<Topping> getList(){
      return OrderedToppings;
  }
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。但我遇到的问题是当我想要一个 ComboBox 列出 PizzaMgr 的 ArrayList 中的所有项目时。理想情况下,我想使用这个 ComboBox 构造函数:

ComboBox<T>(ObservableList<T> items)
Run Code Online (Sandbox Code Playgroud)

问题?如何将所有 ArrayList 项提取到 Observable List 中?我一直在阅读 Arraylists、Observable Lists、接口,但我不知道如何让它工作。我读过 …

combobox javafx arraylist observablelist

7
推荐指数
2
解决办法
2万
查看次数

C - 在内存被释放()之后访问数据?

我在标准 C 中阅读了很多关于 malloc() 和 free() 的内容。据我所知,你只malloc()需要一次内存,然后你只free()需要一次相同的内存。这可能是不好的做法,但我知道在你malloc()记忆之后,你可以定义多个指向它的指针。一旦你找到free()任何这些指针,分配的内存就会被取消分配?

考虑这个玩具示例:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(){

    char* p = (char*)malloc(10 * sizeof(char));     // allocate memory
    int* q = (int*)p;                               // pointer to the same block of memory
    *p = 'A';                                       // Input some data
    printf("TEST::  %c %d\n", *p, *q);              // Everything's ok so far...
    free(p);                                        // free() my allocated memory?
    sleep(10);                                      // wait
    printf("%c\n", *q);                             // q now points to de-allocated memory …
Run Code Online (Sandbox Code Playgroud)

c malloc free pointers

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

在 Java 中将一个文件附加到另一个文件 - 为什么我的代码会覆盖?

我是一名经验丰富的 C++ 人,正在学习 Java 并在此网站上度过了愉快的学习时光。最近,我对 Java 如何将一个文件附加到另一个文件进行了一些研究。假设我有两个文件。这是 C:\tmp\permFile.txt:

Line A:   abcef
Line B:   ghijk
Line C:   lmnop
Run Code Online (Sandbox Code Playgroud)

这是 C:\tmp\tmpFile.txt:

line 1:   1234567890
line 2:   0123456789
line 3:   9012345678
line 4:   8901234567
Run Code Online (Sandbox Code Playgroud)

这里的目标很简单;我想将 tmpFile.txt 附加到 permFile.txt 的末尾。我研究了代码来做到这一点,并认为我已经解决了问题。直到今天我才注意到运行代码后 permFile.txt 看起来像这样:

Line A:   abcef
Line B:   ghijk
Line C:   lmnop:   9012345678
line 4:   8901234567
Run Code Online (Sandbox Code Playgroud)

我认为这里发生的是 permFile 长 48 个字符(16 个字符/行)。我的代码在 tmpFile 中精确计算了 48 个字符,并从第 49 个字符开始追加。很奇怪吧?

这是代码:

import java.io.*;

public class myProgram {
   public static void main(String[] args) throws IOException {

      // Define …
Run Code Online (Sandbox Code Playgroud)

java file append

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

您可以将两个不同的 Java FX 场景编写为两个单独的类吗?

我是一名初级 Java 程序员,在当地大学完成了“Java 101”课程。我也在推动自己学习一些额外的主题,包括 Java FX。我已经学习了 Oracle 网站上的 Java FX 教程,还浏览了一些 YouTube 视频,还阅读了“Java FX for Dummies”(这是我能找到的最适合初学者的书。)所有这些材料都教会了我很多基础知识,但有些(应该)相对简单的东西让我望而却步。

例如:假设我有一个 Java FX 程序,它在一个舞台上使用多个场景。当用户点击“切换!” 按钮,第二个场景被换出第一个。简单。我可以在一个 .java 文件中完成所有这些,没问题。(见下面的代码)

但是我的 .java 类文件变得很长而且很难进行故障排除。如果我可以将一个场景定义/声明/初始化为一个 .java 文件中的一个类,并将第二个场景定义/声明/初始化为另一个 .java 文件中的另一个类,那就太好了。这将使跟踪每个场景的组件变得更加容易。问题是,我不知道如何做到这一点。

我想你会先写一个 Scene1.java 类,然后写一个 Scene2.java 类,当你想切换场景时,只需在两者之间传递舞台对象。但是我找不到一个例子来说明这是如何完成的,我所有的尝试都会导致编译器错误或非常可怕的运行时错误。

有谁知道如何做到这一点?如果是这样,我需要怎么做才能修改SwitchScenes2()下面的方法以创建新Scene2对象并将其传递给舞台?

谢谢!饶

/*
    JavaFXExample.java
*/

import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.event.*;
import javafx.geometry.*;

public class JavaFXExample extends Application{

    public static void main(String[] args){
    launch(args);   
}

Button btnSw1;
Button btnSw2;
Button btnClose;
HBox hbox1;
VBox vbox1; …
Run Code Online (Sandbox Code Playgroud)

java javafx stage scene

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

Java - 确定子类的更智能方法?

我需要一种智能的方法来区分多个对象,来自同一父类的所有子类.考虑这个父类和两个子类:

public class Fruit {
    String name;
    public Fruit(String a){
        this.name = a;
    }
}
public class Orange extends Fruit {
    public Orange(String a){
        super(a);
    }
}
public class Apple extends Fruit {
    int price;
    public Apple(String a, int b){
        super(a);
        this.price = b;
    }
    public void checkPrice(){
        if(this.price>2)
            System.out.print("  --  This apple is too expensive!");
        else
            System.out.print("  --  This apple is cheap.");
    }
}
Run Code Online (Sandbox Code Playgroud)

(另外,假定我有很多水果的子类,这里没有显示).现在,我想所有的水果储存在水果车:

public class FruitCart {
    Fruit[] cart;
    public FruitCart(){
        cart = new Fruit[4]; …
Run Code Online (Sandbox Code Playgroud)

java inheritance class

5
推荐指数
2
解决办法
635
查看次数

Perl :: 将字符串“yyyy.mm.dd.hh.mm.ss”转换为 DateTime 对象?

这里是 Perl 新手。我有一个解析日志文件的 Perl 脚本 (v5.26.1)。由于我无法控制的原因,日志中每个日期的格式如下:

"yyyy.mm.dd.hh.mm.ss"
Run Code Online (Sandbox Code Playgroud)

例如:

"2022.09.19.16.35.00"
Run Code Online (Sandbox Code Playgroud)

请注意,年始终为四位数字,而月、日、小时、分钟和秒始终为两位数。(例如九月是09

我需要将此字符串转换为 DateTime 对象以进行比较。我以为这个练习会很容易,但是五个小时和大量谷歌搜索之后毫无结果,我还差得很远。这是我的第一次尝试:

#!/usr/bin/perl
use warnings;
use strict;

sub transStrToDTime
{
    # Example format of a date:  "2022.09.19.16.35.00"
    my $str = @_;           # Only one input argument

    use DateTime qw( );
    my ($y,$m,$d,$h,$m,$s) = $str =~ /^([0-9]{4}).([0-9]{2}).([0-9]{2}).([0-9]{2}).([0-9]{2}).([0-9]{2})\z/
        or die;
    my $dt = DateTime->new(
       year      => $y,
       month     => $m,
       day       => $d,
       hour      => $h,
       minute    => $m,
       second    => $s,
       time_zone => 'local'
    );
    printf("=-=-=-=-=-=-=->>> \"$dt\"\n");
} …
Run Code Online (Sandbox Code Playgroud)

string perl datetime type-conversion

3
推荐指数
2
解决办法
189
查看次数

Split() 在换行符和空格字符上?

我想split()在两个换行符上都有一个字符串空格字符的字符串:

#!/usr/bin/perl
use warnings;
use strict;

my $str = "aa bb cc\ndd ee ff";
my @arr = split(/\s\n/, $str);     # Split on ' ' and '\n'
print join("\n", @arr);            # Print array, one element per line
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

aa bb cc
dd ee ff
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是这样的:

aa
bb
cc
dd
ee
ff
Run Code Online (Sandbox Code Playgroud)

所以我的代码在换行符上分裂(好),但不在空格上。 根据 perldoc,空格应该与\s字符类中的匹配,我会假设这 是空格。我错过了什么吗?

perl whitespace split removing-whitespace

3
推荐指数
2
解决办法
268
查看次数

JavaFX编译警告 - "使用未经检查或不安全的操作" - 原始数据类型?

我正在学习JavaFX,特别是尝试使用TableColumn和TableView类来实现一个表.我的程序编译没有错误,但在编译时我收到一个不祥的警告:

C:\JavaFX_Sandbox>javac robotApp.java
Note: robotApp.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

C:\JavaFX_Sandbox>
Run Code Online (Sandbox Code Playgroud)

这足以让我足够强大,以至于我没有勇气尝试实际运行我的程序.我在StackOverflow和其他一些网站上做了一些挖掘,并发现这个警告的最可能原因是我正在使用原始数据类型.但如果是这样,我无法发现它们.如果没有,我担心这个消息可能意味着什么.

尽快描述我的程序:我创建了一个书呆子robot.java类:

public class robot{

    private String name;
    private int intelligence;

    public robot(String a, int b){
        this.name = a;
        this.intelligence = b;
    }
}
Run Code Online (Sandbox Code Playgroud)

没有什么花哨.为了存储所有这些机器人,我创建了一个robotMgr.java类,基本上是一个美化的ArrayList来保存它们:

import java.util.ArrayList;
import java.util.List;
import javafx.collections.*;

public class robotMgr{

    private ArrayList<robot> robotList;
    private ObservableList<robot> oRobotList;

    robotMgr(){
        robotList = new ArrayList<robot>();
        robotList.add(new robot("R2-D2", 7));
        robotList.add(new robot("Cylon", 3));
        robotList.add(new robot("The Terminator", 5));
        robotList.add(new robot("WALL-E", 6));
        populateOList();
    }
    public void populateOList(){ …
Run Code Online (Sandbox Code Playgroud)

java javafx compiler-warnings

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

C自由动态结构数组 - 为什么它们不是连续的

我正在努力使用一个C结构,它必须包含一个动态的较小结构数组:

typedef struct issueStruct {
    int data;
} issue;

typedef struct volumeStruct {
    issue* collection;
    size_t elements;
} volume;
Run Code Online (Sandbox Code Playgroud)

我可以在卷结构的数组中动态创建尽可能多的问题结构.我也可以遍历那个数组:

int main(){
    volume* TimeMagazine = (volume*)malloc(sizeof(volume));
    TimeMagazine->collection = (issue*)malloc(4 * sizeof(issue));
    TimeMagazine->elements = 4;

    issue* ptr = TimeMagazine->collection;
    int i;

    // Populate & iterate through array:
    i = 0;
    while(i < TimeMagazine->elements){
            ptr->data = 100*i;
            printf("%d)  %d\n", i, ptr->data);
            i++;
            ptr = ptr+i;       // Advance ptr
    }
    return 0;
}

OUTPUT:
[Linux]$ gcc -Wall magazines.c
[Linux]$ ./a.out
0)  0
1) …
Run Code Online (Sandbox Code Playgroud)

c arrays free struct dynamic

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

Prometheus 如何抓取 Kafka 主题?

我是一名网络专家,正在尝试构建我的第一个 Kafka --> Prometheus --> Grafana 管道。我的 Kafka 经纪人有一个由外部制作人填充的主题。那太棒了。但是我不知道如何配置我的 Prometheus 服务器以从该主题中作为消费者抓取数据。

我还应该说我的 Kafka 节点在我的主机 Ubuntu 机器上运行(不在 Docker 容器中)。当我运行 Kafka 时,我也在运行一个 JMX 导出器的实例。以下是我在 Ubuntu 命令行上启动 Kafka 的方法:

KAFKA_OPTS="$KAFKA_OPTS -javaagent:/home/me/kafka_2.11-2.1.1/jmx_prometheus_javaagent-0.6.jar=7071:/home/Me/kafka_2.11-2.1.1/kafka-0-8-2.yml" \
  ./bin/kafka-server-start.sh config/server.properties &
Run Code Online (Sandbox Code Playgroud)

好的。我的 Prometheus(也是一个主机进程,不是 Docker 容器版本)可以成功地从我的 Kafka 中提取很多指标。所以我只需要弄清楚如何让 Prometheus 读取我的主题中的消息。我想知道这些消息是否已经可见?我的主题称为“vflow.sflow”,当我查看 Kafka (TCP 7071) 上可用的“可抓取”指标时,我确实看到了这些指标:

From http://localhost:7071/metrics:

kafka_cluster_partition_replicascount{partition="0",topic="vflow.sflow",} 1.0
kafka_cluster_partition_insyncreplicascount{partition="0",topic="vflow.sflow",} 1.0
kafka_log_logendoffset{partition="0",topic="vflow.sflow",} 1.5357405E7
kafka_cluster_partition_laststableoffsetlag{partition="0",topic="vflow.sflow",} 0.0
kafka_log_numlogsegments{partition="0",topic="vflow.sflow",} 11.0
kafka_cluster_partition_underminisr{partition="0",topic="vflow.sflow",} 0.0
kafka_cluster_partition_underreplicated{partition="0",topic="vflow.sflow",} 0.0
kafka_log_size{partition="0",topic="vflow.sflow",} 1.147821017E10
kafka_log_logstartoffset{partition="0",topic="vflow.sflow",} 0.0
Run Code Online (Sandbox Code Playgroud)

“分区 0”、“日志大小”、“日志结束偏移”……所有这些看起来都很有希望……我猜?

但请记住,我对 Kafka/JMX/Prometheus 生态系统完全陌生。问题:上述指标是否描述了我的“vflow.sflow”主题?我可以使用它们来配置 Prometheus 以实际读取主题中的消息吗?

如果是这样,有人可以为此推荐一个好的教程吗?我一直在玩我的 Prometheus YAML 配置文件,但我设法做的就是在我这样做时使 Prometheus …

apache-kafka kafka-consumer-api prometheus jmx-exporter

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