小编rvi*_*t34的帖子

javaFX中是否存在等价的枚举属性类型?

我想观察一些java bean类的某些字段所做的更改.
该字段是枚举类型.
要绑定字段和相应的ui控件我将PropertyChangeListener按照此处所述使用
但似乎javaFX没有等效的枚举属性类型.像javafx.beans.property.EnumProperty
我试图使用的东西StringProperty,ObjectProperty但它不起作用.

更新:添加了sscce

Observable.java

package sample;

    import java.beans.PropertyChangeListener;
    import java.beans.PropertyChangeSupport;

    public class Observable {

        protected PropertyChangeSupport propertyChangeSupport = null;

        public Observable() {}

        public void setObservableObject (Observable observable) {
            propertyChangeSupport = new PropertyChangeSupport(observable);
        }

        public void addPropertyChangeListener(PropertyChangeListener listener){
            System.out.println("added PropertyChangeListener");
            propertyChangeSupport.addPropertyChangeListener(listener);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Item.java

package sample;


    public class Item extends Observable {

        public enum State {
            INIT, STARTED
        }

        private String name;
        private State state = …
Run Code Online (Sandbox Code Playgroud)

java javafx javafx-8

8
推荐指数
1
解决办法
3988
查看次数

kafka消费者内存消耗高

最近我发现kafka消费者需要大量的内存。

为了进行测试,我刚刚在本地启动了一个监听单个主题的单线程消费者。主题有 4 个分区。Kafka 只有一名经纪人。

我只从制作人那里发送了 10 条小消息(当时是晚上 11:44:30 左右,请参阅我在链接中附加的图片)。从那时起,没有人再向该主题发送任何消息。从那时起,我一直在图表上看到消费者轮询工作期间内存消耗不断增长。线路不断增长,直到 GC 未被调用。消费者只发送轮询请求,不返回任何内容,但需要大量内存。

我认为这是个问题。我尝试进行一些调整,即将一​​些参数配置为 FETCH_MAX_BYTES_CONFIG/MAX_PARTITION_FETCH_BYTES_CONFIG/MAX_POLL_RECORDS_CONFIG 但实际上没有任何结果。

SSCCE:

卡夫卡消费者配置:

import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.common.serialization.ByteArrayDeserializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.listener.AbstractMessageListenerContainer;

import java.util.HashMap;
import java.util.Map;

@Configuration
@EnableKafka
public class KafkaConsumerConfig {

    @Bean
    public ConcurrentKafkaListenerContainerFactory<String, byte[]> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<String, byte[]> factory
                = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConcurrency(1);
        factory.setConsumerFactory(consumerFactory());
        factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL);
        return factory;
    }

    private ConsumerFactory<String, byte[]> consumerFactory() {
        return new DefaultKafkaConsumerFactory<>(consumerProperties());
    }

    private Map<String, Object> consumerProperties() {
        final Map<String, Object> …
Run Code Online (Sandbox Code Playgroud)

java apache-kafka spring-kafka

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

spring rest处理空请求体(400 Bad Request)

我正在使用Spring4开发RESTful应用程序.我想在POST请求中没有传递正文时处理大小写.我写自定义异常处理程序:

@ControllerAdvice
public class MyRestExceptionHandler {

  @ExceptionHandler
  @ResponseStatus(HttpStatus.BAD_REQUEST)
  public ResponseEntity<MyErrorResponse> handleJsonMappingException(JsonMappingException ex) {
      MyErrorResponse errorResponse = new MyErrorResponse("request has empty body");
      return new ResponseEntity<MyErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
  }   
  @ExceptionHandler(Throwable.class)
  public ResponseEntity<MyErrorResponse> handleDefaultException(Throwable ex) {
    MyErrorResponse errorResponse = new MyErrorResponse(ex);
    return new ResponseEntity<MyErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
  }

}
 @RestController
 public class ContactRestController{
    @RequestMapping(path="/contact", method=RequestMethod.POST)
    public void save(@RequestBody ContactDTO contactDto) {...}
 } 
Run Code Online (Sandbox Code Playgroud)

但是当它发生时,这些方法将不会被调用.我刚收到400 BAD REQUEST http状态和空身的响应.有人知道如何处理吗?

java rest spring spring-boot spring-4

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

Spring Boot在运行时更改DataSource和JPA属性

我正在编写一个桌面Spring Boot和Data-JPA应用程序。
初始设置来自application.properties(某些spring.datasource.*spring.jpa.*
。我的程序的功能之一是可以通过ui指定数据库设置(rdbms类型,主机,端口,用户名,密码等)。
这就是为什么我想在运行时重新定义已经初始化的数据库属性。这就是为什么我正在寻找一种方法来做到这一点。

我尝试执行以下操作:
1)我编写了自定义DbConfig,其中DataSource在Singleton Scope中声明了bean。

@Configuration
public class DBConfig {

  @ConfigurationProperties(prefix = "spring.datasource")
  @Bean
  @Scope("singleton")
  @Primary
  public DataSource dataSource() {
    return DataSourceBuilder
            .create()
            .build();
  }

}
Run Code Online (Sandbox Code Playgroud)

2)在一些DBSettingsController中,我得到了这个bean的实例并更新了新的设置:

public class DBSettingsController {
   ...
   @Autowired DataSource dataSource;
   ...

   public void applySettings(){

       if (dataSource instanceof org.apache.tomcat.jdbc.pool.DataSource){
        org.apache.tomcat.jdbc.pool.DataSource tomcatDataSource = (org.apache.tomcat.jdbc.pool.DataSource) dataSource;
        PoolConfiguration poolProperties = tomcatDataSource.getPoolProperties();
        poolProperties.setUrl("new url");
        poolProperties.setDriverClassName("new driver class name");
        poolProperties.setUsername("new username");
        poolProperties.setPassword("new password");
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

但这没有效果。使用初始初始化的DataSource属性,Spring数据存储库是精钢的。

我也听说过Spring Cloud …

java spring spring-data spring-data-jpa spring-boot

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

无法使用INSERT从Spring Data Repository返回本机查询

我在Spring Data JPA存储库中使用本机SQL查询,并且想在upsert后返回自动生成的ID。看起来像下面的类似片段:

public interface EntityRepository extends CrudRepository<Entity, Integer> {

    @Modifying
    @Transactional
    @Query(value = "INSERT INTO entity (name, age) VALUES(?1,?2) " +
                       "ON CONFLICT(name) DO UPDATE SET name=?1,age=?2 " +
                       "RETURNING id", nativeQuery = true)
    Integer upsert(String name, int age); 
}
Run Code Online (Sandbox Code Playgroud)

执行后,我得到下一个PSQLException:

Caused by: org.postgresql.util.PSQLException: A result was returned when none was expected.
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:141)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
Run Code Online (Sandbox Code Playgroud)

因此,问题出在这里:

org.postgresql.jdbc.PgPreparedStatement:

public int executeUpdate() throws SQLException {
   executeWithFlags(QueryExecutor.QUERY_NO_RESULTS);

   ResultWrapper iter = result;
   while (iter != null) {
     if …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring-data-jpa

5
推荐指数
0
解决办法
450
查看次数

JavaFX将旋转应用于CSS中的图像

我想知道是否有办法将某些转换(即旋转)应用于设置为某个按钮的图像.我用css通过这种方式指定所有图像:

.custom-button {
   -fx-graphic: url("imgs/buttons/button.png");
   ...
}

.custom-button:hover {
   -fx-graphic: url("imgs/buttons/button_hover.png");
   ...
}

.custom-button:selected {
   -fx-graphic: url("imgs/buttons/button_selected.png");
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想在css中指定这样的转换.我怎样才能做到这一点?我想找到类似的东西:

.custom-button .graphic {
   -fx-rotate: 90;
}
Run Code Online (Sandbox Code Playgroud)

javafx javafx-8 javafx-css

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

为什么 liquibase 总是使用自己的序列?

我正在使用 liquibase 作为我当前项目的迁移工具。

问题是我正在尝试使用自定义序列为实体自动生成 id,但发生了错误。

我定义了一个实体表和自定义序列,如下所示:

<databaseChangeLog>
<changeSet id="create_orders_table" author="I am">
    <createTable tableName="ORDERS">
        <column name="id"  type="SERIAL" valueComputed="SEQ_ORDERS.NEXTVAL" valueSequenceCurrent="SEQ_ORDERS.CURRENT"  valueSequenceNext="SEQ_ORDERS.NEXTVAL" defaultValueSequenceNext="SEQ_ORDERS.NEXTVAL">
            <constraints primaryKey="true" unique="true"/>
        </column>
        <column name="number" type="VARCHAR(64)"/>
        ...
    </createTable>
</changeSet>
<changeSet id="add_sequence" author="I am">
    <createSequence sequenceName="SEQ_ORDERS" cycle="false" minValue="1" maxValue="9223372036854775807" startValue="1" incrementBy="1"/>
</changeSet>
</databaseChangeLog>
Run Code Online (Sandbox Code Playgroud)

但是当应用此迁移时,我在 postgresql 中看到以下表结构:

CREATE TABLE public.orders
(
id integer NOT NULL DEFAULT nextval('orders_id_seq'::regclass),
"number" character varying(64),
 ...
CONSTRAINT pk_orders PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
Run Code Online (Sandbox Code Playgroud)

对我来说,第一件不可预知的事情是为什么 liquibase 写的是它自己的orders_id_seq而不是我的SEQ_ORDERS

接下来我编写了一个典型的 JPA 代码并使用 …

java postgresql liquibase spring-data-jpa spring-boot

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

Aeron 会丢失消息吗?

如果我通过发布向某个通道(IPC 或 UDP)提供消息,并且此操作返回正值(新位置),这意味着数据是否已写入磁盘(fsynced 到 /dev/shm)?换句话说... Aeron 是否依赖页面缓存?当我通过发布提供新数据并收到积极的响应值后操作系统关闭时,我可能会丢失数据吗?

aeron

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