RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-234300

Леонид Дубравский's questions

Martin Hope
Леонид Дубравский
Asked: 2021-11-24 02:02:36 +0000 UTC

如果查询和数据库中的字段不匹配,为什么通过 JDBC 连接池插入时不返回错误?

  • 0

有一个连接池(Hikari):

public DataSource(String databaseUrl, String user, String password, int dbPoolSize) {
        DataSource.databaseUrl = databaseUrl;
        DataSource.user = user;
        DataSource.password = password;
        DataSource.dbPoolSize = dbPoolSize;
        ds = new HikariDataSource();
        ds.setUsername(user);
        ds.setPassword(password);
        ds.setMaximumPoolSize(dbPoolSize);
        ds.setPoolName("JPAHikariCP");
        ds.setMaxLifetime(120000);
        ds.setConnectionTimeout(30000);
        ds.setIdleTimeout(30000);
        ds.setMinimumIdle(5);
        if (service.equals(Service.EXPORTER)){
            ds.setJdbcUrl(databaseUrl);
            ds.setDriverClassName("com.mysql.jdbc.Driver");
            ds.setAutoCommit(false);
            ds.setTransactionIsolation(String.valueOf(TRANSACTION_READ_COMMITTED));
            ds.addDataSourceProperty("useUnicode", "yes");
            ds.addDataSourceProperty("characterEncoding", "utf8");
        } else if (service.equals(Service.IMPORTER_POSTGRES)){
            ds.setJdbcUrl(databaseUrl);
            ds.setDriverClassName("org.postgresql.Driver");
        } else if (service.equals(Service.IMPORTER_MSSQL)){
            ds.setDataSourceClassName("com.microsoft.sqlserver.jdbc.SQLServerDataSource");
            ds.addDataSourceProperty("url", databaseUrl);
        } else if (service.equals(Service.IMPORTER_CLICKHOUSE)){
            ds.setValidationTimeout(250);
            ds.setDriverClassName("ru.yandex.clickhouse.ClickHouseDriver");
            ds.setJdbcUrl(databaseUrl);
        }
    }

……

try {
            connection = DataSource.getInstance().getConnection();
            if (service.equals(Service.EXPORTER)){
                statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
                statement.setFetchSize(Integer.MIN_VALUE);
            } else if (service.equals(Service.IMPORTER_MSSQL)) {
                statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
            } else if (service.equals(Service.IMPORTER_CLICKHOUSE) || service.equals(Service.IMPORTER_POSTGRES)) {
                statement = connection.createStatement();
            }

        } catch (SQLException e) {
            log.error(e.getCause());
            Arrays.stream(e.getStackTrace()).map(toString -> "\u001B[31m" + toString + "\u001B[0m").forEach(log::error);
        }

...

public void executeRequest(String request) throws SQLException {
            statement.execute(request);
    }

我通过执行 INSERT

语句.执行(请求);

如果连接到 Postgres 或 Clickhouse 并且表不包含某些字段,则会返回错误,这是应该的。
如果连接到 mssql 数据库并且表不包含某些字段没有给出任何错误,则数据不会进入表中。与成功插入一样的行为。

用什么给定的问题,在mssql中插入可以连接吗?连接配置错误或数据库端有问题?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-07-30 22:00:27 +0000 UTC

com.sun.net.httpserver.HttpsServer 如何解决 SSL_ERROR_SYSCALL 错误?

  • 0

创建了一个 https 服务器:

    public void startHttpsServer() {
    try {
        httpsServer = com.sun.net.httpserver.HttpsServer.create();
        httpsServer.bind(new InetSocketAddress(httpsPort), 5);
        httpsServer.createContext("/getVersion", new VersionHandler());
        httpsServer.createContext("/sysInfo", new SysInfoHandler());
        httpsServer.createContext("/cashRegisterService", new CashRegisterHandler());
        httpsServer.createContext("/printService", new PrintServiceHandler());

        char[] storepass = "testtest".toCharArray();
        char[] keypass = "testtest".toCharArray();

        KeyStore ks = KeyStore.getInstance("JKS");
        ks.load(HttpServer.class.getResourceAsStream("test.jks"), storepass);

        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
        kmf.init(ks, keypass);

        TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
        tmf.init(ks);
        SSLContext ssl = SSLContext.getInstance("TLS");
        ssl.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);

        httpsServer.setHttpsConfigurator(new HttpsConfigurator(ssl) {
            public void configure (HttpsParameters params) {

                // get the remote address if needed
                InetSocketAddress remote = params.getClientAddress();

                SSLContext c = getSSLContext();
                SSLParameters sslparams = c.getDefaultSSLParameters();
                // get the default parameters

                params.setSSLParameters(sslparams);
                // statement above could throw IAE if any params invalid.
                // eg. if app has a UI and parameters supplied by a user.
            }
        });
    } catch (IOException e) {
        e.printStackTrace();
        Logger.addLogLine("HttpServerError",e.toString(), e);
    } catch (CertificateException | NoSuchAlgorithmException | KeyManagementException | KeyStoreException | UnrecoverableKeyException e) {
        e.printStackTrace();
    }
    ExecutorService executor = Executors.newFixedThreadPool(5);
    httpsServer.setExecutor(executor);
    httpsServer.start();
    try {
        executor.awaitTermination(Integer.MAX_VALUE, TimeUnit.DAYS);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

似乎仍然需要使用证书创建存储。完全的:

keytool -v -genkey -dname "CN=localhost, OU=Developers, O=NA, L=Kiev, C=UA" -alias parent -storetype jks -keystore test.jks -validity 365 -keyalg RSA -keysize 2048 -storepass testtest -keypass testtest

我启动我的服务并执行 curl:

curl -v -H -GET  https://localhost:32910/sysInfo

结果:

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 32910 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:32910 
* stopped the pause stream!
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:32910 

我错过了什么或做错了什么?SSL有什么问题?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-02-14 14:33:44 +0000 UTC

正确终止spring boot Application

  • 0

spring boot上有一个应用程序

@EnableScheduling
@SpringBootApplication
@PropertySource("classpath:application.properties")
public class Application {
    private static final Logger log = Logger.getLogger(Application.class);

    @Value("${executor}")
    private String executorName;

    @Autowired
    public void setExecutorName(ApplicationContext context) {
        context.getBean(executorName);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

启动调度程序

@Service("exporter")
@PropertySource("classpath:application.properties")
public class ExecutorExporterService {

    @Value("${topicName}")
    String topicName;

    @Autowired
    EntityRepository entityRepository;

    @Autowired
    ConsumerKafka consumerKafka;

    @Transactional
    @Scheduled(fixedRateString = "${timeInterval}")
    public void runExecutor() throws InterruptedException, ExecutionException {
        Set<ConsumerRecord> consumerRecords = consumerKafka.consumeKafka(Collections.singletonList(topicName));

        List<Person> persons = consumerRecords.stream().map(record -> (Person) record.value()).collect(Collectors.toList());

        entityRepository.saveAll(persons);

        consumerKafka.commitSyncConsumer();
        consumerKafka.closeConsumer();
        System.out.println(persons);
    }
}

发射mvn spring-boot:start

试图停止:mvn spring-boot:stop

分发:

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.2.4.RELEASE:stop (default-cli) on project leantegra_importer: Spring application lifecycle JMX bean not found (fork is null). Could not stop application gracefully: org.springframework.boot:type=Admin,name=SpringApplication -> [Help 1]

并且应用程序不会停止。

如何正确停车?有可能做到这一点Ctrl C吗?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-02-07 14:14:42 +0000 UTC

MismatchedInputException:无法从 START_ARRAY 令牌中反序列化“com.model.Floor”的实例。为什么会发生,如何解决?

  • 0

有一个 POJO:

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({"uid", "access", "name", "image", "imageFilename", "index", "parent", "coefficient", "geojson",
        "creationDate", "createdBy", "modifiedDate", "modifiedBy", "scaleDistance", "scalePoints", "center"})
@Entity
@Table(name = "floor")
public class Floor {

    @Id
    @JsonProperty("uid")
    private Double uid;

    @JsonProperty("access")
    private Access access;

    @JsonProperty("name")
    private String name;

    @JsonProperty("image")
    private String image;

    @JsonProperty("imageFilename")
    private String imageFilename;

    @JsonProperty("index")
    private String index;

    @JsonProperty("parent")
    @JsonPropertyDescription("UID of the venue, where floor located")
    private Double parent;

    @JsonProperty("coefficient")
    private Double coefficient;

    @JsonProperty("geojson")
    @JsonPropertyDescription("Floor polygon in GeoJSON format")
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
    private Point geojson;

    @JsonProperty("creationDate")
    private Date creationDate;

    @JsonProperty("createdBy")
    @JsonPropertyDescription("UID of the user")
    private Double createdBy;

    @JsonProperty("modifiedDate")
    private Date modifiedDate;

    @JsonProperty("modifiedBy")
    @JsonPropertyDescription("UID of the user")
    private Double modifiedBy;

    @JsonProperty("scaleDistance")
    private Double scaleDistance;

    @JsonProperty("scalePoints")
    @JsonPropertyDescription("Measurement line in GeoJSON format")
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
    private Point scalePoints;

    @JsonProperty("center")
    @JsonPropertyDescription("floor center for map rendering")
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
    private Center center;
}

我从 webClient 获得一个用于 pojo 的对象:

Mono<Floor> mono= webClient.get()
                .uri("https://leantegra.leantegra.com/api/locations/floors")
                .attributes(ServerOAuth2AuthorizedClientExchangeFilterFunction.clientRegistrationId("authProvider"))
                .retrieve().bodyToMono(Floor.class);

        Floor flour = mono.block()

弹出一个错误:

引起:org.springframework.core.codec.DecodingException:JSON解码错误:无法反序列com.model.Floor化START_ARRAY令牌的实例;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列com.model.Floor化 START_ARRAY 标记的实例

我们在谈论什么 START_ARRAY?如何找到错误在哪里?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-01-09 18:45:00 +0000 UTC

jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误。如何决定?

  • 1

有一个要求:

 INSERT INTO DocumentWarehouse (`Ref`, `Number`, `DateTime`)
        VALUES
        ('4583b3b4-c53f-11e8-bca5-0025b502b04e', '102-01554356', '2018-10-01T09:00:17')
        ON DUPLICATE KEY UPDATE Ref = VALUES(Ref);
        DELETE FROM DocumentWarehouse_Owner WHERE "Ref" IN
        ("4583b3b4-c53f-11e8-bca5-0025b502b04e");
     INSERT INTO DocumentWarehouse_Owner (`Ref`, `RowNumber`)
        VALUES
        ('4583b3b4-c53f-11e8-bca5-0025b502b04e', '1.0');

在 Intelij Idea 中出现错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM DocumentWarehous_OwnerDocuments WHERE "Ref" IN
(' at line 5

控制台运行良好。可能是什么?

PS:这是生成被抱怨的部分代码的方法:

private String getDeleteChildRows(EntityModel entityModel, LinkedList<String> refValues) {
        StringBuilder deleteChildFieldRequest = new StringBuilder();
        StringBuilder deleteChildValues = new StringBuilder();

        for (String value : refValues) {
            deleteChildValues.append(String.format("\"%s\",\n", value));
        }
        deleteChildValues.setLength(deleteChildValues.length() - 2);

        for (String childTableName : entityModel.getTabularSection().keySet()) {
            deleteChildFieldRequest.append(String.format("DELETE FROM %s_%s WHERE \"Ref\" IN\n(%s);\n", entityModel.getName(), childTableName, deleteChildValues));
        }
        return deleteChildFieldRequest.toString();
    }

还:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
    </dependency>


 private BasicDataSource ds;
    private static String databaseUrl;
    private static String user;
    private static String password;
    private static int dbPoolSize;

    public DataSource(String databaseUrl, String user, String password, int dbPoolSize) {
        DataSource.databaseUrl = databaseUrl;
        DataSource.user = user;
        DataSource.password = password;
        DataSource.dbPoolSize = dbPoolSize;
        ds = new BasicDataSource();
        ds.setUsername(user);
        ds.setPassword(password);
        ds.setUrl(databaseUrl);
        ds.setMaxIdle(dbPoolSize);
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setDefaultAutoCommit(false);
        ds.setDefaultTransactionIsolation(TRANSACTION_READ_COMMITTED);
        ds.addConnectionProperty("useUnicode", "yes");
        ds.addConnectionProperty("characterEncoding", "utf8");

 private Statement statement;
statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
statement.setFetchSize(Integer.MIN_VALUE);

public void executeRequest(String request) throws SQLException { statement.execute(request); }

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-11-13 18:03:01 +0000 UTC

如何在 Postgres 中生成复杂删除记录的查询?

  • 0

从PostgreSql数据库中的某个表中,需要根据某个主键列表删除几条记录。如果主键是一列,我可以查询:

DELETE FROM "USERS" WHERE "Id" IN
('a541a658-07b5-11e6-971e-005056887b8d',
'b03c2215-c430-11e5-8478-005056887b8d',
'a783c055-ec2e-11e5-899e-005056887b8d',
'ad253abd-ace7-11e7-ba66-005056b2fc3d',
'b139d9ef-39d7-11e9-acea-005056b24375',
'bb6ab30a-7cb8-11e5-b6f7-005056887b8d');

如果主键包含多列,如何生成复杂的删除查询?例如“姓名”、“电话”、“地址”?这样的删除会比对每条记录的单独请求更快吗?

sql
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-07-26 22:44:58 +0000 UTC

如何在 Jenkins 中获得 junit 测试覆盖率?

  • 1

我有一个带有junit测试的java项目。该项目已连接到 Jenkins。测试在 Jenkins 中运行。来自 Jenkinsfile 的部分代码:

stage('test') {
        app.withRun('') {
            c ->
                parallel 'junit test': {
                    app.inside {
                        sh 'mvn test'
                        junit '**/surefire-reports/**/*.xml'
                    }
                }, 'integration test': {
                    app.inside {
                        sh 'mvn -P=systest test'
                        junit '**/surefire-reports/**/*.xml'
                    }
                }
        }
    }

但也有必要通过测试获得代码覆盖率。我怎样才能做到这一点?

java
  • 2 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-07-10 19:15:17 +0000 UTC

如何为 Collectors Java Stream API 创建条件(将 InputStream 转换为 String)?

  • 0

有一种方法

public String convert(InputStream inputStream) throws IOException {

        try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
            return br.lines().collect(Collectors.joining(System.lineSeparator()));
        }
    }

如何创建条件“如果字符串为空,停止从 InputStream 读取”?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-07-10 15:47:47 +0000 UTC

如何加快从 InputStream 到 java.net Socket 的读取数据?

  • 0

有一个 java.net 套接字

    private Socket clientSocket;
    private BufferedReader is;
    private Writer out;

    public ClientServiceThread(Socket clientSocket) throws IOException {
        this.clientSocket = clientSocket;
        clientSocket.setTcpNoDelay(true);

        this.is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        this.out = new OutputStreamWriter(this.clientSocket.getOutputStream(), "UTF-8");

        String str = convert(is);
    }

通过socket接收到的Base64数据量比较大。

读取数据需要很长时间。

public String convert(BufferedReader reader) throws IOException {

        StringBuilder stringBuilder = new StringBuilder();
        String line = null;

            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line);

        }

        return stringBuilder.toString();
    }

如何正确、高效地读取数据,即更快地读取数据?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-06-18 16:38:54 +0000 UTC

如何使用 com.sun.net.httpserver.HttpServer 处理 http get/post/put/delete 请求?

  • 1

有一个简单的 Http Server

private com.sun.net.httpserver.HttpServer server = null;
    public void startHttpServer(int port) {
            try {
                server = com.sun.net.httpserver.HttpServer.create(new InetSocketAddress(port), 0);
            } catch (IOException e) {
                e.getStackTrace();
            }
            System.out.println("HTTP server started at " + port);
            server.createContext("/", new RootHandler());
            server.createContext("/api/0.1/device_configuration", new PostDeviceConfiguration());
            server.createContext("/api/0.1/order", new PutCancellationOrder());
            server.createContext("/api/0.1/order", new PostOrder());

            server.setExecutor(Executors.newCachedThreadPool());
            server.start();
        }

这样的服务器可以区分 get/post/rest/delete http 方法吗?如果是,该怎么做?您需要使用相同的 URL 实现 post 和 put。

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-04-04 17:52:36 +0000 UTC

maven 项目未编译。如何追踪错误在哪里?

  • 0

如何找到错误?

/usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dmaven.multiModuleProjectDirectory=/home/dubravsky/IdeaProjects/exporter_importer -Dmaven.home=/home/dubravsky/idea-IU-182.4892.20/plugins/maven/lib/maven3 -Dclassworlds.conf=/home/dubravsky/idea-IU-182.4892.20/plugins/maven/lib/maven3/bin/m2.conf -javaagent:/home/dubravsky/idea-IU-182.4892.20/lib/idea_rt.jar=42859:/home/dubravsky/idea-IU-182.4892.20/bin -Dfile.encoding=UTF-8 -classpath /home/dubravsky/idea-IU-182.4892.20/plugins/maven/lib/maven3/boot/plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version=2018.2.5 clean validate compile test package verify install
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building exporter_importer 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ exporter_importer ---
[INFO] Deleting /home/dubravsky/IdeaProjects/exporter_importer/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ exporter_importer ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ exporter_importer ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 40 source files to /home/dubravsky/IdeaProjects/exporter_importer/target/classes
An exception has occurred in the compiler (1.8.0_181). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.NullPointerException
    at com.sun.tools.javac.comp.Lower.accessClass(Lower.java:1113)
    at com.sun.tools.javac.comp.Lower.accessSymbol(Lower.java:983)
    at com.sun.tools.javac.comp.Lower.access(Lower.java:1220)
    at com.sun.tools.javac.comp.Lower.visitIdent(Lower.java:3372)
    at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2011)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2382)
    at com.sun.tools.javac.comp.Lower.boxArgs(Lower.java:3112)
    at com.sun.tools.javac.comp.Lower.visitApply(Lower.java:3015)
    at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
    at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
    at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
    at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3561)
    at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.tree.TreeTranslator.visitTry(TreeTranslator.java:218)
    at com.sun.tools.javac.comp.Lower.visitTry(Lower.java:3897)
    at com.sun.tools.javac.tree.JCTree$JCTry.accept(JCTree.java:1173)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
    at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
    at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3561)
    at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.comp.Lower.visitIf(Lower.java:2977)
    at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1269)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
    at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
    at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3561)
    at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.comp.Lower.visitWhileLoop(Lower.java:3573)
    at com.sun.tools.javac.tree.JCTree$JCWhileLoop.accept(JCTree.java:965)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
    at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
    at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3561)
    at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
    at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2828)
    at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
    at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
    at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
    at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
    at com.sun.tools.javac.comp.Lower.translate(Lower.java:2390)
    at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3932)
    at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1512)
    at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
    at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
    at com.sun.tools.javac.main.Main.compile(Main.java:523)
    at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
    at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:126)
    at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174)
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:943)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:137)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:47)

它可以与什么连接?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-03-28 17:58:54 +0000 UTC

如何获取Kafka中的最后一个主题偏移日期?

  • 1

我有很多主题的 Kafka。并且有 Consumer Kafka 用于读取这些主题的记录:

    public Set<ConsumerRecord> consumeKafka() {
        consumer.subscribe(topics);

        Set<ConsumerRecord> resultRecords = new HashSet<>();

        int i = 0;
        while (i++ < topicIteration) {
            ConsumerRecords<Object, Object> records = consumer.poll(100);
            System.out.println(records.partitions());

            for (ConsumerRecord consumerRecord : records){
                resultRecords.add(consumerRecord);
            }
        }
        return resultRecords;
    }

private Consumer consumerInit(String consumerId){
    props = new Properties();
    props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
    props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
    props.put(ConsumerConfig.CLIENT_ID_CONFIG, consumerId);
    props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class.getName());
    props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class.getName());
    props.put(KafkaAvroDeserializerConfig.SCHEMA_REGISTRY_URL_CONFIG, schemaRegistryUrl);
    props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
    props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
    if (isActualizationTopics) {
        props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 1);
    } else {
        props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, topicLimit);
    }

    return new KafkaConsumer<>(props);
}

为了不连续读取所有主题,我需要对主题列表进行排序,并从最长时间未读取数据的主题中获取数据。我知道我需要获取每个主题的最后偏移日期并对其进行排序?如何才能做到这一点?或者也许还有其他解决方法?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-03-13 18:28:01 +0000 UTC

如何正确使用 UNION ALL 和 order by?

  • 0

我正在尝试合并几个查询:

          SELECT 'object1', MessageNo, _Order FROM _Object1Changes WHERE MessageNo=0 AND Node='33' order by _Order desc  LIMIT 1
UNION ALL SELECT 'object2', MessageNo, _Order FROM _Object2Changes WHERE MessageNo=0 AND Node='33' order by _Order desc  LIMIT 1
UNION ALL SELECT 'object3', MessageNo, _Order FROM _Object3Changes WHERE MessageNo=0 AND Node='33' order by _Order desc  LIMIT 1
UNION ALL SELECT 'object4', MessageNo, _Order FROM _Object4Changes WHERE MessageNo=0 AND Node='33' order by _Order desc  LIMIT 1;

错误代码:1221。UNION 和 ORDER BY 的使用不正确

或者我尝试这样:

          SELECT 'object1', MessageNo, MIN(_Order) FROM _Object1Changes WHERE MessageNo=0 AND Node='33' LIMIT 1
UNION ALL SELECT 'object2', MessageNo, MIN(_Order) FROM _Object2Changes WHERE MessageNo=0 AND Node='33'  LIMIT 1
UNION ALL SELECT 'object3', MessageNo, MIN(_Order) FROM _Object3Changes WHERE MessageNo=0 AND Node='33'LIMIT 1
UNION ALL SELECT 'object4', MessageNo, MIN(_Order) FROM _Object4Changes WHERE MessageNo=0 AND Node='33' LIMIT 1;

我得到一张有一条记录的表,'object1',null,null。目标是从多个表中获取结果,其中从每个表中获取最小值为 _Order 和 Node='33' 的记录

如何解决这个问题?

mysql
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-02-22 19:03:08 +0000 UTC

如何将特定表中的多个字段插入到临时表中?

  • 0

我有一个临时表:

CREATE TEMPORARY TABLE TT_name (ObjectName varchar(45) NOT NULL, 
                                MessageNo int NOT NULL,  
                                _Order TIMESTAMP NOT NULL,  
                                PRIMARY KEY (ObjectName)) ENGINE = MyISAM;

需要:

  1. 从“Table_name”表中选择“_Order”字段中日期最早且“MessageNo”=1的记录;
  2. 将先前选择的记录中的数据插入临时表(“_Order”和“MessageNo”字段)并将特定值插入“ObjectName”字段(例如,“EntityModelName”);

我怎样才能做到这一点?

mysql
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-02-20 22:00:08 +0000 UTC

如何在 SIGTERM 上使用 ThreadPoolExecutor 正确停止应用程序?

  • 0

有一个带有线程池的应用程序。

public static void main(String[] args) {
...
ThreadPoolExecutor executor = new ThreadPoolExecutor(threadPoolSize, threadPoolSize,0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(threadPoolSize));

registerShutdownHook(executor);
        while (!executor.isShutdown()) {
                startExecutor(isOrderBy, isCheckOldChanges);
                if (countIterations == 0) isCheckOldChanges = false;
                countIterations++;
        }
...
System.out.println("Application was stop!");
}

private static void startExecutor(boolean isOrderBy, boolean isCheckOldChanges) {
        for (EntityModel model : allModels.values()) {
            if (executor.isShutdown()) {
                return;
            } else {
                Runnable worker = new ProducerThread(isOrderBy, isCheckOldChanges, model);
                if (executor.getQueue().remainingCapacity()==1){
                    while (executor.getQueue().remainingCapacity()==1){
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
                executor.execute(worker);
            }

        }
    }

private static void registerShutdownHook(ExecutorService executor) {
        final Thread mainThread = Thread.currentThread();
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            try {
                executor.shutdown();
                mainThread.join();
            } catch (InterruptedException e) {
                log.error(e.getStackTrace());
            }
        }));
    }

当应用程序停止时,它会抛出:

线程“主”java.util.concurrent.RejectedExecutionException 中的异常:任务 com.kafkaproducer.ProducerThread@57175e74 从 java.util.concurrent.ThreadPoolExecutor@7bb58ca3 被拒绝 [正在关闭,池大小 = 10,活动线程 = 10,排队任务 = 1,已完成的任务 = 35] 在 java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) 在 java.util.concurrent.java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)。 com.ApplicationRun.startExecutor(ApplicationRun.java:101) 处的 com.ApplicationRun.main(ApplicationRun.java:77) 处的 ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379)

如何使应用程序正确停止?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-02-20 16:24:15 +0000 UTC

如何从 ExecutorService 中删除队列但等​​待正在运行的线程执行?

  • 0

有:

 ExecutorService executor = Executors.newFixedThreadPool(threadPoolSize);

需要正确停止执行器,以免中断正在运行的线程并删除所有在队列中等待的线程。

shutdownNow()- 降低执行者,所以这是不可能的。
shutdown()- 等到整个队列以及预期的队列结束,并且有数以万计的队列。

试过:

BlockingQueue<Runnable> queue = new ArrayBlockingQueue<>(threadPoolSize);
executor = new ThreadPoolExecutor(threadPoolSize, threadPoolSize, 0L, TimeUnit.MILLISECONDS, queue);

然后:

executor.shutdown();
 queue.clear();

但是这里出了点问题,因为队列没有被刷新。

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-02-19 17:11:27 +0000 UTC

com.sun.net.httpserver.HttpServer 挂起 [关闭]

  • 0
关闭。这个问题需要澄清或补充细节。目前不接受回复。

想改进这个问题?通过编辑此帖子添加更多详细信息并澄清问题。

3年前关闭。

改进问题

有一个使用 HttpServer 的应用程序:

   public class HttpServer {
    private static final Logger log = Logger.getLogger(HttpServer.class);

    private com.sun.net.httpserver.HttpServer server = null;
    public void startHttpServer(int port) {

        try {
            server = com.sun.net.httpserver.HttpServer.create(new InetSocketAddress(port), 0);
        } catch (IOException e) {
            log.error(e.getStackTrace());
        }
        System.out.println("HTTP server started at " + port);
        server.createContext("/", new RootHandler());
        server.createContext("/limit_objects", new GetLimitHandler());
        server.createContext("/need_update_metadata", new PostUpdateMetadata());
        server.createContext("/update_limit_objects", new PostUpdateLimitHandler());
        server.setExecutor(Executors.newCachedThreadPool());
        server.start();
    }
}

class RootHandler implements HttpHandler {
    @Override
    public void handle(HttpExchange he) throws IOException {
        String response = "{\"Result\": \"I am working!\"}";
        he.sendResponseHeaders(200, response.length());
        OutputStream os = he.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }
}

class GetLimitHandler implements HttpHandler {
    private static final Logger log = Logger.getLogger(GetLimitHandler.class);

    @Override
    public void handle(HttpExchange httpExchange) {
        String response = limits.toString();
        try {
            httpExchange.sendResponseHeaders(200, limits.toString().length());
            OutputStream outputStream = httpExchange.getResponseBody();
            outputStream.write(response.getBytes());
            outputStream.close();
        } catch (IOException e) {
            log.error(e.getStackTrace());
        }

    }
}

class PostUpdateMetadata implements HttpHandler {
    private static final Logger log = Logger.getLogger(PostUpdateMetadata.class);

    @Override
    public void handle(HttpExchange he) {

        String response = "{\"Result\": \"Metadata was update\"}";

        SettingTopicProperties settingTopicProperties = new SettingTopicProperties();
        settingTopicProperties.createZNode(needUpdateMetadata, "");

        try {
            he.sendResponseHeaders(200, response.length());
            OutputStream outputStream = he.getResponseBody();
            outputStream.write(response.getBytes());
            outputStream.close();
        } catch (IOException e) {
            log.error(e.getStackTrace());
        }
    }
}

class PostUpdateLimitHandler implements HttpHandler {
    private static final Logger log = Logger.getLogger(PostUpdateLimitHandler.class);
    @Override

    public void handle(HttpExchange he) {
        InputStreamReader inputStreamReader = null;
        try {
            inputStreamReader = new InputStreamReader(he.getRequestBody(), "utf-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String query = bufferedReader.readLine();

            String response = "{\"Result\": \"Limit of objects was updated\"}";

            SettingTopicProperties settingTopicProperties = new SettingTopicProperties();
            settingTopicProperties.update(recordLimitProperties, query.getBytes());

            he.sendResponseHeaders(200, response.length());
            OutputStream os = he.getResponseBody();
            os.write(response.getBytes());
            os.close();
        } catch (IOException e) {
            log.error(e.getStackTrace());
        }
    }
}

对服务器的所有请求都正常处理。但是应用程序在停止时会冻结。如果不向 HttpServer 发送请求,则正常停止。可能是什么问题呢?

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-02-06 22:56:10 +0000 UTC

如何在 Java 中将日期和时间从 Date 转换为 Seconds AD?

  • 4

如何将日期和时间从Date基督诞生转换为秒?

date.getTime()- 从UNIX时间开始返回。

例如,您需要将 2018-12-26 11:39:27 从 01.01.0001 00:00:00 转换为秒

澄清:不使用 Date 会更正确,但 Timestamp 有一项服务需要以秒为单位传输日期和时间。此服务使用以下方法从几秒钟内重现日期和时间:

 private String dateConverter(String date) {
            LocalDateTime ldt = LocalDateTime.of(1, Month.JANUARY, 1, 0, 0, 0);
            LocalDateTime resDate = ldt.plusSeconds(Long.parseLong(date));
            return String.valueOf(resDate);
        } 

日期和时间(例如,2018-12-26 11:39:27)必须首先转换为秒,从 01/01/0001 00:00:00 开始计算

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-01-16 17:35:24 +0000 UTC

创建 Avro 架构时如何为字段添加多种类型?

  • 0

有一种创建 Avro 模式的方法:

public void schemaCreator(String recordName, EntityModel entityModel){
        SchemaBuilder.FieldAssembler<Schema> fields;
        SchemaBuilder.RecordBuilder<Schema> record = SchemaBuilder.record(recordName);
        fields = record.namespace("Test").fields();
        for (AttributeModel attributeModel : entityModel.getAttributeModels()) {


            fields = fields.name(attributeModel.getName()).type().nullable().stringType()
                    .noDefault();

        }
    }

结果,我们有一个图表:

{
 "type":"record",
 "name":"InfoData",
 "namespace":"Test",
 "fields":[
   {
    "name":"Setting",
    "type":["string","null"]
   },
   {
    "name":"Value",
    "type":["string","null"]}]
   }

如何为一个字段添加多种类型?例如:"type":["string","long","boolean","null"]}]

java
  • 1 个回答
  • 10 Views
Martin Hope
Леонид Дубравский
Asked: 2020-12-10 18:15:31 +0000 UTC

Spring Boot 测试没有看到 application.properties

  • 0

在我正在为其编写测试的类中,有一个变量:

@Value("${key}")
private String key;

从文件中获取值application.properties

应用程序本身从 中看到这个值application.properties,但测试没有。

测试看不到键值或application.properties.

这是测试代码:

@SpringBootTest
@RunWith(SpringRunner.class)
public class CipherServiceTest {

    private String decryptData;
    private String encryptData;

    private CipherService cipherService;

    @Before
    public void setUp() {
        cipherService = new CipherServiceImpl();
        decryptData = "1234567";
        encryptData = "Ql1eURhFU";
    }

    @Test
    public void encryptDataTest(){
        assertThat(cipherService.encrypt(decryptData)).isNotEqualTo(decryptData);
    }

    @Test
    public void decryptData(){
        assertThat(cipherService.decrypt(encryptData)).isEqualTo(decryptData);
    }
}

请告诉我,在哪里以及如何正确注册测试属性?我阅读并遵循,但没有帮助:

https://docs.spring.io/spring/docs/5.1.3.RELEASE/javadoc-api/org/springframework/test/context/TestPropertySource.html

java
  • 3 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5