小编hem*_*vsn的帖子

使用数据类型"text"存储字符串的任何缺点?

根据Postgres文档,它们支持3种数据类型的字符数据:

character varying(n), varchar(n)  variable-length with limit
character(n), char(n)             fixed-length, blank padded
text                              variable unlimited length
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我遇到了一些令人不愉快的情况,其中插入/更新查询失败,因为要插入的所需文本超出varchar(n)char(n)限制.

对于这种情况,更改此类列的数据类型就text足够了.

我的问题是:
如果我们概括并更改每个字符存储列的数据类型text,那么性能/内存方面是否有任何缺点?
如果数据类型的列text每次都存储10个或更少的字符,我应该选择text还是varchar(10)
如果我追求的text是什么?

sql postgresql types postgresql-performance

15
推荐指数
3
解决办法
6581
查看次数

SpelEvaluationException:EL1007E:(pos 43):在null上找不到字段或属性"group"

我为我的Web应用程序完全配置了SPRING METHOD安全性.(启用了PRE/POST注释).

但最近我遇到了一个奇怪的问题.总结如下:

  1. POJOS摘要

    // User Class
    public class User {
        int id;
        String name;
        // getters and setters
    }
    
    // Group Class
    public class Group {
        int id;
        String name;
        // getters and setters
    }
    
    // GroupMembership class
    public class GroupMembership {
        private int id;
        private User user;
        private Group group;
        // getters and setters
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. PreAuthorise过滤方法.

    @PreAuthorize("canIEditGroupProfile(#membership.group.id)")
    public int updateGroupMembership(GroupMembership membership)
        throws GroupsServiceException;
    
    Run Code Online (Sandbox Code Playgroud)

传递完全填充的GroupMembership对象(存在适当的用户和组合成)时,安全筛选器将引发以下异常:

errorMessage: "Failed to evaluate expression
    canIEditGroupProfile(#membership.group.id)'"
Run Code Online (Sandbox Code Playgroud)

在挖掘异常时:

原因是:

org.springframework.expression.spel.SpelEvaluationException:
    EL1007E:(pos 33): Field …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-el spelevaluationexception

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

使用MyBatis 3和Java进行延迟加载

我使用Mybatis(3.2.7版本)作为我的JAVA项目的ORM框架.由于我来自JPA背景,我很想探索Mybatis支持的LAZYLOADING.但我无法透露任何实质性内容.
(我正在使用JAVA API和注释配置MYBATIS仅用于查询目的)

根据Mybatis文档: 1.lazyLoadingEnabled:默认值= TRUE

全局启用或禁用延迟加载.启用后,所有关系都将被延迟加载.通过在其上使用fetchType属性,可以为特定关系取代此值.

2. aggressiveLazyLoading:默认值= TRUE

启用后,将在调用任何延迟属性时完全加载具有延迟加载属性的对象.否则,每个属性都按需加载.

使用以下属性,我尝试了以下代码:

一个.JAVA课程:

Feedback.java

public class Feedback implements Serializable {
private static final long serialVersionUID = 1L;

private int id;
private String message;

   /**
   * while loading Feedback, I want sender object to be lazily loaded
   */
private User sender;
private boolean seen;

// getters and setters
}
Run Code Online (Sandbox Code Playgroud)

User.java

public class User implements Serializable, {
private static final long serialVersionUID = 1L;
private int id;
private …
Run Code Online (Sandbox Code Playgroud)

java sql mybatis

8
推荐指数
2
解决办法
8471
查看次数

Spring AbstractRoutingDataSource + Hibernate- Hbm2ddlSchemaUpdate仅在默认DB上执行

我正在使用SpringBoot,以及Hibernate作为持久性提供程序.对于我的应用程序,我需要在2个DB之间动态选择.

(For simplicity sake, 
  domain : localhost:8080 ---> hem1 DB
  domain : 127.0.0.1:8080 ---> hem2 DB
)
Run Code Online (Sandbox Code Playgroud)

以下是AbstractRoutingDB的实现

    public class MyRoutingDataSource extends AbstractRoutingDataSource{
        @Override
        protected Object determineCurrentLookupKey() {

        /*
         * this is derived from threadlocal set by filter for each web           
         * request
         */
             return SessionUtil.getDB(); 
        }
    }
Run Code Online (Sandbox Code Playgroud)

以下是数据库配置:

  package com.hemant.basic.dataSource;

    import java.beans.PropertyVetoException;
    import java.util.HashMap;
    import java.util.Map;

    import javax.naming.ConfigurationException;
    import javax.sql.DataSource;

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    import com.mchange.v2.c3p0.ComboPooledDataSource;

    @Configuration
    public class DBConfig {

        @Bean(name = "dataSource")
        public DataSource dataSource() throws PropertyVetoException, …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-mvc spring-data-jpa

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

提高消息消费率

我们使用 ActiveMQ 作为消息代理。

对于其中一个队列,我们​​发现消息的生成速率远远高于消息的消费速率。这有时会导致 ActiveMQ 崩溃。

因此,我们正在探索提高消费率的选择。(首要任务是增加现有消费者的比率,然后增加消费者 Pod/实例的数量)。

以下是当前监听器配置

@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory());
    factory.setConcurrency("1-1");

    factory.setMessageConverter(jacksonJmsMessageConverter());
    return factory;
}
Run Code Online (Sandbox Code Playgroud)

侦听器逻辑与数据库多次交互,并且可以被限定为 I/O 绑定任务。所以我们正在考虑并行处理多个消息。

我们找到了以下选项。

  1. 我们将并发设置为1-1暗示 concurrentConsumersmaxConcurrentConsumers为 1,并且一次仅处理 1 条消息。这是我们可以增加的配置,5-10以便最少 5 个和最多 10 个消费者能够同时操作。

  2. 我们还发现我们也可以TaskExecutor在监听器工厂中进行设置。就像设置athreadPoolExecutor (corePoolSize = 5, maxPoolSize = 10, queueCapacity=50)也会帮助我们并发处理消息。

  3. 我不确定使用哪个选项(1 或 2)

  4. 如果我们将并发数增加到 5-10,并设置一个 ThreadPoolExecutor,会有什么行为和影响?
  5. 关于选择参数的最佳值有什么指示吗?

java activemq-classic jms spring-jms

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

处理器中的Apache Nifi读取配置属性

我们可以在自定义处理器中读取nifi.properties中设置的属性吗?例如:如果我们添加自定义属性nifi.active.profile = dev/qa

并在自定义处理器中读取其值?

或者在启动NIFI传递争论时,我们可以稍后阅读

java apache-nifi

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