小编And*_*niy的帖子

Cassandra 非专柜系列

我试图在 cassandra 中创建一个以 counter 作为列类型之一的表,但出现以下错误:

ConfigurationException: ErrorMessage code=2300 [由于配置问题查询无效] message="无法在非计数器列族中添加计数器列 (transaction_count)"

我的表架构如下:

CREATE TABLE MARKET_DATA_TRANSACTION_COUNT (
TRADE_DATE TIMESTAMP,      
SECURITY_EXCHANGE TEXT,
PRODUCT_CODE TEXT,
SYMBOL TEXT,
SPREAD_TYPE TEXT,     
USER_DEFINED TEXT,
PRODUCT_GUID TEXT,
CHANNEL_ID INT,  
SECURITY_TYPE TEXT,
INSTRUMENT_GUID TEXT,
SECURITY_ID INT,   
TRANSACTION_COUNT COUNTER,
PRIMARY KEY (TRADE_DATE));
Run Code Online (Sandbox Code Playgroud)

cassandra cql3

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

JVM中`boolean`类型的目的是什么?

正如它所说JVMS8:

虽然Java虚拟机定义了一个布尔类型,但它只为它提供非常有限的支持.没有Java虚拟机指令专门用于对布尔值的操作.相反,Java编程语言中对布尔值进行操作的表达式被编译为使用Java虚拟机int数据类型的值.

的确,这两种方法:

boolean expr1(boolean a, boolean b) {
    return a || b;
}

int expr2(int a, int b) {
    return ((a != 0) || (b != 0)) ? 1 : 0;
}
Run Code Online (Sandbox Code Playgroud)

将生成相同的字节代码(方法签名除外)

  boolean expr1(boolean, boolean);
    Signature: (ZZ)Z
    Code:
       0: iload_1       
       1: ifne          8
       4: iload_2       
       5: ifeq          12
       8: iconst_1      
       9: goto          13
      12: iconst_0      
      13: ireturn       

  int expr2(int, int);
    Signature: (II)I
    Code:
       0: iload_1       
       1: ifne          8
       4: iload_2       
       5: ifeq          12
       8: …
Run Code Online (Sandbox Code Playgroud)

java jvm boolean

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

关于java 8向后兼容性的问题:JDK中的新方法

简单的问题.在Java 8中,我们在JDK类中有大量新方法.假设我们使用Java 7(或Java 6)创建了这样的类:

class MyArrayList<E> extends ArrayList<E> {
        public void sort(Comparator<E> c) {
            // some sort
        }
}
Run Code Online (Sandbox Code Playgroud)

这是非常合理的实施.现在我们尝试使用Java 8编译它并收到可预期的编译错误:

error: name clash: sort(Comparator<E#1>) in MyArrayList and sort(Comparator<? super E#2>) in ArrayList have the same erasure, yet neither overrides the other
            public void sort(Comparator<E> c) {
                        ^   where E#1,E#2 are type-variables:
    E#1 extends Object declared in class I.MyArrayList
    E#2 extends Object declared in class ArrayList
Run Code Online (Sandbox Code Playgroud)

在这里,我想提出2个问题:

  1. 即使javac -source 1.7 -target 1.7使用JDK 8选项,我也收到同样的错误 - 为什么?我认为这些选项应该允许编译遗留代码.

  2. 一般的向后兼容性怎么样? …

java backwards-compatibility java-8

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

方法引用本地类构造函数

关于本地类构造函数的方法引用,有几个类似的问题,但我想稍微澄清一下其他的东西.请考虑以下代码:

static Callable gen(int i) {
    class X {
        int x = i;
        public String toString() { return "" + x; }
    }
    return X::new;
}

...

System.out.println(gen(0).call()); 
System.out.println(gen(1).call());
Run Code Online (Sandbox Code Playgroud)

显然这将打印输出

0
1
Run Code Online (Sandbox Code Playgroud)

事实证明,X该类具有表单的构造函数...$X(int)(您可以通过它找到它X.class.getDeclaredConstructors()).

但有趣的是,返回的lambdas(或方法引用)并不是对构造函数的简单引用...$X(int),例如,Integer::new.它们在内部...$X(int)使用预定义的参数(01)调用此构造函数.

所以,我不确定,但看起来这种方法参考在JLS中没有精确描述.除了本地类的这种情况之外,没有其他方法可以生成这种lambda(使用预定义的构造函数参数).谁能帮忙澄清一下?

确切地说:

  • JLS在哪里描述了这种方法参考?

  • 是否有任何其他方法来创建此类方法引用具有预定义参数的任意类构造函数?

java lambda java-8 method-reference

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

RDS 只读副本的读取 IOPS 限制?

我注意到我的 PostgreSQL Amazon RDS 只读副本上发生了奇怪的事情。

我们已经对数十个并行高负载读取请求进行了“压力测试”。测试开始时性能确实很好,但随后迅速下降,而 PostgresSQL 本身一直保留着数十个select查询,这些查询在堆叠之前执行得很快。

我在 RDS 控制台中打开“监视器统计”选项卡,发现随着性能明显降低,读取 IOPS 数量也从 3000/秒下降到 300/秒,并且很长一段时间没有超过 300/秒 iops。同时CPU使用率确实很低~3%,RAM或存储空间没有任何问题。

所以我的问题是:只读副本的读取 IOPS 是否有任何记录在案的限制?看起来 Amazon RDS 在真正高负载(3000/秒)后自动降低了 IOPS 上限。

在此输入图像描述

只读副本服务器在 db.t2.large 实例上运行,该实例具有 100 GB 通用 (SSD) 存储类型,并且禁用了固定 IOPS 功能。

postgresql performance amazon-rds

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

Spring @Transactional只读模式回滚行为

我有一些服务层方法,@Transactional(readOnly=true)这种方法RuntimeException经常引起某些情况(假设这是一个NotFoundException例外)。

我还将ORM Hibernate用于数据库交互过程。

这样做是合法的吗?

在这种情况下,“回滚”行为的默认行为是什么?它会以某种方式严重影响连接的状态或导致任何问题吗?


它不是“为什么不自己尝试?”。我怀疑这可能会导致Transaction rolled back because it has been marked as rollback-only在某些例外情况下以相同的方法产生错误。这可能是非常特定的JDBC PostgreSQL驱动程序错误。这就是为什么我通常会对这种设计感到疑惑:这样做是合法的还是非法的?

java postgresql spring hibernate transactions

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

适用于Java AWS Lambda的POJO输入处理程序的大写字段

根据此处描述的文档:http : //docs.aws.amazon.com/lambda/latest/dg/java-programming-model-req-resp.html一个人可以创建自己的POJO来序列化Java AWS的输入和输出Lambda。

但是,它似乎不适用于大写字段的输入请求。例如,自定义资源lambda的输入格式如下:

{"RequestType":"Create", 
"ServiceToken":"arn:aws:lambda:....", 
"ResponseURL":"https://cloudformation-custom-resource-response-e...",
...}
Run Code Online (Sandbox Code Playgroud)

可以通过以下简单的MCVE代码轻松测试:

package test;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class TestLambda implements RequestHandler<TestLambda.TestEvent, String> {

    private static final Logger logger = LogManager.getLogger(TestLambda.class);

    @Override
    public String handleRequest(TestEvent event, Context context) {
         logger.debug(event.toString());    
         return null;
    }

    public static final class TestEvent {
        private String key1;

        private String Key2;

        private String key3;

        public String getKey1() {
            return key1;
        }

        public void setKey1(String key1) {
            this.key1 = key1;
        }

        public …
Run Code Online (Sandbox Code Playgroud)

java json amazon-web-services jackson aws-lambda

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

如何在 SpringJUnit4ClassRunner 中模拟缺少的 bean 定义?

我有一个 Spring 4 JUnit 测试,它应该只验证我的应用程序的特定部分。

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:context-test.xml")
@ActiveProfiles("test")
public class FooControllerIntegrationTest {
     ...
}
Run Code Online (Sandbox Code Playgroud)

所以我不想配置和实例化所有那些实际上不涉及我的测试范围的bean。例如,我不想配置在另一个控制器中使用的 bean,我不打算在此处进行测试。

但是,因为我不想缩小组件扫描路径,所以我得到“没有合格的类型 bean”异常:

导致:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型的合格 bean [...

如果我确信它们不涉及我正在测试的功能,有什么办法可以忽略这些丢失的定义?

java junit spring spring-test spring-4

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

Lambda私有方法的可访问性

我对以下情况感到困惑。

考虑两个包ab具有以下类:

1)MethodInvokercall()在给定对象上调用:

package b;
import java.util.concurrent.Callable;
public class MethodInvoker {
    public static void invoke(Callable r) throws Exception {
        r.call();
    }
}
Run Code Online (Sandbox Code Playgroud)

2)

package a;
import b.MethodInvoker;
import java.lang.reflect.Method;
import java.util.concurrent.Callable;
public class Test {

    private static Void method() {
        System.out.println("OK");
        return null;
    }

    public static void main(String[] args) throws Exception {
        Method method = Test.class.getDeclaredMethod("method");
        method.invoke(null);        // ok

        // TEST 1
        MethodInvoker.invoke(() -> {
            return method.invoke(null);  // ok (hmm....
        });

        // …
Run Code Online (Sandbox Code Playgroud)

java reflection lambda jls java-8

4
推荐指数
2
解决办法
2369
查看次数

Spring Batch 2.4.1 + Wildfly 20 Final - java.lang.NoSuchFieldError:BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES

我正在尝试在 Wildfly 服务器 20 Final 上执行 Spring 批处理应用程序,但出现以下错误,

如果我使用内置的 tomcat 服务器,相同的代码可以正常工作。

Caused by: java.lang.NoSuchFieldError: BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES
    at org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer.<init>(Jackson2ExecutionContextStringSerializer.java:119)
    at org.springframework.batch.core.repository.support.JobRepositoryFactoryBean.afterPropertiesSet(JobRepositoryFactoryBean.java:192)
    at org.springframework.boot.autoconfigure.batch.BasicBatchConfigurer.createJobRepository(BasicBatchConfigurer.java:133)
    at org.springframework.boot.autoconfigure.batch.BasicBatchConfigurer.initialize(BasicBatchConfigurer.java:101)
    at org.springframework.boot.autoconfigure.batch.BasicBatchConfigurer.afterPropertiesSet(BasicBatchConfigurer.java:95)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784)
Run Code Online (Sandbox Code Playgroud)

java spring-batch

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