小编Ido*_*ash的帖子

Spring Boot应用程序和并发问题

我正在开发一个将在带有tomcat的spring boot上下文中运行的应用程序。该项目在启动时连接到Kafka,提取消息并进行处理。tomcat用于某些管理API。

当Spring加载时,它通过多个线程与Kafka连接。每个线程都与处理消息的Spring bean自动连线。当然,该豆与更多豆等自动连接。

我需要考虑并发问题吗?同步东西?使用并发类型,例如ConcurrentHashMap而不是普通的HashMap?

java concurrency spring spring-boot

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

Java 8 根据最后一个值生成整数流

我需要根据一些数学函数生成整数流,每个值都基于之前的值。

例如 - 假设我想取最后一个数字并加 10:[1, 11, 21, 31, 41, ...]

当然真正的功能要复杂得多。

我尝试以斐波那契为例,但无法使其工作:

Stream.iterate(new long[]{ 1, 1 }, p->new long[]{ p[1], p[0]+p[1] })
      .limit(92).forEach(p->System.out.println(p[0]));
Run Code Online (Sandbox Code Playgroud)

我只能从1开始。

这是我尝试做的:

Stream.iterate(new long[]{ 1 }, p-> {p[0], p[0] + 10})
.limit(4).forEach(p->System.out.println(p[0]));
Run Code Online (Sandbox Code Playgroud)

java-8 java-stream

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

Java 8减少到2个字符串

我可以用溪流做这个吗?

StringBuilder text = new StringBuilder();
StringBuilder dupText = new StringBuilder();
String lastLetter = "";

for (Container cont : containersList) {
    String letter = cont.getLetter();
    text.append(letter);
    if (letter.equals(lastLetter) == false) {
        dupText.append(letter);
    }
    lastLetter = letter;
}

System.out.println(text);
System.out.println(dupText);
Run Code Online (Sandbox Code Playgroud)

我查看一下continers列表,每个都有一个char.我需要组装两个字符串 - 一个是所有字符组合,另一个是所有字符但没有耦合重复(ABABAAAB - > ABABAB)

这可以用流完成吗?

我尝试这样做:

Optional<String> text = containersList.stream()
            .map(Container::getLetter)
            .reduce((letter,accumalator) -> accumalator += letter);

Optional<String> dupText = session.containersList().stream()
            .map(Container::getLetter)
            .reduce((letter, accumalator) ->{
                if ((accumalator.endsWith(letter) == false)) {
                    accumalator += letter;
                }
                return accumalator;
            });
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

Spring数据JPA和Geometry类型

我正在开发一个可以在MySql和MS SQL上运行的应用程序.

我有一个空间的"几何"类型的字段.

通过使用:

 @Column(columnDefinition = "geometry")
 private Point geometry;
Run Code Online (Sandbox Code Playgroud)

(点是org.springframework.data.geo.Point)

Hibernate正确创建字段(hbm2ddl).

但是插入任何一点都行不通.我得到:数据截断:无法从发送到GEOMETRY字段的数据中获取几何对象

我使用spring-boot-jpa-starter ..而不是直接休眠.

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
       <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-spatial</artifactId>
            <version>5.2.2.Final</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

问候,Ido

spring-data-jpa spring-boot

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

无法在Linux上使用spring boot启动tomcat

突然间我无法启动嵌入式tomcat.

我明白了:

[main] ERROR o.a.coyote.http11.Http11NioProtocol - Failed to start end point associated with ProtocolHandler ["http-nio-86"]
java.net.SocketException: Permission denied
Run Code Online (Sandbox Code Playgroud)

我试过更改tomcat端口,我试过设置权限:chmod 777 src/-R

我使用linux Mint 17

我不知道该怎么做...

这是堆栈跟踪:

    [main] ERROR o.a.coyote.http11.Http11NioProtocol - Failed to start end point associated with ProtocolHandler ["http-nio-86"]
java.net.SocketException: Permission denied
    at sun.nio.ch.Net.bind0(Native Method) ~[na:1.7.0_67]
    at sun.nio.ch.Net.bind(Net.java:444) ~[na:1.7.0_67]
    at sun.nio.ch.Net.bind(Net.java:436) ~[na:1.7.0_67]
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214) ~[na:1.7.0_67]
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[na:1.7.0_67]
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:473) ~[tomcat-embed-core-7.0.52.jar:7.0.52]
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:647) ~[tomcat-embed-core-7.0.52.jar:7.0.52]
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:449) ~[tomcat-embed-core-7.0.52.jar:7.0.52]
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1007) [tomcat-embed-core-7.0.52.jar:7.0.52]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-7.0.52.jar:7.0.52]
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:459) [tomcat-embed-core-7.0.52.jar:7.0.52]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-7.0.52.jar:7.0.52]
    at …
Run Code Online (Sandbox Code Playgroud)

java spring-boot

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

ANTLR 4 如何解析注释

我正在解析类似 SQL 的语言,但在解析注释时遇到问题。我们的想法是忽略它们。

我有这些规则:

NEWLINE: '\r'? '\n' -> skip 
WS  :    [ \t]+ -> skip 
Run Code Online (Sandbox Code Playgroud)

我怎样才能忽略:

  • '--' 或 '#' 与下一个 '\n' 之间的所有内容
  • '/ ' 和 ' /' 之间的所有内容(斜杠 + 星号,直到 asterix + 斜杠 - 星号以某种方式消失)。

我在 WS 和 NEWLINW 之前尝试过类似的事情:

COMMENT1 : ('--'|'#') ~'\n'* -> skip;
Run Code Online (Sandbox Code Playgroud)

没用 - 我得到:

line 1:115 missing ';' at '<EOF>'
Run Code Online (Sandbox Code Playgroud)

可能是因为它不符合我的主要规则: parse : (statements (';')+)* EOF;

谁能帮我?

问候伊多布

antlr4

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

调试aerospike lua UDF

我对lua和aerospike很新.我想开发一个在aerospike上运行的UDF,但我无法通过调试选项找到一种方法.

我试图安装eclipse LDT,但它似乎无法找到aerospike要求.

我怎样才能做到这一点?

我尝试了一些简单的事情:加载表格的所有记录并打印.

function test(rec)


        print(rec['bin1'])
end
Run Code Online (Sandbox Code Playgroud)

当然我创建了表并插入了记录.

谢谢

lua aerospike

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

Spring boot 启动慢

这是一个奇怪的问题。

我们正在使用带有集成 tomcat 的 Spring Boot Web 应用程序。

在我的本地 Mac 上,应用程序启动很快......几秒钟。在装有 Centos 7 的 google 机器上,启动速度非常慢......大约 2 分钟。

应用程序是用 JAVA 8 编写的

有人可以帮忙吗?

spring-boot

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

Big Query 在相同的查询性能上使用 CTE 两次

假设我有类似以下大查询的简化查询:

WITH test AS (
  SELECT 1 AS fieldA, 2 AS fieldB
)

SELECT fieldA, fieldB
FROM test
UNION ALL
SELECT fieldB, fieldA
FROM test;
Run Code Online (Sandbox Code Playgroud)

Big Query 会运行testCTE 两次还是仅运行一次,然后在联合的两个部分之间共享数据?

我在发布此内容之前进行了搜索,我知道 CTE 查询仅适用于一个 SQL 语句。但在这里 - 只有一个语句使用相同的 CTE 两次,我找不到类似的东西。

当然,CTE 查询在现实生活场景中更为复杂,可能包含 ROW NUMBER 窗口函数和 JOINS。

多谢。

sql google-bigquery

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

Java和String俄罗斯编码错误

我正在构建一个从客户端JSON获取包含俄语数据的应用程序,但是当我尝试打印它时,使用数据或将其返回到客户端我得到一堆"?????"

这是客户端:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<script src="js/angular.min.js"></script>
<script type="text/javascript">
       function Ctrl($scope,$http) {
              $scope.submit = function() {
                     //alert($scope.first+" "+$scope.last+" "+$scope.email+$scope.phone+$scope.subject+$scope.message);
                     $http({
                           method : 'GET',
                           url : '/healtcare',
                           headers: {'Content-Type': 'application/json; charset=UTF-8'},
                           params: {items:$scope.a}
                           /* params : {
                                  first : $scope.first,
                                  last : $scope.last,
                                  email : $scope.email,
                                  phone : $scope.phone,
                                  subject : $scope.subject,
                                  message : $scope.message
                           } */
                     }).success(function(data, status, headers, config) {
                           alert(data);
                     });
              };
       }
</script>
Run Code Online (Sandbox Code Playgroud)

这是服务器端:

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException; …
Run Code Online (Sandbox Code Playgroud)

java encoding

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

JAVA字节码优化

这是一个基本问题.

我的代码不应该在元数据bean上运行.所有元数据bean都位于元数据包下.

现在,

我使用反射API来确定一个类是否位于元数据包中.

if (newEntity.getClass().getPackage().getName().contains("metadata")) 
Run Code Online (Sandbox Code Playgroud)

我在这段代码中的几个地方使用了这个.

问题是:我应该这样做一次:

boolean isMetadata = false
if (newEntity.getClass().getPackage().getName().contains("metadata")) {
   isMetadata = true;
}
Run Code Online (Sandbox Code Playgroud)

C++进行优化,并知道此代码已被调用,并且不会再次调用它.JAVA会进行优化吗?我知道反射API很重,我不想丢失昂贵的运行时间.

java performance

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

RXjava onError 在单个上不起作用

我正在尝试使用 rx java 调用 http 调用。

它返回一个 Single 对象。

这是代码:

 service.getEvent(eventId)
    .onErrorResumeNext(exception -> Single.error(exception))
    .doOnError(throwable -> log.error(throwable.getMessage())
    .subscribe(this::handleEvent)
Run Code Online (Sandbox Code Playgroud)

日志打印“doOnError”中预期的日志行,但也打印堆栈跟踪:

 ERROR c.b.w.s.Service:161 - Error: Error, eventId: dummy-event

rx.exceptions.OnError
NotImplementedException: Error
    at rx.functions.Actions$NotImplemented.call(Actions.java:576)
    at rx.functions.Actions$NotImplemented.call(Actions.java:572)
    at rx.Single$11.onError(Single.java:1782)
    at rx.internal.operators.SingleDoOnEvent$SingleDoOnEventSubscriber.onError(SingleDoOnEvent.java:76)
    at rx.Single$1.call(Single.java:460)
    at rx.Single$1.call(Single.java:456)
    at rx.Single.subscribe(Single.java:1967)
    at rx.internal.operators.SingleOperatorOnErrorResumeNext$2.onError(SingleOperatorOnErrorResumeNext.java:69)
    at rx.Single$1.call(Single.java:460)
    at rx.Single$1.call(Single.java:456)
    at rx.Single.subscribe(Single.java:1967)
    at rx.internal.operators.SingleOperatorOnErrorResumeNext.call(SingleOperatorOnErrorResumeNext.java:77)
    at rx.internal.operators.SingleOperatorOnErrorResumeNext.call(SingleOperatorOnErrorResumeNext.java:23)
    at rx.Single.subscribe(Single.java:1967)
    at rx.internal.operators.SingleDoOnEvent.call(SingleDoOnEvent.java:40)
    at rx.internal.operators.SingleDoOnEvent.call(SingleDoOnEvent.java:25)
    at rx.Single.subscribe(Single.java:1967)
    at rx.Single.subscribe(Single.java:1777)
    at rx.Single.subscribe(Single.java:1747)
Run Code Online (Sandbox Code Playgroud)

我怎样才能删除堆栈跟踪...另外,我确实实现了 onError ?

single 是正确的选择还是应该使用 Observable?

问候,伊多

rx-java

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

AWS SQS - 将未使用的消息移至死信队列

我正在将 AWS SQS 与死信队列一起使用。

如果我使用消息,我可以轻松地将消息插入到死信队列中,但我希望将一个小时内未使用的消息自动移动到死信队列中。

这可能吗?我是否缺少配置选项?

问候,伊多

amazon-sqs

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